Fixed #45: search template when querying import sources
This commit is contained in:
parent
f8505336da
commit
5caf4eccfb
|
@ -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 @@
|
||||||
<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 @@
|
||||||
: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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
},
|
},
|
||||||
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 @@
|
||||||
: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({
|
||||||
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({
|
||||||
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: {
|
||||||
|
|
Loading…
Reference in New Issue