diff --git a/.editorconfig b/.editorconfig index 9316022ca5..e8921636cd 100644 --- a/.editorconfig +++ b/.editorconfig @@ -44,8 +44,8 @@ skip = .eggs [*.rst] indent_size = 4 -# CSS, HTML, JS, JSON, YML -[*.{scss,css,html,js,json,yml}] +# CSS, HTML, JS, JSON, YML, Typescript +[*.{scss,css,html,js,json,yml,ts}] indent_size = 2 # Matches the exact files either package.json or .travis.yml diff --git a/rero_ils/config.py b/rero_ils/config.py index 4a8ca6a8dd..43b5cafa36 100644 --- a/rero_ils/config.py +++ b/rero_ils/config.py @@ -318,7 +318,7 @@ def _(x): record_class='rero_ils.modules.documents.api:Document', item_route='/documents/', default_media_type='application/json', - max_result_window=10000, + max_result_window=5000000, search_factory_imp='rero_ils.query:and_search_factory', read_permission_factory_imp=allow_all, list_permission_factory_imp=allow_all diff --git a/rero_ils/modules/admin.py b/rero_ils/modules/admin.py index 3758894e83..de4a920775 100644 --- a/rero_ils/modules/admin.py +++ b/rero_ils/modules/admin.py @@ -147,7 +147,7 @@ def is_accessible(self): } locations = { - 'view_class': ILSManager, + 'view_class': LibraryManager, 'kwargs': dict( name='Locations', category='Resources', diff --git a/rero_ils/modules/documents/jsonschemas/documents/document-v0.0.1.json b/rero_ils/modules/documents/jsonschemas/documents/document-v0.0.1.json index fe146a6ca1..ac95c5391b 100644 --- a/rero_ils/modules/documents/jsonschemas/documents/document-v0.0.1.json +++ b/rero_ils/modules/documents/jsonschemas/documents/document-v0.0.1.json @@ -113,7 +113,7 @@ "title": "Authors", "description": "Author(s) of the resource. Can be either persons or organisations.", "type": "array", - "minItems": 1, + "minItems": 0, "items": { "type": "object", "required": [ diff --git a/rero_ils/modules/documents/jsonschemas/form_documents/document-v0.0.1.json b/rero_ils/modules/documents/jsonschemas/form_documents/document-v0.0.1.json index 205d8fb0ab..1237935559 100644 --- a/rero_ils/modules/documents/jsonschemas/form_documents/document-v0.0.1.json +++ b/rero_ils/modules/documents/jsonschemas/form_documents/document-v0.0.1.json @@ -4,15 +4,8 @@ "title": "ISBN" }, { - "type": "fieldset", - "title": "Title", - "items": [ - { - "key": "title", - "notitle": true, - "htmlClass": "rero21-required" - } - ] + "key": "title", + "htmlClass": "rero21-required" }, { "type": "fieldset", @@ -27,7 +20,6 @@ "add": "btn-link" }, "type": "array", - "startEmpty": true, "items": [ { "key": "authors[].type", @@ -45,7 +37,7 @@ ], "style": { "selected": "btn-success", - "unselected": "btn-default" + "unselected": "btn-light" } }, { @@ -53,11 +45,15 @@ }, { "key": "authors[].date", - "condition": "model.authors[arrayIndex].type == 'person'" + "condition": { + "functionBody": "{return model.authors[arrayIndices[0]].type === 'person';}" + } }, { "key": "authors[].qualifier", - "condition": "model.authors[arrayIndex].type == 'person'" + "condition": { + "functionBody": "{return model.authors[arrayIndices[0]].type === 'person';}" + } } ] } @@ -69,71 +65,75 @@ "items": [ { "key": "languages", - "notitle": false, - "title": "Language(s) name", + "notitle": true, + "description": "", "add": "new language", "style": { "add": "btn-link" }, - "startEmpty": false, "type": "array", "validationMessage": { "402": "Language value should be unique!" }, "items": [ { - "key": "languages[].language", - "notitle": true, - "description": "", - "htmlClass": "rero21-required", - "titleMap": [ - { - "value": "ara", - "name": "Arabic" - }, - { - "value": "chi", - "name": "Chinese" - }, - { - "value": "eng", - "name": "English" - }, - { - "value": "fre", - "name": "French" - }, - { - "value": "ger", - "name": "German" - }, - { - "value": "heb", - "name": "Hebrew" - }, - { - "value": "ita", - "name": "Italian" - }, - { - "value": "jpn", - "name": "Japanese" - }, - { - "value": "lat", - "name": "Latin" - }, - { - "value": "por", - "name": "Portuguese" - }, - { - "value": "rus", - "name": "Russian" - }, + "type": "fieldset", + "items": [ { - "value": "spa", - "name": "Spanish" + "key": "languages[].language", + "notitle": true, + "description": "", + "htmlClass": "rero21-required", + "titleMap": [ + { + "value": "ara", + "name": "Arabic" + }, + { + "value": "chi", + "name": "Chinese" + }, + { + "value": "eng", + "name": "English" + }, + { + "value": "fre", + "name": "French" + }, + { + "value": "ger", + "name": "German" + }, + { + "value": "heb", + "name": "Hebrew" + }, + { + "value": "ita", + "name": "Italian" + }, + { + "value": "jpn", + "name": "Japanese" + }, + { + "value": "lat", + "name": "Latin" + }, + { + "value": "por", + "name": "Portuguese" + }, + { + "value": "rus", + "name": "Russian" + }, + { + "value": "spa", + "name": "Spanish" + } + ] } ] } @@ -146,54 +146,19 @@ "title": "Date of publication", "items": [ { - "type": "section", - "htmlClass": "row", - "items": [ - { - "type": "section", - "htmlClass": "col-xs-6", - "items": [ - { - "key": "publicationYear", - "type": "integer" - } - ] - }, - { - "type": "section", - "htmlClass": "col-xs-6", - "items": [ - { - "key": "freeFormedPublicationDate", - "condition": "model.publicationYear" - } - ] - } - ] + "key": "publicationYear", + "notitle": true, + "type": "integer" + }, + { + "key": "freeFormedPublicationDate", + "condition": "model.publicationYear" } ] }, { - "type": "fieldset", - "title": "Type of the document", - "items": [ - { - "type": "section", - "htmlClass": "row", - "items": [ - { - "type": "section", - "htmlClass": "col-xs-4", - "items": [ - { - "key": "type", - "title": "Document type", - "description": "Type of the document" - } - ] - } - ] - } - ] + "key": "type", + "title": "Document type", + "description": "Type of the document" } -] \ No newline at end of file +] diff --git a/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html b/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html index d690be24e7..35065ffb60 100644 --- a/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html +++ b/rero_ils/modules/documents/templates/rero_ils/detailed_view_documents.html @@ -230,7 +230,7 @@

