diff options
| author | Pitu <[email protected]> | 2018-09-16 17:53:48 -0300 |
|---|---|---|
| committer | Pitu <[email protected]> | 2018-09-16 17:53:48 -0300 |
| commit | 977d3c6d3a18277caf37d5ee79f3c5d231c7bc22 (patch) | |
| tree | ccbd6308ceb2c041b8821edf0ca926d85efefffb | |
| parent | Flawed logic on the async retry (diff) | |
| download | host.fuwn.me-977d3c6d3a18277caf37d5ee79f3c5d231c7bc22.tar.xz host.fuwn.me-977d3c6d3a18277caf37d5ee79f3c5d231c7bc22.zip | |
Be able to create links on the frontend
| -rw-r--r-- | src/site/views/dashboard/Albums.vue | 148 |
1 files changed, 76 insertions, 72 deletions
diff --git a/src/site/views/dashboard/Albums.vue b/src/site/views/dashboard/Albums.vue index 8746148..2c7984c 100644 --- a/src/site/views/dashboard/Albums.vue +++ b/src/site/views/dashboard/Albums.vue @@ -114,6 +114,8 @@ } } } + + div.column > h2.subtitle { padding-top: 1px; } </style> <style lang="scss"> @import '../../styles/colors.scss'; @@ -136,11 +138,10 @@ <Sidebar/> </div> <div class="column"> - <!-- - <h1 class="title">Uploads</h1> - <h2 class="subtitle">Keep track of all your uploads in here</h2> + + <h2 class="subtitle">Manage your albums</h2> <hr> - --> + <div class="search-container"> <b-field> <b-input v-model="newAlbumName" @@ -200,57 +201,64 @@ <div v-if="album.isDetailsOpen" class="details"> - <b-tabs> - <b-tab-item label="Settings"/> - <b-tab-item label="Links"/> - </b-tabs> - <template v-if="album.links.length"> - <h2>Public links for this album:</h2> + <h2>Public links for this album:</h2> - <b-table - :data="album.links" - :mobile-cards="true"> - <template slot-scope="props"> - <b-table-column field="identifier" - label="Link" - centered> - <a :href="props.row.identifier" - target="_blank"> - {{ props.row.identifier }} - </a> - </b-table-column> + <b-table + :data="album.links.length ? album.links : []" + :mobile-cards="true"> + <template slot-scope="props"> + <b-table-column field="identifier" + label="Link" + centered> + <a :href="props.row.identifier" + target="_blank"> + {{ props.row.identifier }} + </a> + </b-table-column> - <b-table-column field="views" - label="Views" - centered> - {{ props.row.views }} - </b-table-column> + <b-table-column field="views" + label="Views" + centered> + {{ props.row.views }} + </b-table-column> - <b-table-column field="enableDownload" - label="Allow download" - centered> - <b-switch :value="props.row.enableDownload "/> - </b-table-column> + <b-table-column field="enableDownload" + label="Allow download" + centered> + <b-switch :value="props.row.enableDownload "/> + </b-table-column> - <b-table-column field="enabled" - label="Enabled" - centered> - <b-switch :value="props.row.enabled "/> - </b-table-column> + <b-table-column field="enabled" + label="Enabled" + centered> + <b-switch :value="props.row.enabled "/> + </b-table-column> - <b-table-column field="createdAt" - label="Created at" - centered> - {{ props.row.createdAt }} - </b-table-column> - </template> - </b-table> - </template> - - <template v-else> - <h2>There are no public links to this album yet.</h2> - </template> + <b-table-column field="createdAt" + label="Created at" + centered> + {{ props.row.createdAt }} + </b-table-column> + </template> + <template slot="empty"> + <div class="has-text-centered"> + <i class="icon-misc-mood-sad"/> + </div> + <div class="has-text-centered"> + Nothing here + </div> + </template> + <template slot="footer"> + <div class="has-text-right"> + <p class="control"> + <button :class="{ 'is-loading': album.isCreatingLink }" + class="button is-primary" + @click="createLink(album)">Create new link</button> + </p> + </div> + </template> + </b-table> </div> </div> @@ -289,6 +297,25 @@ export default { }); }, methods: { + async createLink(album) { + album.isCreatingLink = true; + try { + const response = await this.axios.post(`${this.$config.baseURL}/album/link/new`, + { albumId: album.id }); + this.$toast.open(response.data.message); + album.links.push({ + identifier: response.data.identifier, + views: 0, + enabled: true, + enableDownload: true, + expiresAt: null + }); + album.isCreatingLink = false; + } catch (error) { + this.$onPromiseError(error); + album.isCreatingLink = false; + } + }, async createAlbum() { if (!this.newAlbumName || this.newAlbumName === '') return; try { @@ -307,29 +334,6 @@ export default { const response = await this.axios.get(`${this.$config.baseURL}/albums/mini`); for (const album of response.data.albums) { album.isDetailsOpen = false; - album.links = [ - { - identifier: 'fgjh90834', - views: 5, - enableDownload: true, - enabled: true, - createdAt: '' - }, - { - identifier: 'awf564qwr', - views: 10, - enableDownload: false, - enabled: true, - createdAt: '' - }, - { - identifier: 'ghjmk39fh', - views: 0, - enableDownload: true, - enabled: false, - createdAt: '' - } - ]; } this.albums = response.data.albums; console.log(this.albums); |