From fded7a69d8ae55584daa5697c88d0368b93c38c1 Mon Sep 17 00:00:00 2001 From: Christopher Morley Date: Fri, 12 May 2023 14:01:44 -0400 Subject: [PATCH 1/9] fix export snapshot --- app/assets/javascripts/services/caseCSVSvc.js | 62 ++++++++++--------- 1 file changed, 34 insertions(+), 28 deletions(-) diff --git a/app/assets/javascripts/services/caseCSVSvc.js b/app/assets/javascripts/services/caseCSVSvc.js index 8277f666f..9a5082634 100644 --- a/app/assets/javascripts/services/caseCSVSvc.js +++ b/app/assets/javascripts/services/caseCSVSvc.js @@ -199,7 +199,7 @@ * */ function exportBasicFormat(aCase) { - $http.get('api/export/ratings/' + aCase.caseNo + '.csv?file_format=basic') + $http.get('/api/export/ratings/' + aCase.caseNo + '.csv?file_format=basic') .then(function(response) { var blob = new Blob([response.data], { type: 'text/csv' @@ -210,7 +210,7 @@ }); } function exportBasicFormatSnapshot(aCase, snapshotId) { - $http.get('api/export/ratings/' + aCase.caseNo + '.csv?file_format=basic_snapshot&snapshot_id=' + snapshotId) + $http.get('/api/export/ratings/' + aCase.caseNo + '.csv?file_format=basic_snapshot&snapshot_id=' + snapshotId) .then(function(response) { var blob = new Blob([response.data], { type: 'text/csv' @@ -222,7 +222,7 @@ } function exportTrecFormat(aCase) { - $http.get('api/export/ratings/' + aCase.caseNo + '.txt?file_format=trec') + $http.get('/api/export/ratings/' + aCase.caseNo + '.txt?file_format=trec') .then(function(response) { var blob = new Blob([response.data], { type: 'text/plain' @@ -233,7 +233,7 @@ }); } function exportTrecFormatSnapshot(aCase, snapshotId) { - $http.get('api/export/ratings/' + aCase.caseNo + '.txt?file_format=trec_snapshot&snapshot_id=' + snapshotId) + $http.get('/api/export/ratings/' + aCase.caseNo + '.txt?file_format=trec_snapshot&snapshot_id=' + snapshotId) .then(function(response) { var blob = new Blob([response.data], { type: 'text/plain' @@ -246,7 +246,7 @@ function exportRREFormat(aCase) { - $http.get('api/export/ratings/' + aCase.caseNo + '.json?file_format=rre') + $http.get('/api/export/ratings/' + aCase.caseNo + '.json?file_format=rre') .then(function(response) { var blob = new Blob([$filter('json')(response.data)], { type: 'application/json' @@ -258,7 +258,7 @@ } function exportLTRFormat(aCase) { - $http.get('api/export/ratings/' + aCase.caseNo + '.txt?file_format=ltr') + $http.get('/api/export/ratings/' + aCase.caseNo + '.txt?file_format=ltr') .then(function(response) { var blob = new Blob([response.data], { type: 'text/plain' @@ -270,7 +270,7 @@ } function exportInformationNeed(aCase) { - $http.get('api/export/queries/information_needs/' + aCase.caseNo + '.csv') + $http.get('/api/export/queries/information_needs/' + aCase.caseNo + '.csv') .then(function(response) { var blob = new Blob([response.data], { type: 'text/csv' @@ -351,35 +351,41 @@ */ function stringifySnapshot (aCase, snapshot, withHeader) { - var csvContent = ''; - + let infoArray = []; + let matchingQuery = null; + let matchingQueryText = null; + let snapshotName = snapshot.name(); + let snapshotTime = snapshot.time; + let caseNumber = aCase.caseNo; + let csvContent = ''; + let queryIdAsInt = 0; if (withHeader) { csvContent += self.snapshotHeaderToCSV(); } - angular.forEach(snapshot.docs, function (docs,queryId) { - angular.forEach(docs, function (doc,idx) { - var dataString; - var infoArray = []; - - infoArray.push(stringifyField(snapshot.name())); - infoArray.push(stringifyField(snapshot.time)); - infoArray.push(stringifyField(aCase.caseNo)); - - queryId = parseInt(queryId,10); - var query = snapshot.queries.filter(function(q) { return q.queryId === queryId; })[0]; - - infoArray.push(stringifyField(query.query_text)); - infoArray.push(stringifyField(doc.id)); - infoArray.push(stringifyField(idx+1)); - - dataString = infoArray.join(','); - csvContent += dataString + EOL; + angular.forEach(snapshot.docs, function (docs, queryId) { + queryIdAsInt = parseInt(queryId, 10); + matchingQuery = snapshot.queries.filter(function(query) { + return query.query_id === queryIdAsInt; }); + if (matchingQuery[0]) { + matchingQueryText = matchingQuery[0].query_text; + if (matchingQueryText) { + angular.forEach(docs, function (doc, idx) { + infoArray = []; + infoArray.push(stringifyField(snapshotName)); + infoArray.push(stringifyField(snapshotTime)); + infoArray.push(stringifyField(caseNumber)); + infoArray.push(stringifyField(matchingQueryText)); + infoArray.push(stringifyField(doc.id)); + infoArray.push(stringifyField(idx + 1)); + csvContent += infoArray.join(',') + EOL; + }); + } + } }); - return csvContent; } From c09b6273dd1c0db795e447b757919a719f76c3eb Mon Sep 17 00:00:00 2001 From: Christopher Morley Date: Fri, 12 May 2023 14:04:04 -0400 Subject: [PATCH 2/9] revert branch diff --- app/assets/javascripts/services/caseCSVSvc.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/assets/javascripts/services/caseCSVSvc.js b/app/assets/javascripts/services/caseCSVSvc.js index 9a5082634..2caafc388 100644 --- a/app/assets/javascripts/services/caseCSVSvc.js +++ b/app/assets/javascripts/services/caseCSVSvc.js @@ -199,7 +199,7 @@ * */ function exportBasicFormat(aCase) { - $http.get('/api/export/ratings/' + aCase.caseNo + '.csv?file_format=basic') + $http.get('api/export/ratings/' + aCase.caseNo + '.csv?file_format=basic') .then(function(response) { var blob = new Blob([response.data], { type: 'text/csv' @@ -210,7 +210,7 @@ }); } function exportBasicFormatSnapshot(aCase, snapshotId) { - $http.get('/api/export/ratings/' + aCase.caseNo + '.csv?file_format=basic_snapshot&snapshot_id=' + snapshotId) + $http.get('api/export/ratings/' + aCase.caseNo + '.csv?file_format=basic_snapshot&snapshot_id=' + snapshotId) .then(function(response) { var blob = new Blob([response.data], { type: 'text/csv' @@ -222,7 +222,7 @@ } function exportTrecFormat(aCase) { - $http.get('/api/export/ratings/' + aCase.caseNo + '.txt?file_format=trec') + $http.get('api/export/ratings/' + aCase.caseNo + '.txt?file_format=trec') .then(function(response) { var blob = new Blob([response.data], { type: 'text/plain' @@ -233,7 +233,7 @@ }); } function exportTrecFormatSnapshot(aCase, snapshotId) { - $http.get('/api/export/ratings/' + aCase.caseNo + '.txt?file_format=trec_snapshot&snapshot_id=' + snapshotId) + $http.get('api/export/ratings/' + aCase.caseNo + '.txt?file_format=trec_snapshot&snapshot_id=' + snapshotId) .then(function(response) { var blob = new Blob([response.data], { type: 'text/plain' @@ -246,7 +246,7 @@ function exportRREFormat(aCase) { - $http.get('/api/export/ratings/' + aCase.caseNo + '.json?file_format=rre') + $http.get('api/export/ratings/' + aCase.caseNo + '.json?file_format=rre') .then(function(response) { var blob = new Blob([$filter('json')(response.data)], { type: 'application/json' @@ -258,7 +258,7 @@ } function exportLTRFormat(aCase) { - $http.get('/api/export/ratings/' + aCase.caseNo + '.txt?file_format=ltr') + $http.get('api/export/ratings/' + aCase.caseNo + '.txt?file_format=ltr') .then(function(response) { var blob = new Blob([response.data], { type: 'text/plain' @@ -270,7 +270,7 @@ } function exportInformationNeed(aCase) { - $http.get('/api/export/queries/information_needs/' + aCase.caseNo + '.csv') + $http.get('api/export/queries/information_needs/' + aCase.caseNo + '.csv') .then(function(response) { var blob = new Blob([response.data], { type: 'text/csv' From 39a736244fae30589ffa09365dda75df94d3e47b Mon Sep 17 00:00:00 2001 From: Christopher Morley Date: Fri, 12 May 2023 14:07:33 -0400 Subject: [PATCH 3/9] make deepsource happy --- app/assets/javascripts/services/caseCSVSvc.js | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/app/assets/javascripts/services/caseCSVSvc.js b/app/assets/javascripts/services/caseCSVSvc.js index 2caafc388..9cb64bdb9 100644 --- a/app/assets/javascripts/services/caseCSVSvc.js +++ b/app/assets/javascripts/services/caseCSVSvc.js @@ -343,6 +343,32 @@ return csvContent; } + var stringifyField = function (data) { + if (typeof data === 'object'){ + if (data === null){ + data = ''; + } + else { + data = data.join(','); + } + } + if (typeof data === 'string') { + data = data.trim().replace(/"/g, '""'); // Escape double quotes + + if (data.indexOf(',') > -1 || data.indexOf('\n') > -1 || data.indexOf('\r') > -1) { + data = textDelimiter + data + textDelimiter; + } + + if (data.startsWith('=') || data.startsWith('@') || data.startsWith('+') || data.startsWith('-')) { + data = ' ' + data; + } + + return data; + } + + return data; + }; + /** * Creates CSV string of snapshot * @@ -354,9 +380,9 @@ let infoArray = []; let matchingQuery = null; let matchingQueryText = null; - let snapshotName = snapshot.name(); - let snapshotTime = snapshot.time; - let caseNumber = aCase.caseNo; + const snapshotName = snapshot.name(); + const snapshotTime = snapshot.time; + const caseNumber = aCase.caseNo; let csvContent = ''; let queryIdAsInt = 0; @@ -402,32 +428,6 @@ return downloadFileName; } - - var stringifyField = function (data) { - if (typeof data === 'object'){ - if (data === null){ - data = ''; - } - else { - data = data.join(','); - } - } - if (typeof data === 'string') { - data = data.trim().replace(/"/g, '""'); // Escape double quotes - - if (data.indexOf(',') > -1 || data.indexOf('\n') > -1 || data.indexOf('\r') > -1) { - data = textDelimiter + data + textDelimiter; - } - - if (data.startsWith('=') || data.startsWith('@') || data.startsWith('+') || data.startsWith('-')) { - data = ' ' + data; - } - - return data; - } - - return data; - }; } ]); })(); From 4693e5e919c5866128bd18722777d9827d563e35 Mon Sep 17 00:00:00 2001 From: Christopher Morley Date: Fri, 12 May 2023 14:12:22 -0400 Subject: [PATCH 4/9] make deepsource happy 2 --- app/assets/javascripts/services/caseCSVSvc.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/services/caseCSVSvc.js b/app/assets/javascripts/services/caseCSVSvc.js index 9cb64bdb9..b1fa24c61 100644 --- a/app/assets/javascripts/services/caseCSVSvc.js +++ b/app/assets/javascripts/services/caseCSVSvc.js @@ -343,7 +343,7 @@ return csvContent; } - var stringifyField = function (data) { + let stringifyField = function (data) { if (typeof data === 'object'){ if (data === null){ data = ''; @@ -360,7 +360,7 @@ } if (data.startsWith('=') || data.startsWith('@') || data.startsWith('+') || data.startsWith('-')) { - data = ' ' + data; + data = ` ${data}`; } return data; From b952b5c393192e71ff5f06155327e26b18fc267d Mon Sep 17 00:00:00 2001 From: Christopher Morley Date: Fri, 12 May 2023 14:14:04 -0400 Subject: [PATCH 5/9] make deepsource happy 3 --- app/assets/javascripts/services/caseCSVSvc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/services/caseCSVSvc.js b/app/assets/javascripts/services/caseCSVSvc.js index b1fa24c61..657d957fd 100644 --- a/app/assets/javascripts/services/caseCSVSvc.js +++ b/app/assets/javascripts/services/caseCSVSvc.js @@ -343,7 +343,7 @@ return csvContent; } - let stringifyField = function (data) { + const stringifyField = function (data) { if (typeof data === 'object'){ if (data === null){ data = ''; From 6753082f5824767d52029415594396ed6ffb6594 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Fri, 12 May 2023 14:18:49 -0400 Subject: [PATCH 6/9] Map query_id from the API to queryId used through the front end SPA. --- app/assets/javascripts/services/caseCSVSvc.js | 2 +- app/assets/javascripts/services/snapshotFactory.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/services/caseCSVSvc.js b/app/assets/javascripts/services/caseCSVSvc.js index 657d957fd..2cbd38df9 100644 --- a/app/assets/javascripts/services/caseCSVSvc.js +++ b/app/assets/javascripts/services/caseCSVSvc.js @@ -393,7 +393,7 @@ angular.forEach(snapshot.docs, function (docs, queryId) { queryIdAsInt = parseInt(queryId, 10); matchingQuery = snapshot.queries.filter(function(query) { - return query.query_id === queryIdAsInt; + return query.queryId === queryIdAsInt; }); if (matchingQuery[0]) { matchingQueryText = matchingQuery[0].query_text; diff --git a/app/assets/javascripts/services/snapshotFactory.js b/app/assets/javascripts/services/snapshotFactory.js index 92f1b3489..b4ce5a49f 100644 --- a/app/assets/javascripts/services/snapshotFactory.js +++ b/app/assets/javascripts/services/snapshotFactory.js @@ -26,6 +26,12 @@ self.timestamp = timestamp; self.docIdsPerQuery = {}; + + // Map from snake_case to camelCase. + angular.forEach(self.queries, function(query) { + query.queryId = query.query_id; + delete query.query_id; + }); angular.forEach(self.docs, function(docs, queryId) { self.docIdsPerQuery[queryId] = []; From 647f2affaf085e1ed795ad83b507c4427a992922 Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Fri, 12 May 2023 14:25:17 -0400 Subject: [PATCH 7/9] stylistic changes --- app/assets/javascripts/services/caseCSVSvc.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/app/assets/javascripts/services/caseCSVSvc.js b/app/assets/javascripts/services/caseCSVSvc.js index 2cbd38df9..184dd5e54 100644 --- a/app/assets/javascripts/services/caseCSVSvc.js +++ b/app/assets/javascripts/services/caseCSVSvc.js @@ -377,29 +377,25 @@ */ function stringifySnapshot (aCase, snapshot, withHeader) { - let infoArray = []; - let matchingQuery = null; - let matchingQueryText = null; const snapshotName = snapshot.name(); const snapshotTime = snapshot.time; const caseNumber = aCase.caseNo; let csvContent = ''; - let queryIdAsInt = 0; if (withHeader) { csvContent += self.snapshotHeaderToCSV(); } angular.forEach(snapshot.docs, function (docs, queryId) { - queryIdAsInt = parseInt(queryId, 10); - matchingQuery = snapshot.queries.filter(function(query) { + let queryIdAsInt = parseInt(queryId, 10); + let matchingQuery = snapshot.queries.filter(function(query) { return query.queryId === queryIdAsInt; }); if (matchingQuery[0]) { - matchingQueryText = matchingQuery[0].query_text; + let matchingQueryText = matchingQuery[0].query_text; if (matchingQueryText) { angular.forEach(docs, function (doc, idx) { - infoArray = []; + let infoArray = []; infoArray.push(stringifyField(snapshotName)); infoArray.push(stringifyField(snapshotTime)); infoArray.push(stringifyField(caseNumber)); From d05f5a3cb5e2099528bb29664e8fa1e495e04bf1 Mon Sep 17 00:00:00 2001 From: Christopher Morley Date: Fri, 12 May 2023 15:00:09 -0400 Subject: [PATCH 8/9] make deepsource happy 4 plus gemlock --- Gemfile.lock | 3 +++ app/assets/javascripts/services/caseCSVSvc.js | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 21a8c6d27..d37431c15 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -226,6 +226,8 @@ GEM net-smtp (0.3.3) net-protocol nio4r (2.5.9) + nokogiri (1.14.3-aarch64-linux) + racc (~> 1.4) nokogiri (1.14.3-x86_64-linux) racc (~> 1.4) oauth2 (2.0.9) @@ -425,6 +427,7 @@ GEM zeitwerk (2.6.7) PLATFORMS + aarch64-linux x86_64-linux DEPENDENCIES diff --git a/app/assets/javascripts/services/caseCSVSvc.js b/app/assets/javascripts/services/caseCSVSvc.js index 184dd5e54..d48fa9412 100644 --- a/app/assets/javascripts/services/caseCSVSvc.js +++ b/app/assets/javascripts/services/caseCSVSvc.js @@ -387,15 +387,15 @@ } angular.forEach(snapshot.docs, function (docs, queryId) { - let queryIdAsInt = parseInt(queryId, 10); - let matchingQuery = snapshot.queries.filter(function(query) { - return query.queryId === queryIdAsInt; + const queryIdToMatch = parseInt(queryId, 10); + const matchingQuery = snapshot.queries.filter(function(query) { + return query.queryId === queryIdToMatch; }); if (matchingQuery[0]) { - let matchingQueryText = matchingQuery[0].query_text; + const matchingQueryText = matchingQuery[0].query_text; if (matchingQueryText) { angular.forEach(docs, function (doc, idx) { - let infoArray = []; + const infoArray = []; infoArray.push(stringifyField(snapshotName)); infoArray.push(stringifyField(snapshotTime)); infoArray.push(stringifyField(caseNumber)); From 74362629581dc08c4fd9f11d8bfe7c1f4802689c Mon Sep 17 00:00:00 2001 From: Eric Pugh Date: Fri, 12 May 2023 15:13:45 -0400 Subject: [PATCH 9/9] done --- spec/javascripts/angular/services/teamSvc_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/javascripts/angular/services/teamSvc_spec.js b/spec/javascripts/angular/services/teamSvc_spec.js index 93056c194..280b612c8 100644 --- a/spec/javascripts/angular/services/teamSvc_spec.js +++ b/spec/javascripts/angular/services/teamSvc_spec.js @@ -115,7 +115,7 @@ describe('Service: teamSvc', function () { .then(function(response) { // Magic commented out console calls make test pass?? WTF? //console.log("Response is"); - //console.log(response) + console.log(response) expect(response).toEqual(mockTeam); }); $httpBackend.flush();