+
-
+
+
+ {{ movie.overview }}
+
Release Date
{{ movie.year }}
@@ -93,6 +100,17 @@
+
+
+
+
Report an issue
+
+
+ Report issue
+
@@ -122,12 +140,23 @@ import Person from './Person'
import SidebarListElement from './ui/sidebarListElem'
import store from '@/store'
import LoadingPlaceholder from './ui/LoadingPlaceholder'
+import RadioButtons from './ui/RadioButtons'
+import TextArea from './ui/TextArea'
+import SeasonedButton from './ui/SeasonedButton'
import { getMovie, getShow, request, getRequestStatus } from '@/api'
export default {
props: ['id', 'type'],
- components: { TorrentList, Person, LoadingPlaceholder, SidebarListElement },
+ components: {
+ TorrentList,
+ Person,
+ LoadingPlaceholder,
+ SidebarListElement,
+ RadioButtons,
+ TextArea,
+ SeasonedButton
+ },
directives: { img: img }, // TODO decide to remove or use
data(){
return{
@@ -142,7 +171,9 @@ export default {
requested: false,
admin: localStorage.getItem('admin'),
showTorrents: false,
- compact: false
+ compact: false,
+ showIssueForm: false,
+ selectedIssue: null
}
},
methods: {
@@ -177,6 +208,15 @@ export default {
const tmdbType = this.type === 'show' ? 'tv' : this.type
window.location.href = 'https://www.themoviedb.org/' + tmdbType + '/' + this.id
},
+ reportIssue() {
+ if (this.showIssueForm) {
+ this.$notifications.success({
+ title: 'Issue successfully submitted',
+ description: 'Reported issue: Missing subtitles',
+ timeout: 300000
+ })
+ }
+ }
},
watch: {
id: function(val){
@@ -191,6 +231,35 @@ export default {
numberOfTorrentResults: () => {
let numTorrents = store.getters['torrentModule/resultCount']
return numTorrents !== null ? numTorrents + ' results' : null
+ },
+ issueOptions: function() {
+ return [{
+ value: 'playback',
+ text: 'Unable to play'
+ }, {
+ value: 'missing-episode',
+ text: 'Missing Episode',
+ subElements: this.seasonOptions
+ }, {
+ value: 'missing-subtitle',
+ text: 'Missing subtitles'
+ }]
+ },
+ seasonOptions: function() {
+ if (this.movie.type !== 'show') {
+ return []
+ }
+
+ const options = []
+ const length = this.movie.seasons;
+
+ for (var i = 0; i < length; i++) {
+ options.push({
+ value: i+1,
+ text: `Season ${i+1}`
+ })
+ }
+ return options;
}
},
beforeDestroy() {
@@ -224,6 +293,9 @@ export default {
@import "./src/scss/media-queries";
.movie {
+ background-color: $background-color;
+ color: $text-color;
+
&__wrap {
display: flex;
&--header {
@@ -237,9 +309,6 @@ export default {
@include tablet-min{
flex-direction: row;
}
-
- background-color: $background-color;
- color: $text-color;
}
}
&__header {
@@ -360,15 +429,19 @@ export default {
font-size: 13px;
line-height: 1.8;
margin-bottom: 20px;
+ flex: 0 0 100%;
+
@include tablet-min {
margin-bottom: 30px;
font-size: 14px;
}
}
&__details {
- &-block {
- float: left;
- }
+ display: flex;
+ width: 100%;
+ flex-direction: row;
+ flex-wrap: wrap;
+
&-block:not(:last-child) {
margin-bottom: 20px;
margin-right: 20px;
@@ -417,4 +490,24 @@ export default {
}
}
}
+
+.issueForm {
+ // padding: 40px;
+
+ .issueOptions {
+ margin-top: 1rem;
+ }
+
+ .seasonOptions {
+ margin-top: 2rem;
+
+ h2 {
+ margin-bottom: 1rem;
+ }
+
+ > :not(h2) {
+ margin-left: 1rem;
+ }
+ }
+}
diff --git a/src/components/ui/RadioButtons.vue b/src/components/ui/RadioButtons.vue
new file mode 100644
index 0000000..988785a
--- /dev/null
+++ b/src/components/ui/RadioButtons.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
diff --git a/src/components/ui/SeasonedButton.vue b/src/components/ui/SeasonedButton.vue
index 165668a..172f125 100644
--- a/src/components/ui/SeasonedButton.vue
+++ b/src/components/ui/SeasonedButton.vue
@@ -31,7 +31,7 @@ export default {
font-size: 11px;
line-height: 2;
height: 45px;
- letter-spacing: 0.5px;
+ letter-spacing: 1.2px;
padding: 5px 20px 4px 20px;
margin: 0;
margin-right: 0.3rem;
diff --git a/src/components/ui/TextArea.vue b/src/components/ui/TextArea.vue
new file mode 100644
index 0000000..33cdfcc
--- /dev/null
+++ b/src/components/ui/TextArea.vue
@@ -0,0 +1,79 @@
+
+
+
{{ title }}
+
+
+
+
+
+
+
+
diff --git a/src/components/ui/sidebarListElem.vue b/src/components/ui/sidebarListElem.vue
index de69e41..134cc4e 100644
--- a/src/components/ui/sidebarListElem.vue
+++ b/src/components/ui/sidebarListElem.vue
@@ -1,8 +1,10 @@
-
-
+
+
{{ contentTextToDisplay }}
@@ -21,7 +23,7 @@ export default {
props: {
iconRef: {
type: String,
- required: true
+ required: false
},
iconRefActive: {
type: String,
@@ -44,7 +46,7 @@ export default {
iconRefNameIfActive() {
const { iconRefActive, iconRef, active } = this
- if ((iconRefActive && iconRef) & active) {
+ if ((iconRefActive && iconRef) && active) {
return iconRefActive
}
return iconRef
@@ -98,7 +100,7 @@ li {
text-align: right;
}
- figure, figure > svg {
+ figure, figure > .icon {
width: 18px;
height: 18px;
margin: 0 7px 0 0;