@@ -17,14 +17,7 @@ export const appService = { | |||
disableAppSiteByUserId, | |||
getAppDataByUserId, | |||
enableAppDataByUserId, | |||
disableAppDataByUserId, | |||
deleteAppDataByUserId, | |||
getAppSiteDataByUserId, | |||
enableAppSiteDataByUserId, | |||
disableAppSiteDataByUserId, | |||
deleteAppSiteDataByUserId | |||
getAppSiteDataByUserId | |||
}; | |||
// MITM | |||
@@ -75,35 +68,11 @@ function disableAppSiteByUserId(userId, appId, siteId, messages, errors) { | |||
} | |||
// Data by App | |||
function getAppDataByUserId(userId, appId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/data`, util.getWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
function enableAppDataByUserId(userId, appId, datumId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/data/${datumId}/enable`, util.postWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
function disableAppDataByUserId(userId, appId, datumId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/data/${datumId}/disable`, util.postWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
function deleteAppDataByUserId(userId, appId, datumId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/data/${datumId}`, util.deleteWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
function getAppDataByUserId(userId, appId, viewId, query, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/view/${viewId}`, util.postWithAuth(query)).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
// Data by App + Site | |||
function getAppSiteDataByUserId(userId, appId, siteId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/sites/${siteId}/data`, util.getWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
function enableAppSiteDataByUserId(userId, appId, siteId, datumId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/sites/${siteId}/data/${datumId}/enable`, util.postWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
function disableAppSiteDataByUserId(userId, appId, siteId, datumId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/sites/${siteId}/data/${datumId}/disable`, util.postWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
} | |||
function deleteAppSiteDataByUserId(userId, appId, siteId, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/sites/${siteId}/data/${datumId}`, util.deleteWithAuth()).then(util.handleCrudResponse(messages, errors)); | |||
function getAppSiteDataByUserId(userId, appId, siteId, viewId, query, messages, errors) { | |||
return fetch(`${config.apiUrl}/users/${userId}/apps/${appId}/sites/${siteId}/view/${viewId}`, util.postWithAuth(query)).then(util.handleCrudResponse(messages, errors)); | |||
} |
@@ -6,7 +6,7 @@ const state = { | |||
enableMitm: false, disableMitm: false, | |||
apps: false, app: false, enableApp: false, disableApp: false, | |||
sites: false, site: false, enableSite: false, disableSite: false, | |||
data: false, enableData: false, disableData: false, deleteData: false | |||
appData: false | |||
}, | |||
mitmEnabled: null, | |||
error: null, | |||
@@ -125,77 +125,22 @@ const actions = { | |||
commit('resetAppDataSuccess'); | |||
}, | |||
getAppDataByUserId({ commit }, {userId, appId, messages, errors}) { | |||
getAppDataByUserId({ commit }, {userId, appId, viewId, query, messages, errors}) { | |||
commit('getAppDataByUserIdRequest'); | |||
appService.getAppDataByUserId(userId, appId, messages, errors) | |||
appService.getAppDataByUserId(userId, appId, viewId, query, messages, errors) | |||
.then( | |||
appData => commit('getAppDataByUserIdSuccess', appData), | |||
error => commit('getAppDataByUserIdFailure', error) | |||
); | |||
}, | |||
enableAppDataByUserId({ commit }, {userId, appId, datumId, messages, errors}) { | |||
commit('enableAppDataByUserIdRequest'); | |||
appService.enableAppDataByUserId(userId, appId, datumId, messages, errors) | |||
.then( | |||
appData => commit('enableAppDataByUserIdSuccess', appData), | |||
error => commit('enableAppDataByUserIdFailure', error) | |||
); | |||
}, | |||
disableAppDataByUserId({ commit }, {userId, appId, datumId, messages, errors}) { | |||
commit('disableAppDataByUserIdRequest'); | |||
appService.disableAppDataByUserId(userId, appId, datumId, messages, errors) | |||
.then( | |||
appData => commit('disableAppDataByUserIdSuccess', appData), | |||
error => commit('disableAppDataByUserIdFailure', error) | |||
); | |||
}, | |||
deleteAppDataByUserId({ commit }, {userId, appId, datumId, messages, errors}) { | |||
commit('deleteAppDataByUserIdRequest'); | |||
appService.deleteAppDataByUserId(userId, appId, datumId, messages, errors) | |||
.then( | |||
appData => commit('deleteAppDataByUserIdSuccess', appData), | |||
error => commit('deleteAppDataByUserIdFailure', error) | |||
); | |||
}, | |||
// App Site Data | |||
getAppSiteDataByUserId({ commit }, {userId, appId, siteId, messages, errors}) { | |||
getAppSiteDataByUserId({ commit }, {userId, appId, siteId, viewId, query, messages, errors}) { | |||
commit('getAppSiteDataByUserIdRequest'); | |||
appService.getAppSiteDataByUserId(userId, appId, siteId, messages, errors) | |||
appService.getAppSiteDataByUserId(userId, appId, siteId, viewId, query, messages, errors) | |||
.then( | |||
appData => commit('getAppSiteDataByUserIdSuccess', appData), | |||
error => commit('getAppSiteDataByUserIdFailure', error) | |||
); | |||
}, | |||
enableAppSiteDataByUserId({ commit }, {userId, appId, siteId, datumId, messages, errors}) { | |||
commit('enableAppSiteDataByUserIdRequest'); | |||
appService.enableAppSiteDataByUserId(userId, appId, siteId, datumId, messages, errors) | |||
.then( | |||
appData => commit('enableAppSiteDataByUserIdSuccess', appData), | |||
error => commit('enableAppSiteDataByUserIdFailure', error) | |||
); | |||
}, | |||
disableAppSiteDataByUserId({ commit }, {userId, appId, siteId, datumId, messages, errors}) { | |||
commit('disableAppSiteDataByUserIdRequest'); | |||
appService.disableAppSiteDataByUserId(userId, appId, siteId, datumId, messages, errors) | |||
.then( | |||
appData => commit('disableAppSiteDataByUserIdSuccess', appData), | |||
error => commit('disableAppSiteDataByUserIdFailure', error) | |||
); | |||
}, | |||
deleteAppSiteDataByUserId({ commit }, {userId, appId, siteId, datumId, messages, errors}) { | |||
commit('deleteAppSiteDataByUserIdRequest'); | |||
appService.deleteAppSiteDataByUserId(userId, appId, siteId, datumId, messages, errors) | |||
.then( | |||
appData => commit('deleteAppSiteDataByUserIdSuccess', appData), | |||
error => commit('deleteAppSiteDataByUserIdFailure', error) | |||
); | |||
} | |||
}; | |||
@@ -337,106 +282,35 @@ const mutations = { | |||
}, | |||
resetAppDataSuccess(state) { | |||
state.loading.data = false; | |||
state.loading.appData = false; | |||
state.appData = null; | |||
}, | |||
// App Data | |||
getAppDataByUserIdRequest(state) { | |||
state.loading.data = true; | |||
state.loading.appData = true; | |||
}, | |||
getAppDataByUserIdSuccess(state, appData) { | |||
state.loading.data = false; | |||
state.loading.appData = false; | |||
state.appData = appData; | |||
}, | |||
getAppDataByUserIdFailure(state, error) { | |||
state.loading.data = false; | |||
state.error = error; | |||
}, | |||
enableAppDataByUserIdRequest(state) { | |||
state.loading.enableData = true; | |||
}, | |||
enableAppDataByUserIdSuccess(state, appData) { | |||
state.loading.enableData = false; | |||
state.appData = appData; | |||
}, | |||
enableAppDataByUserIdFailure(state, error) { | |||
state.loading.enableData = false; | |||
state.error = error; | |||
}, | |||
disableAppDataByUserIdRequest(state) { | |||
state.loading.disableData = true; | |||
}, | |||
disableAppDataByUserIdSuccess(state, appData) { | |||
state.loading.disableData = false; | |||
state.appData = appData; | |||
}, | |||
disableAppDataByUserIdFailure(state, error) { | |||
state.loading.disableData = false; | |||
state.error = error; | |||
}, | |||
deleteAppDataByUserIdRequest(state) { | |||
state.loading.deleteData = true; | |||
}, | |||
deleteAppDataByUserIdSuccess(state, appData) { | |||
state.loading.deleteData = false; | |||
}, | |||
deleteAppDataByUserIdFailure(state, error) { | |||
state.loading.deleteData = false; | |||
state.loading.appData = false; | |||
state.error = error; | |||
}, | |||
// App Site Data | |||
getAppSiteDataByUserIdRequest(state) { | |||
state.loading.data = true; | |||
state.loading.appData = true; | |||
}, | |||
getAppSiteDataByUserIdSuccess(state, appData) { | |||
state.loading.data = false; | |||
state.loading.appData = false; | |||
state.appData = appData; | |||
}, | |||
getAppSiteDataByUserIdFailure(state, error) { | |||
state.loading.data = false; | |||
state.error = error; | |||
}, | |||
enableAppSiteDataByUserIdRequest(state) { | |||
state.loading.enableData = true; | |||
}, | |||
enableAppSiteDataByUserIdSuccess(state, appData) { | |||
state.loading.enableData = false; | |||
state.appData = appData; | |||
}, | |||
enableAppSiteDataByUserIdFailure(state, error) { | |||
state.loading.enableData = false; | |||
state.error = error; | |||
}, | |||
disableAppSiteDataByUserIdRequest(state) { | |||
state.loading.disableData = true; | |||
}, | |||
disableAppSiteDataByUserIdSuccess(state, appData) { | |||
state.loading.disableData = false; | |||
state.appData = appData; | |||
}, | |||
disableAppSiteDataByUserIdFailure(state, error) { | |||
state.loading.disableData = false; | |||
state.error = error; | |||
}, | |||
deleteAppSiteDataByUserIdRequest(state) { | |||
state.loading.deleteData = true; | |||
}, | |||
deleteAppSiteDataByUserIdSuccess(state, appData) { | |||
state.loading.deleteData = false; | |||
}, | |||
deleteAppSiteDataByUserIdFailure(state, error) { | |||
state.loading.deleteData = false; | |||
state.loading.appData = false; | |||
state.error = error; | |||
} | |||
}; | |||
const getters = { | |||
@@ -62,7 +62,8 @@ String.prototype.parseDateMessage = function (millis, messages) { | |||
const context = { | |||
YYYY: date.getFullYear(), | |||
MMM: messages['label_date_month_'+date.getMonth()], | |||
M: messages['label_date_month_short_'+date.getMonth()], | |||
MM: messages['label_date_month_short_'+date.getMonth()], | |||
M: messages['label_date_month_number_'+date.getMonth()], | |||
EEE: messages['label_date_day_'+date.getDay()], | |||
E: messages['label_date_day_short_'+date.getDay()], | |||
d: date.getDate(), | |||
@@ -14,7 +14,7 @@ const state = { | |||
network: null, | |||
nearestRegions: null, | |||
newNodeNotification: null, | |||
networkStatuses: {}, | |||
networkStatuses: [], | |||
networkNodes: null, | |||
deletedNetwork: null, | |||
networkKeysRequested: null, | |||
@@ -178,9 +178,7 @@ const mutations = { | |||
}, | |||
getStatusesByNetworkIdSuccess(state, {networkId, statuses}) { | |||
state.loading.networkStatuses = false; | |||
const newStatuses = {}; | |||
newStatuses[networkId] = statuses; | |||
state.networkStatuses = Object.assign({}, state.networkStatuses, newStatuses); | |||
state.networkStatuses = statuses; | |||
}, | |||
getStatusesByNetworkIdFailure(state, {networkId, error}) { | |||
state.loading.networkStatuses = false; | |||
@@ -1,18 +1,133 @@ | |||
<template> | |||
<div> | |||
App Data View Page | |||
<table v-if="app && viewDetails && viewDetails.fields && viewDetails.fields.length && viewDetails.fields.length > 0" border="1"> | |||
<thead> | |||
<tr> | |||
<th v-for="field in viewDetails.fields">{{messages['app_'+app.name+'_field_'+field]}}</th> | |||
</tr> | |||
</thead> | |||
<tbody v-if="appData && appData.results && appData.results.length && appData.results.length > 0"> | |||
<tr v-for="row in appData.results"> | |||
<td v-for="field in viewDetails.fields"> | |||
<span v-if="field === 'expiration'"> | |||
<span v-if="row[field.name] !== null && row[field.name] > 0">{{messages.date_format_app_data_expiration.parseDateMessage(row[field.name], messages)}}</span> | |||
<span v-else>{{messages.message_app_data_no_expiration}}</span> | |||
</span> | |||
<span v-else-if="field === 'ctime' || field === 'mtime'"> | |||
{{messages.date_format_app_data_epoch_time.parseDateMessage(row[field.name], messages)}} | |||
</span> | |||
<span v-else>{{row[field.name]}}</span> | |||
</td> | |||
</tr> | |||
<tr> | |||
<td align="left"> | |||
<span v-if="this.pageNumber > 1">{{messages.message_app_data_previous_page}}</span> | |||
</td> | |||
<td align="right"> | |||
<span v-if="hasNextPage()">{{messages.message_app_data_next_page}}</span> | |||
</td> | |||
</tr> | |||
</tbody> | |||
<tbody v-else> | |||
<tr> | |||
<td :colspan="getTotalColumns()">{{messages.message_no_data}}</td> | |||
</tr> | |||
</tbody> | |||
</table> | |||
</div> | |||
</template> | |||
<script> | |||
import { mapState, mapActions } from 'vuex' | |||
import { mapState, mapActions, mapGetters } from 'vuex' | |||
export default { | |||
data () { | |||
return { | |||
user: util.currentUser(), | |||
appId: null, | |||
siteId: null, | |||
viewId: null, | |||
viewDetails: null, | |||
query: { | |||
pageNumber: 1, | |||
pageSize: 5 | |||
} | |||
}; | |||
}, | |||
computed: { | |||
...mapState('apps', ['app', 'site', 'appData']), | |||
...mapState('system', ['messages']) | |||
}, | |||
created () { | |||
this.appId = this.$route.params.app; | |||
this.siteId = this.$route.params.site; | |||
this.viewId = this.$route.params.view; | |||
this.getAppByUserId({ | |||
userId: this.user.uuid, | |||
appId: this.appId, | |||
messages: this.messages, | |||
errors: this.errors | |||
}); | |||
if (this.siteId) { | |||
this.getAppSiteByUserId({ | |||
userId: this.user.uuid, | |||
appId: this.appId, | |||
siteId: this.siteId, | |||
messages: this.messages, | |||
errors: this.errors | |||
}); | |||
} | |||
}, | |||
methods: { | |||
...mapActions('apps', [ | |||
'getAppByUserId', 'getAppSiteByUserId', 'getAppDataByUserId', 'getAppSiteDataByUserId' | |||
]), | |||
...mapGetters('apps', ['loading']), | |||
hasNextPage () { | |||
return this.appData.totalCount && (this.appData.totalCount > (this.pageNumber * this.pageSize)); | |||
}, | |||
getTotalColumns () { | |||
let cols = this.viewDetails.fields.length; | |||
if (this.viewDetails.actions && this.viewDetails.actions.length) cols += this.viewDetails.actions.length; | |||
return cols; | |||
} | |||
}, | |||
watch: { | |||
app (a) { | |||
if (a && a.dataConfig && a.dataConfig.views && a.dataConfig.views.length && a.dataConfig.views.length > 0) { | |||
const allViews = a.dataConfig.views; | |||
for (let i=0; i<allViews.length; i++) { | |||
if (allViews[i].name === this.viewId) { | |||
this.viewDetails = allViews[i]; | |||
if (this.siteId) { | |||
this.getAppSiteDataByUserId({ | |||
userId: this.user.name, | |||
appId: this.appId, | |||
siteId: this.siteId, | |||
viewId: this.viewId, | |||
query: this.query, | |||
messages: this.messages, | |||
errors: this.errors | |||
}); | |||
} else { | |||
this.getAppDataByUserId({ | |||
userId: this.user.name, | |||
appId: this.appId, | |||
siteId: this.siteId, | |||
viewId: this.viewId, | |||
query: this.query, | |||
messages: this.messages, | |||
errors: this.errors | |||
}); | |||
} | |||
return; | |||
} | |||
} | |||
console.warn('watch.app: view not found: '+this.viewId); | |||
} | |||
} | |||
} | |||
}; | |||
</script> |
@@ -206,9 +206,9 @@ | |||
// console.log('watch.networkNodes: received: '+JSON.stringify(nodes)); | |||
}, | |||
networkStatuses (stats) { | |||
if (stats && stats.length && stats.length > 0) { | |||
if (this.network && stats && stats.length && stats.length > 0) { | |||
for (let i=0; i<stats.length; i++) { | |||
if (stats[i].network === this.networkId) { | |||
if (stats[i].network === this.network.uuid) { | |||
this.stats = stats[i]; | |||
if (this.stats.percent === 100) { | |||
clearInterval(this.refresher); | |||
@@ -221,7 +221,6 @@ | |||
} | |||
}, | |||
deletedNetwork (network) { | |||
console.log('watch.deletedNetwork: '+JSON.stringify(network)); | |||
if (network && (network.name === this.networkId || network.uuid === this.networkId)) { | |||
this.$router.replace({path: '/bubbles'}); | |||
} | |||