Skip to content

Commit

Permalink
Merge branch 'develop' into fix/rename-module-util
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-jettka committed Nov 28, 2024
2 parents 0eb07d5 + 1c1514f commit 7c3ae71
Show file tree
Hide file tree
Showing 21 changed files with 957 additions and 67 deletions.
27 changes: 14 additions & 13 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,19 @@ Refs #
<!--- Include details of your testing environment, and the tests you ran. -->

## Types of changes
<!--- What types of changes does your code introduce? Please delete options that are not relevant. -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Documentation Update
<!--- What types of changes does your code introduce? Please DELETE options that are not relevant. -->
- Bug fix (non-breaking change which fixes an issue)
- New feature (non-breaking change which adds functionality)
- Breaking change (fix or feature that would cause existing functionality to change)
- Documentation Update
- Improvement
- Refactoring

## Checklist
<!--- Go over all the following points, and delete options that are not relevant. -->
## Overview
<!--- Go over all the following points, and DELETE options that are not relevant. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have performed a self-review of my code
- [ ] I have read the [CONTRIBUTING](https://github.com/Edirom/Edirom-Online/blob/develop/CONTRIBUTING.md) document.
- [ ] I have added tests to cover my changes.
- [ ] All new and existing tests passed.
- I have updated the inline documentation accordingly.
- I have performed a self-review of my code, according to the [style guide](https://github.com/Edirom/Edirom-Online/blob/develop/STYLE-GUIDE.md)
- I have read the [CONTRIBUTING](https://github.com/Edirom/Edirom-Online/blob/develop/CONTRIBUTING.md) document.
- I have added tests to cover my changes at [testing](https://github.com/Edirom/Edirom-Online/tree/develop/testing)
- All new and existing tests passed.
15 changes: 15 additions & 0 deletions .github/workflows/fair-software.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: fair-software

on: push

jobs:
verify:
name: "fair-software"
runs-on: ubuntu-latest
steps:
- uses: fair-software/[email protected]
name: Measure compliance with fair-software.eu recommendations
env:
PYCHARM_HOSTED: "Trick colorama into displaying colored output"
with:
MY_REPO_URL: "https://github.com/${{ github.repository }}"
21 changes: 16 additions & 5 deletions .github/workflows/pre-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,20 @@ jobs:
# saving this as output for following jobs to pick up
artifact_name: EdiromOnline_${{ steps.short-sha.outputs.sha }}.zip

check-language-files:
name: Check alignment of language files
needs: build
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install libsaxonhe-java for XQuery support
run: |
sudo apt-get update
sudo apt-get install libsaxonhe-java
- name: Run test
run: ant -lib /usr/share/java/ check-language-files

xqunit:
name: Run XQSuite unit tests
Expand All @@ -66,8 +80,6 @@ jobs:
with:
name: ${{ needs.build.outputs.artifact_name }}
path: xars
- name: debug
run: ls -laR ${{ github.workspace }}
- name: Create Docker container
run: |
docker create --rm --name edirom-online -p 8080:8080 stadlerpeter/existdb:6
Expand All @@ -84,7 +96,8 @@ jobs:

update-tag:
name: Update git development tag and Github release
needs: [build,xqunit]
needs: [build,xqunit,check-language-files]
if: ${{ github.event_name == 'push' && github.ref_name == 'develop' }}
runs-on: ubuntu-latest
permissions:
contents: write
Expand All @@ -93,7 +106,6 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
- name: Delete dev-release
if: ${{ github.event_name == 'push' && github.ref_name == 'develop' }}
run: gh release delete dev --cleanup-tag -y
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -106,7 +118,6 @@ jobs:
path: xars

- name: Create dev-release
if: ${{ github.event_name == 'push' && github.ref_name == 'develop' }}
uses: ncipollo/[email protected]
with:
allowUpdates: true
Expand Down
1 change: 1 addition & 0 deletions .howfairis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
skip_registry_checks_reason : "registered in NFDI4Culture Registry for Tools & Services at https://nfdi4culture.de/id/E3648"
50 changes: 50 additions & 0 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: Edirom Online
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Daniel
family-names: Röwenstrunk
- given-names: Peter
family-names: Stadler
- given-names: Benjamin W.
family-names: Bohl
- given-names: Nikolaos
family-names: Beer
- given-names: Kristin
family-names: Herold
- given-names: Daniel
family-names: Jettka
- given-names: Stefan
family-names: Münnich
- given-names: Dennis
family-names: Ried
- given-names: Dennis
family-names: Friedl
- given-names: Hizkiel
family-names: Alemayehu
identifiers:
- type: doi
value: 10.5281/zenodo.5347861
description: Edirom Online
repository-code: 'https://github.com/Edirom/Edirom-Online'
abstract: >-
Edirom Online is a software for the presentation and
analysis of critical musical editions in a digital format,
particularly in the fields of musicology and philology.
Edirom Online supports various data formats commonly used
in digital humanities, such as TEI (Text Encoding
Initiative) for textual data and MEI (Music Encoding
Initiative) for musical data, that is visualized with
Verovio. This allows for the integration of different data
formats, starting in the early days with texts, images and
music and adding audio and even film within a single
edition.
license: GPL-3.0
version: v1.0.0
date-released: '2024-11-20'
60 changes: 49 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,28 @@
[![Build](https://github.com/Edirom/Edirom-Online/actions/workflows/docker-ci.yml/badge.svg?branch=develop&event=push)](https://github.com/Edirom/Edirom-Online/actions/workflows/docker-ci.yml) [![NFDI4C Registry](https://nfdi4culture.de/fileadmin/user_upload/registry/badges/nfdi4culturebadge.svg)](https://nfdi4culture.de/id/E3648) [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
<div align="center">

[![Build](https://github.com/Edirom/Edirom-Online/actions/workflows/pre-release.yml/badge.svg?branch=develop&event=push)](https://github.com/Edirom/Edirom-Online/actions/workflows/pre-release.yml)
[![NFDI4C Registry](https://nfdi4culture.de/fileadmin/user_upload/registry/badges/nfdi4culturebadge.svg)](https://nfdi4culture.de/id/E3648)
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
[![GitHub release](https://img.shields.io/github/v/release/Edirom/Edirom-Online.svg)](https://github.com/Edirom/Edirom-Online/releases)
[![FAIR checklist badge](https://fairsoftwarechecklist.net/badge.svg)](https://fairsoftwarechecklist.net/v0.2?f=31&a=32113&i=32300&r=133)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9746/badge)](https://www.bestpractices.dev/projects/9746)
[![fair-software.eu](https://img.shields.io/badge/fair--software.eu-%E2%97%8F%20%20%E2%97%8F%20%20%E2%97%8B%20%20%E2%97%8B%20%20%E2%97%8B-orange)](https://fair-software.eu)
[![DOI](https://zenodo.org/badge/5966814.svg)](https://zenodo.org/badge/latestdoi/5966814)

</div>


<div align="center">

**[Showcases](https://github.com/Edirom/Edirom-Online#-Showcases)
[Get started](https://github.com/Edirom/Edirom-Online#-Get-started)
[Dependencies](https://github.com/Edirom/Edirom-Online#-Dependencies)
[Roadmap](https://github.com/Edirom/Edirom-Online#-Roadmap)
[Contributing](https://github.com/Edirom/Edirom-Online#-Contributing)
[Get in touch](https://github.com/Edirom/Edirom-Online#-Get-in-touch)
[Code of Conduct](https://github.com/Edirom/Edirom-Online#-Code-of-Conduct)
[License](https://github.com/Edirom/Edirom-Online#-License)**
**[Showcases](https://github.com/Edirom/Edirom-Online#showcases)
[Get started](https://github.com/Edirom/Edirom-Online#get-started)
[Documentation](https://github.com/Edirom/Edirom-Online#documentation)
[Dependencies](https://github.com/Edirom/Edirom-Online#dependencies)
[Roadmap](https://github.com/Edirom/Edirom-Online#roadmap)
[Contributing](https://github.com/Edirom/Edirom-Online#contributing)
[Get in touch](https://github.com/Edirom/Edirom-Online#get-in-touch)
[Code of Conduct](https://github.com/Edirom/Edirom-Online#code-of-Conduct)
[License](https://github.com/Edirom/Edirom-Online#license)**

</div>

Expand All @@ -24,7 +37,7 @@ To get some practical insights, look at these projects and editions that already

**Clarinet quintet op.34 by Weber**

The third version of Webers clarinet quintet op.34 was created 2022 by Virtueller Forschungsverbund Edirom (ViFE) honoring Prof. Dr. Joachim Veit on the occasion of his retirement. The edition includes digital facsimiles, music that is encoded in MEI and visualized with , annotations and texts.
The third version of Webers clarinet quintet op.34 was created 2022 by Virtueller Forschungsverbund Edirom (ViFE) honoring Prof. Dr. Joachim Veit on the occasion of his retirement. The edition includes digital facsimiles, music that is encoded in MEI and visualized with [Verovio], annotations and texts.
* publication of [Webers clarinet quintet]

<img src="./.github/images/EdiromOnline_WeberKlarinettenquintettOp34_2022.jpg" width="80%">
Expand Down Expand Up @@ -97,10 +110,26 @@ When you have your system prepared with all Sencha Cmd prerequisites or you have
* at `http://localhost:8080/exist/apps/dashboard/admin#` (signed-in) go to "Package Manager" then "Upload" and select the xar file which (supposed above build-method was used) was built at `/PATH_TO_LOCAL_EDIROM_EDITION_EXAMPLE_REPO/build/EditionExample-0.1.xar`
* in **eXist-db Package Manager** click on the "Edirom Online" entry - you will be directed to the running Edirom at `http://localhost:8080/exist/apps/Edirom-Online/index.html`

## Documentation

Some useful information regarding documentation is captured in the [docs] folder of this repo. It contains:
* [Customize] Edirom Online and content
* Edirom Online – [Release Workflow]
* [Setup Edirom Online] on a local machine

## Dependencies

Edirom Online depends heavily on the JavaScript framework [Ext JS] which is included in parts in our code base. We use Ext JS 4.2.1 in the GPL version. Edirom Online also includes the [Raphaël] javascript library (MIT License) and the [ACE] editor (BSD license).

For running the tests provided in the [ANT build file] we rely on `xmllint`
and `SaxonHE`.
On a Debian based Linux system these can be installed with `apt-get install
libsaxonhe-java libxml2-utils`.
If SaxonHE is not available from your classpath by default you might need to
explicitly point ANT at it by providing the `-lib` parameter, e.g. `ant -lib
/usr/share/java/ run-all-tests`.


## Roadmap

Until today Edirom-Online and its features were developed as one application with strong dependencies on the JavaScript framework [Ext JS] (current version Ext JS 4.2.1) like mentioned above. Frontend and backend are currently living in this one application. Regarding to Edirom-Onlines release plans ExtJS is planned to be updated in the near future until ExtJS 7.0.0.
Expand All @@ -124,6 +153,11 @@ Even if you are not ready (yet) to contribute to this wonderful project, maybe i

Please note that this project is released with a [Contributor Code of Conduct]. By participating in this project you agree to abide by its terms.

## Citation

Please cite the software/repository using the information provided under "Cite this repository" on the right hand side. The APA and BIBTeX citations are fed by information from the CITATION.cff file in this repository which you can also use as a source.
If you intend to cite unreleased branches or commits please use the commit hash in the citation.

## License

Edirom Online is released to the public under the terms of the [GNU GPL v.3] open source license.
Expand All @@ -143,6 +177,10 @@ Edirom Online is released to the public under the terms of the [GNU GPL v.3] ope
[Bargheer: Edition]: https://github.com/Edirom/Bargheer-Edition
[eXist-db]: https://exist-db.org/
[Verovio]: https://www.verovio.org/index.xhtml
[docs]: /docs
[Customize]: docs/customize.md
[Release Workflow]: docs/release-workflow.md
[Setup Edirom Online]: docs/setup.md
[Ext JS]: https://www.sencha.com/products/extjs
[Raphaël]: http://raphaeljs.com
[ACE]: http://ace.ajax.org
Expand All @@ -162,7 +200,7 @@ Edirom Online is released to the public under the terms of the [GNU GPL v.3] ope
[GitHub Discussions]: https://github.com/Edirom/Edirom-Online/discussions
[Contributor Code of Conduct]: CODE_OF_CONDUCT.md
[GNU GPL v.3]: http://www.gnu.org/copyleft/gpl.html

[ANT build file]: https://github.com/Edirom/Edirom-Online/blob/develop/build.xml

<!--
# EdiromOnline/app
Expand Down
1 change: 1 addition & 0 deletions add/data/locale/edirom-lang-de.xml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@
<entry key="view.window.source.SourceView_MeasureBasedView_previousMeasure" value="Vorheriger Takt"/>
<entry key="view.window.source.SourceView_MeasureBasedView_measureSpinner" value="Taktauswahl" />
<entry key="view.window.source.SourceView_MeasureBasedView_nextMeasure" value="Nächster Takt"/>
<entry key="view.window.source.SourceView_MeasureBasedView_movementSelectorBox" value="Auswahl von Satz/Nummer"/>
<entry key="view.window.source.SourceView_MeasureBasedView_selectVoices" value="Stimmenauswahl"/>
<entry key="view.window.text.TextView_annotMenu" value="Anmerkungen"/>
<entry key="view.window.text.TextView_showAnnotations" value="Anmerkungen ein-/ausblenden"/>
Expand Down
4 changes: 2 additions & 2 deletions add/data/xql/getInternalIdType.xql
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ let $internal :=
let $measureN := functx:substring-after-last($internalId, '_')
return (
if ($doc/id($mdivId)//mei:measure/@label) then
$doc/id($mdivId)//mei:measure[@label eq $measureN][1]
$doc/id($mdivId)//mei:measure[@label][1]
else
$doc/id($mdivId)//mei:measure[@n eq $measureN][1]
$doc/id($mdivId)//mei:measure[@n][1]
)
) else
($internal)
Expand Down
2 changes: 1 addition & 1 deletion add/data/xql/getMeasurePage.xql
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ declare function local:findMeasure($mei, $movementId, $measureIdName) as element
($m)
else
(($mei/id($movementId)//mei:measure[@label eq $measureIdName], $mei/id($movementId)//mei:measure[@n eq $measureIdName])[1])
}
};
declare function local:getMeasure($mei, $measure, $movementId) as map(*) {
let $measureId := $measure/string(@xml:id)
let $zoneId := substring-after($measure/string(@facs), '#')
Expand Down
20 changes: 8 additions & 12 deletions add/data/xqm/eutil.xqm
Original file line number Diff line number Diff line change
Expand Up @@ -129,23 +129,19 @@ declare function eutil:getLocalizedTitle($node as node(), $lang as xs:string?) a
('[No title found!]')

};

(:~
: Returns a document
:
: @param $uri The URIs of the documents to process
: @return The document
:)
declare function eutil:getDoc($uri) {

if(starts-with($uri, 'textgrid:')) then(
let $session := request:get-cookie-value('edirom_online_textgrid_sessionId')
return
doc('http://textgridlab.org/1.0/tgcrud/rest/' || $uri || '/data?sessionId=' || $session)

) else (
doc($uri)
)

declare function eutil:getDoc($uri as xs:string?) as document-node()? {
if(empty($uri) or ($uri eq ""))
then util:log("warn", "No document URI provided")
else if(doc-available($uri))
then doc($uri)
else util:log("warn", "Unable to load document at " || $uri)
};

(:~
Expand Down Expand Up @@ -268,7 +264,7 @@ declare function eutil:getLanguageString($key as xs:string, $values as xs:string
declare function eutil:getLanguageString($key as xs:string, $values as xs:string*, $lang as xs:string) as xs:string {

let $base := system:get-module-load-path()
let $file := doc(concat($base, '/../locale/edirom-lang-', $lang, '.xml'))
let $file := eutil:getDoc(concat($base, '/../locale/edirom-lang-', $lang, '.xml'))

let $string := $file//entry[@key = $key]/string(@value)
let $string := functx:replace-multi($string, for $i in (0 to (count($values) - 1)) return concat('\{',$i,'\}'), $values)
Expand Down
14 changes: 5 additions & 9 deletions add/data/xslt/i18n/de.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<entry xml:id="pbl">Herausgeber</entry>
<entry xml:id="pdr">Project director</entry>
<entry xml:id="rce">Tontechnik</entry>
<entry xml:id="rth">Research tem head</entry>
<entry xml:id="rth">Research team head</entry>
<entry xml:id="scr">Schreiber</entry>
<entry xml:id="spn">Sponsor</entry>
<!-- Identifier Klassen -->
Expand Down Expand Up @@ -109,9 +109,6 @@
<entry xml:id="componentGrp">Bestandteile</entry>
<entry xml:id="expressionList">Expressionen</entry>
<entry xml:id="handList">Schreiber</entry>
<entry xml:id="pubStmt">Publikation</entry>
<entry xml:id="pupPlace">Ort</entry>


<entry xml:id="corpName">Körperschaft</entry>
<entry xml:id="captureMode">Aufnahmemodus</entry>
Expand All @@ -123,6 +120,8 @@

<!-- MEI & TEI -->
<entry xml:id="ptr">Link</entry>
<entry xml:id="pubPlace">Ort der Veröffentlichung</entry>
<entry xml:id="pubStmt">Informationen zur Publikation</entry>

<!-- TEI -->
<entry xml:id="abstract">Editorische Zusammenfassung</entry>
Expand All @@ -142,7 +141,6 @@
<entry xml:id="msIdentifier">Repositorium</entry>
<entry xml:id="orgName">Organisation</entry>
<entry xml:id="publicationStmt">Publikation</entry>
<entry xml:id="profileDesc">Nicht-bibliographische Aspekte</entry>
<entry xml:id="seriesStmt">Reihe</entry>
<entry xml:id="title_a">Titel (analytisch)</entry>
<entry xml:id="title_m">Titel (monographisch)</entry>
Expand All @@ -158,9 +156,8 @@
<entry xml:id="handNotes">Schreiber-Anmerkungen</entry>
<entry xml:id="itemList">Exemplar(e)</entry>
<entry xml:id="placeName">Ort</entry>
<entry xml:id="pubStmt">Informationen zur Publikation</entry>

<entry xml:id="respStmt">Verantwortlich</entry>
<entry xml:id="pubPlace">Ort der Veröffentlichung</entry>
<entry xml:id="profileDesc">Nicht-bibliographische Angaben</entry>


Expand All @@ -183,7 +180,6 @@
<entry xml:id="width">Breite</entry>
<entry xml:id="height">Höhe</entry>
<entry xml:id="descLink">Quellenbeschreibung</entry>

<entry xml:id="singers">Sänger</entry>
<entry xml:id="singers">Sänger</entry>
<entry xml:id="musicians">Musiker</entry>
</language>
Loading

0 comments on commit 7c3ae71

Please sign in to comment.