{{ _('Export Formats') }}:

-
+
The two periods are overlapping.
@@ -169,7 +169,7 @@
Library will be closed during this period. -
+
Date range is required.
@@ -198,7 +198,7 @@ -
+
Interval is required.
@@ -219,4 +219,4 @@
-
\ No newline at end of file +
diff --git a/ui/admin/src/app/records/custom-editor/libraries/exception-dates-list/exception-dates-list.component.html b/ui/admin/src/app/records/custom-editor/libraries/exception-dates-list/exception-dates-list.component.html index deefc0d4bb..8e65a6b1b7 100644 --- a/ui/admin/src/app/records/custom-editor/libraries/exception-dates-list/exception-dates-list.component.html +++ b/ui/admin/src/app/records/custom-editor/libraries/exception-dates-list/exception-dates-list.component.html @@ -17,7 +17,7 @@ Open
- Closed + Closed diff --git a/ui/admin/src/app/records/custom-editor/libraries/library.component.html b/ui/admin/src/app/records/custom-editor/libraries/library.component.html index e4ae35ce0f..8611b1a9ad 100644 --- a/ui/admin/src/app/records/custom-editor/libraries/library.component.html +++ b/ui/admin/src/app/records/custom-editor/libraries/library.component.html @@ -10,7 +10,7 @@

Library

placeholder="{{ 'Please insert a name' | translate }}" required > -
+
Name is required.
@@ -24,7 +24,7 @@

