{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/spaday/components/layout/Footer.vue?edf7","webpack:///./src/spaday/views/taskresult/List.vue?45da","webpack:///./src/plugins/vuetify.js","webpack:///./src/spaday/store/alert.module.js","webpack:///./src/spaday/store/deletedialog.module.js","webpack:///./src/spaday/store/toastdialog.module.js","webpack:///./src/spaday/store/account.module.js","webpack:///./src/spaday/store/users.module.js","webpack:///./src/spaday/store/groups.module.js","webpack:///./src/spaday/store/permissions.module.js","webpack:///./src/spaday/store/uploadprogress.module.js","webpack:///./src/spaday/store/auditlog.module.js","webpack:///./src/spaday/store/taskresults.module.js","webpack:///./src/store/preferences.module.js","webpack:///./src/store/companies.module.js","webpack:///./src/store/events.module.js","webpack:///./src/store/qrcodes.module.js","webpack:///./src/store/scans.module.js","webpack:///./src/store/index.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/assets/x-logo-gradient.png","webpack:///./src/spaday/components/dialogs/SearchUsers.vue?4c20","webpack:///./src/spaday/components/Alert.vue","webpack:///src/spaday/components/Alert.vue","webpack:///./src/spaday/components/Alert.vue?e406","webpack:///./src/spaday/components/Alert.vue?8277","webpack:///./src/spaday/components/AnimatedInteger.vue","webpack:///src/spaday/components/AnimatedInteger.vue","webpack:///./src/spaday/components/AnimatedInteger.vue?e0bb","webpack:///./src/spaday/components/AnimatedInteger.vue?b94c","webpack:///./src/spaday/components/CardSubheader.vue","webpack:///src/spaday/components/CardSubheader.vue","webpack:///./src/spaday/components/CardSubheader.vue?6c03","webpack:///./src/spaday/components/CardSubheader.vue?e5e0","webpack:///./src/spaday/components/dialogs/ChangePassword.vue","webpack:///src/spaday/components/dialogs/ChangePassword.vue","webpack:///./src/spaday/components/dialogs/ChangePassword.vue?cd8a","webpack:///./src/spaday/components/dialogs/ChangePassword.vue?1b03","webpack:///./src/spaday/components/dialogs/DeleteConfirmation.vue","webpack:///src/spaday/components/dialogs/DeleteConfirmation.vue","webpack:///./src/spaday/components/dialogs/DeleteConfirmation.vue?6a30","webpack:///./src/spaday/components/dialogs/DeleteConfirmation.vue?e3c0","webpack:///./src/spaday/components/dialogs/Toast.vue","webpack:///src/spaday/components/dialogs/Toast.vue","webpack:///./src/spaday/components/dialogs/Toast.vue?c9e5","webpack:///./src/spaday/components/dialogs/Toast.vue?c966","webpack:///./src/spaday/components/DenseList.vue","webpack:///src/spaday/components/DenseList.vue","webpack:///./src/spaday/components/DenseList.vue?7307","webpack:///./src/spaday/components/DenseList.vue?a42b","webpack:///./src/spaday/components/FormHeader.vue","webpack:///./src/spaday/components/UploadProgress.vue","webpack:///src/spaday/components/UploadProgress.vue","webpack:///./src/spaday/components/UploadProgress.vue?b8e8","webpack:///./src/spaday/components/UploadProgress.vue?5834","webpack:///src/spaday/components/FormHeader.vue","webpack:///./src/spaday/components/FormHeader.vue?1486","webpack:///./src/spaday/components/FormHeader.vue?5e92","webpack:///./src/spaday/components/GenericChart.vue","webpack:///src/spaday/components/GenericChart.vue","webpack:///./src/spaday/components/GenericChart.vue?9db6","webpack:///./src/spaday/components/GenericChart.vue?e5f6","webpack:///./src/spaday/components/ListHeader.vue","webpack:///src/spaday/components/ListHeader.vue","webpack:///./src/spaday/components/ListHeader.vue?f71f","webpack:///./src/spaday/components/ListHeader.vue?a3ec","webpack:///./src/spaday/components/RowActions.vue","webpack:///src/spaday/components/RowActions.vue","webpack:///./src/spaday/components/RowActions.vue?d11e","webpack:///./src/spaday/components/RowActions.vue?a11e","webpack:///./src/spaday/components/RowCheckmark.vue","webpack:///src/spaday/components/RowCheckmark.vue","webpack:///./src/spaday/components/RowCheckmark.vue?913e","webpack:///./src/spaday/components/RowCheckmark.vue?7751","webpack:///./src/spaday/components/StatCard.vue","webpack:///src/spaday/components/StatCard.vue","webpack:///./src/spaday/components/StatCard.vue?7c60","webpack:///./src/spaday/components/StatCard.vue?bed7","webpack:///./src/spaday/components/StatTableCard.vue","webpack:///src/spaday/components/StatTableCard.vue","webpack:///./src/spaday/components/StatTableCard.vue?5d14","webpack:///./src/spaday/components/StatTableCard.vue?c749","webpack:///./src/spaday/components/PlatformIcon.vue","webpack:///src/spaday/components/PlatformIcon.vue","webpack:///./src/spaday/components/PlatformIcon.vue?c189","webpack:///./src/spaday/components/PlatformIcon.vue?901c","webpack:///./src/spaday/components/RecentLogins.vue","webpack:///src/spaday/components/RecentLogins.vue","webpack:///./src/spaday/components/RecentLogins.vue?e17f","webpack:///./src/spaday/components/RecentLogins.vue?2739","webpack:///./src/spaday/components/SearchField.vue","webpack:///src/spaday/components/SearchField.vue","webpack:///./src/spaday/components/SearchField.vue?988b","webpack:///./src/spaday/components/SearchField.vue?05c8","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/App.vue?2ef9","webpack:///./src/App.vue?315a","webpack:///./src/main.js","webpack:///./src/constants/index.js","webpack:///./src/spaday/components/layout/Header.vue?680e","webpack:///./src/assets/xstudios-logo-white.svg","webpack:///./src/spaday/views/auditlog/List.vue?a0ad","webpack:///./src/spaday/views/user/Create.vue","webpack:///src/spaday/views/user/Create.vue","webpack:///./src/spaday/views/user/Create.vue?df3e","webpack:///./src/spaday/views/user/Create.vue?835a","webpack:///./src/spaday/views/user/List.vue","webpack:///src/spaday/views/user/List.vue","webpack:///./src/spaday/views/user/List.vue?0390","webpack:///./src/spaday/views/user/List.vue?23d3","webpack:///./src/spaday/views/user/Update.vue","webpack:///src/spaday/views/user/Update.vue","webpack:///./src/spaday/views/user/Update.vue?a7a7","webpack:///./src/spaday/views/user/Update.vue?758b","webpack:///./src/spaday/router/user.js","webpack:///./src/spaday/views/group/Create.vue","webpack:///src/spaday/views/group/Create.vue","webpack:///./src/spaday/views/group/Create.vue?0e15","webpack:///./src/spaday/views/group/Create.vue?916e","webpack:///./src/spaday/views/group/List.vue","webpack:///src/spaday/views/group/List.vue","webpack:///./src/spaday/views/group/List.vue?38e6","webpack:///./src/spaday/views/group/List.vue?ee90","webpack:///./src/spaday/views/group/Update.vue","webpack:///./src/spaday/views/group/components/UserList.vue","webpack:///src/spaday/views/group/components/UserList.vue","webpack:///./src/spaday/views/group/components/UserList.vue?2154","webpack:///./src/spaday/views/group/components/UserList.vue?02b3","webpack:///src/spaday/views/group/Update.vue","webpack:///./src/spaday/views/group/Update.vue?709c","webpack:///./src/spaday/views/group/Update.vue?7188","webpack:///./src/spaday/router/group.js","webpack:///./src/spaday/views/auth/Login.vue","webpack:///src/spaday/views/auth/Login.vue","webpack:///./src/spaday/views/auth/Login.vue?6786","webpack:///./src/spaday/views/auth/Login.vue?1094","webpack:///./src/spaday/views/auth/Register.vue","webpack:///src/spaday/views/auth/Register.vue","webpack:///./src/spaday/views/auth/Register.vue?1870","webpack:///./src/spaday/views/auth/Register.vue?cc5e","webpack:///./src/spaday/router/auth.js","webpack:///./src/spaday/views/auditlog/List.vue","webpack:///src/spaday/views/auditlog/List.vue","webpack:///./src/spaday/views/auditlog/List.vue?a7df","webpack:///./src/spaday/views/auditlog/List.vue?104c","webpack:///./src/spaday/views/auditlog/Update.vue","webpack:///src/spaday/views/auditlog/Update.vue","webpack:///./src/spaday/views/auditlog/Update.vue?46b3","webpack:///./src/spaday/views/auditlog/Update.vue?655c","webpack:///./src/spaday/router/auditlog.js","webpack:///./src/spaday/views/taskresult/List.vue","webpack:///src/spaday/views/taskresult/List.vue","webpack:///./src/spaday/views/taskresult/List.vue?94f9","webpack:///./src/spaday/views/taskresult/List.vue?bfe2","webpack:///./src/spaday/views/taskresult/Update.vue","webpack:///src/spaday/views/taskresult/Update.vue","webpack:///./src/spaday/views/taskresult/Update.vue?52e2","webpack:///./src/spaday/views/taskresult/Update.vue?fd68","webpack:///./src/spaday/router/taskresult.js","webpack:///./src/spaday/views/AdminBase.vue","webpack:///./src/spaday/components/layout/Header.vue","webpack:///src/spaday/components/layout/Header.vue","webpack:///./src/spaday/components/layout/Header.vue?004d","webpack:///./src/spaday/components/layout/Header.vue?e106","webpack:///./src/spaday/components/layout/Footer.vue","webpack:///./src/spaday/components/layout/Footer.vue?09e9","webpack:///./src/spaday/components/layout/SideNav.vue","webpack:///src/spaday/components/layout/SideNav.vue","webpack:///./src/spaday/components/layout/SideNav.vue?1264","webpack:///./src/spaday/components/layout/SideNav.vue?ca50","webpack:///src/spaday/views/AdminBase.vue","webpack:///./src/spaday/views/AdminBase.vue?85a6","webpack:///./src/spaday/views/AdminBase.vue?0933","webpack:///./src/spaday/views/PageNotFound.vue","webpack:///./src/spaday/views/PageNotFound.vue?1a0d","webpack:///./src/views/company/Create.vue","webpack:///src/views/company/Create.vue","webpack:///./src/views/company/Create.vue?748f","webpack:///./src/views/company/Create.vue?4dc3","webpack:///./src/views/company/List.vue","webpack:///src/views/company/List.vue","webpack:///./src/views/company/List.vue?6095","webpack:///./src/views/company/List.vue?0c6a","webpack:///./src/views/company/Update.vue","webpack:///./src/views/company/components/EventList.vue","webpack:///src/views/company/components/EventList.vue","webpack:///./src/views/company/components/EventList.vue?0905","webpack:///./src/views/company/components/EventList.vue?dce4","webpack:///./src/views/company/components/QRCodeList.vue","webpack:///src/views/company/components/QRCodeList.vue","webpack:///./src/views/company/components/QRCodeList.vue?981a","webpack:///./src/views/company/components/QRCodeList.vue?1edc","webpack:///src/views/company/Update.vue","webpack:///./src/views/company/Update.vue?d406","webpack:///./src/views/company/Update.vue?06fd","webpack:///./src/router/company.js","webpack:///./src/views/event/Create.vue","webpack:///src/views/event/Create.vue","webpack:///./src/views/event/Create.vue?7f43","webpack:///./src/views/event/Create.vue?dc6a","webpack:///./src/views/event/List.vue","webpack:///src/views/event/List.vue","webpack:///./src/views/event/List.vue?144f","webpack:///./src/views/event/List.vue?6e66","webpack:///./src/views/event/Update.vue","webpack:///./src/views/event/components/QRCodeList.vue","webpack:///src/views/event/components/QRCodeList.vue","webpack:///./src/views/event/components/QRCodeList.vue?803a","webpack:///./src/views/event/components/QRCodeList.vue?b304","webpack:///src/views/event/Update.vue","webpack:///./src/views/event/Update.vue?34d7","webpack:///./src/views/event/Update.vue?52de","webpack:///./src/views/event/Stats.vue","webpack:///./src/event-bus.js","webpack:///src/views/event/Stats.vue","webpack:///./src/views/event/Stats.vue?f65d","webpack:///./src/views/event/Stats.vue?fcba","webpack:///./src/router/event.js","webpack:///./src/views/qrcode/Create.vue","webpack:///src/views/qrcode/Create.vue","webpack:///./src/views/qrcode/Create.vue?067f","webpack:///./src/views/qrcode/Create.vue?0204","webpack:///./src/views/qrcode/List.vue","webpack:///src/views/qrcode/List.vue","webpack:///./src/views/qrcode/List.vue?eb21","webpack:///./src/views/qrcode/List.vue?ab43","webpack:///./src/views/qrcode/Update.vue","webpack:///src/views/qrcode/Update.vue","webpack:///./src/views/qrcode/Update.vue?216d","webpack:///./src/views/qrcode/Update.vue?9be8","webpack:///./src/views/qrcode/Stats.vue","webpack:///src/views/qrcode/Stats.vue","webpack:///./src/views/qrcode/Stats.vue?ce91","webpack:///./src/views/qrcode/Stats.vue?9597","webpack:///./src/router/qrcode.js","webpack:///./src/views/scan/List.vue","webpack:///src/views/scan/List.vue","webpack:///./src/views/scan/List.vue?6af3","webpack:///./src/views/scan/List.vue?a72a","webpack:///./src/views/scan/View.vue","webpack:///src/views/scan/View.vue","webpack:///./src/views/scan/View.vue?8857","webpack:///./src/views/scan/View.vue?a9bd","webpack:///./src/router/scan.js","webpack:///./src/router/index.js","webpack:///./src/spaday/views/PageNotFound.vue?0426","webpack:///./src/spaday/helpers/datetime.js","webpack:///./src/spaday/helpers/file-download.js","webpack:///./src/spaday/helpers/messages.js","webpack:///./src/spaday/helpers/permissions.js","webpack:///./src/spaday/helpers/strings.js","webpack:///./src/spaday/helpers/pagination.js","webpack:///./src/spaday/helpers/csrf.js","webpack:///./src/spaday/http-common.js","webpack:///./src/spaday/services/AuthService.js","webpack:///./src/spaday/services/UserService.js","webpack:///./src/spaday/services/GroupService.js","webpack:///./src/spaday/services/PermissionService.js","webpack:///./src/spaday/services/AuditLogService.js","webpack:///./src/spaday/services/TaskResultService.js","webpack:///./src/services/StatService.js","webpack:///./src/services/CompanyService.js","webpack:///./src/services/EventService.js","webpack:///./src/services/QRCodeService.js","webpack:///./src/services/ScanService.js","webpack:///./src/spaday/components/dialogs/SearchUsers.vue","webpack:///src/spaday/components/dialogs/SearchUsers.vue","webpack:///./src/spaday/components/dialogs/SearchUsers.vue?5f7a","webpack:///./src/spaday/components/dialogs/SearchUsers.vue?1313","webpack:///./src/spaday/views/AdminBase.vue?a0d8"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","jsonpScriptSrc","p","exports","module","l","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","Vue","use","Vuetify","theme","dark","themes","light","primary","secondary","accent","success","state","actions","commit","info","warning","clear","log","mutations","SUCCESS","ERROR","INFO","WARNING","CLEAR","alert","namespaced","pk","model","protected","modelCount","deletedObjects","show","confirm","payload","CONFIRM","model_count","deleted_objects","deleteDialog","color","icon","title","text","position","SHOW","toastDialog","loggedIn","sessionStorage","getItem","user","status","access_token","refresh_token","JSON","parse","login","email","password","AuthService","then","router","logout","catch","LOGIN_SUCCESS","setItem","access","refresh","stringify","LOGIN_FAILURE","LOGOUT","removeItem","REGISTER_SUCCESS","REGISTER_FAILURE","account","delete","recentLogins","MODEL_NAME","getAll","params","UserService","id","dispatch","ctx","getAddMessage","root","update","getChangeMessage","preDelete","getDeleteMessage","getRecentLogins","changePassword","GET_ALL_REQUEST","loading","GET_ALL_SUCCESS","items","results","GET_ALL_FAILURE","GET_REQUEST","GET_SUCCESS","GET_FAILURE","CREATE_REQUEST","CREATE_SUCCESS","CREATE_FAILURE","UPDATE_REQUEST","UPDATE_SUCCESS","UPDATE_FAILURE","PRE_DELETE_REQUEST","PRE_DELETE_SUCCESS","PRE_DELETE_FAILURE","DELETE_REQUEST","DELETE_SUCCESS","filter","DELETE_FAILURE","GET_RECENT_LOGIN_REQUEST","GET_RECENT_LOGIN_SUCCESS","GET_RECENT_LOGIN_FAILURE","users","combobox","GroupService","getCombobox","getUsers","addUsers","removeUsers","getRemoveMessage","GET_COMBOBOX_REQUEST","GET_COMBOBOX_SUCCESS","GET_COMBOBOX_FAILURE","GET_USERS_REQUEST","GET_USERS_SUCCESS","GET_USERS_FAILURE","ADD_USERS_REQUEST","ADD_USERS_SUCCESS","ADD_USERS_FAILURE","REMOVE_USERS_REQUEST","REMOVE_USERS_SUCCESS","includes","REMOVE_USERS_FAILURE","groups","PermissionService","permissions","progress","setProgress","val","reset","SET_PROGRESS","RESET","uploadProgress","AuditLogService","object_repr","auditlog","TaskResultService","task_name","taskresults","darkMode","initialiseStore","localStorage","toggleDarkMode","setDarkMode","TOGGLE_DARK_MODE","framework","SET_DARK_MODE","preferences","events","qrcodes","CompanyService","getEvents","getQRCodes","GET_EVENTS_REQUEST","GET_EVENTS_SUCCESS","GET_EVENTS_FAILURE","GET_QRCODES_REQUEST","GET_QRCODES_SUCCESS","GET_QRCODES_FAILURE","companies","stats","overall","chart_data","EventService","getStats","GET_STATS_REQUEST","GET_STATS_SUCCESS","GET_STATS_FAILURE","QRCodeService","ScanService","ip_address","qr_code","scans","logrocketPlugin","createPlugin","LogRocket","Vuex","Store","plugins","projectName","PROJECT_NAME","version","VERSION","map","webpackContext","req","webpackContextResolve","code","keys","_c","_self","attrs","_vm","staticRenderFns","computed","mapState","component","render","this","_v","_s","formatted","props","default","duration","formatter","Function","displayValue","Math","ceil","tweenValue","watch","gsap","to","ease","Power2","easeInOut","onUpdate","round","onComplete","staticClass","String","callback","dialog","expression","rules","required","on","$event","new_password1","$$v","showPass","hide","submit","new_password2","min","v","methods","mapActions","$refs","form","validate","password2","confirmPassword","$set","objCopy","$emit","domProps","item","header","Array","hasAnyPermission","deleteLoading","saveLoading","scopedSlots","height","Number","beforeDestroy","store","components","UploadProgress","subtitle","btnLabel","canAdd","Boolean","canChange","canDelete","_m","mounted","getElementById","Chart","chartdata","newVal","route","_t","divider","index","bool","AnimatedInteger","description","units","animated","formattedValue","formatNumber","formatMB","formatGB","formatPercent","formatString","isNaN","Intl","NumberFormat","format","toFixed","fn","proxy","headers","os","display_name","_u","RowCheckmark","RowActions","sortable","emit","localDatetime","editUser","$router","search","label","VueCookies","config","productionTip","vuetify","h","App","beforeCreate","$store","$mount","API_URL","SIDENAV","meta","chip","first_name","last_name","is_staff","is_superuser","FormHeader","CardSubheader","user_permissions","tabs","href","tab","set","replace","query","$route","getGroups","getPermissions","hasPermission","createUser","go","userTable","totalItems","preDeleteUser","DeleteConfirmation","ListHeader","SearchField","options","selected","getPaginationParams","deleteUser","getPaginatedUsers","totalPages","num_pages","num_results","updateSearch","ref","ChangePassword","getUser","clearUser","updateUser","deleteUserRedirect","routes","path","List","public","Create","Update","createGroup","groupTable","editGroup","preDeleteGroup","deleteGroup","getPaginatedGroups","deleteGroupRedirect","table","SearchUsers","allUsers","getGroupUsers","addGroupUsers","removeGroupUsers","addUsersToGroup","ids","forEach","removeUsersFromGroup","UserList","getGroup","clearGroup","updateGroup","preventDefault","Toast","password_confirm","Alert","Login","Register","onlyLoggedOut","logTable","upperCaseFirst","getLogs","preDeleteLog","deleteLog","editLog","actionColor","action","getPaginatedLogs","getLog","clearLog","updateLog","deleteLogRedirect","taskTable","getPaginatedTasks","getTaskResults","preDeleteTaskResult","deleteTaskResult","editTaskResult","statusColor","worker","content_type","content_encoding","date_done","traceback","_e","getTaskResult","clearTaskResult","updateTaskResult","deleteTaskResultRedirect","tooltip","DenseList","toggleTheme","mini","stopPropagation","drawer","active","child","staticStyle","Footer","Header","SideNav","sidenavItems","clearAlert","primary_color","secondary_color","primary_btn_color","secondary_btn_color","size","createCompany","formData","FormData","append","companyTable","editCompany","preDeleteCompany","getCompanies","deleteCompany","getPaginatedCompanies","preDeleteEvent","viewEventStats","company","getCompanyEvents","deleteEvent","editEvent","preDeleteQRCode","visitQRCodeURL","viewQRCodeStats","getCompanyQRCodes","deleteQRCode","editQRCode","open","absolute_url","EventList","QRCodeList","logo","getCompany","clearCompany","updateCompany","onConfirmDeleteCompany","parseInt","createEvent","eventTable","viewStats","getPaginatedEvents","getEventQRCodes","getEvent","clearEvent","updateEvent","onConfirmDeleteEvent","exportPDF","scan_data","EventBus","StatTableCard","GenericChart","tableHeaders","align","chartData","labels","datasets","values","barPercentage","backgroundColor","borderColor","borderWidth","fill","aspectRatio","legend","display","scales","yAxes","ticks","beginAtZero","Stats","createQRCode","qrcodeTable","visitURL","getPaginatedQRCodes","hover","image","getQRCode","clearQRCode","downloadWithAxios","updateQRCode","onConfirmDeleteQRCode","unique_scans","platform_data","browser_data","device_data","city_data","state_data","country_data","getScan","scanTable","editScan","preDeleteScan","getScans","deleteScan","getPaginatedScans","VueJsonPretty","clearScan","View","VueRouter","redirect","AdminBase","children","concat","user_routes","group_routes","auditlog_routes","taskresult_routes","company_routes","event_routes","qrcode_routes","scan_routes","PageNotFound","auth_routes","base","beforeEach","from","next","authenticated","matched","some","record","isPublic","fullPath","dt_str","isoDateTime","Date","toLocaleDateString","toLocaleTimeString","forceFileDownload","response","url","URL","createObjectURL","Blob","link","body","click","filename","substring","lastIndexOf","axios","method","responseType","codename","permissions_codenames","codenames","toUpperCase","sortBy","sortDesc","page","itemsPerPage","sort","x","join","getCsrfToken","csrfToken","cookie","cookies","split","trim","decodeURIComponent","getApiUrl","location","hostname","isObject","objValue","constructor","getNiceError","errors","detail","toString","http","withCredentials","baseURL","onUploadProgress","progressEvent","loaded","total","interceptors","authorization","res","statusText","refreshToken","post","register","put","StatService","initials"],"mappings":"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","file":"js/app.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".js\"\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 \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/vue-frontend/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=style&index=0&id=8cd0504e&prod&scoped=true&lang=css\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=style&index=0&id=1de046b6&prod&scoped=true&lang=css\"","import Vue from 'vue'\nimport Vuetify from 'vuetify/lib/framework'\n\nVue.use(Vuetify)\n\nexport default new Vuetify({\n  theme: {\n    dark: true,\n    themes: {\n      light: {\n        primary: '#6967CE',\n        secondary: '#2EAFD0',\n        accent: '#8c9eff',\n        success: '#4caf50',\n      },\n      dark: {\n        primary: '#6967CE',\n        secondary: '#2EAFD0',\n        accent: '#8c9eff',\n        success: '#4caf50',\n      },\n    },\n  },\n})\n","const state = {\n  type: null,\n  message: null,\n}\n\nconst actions = {\n  success({ commit }, message) {\n    commit('SUCCESS', message)\n  },\n\n  error({ commit }, message) {\n    commit('ERROR', message)\n  },\n\n  info({ commit }, message) {\n    commit('INFO', message)\n  },\n\n  warning({ commit }, message) {\n    commit('WARNING', message)\n  },\n\n  clear({ commit }) {\n    console.log('alert/clear')\n    commit('CLEAR')\n  },\n}\n\nconst mutations = {\n  SUCCESS(state, message) {\n    state.type = 'success'\n    state.message = message\n  },\n\n  ERROR(state, message) {\n    state.type = 'error'\n    state.message = message\n  },\n\n  INFO(state, message) {\n    state.type = 'info'\n    state.message = message\n  },\n\n  WARNING(state, message) {\n    state.type = 'warning'\n    state.message = message\n  },\n\n  CLEAR(state) {\n    state.type = null\n    state.message = null\n  },\n}\n\nexport const alert = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","const state = {\n  name: null,\n  pk: null,\n  model: null,\n  protected: [],\n  modelCount: [],\n  deletedObjects: [],\n  show: false,\n}\n\nconst actions = {\n  confirm({ commit }, payload) {\n    commit('CONFIRM', payload)\n  },\n  clear({ commit }) {\n    commit('CLEAR')\n  },\n}\n\nconst mutations = {\n  CONFIRM(state, payload) {\n    state.pk = payload.pk\n    state.name = payload.name\n    state.model = payload.model\n    state.protected = payload.protected\n    state.modelCount = payload.model_count\n    state.deletedObjects = payload.deleted_objects\n    state.show = true\n  },\n  CLEAR(state) {\n    state.pk = null\n    state.name = null\n    state.model = null\n    state.protected = []\n    state.modelCount = []\n    state.deletedObjects = []\n    state.show = false\n  },\n}\n\nexport const deleteDialog = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","const state = {\n  show: false,\n  color: null,\n  icon: null,\n  title: null,\n  text: null,\n  position: 'top',\n  timeout: 0,\n}\n\nconst actions = {\n  show({ commit }, payload) {\n    commit('SHOW', payload)\n  },\n  clear({ commit }) {\n    console.log('toastdialog.module:: clear')\n    commit('CLEAR')\n  },\n}\n\nconst mutations = {\n  SHOW(state, payload) {\n    state.show = true\n    state.color = payload.color\n    state.title = payload.title ? payload.title : null\n    state.text = payload.text\n  },\n  CLEAR(state) {\n    state.show = false\n    state.title = null\n    state.text = null\n  },\n}\n\nexport const toastDialog = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { AuthService } from '@/services'\nimport router from '@/router'\n\nconst loggedIn = sessionStorage.getItem('loggedIn')\nconst user = sessionStorage.getItem('user')\n\nconst state = {\n  status: {\n    loggedIn: loggedIn ? true : false,\n  },\n  access_token: '',\n  refresh_token: '',\n  user: JSON.parse(user),\n  // csrf: '',\n}\n\nconst actions = {\n  login({ commit }, { email, password }) {\n    return AuthService.login(email, password).then(\n      (data) => {\n        commit('LOGIN_SUCCESS', data)\n        router.push({\n          name: 'Dashboard',\n        })\n        // AuthService.csrf().then((token) => {\n        //   commit('CSRF_SUCCESS', token)\n        //   router.push({\n        //     name: 'Dashboard',\n        //   })\n        // })\n      },\n      (error) => {\n        commit('LOGIN_FAILURE', error)\n        // dispatch('alert/error', error, {\n        //   root: true,\n        // })\n      },\n    )\n  },\n\n  logout({ commit }) {\n    AuthService.logout()\n      .then(() => {\n        commit('LOGOUT')\n        router.push({\n          name: 'Login',\n        })\n      })\n      .catch((error) => {\n        console.log('Logout error:', error)\n        commit('LOGOUT')\n        // router.push({\n        //   name: 'Login',\n        // })\n      })\n    console.log('LOGGED OUT')\n  },\n\n  //   register({ dispatch, commit }, user) {\n  //     commit('REGISTER_REQUEST', user)\n\n  //     AuthService.register(user).then(\n  //       (user) => {\n  //         commit('REGISTER_SUCCESS', user)\n  //         router.push('/login')\n  //         setTimeout(() => {\n  //           // display success message after route change completes\n  //           dispatch('alert/success', 'Registration successful', {\n  //             root: true,\n  //           })\n  //         })\n  //       },\n  //       (error) => {\n  //         commit('REGISTER_FAILURE', error)\n  //         dispatch('alert/error', error, {\n  //           root: true,\n  //         })\n  //       },\n  //     )\n  //   },\n}\n\nconst mutations = {\n  //   LOGIN_REQUEST(state, user) {\n  //     state.status = {\n  //       loggingIn: true,\n  //     }\n  //   },\n\n  LOGIN_SUCCESS(state, data) {\n    sessionStorage.setItem('loggedIn', true)\n    sessionStorage.setItem('access_token', data.access)\n    sessionStorage.setItem('refresh_token', data.refresh)\n    sessionStorage.setItem('user', JSON.stringify(data.user))\n    state.user = data.user\n  },\n\n  LOGIN_FAILURE(state) {\n    state.status = {\n      loggedIn: false,\n    }\n\n    state.user = null\n  },\n\n  LOGOUT(state) {\n    state.status = {\n      loggedIn: false,\n    }\n\n    state.access_token = null\n    state.refresh_token = null\n    state.user = null\n\n    sessionStorage.removeItem('loggedIn')\n    sessionStorage.removeItem('access_token')\n    sessionStorage.removeItem('refresh_token')\n    sessionStorage.removeItem('user')\n  },\n\n  //   CSRF_SUCCESS(state, token) {\n  //     state.csrf = token\n  //   },\n\n  //   CSRF_FAILURE(state) {\n  //     state.csrf = null\n  //   },\n\n  //   REGISTER_REQUEST(state, user) {\n  //     console.log('REGISTER_REQUEST', user)\n  //     state.status = {\n  //       registering: true,\n  //     }\n  //   },\n\n  REGISTER_SUCCESS(state) {\n    state.status = {\n      loggedIn: true,\n    }\n  },\n\n  REGISTER_FAILURE(state) {\n    state.status = {\n      loggedIn: false,\n    }\n  },\n}\n\nexport const account = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { getDeleteMessage, getChangeMessage, getAddMessage } from '@/spaday/helpers'\nimport { UserService } from '@/services'\n\nconst state = {\n  all: {},\n  object: {},\n  delete: {},\n  recentLogins: {},\n}\n\nconst MODEL_NAME = 'user'\n\nconst actions = {\n  getAll({ commit }, params) {\n    commit('GET_ALL_REQUEST')\n\n    return UserService.getAll(params).then(\n      (data) => {\n        commit('GET_ALL_SUCCESS', data)\n        return data\n      },\n      (error) => {\n        commit('GET_ALL_FAILURE', error)\n      },\n    )\n  },\n\n  get({ commit }, id) {\n    commit('GET_REQUEST')\n\n    return UserService.get(id).then(\n      (data) => {\n        commit('GET_SUCCESS', data)\n      },\n      (error) => {\n        commit('GET_FAILURE', error)\n      },\n    )\n  },\n\n  create({ dispatch, commit }, data) {\n    commit('CREATE_REQUEST')\n\n    return UserService.create(data).then(\n      (data) => {\n        commit('CREATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getAddMessage(MODEL_NAME, `${data.email}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('CREATE_FAILURE', error)\n      },\n    )\n  },\n\n  update({ dispatch, commit }, { id, data }) {\n    commit('UPDATE_REQUEST')\n\n    return UserService.update(id, data).then(\n      (data) => {\n        commit('UPDATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getChangeMessage(MODEL_NAME, `${data.email}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('UPDATE_FAILURE', error)\n      },\n    )\n  },\n\n  preDelete({ dispatch, commit }, object) {\n    commit('PRE_DELETE_REQUEST')\n\n    return UserService.preDelete(object.pk).then(\n      (data) => {\n        commit('PRE_DELETE_SUCCESS')\n        // show delete confirmation dialog\n        data.pk = object.pk\n        data.name = `${object.email}`\n        dispatch('deleteDialog/confirm', data, { root: true })\n      },\n      (error) => {\n        commit('PRE_DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  delete({ dispatch, commit }, object) {\n    commit('DELETE_REQUEST')\n\n    return UserService.delete(object.pk).then(\n      () => {\n        commit('DELETE_SUCCESS', object.pk)\n        // show toast dialog\n        let ctx = {\n          text: getDeleteMessage(MODEL_NAME, `${object.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  clear({ commit }) {\n    commit('CLEAR')\n  },\n\n  getRecentLogins({ commit }, id) {\n    commit('GET_RECENT_LOGIN_REQUEST')\n\n    return UserService.recentLogins(id).then(\n      (data) => commit('GET_RECENT_LOGIN_SUCCESS', data),\n      (error) => commit('GET_RECENT_LOGIN_FAILURE', error),\n    )\n  },\n\n  changePassword({ dispatch, commit }, { id, data }) {\n    // commit('CHANGE_PASSWORD_REQUEST')\n\n    return UserService.changePassword(id, data).then(\n      (data) => {\n        // commit('CHANGE_PASSWORD_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: `Password changed successfully.`,\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n        return data\n      },\n      (error) => {\n        commit('UPDATE_FAILURE', error)\n      },\n    )\n  },\n}\n\nconst mutations = {\n  GET_ALL_REQUEST(state) {\n    state.all = {\n      loading: true,\n    }\n  },\n\n  GET_ALL_SUCCESS(state, data) {\n    state.all = {\n      items: data.results,\n    }\n  },\n\n  GET_ALL_FAILURE(state, error) {\n    state.all = {\n      error,\n    }\n  },\n\n  GET_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  GET_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  GET_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CREATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  CREATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  CREATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  UPDATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  UPDATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  UPDATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CLEAR(state) {\n    state.object = {}\n  },\n\n  PRE_DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  PRE_DELETE_SUCCESS(state) {\n    state.delete = {}\n  },\n\n  PRE_DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  DELETE_SUCCESS(state, id) {\n    state.delete = {}\n\n    // remove deleted object from state\n    if (state.all.items) {\n      state.all.items = state.all.items.filter((object) => object.pk !== id)\n    }\n  },\n\n  DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  /** Users Recent Logins **/\n  GET_RECENT_LOGIN_REQUEST(state) {\n    state.recentLogins = {\n      loading: true,\n    }\n  },\n\n  GET_RECENT_LOGIN_SUCCESS(state, data) {\n    state.recentLogins = {\n      items: data,\n    }\n  },\n\n  GET_RECENT_LOGIN_FAILURE(state, error) {\n    state.recentLogins = {\n      error,\n    }\n  },\n}\n\nexport const users = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { getDeleteMessage, getAddMessage, getChangeMessage, getRemoveMessage } from '@/spaday/helpers'\nimport { GroupService } from '@/services'\n\nconst state = {\n  all: {},\n  object: {},\n  delete: {},\n  combobox: {},\n  users: {},\n}\n\nconst MODEL_NAME = 'group'\n\nconst actions = {\n  getAll({ commit }, params) {\n    commit('GET_ALL_REQUEST')\n\n    return GroupService.getAll(params).then(\n      (data) => {\n        commit('GET_ALL_SUCCESS', data)\n        return data\n      },\n      (error) => {\n        commit('GET_ALL_FAILURE', error)\n      },\n    )\n  },\n\n  get({ commit }, id) {\n    commit('GET_REQUEST')\n\n    return GroupService.get(id).then(\n      (data) => {\n        commit('GET_SUCCESS', data)\n      },\n      (error) => {\n        commit('GET_FAILURE', error)\n      },\n    )\n  },\n\n  create({ dispatch, commit }, data) {\n    commit('CREATE_REQUEST')\n\n    return GroupService.create(data).then(\n      (data) => {\n        commit('CREATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getAddMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('CREATE_FAILURE', error)\n      },\n    )\n  },\n\n  update({ dispatch, commit }, { id, data }) {\n    commit('UPDATE_REQUEST')\n\n    return GroupService.update(id, data).then(\n      (data) => {\n        commit('UPDATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getChangeMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('UPDATE_FAILURE', error)\n      },\n    )\n  },\n\n  preDelete({ dispatch, commit }, object) {\n    commit('PRE_DELETE_REQUEST')\n\n    return GroupService.preDelete(object.pk).then(\n      (data) => {\n        commit('PRE_DELETE_SUCCESS')\n        // show delete confirmation dialog\n        data.pk = object.pk\n        data.name = `${object.name}`\n        dispatch('deleteDialog/confirm', data, { root: true })\n      },\n      (error) => {\n        commit('PRE_DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  delete({ dispatch, commit }, object) {\n    commit('DELETE_REQUEST')\n\n    return GroupService.delete(object.pk).then(\n      () => {\n        commit('DELETE_SUCCESS', object.pk)\n        // show toast dialog\n        let ctx = {\n          text: getDeleteMessage(MODEL_NAME, `${object.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  clear({ commit }) {\n    commit('CLEAR')\n  },\n\n  getCombobox({ commit }) {\n    commit('GET_COMBOBOX_REQUEST')\n\n    return GroupService.combobox().then(\n      (data) => commit('GET_COMBOBOX_SUCCESS', data),\n      (error) => commit('GET_COMBOBOX_FAILURE', error),\n    )\n  },\n\n  getUsers({ commit }, id) {\n    commit('GET_USERS_REQUEST')\n\n    return GroupService.users(id).then(\n      (data) => commit('GET_USERS_SUCCESS', data),\n      (error) => commit('GET_USERS_FAILURE', error),\n    )\n  },\n\n  addUsers({ dispatch, commit }, { id, data }) {\n    commit('ADD_USERS_REQUEST')\n\n    return GroupService.addUsers(id, data).then(\n      (data) => {\n        commit('ADD_USERS_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getAddMessage('user'),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('ADD_USERS_FAILURE', error)\n      },\n    )\n  },\n\n  removeUsers({ dispatch, commit }, { id, data }) {\n    commit('REMOVE_USERS_REQUEST')\n\n    return GroupService.removeUsers(id, data).then(\n      (data) => {\n        commit('REMOVE_USERS_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getRemoveMessage('user'),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('REMOVE_USERS_FAILURE', error)\n      },\n    )\n  },\n}\n\nconst mutations = {\n  GET_ALL_REQUEST(state) {\n    state.all = {\n      loading: true,\n    }\n  },\n\n  GET_ALL_SUCCESS(state, data) {\n    state.all = {\n      items: data.results,\n    }\n  },\n\n  GET_ALL_FAILURE(state, error) {\n    state.all = {\n      error,\n    }\n  },\n\n  GET_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  GET_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  GET_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CREATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  CREATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  CREATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  UPDATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  UPDATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  UPDATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CLEAR(state) {\n    state.object = {}\n  },\n\n  PRE_DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  PRE_DELETE_SUCCESS(state) {\n    state.delete = {}\n  },\n\n  PRE_DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  DELETE_SUCCESS(state, id) {\n    state.delete = {}\n\n    // remove deleted object from state\n    if (state.all.items) {\n      state.all.items = state.all.items.filter((object) => object.pk !== id)\n    }\n  },\n\n  DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  /** Combobox **/\n  GET_COMBOBOX_REQUEST(state) {\n    state.combobox = {\n      loading: true,\n    }\n  },\n\n  GET_COMBOBOX_SUCCESS(state, data) {\n    state.combobox = {\n      items: data,\n    }\n  },\n\n  GET_COMBOBOX_FAILURE(state, error) {\n    state.combobox = {\n      error,\n    }\n  },\n\n  /** Group Users **/\n  GET_USERS_REQUEST(state) {\n    state.users = {\n      loading: true,\n    }\n  },\n\n  GET_USERS_SUCCESS(state, data) {\n    state.users = {\n      items: data,\n    }\n  },\n\n  GET_USERS_FAILURE(state, error) {\n    state.users = {\n      error,\n    }\n  },\n\n  /** Add/Remove Users **/\n  ADD_USERS_REQUEST() {},\n\n  ADD_USERS_SUCCESS() {},\n\n  ADD_USERS_FAILURE() {},\n\n  REMOVE_USERS_REQUEST() {},\n\n  REMOVE_USERS_SUCCESS(state, data) {\n    // remove deleted objects from state\n    state.users.items = state.users.items.filter((object) => data.users.includes(object.pk))\n  },\n\n  REMOVE_USERS_FAILURE() {},\n}\n\nexport const groups = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { PermissionService } from '@/services'\n\nconst state = {\n  combobox: {},\n}\n\nconst actions = {\n  getCombobox({ commit }) {\n    commit('GET_COMBOBOX_REQUEST')\n\n    return PermissionService.combobox().then(\n      (data) => commit('GET_COMBOBOX_SUCCESS', data),\n      (error) => commit('GET_COMBOBOX_FAILURE', error),\n    )\n  },\n}\n\nconst mutations = {\n  GET_COMBOBOX_REQUEST(state) {\n    state.combobox = {\n      loading: true,\n    }\n  },\n\n  GET_COMBOBOX_SUCCESS(state, data) {\n    state.combobox = {\n      items: data,\n    }\n  },\n\n  GET_COMBOBOX_FAILURE(state, error) {\n    state.combobox = {\n      error,\n    }\n  },\n}\n\nexport const permissions = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","const state = {\n  progress: 0,\n}\n\nconst actions = {\n  setProgress({ commit }, val) {\n    commit('SET_PROGRESS', val)\n  },\n\n  reset({ commit }) {\n    commit('RESET')\n  },\n}\n\nconst mutations = {\n  SET_PROGRESS(state, val) {\n    state.progress = val\n  },\n\n  RESET(state) {\n    state.progress = 0\n  },\n}\n\nexport const uploadProgress = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { getDeleteMessage } from '@/spaday/helpers'\nimport { AuditLogService } from '@/services'\n\nconst state = {\n  all: {},\n  object: {},\n  delete: {},\n}\n\nconst MODEL_NAME = 'log entry'\n\nconst actions = {\n  getAll({ commit }, params) {\n    commit('GET_ALL_REQUEST')\n\n    return AuditLogService.getAll(params).then(\n      (data) => {\n        commit('GET_ALL_SUCCESS', data)\n        return data\n      },\n      (error) => {\n        commit('GET_ALL_FAILURE', error)\n      },\n    )\n  },\n\n  get({ commit }, id) {\n    commit('GET_REQUEST')\n\n    return AuditLogService.get(id).then(\n      (data) => {\n        commit('GET_SUCCESS', data)\n      },\n      (error) => {\n        commit('GET_FAILURE', error)\n      },\n    )\n  },\n\n  create({ commit }, data) {\n    commit('CREATE_REQUEST')\n\n    return AuditLogService.create(data).then(\n      (data) => {\n        commit('CREATE_SUCCESS', data)\n      },\n      (error) => {\n        commit('CREATE_FAILURE', error)\n      },\n    )\n  },\n\n  update({ commit }, { id, data }) {\n    commit('UPDATE_REQUEST')\n\n    return AuditLogService.update(id, data).then(\n      (data) => {\n        commit('UPDATE_SUCCESS', data)\n      },\n      (error) => {\n        commit('UPDATE_FAILURE', error)\n      },\n    )\n  },\n\n  preDelete({ dispatch, commit }, object) {\n    commit('PRE_DELETE_REQUEST')\n\n    return AuditLogService.preDelete(object.pk).then(\n      (data) => {\n        commit('PRE_DELETE_SUCCESS')\n        // show delete confirmation dialog\n        data.pk = object.pk\n        data.name = `${object.object_repr}`\n        dispatch('deleteDialog/confirm', data, { root: true })\n      },\n      (error) => {\n        commit('PRE_DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  delete({ dispatch, commit }, object) {\n    commit('DELETE_REQUEST')\n\n    return AuditLogService.delete(object.pk).then(\n      () => {\n        commit('DELETE_SUCCESS', object.pk)\n        // show toast dialog\n        let ctx = {\n          text: getDeleteMessage(MODEL_NAME, `${object.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  clear({ commit }) {\n    commit('CLEAR')\n  },\n}\n\nconst mutations = {\n  GET_ALL_REQUEST(state) {\n    state.all = {\n      loading: true,\n    }\n  },\n\n  GET_ALL_SUCCESS(state, data) {\n    state.all = {\n      items: data.results,\n    }\n  },\n\n  GET_ALL_FAILURE(state, error) {\n    state.all = {\n      error,\n    }\n  },\n\n  GET_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  GET_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  GET_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CREATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  CREATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  CREATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  UPDATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  UPDATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  UPDATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CLEAR(state) {\n    state.object = {}\n  },\n\n  PRE_DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  PRE_DELETE_SUCCESS(state) {\n    state.delete = {}\n  },\n\n  PRE_DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  DELETE_SUCCESS(state, id) {\n    state.delete = {}\n\n    // remove deleted object from state\n    if (state.all.items) {\n      state.all.items = state.all.items.filter((object) => object.pk !== id)\n    }\n  },\n\n  DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n}\n\nexport const auditlog = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { getDeleteMessage } from '@/spaday/helpers'\nimport { TaskResultService } from '@/services'\n\nconst state = {\n  all: {},\n  object: {},\n  delete: {},\n}\n\nconst MODEL_NAME = 'task result'\n\nconst actions = {\n  getAll({ commit }, params) {\n    commit('GET_ALL_REQUEST')\n\n    return TaskResultService.getAll(params).then(\n      (data) => {\n        commit('GET_ALL_SUCCESS', data)\n        return data\n      },\n      (error) => {\n        commit('GET_ALL_FAILURE', error)\n      },\n    )\n  },\n\n  get({ commit }, id) {\n    commit('GET_REQUEST')\n\n    return TaskResultService.get(id).then(\n      (data) => {\n        commit('GET_SUCCESS', data)\n      },\n      (error) => {\n        commit('GET_FAILURE', error)\n      },\n    )\n  },\n\n  create({ commit }, data) {\n    commit('CREATE_REQUEST')\n\n    return TaskResultService.create(data).then(\n      (data) => {\n        commit('CREATE_SUCCESS', data)\n      },\n      (error) => {\n        commit('CREATE_FAILURE', error)\n      },\n    )\n  },\n\n  update({ commit }, { id, data }) {\n    commit('UPDATE_REQUEST')\n\n    return TaskResultService.update(id, data).then(\n      (data) => {\n        commit('UPDATE_SUCCESS', data)\n      },\n      (error) => {\n        commit('UPDATE_FAILURE', error)\n      },\n    )\n  },\n\n  preDelete({ dispatch, commit }, object) {\n    commit('PRE_DELETE_REQUEST')\n\n    return TaskResultService.preDelete(object.pk).then(\n      (data) => {\n        commit('PRE_DELETE_SUCCESS')\n        // show delete confirmation dialog\n        data.pk = object.pk\n        data.name = `${object.task_name}`\n        dispatch('deleteDialog/confirm', data, { root: true })\n      },\n      (error) => {\n        commit('PRE_DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  delete({ dispatch, commit }, object) {\n    commit('DELETE_REQUEST')\n\n    return TaskResultService.delete(object.pk).then(\n      () => {\n        commit('DELETE_SUCCESS', object.pk)\n        // show toast dialog\n        let ctx = {\n          text: getDeleteMessage(MODEL_NAME, `${object.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  clear({ commit }) {\n    commit('CLEAR')\n  },\n}\n\nconst mutations = {\n  GET_ALL_REQUEST(state) {\n    state.all = {\n      loading: true,\n    }\n  },\n\n  GET_ALL_SUCCESS(state, data) {\n    state.all = {\n      items: data.results,\n    }\n  },\n\n  GET_ALL_FAILURE(state, error) {\n    state.all = {\n      error,\n    }\n  },\n\n  GET_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  GET_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  GET_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CREATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  CREATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  CREATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  UPDATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  UPDATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  UPDATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CLEAR(state) {\n    state.object = {}\n  },\n\n  PRE_DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  PRE_DELETE_SUCCESS(state) {\n    state.delete = {}\n  },\n\n  PRE_DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  DELETE_SUCCESS(state, id) {\n    state.delete = {}\n\n    // remove deleted object from state\n    if (state.all.items) {\n      state.all.items = state.all.items.filter((object) => object.pk !== id)\n    }\n  },\n\n  DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n}\n\nexport const taskresults = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import Vuetify from '@/plugins/vuetify'\n\nconst state = {\n  darkMode: true,\n}\n\nconst actions = {\n  initialiseStore({ commit }) {\n    let darkMode = localStorage.getItem('darkMode') === 'false' ? false : true\n    commit('SET_DARK_MODE', darkMode)\n  },\n\n  toggleDarkMode({ commit }) {\n    commit('TOGGLE_DARK_MODE')\n  },\n\n  setDarkMode({ commit }, val) {\n    commit('SET_DARK_MODE', val)\n  },\n}\n\nconst mutations = {\n  TOGGLE_DARK_MODE(state) {\n    state.darkMode = !state.darkMode\n    Vuetify.framework.theme.dark = state.darkMode\n    localStorage.setItem('darkMode', state.darkMode)\n  },\n  SET_DARK_MODE(state, val) {\n    Vuetify.framework.theme.dark = val\n    state.darkMode = val\n    localStorage.setItem('darkMode', val)\n  },\n}\n\nexport const preferences = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { getDeleteMessage, getChangeMessage, getAddMessage } from '@/spaday/helpers'\nimport { CompanyService } from '@/services'\n\nconst state = {\n  all: {},\n  object: {},\n  delete: {},\n  combobox: {},\n  events: {},\n  qrcodes: {},\n}\n\nconst MODEL_NAME = 'company'\n\nconst actions = {\n  getAll({ commit }, params) {\n    commit('GET_ALL_REQUEST')\n\n    return CompanyService.getAll(params).then(\n      (data) => {\n        commit('GET_ALL_SUCCESS', data)\n        return data\n      },\n      (error) => {\n        commit('GET_ALL_FAILURE', error)\n      },\n    )\n  },\n\n  get({ commit }, id) {\n    commit('GET_REQUEST')\n\n    return CompanyService.get(id).then(\n      (data) => {\n        commit('GET_SUCCESS', data)\n      },\n      (error) => {\n        commit('GET_FAILURE', error)\n      },\n    )\n  },\n\n  create({ dispatch, commit }, data) {\n    commit('CREATE_REQUEST')\n\n    return CompanyService.create(data).then(\n      (data) => {\n        commit('CREATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getAddMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('CREATE_FAILURE', error)\n      },\n    )\n  },\n\n  update({ dispatch, commit }, { id, data }) {\n    commit('UPDATE_REQUEST')\n\n    return CompanyService.update(id, data).then(\n      (data) => {\n        commit('UPDATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getChangeMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('UPDATE_FAILURE', error)\n      },\n    )\n  },\n\n  preDelete({ dispatch, commit }, object) {\n    commit('PRE_DELETE_REQUEST')\n\n    return CompanyService.preDelete(object.pk).then(\n      (data) => {\n        commit('PRE_DELETE_SUCCESS')\n        // show delete confirmation dialog\n        data.pk = object.pk\n        data.name = `${object.name}`\n        dispatch('deleteDialog/confirm', data, { root: true })\n      },\n      (error) => {\n        commit('PRE_DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  delete({ dispatch, commit }, object) {\n    commit('DELETE_REQUEST')\n\n    return CompanyService.delete(object.pk).then(\n      () => {\n        commit('DELETE_SUCCESS', object.pk)\n        // show toast dialog\n        let ctx = {\n          text: getDeleteMessage(MODEL_NAME, `${object.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  clear({ commit }) {\n    commit('CLEAR')\n  },\n\n  getCombobox({ commit }) {\n    commit('GET_COMBOBOX_REQUEST')\n\n    return CompanyService.combobox().then(\n      (data) => commit('GET_COMBOBOX_SUCCESS', data),\n      (error) => commit('GET_COMBOBOX_FAILURE', error),\n    )\n  },\n\n  getEvents({ commit }, id) {\n    commit('GET_EVENTS_REQUEST')\n\n    return CompanyService.events(id).then(\n      (data) => commit('GET_EVENTS_SUCCESS', data),\n      (error) => commit('GET_EVENTS_FAILURE', error),\n    )\n  },\n\n  getQRCodes({ commit }, id) {\n    commit('GET_QRCODES_REQUEST')\n\n    return CompanyService.qrcodes(id).then(\n      (data) => commit('GET_QRCODES_SUCCESS', data),\n      (error) => commit('GET_QRCODES_FAILURE', error),\n    )\n  },\n}\n\nconst mutations = {\n  GET_ALL_REQUEST(state) {\n    state.all = {\n      loading: true,\n    }\n  },\n\n  GET_ALL_SUCCESS(state, data) {\n    state.all = {\n      items: data.results,\n    }\n  },\n\n  GET_ALL_FAILURE(state, error) {\n    state.all = {\n      error,\n    }\n  },\n\n  GET_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  GET_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  GET_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CREATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  CREATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  CREATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  UPDATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  UPDATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  UPDATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CLEAR(state) {\n    state.object = {}\n  },\n\n  PRE_DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  PRE_DELETE_SUCCESS(state) {\n    state.delete = {}\n  },\n\n  PRE_DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  DELETE_SUCCESS(state, id) {\n    state.delete = {}\n\n    // remove deleted object from state\n    if (state.all.items) {\n      state.all.items = state.all.items.filter((object) => object.pk !== id)\n    }\n  },\n\n  DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  /** Combobox **/\n  GET_COMBOBOX_REQUEST(state) {\n    state.combobox = {\n      loading: true,\n    }\n  },\n  GET_COMBOBOX_SUCCESS(state, data) {\n    state.combobox = {\n      items: data,\n    }\n  },\n  GET_COMBOBOX_FAILURE(state, error) {\n    state.combobox = {\n      error,\n    }\n  },\n\n  /** Company Events **/\n  GET_EVENTS_REQUEST(state) {\n    state.events = {\n      loading: true,\n    }\n  },\n\n  GET_EVENTS_SUCCESS(state, data) {\n    state.events = {\n      items: data,\n    }\n  },\n\n  GET_EVENTS_FAILURE(state, error) {\n    state.events = {\n      error,\n    }\n  },\n\n  /** Company QR Codes **/\n  GET_QRCODES_REQUEST(state) {\n    state.qrcodes = {\n      loading: true,\n    }\n  },\n\n  GET_QRCODES_SUCCESS(state, data) {\n    state.qrcodes = {\n      items: data,\n    }\n  },\n\n  GET_QRCODES_FAILURE(state, error) {\n    state.qrcodes = {\n      error,\n    }\n  },\n}\n\nexport const companies = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { getDeleteMessage, getChangeMessage, getAddMessage } from '@/spaday/helpers'\nimport { EventService } from '@/services'\n\nconst state = {\n  all: {},\n  object: {},\n  delete: {},\n  combobox: {},\n  qrcodes: {},\n  stats: {\n    overall: {\n      chart_data: [],\n    },\n    loading: false,\n  },\n}\n\nconst MODEL_NAME = 'event'\n\nconst actions = {\n  getAll({ commit }, params) {\n    commit('GET_ALL_REQUEST')\n\n    return EventService.getAll(params).then(\n      (data) => {\n        commit('GET_ALL_SUCCESS', data)\n        return data\n      },\n      (error) => {\n        commit('GET_ALL_FAILURE', error)\n      },\n    )\n  },\n\n  get({ commit }, id) {\n    commit('GET_REQUEST')\n\n    return EventService.get(id).then(\n      (data) => {\n        commit('GET_SUCCESS', data)\n      },\n      (error) => {\n        commit('GET_FAILURE', error)\n      },\n    )\n  },\n\n  create({ dispatch, commit }, data) {\n    commit('CREATE_REQUEST')\n\n    return EventService.create(data).then(\n      (data) => {\n        commit('CREATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getAddMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('CREATE_FAILURE', error)\n      },\n    )\n  },\n\n  update({ dispatch, commit }, { id, data }) {\n    commit('UPDATE_REQUEST')\n\n    return EventService.update(id, data).then(\n      (data) => {\n        commit('UPDATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getChangeMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('UPDATE_FAILURE', error)\n      },\n    )\n  },\n\n  preDelete({ dispatch, commit }, object) {\n    commit('PRE_DELETE_REQUEST')\n\n    return EventService.preDelete(object.pk).then(\n      (data) => {\n        commit('PRE_DELETE_SUCCESS')\n        // show delete confirmation dialog\n        data.pk = object.pk\n        data.name = `${object.name}`\n        dispatch('deleteDialog/confirm', data, { root: true })\n      },\n      (error) => {\n        commit('PRE_DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  delete({ dispatch, commit }, object) {\n    commit('DELETE_REQUEST')\n\n    return EventService.delete(object.pk).then(\n      () => {\n        commit('DELETE_SUCCESS', object.pk)\n        // show toast dialog\n        let ctx = {\n          text: getDeleteMessage(MODEL_NAME, `${object.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  clear({ commit }) {\n    commit('CLEAR')\n  },\n\n  getCombobox({ commit }) {\n    commit('GET_COMBOBOX_REQUEST')\n\n    return EventService.combobox().then(\n      (data) => commit('GET_COMBOBOX_SUCCESS', data),\n      (error) => commit('GET_COMBOBOX_FAILURE', error),\n    )\n  },\n\n  getQRCodes({ commit }, id) {\n    commit('GET_QRCODES_REQUEST')\n\n    return EventService.qrcodes(id).then(\n      (data) => commit('GET_QRCODES_SUCCESS', data),\n      (error) => commit('GET_QRCODES_FAILURE', error),\n    )\n  },\n\n  getStats({ commit }, id) {\n    commit('GET_STATS_REQUEST')\n\n    return EventService.stats(id).then(\n      (data) => commit('GET_STATS_SUCCESS', data),\n      (error) => commit('GET_STATS_FAILURE', error),\n    )\n  },\n}\n\nconst mutations = {\n  GET_ALL_REQUEST(state) {\n    state.all = {\n      loading: true,\n    }\n  },\n\n  GET_ALL_SUCCESS(state, data) {\n    state.all = {\n      items: data.results,\n    }\n  },\n\n  GET_ALL_FAILURE(state, error) {\n    state.all = {\n      error,\n    }\n  },\n\n  GET_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  GET_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  GET_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CREATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  CREATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  CREATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  UPDATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  UPDATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  UPDATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CLEAR(state) {\n    state.object = {}\n  },\n\n  PRE_DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  PRE_DELETE_SUCCESS(state) {\n    state.delete = {}\n  },\n\n  PRE_DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  DELETE_SUCCESS(state, id) {\n    state.delete = {}\n\n    // remove deleted object from state\n    if (state.all.items) {\n      state.all.items = state.all.items.filter((object) => object.pk !== id)\n    }\n  },\n\n  DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  /** Combobox **/\n  GET_COMBOBOX_REQUEST(state) {\n    state.combobox = {\n      loading: true,\n    }\n  },\n  GET_COMBOBOX_SUCCESS(state, data) {\n    state.combobox = {\n      items: data,\n    }\n  },\n  GET_COMBOBOX_FAILURE(state, error) {\n    state.combobox = {\n      error,\n    }\n  },\n\n  /** Event QR Codes **/\n  GET_QRCODES_REQUEST(state) {\n    state.qrcodes = {\n      loading: true,\n    }\n  },\n\n  GET_QRCODES_SUCCESS(state, data) {\n    state.qrcodes = {\n      items: data,\n    }\n  },\n\n  GET_QRCODES_FAILURE(state, error) {\n    state.qrcodes = {\n      error,\n    }\n  },\n\n  /** Event Stats **/\n  GET_STATS_REQUEST(state) {\n    state.stats.loading = true\n  },\n\n  GET_STATS_SUCCESS(state, data) {\n    state.stats = data\n  },\n\n  GET_STATS_FAILURE(state, error) {\n    state.stats = {\n      error,\n    }\n  },\n}\n\nexport const events = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { getDeleteMessage, getAddMessage, getChangeMessage } from '@/spaday/helpers'\nimport { QRCodeService } from '@/services'\n\nconst state = {\n  all: {},\n  object: {},\n  delete: {},\n  stats: {\n    chart_data: [],\n  },\n}\n\nconst MODEL_NAME = 'QR code'\n\nconst actions = {\n  getAll({ commit }, params) {\n    commit('GET_ALL_REQUEST')\n\n    return QRCodeService.getAll(params).then(\n      (data) => {\n        commit('GET_ALL_SUCCESS', data)\n        return data\n      },\n      (error) => {\n        commit('GET_ALL_FAILURE', error)\n      },\n    )\n  },\n\n  get({ commit }, id) {\n    commit('GET_REQUEST')\n\n    return QRCodeService.get(id).then(\n      (data) => {\n        commit('GET_SUCCESS', data)\n      },\n      (error) => {\n        commit('GET_FAILURE', error)\n      },\n    )\n  },\n\n  create({ dispatch, commit }, data) {\n    commit('CREATE_REQUEST')\n\n    return QRCodeService.create(data).then(\n      (data) => {\n        commit('CREATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getAddMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('CREATE_FAILURE', error)\n      },\n    )\n  },\n\n  update({ dispatch, commit }, { id, data }) {\n    commit('UPDATE_REQUEST')\n\n    return QRCodeService.update(id, data).then(\n      (data) => {\n        commit('UPDATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getChangeMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('UPDATE_FAILURE', error)\n      },\n    )\n  },\n\n  preDelete({ dispatch, commit }, object) {\n    commit('PRE_DELETE_REQUEST')\n\n    return QRCodeService.preDelete(object.pk).then(\n      (data) => {\n        commit('PRE_DELETE_SUCCESS')\n        // show delete confirmation dialog\n        data.pk = object.pk\n        data.name = `${object.name}`\n        dispatch('deleteDialog/confirm', data, { root: true })\n      },\n      (error) => {\n        commit('PRE_DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  delete({ dispatch, commit }, object) {\n    commit('DELETE_REQUEST')\n\n    return QRCodeService.delete(object.pk).then(\n      () => {\n        commit('DELETE_SUCCESS', object.pk)\n        // show toast dialog\n        let ctx = {\n          text: getDeleteMessage(MODEL_NAME, `${object.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  clear({ commit }) {\n    commit('CLEAR')\n  },\n\n  getStats({ commit }, id) {\n    commit('GET_STATS_REQUEST')\n\n    return QRCodeService.stats(id).then(\n      (data) => commit('GET_STATS_SUCCESS', data),\n      (error) => commit('GET_STATS_FAILURE', error),\n    )\n  },\n}\n\nconst mutations = {\n  GET_ALL_REQUEST(state) {\n    state.all = {\n      loading: true,\n    }\n  },\n\n  GET_ALL_SUCCESS(state, data) {\n    state.all = {\n      items: data.results,\n    }\n  },\n\n  GET_ALL_FAILURE(state, error) {\n    state.all = {\n      error,\n    }\n  },\n\n  GET_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  GET_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  GET_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CREATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  CREATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  CREATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  UPDATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  UPDATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  UPDATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CLEAR(state) {\n    state.object = {}\n  },\n\n  PRE_DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  PRE_DELETE_SUCCESS(state) {\n    state.delete = {}\n  },\n\n  PRE_DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  DELETE_SUCCESS(state, id) {\n    state.delete = {}\n\n    // remove deleted object from state\n    if (state.all.items) {\n      state.all.items = state.all.items.filter((object) => object.pk !== id)\n    }\n  },\n\n  DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  /** Stats **/\n  GET_STATS_REQUEST(state) {\n    state.stats = {\n      chart_data: [],\n      loading: true,\n    }\n  },\n\n  GET_STATS_SUCCESS(state, data) {\n    state.stats = data\n  },\n\n  GET_STATS_FAILURE(state, error) {\n    console.log('GET_STATS_FAILURE')\n    state.stats = {\n      error,\n    }\n  },\n}\n\nexport const qrcodes = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import { getDeleteMessage, getAddMessage, getChangeMessage } from '@/spaday/helpers'\nimport { ScanService } from '@/services'\n\nconst state = {\n  all: {},\n  object: {},\n  delete: {},\n}\n\nconst MODEL_NAME = 'scan'\n\nconst actions = {\n  getAll({ commit }, params) {\n    commit('GET_ALL_REQUEST')\n\n    return ScanService.getAll(params).then(\n      (data) => {\n        commit('GET_ALL_SUCCESS', data)\n        return data\n      },\n      (error) => {\n        commit('GET_ALL_FAILURE', error)\n      },\n    )\n  },\n\n  get({ commit }, id) {\n    commit('GET_REQUEST')\n\n    return ScanService.get(id).then(\n      (data) => {\n        commit('GET_SUCCESS', data)\n      },\n      (error) => {\n        commit('GET_FAILURE', error)\n      },\n    )\n  },\n\n  create({ dispatch, commit }, data) {\n    commit('CREATE_REQUEST')\n\n    return ScanService.create(data).then(\n      (data) => {\n        commit('CREATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getAddMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('CREATE_FAILURE', error)\n      },\n    )\n  },\n\n  update({ dispatch, commit }, { id, data }) {\n    commit('UPDATE_REQUEST')\n\n    return ScanService.update(id, data).then(\n      (data) => {\n        commit('UPDATE_SUCCESS', data)\n        // show toast dialog\n        let ctx = {\n          text: getChangeMessage(MODEL_NAME, `${data.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('UPDATE_FAILURE', error)\n      },\n    )\n  },\n\n  preDelete({ dispatch, commit }, object) {\n    commit('PRE_DELETE_REQUEST')\n\n    return ScanService.preDelete(object.pk).then(\n      (data) => {\n        commit('PRE_DELETE_SUCCESS')\n        // show delete confirmation dialog\n        data.pk = object.pk\n        data.name = `${object.ip_address} - ${object.qr_code}`\n        dispatch('deleteDialog/confirm', data, { root: true })\n      },\n      (error) => {\n        commit('PRE_DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  delete({ dispatch, commit }, object) {\n    commit('DELETE_REQUEST')\n\n    return ScanService.delete(object.pk).then(\n      () => {\n        commit('DELETE_SUCCESS', object.pk)\n        // show toast dialog\n        let ctx = {\n          text: getDeleteMessage(MODEL_NAME, `${object.name}`),\n          color: 'success',\n        }\n        dispatch('toastDialog/show', ctx, { root: true })\n      },\n      (error) => {\n        commit('DELETE_FAILURE', error)\n      },\n    )\n  },\n\n  clear({ commit }) {\n    commit('CLEAR')\n  },\n}\n\nconst mutations = {\n  GET_ALL_REQUEST(state) {\n    state.all = {\n      loading: true,\n    }\n  },\n\n  GET_ALL_SUCCESS(state, data) {\n    state.all = {\n      items: data.results,\n    }\n  },\n\n  GET_ALL_FAILURE(state, error) {\n    state.all = {\n      error,\n    }\n  },\n\n  GET_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  GET_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  GET_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CREATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  CREATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  CREATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  UPDATE_REQUEST(state) {\n    state.object = {\n      loading: true,\n    }\n  },\n\n  UPDATE_SUCCESS(state, data) {\n    state.object = data\n  },\n\n  UPDATE_FAILURE(state, error) {\n    state.object = {\n      error,\n    }\n  },\n\n  CLEAR(state) {\n    state.object = {}\n  },\n\n  PRE_DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  PRE_DELETE_SUCCESS(state) {\n    state.delete = {}\n  },\n\n  PRE_DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n\n  DELETE_REQUEST(state) {\n    state.delete = {\n      loading: true,\n    }\n  },\n\n  DELETE_SUCCESS(state, id) {\n    state.delete = {}\n\n    // remove deleted object from state\n    if (state.all.items) {\n      state.all.items = state.all.items.filter((object) => object.pk !== id)\n    }\n  },\n\n  DELETE_FAILURE(state, error) {\n    state.delete = {\n      error,\n    }\n  },\n}\n\nexport const scans = {\n  namespaced: true,\n  state,\n  actions,\n  mutations,\n}\n","import Vue from 'vue'\nimport Vuex from 'vuex'\n\nimport { VERSION, PROJECT_NAME } from '@/constants'\n\nimport {\n  alert,\n  deleteDialog,\n  toastDialog,\n  account,\n  users,\n  groups,\n  permissions,\n  uploadProgress,\n  auditlog,\n  taskresults,\n} from '@/spaday/store'\n\n// custom modules\nimport { preferences } from './preferences.module'\nimport { companies } from './companies.module'\nimport { events } from './events.module'\nimport { qrcodes } from './qrcodes.module'\nimport { scans } from './scans.module'\n\nimport LogRocket from 'logrocket'\nimport createPlugin from 'logrocket-vuex'\n\nconst logrocketPlugin = createPlugin(LogRocket)\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n  modules: {\n    alert,\n    deleteDialog,\n    toastDialog,\n    account,\n    users,\n    groups,\n    permissions,\n    uploadProgress,\n    auditlog,\n    taskresults,\n    // custom modules\n    preferences,\n    companies,\n    events,\n    qrcodes,\n    scans,\n    plugins: [logrocketPlugin],\n  },\n  state: {\n    projectName: PROJECT_NAME,\n    version: VERSION,\n  },\n  mutations: {},\n})\n","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-ps\": \"4c98\",\n\t\"./ar-ps.js\": \"4c98\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku-kmr\": \"7558\",\n\t\"./ku-kmr.js\": \"7558\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","module.exports = __webpack_public_path__ + \"img/x-logo-gradient.png\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchUsers.vue?vue&type=style&index=0&id=615aa11c&prod&scoped=true&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.alert.message)?_c('v-alert',{attrs:{\"type\":_vm.alert.type,\"dismissible\":\"\"}},[_vm._v(_vm._s(_vm.alert.message))]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-alert v-if=\"alert.message\" :type=\"alert.type\" dismissible>{{ alert.message }}</v-alert>\n</template>\n\n<script>\nimport { mapState } from 'vuex'\n\nexport default {\n  computed: {\n    ...mapState({\n      alert: (state) => state.alert,\n    }),\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Alert.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Alert.vue?vue&type=template&id=cb81e6a0\"\nimport script from \"./Alert.vue?vue&type=script&lang=js\"\nexport * from \"./Alert.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[_vm._v(_vm._s(_vm.formatted))])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <span>{{ formatted }}</span>\n</template>\n\n<script>\nimport gsap from 'gsap'\nimport { Power2 } from 'gsap'\n\n/**\n * A Vue component that displays a value and animates changes.\n *\n * Accepts props for the value; the animation duration; and a method to format the number, e.g. using Intl.NumberFormat.\n */\nexport default {\n  name: 'AnimatedInteger',\n  props: {\n    value: { default: 0 },\n    duration: { default: 1 },\n    formatter: { type: Function, default: (n) => n },\n  },\n\n  data() {\n    return {\n      displayValue: Math.ceil(this.value),\n      tweenValue: this.value,\n    }\n  },\n\n  computed: {\n    formatted() {\n      return this.formatter(this.displayValue)\n    },\n  },\n\n  watch: {\n    value() {\n      gsap.to(this, {\n        ease: Power2.easeInOut,\n        tweenValue: Math.ceil(this.value),\n        duration: this.duration,\n        onUpdate: () => {\n          this.displayValue = Math.round(this.tweenValue)\n        },\n        onComplete: () => {\n          this.displayValue = Math.round(this.value)\n        },\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AnimatedInteger.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AnimatedInteger.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AnimatedInteger.vue?vue&type=template&id=687c7f28\"\nimport script from \"./AnimatedInteger.vue?vue&type=script&lang=js\"\nexport * from \"./AnimatedInteger.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-toolbar',{attrs:{\"flat\":\"\",\"dense\":\"\"}},[(_vm.icon)?_c('v-icon',{attrs:{\"small\":\"\",\"left\":\"\"}},[_vm._v(_vm._s(_vm.icon))]):_vm._e(),_c('v-toolbar-title',{staticClass:\"text-md-subtitle-1\"},[_vm._v(_vm._s(_vm.title)+\" \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-toolbar flat dense>\n    <v-icon small v-if=\"icon\" left>{{ icon }}</v-icon>\n    <v-toolbar-title class=\"text-md-subtitle-1\">{{ title }} </v-toolbar-title>\n  </v-toolbar>\n</template>\n\n<script>\nexport default {\n  props: {\n    title: { type: String },\n    icon: { type: String },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardSubheader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CardSubheader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CardSubheader.vue?vue&type=template&id=64809a49\"\nimport script from \"./CardSubheader.vue?vue&type=script&lang=js\"\nexport * from \"./CardSubheader.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"max-width\":\"50%\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"small\":\"\",\"color\":\"error\",\"text\":\"\",\"outlined\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\"Change Password \"),_c('v-icon',{attrs:{\"right\":\"\"}},[_vm._v(\"mdi-lock-check\")])],1)]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-toolbar-title',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-lock-check\")]),_vm._v(\" Change password: \"+_vm._s(_vm.user.email))],1)],1),_c('v-form',{ref:\"form\"},[_c('v-card-subtitle',[_vm._v(\"Enter a new password for the user \"),_c('strong',[_vm._v(_vm._s(_vm.user.last_name)+\", \"+_vm._s(_vm.user.first_name))]),_vm._v(\".\")]),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"type\":_vm.showPass ? 'text' : 'password',\"append-icon\":_vm.showPass ? 'mdi-eye' : 'mdi-eye-off',\"label\":\"Password\",\"rules\":[_vm.rules.required, _vm.rules.min],\"persistent-hint\":\"\",\"hint\":\"At least 8 characters\",\"counter\":\"\"},on:{\"click:append\":function($event){_vm.showPass = !_vm.showPass}},model:{value:(_vm.new_password1),callback:function ($$v) {_vm.new_password1=$$v},expression:\"new_password1\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"type\":_vm.showPass ? 'text' : 'password',\"append-icon\":_vm.showPass ? 'mdi-eye' : 'mdi-eye-off',\"label\":\"Password Confirmation\",\"rules\":[_vm.confirmPassword],\"persistent-hint\":\"\",\"hint\":\"Enter the same password as before, for verification.\"},on:{\"click:append\":function($event){_vm.showPass = !_vm.showPass}},model:{value:(_vm.new_password2),callback:function ($$v) {_vm.new_password2=$$v},expression:\"new_password2\"}})],1)],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.hide}},[_vm._v(\" Cancel \")]),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.submit}},[_vm._v(\" Change password \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-dialog v-model=\"dialog\" max-width=\"50%\">\n    <template v-slot:activator=\"{ on, attrs }\">\n      <v-btn small v-bind=\"attrs\" v-on=\"on\" color=\"error\" text outlined\n        >Change Password <v-icon right>mdi-lock-check</v-icon>\n      </v-btn>\n    </template>\n\n    <v-card>\n      <v-toolbar dark flat dense color=\"primary\">\n        <v-toolbar-title><v-icon left>mdi-lock-check</v-icon> Change password: {{ user.email }}</v-toolbar-title>\n      </v-toolbar>\n\n      <v-form ref=\"form\">\n        <v-card-subtitle\n          >Enter a new password for the user <strong>{{ user.last_name }}, {{ user.first_name }}</strong\n          >.</v-card-subtitle\n        >\n\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field\n                :type=\"showPass ? 'text' : 'password'\"\n                v-model=\"new_password1\"\n                :append-icon=\"showPass ? 'mdi-eye' : 'mdi-eye-off'\"\n                @click:append=\"showPass = !showPass\"\n                label=\"Password\"\n                :rules=\"[rules.required, rules.min]\"\n                persistent-hint\n                hint=\"At least 8 characters\"\n                counter\n              ></v-text-field>\n            </v-col>\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field\n                :type=\"showPass ? 'text' : 'password'\"\n                v-model=\"new_password2\"\n                :append-icon=\"showPass ? 'mdi-eye' : 'mdi-eye-off'\"\n                @click:append=\"showPass = !showPass\"\n                label=\"Password Confirmation\"\n                :rules=\"[confirmPassword]\"\n                persistent-hint\n                hint=\"Enter the same password as before, for verification.\"\n              ></v-text-field>\n            </v-col>\n          </v-row>\n        </v-card-text>\n\n        <v-divider></v-divider>\n\n        <v-card-actions>\n          <v-spacer></v-spacer>\n          <v-btn @click=\"hide\" text> Cancel </v-btn>\n          <v-btn @click=\"submit\" color=\"primary\"> Change password </v-btn>\n        </v-card-actions>\n      </v-form>\n    </v-card>\n  </v-dialog>\n</template>\n\n<script>\nimport { mapActions } from 'vuex'\n\nexport default {\n  props: {\n    user: { type: Object },\n  },\n  data: () => ({\n    new_password1: '',\n    new_password2: '',\n    showPass: false,\n    dialog: false,\n    rules: {\n      required: (value) => !!value || 'Required.',\n      min: (v) => v.length >= 8 || 'At least 8 characters',\n    },\n  }),\n  methods: {\n    ...mapActions('users', {\n      changePassword: 'changePassword',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n      let payload = {\n        password: this.new_password1,\n        password2: this.new_password2,\n      }\n      this.changePassword({ id: this.user.pk, data: payload }).then(() => {\n        this.hide()\n      })\n    },\n    hide() {\n      this.dialog = false\n      this.new_password1 = ''\n      this.new_password2 = ''\n    },\n    confirmPassword() {\n      return this.new_password1 === this.new_password2 || 'Password must match'\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChangePassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ChangePassword.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ChangePassword.vue?vue&type=template&id=7935c436\"\nimport script from \"./ChangePassword.vue?vue&type=script&lang=js\"\nexport * from \"./ChangePassword.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"max-width\":\"50%\"},model:{value:(_vm.deleteDialog.show),callback:function ($$v) {_vm.$set(_vm.deleteDialog, \"show\", $$v)},expression:\"deleteDialog.show\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"error\"}},[_c('v-toolbar-title',[(_vm.deleteDialog.protected.length === 0)?_c('span',[_vm._v(\"Are you sure?\")]):_c('span',[_vm._v(\"Cannot delete \"+_vm._s(_vm.deleteDialog.model)+\".\")])])],1),_c('v-card-text',{staticClass:\"pa-4\"},[_c('p',[_vm._v(\" Are you sure you want to delete the \"+_vm._s(_vm.deleteDialog.model)+\" \\\"\"),_c('strong',[_vm._v(_vm._s(_vm.deleteDialog.name))]),_vm._v(\"\\\"? All of the following related items will be deleted: \")]),(_vm.deleteDialog.modelCount)?_c('div',[_c('span',{staticClass:\"text-h6\"},[_vm._v(\"Summary\")]),_c('ul',_vm._l((_vm.deleteDialog.modelCount),function(item,index){return _c('li',{key:`summary_${index}`},[_c('span',{staticClass:\"text-uppercase\"},[_vm._v(_vm._s(item[0]))]),_vm._v(\": \"+_vm._s(item[1])+\" \")])}),0)]):_vm._e()]),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.hide}},[_vm._v(\" Cancel \")]),_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":_vm.confirm}},[_vm._v(\" yes, i'm sure \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-dialog v-model=\"deleteDialog.show\" max-width=\"50%\">\n    <v-card>\n      <v-toolbar dark flat dense color=\"error\">\n        <v-toolbar-title>\n          <span v-if=\"deleteDialog.protected.length === 0\">Are you sure?</span\n          ><span v-else>Cannot delete {{ deleteDialog.model }}.</span>\n        </v-toolbar-title>\n      </v-toolbar>\n\n      <!-- <v-card-title class=\"text-h5\" dark>\n        <span v-if=\"deleteDialog.protected.length === 0\">Are you sure?</span\n        ><span v-else>Cannot delete {{ deleteDialog.model }}.</span>\n      </v-card-title> -->\n\n      <v-card-text class=\"pa-4\">\n        <p>\n          Are you sure you want to delete the {{ deleteDialog.model }} \"<strong>{{ deleteDialog.name }}</strong\n          >\"? All of the following related items will be deleted:\n        </p>\n\n        <div v-if=\"deleteDialog.modelCount\">\n          <span class=\"text-h6\">Summary</span>\n          <ul>\n            <li v-for=\"(item, index) in deleteDialog.modelCount\" :key=\"`summary_${index}`\">\n              <span class=\"text-uppercase\">{{ item[0] }}</span\n              >: {{ item[1] }}\n            </li>\n          </ul>\n        </div>\n\n        <!-- <div v-if=\"deleteDialog.deletedObjects\">\n          <span class=\"text-h6\">Objects</span>\n          <ul>\n            <li v-for=\"(item, index) in deleteDialog.deletedObjects\" :key=\"`object_${index}`\">\n              <span v-if=\"Array.isArray(item)\">\n                <ul>\n                  <li v-for=\"(subitem, index) in item\" :key=\"`model_${index}`\">\n                    {{ subitem }}\n                  </li>\n                </ul>\n              </span>\n              <span v-else>{{ item }}</span>\n            </li>\n          </ul>\n        </div> -->\n      </v-card-text>\n\n      <v-divider></v-divider>\n\n      <v-card-actions>\n        <v-spacer></v-spacer>\n        <v-btn @click=\"hide\" text> Cancel </v-btn>\n        <v-btn @click=\"confirm\" color=\"error\"> yes, i'm sure </v-btn>\n      </v-card-actions>\n    </v-card>\n  </v-dialog>\n</template>\n\n<script>\nimport { mapState, mapActions } from 'vuex'\n\nexport default {\n  computed: {\n    ...mapState({\n      deleteDialog: (state) => state.deleteDialog,\n    }),\n  },\n  methods: {\n    ...mapActions('deleteDialog', {\n      clear: 'clear',\n    }),\n    hide() {\n      this.clear()\n    },\n    confirm() {\n      // deep copy the data as it will be cleared\n      let objCopy = JSON.parse(JSON.stringify(this.deleteDialog))\n      this.$emit('confirm-delete', objCopy)\n      this.clear()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteConfirmation.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteConfirmation.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DeleteConfirmation.vue?vue&type=template&id=24cc3a53\"\nimport script from \"./DeleteConfirmation.vue?vue&type=script&lang=js\"\nexport * from \"./DeleteConfirmation.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-snackbar',{attrs:{\"color\":_vm.toastDialog.color,\"multi-line\":\"\",\"top\":_vm.toastDialog.position === 'top'},model:{value:(_vm.toastDialog.show),callback:function ($$v) {_vm.$set(_vm.toastDialog, \"show\", $$v)},expression:\"toastDialog.show\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"pr-4\":\"\"}},[_c('v-icon',{staticClass:\"pr-3\",attrs:{\"dark\":\"\",\"large\":\"\"}},[_vm._v(_vm._s(_vm.icon))]),_c('v-layout',{attrs:{\"column\":\"\"}},[(_vm.toastDialog.title)?_c('div',[_c('strong',[_vm._v(_vm._s(_vm.toastDialog.title))])]):_vm._e(),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.toastDialog.text)}})])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-snackbar v-model=\"toastDialog.show\" :color=\"toastDialog.color\" multi-line :top=\"toastDialog.position === 'top'\">\n    <v-layout align-center pr-4>\n      <v-icon class=\"pr-3\" dark large>{{ icon }}</v-icon>\n      <v-layout column>\n        <div v-if=\"toastDialog.title\">\n          <strong>{{ toastDialog.title }}</strong>\n        </div>\n        <div v-html=\"toastDialog.text\"></div>\n      </v-layout>\n    </v-layout>\n  </v-snackbar>\n</template>\n\n<script>\nimport { mapActions, mapState } from 'vuex'\n\nexport default {\n  computed: {\n    ...mapState({\n      toastDialog: (state) => state.toastDialog,\n    }),\n    icon() {\n      switch (this.toastDialog.color) {\n        case 'success':\n          return 'mdi-check-circle'\n        case 'error':\n          return 'mdi-close-circle'\n        case 'warning':\n          return 'mdi-alert'\n        case 'info':\n          return 'mdi-information'\n        default:\n          return 'mdi-check-circle'\n      }\n    },\n  },\n  methods: {\n    ...mapActions('toastDialog', {\n      clear: 'clear',\n    }),\n    hide() {\n      this.clear()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toast.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Toast.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Toast.vue?vue&type=template&id=56dce3ee\"\nimport script from \"./Toast.vue?vue&type=script&lang=js\"\nexport * from \"./Toast.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-list',{attrs:{\"dense\":\"\",\"nav\":\"\"}},[_vm._t(\"prepend\"),_vm._l((_vm.items),function(item,index){return [(item.text && _vm.hasAnyPermission(item.permissions))?_c('v-list-item',{key:`${item.text + index}`,attrs:{\"link\":\"\"},on:{\"click\":function($event){return _vm.$emit(item.emit)}}},[_c('v-list-item-icon',[_c('v-icon',{attrs:{\"color\":item.color},domProps:{\"textContent\":_vm._s(item.icon)}})],1),_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(item.text)}})],1)],1):(item.divider)?_c('v-divider',{key:index,staticClass:\"mb-1\"}):(item.header)?_c('v-subheader',{key:`${item.header + index}`},[_vm._v(\" \"+_vm._s(item.header)+\" \")]):_vm._e()]}),_vm._t(\"append\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-list dense nav>\n    <slot name=\"prepend\"></slot>\n\n    <template v-for=\"(item, index) in items\">\n      <v-list-item\n        v-if=\"item.text && hasAnyPermission(item.permissions)\"\n        :key=\"`${item.text + index}`\"\n        link\n        @click=\"$emit(item.emit)\"\n      >\n        <v-list-item-icon>\n          <v-icon v-text=\"item.icon\" :color=\"item.color\"></v-icon>\n        </v-list-item-icon>\n        <v-list-item-content>\n          <v-list-item-title v-text=\"item.text\"></v-list-item-title>\n        </v-list-item-content>\n      </v-list-item>\n\n      <v-divider v-else-if=\"item.divider\" :key=\"index\" class=\"mb-1\"></v-divider>\n\n      <v-subheader v-else-if=\"item.header\" :key=\"`${item.header + index}`\">\n        {{ item.header }}\n      </v-subheader>\n    </template>\n\n    <slot name=\"append\"></slot>\n  </v-list>\n</template>\n\n<script>\nimport { hasAnyPermission } from '@/spaday/helpers'\n\nexport default {\n  props: {\n    items: { type: Array },\n  },\n  methods: {\n    hasAnyPermission,\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DenseList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DenseList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DenseList.vue?vue&type=template&id=68053e14\"\nimport script from \"./DenseList.vue?vue&type=script&lang=js\"\nexport * from \"./DenseList.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"mb-4\",attrs:{\"color\":\"transparent\"}},[_c('v-card-text',[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',[_c('v-card-title',{staticClass:\"text--primary\"},[_vm._v(_vm._s(_vm.title))]),_c('v-card-subtitle',[_vm._t(\"subtitle-prepend\"),_vm._v(\" \"+_vm._s(_vm.subtitle))],2)],1),_c('v-col',{staticClass:\"text-right\"},[_c('v-btn',{staticClass:\"ma-2\",attrs:{\"small\":\"\",\"fab\":\"\",\"depressed\":\"\",\"icon\":\"\",\"outlined\":\"\",\"disabled\":_vm.saveLoading},on:{\"click\":function($event){return _vm.$router.go(-1)}}},[_c('v-icon',[_vm._v(\"mdi-arrow-left\")])],1),(_vm.canDelete)?_c('v-btn',{staticClass:\"ma-2\",attrs:{\"small\":\"\",\"fab\":\"\",\"depressed\":\"\",\"icon\":\"\",\"outlined\":\"\",\"color\":\"error\",\"loading\":_vm.deleteLoading,\"disabled\":_vm.saveLoading},on:{\"click\":function($event){return _vm.$emit('delete')}}},[_c('v-icon',[_vm._v(\"mdi-trash-can-outline\")])],1):_vm._e(),(_vm.canChange || _vm.canAdd)?_c('v-btn',{attrs:{\"loading\":_vm.saveLoading,\"color\":\"success\",\"x-large\":\"\"},on:{\"click\":function($event){return _vm.$emit('submit')}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.btnLabel)+\" \")],1):_vm._e()],1)],1),(_vm.saveLoading)?_c('v-row',[_c('v-col',[_c('UploadProgress')],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.progress)?_c('div',[_c('v-progress-linear',{attrs:{\"value\":_vm.progress,\"rounded\":\"\",\"striped\":\"\",\"color\":\"success\",\"height\":_vm.height},scopedSlots:_vm._u([{key:\"default\",fn:function({ value }){return [_c('strong',[_vm._v(_vm._s(Math.ceil(value))+\"%\")])]}}],null,false,3002676263)})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div v-if=\"progress\">\n    <v-progress-linear :value=\"progress\" rounded striped color=\"success\" :height=\"height\">\n      <template v-slot:default=\"{ value }\">\n        <strong>{{ Math.ceil(value) }}%</strong>\n      </template>\n    </v-progress-linear>\n  </div>\n</template>\n\n<script>\nimport store from '@/store'\nimport { mapState } from 'vuex'\n\nexport default {\n  name: 'UploadProgress',\n  props: {\n    height: { type: Number, default: 20 },\n  },\n  //   mounted() {\n  //     store.dispatch('uploadProgress/reset')\n  //   },\n  beforeDestroy() {\n    store.dispatch('uploadProgress/reset')\n  },\n  computed: {\n    ...mapState({\n      progress: (state) => state.uploadProgress.progress,\n    }),\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadProgress.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UploadProgress.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UploadProgress.vue?vue&type=template&id=2a4fbd2b\"\nimport script from \"./UploadProgress.vue?vue&type=script&lang=js\"\nexport * from \"./UploadProgress.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <v-card class=\"mb-4\" color=\"transparent\">\n    <v-card-text>\n      <v-row align=\"center\" justify=\"center\">\n        <!-- <v-icon x-large left>mdi-account</v-icon> -->\n        <v-col>\n          <v-card-title class=\"text--primary\">{{ title }}</v-card-title>\n          <v-card-subtitle><slot name=\"subtitle-prepend\"></slot> {{ subtitle }}</v-card-subtitle>\n        </v-col>\n        <v-col class=\"text-right\">\n          <v-btn class=\"ma-2\" small fab depressed icon outlined @click=\"$router.go(-1)\" :disabled=\"saveLoading\"\n            ><v-icon>mdi-arrow-left</v-icon>\n          </v-btn>\n          <v-btn\n            class=\"ma-2\"\n            small\n            fab\n            depressed\n            icon\n            outlined\n            v-if=\"canDelete\"\n            @click=\"$emit('delete')\"\n            color=\"error\"\n            :loading=\"deleteLoading\"\n            :disabled=\"saveLoading\"\n            ><v-icon>mdi-trash-can-outline</v-icon></v-btn\n          >\n          <v-btn :loading=\"saveLoading\" v-if=\"canChange || canAdd\" @click=\"$emit('submit')\" color=\"success\" x-large\n            ><v-icon left>mdi-check</v-icon> {{ btnLabel }}\n          </v-btn>\n        </v-col>\n      </v-row>\n\n      <v-row v-if=\"saveLoading\">\n        <v-col>\n          <UploadProgress />\n        </v-col>\n      </v-row>\n    </v-card-text>\n  </v-card>\n</template>\n\n<script>\nimport UploadProgress from '@/spaday/components/UploadProgress'\n\nexport default {\n  components: {\n    UploadProgress,\n  },\n  props: {\n    title: { type: String },\n    subtitle: { type: String },\n    btnLabel: { type: String },\n\n    canAdd: { type: Boolean, default: false },\n    canChange: { type: Boolean, default: false },\n    canDelete: { type: Boolean, default: false },\n\n    deleteLoading: { type: Boolean, default: false },\n    saveLoading: { type: Boolean, default: false },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FormHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormHeader.vue?vue&type=template&id=1b3357ec\"\nimport script from \"./FormHeader.vue?vue&type=script&lang=js\"\nexport * from \"./FormHeader.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _vm._m(0)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',[_c('canvas',{attrs:{\"id\":\"chart\"}})])\n}]\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <canvas id=\"chart\"></canvas>\n  </div>\n</template>\n\n<script>\nimport Chart from 'chart.js'\n\nexport default {\n  props: ['chartdata'],\n  mounted() {\n    const ctx = document.getElementById('chart')\n    new Chart(ctx, this.chartdata)\n  },\n  watch: {\n    chartdata: function (newVal) {\n      // console.log('Prop changed: ', newVal, ' | was: ', oldVal)\n      const ctx = document.getElementById('chart')\n      new Chart(ctx, newVal)\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GenericChart.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GenericChart.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./GenericChart.vue?vue&type=template&id=6fe46236\"\nimport script from \"./GenericChart.vue?vue&type=script&lang=js\"\nexport * from \"./GenericChart.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"mb-4\",attrs:{\"color\":\"transparent\"}},[_c('v-card-text',[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"grow\"},[_c('v-card-title',{staticClass:\"text--primary\"},[_vm._v(_vm._s(_vm.title))]),_c('v-card-subtitle',[_vm._v(_vm._s(_vm.subtitle))])],1),(_vm.canAdd)?_c('v-col',{staticClass:\"shrink\"},[_c('v-btn',{attrs:{\"x-large\":\"\",\"color\":\"primary\",\"to\":_vm.route}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\" mdi-plus \")]),_vm._v(_vm._s(_vm.btnLabel))],1)],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-card class=\"mb-4\" color=\"transparent\">\n    <v-card-text>\n      <v-row align=\"center\" justify=\"center\">\n        <v-col class=\"grow\">\n          <v-card-title class=\"text--primary\">{{ title }}</v-card-title>\n          <v-card-subtitle>{{ subtitle }}</v-card-subtitle>\n        </v-col>\n        <v-col class=\"shrink\" v-if=\"canAdd\">\n          <v-btn x-large color=\"primary\" :to=\"route\"><v-icon left> mdi-plus </v-icon>{{ btnLabel }}</v-btn>\n        </v-col>\n      </v-row>\n    </v-card-text>\n  </v-card>\n</template>\n\n<script>\nexport default {\n  props: {\n    title: { type: String },\n    subtitle: { type: String },\n    btnLabel: { type: String },\n    route: { type: Object },\n\n    canAdd: { type: Boolean, default: false },\n    canChange: { type: Boolean, default: false },\n    canDelete: { type: Boolean, default: false },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListHeader.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListHeader.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ListHeader.vue?vue&type=template&id=89aabb90\"\nimport script from \"./ListHeader.vue?vue&type=script&lang=js\"\nexport * from \"./ListHeader.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-menu',{attrs:{\"bottom\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(_vm._s(_vm.icon))])],1)]}}])},[_c('v-list',{attrs:{\"dense\":\"\",\"nav\":\"\"}},[_vm._t(\"prepend\"),_vm._l((_vm.actions),function(item,index){return [(item.text && _vm.hasAnyPermission(item.permissions))?_c('v-list-item',{key:`${item.text + index}`,attrs:{\"link\":\"\"},on:{\"click\":function($event){return _vm.$emit(item.emit)}}},[_c('v-list-item-icon',[_c('v-icon',{attrs:{\"color\":item.color},domProps:{\"textContent\":_vm._s(item.icon)}})],1),_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(item.text)}})],1)],1):(item.divider)?_c('v-divider',{key:index,staticClass:\"mb-1\"}):(item.header)?_c('v-subheader',{key:`${item.header + index}`},[_vm._v(\" \"+_vm._s(item.header)+\" \")]):_vm._e()]}),_vm._t(\"append\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-menu bottom left>\n    <template v-slot:activator=\"{ on, attrs }\">\n      <v-btn icon v-bind=\"attrs\" v-on=\"on\">\n        <v-icon>{{ icon }}</v-icon>\n      </v-btn>\n    </template>\n    <v-list dense nav>\n      <slot name=\"prepend\"></slot>\n\n      <template v-for=\"(item, index) in actions\">\n        <v-list-item\n          v-if=\"item.text && hasAnyPermission(item.permissions)\"\n          :key=\"`${item.text + index}`\"\n          link\n          @click=\"$emit(item.emit)\"\n        >\n          <v-list-item-icon>\n            <v-icon v-text=\"item.icon\" :color=\"item.color\"></v-icon>\n          </v-list-item-icon>\n          <v-list-item-content>\n            <v-list-item-title v-text=\"item.text\"></v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-divider v-else-if=\"item.divider\" :key=\"index\" class=\"mb-1\"></v-divider>\n\n        <v-subheader v-else-if=\"item.header\" :key=\"`${item.header + index}`\">\n          {{ item.header }}\n        </v-subheader>\n      </template>\n\n      <slot name=\"append\"></slot>\n    </v-list>\n  </v-menu>\n</template>\n\n<script>\nimport { hasAnyPermission } from '@/spaday/helpers'\n\nexport default {\n  props: {\n    icon: { type: String, default: 'mdi-dots-horizontal' },\n    actions: { type: Array },\n  },\n  methods: {\n    hasAnyPermission,\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RowActions.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RowActions.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./RowActions.vue?vue&type=template&id=57068738\"\nimport script from \"./RowActions.vue?vue&type=script&lang=js\"\nexport * from \"./RowActions.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.bool === true)?_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"success\"}},[_vm._v(\"mdi-check-circle\")]):_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"error\"}},[_vm._v(\"mdi-close-circle\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-icon small color=\"success\" v-if=\"bool === true\">mdi-check-circle</v-icon>\n  <v-icon small color=\"error\" v-else>mdi-close-circle</v-icon>\n</template>\n\n<script>\nexport default {\n  props: {\n    bool: { type: Boolean },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RowCheckmark.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RowCheckmark.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./RowCheckmark.vue?vue&type=template&id=55bd51ae\"\nimport script from \"./RowCheckmark.vue?vue&type=script&lang=js\"\nexport * from \"./RowCheckmark.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"flex\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(_vm.icon))]),_c('v-toolbar-title',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])],1),_c('v-card-text',[(_vm.value && _vm.animated)?_c('h1',[_c('AnimatedInteger',{attrs:{\"value\":_vm.value,\"formatter\":_vm.formatter()}})],1):(_vm.value)?_c('h1',[_vm._v(_vm._s(_vm.formattedValue))]):_c('h1',[_vm._v(\"--\")]),(_vm.description)?_c('v-divider',{staticClass:\"my-4\"}):_vm._e(),_vm._v(\" \"+_vm._s(_vm.description)+\" \")],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-card class=\"flex\">\n    <v-toolbar dark flat dense color=\"primary\">\n      <v-icon left>{{ icon }}</v-icon>\n      <v-toolbar-title> {{ title }} </v-toolbar-title>\n    </v-toolbar>\n    <v-card-text>\n      <h1 v-if=\"value && animated\"><AnimatedInteger :value=\"value\" :formatter=\"formatter()\" /></h1>\n      <h1 v-else-if=\"value\">{{ formattedValue }}</h1>\n      <h1 v-else>--</h1>\n      <v-divider v-if=\"description\" class=\"my-4\"></v-divider>\n      {{ description }}\n    </v-card-text>\n  </v-card>\n</template>\n\n<script>\nimport { AnimatedInteger } from '@/spaday/components'\n\nexport default {\n  name: 'StatCard',\n  components: {\n    AnimatedInteger,\n  },\n  props: {\n    icon: { type: String },\n    title: { type: String },\n    description: { type: String },\n    value: { default: '--' },\n    units: { type: String, default: 'number' },\n    animated: { type: Boolean, default: false },\n  },\n  computed: {\n    formattedValue() {\n      return this.formatter()(this.value)\n    },\n  },\n  methods: {\n    formatter() {\n      switch (this.units) {\n        case 'number':\n          return this.formatNumber\n        case 'bytes':\n          if (this.value < 1024 * 1024 * 1024) {\n            return this.formatMB\n          }\n          return this.formatGB\n        case 'mb':\n          return this.formatMB\n        case 'gb':\n          return this.formatGB\n        case 'percent':\n          return this.formatPercent\n        default:\n          return this.formatString\n      }\n    },\n    formatNumber(value) {\n      if (isNaN(value)) {\n        return '--'\n      }\n      return new Intl.NumberFormat('en-US').format(value)\n    },\n    formatGB(value) {\n      if (isNaN(value)) {\n        return '--'\n      }\n      return this.formatNumber((value / (1024 * 1024 * 1024)).toFixed(2)) + ' GB'\n    },\n    formatMB(value) {\n      if (isNaN(value)) {\n        return '--'\n      }\n      return this.formatNumber((value / (1024 * 1024)).toFixed(2)) + ' MB'\n    },\n    formatPercent(value) {\n      if (isNaN(value)) {\n        return '--'\n      }\n      return value + '%'\n    },\n    formatString(value) {\n      return value\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatCard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatCard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StatCard.vue?vue&type=template&id=0ede4a65\"\nimport script from \"./StatCard.vue?vue&type=script&lang=js\"\nexport * from \"./StatCard.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"flex\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_vm._t(\"toolbar\",function(){return [(_vm.icon)?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(_vm._s(_vm.icon))]):_vm._e(),_c('v-toolbar-title',[_vm._v(_vm._s(_vm.title))])]})],2),_c('v-data-table',{attrs:{\"hide-default-footer\":\"\",\"disable-sort\":\"\",\"headers\":_vm.headers,\"items\":_vm.items},scopedSlots:_vm._u([{key:`item.percentage`,fn:function({ item }){return [_c('v-progress-linear',{attrs:{\"height\":\"20\",\"value\":item.percentage,\"striped\":\"\",\"rounded\":\"\",\"color\":\"secondary\"},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('strong',[_vm._v(_vm._s(item.percentage)+\"%\")])]},proxy:true}],null,true)})]}}],null,true)}),_vm._t(\"append\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-card class=\"flex\">\n    <v-toolbar dark flat dense color=\"primary\">\n      <slot name=\"toolbar\">\n        <v-icon v-if=\"icon\" left>{{ icon }}</v-icon>\n        <v-toolbar-title>{{ title }}</v-toolbar-title>\n      </slot>\n    </v-toolbar>\n    <!-- <v-card-text> -->\n    <v-data-table hide-default-footer disable-sort :headers=\"headers\" :items=\"items\">\n      <template v-slot:[`item.percentage`]=\"{ item }\">\n        <v-progress-linear height=\"20\" :value=\"item.percentage\" striped rounded color=\"secondary\"\n          ><template v-slot:default>\n            <strong>{{ item.percentage }}%</strong>\n          </template>\n        </v-progress-linear>\n      </template>\n    </v-data-table>\n    <!-- </v-card-text> -->\n    <slot name=\"append\"></slot>\n  </v-card>\n</template>\n\n<script>\nexport default {\n  props: {\n    icon: { type: String },\n    title: { type: String },\n    items: { type: Array },\n    headers: { type: Array },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatTableCard.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatTableCard.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./StatTableCard.vue?vue&type=template&id=2d398d5c\"\nimport script from \"./StatTableCard.vue?vue&type=script&lang=js\"\nexport * from \"./StatTableCard.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[(_vm.os == 'windows10')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-microsoft-windows\")]):(_vm.os == 'macosx')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-apple\")]):(_vm.os == 'raspbian')?_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-raspberry-pi\")]):_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-all-inclusive\")]),_vm._v(\" \"+_vm._s(_vm.display_name)+\" \")],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <span>\n    <v-icon left v-if=\"os == 'windows10'\">mdi-microsoft-windows</v-icon>\n    <v-icon left v-else-if=\"os == 'macosx'\">mdi-apple</v-icon>\n    <v-icon left v-else-if=\"os == 'raspbian'\">mdi-raspberry-pi</v-icon>\n    <v-icon left v-else>mdi-all-inclusive</v-icon> {{ display_name }}\n  </span>\n</template>\n\n<script>\nexport default {\n  name: 'PlatformIcon',\n  props: {\n    os: { type: String },\n    display_name: { type: String },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlatformIcon.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PlatformIcon.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PlatformIcon.vue?vue&type=template&id=2107955a\"\nimport script from \"./PlatformIcon.vue?vue&type=script&lang=js\"\nexport * from \"./PlatformIcon.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-card',{staticClass:\"mb-4\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-history\")]),_c('v-toolbar-title',[_vm._v(\"Recent Logins\")])],1),_c('v-data-table',{attrs:{\"item-key\":\"email\",\"loading\":_vm.recentLogins.loading,\"loading-text\":\"Loading. Please wait...\",\"items\":_vm.recentLogins.items,\"headers\":_vm.headers,\"hide-default-footer\":\"\",\"disable-sort\":\"\"},scopedSlots:_vm._u([{key:\"item.is_superuser\",fn:function({ item }){return [_c('RowCheckmark',{attrs:{\"bool\":item.is_superuser}})]}},{key:\"item.is_staff\",fn:function({ item }){return [_c('RowCheckmark',{attrs:{\"bool\":item.is_staff}})]}},{key:\"item.last_login\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.localDatetime(item.last_login))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.actions},on:{\"edit\":function($event){return _vm.editUser(item)}}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-card class=\"mb-4\">\n    <v-toolbar dark flat dense color=\"primary\">\n      <v-icon left>mdi-history</v-icon>\n      <v-toolbar-title>Recent Logins</v-toolbar-title>\n    </v-toolbar>\n\n    <v-data-table\n      item-key=\"email\"\n      :loading=\"recentLogins.loading\"\n      loading-text=\"Loading. Please wait...\"\n      :items=\"recentLogins.items\"\n      :headers=\"headers\"\n      hide-default-footer\n      disable-sort\n    >\n      <template v-slot:item.is_superuser=\"{ item }\">\n        <RowCheckmark :bool=\"item.is_superuser\" />\n      </template>\n      <template v-slot:item.is_staff=\"{ item }\">\n        <RowCheckmark :bool=\"item.is_staff\" />\n      </template>\n      <template v-slot:item.last_login=\"{ item }\">\n        {{ localDatetime(item.last_login) }}\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <RowActions :actions=\"actions\" @edit=\"editUser(item)\" />\n      </template>\n    </v-data-table>\n  </v-card>\n</template>\n\n<script>\nimport { localDatetime } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { RowCheckmark, RowActions } from '@/spaday/components'\n\nexport default {\n  name: 'RecentLogins',\n  components: {\n    RowCheckmark,\n    RowActions,\n  },\n  data: () => ({\n    headers: [\n      {\n        text: 'First Name',\n        value: 'first_name',\n      },\n      {\n        text: 'Last Name',\n        value: 'last_name',\n      },\n      {\n        text: 'Email',\n        value: 'email',\n      },\n      {\n        text: 'Staff',\n        value: 'is_staff',\n      },\n      {\n        text: 'Superuser',\n        value: 'is_superuser',\n      },\n      {\n        text: 'Last Login',\n        value: 'last_login',\n      },\n      { text: 'Actions', value: 'actions', sortable: false },\n    ],\n    actions: [\n      {\n        text: 'Edit User',\n        icon: 'mdi-pencil',\n        color: 'primary',\n        permissions: ['users.change_user'],\n        emit: 'edit',\n      },\n    ],\n  }),\n  computed: {\n    ...mapState({\n      recentLogins: (state) => state.users.recentLogins,\n    }),\n  },\n  mounted() {\n    this.getRecentLogins()\n  },\n  methods: {\n    localDatetime,\n    ...mapActions('users', {\n      getRecentLogins: 'getRecentLogins',\n    }),\n    editUser(item) {\n      this.$router.push({ name: 'ChangeUser', params: { pk: item.pk } })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentLogins.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentLogins.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./RecentLogins.vue?vue&type=template&id=51c8c359\"\nimport script from \"./RecentLogins.vue?vue&type=script&lang=js\"\nexport * from \"./RecentLogins.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-row',{staticClass:\"pa-3\"},[_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-magnify\",\"label\":_vm.label,\"outlined\":\"\",\"clearable\":\"\",\"dense\":\"\",\"hint\":\"Hint: Submit your search quickly by using the Enter key.\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.submit(_vm.search)},\"click:clear\":function($event){return _vm.submit('')}},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}}),_c('v-btn',{staticClass:\"ml-2\",attrs:{\"depressed\":\"\"},on:{\"click\":function($event){return _vm.submit(_vm.search)}}},[_vm._v(\" Search \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-row class=\"pa-3\">\n    <v-text-field\n      v-model=\"search\"\n      prepend-inner-icon=\"mdi-magnify\"\n      :label=\"label\"\n      outlined\n      clearable\n      dense\n      @keydown.enter.prevent=\"submit(search)\"\n      @click:clear=\"submit('')\"\n      hint=\"Hint: Submit your search quickly by using the Enter key.\"\n    ></v-text-field\n    ><v-btn depressed class=\"ml-2\" @click=\"submit(search)\"> Search </v-btn>\n  </v-row>\n</template>\n\n<script>\nexport default {\n  name: 'DataTableSearch',\n  props: {\n    label: { type: String, default: 'Search...' },\n  },\n  data: () => ({\n    search: '',\n  }),\n  methods: {\n    submit(value) {\n      this.$emit('search', value)\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchField.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchField.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SearchField.vue?vue&type=template&id=890ce22a\"\nimport script from \"./SearchField.vue?vue&type=script&lang=js\"\nexport * from \"./SearchField.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',[_c('router-view')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-app>\n    <router-view></router-view>\n  </v-app>\n</template>\n\n<script>\nexport default {\n  name: 'App',\n}\n</script>\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=04ef49a1\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Vue from 'vue'\nimport App from '@/App.vue'\nimport router from '@/router'\nimport store from '@/store'\nimport VueCookies from 'vue-cookies'\n\nimport vuetify from '@/plugins/vuetify'\n\n// import LogRocket from 'logrocket'\n// LogRocket.init('nm1oqt/test')\n\nVue.use(VueCookies)\n\nVue.config.productionTip = false\n\nnew Vue({\n  vuetify,\n  router,\n  store,\n  render: (h) => h(App),\n  beforeCreate() {\n    this.$store.dispatch('preferences/initialiseStore')\n  },\n}).$mount('#app')\n","// import { v4 as uuidv4 } from 'uuid'\n\nexport const VERSION = '0.1.1'\nexport const PROJECT_NAME = 'QR Code'\nexport const API_URL = 'https://qr.xstudios.com/api/v1'\n\nexport const SIDENAV = [\n  {\n    to: {\n      name: 'Dashboard',\n    },\n    icon: 'mdi-view-dashboard',\n    title: 'Dashboard',\n    meta: {\n      permissions: ['spaday.view_dashboard'],\n    },\n  },\n  {\n    divider: true,\n  },\n  // {\n  //     header: 'Auth',\n  // },\n  {\n    title: 'Users',\n    icon: 'mdi-account',\n    to: {\n      name: 'User',\n    },\n    chip: false,\n    meta: {\n      permissions: ['users.view_user', 'users.add_user', 'users.change_user', 'users.delete_user'],\n    },\n  },\n  {\n    title: 'Groups',\n    icon: 'mdi-account-group',\n    to: {\n      name: 'Group',\n    },\n    chip: false,\n    meta: {\n      permissions: ['auth.view_group', 'auth.add_group', 'auth.change_group', 'auth.delete_group'],\n    },\n  },\n  {\n    title: 'Audit Log',\n    icon: 'mdi-clipboard-text-clock-outline',\n    to: {\n      name: 'AuditLog',\n    },\n    chip: false,\n    meta: {\n      permissions: [\n        'auditlog.view_logentry',\n        'auditlog.add_logentry',\n        'auditlog.change_logentry',\n        'auditlog.delete_logentry',\n      ],\n    },\n  },\n  {\n    title: 'Celery Task Results',\n    icon: 'mdi-calendar-check',\n    to: {\n      name: 'TaskResult',\n    },\n    chip: false,\n    meta: {\n      permissions: [\n        'django_celery_results.view_taskresult',\n        'django_celery_results.add_taskresult',\n        'django_celery_results.change_taskresult',\n        'django_celery_results.delete_taskresult',\n      ],\n    },\n  },\n  //   {\n  //     icon: 'mdi-account-group',\n  //     active: true,\n  //     items: [\n  //       { title: 'Users', to: { name: 'User' }, chip: true },\n  //       { title: 'Groups', to: { name: 'Group' }, chip: true },\n  //     ],\n  //     title: 'Auth',\n  //   },\n  {\n    divider: true,\n  },\n  //   {\n  //     header: 'Models',\n  //   },\n  {\n    icon: 'mdi-office-building',\n    title: 'Companies',\n    to: {\n      name: 'Company',\n    },\n    meta: {\n      permissions: ['core.view_company', 'core.add_company', 'core.change_company', 'core.delete_company'],\n    },\n  },\n  {\n    icon: 'mdi-calendar-multiple',\n    title: 'Events',\n    to: {\n      name: 'Event',\n    },\n    meta: {\n      permissions: ['core.view_event', 'core.add_event', 'core.change_event', 'core.delete_event'],\n    },\n  },\n  {\n    icon: 'mdi-qrcode',\n    title: 'QR Codes',\n    to: {\n      name: 'QRCode',\n    },\n    meta: {\n      permissions: ['core.view_qrcode', 'core.add_qrcode', 'core.change_qrcode', 'core.delete_qrcode'],\n    },\n  },\n  {\n    icon: 'mdi-qrcode-scan',\n    title: 'Scans',\n    to: {\n      name: 'Scan',\n    },\n    meta: {\n      permissions: ['core.view_scan', 'core.add_scan', 'core.change_scan', 'core.delete_scan'],\n    },\n  },\n]\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=style&index=0&id=716e7f1e&prod&scss=true&scoped=true&lang=css\"","module.exports = __webpack_public_path__ + \"img/xstudios-logo-white.svg\";","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=style&index=0&id=830ed3a6&prod&scoped=true&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Create User\",\"subtitle\":_vm.object.email,\"btnLabel\":\"Save User\",\"canAdd\":_vm.hasPermission('users.add_user'),\"saveLoading\":_vm.$store.state.users.object.loading},on:{\"submit\":_vm.submit}}),_c('v-form',{ref:\"form\",attrs:{\"disabled\":_vm.object.loading}},[_c('v-card',{staticClass:\"mb-4\"},[_c('v-tabs',{attrs:{\"grow\":\"\",\"icons-and-text\":\"\",\"slider-size\":\"4\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(item,index){return [_c('v-tab',{key:index,attrs:{\"href\":item.href}},[_vm._v(\" \"+_vm._s(item.text)+\" \"),_c('v-icon',[_vm._v(_vm._s(item.icon))])],1)]})],2),_c('v-divider',{staticClass:\"primary\"}),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{attrs:{\"value\":\"general\"}},[_c('CardSubheader',{attrs:{\"icon\":\"mdi-login-variant\",\"title\":\"Login Credentials\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"label\":\"Email\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.email),callback:function ($$v) {_vm.$set(_vm.object, \"email\", $$v)},expression:\"object.email\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"type\":_vm.showPass ? 'text' : 'password',\"append-icon\":_vm.showPass ? 'mdi-eye' : 'mdi-eye-off',\"label\":\"Password\",\"rules\":[_vm.rules.required, _vm.rules.min],\"persistent-hint\":\"\",\"hint\":\"At least 8 characters\",\"counter\":\"\"},on:{\"click:append\":function($event){_vm.showPass = !_vm.showPass}},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"type\":_vm.showPass ? 'text' : 'password',\"append-icon\":_vm.showPass ? 'mdi-eye' : 'mdi-eye-off',\"label\":\"Password Confirmation\",\"rules\":[_vm.confirmPassword],\"persistent-hint\":\"\",\"hint\":\"Enter the same password as before, for verification.\"},on:{\"click:append\":function($event){_vm.showPass = !_vm.showPass}},model:{value:(_vm.password2),callback:function ($$v) {_vm.password2=$$v},expression:\"password2\"}})],1)],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-account\",\"title\":\"Personal Info\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"First Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.first_name),callback:function ($$v) {_vm.$set(_vm.object, \"first_name\", $$v)},expression:\"object.first_name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Last Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.last_name),callback:function ($$v) {_vm.$set(_vm.object, \"last_name\", $$v)},expression:\"object.last_name\"}})],1)],1)],1)],1),_c('v-tab-item',{attrs:{\"value\":\"permissions\"}},[_c('CardSubheader',{attrs:{\"icon\":\"mdi-list-status\",\"title\":\"Status\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-checkbox',{attrs:{\"label\":\"Active\",\"hint\":\"Designates whether this user should be treated as active. Unselect this instead of deleting accounts.\",\"persistent-hint\":\"\"},model:{value:(_vm.object.is_active),callback:function ($$v) {_vm.$set(_vm.object, \"is_active\", $$v)},expression:\"object.is_active\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-checkbox',{attrs:{\"label\":\"Staff Status\",\"hint\":\"Designates whether the user can log into this admin site.\",\"persistent-hint\":\"\"},model:{value:(_vm.object.is_staff),callback:function ($$v) {_vm.$set(_vm.object, \"is_staff\", $$v)},expression:\"object.is_staff\"}})],1),(_vm.user.is_superuser)?_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-checkbox',{attrs:{\"label\":\"Superuser Status\",\"hint\":\"Designates that this user has all permissions without explicitly assigning them.\",\"persistent-hint\":\"\"},model:{value:(_vm.object.is_superuser),callback:function ($$v) {_vm.$set(_vm.object, \"is_superuser\", $$v)},expression:\"object.is_superuser\"}})],1):_vm._e()],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-account-group\",\"title\":\"Groups\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"label\":\"Groups\",\"items\":_vm.groups.items,\"loading\":_vm.groups.loading,\"item-value\":\"pk\",\"item-text\":\"name\",\"multiple\":\"\",\"clearable\":\"\",\"small-chips\":\"\",\"deletable-chips\":\"\",\"hide-no-data\":\"\",\"persistent-hint\":\"\",\"hint\":\"The groups this user belongs to. A user will get all permissions granted to each of their groups.\"},model:{value:(_vm.object.groups),callback:function ($$v) {_vm.$set(_vm.object, \"groups\", $$v)},expression:\"object.groups\"}})],1)],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-key\",\"title\":\"Specific Permissions\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"label\":\"Permissions\",\"items\":_vm.permissions.items,\"loading\":_vm.permissions.loading,\"multiple\":\"\",\"clearable\":\"\",\"small-chips\":\"\",\"deletable-chips\":\"\",\"hide-no-data\":\"\",\"persistent-hint\":\"\",\"hint\":\"Specific permissions for this user.\"},model:{value:(_vm.object.user_permissions),callback:function ($$v) {_vm.$set(_vm.object, \"user_permissions\", $$v)},expression:\"object.user_permissions\"}})],1)],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"Create User\"\n      :subtitle=\"object.email\"\n      btnLabel=\"Save User\"\n      :canAdd=\"hasPermission('users.add_user')\"\n      @submit=\"submit\"\n      :saveLoading=\"$store.state.users.object.loading\"\n    />\n\n    <v-form ref=\"form\" :disabled=\"object.loading\">\n      <v-card class=\"mb-4\">\n        <v-tabs v-model=\"tab\" grow icons-and-text slider-size=\"4\">\n          <v-tabs-slider></v-tabs-slider>\n          <template v-for=\"(item, index) in tabs\">\n            <v-tab :key=\"index\" :href=\"item.href\">\n              {{ item.text }}\n              <v-icon>{{ item.icon }}</v-icon>\n            </v-tab>\n          </template>\n        </v-tabs>\n\n        <v-divider class=\"primary\"></v-divider>\n\n        <v-tabs-items v-model=\"tab\">\n          <v-tab-item value=\"general\">\n            <CardSubheader icon=\"mdi-login-variant\" title=\"Login Credentials\" />\n\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"4\">\n                  <v-text-field v-model=\"object.email\" label=\"Email\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n                <v-col cols=\"12\" md=\"4\">\n                  <v-text-field\n                    :type=\"showPass ? 'text' : 'password'\"\n                    v-model=\"password\"\n                    :append-icon=\"showPass ? 'mdi-eye' : 'mdi-eye-off'\"\n                    @click:append=\"showPass = !showPass\"\n                    label=\"Password\"\n                    :rules=\"[rules.required, rules.min]\"\n                    persistent-hint\n                    hint=\"At least 8 characters\"\n                    counter\n                  ></v-text-field>\n                </v-col>\n                <v-col cols=\"12\" md=\"4\">\n                  <v-text-field\n                    :type=\"showPass ? 'text' : 'password'\"\n                    v-model=\"password2\"\n                    :append-icon=\"showPass ? 'mdi-eye' : 'mdi-eye-off'\"\n                    @click:append=\"showPass = !showPass\"\n                    label=\"Password Confirmation\"\n                    :rules=\"[confirmPassword]\"\n                    persistent-hint\n                    hint=\"Enter the same password as before, for verification.\"\n                  ></v-text-field>\n                </v-col>\n              </v-row>\n            </v-card-text>\n\n            <CardSubheader icon=\"mdi-account\" title=\"Personal Info\" />\n\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.first_name\" label=\"First Name\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.last_name\" label=\"Last Name\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n\n          <v-tab-item value=\"permissions\">\n            <CardSubheader icon=\"mdi-list-status\" title=\"Status\" />\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"4\">\n                  <v-checkbox\n                    v-model=\"object.is_active\"\n                    label=\"Active\"\n                    hint=\"Designates whether this user should be treated as active. Unselect this instead of deleting accounts.\"\n                    persistent-hint\n                  ></v-checkbox>\n                </v-col>\n                <v-col cols=\"12\" md=\"4\">\n                  <v-checkbox\n                    v-model=\"object.is_staff\"\n                    label=\"Staff Status\"\n                    hint=\"Designates whether the user can log into this admin site.\"\n                    persistent-hint\n                  ></v-checkbox>\n                </v-col>\n                <v-col cols=\"12\" md=\"4\" v-if=\"user.is_superuser\">\n                  <v-checkbox\n                    v-model=\"object.is_superuser\"\n                    label=\"Superuser Status\"\n                    hint=\"Designates that this user has all permissions without explicitly assigning them.\"\n                    persistent-hint\n                  ></v-checkbox>\n                </v-col>\n              </v-row>\n            </v-card-text>\n\n            <CardSubheader icon=\"mdi-account-group\" title=\"Groups\" />\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-select\n                    label=\"Groups\"\n                    v-model=\"object.groups\"\n                    :items=\"groups.items\"\n                    :loading=\"groups.loading\"\n                    item-value=\"pk\"\n                    item-text=\"name\"\n                    multiple\n                    clearable\n                    small-chips\n                    deletable-chips\n                    hide-no-data\n                    persistent-hint\n                    hint=\"The groups this user belongs to. A user will get all permissions granted to each of their groups.\"\n                  ></v-select>\n                </v-col>\n              </v-row>\n            </v-card-text>\n\n            <CardSubheader icon=\"mdi-key\" title=\"Specific Permissions\" />\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\">\n                  <v-select\n                    label=\"Permissions\"\n                    v-model=\"object.user_permissions\"\n                    :items=\"permissions.items\"\n                    :loading=\"permissions.loading\"\n                    multiple\n                    clearable\n                    small-chips\n                    deletable-chips\n                    hide-no-data\n                    persistent-hint\n                    hint=\"Specific permissions for this user.\"\n                  ></v-select>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n        </v-tabs-items>\n      </v-card>\n    </v-form>\n  </div>\n</template>\n\n<script>\nimport { hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { FormHeader, CardSubheader } from '@/spaday/components'\n\nexport default {\n  components: { FormHeader, CardSubheader },\n  data: () => ({\n    object: {\n      groups: [],\n      user_permissions: [],\n    },\n    password: '',\n    password2: '',\n    showPass: false,\n    tabs: [\n      {\n        text: 'General Info',\n        icon: 'mdi-information',\n        href: '#general',\n      },\n      {\n        text: 'Permissions',\n        icon: 'mdi-key',\n        href: '#permissions',\n      },\n    ],\n    rules: {\n      required: (value) => !!value || 'Required.',\n      min: (v) => v.length >= 8 || 'At least 8 characters',\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      groups: (state) => state.groups.combobox,\n      permissions: (state) => state.permissions.combobox,\n    }),\n    tab: {\n      set(tab) {\n        this.$router.replace({ query: { ...this.$route.query, tab } })\n      },\n      get() {\n        return this.$route.query.tab\n      },\n    },\n  },\n  mounted() {\n    this.getGroups()\n    this.getPermissions()\n  },\n  methods: {\n    hasPermission,\n    ...mapActions('groups', {\n      getGroups: 'getCombobox',\n    }),\n    ...mapActions('permissions', {\n      getPermissions: 'getCombobox',\n    }),\n    ...mapActions('users', {\n      createUser: 'create',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      let data = this.object\n      data.password = this.password\n      this.createUser(data).then(() => {\n        this.$router.go(-1)\n      })\n    },\n    confirmPassword() {\n      return this.password === this.password2 || 'Password must match'\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Create.vue?vue&type=template&id=e7450e7a\"\nimport script from \"./Create.vue?vue&type=script&lang=js\"\nexport * from \"./Create.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ListHeader',{attrs:{\"title\":\"Users\",\"subtitle\":\"Create and manage users.\",\"btnLabel\":\"New User\",\"route\":{ name: 'AddUser' },\"canAdd\":_vm.hasPermission('users.add_user')}}),_c('v-card',[_c('v-card-title',{staticClass:\"text--primary\"},[_c('SearchField',{attrs:{\"label\":\"Search Users...\"},on:{\"search\":_vm.updateSearch}})],1),_c('v-data-table',{attrs:{\"item-key\":\"email\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.users.loading,\"items\":_vm.users.items,\"headers\":_vm.userTable.headers,\"search\":_vm.userTable.search,\"footer-props\":{\n        'items-per-page-options': [10, 20, 50, 100],\n        'show-current-page': true,\n      },\"options\":_vm.userTable.options,\"server-items-length\":_vm.userTable.totalItems},on:{\"update:options\":[function($event){return _vm.$set(_vm.userTable, \"options\", $event)},_vm.getPaginatedUsers]},scopedSlots:_vm._u([{key:\"item.is_superuser\",fn:function({ item }){return [_c('RowCheckmark',{attrs:{\"bool\":item.is_superuser}})]}},{key:\"item.is_staff\",fn:function({ item }){return [_c('RowCheckmark',{attrs:{\"bool\":item.is_staff}})]}},{key:\"item.last_login\",fn:function({ item }){return [(item.last_login)?_c('span',[_vm._v(\" \"+_vm._s(_vm.localDatetime(item.last_login))+\" \")]):_vm._e()]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.userTable.actions},on:{\"edit\":function($event){return _vm.editUser(item)},\"confirm-delete\":function($event){return _vm.preDeleteUser(item)}}})]}}]),model:{value:(_vm.userTable.selected),callback:function ($$v) {_vm.$set(_vm.userTable, \"selected\", $$v)},expression:\"userTable.selected\"}})],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteUser}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <ListHeader\n      title=\"Users\"\n      subtitle=\"Create and manage users.\"\n      btnLabel=\"New User\"\n      :route=\"{ name: 'AddUser' }\"\n      :canAdd=\"hasPermission('users.add_user')\"\n    />\n\n    <v-card>\n      <v-card-title class=\"text--primary\">\n        <SearchField label=\"Search Users...\" @search=\"updateSearch\" />\n      </v-card-title>\n      <v-data-table\n        v-model=\"userTable.selected\"\n        item-key=\"email\"\n        loading-text=\"Loading. Please wait...\"\n        :loading=\"users.loading\"\n        :items=\"users.items\"\n        :headers=\"userTable.headers\"\n        :search=\"userTable.search\"\n        :footer-props=\"{\n          'items-per-page-options': [10, 20, 50, 100],\n          'show-current-page': true,\n        }\"\n        :options.sync=\"userTable.options\"\n        :server-items-length=\"userTable.totalItems\"\n        @update:options=\"getPaginatedUsers\"\n      >\n        <template v-slot:item.is_superuser=\"{ item }\">\n          <RowCheckmark :bool=\"item.is_superuser\" />\n        </template>\n        <template v-slot:item.is_staff=\"{ item }\">\n          <RowCheckmark :bool=\"item.is_staff\" />\n        </template>\n        <template v-slot:item.last_login=\"{ item }\">\n          <span v-if=\"item.last_login\">\n            {{ localDatetime(item.last_login) }}\n          </span>\n        </template>\n        <template v-slot:item.actions=\"{ item }\">\n          <RowActions :actions=\"userTable.actions\" @edit=\"editUser(item)\" @confirm-delete=\"preDeleteUser(item)\" />\n        </template>\n      </v-data-table>\n    </v-card>\n\n    <DeleteConfirmation @confirm-delete=\"deleteUser\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission, getPaginationParams } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, ListHeader, RowActions, RowCheckmark, SearchField } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n    DeleteConfirmation,\n    RowCheckmark,\n    ListHeader,\n    SearchField,\n  },\n  data: () => ({\n    userTable: {\n      options: {},\n      totalItems: 0,\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'First Name', value: 'first_name' },\n        { text: 'Last Name', value: 'last_name' },\n        { text: 'Email', value: 'email' },\n        { text: 'Staff', value: 'is_staff' },\n        { text: 'Superuser', value: 'is_superuser' },\n        { text: 'Last Login', value: 'last_login' },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'Edit User',\n          icon: 'mdi-pencil',\n          color: 'primary',\n          permissions: ['users.change_user'],\n          emit: 'edit',\n        },\n        {\n          text: 'Delete User',\n          icon: 'mdi-trash-can-outline',\n          color: 'error',\n          permissions: ['users.delete_user'],\n          emit: 'confirm-delete',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      users: (state) => state.users.all,\n    }),\n  },\n  mounted() {\n    // this.getUsers()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    getPaginationParams,\n    ...mapActions('users', {\n      getUsers: 'getAll',\n      preDeleteUser: 'preDelete',\n      deleteUser: 'delete',\n    }),\n    editUser(item) {\n      this.$router.push({ name: 'ChangeUser', params: { pk: item.pk } })\n    },\n\n    /** Pagination handlers **/\n    getPaginatedUsers() {\n      const params = this.getPaginationParams(this.userTable.options, this.userTable.search)\n      this.getUsers(params).then((data) => {\n        this.userTable.totalPages = data.num_pages\n        this.userTable.totalItems = data.num_results\n      })\n    },\n    updateSearch(value) {\n      this.userTable.search = value\n      this.getPaginatedUsers()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./List.vue?vue&type=template&id=458b4796\"\nimport script from \"./List.vue?vue&type=script&lang=js\"\nexport * from \"./List.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Update User\",\"subtitle\":_vm.object.email,\"btnLabel\":\"Update User\",\"canChange\":_vm.hasPermission('users.change_user'),\"canDelete\":_vm.hasPermission('users.delete_user'),\"deleteLoading\":_vm.$store.state.users.delete.loading,\"saveLoading\":_vm.$store.state.users.object.loading},on:{\"submit\":_vm.submit,\"delete\":function($event){return _vm.preDeleteUser(_vm.object)}}}),_c('v-form',{ref:\"form\",attrs:{\"disabled\":_vm.object.loading,\"readonly\":!_vm.hasPermission('users.change_user')}},[_c('v-card',{staticClass:\"mb-4\",attrs:{\"loading\":_vm.object.loading}},[_c('v-tabs',{attrs:{\"grow\":\"\",\"icons-and-text\":\"\",\"slider-size\":\"4\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(item,index){return [_c('v-tab',{key:index,attrs:{\"href\":item.href}},[_vm._v(\" \"+_vm._s(item.text)+\" \"),_c('v-icon',[_vm._v(_vm._s(item.icon))])],1)]})],2),_c('v-divider',{staticClass:\"primary\"}),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{attrs:{\"value\":\"general\"}},[_c('CardSubheader',{attrs:{\"icon\":\"mdi-login-variant\",\"title\":\"Login Credentials\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Email\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.email),callback:function ($$v) {_vm.$set(_vm.object, \"email\", $$v)},expression:\"object.email\"}})],1),(_vm.hasPermission('users.change_user'))?_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('ChangePassword',{attrs:{\"user\":_vm.object}}),_c('p',[_c('small',[_vm._v(\"Raw passwords are not stored, so there is no way to see this user’s password, but you can change the password.\")])])],1):_vm._e()],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-account\",\"title\":\"Personal Info\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"First Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.first_name),callback:function ($$v) {_vm.$set(_vm.object, \"first_name\", $$v)},expression:\"object.first_name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Last Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.last_name),callback:function ($$v) {_vm.$set(_vm.object, \"last_name\", $$v)},expression:\"object.last_name\"}})],1)],1)],1)],1),_c('v-tab-item',{attrs:{\"value\":\"permissions\"}},[_c('CardSubheader',{attrs:{\"icon\":\"mdi-list-status\",\"title\":\"Status\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-checkbox',{attrs:{\"label\":\"Active\",\"hint\":\"Designates whether this user should be treated as active. Unselect this instead of deleting accounts.\",\"persistent-hint\":\"\"},model:{value:(_vm.object.is_active),callback:function ($$v) {_vm.$set(_vm.object, \"is_active\", $$v)},expression:\"object.is_active\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-checkbox',{attrs:{\"label\":\"Staff Status\",\"hint\":\"Designates whether the user can log into this admin site.\",\"persistent-hint\":\"\"},model:{value:(_vm.object.is_staff),callback:function ($$v) {_vm.$set(_vm.object, \"is_staff\", $$v)},expression:\"object.is_staff\"}})],1),(_vm.user.is_superuser)?_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-checkbox',{attrs:{\"label\":\"Superuser Status\",\"hint\":\"Designates that this user has all permissions without explicitly assigning them.\",\"persistent-hint\":\"\"},model:{value:(_vm.object.is_superuser),callback:function ($$v) {_vm.$set(_vm.object, \"is_superuser\", $$v)},expression:\"object.is_superuser\"}})],1):_vm._e()],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-account-group\",\"title\":\"Groups\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"label\":\"Groups\",\"items\":_vm.groups.items,\"loading\":_vm.groups.loading,\"item-value\":\"pk\",\"item-text\":\"name\",\"multiple\":\"\",\"clearable\":\"\",\"small-chips\":\"\",\"deletable-chips\":\"\",\"hide-no-data\":\"\",\"persistent-hint\":\"\",\"hint\":\"The groups this user belongs to. A user will get all permissions granted to each of their groups.\"},model:{value:(_vm.object.groups),callback:function ($$v) {_vm.$set(_vm.object, \"groups\", $$v)},expression:\"object.groups\"}})],1)],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-key\",\"title\":\"Specific Permissions\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"label\":\"Permissions\",\"items\":_vm.permissions.items,\"loading\":_vm.permissions.loading,\"multiple\":\"\",\"clearable\":\"\",\"small-chips\":\"\",\"deletable-chips\":\"\",\"hide-no-data\":\"\",\"persistent-hint\":\"\",\"hint\":\"Specific permissions for this user.\"},model:{value:(_vm.object.user_permissions),callback:function ($$v) {_vm.$set(_vm.object, \"user_permissions\", $$v)},expression:\"object.user_permissions\"}})],1)],1)],1)],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('div',{staticClass:\"caption\"},[_vm._v(\" User ID \"),_c('strong',[_vm._v(_vm._s(_vm.object.pk))])])],1)],1)],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteUserRedirect}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"Update User\"\n      :subtitle=\"object.email\"\n      btnLabel=\"Update User\"\n      :canChange=\"hasPermission('users.change_user')\"\n      :canDelete=\"hasPermission('users.delete_user')\"\n      @submit=\"submit\"\n      @delete=\"preDeleteUser(object)\"\n      :deleteLoading=\"$store.state.users.delete.loading\"\n      :saveLoading=\"$store.state.users.object.loading\"\n    />\n\n    <v-form ref=\"form\" :disabled=\"object.loading\" :readonly=\"!hasPermission('users.change_user')\">\n      <v-card class=\"mb-4\" :loading=\"object.loading\">\n        <v-tabs v-model=\"tab\" grow icons-and-text slider-size=\"4\">\n          <v-tabs-slider></v-tabs-slider>\n          <template v-for=\"(item, index) in tabs\">\n            <v-tab :key=\"index\" :href=\"item.href\">\n              {{ item.text }}\n              <v-icon>{{ item.icon }}</v-icon>\n            </v-tab>\n          </template>\n        </v-tabs>\n\n        <v-divider class=\"primary\"></v-divider>\n\n        <v-tabs-items v-model=\"tab\">\n          <v-tab-item value=\"general\">\n            <CardSubheader icon=\"mdi-login-variant\" title=\"Login Credentials\" />\n\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.email\" label=\"Email\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n                <v-col cols=\"12\" md=\"6\" v-if=\"hasPermission('users.change_user')\">\n                  <ChangePassword :user=\"object\" />\n                  <p>\n                    <small\n                      >Raw passwords are not stored, so there is no way to see this user’s password, but you can change\n                      the password.</small\n                    >\n                  </p>\n                </v-col>\n              </v-row>\n            </v-card-text>\n\n            <CardSubheader icon=\"mdi-account\" title=\"Personal Info\" />\n\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.first_name\" label=\"First Name\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.last_name\" label=\"Last Name\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n\n          <v-tab-item value=\"permissions\">\n            <CardSubheader icon=\"mdi-list-status\" title=\"Status\" />\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"4\">\n                  <v-checkbox\n                    v-model=\"object.is_active\"\n                    label=\"Active\"\n                    hint=\"Designates whether this user should be treated as active. Unselect this instead of deleting accounts.\"\n                    persistent-hint\n                  ></v-checkbox>\n                </v-col>\n                <v-col cols=\"12\" md=\"4\">\n                  <v-checkbox\n                    v-model=\"object.is_staff\"\n                    label=\"Staff Status\"\n                    hint=\"Designates whether the user can log into this admin site.\"\n                    persistent-hint\n                  ></v-checkbox>\n                </v-col>\n                <v-col cols=\"12\" md=\"4\" v-if=\"user.is_superuser\">\n                  <v-checkbox\n                    v-model=\"object.is_superuser\"\n                    label=\"Superuser Status\"\n                    hint=\"Designates that this user has all permissions without explicitly assigning them.\"\n                    persistent-hint\n                  ></v-checkbox>\n                </v-col>\n              </v-row>\n            </v-card-text>\n\n            <CardSubheader icon=\"mdi-account-group\" title=\"Groups\" />\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-select\n                    label=\"Groups\"\n                    v-model=\"object.groups\"\n                    :items=\"groups.items\"\n                    :loading=\"groups.loading\"\n                    item-value=\"pk\"\n                    item-text=\"name\"\n                    multiple\n                    clearable\n                    small-chips\n                    deletable-chips\n                    hide-no-data\n                    persistent-hint\n                    hint=\"The groups this user belongs to. A user will get all permissions granted to each of their groups.\"\n                  ></v-select>\n                </v-col>\n              </v-row>\n            </v-card-text>\n\n            <CardSubheader icon=\"mdi-key\" title=\"Specific Permissions\" />\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\">\n                  <v-select\n                    label=\"Permissions\"\n                    v-model=\"object.user_permissions\"\n                    :items=\"permissions.items\"\n                    :loading=\"permissions.loading\"\n                    multiple\n                    clearable\n                    small-chips\n                    deletable-chips\n                    hide-no-data\n                    persistent-hint\n                    hint=\"Specific permissions for this user.\"\n                  ></v-select>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n        </v-tabs-items>\n        <v-divider></v-divider>\n        <v-card-actions\n          ><v-spacer></v-spacer>\n          <div class=\"caption\">\n            User ID <strong>{{ object.pk }}</strong>\n          </div></v-card-actions\n        >\n      </v-card>\n    </v-form>\n\n    <DeleteConfirmation @confirm-delete=\"deleteUserRedirect\" />\n  </div>\n</template>\n\n<script>\nimport { hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, ChangePassword, FormHeader, CardSubheader } from '@/spaday/components'\n\nexport default {\n  components: {\n    DeleteConfirmation,\n    ChangePassword,\n    FormHeader,\n    CardSubheader,\n  },\n  data: () => ({\n    tabs: [\n      {\n        text: 'General Info',\n        icon: 'mdi-information',\n        href: '#general',\n      },\n      {\n        text: 'Permissions',\n        icon: 'mdi-key',\n        href: '#permissions',\n      },\n    ],\n    rules: {\n      required: (value) => !!value || 'Required.',\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      groups: (state) => state.groups.combobox,\n      permissions: (state) => state.permissions.combobox,\n      object: (state) => state.users.object,\n    }),\n    tab: {\n      set(tab) {\n        this.$router.replace({ query: { ...this.$route.query, tab } })\n      },\n      get() {\n        return this.$route.query.tab\n      },\n    },\n  },\n  mounted() {\n    this.getUser(this.$route.params.pk)\n    this.getGroups()\n    this.getPermissions()\n  },\n  beforeDestroy() {\n    this.clearUser()\n  },\n  methods: {\n    hasPermission,\n    ...mapActions('groups', {\n      getGroups: 'getCombobox',\n    }),\n    ...mapActions('permissions', {\n      getPermissions: 'getCombobox',\n    }),\n    ...mapActions('users', {\n      getUser: 'get',\n      updateUser: 'update',\n      preDeleteUser: 'preDelete',\n      deleteUser: 'delete',\n      clearUser: 'clear',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      this.updateUser({ id: this.object.pk, data: this.object }).then(() => {\n        this.$router.go(-1)\n      })\n    },\n    deleteUserRedirect(object) {\n      this.deleteUser(object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Update.vue?vue&type=template&id=98ffa0da\"\nimport script from \"./Update.vue?vue&type=script&lang=js\"\nexport * from \"./Update.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { List, Update, Create } from '@/spaday/views/user'\n\nconst routes = [\n  {\n    path: '/users',\n    name: 'User',\n    component: List,\n    meta: {\n      public: false,\n      permissions: ['users.view_user'],\n    },\n  },\n  {\n    path: '/users/add',\n    name: 'AddUser',\n    component: Create,\n    meta: {\n      public: false,\n      permissions: ['users.add_user'],\n    },\n  },\n  {\n    path: '/users/:pk/change',\n    name: 'ChangeUser',\n    component: Update,\n    meta: {\n      public: false,\n      permissions: ['users.change_user'],\n    },\n  },\n]\n\nexport default routes\n\n// export default routes.map((route) => {\n//   const meta = {\n//     public: false,\n//   }\n//   return {\n//     ...route,\n//     meta,\n//   }\n// })\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Create Group\",\"subtitle\":_vm.object.name,\"btnLabel\":\"Save Group\",\"canAdd\":_vm.hasPermission('auth.add_group'),\"saveLoading\":_vm.$store.state.groups.object.loading},on:{\"submit\":_vm.submit}}),_c('v-form',{ref:\"form\",attrs:{\"disabled\":_vm.object.loading}},[_c('v-card',{staticClass:\"mb-4\"},[_c('v-tabs',{attrs:{\"grow\":\"\",\"icons-and-text\":\"\",\"slider-size\":\"4\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(item,index){return [_c('v-tab',{key:index,attrs:{\"href\":item.href}},[_vm._v(\" \"+_vm._s(item.text)+\" \"),_c('v-icon',[_vm._v(_vm._s(item.icon))])],1)]})],2),_c('v-divider',{staticClass:\"primary\"}),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{attrs:{\"value\":\"general\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.name),callback:function ($$v) {_vm.$set(_vm.object, \"name\", $$v)},expression:\"object.name\"}})],1)],1)],1)],1),_c('v-tab-item',{attrs:{\"value\":\"permissions\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('v-select',{attrs:{\"items\":_vm.permissions.items,\"loading\":_vm.permissions.loading,\"label\":\"Permissions\",\"multiple\":\"\",\"persistent-hint\":\"\",\"hint\":\"Specific permissions for this group. User specific permissions will always take precedence.\",\"clearable\":\"\",\"small-chips\":\"\",\"deletable-chips\":\"\",\"hide-no-data\":\"\"},model:{value:(_vm.object.permissions),callback:function ($$v) {_vm.$set(_vm.object, \"permissions\", $$v)},expression:\"object.permissions\"}})],1)],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"Create Group\"\n      :subtitle=\"object.name\"\n      btnLabel=\"Save Group\"\n      :canAdd=\"hasPermission('auth.add_group')\"\n      @submit=\"submit\"\n      :saveLoading=\"$store.state.groups.object.loading\"\n    />\n\n    <v-form ref=\"form\" :disabled=\"object.loading\">\n      <v-card class=\"mb-4\">\n        <v-tabs v-model=\"tab\" grow icons-and-text slider-size=\"4\">\n          <v-tabs-slider></v-tabs-slider>\n          <template v-for=\"(item, index) in tabs\">\n            <v-tab :key=\"index\" :href=\"item.href\">\n              {{ item.text }}\n              <v-icon>{{ item.icon }}</v-icon>\n            </v-tab>\n          </template>\n        </v-tabs>\n\n        <v-divider class=\"primary\"></v-divider>\n\n        <v-tabs-items v-model=\"tab\">\n          <v-tab-item value=\"general\">\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.name\" label=\"Name\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n\n          <v-tab-item value=\"permissions\">\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"12\">\n                  <v-select\n                    v-model=\"object.permissions\"\n                    :items=\"permissions.items\"\n                    :loading=\"permissions.loading\"\n                    label=\"Permissions\"\n                    multiple\n                    persistent-hint\n                    hint=\"Specific permissions for this group. User specific permissions will always take precedence.\"\n                    clearable\n                    small-chips\n                    deletable-chips\n                    hide-no-data\n                  ></v-select>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n        </v-tabs-items>\n      </v-card>\n    </v-form>\n  </div>\n</template>\n\n<script>\nimport { hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { FormHeader } from '@/spaday/components'\n\nexport default {\n  components: {\n    FormHeader,\n  },\n  data: () => ({\n    object: {\n      permissions: [],\n    },\n    tabs: [\n      {\n        text: 'General Info',\n        icon: 'mdi-information',\n        href: '#general',\n      },\n      {\n        text: 'Permissions',\n        icon: 'mdi-key',\n        href: '#permissions',\n      },\n    ],\n    rules: {\n      required: (value) => !!value || 'Required.',\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      permissions: (state) => state.permissions.combobox,\n    }),\n    tab: {\n      set(tab) {\n        this.$router.replace({ query: { ...this.$route.query, tab } })\n      },\n      get() {\n        return this.$route.query.tab\n      },\n    },\n  },\n  mounted() {\n    this.getPermissions()\n  },\n  methods: {\n    hasPermission,\n    ...mapActions('permissions', {\n      getPermissions: 'getCombobox',\n    }),\n    ...mapActions('groups', {\n      createGroup: 'create',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      this.createGroup(this.object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Create.vue?vue&type=template&id=99d6c59a\"\nimport script from \"./Create.vue?vue&type=script&lang=js\"\nexport * from \"./Create.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ListHeader',{attrs:{\"title\":\"Groups\",\"subtitle\":\"Create and manage groups.\",\"btnLabel\":\"New Group\",\"route\":{ name: 'AddGroup' },\"canAdd\":_vm.hasPermission('auth.add_group')}}),_c('v-card',[_c('v-card-title',{staticClass:\"text--primary\"},[_c('SearchField',{attrs:{\"label\":\"Search Groups...\"},on:{\"search\":_vm.updateSearch}})],1),_c('v-data-table',{attrs:{\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.groups.loading,\"items\":_vm.groups.items,\"headers\":_vm.groupTable.headers,\"search\":_vm.groupTable.search,\"footer-props\":{\n        'items-per-page-options': [10, 20, 50, 100],\n        'show-current-page': true,\n      },\"options\":_vm.groupTable.options,\"server-items-length\":_vm.groupTable.totalItems},on:{\"update:options\":[function($event){return _vm.$set(_vm.groupTable, \"options\", $event)},_vm.getPaginatedGroups]},scopedSlots:_vm._u([{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.groupTable.actions},on:{\"edit\":function($event){return _vm.editGroup(item)},\"confirm-delete\":function($event){return _vm.preDeleteGroup(item)}}})]}}]),model:{value:(_vm.groupTable.selected),callback:function ($$v) {_vm.$set(_vm.groupTable, \"selected\", $$v)},expression:\"groupTable.selected\"}})],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteGroup}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <ListHeader\n      title=\"Groups\"\n      subtitle=\"Create and manage groups.\"\n      btnLabel=\"New Group\"\n      :route=\"{ name: 'AddGroup' }\"\n      :canAdd=\"hasPermission('auth.add_group')\"\n    />\n\n    <v-card>\n      <v-card-title class=\"text--primary\">\n        <SearchField label=\"Search Groups...\" @search=\"updateSearch\" />\n      </v-card-title>\n      <v-data-table\n        v-model=\"groupTable.selected\"\n        item-key=\"pk\"\n        loading-text=\"Loading. Please wait...\"\n        :loading=\"groups.loading\"\n        :items=\"groups.items\"\n        :headers=\"groupTable.headers\"\n        :search=\"groupTable.search\"\n        :footer-props=\"{\n          'items-per-page-options': [10, 20, 50, 100],\n          'show-current-page': true,\n        }\"\n        :options.sync=\"groupTable.options\"\n        :server-items-length=\"groupTable.totalItems\"\n        @update:options=\"getPaginatedGroups\"\n      >\n        <template v-slot:item.actions=\"{ item }\">\n          <RowActions :actions=\"groupTable.actions\" @edit=\"editGroup(item)\" @confirm-delete=\"preDeleteGroup(item)\" />\n        </template>\n      </v-data-table>\n    </v-card>\n\n    <DeleteConfirmation @confirm-delete=\"deleteGroup\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission, getPaginationParams } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { ListHeader, RowActions, DeleteConfirmation, SearchField } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n    DeleteConfirmation,\n    ListHeader,\n    SearchField,\n  },\n  data: () => ({\n    groupTable: {\n      options: {},\n      totalItems: 0,\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'Name', value: 'name' },\n        { text: 'Users', value: 'num_users', sortable: false },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'Edit Group',\n          icon: 'mdi-pencil',\n          color: 'primary',\n          permissions: ['auth.change_group'],\n          emit: 'edit',\n        },\n        {\n          text: 'Delete Group',\n          icon: 'mdi-trash-can-outline',\n          color: 'error',\n          permissions: ['auth.delete_group'],\n          emit: 'confirm-delete',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      groups: (state) => state.groups.all,\n    }),\n  },\n  mounted() {\n    // this.getGroups()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    getPaginationParams,\n    ...mapActions('groups', {\n      getGroups: 'getAll',\n      preDeleteGroup: 'preDelete',\n      deleteGroup: 'delete',\n    }),\n    editGroup(item) {\n      this.$router.push({ name: 'ChangeGroup', params: { pk: item.pk } })\n    },\n\n    /** Pagination handlers **/\n    getPaginatedGroups() {\n      const params = this.getPaginationParams(this.groupTable.options, this.groupTable.search)\n      this.getGroups(params).then((data) => {\n        this.groupTable.totalPages = data.num_pages\n        this.groupTable.totalItems = data.num_results\n      })\n    },\n    updateSearch(value) {\n      this.groupTable.search = value\n      this.getPaginatedGroups()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./List.vue?vue&type=template&id=54d734ba\"\nimport script from \"./List.vue?vue&type=script&lang=js\"\nexport * from \"./List.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Update Group\",\"subtitle\":_vm.object.name,\"btnLabel\":\"Update Group\",\"canChange\":_vm.hasPermission('auth.change_group'),\"canDelete\":_vm.hasPermission('auth.delete_group'),\"deleteLoading\":_vm.$store.state.groups.delete.loading,\"saveLoading\":_vm.$store.state.groups.object.loading},on:{\"submit\":_vm.submit,\"delete\":function($event){return _vm.preDeleteGroup(_vm.object)}}}),_c('v-form',{ref:\"form\",attrs:{\"disabled\":_vm.object.loading,\"readonly\":!_vm.hasPermission('auth.change_group')}},[_c('v-card',{staticClass:\"mb-4\",attrs:{\"loading\":_vm.object.loading}},[_c('v-tabs',{attrs:{\"grow\":\"\",\"icons-and-text\":\"\",\"slider-size\":\"4\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(item,index){return [_c('v-tab',{key:index,attrs:{\"href\":item.href}},[_vm._v(\" \"+_vm._s(item.text)+\" \"),_c('v-icon',[_vm._v(_vm._s(item.icon))])],1)]})],2),_c('v-divider',{staticClass:\"primary\"}),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{attrs:{\"value\":\"general\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.name),callback:function ($$v) {_vm.$set(_vm.object, \"name\", $$v)},expression:\"object.name\"}})],1)],1)],1)],1),_c('v-tab-item',{attrs:{\"value\":\"permissions\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('v-select',{attrs:{\"items\":_vm.permissions.items,\"label\":\"Permissions\",\"multiple\":\"\",\"persistent-hint\":\"\",\"hint\":\"Specific permissions for this group. User specific permissions will always take precedence.\",\"clearable\":\"\",\"small-chips\":\"\",\"deletable-chips\":\"\",\"hide-no-data\":\"\",\"loading\":_vm.permissions.loading},model:{value:(_vm.object.permissions),callback:function ($$v) {_vm.$set(_vm.object, \"permissions\", $$v)},expression:\"object.permissions\"}})],1)],1)],1)],1),_c('v-tab-item',{attrs:{\"value\":\"users\"}},[_c('UserList')],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('div',{staticClass:\"caption\"},[_vm._v(\" Group ID \"),_c('strong',[_vm._v(_vm._s(_vm.object.pk))])])],1)],1)],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteGroupRedirect}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-card-title',[_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-magnify\",\"label\":\"Search Group Users...\",\"outlined\":\"\",\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.table.search),callback:function ($$v) {_vm.$set(_vm.table, \"search\", $$v)},expression:\"table.search\"}}),_c('v-spacer'),_c('SearchUsers',{attrs:{\"loading\":_vm.users.loading,\"items\":_vm.allUsers.items},on:{\"selected\":_vm.addUsersToGroup}})],1),_c('v-data-table',{attrs:{\"item-key\":\"email\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.users.loading,\"items\":_vm.users.items,\"headers\":_vm.table.headers,\"search\":_vm.table.search},scopedSlots:_vm._u([{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.table.actions},on:{\"edit\":function($event){return _vm.editUser(item)},\"remove-group-user\":function($event){return _vm.removeUsersFromGroup([item.pk])}}})]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <v-card-title>\n      <v-text-field\n        v-model=\"table.search\"\n        prepend-inner-icon=\"mdi-magnify\"\n        label=\"Search Group Users...\"\n        outlined\n        hide-details\n        dense\n      ></v-text-field>\n      <v-spacer></v-spacer>\n      <SearchUsers :loading=\"users.loading\" :items=\"allUsers.items\" @selected=\"addUsersToGroup\" />\n    </v-card-title>\n    <v-data-table\n      item-key=\"email\"\n      loading-text=\"Loading. Please wait...\"\n      :loading=\"users.loading\"\n      :items=\"users.items\"\n      :headers=\"table.headers\"\n      :search=\"table.search\"\n    >\n      <template v-slot:item.actions=\"{ item }\">\n        <RowActions\n          :actions=\"table.actions\"\n          @edit=\"editUser(item)\"\n          @remove-group-user=\"removeUsersFromGroup([item.pk])\"\n        />\n      </template>\n    </v-data-table>\n  </div>\n</template>\n\n<script>\nimport { hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { RowActions } from '@/spaday/components'\nimport SearchUsers from '@/spaday/components/dialogs/SearchUsers'\n\nexport default {\n  components: {\n    RowActions,\n    SearchUsers,\n  },\n  data: () => ({\n    table: {\n      search: '',\n      headers: [\n        { text: 'First Name', value: 'first_name' },\n        { text: 'Last Name', value: 'last_name' },\n        { text: 'Email', value: 'email' },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'Edit User',\n          icon: 'mdi-pencil',\n          color: 'primary',\n          permissions: ['users.change_user'],\n          emit: 'edit',\n        },\n        {\n          text: 'Remove User from Group',\n          icon: 'mdi-account-remove',\n          color: 'warning',\n          permissions: ['auth.change_group'],\n          emit: 'remove-group-user',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      object: (state) => state.groups.object,\n      users: (state) => state.groups.users,\n      allUsers: (state) => state.users.all,\n    }),\n  },\n  mounted() {\n    this.getUsers()\n    this.getGroupUsers(this.$route.params.pk)\n  },\n  beforeDestroy() {},\n  methods: {\n    hasPermission,\n    ...mapActions('users', {\n      getUsers: 'getAll',\n    }),\n    ...mapActions('groups', {\n      getGroupUsers: 'getUsers',\n      addGroupUsers: 'addUsers',\n      removeGroupUsers: 'removeUsers',\n    }),\n\n    editUser(item) {\n      this.$router.push({ name: 'ChangeUser', params: { pk: item.pk } })\n    },\n\n    addUsersToGroup(items) {\n      let ids = []\n      items.forEach(function (item) {\n        ids.push(item.pk)\n      })\n      this.addGroupUsers({ id: this.$route.params.pk, data: ids }).then(() => {\n        this.getGroupUsers(this.$route.params.pk)\n      })\n    },\n    removeUsersFromGroup(ids) {\n      this.removeGroupUsers({ id: this.$route.params.pk, data: ids })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./UserList.vue?vue&type=template&id=0fe78b58\"\nimport script from \"./UserList.vue?vue&type=script&lang=js\"\nexport * from \"./UserList.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <FormHeader\n      title=\"Update Group\"\n      :subtitle=\"object.name\"\n      btnLabel=\"Update Group\"\n      :canChange=\"hasPermission('auth.change_group')\"\n      :canDelete=\"hasPermission('auth.delete_group')\"\n      @submit=\"submit\"\n      @delete=\"preDeleteGroup(object)\"\n      :deleteLoading=\"$store.state.groups.delete.loading\"\n      :saveLoading=\"$store.state.groups.object.loading\"\n    />\n\n    <v-form ref=\"form\" :disabled=\"object.loading\" :readonly=\"!hasPermission('auth.change_group')\">\n      <v-card class=\"mb-4\" :loading=\"object.loading\">\n        <v-tabs v-model=\"tab\" grow icons-and-text slider-size=\"4\">\n          <v-tabs-slider></v-tabs-slider>\n          <template v-for=\"(item, index) in tabs\">\n            <v-tab :key=\"index\" :href=\"item.href\">\n              {{ item.text }}\n              <v-icon>{{ item.icon }}</v-icon>\n            </v-tab>\n          </template>\n        </v-tabs>\n\n        <v-divider class=\"primary\"></v-divider>\n\n        <v-tabs-items v-model=\"tab\">\n          <v-tab-item value=\"general\">\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.name\" label=\"Name\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n\n          <v-tab-item value=\"permissions\">\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"12\">\n                  <v-select\n                    v-model=\"object.permissions\"\n                    :items=\"permissions.items\"\n                    label=\"Permissions\"\n                    multiple\n                    persistent-hint\n                    hint=\"Specific permissions for this group. User specific permissions will always take precedence.\"\n                    clearable\n                    small-chips\n                    deletable-chips\n                    hide-no-data\n                    :loading=\"permissions.loading\"\n                  ></v-select>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n\n          <v-tab-item value=\"users\"> <UserList /></v-tab-item>\n        </v-tabs-items>\n        <v-divider></v-divider>\n        <v-card-actions\n          ><v-spacer></v-spacer>\n          <div class=\"caption\">\n            Group ID <strong>{{ object.pk }}</strong>\n          </div></v-card-actions\n        >\n      </v-card>\n    </v-form>\n\n    <DeleteConfirmation @confirm-delete=\"deleteGroupRedirect\" />\n  </div>\n</template>\n\n<script>\nimport { hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, FormHeader } from '@/spaday/components'\nimport UserList from '@/spaday/views/group/components/UserList'\n\nexport default {\n  components: {\n    DeleteConfirmation,\n    FormHeader,\n    UserList,\n  },\n  data: () => ({\n    rules: {\n      required: (value) => !!value || 'Required.',\n    },\n    tabs: [\n      {\n        text: 'General Info',\n        icon: 'mdi-information',\n        href: '#general',\n      },\n      {\n        text: 'Permissions',\n        icon: 'mdi-key',\n        href: '#permissions',\n      },\n      {\n        text: 'Users',\n        icon: 'mdi-account-multiple',\n        href: '#users',\n      },\n    ],\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      object: (state) => state.groups.object,\n      permissions: (state) => state.permissions.combobox,\n    }),\n    tab: {\n      set(tab) {\n        this.$router.replace({ query: { ...this.$route.query, tab } })\n      },\n      get() {\n        return this.$route.query.tab\n      },\n    },\n  },\n  mounted() {\n    this.getGroup(this.$route.params.pk)\n    this.getPermissions()\n  },\n  beforeDestroy() {\n    this.clearGroup()\n  },\n  methods: {\n    hasPermission,\n    ...mapActions('permissions', {\n      getPermissions: 'getCombobox',\n    }),\n    ...mapActions('groups', {\n      getGroup: 'get',\n      updateGroup: 'update',\n      preDeleteGroup: 'preDelete',\n      deleteGroup: 'delete',\n      clearGroup: 'clear',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      this.updateGroup({ id: this.object.pk, data: this.object }).then(() => {\n        this.$router.go(-1)\n      })\n    },\n    deleteGroupRedirect(object) {\n      this.deleteGroup(object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Update.vue?vue&type=template&id=80e61408\"\nimport script from \"./Update.vue?vue&type=script&lang=js\"\nexport * from \"./Update.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { List, Update, Create } from '@/spaday/views/group'\n\nconst routes = [\n  {\n    path: '/groups',\n    name: 'Group',\n    component: List,\n    meta: {\n      public: false,\n      permissions: ['auth.view_group'],\n    },\n  },\n  {\n    path: '/groups/add',\n    name: 'AddGroup',\n    component: Create,\n    meta: {\n      public: false,\n      permissions: ['auth.add_group'],\n    },\n  },\n  {\n    path: '/groups/:pk/change',\n    name: 'ChangeGroup',\n    component: Update,\n    meta: {\n      public: false,\n      permissions: ['auth.change_group'],\n    },\n  },\n]\n\nexport default routes\n\n// export default routes.map((route) => {\n//   const meta = {\n//     public: false,\n//   }\n//   return {\n//     ...route,\n//     meta,\n//   }\n// })\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',[_c('v-main',[_c('v-container',{attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm8\":\"\",\"md4\":\"\"}},[_c('v-card',{staticClass:\"elevation-12 mb-4\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"color\":\"primary\"}},[_c('v-img',{attrs:{\"src\":require(\"@/assets/xstudios-logo-white.svg\"),\"contain\":\"\",\"max-height\":\"25\"}})],1),_c('v-form',{ref:\"form\"},[_c('v-card-text',[_c('Toast'),_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-email\",\"name\":\"email\",\"label\":\"Email\",\"type\":\"text\",\"rules\":[_vm.rules.required],\"required\":\"\",\"autocomplete\":\"on\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.submit()}},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-lock\",\"name\":\"password\",\"label\":\"Password\",\"type\":_vm.showPass ? 'text' : 'password',\"append-icon\":_vm.showPass ? 'mdi-eye' : 'mdi-eye-off',\"rules\":[_vm.rules.required]},on:{\"click:append\":function($event){_vm.showPass = !_vm.showPass},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;$event.preventDefault();return _vm.submit()}},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"block\":\"\",\"x-large\":\"\"},on:{\"click\":_vm.submit}},[_vm._v(\" Login \")])],1)],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-app>\n    <v-main>\n      <v-container fluid fill-height>\n        <v-layout align-center justify-center>\n          <v-flex xs12 sm8 md4>\n            <v-card class=\"elevation-12 mb-4\">\n              <v-toolbar dark flat color=\"primary\">\n                <v-img src=\"@/assets/xstudios-logo-white.svg\" contain max-height=\"25\"></v-img>\n              </v-toolbar>\n              <v-form ref=\"form\">\n                <v-card-text>\n                  <Toast />\n\n                  <v-text-field\n                    prepend-inner-icon=\"mdi-email\"\n                    v-model=\"email\"\n                    name=\"email\"\n                    label=\"Email\"\n                    type=\"text\"\n                    :rules=\"[rules.required]\"\n                    required\n                    autocomplete=\"on\"\n                    @keyup.enter.prevent=\"submit()\"\n                  ></v-text-field>\n\n                  <v-text-field\n                    prepend-inner-icon=\"mdi-lock\"\n                    v-model=\"password\"\n                    name=\"password\"\n                    label=\"Password\"\n                    :type=\"showPass ? 'text' : 'password'\"\n                    :append-icon=\"showPass ? 'mdi-eye' : 'mdi-eye-off'\"\n                    @click:append=\"showPass = !showPass\"\n                    :rules=\"[rules.required]\"\n                    @keyup.enter.prevent=\"submit()\"\n                  ></v-text-field>\n                </v-card-text>\n                <v-card-actions>\n                  <v-spacer></v-spacer>\n                  <v-btn @click=\"submit\" color=\"primary\" block x-large> Login </v-btn>\n                </v-card-actions>\n              </v-form>\n            </v-card>\n            <!-- <div class=\"text-center caption\">\n              Don't have an account? <router-link :to=\"{ name: 'Register' }\">Create an account</router-link>\n            </div> -->\n          </v-flex>\n        </v-layout>\n      </v-container>\n    </v-main>\n  </v-app>\n</template>\n\n<script>\nimport { mapState, mapActions } from 'vuex'\nimport { Toast } from '@/spaday/components'\n\nexport default {\n  name: 'Login',\n  components: {\n    Toast,\n  },\n  data: () => ({\n    showPass: false,\n    email: '',\n    password: '',\n    rules: {\n      required: (value) => !!value || 'Required.',\n    },\n  }),\n  computed: {\n    ...mapState('account', ['status', 'user']),\n  },\n  mounted() {\n    // if logged in already, kick back to dashboard\n    if (this.status.loggedIn && this.user) {\n      this.$router.push({ name: 'Dashboard', params: {} })\n    }\n  },\n  methods: {\n    ...mapActions('account', ['login']),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      const { email, password } = this\n      if (email && password) {\n        this.login({ email, password })\n      }\n    },\n    clear() {\n      this.$refs.form.reset()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=31db5838\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',[_c('v-main',[_c('v-container',{attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('v-flex',{attrs:{\"xs12\":\"\",\"sm8\":\"\",\"md4\":\"\"}},[_c('v-card',{staticClass:\"elevation-12 mb-4\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"color\":\"primary\"}},[_c('v-img',{attrs:{\"src\":require(\"@/assets/xstudios-logo-white.svg\"),\"contain\":\"\",\"max-height\":\"25\"}})],1),_c('v-form',{ref:\"form\"},[_c('v-card-text',[_c('Alert'),_c('v-text-field',{attrs:{\"name\":\"first_name\",\"label\":\"First Name\",\"type\":\"text\",\"rules\":[_vm.rules.required],\"required\":\"\"},model:{value:(_vm.first_name),callback:function ($$v) {_vm.first_name=$$v},expression:\"first_name\"}}),_c('v-text-field',{attrs:{\"name\":\"last_name\",\"label\":\"Last Name\",\"type\":\"text\",\"rules\":[_vm.rules.required],\"required\":\"\"},model:{value:(_vm.last_name),callback:function ($$v) {_vm.last_name=$$v},expression:\"last_name\"}}),_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-email\",\"name\":\"email\",\"label\":\"Email\",\"type\":\"text\",\"rules\":[_vm.rules.required],\"required\":\"\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-lock\",\"type\":_vm.showPass ? 'text' : 'password',\"append-icon\":_vm.showPass ? 'mdi-eye' : 'mdi-eye-off',\"label\":\"Password\",\"rules\":[_vm.rules.required, _vm.rules.min],\"persistent-hint\":\"\",\"hint\":\"At least 8 characters\",\"counter\":\"\"},on:{\"click:append\":function($event){_vm.showPass = !_vm.showPass}},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-lock\",\"type\":_vm.showPass ? 'text' : 'password',\"append-icon\":_vm.showPass ? 'mdi-eye' : 'mdi-eye-off',\"label\":\"Password Confirmation\",\"rules\":[_vm.confirmPassword],\"persistent-hint\":\"\",\"hint\":\"Enter the same password as before, for verification.\"},on:{\"click:append\":function($event){_vm.showPass = !_vm.showPass}},model:{value:(_vm.password_confirm),callback:function ($$v) {_vm.password_confirm=$$v},expression:\"password_confirm\"}})],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"block\":\"\",\"x-large\":\"\"},on:{\"click\":_vm.submit}},[_vm._v(\" Create Account \")])],1)],1)],1),_c('div',{staticClass:\"text-center caption\"},[_vm._v(\" Already have an account? \"),_c('router-link',{attrs:{\"to\":{ name: 'Login' }}},[_vm._v(\"Sign In\")])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-app>\n    <v-main>\n      <v-container fluid fill-height>\n        <v-layout align-center justify-center>\n          <v-flex xs12 sm8 md4>\n            <v-card class=\"elevation-12 mb-4\">\n              <v-toolbar dark flat color=\"primary\">\n                <v-img src=\"@/assets/xstudios-logo-white.svg\" contain max-height=\"25\"></v-img>\n              </v-toolbar>\n              <v-form ref=\"form\">\n                <v-card-text>\n                  <Alert />\n\n                  <v-text-field\n                    v-model=\"first_name\"\n                    name=\"first_name\"\n                    label=\"First Name\"\n                    type=\"text\"\n                    :rules=\"[rules.required]\"\n                    required\n                  ></v-text-field>\n\n                  <v-text-field\n                    v-model=\"last_name\"\n                    name=\"last_name\"\n                    label=\"Last Name\"\n                    type=\"text\"\n                    :rules=\"[rules.required]\"\n                    required\n                  ></v-text-field>\n\n                  <v-text-field\n                    prepend-inner-icon=\"mdi-email\"\n                    v-model=\"email\"\n                    name=\"email\"\n                    label=\"Email\"\n                    type=\"text\"\n                    :rules=\"[rules.required]\"\n                    required\n                  ></v-text-field>\n\n                  <v-text-field\n                    prepend-inner-icon=\"mdi-lock\"\n                    :type=\"showPass ? 'text' : 'password'\"\n                    v-model=\"password\"\n                    :append-icon=\"showPass ? 'mdi-eye' : 'mdi-eye-off'\"\n                    @click:append=\"showPass = !showPass\"\n                    label=\"Password\"\n                    :rules=\"[rules.required, rules.min]\"\n                    persistent-hint\n                    hint=\"At least 8 characters\"\n                    counter\n                  ></v-text-field>\n\n                  <v-text-field\n                    prepend-inner-icon=\"mdi-lock\"\n                    :type=\"showPass ? 'text' : 'password'\"\n                    v-model=\"password_confirm\"\n                    :append-icon=\"showPass ? 'mdi-eye' : 'mdi-eye-off'\"\n                    @click:append=\"showPass = !showPass\"\n                    label=\"Password Confirmation\"\n                    :rules=\"[confirmPassword]\"\n                    persistent-hint\n                    hint=\"Enter the same password as before, for verification.\"\n                  ></v-text-field>\n                </v-card-text>\n                <v-card-actions>\n                  <v-spacer></v-spacer>\n                  <v-btn @click=\"submit\" color=\"primary\" block x-large> Create Account </v-btn>\n                </v-card-actions>\n              </v-form>\n            </v-card>\n            <div class=\"text-center caption\">\n              Already have an account? <router-link :to=\"{ name: 'Login' }\">Sign In</router-link>\n            </div>\n          </v-flex>\n        </v-layout>\n      </v-container>\n    </v-main>\n  </v-app>\n</template>\n\n<script>\n// import { mapState, mapActions } from 'vuex'\nimport { Alert } from '@/spaday/components'\n\nexport default {\n  name: 'Register',\n  components: {\n    Alert,\n  },\n  data: () => ({\n    showPass: false,\n    first_name: '',\n    last_name: '',\n    email: '',\n    password: '',\n    password_confirm: '',\n    rules: {\n      required: (value) => !!value || 'Required.',\n    },\n  }),\n  //   computed: {\n  //     ...mapState('account', ['status', 'user']),\n  //   },\n  //   mounted() {\n  //       // if logged in already, kick back to dashboard\n  //       if (this.status.loggedIn && this.user) {\n  //           this.$router.push({ name: 'Dashboard', params: {} })\n  //       }\n  //   },\n  methods: {\n    // ...mapActions('account', ['login']),\n    confirmPassword() {\n      return this.password === this.password_confirm || 'Password must match'\n    },\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      const { email, password } = this\n      if (email && password) {\n        // this.login({ email, password })\n      }\n    },\n    clear() {\n      this.$refs.form.reset()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Register.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Register.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Register.vue?vue&type=template&id=1ef81a2e\"\nimport script from \"./Register.vue?vue&type=script&lang=js\"\nexport * from \"./Register.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import Login from '@/spaday/views/auth/Login.vue'\nimport Register from '@/spaday/views/auth/Register.vue'\n\nconst routes = [\n  {\n    path: '/login',\n    name: 'Login',\n    component: Login,\n  },\n  {\n    path: '/register',\n    name: 'Register',\n    component: Register,\n  },\n]\n\nexport default routes.map((route) => {\n  const meta = {\n    public: true,\n    onlyLoggedOut: true,\n  }\n  return {\n    ...route,\n    meta,\n  }\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ListHeader',{attrs:{\"title\":\"Audit Log\",\"subtitle\":\"View log entries.\"}}),_c('v-card',[_c('v-card-title',{staticClass:\"text--primary\"},[_c('SearchField',{attrs:{\"label\":\"Search Log Entries...\"},on:{\"search\":_vm.updateSearch}})],1),_c('v-data-table',{attrs:{\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.auditlog.loading,\"items\":_vm.auditlog.items,\"headers\":_vm.logTable.headers,\"search\":_vm.logTable.search,\"footer-props\":{\n        'items-per-page-options': [10, 20, 50, 100],\n        'show-current-page': true,\n      },\"options\":_vm.logTable.options,\"server-items-length\":_vm.logTable.totalItems},on:{\"update:options\":[function($event){return _vm.$set(_vm.logTable, \"options\", $event)},_vm.getPaginatedLogs]},scopedSlots:_vm._u([{key:\"item.action\",fn:function({ item }){return [_c('v-chip',{staticClass:\"action-chip\",attrs:{\"small\":\"\",\"color\":_vm.actionColor(item.action)}},[_vm._v(_vm._s(item.action))])]}},{key:\"item.model\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.upperCaseFirst(item.model))+\" \")]}},{key:\"item.timestamp\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.localDatetime(item.timestamp))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.logTable.actions},on:{\"edit\":function($event){return _vm.editLog(item)},\"confirm-delete\":function($event){return _vm.preDeleteLog(item)}}})]}}]),model:{value:(_vm.logTable.selected),callback:function ($$v) {_vm.$set(_vm.logTable, \"selected\", $$v)},expression:\"logTable.selected\"}})],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteLog}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <ListHeader title=\"Audit Log\" subtitle=\"View log entries.\" />\n\n    <v-card>\n      <v-card-title class=\"text--primary\">\n        <SearchField label=\"Search Log Entries...\" @search=\"updateSearch\" />\n      </v-card-title>\n      <v-data-table\n        v-model=\"logTable.selected\"\n        item-key=\"pk\"\n        loading-text=\"Loading. Please wait...\"\n        :loading=\"auditlog.loading\"\n        :items=\"auditlog.items\"\n        :headers=\"logTable.headers\"\n        :search=\"logTable.search\"\n        :footer-props=\"{\n          'items-per-page-options': [10, 20, 50, 100],\n          'show-current-page': true,\n        }\"\n        :options.sync=\"logTable.options\"\n        :server-items-length=\"logTable.totalItems\"\n        @update:options=\"getPaginatedLogs\"\n      >\n        <template v-slot:item.action=\"{ item }\">\n          <v-chip class=\"action-chip\" small :color=\"actionColor(item.action)\">{{ item.action }}</v-chip>\n        </template>\n        <template v-slot:item.model=\"{ item }\">\n          {{ upperCaseFirst(item.model) }}\n        </template>\n        <template v-slot:item.timestamp=\"{ item }\">\n          {{ localDatetime(item.timestamp) }}\n        </template>\n        <template v-slot:item.actions=\"{ item }\">\n          <RowActions :actions=\"logTable.actions\" @edit=\"editLog(item)\" @confirm-delete=\"preDeleteLog(item)\" />\n        </template>\n      </v-data-table>\n    </v-card>\n\n    <DeleteConfirmation @confirm-delete=\"deleteLog\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission, upperCaseFirst, getPaginationParams } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { ListHeader, RowActions, DeleteConfirmation, SearchField } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n    DeleteConfirmation,\n    ListHeader,\n    SearchField,\n  },\n  data: () => ({\n    logTable: {\n      options: {},\n      totalItems: 0,\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'App', value: 'app' },\n        { text: 'Model', value: 'model' },\n        { text: 'Resource', value: 'object_repr' },\n        { text: 'Action', value: 'action' },\n        { text: 'Changes', value: 'changes_summary', sortable: false },\n        { text: 'User', value: 'user' },\n        { text: 'Remote Address', value: 'remote_addr' },\n        { text: 'Timestamp', value: 'timestamp' },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'View Log Entry',\n          icon: 'mdi-eye',\n          color: 'primary',\n          permissions: ['auditlog.change_logentry'],\n          emit: 'edit',\n        },\n        {\n          text: 'Delete Log Entry',\n          icon: 'mdi-trash-can-outline',\n          color: 'error',\n          permissions: ['auditlog.delete_logentry'],\n          emit: 'confirm-delete',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      auditlog: (state) => state.auditlog.all,\n    }),\n  },\n  mounted() {\n    // this.getLogs()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    getPaginationParams,\n    upperCaseFirst,\n    ...mapActions('auditlog', {\n      getLogs: 'getAll',\n      preDeleteLog: 'preDelete',\n      deleteLog: 'delete',\n    }),\n    editLog(item) {\n      this.$router.push({ name: 'ChangeAuditLog', params: { pk: item.pk } })\n    },\n    actionColor(action) {\n      if (action === 'Delete') {\n        return 'error'\n      } else if (action === 'Update') {\n        return 'warning'\n      }\n      return 'success'\n    },\n\n    /** Pagination handlers **/\n    getPaginatedLogs() {\n      const params = this.getPaginationParams(this.logTable.options, this.logTable.search)\n      this.getLogs(params).then((data) => {\n        this.logTable.totalPages = data.num_pages\n        this.logTable.totalItems = data.num_results\n      })\n    },\n    updateSearch(value) {\n      this.logTable.search = value\n      this.getPaginatedLogs()\n    },\n  },\n}\n</script>\n\n<style scoped>\n.action-chip {\n  display: block;\n  text-align: center;\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./List.vue?vue&type=template&id=830ed3a6&scoped=true\"\nimport script from \"./List.vue?vue&type=script&lang=js\"\nexport * from \"./List.vue?vue&type=script&lang=js\"\nimport style0 from \"./List.vue?vue&type=style&index=0&id=830ed3a6&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"830ed3a6\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"View Log Entry\",\"subtitle\":_vm.object.resource,\"canDelete\":_vm.hasPermission('auditlog.delete_logentry'),\"deleteLoading\":_vm.$store.state.auditlog.delete.loading},on:{\"delete\":function($event){return _vm.preDeleteLog(_vm.object)}},scopedSlots:_vm._u([{key:\"subtitle-prepend\",fn:function(){return [_c('v-chip',{attrs:{\"small\":\"\",\"color\":_vm.actionColor}},[_vm._v(_vm._s(_vm.object.action))]),_vm._v(\" \"),_c('v-chip',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.object.model))])]},proxy:true}])}),_c('v-form',{ref:\"form\",attrs:{\"disabled\":\"\",\"readonly\":true}},[_c('v-card',{staticClass:\"mb-4\",attrs:{\"loading\":_vm.object.loading}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.model,\"label\":\"Model\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.object_repr,\"label\":\"Resource\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.user,\"label\":\"User\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":`${_vm.localDatetime(_vm.object.timestamp)}`,\"label\":\"Timestamp\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.remote_addr,\"label\":\"Remote Address\"}})],1)],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-clipboard-text-clock-outline\",\"title\":\"Changes\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-data-table',{attrs:{\"hide-default-footer\":\"\",\"disable-sort\":\"\",\"headers\":_vm.headers,\"items\":_vm.object.changes}})],1)],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('div',{staticClass:\"caption\"},[_vm._v(\" Log Entry ID \"),_c('strong',[_vm._v(_vm._s(_vm.object.pk))])])],1)],1)],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteLogRedirect}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"View Log Entry\"\n      :subtitle=\"object.resource\"\n      :canDelete=\"hasPermission('auditlog.delete_logentry')\"\n      @delete=\"preDeleteLog(object)\"\n      :deleteLoading=\"$store.state.auditlog.delete.loading\"\n    >\n      <template v-slot:subtitle-prepend>\n        <v-chip small :color=\"actionColor\">{{ object.action }}</v-chip> <v-chip small>{{ object.model }}</v-chip>\n      </template></FormHeader\n    >\n\n    <v-form ref=\"form\" disabled :readonly=\"true\">\n      <v-card class=\"mb-4\" :loading=\"object.loading\">\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field :value=\"object.model\" label=\"Model\"></v-text-field>\n            </v-col>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field :value=\"object.object_repr\" label=\"Resource\"></v-text-field>\n            </v-col>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field :value=\"object.user\" label=\"User\"></v-text-field>\n            </v-col>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field :value=\"`${localDatetime(object.timestamp)}`\" label=\"Timestamp\"></v-text-field>\n            </v-col>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field :value=\"object.remote_addr\" label=\"Remote Address\"></v-text-field>\n            </v-col>\n          </v-row>\n        </v-card-text>\n\n        <CardSubheader icon=\"mdi-clipboard-text-clock-outline\" title=\"Changes\" />\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\">\n              <v-data-table hide-default-footer disable-sort :headers=\"headers\" :items=\"object.changes\"></v-data-table>\n            </v-col>\n          </v-row>\n        </v-card-text>\n\n        <v-divider></v-divider>\n        <v-card-actions\n          ><v-spacer></v-spacer>\n          <div class=\"caption\">\n            Log Entry ID <strong>{{ object.pk }}</strong>\n          </div></v-card-actions\n        >\n      </v-card>\n    </v-form>\n\n    <DeleteConfirmation @confirm-delete=\"deleteLogRedirect\" />\n  </div>\n</template>\n\n<script>\nimport { hasPermission, localDatetime } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, FormHeader, CardSubheader } from '@/spaday/components'\n\nexport default {\n  components: {\n    DeleteConfirmation,\n    FormHeader,\n    CardSubheader,\n  },\n  data: () => ({\n    headers: [\n      { text: '#', value: '#' },\n      { text: 'Field', value: 'field' },\n      { text: 'From', value: 'from' },\n      { text: 'To', value: 'to' },\n    ],\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      object: (state) => state.auditlog.object,\n    }),\n    actionColor() {\n      if (this.object.action === 'Delete') {\n        return 'error'\n      } else if (this.object.action === 'Update') {\n        return 'warning'\n      }\n      return 'success'\n    },\n  },\n  mounted() {\n    this.getLog(this.$route.params.pk)\n  },\n  beforeDestroy() {\n    this.clearLog()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    ...mapActions('auditlog', {\n      getLog: 'get',\n      updateLog: 'update',\n      preDeleteLog: 'preDelete',\n      deleteLog: 'delete',\n      clearLog: 'clear',\n    }),\n    deleteLogRedirect(object) {\n      this.deleteLog(object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Update.vue?vue&type=template&id=49d94b66\"\nimport script from \"./Update.vue?vue&type=script&lang=js\"\nexport * from \"./Update.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { List, Update } from '@/spaday/views/auditlog'\n\nconst routes = [\n  {\n    path: '/auditlog',\n    name: 'AuditLog',\n    component: List,\n    meta: {\n      public: false,\n      permissions: ['auditlog.view_logentry'],\n    },\n  },\n  {\n    path: '/auditlog/:pk/change',\n    name: 'ChangeAuditLog',\n    component: Update,\n    meta: {\n      public: false,\n      permissions: ['auditlog.change_logentry'],\n    },\n  },\n]\n\nexport default routes\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ListHeader',{attrs:{\"title\":\"Celery Task Results\",\"subtitle\":\"View task results.\"}}),_c('v-card',[_c('v-card-title',{staticClass:\"text--primary\"},[_c('SearchField',{attrs:{\"label\":\"Search Task Results...\"},on:{\"search\":_vm.updateSearch}})],1),_c('v-data-table',{attrs:{\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.taskresults.loading,\"items\":_vm.taskresults.items,\"headers\":_vm.taskTable.headers,\"search\":_vm.taskTable.search,\"footer-props\":{\n        'items-per-page-options': [10, 20, 50, 100],\n        'show-current-page': true,\n      },\"options\":_vm.taskTable.options,\"server-items-length\":_vm.taskTable.totalItems},on:{\"update:options\":[function($event){return _vm.$set(_vm.taskTable, \"options\", $event)},_vm.getPaginatedTasks]},scopedSlots:_vm._u([{key:\"item.status\",fn:function({ item }){return [_c('v-chip',{staticClass:\"action-chip\",attrs:{\"small\":\"\",\"color\":_vm.statusColor(item.status)}},[_vm._v(_vm._s(item.status))])]}},{key:\"item.model\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.upperCaseFirst(item.model))+\" \")]}},{key:\"item.date_done\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.localDatetime(item.date_done))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.taskTable.actions},on:{\"edit\":function($event){return _vm.editTaskResult(item)},\"confirm-delete\":function($event){return _vm.preDeleteTaskResult(item)}}})]}}]),model:{value:(_vm.taskTable.selected),callback:function ($$v) {_vm.$set(_vm.taskTable, \"selected\", $$v)},expression:\"taskTable.selected\"}})],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteTaskResult}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <ListHeader title=\"Celery Task Results\" subtitle=\"View task results.\" />\n\n    <v-card>\n      <v-card-title class=\"text--primary\">\n        <SearchField label=\"Search Task Results...\" @search=\"updateSearch\" />\n      </v-card-title>\n      <v-data-table\n        v-model=\"taskTable.selected\"\n        item-key=\"pk\"\n        loading-text=\"Loading. Please wait...\"\n        :loading=\"taskresults.loading\"\n        :items=\"taskresults.items\"\n        :headers=\"taskTable.headers\"\n        :search=\"taskTable.search\"\n        :footer-props=\"{\n          'items-per-page-options': [10, 20, 50, 100],\n          'show-current-page': true,\n        }\"\n        :options.sync=\"taskTable.options\"\n        :server-items-length=\"taskTable.totalItems\"\n        @update:options=\"getPaginatedTasks\"\n      >\n        <template v-slot:item.status=\"{ item }\">\n          <v-chip class=\"action-chip\" small :color=\"statusColor(item.status)\">{{ item.status }}</v-chip>\n        </template>\n        <template v-slot:item.model=\"{ item }\">\n          {{ upperCaseFirst(item.model) }}\n        </template>\n        <template v-slot:item.date_done=\"{ item }\">\n          {{ localDatetime(item.date_done) }}\n        </template>\n        <template v-slot:item.actions=\"{ item }\">\n          <RowActions\n            :actions=\"taskTable.actions\"\n            @edit=\"editTaskResult(item)\"\n            @confirm-delete=\"preDeleteTaskResult(item)\"\n          />\n        </template>\n      </v-data-table>\n    </v-card>\n\n    <DeleteConfirmation @confirm-delete=\"deleteTaskResult\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission, upperCaseFirst, getPaginationParams } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { ListHeader, RowActions, DeleteConfirmation, SearchField } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n    DeleteConfirmation,\n    ListHeader,\n    SearchField,\n  },\n  data: () => ({\n    taskTable: {\n      options: {},\n      totalItems: 0,\n      search: '',\n      selected: [],\n      headers: [\n        // { text: 'Task ID', value: 'task_id', sortable: false },\n        { text: 'Periodic Task Name', value: 'periodic_task_name' },\n        { text: 'Task Name', value: 'task_name' },\n        { text: 'Status', value: 'status' },\n        { text: 'Completed', value: 'date_done' },\n        { text: 'Worker', value: 'worker' },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'View Task Result',\n          icon: 'mdi-eye',\n          color: 'primary',\n          permissions: ['django_celery_results.change_taskresult'],\n          emit: 'edit',\n        },\n        {\n          text: 'Delete Task Result',\n          icon: 'mdi-trash-can-outline',\n          color: 'error',\n          permissions: ['django_celery_results.delete_taskresult'],\n          emit: 'confirm-delete',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      taskresults: (state) => state.taskresults.all,\n    }),\n  },\n  mounted() {\n    // this.getTaskResults()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    getPaginationParams,\n    upperCaseFirst,\n    ...mapActions('taskresults', {\n      getTaskResults: 'getAll',\n      preDeleteTaskResult: 'preDelete',\n      deleteTaskResult: 'delete',\n    }),\n    editTaskResult(item) {\n      this.$router.push({ name: 'ChangeTaskResult', params: { pk: item.pk } })\n    },\n    statusColor(action) {\n      if (action === 'FAILURE') {\n        return 'error'\n      } else if (action === 'SUCCESS') {\n        return 'success'\n      }\n      return 'warning'\n    },\n\n    /** Pagination handlers **/\n    getPaginatedTasks() {\n      const params = this.getPaginationParams(this.taskTable.options, this.taskTable.search)\n      this.getTaskResults(params).then((data) => {\n        this.taskTable.totalPages = data.num_pages\n        this.taskTable.totalItems = data.num_results\n      })\n    },\n    updateSearch(value) {\n      this.taskTable.search = value\n      this.getPaginatedTasks()\n    },\n  },\n}\n</script>\n\n<style scoped>\n.action-chip {\n  display: block;\n  text-align: center;\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./List.vue?vue&type=template&id=1de046b6&scoped=true\"\nimport script from \"./List.vue?vue&type=script&lang=js\"\nexport * from \"./List.vue?vue&type=script&lang=js\"\nimport style0 from \"./List.vue?vue&type=style&index=0&id=1de046b6&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"1de046b6\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"View Task Result\",\"subtitle\":_vm.object.task_id,\"canDelete\":_vm.hasPermission('django_celery_results.delete_taskresult'),\"deleteLoading\":_vm.$store.state.taskresults.delete.loading},on:{\"delete\":function($event){return _vm.preDeleteTaskResult(_vm.object)}},scopedSlots:_vm._u([{key:\"subtitle-prepend\",fn:function(){return [_c('v-chip',{attrs:{\"small\":\"\",\"color\":_vm.statusColor}},[_vm._v(_vm._s(_vm.object.status))])]},proxy:true}])}),_c('v-form',{ref:\"form\",attrs:{\"disabled\":_vm.object.loading,\"readonly\":true}},[_c('v-card',{staticClass:\"mb-4\",attrs:{\"loading\":_vm.object.loading}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.task_id,\"label\":\"Task ID\",\"hint\":\"Celery ID for the Task that was run\",\"persistent-hint\":\"\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.task_name,\"label\":\"Task Name\",\"hint\":\"Name of the Task which was run\",\"persistent-hint\":\"\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.status,\"label\":\"Task State\",\"hint\":\"Current state of the task being run\",\"persistent-hint\":\"\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.worker,\"label\":\"Worker\",\"hint\":\"Worker that executes the task\",\"persistent-hint\":\"\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.content_type,\"label\":\"Result Content Type\",\"hint\":\"Content type of the result data\",\"persistent-hint\":\"\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.content_encoding,\"label\":\"Result Encoding\",\"hint\":\"The encoding used to save the task result data\",\"persistent-hint\":\"\"}})],1)],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-variable\",\"title\":\"Parameters\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.task_args,\"label\":\"Task Positional Arguments\",\"hint\":\"JSON representation of the positional arguments used with the task\",\"persistent-hint\":\"\"}})],1),(_vm.object.task_kwargs !== '{}')?_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.task_kwargs,\"label\":\"Task Named Arguments\",\"hint\":\"JSON representation of the named arguments used with the task\",\"persistent-hint\":\"\"}})],1):_vm._e()],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-clipboard-text-clock-outline\",\"title\":\"Result\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('v-text-field',{attrs:{\"value\":`${_vm.localDatetime(_vm.object.date_done)}`,\"label\":\"Completed DateTime\",\"hint\":\"Datetime when the task was completed\",\"persistent-hint\":\"\"}})],1),(_vm.object.result !== 'null')?_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.result,\"label\":\"Task Result\",\"hint\":\"The data returned by the task. Use content_encoding and content_type fields to read.\",\"persistent-hint\":\"\"}})],1):_vm._e(),(_vm.object.traceback)?_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('v-textarea',{attrs:{\"value\":_vm.object.traceback,\"label\":\"Traceback\",\"hint\":\"Text of the traceback if the task generated one\",\"persistent-hint\":\"\"}})],1):_vm._e(),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"12\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.meta,\"label\":\"Task Meta Information\",\"hint\":\"JSON meta information about the task, such as information on child tasks\",\"persistent-hint\":\"\"}})],1)],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('div',{staticClass:\"caption\"},[_vm._v(\" Task Result ID \"),_c('strong',[_vm._v(_vm._s(_vm.object.pk))])])],1)],1)],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteTaskResultRedirect}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"View Task Result\"\n      :subtitle=\"object.task_id\"\n      :canDelete=\"hasPermission('django_celery_results.delete_taskresult')\"\n      @delete=\"preDeleteTaskResult(object)\"\n      :deleteLoading=\"$store.state.taskresults.delete.loading\"\n    >\n      <template v-slot:subtitle-prepend>\n        <v-chip small :color=\"statusColor\">{{ object.status }}</v-chip>\n        <!-- <v-chip small>{{ object.model }}</v-chip> -->\n      </template></FormHeader\n    >\n\n    <v-form ref=\"form\" :disabled=\"object.loading\" :readonly=\"true\">\n      <v-card class=\"mb-4\" :loading=\"object.loading\">\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field\n                :value=\"object.task_id\"\n                label=\"Task ID\"\n                hint=\"Celery ID for the Task that was run\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field\n                :value=\"object.task_name\"\n                label=\"Task Name\"\n                hint=\"Name of the Task which was run\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field\n                :value=\"object.status\"\n                label=\"Task State\"\n                hint=\"Current state of the task being run\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field\n                :value=\"object.worker\"\n                label=\"Worker\"\n                hint=\"Worker that executes the task\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field\n                :value=\"object.content_type\"\n                label=\"Result Content Type\"\n                hint=\"Content type of the result data\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field\n                :value=\"object.content_encoding\"\n                label=\"Result Encoding\"\n                hint=\"The encoding used to save the task result data\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n          </v-row>\n        </v-card-text>\n\n        <CardSubheader icon=\"mdi-variable\" title=\"Parameters\" />\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\">\n              <v-text-field\n                :value=\"object.task_args\"\n                label=\"Task Positional Arguments\"\n                hint=\"JSON representation of the positional arguments used with the task\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n            <v-col v-if=\"object.task_kwargs !== '{}'\" cols=\"12\">\n              <v-text-field\n                :value=\"object.task_kwargs\"\n                label=\"Task Named Arguments\"\n                hint=\"JSON representation of the named arguments used with the task\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n          </v-row>\n        </v-card-text>\n\n        <CardSubheader icon=\"mdi-clipboard-text-clock-outline\" title=\"Result\" />\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\" md=\"4\">\n              <v-text-field\n                :value=\"`${localDatetime(object.date_done)}`\"\n                label=\"Completed DateTime\"\n                hint=\"Datetime when the task was completed\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n\n            <v-col v-if=\"object.result !== 'null'\" cols=\"12\" md=\"12\">\n              <v-text-field\n                :value=\"object.result\"\n                label=\"Task Result\"\n                hint=\"The data returned by the task. Use content_encoding and content_type fields to read.\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n\n            <v-col v-if=\"object.traceback\" cols=\"12\" md=\"12\">\n              <v-textarea\n                :value=\"object.traceback\"\n                label=\"Traceback\"\n                hint=\"Text of the traceback if the task generated one\"\n                persistent-hint\n              ></v-textarea>\n            </v-col>\n            <v-col cols=\"12\" md=\"12\">\n              <v-text-field\n                :value=\"object.meta\"\n                label=\"Task Meta Information\"\n                hint=\"JSON meta information about the task, such as information on child tasks\"\n                persistent-hint\n              ></v-text-field>\n            </v-col>\n          </v-row>\n        </v-card-text>\n\n        <v-divider></v-divider>\n        <v-card-actions\n          ><v-spacer></v-spacer>\n          <div class=\"caption\">\n            Task Result ID <strong>{{ object.pk }}</strong>\n          </div></v-card-actions\n        >\n      </v-card>\n    </v-form>\n\n    <DeleteConfirmation @confirm-delete=\"deleteTaskResultRedirect\" />\n  </div>\n</template>\n\n<script>\nimport { hasPermission, localDatetime } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, FormHeader, CardSubheader } from '@/spaday/components'\n\nexport default {\n  components: {\n    DeleteConfirmation,\n    FormHeader,\n    CardSubheader,\n  },\n  data: () => ({\n    headers: [\n      {\n        text: '#',\n        value: '#',\n      },\n      {\n        text: 'Field',\n        value: 'field',\n      },\n      {\n        text: 'From',\n        value: 'from',\n      },\n      {\n        text: 'To',\n        value: 'to',\n      },\n    ],\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      object: (state) => state.taskresults.object,\n    }),\n    statusColor() {\n      if (this.object.status === 'FAILURE') {\n        return 'error'\n      } else if (this.object.status === 'SUCCESS') {\n        return 'success'\n      }\n      return 'warning'\n    },\n  },\n  mounted() {\n    this.getTaskResult(this.$route.params.pk)\n  },\n  beforeDestroy() {\n    this.clearTaskResult()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    ...mapActions('taskresults', {\n      getTaskResult: 'get',\n      updateTaskResult: 'update',\n      preDeleteTaskResult: 'preDelete',\n      deleteTaskResult: 'delete',\n      clearTaskResult: 'clear',\n    }),\n    deleteTaskResultRedirect(object) {\n      this.deleteTaskResult(object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Update.vue?vue&type=template&id=1b518690\"\nimport script from \"./Update.vue?vue&type=script&lang=js\"\nexport * from \"./Update.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { List, Update } from '@/spaday/views/taskresult'\n\nconst routes = [\n  {\n    path: '/taskresults',\n    name: 'TaskResult',\n    component: List,\n    meta: {\n      public: false,\n      permissions: ['django_celery_results.view_taskresult'],\n    },\n  },\n  {\n    path: '/taskresults/:pk/change',\n    name: 'ChangeTaskResult',\n    component: Update,\n    meta: {\n      public: false,\n      permissions: ['django_celery_results.change_taskresult'],\n    },\n  },\n]\n\nexport default routes\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app',[_c('div',[_c('SideNav',{attrs:{\"items\":_vm.sidenavItems}}),_c('Header'),_c('v-main',[_c('v-container',{attrs:{\"fluid\":\"\"}},[_c('Alert'),_c('router-view')],1)],1),_c('v-footer',{attrs:{\"app\":\"\",\"dark\":\"\"}},[_c('Footer')],1),_c('Toast')],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-app-bar',{attrs:{\"app\":\"\",\"dark\":\"\",\"clipped-left\":\"\"}},[_c('v-img',{attrs:{\"src\":require(\"@/assets/x-logo-gradient.png\"),\"contain\":\"\",\"max-height\":\"30\",\"max-width\":\"30\"}}),_c('v-toolbar-title',{staticClass:\"ml-2\"},[_vm._v(\" \"+_vm._s(_vm.projectName)+\" \")]),_c('v-spacer'),_c('v-toolbar-items',{staticClass:\"hidden-sm-and-down\"},[(_vm.status.loggedIn)?_c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: menu, attrs }){return [_c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: tooltip }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"depressed\":\"\"}},'v-btn',attrs,false),{ ...tooltip, ...menu }),[_c('v-avatar',{attrs:{\"color\":\"secondary\"}},[(_vm.user.initials)?_c('span',{staticClass:\"text-h6\"},[_vm._v(_vm._s(_vm.user.initials))]):_c('v-icon',[_vm._v(\"mdi-account\")])],1)],1)]}}],null,true)},[_c('span',[_vm._v(\"Account\")])])]}}],null,false,1787150599)},[_c('DenseList',{attrs:{\"items\":_vm.actions},on:{\"logout\":function($event){return _vm.logout()}},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-list-item',{staticClass:\"px-2\",attrs:{\"two-line\":\"\"}},[_c('v-list-item-avatar',{attrs:{\"color\":\"secondary\"}},[(_vm.user.initials)?_c('span',[_vm._v(_vm._s(_vm.user.initials))]):_c('v-icon',[_vm._v(\"mdi-account\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.user.first_name)+\" \"+_vm._s(_vm.user.last_name))]),(_vm.user.is_superuser)?_c('v-list-item-subtitle',[_vm._v(\"Superuser\")]):_vm._e()],1)],1),_c('v-divider',{staticClass:\"mb-1\"}),_c('v-list-item',{attrs:{\"dense\":\"\"}},[_c('v-switch',{attrs:{\"dense\":\"\",\"value\":_vm.darkMode,\"inset\":\"\"},on:{\"change\":_vm.toggleTheme},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('span',{staticClass:\"dense\"},[_vm._v(\" Dark Mode\")])]},proxy:true}],null,false,1916675200)})],1),_c('v-divider',{staticClass:\"mb-1\"})]},proxy:true}],null,false,2837629537)})],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-app-bar app dark clipped-left>\n    <v-img src=\"@/assets/x-logo-gradient.png\" contain max-height=\"30\" max-width=\"30\"></v-img>\n    <v-toolbar-title class=\"ml-2\"> {{ projectName }} </v-toolbar-title>\n\n    <v-spacer></v-spacer>\n    <v-toolbar-items class=\"hidden-sm-and-down\">\n      <v-menu offset-y v-if=\"status.loggedIn\" :close-on-content-click=\"false\">\n        <template v-slot:activator=\"{ on: menu, attrs }\">\n          <v-tooltip bottom>\n            <template v-slot:activator=\"{ on: tooltip }\">\n              <v-btn depressed v-bind=\"attrs\" v-on=\"{ ...tooltip, ...menu }\">\n                <v-avatar color=\"secondary\"\n                  ><span v-if=\"user.initials\" class=\"text-h6\">{{ user.initials }}</span>\n                  <v-icon v-else>mdi-account</v-icon></v-avatar\n                >\n              </v-btn>\n            </template>\n            <span>Account</span>\n          </v-tooltip>\n        </template>\n\n        <DenseList :items=\"actions\" @logout=\"logout()\">\n          <template v-slot:prepend>\n            <v-list-item two-line class=\"px-2\">\n              <v-list-item-avatar color=\"secondary\">\n                <span v-if=\"user.initials\">{{ user.initials }}</span>\n                <v-icon v-else>mdi-account</v-icon>\n              </v-list-item-avatar>\n\n              <v-list-item-content>\n                <v-list-item-title>{{ user.first_name }} {{ user.last_name }}</v-list-item-title>\n                <v-list-item-subtitle v-if=\"user.is_superuser\">Superuser</v-list-item-subtitle>\n              </v-list-item-content>\n            </v-list-item>\n            <v-divider class=\"mb-1\"></v-divider>\n            <v-list-item dense>\n              <v-switch dense :value=\"darkMode\" @change=\"toggleTheme\" inset>\n                <template v-slot:label><span class=\"dense\"> Dark Mode</span></template>\n              </v-switch>\n            </v-list-item>\n            <v-divider class=\"mb-1\"></v-divider>\n          </template>\n        </DenseList>\n      </v-menu>\n    </v-toolbar-items>\n  </v-app-bar>\n</template>\n\n<script>\nimport { VERSION, PROJECT_NAME } from '@/constants'\nimport { mapState, mapActions } from 'vuex'\nimport { hasPermission, hasAnyPermission } from '@/spaday/helpers'\nimport { DenseList } from '@/spaday/components'\n\nexport default {\n  name: 'Header',\n  components: {\n    DenseList,\n  },\n  props: {\n    version: { type: String, default: VERSION },\n    projectName: { type: String, default: PROJECT_NAME },\n  },\n  data: () => ({\n    actions: [\n      {\n        text: 'Logout',\n        icon: 'mdi-logout',\n        color: 'error',\n        permissions: [],\n        emit: 'logout',\n      },\n      //   {\n      //     divider: true,\n      //   },\n      //   {\n      //     header: 'Internal Tools',\n      //   },\n      //   {\n      //     text: 'Xapp Admin',\n      //     icon: 'mdi-open-in-new',\n      //     color: '',\n      //     permissions: [],\n      //     emit: 'open-xapp',\n      //   },\n      //    {\n      //     text: 'X Enterprise Admin',\n      //     icon: 'mdi-open-in-new',\n      //     color: '',\n      //     permissions: [],\n      //     emit: 'open-xapp',\n      //   },\n    ],\n  }),\n  computed: {\n    ...mapState('account', ['status', 'user']),\n    ...mapState('preferences', ['darkMode']),\n  },\n  methods: {\n    hasPermission,\n    hasAnyPermission,\n    ...mapActions('account', ['logout']),\n    ...mapActions('preferences', ['toggleDarkMode']),\n    toggleTheme() {\n      this.toggleDarkMode()\n    },\n  },\n}\n</script>\n\n<style scss scoped>\n.theme--dark .dense {\n  font-size: 13px;\n  font-weight: 500;\n  color: white;\n}\n\n.theme--light .dense {\n  font-size: 13px;\n  font-weight: 500;\n  color: black;\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Header.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Header.vue?vue&type=template&id=716e7f1e&scoped=true\"\nimport script from \"./Header.vue?vue&type=script&lang=js\"\nexport * from \"./Header.vue?vue&type=script&lang=js\"\nimport style0 from \"./Header.vue?vue&type=style&index=0&id=716e7f1e&prod&scss=true&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"716e7f1e\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-layout',{staticClass:\"justify-end\"},[_c('small',[_vm._v(\"Made with \"),_c('v-icon',{attrs:{\"x-small\":\"\",\"color\":\"red\"}},[_vm._v(\"mdi-heart\")]),_vm._v(\" by \"),_c('a',{staticClass:\"link\",attrs:{\"href\":\"https://xstudios.com/\",\"target\":\"_blank\"}},[_vm._v(\"X Studios™\")]),_vm._v(\" in Winter Park, FL.\")],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=8cd0504e&scoped=true\"\nvar script = {}\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=8cd0504e&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"8cd0504e\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-navigation-drawer',{attrs:{\"app\":\"\",\"permanent\":\"\",\"dark\":\"\",\"mini-variant\":_vm.mini,\"clipped\":\"\",\"width\":\"310\"},on:{\"update:miniVariant\":function($event){_vm.mini=$event},\"update:mini-variant\":function($event){_vm.mini=$event}},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-list-item',{staticClass:\"px-2\",attrs:{\"two-line\":\"\"}},[_c('v-list-item-avatar',{attrs:{\"color\":\"secondary\"}},[(_vm.user.initials)?_c('span',[_vm._v(_vm._s(_vm.user.initials))]):_c('v-icon',[_vm._v(\"mdi-account\")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_vm.user.first_name)+\" \"+_vm._s(_vm.user.last_name))]),(_vm.user.is_superuser)?_c('v-list-item-subtitle',[_vm._v(\"Superuser\")]):_vm._e()],1),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();_vm.mini = !_vm.mini}}},[_c('v-icon',[_vm._v(\"mdi-chevron-left\")])],1)],1)]},proxy:true},{key:\"append\",fn:function(){return undefined},proxy:true}]),model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('v-divider'),_c('v-list',{attrs:{\"dense\":\"\",\"nav\":\"\"}},[_vm._l((_vm.items),function(item,index){return [(!item.items && item.icon && _vm.hasAnyPermission(item.meta.permissions))?_c('v-list-item',{key:item.title,attrs:{\"to\":item.to}},[_c('v-list-item-action',[_c('v-icon',[_vm._v(_vm._s(item.icon))])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.title))])],1)],1):(item.items)?_c('v-list-group',{key:item.title,attrs:{\"prepend-icon\":item.icon,\"no-action\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(item.title)}})],1)]},proxy:true}],null,true),model:{value:(item.active),callback:function ($$v) {_vm.$set(item, \"active\", $$v)},expression:\"item.active\"}},_vm._l((item.items),function(child){return _c('v-list-item',{key:child.title,attrs:{\"link\":\"\",\"to\":child.to}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(child.title)+\" \"),(child.chip)?_c('v-chip',{staticStyle:{\"float\":\"right\"},attrs:{\"x-small\":\"\"}},[_vm._v(\"0\")]):_vm._e()],1)],1)],1)}),1):(item.divider)?_c('v-divider',{key:index,staticClass:\"my-2\"}):(item.header && !_vm.mini)?_c('v-subheader',{key:`${item.header}${index}`},[_vm._v(\" \"+_vm._s(item.header)+\" \")]):_vm._e()]})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-navigation-drawer app permanent dark v-model=\"drawer\" :mini-variant.sync=\"mini\" clipped width=\"310\">\n    <template v-slot:prepend>\n      <v-list-item two-line class=\"px-2\">\n        <v-list-item-avatar color=\"secondary\">\n          <span v-if=\"user.initials\">{{ user.initials }}</span>\n          <v-icon v-else>mdi-account</v-icon>\n        </v-list-item-avatar>\n\n        <v-list-item-content>\n          <v-list-item-title>{{ user.first_name }} {{ user.last_name }}</v-list-item-title>\n          <v-list-item-subtitle v-if=\"user.is_superuser\">Superuser</v-list-item-subtitle>\n        </v-list-item-content>\n        <v-btn icon @click.stop=\"mini = !mini\">\n          <v-icon>mdi-chevron-left</v-icon>\n        </v-btn>\n      </v-list-item>\n    </template>\n\n    <v-divider></v-divider>\n\n    <v-list dense nav>\n      <template v-for=\"(item, index) in items\">\n        <v-list-item\n          v-if=\"!item.items && item.icon && hasAnyPermission(item.meta.permissions)\"\n          :to=\"item.to\"\n          :key=\"item.title\"\n        >\n          <v-list-item-action>\n            <v-icon>{{ item.icon }}</v-icon>\n          </v-list-item-action>\n\n          <v-list-item-content>\n            <v-list-item-title>{{ item.title }}</v-list-item-title>\n          </v-list-item-content>\n        </v-list-item>\n\n        <v-list-group\n          v-else-if=\"item.items\"\n          :key=\"item.title\"\n          v-model=\"item.active\"\n          :prepend-icon=\"item.icon\"\n          no-action\n        >\n          <template v-slot:activator>\n            <v-list-item-content>\n              <v-list-item-title v-text=\"item.title\"></v-list-item-title>\n            </v-list-item-content>\n          </template>\n\n          <v-list-item v-for=\"child in item.items\" :key=\"child.title\" link :to=\"child.to\">\n            <v-list-item-content>\n              <v-list-item-title\n                >{{ child.title }} <v-chip v-if=\"child.chip\" x-small style=\"float: right\">0</v-chip></v-list-item-title\n              >\n            </v-list-item-content>\n          </v-list-item>\n        </v-list-group>\n\n        <v-divider v-else-if=\"item.divider\" :key=\"index\" class=\"my-2\"></v-divider>\n\n        <v-subheader v-else-if=\"item.header && !mini\" :key=\"`${item.header}${index}`\">\n          {{ item.header }}\n        </v-subheader>\n      </template>\n    </v-list>\n\n    <template v-slot:append> </template>\n  </v-navigation-drawer>\n</template>\n\n<script>\nimport { mapState } from 'vuex'\nimport { hasAnyPermission } from '@/spaday/helpers'\n\nexport default {\n  props: {\n    items: { type: Array },\n  },\n  data: () => ({\n    drawer: true,\n    mini: true,\n  }),\n  computed: {\n    ...mapState('account', ['status', 'user']),\n  },\n  methods: {\n    hasAnyPermission,\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideNav.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SideNav.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SideNav.vue?vue&type=template&id=8871568c\"\nimport script from \"./SideNav.vue?vue&type=script&lang=js\"\nexport * from \"./SideNav.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <v-app>\n    <div>\n      <SideNav :items=\"sidenavItems\" />\n\n      <Header />\n\n      <v-main>\n        <v-container fluid>\n          <Alert />\n          <router-view></router-view>\n        </v-container>\n      </v-main>\n\n      <v-footer app dark>\n        <Footer />\n      </v-footer>\n\n      <Toast />\n    </div>\n  </v-app>\n</template>\n\n<script>\nimport { SIDENAV } from '@/constants'\nimport { mapActions } from 'vuex'\nimport { Header, Footer, SideNav } from '@/spaday/components/layout'\nimport { Alert, Toast } from '@/spaday/components'\n\nexport default {\n  name: 'App',\n  components: {\n    Alert,\n    Footer,\n    Header,\n    SideNav,\n    Toast,\n  },\n  data: () => ({\n    sidenavItems: SIDENAV,\n  }),\n  methods: {\n    ...mapActions({\n      clearAlert: 'alert/clear',\n    }),\n  },\n  watch: {\n    $route() {\n      this.clearAlert()\n    },\n  },\n}\n</script>\n\n<style lang=\"scss\">\n.theme--light.v-data-table tbody tr:nth-of-type(even) {\n  background-color: rgba(0, 0, 0, 0.03);\n}\n.theme--dark.v-data-table tbody tr:nth-of-type(even) {\n  background-color: rgba(0, 0, 0, 0.5);\n}\n.disabled {\n  pointer-events: none;\n  opacity: 0.3;\n}\n</style>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminBase.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminBase.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AdminBase.vue?vue&type=template&id=27e49634\"\nimport script from \"./AdminBase.vue?vue&type=script&lang=js\"\nexport * from \"./AdminBase.vue?vue&type=script&lang=js\"\nimport style0 from \"./AdminBase.vue?vue&type=style&index=0&id=27e49634&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{attrs:{\"fluid\":\"\",\"fill-height\":\"\"}},[_c('v-layout',{attrs:{\"align-center\":\"\",\"justify-center\":\"\"}},[_c('div',{staticClass:\"text-center\"},[_c('v-icon',{attrs:{\"x-large\":\"\"}},[_vm._v(\"mdi-tab-search\")]),_c('h1',[_vm._v(\"Something's wrong here.\")]),_c('p',[_vm._v(\"This is a 404 error, which means you've clicked on a bad link or entered an invalid URL.\")]),_c('v-btn',{attrs:{\"color\":\"primary\",\"x-large\":\"\",\"to\":{ name: 'Login' }}},[_vm._v(\"Get me Back on Track\")])],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./PageNotFound.vue?vue&type=template&id=00e4e725&scoped=true\"\nvar script = {}\nimport style0 from \"./PageNotFound.vue?vue&type=style&index=0&id=00e4e725&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"00e4e725\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Create Company\",\"subtitle\":_vm.object.name,\"btnLabel\":\"Save Company\",\"canAdd\":_vm.hasPermission('core.add_company'),\"saveLoading\":_vm.$store.state.companies.object.loading},on:{\"submit\":_vm.submit}}),_c('v-form',{ref:\"form\"},[_c('v-card',{staticClass:\"mb-4\"},[_c('v-tabs',{attrs:{\"grow\":\"\",\"icons-and-text\":\"\",\"slider-size\":\"4\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(item,index){return [_c('v-tab',{key:index,attrs:{\"href\":item.href}},[_vm._v(\" \"+_vm._s(item.text)+\" \"),_c('v-icon',[_vm._v(_vm._s(item.icon))])],1)]})],2),_c('v-divider',{staticClass:\"primary\"}),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{attrs:{\"value\":\"general\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.name),callback:function ($$v) {_vm.$set(_vm.object, \"name\", $$v)},expression:\"object.name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-file-input',{attrs:{\"rules\":[_vm.rules.value],\"show-size\":\"\",\"small-chips\":\"\",\"prepend-icon\":\"mdi-image\",\"accept\":\"image/png, image/jpeg, image/jpg\",\"label\":\"Logo\"},model:{value:(_vm.object.logo),callback:function ($$v) {_vm.$set(_vm.object, \"logo\", $$v)},expression:\"object.logo\"}})],1)],1)],1)],1),_c('v-tab-item',{attrs:{\"value\":\"brand\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"3\",\"sm\":\"6\"}},[_c('label',[_vm._v(\"Primary Color\")]),_c('v-color-picker',{attrs:{\"dot-size\":\"15\",\"mode\":\"hexa\"},model:{value:(_vm.object.primary_color),callback:function ($$v) {_vm.$set(_vm.object, \"primary_color\", $$v)},expression:\"object.primary_color\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"3\",\"sm\":\"6\"}},[_c('label',[_vm._v(\"Secondary Color\")]),_c('v-color-picker',{attrs:{\"dot-size\":\"15\",\"mode\":\"hexa\"},model:{value:(_vm.object.secondary_color),callback:function ($$v) {_vm.$set(_vm.object, \"secondary_color\", $$v)},expression:\"object.secondary_color\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"3\",\"sm\":\"6\"}},[_c('label',[_vm._v(\"Primary Button Color\")]),_c('v-color-picker',{attrs:{\"dot-size\":\"15\",\"mode\":\"hexa\"},model:{value:(_vm.object.primary_btn_color),callback:function ($$v) {_vm.$set(_vm.object, \"primary_btn_color\", $$v)},expression:\"object.primary_btn_color\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"3\",\"sm\":\"6\"}},[_c('label',[_vm._v(\"Secondary Button Color\")]),_c('v-color-picker',{attrs:{\"dot-size\":\"15\",\"mode\":\"hexa\"},model:{value:(_vm.object.secondary_btn_color),callback:function ($$v) {_vm.$set(_vm.object, \"secondary_btn_color\", $$v)},expression:\"object.secondary_btn_color\"}})],1)],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"Create Company\"\n      :subtitle=\"object.name\"\n      btnLabel=\"Save Company\"\n      :canAdd=\"hasPermission('core.add_company')\"\n      @submit=\"submit\"\n      :saveLoading=\"$store.state.companies.object.loading\"\n    />\n\n    <v-form ref=\"form\">\n      <v-card class=\"mb-4\">\n        <v-tabs v-model=\"tab\" grow icons-and-text slider-size=\"4\">\n          <v-tabs-slider></v-tabs-slider>\n          <template v-for=\"(item, index) in tabs\">\n            <v-tab :key=\"index\" :href=\"item.href\">\n              {{ item.text }}\n              <v-icon>{{ item.icon }}</v-icon>\n            </v-tab>\n          </template>\n        </v-tabs>\n\n        <v-divider class=\"primary\"></v-divider>\n\n        <v-tabs-items v-model=\"tab\">\n          <v-tab-item value=\"general\">\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.name\" label=\"Name\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n\n                <v-col cols=\"12\" md=\"6\">\n                  <v-file-input\n                    v-model=\"object.logo\"\n                    :rules=\"[rules.value]\"\n                    show-size\n                    small-chips\n                    prepend-icon=\"mdi-image\"\n                    accept=\"image/png, image/jpeg, image/jpg\"\n                    label=\"Logo\"\n                  ></v-file-input\n                ></v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n\n          <v-tab-item value=\"brand\">\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"3\" sm=\"6\">\n                  <label>Primary Color</label>\n                  <v-color-picker v-model=\"object.primary_color\" dot-size=\"15\" mode=\"hexa\"></v-color-picker>\n                </v-col>\n\n                <v-col cols=\"12\" md=\"3\" sm=\"6\">\n                  <label>Secondary Color</label>\n                  <v-color-picker v-model=\"object.secondary_color\" dot-size=\"15\" mode=\"hexa\"></v-color-picker>\n                </v-col>\n\n                <v-col cols=\"12\" md=\"3\" sm=\"6\">\n                  <label>Primary Button Color</label>\n                  <v-color-picker v-model=\"object.primary_btn_color\" dot-size=\"15\" mode=\"hexa\"></v-color-picker>\n                </v-col>\n\n                <v-col cols=\"12\" md=\"3\" sm=\"6\">\n                  <label>Secondary Button Color</label>\n                  <v-color-picker v-model=\"object.secondary_btn_color\" dot-size=\"15\" mode=\"hexa\"></v-color-picker>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n        </v-tabs-items>\n      </v-card>\n    </v-form>\n  </div>\n</template>\n\n<script>\nimport { hasPermission } from '@/spaday/helpers'\nimport { FormHeader } from '@/spaday/components'\nimport { mapActions, mapState } from 'vuex'\n\nexport default {\n  components: {\n    FormHeader,\n  },\n  data: () => ({\n    object: {},\n    tabs: [\n      {\n        text: 'General Info',\n        icon: 'mdi-information',\n        // permissions: ['users.change_user'],\n        href: '#general',\n      },\n      {\n        text: 'Brand Colors',\n        icon: 'mdi-information',\n        // permissions: ['users.change_user'],\n        href: '#brand',\n      },\n    ],\n    rules: {\n      required: (value) => !!value || 'Required.',\n      value: (value) => !value || value.size < 2000000 || 'Image size should be less than 2 MB!',\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n    }),\n    tab: {\n      set(tab) {\n        this.$router.replace({ query: { ...this.$route.query, tab } })\n      },\n      get() {\n        return this.$route.query.tab\n      },\n    },\n  },\n  methods: {\n    hasPermission,\n    ...mapActions('companies', {\n      createCompany: 'create',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      // Submmitting object as form data to allow multipart/form-data\n      let formData = new FormData()\n      Object.keys(this.object).forEach((key) => {\n        if (this.object[key] !== null) {\n          formData.append(key, this.object[key])\n        }\n      })\n\n      this.createCompany(this.object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Create.vue?vue&type=template&id=5abdfb51\"\nimport script from \"./Create.vue?vue&type=script&lang=js\"\nexport * from \"./Create.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ListHeader',{attrs:{\"title\":\"Companies\",\"subtitle\":\"Create and manage companies.\",\"btnLabel\":\"New Company\",\"route\":{ name: 'AddCompany' },\"canAdd\":_vm.hasPermission('core.add_company')}}),_c('v-card',[_c('v-card-title',{staticClass:\"text--primary\"},[_c('SearchField',{attrs:{\"label\":\"Search Companies...\"},on:{\"search\":_vm.updateSearch}})],1),_c('v-data-table',{attrs:{\"show-select\":false,\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.companies.loading,\"items\":_vm.companies.items,\"headers\":_vm.companyTable.headers,\"search\":_vm.companyTable.search,\"footer-props\":{\n        'items-per-page-options': [15, 25, 50, 100],\n        'show-current-page': true,\n      },\"options\":_vm.companyTable.options,\"server-items-length\":_vm.companyTable.totalItems},on:{\"update:options\":[function($event){return _vm.$set(_vm.companyTable, \"options\", $event)},_vm.getPaginatedCompanies]},scopedSlots:_vm._u([{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.companyTable.actions},on:{\"edit\":function($event){return _vm.editCompany(item)},\"confirm-delete\":function($event){return _vm.preDeleteCompany(item)}}})]}}]),model:{value:(_vm.companyTable.selected),callback:function ($$v) {_vm.$set(_vm.companyTable, \"selected\", $$v)},expression:\"companyTable.selected\"}})],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteCompany}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <ListHeader\n      title=\"Companies\"\n      subtitle=\"Create and manage companies.\"\n      btnLabel=\"New Company\"\n      :route=\"{ name: 'AddCompany' }\"\n      :canAdd=\"hasPermission('core.add_company')\"\n    />\n\n    <v-card>\n      <v-card-title class=\"text--primary\">\n        <SearchField label=\"Search Companies...\" @search=\"updateSearch\" />\n      </v-card-title>\n      <v-data-table\n        v-model=\"companyTable.selected\"\n        :show-select=\"false\"\n        item-key=\"pk\"\n        loading-text=\"Loading. Please wait...\"\n        :loading=\"companies.loading\"\n        :items=\"companies.items\"\n        :headers=\"companyTable.headers\"\n        :search=\"companyTable.search\"\n        :footer-props=\"{\n          'items-per-page-options': [15, 25, 50, 100],\n          'show-current-page': true,\n        }\"\n        :options.sync=\"companyTable.options\"\n        :server-items-length=\"companyTable.totalItems\"\n        @update:options=\"getPaginatedCompanies\"\n      >\n        <template v-slot:item.actions=\"{ item }\">\n          <RowActions\n            :actions=\"companyTable.actions\"\n            @edit=\"editCompany(item)\"\n            @confirm-delete=\"preDeleteCompany(item)\"\n          />\n        </template>\n      </v-data-table>\n    </v-card>\n\n    <DeleteConfirmation @confirm-delete=\"deleteCompany\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission, getPaginationParams } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, ListHeader, RowActions, SearchField } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n    DeleteConfirmation,\n    ListHeader,\n    SearchField,\n  },\n  data: () => ({\n    companyTable: {\n      options: {},\n      totalItems: 0,\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'Name', value: 'name' },\n        { text: 'Events', value: 'num_events', sortable: false },\n        { text: 'QR Codes', value: 'num_codes', sortable: false },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'Edit Company',\n          icon: 'mdi-pencil',\n          color: 'primary',\n          permissions: ['core.change_company'],\n          emit: 'edit',\n        },\n        {\n          text: 'Delete Company',\n          icon: 'mdi-trash-can',\n          color: 'error',\n          permissions: ['core.delete_company'],\n          emit: 'confirm-delete',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      companies: (state) => state.companies.all,\n    }),\n  },\n  mounted() {\n    // this.getCompanies()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    getPaginationParams,\n    ...mapActions('companies', {\n      getCompanies: 'getAll',\n      preDeleteCompany: 'preDelete',\n      deleteCompany: 'delete',\n    }),\n    editCompany(item) {\n      this.$router.push({ name: 'ChangeCompany', params: { pk: item.pk } })\n    },\n\n    /** Pagination handlers **/\n    getPaginatedCompanies() {\n      const params = this.getPaginationParams(this.companyTable.options, this.companyTable.search)\n      this.getCompanies(params).then((data) => {\n        this.companyTable.totalPages = data.num_pages\n        this.companyTable.totalItems = data.num_results\n      })\n    },\n    updateSearch(value) {\n      this.companyTable.search = value\n      this.getPaginatedCompanies()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./List.vue?vue&type=template&id=1f367ac8\"\nimport script from \"./List.vue?vue&type=script&lang=js\"\nexport * from \"./List.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Update Company\",\"subtitle\":_vm.object.name,\"btnLabel\":\"Update Company\",\"canChange\":_vm.hasPermission('core.change_company'),\"canDelete\":_vm.hasPermission('core.delete_company'),\"deleteLoading\":_vm.$store.state.companies.delete.loading,\"saveLoading\":_vm.$store.state.companies.object.loading},on:{\"submit\":_vm.submit,\"delete\":function($event){return _vm.preDeleteCompany(_vm.object)}}}),_c('v-form',{ref:\"form\",attrs:{\"readonly\":!_vm.hasPermission('core.change_company')}},[_c('v-card',{staticClass:\"mb-4\"},[_c('v-tabs',{attrs:{\"grow\":\"\",\"icons-and-text\":\"\",\"slider-size\":\"4\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(item,index){return [_c('v-tab',{key:index,attrs:{\"href\":item.href}},[_vm._v(\" \"+_vm._s(item.text)+\" \"),_c('v-icon',[_vm._v(_vm._s(item.icon))])],1)]})],2),_c('v-divider',{staticClass:\"primary\"}),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{attrs:{\"value\":\"general\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.name),callback:function ($$v) {_vm.$set(_vm.object, \"name\", $$v)},expression:\"object.name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-file-input',{attrs:{\"rules\":[_vm.rules.logo],\"show-size\":\"\",\"small-chips\":\"\",\"prepend-icon\":\"mdi-image\",\"accept\":\"image/png, image/jpeg, image/jpg\",\"label\":\"Logo\"},model:{value:(_vm.object.logo),callback:function ($$v) {_vm.$set(_vm.object, \"logo\", $$v)},expression:\"object.logo\"}})],1)],1)],1),_c('CardSubheader',{attrs:{\"icon\":\"mdi-palette\",\"title\":\"Brand Colors\"}}),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"3\",\"sm\":\"6\"}},[_c('label',[_vm._v(\"Primary Color\")]),_c('v-color-picker',{attrs:{\"dot-size\":\"15\",\"mode\":\"hexa\"},model:{value:(_vm.object.primary_color),callback:function ($$v) {_vm.$set(_vm.object, \"primary_color\", $$v)},expression:\"object.primary_color\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"3\",\"sm\":\"6\"}},[_c('label',[_vm._v(\"Secondary Color\")]),_c('v-color-picker',{attrs:{\"dot-size\":\"15\",\"mode\":\"hexa\"},model:{value:(_vm.object.secondary_color),callback:function ($$v) {_vm.$set(_vm.object, \"secondary_color\", $$v)},expression:\"object.secondary_color\"}})],1),_c('v-divider',{attrs:{\"vertical\":\"\"}}),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"3\",\"sm\":\"6\"}},[_c('label',[_vm._v(\"Primary Button Color\")]),_c('v-color-picker',{attrs:{\"dot-size\":\"15\",\"mode\":\"hexa\"},model:{value:(_vm.object.primary_btn_color),callback:function ($$v) {_vm.$set(_vm.object, \"primary_btn_color\", $$v)},expression:\"object.primary_btn_color\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"3\",\"sm\":\"6\"}},[_c('label',[_vm._v(\"Secondary Button Color\")]),_c('v-color-picker',{attrs:{\"dot-size\":\"15\",\"mode\":\"hexa\"},model:{value:(_vm.object.secondary_btn_color),callback:function ($$v) {_vm.$set(_vm.object, \"secondary_btn_color\", $$v)},expression:\"object.secondary_btn_color\"}})],1)],1)],1)],1),_c('v-tab-item',{attrs:{\"value\":\"events\"}},[_c('EventList',{attrs:{\"company\":_vm.object}})],1),_c('v-tab-item',{attrs:{\"value\":\"codes\"}},[_c('QRCodeList',{attrs:{\"company\":_vm.object}})],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('div',{staticClass:\"caption\"},[_vm._v(\" Company ID \"),_c('strong',[_vm._v(_vm._s(_vm.object.pk))])])],1)],1)],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.onConfirmDeleteCompany}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-card-title',[_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-magnify\",\"label\":\"Search Events...\",\"outlined\":\"\",\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.table.search),callback:function ($$v) {_vm.$set(_vm.table, \"search\", $$v)},expression:\"table.search\"}}),_c('v-spacer'),(_vm.hasPermission('core.add_event'))?_c('v-btn',{attrs:{\"color\":\"secondary\",\"to\":{ name: 'AddEvent', query: { company: _vm.company.pk } }}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" New Event \")],1):_vm._e()],1),_c('v-data-table',{attrs:{\"show-select\":false,\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.events.loading,\"items\":_vm.events.items,\"headers\":_vm.table.headers,\"search\":_vm.table.search},scopedSlots:_vm._u([{key:\"item.created_at\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.localDatetime(item.created_at))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.table.actions},on:{\"edit\":function($event){return _vm.editEvent(item)},\"delete\":function($event){return _vm.preDeleteEvent(item)},\"view-event-stats\":function($event){return _vm.viewEventStats(item)}}})]}}]),model:{value:(_vm.table.selected),callback:function ($$v) {_vm.$set(_vm.table, \"selected\", $$v)},expression:\"table.selected\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <v-card-title>\n      <v-text-field\n        v-model=\"table.search\"\n        prepend-inner-icon=\"mdi-magnify\"\n        label=\"Search Events...\"\n        outlined\n        hide-details\n        dense\n      ></v-text-field>\n      <v-spacer></v-spacer>\n\n      <v-btn\n        v-if=\"hasPermission('core.add_event')\"\n        color=\"secondary\"\n        :to=\"{ name: 'AddEvent', query: { company: company.pk } }\"\n      >\n        <v-icon left>mdi-plus</v-icon> New Event\n      </v-btn>\n    </v-card-title>\n    <v-data-table\n      v-model=\"table.selected\"\n      :show-select=\"false\"\n      item-key=\"pk\"\n      loading-text=\"Loading. Please wait...\"\n      :loading=\"events.loading\"\n      :items=\"events.items\"\n      :headers=\"table.headers\"\n      :search=\"table.search\"\n    >\n      <template v-slot:item.created_at=\"{ item }\">\n        {{ localDatetime(item.created_at) }}\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <RowActions\n          :actions=\"table.actions\"\n          @edit=\"editEvent(item)\"\n          @delete=\"preDeleteEvent(item)\"\n          @view-event-stats=\"viewEventStats(item)\"\n        />\n      </template>\n    </v-data-table>\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { RowActions } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n  },\n  props: {\n    company: { type: Object },\n  },\n  data: () => ({\n    table: {\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'Name', value: 'name' },\n        { text: 'QR Codes', value: 'total_codes' },\n        { text: 'Created', value: 'created_at' },\n        { text: 'Actions', value: 'actions' },\n      ],\n      actions: [\n        {\n          text: 'Edit Event',\n          icon: 'mdi-pencil',\n          color: 'primary',\n          permissions: ['core.change_event'],\n          emit: 'edit',\n        },\n        // {\n        //   text: 'Delete Event',\n        //   icon: 'mdi-trash-can-outline',\n        //   color: 'error',\n        //   permissions: ['core.delete_event'],\n        //   emit: 'delete',\n        // },\n        {\n          divider: true,\n        },\n        {\n          text: 'View Stats',\n          icon: 'mdi-chart-bar',\n          color: 'success',\n          permissions: ['core.view_event'],\n          emit: 'view-event-stats',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      events: (state) => state.companies.events,\n    }),\n  },\n  mounted() {\n    this.getCompanyEvents(this.$route.params.pk)\n  },\n  beforeDestroy() {},\n  methods: {\n    hasPermission,\n    localDatetime,\n    ...mapActions('events', {\n      preDeleteEvent: 'preDelete',\n      deleteEvent: 'delete',\n    }),\n    ...mapActions('companies', {\n      getCompanyEvents: 'getEvents',\n    }),\n\n    editEvent(item) {\n      this.$router.push({\n        name: 'ChangeEvent',\n        params: { pk: item.pk },\n      })\n    },\n    viewEventStats(item) {\n      this.$router.push({ name: 'StatsEvent', params: { pk: item.pk } })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EventList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./EventList.vue?vue&type=template&id=acbe7228\"\nimport script from \"./EventList.vue?vue&type=script&lang=js\"\nexport * from \"./EventList.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-card-title',[_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-magnify\",\"label\":\"Search QR Codes...\",\"outlined\":\"\",\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.table.search),callback:function ($$v) {_vm.$set(_vm.table, \"search\", $$v)},expression:\"table.search\"}}),_c('v-spacer'),(_vm.hasPermission('core.add_qrcode'))?_c('v-btn',{attrs:{\"color\":\"secondary\",\"to\":{ name: 'AddQRCode', query: { company: _vm.company.pk } }}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" New QR Code \")],1):_vm._e()],1),_c('v-data-table',{attrs:{\"show-select\":false,\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.qrcodes.loading,\"items\":_vm.qrcodes.items,\"headers\":_vm.table.headers,\"search\":_vm.table.search},scopedSlots:_vm._u([{key:\"item.created_at\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.localDatetime(item.created_at))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.table.actions},on:{\"edit\":function($event){return _vm.editQRCode(item)},\"confirm-delete\":function($event){return _vm.preDeleteQRCode(item)},\"visit-url\":function($event){return _vm.visitQRCodeURL(item)},\"view-qrcode-stats\":function($event){return _vm.viewQRCodeStats(item)}}})]}}]),model:{value:(_vm.table.selected),callback:function ($$v) {_vm.$set(_vm.table, \"selected\", $$v)},expression:\"table.selected\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <v-card-title>\n      <v-text-field\n        v-model=\"table.search\"\n        prepend-inner-icon=\"mdi-magnify\"\n        label=\"Search QR Codes...\"\n        outlined\n        hide-details\n        dense\n      ></v-text-field>\n      <v-spacer></v-spacer>\n      <v-btn\n        v-if=\"hasPermission('core.add_qrcode')\"\n        color=\"secondary\"\n        :to=\"{ name: 'AddQRCode', query: { company: company.pk } }\"\n      >\n        <v-icon left>mdi-plus</v-icon> New QR Code\n      </v-btn>\n    </v-card-title>\n    <v-data-table\n      v-model=\"table.selected\"\n      :show-select=\"false\"\n      item-key=\"pk\"\n      loading-text=\"Loading. Please wait...\"\n      :loading=\"qrcodes.loading\"\n      :items=\"qrcodes.items\"\n      :headers=\"table.headers\"\n      :search=\"table.search\"\n    >\n      <template v-slot:item.created_at=\"{ item }\">\n        {{ localDatetime(item.created_at) }}\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <RowActions\n          :actions=\"table.actions\"\n          @edit=\"editQRCode(item)\"\n          @confirm-delete=\"preDeleteQRCode(item)\"\n          @visit-url=\"visitQRCodeURL(item)\"\n          @view-qrcode-stats=\"viewQRCodeStats(item)\"\n        />\n      </template>\n    </v-data-table>\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { RowActions } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n  },\n  props: {\n    company: { type: Object },\n  },\n  data: () => ({\n    table: {\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'Name', value: 'name' },\n        { text: 'Scans', value: 'total_scans' },\n        { text: 'Redirect URL', value: 'redirect_url' },\n        { text: 'Event', value: 'event_name' },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'Edit QR Code',\n          icon: 'mdi-pencil',\n          color: 'primary',\n          permissions: ['core.change_qrcode'],\n          emit: 'edit',\n        },\n        // {\n        //   text: 'Delete QR Code',\n        //   icon: 'mdi-trash-can',\n        //   color: 'error',\n        //   permissions: ['core.delete_qrcode'],\n        //   emit: 'confirm-delete',\n        // },\n        {\n          divider: true,\n        },\n        {\n          text: 'Test Redirect URL',\n          icon: 'mdi-link-variant',\n          color: 'warning',\n          permissions: ['core.view_qrcode'],\n          emit: 'visit-url',\n        },\n        {\n          text: 'View Stats',\n          icon: 'mdi-chart-bar',\n          color: 'success',\n          permissions: ['core.view_scan'],\n          emit: 'view-qrcode-stats',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      qrcodes: (state) => state.companies.qrcodes,\n    }),\n  },\n  mounted() {\n    this.getCompanyQRCodes(this.$route.params.pk)\n  },\n  beforeDestroy() {},\n  methods: {\n    hasPermission,\n    localDatetime,\n    ...mapActions('qrcodes', {\n      preDeleteQRCode: 'preDelete',\n      deleteQRCode: 'delete',\n    }),\n    ...mapActions('companies', {\n      getCompanyQRCodes: 'getQRCodes',\n    }),\n    editQRCode(item) {\n      this.$router.push({ name: 'ChangeQRCode', params: { pk: item.pk } })\n    },\n    viewQRCodeStats(item) {\n      this.$router.push({ name: 'StatsQRCode', params: { pk: item.pk } })\n    },\n    visitQRCodeURL(item) {\n      window.open(item.absolute_url, '_blank')\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QRCodeList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QRCodeList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./QRCodeList.vue?vue&type=template&id=4bb6e957\"\nimport script from \"./QRCodeList.vue?vue&type=script&lang=js\"\nexport * from \"./QRCodeList.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <FormHeader\n      title=\"Update Company\"\n      :subtitle=\"object.name\"\n      btnLabel=\"Update Company\"\n      :canChange=\"hasPermission('core.change_company')\"\n      :canDelete=\"hasPermission('core.delete_company')\"\n      @submit=\"submit\"\n      @delete=\"preDeleteCompany(object)\"\n      :deleteLoading=\"$store.state.companies.delete.loading\"\n      :saveLoading=\"$store.state.companies.object.loading\"\n    />\n\n    <v-form ref=\"form\" :readonly=\"!hasPermission('core.change_company')\">\n      <v-card class=\"mb-4\">\n        <v-tabs v-model=\"tab\" grow icons-and-text slider-size=\"4\">\n          <v-tabs-slider></v-tabs-slider>\n          <template v-for=\"(item, index) in tabs\">\n            <v-tab :key=\"index\" :href=\"item.href\">\n              {{ item.text }}\n              <v-icon>{{ item.icon }}</v-icon>\n            </v-tab>\n          </template>\n        </v-tabs>\n\n        <v-divider class=\"primary\"></v-divider>\n\n        <v-tabs-items v-model=\"tab\">\n          <v-tab-item value=\"general\">\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.name\" label=\"Name\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n\n                <v-col cols=\"12\" md=\"6\">\n                  <v-file-input\n                    v-model=\"object.logo\"\n                    :rules=\"[rules.logo]\"\n                    show-size\n                    small-chips\n                    prepend-icon=\"mdi-image\"\n                    accept=\"image/png, image/jpeg, image/jpg\"\n                    label=\"Logo\"\n                  ></v-file-input\n                ></v-col>\n              </v-row>\n            </v-card-text>\n            <CardSubheader icon=\"mdi-palette\" title=\"Brand Colors\" />\n\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"3\" sm=\"6\">\n                  <label>Primary Color</label>\n                  <v-color-picker v-model=\"object.primary_color\" dot-size=\"15\" mode=\"hexa\"></v-color-picker>\n                </v-col>\n\n                <v-col cols=\"12\" md=\"3\" sm=\"6\">\n                  <label>Secondary Color</label>\n                  <v-color-picker v-model=\"object.secondary_color\" dot-size=\"15\" mode=\"hexa\"></v-color-picker>\n                </v-col>\n\n                <v-divider vertical></v-divider>\n\n                <v-col cols=\"12\" md=\"3\" sm=\"6\">\n                  <label>Primary Button Color</label>\n                  <v-color-picker v-model=\"object.primary_btn_color\" dot-size=\"15\" mode=\"hexa\"></v-color-picker>\n                </v-col>\n\n                <v-col cols=\"12\" md=\"3\" sm=\"6\">\n                  <label>Secondary Button Color</label>\n                  <v-color-picker v-model=\"object.secondary_btn_color\" dot-size=\"15\" mode=\"hexa\"></v-color-picker>\n                </v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n\n          <v-tab-item value=\"events\">\n            <EventList :company=\"object\" />\n          </v-tab-item>\n\n          <v-tab-item value=\"codes\">\n            <QRCodeList :company=\"object\" />\n          </v-tab-item>\n        </v-tabs-items>\n\n        <v-divider></v-divider>\n        <v-card-actions\n          ><v-spacer></v-spacer>\n          <div class=\"caption\">\n            Company ID <strong>{{ object.pk }}</strong>\n          </div></v-card-actions\n        >\n      </v-card>\n    </v-form>\n\n    <DeleteConfirmation @confirm-delete=\"onConfirmDeleteCompany\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, FormHeader, CardSubheader } from '@/spaday/components'\nimport EventList from '@/views/company/components/EventList'\nimport QRCodeList from '@/views/company/components/QRCodeList'\n\nexport default {\n  components: {\n    DeleteConfirmation,\n    FormHeader,\n    CardSubheader,\n    EventList,\n    QRCodeList,\n  },\n  data: () => ({\n    tabs: [\n      {\n        text: 'General Info',\n        icon: 'mdi-information',\n        href: '#general',\n      },\n      {\n        text: 'Events',\n        icon: 'mdi-folder-multiple',\n        href: '#events',\n      },\n      {\n        text: 'QR Codes',\n        icon: 'mdi-map-marker-multiple',\n        href: '#codes',\n      },\n    ],\n    rules: {\n      required: (value) => !!value || 'Required.',\n\n      logo: (value) => !value || value.size < 2000000 || 'Image size should be less than 2 MB!',\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      object: (state) => state.companies.object,\n    }),\n    tab: {\n      set(tab) {\n        this.$router.replace({ query: { ...this.$route.query, tab } })\n      },\n      get() {\n        return this.$route.query.tab\n      },\n    },\n  },\n  mounted() {\n    this.getCompany(this.$route.params.pk)\n  },\n  beforeDestroy() {\n    this.clearCompany()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    ...mapActions('companies', {\n      getCompany: 'get',\n      updateCompany: 'update',\n      preDeleteCompany: 'preDelete',\n      deleteCompany: 'delete',\n      clearCompany: 'clear',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      // Submmitting object as form data to allow multipart/form-data\n      let formData = new FormData()\n      Object.keys(this.object).forEach((key) => {\n        if (this.object[key] !== null) {\n          formData.append(key, this.object[key])\n        }\n      })\n\n      this.updateCompany({ id: this.object.pk, data: this.object }).then(() => {\n        this.$router.go(-1)\n      })\n    },\n\n    onConfirmDeleteCompany(object) {\n      this.deleteCompany(object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Update.vue?vue&type=template&id=dcaefa5c\"\nimport script from \"./Update.vue?vue&type=script&lang=js\"\nexport * from \"./Update.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { List, Update, Create } from '@/views/company'\n\nconst routes = [\n  {\n    path: '/company',\n    name: 'Company',\n    component: List,\n    meta: {\n      public: false,\n      permissions: ['core.view_company'],\n    },\n  },\n  {\n    path: '/company/add',\n    name: 'AddCompany',\n    component: Create,\n    meta: {\n      public: false,\n      permissions: ['core.add_company'],\n    },\n  },\n  {\n    path: '/company/:pk/change',\n    name: 'ChangeCompany',\n    component: Update,\n    meta: {\n      public: false,\n      permissions: ['core.change_company'],\n    },\n  },\n]\n\nexport default routes\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Create Event\",\"subtitle\":_vm.object.name,\"btnLabel\":\"Save Event\",\"canAdd\":_vm.hasPermission('core.add_event'),\"saveLoading\":_vm.$store.state.events.object.loading},on:{\"submit\":_vm.submit}}),_c('v-form',{ref:\"form\"},[_c('v-card',{staticClass:\"mb-4\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-information-variant\")]),_c('v-toolbar-title',[_vm._v(\" General Info \")])],1),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.name),callback:function ($$v) {_vm.$set(_vm.object, \"name\", $$v)},expression:\"object.name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"label\":\"Company\",\"items\":_vm.companies.items,\"loading\":_vm.companies.loading,\"item-value\":\"pk\",\"item-text\":\"name\",\"hide-no-data\":\"\"},model:{value:(_vm.object.company),callback:function ($$v) {_vm.$set(_vm.object, \"company\", $$v)},expression:\"object.company\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-file-input',{attrs:{\"rules\":[_vm.rules.value],\"show-size\":\"\",\"small-chips\":\"\",\"prepend-icon\":\"mdi-image\",\"accept\":\"image/png, image/jpeg, image/jpg\",\"label\":\"Logo\"},model:{value:(_vm.object.logo),callback:function ($$v) {_vm.$set(_vm.object, \"logo\", $$v)},expression:\"object.logo\"}})],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"Create Event\"\n      :subtitle=\"object.name\"\n      btnLabel=\"Save Event\"\n      :canAdd=\"hasPermission('core.add_event')\"\n      @submit=\"submit\"\n      :saveLoading=\"$store.state.events.object.loading\"\n    />\n\n    <v-form ref=\"form\">\n      <v-card class=\"mb-4\">\n        <v-toolbar dark flat dense color=\"primary\">\n          <v-icon left>mdi-information-variant</v-icon>\n          <v-toolbar-title> General Info </v-toolbar-title>\n        </v-toolbar>\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field v-model=\"object.name\" label=\"Name\" :rules=\"[rules.required]\"></v-text-field>\n            </v-col>\n\n            <v-col cols=\"12\" md=\"6\">\n              <v-select\n                label=\"Company\"\n                v-model=\"object.company\"\n                :items=\"companies.items\"\n                :loading=\"companies.loading\"\n                item-value=\"pk\"\n                item-text=\"name\"\n                hide-no-data\n              ></v-select>\n            </v-col>\n\n            <v-col cols=\"12\" md=\"6\">\n              <v-file-input\n                v-model=\"object.logo\"\n                :rules=\"[rules.value]\"\n                show-size\n                small-chips\n                prepend-icon=\"mdi-image\"\n                accept=\"image/png, image/jpeg, image/jpg\"\n                label=\"Logo\"\n              >\n              </v-file-input>\n            </v-col>\n          </v-row>\n        </v-card-text>\n      </v-card>\n    </v-form>\n  </div>\n</template>\n\n<script>\nimport { hasPermission } from '@/spaday/helpers'\nimport { mapActions, mapState } from 'vuex'\nimport { FormHeader } from '@/spaday/components'\n\nexport default {\n  components: { FormHeader },\n  data: () => ({\n    object: {},\n    rules: {\n      required: (value) => !!value || 'Required.',\n\n      value: (value) => !value || value.size < 2000000 || 'Image size should be less than 2 MB!',\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      companies: (state) => state.companies.combobox,\n    }),\n  },\n  mounted() {\n    this.getCompanies()\n\n    // auto select company\n    if (this.$route.query.company) {\n      this.object.company = parseInt(this.$route.query.company)\n    }\n  },\n  methods: {\n    hasPermission,\n    ...mapActions('events', {\n      createEvent: 'create',\n    }),\n    ...mapActions('companies', {\n      getCompanies: 'getCombobox',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      this.createEvent(this.object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Create.vue?vue&type=template&id=4c762770\"\nimport script from \"./Create.vue?vue&type=script&lang=js\"\nexport * from \"./Create.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ListHeader',{attrs:{\"title\":\"Events\",\"subtitle\":\"Create and manage events.\",\"btnLabel\":\"New Event\",\"route\":{ name: 'AddEvent' },\"canAdd\":_vm.hasPermission('core.add_event')}}),_c('v-card',[_c('v-card-title',{staticClass:\"text--primary\"},[_c('SearchField',{attrs:{\"label\":\"Search Events...\"},on:{\"search\":_vm.updateSearch}})],1),_c('v-data-table',{attrs:{\"show-select\":false,\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.events.loading,\"items\":_vm.events.items,\"headers\":_vm.eventTable.headers,\"search\":_vm.eventTable.search,\"footer-props\":{\n        'items-per-page-options': [15, 25, 50, 100],\n        'show-current-page': true,\n      },\"options\":_vm.eventTable.options,\"server-items-length\":_vm.eventTable.totalItems},on:{\"update:options\":[function($event){return _vm.$set(_vm.eventTable, \"options\", $event)},_vm.getPaginatedEvents]},scopedSlots:_vm._u([{key:\"item.company\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.company_name)+\" \")]}},{key:\"item.created_at\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.localDatetime(item.created_at))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.eventTable.actions},on:{\"edit\":function($event){return _vm.editEvent(item)},\"confirm-delete\":function($event){return _vm.preDeleteEvent(item)},\"view-stats\":function($event){return _vm.viewStats(item)}}})]}}]),model:{value:(_vm.eventTable.selected),callback:function ($$v) {_vm.$set(_vm.eventTable, \"selected\", $$v)},expression:\"eventTable.selected\"}})],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteEvent}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <ListHeader\n      title=\"Events\"\n      subtitle=\"Create and manage events.\"\n      btnLabel=\"New Event\"\n      :route=\"{ name: 'AddEvent' }\"\n      :canAdd=\"hasPermission('core.add_event')\"\n    />\n\n    <v-card>\n      <v-card-title class=\"text--primary\">\n        <SearchField label=\"Search Events...\" @search=\"updateSearch\" />\n      </v-card-title>\n      <v-data-table\n        v-model=\"eventTable.selected\"\n        :show-select=\"false\"\n        item-key=\"pk\"\n        loading-text=\"Loading. Please wait...\"\n        :loading=\"events.loading\"\n        :items=\"events.items\"\n        :headers=\"eventTable.headers\"\n        :search=\"eventTable.search\"\n        :footer-props=\"{\n          'items-per-page-options': [15, 25, 50, 100],\n          'show-current-page': true,\n        }\"\n        :options.sync=\"eventTable.options\"\n        :server-items-length=\"eventTable.totalItems\"\n        @update:options=\"getPaginatedEvents\"\n      >\n        <template v-slot:item.company=\"{ item }\">\n          {{ item.company_name }}\n        </template>\n        <template v-slot:item.created_at=\"{ item }\">\n          {{ localDatetime(item.created_at) }}\n        </template>\n        <template v-slot:item.actions=\"{ item }\">\n          <RowActions\n            :actions=\"eventTable.actions\"\n            @edit=\"editEvent(item)\"\n            @confirm-delete=\"preDeleteEvent(item)\"\n            @view-stats=\"viewStats(item)\"\n          />\n        </template>\n      </v-data-table>\n    </v-card>\n\n    <DeleteConfirmation @confirm-delete=\"deleteEvent\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission, getPaginationParams } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, ListHeader, RowActions, SearchField } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n    DeleteConfirmation,\n    ListHeader,\n    SearchField,\n  },\n  data: () => ({\n    eventTable: {\n      options: {},\n      totalItems: 0,\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'Name', value: 'name' },\n        { text: 'QR Codes', value: 'total_codes', sortable: false },\n        { text: 'Company', value: 'company' },\n        { text: 'Created', value: 'created_at' },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'Edit Event',\n          icon: 'mdi-pencil',\n          color: 'primary',\n          permissions: ['core.change_event'],\n          emit: 'edit',\n        },\n        {\n          text: 'Delete Event',\n          icon: 'mdi-trash-can',\n          color: 'error',\n          permissions: ['core.delete_event'],\n          emit: 'confirm-delete',\n        },\n        {\n          divider: true,\n        },\n        {\n          text: 'View Stats',\n          icon: 'mdi-chart-bar',\n          color: 'success',\n          permissions: ['core.view_event'],\n          emit: 'view-stats',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      events: (state) => state.events.all,\n    }),\n  },\n  mounted() {\n    // this.getEvents()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    getPaginationParams,\n    ...mapActions('events', {\n      getEvents: 'getAll',\n      preDeleteEvent: 'preDelete',\n      deleteEvent: 'delete',\n    }),\n    editEvent(item) {\n      this.$router.push({ name: 'ChangeEvent', params: { pk: item.pk } })\n    },\n    viewStats(item) {\n      this.$router.push({ name: 'StatsEvent', params: { pk: item.pk } })\n    },\n\n    /** Pagination handlers **/\n    getPaginatedEvents() {\n      const params = this.getPaginationParams(this.eventTable.options, this.eventTable.search)\n      this.getEvents(params).then((data) => {\n        this.eventTable.totalPages = data.num_pages\n        this.eventTable.totalItems = data.num_results\n      })\n    },\n    updateSearch(value) {\n      this.eventTable.search = value\n      this.getPaginatedEvents()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./List.vue?vue&type=template&id=3193ff30\"\nimport script from \"./List.vue?vue&type=script&lang=js\"\nexport * from \"./List.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Update Event\",\"subtitle\":_vm.object.name,\"btnLabel\":\"Update Event\",\"canChange\":_vm.hasPermission('core.change_event'),\"canDelete\":_vm.hasPermission('core.delete_event'),\"deleteLoading\":_vm.$store.state.events.delete.loading,\"saveLoading\":_vm.$store.state.events.object.loading},on:{\"submit\":_vm.submit,\"delete\":function($event){return _vm.preDeleteEvent(_vm.object)}}}),_c('v-form',{ref:\"form\",attrs:{\"readonly\":!_vm.hasPermission('core.change_event')}},[_c('v-card',{staticClass:\"mb-4\",attrs:{\"loading\":_vm.object.loading}},[_c('v-tabs',{attrs:{\"grow\":\"\",\"icons-and-text\":\"\",\"slider-size\":\"4\"},model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tabs-slider'),_vm._l((_vm.tabs),function(item,index){return [_c('v-tab',{key:index,attrs:{\"href\":item.href}},[_vm._v(\" \"+_vm._s(item.text)+\" \"),_c('v-icon',[_vm._v(_vm._s(item.icon))])],1)]})],2),_c('v-divider',{staticClass:\"primary\"}),_c('v-tabs-items',{model:{value:(_vm.tab),callback:function ($$v) {_vm.tab=$$v},expression:\"tab\"}},[_c('v-tab-item',{attrs:{\"value\":\"general\"}},[_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.name),callback:function ($$v) {_vm.$set(_vm.object, \"name\", $$v)},expression:\"object.name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"label\":\"Company\",\"items\":_vm.companies.items,\"loading\":_vm.companies.loading,\"item-value\":\"pk\",\"item-text\":\"name\",\"hide-no-data\":\"\"},model:{value:(_vm.object.company),callback:function ($$v) {_vm.$set(_vm.object, \"company\", $$v)},expression:\"object.company\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-file-input',{attrs:{\"rules\":[_vm.rules.value],\"show-size\":\"\",\"small-chips\":\"\",\"prepend-icon\":\"mdi-image\",\"accept\":\"image/png, image/jpeg, image/jpg\",\"label\":\"Logo\"},model:{value:(_vm.object.logo),callback:function ($$v) {_vm.$set(_vm.object, \"logo\", $$v)},expression:\"object.logo\"}})],1)],1)],1)],1),_c('v-tab-item',{attrs:{\"value\":\"codes\"}},[_c('QRCodeList',{attrs:{\"event\":_vm.object}})],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('div',{staticClass:\"caption\"},[_vm._v(\" Event ID \"),_c('strong',[_vm._v(_vm._s(_vm.object.pk))])])],1)],1)],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.onConfirmDeleteEvent}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-card-title',[_c('v-text-field',{attrs:{\"prepend-inner-icon\":\"mdi-magnify\",\"label\":\"Search QR Codes...\",\"outlined\":\"\",\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.table.search),callback:function ($$v) {_vm.$set(_vm.table, \"search\", $$v)},expression:\"table.search\"}}),_c('v-spacer'),(_vm.hasPermission('core.add_qrcode'))?_c('v-btn',{attrs:{\"color\":\"secondary\",\"to\":{ name: 'AddQRCode', query: { company: _vm.event.company } }}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" New QR Code \")],1):_vm._e()],1),_c('v-data-table',{attrs:{\"show-select\":false,\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.qrcodes.loading,\"items\":_vm.qrcodes.items,\"headers\":_vm.table.headers,\"search\":_vm.table.search},scopedSlots:_vm._u([{key:\"item.created_at\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.localDatetime(item.created_at))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.table.actions},on:{\"edit\":function($event){return _vm.editQRCode(item)},\"confirm-delete\":function($event){return _vm.preDeleteQRCode(item)},\"visit-url\":function($event){return _vm.visitQRCodeURL(item)},\"view-qrcode-stats\":function($event){return _vm.viewQRCodeStats(item)}}})]}}]),model:{value:(_vm.table.selected),callback:function ($$v) {_vm.$set(_vm.table, \"selected\", $$v)},expression:\"table.selected\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <v-card-title>\n      <v-text-field\n        v-model=\"table.search\"\n        prepend-inner-icon=\"mdi-magnify\"\n        label=\"Search QR Codes...\"\n        outlined\n        hide-details\n        dense\n      ></v-text-field>\n      <v-spacer></v-spacer>\n      <v-btn\n        v-if=\"hasPermission('core.add_qrcode')\"\n        color=\"secondary\"\n        :to=\"{ name: 'AddQRCode', query: { company: event.company } }\"\n      >\n        <v-icon left>mdi-plus</v-icon> New QR Code\n      </v-btn>\n    </v-card-title>\n    <v-data-table\n      v-model=\"table.selected\"\n      :show-select=\"false\"\n      item-key=\"pk\"\n      loading-text=\"Loading. Please wait...\"\n      :loading=\"qrcodes.loading\"\n      :items=\"qrcodes.items\"\n      :headers=\"table.headers\"\n      :search=\"table.search\"\n    >\n      <template v-slot:item.created_at=\"{ item }\">\n        {{ localDatetime(item.created_at) }}\n      </template>\n      <template v-slot:item.actions=\"{ item }\">\n        <RowActions\n          :actions=\"table.actions\"\n          @edit=\"editQRCode(item)\"\n          @confirm-delete=\"preDeleteQRCode(item)\"\n          @visit-url=\"visitQRCodeURL(item)\"\n          @view-qrcode-stats=\"viewQRCodeStats(item)\"\n        />\n      </template>\n    </v-data-table>\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { RowActions } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n  },\n  props: {\n    event: { type: Object },\n  },\n  data: () => ({\n    table: {\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'Name', value: 'name' },\n        { text: 'Scans', value: 'total_scans' },\n        { text: 'Redirect URL', value: 'redirect_url' },\n        { text: 'Event', value: 'event_name' },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'Edit QR Code',\n          icon: 'mdi-pencil',\n          color: 'primary',\n          permissions: ['core.change_qrcode'],\n          emit: 'edit',\n        },\n        // {\n        //   text: 'Delete QR Code',\n        //   icon: 'mdi-trash-can',\n        //   color: 'error',\n        //   permissions: ['core.delete_qrcode'],\n        //   emit: 'confirm-delete',\n        // },\n        {\n          divider: true,\n        },\n        {\n          text: 'Test Redirect URL',\n          icon: 'mdi-link-variant',\n          color: 'warning',\n          permissions: ['core.view_qrcode'],\n          emit: 'visit-url',\n        },\n        {\n          text: 'View Stats',\n          icon: 'mdi-chart-bar',\n          color: 'success',\n          permissions: ['core.view_scan'],\n          emit: 'view-qrcode-stats',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      qrcodes: (state) => state.events.qrcodes,\n    }),\n  },\n  mounted() {\n    this.getEventQRCodes(this.$route.params.pk)\n  },\n  beforeDestroy() {},\n  methods: {\n    hasPermission,\n    localDatetime,\n    ...mapActions('qrcodes', {\n      preDeleteQRCode: 'preDelete',\n      deleteQRCode: 'delete',\n    }),\n    ...mapActions('events', {\n      getEventQRCodes: 'getQRCodes',\n    }),\n    editQRCode(item) {\n      this.$router.push({ name: 'ChangeQRCode', params: { pk: item.pk } })\n    },\n    viewQRCodeStats(item) {\n      this.$router.push({ name: 'StatsQRCode', params: { pk: item.pk } })\n    },\n    visitQRCodeURL(item) {\n      window.open(item.absolute_url, '_blank')\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QRCodeList.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./QRCodeList.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./QRCodeList.vue?vue&type=template&id=46a3479a\"\nimport script from \"./QRCodeList.vue?vue&type=script&lang=js\"\nexport * from \"./QRCodeList.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","<template>\n  <div>\n    <FormHeader\n      title=\"Update Event\"\n      :subtitle=\"object.name\"\n      btnLabel=\"Update Event\"\n      :canChange=\"hasPermission('core.change_event')\"\n      :canDelete=\"hasPermission('core.delete_event')\"\n      @submit=\"submit\"\n      @delete=\"preDeleteEvent(object)\"\n      :deleteLoading=\"$store.state.events.delete.loading\"\n      :saveLoading=\"$store.state.events.object.loading\"\n    />\n\n    <v-form ref=\"form\" :readonly=\"!hasPermission('core.change_event')\">\n      <v-card class=\"mb-4\" :loading=\"object.loading\">\n        <v-tabs v-model=\"tab\" grow icons-and-text slider-size=\"4\">\n          <v-tabs-slider></v-tabs-slider>\n          <template v-for=\"(item, index) in tabs\">\n            <v-tab :key=\"index\" :href=\"item.href\">\n              {{ item.text }}\n              <v-icon>{{ item.icon }}</v-icon>\n            </v-tab>\n          </template>\n        </v-tabs>\n\n        <v-divider class=\"primary\"></v-divider>\n\n        <v-tabs-items v-model=\"tab\">\n          <v-tab-item value=\"general\">\n            <v-card-text>\n              <v-row>\n                <v-col cols=\"12\" md=\"6\">\n                  <v-text-field v-model=\"object.name\" label=\"Name\" :rules=\"[rules.required]\"></v-text-field>\n                </v-col>\n\n                <v-col cols=\"12\" md=\"6\">\n                  <v-select\n                    label=\"Company\"\n                    v-model=\"object.company\"\n                    :items=\"companies.items\"\n                    :loading=\"companies.loading\"\n                    item-value=\"pk\"\n                    item-text=\"name\"\n                    hide-no-data\n                  ></v-select>\n                </v-col>\n\n                <v-col cols=\"12\" md=\"6\">\n                  <v-file-input\n                    v-model=\"object.logo\"\n                    :rules=\"[rules.value]\"\n                    show-size\n                    small-chips\n                    prepend-icon=\"mdi-image\"\n                    accept=\"image/png, image/jpeg, image/jpg\"\n                    label=\"Logo\"\n                  ></v-file-input\n                ></v-col>\n              </v-row>\n            </v-card-text>\n          </v-tab-item>\n\n          <v-tab-item value=\"codes\">\n            <QRCodeList :event=\"object\" />\n          </v-tab-item>\n        </v-tabs-items>\n\n        <v-divider></v-divider>\n        <v-card-actions\n          ><v-spacer></v-spacer>\n          <div class=\"caption\">\n            Event ID <strong>{{ object.pk }}</strong>\n          </div></v-card-actions\n        >\n      </v-card>\n    </v-form>\n\n    <DeleteConfirmation @confirm-delete=\"onConfirmDeleteEvent\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { FormHeader, DeleteConfirmation } from '@/spaday/components'\nimport QRCodeList from '@/views/event/components/QRCodeList'\n\nexport default {\n  components: {\n    DeleteConfirmation,\n    FormHeader,\n    QRCodeList,\n  },\n  data: () => ({\n    tabs: [\n      {\n        text: 'General Info',\n        icon: 'mdi-information',\n        // permissions: ['users.change_user'],\n        href: '#general',\n      },\n      {\n        text: 'QR Codes',\n        icon: 'mdi-map-marker-multiple',\n        // permissions: ['users.change_user'],\n        href: '#codes',\n      },\n    ],\n    rules: {\n      required: (value) => !!value || 'Required.',\n\n      value: (value) => !value || value.size < 2000000 || 'Image size should be less than 2 MB!',\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      object: (state) => state.events.object,\n      // qrcodes: (state) => state.events.qrcodes,\n      companies: (state) => state.companies.combobox,\n    }),\n    tab: {\n      set(tab) {\n        this.$router.replace({ query: { ...this.$route.query, tab } })\n      },\n      get() {\n        return this.$route.query.tab\n      },\n    },\n  },\n  mounted() {\n    this.getEvent(this.$route.params.pk)\n    // this.getQRCodes(this.$route.params.pk)\n    this.getCompanies()\n  },\n  beforeDestroy() {\n    this.clearEvent()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    ...mapActions('qrcodes', {\n      preDeleteQRCode: 'preDelete',\n      deleteQRCode: 'delete',\n    }),\n    ...mapActions('events', {\n      getEvent: 'get',\n      updateEvent: 'update',\n      preDeleteEvent: 'preDelete',\n      deleteEvent: 'delete',\n      clearEvent: 'clear',\n      getQRCodes: 'getQRCodes',\n    }),\n    ...mapActions('companies', {\n      getCompanies: 'getCombobox',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      // Submmitting object as form data to allow multipart/form-data\n      let formData = new FormData()\n      Object.keys(this.object).forEach((key) => {\n        if (this.object[key] !== null) {\n          formData.append(key, this.object[key])\n        }\n      })\n\n      this.updateEvent({ id: this.object.pk, data: this.object }).then(() => {\n        this.$router.go(-1)\n      })\n    },\n\n    onConfirmDeleteEvent(object) {\n      this.deleteEvent(object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Update.vue?vue&type=template&id=70c0edce\"\nimport script from \"./Update.vue?vue&type=script&lang=js\"\nexport * from \"./Update.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-card',{staticClass:\"mb-4\",attrs:{\"color\":\"transparent\"}},[_c('v-card-text',[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',[_c('v-card-title',{staticClass:\"text--primary\"},[_vm._v(\"Event Stats\")])],1),_c('v-col',{staticClass:\"text-right\"},[_c('v-btn',{staticClass:\"ma-2\",attrs:{\"small\":\"\",\"fab\":\"\",\"depressed\":\"\",\"icon\":\"\",\"outlined\":\"\"},on:{\"click\":function($event){return _vm.$router.go(-1)}}},[_c('v-icon',[_vm._v(\"mdi-arrow-left\")])],1),_c('v-btn',{attrs:{\"color\":\"info\",\"x-large\":\"\"},on:{\"click\":function($event){return _vm.exportPDF()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-file-download\")]),_vm._v(\"Export PDF \")],1)],1)],1)],1)],1),_c('v-card',{staticClass:\"mb-4\"},[_c('v-card-text',[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_c('div',[_c('strong',[_vm._v(\"Company:\")]),_vm._v(\" \"+_vm._s(_vm.object.company_name))]),_c('div',[_c('strong',[_vm._v(\"Event:\")]),_vm._v(\" \"+_vm._s(_vm.object.name))]),_c('div',[_c('strong',[_vm._v(\"Created:\")]),_vm._v(\" \"+_vm._s(_vm.localDatetime(_vm.object.created_at)))])]),_c('v-divider',{attrs:{\"vertical\":\"\"}}),(_vm.stats.scan_data)?_c('v-col',[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center\"},[_c('div',{staticClass:\"text-h6 text--secondary\"},[_vm._v(\"Total Scans\")]),_c('div',{staticClass:\"text-h2 text--primary\"},[_c('strong',[_vm._v(_vm._s(_vm.stats.scan_data.total_scans))])])]),_c('v-col',{staticClass:\"text-center\"},[_c('div',{staticClass:\"text-h6 text--secondary\"},[_vm._v(\"Unique Scans\")]),_c('div',{staticClass:\"text-h2 text--primary\"},[_c('strong',[_vm._v(_vm._s(_vm.stats.scan_data.unique_scans))])])])],1)],1):_vm._e()],1)],1)],1),_c('v-card',{staticClass:\"mb-4\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-toolbar-title',[_vm._v(\"Number of QR Code Scans\")])],1),_c('v-card-text',[(_vm.chartData)?_c('GenericChart',{attrs:{\"refs\":\"printMe\",\"chartdata\":_vm.chartData}}):_vm._e()],1)],1),_c('v-row',[_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Operating System\",\"items\":_vm.stats.overall.os_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Platform\",\"items\":_vm.stats.overall.platform_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Browser\",\"items\":_vm.stats.overall.browser_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Device\",\"items\":_vm.stats.overall.device_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('StatTableCard',{attrs:{\"title\":\"By City\",\"items\":_vm.stats.overall.city_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('StatTableCard',{attrs:{\"title\":\"By State\",\"items\":_vm.stats.overall.state_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Country\",\"items\":_vm.stats.overall.country_data,\"headers\":_vm.tableHeaders}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vue from 'vue'\n\n// https://www.digitalocean.com/community/tutorials/vuejs-global-event-bus\nexport const EventBus = new Vue()\n\n// Example Usage:\n// EventBus.$emit('clicked, 1)\n\n// const clickHandler = function(clickCount) {\n//     console.log(`The button has been clicked ${clickCount} times!`)\n// }\n\n// EventBus.$on('clicked', clickHandler);\n","<template>\n  <div>\n    <v-card class=\"mb-4\" color=\"transparent\">\n      <v-card-text>\n        <v-row align=\"center\" justify=\"center\">\n          <v-col>\n            <v-card-title class=\"text--primary\">Event Stats</v-card-title>\n          </v-col>\n          <v-col class=\"text-right\">\n            <v-btn class=\"ma-2\" small fab depressed icon outlined @click=\"$router.go(-1)\"\n              ><v-icon>mdi-arrow-left</v-icon>\n            </v-btn>\n\n            <v-btn @click=\"exportPDF()\" color=\"info\" x-large><v-icon left>mdi-file-download</v-icon>Export PDF </v-btn>\n          </v-col>\n        </v-row>\n      </v-card-text>\n    </v-card>\n\n    <v-card class=\"mb-4\">\n      <v-card-text>\n        <v-row align=\"center\">\n          <v-col>\n            <div><strong>Company:</strong> {{ object.company_name }}</div>\n            <div><strong>Event:</strong> {{ object.name }}</div>\n            <div><strong>Created:</strong> {{ localDatetime(object.created_at) }}</div>\n          </v-col>\n          <v-divider vertical></v-divider>\n          <v-col v-if=\"stats.scan_data\">\n            <v-row align=\"center\" justify=\"center\">\n              <v-col class=\"text-center\"\n                ><div class=\"text-h6 text--secondary\">Total Scans</div>\n                <div class=\"text-h2 text--primary\">\n                  <strong>{{ stats.scan_data.total_scans }}</strong>\n                </div></v-col\n              >\n              <v-col class=\"text-center\"\n                ><div class=\"text-h6 text--secondary\">Unique Scans</div>\n                <div class=\"text-h2 text--primary\">\n                  <strong>{{ stats.scan_data.unique_scans }}</strong>\n                </div></v-col\n              >\n            </v-row>\n          </v-col>\n        </v-row>\n      </v-card-text>\n    </v-card>\n\n    <v-card class=\"mb-4\">\n      <v-toolbar dark flat dense color=\"primary\">\n        <!-- <v-icon left></v-icon> -->\n        <v-toolbar-title>Number of QR Code Scans</v-toolbar-title>\n      </v-toolbar>\n      <!-- <v-card-title>Number of QR Code Scans</v-card-title> -->\n      <v-card-text>\n        <GenericChart v-if=\"chartData\" refs=\"printMe\" :chartdata=\"chartData\" />\n      </v-card-text>\n    </v-card>\n\n    <v-row>\n      <v-col cols=\"12\" md=\"6\" class=\"d-flex\">\n        <StatTableCard title=\"By Operating System\" :items=\"stats.overall.os_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"6\" class=\"d-flex\">\n        <StatTableCard title=\"By Platform\" :items=\"stats.overall.platform_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"6\" class=\"d-flex\">\n        <StatTableCard title=\"By Browser\" :items=\"stats.overall.browser_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"6\" class=\"d-flex\">\n        <StatTableCard title=\"By Device\" :items=\"stats.overall.device_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"4\" class=\"d-flex\">\n        <StatTableCard title=\"By City\" :items=\"stats.overall.city_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"4\" class=\"d-flex\">\n        <StatTableCard title=\"By State\" :items=\"stats.overall.state_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"4\" class=\"d-flex\">\n        <StatTableCard title=\"By Country\" :items=\"stats.overall.country_data\" :headers=\"tableHeaders\" />\n      </v-col>\n    </v-row>\n  </div>\n</template>\n\n<script>\nimport { EventBus } from '@/event-bus'\nimport { localDatetime } from '@/spaday/helpers'\n// import { getRandomColor } from '@/helpers/colors'\nimport { mapState, mapActions } from 'vuex'\nimport { StatTableCard, GenericChart } from '@/spaday/components'\n\n// js/html2canvas/html2canvas.min.js\n// js/pdfmake/pdfmake.min.js\n\nexport default {\n  components: {\n    StatTableCard,\n    // StatCard,\n    GenericChart,\n  },\n  data: () => ({\n    tableHeaders: [\n      { text: 'Name', value: 'label', align: 'left' },\n      { text: 'Scans', value: 'value', align: 'left' },\n      { text: 'Percentage', value: 'percentage', align: 'left' },\n    ],\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      object: (state) => state.events.object,\n      stats: (state) => state.events.stats,\n    }),\n\n    chartData() {\n      //   if (this.stats.overall.chart_data.length === 0) {\n      //     console.log('empty')\n      //     return {}\n      //   }\n      //   console.log('populated')\n\n      //   let chart = {\n      //     type: 'line',\n      //     options: {\n      //       // aspectRatio: 4 / 1,\n      //       legend: {\n      //         display: true,\n      //       },\n      //       scales: {\n      //         yAxes: [\n      //           {\n      //             ticks: {\n      //               beginAtZero: true,\n      //             },\n      //           },\n      //         ],\n      //       },\n      //     },\n      //   }\n\n      //   if (this.stats.datasets.length >= 1) {\n      //     console.log(this.stats.overall.chart_data)\n      //     let datasets = [\n      //       {\n      //         label: 'Overall',\n      //         data: this.stats.overall.chart_data.values,\n      //         barPercentage: 0.5,\n      //         // backgroundColor: 'rgba(105, 103,206,.5)',\n      //         borderColor: 'rgba(105, 103,206,.5)',\n      //         borderWidth: 5,\n      //         fill: false,\n      //       },\n      //     ]\n      //     // this.stats.datasets.forEach(function (item) {\n      //     //   datasets.push({\n      //     //     label: item.label,\n      //     //     data: item.data,\n      //     //     barPercentage: 0.5,\n      //     //     // backgroundColor: 'rgba(105, 103,206,.5)',\n      //     //     borderColor: getRandomColor(),\n      //     //     borderWidth: 2,\n      //     //     fill: false,\n      //     //   })\n      //     // })\n      //     chart.data = {\n      //       labels: this.stats.overall.chart_data.labels,\n      //       datasets: datasets,\n      //     }\n      //   }\n\n      //   return chart\n\n      return {\n        type: 'line',\n        data: {\n          labels: this.stats.overall.chart_data.labels,\n          datasets: [\n            {\n              label: 'Scans',\n              data: this.stats.overall.chart_data.values,\n              barPercentage: 0.5,\n              backgroundColor: 'rgba(105, 103,206,.5)',\n              borderColor: 'rgb(105, 103,206)',\n              borderWidth: 2,\n              fill: false,\n            },\n            //   {\n            //     label: 'Alligator',\n            //     data: this.stats.datasets[0].data,\n            //     barPercentage: 0.5,\n            //     // backgroundColor: 'rgba(105, 103,206,.5)',\n            //     borderColor: this.getRandomColor(),\n            //     borderWidth: 2,\n            //     fill: false,\n            //   },\n          ],\n        },\n        options: {\n          aspectRatio: 4 / 1,\n          legend: {\n            display: false,\n          },\n          scales: {\n            yAxes: [\n              {\n                ticks: {\n                  beginAtZero: true,\n                },\n              },\n            ],\n          },\n        },\n      }\n    },\n  },\n  mounted() {\n    this.getEvent(this.$route.params.pk)\n    this.getStats(this.$route.params.pk)\n  },\n  methods: {\n    // hasPermission,\n    localDatetime,\n    ...mapActions('events', {\n      getEvent: 'get',\n      getStats: 'getStats',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n    },\n    exportPDF() {\n      EventBus.$emit('show-generic-dialog', {\n        title: 'Oops!',\n        message:\n          'This feature is not implemented yet. <i>We are still working on it...</i> <img width=\"100%\" src=\"https://media.giphy.com/media/fQZX2aoRC1Tqw/giphy.gif\" class=\"mt-4\"/>',\n        color: 'warning',\n        icon: 'mdi-alert',\n      })\n\n      // html2canvas(this.$refs.printMe, {\n      //   onrendered: function (canvas) {\n      //     var data = canvas.toDataURL();\n      //     var docDefinition = {\n      //       content: [{\n      //         image: data,\n      //         width: 500,\n      //       }]\n      //     };\n\n      //     var pdfMake = require('pdfmake/build/pdfmake.js')\n      //     pdfMake.createPdf(docDefinition).download(\"qr_code_details.pdf\");\n\n      //   }\n      // });\n\n      //   var pdfMake = require('pdfmake/build/pdfmake.js')\n      //   if (pdfMake.vfs == undefined) {\n      //     var pdfFonts = require('pdfmake/build/vfs_fonts.js')\n      //     pdfMake.vfs = pdfFonts.pdfMake.vfs\n      //   }\n      //   var docDefinition = { content: 'This is an sample PDF printed with pdfMake' }\n      //   pdfMake.createPdf(docDefinition).download('optionalName.pdf')\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Stats.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Stats.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Stats.vue?vue&type=template&id=c5d65970\"\nimport script from \"./Stats.vue?vue&type=script&lang=js\"\nexport * from \"./Stats.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { List, Update, Create, Stats } from '@/views/event'\n\nconst routes = [\n  {\n    path: '/event',\n    name: 'Event',\n    component: List,\n    meta: {\n      public: false,\n      permissions: ['core.view_event'],\n    },\n  },\n  {\n    path: '/event/add',\n    name: 'AddEvent',\n    component: Create,\n    meta: {\n      public: false,\n      permissions: ['core.add_event'],\n    },\n  },\n  {\n    path: '/event/:pk/change',\n    name: 'ChangeEvent',\n    component: Update,\n    meta: {\n      public: false,\n      permissions: ['core.change_event'],\n    },\n  },\n  {\n    path: '/event/:pk/stats',\n    name: 'StatsEvent',\n    component: Stats,\n    meta: {\n      public: false,\n      permissions: ['core.view_event'],\n    },\n  },\n]\n\nexport default routes\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Create QR Code\",\"subtitle\":_vm.object.name,\"btnLabel\":\"Save QR Code\",\"canAdd\":_vm.hasPermission('core.add_qrcode'),\"saveLoading\":_vm.$store.state.qrcodes.object.loading},on:{\"submit\":_vm.submit}}),_c('v-form',{ref:\"form\"},[_c('v-card',{staticClass:\"mb-4\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-information-variant\")]),_c('v-toolbar-title',[_vm._v(\" General Info \")])],1),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.name),callback:function ($$v) {_vm.$set(_vm.object, \"name\", $$v)},expression:\"object.name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Redirect URL\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.redirect_url),callback:function ($$v) {_vm.$set(_vm.object, \"redirect_url\", $$v)},expression:\"object.redirect_url\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"label\":\"Event\",\"items\":_vm.events.items,\"loading\":_vm.events.loading,\"item-value\":\"pk\",\"item-text\":\"name\",\"hide-no-data\":\"\"},model:{value:(_vm.object.event),callback:function ($$v) {_vm.$set(_vm.object, \"event\", $$v)},expression:\"object.event\"}})],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"Create QR Code\"\n      :subtitle=\"object.name\"\n      btnLabel=\"Save QR Code\"\n      :canAdd=\"hasPermission('core.add_qrcode')\"\n      @submit=\"submit\"\n      :saveLoading=\"$store.state.qrcodes.object.loading\"\n    />\n\n    <v-form ref=\"form\">\n      <v-card class=\"mb-4\">\n        <v-toolbar dark flat dense color=\"primary\">\n          <v-icon left>mdi-information-variant</v-icon>\n          <v-toolbar-title> General Info </v-toolbar-title>\n        </v-toolbar>\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field v-model=\"object.name\" label=\"Name\" :rules=\"[rules.required]\"></v-text-field>\n            </v-col>\n\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field v-model=\"object.redirect_url\" label=\"Redirect URL\" :rules=\"[rules.required]\"></v-text-field>\n            </v-col>\n\n            <v-col cols=\"12\" md=\"6\">\n              <v-select\n                label=\"Event\"\n                v-model=\"object.event\"\n                :items=\"events.items\"\n                :loading=\"events.loading\"\n                item-value=\"pk\"\n                item-text=\"name\"\n                hide-no-data\n              ></v-select>\n            </v-col>\n\n            <!-- <v-col cols=\"12\" md=\"6\">\n              <v-file-input\n                v-model=\"object.logo\"\n                :rules=\"[rules.value]\"\n                show-size\n                small-chips\n                prepend-icon=\"mdi-image\"\n                accept=\"image/png, image/jpeg, image/jpg\"\n                label=\"Logo\"\n              ></v-file-input\n            ></v-col> -->\n          </v-row>\n        </v-card-text>\n      </v-card>\n    </v-form>\n  </div>\n</template>\n\n<script>\nimport { hasPermission } from '@/spaday/helpers'\nimport { FormHeader } from '@/spaday/components'\nimport { mapActions, mapState } from 'vuex'\n\nexport default {\n  components: {\n    FormHeader,\n  },\n  data: () => ({\n    object: {},\n    rules: {\n      required: (value) => !!value || 'Required.',\n\n      value: (value) => !value || value.size < 2000000 || 'Image size should be less than 2 MB!',\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      events: (state) => state.events.combobox,\n    }),\n  },\n  mounted() {\n    this.getEvents()\n    // if (this.$route.query.company) {\n    //   this.getCompanyEvents(parseInt(this.$route.query.company))\n    // } else {\n    //   this.getEvents()\n    // }\n  },\n  methods: {\n    hasPermission,\n    ...mapActions('qrcodes', {\n      createQRCode: 'create',\n    }),\n    ...mapActions('events', {\n      getEvents: 'getCombobox',\n    }),\n    // ...mapActions('companies', {\n    //   getCompanyEvents: 'getEvents',\n    // }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      // Submmitting object as form data to allow multipart/form-data\n      let formData = new FormData()\n      Object.keys(this.object).forEach((key) => {\n        if (this.object[key] !== null) {\n          formData.append(key, this.object[key])\n        }\n      })\n\n      this.createQRCode(this.object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Create.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Create.vue?vue&type=template&id=51958b17\"\nimport script from \"./Create.vue?vue&type=script&lang=js\"\nexport * from \"./Create.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ListHeader',{attrs:{\"title\":\"QR Codes\",\"subtitle\":\"Create and manage QR codes.\",\"btnLabel\":\"New QR Code\",\"route\":{ name: 'AddQRCode' },\"canAdd\":_vm.hasPermission('core.add_qrcode')}}),_c('v-card',[_c('v-card-title',{staticClass:\"text--primary\"},[_c('SearchField',{attrs:{\"label\":\"Search QR Codes...\"},on:{\"search\":_vm.updateSearch}})],1),_c('v-data-table',{attrs:{\"show-select\":false,\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.qrcodes.loading,\"items\":_vm.qrcodes.items,\"headers\":_vm.qrcodeTable.headers,\"search\":_vm.qrcodeTable.search,\"footer-props\":{\n        'items-per-page-options': [15, 25, 50, 100],\n        'show-current-page': true,\n      },\"options\":_vm.qrcodeTable.options,\"server-items-length\":_vm.qrcodeTable.totalItems},on:{\"update:options\":[function($event){return _vm.$set(_vm.qrcodeTable, \"options\", $event)},_vm.getPaginatedQRCodes]},scopedSlots:_vm._u([{key:\"item.event\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.event_name)+\" \")]}},{key:\"item.company\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.company_name)+\" \")]}},{key:\"item.created_at\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.localDatetime(item.created_at))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.qrcodeTable.actions},on:{\"edit\":function($event){return _vm.editQRCode(item)},\"confirm-delete\":function($event){return _vm.preDeleteQRCode(item)},\"visit-url\":function($event){return _vm.visitURL(item)},\"view-stats\":function($event){return _vm.viewStats(item)}}})]}}]),model:{value:(_vm.qrcodeTable.selected),callback:function ($$v) {_vm.$set(_vm.qrcodeTable, \"selected\", $$v)},expression:\"qrcodeTable.selected\"}})],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteQRCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <ListHeader\n      title=\"QR Codes\"\n      subtitle=\"Create and manage QR codes.\"\n      btnLabel=\"New QR Code\"\n      :route=\"{ name: 'AddQRCode' }\"\n      :canAdd=\"hasPermission('core.add_qrcode')\"\n    />\n\n    <v-card>\n      <v-card-title class=\"text--primary\">\n        <SearchField label=\"Search QR Codes...\" @search=\"updateSearch\" />\n      </v-card-title>\n      <v-data-table\n        v-model=\"qrcodeTable.selected\"\n        :show-select=\"false\"\n        item-key=\"pk\"\n        loading-text=\"Loading. Please wait...\"\n        :loading=\"qrcodes.loading\"\n        :items=\"qrcodes.items\"\n        :headers=\"qrcodeTable.headers\"\n        :search=\"qrcodeTable.search\"\n        :footer-props=\"{\n          'items-per-page-options': [15, 25, 50, 100],\n          'show-current-page': true,\n        }\"\n        :options.sync=\"qrcodeTable.options\"\n        :server-items-length=\"qrcodeTable.totalItems\"\n        @update:options=\"getPaginatedQRCodes\"\n      >\n        <template v-slot:item.event=\"{ item }\">\n          {{ item.event_name }}\n        </template>\n        <template v-slot:item.company=\"{ item }\">\n          {{ item.company_name }}\n        </template>\n        <template v-slot:item.created_at=\"{ item }\">\n          {{ localDatetime(item.created_at) }}\n        </template>\n        <template v-slot:item.actions=\"{ item }\">\n          <RowActions\n            :actions=\"qrcodeTable.actions\"\n            @edit=\"editQRCode(item)\"\n            @confirm-delete=\"preDeleteQRCode(item)\"\n            @visit-url=\"visitURL(item)\"\n            @view-stats=\"viewStats(item)\"\n          />\n        </template>\n      </v-data-table>\n    </v-card>\n\n    <DeleteConfirmation @confirm-delete=\"deleteQRCode\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission, getPaginationParams } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, ListHeader, RowActions, SearchField } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n    DeleteConfirmation,\n    ListHeader,\n    SearchField,\n  },\n  data: () => ({\n    qrcodeTable: {\n      options: {},\n      totalItems: 0,\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'Name', value: 'name' },\n        { text: 'Scans', value: 'total_scans', sortable: false },\n        { text: 'Redirect URL', value: 'redirect_url' },\n        { text: 'Event', value: 'event' },\n        { text: 'Company', value: 'company', sortable: false },\n        { text: 'Created', value: 'created_at' },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'Edit QR Code',\n          icon: 'mdi-pencil',\n          color: 'primary',\n          permissions: ['core.change_qrcode'],\n          emit: 'edit',\n        },\n        {\n          text: 'Delete QR Code',\n          icon: 'mdi-trash-can',\n          color: 'error',\n          permissions: ['core.delete_qrcode'],\n          emit: 'confirm-delete',\n        },\n        {\n          divider: true,\n        },\n        {\n          text: 'Test Redirect URL',\n          icon: 'mdi-link-variant',\n          color: 'warning',\n          permissions: ['core.view_qrcode'],\n          emit: 'visit-url',\n        },\n        {\n          text: 'View Stats',\n          icon: 'mdi-chart-bar',\n          color: 'success',\n          permissions: ['core.view_qrcode'],\n          emit: 'view-stats',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      qrcodes: (state) => state.qrcodes.all,\n    }),\n  },\n  mounted() {\n    // this.getQRCodes()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    getPaginationParams,\n    ...mapActions('qrcodes', {\n      getQRCodes: 'getAll',\n      preDeleteQRCode: 'preDelete',\n      deleteQRCode: 'delete',\n    }),\n    editQRCode(item) {\n      this.$router.push({ name: 'ChangeQRCode', params: { pk: item.pk } })\n    },\n    viewStats(item) {\n      this.$router.push({ name: 'StatsQRCode', params: { pk: item.pk } })\n    },\n    visitURL(item) {\n      window.open(item.absolute_url, '_blank')\n    },\n\n    /** Pagination handlers **/\n    getPaginatedQRCodes() {\n      const params = this.getPaginationParams(this.qrcodeTable.options, this.qrcodeTable.search)\n      this.getQRCodes(params).then((data) => {\n        this.qrcodeTable.totalPages = data.num_pages\n        this.qrcodeTable.totalItems = data.num_results\n      })\n    },\n    updateSearch(value) {\n      this.qrcodeTable.search = value\n      this.getPaginatedQRCodes()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./List.vue?vue&type=template&id=c2071396\"\nimport script from \"./List.vue?vue&type=script&lang=js\"\nexport * from \"./List.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"Update QR Code\",\"subtitle\":_vm.object.name,\"btnLabel\":\"Update QR Code\",\"canChange\":_vm.hasPermission('core.change_qrcode'),\"canDelete\":_vm.hasPermission('core.delete_qrcode'),\"deleteLoading\":_vm.$store.state.qrcodes.delete.loading,\"saveLoading\":_vm.$store.state.qrcodes.object.loading},on:{\"submit\":_vm.submit,\"delete\":function($event){return _vm.preDeleteQRCode(_vm.object)}}}),_c('v-form',{ref:\"form\",attrs:{\"readonly\":!_vm.hasPermission('core.change_qrcode')}},[_c('v-card',{staticClass:\"mb-4\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-information-variant\")]),_c('v-toolbar-title',[_vm._v(\" General Info \")])],1),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Name\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.name),callback:function ($$v) {_vm.$set(_vm.object, \"name\", $$v)},expression:\"object.name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Redirect URL\",\"rules\":[_vm.rules.required]},model:{value:(_vm.object.redirect_url),callback:function ($$v) {_vm.$set(_vm.object, \"redirect_url\", $$v)},expression:\"object.redirect_url\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"label\":\"Event\",\"items\":_vm.events.items,\"loading\":_vm.events.loading,\"item-value\":\"pk\",\"item-text\":\"name\",\"hide-no-data\":\"\"},model:{value:(_vm.object.event),callback:function ($$v) {_vm.$set(_vm.object, \"event\", $$v)},expression:\"object.event\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Code\",\"disabled\":\"\"},model:{value:(_vm.object.code),callback:function ($$v) {_vm.$set(_vm.object, \"code\", $$v)},expression:\"object.code\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"label\":\"Absolute URL\",\"readonly\":\"\"},model:{value:(_vm.object.absolute_url),callback:function ($$v) {_vm.$set(_vm.object, \"absolute_url\", $$v)},expression:\"object.absolute_url\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [_c('v-img',{staticClass:\"mb-4\",attrs:{\"max-height\":\"400\",\"max-width\":\"400\",\"src\":_vm.object.image}},[_c('v-fade-transition',[(hover)?_c('v-overlay',{attrs:{\"absolute\":\"\",\"color\":\"#000\",\"opacity\":\".75\"}},[_c('v-btn',{attrs:{\"color\":\"secondary\",\"x-large\":\"\"},on:{\"click\":function($event){return _vm.downloadWithAxios(_vm.object.image, `${_vm.object.event_name}_${_vm.object.name}.svg`)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-file-download\")]),_vm._v(\" Download QR Code \")],1)],1):_vm._e()],1)],1)]}}])})],1)],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('div',{staticClass:\"caption\"},[_vm._v(\" QR Code ID \"),_c('strong',[_vm._v(_vm._s(_vm.object.pk))])])],1)],1)],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.onConfirmDeleteQRCode}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"Update QR Code\"\n      :subtitle=\"object.name\"\n      btnLabel=\"Update QR Code\"\n      :canChange=\"hasPermission('core.change_qrcode')\"\n      :canDelete=\"hasPermission('core.delete_qrcode')\"\n      @submit=\"submit\"\n      @delete=\"preDeleteQRCode(object)\"\n      :deleteLoading=\"$store.state.qrcodes.delete.loading\"\n      :saveLoading=\"$store.state.qrcodes.object.loading\"\n    />\n\n    <v-form ref=\"form\" :readonly=\"!hasPermission('core.change_qrcode')\">\n      <v-card class=\"mb-4\">\n        <v-toolbar dark flat dense color=\"primary\">\n          <v-icon left>mdi-information-variant</v-icon>\n          <v-toolbar-title> General Info </v-toolbar-title>\n        </v-toolbar>\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field v-model=\"object.name\" label=\"Name\" :rules=\"[rules.required]\"></v-text-field>\n            </v-col>\n\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field v-model=\"object.redirect_url\" label=\"Redirect URL\" :rules=\"[rules.required]\">\n              </v-text-field>\n            </v-col>\n\n            <v-col cols=\"12\" md=\"6\">\n              <v-select\n                label=\"Event\"\n                v-model=\"object.event\"\n                :items=\"events.items\"\n                :loading=\"events.loading\"\n                item-value=\"pk\"\n                item-text=\"name\"\n                hide-no-data\n              ></v-select>\n            </v-col>\n\n            <!-- <v-col cols=\"12\" md=\"6\">\n              <v-file-input\n                disabled\n                v-model=\"object.logo\"\n                :rules=\"[rules.value]\"\n                show-size\n                small-chips\n                prepend-icon=\"mdi-image\"\n                accept=\"image/png, image/jpeg, image/jpg\"\n                label=\"Logo\"\n              >\n              </v-file-input>\n            </v-col> -->\n\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field v-model=\"object.code\" label=\"Code\" disabled></v-text-field>\n            </v-col>\n\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field v-model=\"object.absolute_url\" label=\"Absolute URL\" readonly></v-text-field>\n            </v-col>\n\n            <v-col cols=\"12\">\n              <v-hover>\n                <template v-slot:default=\"{ hover }\">\n                  <v-img max-height=\"400\" max-width=\"400\" :src=\"object.image\" class=\"mb-4\">\n                    <v-fade-transition>\n                      <v-overlay v-if=\"hover\" absolute color=\"#000\" opacity=\".75\">\n                        <v-btn\n                          color=\"secondary\"\n                          x-large\n                          @click=\"downloadWithAxios(object.image, `${object.event_name}_${object.name}.svg`)\"\n                        >\n                          <v-icon left>mdi-file-download</v-icon> Download QR Code\n                        </v-btn>\n                      </v-overlay>\n                    </v-fade-transition>\n                  </v-img>\n                </template>\n              </v-hover>\n            </v-col>\n          </v-row>\n        </v-card-text>\n        <v-divider></v-divider>\n        <v-card-actions>\n          <v-spacer></v-spacer>\n          <div class=\"caption\">\n            QR Code ID <strong>{{ object.pk }}</strong>\n          </div>\n        </v-card-actions>\n      </v-card>\n    </v-form>\n\n    <DeleteConfirmation @confirm-delete=\"onConfirmDeleteQRCode\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, FormHeader } from '@/spaday/components'\nimport { downloadWithAxios } from '@/spaday/helpers'\n\nexport default {\n  components: {\n    DeleteConfirmation,\n    FormHeader,\n  },\n  data: () => ({\n    rules: {\n      required: (value) => !!value || 'Required.',\n\n      value: (value) => !value || value.size < 2000000 || 'Image size should be less than 2 MB!',\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      object: (state) => state.qrcodes.object,\n      events: (state) => state.events.combobox,\n    }),\n  },\n  mounted() {\n    this.getQRCode(this.$route.params.pk)\n    this.getEvents()\n    // if (this.object.company) {\n    //   this.getCompanyEvents(parseInt(this.object.company))\n    // } else {\n    //   this.getEvents()\n    // }\n  },\n  beforeDestroy() {\n    this.clearQRCode()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    downloadWithAxios,\n    ...mapActions('qrcodes', {\n      getQRCode: 'get',\n      updateQRCode: 'update',\n      preDeleteQRCode: 'preDelete',\n      deleteQRCode: 'delete',\n      clearQRCode: 'clear',\n    }),\n    ...mapActions('events', {\n      getEvents: 'getCombobox',\n    }),\n    // ...mapActions('companies', {\n    //   getCompanyEvents: 'getEvents',\n    // }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n\n      // Submmitting object as form data to allow multipart/form-data\n      let formData = new FormData()\n      Object.keys(this.object).forEach((key) => {\n        if (this.object[key] !== null) {\n          formData.append(key, this.object[key])\n        }\n      })\n\n      this.updateQRCode({ id: this.object.pk, data: this.object }).then(() => {\n        this.$router.go(-1)\n      })\n    },\n    onConfirmDeleteQRCode(object) {\n      this.deleteQRCode(object).then(() => {\n        this.$router.go(-1)\n      })\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Update.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Update.vue?vue&type=template&id=0097f8a1\"\nimport script from \"./Update.vue?vue&type=script&lang=js\"\nexport * from \"./Update.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-card',{staticClass:\"mb-4\",attrs:{\"color\":\"transparent\"}},[_c('v-card-text',[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',[_c('v-card-title',{staticClass:\"text--primary\"},[_vm._v(\"QR Code Stats\")])],1),_c('v-col',{staticClass:\"text-right\"},[_c('v-btn',{staticClass:\"ma-2\",attrs:{\"small\":\"\",\"fab\":\"\",\"depressed\":\"\",\"icon\":\"\",\"outlined\":\"\"},on:{\"click\":function($event){return _vm.$router.go(-1)}}},[_c('v-icon',[_vm._v(\"mdi-arrow-left\")])],1),_c('v-btn',{attrs:{\"color\":\"info\",\"x-large\":\"\"},on:{\"click\":function($event){return _vm.exportPDF()}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-file-download\")]),_vm._v(\"Export PDF \")],1)],1)],1)],1)],1),_c('v-card',{staticClass:\"mb-4\"},[_c('v-card-text',[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',[_c('div',[_c('strong',[_vm._v(\"Company:\")]),_vm._v(\" \"+_vm._s(_vm.object.company_name))]),_c('div',[_c('strong',[_vm._v(\"Event:\")]),_vm._v(\" \"+_vm._s(_vm.object.event_name))]),_c('div',[_c('strong',[_vm._v(\"Internal Name:\")]),_vm._v(\" \"+_vm._s(_vm.object.name))]),_c('div',[_c('strong',[_vm._v(\"QR Code:\")]),_vm._v(\" \"+_vm._s(_vm.object.code))]),_c('div',[_c('strong',[_vm._v(\"Redirect URL:\")]),_vm._v(\" \"+_vm._s(_vm.object.redirect_url))]),_c('div',[_c('strong',[_vm._v(\"Created:\")]),_vm._v(\" \"+_vm._s(_vm.localDatetime(_vm.object.created_at)))])]),_c('v-divider',{attrs:{\"vertical\":\"\"}}),(_vm.object.image)?_c('v-col',{staticClass:\"text-center\"},[_c('v-hover',{scopedSlots:_vm._u([{key:\"default\",fn:function({ hover }){return [_c('v-img',{staticClass:\"ma-auto\",attrs:{\"max-height\":\"150\",\"max-width\":\"150\",\"src\":_vm.object.image}},[_c('v-fade-transition',[(hover)?_c('v-overlay',{attrs:{\"absolute\":\"\",\"color\":\"#000\",\"opacity\":\".75\"}},[_c('v-btn',{attrs:{\"color\":\"secondary\"},on:{\"click\":function($event){return _vm.downloadWithAxios(_vm.object.image)}}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-file-download\")]),_vm._v(\" Download\")],1)],1):_vm._e()],1)],1)]}}],null,false,3913618271)})],1):_vm._e(),_c('v-divider',{attrs:{\"vertical\":\"\"}}),(_vm.stats.scan_data)?_c('v-col',[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c('v-col',{staticClass:\"text-center\"},[_c('div',{staticClass:\"text-h6 text--secondary\"},[_vm._v(\"Total Scans\")]),_c('div',{staticClass:\"text-h2 text--primary\"},[_c('strong',[_c('AnimatedInteger',{attrs:{\"value\":_vm.stats.scan_data.total_scans,\"formatter\":_vm.formatNumber}})],1)])]),_c('v-col',{staticClass:\"text-center\"},[_c('div',{staticClass:\"text-h6 text--secondary\"},[_vm._v(\"Unique Scans\")]),_c('div',{staticClass:\"text-h2 text--primary\"},[_c('strong',[_c('AnimatedInteger',{attrs:{\"value\":_vm.stats.scan_data.unique_scans,\"formatter\":_vm.formatNumber}})],1)])])],1)],1):_vm._e()],1)],1)],1),_c('v-card',{staticClass:\"mb-4\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-toolbar-title',[_vm._v(\"Number of QR Code Scans\")])],1),_c('v-card-text',[_c('GenericChart',{attrs:{\"refs\":\"printMe\",\"chartdata\":_vm.chartData}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Operating System\",\"items\":_vm.stats.os_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Platform\",\"items\":_vm.stats.platform_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Browser\",\"items\":_vm.stats.browser_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Device\",\"items\":_vm.stats.device_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('StatTableCard',{attrs:{\"title\":\"By City\",\"items\":_vm.stats.city_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('StatTableCard',{attrs:{\"title\":\"By State\",\"items\":_vm.stats.state_data,\"headers\":_vm.tableHeaders}})],1),_c('v-col',{staticClass:\"d-flex\",attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('StatTableCard',{attrs:{\"title\":\"By Country\",\"items\":_vm.stats.country_data,\"headers\":_vm.tableHeaders}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <v-card class=\"mb-4\" color=\"transparent\">\n      <v-card-text>\n        <v-row align=\"center\" justify=\"center\">\n          <v-col>\n            <v-card-title class=\"text--primary\">QR Code Stats</v-card-title>\n            <!-- <v-card-subtitle\n              ><strong>{{ object.name }}</strong> - {{ object.code }}</v-card-subtitle\n            > -->\n          </v-col>\n          <v-col class=\"text-right\">\n            <v-btn class=\"ma-2\" small fab depressed icon outlined @click=\"$router.go(-1)\"\n              ><v-icon>mdi-arrow-left</v-icon>\n            </v-btn>\n\n            <v-btn @click=\"exportPDF()\" color=\"info\" x-large><v-icon left>mdi-file-download</v-icon>Export PDF </v-btn>\n          </v-col>\n        </v-row>\n      </v-card-text>\n    </v-card>\n\n    <v-card class=\"mb-4\">\n      <v-card-text>\n        <v-row align=\"center\">\n          <v-col>\n            <div><strong>Company:</strong> {{ object.company_name }}</div>\n            <div><strong>Event:</strong> {{ object.event_name }}</div>\n            <div><strong>Internal Name:</strong> {{ object.name }}</div>\n            <div><strong>QR Code:</strong> {{ object.code }}</div>\n            <div><strong>Redirect URL:</strong> {{ object.redirect_url }}</div>\n            <div><strong>Created:</strong> {{ localDatetime(object.created_at) }}</div>\n          </v-col>\n          <v-divider vertical></v-divider>\n          <v-col v-if=\"object.image\" class=\"text-center\">\n            <v-hover>\n              <template v-slot:default=\"{ hover }\">\n                <v-img class=\"ma-auto\" max-height=\"150\" max-width=\"150\" :src=\"object.image\">\n                  <v-fade-transition>\n                    <v-overlay v-if=\"hover\" absolute color=\"#000\" opacity=\".75\">\n                      <v-btn color=\"secondary\" @click=\"downloadWithAxios(object.image)\"\n                        ><v-icon left>mdi-file-download</v-icon> Download</v-btn\n                      >\n                    </v-overlay>\n                  </v-fade-transition>\n                </v-img>\n              </template></v-hover\n            >\n          </v-col>\n          <v-divider vertical></v-divider>\n          <v-col v-if=\"stats.scan_data\">\n            <v-row align=\"center\" justify=\"center\">\n              <v-col class=\"text-center\"\n                ><div class=\"text-h6 text--secondary\">Total Scans</div>\n                <div class=\"text-h2 text--primary\">\n                  <strong>\n                    <AnimatedInteger :value=\"stats.scan_data.total_scans\" :formatter=\"formatNumber\" />\n                  </strong></div\n              ></v-col>\n              <v-col class=\"text-center\"\n                ><div class=\"text-h6 text--secondary\">Unique Scans</div>\n                <div class=\"text-h2 text--primary\">\n                  <strong>\n                    <AnimatedInteger :value=\"stats.scan_data.unique_scans\" :formatter=\"formatNumber\" />\n                  </strong></div\n              ></v-col>\n            </v-row>\n          </v-col>\n        </v-row>\n      </v-card-text>\n    </v-card>\n\n    <v-card class=\"mb-4\">\n      <v-toolbar dark flat dense color=\"primary\">\n        <!-- <v-icon left></v-icon> -->\n        <v-toolbar-title>Number of QR Code Scans</v-toolbar-title>\n      </v-toolbar>\n      <!-- <v-card-title>Number of QR Code Scans</v-card-title> -->\n      <v-card-text>\n        <GenericChart refs=\"printMe\" :chartdata=\"chartData\" />\n      </v-card-text>\n    </v-card>\n\n    <v-row>\n      <v-col cols=\"12\" md=\"6\" class=\"d-flex\">\n        <StatTableCard title=\"By Operating System\" :items=\"stats.os_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"6\" class=\"d-flex\">\n        <StatTableCard title=\"By Platform\" :items=\"stats.platform_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"6\" class=\"d-flex\">\n        <StatTableCard title=\"By Browser\" :items=\"stats.browser_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"6\" class=\"d-flex\">\n        <StatTableCard title=\"By Device\" :items=\"stats.device_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"4\" class=\"d-flex\">\n        <StatTableCard title=\"By City\" :items=\"stats.city_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"4\" class=\"d-flex\">\n        <StatTableCard title=\"By State\" :items=\"stats.state_data\" :headers=\"tableHeaders\" />\n      </v-col>\n\n      <v-col cols=\"12\" md=\"4\" class=\"d-flex\">\n        <StatTableCard title=\"By Country\" :items=\"stats.country_data\" :headers=\"tableHeaders\" />\n      </v-col>\n    </v-row>\n  </div>\n</template>\n\n<script>\nimport { EventBus } from '@/event-bus'\nimport { localDatetime } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { StatTableCard, GenericChart } from '@/spaday/components'\nimport { downloadWithAxios } from '@/spaday/helpers'\nimport { AnimatedInteger } from '@/spaday/components'\n\nexport default {\n  components: {\n    StatTableCard,\n    GenericChart,\n    AnimatedInteger,\n  },\n  data: () => ({\n    tableHeaders: [\n      { text: 'Name', value: 'label', align: 'left' },\n      { text: 'Scans', value: 'value', align: 'left' },\n      { text: 'Percentage', value: 'percentage', align: 'left' },\n    ],\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      object: (state) => state.qrcodes.object,\n      stats: (state) => state.qrcodes.stats,\n    }),\n    chartData() {\n      return {\n        type: 'line',\n        data: {\n          labels: this.stats.chart_data.labels,\n          datasets: [\n            {\n              label: 'Scans',\n              data: this.stats.chart_data.values,\n              barPercentage: 0.5,\n              backgroundColor: 'rgba(105, 103,206,.5)',\n              borderColor: 'rgb(105, 103,206)',\n              borderWidth: 2,\n              fill: false,\n            },\n          ],\n        },\n        options: {\n          aspectRatio: 4 / 1,\n          legend: {\n            display: false,\n          },\n          scales: {\n            yAxes: [\n              {\n                ticks: {\n                  beginAtZero: true,\n                },\n              },\n            ],\n          },\n        },\n      }\n    },\n  },\n  mounted() {\n    this.getScan(this.$route.params.pk)\n    this.getStats(this.$route.params.pk)\n  },\n  methods: {\n    // hasPermission,\n    downloadWithAxios,\n    localDatetime,\n    ...mapActions('qrcodes', {\n      getScan: 'get',\n      getStats: 'getStats',\n    }),\n    submit() {\n      if (!this.$refs.form.validate()) return\n    },\n    exportPDF() {\n      EventBus.$emit('show-generic-dialog', {\n        title: 'Oops!',\n        message:\n          'This feature is not implemented yet. <i>We are still working on it...</i> <img width=\"100%\" src=\"https://media.giphy.com/media/fQZX2aoRC1Tqw/giphy.gif\" class=\"mt-4\"/>',\n        color: 'warning',\n        icon: 'mdi-alert',\n      })\n    },\n    formatNumber(value) {\n      if (isNaN(value)) {\n        return '--'\n      }\n      return new Intl.NumberFormat('en-US').format(value)\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Stats.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Stats.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Stats.vue?vue&type=template&id=f403bd0a\"\nimport script from \"./Stats.vue?vue&type=script&lang=js\"\nexport * from \"./Stats.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { List, Update, Create, Stats } from '@/views/qrcode'\n\nconst routes = [\n  {\n    path: '/qrcode',\n    name: 'QRCode',\n    component: List,\n    meta: {\n      public: false,\n      permissions: ['core.view_qrcode'],\n    },\n  },\n  {\n    path: '/qrcode/add',\n    name: 'AddQRCode',\n    component: Create,\n    meta: {\n      public: false,\n      permissions: ['core.add_qrcode'],\n    },\n  },\n  {\n    path: '/qrcode/:pk/change',\n    name: 'ChangeQRCode',\n    component: Update,\n    meta: {\n      public: false,\n      permissions: ['core.change_qrcode'],\n    },\n  },\n  {\n    path: '/qrcode/:pk/stats',\n    name: 'StatsQRCode',\n    component: Stats,\n    meta: {\n      public: false,\n      permissions: ['core.view_qrcode'],\n    },\n  },\n]\n\nexport default routes\n\n// export default routes.map((route) => {\n//   const meta = {\n//     public: false,\n//   }\n//   return {\n//     ...route,\n//     meta,\n//   }\n// })\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('ListHeader',{attrs:{\"title\":\"Scans\",\"subtitle\":\"Create and manage scans.\"}}),_c('v-card',[_c('v-card-title',{staticClass:\"text--primary\"},[_c('SearchField',{attrs:{\"label\":\"Search Scans...\"},on:{\"search\":_vm.updateSearch}})],1),_c('v-data-table',{attrs:{\"show-select\":false,\"item-key\":\"pk\",\"loading-text\":\"Loading. Please wait...\",\"loading\":_vm.scans.loading,\"items\":_vm.scans.items,\"headers\":_vm.scanTable.headers,\"search\":_vm.scanTable.search,\"footer-props\":{\n        'items-per-page-options': [15, 25, 50, 100],\n        'show-current-page': true,\n      },\"options\":_vm.scanTable.options,\"server-items-length\":_vm.scanTable.totalItems},on:{\"update:options\":[function($event){return _vm.$set(_vm.scanTable, \"options\", $event)},_vm.getPaginatedScans]},scopedSlots:_vm._u([{key:\"item.browser\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.browser_version)+\" \")]}},{key:\"item.os\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.os_version)+\" \")]}},{key:\"item.device\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(item.device_family)+\" \")]}},{key:\"item.created_at\",fn:function({ item }){return [_vm._v(\" \"+_vm._s(_vm.localDatetime(item.created_at))+\" \")]}},{key:\"item.actions\",fn:function({ item }){return [_c('RowActions',{attrs:{\"actions\":_vm.scanTable.actions},on:{\"edit\":function($event){return _vm.editScan(item)},\"confirm-delete\":function($event){return _vm.preDeleteScan(item)}}})]}}]),model:{value:(_vm.scanTable.selected),callback:function ($$v) {_vm.$set(_vm.scanTable, \"selected\", $$v)},expression:\"scanTable.selected\"}})],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteScan}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <ListHeader title=\"Scans\" subtitle=\"Create and manage scans.\" />\n\n    <v-card>\n      <v-card-title class=\"text--primary\">\n        <SearchField label=\"Search Scans...\" @search=\"updateSearch\" />\n      </v-card-title>\n      <v-data-table\n        v-model=\"scanTable.selected\"\n        :show-select=\"false\"\n        item-key=\"pk\"\n        loading-text=\"Loading. Please wait...\"\n        :loading=\"scans.loading\"\n        :items=\"scans.items\"\n        :headers=\"scanTable.headers\"\n        :search=\"scanTable.search\"\n        :footer-props=\"{\n          'items-per-page-options': [15, 25, 50, 100],\n          'show-current-page': true,\n        }\"\n        :options.sync=\"scanTable.options\"\n        :server-items-length=\"scanTable.totalItems\"\n        @update:options=\"getPaginatedScans\"\n      >\n        <template v-slot:item.browser=\"{ item }\">\n          {{ item.browser_version }}\n        </template>\n        <template v-slot:item.os=\"{ item }\">\n          {{ item.os_version }}\n        </template>\n        <template v-slot:item.device=\"{ item }\">\n          {{ item.device_family }}\n        </template>\n\n        <template v-slot:item.created_at=\"{ item }\">\n          {{ localDatetime(item.created_at) }}\n        </template>\n        <template v-slot:item.actions=\"{ item }\">\n          <RowActions :actions=\"scanTable.actions\" @edit=\"editScan(item)\" @confirm-delete=\"preDeleteScan(item)\" />\n        </template>\n      </v-data-table>\n    </v-card>\n\n    <DeleteConfirmation @confirm-delete=\"deleteScan\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission, hasAnyPermission, getPaginationParams } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, ListHeader, RowActions, SearchField } from '@/spaday/components'\n\nexport default {\n  components: {\n    RowActions,\n    DeleteConfirmation,\n    ListHeader,\n    SearchField,\n  },\n  data: () => ({\n    scanTable: {\n      options: {},\n      totalItems: 0,\n      search: '',\n      selected: [],\n      headers: [\n        { text: 'IP Address', value: 'ip_address' },\n        { text: 'Location', value: 'location', sortable: false },\n        { text: 'QR Code', value: 'qr_code' },\n        { text: 'Browser', value: 'browser', sortable: false  },\n        { text: 'OS', value: 'os', sortable: false  },\n        { text: 'Device', value: 'device', sortable: false },\n        { text: 'Platform', value: 'platform', sortable: false },\n        { text: 'Created', value: 'created_at' },\n        { text: 'Actions', value: 'actions', sortable: false },\n      ],\n      actions: [\n        {\n          text: 'View Scan',\n          icon: 'mdi-eye',\n          color: 'primary',\n          permissions: ['core.view_scan'],\n          emit: 'edit',\n        },\n        {\n          text: 'Delete Scan',\n          icon: 'mdi-trash-can',\n          color: 'error',\n          permissions: ['core.delete_scan'],\n          emit: 'confirm-delete',\n        },\n      ],\n    },\n  }),\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      scans: (state) => state.scans.all,\n    }),\n  },\n  mounted() {\n    // this.getScans()\n  },\n  methods: {\n    hasPermission,\n    hasAnyPermission,\n    localDatetime,\n    getPaginationParams,\n    ...mapActions('scans', {\n      getScans: 'getAll',\n      preDeleteScan: 'preDelete',\n      deleteScan: 'delete',\n    }),\n    editScan(item) {\n      this.$router.push({ name: 'ViewScan', params: { pk: item.pk } })\n    },\n\n    /** Pagination handlers **/\n    getPaginatedScans() {\n      const params = this.getPaginationParams(this.scanTable.options, this.scanTable.search)\n      this.getScans(params).then((data) => {\n        this.scanTable.totalPages = data.num_pages\n        this.scanTable.totalItems = data.num_results\n      })\n    },\n    updateSearch(value) {\n      this.scanTable.search = value\n      this.getPaginatedScans()\n    },\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./List.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./List.vue?vue&type=template&id=1fd4d088\"\nimport script from \"./List.vue?vue&type=script&lang=js\"\nexport * from \"./List.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('FormHeader',{attrs:{\"title\":\"View Scan\",\"subtitle\":`${_vm.object.ip_address} - ${_vm.object.qr_code}`,\"btnLabel\":\"Update Scan\",\"canDelete\":_vm.hasPermission('core.delete_scan'),\"deleteLoading\":_vm.$store.state.scans.delete.loading},on:{\"delete\":function($event){return _vm.preDeleteScan(_vm.object)}}}),_c('v-form',{ref:\"form\",attrs:{\"readonly\":\"\"}},[_c('v-card',{staticClass:\"mb-4\"},[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-information-variant\")]),_c('v-toolbar-title',[_vm._v(\" General Info \")])],1),_c('v-card-text',[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-text-field',{attrs:{\"value\":_vm.object.ip_address,\"label\":\"IP Address\"}})],1)],1),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('label',[_vm._v(\"IP Data\")]),_c('vue-json-pretty',{staticClass:\"mb-8\",attrs:{\"data\":_vm.object.ip_data,\"showDoubleQuotes\":false,\"showLine\":false}})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('label',[_vm._v(\"User Agent Data\")]),_c('vue-json-pretty',{attrs:{\"data\":_vm.object.ua_data,\"showDoubleQuotes\":false,\"showLine\":false}})],1)],1)],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('div',{staticClass:\"caption\"},[_vm._v(\" Scan ID \"),_c('strong',[_vm._v(_vm._s(_vm.object.pk))])])],1)],1)],1),_c('DeleteConfirmation',{on:{\"confirm-delete\":_vm.deleteScan}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <div>\n    <FormHeader\n      title=\"View Scan\"\n      :subtitle=\"`${object.ip_address} - ${object.qr_code}`\"\n      btnLabel=\"Update Scan\"\n      :canDelete=\"hasPermission('core.delete_scan')\"\n      @delete=\"preDeleteScan(object)\"\n      :deleteLoading=\"$store.state.scans.delete.loading\"\n    />\n\n    <v-form ref=\"form\" readonly>\n      <v-card class=\"mb-4\">\n        <v-toolbar dark flat dense color=\"primary\">\n          <v-icon left>mdi-information-variant</v-icon>\n          <v-toolbar-title> General Info </v-toolbar-title>\n        </v-toolbar>\n        <v-card-text>\n          <v-row>\n            <v-col cols=\"12\" md=\"6\">\n              <v-text-field :value=\"object.ip_address\" label=\"IP Address\"></v-text-field>\n            </v-col>\n          </v-row>\n          <v-row>\n            <v-col cols=\"12\" md=\"6\">\n              <label>IP Data</label>\n              <vue-json-pretty :data=\"object.ip_data\" :showDoubleQuotes=\"false\" :showLine=\"false\" class=\"mb-8\">\n              </vue-json-pretty>\n            </v-col>\n            <v-col cols=\"12\" md=\"6\">\n              <label>User Agent Data</label>\n              <vue-json-pretty :data=\"object.ua_data\" :showDoubleQuotes=\"false\" :showLine=\"false\"> </vue-json-pretty>\n            </v-col>\n          </v-row>\n        </v-card-text>\n        <v-divider></v-divider>\n        <v-card-actions\n          ><v-spacer></v-spacer>\n          <div class=\"caption\">\n            Scan ID <strong>{{ object.pk }}</strong>\n          </div></v-card-actions\n        >\n      </v-card>\n    </v-form>\n\n    <DeleteConfirmation @confirm-delete=\"deleteScan\" />\n  </div>\n</template>\n\n<script>\nimport { localDatetime, hasPermission } from '@/spaday/helpers'\nimport { mapState, mapActions } from 'vuex'\nimport { DeleteConfirmation, FormHeader } from '@/spaday/components'\nimport VueJsonPretty from 'vue-json-pretty'\n\nimport 'vue-json-pretty/lib/styles.css'\nimport 'highlight.js/styles/default.css'\n\nexport default {\n  components: {\n    DeleteConfirmation,\n    FormHeader,\n    VueJsonPretty,\n  },\n  computed: {\n    ...mapState({\n      user: (state) => state.account.user,\n      object: (state) => state.scans.object,\n    }),\n  },\n  mounted() {\n    this.getScan(this.$route.params.pk)\n  },\n  beforeDestroy() {\n    this.clearScan()\n  },\n  methods: {\n    hasPermission,\n    localDatetime,\n    ...mapActions('scans', {\n      getScan: 'get',\n      preDeleteScan: 'preDelete',\n      deleteScan: 'delete',\n      clearScan: 'clear',\n    }),\n  },\n}\n</script>\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./View.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./View.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./View.vue?vue&type=template&id=3b78fc5c\"\nimport script from \"./View.vue?vue&type=script&lang=js\"\nexport * from \"./View.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { List, View } from '@/views/scan'\n\nconst routes = [\n  {\n    path: '/scan',\n    name: 'Scan',\n    component: List,\n    meta: {\n      public: false,\n      permissions: ['core.view_scan'],\n    },\n  },\n  //   {\n  //     path: '/scan/add',\n  //     name: 'AddScan',\n  //     component: Create,\n  //     meta: {\n  //       public: false,\n  //       permissions: ['core.add_scan'],\n  //     },\n  //   },\n  //   {\n  //     path: '/scan/:pk/change',\n  //     name: 'ChangeScan',\n  //     component: Update,\n  //     meta: {\n  //       public: false,\n  //       permissions: ['core.change_scan'],\n  //     },\n  {\n    path: '/scan/:pk/view',\n    name: 'ViewScan',\n    component: View,\n    meta: {\n      public: false,\n      permissions: ['core.view_scan'],\n    },\n  },\n]\n\nexport default routes\n","/**\n * The vue router defines all of the routes for the application, and contains\n * a function that runs before each route change to prevent unauthenticated\n * users from accessing restricted routes.\n */\n\nimport Vue from 'vue'\nimport VueRouter from 'vue-router'\n// import store from '@/store/'\n\nimport { auth_routes, user_routes, group_routes, auditlog_routes, taskresult_routes } from '@/spaday/router'\nimport { PageNotFound, AdminBase } from '@/spaday/views'\n\nimport company_routes from '@/router/company.js'\nimport event_routes from '@/router/event.js'\nimport qrcode_routes from '@/router/qrcode.js'\nimport scan_routes from '@/router/scan.js'\n\nVue.use(VueRouter)\n\nconst routes = [\n  {\n    path: '/',\n    redirect: { name: 'Dashboard' },\n    component: AdminBase,\n    children: [\n      {\n        path: '/dash',\n        name: 'Dashboard',\n        component: () => import('@/views/Dashboard.vue'),\n      },\n    ]\n      .concat(user_routes)\n      .concat(group_routes)\n      .concat(auditlog_routes)\n      .concat(taskresult_routes)\n      .concat(company_routes)\n      .concat(event_routes)\n      .concat(qrcode_routes)\n      .concat(scan_routes),\n    meta: {\n      public: false,\n    },\n  },\n  // and finally the default route, when none of the above matches\n  { path: '*', component: PageNotFound },\n]\n\nconst router = new VueRouter({\n  mode: 'history',\n  routes: routes.concat(auth_routes),\n  base: '/admin/',\n})\n\nrouter.beforeEach((to, from, next) => {\n  const authenticated = sessionStorage.getItem('loggedIn')\n  const onlyLoggedOut = to.matched.some((record) => record.meta.onlyLoggedOut)\n  const isPublic = to.matched.some((record) => record.meta.public)\n  if (!isPublic && !authenticated) {\n    // this route requires auth, check if logged in\n    // if not, redirect to login page.\n    return next({\n      name: 'Login',\n      query: { redirect: to.fullPath },\n    })\n  }\n  if (authenticated && onlyLoggedOut) {\n    return next({ name: 'Dashboard' })\n  }\n  next()\n})\n\nexport default router\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PageNotFound.vue?vue&type=style&index=0&id=00e4e725&prod&scoped=true&lang=css\"","export const localDatetime = (dt_str) => {\n  // ISO8601 eg - 2021-11-25T11:06:59.828851-05:00\n  let isoDateTime = new Date(dt_str)\n  return isoDateTime.toLocaleDateString() + ' ' + isoDateTime.toLocaleTimeString()\n}\n","import axios from 'axios'\n\nexport const forceFileDownload = (response, title) => {\n  const url = window.URL.createObjectURL(new Blob([response.data]))\n  const link = document.createElement('a')\n  link.href = url\n  link.setAttribute('download', title)\n  document.body.appendChild(link)\n  link.click()\n}\n\nexport const downloadWithAxios = (url, filename = null) => {\n  if (filename == null) {\n    filename = url.substring(url.lastIndexOf('/') + 1)\n  }\n\n  axios({\n    method: 'GET',\n    url: `${url}?no-cache`,\n    responseType: 'blob',\n    // crossdomain: true\n  }).then((response) => {\n    forceFileDownload(response, filename)\n  })\n  // .catch((e) => {\n  //   console.error(String(e))\n  // })\n}\n","// ----------------------------------------------------------------------------\n// CRUD Messages\n// ----------------------------------------------------------------------------\n\nexport const getAddMessage = (model, name = null) => {\n  if (name) {\n    return `The ${model} <strong>\"${name}\"</strong> was added successfully.`\n  }\n  return `The ${model} was added successfully.`\n}\n\nexport const getChangeMessage = (model, name = null) => {\n  if (name) {\n    return `The ${model} <strong>\"${name}\"</strong> was changed successfully.`\n  }\n  return `The ${model} was changed successfully.`\n}\n\nexport const getDeleteMessage = (model, name = null) => {\n  if (name) {\n    return `The ${model} <strong>\"${name}\"</strong> was deleted successfully.`\n  }\n  return `The ${model} was deleted successfully.`\n}\n\nexport const getRemoveMessage = (model, name = null) => {\n  if (name) {\n    return `The ${model} <strong>\"${name}\"</strong> was removed successfully.`\n  }\n  return `The ${model} was removed successfully.`\n}\n","//import store from '@/store'\n\n/**\n * Check if a user has permission.\n *\n * @param {String} codename\n * @returns Boolean\n */\nexport const hasPermission = (codename) => {\n  const user = JSON.parse(sessionStorage.getItem('user'))\n  if (user.is_superuser) return true\n  return user.permissions_codenames.includes(codename)\n}\n\n/**\n * Check if user has any of the permissions given.\n *\n * @param {Array} codenames\n * @returns Boolean\n */\nexport const hasAnyPermission = (codenames) => {\n  const user = JSON.parse(sessionStorage.getItem('user'))\n  if (user.is_superuser || codenames.length === 0) return true\n  for (const codename of codenames) {\n    if (hasPermission(codename)) return true\n  }\n  return false\n}\n","export const upperCaseFirst = (text) => {\n  return text[0].toUpperCase() + text.slice(1)\n}\n","export const getPaginationParams = (options, search = null) => {\n  const { sortBy, sortDesc, page, itemsPerPage } = options\n\n  let params = {\n    page: page,\n    size: itemsPerPage,\n  }\n\n  if (sortBy !== undefined && sortBy.length > 0) {\n    let sort = sortBy.map((x) => x)\n    sortDesc.forEach((value, index) => {\n      sort[index] = value === true ? `-${sort[index]}` : sort[index]\n    })\n    params['ordering'] = sort.join()\n  }\n\n  if (search) params['search'] = search\n\n  return params\n}\n","export const getCsrfToken = () => {\n  let csrfToken = null\n  if (document.cookie && document.cookie !== '') {\n    const cookies = document.cookie.split(';')\n    for (let i = 0; i < cookies.length; i++) {\n      const cookie = cookies[i].trim()\n      if (cookie.substring(0, 10) === 'csrftoken=') {\n        csrfToken = decodeURIComponent(cookie.substring(10))\n        break\n      }\n    }\n  }\n  return csrfToken\n}\n","import axios from 'axios'\nimport store from '@/store'\nimport { AuthService } from '@/services'\nimport { API_URL } from '@/constants'\nimport { getCsrfToken } from '@/spaday/helpers/csrf'\n\nconst getApiUrl = () => {\n  if (location.hostname === 'localhost' || location.hostname === '127.0.0.1') {\n    return 'http://localhost:8000/api/v1'\n  } else {\n    return API_URL\n  }\n}\n\nconst isObject = (objValue) => {\n  return objValue && typeof objValue === 'object' && objValue.constructor === Object\n}\n\nconst getNiceError = (errors) => {\n  // Errors come back in many forms, let's get the TLDR\n  if (isObject(errors)) {\n    if (Object.prototype.hasOwnProperty.call(errors, 'detail')) {\n      return errors.detail\n    }\n    return errors[Object.keys(errors)[0]].toString()\n  }\n  return errors\n}\n\nlet http = axios.create({\n  withCredentials: true,\n  // xsrfCookieName: 'csrftoken',\n  // xsrfHeaderName: 'X-CSRFToken',\n  baseURL: getApiUrl(),\n  headers: {\n    'Content-type': 'application/json',\n  },\n  onUploadProgress: (progressEvent) =>\n    store.dispatch(\n      'uploadProgress/setProgress',\n      parseInt(Math.round((progressEvent.loaded / progressEvent.total) * 100)),\n    ),\n})\n\nhttp.interceptors.request.use((req) => {\n  // console.log(`${req.method} ${req.url}`)\n  if (sessionStorage.getItem('accessToken')) {\n    req.headers.authorization = `Bearer ${sessionStorage.getItem('access_token')}`\n  }\n\n  // Add X-CSRFToken to the headers\n  req.headers['X-CSRFToken'] = getCsrfToken()\n\n  return req\n})\n\nhttp.interceptors.response.use(\n  (res) => {\n    // API response is {\"code\": 2xx, \"status\": \"OK\", \"data\": {}}\n    return res.data.data\n  },\n  (err) => {\n    if (!err.response) {\n      let ctx = {\n        text: 'Please check your internet connection.',\n        color: 'error',\n      }\n      store.dispatch('toastDialog/show', ctx, { root: true })\n      return Promise.reject(err)\n    }\n\n    // API response is {\"code\": 4xx, \"status\": \"BAD_REQUEST\", \"errors\": {}}\n    const data = err.response.data\n\n    let errors = err.response.statusText\n    if (err.response.status === 401) {\n      AuthService.refreshToken()\n        .then((data) => {\n          if (data.access) {\n            sessionStorage.setItem('access_token', data.access)\n            sessionStorage.removeItem('refresh_token')\n          }\n        })\n        .catch((error) => {\n          console.log(error)\n          console.log('TOKEN REFRESH FAILED...LOGOUT')\n\n          store.dispatch('account/logout')\n        })\n    } else {\n      // redirect to login\n    }\n\n    if (data && data.errors) {\n      errors = getNiceError(data.errors)\n      // store.dispatch('alert/error', errors)\n\n      let ctx = {\n        text: errors,\n        color: 'error',\n      }\n      store.dispatch('toastDialog/show', ctx, { root: true })\n    }\n    return Promise.reject(errors)\n  },\n)\n\nexport default http\n","import http from '@/spaday/http-common'\n\nclass AuthService {\n  //   csrf() {\n  //     return http.get(`/csrf/`).then((token) => {\n  //       return token\n  //     })\n  //   }\n\n  login(email, password) {\n    return http.post(`/auth/login/`, {\n      email,\n      password,\n    })\n  }\n\n  logout() {\n    return http.post(`/auth/logout/`)\n  }\n\n  refreshToken() {\n    return http.post(`/auth/token/refresh/`, {\n      refresh: sessionStorage.getItem('refresh_token'),\n    })\n  }\n\n  register() {\n    // TODO:\n  }\n}\n\nexport default new AuthService()\n","import http from '@/spaday/http-common'\n\nclass UserService {\n  /** Base CRUD REST calls **/\n  getAll(params = {}) {\n    return http.get('/users/', { params })\n  }\n\n  get(pk) {\n    return http.get(`/users/${pk}/`)\n  }\n\n  create(data) {\n    return http.post('/users/', data)\n  }\n\n  update(pk, data) {\n    return http.put(`/users/${pk}/`, data)\n  }\n\n  preDelete(pk) {\n    return http.get(`/users/${pk}/confirm-delete/`)\n  }\n\n  delete(pk) {\n    return http.delete(`/users/${pk}/`)\n  }\n\n  /** Specialized REST calls **/\n\n  changePassword(pk, data) {\n    return http.put(`/users/${pk}/password/`, data)\n  }\n\n  recentLogins() {\n    return http.get(`/users/recent-logins/`)\n  }\n}\n\nexport default new UserService()\n","import http from '@/spaday/http-common'\n\nclass GroupService {\n  /** Base CRUD REST calls **/\n  getAll(params = {}) {\n    return http.get('/groups/', { params })\n  }\n\n  get(pk) {\n    return http.get(`/groups/${pk}/`)\n  }\n\n  create(data) {\n    return http.post('/groups/', data)\n  }\n\n  update(pk, data) {\n    return http.put(`/groups/${pk}/`, data)\n  }\n\n  preDelete(pk) {\n    return http.get(`/groups/${pk}/confirm-delete/`)\n  }\n\n  delete(pk) {\n    return http.delete(`/groups/${pk}/`)\n  }\n\n  /** Specialized REST calls **/\n\n  combobox() {\n    return http.get(`/groups/combobox/`)\n  }\n\n  users(pk) {\n    return http.get(`/groups/${pk}/users/`)\n  }\n\n  addUsers(pk, ids) {\n    return http.post(`/groups/${pk}/add-users/`, {\n      users: ids,\n    })\n  }\n\n  removeUsers(pk, ids) {\n    return http.post(`/groups/${pk}/remove-users/`, {\n      users: ids,\n    })\n  }\n}\n\nexport default new GroupService()\n","import http from '@/spaday/http-common'\n\nclass PermissionService {\n  combobox() {\n    return http.get(`/permissions/combobox/`)\n  }\n}\n\nexport default new PermissionService()\n","import http from '@/spaday/http-common'\n\nclass AuditLogService {\n  /** Base CRUD REST calls **/\n  getAll(params = {}) {\n    return http.get('/auditlogs/', { params })\n  }\n\n  get(pk) {\n    return http.get(`/auditlogs/${pk}/`)\n  }\n\n  preDelete(pk) {\n    return http.get(`/auditlogs/${pk}/confirm-delete/`)\n  }\n\n  delete(pk) {\n    return http.delete(`/auditlogs/${pk}/`)\n  }\n\n  /** Specialized REST calls **/\n}\n\nexport default new AuditLogService()\n","import http from '@/spaday/http-common'\n\nclass TaskResultService {\n  /** Base CRUD REST calls **/\n  getAll(params = {}) {\n    return http.get('/taskresults/', { params })\n  }\n\n  get(pk) {\n    return http.get(`/taskresults/${pk}/`)\n  }\n\n  preDelete(pk) {\n    return http.get(`/taskresults/${pk}/confirm-delete/`)\n  }\n\n  delete(pk) {\n    return http.delete(`/taskresults/${pk}/`)\n  }\n\n  /** Specialized REST calls **/\n}\n\nexport default new TaskResultService()\n","import http from '@/spaday/http-common'\n\nclass StatService {\n  stats() {\n    return http.get(`/stats/`)\n  }\n}\n\nexport default new StatService()\n","import http from '@/spaday/http-common'\n\nclass CompanyService {\n  /** Base CRUD REST calls **/\n  getAll(params = {}) {\n    return http.get('/companies/', { params })\n  }\n\n  get(pk) {\n    return http.get(`/companies/${pk}/`)\n  }\n\n  create(data) {\n    return http.post('/companies/', data)\n  }\n\n  update(pk, data) {\n    return http.put(`/companies/${pk}/`, data)\n  }\n\n  preDelete(pk) {\n    return http.get(`/companies/${pk}/confirm-delete/`)\n  }\n\n  delete(pk) {\n    return http.delete(`/companies/${pk}/`)\n  }\n\n  /** Specialized REST calls **/\n\n  combobox() {\n    return http.get(`/companies/combobox/`)\n  }\n\n  events(pk) {\n    return http.get(`/companies/${pk}/events/`)\n  }\n\n  qrcodes(pk) {\n    return http.get(`/companies/${pk}/qrcodes/`)\n  }\n}\n\nexport default new CompanyService()\n","import http from '@/spaday/http-common'\n\nclass EventService {\n  /** Base CRUD REST calls **/\n  getAll(params = {}) {\n    return http.get('/events/', { params })\n  }\n\n  get(pk) {\n    return http.get(`/events/${pk}/`)\n  }\n\n  create(data) {\n    return http.post('/events/', data)\n  }\n\n  update(pk, data) {\n    return http.put(`/events/${pk}/`, data)\n  }\n\n  preDelete(pk) {\n    return http.get(`/events/${pk}/confirm-delete/`)\n  }\n\n  delete(pk) {\n    return http.delete(`/events/${pk}/`)\n  }\n\n  /** Specialized REST calls **/\n\n  combobox() {\n    return http.get(`/events/combobox/`)\n  }\n\n  qrcodes(pk) {\n    return http.get(`/events/${pk}/qrcodes/`)\n  }\n\n  stats(pk) {\n    return http.get(`/events/${pk}/stats/`)\n  }\n}\n\nexport default new EventService()\n","import http from '@/spaday/http-common'\n\nclass QRCodeService {\n  /** Base CRUD REST calls **/\n  getAll(params = {}) {\n    return http.get('/qrcodes/', { params })\n  }\n\n  get(pk) {\n    return http.get(`/qrcodes/${pk}/`)\n  }\n\n  create(data) {\n    return http.post('/qrcodes/', data)\n  }\n\n  update(pk, data) {\n    return http.put(`/qrcodes/${pk}/`, data)\n  }\n\n  preDelete(pk) {\n    return http.get(`/qrcodes/${pk}/confirm-delete/`)\n  }\n\n  delete(pk) {\n    return http.delete(`/qrcodes/${pk}/`)\n  }\n\n  /** Specialized REST calls **/\n\n  stats(pk) {\n    return http.get(`/qrcodes/${pk}/stats/`)\n  }\n}\n\nexport default new QRCodeService()\n","import http from '@/spaday/http-common'\n\nclass ScanService {\n  /** Base CRUD REST calls **/\n  getAll(params = {}) {\n    return http.get('/scans/', { params })\n  }\n\n  get(pk) {\n    return http.get(`/scans/${pk}/`)\n  }\n\n  create(data) {\n    return http.post('/scans/', data)\n  }\n\n  update(pk, data) {\n    return http.put(`/scans/${pk}/`, data)\n  }\n\n  preDelete(pk) {\n    return http.get(`/scans/${pk}/confirm-delete/`)\n  }\n\n  delete(pk) {\n    return http.delete(`/scans/${pk}/`)\n  }\n\n  /** Specialized REST calls **/\n}\n\nexport default new ScanService()\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-dialog',{attrs:{\"max-width\":\"50%\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"color\":\"secondary\",\"disabled\":_vm.loading}},'v-btn',attrs,false),on),[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-account-plus\")]),_vm._v(\" Assign User \")],1)]}}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-toolbar',{attrs:{\"dark\":\"\",\"flat\":\"\",\"dense\":\"\",\"color\":\"primary\"}},[_c('v-toolbar-title',[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-account-plus\")]),_vm._v(\" Assign Users\")],1)],1),_c('v-card-text',{staticClass:\"pa-4\"},[_c('v-autocomplete',{attrs:{\"items\":_vm.items,\"loading\":_vm.loading,\"item-text\":_vm.label,\"prepend-inner-icon\":\"mdi-account-search-outline\",\"label\":\"Search Users...\",\"outlined\":\"\",\"hide-details\":\"\",\"hide-no-data\":\"\",\"small-chips\":\"\",\"deletable-chips\":\"\",\"multiple\":\"\",\"hide-selected\":\"\",\"return-object\":\"\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('v-list-item-avatar',{attrs:{\"color\":\"secondary\"}},[(item.initials)?_c('span',{staticClass:\"text--white\"},[_vm._v(_vm._s(item.initials))]):_c('v-icon',[_vm._v(\"mdi-account\")])],1),_c('v-list-item-content',[_c('v-list-item-title',{domProps:{\"textContent\":_vm._s(item.full_name)}}),_c('v-list-item-subtitle',{domProps:{\"textContent\":_vm._s(item.email)}})],1),_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":\"secondary\"}},[_vm._v(\"mdi-arrow-right\")])],1)]}}]),model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}})],1),_c('v-divider'),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_vm.hide}},[_vm._v(\"Cancel\")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\",\"disabled\":_vm.loading},on:{\"click\":_vm.submit}},[_vm._v(\"Assign Users\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n  <v-dialog v-model=\"dialog\" max-width=\"50%\">\n    <template v-slot:activator=\"{ on, attrs }\">\n      <v-btn color=\"secondary\" v-bind=\"attrs\" v-on=\"on\" :disabled=\"loading\">\n        <v-icon left>mdi-account-plus</v-icon> Assign User\n      </v-btn>\n    </template>\n\n    <v-card>\n      <v-toolbar dark flat dense color=\"primary\">\n        <v-toolbar-title><v-icon left>mdi-account-plus</v-icon> Assign Users</v-toolbar-title>\n      </v-toolbar>\n\n      <v-card-text class=\"pa-4\">\n        <v-autocomplete\n          v-model=\"selected\"\n          :items=\"items\"\n          :loading=\"loading\"\n          :item-text=\"label\"\n          prepend-inner-icon=\"mdi-account-search-outline\"\n          label=\"Search Users...\"\n          outlined\n          hide-details\n          hide-no-data\n          small-chips\n          deletable-chips\n          multiple\n          hide-selected\n          return-object\n        >\n          <template slot=\"item\" slot-scope=\"{ item }\">\n            <v-list-item-avatar color=\"secondary\">\n              <span v-if=\"item.initials\" class=\"text--white\">{{ item.initials }}</span>\n              <v-icon v-else>mdi-account</v-icon>\n            </v-list-item-avatar>\n\n            <v-list-item-content>\n              <v-list-item-title v-text=\"item.full_name\"></v-list-item-title>\n              <v-list-item-subtitle v-text=\"item.email\"></v-list-item-subtitle>\n            </v-list-item-content>\n\n            <v-list-item-action>\n              <v-icon color=\"secondary\">mdi-arrow-right</v-icon>\n            </v-list-item-action>\n          </template>\n        </v-autocomplete>\n      </v-card-text>\n\n      <v-divider></v-divider>\n\n      <v-card-actions>\n        <v-spacer></v-spacer>\n        <v-btn text @click=\"hide\">Cancel</v-btn>\n        <v-btn text @click=\"submit\" color=\"primary\" :disabled=\"loading\">Assign Users</v-btn>\n      </v-card-actions>\n    </v-card>\n  </v-dialog>\n</template>\n\n<script>\nexport default {\n  props: {\n    loading: { type: Boolean, default: false },\n    items: { type: Array },\n    // defaultSelected: { type: Array },\n    // icon: {type: String, default: \"mdi-help-circle\"},\n    // title: { type:String, default: \"Title Goes Here\"}\n    // searchIcon: { type: String, default: 'mdi-magnify' },\n    // btnLabel: { type: String, default: 'Label Here' },\n    // actionLabel: { type: String, default: 'Label Here' },\n  },\n  data: () => ({\n    dialog: false,\n    selected: [],\n  }),\n  mounted() {\n    // this.selected = this.defaultSelected\n  },\n  methods: {\n    hide() {\n      this.dialog = false\n    },\n    submit() {\n      this.$emit('selected', this.selected)\n      this.dialog = false\n    },\n    label(item) {\n      if (item.name) {\n        return item.name\n      }\n      return item.email\n    },\n  },\n}\n</script>\n\n<style scoped>\n.radius {\n  border-radius: 7px;\n}\n</style>\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchUsers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SearchUsers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SearchUsers.vue?vue&type=template&id=615aa11c&scoped=true\"\nimport script from \"./SearchUsers.vue?vue&type=script&lang=js\"\nexport * from \"./SearchUsers.vue?vue&type=script&lang=js\"\nimport style0 from \"./SearchUsers.vue?vue&type=style&index=0&id=615aa11c&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"615aa11c\",\n  null\n  \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AdminBase.vue?vue&type=style&index=0&id=27e49634&prod&lang=scss\""],"sourceRoot":""}