Skip to content

Commit c0854a5

Browse files
authored
[No ticket] Overview subject search (#1336)
- Ticket: [No ticket] - Feature flag: n/a ## Purpose - Fix the registries overview's subject search widget ## Summary of Changes - Load the registration provider before querying its subjects - Update types accordingly ## Side Effects - None ## QA Notes - The subject search widget on the registration overview page should work as-expected now - Registration admins editing the Registration's Metadata using the Metadata panel on the right should be able to search for subjects and apply those subjects onto the registration
1 parent 7786c92 commit c0854a5

File tree

11 files changed

+101
-36
lines changed

11 files changed

+101
-36
lines changed

lib/osf-components/addon/components/subjects/browse/item/template.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
...attributes
66
>
77
<label
8-
data-test-subject={{@singleSubjectManager.subject.id}}
8+
data-test-subject-browse-label={{@singleSubjectManager.subject.id}}
99
local-class='ItemLabel {{if @singleSubjectManager.hasSelectedChildren 'with-selected-child'}}'
1010
>
1111
<Input

lib/osf-components/addon/components/subjects/display/template.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
{{else}}
44
<ul local-class='Subjects' data-analytics-scope='Display'>
55
{{#each @subjects as |subject|}}
6-
<li local-class='Subject'>
6+
<li data-test-selected-subject={{subject.text}} local-class='Subject'>
77
{{subject.text}}
88

99
{{#if @removeSubject}}
@@ -21,7 +21,7 @@
2121
{{/if}}
2222
</li>
2323
{{else}}
24-
<span local-class='Placeholder'>
24+
<span data-test-selected-subject-placeholder local-class='Placeholder'>
2525
{{t 'osf-components.subjects.display.placeholder'}}
2626
</span>
2727
{{/each}}

lib/osf-components/addon/components/subjects/search/search-result/template.hbs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
<li local-class='SearchResult' ...attributes>
22
{{#let (unique-id 'search-result') as |inputId|}}
33
<Input
4+
data-test-subject-search-result-checkbox='{{this.subject.text}}'
45
@id={{inputId}}
56
@type='checkbox'
67
@change={{@singleSubjectManager.toggleSelected}}
@@ -16,7 +17,11 @@
1617
{{/each}}
1718
</span>
1819

19-
<label local-class='Subject' for={{inputId}}>
20+
<label
21+
data-test-subject-search-result-label
22+
local-class='Subject'
23+
for={{inputId}}
24+
>
2025
{{#if this.subject}}
2126
{{this.subject.text}}
2227
{{else}}

lib/osf-components/addon/components/subjects/search/template.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
@fixedWidth={{true}}
66
/>
77
<Input
8+
data-test-subject-searchbox
89
@name='search'
910
@type='text'
1011
@value={{this.userQuery}}

lib/osf-components/addon/components/subjects/widget/template.hbs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,16 @@
1212
local-class='TabList'
1313
as |tablist|
1414
>
15-
<tablist.tab>{{t 'osf-components.subjects.browse.browse_all'}}</tablist.tab>
16-
<tablist.tab>{{t 'osf-components.subjects.search.search_all'}}</tablist.tab>
15+
<tablist.tab
16+
data-test-subject-widget-browse-tab
17+
>
18+
{{t 'osf-components.subjects.browse.browse_all'}}
19+
</tablist.tab>
20+
<tablist.tab
21+
data-test-subject-widget-search-tab
22+
>
23+
{{t 'osf-components.subjects.search.search_all'}}
24+
</tablist.tab>
1725
</tab.tabList>
1826
<tab.tabPanel>
1927
<Subjects::Browse

lib/registries/addon/components/registries-metadata/component.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import { tagName } from '@ember-decorators/component';
22
import Component from '@ember/component';
33
import { computed } from '@ember/object';
4+
import { waitFor } from '@ember/test-waiters';
5+
import { tracked } from '@glimmer/tracking';
6+
import { task } from 'ember-concurrency';
47
import config from 'ember-get-config';
58

69
import { layout } from 'ember-osf-web/decorators/component';
710
import Registration from 'ember-osf-web/models/registration';
11+
import RegistrationProviderModel from 'ember-osf-web/models/registration-provider';
812

913
import styles from './styles';
1014
import template from './template';
@@ -22,9 +26,16 @@ export default class RegistriesMetadata extends Component {
2226
registration?: Registration;
2327
extendedFields?: boolean;
2428

29+
@tracked provider?: RegistrationProviderModel;
2530
// Private properties
2631
expandCitations = false;
2732

33+
@task({ on: 'didReceiveAttrs'})
34+
@waitFor
35+
async fetchProvider() {
36+
this.provider = await this.registration?.provider;
37+
}
38+
2839
@computed('registration')
2940
get registeredFromId() {
3041
if (!this.registration) {

lib/registries/addon/components/registries-metadata/template.hbs

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -181,34 +181,36 @@
181181
</div>
182182

183183
<div local-class='Field'>
184-
<Subjects::Manager
185-
@model={{this.registration}}
186-
@provider={{this.registration.provider}}
187-
@doesAutosave={{false}}
188-
as |subjectsManager|
189-
>
190-
<EditableField::SubjectFieldManager
191-
@subjectsManager={{subjectsManager}}
192-
@node={{this.registration}}
193-
as |subjectFieldManager|
184+
{{#if this.provider}}
185+
<Subjects::Manager
186+
@model={{this.registration}}
187+
@provider={{this.provider}}
188+
@doesAutosave={{false}}
189+
as |subjectsManager|
194190
>
195-
<EditableField
196-
data-analytics-scope='Subjects'
197-
@manager={{subjectFieldManager}}
198-
@title={{t 'registries.registration_metadata.subjects'}}
199-
@name='subjects'
200-
@fixedWidth={{true}}
201-
as |field|
191+
<EditableField::SubjectFieldManager
192+
@subjectsManager={{subjectsManager}}
193+
@node={{this.registration}}
194+
as |subjectFieldManager|
202195
>
203-
<field.edit>
204-
<Subjects::Widget @subjectsManager={{subjectsManager}} />
205-
</field.edit>
206-
<field.display>
207-
<Subjects::Display @subjects={{subjectsManager.savedSubjects}} />
208-
</field.display>
209-
</EditableField>
210-
</EditableField::SubjectFieldManager>
211-
</Subjects::Manager>
196+
<EditableField
197+
data-analytics-scope='Subjects'
198+
@manager={{subjectFieldManager}}
199+
@title={{t 'registries.registration_metadata.subjects'}}
200+
@name='subjects'
201+
@fixedWidth={{true}}
202+
as |field|
203+
>
204+
<field.edit>
205+
<Subjects::Widget @subjectsManager={{subjectsManager}} />
206+
</field.edit>
207+
<field.display>
208+
<Subjects::Display @subjects={{subjectsManager.savedSubjects}} />
209+
</field.display>
210+
</EditableField>
211+
</EditableField::SubjectFieldManager>
212+
</Subjects::Manager>
213+
{{/if}}
212214
</div>
213215

214216
<div local-class='Field'>

lib/registries/addon/drafts/draft/metadata/template.hbs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@
116116
</p>
117117
</legend>
118118
<Subjects::Manager @model={{this.draftManager.draftRegistration}}
119-
@provider={{this.draftManager.draftRegistration.provider}} @doesAutosave={{true}}
119+
@provider={{this.draftManager.provider}} @doesAutosave={{true}}
120120
@metadataChangeset={{this.draftManager.metadataChangeset}} as |subjectsManager|>
121121
<Subjects::Widget local-class='SubjectsField' @subjectsManager={{subjectsManager}} />
122122
<ValidationErrors @changeset={{this.draftManager.metadataChangeset}} @key='subjects'

mirage/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ export default function(this: Server) {
195195
osfNestedResource(this, 'registration', 'comments', { only: ['index'] });
196196
this.get('/registrations/:guid/citation/:citationStyleID', getCitation);
197197
osfToManyRelationship(this, 'registration', 'subjects', {
198-
only: ['related', 'self'],
198+
only: ['related', 'self', 'update'],
199199
});
200200
osfResource(this, 'subject', { only: ['show'] });
201201

tests/engines/registries/acceptance/draft/draft-test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,7 @@ module('Registries | Acceptance | draft form', hooks => {
886886
.exists('error appears for unedited, required fields after returning to metadata page: license');
887887

888888
// Choose a subject
889-
await click('[data-test-subject="1"] > input');
889+
await click('[data-test-subject-browse-label="1"] > input');
890890
assert.dom('[data-test-validation-errors="subjects"]')
891891
.doesNotExist('validation error for subjects gone when user makes a selection');
892892

0 commit comments

Comments
 (0)