Library

-
+
Address must be at least 4 characters long.
@@ -35,7 +35,7 @@

Library

-
+
Email format is not correct.
@@ -52,7 +52,7 @@

Library

placeholder="{{ 'Please insert a code' | translate }}" required > -
+
Code is already taken.
@@ -97,7 +97,7 @@

Library

Start Time is required. @@ -108,7 +108,7 @@

Library

End time is required. @@ -117,7 +117,7 @@

Library

End time format is not correct.
-
+
End time is less than start time.
@@ -125,7 +125,7 @@

Library

-
+
The two periods are overlapping.
diff --git a/ui/admin/src/app/records/editor/editor.component.html b/ui/admin/src/app/records/editor/editor.component.html index 012ef5c428..062febdf38 100644 --- a/ui/admin/src/app/records/editor/editor.component.html +++ b/ui/admin/src/app/records/editor/editor.component.html @@ -1,26 +1,26 @@ -
-
-
- - -
- -
- -
-
+
+

{{ recordType | translate }} editor

+ +
+
+
+ +
+ +
+
+
-
- -
-
- +
+
+ -
-
+
diff --git a/ui/admin/src/app/records/editor/editor.component.ts b/ui/admin/src/app/records/editor/editor.component.ts index e4193858c0..61cf681814 100644 --- a/ui/admin/src/app/records/editor/editor.component.ts +++ b/ui/admin/src/app/records/editor/editor.component.ts @@ -7,6 +7,8 @@ import { WidgetLibraryService } from 'angular6-json-schema-form'; import { combineLatest } from 'rxjs'; import { map } from 'rxjs/operators'; import { ApiService, AlertsService } from '@app/core'; +import { TranslateService } from '@ngx-translate/core'; + export function _(str: string) { return str; } @@ -24,6 +26,7 @@ export class EditorComponent implements OnInit { public message = undefined; public data; public redirectRecordType = undefined; + public currentLocale = undefined; constructor( private route: ActivatedRoute, @@ -31,10 +34,12 @@ export class EditorComponent implements OnInit { private recordsService: RecordsService, private widgetLibrary: WidgetLibraryService, private alertsService: AlertsService, - private apiService: ApiService + private apiService: ApiService, + private translateService: TranslateService ) { this.widgetLibrary.registerWidget('select', RemoteSelectComponent); this.widgetLibrary.registerWidget('text', RemoteInputComponent); + this.currentLocale = translateService.currentLang; } importFromEan(ean) { @@ -75,6 +80,10 @@ export class EditorComponent implements OnInit { this.schemaForm.schema.properties.document .properties['$ref']['default'] = urlPerfix + query.document; } + if (this.recordType === 'locations' && query.library) { + this.redirectRecordType = 'libraries'; + this.schemaForm.schema.properties.library.properties['$ref']['default'] = 'http://ils.rero.ch/api/libraries/' + query.library; + } }); } else { this.recordsService.getRecord(params.recordType, this.pid).subscribe(record => { @@ -86,6 +95,9 @@ export class EditorComponent implements OnInit { if (this.recordType === 'items') { this.redirectRecordType = 'documents'; } + if (this.recordType === 'locations') { + this.redirectRecordType = 'libraries'; + } }); }); } diff --git a/ui/admin/src/app/records/editor/remote-select/remote-select.component.ts b/ui/admin/src/app/records/editor/remote-select/remote-select.component.ts index 53d721e777..ad39775eb7 100644 --- a/ui/admin/src/app/records/editor/remote-select/remote-select.component.ts +++ b/ui/admin/src/app/records/editor/remote-select/remote-select.component.ts @@ -81,7 +81,7 @@ export class RemoteSelectComponent implements OnInit { } } // patch - if (this.options.readonly) { + if (this.options.readonly && this.formControl) { this.formControl.disable(); } } diff --git a/ui/admin/src/app/records/records.module.ts b/ui/admin/src/app/records/records.module.ts index fecabda4a2..c1b3a67abc 100644 --- a/ui/admin/src/app/records/records.module.ts +++ b/ui/admin/src/app/records/records.module.ts @@ -23,9 +23,7 @@ import { PatronTypesBriefViewComponent } from './search/brief-view/patron-types- import { CircPoliciesBriefViewComponent } from './search/brief-view/circ-policies-brief-view.component'; import { PatronsBriefViewComponent } from './search/brief-view/patrons-brief-view.component'; import { PersonsBriefViewComponent } from './search/brief-view/persons-brief-view.component'; -import { LocationsBriefViewComponent } from './search/brief-view/locations-brief-view.component'; import { LibrariesBriefViewComponent } from './search/brief-view/libraries-brief-view.component'; -import { ItemsBriefViewComponent } from './search/brief-view/items-brief-view.component'; import { DocumentsBriefViewComponent } from './search/brief-view/documents-brief-view.component'; import { ExceptionDatesListComponent } from './custom-editor/libraries/exception-dates-list/exception-dates-list.component'; import { ExceptionDatesEditComponent } from './custom-editor/libraries/exception-dates-edit/exception-dates-edit.component'; @@ -39,6 +37,9 @@ import { CirculationPolicyFormService } from './custom-editor/circulation-settin import { CirculationMappingService } from './custom-editor/circulation-settings/circulation-mapping.service'; import { LibraryComponent } from './custom-editor/libraries/library.component'; import { LibraryFormService } from './custom-editor/libraries/library-form.service'; +import { BirthDatePipe } from './search/brief-view/birth-date.pipe'; +import { BioInformationsPipe } from './search/brief-view/bio-informations.pipe'; +import { CollapseModule } from 'ngx-bootstrap/collapse'; @NgModule({ declarations: [ @@ -54,16 +55,16 @@ import { LibraryFormService } from './custom-editor/libraries/library-form.servi PatronTypesBriefViewComponent, CircPoliciesBriefViewComponent, PatronsBriefViewComponent, - LocationsBriefViewComponent, LibrariesBriefViewComponent, - ItemsBriefViewComponent, DocumentsBriefViewComponent, ExceptionDatesListComponent, ExceptionDatesEditComponent, PersonsBriefViewComponent, MefTitlePipe, CirculationPolicyComponent, - LibraryComponent + LibraryComponent, + BirthDatePipe, + BioInformationsPipe ], imports: [ CommonModule, @@ -75,7 +76,7 @@ import { LibraryFormService } from './custom-editor/libraries/library-form.servi ModalModule.forRoot(), BsDatepickerModule.forRoot(), TabsModule.forRoot(), - + CollapseModule.forRoot() ], entryComponents: [ RemoteSelectComponent, @@ -85,9 +86,7 @@ import { LibraryFormService } from './custom-editor/libraries/library-form.servi PatronTypesBriefViewComponent, CircPoliciesBriefViewComponent, PatronsBriefViewComponent, - LocationsBriefViewComponent, LibrariesBriefViewComponent, - ItemsBriefViewComponent, DocumentsBriefViewComponent, ExceptionDatesListComponent, ExceptionDatesEditComponent, diff --git a/ui/admin/src/app/records/search/brief-view/bio-informations.pipe.spec.ts b/ui/admin/src/app/records/search/brief-view/bio-informations.pipe.spec.ts new file mode 100644 index 0000000000..0cc32fd797 --- /dev/null +++ b/ui/admin/src/app/records/search/brief-view/bio-informations.pipe.spec.ts @@ -0,0 +1,8 @@ +import { BioInformationsPipe } from './bio-informations.pipe'; + +describe('BioInformationsPipe', () => { + it('create an instance', () => { + const pipe = new BioInformationsPipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/ui/admin/src/app/records/search/brief-view/bio-informations.pipe.ts b/ui/admin/src/app/records/search/brief-view/bio-informations.pipe.ts new file mode 100644 index 0000000000..efff07a35b --- /dev/null +++ b/ui/admin/src/app/records/search/brief-view/bio-informations.pipe.ts @@ -0,0 +1,17 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'bioInformations' +}) +export class BioInformationsPipe implements PipeTransform { + + transform(value: any, args?: any): any { + for (const source of ['rero', 'bnf', 'gnd']) { + if (value[source] && value[source].biographical_information) { + return value[source].biographical_information; + } + } + return null; + } + +} diff --git a/ui/admin/src/app/records/search/brief-view/birth-date.pipe.spec.ts b/ui/admin/src/app/records/search/brief-view/birth-date.pipe.spec.ts new file mode 100644 index 0000000000..92a914fe83 --- /dev/null +++ b/ui/admin/src/app/records/search/brief-view/birth-date.pipe.spec.ts @@ -0,0 +1,8 @@ +import { BirthDatePipe } from './birth-date.pipe'; + +describe('BirthDatePipe', () => { + it('create an instance', () => { + const pipe = new BirthDatePipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/ui/admin/src/app/records/search/brief-view/birth-date.pipe.ts b/ui/admin/src/app/records/search/brief-view/birth-date.pipe.ts new file mode 100644 index 0000000000..7418cb971c --- /dev/null +++ b/ui/admin/src/app/records/search/brief-view/birth-date.pipe.ts @@ -0,0 +1,17 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'birthDate' +}) +export class BirthDatePipe implements PipeTransform { + + transform(value: any): any { + for (const source of ['rero', 'bnf', 'gnd']) { + if (value[source] && value[source].date_of_birth) { + return value[source].date_of_birth; + } + } + return null; + } + +} diff --git a/ui/admin/src/app/records/search/brief-view/circ-policies-brief-view.component.ts b/ui/admin/src/app/records/search/brief-view/circ-policies-brief-view.component.ts index 8594657087..fa76ee89d5 100644 --- a/ui/admin/src/app/records/search/brief-view/circ-policies-brief-view.component.ts +++ b/ui/admin/src/app/records/search/brief-view/circ-policies-brief-view.component.ts @@ -4,11 +4,13 @@ import { BriefView } from './brief-view'; @Component({ selector: 'app-circ-policies-brief-view', template: ` -
{{record.metadata.name}}
+
{{record.metadata.name}}
+
{{record.metadata.description}} +
`, styles: [] }) diff --git a/ui/admin/src/app/records/search/brief-view/documents-brief-view.component.ts b/ui/admin/src/app/records/search/brief-view/documents-brief-view.component.ts index 58407aaa0a..6d95eb9091 100644 --- a/ui/admin/src/app/records/search/brief-view/documents-brief-view.component.ts +++ b/ui/admin/src/app/records/search/brief-view/documents-brief-view.component.ts @@ -1,61 +1,50 @@ import { Component, Input } from '@angular/core'; import { BriefView } from './brief-view'; +import { RecordsService } from '../../records.service'; + @Component({ selector: 'app-documents-brief-view', template: ` -
{{record.metadata.title}}
- - {{ author.name }} {{isLast ? '' : ', '}} +
{{record.metadata.title}} + {{record.metadata.type}}
+
- {{record.metadata.items.length}} items - - + + Add -

