├── .browserslistrc ├── .eslintrc.json ├── .github └── workflows │ └── codeql-analysis.yml ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── LICENSE.txt ├── README.md ├── USER_README.md ├── angular.json ├── build-release.sh ├── e2e ├── protractor.conf.js ├── src │ ├── app.e2e-spec.ts │ └── app.po.ts └── tsconfig.json ├── karma.conf.js ├── package-lock.json ├── package.json ├── src ├── app │ ├── app-routing.module.ts │ ├── app-translation.module.ts │ ├── app.component.html │ ├── app.component.scss │ ├── app.component.spec.ts │ ├── app.component.ts │ ├── app.config.ts │ ├── app.module.ts │ ├── components │ │ ├── addition │ │ │ ├── addition.component.html │ │ │ ├── addition.component.scss │ │ │ ├── addition.component.spec.ts │ │ │ └── addition.component.ts │ │ ├── additional │ │ │ ├── additional.component.html │ │ │ ├── additional.component.scss │ │ │ ├── additional.component.spec.ts │ │ │ └── additional.component.ts │ │ ├── analogues │ │ │ ├── analogue-detail │ │ │ │ ├── analogue-detail.component.html │ │ │ │ ├── analogue-detail.component.scss │ │ │ │ ├── analogue-detail.component.spec.ts │ │ │ │ └── analogue-detail.component.ts │ │ │ ├── analogue-entry │ │ │ │ ├── analogue-entry.component.html │ │ │ │ ├── analogue-entry.component.scss │ │ │ │ ├── analogue-entry.component.spec.ts │ │ │ │ └── analogue-entry.component.ts │ │ │ ├── analogues.component.html │ │ │ ├── analogues.component.scss │ │ │ ├── analogues.component.spec.ts │ │ │ └── analogues.component.ts │ │ ├── apparatus-entry │ │ │ ├── apparatus-entry-detail │ │ │ │ ├── apparatus-entry-detail.component.html │ │ │ │ ├── apparatus-entry-detail.component.scss │ │ │ │ ├── apparatus-entry-detail.component.spec.ts │ │ │ │ └── apparatus-entry-detail.component.ts │ │ │ ├── apparatus-entry-readings │ │ │ │ ├── apparatus-entry-readings.component.html │ │ │ │ ├── apparatus-entry-readings.component.scss │ │ │ │ ├── apparatus-entry-readings.component.spec.ts │ │ │ │ └── apparatus-entry-readings.component.ts │ │ │ ├── apparatus-entry.component.html │ │ │ ├── apparatus-entry.component.scss │ │ │ ├── apparatus-entry.component.spec.ts │ │ │ └── apparatus-entry.component.ts │ │ ├── biblio │ │ │ ├── biblio.component.html │ │ │ ├── biblio.component.scss │ │ │ ├── biblio.component.spec.ts │ │ │ └── biblio.component.ts │ │ ├── biblioList │ │ │ ├── biblio-list.component.html │ │ │ ├── biblio-list.component.scss │ │ │ ├── biblio-list.component.spec.ts │ │ │ └── biblio-list.component.ts │ │ ├── bibliography-info │ │ │ ├── biblio-styled │ │ │ │ ├── biblio-styled.component.html │ │ │ │ ├── biblio-styled.component.scss │ │ │ │ ├── biblio-styled.component.spec.ts │ │ │ │ └── biblio-styled.component.ts │ │ │ ├── bibliographic-style-selector │ │ │ │ ├── bibliographic-style-selector.component.html │ │ │ │ ├── bibliographic-style-selector.component.scss │ │ │ │ ├── bibliographic-style-selector.component.spec.ts │ │ │ │ └── bibliographic-style-selector.ts │ │ │ ├── bibliography-info.component.html │ │ │ ├── bibliography-info.component.scss │ │ │ ├── bibliography-info.component.spec.ts │ │ │ └── bibliography-info.component.ts │ │ ├── change-layer-selector │ │ │ ├── change-layer-selector.component.html │ │ │ ├── change-layer-selector.component.scss │ │ │ ├── change-layer-selector.component.spec.ts │ │ │ └── change-layer-selector.component.ts │ │ ├── char │ │ │ ├── char.component.html │ │ │ ├── char.component.scss │ │ │ ├── char.component.spec.ts │ │ │ └── char.component.ts │ │ ├── choice │ │ │ ├── choice.component.html │ │ │ ├── choice.component.scss │ │ │ ├── choice.component.spec.ts │ │ │ └── choice.component.ts │ │ ├── components-mixins.ts │ │ ├── content-viewer │ │ │ ├── content-viewer.component.html │ │ │ ├── content-viewer.component.scss │ │ │ ├── content-viewer.component.spec.ts │ │ │ └── content-viewer.component.ts │ │ ├── critical-apparatus │ │ │ ├── critical-apparatus.component.html │ │ │ ├── critical-apparatus.component.scss │ │ │ ├── critical-apparatus.component.spec.ts │ │ │ └── critical-apparatus.component.ts │ │ ├── damage │ │ │ ├── damage.component.html │ │ │ ├── damage.component.scss │ │ │ ├── damage.component.spec.ts │ │ │ └── damage.component.ts │ │ ├── deletion │ │ │ ├── deletion.component.html │ │ │ ├── deletion.component.scss │ │ │ ├── deletion.component.spec.ts │ │ │ └── deletion.component.ts │ │ ├── edition-level-selector │ │ │ ├── edition-level-selector.component.html │ │ │ ├── edition-level-selector.component.scss │ │ │ ├── edition-level-selector.component.spec.ts │ │ │ └── edition-level-selector.component.ts │ │ ├── edition-stmt │ │ │ ├── edition-stmt.component.html │ │ │ ├── edition-stmt.component.scss │ │ │ ├── edition-stmt.component.spec.ts │ │ │ └── edition-stmt.component.ts │ │ ├── editorial-decl │ │ │ ├── editorial-decl.component.html │ │ │ ├── editorial-decl.component.scss │ │ │ ├── editorial-decl.component.spec.ts │ │ │ └── editorial-decl.component.ts │ │ ├── encoding-desc │ │ │ ├── encoding-desc.component.html │ │ │ ├── encoding-desc.component.scss │ │ │ ├── encoding-desc.component.spec.ts │ │ │ └── encoding-desc.component.ts │ │ ├── entities-select │ │ │ ├── entities-select.component.html │ │ │ ├── entities-select.component.scss │ │ │ ├── entities-select.component.spec.ts │ │ │ └── entities-select.component.ts │ │ ├── extent │ │ │ ├── extent.component.html │ │ │ ├── extent.component.scss │ │ │ ├── extent.component.spec.ts │ │ │ └── extent.component.ts │ │ ├── file-desc │ │ │ ├── file-desc.component.html │ │ │ ├── file-desc.component.scss │ │ │ ├── file-desc.component.spec.ts │ │ │ └── file-desc.component.ts │ │ ├── g │ │ │ ├── g.component.html │ │ │ ├── g.component.scss │ │ │ ├── g.component.spec.ts │ │ │ └── g.component.ts │ │ ├── gap │ │ │ ├── gap.component.html │ │ │ ├── gap.component.scss │ │ │ ├── gap.component.spec.ts │ │ │ └── gap.component.ts │ │ ├── generic-element │ │ │ ├── generic-element.component.html │ │ │ ├── generic-element.component.scss │ │ │ ├── generic-element.component.spec.ts │ │ │ └── generic-element.component.ts │ │ ├── global-lists │ │ │ ├── global-lists.component.html │ │ │ ├── global-lists.component.scss │ │ │ ├── global-lists.component.spec.ts │ │ │ └── global-lists.component.ts │ │ ├── history │ │ │ ├── history.component.html │ │ │ ├── history.component.scss │ │ │ ├── history.component.spec.ts │ │ │ └── history.component.ts │ │ ├── identifier │ │ │ ├── identifier.component.html │ │ │ ├── identifier.component.scss │ │ │ ├── identifier.component.spec.ts │ │ │ └── identifier.component.ts │ │ ├── lb │ │ │ ├── lb.component.html │ │ │ ├── lb.component.scss │ │ │ ├── lb.component.spec.ts │ │ │ └── lb.component.ts │ │ ├── manuscript-thumbnails-viewer │ │ │ ├── manuscript-thumbnails-viewer.component.html │ │ │ ├── manuscript-thumbnails-viewer.component.scss │ │ │ ├── manuscript-thumbnails-viewer.component.spec.ts │ │ │ └── manuscript-thumbnails-viewer.component.ts │ │ ├── mod │ │ │ ├── mod-detail │ │ │ │ ├── mod-detail.component.html │ │ │ │ ├── mod-detail.component.scss │ │ │ │ ├── mod-detail.component.spec.ts │ │ │ │ └── mod-detail.component.ts │ │ │ ├── mod-group │ │ │ │ ├── mod-group.component.html │ │ │ │ ├── mod-group.component.scss │ │ │ │ ├── mod-group.component.spec.ts │ │ │ │ └── mod-group.component.ts │ │ │ ├── mod-sequence │ │ │ │ ├── mod-sequence.component.html │ │ │ │ ├── mod-sequence.component.scss │ │ │ │ ├── mod-sequence.component.spec.ts │ │ │ │ └── mod-sequence.component.ts │ │ │ ├── mod.component.html │ │ │ ├── mod.component.scss │ │ │ ├── mod.component.spec.ts │ │ │ └── mod.component.ts │ │ ├── ms-contents │ │ │ ├── ms-contents.component.html │ │ │ ├── ms-contents.component.scss │ │ │ ├── ms-contents.component.spec.ts │ │ │ └── ms-contents.component.ts │ │ ├── ms-desc-selector │ │ │ ├── ms-desc-selector.component.html │ │ │ ├── ms-desc-selector.component.scss │ │ │ ├── ms-desc-selector.component.spec.ts │ │ │ └── ms-desc-selector.component.ts │ │ ├── ms-desc │ │ │ ├── ms-desc.component.html │ │ │ ├── ms-desc.component.scss │ │ │ ├── ms-desc.component.spec.ts │ │ │ └── ms-desc.component.ts │ │ ├── ms-frag │ │ │ ├── ms-frag.component.html │ │ │ ├── ms-frag.component.scss │ │ │ ├── ms-frag.component.spec.ts │ │ │ └── ms-frag.component.ts │ │ ├── ms-identifier │ │ │ ├── ms-identifier.component.html │ │ │ ├── ms-identifier.component.scss │ │ │ ├── ms-identifier.component.spec.ts │ │ │ └── ms-identifier.component.ts │ │ ├── ms-item │ │ │ ├── ms-item.component.html │ │ │ ├── ms-item.component.scss │ │ │ ├── ms-item.component.spec.ts │ │ │ └── ms-item.component.ts │ │ ├── ms-part │ │ │ ├── ms-part.component.html │ │ │ ├── ms-part.component.scss │ │ │ ├── ms-part.component.spec.ts │ │ │ └── ms-part.component.ts │ │ ├── named-entities-list │ │ │ ├── named-entities-list.component.html │ │ │ ├── named-entities-list.component.scss │ │ │ ├── named-entities-list.component.spec.ts │ │ │ └── named-entities-list.component.ts │ │ ├── named-entity-ref │ │ │ ├── named-entity-ref.component.html │ │ │ ├── named-entity-ref.component.scss │ │ │ ├── named-entity-ref.component.spec.ts │ │ │ └── named-entity-ref.component.ts │ │ ├── named-entity-relation │ │ │ ├── named-entity-relation.component.html │ │ │ ├── named-entity-relation.component.scss │ │ │ ├── named-entity-relation.component.spec.ts │ │ │ └── named-entity-relation.component.ts │ │ ├── named-entity │ │ │ ├── named-entity-detail │ │ │ │ ├── named-entity-detail.component.html │ │ │ │ ├── named-entity-detail.component.scss │ │ │ │ ├── named-entity-detail.component.spec.ts │ │ │ │ └── named-entity-detail.component.ts │ │ │ ├── named-entity-occurrence │ │ │ │ ├── named-entity-occurrence.component.html │ │ │ │ ├── named-entity-occurrence.component.scss │ │ │ │ ├── named-entity-occurrence.component.spec.ts │ │ │ │ └── named-entity-occurrence.component.ts │ │ │ ├── named-entity.component.html │ │ │ ├── named-entity.component.scss │ │ │ ├── named-entity.component.spec.ts │ │ │ └── named-entity.component.ts │ │ ├── namespace │ │ │ ├── namespace.component.html │ │ │ ├── namespace.component.scss │ │ │ ├── namespace.component.spec.ts │ │ │ └── namespace.component.ts │ │ ├── note │ │ │ ├── note.component.html │ │ │ ├── note.component.scss │ │ │ ├── note.component.spec.ts │ │ │ └── note.component.ts │ │ ├── notes-stmt │ │ │ ├── notes-stmt.component.html │ │ │ ├── notes-stmt.component.scss │ │ │ ├── notes-stmt.component.spec.ts │ │ │ └── notes-stmt.component.ts │ │ ├── original-encoding-viewer │ │ │ ├── original-encoding-viewer.component.html │ │ │ ├── original-encoding-viewer.component.scss │ │ │ ├── original-encoding-viewer.component.spec.ts │ │ │ └── original-encoding-viewer.component.ts │ │ ├── osd │ │ │ ├── osd.component.html │ │ │ ├── osd.component.scss │ │ │ ├── osd.component.spec.ts │ │ │ └── osd.component.ts │ │ ├── page-selector │ │ │ ├── page-selector.component.html │ │ │ ├── page-selector.component.scss │ │ │ ├── page-selector.component.spec.ts │ │ │ └── page-selector.component.ts │ │ ├── page │ │ │ ├── page.component.html │ │ │ ├── page.component.scss │ │ │ ├── page.component.spec.ts │ │ │ └── page.component.ts │ │ ├── paragraph │ │ │ ├── paragraph.component.html │ │ │ ├── paragraph.component.scss │ │ │ ├── paragraph.component.spec.ts │ │ │ └── paragraph.component.ts │ │ ├── phys-desc │ │ │ ├── phys-desc.component.html │ │ │ ├── phys-desc.component.scss │ │ │ ├── phys-desc.component.spec.ts │ │ │ └── phys-desc.component.ts │ │ ├── project-desc │ │ │ ├── project-desc.component.html │ │ │ ├── project-desc.component.scss │ │ │ ├── project-desc.component.spec.ts │ │ │ └── project-desc.component.ts │ │ ├── project-info │ │ │ ├── project-info.component.html │ │ │ ├── project-info.component.scss │ │ │ ├── project-info.component.spec.ts │ │ │ └── project-info.component.ts │ │ ├── publication-stmt │ │ │ ├── publication-stmt.component.html │ │ │ ├── publication-stmt.component.scss │ │ │ ├── publication-stmt.component.spec.ts │ │ │ └── publication-stmt.component.ts │ │ ├── quote-entry │ │ │ ├── quote-entry.component.html │ │ │ ├── quote-entry.component.scss │ │ │ ├── quote-entry.component.spec.ts │ │ │ └── quote-entry.component.ts │ │ ├── reading │ │ │ ├── reading.component.html │ │ │ ├── reading.component.scss │ │ │ ├── reading.component.spec.ts │ │ │ └── reading.component.ts │ │ ├── rendition │ │ │ ├── rendition.component.html │ │ │ ├── rendition.component.scss │ │ │ ├── rendition.component.spec.ts │ │ │ └── rendition.component.ts │ │ ├── resp-stmt │ │ │ ├── resp-stmt.component.html │ │ │ ├── resp-stmt.component.scss │ │ │ ├── resp-stmt.component.spec.ts │ │ │ └── resp-stmt.component.ts │ │ ├── sampling-decl │ │ │ ├── sampling-decl.component.html │ │ │ ├── sampling-decl.component.scss │ │ │ ├── sampling-decl.component.spec.ts │ │ │ └── sampling-decl.component.ts │ │ ├── series-stmt │ │ │ ├── series-stmt.component.html │ │ │ ├── series-stmt.component.scss │ │ │ ├── series-stmt.component.spec.ts │ │ │ └── series-stmt.component.ts │ │ ├── sic │ │ │ ├── sic.component.html │ │ │ ├── sic.component.scss │ │ │ ├── sic.component.spec.ts │ │ │ └── sic.component.ts │ │ ├── sources │ │ │ ├── source-detail │ │ │ │ ├── source-detail.component.html │ │ │ │ ├── source-detail.component.spec.ts │ │ │ │ └── source-detail.component.ts │ │ │ ├── source-note │ │ │ │ ├── source-note.component.html │ │ │ │ ├── source-note.component.spec.ts │ │ │ │ └── source-note.component.ts │ │ │ ├── sources.component.html │ │ │ ├── sources.component.scss │ │ │ ├── sources.component.spec.ts │ │ │ └── sources.component.ts │ │ ├── space │ │ │ ├── space.component.html │ │ │ ├── space.component.scss │ │ │ ├── space.component.spec.ts │ │ │ └── space.component.ts │ │ ├── substitution │ │ │ ├── substitution.component.html │ │ │ ├── substitution.component.scss │ │ │ ├── substitution.component.spec.ts │ │ │ └── substitution.component.ts │ │ ├── supplied │ │ │ ├── supplied.component.html │ │ │ ├── supplied.component.scss │ │ │ ├── supplied.component.spec.ts │ │ │ └── supplied.component.ts │ │ ├── surplus │ │ │ ├── surplus.component.html │ │ │ ├── surplus.component.scss │ │ │ ├── surplus.component.spec.ts │ │ │ └── surplus.component.ts │ │ ├── tags-decl │ │ │ ├── tags-decl.component.html │ │ │ ├── tags-decl.component.scss │ │ │ ├── tags-decl.component.spec.ts │ │ │ └── tags-decl.component.ts │ │ ├── text │ │ │ ├── text.component.html │ │ │ ├── text.component.scss │ │ │ ├── text.component.spec.ts │ │ │ └── text.component.ts │ │ ├── title-stmt │ │ │ ├── title-stmt.component.html │ │ │ ├── title-stmt.component.scss │ │ │ ├── title-stmt.component.spec.ts │ │ │ └── title-stmt.component.ts │ │ ├── verse-prose-select │ │ │ ├── verse-prose-select.component.html │ │ │ ├── verse-prose-select.component.scss │ │ │ ├── verse-prose-select.component.spec.ts │ │ │ └── verse-prose-select.component.ts │ │ ├── verse │ │ │ ├── verse.component.html │ │ │ ├── verse.component.scss │ │ │ ├── verse.component.spec.ts │ │ │ └── verse.component.ts │ │ ├── verses-group │ │ │ ├── verses-group.component.html │ │ │ ├── verses-group.component.scss │ │ │ ├── verses-group.component.spec.ts │ │ │ └── verses-group.component.ts │ │ └── word │ │ │ ├── word.component.html │ │ │ ├── word.component.scss │ │ │ ├── word.component.spec.ts │ │ │ └── word.component.ts │ ├── directives │ │ ├── annotator.directive.ts │ │ ├── editorial-convention-layout.directive.ts │ │ ├── handle-img-error.directive.ts │ │ ├── highlight.directive.ts │ │ └── html-attributes.directive.ts │ ├── evt-info │ │ ├── evt-info.component.html │ │ ├── evt-info.component.scss │ │ ├── evt-info.component.spec.ts │ │ └── evt-info.component.ts │ ├── main-header │ │ ├── main-header.component.html │ │ ├── main-header.component.scss │ │ ├── main-header.component.spec.ts │ │ └── main-header.component.ts │ ├── main-menu │ │ ├── main-menu.component.html │ │ ├── main-menu.component.scss │ │ ├── main-menu.component.spec.ts │ │ └── main-menu.component.ts │ ├── models │ │ ├── evt-models.ts │ │ ├── evt-models.ts.bak │ │ └── evt-polymorphic-models.ts │ ├── nav-bar-image │ │ ├── nav-bar-image.component.html │ │ ├── nav-bar-image.component.scss │ │ └── nav-bar-image.component.ts │ ├── nav-bar │ │ ├── nav-bar.component.html │ │ ├── nav-bar.component.scss │ │ ├── nav-bar.component.spec.ts │ │ └── nav-bar.component.ts │ ├── panels │ │ ├── image-panel │ │ │ ├── image-panel.component.html │ │ │ ├── image-panel.component.scss │ │ │ ├── image-panel.component.spec.ts │ │ │ ├── image-panel.component.ts │ │ │ └── image-panel.component.ts.bak │ │ ├── imagegrp-panel │ │ │ ├── imagegrp-panel.component.html │ │ │ ├── imagegrp-panel.component.scss │ │ │ └── imagegrp-panel.component.ts │ │ ├── pinboard-panel │ │ │ ├── pinboard-panel.component.html │ │ │ ├── pinboard-panel.component.scss │ │ │ ├── pinboard-panel.component.spec.ts │ │ │ └── pinboard-panel.component.ts │ │ ├── sources-panel │ │ │ ├── sources-panel.component.html │ │ │ ├── sources-panel.component.scss │ │ │ ├── sources-panel.component.spec.ts │ │ │ └── sources-panel.component.ts │ │ ├── text-panel │ │ │ ├── text-panel.component.html │ │ │ ├── text-panel.component.scss │ │ │ ├── text-panel.component.spec.ts │ │ │ └── text-panel.component.ts │ │ ├── version-panel │ │ │ ├── version-panel.component.html │ │ │ ├── version-panel.component.scss │ │ │ ├── version-panel.component.spec.ts │ │ │ └── version-panel.component.ts │ │ └── witness-panel │ │ │ ├── witness-panel.component.html │ │ │ ├── witness-panel.component.scss │ │ │ ├── witness-panel.component.spec.ts │ │ │ └── witness-panel.component.ts │ ├── pinboard │ │ ├── pinboard.component.html │ │ ├── pinboard.component.scss │ │ ├── pinboard.component.spec.ts │ │ ├── pinboard.component.ts │ │ ├── pinboard.service.ts │ │ └── pinner │ │ │ ├── pinner.component.html │ │ │ ├── pinner.component.scss │ │ │ ├── pinner.component.spec.ts │ │ │ └── pinner.component.ts │ ├── pipes │ │ ├── filter.pipe.ts │ │ ├── humanize.pipe.ts │ │ ├── starts-with.pipe.ts │ │ └── xml-beautify.pipe.ts │ ├── services │ │ ├── annotator │ │ │ └── annotator.service.ts │ │ ├── component-register.service.ts │ │ ├── edition-data.service.ts │ │ ├── editorial-conventions.service.ts │ │ ├── entities-select.service.ts │ │ ├── evt-lines-highlight.service.ts │ │ ├── evt-model.service.ts │ │ ├── evt-status.service.ts │ │ ├── idb.service.ts │ │ ├── themes.service.ts │ │ └── xml-parsers │ │ │ ├── analogue-parser.ts │ │ │ ├── analogues-entries-parser.service.ts │ │ │ ├── app-parser.ts │ │ │ ├── apparatus-entries-parser.service.ts │ │ │ ├── basic-parsers.ts │ │ │ ├── bibliographic-entries-parser.service.ts │ │ │ ├── bibliography-parsers.ts │ │ │ ├── character-declarations-parser.service.ts │ │ │ ├── character-declarations-parser.ts │ │ │ ├── choice-parser.ts │ │ │ ├── editorial-parsers.ts │ │ │ ├── facsimile-parser.service.ts │ │ │ ├── facsimile-parser.ts │ │ │ ├── generic-parser.service.ts │ │ │ ├── header-parser.ts │ │ │ ├── index.ts │ │ │ ├── lines-verses-parser.service.ts │ │ │ ├── mod-parser.service.ts │ │ │ ├── mod-parser.ts │ │ │ ├── ms-desc-parser.service.ts │ │ │ ├── msdesc-parser.ts │ │ │ ├── named-entities-parser.service.ts │ │ │ ├── named-entity-parsers.ts │ │ │ ├── parser-models.ts │ │ │ ├── prefatory-matter-parser.service.ts │ │ │ ├── quotes-parser.ts │ │ │ ├── source-entries-parser.service.ts │ │ │ ├── structure-xml-parser.service.ts │ │ │ ├── witnesses-parser.service.ts │ │ │ └── xml-parsers.ts │ ├── shortcuts │ │ ├── shortcuts.component.html │ │ ├── shortcuts.component.scss │ │ ├── shortcuts.component.spec.ts │ │ ├── shortcuts.component.ts │ │ └── shortcuts.service.ts │ ├── ui-components │ │ ├── button │ │ │ ├── button.component.html │ │ │ ├── button.component.scss │ │ │ ├── button.component.spec.ts │ │ │ └── button.component.ts │ │ ├── directives │ │ │ ├── click-outside.directive.ts │ │ │ └── escape.directive.ts │ │ ├── header-section │ │ │ ├── header-section.component.html │ │ │ ├── header-section.component.scss │ │ │ ├── header-section.component.spec.ts │ │ │ └── header-section.component.ts │ │ ├── icon │ │ │ ├── icon.component.html │ │ │ ├── icon.component.scss │ │ │ ├── icon.component.spec.ts │ │ │ └── icon.component.ts │ │ ├── modal │ │ │ ├── modal.component.html │ │ │ ├── modal.component.scss │ │ │ ├── modal.component.spec.ts │ │ │ ├── modal.component.ts │ │ │ └── modal.service.ts │ │ ├── ms-desc-section │ │ │ ├── ms-desc-section.component.html │ │ │ ├── ms-desc-section.component.scss │ │ │ ├── ms-desc-section.component.spec.ts │ │ │ └── ms-desc-section.component.ts │ │ ├── panel │ │ │ ├── panel.component.html │ │ │ ├── panel.component.scss │ │ │ ├── panel.component.spec.ts │ │ │ └── panel.component.ts │ │ └── ui-components.module.ts │ ├── utils │ │ ├── dom-utils.ts │ │ ├── js-utils.ts │ │ └── xml-utils.ts │ └── view-modes │ │ ├── collation │ │ ├── collation.component.html │ │ ├── collation.component.scss │ │ ├── collation.component.spec.ts │ │ └── collation.component.ts │ │ ├── documental-mixed │ │ ├── documental-mixed.component.html │ │ ├── documental-mixed.component.scss │ │ ├── documental-mixed.component.spec.ts │ │ └── documental-mixed.component.ts │ │ ├── image-image │ │ ├── image-image.component.html │ │ ├── image-image.component.scss │ │ └── image-image.component.ts │ │ ├── image-only │ │ ├── image-only.component.html │ │ ├── image-only.component.scss │ │ ├── image-only.component.spec.ts │ │ └── image-only.component.ts │ │ ├── image-text │ │ ├── image-text.component.html │ │ ├── image-text.component.scss │ │ ├── image-text.component.spec.ts │ │ └── image-text.component.ts │ │ ├── reading-text │ │ ├── reading-text.component.html │ │ ├── reading-text.component.scss │ │ ├── reading-text.component.spec.ts │ │ └── reading-text.component.ts │ │ ├── text-sources │ │ ├── text-sources.component.html │ │ ├── text-sources.component.scss │ │ ├── text-sources.component.spec.ts │ │ └── text-sources.component.ts │ │ ├── text-text │ │ ├── text-text.component.html │ │ ├── text-text.component.scss │ │ ├── text-text.component.spec.ts │ │ └── text-text.component.ts │ │ └── text-versions │ │ ├── text-versions.component.html │ │ ├── text-versions.component.scss │ │ ├── text-versions.component.spec.ts │ │ └── text-versions.component.ts ├── assets │ ├── .gitkeep │ ├── config │ │ ├── custom-styles.css │ │ ├── edition_config.json │ │ ├── edition_config_DOTR.json │ │ ├── edition_config_Pelavicino.json │ │ ├── edition_config_PseudoEdition.json │ │ ├── edition_config_Saba.json │ │ ├── editorial_conventions_config.json │ │ ├── file_config.json │ │ ├── file_config_DOTR.json │ │ ├── file_config_Pelavicino.json │ │ ├── file_config_PseudoEdition.json │ │ ├── file_config_Saba.json │ │ ├── ui_config.json │ │ ├── ui_config_DOTR.json │ │ ├── ui_config_Pelavicino.json │ │ ├── ui_config_PseudoEdition.json │ │ └── ui_config_Saba.json │ ├── data │ │ ├── VB-DOTR.xml │ │ ├── images │ │ │ ├── double │ │ │ │ ├── VB_fol_104v-VB_fol_105r.jpg │ │ │ │ └── VB_fol_105v-VB_fol_106r.jpg │ │ │ └── single │ │ │ │ ├── 01.jpg │ │ │ │ ├── 02.jpg │ │ │ │ ├── 03.jpg │ │ │ │ ├── 04.jpg │ │ │ │ ├── 05.jpg │ │ │ │ ├── 06.jpg │ │ │ │ ├── 07.jpg │ │ │ │ ├── 08.jpg │ │ │ │ ├── 09.jpg │ │ │ │ ├── 10.jpg │ │ │ │ ├── 10bis.jpg │ │ │ │ ├── 11.jpg │ │ │ │ ├── 12.jpg │ │ │ │ ├── 13.jpg │ │ │ │ ├── 14.jpg │ │ │ │ ├── 15.jpg │ │ │ │ ├── 16.jpg │ │ │ │ ├── 17.jpg │ │ │ │ ├── 18.jpg │ │ │ │ ├── 19.jpg │ │ │ │ ├── 20.jpg │ │ │ │ ├── Maier_VB_104v.jpg │ │ │ │ ├── VB_fol_104v.jpg │ │ │ │ ├── VB_fol_105r.jpg │ │ │ │ ├── VB_fol_105v.jpg │ │ │ │ ├── VB_fol_106r.jpg │ │ │ │ ├── VB_spine.jpg │ │ │ │ ├── fol_214v.jpg │ │ │ │ ├── fol_215r.jpg │ │ │ │ ├── fol_215v.jpg │ │ │ │ ├── fol_216r.jpg │ │ │ │ ├── fol_216v.jpg │ │ │ │ ├── fol_217r.jpg │ │ │ │ ├── fol_217v.jpg │ │ │ │ └── fol_218r.jpg │ │ ├── pelavicino.xml │ │ ├── pseudoEdition.xml │ │ ├── saba.xml │ │ └── schema │ │ │ ├── tei-vbd.rng │ │ │ └── tei_cp.rng │ ├── fonts │ │ ├── Junicode-Bold.woff │ │ ├── Junicode-BoldItalic.woff │ │ ├── Junicode-Italic.woff │ │ ├── Junicode.woff │ │ ├── evt-icons-project.json │ │ ├── evt-icons.eot │ │ ├── evt-icons.svg │ │ ├── evt-icons.ttf │ │ └── evt-icons.woff │ ├── i18n │ │ ├── en.json │ │ ├── en.json.bak │ │ ├── it.json │ │ └── it.json.bak │ ├── images │ │ ├── empty-image.jpg │ │ ├── en.png │ │ ├── it.png │ │ ├── logo.png │ │ └── logo_white.png │ ├── osd │ │ └── images │ │ │ ├── button_grouphover.png │ │ │ ├── button_hover.png │ │ │ ├── button_pressed.png │ │ │ ├── button_rest.png │ │ │ ├── flip_grouphover.png │ │ │ ├── flip_hover.png │ │ │ ├── flip_pressed.png │ │ │ ├── flip_rest.png │ │ │ ├── fullpage_grouphover.png │ │ │ ├── fullpage_hover.png │ │ │ ├── fullpage_pressed.png │ │ │ ├── fullpage_rest.png │ │ │ ├── home_grouphover.png │ │ │ ├── home_hover.png │ │ │ ├── home_pressed.png │ │ │ ├── home_rest.png │ │ │ ├── next_grouphover.png │ │ │ ├── next_hover.png │ │ │ ├── next_pressed.png │ │ │ ├── next_rest.png │ │ │ ├── previous_grouphover.png │ │ │ ├── previous_hover.png │ │ │ ├── previous_pressed.png │ │ │ ├── previous_rest.png │ │ │ ├── rotateleft_grouphover.png │ │ │ ├── rotateleft_hover.png │ │ │ ├── rotateleft_pressed.png │ │ │ ├── rotateleft_rest.png │ │ │ ├── rotateright_grouphover.png │ │ │ ├── rotateright_hover.png │ │ │ ├── rotateright_pressed.png │ │ │ ├── rotateright_rest.png │ │ │ ├── zoomin_grouphover.png │ │ │ ├── zoomin_hover.png │ │ │ ├── zoomin_pressed.png │ │ │ ├── zoomin_rest.png │ │ │ ├── zoomout_grouphover.png │ │ │ ├── zoomout_hover.png │ │ │ ├── zoomout_pressed.png │ │ │ └── zoomout_rest.png │ └── scss │ │ ├── _bootstrapOverrides.scss │ │ ├── _colors.scss │ │ ├── _mixins.scss │ │ ├── _themes.scss │ │ └── _variables.scss ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── main.ts ├── polyfills.ts ├── styles.scss └── test.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.spec.json └── user_paths.sh /.browserslistrc: -------------------------------------------------------------------------------- 1 | # This file is used by the build system to adjust CSS and JS output to support the specified browsers below. 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | 5 | # You can see what browsers were selected by your queries by running: 6 | # npx browserslist 7 | 8 | > 0.5% 9 | last 2 versions 10 | Firefox ESR 11 | not dead 12 | not IE 9-11 # For IE 9-11 support, remove 'not'. -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - "12.10" 4 | dist: trusty 5 | sudo: required 6 | cache: 7 | directories: 8 | - node_modules 9 | before_script: 10 | - npm install 11 | script: 12 | - npm run lint 13 | - npm run build:gh-pages 14 | deploy: 15 | provider: pages 16 | skip_cleanup: true 17 | github_token: $GITHUB_TOKEN 18 | keep_history: true 19 | local_dir: dist/evt-viewer-angular/ 20 | on: 21 | branch: master -------------------------------------------------------------------------------- /build-release.sh: -------------------------------------------------------------------------------- 1 | nvm use 12 2 | 3 | npm run build -- --c=release 4 | 5 | cp USER_README.md release/README.md 6 | 7 | if [ ! -f ./user_paths.sh ]; then 8 | echo "user_paths.sh file not found." 9 | fi 10 | 11 | . ./user_paths.sh 12 | 13 | if [ "$XML_DATA_FOLDER" ]; then 14 | cp -r $XML_DATA_FOLDER release/assets/ 15 | echo "xml data folder copied in release." 16 | fi 17 | 18 | if [ "$CONFIG_FOLDER" ]; then 19 | cp -r $CONFIG_FOLDER release/assets/ 20 | echo "config folder copied in release." 21 | fi 22 | 23 | if [ "$EXAMPLES_README" ]; then 24 | cp $EXAMPLES_README release/EXAMPLES_README.md 25 | echo "Examples README copied in release." 26 | fi 27 | -------------------------------------------------------------------------------- /e2e/src/app.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { AppPage } from './app.po'; 2 | import { browser, logging } from 'protractor'; 3 | 4 | describe('workspace-project App', () => { 5 | let page: AppPage; 6 | 7 | beforeEach(() => { 8 | page = new AppPage(); 9 | }); 10 | 11 | it('should display welcome message', () => { 12 | page.navigateTo(); 13 | expect(page.getTitleText()).toEqual('evt-viewer-angular app is running!'); 14 | }); 15 | 16 | afterEach(async () => { 17 | // Assert that there are no errors emitted from the browser 18 | const logs = await browser.manage().logs().get(logging.Type.BROWSER); 19 | expect(logs).not.toContain(jasmine.objectContaining({ 20 | level: logging.Level.SEVERE, 21 | } as logging.Entry)); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /e2e/src/app.po.ts: -------------------------------------------------------------------------------- 1 | import { browser, by, element } from 'protractor'; 2 | 3 | export class AppPage { 4 | navigateTo() { 5 | return browser.get(browser.baseUrl) as Promise; 6 | } 7 | 8 | getTitleText() { 9 | return element(by.css('evt-root .content span')).getText() as Promise; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /e2e/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/e2e", 5 | "module": "commonjs", 6 | "target": "es2018", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/app-translation.module.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient, HttpClientModule } from '@angular/common/http'; 2 | import { NgModule } from '@angular/core'; 3 | import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; 4 | import { TranslateHttpLoader } from '@ngx-translate/http-loader'; 5 | 6 | // AoT requires an exported function for factories 7 | export function HttpLoaderFactory(http: HttpClient) { 8 | return new TranslateHttpLoader(http, './assets/i18n/', '.json'); 9 | } 10 | 11 | @NgModule({ 12 | imports: [ 13 | HttpClientModule, 14 | TranslateModule.forRoot({ 15 | loader: { 16 | provide: TranslateLoader, 17 | useFactory: HttpLoaderFactory, 18 | deps: [HttpClient], 19 | }, 20 | })], 21 | exports: [TranslateModule], 22 | }) 23 | export class AppTranslationModule { 24 | } 25 | -------------------------------------------------------------------------------- /src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/app/components/addition/addition.component.html: -------------------------------------------------------------------------------- 1 | 3 | 6 | -------------------------------------------------------------------------------- /src/app/components/addition/addition.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/addition/addition.component.scss -------------------------------------------------------------------------------- /src/app/components/addition/addition.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { AdditionComponent } from './addition.component'; 4 | 5 | describe('AdditionComponent', () => { 6 | let component: AdditionComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ AdditionComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(AdditionComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/additional/additional.component.scss: -------------------------------------------------------------------------------- 1 | .additional { 2 | margin-bottom: 2rem; 3 | } 4 | 5 | .projectInfo-block { 6 | display: block; 7 | } 8 | 9 | .flex-container { 10 | display: flex; 11 | flex-direction: row; 12 | flex-wrap: wrap; 13 | } 14 | 15 | .flex-item-label { 16 | flex-basis: 100%; 17 | } 18 | 19 | .flex-item-information { 20 | flex-basis: 100%; 21 | margin-bottom: 0.7rem; 22 | } 23 | 24 | @media (min-width: 1400px) { 25 | .flex-item-label { 26 | flex-basis: 20%; 27 | } 28 | 29 | .flex-item-information { 30 | flex-basis: 80%; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/app/components/additional/additional.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AdditionalComponent } from './additional.component'; 4 | 5 | describe('AdditionalComponent', () => { 6 | let component: AdditionalComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ AdditionalComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(AdditionalComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/additional/additional.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { Additional } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-additional', 7 | templateUrl: './additional.component.html', 8 | styleUrls: ['./additional.component.scss'], 9 | }) 10 | 11 | @register(Additional) 12 | export class AdditionalComponent { 13 | @Input() data: Additional; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/analogues/analogue-detail/analogue-detail.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/analogues/analogue-detail/analogue-detail.component.scss -------------------------------------------------------------------------------- /src/app/components/analogues/analogue-entry/analogue-entry.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/analogues/analogue-entry/analogue-entry.component.scss -------------------------------------------------------------------------------- /src/app/components/analogues/analogues.component.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/app/components/analogues/analogues.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/analogues/analogues.component.scss -------------------------------------------------------------------------------- /src/app/components/analogues/analogues.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { AnaloguesComponent } from './analogues.component'; 4 | 5 | describe('AnaloguesComponent', () => { 6 | let component: AnaloguesComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ AnaloguesComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(AnaloguesComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/apparatus-entry/apparatus-entry-readings/apparatus-entry-readings.component.scss: -------------------------------------------------------------------------------- 1 | .app-entry-reading { 2 | display: inline-block; 3 | padding-right: 0.5rem; 4 | line-height: 1; 5 | } 6 | 7 | .app-wit { 8 | font-size: 90%; 9 | font-weight: 600; 10 | font-family: serif; 11 | } -------------------------------------------------------------------------------- /src/app/components/apparatus-entry/apparatus-entry.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/scss/themes'; 2 | 3 | .app-entry { 4 | &.app-detail-opened { 5 | > .app-entry-lem { 6 | position: relative; 7 | z-index: 1; 8 | padding-bottom: 0.313rem; 9 | @include themify($themes) { 10 | border: 1px solid themed('baseBorder'); 11 | border-bottom: 0; 12 | } 13 | } 14 | } 15 | } 16 | 17 | .app-entry-lem { 18 | cursor: pointer; 19 | .app-entry-lem { 20 | @include themify($themes) { 21 | border: 1px solid themed('baseBorder'); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/app/components/biblio/biblio.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/biblio/biblio.component.scss -------------------------------------------------------------------------------- /src/app/components/biblio/biblio.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BiblioEntryComponent } from './biblio.component'; 4 | 5 | describe('BiblioComponent', () => { 6 | let component: BiblioEntryComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ BiblioEntryComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(BiblioEntryComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/biblioList/biblio-list.component.scss: -------------------------------------------------------------------------------- 1 | .bibl-head { 2 | margin-left: 2rem; 3 | } -------------------------------------------------------------------------------- /src/app/components/biblioList/biblio-list.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BiblioListComponent } from './biblio-list.component'; 4 | 5 | describe('BiblioListComponent', () => { 6 | let component: BiblioListComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ BiblioListComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(BiblioListComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/biblioList/biblio-list.component.ts: -------------------------------------------------------------------------------- 1 | import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; 2 | import { BibliographicList } from '../../models/evt-models'; 3 | @Component({ 4 | selector: 'evt-biblio-list', 5 | templateUrl: './biblio-list.component.html', 6 | styleUrls: ['./biblio-list.component.scss'], 7 | changeDetection: ChangeDetectionStrategy.OnPush, 8 | }) 9 | export class BiblioListComponent { 10 | @Input() data: BibliographicList; 11 | } 12 | -------------------------------------------------------------------------------- /src/app/components/bibliography-info/biblio-styled/biblio-styled.component.scss: -------------------------------------------------------------------------------- 1 | .font-italic { 2 | font-style: italic; 3 | } 4 | 5 | .font-normal { 6 | font-style: normal !important; 7 | } -------------------------------------------------------------------------------- /src/app/components/bibliography-info/biblio-styled/biblio-styled.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { BiblioEntryComponent } from './biblio.component'; 4 | 5 | describe('BiblioComponent', () => { 6 | let component: BiblioEntryComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ BiblioEntryComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(BiblioEntryComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/bibliography-info/bibliographic-style-selector/bibliographic-style-selector.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 16 | 17 |
18 |
19 |
-------------------------------------------------------------------------------- /src/app/components/bibliography-info/bibliographic-style-selector/bibliographic-style-selector.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/bibliography-info/bibliographic-style-selector/bibliographic-style-selector.component.scss -------------------------------------------------------------------------------- /src/app/components/bibliography-info/bibliography-info.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 | 6 | 7 | 8 | 9 | 10 |
-------------------------------------------------------------------------------- /src/app/components/bibliography-info/bibliography-info.component.scss: -------------------------------------------------------------------------------- 1 | .bibliography_header { 2 | position: relative; 3 | margin-top: 0; 4 | height: 45px; 5 | max-height: 45px; 6 | text-align: center; 7 | } 8 | 9 | .bibliography_header>div { 10 | display: flex; 11 | align-content: center; 12 | } -------------------------------------------------------------------------------- /src/app/components/change-layer-selector/change-layer-selector.component.html: -------------------------------------------------------------------------------- 1 | 10 | 11 | 14 | {{item.id | translate}} 15 | 16 | 17 | {{item.id | translate}}
18 |
19 |
-------------------------------------------------------------------------------- /src/app/components/change-layer-selector/change-layer-selector.component.scss: -------------------------------------------------------------------------------- 1 | .layer-color-legenda { 2 | width: 0.8em; 3 | height: 0.8em; 4 | display: inline-block; 5 | margin-left: 0.5em; 6 | border: 1px solid grey; 7 | vertical-align: middle; 8 | margin-bottom: 0.1em; 9 | } -------------------------------------------------------------------------------- /src/app/components/char/char.component.html: -------------------------------------------------------------------------------- 1 |
2 |
{{ data.name }}
3 |
4 | {{ mapping.type }} {{ mapping.subtype }} 5 | 6 | 7 | 8 |
9 |
-------------------------------------------------------------------------------- /src/app/components/char/char.component.scss: -------------------------------------------------------------------------------- 1 | .char { 2 | padding: 10px; 3 | border: 1px solid #efefef; 4 | margin: 2px; 5 | } 6 | 7 | .char-name { 8 | font-weight: bolder; 9 | } 10 | 11 | .char-mapping { 12 | display: flex; 13 | flex-wrap: wrap; 14 | margin: 0; 15 | padding: 0; 16 | } 17 | 18 | .char-mapping-label, 19 | .char-mapping-value { 20 | box-sizing: border-box; 21 | -webkit-box-flex: 1; 22 | flex-grow: 1; 23 | width: 100%; 24 | overflow: hidden; 25 | 26 | } 27 | 28 | .char-mapping-label { 29 | width: 20%; 30 | font-variant: small-caps; 31 | } 32 | 33 | .char-mapping-value { 34 | width: 80%; 35 | 36 | &[data-type="codepoint"] { 37 | font-family: monospace; 38 | } 39 | } -------------------------------------------------------------------------------- /src/app/components/char/char.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { CharComponent } from './char.component'; 4 | 5 | describe('CharComponent', () => { 6 | let component: CharComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ CharComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(CharComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/char/char.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { Char } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-char', 7 | templateUrl: './char.component.html', 8 | styleUrls: ['./char.component.scss'], 9 | }) 10 | @register(Char) 11 | export class CharComponent { 12 | @Input() data: Char; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/choice/choice.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ChoiceComponent } from './choice.component'; 4 | 5 | describe('ChoiceComponent', () => { 6 | let component: ChoiceComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ChoiceComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ChoiceComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/content-viewer/content-viewer.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 9 | -------------------------------------------------------------------------------- /src/app/components/content-viewer/content-viewer.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/content-viewer/content-viewer.component.scss -------------------------------------------------------------------------------- /src/app/components/critical-apparatus/critical-apparatus.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/app/components/critical-apparatus/critical-apparatus.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/critical-apparatus/critical-apparatus.component.scss -------------------------------------------------------------------------------- /src/app/components/damage/damage.component.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /src/app/components/damage/damage.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/damage/damage.component.scss -------------------------------------------------------------------------------- /src/app/components/damage/damage.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { DamageComponent } from './damage.component'; 4 | 5 | describe('DamageComponent', () => { 6 | let component: DamageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ DamageComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(DamageComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/deletion/deletion.component.html: -------------------------------------------------------------------------------- 1 | 3 | 5 | -------------------------------------------------------------------------------- /src/app/components/deletion/deletion.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/deletion/deletion.component.scss -------------------------------------------------------------------------------- /src/app/components/deletion/deletion.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { DeletionComponent } from './deletion.component'; 4 | 5 | describe('DeletionComponent', () => { 6 | let component: DeletionComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ DeletionComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(DeletionComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/edition-level-selector/edition-level-selector.component.html: -------------------------------------------------------------------------------- 1 | 11 | 14 | 17 | {{item.label | translate}} 18 | 19 | 20 | {{item.label | translate}} 21 | 22 | -------------------------------------------------------------------------------- /src/app/components/edition-level-selector/edition-level-selector.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/edition-level-selector/edition-level-selector.component.scss -------------------------------------------------------------------------------- /src/app/components/edition-stmt/edition-stmt.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/scss/mixins'; 2 | 3 | .main-section-title { 4 | @include headerSectionTitle() 5 | } -------------------------------------------------------------------------------- /src/app/components/edition-stmt/edition-stmt.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { EditionStmtComponent } from './edition-stmt.component'; 4 | 5 | describe('EditionStmtComponent', () => { 6 | let component: EditionStmtComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ EditionStmtComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(EditionStmtComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/edition-stmt/edition-stmt.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | import { EditionStmt } from '../../models/evt-models'; 4 | import { register } from '../../services/component-register.service'; 5 | 6 | @Component({ 7 | selector: 'evt-edition-stmt', 8 | templateUrl: './edition-stmt.component.html', 9 | styleUrls: ['./edition-stmt.component.scss'], 10 | }) 11 | @register(EditionStmt) 12 | export class EditionStmtComponent { 13 | @Input() data: EditionStmt; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/editorial-decl/editorial-decl.component.scss: -------------------------------------------------------------------------------- 1 | .editorialDecl { 2 | ::ng-deep { 3 | .stdvals { 4 | display: inline-block; 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/app/components/editorial-decl/editorial-decl.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | import { EditorialDeclComponent } from './editorial-decl.component'; 3 | 4 | describe('EditorialDeclComponent', () => { 5 | let component: EditorialDeclComponent; 6 | let fixture: ComponentFixture; 7 | 8 | beforeEach(async () => { 9 | await TestBed.configureTestingModule({ 10 | declarations: [ EditorialDeclComponent ], 11 | }) 12 | .compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(EditorialDeclComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/components/editorial-decl/editorial-decl.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { EditorialDecl } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-editorial-decl', 7 | templateUrl: './editorial-decl.component.html', 8 | styleUrls: ['./editorial-decl.component.scss'], 9 | }) 10 | @register(EditorialDecl) 11 | export class EditorialDeclComponent { 12 | @Input() data: EditorialDecl; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/encoding-desc/encoding-desc.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../assets/scss/mixins"; 2 | 3 | .main-section-title { 4 | @include headerSectionTitle(); 5 | } -------------------------------------------------------------------------------- /src/app/components/encoding-desc/encoding-desc.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | import { EncodingDescComponent } from './encoding-desc.component'; 3 | 4 | describe('EncodingDescComponent', () => { 5 | let component: EncodingDescComponent; 6 | let fixture: ComponentFixture; 7 | 8 | beforeEach(async () => { 9 | await TestBed.configureTestingModule({ 10 | declarations: [ EncodingDescComponent ], 11 | }) 12 | .compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(EncodingDescComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/components/encoding-desc/encoding-desc.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { EncodingDesc } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-encoding-desc', 7 | templateUrl: './encoding-desc.component.html', 8 | styleUrls: ['./encoding-desc.component.scss'], 9 | }) 10 | @register(EncodingDesc) 11 | export class EncodingDescComponent { 12 | @Input() data: EncodingDesc; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/entities-select/entities-select.component.scss: -------------------------------------------------------------------------------- 1 | // ng-select overrides 2 | ::ng-deep .ng-select { 3 | min-width: 150px; 4 | } 5 | 6 | ::ng-deep .ng-dropdown-panel { 7 | .ng-dropdown-panel-items { 8 | .ng-optgroup { 9 | font-size: 90%; 10 | font-variant: small-caps; 11 | } 12 | 13 | .ng-option { 14 | padding-left: 10px !important; 15 | } 16 | } 17 | } 18 | 19 | .entities-select-toolbar { 20 | display: flex; 21 | 22 | .btn { 23 | flex-grow: 1; 24 | } 25 | } 26 | 27 | .select-all-btn { 28 | cursor: pointer; 29 | } -------------------------------------------------------------------------------- /src/app/components/extent/extent.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 |
6 | -------------------------------------------------------------------------------- /src/app/components/extent/extent.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/extent/extent.component.scss -------------------------------------------------------------------------------- /src/app/components/extent/extent.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ExtentComponent } from './extent.component'; 4 | 5 | describe('ExtentComponent', () => { 6 | let component: ExtentComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ ExtentComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ExtentComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/extent/extent.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | import { Extent } from '../../models/evt-models'; 4 | import { register } from '../../services/component-register.service'; 5 | 6 | @Component({ 7 | selector: 'evt-extent', 8 | templateUrl: './extent.component.html', 9 | styleUrls: ['./extent.component.scss'], 10 | }) 11 | @register(Extent) 12 | export class ExtentComponent { 13 | @Input() data: Extent; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/file-desc/file-desc.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../assets/scss/mixins"; 2 | 3 | .main-section-title { 4 | @include headerSectionTitle(); 5 | } 6 | 7 | ::ng-deep .fileDesc { 8 | .sourceDesc-title { 9 | @include headerSectionTitle(); 10 | } 11 | 12 | .sourceDesc .section.underline-dotted { 13 | border-bottom: none !important; 14 | } 15 | 16 | .extent .section-label { 17 | display: none !important; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/app/components/file-desc/file-desc.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { FileDescComponent } from './file-desc.component'; 4 | 5 | describe('FileDescComponent', () => { 6 | let component: FileDescComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ FileDescComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(FileDescComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/file-desc/file-desc.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { FileDesc } from 'src/app/models/evt-models'; 3 | import { register } from 'src/app/services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-file-desc', 7 | templateUrl: './file-desc.component.html', 8 | styleUrls: ['./file-desc.component.scss'], 9 | }) 10 | @register(FileDesc) 11 | export class FileDescComponent { 12 | @Input() data: FileDesc; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/g/g.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/g/g.component.scss -------------------------------------------------------------------------------- /src/app/components/g/g.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { GComponent } from './g.component'; 4 | 5 | describe('GComponent', () => { 6 | let component: GComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ GComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(GComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/gap/gap.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/components/gap/gap.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/scss/colors'; 2 | 3 | $gapHoverBackground: get-color(highlightColor); 4 | 5 | .gap { 6 | &:hover { 7 | background: $gapHoverBackground; 8 | } 9 | } 10 | ::ng-deep .gap { 11 | &:hover .line-gap { 12 | background: $gapHoverBackground; 13 | } 14 | .line-gap { 15 | display: block; 16 | position: relative; 17 | &:before { 18 | content: "["; 19 | } 20 | &:after { 21 | content: "]"; 22 | position: absolute; 23 | right: 0; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/app/components/gap/gap.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { GapComponent } from './gap.component'; 4 | 5 | describe('GapComponent', () => { 6 | let component: GapComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ GapComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(GapComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/generic-element/generic-element.component.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/app/components/generic-element/generic-element.component.scss: -------------------------------------------------------------------------------- 1 | // TEMP 2 | .app { 3 | background: violet; 4 | } -------------------------------------------------------------------------------- /src/app/components/global-lists/global-lists.component.scss: -------------------------------------------------------------------------------- 1 | .list-item, 2 | .sub-list-item { 3 | &:not(.active):hover { 4 | cursor: pointer; 5 | background: rgba(0, 0, 0, .1); 6 | } 7 | 8 | .badge { 9 | position: absolute; 10 | right: 0.5rem; 11 | margin-top: 0.3rem; 12 | } 13 | } 14 | 15 | .toggler { 16 | cursor: pointer; 17 | 18 | &:hover { 19 | opacity: .8; 20 | } 21 | } -------------------------------------------------------------------------------- /src/app/components/global-lists/global-lists.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { GlobalListsComponent } from './global-lists.component'; 4 | 5 | describe('GlobalListsComponent', () => { 6 | let component: GlobalListsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ GlobalListsComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(GlobalListsComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/history/history.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HistoryComponent } from './history.component'; 4 | 5 | describe('HistoryComponent', () => { 6 | let component: HistoryComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ HistoryComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(HistoryComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/history/history.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { History } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-history', 7 | templateUrl: './history.component.html', 8 | styleUrls: ['./history.component.scss'], 9 | }) 10 | 11 | @register(History) 12 | export class HistoryComponent { 13 | @Input() data: History; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/identifier/identifier.component.scss: -------------------------------------------------------------------------------- 1 | .has-list-class { 2 | margin-left: 2.5rem; 3 | } 4 | 5 | .projectInfo-block { 6 | display: block; 7 | } 8 | 9 | .flex-container { 10 | display: flex; 11 | flex-direction: row; 12 | flex-wrap: wrap; 13 | } 14 | 15 | .flex-item-label { 16 | flex-basis: 100%; 17 | } 18 | 19 | .flex-item-information { 20 | flex-basis: 100%; 21 | margin-bottom: 0.7rem; 22 | } 23 | 24 | @media (min-width: 1326px) { 25 | .flex-item-label { 26 | flex-basis: 20%; 27 | } 28 | 29 | .flex-item-information { 30 | flex-basis: 80%; 31 | } 32 | } -------------------------------------------------------------------------------- /src/app/components/identifier/identifier.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { IdentifierComponent } from './identifier.component'; 4 | 5 | describe('IdentifierComponent', () => { 6 | let component: IdentifierComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ IdentifierComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(IdentifierComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/identifier/identifier.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { Identifier } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-identifier', 7 | templateUrl: './identifier.component.html', 8 | styleUrls: ['./identifier.component.scss'], 9 | }) 10 | 11 | @register(Identifier) 12 | export class IdentifierComponent { 13 | @Input() data: Identifier; 14 | @Input() listClass: boolean; 15 | } 16 | -------------------------------------------------------------------------------- /src/app/components/lb/lb.component.html: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | {{data.n}} 7 |
8 |   9 |
10 | -------------------------------------------------------------------------------- /src/app/components/lb/lb.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/scss/themes'; 2 | 3 | .lb { 4 | .lineN { 5 | text-align: right; 6 | font-size: .8em; 7 | margin-right: 10px; 8 | height: 100%; 9 | display: inline-block; 10 | 11 | @include themify($themes) { 12 | color: themed('secondaryColorDark'); 13 | } 14 | } 15 | } -------------------------------------------------------------------------------- /src/app/components/lb/lb.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { LbComponent } from './lb.component'; 4 | 5 | describe('LbComponent', () => { 6 | let component: LbComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ LbComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(LbComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/mod/mod-detail/mod-detail.component.scss: -------------------------------------------------------------------------------- 1 | .mod-symbol { 2 | font-size: 1em; 3 | color: #263238; 4 | margin: 0; 5 | padding: 0 0.3em 0 0; 6 | display: inline; 7 | font-family: "evt-icons" !important; 8 | font-style: normal; 9 | font-feature-settings: normal; 10 | font-variant: normal; 11 | text-transform: none; 12 | -webkit-font-smoothing: antialiased; 13 | vertical-align: super; 14 | filter: saturate(0); 15 | margin-top: 0.2em; 16 | pointer-events: all; 17 | cursor:pointer; 18 | } -------------------------------------------------------------------------------- /src/app/components/mod/mod-detail/mod-detail.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ModDetailComponent } from './mod-detail.component'; 4 | 5 | describe('ModDetailComponent', () => { 6 | let component: ModDetailComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ ModDetailComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ModDetailComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/mod/mod-group/mod-group.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/mod/mod-group/mod-group.component.scss -------------------------------------------------------------------------------- /src/app/components/mod/mod-group/mod-group.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ModGroupComponent } from './mod-group.component'; 4 | 5 | describe('ModGroupComponent', () => { 6 | let component: ModGroupComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ModGroupComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ModGroupComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/mod/mod-sequence/mod-sequence.component.scss: -------------------------------------------------------------------------------- 1 | .mod-varSeq, .mod-layer, .mod-seq { 2 | display: inline-block; 3 | margin-right: 0.3em; 4 | } 5 | 6 | .mod-layer { 7 | font-weight: initial; 8 | font-family: system-ui; 9 | font-size: 92%; 10 | } 11 | -------------------------------------------------------------------------------- /src/app/components/mod/mod-sequence/mod-sequence.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ModSequenceComponent } from './mod-sequence.component'; 4 | 5 | describe('ModSequenceComponent', () => { 6 | let component: ModSequenceComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ ModSequenceComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ModSequenceComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/mod/mod.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/scss/colors'; 2 | 3 | $modHoverBackground: get-color(highlightColor); 4 | 5 | .mod { 6 | &:hover { 7 | background: $modHoverBackground; 8 | } 9 | } 10 | ::ng-deep .mod { 11 | &:hover .line-gap { 12 | background: $modHoverBackground; 13 | } 14 | } -------------------------------------------------------------------------------- /src/app/components/mod/mod.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ModComponent } from './mod.component'; 4 | 5 | describe('ModComponent', () => { 6 | let component: ModComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ModComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ModComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/ms-contents/ms-contents.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MsContentsComponent } from './ms-contents.component'; 4 | 5 | describe('MsContentsComponent', () => { 6 | let component: MsContentsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ MsContentsComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(MsContentsComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/ms-contents/ms-contents.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { MsContents } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-ms-contents', 7 | templateUrl: './ms-contents.component.html', 8 | styleUrls: ['./ms-contents.component.scss'], 9 | }) 10 | 11 | @register(MsContents) 12 | export class MsContentsComponent { 13 | @Input() data: MsContents; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/ms-desc-selector/ms-desc-selector.component.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /src/app/components/ms-desc-selector/ms-desc-selector.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/ms-desc-selector/ms-desc-selector.component.scss -------------------------------------------------------------------------------- /src/app/components/ms-desc/ms-desc.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MsDescComponent } from './ms-desc.component'; 4 | 5 | describe('MsDescComponent', () => { 6 | let component: MsDescComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ MsDescComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(MsDescComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/ms-desc/ms-desc.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { MsDesc } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-ms-desc', 7 | templateUrl: './ms-desc.component.html', 8 | styleUrls: ['./ms-desc.component.scss'], 9 | }) 10 | 11 | @register(MsDesc) 12 | export class MsDescComponent { 13 | @Input() data: MsDesc; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/ms-frag/ms-frag.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MsFragComponent } from './ms-frag.component'; 4 | 5 | describe('MsFragComponent', () => { 6 | let component: MsFragComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ MsFragComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(MsFragComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/ms-frag/ms-frag.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { MsFrag } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-ms-frag', 7 | templateUrl: './ms-frag.component.html', 8 | styleUrls: ['./ms-frag.component.scss'], 9 | }) 10 | 11 | @register(MsFrag) 12 | export class MsFragComponent { 13 | @Input() data: MsFrag; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/ms-identifier/ms-identifier.component.scss: -------------------------------------------------------------------------------- 1 | .msIdentifier { 2 | margin-bottom: 2rem; 3 | } 4 | 5 | .projectInfo-block { 6 | display: block; 7 | } 8 | 9 | .flex-container { 10 | display: flex; 11 | flex-direction: row; 12 | flex-wrap: wrap; 13 | } 14 | 15 | .flex-item-label { 16 | flex-basis: 100%; 17 | } 18 | 19 | .flex-item-information { 20 | flex-basis: 100%; 21 | margin-bottom: 0.7rem; 22 | } 23 | 24 | @media (min-width: 1326px) { 25 | .flex-item-label { 26 | flex-basis: 20%; 27 | } 28 | 29 | .flex-item-information { 30 | flex-basis: 80%; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/app/components/ms-identifier/ms-identifier.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MsIdentifierComponent } from './ms-identifier.component'; 4 | 5 | describe('MsIdentifierComponent', () => { 6 | let component: MsIdentifierComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ MsIdentifierComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(MsIdentifierComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/ms-identifier/ms-identifier.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { MsIdentifier } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-ms-identifier', 7 | templateUrl: './ms-identifier.component.html', 8 | styleUrls: ['./ms-identifier.component.scss'], 9 | }) 10 | 11 | @register(MsIdentifier) 12 | export class MsIdentifierComponent { 13 | @Input() data: MsIdentifier; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/ms-item/ms-item.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MsItemComponent } from './ms-item.component'; 4 | 5 | describe('MsItemComponent', () => { 6 | let component: MsItemComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ MsItemComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(MsItemComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/ms-item/ms-item.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { MsItem } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-ms-item', 7 | templateUrl: './ms-item.component.html', 8 | styleUrls: ['./ms-item.component.scss'], 9 | }) 10 | 11 | @register(MsItem) 12 | export class MsItemComponent { 13 | @Input() data: MsItem; 14 | @Input() nested1: boolean; 15 | @Input() nested2: boolean; 16 | } 17 | -------------------------------------------------------------------------------- /src/app/components/ms-part/ms-part.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { MsPartComponent } from './ms-part.component'; 4 | 5 | describe('MsPartComponent', () => { 6 | let component: MsPartComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ MsPartComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(MsPartComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/ms-part/ms-part.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { MsPart } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-ms-part', 7 | templateUrl: './ms-part.component.html', 8 | styleUrls: ['./ms-part.component.scss'], 9 | }) 10 | 11 | @register(MsPart) 12 | export class MsPartComponent { 13 | @Input() data: MsPart; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/named-entities-list/named-entities-list.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/scss/mixins'; 2 | 3 | .card { 4 | height: 100%; 5 | } 6 | 7 | cdk-virtual-scroll-viewport { 8 | @include calc('height', '100%'); 9 | } -------------------------------------------------------------------------------- /src/app/components/named-entity/named-entity-detail/named-entity-detail.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | {{ data.label }}: 6 | 7 | 8 | 9 |
    10 |
  • 11 | {{ item.key }}: {{ item.value }} 12 |
  • 13 |
14 |
15 | 16 |
17 |
-------------------------------------------------------------------------------- /src/app/components/named-entity/named-entity-detail/named-entity-detail.component.scss: -------------------------------------------------------------------------------- 1 | .icon { 2 | margin-right: 5px; 3 | min-width: 15px; 4 | cursor: help; 5 | display: inline-block; 6 | } 7 | 8 | .label { 9 | font-variant: small-caps; 10 | text-transform: capitalize; 11 | font-size: 95%; 12 | } 13 | 14 | .attributes-list { 15 | list-style-type: circle; 16 | margin-bottom: .1rem; 17 | } -------------------------------------------------------------------------------- /src/app/components/named-entity/named-entity-occurrence/named-entity-occurrence.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/named-entity/named-entity-occurrence/named-entity-occurrence.component.scss -------------------------------------------------------------------------------- /src/app/components/named-entity/named-entity.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { NamedEntityComponent } from './named-entity.component'; 4 | 5 | describe('NamedEntityComponent', () => { 6 | let component: NamedEntityComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ NamedEntityComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(NamedEntityComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/namespace/namespace.component.html: -------------------------------------------------------------------------------- 1 |
2 |
{{data.name}}
3 |
    4 |
  • 5 | {{usage.gi}} 6 | 7 | ({{usage.occurs}} {{ usage.occurs === 1 ? 'occurence' : 'occurences' | translate }} 8 | {{ 'withId' | translate }} {{usage.withId}}) 9 | 10 |
    11 | 12 |
    13 |
  • 14 |
15 |
16 | -------------------------------------------------------------------------------- /src/app/components/namespace/namespace.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/namespace/namespace.component.scss -------------------------------------------------------------------------------- /src/app/components/namespace/namespace.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | import { NamespaceComponent } from './namespace.component'; 3 | 4 | describe('NamespaceComponent', () => { 5 | let component: NamespaceComponent; 6 | let fixture: ComponentFixture; 7 | 8 | beforeEach(async () => { 9 | await TestBed.configureTestingModule({ 10 | declarations: [ NamespaceComponent ], 11 | }) 12 | .compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(NamespaceComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/components/namespace/namespace.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { Namespace } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-namespace', 7 | templateUrl: './namespace.component.html', 8 | styleUrls: ['./namespace.component.scss'], 9 | }) 10 | @register(Namespace) 11 | export class NamespaceComponent { 12 | @Input() data: Namespace; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/note/note.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { NoteComponent } from './note.component'; 4 | 5 | describe('NoteComponent', () => { 6 | let component: NoteComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ NoteComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(NoteComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/notes-stmt/notes-stmt.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 | 6 |
7 |
8 | 9 |
10 |
11 |
-------------------------------------------------------------------------------- /src/app/components/notes-stmt/notes-stmt.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/scss/mixins'; 2 | 3 | .main-section-title { 4 | @include headerSectionTitle() 5 | } -------------------------------------------------------------------------------- /src/app/components/notes-stmt/notes-stmt.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NotesStmtComponent } from './notes-stmt.component'; 4 | 5 | describe('NotesStmtComponent', () => { 6 | let component: NotesStmtComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ NotesStmtComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(NotesStmtComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/notes-stmt/notes-stmt.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { NotesStmt } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-notes-stmt', 7 | templateUrl: './notes-stmt.component.html', 8 | styleUrls: ['./notes-stmt.component.scss'], 9 | }) 10 | @register(NotesStmt) 11 | export class NotesStmtComponent { 12 | @Input() data: NotesStmt; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/original-encoding-viewer/original-encoding-viewer.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | {{ 'notSupportedEncoding' | translate }} 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/app/components/original-encoding-viewer/original-encoding-viewer.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/original-encoding-viewer/original-encoding-viewer.component.scss -------------------------------------------------------------------------------- /src/app/components/original-encoding-viewer/original-encoding-viewer.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input, OnInit } from '@angular/core'; 2 | import { OriginalEncodingNodeType } from '../../models/evt-models'; 3 | 4 | @Component({ 5 | selector: 'evt-original-encoding-viewer', 6 | templateUrl: './original-encoding-viewer.component.html', 7 | styleUrls: ['./original-encoding-viewer.component.scss'], 8 | }) 9 | export class OriginalEncodingViewerComponent implements OnInit { 10 | @Input() originalEncoding: OriginalEncodingNodeType; 11 | 12 | encodingType: 'xml'; // TODO: expand when other encoding will be handled 13 | 14 | ngOnInit() { 15 | if (this.originalEncoding && this.originalEncoding.outerHTML) { 16 | this.encodingType = 'xml'; 17 | } 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/app/components/osd/osd.component.html: -------------------------------------------------------------------------------- 1 |
4 |
5 | -------------------------------------------------------------------------------- /src/app/components/osd/osd.component.scss: -------------------------------------------------------------------------------- 1 | .full-height { 2 | height: 100%; 3 | } 4 | 5 | ::ng-deep .openseadragon-canvas { 6 | background: #000 !important; 7 | } 8 | 9 | ::ng-deep .openseadragon-message { 10 | background: url("/assets/images/empty-image.jpg") no-repeat !important; 11 | background-size: 100% 100% !important; 12 | z-index: 999999; 13 | position: relative !important; 14 | 15 | * { 16 | display: none; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/app/components/osd/osd.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { OsdComponent } from './osd.component'; 4 | 5 | describe('OsdComponent', () => { 6 | let component: OsdComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ OsdComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(OsdComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/page-selector/page-selector.component.html: -------------------------------------------------------------------------------- 1 | 10 | 13 | 16 | {{ item.label | translate: {value: (pages$ | async).indexOf(item) + 1} }} 17 | 18 | -------------------------------------------------------------------------------- /src/app/components/page-selector/page-selector.component.scss: -------------------------------------------------------------------------------- 1 | .ng-select { 2 | min-width: 100px; 3 | } -------------------------------------------------------------------------------- /src/app/components/page-selector/page-selector.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { PageSelectorComponent } from './page-selector.component'; 4 | 5 | describe('PageSelectorComponent', () => { 6 | let component: PageSelectorComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [PageSelectorComponent], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PageSelectorComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/page/page.component.html: -------------------------------------------------------------------------------- 1 | 11 | 12 | 19 | 20 | -------------------------------------------------------------------------------- /src/app/components/page/page.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/page/page.component.scss -------------------------------------------------------------------------------- /src/app/components/page/page.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { PageComponent } from './page.component'; 4 | 5 | describe('PageComponent', () => { 6 | let component: PageComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PageComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PageComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/paragraph/paragraph.component.html: -------------------------------------------------------------------------------- 1 |

2 | {{data.n}} 3 | 4 | 6 | 7 |

-------------------------------------------------------------------------------- /src/app/components/paragraph/paragraph.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../assets/scss/themes"; 2 | 3 | .p-num { 4 | font-size: .8em; 5 | padding-right: .3rem; 6 | 7 | @include themify($themes) { 8 | color: themed('secondaryColorDark'); 9 | } 10 | 11 | &::after { 12 | content: '.'; 13 | } 14 | } -------------------------------------------------------------------------------- /src/app/components/paragraph/paragraph.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ParagraphComponent } from './paragraph.component'; 4 | 5 | describe('ParagraphComponent', () => { 6 | let component: ParagraphComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ParagraphComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ParagraphComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/paragraph/paragraph.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | import { Paragraph } from '../../models/evt-models'; 4 | import { register } from '../../services/component-register.service'; 5 | import { EditionlevelSusceptible, Highlightable, ShowDeletionsSusceptible, TextFlowSusceptible } from '../components-mixins'; 6 | 7 | export interface ParagraphComponent extends EditionlevelSusceptible, Highlightable, TextFlowSusceptible, ShowDeletionsSusceptible { } 8 | 9 | @Component({ 10 | selector: 'evt-paragraph', 11 | templateUrl: './paragraph.component.html', 12 | styleUrls: ['./paragraph.component.scss'], 13 | }) 14 | 15 | @register(Paragraph) 16 | export class ParagraphComponent { 17 | @Input() data: Paragraph; 18 | @Input() selectedLayer: string; 19 | } 20 | -------------------------------------------------------------------------------- /src/app/components/phys-desc/phys-desc.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { PhysDescComponent } from './phys-desc.component'; 4 | 5 | describe('PhysDescComponent', () => { 6 | let component: PhysDescComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ PhysDescComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PhysDescComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/phys-desc/phys-desc.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { PhysDesc } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-phys-desc', 7 | templateUrl: './phys-desc.component.html', 8 | styleUrls: ['./phys-desc.component.scss'], 9 | }) 10 | 11 | @register(PhysDesc) 12 | export class PhysDescComponent { 13 | @Input() data: PhysDesc; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/project-desc/project-desc.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /src/app/components/project-desc/project-desc.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/project-desc/project-desc.component.scss -------------------------------------------------------------------------------- /src/app/components/project-desc/project-desc.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | import { ProjectDescComponent } from './project-desc.component'; 3 | 4 | describe('ProjectDescComponent', () => { 5 | let component: ProjectDescComponent; 6 | let fixture: ComponentFixture; 7 | 8 | beforeEach(async () => { 9 | await TestBed.configureTestingModule({ 10 | declarations: [ ProjectDescComponent ], 11 | }) 12 | .compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(ProjectDescComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/components/project-desc/project-desc.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { ProjectDesc } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-project-desc', 7 | templateUrl: './project-desc.component.html', 8 | styleUrls: ['./project-desc.component.scss'], 9 | }) 10 | @register(ProjectDesc) 11 | export class ProjectDescComponent { 12 | @Input() data: ProjectDesc; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/project-info/project-info.component.scss: -------------------------------------------------------------------------------- 1 | .project-info-container { 2 | overflow: hidden; 3 | } 4 | 5 | .project-info-tabs, 6 | .project-info-content { 7 | overflow: auto; 8 | } 9 | 10 | .section-item { 11 | cursor: pointer; 12 | 13 | &:not(.active):hover { 14 | cursor: pointer; 15 | background: rgba(0, 0, 0, 0.1); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/project-info/project-info.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { ProjectInfoComponent } from './project-info.component'; 4 | 5 | describe('ProjectInfoComponent', () => { 6 | let component: ProjectInfoComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ ProjectInfoComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ProjectInfoComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/publication-stmt/publication-stmt.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../../assets/scss/mixins'; 2 | 3 | .main-section-title { 4 | @include headerSectionTitle() 5 | } -------------------------------------------------------------------------------- /src/app/components/publication-stmt/publication-stmt.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { PublicationStmt } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-publication-stmt', 7 | templateUrl: './publication-stmt.component.html', 8 | styleUrls: ['./publication-stmt.component.scss'], 9 | }) 10 | @register(PublicationStmt) 11 | export class PublicationStmtComponent { 12 | @Input() data: PublicationStmt; 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/quote-entry/quote-entry.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/quote-entry/quote-entry.component.scss -------------------------------------------------------------------------------- /src/app/components/quote-entry/quote-entry.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { QuoteEntryComponent } from './quote-entry.component'; 4 | 5 | describe('QuoteEntryComponent', () => { 6 | let component: QuoteEntryComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ QuoteEntryComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(QuoteEntryComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/reading/reading.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/components/reading/reading.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/reading/reading.component.scss -------------------------------------------------------------------------------- /src/app/components/reading/reading.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ReadingComponent } from './reading.component'; 4 | 5 | describe('ReadingComponent', () => { 6 | let component: ReadingComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ReadingComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ReadingComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/rendition/rendition.component.scss: -------------------------------------------------------------------------------- 1 | .rendition { 2 | margin-bottom: 10px; 3 | 4 | &-section { 5 | display: flex; 6 | align-items: flex-start; 7 | justify-content: flex-start; 8 | } 9 | 10 | label { 11 | margin-bottom: 0; 12 | margin-right: 5px; 13 | font-weight: bolder; 14 | font-variant: all-small-caps; 15 | } 16 | } 17 | 18 | ::ng-deep .rendition-content span * { 19 | font-family: monospace; 20 | font-size: 0.9em; 21 | font-weight: lighter; 22 | } 23 | -------------------------------------------------------------------------------- /src/app/components/rendition/rendition.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | import { RenditionComponent } from './rendition.component'; 3 | 4 | describe('RenditionComponent', () => { 5 | let component: RenditionComponent; 6 | let fixture: ComponentFixture; 7 | 8 | beforeEach(async () => { 9 | await TestBed.configureTestingModule({ 10 | declarations: [RenditionComponent], 11 | }) 12 | .compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(RenditionComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/components/resp-stmt/resp-stmt.component.scss: -------------------------------------------------------------------------------- 1 | .responsibility { 2 | font-weight: bold; 3 | &.has-link { 4 | cursor: pointer; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/app/components/resp-stmt/resp-stmt.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { RespStmtComponent } from './resp-stmt.component'; 4 | 5 | describe('RespStmtComponent', () => { 6 | let component: RespStmtComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ RespStmtComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(RespStmtComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/resp-stmt/resp-stmt.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { Resp, RespStmt } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-resp-stmt', 7 | templateUrl: './resp-stmt.component.html', 8 | styleUrls: ['./resp-stmt.component.scss'], 9 | }) 10 | @register(RespStmt) 11 | export class RespStmtComponent { 12 | @Input() data: RespStmt; 13 | 14 | openNormalizedResp(resp: Resp) { 15 | if (resp.normalizedResp) { 16 | window.open(resp.normalizedResp, '_blank'); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/app/components/sampling-decl/sampling-decl.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /src/app/components/sampling-decl/sampling-decl.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/sampling-decl/sampling-decl.component.scss -------------------------------------------------------------------------------- /src/app/components/sampling-decl/sampling-decl.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | import { SamplingDeclComponent } from './sampling-decl.component'; 3 | 4 | describe('SamplingDeclComponent', () => { 5 | let component: SamplingDeclComponent; 6 | let fixture: ComponentFixture; 7 | 8 | beforeEach(async () => { 9 | await TestBed.configureTestingModule({ 10 | declarations: [ SamplingDeclComponent ], 11 | }) 12 | .compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(SamplingDeclComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/components/sampling-decl/sampling-decl.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { SamplingDecl } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-sampling-decl', 7 | templateUrl: './sampling-decl.component.html', 8 | styleUrls: ['./sampling-decl.component.scss'], 9 | }) 10 | @register(SamplingDecl) 11 | export class SamplingDeclComponent { 12 | @Input() data: SamplingDecl; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/series-stmt/series-stmt.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../assets/scss/mixins"; 2 | 3 | .main-section-title { 4 | @include headerSectionTitle(); 5 | } 6 | 7 | .seriesStatement { 8 | ::ng-deep { 9 | .resp-stmt { 10 | display: inline-block; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/series-stmt/series-stmt.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SeriesStmtComponent } from './series-stmt.component'; 4 | 5 | describe('SeriesStmtComponent', () => { 6 | let component: SeriesStmtComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ SeriesStmtComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SeriesStmtComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/series-stmt/series-stmt.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { SeriesStmt } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-series-stmt', 7 | templateUrl: './series-stmt.component.html', 8 | styleUrls: ['./series-stmt.component.scss'], 9 | }) 10 | @register(SeriesStmt) 11 | export class SeriesStmtComponent { 12 | @Input() data: SeriesStmt; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/sic/sic.component.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /src/app/components/sic/sic.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/sic/sic.component.scss -------------------------------------------------------------------------------- /src/app/components/sic/sic.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { SicComponent } from './sic.component'; 4 | 5 | describe('SicComponent', () => { 6 | let component: SicComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SicComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SicComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/sources/source-detail/source-detail.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SourceDetailComponent } from './source-detail.component'; 4 | 5 | describe('SourceDetailComponent', () => { 6 | let component: SourceDetailComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ SourceDetailComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SourceDetailComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/sources/source-note/source-note.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/components/sources/source-note/source-note.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SourceNoteComponent } from './source-note.component'; 4 | 5 | describe('SourceNoteComponent', () => { 6 | let component: SourceNoteComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ SourceNoteComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SourceNoteComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/sources/sources.component.html: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/app/components/sources/sources.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { SourcesComponent } from './sources.component'; 4 | 5 | describe('SourcesComponent', () => { 6 | let component: SourcesComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ SourcesComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SourcesComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/space/space.component.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |   8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /src/app/components/space/space.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/space/space.component.scss -------------------------------------------------------------------------------- /src/app/components/space/space.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { SpaceComponent } from './space.component'; 4 | 5 | describe('AdditionComponent', () => { 6 | let component: SpaceComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SpaceComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SpaceComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/substitution/substitution.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/substitution/substitution.component.scss -------------------------------------------------------------------------------- /src/app/components/substitution/substitution.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { SubstitutionComponent } from './substitution.component'; 4 | 5 | describe('SubstitutionComponent', () => { 6 | let component: SubstitutionComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SubstitutionComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SubstitutionComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/supplied/supplied.component.html: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /src/app/components/supplied/supplied.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/supplied/supplied.component.scss -------------------------------------------------------------------------------- /src/app/components/supplied/supplied.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { SuppliedComponent } from './supplied.component'; 4 | 5 | describe('SuppliedComponent', () => { 6 | let component: SuppliedComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SuppliedComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SuppliedComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/supplied/supplied.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { Supplied } from 'src/app/models/evt-models'; 3 | import { register } from 'src/app/services/component-register.service'; 4 | import { EditionlevelSusceptible, Highlightable } from '../components-mixins'; 5 | 6 | export interface SuppliedComponent extends EditionlevelSusceptible, Highlightable { } 7 | 8 | @Component({ 9 | selector: 'evt-supplied', 10 | templateUrl: './supplied.component.html', 11 | styleUrls: ['./supplied.component.scss'], 12 | }) 13 | @register(Supplied) 14 | export class SuppliedComponent { 15 | @Input() data: Supplied; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/app/components/surplus/surplus.component.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /src/app/components/surplus/surplus.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/surplus/surplus.component.scss -------------------------------------------------------------------------------- /src/app/components/surplus/surplus.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { SurplusComponent } from './surplus.component'; 4 | 5 | describe('SurplusComponent', () => { 6 | let component: SurplusComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SurplusComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SurplusComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/tags-decl/tags-decl.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /src/app/components/tags-decl/tags-decl.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/tags-decl/tags-decl.component.scss -------------------------------------------------------------------------------- /src/app/components/tags-decl/tags-decl.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | import { TagsDeclComponent } from './tags-decl.component'; 3 | 4 | describe('TagsDeclComponent', () => { 5 | let component: TagsDeclComponent; 6 | let fixture: ComponentFixture; 7 | 8 | beforeEach(async () => { 9 | await TestBed.configureTestingModule({ 10 | declarations: [ TagsDeclComponent ], 11 | }) 12 | .compileComponents(); 13 | }); 14 | 15 | beforeEach(() => { 16 | fixture = TestBed.createComponent(TagsDeclComponent); 17 | component = fixture.componentInstance; 18 | fixture.detectChanges(); 19 | }); 20 | 21 | it('should create', () => { 22 | expect(component).toBeTruthy(); 23 | }); 24 | }); 25 | -------------------------------------------------------------------------------- /src/app/components/tags-decl/tags-decl.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { TagsDecl } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-tags-decl', 7 | templateUrl: './tags-decl.component.html', 8 | styleUrls: ['./tags-decl.component.scss'], 9 | }) 10 | @register(TagsDecl) 11 | export class TagsDeclComponent { 12 | @Input() data: TagsDecl; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/text/text.component.html: -------------------------------------------------------------------------------- 1 | {{ data.text }} -------------------------------------------------------------------------------- /src/app/components/text/text.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/text/text.component.scss -------------------------------------------------------------------------------- /src/app/components/text/text.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { TextComponent } from './text.component'; 4 | 5 | describe('TextComponent', () => { 6 | let component: TextComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ TextComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(TextComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/text/text.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | import { Text } from '../../models/evt-models'; 3 | import { register } from '../../services/component-register.service'; 4 | 5 | @Component({ 6 | selector: 'evt-text', 7 | templateUrl: './text.component.html', 8 | styleUrls: ['./text.component.scss'], 9 | }) 10 | @register(Text) 11 | export class TextComponent { 12 | @Input() data: Text; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/components/title-stmt/title-stmt.component.scss: -------------------------------------------------------------------------------- 1 | .main-title, 2 | .sub-title, 3 | .author { 4 | display: block; 5 | text-align: center; 6 | margin-bottom: 10px; 7 | } 8 | .main-title { 9 | font-weight: 700; 10 | font-size: 1.5em; 11 | } 12 | 13 | .sub-title { 14 | font-weight: 700; 15 | font-size: 1.2em; 16 | } 17 | 18 | .author { 19 | font-size: 1em; 20 | font-style: italic; 21 | } 22 | -------------------------------------------------------------------------------- /src/app/components/title-stmt/title-stmt.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { TitleStmtComponent } from './title-stmt.component'; 4 | 5 | describe('TitleStmtComponent', () => { 6 | let component: TitleStmtComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [ TitleStmtComponent ], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(TitleStmtComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/title-stmt/title-stmt.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | import { TitleStmt } from '../../models/evt-models'; 4 | import { register } from '../../services/component-register.service'; 5 | 6 | @Component({ 7 | selector: 'evt-title-stmt', 8 | templateUrl: './title-stmt.component.html', 9 | styleUrls: ['./title-stmt.component.scss'], 10 | }) 11 | @register(TitleStmt) 12 | export class TitleStmtComponent { 13 | @Input() data: TitleStmt; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/components/verse-prose-select/verse-prose-select.component.scss: -------------------------------------------------------------------------------- 1 | ng-select { 2 | width: 13.5rem; 3 | margin-left: 0.3rem; 4 | } 5 | 6 | // ng-select overrides 7 | ::ng-deep .ng-select { 8 | min-width: 150px; 9 | } 10 | 11 | ::ng-deep .ng-dropdown-panel { 12 | .ng-dropdown-panel-items { 13 | .ng-optgroup { 14 | font-size: 90%; 15 | font-variant: small-caps; 16 | } 17 | 18 | .ng-option { 19 | padding-left: 10px !important; 20 | } 21 | } 22 | } 23 | 24 | .entities-select-toolbar { 25 | display: flex; 26 | 27 | .btn { 28 | flex-grow: 1; 29 | } 30 | } 31 | 32 | .select-all-btn { 33 | cursor: pointer; 34 | } -------------------------------------------------------------------------------- /src/app/components/verse/verse.component.html: -------------------------------------------------------------------------------- 1 | 3 | {{data.n}} 4 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /src/app/components/verse/verse.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { VerseComponent } from './verse.component'; 4 | 5 | describe('VerseComponent', () => { 6 | let component: VerseComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ VerseComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(VerseComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/verses-group/verses-group.component.html: -------------------------------------------------------------------------------- 1 | 3 | {{data.n}} 4 | 5 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/app/components/verses-group/verses-group.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { VersesGroupComponent } from './verses-group.component'; 4 | 5 | describe('VersesGroupComponent', () => { 6 | let component: VersesGroupComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ VersesGroupComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(VersesGroupComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/components/word/word.component.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /src/app/components/word/word.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/components/word/word.component.scss -------------------------------------------------------------------------------- /src/app/components/word/word.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { WordComponent } from './word.component'; 4 | 5 | describe('WordComponent', () => { 6 | let component: WordComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ WordComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(WordComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/directives/annotator.directive.ts: -------------------------------------------------------------------------------- 1 | import { HostListener } from '@angular/core'; 2 | import { Directive } from '@angular/core'; 3 | import { AnnotatorService } from '../services/annotator/annotator.service'; 4 | 5 | @Directive({ 6 | selector: '[evtAnnotator]', 7 | }) 8 | export class AnnotatorDirective { 9 | 10 | constructor( 11 | public annotator: AnnotatorService, 12 | ) { } 13 | 14 | @HostListener('mouseup') 15 | onMouseup() { 16 | this.annotator.selectedText(); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/app/directives/handle-img-error.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, ElementRef, Input } from '@angular/core'; 2 | 3 | @Directive({ 4 | selector: 'img' // eslint-disable-line 5 | }) 6 | export class HandleImgErrorDirective { 7 | @Input() placeholder: string | undefined; 8 | 9 | placeholderSet = false; 10 | 11 | constructor( 12 | private elRef: ElementRef, 13 | ) { 14 | this.elRef.nativeElement.addEventListener('error', (e: ErrorEvent) => { 15 | if (this.placeholder) { 16 | if (!this.placeholderSet) { 17 | const imgEl = e.target as HTMLImageElement; 18 | imgEl.src = this.placeholder; 19 | } 20 | this.placeholderSet = true; 21 | } 22 | }); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/app/directives/highlight.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, ElementRef, Input } from '@angular/core'; 2 | import { HighlightData } from '../models/evt-models'; 3 | 4 | @Directive({ 5 | selector: '[evtHighlight]', 6 | }) 7 | export class HighlightDirective { 8 | @Input('evtHighlight') set highlightData(hd: HighlightData) { 9 | this.highlight(hd); 10 | } 11 | 12 | constructor( 13 | private el: ElementRef, 14 | ) { 15 | } 16 | 17 | private highlight(highlightData: HighlightData) { 18 | if (highlightData.highlight) { 19 | this.el.nativeElement.classList.add('highlight'); 20 | } else { 21 | this.el.nativeElement.classList.remove('highlight'); 22 | } 23 | this.el.nativeElement.style.backgroundColor = highlightData && highlightData.highlight ? highlightData.highlightColor : ''; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/app/directives/html-attributes.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, ElementRef, Input, OnInit, Renderer2 } from '@angular/core'; 2 | import { Attributes } from '../models/evt-models'; 3 | 4 | @Directive({ 5 | selector: '[evtHtmlAttributes]', 6 | }) 7 | export class HtmlAttributesDirective implements OnInit { 8 | @Input('evtHtmlAttributes') attributes: Attributes; 9 | 10 | constructor( 11 | private el: ElementRef, 12 | private renderer: Renderer2, 13 | ) { 14 | } 15 | 16 | ngOnInit() { 17 | Object.keys(this.attributes).forEach((key) => { 18 | this.renderer.setAttribute(this.el.nativeElement, `data-${key}`, this.attributes[key]); 19 | }); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/app/evt-info/evt-info.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/evt-info/evt-info.component.scss -------------------------------------------------------------------------------- /src/app/evt-info/evt-info.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { EvtInfoComponent } from './evt-info.component'; 4 | 5 | describe('EvtInfoComponent', () => { 6 | let component: EvtInfoComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ EvtInfoComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(EvtInfoComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/evt-info/evt-info.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'evt-evt-info', 5 | templateUrl: './evt-info.component.html', 6 | styleUrls: ['./evt-info.component.scss'], 7 | }) 8 | export class EvtInfoComponent { 9 | } 10 | -------------------------------------------------------------------------------- /src/app/main-header/main-header.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { MainHeaderComponent } from './main-header.component'; 4 | 5 | describe('MainHeaderComponent', () => { 6 | let component: MainHeaderComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ MainHeaderComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(MainHeaderComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/main-menu/main-menu.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { MainMenuComponent } from './main-menu.component'; 4 | 5 | describe('MainMenuComponent', () => { 6 | let component: MainMenuComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ MainMenuComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(MainMenuComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/nav-bar/nav-bar.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { NavBarComponent } from './nav-bar.component'; 4 | 5 | describe('NavBarComponent', () => { 6 | let component: NavBarComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [NavBarComponent], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(NavBarComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/panels/image-panel/image-panel.component.scss: -------------------------------------------------------------------------------- 1 | .full-height { 2 | height: 100%; 3 | } -------------------------------------------------------------------------------- /src/app/panels/image-panel/image-panel.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ImagePanelComponent } from './image-panel.component'; 4 | 5 | describe('ImagePanelComponent', () => { 6 | let component: ImagePanelComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ImagePanelComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ImagePanelComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/panels/imagegrp-panel/imagegrp-panel.component.scss: -------------------------------------------------------------------------------- 1 | .full-height { 2 | height: 100%; 3 | } -------------------------------------------------------------------------------- /src/app/panels/pinboard-panel/pinboard-panel.component.scss: -------------------------------------------------------------------------------- 1 | .pin-types-selector { 2 | .ng-fa-layers-counter { 3 | font-size: 2rem !important; 4 | top: -7px; 5 | position: relative; 6 | left: 1.5rem; 7 | } 8 | } -------------------------------------------------------------------------------- /src/app/panels/sources-panel/sources-panel.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
5 |
6 | Source Text: 7 |
8 | Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Etiam habebis sem dicantur magna mollis euismod. Plura mihi bona sunt, inclinet, amari petere vellent. 9 |
10 |
11 |
-------------------------------------------------------------------------------- /src/app/panels/sources-panel/sources-panel.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/panels/sources-panel/sources-panel.component.scss -------------------------------------------------------------------------------- /src/app/panels/sources-panel/sources-panel.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { SourcesPanelComponent } from './sources-panel.component'; 4 | 5 | describe('SourcesPanelComponent', () => { 6 | let component: SourcesPanelComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ SourcesPanelComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(SourcesPanelComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/panels/sources-panel/sources-panel.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'evt-sources-panel', 5 | templateUrl: './sources-panel.component.html', 6 | styleUrls: ['./sources-panel.component.scss'], 7 | }) 8 | export class SourcesPanelComponent { 9 | } 10 | -------------------------------------------------------------------------------- /src/app/panels/text-panel/text-panel.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/panels/text-panel/text-panel.component.scss -------------------------------------------------------------------------------- /src/app/panels/text-panel/text-panel.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { TextPanelComponent } from './text-panel.component'; 4 | 5 | describe('TextPanelComponent', () => { 6 | let component: TextPanelComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ TextPanelComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(TextPanelComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/panels/version-panel/version-panel.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | Version {{ version }} 5 |
6 |
7 |

Text of version

8 |

9 | Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Inmensae subtilitatis, obscuris et malesuada fames. Ambitioni dedisse scripsisse iudicaretur. At nos hinc posthac, sitientis piros Afros. 10 |

11 |
12 |
-------------------------------------------------------------------------------- /src/app/panels/version-panel/version-panel.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/panels/version-panel/version-panel.component.scss -------------------------------------------------------------------------------- /src/app/panels/version-panel/version-panel.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { VersionPanelComponent } from './version-panel.component'; 4 | 5 | describe('VersionPanelComponent', () => { 6 | let component: VersionPanelComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ VersionPanelComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(VersionPanelComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/panels/version-panel/version-panel.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Input, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'evt-version-panel', 5 | templateUrl: './version-panel.component.html', 6 | styleUrls: ['./version-panel.component.scss'], 7 | }) 8 | export class VersionPanelComponent { 9 | @Input() version: string; 10 | @Output() hide = new EventEmitter(); 11 | 12 | emitHide() { 13 | this.hide.emit(true); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/app/panels/witness-panel/witness-panel.component.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | Witness {{ witness }} 5 |
6 |
7 |

Text of witness

8 |

9 | Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Inmensae subtilitatis, obscuris et malesuada fames. Ambitioni dedisse scripsisse iudicaretur. At nos hinc posthac, sitientis piros Afros. 10 |

11 |
12 |
-------------------------------------------------------------------------------- /src/app/panels/witness-panel/witness-panel.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/panels/witness-panel/witness-panel.component.scss -------------------------------------------------------------------------------- /src/app/panels/witness-panel/witness-panel.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { WitnessPanelComponent } from './witness-panel.component'; 4 | 5 | describe('WitnessPanelComponent', () => { 6 | let component: WitnessPanelComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ WitnessPanelComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(WitnessPanelComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/panels/witness-panel/witness-panel.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, EventEmitter, Input, Output } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'evt-witness-panel', 5 | templateUrl: './witness-panel.component.html', 6 | styleUrls: ['./witness-panel.component.scss'], 7 | }) 8 | export class WitnessPanelComponent { 9 | @Input() witness: string; 10 | @Output() hide = new EventEmitter(); 11 | 12 | emitHide() { 13 | this.hide.emit(true); 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/app/pinboard/pinboard.component.scss: -------------------------------------------------------------------------------- 1 | .pinnedItem { 2 | position: relative; 3 | margin-bottom: 0.5rem; 4 | border-bottom: 1px solid lightgray; 5 | padding-bottom: .5rem; 6 | 7 | &-header { 8 | min-height: 31px; 9 | 10 | .pin-type { 11 | font-variant: small-caps; 12 | } 13 | 14 | .pin-type, 15 | .pin-date { 16 | font-size: .7rem; 17 | color: grey; 18 | } 19 | 20 | .pin-remover { 21 | float: right; 22 | position: absolute; 23 | top: 0; 24 | right: 0; 25 | z-index: 99; 26 | 27 | &:hover { 28 | background: rgba(0, 0, 0, .1); 29 | } 30 | } 31 | } 32 | } 33 | 34 | :host ::ng-deep .pinnedItems-container { 35 | evt-pinner { 36 | display: none !important; 37 | } 38 | } -------------------------------------------------------------------------------- /src/app/pinboard/pinboard.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { PinboardComponent } from './pinboard.component'; 4 | 5 | describe('PinboardComponent', () => { 6 | let component: PinboardComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PinboardComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PinboardComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/pinboard/pinner/pinner.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/pinboard/pinner/pinner.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../assets/scss/themes"; 2 | @import "../../../assets/scss/mixins"; 3 | 4 | .evt-pinner { 5 | float: right; 6 | } 7 | ::ng-deep .evt-pinner { 8 | .btn { 9 | opacity: 0.4; 10 | &:hover { 11 | @include set("box-shadow", "none !important"); 12 | opacity: .9 !important; 13 | } 14 | &.active { 15 | opacity: 1; 16 | @include themify($themes) { 17 | color: themed("toolsColor") !important; 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/app/pinboard/pinner/pinner.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { PinnerComponent } from './pinner.component'; 4 | 5 | describe('PinnerComponent', () => { 6 | let component: PinnerComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PinnerComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PinnerComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/pipes/filter.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'filter', 5 | }) 6 | @Injectable() 7 | export class FilterPipe implements PipeTransform { 8 | transform(items: T[], field: string, value: string, caseSensitive: boolean): T[] { 9 | if (!items) { return []; } 10 | if (!value || value.length === 0) { return items; } 11 | try { 12 | const reg = new RegExp(value, `${caseSensitive ? '' : 'i'}g`); 13 | const results = items.filter((it) => it[field] && value && it[field].match(reg)); 14 | 15 | return results.length > 0 ? results : [undefined]; 16 | } catch (e) { 17 | return []; 18 | } 19 | 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/app/pipes/humanize.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ name: 'humanize' }) 4 | @Injectable() 5 | export class HumanizePipe implements PipeTransform { 6 | 7 | transform(value: string) { 8 | if (value === '') { 9 | return value; 10 | } 11 | 12 | value = value.replace(/([^A-Z])([A-Z])/g, '$1 $2').replace(/([A-Z])([A-Z][^A-Z])/g, '$1 $2'); 13 | 14 | return value; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/app/pipes/starts-with.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe, PipeTransform } from '@angular/core'; 2 | 3 | @Pipe({ 4 | name: 'startsWith', 5 | }) 6 | @Injectable() 7 | export class StartsWithPipe implements PipeTransform { 8 | transform(items: T[], field: string, value: string): T[] { 9 | if (!items) { return []; } 10 | if (!value || value.length === 0) { return items; } 11 | 12 | return items.filter((it) => it[field] && it[field].toLowerCase()[0] === value); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/app/pipes/xml-beautify.pipe.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Pipe, PipeTransform } from '@angular/core'; 2 | import * as vkbeautify from 'vkbeautify'; 3 | import { replaceMultispaces } from '../utils/xml-utils'; 4 | 5 | @Pipe({ 6 | name: 'xmlBeautify', 7 | }) 8 | @Injectable() 9 | export class XmlBeautifyPipe implements PipeTransform { 10 | 11 | transform(value: string) { 12 | return vkbeautify.xml(replaceMultispaces('\n' + value)); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/app/services/annotator/annotator.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Subject } from 'rxjs'; 3 | 4 | @Injectable({ 5 | providedIn: 'root', 6 | }) 7 | export class AnnotatorService { 8 | public textSelection$ = new Subject(); 9 | 10 | selectedText() { 11 | this.textSelection$.next(window.getSelection()); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/app/services/component-register.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Type } from '@angular/core'; 2 | import { Map } from '../utils/js-utils'; 3 | 4 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 5 | const COMPONENT_MAP: Map> = {}; 6 | 7 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 8 | export function register(dataType: Type) { 9 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 10 | return (cls: Type) => { 11 | COMPONENT_MAP[dataType.name] = cls; 12 | }; 13 | } 14 | 15 | @Injectable({ 16 | providedIn: 'root', 17 | }) 18 | export class ComponentRegisterService { 19 | 20 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 21 | getComponent(dataType: Type) { 22 | return COMPONENT_MAP[dataType.name]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/app/services/idb.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import Dexie from 'dexie'; 3 | 4 | interface AnnotationID { 5 | annotationId: number; 6 | } 7 | 8 | @Injectable({ 9 | providedIn: 'root', 10 | }) 11 | export class IdbService extends Dexie { 12 | public db: Dexie.Table; 13 | constructor() { 14 | super('EVT-Annotator'); 15 | this.version(1).stores({ 16 | Annotations: '++id', 17 | }); 18 | this.db = this.table('Annotations'); 19 | } 20 | 21 | getAll() { 22 | return this.db.toArray(); 23 | } 24 | 25 | add(data) { 26 | return this.db.add(data); 27 | } 28 | 29 | update(id, data) { 30 | return this.db.update(id, data); 31 | } 32 | 33 | remove(id) { 34 | return this.db.delete(id); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/app/services/xml-parsers/analogues-entries-parser.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { ParserRegister } from '.'; 3 | import { Analogue, AnalogueClass, XMLElement } from '../../models/evt-models'; 4 | 5 | @Injectable({ 6 | providedIn: 'root', 7 | }) 8 | export class AnalogueEntriesParserService { 9 | private className = `.${AnalogueClass}`; 10 | private parserName = 'evt-analogue-entry-parser'; 11 | 12 | public parseAnaloguesEntries(document: XMLElement) { 13 | const analogueParser = ParserRegister.get(this.parserName); 14 | 15 | return Array.from(document.querySelectorAll(this.className)) 16 | .map((analogue) => analogueParser.parse(analogue) as Analogue); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/app/services/xml-parsers/generic-parser.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { parse } from '.'; 3 | import { XMLElement } from '../../models/evt-models'; 4 | 5 | @Injectable() 6 | export class GenericParserService { 7 | parse(xml: XMLElement) { return parse(xml); } 8 | } 9 | -------------------------------------------------------------------------------- /src/app/services/xml-parsers/ms-desc-parser.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { parse } from '.'; 3 | import { MsDesc, XMLElement } from '../../models/evt-models'; 4 | import { MsDescParser } from './msdesc-parser'; 5 | import { createParser } from './parser-models'; 6 | 7 | @Injectable({ 8 | providedIn: 'root', 9 | }) 10 | export class MsDescParserService { 11 | private msDescParser = createParser(MsDescParser, parse); 12 | 13 | parseMsDesc(xml: XMLElement): MsDesc[] { 14 | 15 | return Array.from(xml.querySelectorAll('msDesc')).map((s) => this.msDescParser.parse(s)); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/app/services/xml-parsers/source-entries-parser.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { ParserRegister } from '.'; 3 | import { QuoteEntry, SourceClass, XMLElement } from '../../models/evt-models'; 4 | 5 | @Injectable({ 6 | providedIn: 'root', 7 | }) 8 | export class SourceEntriesParserService { 9 | public parseSourceEntries(document: XMLElement) { 10 | const quoteParser = ParserRegister.get('evt-quote-entry-parser'); 11 | 12 | return [ 13 | Array.from(document.querySelectorAll(`.${SourceClass}`)) 14 | .map((srcEntry) => quoteParser.parse(srcEntry) as QuoteEntry), 15 | ]; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/shortcuts/shortcuts.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | {{ shortcut.label | translate }} 5 |
6 |
7 | 8 | {{item.text}} 9 | 10 |
11 |
12 |
-------------------------------------------------------------------------------- /src/app/shortcuts/shortcuts.component.scss: -------------------------------------------------------------------------------- 1 | @import '../../assets/scss/mixins'; 2 | 3 | .shortcuts-instruction-item[type="key"] { 4 | background: transparent linear-gradient(to bottom, rgb(240, 240, 240), rgb(252, 252, 252)) repeat scroll 0% 0%; 5 | border-radius: 3px; 6 | color: rgb(48, 48, 48); 7 | border-width: 1px 1px 2px; 8 | border-style: solid; 9 | border-color: rgb(224, 224, 224); 10 | border-image: none; 11 | white-space: nowrap; 12 | font-variant: small-caps; 13 | font-family: monospace; 14 | padding: 0px 3px; 15 | } -------------------------------------------------------------------------------- /src/app/shortcuts/shortcuts.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ShortcutsComponent } from './shortcuts.component'; 4 | 5 | describe('ShortcutsComponent', () => { 6 | let component: ShortcutsComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ShortcutsComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ShortcutsComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/ui-components/button/button.component.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/app/ui-components/button/button.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ButtonComponent } from './button.component'; 4 | 5 | describe('ButtonComponent', () => { 6 | let component: ButtonComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ButtonComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ButtonComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/ui-components/directives/click-outside.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, ElementRef, EventEmitter, HostListener, Output } from '@angular/core'; 2 | 3 | @Directive({ 4 | // eslint-disable-next-line @angular-eslint/directive-selector 5 | selector: '[clickOutside]', 6 | }) 7 | export class ClickOutsideDirective { 8 | 9 | @Output() clickOutside = new EventEmitter(); 10 | 11 | constructor(private elementRef: ElementRef) { } 12 | 13 | @HostListener('document:click', ['$event.target']) 14 | public onClick(target) { 15 | const clickedInside = this.elementRef.nativeElement.contains(target); 16 | if (!clickedInside) { 17 | this.clickOutside.emit(); 18 | } 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/app/ui-components/directives/escape.directive.ts: -------------------------------------------------------------------------------- 1 | import { Directive, EventEmitter, HostListener, Output } from '@angular/core'; 2 | import { getEventKeyCode } from '../../utils/js-utils'; 3 | 4 | @Directive({ 5 | // eslint-disable-next-line @angular-eslint/directive-selector 6 | selector: '[escape]', 7 | }) 8 | export class EscapeDirective { 9 | @Output() escape = new EventEmitter(); 10 | 11 | @HostListener('window:keyup', ['$event']) 12 | keyEvent(e: KeyboardEvent) { 13 | if (e.code === 'Escape' || e.key === 'Escape' || getEventKeyCode(e) === 27) { 14 | this.escape.emit(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/app/ui-components/header-section/header-section.component.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | 5 |
6 |
-------------------------------------------------------------------------------- /src/app/ui-components/header-section/header-section.component.scss: -------------------------------------------------------------------------------- 1 | .section { 2 | display: block; 3 | > .section-label { 4 | display: inline; 5 | font-variant: small-caps; 6 | color: #666; 7 | } 8 | &.has-inline-label { 9 | display: flex; 10 | > .section-label { 11 | margin-right: 5px; 12 | } 13 | > .section-content { 14 | display: inline; 15 | } 16 | } 17 | &:not(.has-inline-label) { 18 | > .section-label { 19 | font-size: 0.9rem; 20 | border-bottom: 1px dotted #666; 21 | margin-bottom: 5px; 22 | display: block; 23 | margin-top: 14px; 24 | } 25 | } 26 | ::ng-deep p { 27 | margin-bottom: 0; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/app/ui-components/header-section/header-section.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed } from '@angular/core/testing'; 2 | 3 | import { HeaderSectionComponent } from './header-section.component'; 4 | 5 | describe('HeaderSectionComponent', () => { 6 | let component: HeaderSectionComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(async () => { 10 | await TestBed.configureTestingModule({ 11 | declarations: [HeaderSectionComponent], 12 | }) 13 | .compileComponents(); 14 | }); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(HeaderSectionComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/ui-components/header-section/header-section.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'evt-header-section', 5 | templateUrl: './header-section.component.html', 6 | styleUrls: ['./header-section.component.scss'], 7 | }) 8 | export class HeaderSectionComponent { 9 | @Input() label: string; 10 | @Input() additionalClass: string; 11 | @Input() inlineLabel: boolean; 12 | } 13 | -------------------------------------------------------------------------------- /src/app/ui-components/icon/icon.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { IconComponent } from './icon.component'; 4 | 5 | describe('IconComponent', () => { 6 | let component: IconComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ IconComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(IconComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/ui-components/modal/modal.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ModalComponent } from './modal.component'; 4 | 5 | describe('ModalComponent', () => { 6 | let component: ModalComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ModalComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ModalComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/ui-components/ms-desc-section/ms-desc-section.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, Input } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'evt-ms-desc-section', 5 | templateUrl: './ms-desc-section.component.html', 6 | styleUrls: ['./ms-desc-section.component.scss'], 7 | }) 8 | export class MsDescSectionComponent { 9 | @Input() label: string; 10 | @Input() additionalClass: string; 11 | @Input() inlineLabel: boolean; 12 | @Input() nestedElement: boolean; 13 | @Input() underline: boolean; 14 | } 15 | -------------------------------------------------------------------------------- /src/app/ui-components/panel/panel.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { PanelComponent } from './panel.component'; 4 | 5 | describe('PanelComponent', () => { 6 | let component: PanelComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ PanelComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(PanelComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/view-modes/collation/collation.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../assets/scss/variables"; 2 | @import "../../../assets/scss/mixins"; 3 | 4 | .row { 5 | height: 100%; 6 | } 7 | 8 | .collationPanel { 9 | height: 100%; 10 | &.empty { 11 | display: flex; 12 | 13 | .btn { 14 | margin: auto; 15 | } 16 | } 17 | } 18 | 19 | .btn-float-right { 20 | position: absolute; 21 | right: -.3rem; 22 | transform: translate(0,-50%); 23 | top: 50%; 24 | z-index: 99999; 25 | opacity: .5; 26 | &:hover { 27 | opacity: 1; 28 | } 29 | } -------------------------------------------------------------------------------- /src/app/view-modes/collation/collation.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { CollationComponent } from './collation.component'; 4 | 5 | describe('CollationComponent', () => { 6 | let component: CollationComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ CollationComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(CollationComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/view-modes/documental-mixed/documental-mixed.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/view-modes/documental-mixed/documental-mixed.component.scss -------------------------------------------------------------------------------- /src/app/view-modes/image-only/image-only.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | -------------------------------------------------------------------------------- /src/app/view-modes/image-only/image-only.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/view-modes/image-only/image-only.component.scss -------------------------------------------------------------------------------- /src/app/view-modes/image-only/image-only.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ImageTextComponent } from './image-text.component'; 4 | 5 | describe('ImageTextComponent', () => { 6 | let component: ImageTextComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ImageTextComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ImageTextComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/view-modes/image-text/image-text.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 17 | 18 | -------------------------------------------------------------------------------- /src/app/view-modes/image-text/image-text.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/view-modes/image-text/image-text.component.scss -------------------------------------------------------------------------------- /src/app/view-modes/image-text/image-text.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ImageTextComponent } from './image-text.component'; 4 | 5 | describe('ImageTextComponent', () => { 6 | let component: ImageTextComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ImageTextComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ImageTextComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/view-modes/reading-text/reading-text.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { ReadingTextComponent } from './reading-text.component'; 4 | 5 | describe('ReadingTextComponent', () => { 6 | let component: ReadingTextComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ ReadingTextComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(ReadingTextComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/view-modes/text-sources/text-sources.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/app/view-modes/text-sources/text-sources.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/view-modes/text-sources/text-sources.component.scss -------------------------------------------------------------------------------- /src/app/view-modes/text-sources/text-sources.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { TextSourcesComponent } from './text-sources.component'; 4 | 5 | describe('TextSourcesComponent', () => { 6 | let component: TextSourcesComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ TextSourcesComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(TextSourcesComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/view-modes/text-text/text-text.component.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/app/view-modes/text-text/text-text.component.scss -------------------------------------------------------------------------------- /src/app/view-modes/text-text/text-text.component.spec.ts: -------------------------------------------------------------------------------- 1 | import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; 2 | 3 | import { TextTextComponent } from './text-text.component'; 4 | 5 | describe('TextTextComponent', () => { 6 | let component: TextTextComponent; 7 | let fixture: ComponentFixture; 8 | 9 | beforeEach(waitForAsync(() => { 10 | TestBed.configureTestingModule({ 11 | declarations: [ TextTextComponent ], 12 | }) 13 | .compileComponents(); 14 | })); 15 | 16 | beforeEach(() => { 17 | fixture = TestBed.createComponent(TextTextComponent); 18 | component = fixture.componentInstance; 19 | fixture.detectChanges(); 20 | }); 21 | 22 | it('should create', () => { 23 | expect(component).toBeTruthy(); 24 | }); 25 | }); 26 | -------------------------------------------------------------------------------- /src/app/view-modes/text-versions/text-versions.component.scss: -------------------------------------------------------------------------------- 1 | @import "../../../assets/scss/variables"; 2 | @import "../../../assets/scss/mixins"; 3 | 4 | .row { 5 | height: 100%; 6 | } 7 | 8 | .versionsPanel { 9 | height: 100%; 10 | &.empty { 11 | display: flex; 12 | 13 | .btn { 14 | margin: auto; 15 | } 16 | } 17 | } 18 | 19 | .btn-float-right { 20 | position: absolute; 21 | right: -.3rem; 22 | transform: translate(0,-50%); 23 | top: 50%; 24 | z-index: 99999; 25 | opacity: .5; 26 | &:hover { 27 | opacity: 1; 28 | } 29 | } 30 | 31 | :host ::ng-deep .versionsPanel gridster-item { 32 | height: 100% !important; 33 | } 34 | -------------------------------------------------------------------------------- /src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/.gitkeep -------------------------------------------------------------------------------- /src/assets/config/editorial_conventions_config.json: -------------------------------------------------------------------------------- 1 | { 2 | } -------------------------------------------------------------------------------- /src/assets/config/file_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "editionUrls": [ 3 | "assets/data/pelavicino.xml" 4 | ], 5 | "editionImagesSource": { 6 | "manifest": { 7 | "value": "https://www.e-codices.unifr.ch/metadata/iiif/csg-0730/manifest.json", 8 | "enable": false 9 | }, 10 | "graphics": { 11 | "value": "url", 12 | "enable": false 13 | } 14 | }, 15 | "imagesFolderUrls": { 16 | "single": "assets/data/images/single/", 17 | "double": "assets/data/images/double/" 18 | }, 19 | "configurationUrls": { 20 | "edition": "assets/config/edition_config_Pelavicino.json", 21 | "ui": "assets/config/ui_config_Pelavicino.json", 22 | "editorialConventions": "assets/config/editorial_conventions_config.json" 23 | } 24 | } -------------------------------------------------------------------------------- /src/assets/config/file_config_DOTR.json: -------------------------------------------------------------------------------- 1 | { 2 | "editionUrls": [ 3 | "assets/data/VB-DOTR.xml" 4 | ], 5 | "editionImagesSource": { 6 | "manifest": { 7 | "value": "https://www.e-codices.unifr.ch/metadata/iiif/csg-0730/manifest.json", 8 | "enable": false 9 | }, 10 | "graphics": { 11 | "value": "url", 12 | "enable": false 13 | } 14 | }, 15 | "imagesFolderUrls": { 16 | "single": "assets/data/images/single/", 17 | "double": "assets/data/images/double/" 18 | }, 19 | "configurationUrls": { 20 | "edition": "assets/config/edition_config_DOTR.json", 21 | "ui": "assets/config/ui_config_DOTR.json", 22 | "editorialConventions": "assets/config/editorial_conventions_config.json" 23 | } 24 | } -------------------------------------------------------------------------------- /src/assets/config/file_config_Pelavicino.json: -------------------------------------------------------------------------------- 1 | { 2 | "editionUrls": [ 3 | "assets/data/pelavicino.xml" 4 | ], 5 | "editionImagesSource": { 6 | "manifest": { 7 | "value": "https://www.e-codices.unifr.ch/metadata/iiif/csg-0730/manifest.json", 8 | "enable": false 9 | }, 10 | "graphics": { 11 | "value": "url", 12 | "enable": false 13 | } 14 | }, 15 | "imagesFolderUrls": { 16 | "single": "assets/data/images/single/", 17 | "double": "assets/data/images/double/" 18 | }, 19 | "configurationUrls": { 20 | "edition": "assets/config/edition_config_Pelavicino.json", 21 | "ui": "assets/config/ui_config_Pelavicino.json", 22 | "editorialConventions": "assets/config/editorial_conventions_config.json" 23 | } 24 | } -------------------------------------------------------------------------------- /src/assets/config/file_config_PseudoEdition.json: -------------------------------------------------------------------------------- 1 | { 2 | "editionUrls": [ 3 | "assets/data/pseudoEdition.xml" 4 | ], 5 | "editionImagesSource": { 6 | "manifest": { 7 | "value": "https://www.e-codices.unifr.ch/metadata/iiif/csg-0730/manifest.json", 8 | "enable": false 9 | }, 10 | "graphics": { 11 | "value": "url", 12 | "enable": false 13 | } 14 | }, 15 | "imagesFolderUrls": { 16 | "single": "assets/data/images/single/", 17 | "double": "assets/data/images/double/" 18 | }, 19 | "configurationUrls": { 20 | "edition": "assets/config/edition_config_PseudoEdition.json", 21 | "ui": "assets/config/ui_config_PseudoEdition.json", 22 | "editorialConventions": "assets/config/editorial_conventions_config.json" 23 | } 24 | } -------------------------------------------------------------------------------- /src/assets/config/file_config_Saba.json: -------------------------------------------------------------------------------- 1 | { 2 | "editionUrls": [ 3 | "assets/data/saba.xml" 4 | ], 5 | "editionImagesSource": { 6 | "manifest": { 7 | "value": "https://www.e-codices.unifr.ch/metadata/iiif/csg-0730/manifest.json", 8 | "enable": false 9 | }, 10 | "graphics": { 11 | "value": "url", 12 | "enable": false 13 | } 14 | }, 15 | "imagesFolderUrls": { 16 | "single": "assets/data/images/single/", 17 | "double": "assets/data/images/double/" 18 | }, 19 | "configurationUrls": { 20 | "edition": "assets/config/edition_config_Saba.json", 21 | "ui": "assets/config/ui_config_Saba.json", 22 | "editorialConventions": "assets/config/editorial_conventions_config.json" 23 | } 24 | } -------------------------------------------------------------------------------- /src/assets/data/images/double/VB_fol_104v-VB_fol_105r.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/double/VB_fol_104v-VB_fol_105r.jpg -------------------------------------------------------------------------------- /src/assets/data/images/double/VB_fol_105v-VB_fol_106r.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/double/VB_fol_105v-VB_fol_106r.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/01.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/02.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/03.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/04.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/05.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/06.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/07.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/08.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/09.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/10.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/10bis.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/10bis.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/11.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/12.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/13.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/14.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/15.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/16.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/17.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/18.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/19.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/20.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/Maier_VB_104v.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/Maier_VB_104v.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/VB_fol_104v.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/VB_fol_104v.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/VB_fol_105r.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/VB_fol_105r.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/VB_fol_105v.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/VB_fol_105v.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/VB_fol_106r.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/VB_fol_106r.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/VB_spine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/VB_spine.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/fol_214v.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/fol_214v.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/fol_215r.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/fol_215r.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/fol_215v.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/fol_215v.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/fol_216r.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/fol_216r.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/fol_216v.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/fol_216v.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/fol_217r.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/fol_217r.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/fol_217v.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/fol_217v.jpg -------------------------------------------------------------------------------- /src/assets/data/images/single/fol_218r.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/data/images/single/fol_218r.jpg -------------------------------------------------------------------------------- /src/assets/fonts/Junicode-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/fonts/Junicode-Bold.woff -------------------------------------------------------------------------------- /src/assets/fonts/Junicode-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/fonts/Junicode-BoldItalic.woff -------------------------------------------------------------------------------- /src/assets/fonts/Junicode-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/fonts/Junicode-Italic.woff -------------------------------------------------------------------------------- /src/assets/fonts/Junicode.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/fonts/Junicode.woff -------------------------------------------------------------------------------- /src/assets/fonts/evt-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/fonts/evt-icons.eot -------------------------------------------------------------------------------- /src/assets/fonts/evt-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/fonts/evt-icons.ttf -------------------------------------------------------------------------------- /src/assets/fonts/evt-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/fonts/evt-icons.woff -------------------------------------------------------------------------------- /src/assets/images/empty-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/images/empty-image.jpg -------------------------------------------------------------------------------- /src/assets/images/en.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/images/en.png -------------------------------------------------------------------------------- /src/assets/images/it.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/images/it.png -------------------------------------------------------------------------------- /src/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/images/logo.png -------------------------------------------------------------------------------- /src/assets/images/logo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/images/logo_white.png -------------------------------------------------------------------------------- /src/assets/osd/images/button_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/button_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/button_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/button_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/button_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/button_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/button_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/button_rest.png -------------------------------------------------------------------------------- /src/assets/osd/images/flip_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/flip_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/flip_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/flip_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/flip_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/flip_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/flip_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/flip_rest.png -------------------------------------------------------------------------------- /src/assets/osd/images/fullpage_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/fullpage_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/fullpage_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/fullpage_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/fullpage_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/fullpage_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/fullpage_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/fullpage_rest.png -------------------------------------------------------------------------------- /src/assets/osd/images/home_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/home_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/home_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/home_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/home_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/home_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/home_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/home_rest.png -------------------------------------------------------------------------------- /src/assets/osd/images/next_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/next_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/next_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/next_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/next_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/next_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/next_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/next_rest.png -------------------------------------------------------------------------------- /src/assets/osd/images/previous_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/previous_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/previous_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/previous_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/previous_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/previous_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/previous_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/previous_rest.png -------------------------------------------------------------------------------- /src/assets/osd/images/rotateleft_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/rotateleft_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/rotateleft_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/rotateleft_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/rotateleft_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/rotateleft_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/rotateleft_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/rotateleft_rest.png -------------------------------------------------------------------------------- /src/assets/osd/images/rotateright_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/rotateright_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/rotateright_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/rotateright_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/rotateright_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/rotateright_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/rotateright_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/rotateright_rest.png -------------------------------------------------------------------------------- /src/assets/osd/images/zoomin_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/zoomin_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/zoomin_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/zoomin_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/zoomin_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/zoomin_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/zoomin_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/zoomin_rest.png -------------------------------------------------------------------------------- /src/assets/osd/images/zoomout_grouphover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/zoomout_grouphover.png -------------------------------------------------------------------------------- /src/assets/osd/images/zoomout_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/zoomout_hover.png -------------------------------------------------------------------------------- /src/assets/osd/images/zoomout_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/zoomout_pressed.png -------------------------------------------------------------------------------- /src/assets/osd/images/zoomout_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/assets/osd/images/zoomout_rest.png -------------------------------------------------------------------------------- /src/assets/scss/_bootstrapOverrides.scss: -------------------------------------------------------------------------------- 1 | @import './themes'; 2 | .btn-sm { 3 | height: 31px; 4 | } 5 | 6 | .btn:focus { 7 | outline: none !important; 8 | box-shadow: none !important; 9 | } 10 | 11 | .badge-info { 12 | @include themify($themes) { 13 | color: themed('baseColorLight'); 14 | background-color: themed('baseColorDark'); 15 | border-color: themed('baseColorDark'); 16 | } 17 | &.inverted { 18 | @include themify($themes) { 19 | color: themed('baseColorDark'); 20 | background-color: themed('baseColorLight'); 21 | border-color: themed('baseColorLight'); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true, 3 | }; 4 | -------------------------------------------------------------------------------- /src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false, 7 | }; 8 | 9 | /* 10 | * For easier debugging in development mode, you can import the following file 11 | * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. 12 | * 13 | * This import should be commented out in production mode because it will have a negative impact 14 | * on performance if an error is thrown. 15 | */ 16 | // import 'zone.js/plugins/zone-error'; // Included with Angular CLI. 17 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evt-project/evt-viewer-angular/b6c402f94bda183d669beef6046d7a4d106ab965/src/favicon.ico -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EvtViewerAngular 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch((err) => console.error(err)); 13 | -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting, 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting(), { 16 | teardown: { destroyAfterEach: false }, 17 | }, 18 | ); 19 | // Then we find all the tests. 20 | const context = require.context('./', true, /\.spec\.ts$/); 21 | // And load the modules. 22 | context.keys().map(context); 23 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/app", 5 | "types": [] 6 | }, 7 | "files": [ 8 | "src/main.ts", 9 | "src/polyfills.ts" 10 | ], 11 | "include": [ 12 | "src/main.ts", 13 | "src/polyfills.ts", 14 | "src/**/*.d.ts" 15 | ] 16 | } 17 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "downlevelIteration": true, 9 | "experimentalDecorators": true, 10 | "module": "es2020", 11 | "moduleResolution": "node", 12 | "importHelpers": true, 13 | "target": "es2015", 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "typeRoots": [ 17 | "node_modules/@types" 18 | ], 19 | "lib": [ 20 | "es2018", 21 | "es2019", 22 | "dom" 23 | ] 24 | }, 25 | "angularCompilerOptions": { 26 | "fullTemplateTypeCheck": true, 27 | "strictInjectionParameters": true 28 | } 29 | } -------------------------------------------------------------------------------- /tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "./out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts", 12 | "src/polyfills.ts" 13 | ], 14 | "include": [ 15 | "src/**/*.spec.ts", 16 | "src/**/*.d.ts" 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /user_paths.sh: -------------------------------------------------------------------------------- 1 | XML_DATA_FOLDER=../evt-sample-documents/EVT3/release-sample/data 2 | CONFIG_FOLDER=../evt-sample-documents/EVT3/release-sample/config 3 | EXAMPLES_README=../evt-sample-documents/EVT3/release-sample/README.md --------------------------------------------------------------------------------