From 1d3a9ad8bd6af701e71b9d6297478025bd9cacaa Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Thu, 5 Nov 2020 23:44:34 -0500 Subject: [PATCH 01/11] Moving data of saved rules to a separate component from the template view --- .../src/components/RuleBuilder/SaveRules.vue | 54 +++++++++++++++++++ .../RuleBuilder/SavedRulesSelector.vue | 43 ++------------- .../src/components/RuleCollectionBuilder.vue | 6 ++- 3 files changed, 61 insertions(+), 42 deletions(-) create mode 100644 client/src/components/RuleBuilder/SaveRules.vue diff --git a/client/src/components/RuleBuilder/SaveRules.vue b/client/src/components/RuleBuilder/SaveRules.vue new file mode 100644 index 00000000000..feec0989f6d --- /dev/null +++ b/client/src/components/RuleBuilder/SaveRules.vue @@ -0,0 +1,54 @@ + diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.vue b/client/src/components/RuleBuilder/SavedRulesSelector.vue index ab0f20c1fb3..818f77bb134 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.vue +++ b/client/src/components/RuleBuilder/SavedRulesSelector.vue @@ -32,40 +32,12 @@ export default { data: function () { return { savedRulesMenu: _l("Recently used rules"), - savedRules: [], }; }, - created() { - let counter = 0; - if (this.user == null) { - return; - } else { - for (let i = 0; i < localStorage.length; i++) { - if (localStorage.key(i).startsWith(this.prefix + this.user)) { - var savedSession = localStorage.getItem(localStorage.key(i)); - if (savedSession) { - var key = localStorage.key(i); - this.savedRules.push({ - dateTime: key.substring(this.prefix.length + this.user.length), - rule: savedSession, - }); - } - counter++; - if (counter == 10) { - break; - } - } - } - } - }, props: { - prefix: { - type: String, - default: "galaxy_rules_", - }, - user: { - type: String, - default: getGalaxyInstance() ? getGalaxyInstance().user.id : "", + savedRules: { + type: Array, + required: true, }, }, computed: { @@ -77,15 +49,6 @@ export default { formatDate(dateTime) { return moment.utc(dateTime).from(moment().utc()); }, - saveSession(jsonRulesString) { - var dateTimeString = new Date().toISOString(); - var key = this.prefix + this.user + dateTimeString; - localStorage.setItem(key, jsonRulesString); - this.savedRules.push({ - dateTime: dateTimeString, - rule: jsonRulesString, - }); - }, }, }; diff --git a/client/src/components/RuleCollectionBuilder.vue b/client/src/components/RuleCollectionBuilder.vue index 65128443031..481f7d8f6b8 100644 --- a/client/src/components/RuleCollectionBuilder.vue +++ b/client/src/components/RuleCollectionBuilder.vue @@ -347,7 +347,7 @@ :title="titleViewSource" @click="viewSource" > - +
Rows contain differing numbers of columns, there was likely a problem parsing your data. @@ -608,6 +608,7 @@ import RuleModalMiddle from "components/RuleBuilder/RuleModalMiddle"; import RuleModalFooter from "components/RuleBuilder/RuleModalFooter"; import StateDiv from "components/RuleBuilder/StateDiv"; import SavedRulesSelector from "components/RuleBuilder/SavedRulesSelector"; +import SaveRules from "components/RuleBuilder/SaveRules"; Vue.use(BootstrapVue); @@ -1071,6 +1072,7 @@ export default { return this.hotData.colHeadersPerRule; }, }, + mixins: [SaveRules], methods: { restoreRules(event) { const json = JSON.parse(event); @@ -1275,7 +1277,7 @@ export default { this.state = "error"; return; } - this.$refs.savedRulesSelector.saveSession(JSON.stringify(asJson)); + this.saveSession(JSON.stringify(asJson)); this.state = "wait"; const name = this.collectionName; const collectionType = this.collectionType; From 89007a80e5e9ddca36c35b8e1d5180d8975d7ac4 Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 6 Nov 2020 00:17:25 -0500 Subject: [PATCH 02/11] Fixing unit tests --- client/src/components/RuleBuilder/SavedRulesSelector.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.test.js b/client/src/components/RuleBuilder/SavedRulesSelector.test.js index 6093cce9d74..85996a4f4a9 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.test.js +++ b/client/src/components/RuleBuilder/SavedRulesSelector.test.js @@ -48,7 +48,7 @@ describe("SavedRulesSelector", () => { ], }; - wrapper.vm.saveSession(testRules); + wrapper.savedRules.push((testRules)); await Vue.nextTick(); const sessions = wrapper.findAll("div.dropdown-menu > a.saved-rule-item"); expect(sessions.length > 0).toBeTruthy(); From dedc2e79d7bb6748078db8037f5b1860926f552b Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 6 Nov 2020 00:30:08 -0500 Subject: [PATCH 03/11] Fixing unit tests --- .../components/RuleBuilder/SavedRulesSelector.test.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.test.js b/client/src/components/RuleBuilder/SavedRulesSelector.test.js index 85996a4f4a9..53e7d6b22bb 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.test.js +++ b/client/src/components/RuleBuilder/SavedRulesSelector.test.js @@ -12,6 +12,7 @@ describe("SavedRulesSelector", () => { propsData: { // Add a unique prefix for this test run so the test is not affected by local storage values prefix: "test_prefix_" + new Date().toISOString() + "_", + savedRules: [] }, attachTo: getNewAttachNode(), }); @@ -19,8 +20,6 @@ describe("SavedRulesSelector", () => { }); afterEach(async () => { - wrapper.savedRules = []; - await Vue.nextTick(); }); @@ -30,7 +29,7 @@ describe("SavedRulesSelector", () => { }); it("should emit a click event when a session is clicked", async () => { - wrapper.setProps({ user: "test_user" }); + const testRules = { rules: [ { @@ -47,6 +46,10 @@ describe("SavedRulesSelector", () => { }, ], }; + wrapper.setProps({ + user: "test_user", + savedRules: [testRules] + }); wrapper.savedRules.push((testRules)); await Vue.nextTick(); From 3d2b6d40dd8425163981e2da380b08c3302924b8 Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 6 Nov 2020 00:33:28 -0500 Subject: [PATCH 04/11] Fixing unit tests --- client/src/components/RuleBuilder/SavedRulesSelector.test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.test.js b/client/src/components/RuleBuilder/SavedRulesSelector.test.js index 53e7d6b22bb..d43c15c58c7 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.test.js +++ b/client/src/components/RuleBuilder/SavedRulesSelector.test.js @@ -50,8 +50,6 @@ describe("SavedRulesSelector", () => { user: "test_user", savedRules: [testRules] }); - - wrapper.savedRules.push((testRules)); await Vue.nextTick(); const sessions = wrapper.findAll("div.dropdown-menu > a.saved-rule-item"); expect(sessions.length > 0).toBeTruthy(); From 12cbdd54c8fd018666fc49516dccb3d0ec7b8705 Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Thu, 5 Nov 2020 23:44:34 -0500 Subject: [PATCH 05/11] Moving data of saved rules to a separate component from the template view --- .../src/components/RuleBuilder/SaveRules.vue | 54 +++++++++++++++++++ .../RuleBuilder/SavedRulesSelector.vue | 43 ++------------- .../src/components/RuleCollectionBuilder.vue | 6 ++- 3 files changed, 61 insertions(+), 42 deletions(-) create mode 100644 client/src/components/RuleBuilder/SaveRules.vue diff --git a/client/src/components/RuleBuilder/SaveRules.vue b/client/src/components/RuleBuilder/SaveRules.vue new file mode 100644 index 00000000000..feec0989f6d --- /dev/null +++ b/client/src/components/RuleBuilder/SaveRules.vue @@ -0,0 +1,54 @@ + diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.vue b/client/src/components/RuleBuilder/SavedRulesSelector.vue index ab0f20c1fb3..818f77bb134 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.vue +++ b/client/src/components/RuleBuilder/SavedRulesSelector.vue @@ -32,40 +32,12 @@ export default { data: function () { return { savedRulesMenu: _l("Recently used rules"), - savedRules: [], }; }, - created() { - let counter = 0; - if (this.user == null) { - return; - } else { - for (let i = 0; i < localStorage.length; i++) { - if (localStorage.key(i).startsWith(this.prefix + this.user)) { - var savedSession = localStorage.getItem(localStorage.key(i)); - if (savedSession) { - var key = localStorage.key(i); - this.savedRules.push({ - dateTime: key.substring(this.prefix.length + this.user.length), - rule: savedSession, - }); - } - counter++; - if (counter == 10) { - break; - } - } - } - } - }, props: { - prefix: { - type: String, - default: "galaxy_rules_", - }, - user: { - type: String, - default: getGalaxyInstance() ? getGalaxyInstance().user.id : "", + savedRules: { + type: Array, + required: true, }, }, computed: { @@ -77,15 +49,6 @@ export default { formatDate(dateTime) { return moment.utc(dateTime).from(moment().utc()); }, - saveSession(jsonRulesString) { - var dateTimeString = new Date().toISOString(); - var key = this.prefix + this.user + dateTimeString; - localStorage.setItem(key, jsonRulesString); - this.savedRules.push({ - dateTime: dateTimeString, - rule: jsonRulesString, - }); - }, }, }; diff --git a/client/src/components/RuleCollectionBuilder.vue b/client/src/components/RuleCollectionBuilder.vue index 65128443031..481f7d8f6b8 100644 --- a/client/src/components/RuleCollectionBuilder.vue +++ b/client/src/components/RuleCollectionBuilder.vue @@ -347,7 +347,7 @@ :title="titleViewSource" @click="viewSource" > - +
Rows contain differing numbers of columns, there was likely a problem parsing your data. @@ -608,6 +608,7 @@ import RuleModalMiddle from "components/RuleBuilder/RuleModalMiddle"; import RuleModalFooter from "components/RuleBuilder/RuleModalFooter"; import StateDiv from "components/RuleBuilder/StateDiv"; import SavedRulesSelector from "components/RuleBuilder/SavedRulesSelector"; +import SaveRules from "components/RuleBuilder/SaveRules"; Vue.use(BootstrapVue); @@ -1071,6 +1072,7 @@ export default { return this.hotData.colHeadersPerRule; }, }, + mixins: [SaveRules], methods: { restoreRules(event) { const json = JSON.parse(event); @@ -1275,7 +1277,7 @@ export default { this.state = "error"; return; } - this.$refs.savedRulesSelector.saveSession(JSON.stringify(asJson)); + this.saveSession(JSON.stringify(asJson)); this.state = "wait"; const name = this.collectionName; const collectionType = this.collectionType; From b011e2bb317fea04757b361cfb9da79c41e46371 Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 6 Nov 2020 00:17:25 -0500 Subject: [PATCH 06/11] Fixing unit tests --- client/src/components/RuleBuilder/SavedRulesSelector.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.test.js b/client/src/components/RuleBuilder/SavedRulesSelector.test.js index 6093cce9d74..85996a4f4a9 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.test.js +++ b/client/src/components/RuleBuilder/SavedRulesSelector.test.js @@ -48,7 +48,7 @@ describe("SavedRulesSelector", () => { ], }; - wrapper.vm.saveSession(testRules); + wrapper.savedRules.push((testRules)); await Vue.nextTick(); const sessions = wrapper.findAll("div.dropdown-menu > a.saved-rule-item"); expect(sessions.length > 0).toBeTruthy(); From 973a527c52af3bc41482012fea26087225e47dab Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 6 Nov 2020 00:30:08 -0500 Subject: [PATCH 07/11] Fixing unit tests --- .../components/RuleBuilder/SavedRulesSelector.test.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.test.js b/client/src/components/RuleBuilder/SavedRulesSelector.test.js index 85996a4f4a9..53e7d6b22bb 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.test.js +++ b/client/src/components/RuleBuilder/SavedRulesSelector.test.js @@ -12,6 +12,7 @@ describe("SavedRulesSelector", () => { propsData: { // Add a unique prefix for this test run so the test is not affected by local storage values prefix: "test_prefix_" + new Date().toISOString() + "_", + savedRules: [] }, attachTo: getNewAttachNode(), }); @@ -19,8 +20,6 @@ describe("SavedRulesSelector", () => { }); afterEach(async () => { - wrapper.savedRules = []; - await Vue.nextTick(); }); @@ -30,7 +29,7 @@ describe("SavedRulesSelector", () => { }); it("should emit a click event when a session is clicked", async () => { - wrapper.setProps({ user: "test_user" }); + const testRules = { rules: [ { @@ -47,6 +46,10 @@ describe("SavedRulesSelector", () => { }, ], }; + wrapper.setProps({ + user: "test_user", + savedRules: [testRules] + }); wrapper.savedRules.push((testRules)); await Vue.nextTick(); From c4e47e6e10ed03619e9a2f4ed7c46fafa0e78566 Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 6 Nov 2020 00:33:28 -0500 Subject: [PATCH 08/11] Fixing unit tests --- client/src/components/RuleBuilder/SavedRulesSelector.test.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.test.js b/client/src/components/RuleBuilder/SavedRulesSelector.test.js index 53e7d6b22bb..d43c15c58c7 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.test.js +++ b/client/src/components/RuleBuilder/SavedRulesSelector.test.js @@ -50,8 +50,6 @@ describe("SavedRulesSelector", () => { user: "test_user", savedRules: [testRules] }); - - wrapper.savedRules.push((testRules)); await Vue.nextTick(); const sessions = wrapper.findAll("div.dropdown-menu > a.saved-rule-item"); expect(sessions.length > 0).toBeTruthy(); From 800e098dca0f6b6bb9a24f8a6f82610f1f53bb2b Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Fri, 6 Nov 2020 09:55:31 +0100 Subject: [PATCH 09/11] Run prettier --- .../src/components/RuleBuilder/SavedRulesSelector.test.js | 7 +++---- client/src/components/RuleCollectionBuilder.vue | 6 +++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.test.js b/client/src/components/RuleBuilder/SavedRulesSelector.test.js index d43c15c58c7..483398804de 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.test.js +++ b/client/src/components/RuleBuilder/SavedRulesSelector.test.js @@ -12,7 +12,7 @@ describe("SavedRulesSelector", () => { propsData: { // Add a unique prefix for this test run so the test is not affected by local storage values prefix: "test_prefix_" + new Date().toISOString() + "_", - savedRules: [] + savedRules: [], }, attachTo: getNewAttachNode(), }); @@ -29,7 +29,6 @@ describe("SavedRulesSelector", () => { }); it("should emit a click event when a session is clicked", async () => { - const testRules = { rules: [ { @@ -46,9 +45,9 @@ describe("SavedRulesSelector", () => { }, ], }; - wrapper.setProps({ + wrapper.setProps({ user: "test_user", - savedRules: [testRules] + savedRules: [testRules], }); await Vue.nextTick(); const sessions = wrapper.findAll("div.dropdown-menu > a.saved-rule-item"); diff --git a/client/src/components/RuleCollectionBuilder.vue b/client/src/components/RuleCollectionBuilder.vue index 481f7d8f6b8..409e5bfa3dc 100644 --- a/client/src/components/RuleCollectionBuilder.vue +++ b/client/src/components/RuleCollectionBuilder.vue @@ -347,7 +347,11 @@ :title="titleViewSource" @click="viewSource" > - +
Rows contain differing numbers of columns, there was likely a problem parsing your data. From 6fb0d8f824ac791181847e6c14185032844b03ea Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 6 Nov 2020 11:47:02 -0500 Subject: [PATCH 10/11] fixing an error --- client/src/components/RuleBuilder/SavedRulesSelector.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.vue b/client/src/components/RuleBuilder/SavedRulesSelector.vue index 818f77bb134..1c052c93548 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.vue +++ b/client/src/components/RuleBuilder/SavedRulesSelector.vue @@ -25,7 +25,6 @@ import Vue from "vue"; import _l from "utils/localization"; import BootstrapVue from "bootstrap-vue"; import moment from "moment"; -import { getGalaxyInstance } from "app"; Vue.use(BootstrapVue); export default { From 2f0582e737932e777042fe0f6118369fc392ff8d Mon Sep 17 00:00:00 2001 From: Assunta DeSanto Date: Fri, 6 Nov 2020 11:52:09 -0500 Subject: [PATCH 11/11] running Prettier --- .../src/components/RuleBuilder/SavedRulesSelector.test.js | 7 +++---- client/src/components/RuleCollectionBuilder.vue | 6 +++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/client/src/components/RuleBuilder/SavedRulesSelector.test.js b/client/src/components/RuleBuilder/SavedRulesSelector.test.js index d43c15c58c7..483398804de 100644 --- a/client/src/components/RuleBuilder/SavedRulesSelector.test.js +++ b/client/src/components/RuleBuilder/SavedRulesSelector.test.js @@ -12,7 +12,7 @@ describe("SavedRulesSelector", () => { propsData: { // Add a unique prefix for this test run so the test is not affected by local storage values prefix: "test_prefix_" + new Date().toISOString() + "_", - savedRules: [] + savedRules: [], }, attachTo: getNewAttachNode(), }); @@ -29,7 +29,6 @@ describe("SavedRulesSelector", () => { }); it("should emit a click event when a session is clicked", async () => { - const testRules = { rules: [ { @@ -46,9 +45,9 @@ describe("SavedRulesSelector", () => { }, ], }; - wrapper.setProps({ + wrapper.setProps({ user: "test_user", - savedRules: [testRules] + savedRules: [testRules], }); await Vue.nextTick(); const sessions = wrapper.findAll("div.dropdown-menu > a.saved-rule-item"); diff --git a/client/src/components/RuleCollectionBuilder.vue b/client/src/components/RuleCollectionBuilder.vue index 481f7d8f6b8..409e5bfa3dc 100644 --- a/client/src/components/RuleCollectionBuilder.vue +++ b/client/src/components/RuleCollectionBuilder.vue @@ -347,7 +347,11 @@ :title="titleViewSource" @click="viewSource" > - +
Rows contain differing numbers of columns, there was likely a problem parsing your data.