- - +
+ `, styles: [] }) @@ -63,9 +52,14 @@ export class DocumentsBriefViewComponent implements BriefView { @Input() record: any; + constructor( + private recordsService: RecordsService + ) {} + deleteItem(pid) { - // TODO: Not implemented ? - console.log(pid); + this.recordsService.delete('items', pid).subscribe(record => { + this.record.metadata.items = this.record.metadata.items.filter(item => item.pid !== pid); + }); } } diff --git a/ui/admin/src/app/records/search/brief-view/item-types-brief-view.component.ts b/ui/admin/src/app/records/search/brief-view/item-types-brief-view.component.ts index ddc8f4a8a7..cf71408235 100644 --- a/ui/admin/src/app/records/search/brief-view/item-types-brief-view.component.ts +++ b/ui/admin/src/app/records/search/brief-view/item-types-brief-view.component.ts @@ -4,11 +4,12 @@ import { BriefView } from './brief-view'; @Component({ selector: 'app-item-types-brief-view', template: ` -
{{record.metadata.name}}
- - - {{record.metadata.description}} - +
{{record.metadata.name}}
+
+ + {{record.metadata.description}} + +
`, styles: [] }) diff --git a/ui/admin/src/app/records/search/brief-view/items-brief-view.component.ts b/ui/admin/src/app/records/search/brief-view/items-brief-view.component.ts deleted file mode 100644 index fded2857ba..0000000000 --- a/ui/admin/src/app/records/search/brief-view/items-brief-view.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { BriefView } from './brief-view'; - -@Component({ - selector: 'app-items-brief-view', - template: ` -
{{record.metadata.barcode}}
- {{record.metadata.status}} - `, - styles: [] -}) -export class ItemsBriefViewComponent implements BriefView { - - @Input() record: any; - -} diff --git a/ui/admin/src/app/records/search/brief-view/libraries-brief-view.component.ts b/ui/admin/src/app/records/search/brief-view/libraries-brief-view.component.ts index 8f5db3acd1..b76514226a 100644 --- a/ui/admin/src/app/records/search/brief-view/libraries-brief-view.component.ts +++ b/ui/admin/src/app/records/search/brief-view/libraries-brief-view.component.ts @@ -1,11 +1,88 @@ import { Component, Input } from '@angular/core'; import { BriefView } from './brief-view'; +import { RecordsService } from '../../records.service'; @Component({ selector: 'app-libraries-brief-view', template: ` -
{{record.metadata.name}}
- {{record.metadata.code}} + + {{record.metadata.code}} +
+
+
+
Address:
+
{{ record.metadata.address }}
+
Email:
+
{{ record.metadata.email }}
+
+
Opening hours and holidays:
+
+
    +
  • +
    + {{ opening_hour.day }}: + {{ time.start_time }} — {{ time.end_time }} + +
    +
    + {{ opening_hour.day }}: Closed +
    +
  • +
