124 lines
2.6 KiB
JavaScript
124 lines
2.6 KiB
JavaScript
|
module.exports = {
|
||
|
props: ['user'],
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The component's data.
|
||
|
*/
|
||
|
data() {
|
||
|
return {
|
||
|
plans: [],
|
||
|
|
||
|
searchForm: new SparkForm({
|
||
|
query: ''
|
||
|
}),
|
||
|
|
||
|
searching: false,
|
||
|
noSearchResults: false,
|
||
|
searchResults: [],
|
||
|
|
||
|
showingUserProfile: false
|
||
|
};
|
||
|
},
|
||
|
|
||
|
|
||
|
/**
|
||
|
* The component has been created by Vue.
|
||
|
*/
|
||
|
created() {
|
||
|
var self = this;
|
||
|
|
||
|
this.getPlans();
|
||
|
|
||
|
this.$on('showSearch', function(){
|
||
|
self.navigateToSearch();
|
||
|
});
|
||
|
|
||
|
Bus.$on('sparkHashChanged', function (hash, parameters) {
|
||
|
if (hash != 'users') {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
if (parameters && parameters.length > 0) {
|
||
|
self.loadProfile({ id: parameters[0] });
|
||
|
} else {
|
||
|
self.showSearch();
|
||
|
}
|
||
|
|
||
|
return true;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
|
||
|
methods: {
|
||
|
/**
|
||
|
* Get all of the available subscription plans.
|
||
|
*/
|
||
|
getPlans() {
|
||
|
axios.get('/spark/plans')
|
||
|
.then(response => {
|
||
|
this.plans = response.data;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Perform a search for the given query.
|
||
|
*/
|
||
|
search() {
|
||
|
this.searching = true;
|
||
|
this.noSearchResults = false;
|
||
|
|
||
|
axios.post('/spark/kiosk/users/search', this.searchForm)
|
||
|
.then(response => {
|
||
|
this.searchResults = response.data;
|
||
|
this.noSearchResults = this.searchResults.length === 0;
|
||
|
|
||
|
this.searching = false;
|
||
|
});
|
||
|
},
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Show the search results and update the browser history.
|
||
|
*/
|
||
|
navigateToSearch() {
|
||
|
history.pushState(null, null, '#/users');
|
||
|
|
||
|
this.showSearch();
|
||
|
},
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Show the search results.
|
||
|
*/
|
||
|
showSearch() {
|
||
|
this.showingUserProfile = false;
|
||
|
|
||
|
Vue.nextTick(function () {
|
||
|
$('#kiosk-users-search').focus();
|
||
|
});
|
||
|
},
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Show the user profile for the given user.
|
||
|
*/
|
||
|
showUserProfile(user) {
|
||
|
history.pushState(null, null, '#/users/' + user.id);
|
||
|
|
||
|
this.loadProfile(user);
|
||
|
},
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Load the user profile for the given user.
|
||
|
*/
|
||
|
loadProfile(user) {
|
||
|
this.$emit('showUserProfile', user.id);
|
||
|
|
||
|
this.showingUserProfile = true;
|
||
|
}
|
||
|
}
|
||
|
};
|