mirror of https://github.com/statping/statping
199 lines
6.1 KiB
JavaScript
199 lines
6.1 KiB
JavaScript
import Vuex from 'vuex'
|
|
import Vue from 'vue'
|
|
import Api from "./API"
|
|
|
|
Vue.use(Vuex)
|
|
|
|
export const HAS_ALL_DATA = 'HAS_ALL_DATA'
|
|
export const HAS_PUBLIC_DATA = 'HAS_PUBLIC_DATA'
|
|
|
|
export const GET_CORE = 'GET_CORE'
|
|
export const GET_SERVICES = 'GET_SERVICES'
|
|
export const GET_TOKEN = 'GET_TOKEN'
|
|
export const GET_GROUPS = 'GET_GROUPS'
|
|
export const GET_MESSAGES = 'GET_MESSAGES'
|
|
export const GET_NOTIFIERS = 'GET_NOTIFIERS'
|
|
export const GET_USERS = 'GET_USERS'
|
|
|
|
export default new Vuex.Store({
|
|
state: {
|
|
hasAllData: false,
|
|
hasPublicData: false,
|
|
core: {},
|
|
oauth: {},
|
|
token: null,
|
|
services: [],
|
|
service: null,
|
|
groups: [],
|
|
messages: [],
|
|
users: [],
|
|
notifiers: [],
|
|
checkins: [],
|
|
admin: false,
|
|
user: false,
|
|
loggedIn: false,
|
|
modal: {
|
|
visible: false,
|
|
title: "Modal Header",
|
|
body: "This is the content for the modal body",
|
|
btnText: "Save Changes",
|
|
btnColor: "btn-primary",
|
|
func: null,
|
|
}
|
|
},
|
|
getters: {
|
|
hasAllData: state => state.hasAllData,
|
|
hasPublicData: state => state.hasPublicData,
|
|
admin: state => state.admin,
|
|
core: state => state.core,
|
|
oauth: state => state.oauth,
|
|
token: state => state.token,
|
|
services: state => state.services,
|
|
service: state => state.service,
|
|
groups: state => state.groups,
|
|
messages: state => state.messages,
|
|
incidents: state => state.incidents,
|
|
users: state => state.users,
|
|
notifiers: state => state.notifiers,
|
|
checkins: state => state.checkins,
|
|
loggedIn: state => state.loggedIn,
|
|
modal: state => state.modal,
|
|
|
|
isAdmin: state => state.admin,
|
|
isUser: state => state.user,
|
|
|
|
globalMessages: state => state.messages.filter(s => !s.service || s.service === 0),
|
|
servicesInOrder: state => state.services.sort((a, b) => a.order_id - b.order_id),
|
|
servicesNoGroup: state => state.services.filter(g => g.group_id === 0).sort((a, b) => a.order_id - b.order_id),
|
|
groupsInOrder: state => state.groups.sort((a, b) => a.order_id - b.order_id),
|
|
groupsClean: state => state.groups.filter(g => g.name !== '').sort((a, b) => a.order_id - b.order_id),
|
|
groupsCleanInOrder: state => state.groups.filter(g => g.name !== '').sort((a, b) => a.order_id - b.order_id).sort((a, b) => a.order_id - b.order_id),
|
|
serviceCheckins: (state) => (id) => {
|
|
return state.checkins.filter(c => c.service_id === id)
|
|
},
|
|
serviceByAll: (state) => (element) => {
|
|
if (!isNaN(parseFloat(element)) && isFinite(element)) {
|
|
return state.services.find(s => s.id === parseInt(element))
|
|
} else {
|
|
return state.services.find(s => s.permalink === element)
|
|
}
|
|
},
|
|
serviceById: (state) => (id) => {
|
|
return state.services.find(s => s.permalink === id || s.id === id)
|
|
},
|
|
servicesInGroup: (state) => (id) => {
|
|
return state.services.filter(s => s.group_id === id).sort((a, b) => a.order_id - b.order_id)
|
|
},
|
|
serviceMessages: (state) => (id) => {
|
|
return state.messages.filter(s => s.service === id)
|
|
},
|
|
onlineServices: (state) => (online) => {
|
|
return state.services.filter(s => s.online === online)
|
|
},
|
|
groupById: (state) => (id) => {
|
|
return state.groups.find(g => g.id === id)
|
|
},
|
|
cleanGroups: (state) => () => {
|
|
return state.groups.filter(g => g.name !== '').sort((a, b) => a.order_id - b.order_id)
|
|
},
|
|
userById: (state) => (id) => {
|
|
return state.users.find(u => u.id === id)
|
|
},
|
|
messageById: (state) => (id) => {
|
|
return state.messages.find(m => m.id === id)
|
|
},
|
|
},
|
|
mutations: {
|
|
setHasAllData(state, bool) {
|
|
state.hasAllData = bool
|
|
},
|
|
setHasPublicData(state, bool) {
|
|
state.hasPublicData = bool
|
|
},
|
|
setCore(state, core) {
|
|
state.core = core
|
|
},
|
|
setToken(state, token) {
|
|
state.token = token
|
|
},
|
|
setService(state, service) {
|
|
state.service = service
|
|
},
|
|
setServices(state, services) {
|
|
state.services = services
|
|
},
|
|
setCheckins(state, checkins) {
|
|
state.checkins = checkins
|
|
},
|
|
setGroups(state, groups) {
|
|
state.groups = groups
|
|
},
|
|
setMessages(state, messages) {
|
|
state.messages = messages
|
|
},
|
|
setUsers(state, users) {
|
|
state.users = users
|
|
},
|
|
setNotifiers(state, notifiers) {
|
|
state.notifiers = notifiers
|
|
},
|
|
setAdmin(state, admin) {
|
|
state.admin = admin
|
|
},
|
|
setLoggedIn(state, loggedIn) {
|
|
state.loggedIn = loggedIn
|
|
},
|
|
setUser(state, user) {
|
|
state.user = user
|
|
},
|
|
setOAuth(state, oauth) {
|
|
state.oauth = oauth
|
|
},
|
|
setModal(state, modal) {
|
|
state.modal = modal
|
|
},
|
|
},
|
|
actions: {
|
|
async getAllServices(context) {
|
|
const services = await Api.services()
|
|
context.commit("setServices", services);
|
|
},
|
|
async loadCore(context) {
|
|
const core = await Api.core()
|
|
const token = await Api.token()
|
|
context.commit("setCore", core);
|
|
context.commit('setAdmin', token)
|
|
context.commit('setCore', core)
|
|
context.commit('setUser', token !== undefined)
|
|
},
|
|
async loadRequired(context) {
|
|
const groups = await Api.groups()
|
|
context.commit("setGroups", groups);
|
|
const services = await Api.services()
|
|
context.commit("setServices", services);
|
|
const messages = await Api.messages()
|
|
context.commit("setMessages", messages)
|
|
const oauth = await Api.oauth()
|
|
context.commit("setOAuth", oauth);
|
|
context.commit("setHasPublicData", true)
|
|
},
|
|
async loadAdmin(context) {
|
|
const groups = await Api.groups()
|
|
context.commit("setGroups", groups);
|
|
const services = await Api.services()
|
|
context.commit("setServices", services);
|
|
const messages = await Api.messages()
|
|
context.commit("setMessages", messages)
|
|
context.commit("setHasPublicData", true)
|
|
const checkins = await Api.checkins()
|
|
context.commit("setCheckins", checkins);
|
|
const notifiers = await Api.notifiers()
|
|
context.commit("setNotifiers", notifiers);
|
|
const users = await Api.users()
|
|
context.commit("setUsers", users);
|
|
const oauth = await Api.oauth()
|
|
context.commit("setOAuth", oauth);
|
|
}
|
|
}
|
|
});
|