+
    +
  • +
    + + + {{ exception.start_date|date:'shortDate' }} + + {{ exception.end_date|date:'shortDate' }} + + {{ time.start_time }} — {{ time.end_time }} + + + {{ exception.title }} +
    +
  • +
+
+
+ + + locations + + + Add + +
+ +
no location
+
+
`, styles: [] }) @@ -13,4 +90,35 @@ export class LibrariesBriefViewComponent implements BriefView { @Input() record: any; + isCollapsed = true; + locations = []; + + constructor( + private recordsService: RecordsService, + ) {} + + toggleCollapse() { + if (this.isCollapsed) { + const libraryPid = this.record.metadata.pid; + this.recordsService + .getRecords('locations', 1, 100, `library.pid:${libraryPid}`) + .subscribe(data => { + if (data.hits.total) { + this.locations = data.hits.hits; + } else { + this.locations = []; + } + this.isCollapsed = !this.isCollapsed; + }); + } else { + this.isCollapsed = !this.isCollapsed; + } + } + + deleteLocation(pid) { + this.recordsService.delete('locations', pid).subscribe(locations => { + this.locations = this.locations.filter(location => location.metadata.pid !== pid); + }); + } + } diff --git a/ui/admin/src/app/records/search/brief-view/locations-brief-view.component.ts b/ui/admin/src/app/records/search/brief-view/locations-brief-view.component.ts deleted file mode 100644 index 65324a85fd..0000000000 --- a/ui/admin/src/app/records/search/brief-view/locations-brief-view.component.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { Component, Input } from '@angular/core'; -import { BriefView } from './brief-view'; - -@Component({ - selector: 'app-locations-brief-view', - template: ` -
{{record.metadata.name}}
- {{record.metadata.code}} - `, - styles: [] -}) -export class LocationsBriefViewComponent implements BriefView { - - @Input() record: any; - -} diff --git a/ui/admin/src/app/records/search/brief-view/mef-title.pipe.ts b/ui/admin/src/app/records/search/brief-view/mef-title.pipe.ts index ae07643212..aaa7363ee7 100644 --- a/ui/admin/src/app/records/search/brief-view/mef-title.pipe.ts +++ b/ui/admin/src/app/records/search/brief-view/mef-title.pipe.ts @@ -5,7 +5,7 @@ import { Pipe, PipeTransform } from '@angular/core'; }) export class MefTitlePipe implements PipeTransform { - transform(value: any, args?: any): any { + transform(value: any): any { for (const source of ['rero', 'bnf', 'gnd']) { if (value[source] && value[source].preferred_name_for_person) { return value[source].preferred_name_for_person; diff --git a/ui/admin/src/app/records/search/brief-view/patron-types-brief-view.component.ts b/ui/admin/src/app/records/search/brief-view/patron-types-brief-view.component.ts index 5d09914aba..41ed4813e0 100644 --- a/ui/admin/src/app/records/search/brief-view/patron-types-brief-view.component.ts +++ b/ui/admin/src/app/records/search/brief-view/patron-types-brief-view.component.ts @@ -4,11 +4,13 @@ import { BriefView } from './brief-view'; @Component({ selector: 'app-patron-types-brief-view', template: ` -
{{record.metadata.name}}
+
{{record.metadata.name}}
+
{{record.metadata.description}} +
`, styles: [] }) diff --git a/ui/admin/src/app/records/search/brief-view/patrons-brief-view.component.ts b/ui/admin/src/app/records/search/brief-view/patrons-brief-view.component.ts index 3b17edcfb9..c4d40fd472 100644 --- a/ui/admin/src/app/records/search/brief-view/patrons-brief-view.component.ts +++ b/ui/admin/src/app/records/search/brief-view/patrons-brief-view.component.ts @@ -4,8 +4,46 @@ import { BriefView } from './brief-view'; @Component({ selector: 'app-patrons-brief-view', template: ` -
{{record.metadata.first_name}} {{record.metadata.last_name}} ({{record.metadata.birth_date}})
- {{record.metadata.roles}} +
{{record.metadata.last_name}}, {{record.metadata.first_name}} + + + + Circulation + + +
+
+

