multivisor 6.0.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- multivisor/__init__.py +0 -0
- multivisor/client/__init__.py +0 -0
- multivisor/client/cli.py +29 -0
- multivisor/client/http.py +93 -0
- multivisor/client/repl.py +244 -0
- multivisor/client/util.py +58 -0
- multivisor/multivisor.py +470 -0
- multivisor/rpc.py +232 -0
- multivisor/server/__init__.py +0 -0
- multivisor/server/dist/index.html +1 -0
- multivisor/server/dist/static/css/app.2aff3580a128440bba89b94112292cb1.css +6 -0
- multivisor/server/dist/static/css/app.2aff3580a128440bba89b94112292cb1.css.map +1 -0
- multivisor/server/dist/static/js/app.52791f915c2f060b9cb1.js +2 -0
- multivisor/server/dist/static/js/app.52791f915c2f060b9cb1.js.map +1 -0
- multivisor/server/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js +2 -0
- multivisor/server/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js.map +1 -0
- multivisor/server/dist/static/js/vendor.1d02877727062a41e9fb.js +1319 -0
- multivisor/server/dist/static/js/vendor.1d02877727062a41e9fb.js.map +1 -0
- multivisor/server/rpc.py +156 -0
- multivisor/server/tests/__init__.py +0 -0
- multivisor/server/tests/conftest.py +1 -0
- multivisor/server/tests/test_web.py +194 -0
- multivisor/server/util.py +70 -0
- multivisor/server/web.py +327 -0
- multivisor/signals.py +5 -0
- multivisor/tests/__init__.py +0 -0
- multivisor/tests/test_multivisor.py +179 -0
- multivisor/util.py +75 -0
- multivisor-6.0.2.dist-info/METADATA +375 -0
- multivisor-6.0.2.dist-info/RECORD +34 -0
- multivisor-6.0.2.dist-info/WHEEL +5 -0
- multivisor-6.0.2.dist-info/entry_points.txt +4 -0
- multivisor-6.0.2.dist-info/licenses/LICENSE +674 -0
- multivisor-6.0.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["webpack:///src/components/process/Chip.vue","webpack:///./src/components/process/Chip.vue?f761","webpack:///./src/components/process/Chip.vue","webpack:///src/components/supervisor/Chip.vue","webpack:///./src/components/supervisor/Chip.vue?1c46","webpack:///./src/components/supervisor/Chip.vue","webpack:///src/components/group/Chip.vue","webpack:///./src/components/group/Chip.vue?d623","webpack:///./src/components/group/Chip.vue","webpack:///src/components/ActionBar.vue","webpack:///./src/components/ActionBar.vue?581c","webpack:///src/components/ToolBar.vue","webpack:///./src/components/ActionBar.vue","webpack:///./src/components/ToolBar.vue?021b","webpack:///./src/components/ToolBar.vue","webpack:///./src/multivisor.js","webpack:///src/components/NotificationBar.vue","webpack:///./src/components/NotificationBar.vue?1d5e","webpack:///./src/components/NotificationBar.vue","webpack:///./src/components/AlertBar.vue?5755","webpack:///./src/components/AlertBar.vue","webpack:///src/components/AlertBar.vue","webpack:///src/components/process/Log.vue","webpack:///./src/components/process/Log.vue?89b2","webpack:///./src/components/process/Log.vue","webpack:///src/components/process/Details.vue","webpack:///./src/components/process/Details.vue?b57a","webpack:///./src/components/process/Details.vue","webpack:///src/App.vue","webpack:///./src/App.vue?db90","webpack:///./src/App.vue","webpack:///./src/store/index.js","webpack:///src/components/process/State.vue","webpack:///./src/components/process/State.vue?d45e","webpack:///src/components/process/Tile.vue","webpack:///./src/components/process/State.vue","webpack:///./src/components/process/Tile.vue?6680","webpack:///./src/components/process/Tile.vue","webpack:///src/components/group/List.vue","webpack:///./src/components/group/List.vue?07b4","webpack:///src/components/group/Card.vue","webpack:///./src/components/group/List.vue","webpack:///./src/components/group/Card.vue?4593","webpack:///src/components/group/Page.vue","webpack:///./src/components/group/Card.vue","webpack:///./src/components/group/Page.vue?600e","webpack:///./src/components/group/Page.vue","webpack:///src/components/process/Row.vue","webpack:///./src/components/process/Row.vue?22d1","webpack:///src/components/process/Page.vue","webpack:///./src/components/process/Row.vue","webpack:///./src/components/process/Page.vue?81fd","webpack:///./src/components/process/Page.vue","webpack:///src/components/supervisor/List.vue","webpack:///./src/components/supervisor/List.vue?0561","webpack:///src/components/supervisor/Card.vue","webpack:///./src/components/supervisor/List.vue","webpack:///./src/components/supervisor/Card.vue?d612","webpack:///src/components/supervisor/Page.vue","webpack:///./src/components/supervisor/Card.vue","webpack:///./src/components/supervisor/Page.vue?2f16","webpack:///./src/components/supervisor/Page.vue","webpack:///src/components/login/Page.vue","webpack:///./src/components/login/Page.vue?e031","webpack:///./src/components/login/Page.vue","webpack:///./src/router/index.js","webpack:///./src/main.js"],"names":["Chip","name","computed","extends_default","Object","vuex_esm","process_Chip","render","_vm","this","_h","$createElement","_c","_self","attrs","bottom","slot","flat","router","to","staticClass","_v","small","_s","nbRunningProcesses","nbStoppedProcesses","staticRenderFns","components_process_Chip","__webpack_require__","normalizeComponent","supervisor_Chip","components_supervisor_Chip","nbRunningSupervisors","nbStoppedSupervisors","src_components_supervisor_Chip","Chip_normalizeComponent","group_Chip","components_group_Chip","nbGroups","src_components_group_Chip","group_Chip_normalizeComponent","ActionBar","selectedProcesses","$store","state","methods","components_ActionBar","open-on-hover","transition","direction","icon","left","directives","rawName","value","expression","fab","dark","color","on","click","$event","restartSelected","stopSelected","clearSelected","selectAll","ToolBar","components","ActionBar_normalizeComponent","ProcessChip","SupervisorChip","GroupChip","isAuthenticated","useAuthentication","search","get","set","v","commit","logout","_this","dispatch","then","$router","push","components_ToolBar","fixed","app","offset-y","nudge-bottom","staticStyle","cursor","tag","append-icon","clearable","single-line","hide-details","placeholder","model","callback","$$v","src_components_ToolBar","ToolBar_normalizeComponent","ssrContext","stateColorMap","STOPPED","STARTING","RUNNING","BACKOFF","STOPPING","EXITED","FATAL","UNKNOWN","notificationColorMap","DEBUG","INFO","WARNING","ERROR","supervisorAction","id","action","form","FormData","append","fetch","method","body","processAction","uid","streamTo","eventHandler","eventSource","EventSource","onmessage","event","data","JSON","parse","onerror","onclose","formatBytes","bytes","decimals","dm","i","Math","floor","log","parseFloat","pow","toFixed","nullMultivisor","supervisors","NotificationBar","visible","watch","lastNotification","notification","level","n","notifications","length","message","components_NotificationBar","timeout","right","src_components_NotificationBar","NotificationBar_normalizeComponent","components_AlertBar","error","type","src_components_AlertBar","AlertBar_normalizeComponent","Log","text","size","maximize","autoScroll","viewLog","title","stream","process","supervisor","windowSize","h","window","innerHeight","min","sizeStr","localSizeStr","active","readyState","appendLogMessage","substr","logTag","document","getElementById","setTimeout","scrollTop","scrollHeight","close","onopen","console","debug","process_Log","dense","height","indeterminate","background-color","style","components_process_Log","Log_normalizeComponent","Details","items","label","startTime","processDetails","lastUpdate","timestamp","now","templates","prefix","suffix","seconds","minute","minutes","hour","hours","day","days","month","months","year","years","template","t","replace","abs","round","Date","getTime","start","showItem","item","itemValue","process_Details","inset","_l","index","key","avatar","_e","components_process_Details","Details_normalizeComponent","App","LogSheet","ProcessDetails","AlertBar","selectortype_template_index_0_src_App","fluid","grid-list-md","src_App","App_normalizeComponent","vue_runtime_esm","use","store","Store","multivisor","pid","description","exitstatus","logfile","stderr_logfile","undefined","mutations","updateMultivisor","updateProcess","processes","updateSupervisor","newNotification","setLogVisible","setLog","setSelectedProcesses","addSelectedProcesses","toAdd","set_default","a","concat","toConsumableArray_default","removeSelectedProcesses","toRemove","filter","has","updateSearch","setProcessDetailsVisible","setProcessDetails","details","setIsAuthenticated","setUseAuthentication","setError","setMultivisorError","actions","init","_ref","asyncToGenerator_default","regenerator_default","mark","_callee","response","wrap","_context","prev","next","sent","status","abrupt","json","payload","stop","restartProcesses","context","uids","stopProcesses","getters","filteredProcessUIDs","_this2","_this3","restartSupervisor","values_default","reduce","apply","groupMap","groups","proc","group","find","map","toLowerCase","filtered","indexOf","statename","add","filteredGroupMap","filteredProcesses","filteredGroups","totalNbProcesses","acc","running","totalNbSupervisors","State","props","default","process_State","disabled","text-color","Tile","ProcessState","State_normalizeComponent","restartProcess","stopProcess","viewDetails","process_Tile","justify-end","components_process_Tile","Tile_normalizeComponent","List","ProcessTile","group_List","Card","GroupList","List_normalizeComponent","puid","split","puids","group_Card","top","Page","GroupCard","Card_normalizeComponent","group_Page","content-tag","row","hide-actions","item-key","no-results-text","no-data-text","scopedSlots","_u","fn","xs12","sm12","md6","lg4","xl3","components_group_Page","Page_normalizeComponent","Row","process_Row","primary","process_Page","showGroup","showSupervisor","ProcessRow","Row_normalizeComponent","headers","header","align","sortable","tooltip","class","procs","components_process_Page","justify-center","select-all","must-sort","show-supervisor","show-group","src_components_process_Page","process_Page_normalizeComponent","supervisor_List","components_supervisor_List","subheader","supervisor_Card","SupervisorList","supervisor_List_normalizeComponent","inactive","toolbarColor","restartSelectedProcesses","clearSelectedProcesses","stopSelectedProcesses","selectAllProcesses","pname","components_supervisor_Card","keys","supervisor_Page","SupervisorCard","supervisor_Card_normalizeComponent","supervisorsGroups","components_supervisor_Page","src_components_supervisor_Page","supervisor_Page_normalizeComponent","login_Page","valid","username","password","rules","required","errorMessages","submit","$refs","validate","errors","components_login_Page","align-center","sm6","md5","ref","nativeOn","keyup","_k","keyCode","autofocus","prepend-icon","error-messages","src_components_login_Page","login_Page_normalizeComponent","vue_router_esm","loginRequired","meta","requiresAuth","routes","path","component","mode","beforeEach","from","loginRequiredRoute","use_authentication","is_authenticated","matched","some","route","_x","_x2","_x3","arguments","src_router","vuetify_default","config","productionTip","el","created"],"mappings":"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","file":"static/js/app.52791f915c2f060b9cb1.js","sourcesContent":["<template>\n <v-tooltip bottom>\n <v-btn slot=\"activator\" flat router to=\"/view/process\">\n <v-icon class=\"mr-2\">settings</v-icon>\n <div>\n <v-icon small>thumb_up</v-icon>\n {{ nbRunningProcesses }}\n <v-icon small class=\"ml-1\">thumb_down</v-icon>\n {{ nbStoppedProcesses }}\n </div>\n </v-btn>\n <span>Processes</span>\n </v-tooltip>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\n\nexport default {\n name: 'ProcessChip',\n computed: {\n ...mapGetters(['nbRunningProcesses', 'nbStoppedProcesses'])\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/process/Chip.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-tooltip',{attrs:{\"bottom\":\"\"}},[_c('v-btn',{attrs:{\"slot\":\"activator\",\"flat\":\"\",\"router\":\"\",\"to\":\"/view/process\"},slot:\"activator\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"settings\")]),_vm._v(\" \"),_c('div',[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"thumb_up\")]),_vm._v(\"\\n \"+_vm._s(_vm.nbRunningProcesses)+\"\\n \"),_c('v-icon',{staticClass:\"ml-1\",attrs:{\"small\":\"\"}},[_vm._v(\"thumb_down\")]),_vm._v(\"\\n \"+_vm._s(_vm.nbStoppedProcesses)+\"\\n \")],1)],1),_vm._v(\" \"),_c('span',[_vm._v(\"Processes\")])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-348e6808\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/process/Chip.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Chip.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Chip.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-348e6808\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Chip.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/process/Chip.vue\n// module id = null\n// module chunks = ","<template>\n <v-tooltip bottom>\n <v-btn slot=\"activator\" flat\n router to=\"/view/supervisor\"\n >\n <v-icon class=\"mr-2\">visibility</v-icon>\n <div>\n <v-icon small>thumb_up</v-icon>\n {{ nbRunningSupervisors }}\n <v-icon small class=\"ml-1\">thumb_down</v-icon>\n {{ nbStoppedSupervisors }}\n </div>\n </v-btn>\n <span>Supervisors</span>\n </v-tooltip>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\n\nexport default {\n name: 'SupervisorChip',\n computed: {\n ...mapGetters(['nbRunningSupervisors', 'nbStoppedSupervisors'])\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/supervisor/Chip.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-tooltip',{attrs:{\"bottom\":\"\"}},[_c('v-btn',{attrs:{\"slot\":\"activator\",\"flat\":\"\",\"router\":\"\",\"to\":\"/view/supervisor\"},slot:\"activator\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"visibility\")]),_vm._v(\" \"),_c('div',[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\"thumb_up\")]),_vm._v(\"\\n \"+_vm._s(_vm.nbRunningSupervisors)+\"\\n \"),_c('v-icon',{staticClass:\"ml-1\",attrs:{\"small\":\"\"}},[_vm._v(\"thumb_down\")]),_vm._v(\"\\n \"+_vm._s(_vm.nbStoppedSupervisors)+\"\\n \")],1)],1),_vm._v(\" \"),_c('span',[_vm._v(\"Supervisors\")])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5c7eb378\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/supervisor/Chip.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Chip.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Chip.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5c7eb378\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Chip.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/supervisor/Chip.vue\n// module id = null\n// module chunks = ","<template>\n <v-tooltip bottom>\n <v-btn slot=\"activator\" flat router to=\"/view/group\">\n <v-icon class=\"mr-2\">group_work</v-icon>\n {{ nbGroups }}\n </v-btn>\n <span>Groups</span>\n </v-tooltip>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\nexport default {\n computed: {\n ...mapGetters(['nbGroups'])\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/group/Chip.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-tooltip',{attrs:{\"bottom\":\"\"}},[_c('v-btn',{attrs:{\"slot\":\"activator\",\"flat\":\"\",\"router\":\"\",\"to\":\"/view/group\"},slot:\"activator\"},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\"group_work\")]),_vm._v(\"\\n \"+_vm._s(_vm.nbGroups)+\"\\n \")],1),_vm._v(\" \"),_c('span',[_vm._v(\"Groups\")])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5152b9a2\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/group/Chip.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Chip.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Chip.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5152b9a2\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Chip.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/group/Chip.vue\n// module id = null\n// module chunks = ","<template lang=\"html\">\n <v-speed-dial open-on-hover\n transition=\"scale-transition\" direction=\"bottom\">\n <v-btn slot=\"activator\" icon>\n <v-icon>more_vert</v-icon>\n </v-btn>\n\n <v-tooltip left>\n <v-btn slot=\"activator\" fab small dark color=\"green darken-2\"\n @click=\"restartSelected()\" v-show=\"selectedProcesses.length\">\n <v-icon>autorenew</v-icon>\n </v-btn>\n <span>(Re)start selected processes</span>\n </v-tooltip>\n <v-tooltip left>\n <v-btn slot=\"activator\" fab small dark color=\"red darken-2\"\n @click=\"stopSelected()\" v-show=\"selectedProcesses.length\">\n <v-icon>stop</v-icon>\n </v-btn>\n <span>Stop selected processes</span>\n </v-tooltip>\n <v-tooltip left>\n <v-btn slot=\"activator\" fab small dark color=\"blue darken-1\"\n @click=\"clearSelected()\" v-show=\"selectedProcesses.length\">\n <v-icon>clear_all</v-icon>\n </v-btn>\n <span>Clear selection</span>\n </v-tooltip>\n <v-tooltip left>\n <v-btn slot=\"activator\" fab small dark color=\"blue darken-1\"\n @click=\"selectAll()\">\n <v-icon>select_all</v-icon>\n </v-btn>\n <span>Select all</span>\n </v-tooltip>\n </v-speed-dial>\n</template>\n\n<script>\nimport { mapActions } from 'vuex'\n\nexport default {\n name: 'ActionBar',\n computed: {\n selectedProcesses () { return this.$store.state.selectedProcesses }\n },\n methods: {\n ...mapActions(['selectAll', 'clearSelected', 'restartSelected', 'stopSelected'])\n }\n\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/ActionBar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-speed-dial',{attrs:{\"open-on-hover\":\"\",\"transition\":\"scale-transition\",\"direction\":\"bottom\"}},[_c('v-btn',{attrs:{\"slot\":\"activator\",\"icon\":\"\"},slot:\"activator\"},[_c('v-icon',[_vm._v(\"more_vert\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"left\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length),expression:\"selectedProcesses.length\"}],attrs:{\"slot\":\"activator\",\"fab\":\"\",\"small\":\"\",\"dark\":\"\",\"color\":\"green darken-2\"},on:{\"click\":function($event){_vm.restartSelected()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"autorenew\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"(Re)start selected processes\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"left\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length),expression:\"selectedProcesses.length\"}],attrs:{\"slot\":\"activator\",\"fab\":\"\",\"small\":\"\",\"dark\":\"\",\"color\":\"red darken-2\"},on:{\"click\":function($event){_vm.stopSelected()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"stop\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"Stop selected processes\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"left\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length),expression:\"selectedProcesses.length\"}],attrs:{\"slot\":\"activator\",\"fab\":\"\",\"small\":\"\",\"dark\":\"\",\"color\":\"blue darken-1\"},on:{\"click\":function($event){_vm.clearSelected()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"clear_all\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"Clear selection\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"left\":\"\"}},[_c('v-btn',{attrs:{\"slot\":\"activator\",\"fab\":\"\",\"small\":\"\",\"dark\":\"\",\"color\":\"blue darken-1\"},on:{\"click\":function($event){_vm.selectAll()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"select_all\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"Select all\")])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-17890de2\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ActionBar.vue\n// module id = null\n// module chunks = ","<template>\n <v-toolbar fixed dark app class=\"primary\">\n <v-menu offset-y nudge-bottom=\"15\" v-show=\"isAuthenticated && useAuthentication\">\n <template slot=\"activator\">\n <v-btn icon slot=\"activator\">\n <v-icon >menu</v-icon>\n </v-btn>\n </template>\n <v-list>\n <v-list-tile @click=\"logout\">\n <v-list-tile-title>Logout</v-list-tile-title>\n </v-list-tile>\n </v-list>\n </v-menu>\n\n <v-toolbar-title>\n <router-link to=\"/\" tag=\"span\" style=\"cursor: pointer\">{{ name }}</router-link>\n </v-toolbar-title>\n <v-spacer></v-spacer>\n <v-text-field append-icon=\"search\" clearable single-line hide-details\n placeholder=\"Filter...\" v-model=\"search\" class=\"no-padding\"\n color=\"grey lighten-1\" v-show=\"isAuthenticated || !useAuthentication\">\n </v-text-field>\n <ActionBar v-show=\"isAuthenticated || !useAuthentication\"></ActionBar>\n <v-toolbar-items v-show=\"isAuthenticated || !useAuthentication\">\n <ProcessChip class=\"hidden-sm-and-down\"></ProcessChip>\n <SupervisorChip class=\"hidden-sm-and-down\"></SupervisorChip>\n <GroupChip class=\"hidden-sm-and-down\"></GroupChip>\n </v-toolbar-items>\n </v-toolbar>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\nimport ProcessChip from './process/Chip'\nimport SupervisorChip from './supervisor/Chip'\nimport GroupChip from './group/Chip'\nimport ActionBar from './ActionBar'\n\nexport default {\n name: 'ToolBar',\n components: { ActionBar, ProcessChip, SupervisorChip, GroupChip },\n computed: {\n ...mapGetters(['name']),\n isAuthenticated () { return this.$store.state.isAuthenticated },\n useAuthentication () { return this.$store.state.useAuthentication },\n search: {\n get () { return this.$store.state.search },\n set (v) { this.$store.commit('updateSearch', v) }\n }\n },\n methods: {\n logout () {\n this.$store.dispatch('logout').then(() => { this.$router.push({'name': 'Login'}) })\n }\n }\n}\n</script>\n<style scoped>\n .no-padding {\n padding: 0;\n }\n</style>\n\n\n// WEBPACK FOOTER //\n// src/components/ToolBar.vue","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ActionBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ActionBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-17890de2\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ActionBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ActionBar.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-toolbar',{staticClass:\"primary\",attrs:{\"fixed\":\"\",\"dark\":\"\",\"app\":\"\"}},[_c('v-menu',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAuthenticated && _vm.useAuthentication),expression:\"isAuthenticated && useAuthentication\"}],attrs:{\"offset-y\":\"\",\"nudge-bottom\":\"15\"}},[_c('template',{slot:\"activator\"},[_c('v-btn',{attrs:{\"slot\":\"activator\",\"icon\":\"\"},slot:\"activator\"},[_c('v-icon',[_vm._v(\"menu\")])],1)],1),_vm._v(\" \"),_c('v-list',[_c('v-list-tile',{on:{\"click\":_vm.logout}},[_c('v-list-tile-title',[_vm._v(\"Logout\")])],1)],1)],2),_vm._v(\" \"),_c('v-toolbar-title',[_c('router-link',{staticStyle:{\"cursor\":\"pointer\"},attrs:{\"to\":\"/\",\"tag\":\"span\"}},[_vm._v(_vm._s(_vm.name))])],1),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),_c('v-text-field',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAuthenticated || !_vm.useAuthentication),expression:\"isAuthenticated || !useAuthentication\"}],staticClass:\"no-padding\",attrs:{\"append-icon\":\"search\",\"clearable\":\"\",\"single-line\":\"\",\"hide-details\":\"\",\"placeholder\":\"Filter...\",\"color\":\"grey lighten-1\"},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),_vm._v(\" \"),_c('ActionBar',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAuthenticated || !_vm.useAuthentication),expression:\"isAuthenticated || !useAuthentication\"}]}),_vm._v(\" \"),_c('v-toolbar-items',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAuthenticated || !_vm.useAuthentication),expression:\"isAuthenticated || !useAuthentication\"}]},[_c('ProcessChip',{staticClass:\"hidden-sm-and-down\"}),_vm._v(\" \"),_c('SupervisorChip',{staticClass:\"hidden-sm-and-down\"}),_vm._v(\" \"),_c('GroupChip',{staticClass:\"hidden-sm-and-down\"})],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-f3b5b706\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ToolBar.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-f3b5b706\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ToolBar.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ToolBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ToolBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f3b5b706\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ToolBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-f3b5b706\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ToolBar.vue\n// module id = null\n// module chunks = ","export const stateColorMap = {\n STOPPED: 'red',\n STARTING: 'blue',\n RUNNING: 'green',\n BACKOFF: 'orange',\n STOPPING: 'blue',\n EXITED: 'red',\n FATAL: 'purple',\n UNKNOWN: 'grey'\n}\n\nexport const notificationColorMap = {\n DEBUG: 'grey darken-2',\n INFO: 'grey darken-3',\n WARNING: 'orange',\n ERROR: 'error'\n}\n\nexport const supervisorAction = (id, action) => {\n let form = new FormData()\n form.append('supervisor', id)\n return fetch('/api/supervisor/' + action, {method: 'POST', body: form})\n}\n\nexport const processAction = (uid, action) => {\n let form = new FormData()\n form.append('uid', uid)\n fetch('/api/process/' + action, { method: 'POST', body: form })\n}\n\nexport const load = () => {\n return fetch('/api/data')\n}\n\nexport const streamTo = (eventHandler) => {\n let eventSource = new EventSource('/api/stream')\n eventSource.onmessage = event => {\n let data = JSON.parse(event.data)\n eventHandler(data)\n }\n eventSource.onerror = () => {\n eventHandler('error')\n }\n eventSource.onclose = () => {\n eventHandler('close')\n }\n return eventSource\n}\n\nexport const formatBytes = (bytes, decimals) => {\n if (bytes === 0) return '0 b'\n let k = 1024\n let dm = decimals || 2\n let sizes = ['b', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb', 'Eb', 'Zb', 'Yb']\n let i = Math.floor(Math.log(bytes) / Math.log(k))\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]\n}\n\nexport const timeAgo = (timestamp) => {\n var templates = {\n prefix: '',\n suffix: ' ago',\n seconds: 'less than a minute',\n minute: 'about a minute',\n minutes: '%d minutes',\n hour: 'about an hour',\n hours: 'about %d hours',\n day: 'a day',\n days: '%d days',\n month: 'about a month',\n months: '%d months',\n year: 'about a year',\n years: '%d years'\n }\n\n var template = function (t, n) {\n return templates[t] && templates[t].replace(/%d/i, Math.abs(Math.round(n)))\n }\n\n var then = new Date(timestamp * 1000)\n\n var now = new Date()\n var seconds = ((now.getTime() - then) * 0.001) >> 0\n var minutes = seconds / 60\n var hours = minutes / 60\n var days = hours / 24\n var years = days / 365\n\n return templates.prefix + (\n (seconds < 45 && template('seconds', seconds)) ||\n (seconds < 90 && template('minute', 1)) ||\n (minutes < 45 && template('minutes', minutes)) ||\n (minutes < 90 && template('hour', 1)) ||\n (hours < 24 && template('hours', hours)) ||\n (hours < 42 && template('day', 1)) ||\n (days < 30 && template('days', days)) ||\n (days < 45 && template('month', 1)) ||\n (days < 365 && template('months', days / 30)) ||\n (years < 1.5 && template('year', 1)) ||\n template('years', years)\n ) + templates.suffix\n}\n\nexport const nullMultivisor = {\n name: 'Multivisor',\n supervisors: {}\n}\n\nexport const nullProcess = {\n name: '',\n uid: '',\n pid: 0,\n description: '',\n exitstatus: 0,\n logfile: null,\n stderr_logfile: null,\n start: 0,\n now: 0\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/multivisor.js","<template>\n <v-snackbar :timeout=\"5000\" bottom right :color=\"color\"\n v-model=\"visible\">\n {{ lastNotification.message }}\n </v-snackbar>\n</template>\n\n<script>\nimport { notificationColorMap } from '../multivisor'\n\nexport default {\n name: 'NotificationBar',\n data () {\n return { visible: false, color: 'info' }\n },\n watch: {\n lastNotification (notification) {\n this.visible = true\n this.color = notificationColorMap[notification.level]\n }\n },\n computed: {\n lastNotification () {\n let n = this.$store.state.notifications.length\n return n ? this.$store.state.notifications[n - 1] : { message: '' }\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/NotificationBar.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-snackbar',{attrs:{\"timeout\":5000,\"bottom\":\"\",\"right\":\"\",\"color\":_vm.color},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}},[_vm._v(\"\\n \"+_vm._s(_vm.lastNotification.message)+\"\\n\")])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-28e82e2e\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/NotificationBar.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NotificationBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NotificationBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-28e82e2e\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./NotificationBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/NotificationBar.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-alert',{attrs:{\"value\":_vm.error,\"type\":\"error\",\"transition\":\"scale-transition\"}},[_vm._v(_vm._s(_vm.error))])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-52ae4ac4\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/AlertBar.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AlertBar.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AlertBar.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-52ae4ac4\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./AlertBar.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/AlertBar.vue\n// module id = null\n// module chunks = ","<template>\n <v-alert :value=\"error\" type=\"error\" transition=\"scale-transition\">{{error}}</v-alert>\n</template>\n\n<script>\n export default {\n name: 'AlertBar',\n computed: {\n error () {\n return this.$store.state.error\n }\n }\n }\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/AlertBar.vue","<template>\n <v-bottom-sheet v-model=\"visible\">\n <v-toolbar dense height=\"32px\"\n :color=\"log.stream === 'err' ? 'orange' : 'blue'\">\n <h5>{{ title }}</h5>\n <v-spacer></v-spacer>\n <v-tooltip bottom>\n <v-switch slot=\"activator\" color=\"indigo\"\n style=\"height: 32px;\"\n v-model=\"autoScroll\">\n </v-switch>\n <span>auto-scroll ({{ autoScroll ? 'On' : 'Off' }})</span>\n </v-tooltip>\n <v-tooltip bottom>\n <v-chip slot=\"activator\" color=\"indigo white--text\" dark>\n {{ localSizeStr }}\n <v-btn icon small left class=\"ml-0\" @click=\"text=''\">\n <v-icon>delete</v-icon>\n </v-btn>\n </v-chip>\n <span>Web console log size</span>\n </v-tooltip>\n <v-tooltip bottom>\n <v-chip slot=\"activator\" class=\"indigo white--text\" dark>\n {{ sizeStr }}\n </v-chip>\n <span>Remote log size</span>\n </v-tooltip>\n <v-btn icon dark small @click=\"maximize=!maximize\" class=\"mr-2\">\n <v-icon v-if=\"maximize\">expand_more</v-icon>\n <v-icon v-else>expand_less</v-icon>\n </v-btn>\n </v-toolbar>\n <v-progress-linear :indeterminate=\"active\" height=1 class=\"my-0\"\n background-color=\"white\" color=\"deep-purple\">\n </v-progress-linear>\n <v-card>\n <v-card-text :style=\"windowSize\" id=\"logContent\"\n class=\"scroll-y black white--text px-2 py-0\">\n <pre class=\"logConsole \">\n {{ text }}\n </pre>\n </v-card-text>\n </v-card>\n </v-bottom-sheet>\n</template>\n\n<script>\nimport * as multivisor from '../../multivisor'\n\nexport default {\n name: 'LogSheet',\n data () {\n return {\n text: '',\n size: 0,\n maximize: false,\n autoScroll: true,\n eventSource: null\n }\n },\n\n watch: {\n visible () { this.viewLog() }\n },\n\n computed: {\n log () {\n return this.$store.state.log\n },\n visible: {\n get () { return this.$store.state.log.visible },\n set (v) { this.$store.commit('setLogVisible', v) }\n },\n title () {\n if (!this.log.visible) {\n return ''\n }\n return `${this.log.stream === 'out' ? 'O-log of ' : 'E-log of '}\n ${this.log.process.name} on ${this.log.process.supervisor}`\n },\n windowSize () {\n let h = window.innerHeight\n return `height: ${this.maximize ? h - 80 : Math.min(h / 3, 300)}px;`\n },\n sizeStr () {\n return multivisor.formatBytes(this.size)\n },\n localSizeStr () {\n return multivisor.formatBytes(this.text.length)\n },\n active () {\n return this.eventSource && this.eventSource.readyState < 2\n }\n },\n\n methods: {\n appendLogMessage (data) {\n this.size = data.size\n if (data.message) {\n this.text += data.message\n /* At 10Mb, cut log to 9Mb */\n if (this.text.length > 1e7) {\n this.text = this.text.substr(-9000000)\n }\n }\n if (this.autoScroll) {\n let logTag = document.getElementById('logContent')\n setTimeout(() => { logTag.scrollTop = logTag.scrollHeight }, 100)\n }\n },\n viewLog () {\n let log = this.log\n if (this.eventSource !== null) {\n this.text = ''\n this.size = 0\n this.eventSource.close()\n }\n if (!log.visible) {\n return\n }\n let eventSource = new EventSource(`/api/process/log/${log.stream}/tail/${log.process.uid}`)\n eventSource.onmessage = event => {\n let data = JSON.parse(event.data)\n this.appendLogMessage(data)\n }\n eventSource.onopen = event => {\n console.debug(log.stream + ' stream opened for ' + this.log.process.uid)\n }\n eventSource.onclose = event => {\n this.eventSource = null\n }\n eventSource.onerror = event => {\n this.eventSource.close()\n this.eventSource = null\n }\n this.eventSource = eventSource\n }\n }\n}\n</script>\n<style scoped>\n.logConsole {\n font-size: small;\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/process/Log.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-bottom-sheet',{model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}},[_c('v-toolbar',{attrs:{\"dense\":\"\",\"height\":\"32px\",\"color\":_vm.log.stream === 'err' ? 'orange' : 'blue'}},[_c('h5',[_vm._v(_vm._s(_vm.title))]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"bottom\":\"\"}},[_c('v-switch',{staticStyle:{\"height\":\"32px\"},attrs:{\"slot\":\"activator\",\"color\":\"indigo\"},slot:\"activator\",model:{value:(_vm.autoScroll),callback:function ($$v) {_vm.autoScroll=$$v},expression:\"autoScroll\"}}),_vm._v(\" \"),_c('span',[_vm._v(\"auto-scroll (\"+_vm._s(_vm.autoScroll ? 'On' : 'Off')+\")\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"bottom\":\"\"}},[_c('v-chip',{attrs:{\"slot\":\"activator\",\"color\":\"indigo white--text\",\"dark\":\"\"},slot:\"activator\"},[_vm._v(\"\\n \"+_vm._s(_vm.localSizeStr)+\"\\n \"),_c('v-btn',{staticClass:\"ml-0\",attrs:{\"icon\":\"\",\"small\":\"\",\"left\":\"\"},on:{\"click\":function($event){_vm.text=''}}},[_c('v-icon',[_vm._v(\"delete\")])],1)],1),_vm._v(\" \"),_c('span',[_vm._v(\"Web console log size\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"bottom\":\"\"}},[_c('v-chip',{staticClass:\"indigo white--text\",attrs:{\"slot\":\"activator\",\"dark\":\"\"},slot:\"activator\"},[_vm._v(\"\\n \"+_vm._s(_vm.sizeStr)+\"\\n \")]),_vm._v(\" \"),_c('span',[_vm._v(\"Remote log size\")])],1),_vm._v(\" \"),_c('v-btn',{staticClass:\"mr-2\",attrs:{\"icon\":\"\",\"dark\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.maximize=!_vm.maximize}}},[(_vm.maximize)?_c('v-icon',[_vm._v(\"expand_more\")]):_c('v-icon',[_vm._v(\"expand_less\")])],1)],1),_vm._v(\" \"),_c('v-progress-linear',{staticClass:\"my-0\",attrs:{\"indeterminate\":_vm.active,\"height\":\"1\",\"background-color\":\"white\",\"color\":\"deep-purple\"}}),_vm._v(\" \"),_c('v-card',[_c('v-card-text',{staticClass:\"scroll-y black white--text px-2 py-0\",style:(_vm.windowSize),attrs:{\"id\":\"logContent\"}},[_c('pre',{staticClass:\"logConsole \"},[_vm._v(\" \"+_vm._s(_vm.text)+\"\\n \")])])],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2ae5b902\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/process/Log.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2ae5b902\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Log.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Log.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Log.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2ae5b902\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Log.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-2ae5b902\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/process/Log.vue\n// module id = null\n// module chunks = ","<template>\n <v-bottom-sheet inset v-model=\"visible\">\n <v-card>\n <v-card-title>Last updated {{ lastUpdate }}</v-card-title>\n <v-list dense>\n <template v-for=\"(item, index) in items\">\n <v-list-tile avatar :key=\"item.id\" v-if=\"showItem(item)\">\n <v-list-tile-avatar :color=\"item.color\">\n <span class=\"white--text headline\">{{ item.label[0] }}</span>\n </v-list-tile-avatar>\n <v-list-tile-content>\n <v-list-tile-title>{{ itemValue(item) }}</v-list-tile-title>\n <v-list-tile-sub-title>{{ item.label }}</v-list-tile-sub-title>\n </v-list-tile-content>\n </v-list-tile>\n <v-divider inset v-if=\"index < (items.length - 2)\"></v-divider>\n </template>\n </v-list>\n </v-card>\n </v-bottom-sheet>\n</template>\n\n<script>\nimport { timeAgo } from '../../multivisor'\n\nexport default {\n name: 'ProcessDetails',\n data () {\n return {\n items: [\n {id: 'name', label: 'Name', color: 'red'},\n {value: this.startTime, label: 'Started at (last)', color: 'red darken-2'},\n {id: 'description', label: 'Description', color: 'orange'},\n {id: 'host', label: 'Host', color: 'green'},\n {id: 'supervisor', label: 'Supervisor', color: 'green darken-2'},\n {id: 'pid', label: 'PID', color: 'blue'},\n {id: 'exitstatus', label: 'Exit status (last)', color: 'blue darken-2'},\n {id: 'logfile', label: 'Output log file', color: 'purple'},\n {id: 'stderr_logfile', label: 'Error log file', color: 'purple darken-2'}\n ]\n }\n },\n computed: {\n process () { return this.$store.state.processDetails.process },\n visible: {\n get () { return this.$store.state.processDetails.visible },\n set (v) { this.$store.commit('setProcessDetailsVisible', v) }\n },\n lastUpdate () { return timeAgo(this.process.now) }\n },\n methods: {\n startTime () { return Date(this.process.start) },\n showItem (item) { return 'value' in item || this.process[item.id] !== '' },\n itemValue (item) {\n if ('id' in item) {\n return this.process[item.id]\n }\n return item.value()\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/process/Details.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-bottom-sheet',{attrs:{\"inset\":\"\"},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}},[_c('v-card',[_c('v-card-title',[_vm._v(\"Last updated \"+_vm._s(_vm.lastUpdate))]),_vm._v(\" \"),_c('v-list',{attrs:{\"dense\":\"\"}},[_vm._l((_vm.items),function(item,index){return [(_vm.showItem(item))?_c('v-list-tile',{key:item.id,attrs:{\"avatar\":\"\"}},[_c('v-list-tile-avatar',{attrs:{\"color\":item.color}},[_c('span',{staticClass:\"white--text headline\"},[_vm._v(_vm._s(item.label[0]))])]),_vm._v(\" \"),_c('v-list-tile-content',[_c('v-list-tile-title',[_vm._v(_vm._s(_vm.itemValue(item)))]),_vm._v(\" \"),_c('v-list-tile-sub-title',[_vm._v(_vm._s(item.label))])],1)],1):_vm._e(),_vm._v(\" \"),(index < (_vm.items.length - 2))?_c('v-divider',{attrs:{\"inset\":\"\"}}):_vm._e()]})],2)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-21f66b8c\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/process/Details.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Details.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Details.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-21f66b8c\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Details.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/process/Details.vue\n// module id = null\n// module chunks = ","<template>\n <v-app >\n <ToolBar></ToolBar>\n <v-content>\n <v-container fluid grid-list-md>\n <AlertBar></AlertBar>\n <router-view></router-view>\n </v-container>\n </v-content>\n <NotificationBar></NotificationBar>\n <LogSheet></LogSheet>\n <ProcessDetails></ProcessDetails>\n </v-app>\n</template>\n\n<script>\nimport ToolBar from '@/components/ToolBar'\nimport NotificationBar from '@/components/NotificationBar'\nimport AlertBar from '@/components/AlertBar'\n\nimport LogSheet from '@/components/process/Log'\nimport ProcessDetails from '@/components/process/Details'\n\nexport default {\n components: {\n ToolBar,\n LogSheet,\n ProcessDetails,\n NotificationBar,\n AlertBar\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-app',[_c('ToolBar'),_vm._v(\" \"),_c('v-content',[_c('v-container',{attrs:{\"fluid\":\"\",\"grid-list-md\":\"\"}},[_c('AlertBar'),_vm._v(\" \"),_c('router-view')],1)],1),_vm._v(\" \"),_c('NotificationBar'),_vm._v(\" \"),_c('LogSheet'),_vm._v(\" \"),_c('ProcessDetails')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-216c8932\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-216c8932\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport * as multivisor from '@/multivisor'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n state: {\n multivisor: multivisor.nullMultivisor,\n error: '',\n notifications: [],\n selectedProcesses: [],\n search: '',\n log: {\n process: null,\n visible: false,\n stream: 'out'\n },\n processDetails: {\n process: multivisor.nullProcess,\n visible: false\n },\n isAuthenticated: undefined,\n useAuthentication: undefined\n },\n mutations: {\n updateMultivisor (state, multivisor) {\n state.multivisor = multivisor\n },\n updateProcess (state, process) {\n let supervisor = state.multivisor.supervisors[process.supervisor]\n supervisor.processes[process.uid] = process\n },\n updateSupervisor (state, supervisor) {\n state.multivisor.supervisors[supervisor.name] = supervisor\n },\n newNotification (state, notification) {\n state.notifications.push(notification)\n },\n setLogVisible (state, visible) {\n state.log.visible = visible\n },\n setLog (state, log) {\n state.log = log\n },\n setSelectedProcesses (state, selectedProcesses) {\n state.selectedProcesses = selectedProcesses\n },\n addSelectedProcesses (state, processes) {\n let toAdd = new Set([...state.selectedProcesses, ...processes])\n state.selectedProcesses = [...toAdd]\n },\n removeSelectedProcesses (state, processes) {\n let toRemove = new Set(processes)\n state.selectedProcesses = state.selectedProcesses.filter(process => !toRemove.has(process))\n },\n updateSearch (state, search) {\n state.search = search\n },\n setProcessDetailsVisible (state, visible) {\n state.processDetails.visible = visible\n },\n setProcessDetails (state, details) {\n state.processDetails = details\n },\n setIsAuthenticated (state, isAuthenticated) {\n state.isAuthenticated = isAuthenticated\n },\n setUseAuthentication (state, useAuthentication) {\n state.useAuthentication = useAuthentication\n },\n logout (state) {\n state.isAuthenticated = false\n },\n setError (state, error) {\n state.error = error\n },\n setMultivisorError (state) {\n state.error = 'Couldn\\'t connect to multivisor server, make sure it is running'\n }\n },\n actions: {\n async init ({ commit }) {\n const response = await multivisor.load()\n if (response.status === 401) {\n return\n } else if (response.status === 504) { // server down\n commit('setMultivisorError')\n } else {\n const data = await response.json()\n commit('updateMultivisor', data)\n }\n const eventHandler = (event) => {\n if (event === 'error' || event === 'close') {\n commit('setMultivisorError')\n commit('updateMultivisor', multivisor.nullMultivisor)\n } else if (event.event === 'process_changed') {\n commit('updateProcess', event.payload)\n } else if (event.event === 'supervisor_changed') {\n commit('updateSupervisor', event.payload)\n } else if (event.event === 'notification') {\n commit('newNotification', event.payload)\n }\n }\n multivisor.streamTo(eventHandler)\n },\n restartProcesses (context, uids) {\n multivisor.processAction(uids, 'restart')\n },\n stopProcesses (context, uid) {\n multivisor.processAction(uid, 'stop')\n },\n selectAll () {\n this.commit('setSelectedProcesses', [...this.getters.filteredProcessUIDs])\n },\n clearSelected () {\n this.commit('setSelectedProcesses', [])\n },\n restartSelected () {\n this.dispatch('restartProcesses', this.state.selectedProcesses).then(() => {\n this.dispatch('clearSelected')\n })\n },\n stopSelected () {\n this.dispatch('stopProcesses', this.state.selectedProcesses).then(() => {\n this.dispatch('clearSelected')\n })\n },\n updateSupervisor (context, uid) {\n multivisor.supervisorAction(uid, 'update')\n },\n restartSupervisor (context, uid) {\n multivisor.supervisorAction(uid, 'restart')\n },\n logout () {\n this.commit('logout')\n fetch('/api/logout', {method: 'POST'})\n }\n },\n getters: {\n name (state) {\n return state.multivisor.name\n },\n supervisors (state) {\n return Object.values(state.multivisor.supervisors)\n },\n processes (state, getters) {\n return getters.supervisors.reduce((processes, supervisor) => {\n processes.push(...Object.values(supervisor.processes))\n return processes\n }, [])\n },\n groupMap (state, getters) {\n return getters.processes.reduce((groups, proc) => {\n (proc.group in groups && groups[proc.group].processes.push(proc)) ||\n (groups[proc.group] = { name: proc.group, processes: [proc] })\n return groups\n }, {})\n },\n groups (state, getters) {\n return Object.values(getters.groupMap)\n },\n supervisor (state) {\n return (uid) => { return state.multivisor.supervisors[uid] }\n },\n process (state, getters) {\n return (uid) => {\n return getters.processes.find((process) => {\n return process.uid === uid\n })\n }\n },\n group (state, getters) {\n return (name) => { return getters.groupMap[name] }\n },\n filteredProcessUIDs (state, getters) {\n if (!state.search) {\n return new Set(getters.processes.map(process => process.uid))\n }\n let search = state.search.toLowerCase()\n return getters.processes.reduce((filtered, process) => {\n if (process.uid.toLowerCase().indexOf(search) !== -1 ||\n process.statename.toLowerCase().indexOf(search) !== -1) {\n filtered.add(process.uid)\n }\n return filtered\n }, new Set())\n },\n filteredGroupMap (state, getters) {\n if (!state.search) {\n return getters.groups\n }\n let filteredProcesses = getters.filteredProcessUIDs\n return getters.processes.reduce((groups, proc) => {\n if (filteredProcesses.has(proc.uid)) {\n (proc.group in groups && groups[proc.group].processes.push(proc)) ||\n (groups[proc.group] = { name: proc.group, processes: [proc] })\n }\n return groups\n }, {})\n },\n filteredGroups (state, getters) {\n return Object.values(getters.filteredGroupMap)\n },\n totalNbProcesses (state, getters) {\n return getters.processes.length\n },\n nbRunningProcesses (state, getters) {\n return getters.processes.reduce((acc, process) => {\n return process.running ? acc + 1 : acc\n }, 0)\n },\n nbStoppedProcesses (state, getters) {\n return getters.totalNbProcesses - getters.nbRunningProcesses\n },\n totalNbSupervisors (state, getters) {\n return getters.supervisors.length\n },\n nbRunningSupervisors (state, getters) {\n return getters.supervisors.reduce((acc, supervisor) => {\n return supervisor.running ? acc + 1 : acc\n }, 0)\n },\n nbStoppedSupervisors (state, getters) {\n return getters.totalNbSupervisors - getters.nbRunningSupervisors\n },\n nbGroups (state, getters) {\n return getters.groups.length\n }\n }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/index.js","<template lang=\"html\">\n <v-chip disabled label :color=\"stateColorMap[state]\"\n text-color=\"white\" :small=\"small\">\n {{ state }}\n </v-chip>\n</template>\n\n<script>\nimport { stateColorMap } from '../../multivisor'\n\nexport default {\n name: 'ProcessState',\n props: {\n state: { default: 'UNKNOWN' },\n small: { default: false }\n },\n data () { return { stateColorMap } }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/process/State.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-chip',{attrs:{\"disabled\":\"\",\"label\":\"\",\"color\":_vm.stateColorMap[_vm.state],\"text-color\":\"white\",\"small\":_vm.small}},[_vm._v(\"\\n \"+_vm._s(_vm.state)+\"\\n\")])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-032dda49\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/process/State.vue\n// module id = null\n// module chunks = ","<template lang=\"html\">\n <v-list-tile>\n <v-list-tile-action>\n <v-checkbox hide-details v-model=\"selectedProcesses\"\n :value=\"process.uid\"></v-checkbox>\n </v-list-tile-action>\n <v-list-tile-content>\n <v-list-tile-title>{{ process.name }}</v-list-tile-title>\n </v-list-tile-content>\n\n <v-list-tile-action>\n <v-flex justify-end>\n <ProcessState :state=\"process.statename\"></ProcessState>\n <v-btn icon @click=\"restartProcess(process)\">\n <v-icon color=\"green\">\n <template v-if=\"process.running\">autorenew</template>\n <template v-else>play_arrow</template>\n </v-icon>\n </v-btn>\n <v-btn icon @click=\"stopProcess(process)\"\n :disabled=\"!process.running\">\n <v-icon color=\"red\">stop</v-icon>\n </v-btn>\n <v-menu open-on-hover>\n <v-btn icon small slot=\"activator\" color=\"blue--text\">\n <v-icon>more_vert</v-icon>\n </v-btn>\n <div class=\"grey lighten-3\">\n <v-btn icon small @click=\"viewDetails(process)\">\n <v-icon color=\"blue\">info</v-icon>\n </v-btn>\n <v-btn icon small @click=\"viewLog(process, 'out')\"\n v-if=\"process.logfile\">\n <v-icon color=\"blue\">description</v-icon>\n </v-btn>\n <v-btn icon small @click=\"viewLog(process, 'err')\"\n v-if=\"process.stderr_logfile\">\n <v-icon color=\"orange\">description</v-icon>\n </v-btn>\n </div>\n </v-menu>\n </v-flex>\n </v-list-tile-action>\n </v-list-tile>\n</template>\n\n<script>\nimport ProcessState from '../process/State'\n\nexport default {\n name: 'ProcessTitle',\n props: ['process'],\n components: {\n ProcessState\n },\n computed: {\n selectedProcesses: {\n get () { return this.$store.state.selectedProcesses },\n set (v) { this.$store.commit('setSelectedProcesses', v) }\n }\n },\n methods: {\n restartProcess (process) {\n this.$store.dispatch('restartProcesses', [process.uid])\n },\n stopProcess (process) {\n this.$store.dispatch('stopProcesses', [process.uid])\n },\n viewLog (process, stream) {\n this.$store.commit('setLog', {\n process,\n stream,\n visible: true\n })\n },\n viewDetails (process) {\n this.$store.commit('setProcessDetails', {\n process,\n visible: true\n })\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/process/Tile.vue","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./State.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./State.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-032dda49\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./State.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/process/State.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-list-tile',[_c('v-list-tile-action',[_c('v-checkbox',{attrs:{\"hide-details\":\"\",\"value\":_vm.process.uid},model:{value:(_vm.selectedProcesses),callback:function ($$v) {_vm.selectedProcesses=$$v},expression:\"selectedProcesses\"}})],1),_vm._v(\" \"),_c('v-list-tile-content',[_c('v-list-tile-title',[_vm._v(_vm._s(_vm.process.name))])],1),_vm._v(\" \"),_c('v-list-tile-action',[_c('v-flex',{attrs:{\"justify-end\":\"\"}},[_c('ProcessState',{attrs:{\"state\":_vm.process.statename}}),_vm._v(\" \"),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){_vm.restartProcess(_vm.process)}}},[_c('v-icon',{attrs:{\"color\":\"green\"}},[(_vm.process.running)?[_vm._v(\"autorenew\")]:[_vm._v(\"play_arrow\")]],2)],1),_vm._v(\" \"),_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":!_vm.process.running},on:{\"click\":function($event){_vm.stopProcess(_vm.process)}}},[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"stop\")])],1),_vm._v(\" \"),_c('v-menu',{attrs:{\"open-on-hover\":\"\"}},[_c('v-btn',{attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\",\"color\":\"blue--text\"},slot:\"activator\"},[_c('v-icon',[_vm._v(\"more_vert\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"grey lighten-3\"},[_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.viewDetails(_vm.process)}}},[_c('v-icon',{attrs:{\"color\":\"blue\"}},[_vm._v(\"info\")])],1),_vm._v(\" \"),(_vm.process.logfile)?_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.viewLog(_vm.process, 'out')}}},[_c('v-icon',{attrs:{\"color\":\"blue\"}},[_vm._v(\"description\")])],1):_vm._e(),_vm._v(\" \"),(_vm.process.stderr_logfile)?_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.viewLog(_vm.process, 'err')}}},[_c('v-icon',{attrs:{\"color\":\"orange\"}},[_vm._v(\"description\")])],1):_vm._e()],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7d331410\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/process/Tile.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Tile.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Tile.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7d331410\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Tile.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/process/Tile.vue\n// module id = null\n// module chunks = ","<template lang=\"html\">\n <div>\n <v-list dense>\n <template v-for=\"process in group.processes\">\n <ProcessTile :process=\"process\"></ProcessTile>\n </template>\n </v-list>\n</div>\n</template>\n\n<script>\nimport ProcessTile from '../process/Tile'\n\nexport default {\n name: 'GroupList',\n props: ['group'],\n components: {\n ProcessTile\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/group/List.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('v-list',{attrs:{\"dense\":\"\"}},[_vm._l((_vm.group.processes),function(process){return [_c('ProcessTile',{attrs:{\"process\":process}})]})],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0fb6e0de\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/group/List.vue\n// module id = null\n// module chunks = ","<template>\n <v-card>\n <v-toolbar dense color=\"purple darken-2\" dark>\n <v-toolbar-title>{{ group.name }}</v-toolbar-title>\n <v-spacer></v-spacer>\n <v-tooltip top>\n <v-btn slot=\"activator\" icon small @click=\"restartSelected()\"\n v-show=\"selectedProcesses.length\">\n <v-icon>autorenew</v-icon>\n </v-btn>\n <span>(Re)start selected processes</span>\n </v-tooltip>\n <v-tooltip top>\n <v-btn slot=\"activator\" icon small @click=\"stopSelected()\"\n v-show=\"selectedProcesses.length\">\n <v-icon>stop</v-icon>\n </v-btn>\n <span>Stop selected processes</span>\n </v-tooltip>\n <v-tooltip top>\n <v-btn slot=\"activator\" icon small @click=\"clearSelected()\"\n v-show=\"selectedProcesses.length\">\n <v-icon>clear_all</v-icon>\n </v-btn>\n <span>Clear selection</span>\n </v-tooltip>\n <v-tooltip top>\n <v-btn slot=\"activator\" icon small @click=\"selectAll()\"\n v-show=\"selectedProcesses.length < group.processes.length\">\n <v-icon>done_all</v-icon>\n </v-btn>\n <span>Select all</span>\n </v-tooltip>\n </v-toolbar>\n <GroupList :group=\"group\"></GroupList>\n </v-card>\n</template>\n\n<script>\nimport GroupList from './List'\n\nexport default {\n name: 'GroupCard',\n props: ['item'],\n components: {\n GroupList\n },\n computed: {\n group () { return this.item.item },\n selectedProcesses () {\n return this.$store.state.selectedProcesses.reduce((processes, puid) => {\n let group = puid.split(':', 2)[1]\n if (group === this.group.name) {\n processes.push(puid)\n }\n return processes\n }, [])\n }\n },\n methods: {\n restartSelected () {\n this.$store.dispatch('restartProcesses', this.selectedProcesses)\n this.clearSelected()\n },\n stopSelected () {\n this.$store.dispatch('stopProcesses', this.selectedProcesses)\n this.clearSelected()\n },\n selectAll () {\n let puids = this.group.processes.reduce((processes, process) => {\n processes.push(process.uid)\n return processes\n }, [])\n this.$store.commit('addSelectedProcesses', puids)\n },\n clearSelected () {\n this.$store.commit('removeSelectedProcesses', this.selectedProcesses)\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/group/Card.vue","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./List.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./List.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0fb6e0de\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./List.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/group/List.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-toolbar',{attrs:{\"dense\":\"\",\"color\":\"purple darken-2\",\"dark\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.group.name))]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length),expression:\"selectedProcesses.length\"}],attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.restartSelected()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"autorenew\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"(Re)start selected processes\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length),expression:\"selectedProcesses.length\"}],attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.stopSelected()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"stop\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"Stop selected processes\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length),expression:\"selectedProcesses.length\"}],attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.clearSelected()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"clear_all\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"Clear selection\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length < _vm.group.processes.length),expression:\"selectedProcesses.length < group.processes.length\"}],attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.selectAll()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"done_all\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"Select all\")])],1)],1),_vm._v(\" \"),_c('GroupList',{attrs:{\"group\":_vm.group}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-ae0bb536\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/group/Card.vue\n// module id = null\n// module chunks = ","<template>\n <v-container fluid grid-list-md>\n <v-data-iterator\n content-tag=\"v-layout\"\n row wrap hide-actions\n item-key=\"name\"\n :items=\"groups\"\n no-results-text=\"Sorry, no matching processes found\"\n no-data-text=\"Sorry, there are no processes currently being monitored\">\n <v-flex slot=\"item\" slot-scope=\"props\"\n xs12 sm12 md6 lg4 xl3>\n <GroupCard :item=\"props\"></GroupCard>\n </v-flex>\n </v-data-iterator>\n </v-container>\n</template>\n\n<script>\nimport GroupCard from './Card'\nimport { mapGetters } from 'vuex'\n\nexport default {\n name: 'GroupPage',\n components: {\n GroupCard\n },\n computed: {\n ...mapGetters({groups: 'filteredGroups'})\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/group/Page.vue","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Card.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Card.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ae0bb536\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/group/Card.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\",\"grid-list-md\":\"\"}},[_c('v-data-iterator',{attrs:{\"content-tag\":\"v-layout\",\"row\":\"\",\"wrap\":\"\",\"hide-actions\":\"\",\"item-key\":\"name\",\"items\":_vm.groups,\"no-results-text\":\"Sorry, no matching processes found\",\"no-data-text\":\"Sorry, there are no processes currently being monitored\"},scopedSlots:_vm._u([{key:\"item\",fn:function(props){return _c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\",\"md6\":\"\",\"lg4\":\"\",\"xl3\":\"\"}},[_c('GroupCard',{attrs:{\"item\":props}})],1)}}])})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2a6a45a7\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/group/Page.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Page.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Page.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2a6a45a7\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/group/Page.vue\n// module id = null\n// module chunks = ","<template>\n <tr>\n <td class=\"px-0\"\n style=\"height:30px;\">\n <v-checkbox primary hide-details v-model=\"selectedProcesses\"\n :value=\"process.uid\" >\n </v-checkbox>\n </td>\n <td class=\"px-0\" style=\"height:30px;\">\n {{ process.name }}\n </td>\n <td v-if=\"showGroup\" class=\"hidden-xs-only px-0\" style=\"height:30px;\">\n {{ row.item.group }}\n </td>\n <td v-if=\"showSupervisor\"\n class=\"hidden-xs-only px-0\" style=\"height:30px;\">\n {{ process.supervisor }}\n </td>\n <td class=\"px-0\" style=\"height:30px;\">\n <v-chip disabled label :color=\"stateColorMap[process.statename]\"\n text-color=\"white\" small>\n {{ process.statename }}\n </v-chip>\n </td>\n\n <td class=\"layout px-0\" style=\"height:30px;\">\n <v-btn icon small @click=\"restartProcess(process)\" class=\"mx-0 my-1\">\n <v-icon color=\"green\">\n <template v-if=\"row.item.running\">autorenew</template>\n <template v-else>play_arrow</template>\n </v-icon>\n </v-btn>\n <v-btn icon small @click=\"stopProcess(process)\"\n :disabled=\"!row.item.running\" class=\"mx-0 my-1\">\n <v-icon color=\"red\">stop</v-icon>\n </v-btn>\n <v-menu open-on-hover>\n <v-btn icon small slot=\"activator\" color=\"blue--text\">\n <v-icon>more_vert</v-icon>\n </v-btn>\n <div class=\"grey lighten-3\">\n <v-btn icon small @click=\"viewDetails(process)\">\n <v-icon color=\"blue\">info</v-icon>\n </v-btn>\n <v-btn icon small @click=\"viewLog(process, 'out')\"\n v-if=\"process.logfile\">\n <v-icon color=\"blue\">description</v-icon>\n </v-btn>\n <v-btn icon small @click=\"viewLog(process, 'err')\"\n v-if=\"process.stderr_logfile\">\n <v-icon color=\"orange\">description</v-icon>\n </v-btn>\n </div>\n </v-menu>\n </td>\n </tr>\n</template>\n\n<script>\nimport { stateColorMap } from '../../multivisor'\n\nexport default {\n name: 'ProcessRow',\n props: [ 'row', 'show-supervisor', 'show-group' ],\n data () { return { stateColorMap: stateColorMap } },\n computed: {\n process () { return this.row.item },\n selectedProcesses: {\n get () { return this.$store.state.selectedProcesses },\n set (v) { this.$store.commit('setSelectedProcesses', v) }\n }\n },\n methods: {\n restartProcess (process) {\n this.$store.dispatch('restartProcesses', [process.uid])\n },\n stopProcess (process) {\n this.$store.dispatch('stopProcesses', [process.uid])\n },\n viewLog (process, stream) {\n this.$store.commit('setLog', {\n process,\n stream,\n visible: true\n })\n },\n viewDetails (process) {\n this.$store.commit('setProcessDetails', {\n process,\n visible: true\n })\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/process/Row.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',{staticClass:\"px-0\",staticStyle:{\"height\":\"30px\"}},[_c('v-checkbox',{attrs:{\"primary\":\"\",\"hide-details\":\"\",\"value\":_vm.process.uid},model:{value:(_vm.selectedProcesses),callback:function ($$v) {_vm.selectedProcesses=$$v},expression:\"selectedProcesses\"}})],1),_vm._v(\" \"),_c('td',{staticClass:\"px-0\",staticStyle:{\"height\":\"30px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.process.name)+\"\\n \")]),_vm._v(\" \"),(_vm.showGroup)?_c('td',{staticClass:\"hidden-xs-only px-0\",staticStyle:{\"height\":\"30px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.row.item.group)+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.showSupervisor)?_c('td',{staticClass:\"hidden-xs-only px-0\",staticStyle:{\"height\":\"30px\"}},[_vm._v(\"\\n \"+_vm._s(_vm.process.supervisor)+\"\\n \")]):_vm._e(),_vm._v(\" \"),_c('td',{staticClass:\"px-0\",staticStyle:{\"height\":\"30px\"}},[_c('v-chip',{attrs:{\"disabled\":\"\",\"label\":\"\",\"color\":_vm.stateColorMap[_vm.process.statename],\"text-color\":\"white\",\"small\":\"\"}},[_vm._v(\"\\n \"+_vm._s(_vm.process.statename)+\"\\n \")])],1),_vm._v(\" \"),_c('td',{staticClass:\"layout px-0\",staticStyle:{\"height\":\"30px\"}},[_c('v-btn',{staticClass:\"mx-0 my-1\",attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.restartProcess(_vm.process)}}},[_c('v-icon',{attrs:{\"color\":\"green\"}},[(_vm.row.item.running)?[_vm._v(\"autorenew\")]:[_vm._v(\"play_arrow\")]],2)],1),_vm._v(\" \"),_c('v-btn',{staticClass:\"mx-0 my-1\",attrs:{\"icon\":\"\",\"small\":\"\",\"disabled\":!_vm.row.item.running},on:{\"click\":function($event){_vm.stopProcess(_vm.process)}}},[_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\"stop\")])],1),_vm._v(\" \"),_c('v-menu',{attrs:{\"open-on-hover\":\"\"}},[_c('v-btn',{attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\",\"color\":\"blue--text\"},slot:\"activator\"},[_c('v-icon',[_vm._v(\"more_vert\")])],1),_vm._v(\" \"),_c('div',{staticClass:\"grey lighten-3\"},[_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.viewDetails(_vm.process)}}},[_c('v-icon',{attrs:{\"color\":\"blue\"}},[_vm._v(\"info\")])],1),_vm._v(\" \"),(_vm.process.logfile)?_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.viewLog(_vm.process, 'out')}}},[_c('v-icon',{attrs:{\"color\":\"blue\"}},[_vm._v(\"description\")])],1):_vm._e(),_vm._v(\" \"),(_vm.process.stderr_logfile)?_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.viewLog(_vm.process, 'err')}}},[_c('v-icon',{attrs:{\"color\":\"orange\"}},[_vm._v(\"description\")])],1):_vm._e()],1)],1)],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6744b134\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/process/Row.vue\n// module id = null\n// module chunks = ","<template>\n <v-container justify-center>\n <v-data-table\n :headers=\"headers\"\n :items=\"procs\"\n :search=\"search\"\n v-model=\"selectedProcesses\"\n hide-actions\n select-all\n no-results-text=\"Sorry, no matching processes found\"\n no-data-text=\"Sorry, there are no processes currently being monitored\"\n must-sort\n item-key='uid'\n class=\"elevation-4\">\n\n <template slot=\"headerCell\" slot-scope=\"props\">\n <v-tooltip bottom>\n <span slot=\"activator\">\n {{ props.header.text }}\n </span>\n <span>\n {{ props.header.tooltip }}\n </span>\n </v-tooltip>\n </template>\n\n <template slot=\"items\" slot-scope=\"props\">\n <ProcessRow :row=\"props\"\n :show-supervisor=\"showSupervisor\"\n :show-group=\"showGroup\"></ProcessRow>\n </template>\n </v-data-table>\n </v-container>\n</template>\n\n<script>\nimport ProcessRow from './Row'\nimport ProcessDetails from './Details'\n\nexport default {\n name: 'ProcessPage',\n props: {\n processes: { default: null },\n showGroup: { default: true },\n showSupervisor: { default: true }\n },\n components: { ProcessRow, ProcessDetails },\n computed: {\n headers () {\n let header = [{ align: 'left', sortable: true, text: 'Name', value: 'name', tooltip: 'process name' }]\n if (this.showGroup) {\n header.push({ align: 'left', sortable: true, text: 'Group', value: 'group', tooltip: 'process group', class: 'hidden-xs-only' })\n }\n if (this.showSupervisor) {\n header.push({ align: 'left', sortable: true, text: 'Supervisor', value: 'supervisor', tooltip: 'supervisor controlling process', class: 'hidden-xs-only' })\n }\n header.push({ align: 'left', sortable: true, text: 'State', value: 'statename', tooltip: 'process state' })\n header.push({ align: 'left', sortable: false, text: 'Actions', value: '', tooltip: '(re)start/stop/view log' })\n return header\n },\n search () { return this.$store.state.search },\n selectedProcesses: {\n get () { return this.$store.state.selectedProcesses },\n set (v) { this.$store.commit('setSelectedProcesses', v) }\n },\n procs () {\n return this.processes || this.$store.getters.processes\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/process/Page.vue","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Row.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Row.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6744b134\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Row.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/process/Row.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"justify-center\":\"\"}},[_c('v-data-table',{staticClass:\"elevation-4\",attrs:{\"headers\":_vm.headers,\"items\":_vm.procs,\"search\":_vm.search,\"hide-actions\":\"\",\"select-all\":\"\",\"no-results-text\":\"Sorry, no matching processes found\",\"no-data-text\":\"Sorry, there are no processes currently being monitored\",\"must-sort\":\"\",\"item-key\":\"uid\"},scopedSlots:_vm._u([{key:\"headerCell\",fn:function(props){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"}},[_c('span',{attrs:{\"slot\":\"activator\"},slot:\"activator\"},[_vm._v(\"\\n \"+_vm._s(props.header.text)+\"\\n \")]),_vm._v(\" \"),_c('span',[_vm._v(\"\\n \"+_vm._s(props.header.tooltip)+\"\\n \")])])]}},{key:\"items\",fn:function(props){return [_c('ProcessRow',{attrs:{\"row\":props,\"show-supervisor\":_vm.showSupervisor,\"show-group\":_vm.showGroup}})]}}]),model:{value:(_vm.selectedProcesses),callback:function ($$v) {_vm.selectedProcesses=$$v},expression:\"selectedProcesses\"}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-778824ac\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/process/Page.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Page.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Page.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-778824ac\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/process/Page.vue\n// module id = null\n// module chunks = ","<template lang=\"html\">\n <div>\n <v-list subheader dense\n v-for=\"(group, index) in supervisor.groups\" :key=\"group.name\">\n <v-divider v-if=\"index > 0\"></v-divider>\n <v-subheader style=\"height:24px;\" >\n {{ group.name }}\n </v-subheader>\n <template v-for=\"process in group.processes\">\n <ProcessTile :process=\"process\"></ProcessTile>\n </template>\n </v-list>\n</div>\n</template>\n\n<script>\nimport ProcessTile from '../process/Tile'\n\nexport default {\n name: 'SupervisorList',\n props: ['supervisor'],\n components: {\n ProcessTile\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/supervisor/List.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.supervisor.groups),function(group,index){return _c('v-list',{key:group.name,attrs:{\"subheader\":\"\",\"dense\":\"\"}},[(index > 0)?_c('v-divider'):_vm._e(),_vm._v(\" \"),_c('v-subheader',{staticStyle:{\"height\":\"24px\"}},[_vm._v(\"\\n \"+_vm._s(group.name)+\"\\n \")]),_vm._v(\" \"),_vm._l((group.processes),function(process){return [_c('ProcessTile',{attrs:{\"process\":process}})]})],2)}),1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4571579a\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/supervisor/List.vue\n// module id = null\n// module chunks = ","<template>\n <v-card>\n <v-toolbar dense :color=\"toolbarColor\" dark>\n <v-toolbar-title>{{ supervisor.name }} <span v-if=\"inactive\">(offline)</span></v-toolbar-title>\n <v-spacer></v-spacer>\n\n <v-tooltip top>\n <v-btn slot=\"activator\" icon small @click=\"restartSelectedProcesses()\"\n v-show=\"selectedProcesses.length\">\n <v-icon>autorenew</v-icon>\n </v-btn>\n <span>(Re)start selected processes</span>\n </v-tooltip>\n <v-tooltip top>\n <v-btn slot=\"activator\" icon small @click=\"stopSelectedProcesses()\"\n v-show=\"selectedProcesses.length\">\n <v-icon>stop</v-icon>\n </v-btn>\n <span>Stop selected processes</span>\n </v-tooltip>\n <v-tooltip top>\n <v-btn slot=\"activator\" icon small @click=\"clearSelectedProcesses()\"\n v-show=\"selectedProcesses.length\">\n <v-icon>clear_all</v-icon>\n </v-btn>\n <span>Clear selection</span>\n </v-tooltip>\n <v-tooltip top>\n <v-btn slot=\"activator\" icon small @click=\"selectAllProcesses()\"\n v-show=\"selectedProcesses.length < Object.keys(supervisor.processes).length\">\n <v-icon>done_all</v-icon>\n </v-btn>\n <span>Select all</span>\n </v-tooltip>\n\n <v-menu v-if=\"!inactive\" bottom left>\n <v-btn icon slot=\"activator\">\n <v-icon>more_vert</v-icon>\n </v-btn>\n <v-list>\n <v-list-tile @click=\"updateSupervisor()\">\n <v-list-tile-title>Update</v-list-tile-title>\n </v-list-tile>\n <v-list-tile @click=\"restartSupervisor()\">\n <v-list-tile-title>Restart</v-list-tile-title>\n </v-list-tile>\n </v-list>\n </v-menu>\n </v-toolbar>\n <SupervisorList :supervisor=\"supervisor\"></SupervisorList>\n </v-card>\n</template>\n\n<script>\nimport SupervisorList from './List'\n\nexport default {\n name: 'SupervisorCard',\n props: ['item'],\n components: {\n SupervisorList\n },\n computed: {\n supervisor () { return this.item.item },\n inactive () { return !this.supervisor.running },\n toolbarColor () { return this.inactive ? 'grey lighten-1' : 'indigo' },\n selectedProcesses () {\n let procs = this.$store.state.selectedProcesses.reduce((processes, puid) => {\n let supervisor = puid.split(':', 1)[0]\n if (supervisor === this.supervisor.name) {\n processes.push(puid)\n }\n return processes\n }, [])\n return procs\n }\n },\n methods: {\n updateSupervisor () {\n this.$store.dispatch('updateSupervisor', this.supervisor.name)\n },\n restartSupervisor () {\n this.$store.dispatch('restartSupervisor', this.supervisor.name)\n },\n restartSelectedProcesses () {\n this.$store.dispatch('restartProcesses', this.selectedProcesses)\n this.clearSelectedProcesses()\n },\n stopSelectedProcesses () {\n this.$store.dispatch('stopProcesses', this.selectedProcesses)\n this.clearSelectedProcesses()\n },\n selectAllProcesses () {\n let puids = []\n for (let pname in this.supervisor.processes) {\n puids.push(this.supervisor.processes[pname].uid)\n }\n this.$store.commit('addSelectedProcesses', puids)\n },\n clearSelectedProcesses () {\n this.$store.commit('removeSelectedProcesses', this.selectedProcesses)\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/supervisor/Card.vue","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./List.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./List.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4571579a\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./List.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/supervisor/List.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-card',[_c('v-toolbar',{attrs:{\"dense\":\"\",\"color\":_vm.toolbarColor,\"dark\":\"\"}},[_c('v-toolbar-title',[_vm._v(_vm._s(_vm.supervisor.name)+\" \"),(_vm.inactive)?_c('span',[_vm._v(\"(offline)\")]):_vm._e()]),_vm._v(\" \"),_c('v-spacer'),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length),expression:\"selectedProcesses.length\"}],attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.restartSelectedProcesses()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"autorenew\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"(Re)start selected processes\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length),expression:\"selectedProcesses.length\"}],attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.stopSelectedProcesses()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"stop\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"Stop selected processes\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length),expression:\"selectedProcesses.length\"}],attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.clearSelectedProcesses()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"clear_all\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"Clear selection\")])],1),_vm._v(\" \"),_c('v-tooltip',{attrs:{\"top\":\"\"}},[_c('v-btn',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedProcesses.length < Object.keys(_vm.supervisor.processes).length),expression:\"selectedProcesses.length < Object.keys(supervisor.processes).length\"}],attrs:{\"slot\":\"activator\",\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.selectAllProcesses()}},slot:\"activator\"},[_c('v-icon',[_vm._v(\"done_all\")])],1),_vm._v(\" \"),_c('span',[_vm._v(\"Select all\")])],1),_vm._v(\" \"),(!_vm.inactive)?_c('v-menu',{attrs:{\"bottom\":\"\",\"left\":\"\"}},[_c('v-btn',{attrs:{\"slot\":\"activator\",\"icon\":\"\"},slot:\"activator\"},[_c('v-icon',[_vm._v(\"more_vert\")])],1),_vm._v(\" \"),_c('v-list',[_c('v-list-tile',{on:{\"click\":function($event){_vm.updateSupervisor()}}},[_c('v-list-tile-title',[_vm._v(\"Update\")])],1),_vm._v(\" \"),_c('v-list-tile',{on:{\"click\":function($event){_vm.restartSupervisor()}}},[_c('v-list-tile-title',[_vm._v(\"Restart\")])],1)],1)],1):_vm._e()],1),_vm._v(\" \"),_c('SupervisorList',{attrs:{\"supervisor\":_vm.supervisor}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-f0eabe9a\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/supervisor/Card.vue\n// module id = null\n// module chunks = ","<template>\n <v-container fluid grid-list-md>\n <v-data-iterator\n content-tag=\"v-layout\"\n row wrap hide-actions\n item-key=\"name\"\n :items=\"supervisorsGroups\"\n no-results-text=\"Sorry, no matching processes found\"\n no-data-text=\"Sorry, there are no processes currently being monitored\">\n <v-flex slot=\"item\" slot-scope=\"props\"\n xs12 sm12 md6 lg4>\n <SupervisorCard :item=\"props\"></SupervisorCard>\n </v-flex>\n </v-data-iterator>\n</v-container>\n</template>\n\n<script>\nimport SupervisorCard from './Card'\n\nexport default {\n name: 'SupervisorPage',\n components: {\n SupervisorCard\n },\n computed: {\n supervisorsGroups () {\n let supervisors = this.$store.getters.supervisors\n let filteredProcesses = this.$store.getters.filteredProcessUIDs\n return supervisors.reduce((supervisors, supervisor) => {\n let procs = Object.values(supervisor.processes)\n let groups = Object.values(procs.reduce((groups, proc) => {\n if (filteredProcesses.has(proc.uid)) {\n // check if group already exists, if not create it and add process\n (proc.group in groups && groups[proc.group].processes.push(proc)) ||\n (groups[proc.group] = { name: proc.group, processes: [proc] })\n }\n return groups\n }, {}))\n supervisors.push({...supervisor, groups: groups})\n return supervisors\n }, [])\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/supervisor/Page.vue","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Card.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Card.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f0eabe9a\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Card.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/supervisor/Card.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\",\"grid-list-md\":\"\"}},[_c('v-data-iterator',{attrs:{\"content-tag\":\"v-layout\",\"row\":\"\",\"wrap\":\"\",\"hide-actions\":\"\",\"item-key\":\"name\",\"items\":_vm.supervisorsGroups,\"no-results-text\":\"Sorry, no matching processes found\",\"no-data-text\":\"Sorry, there are no processes currently being monitored\"},scopedSlots:_vm._u([{key:\"item\",fn:function(props){return _c('v-flex',{attrs:{\"xs12\":\"\",\"sm12\":\"\",\"md6\":\"\",\"lg4\":\"\"}},[_c('SupervisorCard',{attrs:{\"item\":props}})],1)}}])})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5eead394\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/supervisor/Page.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Page.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Page.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5eead394\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/supervisor/Page.vue\n// module id = null\n// module chunks = ","<template>\n <v-container fluid grid-list-md>\n <v-form v-model=\"valid\">\n <v-layout align-center justify-center>\n <v-flex xs12 sm6 md5 lg4 xl3>\n <v-card class=\"elevation-12\">\n <v-toolbar dark color=\"primary\">\n <v-toolbar-title>Log in</v-toolbar-title>\n </v-toolbar>\n <v-card-text>\n <v-form @keyup.native.enter=\"submit\" v-model=\"valid\" ref=\"form\">\n <v-text-field autofocus prepend-icon=\"person\" name=\"username\" label=\"Username\" type=\"text\"\n v-model=\"username\" :rules=\"[rules.required]\" :error-messages=\"errorMessages['username']\"></v-text-field>\n <v-text-field prepend-icon=\"lock\" name=\"password\" label=\"Password\" type=\"password\"\n v-model=\"password\" :rules=\"[rules.required]\" :error-messages=\"errorMessages['password']\"></v-text-field>\n </v-form>\n </v-card-text>\n <v-card-actions align=\"center\">\n <v-layout justify-center>\n <v-btn color=\"primary\" bottom @click=\"submit\">Log in</v-btn>\n </v-layout>\n </v-card-actions>\n </v-card>\n </v-flex>\n </v-layout>\n </v-form>\n </v-container>\n</template>\n\n<script>\nexport default {\n name: 'LoginPage',\n data: () => {\n return {\n 'valid': false,\n 'username': '',\n 'password': '',\n 'rules': {\n 'required': value => !!value || 'This field is required'\n },\n 'errorMessages': {\n 'username': [],\n 'password': []\n }\n }\n },\n methods: {\n submit () {\n if (!this.$refs.form.validate()) {\n return\n }\n const form = new FormData()\n form.append('username', this.username)\n form.append('password', this.password)\n fetch('/api/login', {method: 'POST', body: form})\n .then((response) => {\n if (response.status === 200) {\n this.$store.commit('setIsAuthenticated', true)\n this.$store.dispatch('init')\n this.$router.push({'name': 'Home'})\n } else {\n response.json()\n .then((data) => {\n this.errorMessages = data.errors\n })\n }\n })\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// src/components/login/Page.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-container',{attrs:{\"fluid\":\"\",\"grid-list-md\":\"\"}},[_c('v-form',{model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm6\":\"\",\"md5\":\"\",\"lg4\":\"\",\"xl3\":\"\"}},[_c('v-card',{staticClass:\"elevation-12\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"color\":\"primary\"}},[_c('v-toolbar-title',[_vm._v(\"Log in\")])],1),_vm._v(\" \"),_c('v-card-text',[_c('v-form',{ref:\"form\",nativeOn:{\"keyup\":function($event){if(!('button' in $event)&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.submit($event)}},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{attrs:{\"autofocus\":\"\",\"prepend-icon\":\"person\",\"name\":\"username\",\"label\":\"Username\",\"type\":\"text\",\"rules\":[_vm.rules.required],\"error-messages\":_vm.errorMessages['username']},model:{value:(_vm.username),callback:function ($$v) {_vm.username=$$v},expression:\"username\"}}),_vm._v(\" \"),_c('v-text-field',{attrs:{\"prepend-icon\":\"lock\",\"name\":\"password\",\"label\":\"Password\",\"type\":\"password\",\"rules\":[_vm.rules.required],\"error-messages\":_vm.errorMessages['password']},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1)],1),_vm._v(\" \"),_c('v-card-actions',{attrs:{\"align\":\"center\"}},[_c('v-layout',{attrs:{\"justify-center\":\"\"}},[_c('v-btn',{attrs:{\"color\":\"primary\",\"bottom\":\"\"},on:{\"click\":_vm.submit}},[_vm._v(\"Log in\")])],1)],1)],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-3d2e44d5\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/login/Page.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Page.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Page.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3d2e44d5\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Page.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/login/Page.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\nimport Router from 'vue-router'\nimport GroupPage from '@/components/group/Page'\nimport ProcessPage from '@/components/process/Page'\nimport SupervisorPage from '@/components/supervisor/Page'\nimport LoginPage from '@/components/login/Page'\nimport store from '../store'\n\nVue.use(Router)\n\nconst loginRequired = {meta: {requiresAuth: true}}\nconst router = new Router({\n routes: [\n {path: '/', name: 'Home', component: GroupPage, ...loginRequired},\n {path: '/login', name: 'Login', component: LoginPage},\n {path: '/view/group', name: 'GroupPage', component: GroupPage, ...loginRequired},\n {path: '/view/supervisor', name: 'SupervisorPage', component: SupervisorPage, ...loginRequired},\n {path: '/view/process', name: 'ProcessPage', component: ProcessPage, ...loginRequired}\n ],\n mode: 'history'\n})\n\nrouter.beforeEach(async function (to, from, next) {\n if (store.state.useAuthentication === undefined || store.state.isAuthenticated === undefined) {\n const response = await fetch('/api/auth')\n if (response.status === 504) {\n return next()\n }\n const data = await response.json()\n store.commit('setUseAuthentication', data.use_authentication)\n store.commit('setIsAuthenticated', data.is_authenticated)\n }\n if (!store.state.useAuthentication) {\n if (to.name === 'Login') { return next({name: 'Home'}) }\n return next()\n }\n const loginRequiredRoute = to.matched.some(route => route.meta.requiresAuth)\n // if user is not authenticated and route requires login -> redirect to login page\n if (!store.state.isAuthenticated && loginRequiredRoute) {\n return next({name: 'Login'})\n }\n // if user is authenticated and navigates to login page -> redirect to home page\n if (to.name === 'Login' && store.state.isAuthenticated) {\n return next({name: 'Home'})\n }\n return next()\n})\n\nexport default router\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","import Vue from 'vue'\nimport Vuetify from 'vuetify'\nimport 'vuetify/dist/vuetify.min.css'\n\nimport App from '@/App'\nimport store from '@/store'\nimport router from '@/router'\n\nVue.use(Vuetify)\n\nVue.config.productionTip = false\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n store,\n router,\n render: h => h(App),\n created () {\n this.$store.dispatch('init')\n }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""}
|
@@ -0,0 +1,2 @@
|
|
1
|
+
!function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a<e.length;a++)i=e[a],o[i]&&l.push(o[i][0]),o[i]=0;for(f in u)Object.prototype.hasOwnProperty.call(u,f)&&(r[f]=u[f]);for(n&&n(e,u,c);l.length;)l.shift()();if(c)for(a=0;a<c.length;a++)p=t(t.s=c[a]);return p};var e={},o={2:0};function t(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return r[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=r,t.c=e,t.d=function(r,n,e){t.o(r,n)||Object.defineProperty(r,n,{configurable:!1,enumerable:!0,get:e})},t.n=function(r){var n=r&&r.__esModule?function(){return r.default}:function(){return r};return t.d(n,"a",n),n},t.o=function(r,n){return Object.prototype.hasOwnProperty.call(r,n)},t.p="/",t.oe=function(r){throw console.error(r),r}}([]);
|
2
|
+
//# sourceMappingURL=manifest.2ae2e69a05c33dfc65f8.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap f88a3ab1943f5f5a92cd"],"names":["parentJsonpFunction","window","chunkIds","moreModules","executeModules","moduleId","chunkId","result","i","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","call","modules","shift","__webpack_require__","s","installedModules","2","exports","module","l","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","p","oe","err","console","error"],"mappings":"aACA,IAAAA,EAAAC,OAAA,aACAA,OAAA,sBAAAC,EAAAC,EAAAC,GAIA,IADA,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,EAAAC,KACQD,EAAAN,EAAAQ,OAAoBF,IAC5BF,EAAAJ,EAAAM,GACAG,EAAAL,IACAG,EAAAG,KAAAD,EAAAL,GAAA,IAEAK,EAAAL,GAAA,EAEA,IAAAD,KAAAF,EACAU,OAAAC,UAAAC,eAAAC,KAAAb,EAAAE,KACAY,EAAAZ,GAAAF,EAAAE,IAIA,IADAL,KAAAE,EAAAC,EAAAC,GACAK,EAAAC,QACAD,EAAAS,OAAAT,GAEA,GAAAL,EACA,IAAAI,EAAA,EAAYA,EAAAJ,EAAAM,OAA2BF,IACvCD,EAAAY,IAAAC,EAAAhB,EAAAI,IAGA,OAAAD,GAIA,IAAAc,KAGAV,GACAW,EAAA,GAIA,SAAAH,EAAAd,GAGA,GAAAgB,EAAAhB,GACA,OAAAgB,EAAAhB,GAAAkB,QAGA,IAAAC,EAAAH,EAAAhB,IACAG,EAAAH,EACAoB,GAAA,EACAF,YAUA,OANAN,EAAAZ,GAAAW,KAAAQ,EAAAD,QAAAC,IAAAD,QAAAJ,GAGAK,EAAAC,GAAA,EAGAD,EAAAD,QAKAJ,EAAAO,EAAAT,EAGAE,EAAAQ,EAAAN,EAGAF,EAAAS,EAAA,SAAAL,EAAAM,EAAAC,GACAX,EAAAY,EAAAR,EAAAM,IACAhB,OAAAmB,eAAAT,EAAAM,GACAI,cAAA,EACAC,YAAA,EACAC,IAAAL,KAMAX,EAAAiB,EAAA,SAAAZ,GACA,IAAAM,EAAAN,KAAAa,WACA,WAA2B,OAAAb,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAL,EAAAS,EAAAE,EAAA,IAAAA,GACAA,GAIAX,EAAAY,EAAA,SAAAO,EAAAC,GAAsD,OAAA1B,OAAAC,UAAAC,eAAAC,KAAAsB,EAAAC,IAGtDpB,EAAAqB,EAAA,IAGArB,EAAAsB,GAAA,SAAAC,GAA8D,MAApBC,QAAAC,MAAAF,GAAoBA","file":"static/js/manifest.2ae2e69a05c33dfc65f8.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\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 = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(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(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t2: 0\n \t};\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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\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 \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f88a3ab1943f5f5a92cd"],"sourceRoot":""}
|