|
- <template>
- <template v-if="!loading">
- <sidebar :role="user.role" :active="active"></sidebar>
- <transition name="fade" mode="out-in">
- <div v-if="active === ''" id="main">
- <section class="welcome-pane"><h3>Welcome, {{user.name}}!</h3></section>
- <section class="credits-pane"><img src="../../images/coin-stack.svg"
- alt="wallet" class="icon"/><p>Credits:
- {{(user.credits/100).toLocaleString('en')}}</p></section>
- <section class="alerts-pane"><h4>News and Announcements</h4>
- <p>We've just launched. Thanks for joining us! Some features are still
- being tested. If you experience a delay in credits being added to your
- account, please wait 24 hours before contacting support@trendplays.com.</p>
- </section>
- <section class="recent-pane"><h4>Recent Activity</h4>
- <table>
- <thead><th>Date</th><th>Name</th><th>Status</th></thead>
- <tbody>
- <tr v-bind:key='order.id' v-for='order in orders.slice(0, 10)'>
- <template v-if="order.status != 'pending'">
- <td>{{order.updated_at}}</td>
- <td>{{order.service.name}}</td>
- <td :class="order.status"
- class="status"><span>{{order.status.charAt(0).toUpperCase() +
- order.status.slice(1)}}</span></td>
- </template>
- </tr>
- </tbody>
- </table>
- </section>
- </div>
-
- <past-orders :token="token" :orders="orders" v-else-if="active === '#orders'"
- id="main">
- </past-orders>
-
- <new-order :preferred="user.payment_method" :token="token" :active="active"
- :credits="user.credits" v-else-if="active ===
- '#new-order' || active === '#credits'" id="main" @update-user='getUser'
- @update-orders='getOrders'>
- </new-order>
-
- <div id="main" v-else-if="active === '#exit'">
- <section class="logout-pane">
- <h3>Are you sure you want to logout?</h3>
- <a href="/logout">Logout</a>
- </section>
- </div>
-
- <settings :token="token" :user="user" class="settings-page" id="main"
- v-else-if="active === '#settings'">
- </settings>
-
- <transaction-end @purchase-complete="getUser" :token="token" :user="user"
- :active="active" v-else-if="active ==
- '#transaction-complete' || active == '#transaction-failed'">
- </transaction-end>
-
- <support v-else-if="active == '#support'" :user="user" :token="token"></support>
-
- </transition>
- </template>
- </template>
-
- <script>
- import Sidebar from './sidebar.vue'
- import Settings from './settings.vue'
- import PastOrders from './orders.vue'
- import NewOrder from './services.vue'
- import TransactionEnd from './transaction-endpoint.vue'
- import Support from './support.vue'
-
- function getServices() {
- return fetch("/panel/services", {
- method: 'GET',
- headers: {'Content-Type': 'application/json',
- 'Accept': 'application/json',
- 'X-XSRF-TOKEN': this.token}
- }).then(response => {
- response.json().then(data => {this.services = data})
- })
- }
-
- function getUser() {
- return fetch("/panel/user", {
- method: 'GET',
- headers: {'Content-Type': 'application/json',
- 'Accept': 'application/json',
- 'X-XSRF-TOKEN': this.token},
- }).then(response => {
- return response.json()
- }).then(data => {
- this.user = data
- })
- }
-
- function getOrders() {
- return fetch("/panel/orders", {
- method: 'GET',
- headers: {'Content-Type': 'application/json',
- 'Accept': 'application/json',
- 'X-XSRF-TOKEN': this.token},
- }).then(response => {
- return response.json()
- }).then(data => {
- this.orders = data
- })
- }
-
- export default {
- components: {
- Sidebar, Settings, PastOrders, NewOrder,
- TransactionEnd, Support
- },
- data() {
- return {active: window.location.hash, user: null,
- token: null, orders: null, loading: true,}
- },
- methods: {getUser, getServices, getOrders, },
- created() {
- let loaders = []
- loaders.push(this.getUser())
- loaders.push(this.getServices())
- loaders.push(this.getOrders())
- Promise.all(loaders).then(() => {
- this.loading = false
- })
- }
- }
- </script>
|