{{record.metadata.birth_date}} — {{ record.metadata.city }}

+

{{record.metadata.roles}} + +

+
    +
  • + Barcode: {{record.metadata.barcode}} +
  • +
  • + Type: {{record.metadata.patron_type.pid}} +
  • +
  • + Phone: {{record.metadata.phone}} +
  • +
  • + Email: {{record.metadata.email}} +
  • +
  • + Street: {{record.metadata.street}} +
  • +
  • + City: {{record.metadata.postal_code}} {{record.metadata.city}} +
  • +
+
`, styles: [] }) @@ -13,4 +51,17 @@ export class PatronsBriefViewComponent implements BriefView { @Input() record: any; + isPatron() { + if (this.record && this.record.metadata.roles) { + return this.record.metadata.roles.some(role => role === 'patron'); + } + return false; + } + + isLibrarian() { + if (this.record && this.record.metadata.roles) { + return this.record.metadata.roles.some(role => role === 'librarian'); + } + return false; + } } diff --git a/ui/admin/src/app/records/search/brief-view/persons-brief-view.component.ts b/ui/admin/src/app/records/search/brief-view/persons-brief-view.component.ts index 2230c27c6a..beb22bcf47 100644 --- a/ui/admin/src/app/records/search/brief-view/persons-brief-view.component.ts +++ b/ui/admin/src/app/records/search/brief-view/persons-brief-view.component.ts @@ -4,11 +4,16 @@ import { BriefView } from './brief-view'; @Component({ selector: 'app-persons-brief-view', template: ` -
{{record.metadata | mefTitle}}
-
- RERO - GND - BNF
+
+ {{record.metadata | mefTitle}} + RERO + GND + BNF +
+
+

