added Vespers, Matins, Great Liturgy services

This commit is contained in:
catarrh committed 2026-07-31 09:05:49 +03:00
1 parent 8e6c63c003
commit ff5b8dc649
4 files changed
+297 -8

No files matched your search

+10
View File
@@ -95,6 +95,14 @@ export function computeDay(date: JDate): ComputedDay {
// Priest status (1 = priest required, 0 = reader)
const PS = (dRank >= 3 || dow === 0) ? 1 : 0;
// Eothinon (Sunday Matins Gospel cycle, 1-11)
// Based on weeks after Pascha: (⌊nday / 7⌋ % 11) + 1 for Sundays
// Non-Sundays get 0
let eothinon = 0;
if (dow === 0 && nday >= 0) {
eothinon = (Math.floor(nday / 7) % 11) + 1;
}
const dayInfo: DayInfo = {
dow,
doy,
@@ -120,6 +128,7 @@ export function computeDay(date: JDate): ComputedDay {
isNativityFast,
triodionFile,
pentecostarionFile,
eothinon,
};
// Build EvalContext from DayInfo (all values as numbers for the expression evaluator)
@@ -139,6 +148,7 @@ export function computeDay(date: JDate): ComputedDay {
Easter: pascha.jdn,
Pentecost: pentecost.jdn,
LentStart: lentStart.jdn,
eothinon,
LS: 1, // Default language
GS: 1, // Default gospel selector
};
+25 -1
View File
@@ -85,6 +85,9 @@ export interface Translations {
liturgy: string;
royalhours: string;
compline: string;
greatcompline: string;
mariasstanding: string;
matins: string;
};
serviceDescriptions: {
primes: string;
@@ -95,6 +98,9 @@ export interface Translations {
liturgy: string;
royalhours: string;
compline: string;
greatcompline: string;
mariasstanding: string;
matins: string;
};
};
@@ -275,9 +281,12 @@ const translations: Record<LanguageCode, Translations> = {
liturgy: 'Divine Liturgy',
royalhours: 'Royal Hours',
compline: 'Compline',
greatcompline: 'Great Compline',
mariasstanding: 'Standing of St. Mary of Egypt',
matins: 'Matins',
},
serviceDescriptions: {
primes: 'Prime (First Hour)',
primes: 'First Hour',
third: 'Third Hour',
sixth: 'Sixth Hour',
ninth: 'Ninth Hour',
@@ -285,6 +294,9 @@ const translations: Record<LanguageCode, Translations> = {
liturgy: 'Principal service (Divine Liturgy)',
royalhours: 'Royal Hours',
compline: 'Night office (Compline)',
greatcompline: 'Great Compline with the Canon of St. Andrew',
mariasstanding: 'Matins with the Great Canon and the Life of St. Mary of Egypt (Marias Standing)',
matins: 'Morning service (Matins)',
},
},
@@ -461,6 +473,9 @@ const translations: Record<LanguageCode, Translations> = {
liturgy: 'Божественная Литургия',
royalhours: 'Царские часы',
compline: 'Повечерие',
greatcompline: 'Великое Повечерие',
mariasstanding: 'Стояние Марии Египетской',
matins: 'Утреня',
},
serviceDescriptions: {
primes: 'Час первый',
@@ -471,6 +486,9 @@ const translations: Record<LanguageCode, Translations> = {
liturgy: 'Главное богослужение (Божественная Литургия)',
royalhours: 'Царские часы',
compline: 'Ночное богослужение (Повечерие)',
greatcompline: 'Великое Повечерие с каноном Андрея Критского',
mariasstanding: 'Утреня с Великим каноном и житием Марии Египетской (Мариино стояние)',
matins: 'Утреннее богослужение (Утреня)',
},
},
@@ -647,6 +665,9 @@ const translations: Record<LanguageCode, Translations> = {
liturgy: 'Божественная Литургия',
royalhours: 'Царскія часъ',
compline: 'Повечерiе',
greatcompline: 'Вели́кое Повече́рiе',
mariasstanding: 'Стоѧ́нїе ма́ріи є҆гѵ́петскїѧ',
matins: 'Оу҆́тренѧ',
},
serviceDescriptions: {
primes: 'Часъ первый',
@@ -657,6 +678,9 @@ const translations: Record<LanguageCode, Translations> = {
liturgy: 'Главное богослуженiе (Божественнаꙗ Литургiꙗ)',
royalhours: 'Царскія часъ',
compline: 'Ночное богослуженiе (Повечерiе)',
greatcompline: 'Вели́кое Повече́рiе съ кано́номъ а҆ндре́а кри́тскагѡ',
mariasstanding: 'Оу҆́тренѧ съ вели́кимъ кано́номъ и҆ житїе́мъ ма́ріи є҆гѵ́петскїѧ (Марі́ино стоѧ́нїе)',
matins: 'Оу҆́треннее богослуженiе (Оу҆́тренѧ)',
},
},
+38
View File
@@ -37,6 +37,44 @@ export interface DayInfo {
// Data file references
triodionFile: number | null; // Index in triodion (1-70)
pentecostarionFile: number | null; // Index in pentecostarion (1-315)
eothinon: number; // Sunday Matins Eothinon (1-11, 0 = none)
}
/** A single sub-canon within an ode. */
export interface CanonSubCanon {
irmos: string;
troparia: string[];
theotokion: string;
}
/** A single ode within a Matins canon. */
export interface CanonOde {
ode: number; // Ode number (1,3,4,5,6,7,8,9)
canons: CanonSubCanon[]; // Sub-canons per ode
}
/** Matins canon data for a given tone. */
export interface CanonData {
tone: number;
odes: CanonOde[];
}
/** A single ode within the Great Canon of St. Andrew. */
export interface GreatCanonOde {
ode: number; // 1-9 (includes Ode 2)
irmos: string;
troparia: string[]; // Penitential troparia
trinityTroparion: string;
theotokion: string;
kontakion?: string; // After Ode 6: "Душе моя..."
saintTroparia?: string[]; // Troparia to St. Mary of Egypt / St. Andrew
}
/** One part of the Great Canon (divided across the 1st week). */
export interface GreatCanonPart {
part: number; // 1-4 for first week
title: string;
odes: GreatCanonOde[];
}
/** Expression evaluator variable store. */