From c38828d67c5aa880b7828c7ac673c00bf3471f72 Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 14 Jan 2022 00:44:00 -0500 Subject: [PATCH 1/4] converting forward and reverse filters to reactive Vue array --- .../PairedListCollectionCreator.vue | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/client/src/components/Collections/PairedListCollectionCreator.vue b/client/src/components/Collections/PairedListCollectionCreator.vue index 1e0175c7061..08a4b7f3086 100644 --- a/client/src/components/Collections/PairedListCollectionCreator.vue +++ b/client/src/components/Collections/PairedListCollectionCreator.vue @@ -258,7 +258,7 @@
-
    +
    1. this._unpair(pair); }, clickClearFilters: function () { - this.forwardFilter = ""; - this.reverseFilter = ""; + Vue.set(this.filters, 0, ""); + Vue.set(this.filters, 1, ""); }, splitByFilter: function () { - var filters = [new RegExp(this.forwardFilter), new RegExp(this.reverseFilter)]; + var filters = [new RegExp(this.filters[0]), new RegExp(this.filters[1])]; var split = [[], []]; this.workingElements.forEach((e) => { filters.forEach((filter, i) => { @@ -925,8 +926,8 @@ export default { }; }, changeFilters: function (filter) { - this.filters[0] = this.forwardFilter = this.commonFilters[filter][0]; - this.filters[1] = this.reverseFilter = this.commonFilters[filter][1]; + Vue.set(this.filters, 0, this.commonFilters[filter][0]); + Vue.set(this.filters, 1, this.commonFilters[filter][1]); }, clickedCreate: function (collectionName) { this.checkForDuplicates(); @@ -946,7 +947,6 @@ export default { this.pairedElements.forEach((pair) => { if (Object.prototype.hasOwnProperty.call(existingPairNames, pair.name)) { valid = false; - console.log("found a dupe"); this.duplicatePairNames.push(pair.name); } existingPairNames[pair.name] = true; @@ -960,12 +960,12 @@ export default { computed: { forwardElements: { get() { - return this.filterElements(this.workingElements, this.forwardFilter); + return this.filterElements(this.workingElements, this.filters[0]); }, }, reverseElements: { get() { - return this.filterElements(this.workingElements, this.reverseFilter); + return this.filterElements(this.workingElements, this.filters[1]); }, }, pairableElements: { From 4b981cdd8cf6f89ee22cc97ed94f920f392daa1f Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 14 Jan 2022 14:01:33 -0500 Subject: [PATCH 2/4] referencing forward/reverse filter instead --- .../PairedListCollectionCreator.vue | 34 ++++++++++--------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/client/src/components/Collections/PairedListCollectionCreator.vue b/client/src/components/Collections/PairedListCollectionCreator.vue index 08a4b7f3086..5bd7d66d3af 100644 --- a/client/src/components/Collections/PairedListCollectionCreator.vue +++ b/client/src/components/Collections/PairedListCollectionCreator.vue @@ -258,7 +258,7 @@
      -
        +
        1. this._unpair(pair); }, clickClearFilters: function () { - Vue.set(this.filters, 0, ""); - Vue.set(this.filters, 1, ""); + this.forwardFilter = ""; + this.reverseFilter = ""; }, splitByFilter: function () { - var filters = [new RegExp(this.filters[0]), new RegExp(this.filters[1])]; + var filters = [new RegExp(this.forwardFilter), new RegExp(this.reverseFilter)]; var split = [[], []]; this.workingElements.forEach((e) => { filters.forEach((filter, i) => { @@ -838,7 +840,7 @@ export default { var _regexps = []; function getRegExps() { if (!_regexps.length) { - _regexps = [new RegExp(this.filters[0]), new RegExp(this.filters[1])]; + _regexps = [new RegExp(this.forwardFilter), new RegExp(this.reverseFilter)]; } return _regexps; } @@ -926,8 +928,8 @@ export default { }; }, changeFilters: function (filter) { - Vue.set(this.filters, 0, this.commonFilters[filter][0]); - Vue.set(this.filters, 1, this.commonFilters[filter][1]); + this.forwardFilter = this.commonFilters[filter][0]; + this.reverseFilter = this.commonFilters[filter][1]; }, clickedCreate: function (collectionName) { this.checkForDuplicates(); @@ -960,12 +962,12 @@ export default { computed: { forwardElements: { get() { - return this.filterElements(this.workingElements, this.filters[0]); + return this.filterElements(this.workingElements, this.forwardFilter); }, }, reverseElements: { get() { - return this.filterElements(this.workingElements, this.filters[1]); + return this.filterElements(this.workingElements, this.reverseFilter); }, }, pairableElements: { From 464257c43bf2a47698f000ee648999311010eb13 Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 14 Jan 2022 16:34:38 -0500 Subject: [PATCH 3/4] adding test case that types in filters --- .../PairedListCollectionCreator.test.js | 35 +++++++++++++++++++ .../paired-collection-creator.data.js | 12 ++++++- 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/client/src/components/Collections/PairedListCollectionCreator.test.js b/client/src/components/Collections/PairedListCollectionCreator.test.js index 0870092906d..34188600f1f 100644 --- a/client/src/components/Collections/PairedListCollectionCreator.test.js +++ b/client/src/components/Collections/PairedListCollectionCreator.test.js @@ -102,4 +102,39 @@ describe("PairedListCollectionCreator", () => { const pairname = wrapper.find("span.pair-name"); expect(pairname.text()).toBe("UII_moo_1"); }); + + it("autopairs correctly when filters are typed in", async () => { + wrapper = mount(PairedListCollectionCreator, { + propsData: { + initialElements: DATA._4, + creationFn: () => { + return; + }, + oncreate: () => { + return; + }, + oncancel: () => { + return; + }, + hideSourceItems: false, + }, + }); + await wrapper.vm.$nextTick() + //change filter to _R1/_R2 + wrapper.find("div.forward-unpaired-filter > input").setValue("_R1"); + await wrapper.vm.$nextTick(); + wrapper.find("div.reverse-unpaired-filter > input").setValue("_R2"); + await wrapper.vm.$nextTick(); + //assert forward filter + const forwardFilter = wrapper.find("div.forward-unpaired-filter > input").element.value; + expect(forwardFilter).toBe("_R1"); + //assert reverse filter + const reverseFilter = wrapper.find("div.reverse-unpaired-filter > input").element.value; + expect(reverseFilter).toBe("_R2"); + // click Autopair + wrapper.find("a.autopair-link").trigger("click"); + await wrapper.vm.$nextTick(); + //assert all pairs matched + expect(wrapper.findAll("li.dataset unpaired").length == 0).toBeTruthy(); + }); }); diff --git a/client/tests/qunit/test-data/paired-collection-creator.data.js b/client/tests/qunit/test-data/paired-collection-creator.data.js index 02a199980d5..a6c3c954568 100644 --- a/client/tests/qunit/test-data/paired-collection-creator.data.js +++ b/client/tests/qunit/test-data/paired-collection-creator.data.js @@ -28,6 +28,15 @@ var datasets3 = [ {name: "UII_moo_1.2.fastq", state: STATES.OK} ] +var datasets4= [ + { name: "SET1-01_R1.fastq", state: STATES.OK }, + { name: "SET1-01_R2.fastq", state: STATES.OK }, + { name: "SET1-02_R1.fastq", state: STATES.OK }, + { name: "SET1-02_R2.fastq", state: STATES.OK }, + { name: "SET1-03_R1.fastq", state: STATES.OK }, + { name: "SET1-03_R2.fastq", state: STATES.OK }, +] + var datasets1CreateRequestJSON = { type: "dataset_collection", collection_type: "list:paired", @@ -161,5 +170,6 @@ export default { _1: datasets1, _1requestJSON: datasets1CreateRequestJSON, _2: datasets2, - _3: datasets3 + _3: datasets3, + _4: datasets4 }; From d0d46c4ef931be7b9916cfe0cf0679301c05bd2f Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Sun, 16 Jan 2022 09:58:00 -0500 Subject: [PATCH 4/4] running prettier --- .../components/Collections/PairedListCollectionCreator.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/Collections/PairedListCollectionCreator.test.js b/client/src/components/Collections/PairedListCollectionCreator.test.js index 34188600f1f..ce54a281bd0 100644 --- a/client/src/components/Collections/PairedListCollectionCreator.test.js +++ b/client/src/components/Collections/PairedListCollectionCreator.test.js @@ -119,7 +119,7 @@ describe("PairedListCollectionCreator", () => { hideSourceItems: false, }, }); - await wrapper.vm.$nextTick() + await wrapper.vm.$nextTick(); //change filter to _R1/_R2 wrapper.find("div.forward-unpaired-filter > input").setValue("_R1"); await wrapper.vm.$nextTick();