{{ record.metadata | birthDate }}

+

{{ record.metadata | bioInformations }}

+
`, styles: [] }) diff --git a/ui/admin/src/app/records/search/result/result.component.html b/ui/admin/src/app/records/search/result/result.component.html index 07f34832e8..0a5799dad1 100644 --- a/ui/admin/src/app/records/search/result/result.component.html +++ b/ui/admin/src/app/records/search/result/result.component.html @@ -1 +1,14 @@ - \ No newline at end of file + diff --git a/ui/admin/src/app/records/search/result/result.component.ts b/ui/admin/src/app/records/search/result/result.component.ts index 6e244ddb52..70bd2dad91 100644 --- a/ui/admin/src/app/records/search/result/result.component.ts +++ b/ui/admin/src/app/records/search/result/result.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, Input, ViewChild, ComponentFactoryResolver } from '@angular/core'; +import { Component, OnInit, Input, Output, EventEmitter, ViewChild, ComponentFactoryResolver } from '@angular/core'; import { BriefViewDirective } from '../brief-view/brief-view.directive'; import { BriefView } from '../brief-view/brief-view'; import { JsonBriefViewComponent } from '../brief-view/json-brief-view.component'; @@ -6,9 +6,7 @@ import { ItemTypesBriefViewComponent } from '../brief-view/item-types-brief-view import { PatronTypesBriefViewComponent } from '../brief-view/patron-types-brief-view.component'; import { CircPoliciesBriefViewComponent } from '../brief-view/circ-policies-brief-view.component'; import { PatronsBriefViewComponent } from '../brief-view/patrons-brief-view.component'; -import { LocationsBriefViewComponent } from '../brief-view/locations-brief-view.component'; import { LibrariesBriefViewComponent } from '../brief-view/libraries-brief-view.component'; -import { ItemsBriefViewComponent } from '../brief-view/items-brief-view.component'; import { DocumentsBriefViewComponent } from '../brief-view/documents-brief-view.component'; import { PersonsBriefViewComponent } from '../brief-view/persons-brief-view.component'; @@ -21,6 +19,8 @@ export class ResultComponent implements OnInit { @Input() record: any; @Input() recordType: any; + @Output() deletedRecord = new EventEmitter(); + @ViewChild(BriefViewDirective) briefView: BriefViewDirective; briefViews = { item_types: ItemTypesBriefViewComponent, @@ -28,9 +28,7 @@ export class ResultComponent implements OnInit { circ_policies: CircPoliciesBriefViewComponent, patrons: PatronsBriefViewComponent, persons: PersonsBriefViewComponent, - locations: LocationsBriefViewComponent, libraries: LibrariesBriefViewComponent, - items: ItemsBriefViewComponent, documents: DocumentsBriefViewComponent }; defaultBriefView = JsonBriefViewComponent; @@ -55,4 +53,8 @@ export class ResultComponent implements OnInit { const componentRef = viewContainerRef.createComponent(componentFactory); (componentRef.instance).record = this.record; } + + deleteRecord(pid: string) { + this.deletedRecord.emit(pid); + } } diff --git a/ui/admin/src/app/records/search/search.component.html b/ui/admin/src/app/records/search/search.component.html index 5901fe1e3e..fc1f7eab96 100644 --- a/ui/admin/src/app/records/search/search.component.html +++ b/ui/admin/src/app/records/search/search.component.html @@ -1,37 +1,46 @@ -
-
+
+
-
- -
-
- {{total}} {{recordType}} {{ 'results' | translate }} - -
-
- -
+
+
+
+ {{total}} {{recordType}} {{ 'results' | translate }} +
+ + Add + +
+
+
+ No result found. +
+ +
    -
  • - - - +
  • + +
-
- -
- - -
+ +
+ +
diff --git a/ui/admin/src/app/search-input/search-input.component.html b/ui/admin/src/app/search-input/search-input.component.html index 3d502c4c63..875bcec27b 100644 --- a/ui/admin/src/app/search-input/search-input.component.html +++ b/ui/admin/src/app/search-input/search-input.component.html @@ -1,4 +1,4 @@ -
+ @@ -51,11 +49,11 @@
-
-
+ + -
-
+ + diff --git a/ui/admin/src/styles.scss b/ui/admin/src/styles.scss index d260880f03..f713ebbaaf 100644 --- a/ui/admin/src/styles.scss +++ b/ui/admin/src/styles.scss @@ -16,6 +16,11 @@ textarea.ng-invalid { color: $form_required; } -form .text-danger { - margin-top: 6px; +a.collapsed i.fa-caret-down { + transform: rotate(-90deg); +} + +.rero-ils-person small { + font-size: $font-size-very-small; + vertical-align: top; } diff --git a/ui/admin/src/variables.scss b/ui/admin/src/variables.scss index a7838d0d16..e137fc5059 100644 --- a/ui/admin/src/variables.scss +++ b/ui/admin/src/variables.scss @@ -1,3 +1,6 @@ $form_error: #a94442; $form_required: red; $form_valid: green; + +$font-size-base: 1rem !default; +$font-size-very-small: $font-size-base * .525 !default;