-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Displays author name on merge #9920
base: master
Are you sure you want to change the base?
Displays author name on merge #9920
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome @DanielleInkster ! A few small fixes but looking great so far 😊 Note I noticed this in my testing erroring:
https://testing.openlibrary.org/works/merge?records=OL6151392W,OL31613496W
Some sort of error is happening and only the result row is getting rendered!
{{role[field].key.slice("/authors/".length)}} | ||
</a> | ||
<p class="author-author-children"><b>{{role[field].name}}</b></p> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's put this in a new <td>
element so it appears as its own column on the nested author roles table.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh actually, if we attach the author name to entry
(eg the thing that has the author
field) instead of to the entry.author
, it should automatically show up! That might be easier.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eg
entry.name = author_names[entry.author.key];
instead of
entry.author.name = author_names[entry.author.key];
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm pretty sure I understand why this should work (should be captured under the else
statement) but I couldn't get the name to render without making an else-if
branch for it.
enhanced_records.flatMap(record => | ||
record.authors.map(entry=> { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since we're not returning anything, we can use forEach instead. Actually a for loop here might be the cleanest approach!
We can also avoid the extra loop by change the get_author_names
method to return the full key with the /authors/
prefix.
enhanced_records.flatMap(record => | |
record.authors.map(entry=> { | |
for (const record of enhanced_records) { | |
for (entry of record.authors) { | |
entry.author.name = author_names[entry.author.key]; | |
} | |
} |
fields: 'key,name', | ||
}) | ||
|
||
const response = await fetch(`${CONFIGS.OL_BASE_BOOKS}/search/authors.json?${queryParams}`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const response = await fetch(`${CONFIGS.OL_BASE_BOOKS}/search/authors.json?${queryParams}`) | |
const response = await fetch(`${CONFIGS.OL_BASE_SEARCH}/search/authors.json?${queryParams}`) |
|
||
const response = await fetch(`${CONFIGS.OL_BASE_BOOKS}/search/authors.json?${queryParams}`) | ||
|
||
if (!response.ok) return {error: true}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's have this throw
a new error, and then in the place we call it, wrap the call to this method in a try catch that...
async enhancedRecords(){ | ||
if (!this.records) return null; | ||
|
||
const author_names = await get_author_names(this.records) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
...to a try catch that just returns the clone without any modifications. Otherwise an error here will cause the entire UI to fail!
Yes that's exactly correct! We don't want to use |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #9920 +/- ##
==========================================
+ Coverage 16.06% 17.12% +1.06%
==========================================
Files 90 89 -1
Lines 4769 4752 -17
Branches 832 831 -1
==========================================
+ Hits 766 814 +48
+ Misses 3480 3428 -52
+ Partials 523 510 -13 ☔ View full report in Codecov by Sentry. |
2253ae3
to
9474056
Compare
@cdrini - I'm not able to access this unfortunately. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Idk Vue and my JavaScript is very rusty, and I also haven’t really looked at the HTML structure of the rest of the site, so take this comment with a tiny grain of salt! 😅
@@ -19,6 +19,9 @@ | |||
{{role[field].key.slice("/authors/".length)}} | |||
</a> | |||
</div> | |||
<div v-else-if="field == 'name'"> | |||
<b>{{role[field]}}</b> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure how this is done elsewhere in the codebase, but this feels like something where a class
property (on the div, if one isn’t already assigned?) and CSS rule would be more appropriate for formatting than using <b>
.
9474056
to
48a7178
Compare
@cdrini - I think I've covered everything except the error - I'm not able to access the link you've included. Can you please take a look when you've got a minute? |
Hi @DanielleInkster apologies for the delay, I was on holiday last week! IA/OL are currently offline, but I'll be able to test this once they're back up (see #9947 (comment) ). |
Closes #9811
Displaying the author’s name next to the OL...A identifier making it easier to distinguish between works by different authors.
Technical
utils.js
Added
get_author_name
function to fetch the name of the author associated with the id and append to the record.AuthorRoleTable.vue
Added p tag to display authors name, as well as class to formate with CSS.
MergeTable.vue
Created
enhancedRecords
to include author name and added to template in order to display. Added CSS to display name next to ID.*** I've not added
enhancedRecords
to themerge
function in this file as I couldn't verify if this would impact what is saved when merging works. Can someone please clarify?***Testing
npm run serve --component=MergeUI
.*** I was not able to find any JS tests for the files associated with this ticket. If needed, I can create if directed to the correct directory.***
Screenshot
Stakeholders
@cdrini