diff --git a/CHANGELOG b/CHANGELOG
index 6faa5d267..87c584200 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -5,6 +5,8 @@ Changelog
0.2.5 (unreleased)
------------------
+- Import: can now specify search template when querying import sources (#45)
+
0.2.4 (2017-12-14)
------------------
diff --git a/front/src/components/library/import/ArtistImport.vue b/front/src/components/library/import/ArtistImport.vue
index 4f049f52e..870a886e1 100644
--- a/front/src/components/library/import/ArtistImport.vue
+++ b/front/src/components/library/import/ArtistImport.vue
@@ -12,6 +12,10 @@
+
+
+
+
diff --git a/front/src/components/library/import/ImportMixin.vue b/front/src/components/library/import/ImportMixin.vue
index f3fc6fca6..475241f3d 100644
--- a/front/src/components/library/import/ImportMixin.vue
+++ b/front/src/components/library/import/ImportMixin.vue
@@ -13,10 +13,12 @@ export default {
metadata: {type: Object, required: true},
defaultEnabled: {type: Boolean, default: true},
backends: {type: Array},
- defaultBackendId: {type: String}
+ defaultBackendId: {type: String},
+ queryTemplate: {type: String, default: '$artist $title'}
},
data () {
return {
+ customQueryTemplate: this.queryTemplate,
currentBackendId: this.defaultBackendId,
isImporting: false,
enabled: this.defaultEnabled
@@ -56,6 +58,9 @@ export default {
return this.backends.filter(b => {
return b.id === self.currentBackendId
})[0]
+ },
+ realQueryTemplate () {
+
}
},
watch: {
@@ -70,6 +75,14 @@ export default {
},
enabled (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
+ }
}
}
}
diff --git a/front/src/components/library/import/ReleaseImport.vue b/front/src/components/library/import/ReleaseImport.vue
index 9f8c1d347..51d5a2fea 100644
--- a/front/src/components/library/import/ReleaseImport.vue
+++ b/front/src/components/library/import/ReleaseImport.vue
@@ -20,6 +20,7 @@
:release-metadata="metadata"
:backends="backends"
:default-backend-id="defaultBackendId"
+ :query-template="customQueryTemplate"
@import-data-changed="recordTrackData"
@enabled="recordTrackEnabled"
>
diff --git a/front/src/components/library/import/TrackImport.vue b/front/src/components/library/import/TrackImport.vue
index 3081091c5..2275bcf34 100644
--- a/front/src/components/library/import/TrackImport.vue
+++ b/front/src/components/library/import/TrackImport.vue
@@ -92,13 +92,7 @@ export default Vue.extend({
releaseMetadata: {type: Object, required: true}
},
data () {
- let queryParts = [
- this.releaseMetadata['artist-credit'][0]['artist']['name'],
- this.releaseMetadata['title'],
- this.metadata['recording']['title']
- ]
return {
- query: queryParts.join(' '),
isLoading: false,
results: [],
currentResultIndex: 0,
@@ -151,6 +145,18 @@ export default Vue.extend({
mbid: this.metadata.recording.id,
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: {