From 5caf4eccfb78e622db43e4a3b83a700280d2d90f Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Fri, 15 Dec 2017 21:45:50 +0100 Subject: [PATCH] Fixed #45: search template when querying import sources --- CHANGELOG | 2 ++ .../components/library/import/ArtistImport.vue | 5 +++++ .../components/library/import/ImportMixin.vue | 15 ++++++++++++++- .../library/import/ReleaseImport.vue | 1 + .../components/library/import/TrackImport.vue | 18 ++++++++++++------ 5 files changed, 34 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 6faa5d26..87c58420 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 4f049f52..870a886e 100644 --- a/front/src/components/library/import/ArtistImport.vue +++ b/front/src/components/library/import/ArtistImport.vue @@ -12,6 +12,10 @@ <label>{{ t }}</label> </div> </div> + <div class="field"> + <label>Query template</label> + <input v-model="customQueryTemplate" /> + </div> </div> </form> <template @@ -22,6 +26,7 @@ :backends="backends" :defaultEnabled="false" :default-backend-id="defaultBackendId" + :query-template="customQueryTemplate" @import-data-changed="recordReleaseData" @enabled="recordReleaseEnabled" ></release-import> diff --git a/front/src/components/library/import/ImportMixin.vue b/front/src/components/library/import/ImportMixin.vue index f3fc6fca..475241f3 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 9f8c1d34..51d5a2fe 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" ></track-import> diff --git a/front/src/components/library/import/TrackImport.vue b/front/src/components/library/import/TrackImport.vue index 3081091c..2275bcf3 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: { -- GitLab