diff --git a/src/js/widgets/query_info/query_info_template.html b/src/js/widgets/query_info/query_info_template.html index e1cb38beb..92145f4db 100644 --- a/src/js/widgets/query_info/query_info_template.html +++ b/src/js/widgets/query_info/query_info_template.html @@ -50,27 +50,30 @@
-
OR
{{/if}} - - - - + +
+ + +
+ + @@ -107,7 +110,9 @@ {{feedback.name}} was not created, error occured. {{feedback.error}} {{else}} + {{#if feedback.name}} Records were not added to {{feedback.name}}, error occurred. + {{/if}} {{feedback.error}} {{/if}} diff --git a/src/js/widgets/query_info/query_info_widget.js b/src/js/widgets/query_info/query_info_widget.js index 61e1bd796..a5f39a653 100644 --- a/src/js/widgets/query_info/query_info_widget.js +++ b/src/js/widgets/query_info/query_info_widget.js @@ -68,8 +68,7 @@ define([ 'change #library-select': 'recordLibrarySelection', 'keyup .new-library-name': 'recordNewLibraryName', 'click .library-add-title': 'toggleLibraryDrawer', - 'click .submit-add-to-library': 'libraryAdd', - 'click .submit-create-library': 'libraryCreate', + 'click .submit-add-to-library': 'libraryAddOrCreate', }, recordLibrarySelection: function(e) { @@ -84,42 +83,60 @@ define([ this.model.set('selectedVsAll', $(e.currentTarget).val()); }, - libraryAdd: function() { - // show loading view - this.$('.submit-add-to-library').html( - '' - ); - + libraryAddOrCreate: function() { var data = {}; - // we have the selected library in the model but only if there was a select event, so query DOM - data.libraryID = this.$('#library-select').val(); + const selected = this.$('#library-select').val(); + const createNew = this.model.get('newLibraryName'); - if (this.model.get('selected')) { - data.recordsToAdd = this.$('#all-vs-selected').val(); - } else { - data.recordsToAdd = 'all'; + // if selected existing library + if (selected !== '0' && !createNew) { + data.libraryID = this.$('#library-select').val(); + if (this.model.get('selected')) { + data.recordsToAdd = this.$('#all-vs-selected').val(); + } else { + data.recordsToAdd = 'all'; + } + // show loading view + this.$('.submit-add-to-library').html( + '' + ); + this.trigger('library-add', data); } - this.trigger('library-add', data); - }, - libraryCreate: function() { - // show loading view - this.$('.submit-create-library').html( - '' - ); + // else if creating new library + else if (selected === '0' && createNew) { + data.name = this.model.get('newLibraryName'); + if (this.model.get('selected')) { + data.recordsToAdd = this.$('#all-vs-selected').val(); + } else { + data.recordsToAdd = 'all'; + } - var data = {}; + data.name = this.model.get('newLibraryName') || ''; + data.name = data.name.trim(); + // show loading view + this.$('.submit-add-to-library').html( + '' + ); + this.trigger('library-create', data); + } - if (this.model.get('selected')) { - data.recordsToAdd = this.$('#all-vs-selected').val(); - } else { - data.recordsToAdd = 'all'; + // both selected, invalid + else if (selected !== '0' && createNew) { + this.model.set('feedback', { + success: false, + error: 'Either select from an existing or create a new one', + }); } - data.name = this.model.get('newLibraryName') || ''; - data.name = data.name.trim(); - this.trigger('library-create', data); + // none selected, invalid + else { + this.model.set('feedback', { + success: false, + error: 'Select from an existing library or create a new one', + }); + } }, toggleLibraryDrawer: function() { @@ -269,6 +286,7 @@ define([ .done(function(response, status) { var numAlreadyInLib = response.numBibcodesRequested - parseInt(response.number_added); + that.model.set('selectedLibrary', undefined); that.model.set('feedback', { success: true, name: name, diff --git a/src/js/wraps/abstract_page_library_add/template.html b/src/js/wraps/abstract_page_library_add/template.html index 36c182849..3d96783a7 100644 --- a/src/js/wraps/abstract_page_library_add/template.html +++ b/src/js/wraps/abstract_page_library_add/template.html @@ -27,22 +27,24 @@
-
OR
{{/if}} +
+ + +
+ + - - - - - +
diff --git a/src/styles/sass/ads-sass/results-page-widgets.scss b/src/styles/sass/ads-sass/results-page-widgets.scss index 50eebc38d..33d88aa8a 100644 --- a/src/styles/sass/ads-sass/results-page-widgets.scss +++ b/src/styles/sass/ads-sass/results-page-widgets.scss @@ -126,8 +126,8 @@ } .s-library-select { display: inline; - width: 70%; - max-width: 166px; + // width: 70%; + // max-width: 166px; } } diff --git a/test/mocha/js/widgets/query_info_widget.spec.js b/test/mocha/js/widgets/query_info_widget.spec.js index 96cf3de04..79712b7a3 100644 --- a/test/mocha/js/widgets/query_info_widget.spec.js +++ b/test/mocha/js/widgets/query_info_widget.spec.js @@ -120,18 +120,19 @@ define([ expect($("#test #all-vs-selected")[0].options[0].value).to.eql("selected"); expect($("#test #all-vs-selected")[0].options[1].value).to.eql("all"); - expect($("#test #library-select")[0].options[1].value).to.eql("1"); - expect($("#test #library-select")[0].options[1].textContent).to.eql("Stars? Stars!!! ()"); - + expect($("#test #library-select")[0].options[1].value).to.eql("2"); + expect($("#test #library-select")[0].options[1].textContent).to.eql("I See the Moon ()"); + $('#test #library-select').val('2'); $("#test .submit-add-to-library").click(); - expect(fakeLibraryController.addBibcodesToLib.args[0][0]).to.eql({library: "2", bibcodes: "selected"}); + expect(fakeLibraryController.addBibcodesToLib.args[0][0]).to.eql({ library: '2', bibcodes: 'selected' }); $("#test input[name=new-library-name]").val("fakeName"); $("#test input[name=new-library-name]").trigger("keyup"); - $("#test .submit-create-library").click(); + $('#test #library-select').val('0'); + $('#test .submit-add-to-library').click(); expect(fakeLibraryController.createLibAndAddBibcodes.args[0][0]).to.eql({ bibcodes: "selected", name : "fakeName" });