Skip to content
Snippets Groups Projects
Verified Commit 5caf4ecc authored by Eliot Berriot's avatar Eliot Berriot
Browse files

Fixed #45: search template when querying import sources

parent f8505336
No related branches found
No related tags found
No related merge requests found
...@@ -5,6 +5,8 @@ Changelog ...@@ -5,6 +5,8 @@ Changelog
0.2.5 (unreleased) 0.2.5 (unreleased)
------------------ ------------------
- Import: can now specify search template when querying import sources (#45)
0.2.4 (2017-12-14) 0.2.4 (2017-12-14)
------------------ ------------------
......
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
<label>{{ t }}</label> <label>{{ t }}</label>
</div> </div>
</div> </div>
<div class="field">
<label>Query template</label>
<input v-model="customQueryTemplate" />
</div>
</div> </div>
</form> </form>
<template <template
...@@ -22,6 +26,7 @@ ...@@ -22,6 +26,7 @@
:backends="backends" :backends="backends"
:defaultEnabled="false" :defaultEnabled="false"
:default-backend-id="defaultBackendId" :default-backend-id="defaultBackendId"
:query-template="customQueryTemplate"
@import-data-changed="recordReleaseData" @import-data-changed="recordReleaseData"
@enabled="recordReleaseEnabled" @enabled="recordReleaseEnabled"
></release-import> ></release-import>
......
...@@ -13,10 +13,12 @@ export default { ...@@ -13,10 +13,12 @@ export default {
metadata: {type: Object, required: true}, metadata: {type: Object, required: true},
defaultEnabled: {type: Boolean, default: true}, defaultEnabled: {type: Boolean, default: true},
backends: {type: Array}, backends: {type: Array},
defaultBackendId: {type: String} defaultBackendId: {type: String},
queryTemplate: {type: String, default: '$artist $title'}
}, },
data () { data () {
return { return {
customQueryTemplate: this.queryTemplate,
currentBackendId: this.defaultBackendId, currentBackendId: this.defaultBackendId,
isImporting: false, isImporting: false,
enabled: this.defaultEnabled enabled: this.defaultEnabled
...@@ -56,6 +58,9 @@ export default { ...@@ -56,6 +58,9 @@ export default {
return this.backends.filter(b => { return this.backends.filter(b => {
return b.id === self.currentBackendId return b.id === self.currentBackendId
})[0] })[0]
},
realQueryTemplate () {
} }
}, },
watch: { watch: {
...@@ -70,6 +75,14 @@ export default { ...@@ -70,6 +75,14 @@ export default {
}, },
enabled (newValue) { enabled (newValue) {
this.$emit('enabled', this.importData, newValue) this.$emit('enabled', this.importData, newValue)
},
queryTemplate (newValue, oldValue) {
// we inherit from the prop template unless the component changed
// the value
if (oldValue === this.customQueryTemplate) {
// no changed from prop, we keep the sync
this.customQueryTemplate = newValue
}
} }
} }
} }
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
:release-metadata="metadata" :release-metadata="metadata"
:backends="backends" :backends="backends"
:default-backend-id="defaultBackendId" :default-backend-id="defaultBackendId"
:query-template="customQueryTemplate"
@import-data-changed="recordTrackData" @import-data-changed="recordTrackData"
@enabled="recordTrackEnabled" @enabled="recordTrackEnabled"
></track-import> ></track-import>
......
...@@ -92,13 +92,7 @@ export default Vue.extend({ ...@@ -92,13 +92,7 @@ export default Vue.extend({
releaseMetadata: {type: Object, required: true} releaseMetadata: {type: Object, required: true}
}, },
data () { data () {
let queryParts = [
this.releaseMetadata['artist-credit'][0]['artist']['name'],
this.releaseMetadata['title'],
this.metadata['recording']['title']
]
return { return {
query: queryParts.join(' '),
isLoading: false, isLoading: false,
results: [], results: [],
currentResultIndex: 0, currentResultIndex: 0,
...@@ -151,6 +145,18 @@ export default Vue.extend({ ...@@ -151,6 +145,18 @@ export default Vue.extend({
mbid: this.metadata.recording.id, mbid: this.metadata.recording.id,
source: this.importedUrl source: this.importedUrl
} }
},
query () {
let queryMapping = [
['artist', this.releaseMetadata['artist-credit'][0]['artist']['name']],
['album', this.releaseMetadata['title']],
['title', this.metadata['recording']['title']]
]
let query = this.customQueryTemplate
queryMapping.forEach(e => {
query = query.split('$' + e[0]).join(e[1])
})
return query
} }
}, },
watch: { watch: {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment