MappingSourceMusicPart.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import {SourceMusicPart} from "./SourceMusicPart";
  2. import {Fraction} from "../../Common/DataObjects/fraction";
  3. import {Repetition} from "./Repetition";
  4. import {PartListEntry} from "./PartListEntry";
  5. export class MappingSourceMusicPart /* implements IComparable, IComparable<MappingSourceMusicPart>*/ {
  6. constructor(
  7. sourceMusicPart: SourceMusicPart, startTimestamp: Fraction, parentPartListEntry?: Repetition,
  8. repetitionRun: number = -1, isEnding: boolean = false
  9. ) {
  10. this.sourceMusicPart = sourceMusicPart;
  11. this.parentPartListEntry = parentPartListEntry;
  12. this.startTimestamp = startTimestamp.clone();
  13. this.repetitionRun = repetitionRun;
  14. this.parentRepetition = parentPartListEntry;
  15. this.isEnding = isEnding;
  16. }
  17. private sourceMusicPart: SourceMusicPart;
  18. private parentRepetition: Repetition;
  19. private parentPartListEntry: PartListEntry;
  20. private startTimestamp: Fraction;
  21. private repetitionRun: number = -1;
  22. private isEnding: boolean;
  23. public get IsRepetition(): boolean {
  24. return this.parentRepetition !== undefined;
  25. }
  26. public get IsEnding(): boolean {
  27. return this.isEnding;
  28. }
  29. public get IsLastRepetitionRun(): boolean {
  30. return this.IsRepetition && (this.repetitionRun + 1 === this.parentRepetition.UserNumberOfRepetitions);
  31. }
  32. public get RepetitionRun(): number {
  33. return this.repetitionRun;
  34. }
  35. public get ParentPartListEntry(): PartListEntry {
  36. return this.parentPartListEntry;
  37. }
  38. public get SourceMusicPart(): SourceMusicPart {
  39. return this.sourceMusicPart;
  40. }
  41. public get StartTimestamp(): Fraction {
  42. return this.startTimestamp;
  43. }
  44. public CompareTo(comp: MappingSourceMusicPart): number {
  45. //let comp: MappingSourceMusicPart = <MappingSourceMusicPart>(obj, MappingSourceMusicPart);
  46. if (comp !== undefined) {
  47. return this.startTimestamp.CompareTo(comp.startTimestamp);
  48. } else { return 1; }
  49. }
  50. //public CompareTo(other: MappingSourceMusicPart): number {
  51. // return this.CompareTo(<Object>other);
  52. //}
  53. }