opensheetmusicdisplay/opensheetmusicdisplay

View on GitHub
demo/index.js

Summary

Maintainability
F
4 days
Test Coverage

File index.js has 759 lines of code (exceeds 250 allowed). Consider refactoring.
Open

import { OpenSheetMusicDisplay } from '../src/OpenSheetMusicDisplay/OpenSheetMusicDisplay';
import { BackendType } from '../src/OpenSheetMusicDisplay/OSMDOptions';
import * as jsPDF  from '../node_modules/jspdf/dist/jspdf.es.min';
import * as svg2pdf from '../node_modules/svg2pdf.js/dist/svg2pdf.umd.min';
import { TransposeCalculator } from '../src/Plugins/Transpose/TransposeCalculator';
Severity: Major
Found in demo/index.js - About 1 day to fix

    Function init has 333 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

        function init() {
            var name, option;
    
            // Handle window parameter
            var paramEmbedded = findGetParameter('embedded');
    Severity: Major
    Found in demo/index.js - About 1 day to fix

      Function setSampleSpecificOptions has 79 lines of code (exceeds 25 allowed). Consider refactoring.
      Open

          function setSampleSpecificOptions(str, isCustom) {
              if (!isCustom && str.includes("measuresToDraw")) { // set options for measuresToDraw sample
                  // stash previously set range of measures to draw
                  if (!measureToDrawRangeNeedsReset) { // only stash once, when measuresToDraw called multiple times in a row
                      minMeasureToDrawStashed = openSheetMusicDisplay.EngravingRules.MinMeasureToDrawIndex + 1;
      Severity: Major
      Found in demo/index.js - About 3 hrs to fix

        Function createPdf has 42 lines of code (exceeds 25 allowed). Consider refactoring.
        Open

            async function createPdf(pdfName) {
                if (openSheetMusicDisplay.backendType !== BackendType.SVG) {
                    console.log("[OSMD] createPdf(): Warning: createPDF is only supported for SVG background for now, not for Canvas." +
                        " Please use osmd.setOptions({backendType: SVG}).");
                    return;
        Severity: Minor
        Found in demo/index.js - About 1 hr to fix

          Function selectSampleOnChange has 32 lines of code (exceeds 25 allowed). Consider refactoring.
          Open

              function selectSampleOnChange(str) {
                  error();
                  disable();
                  var isCustom = typeof str === "string";
                  if (!isCustom) {
          Severity: Minor
          Found in demo/index.js - About 1 hr to fix

            Function findGetParameter has 27 lines of code (exceeds 25 allowed). Consider refactoring.
            Open

                function findGetParameter(parameterName) {
                    // special treatment for the openUrl parameter, because different systems attach different arguments to an URL.
                    // because of CORS (cross-origin safety restrictions), you can only load an xml file from the same origin (server).
            
                    // test parameter: ?openUrl=https://opensheetmusiceducation.org/index.php?gf-download=2020%2F01%2FJohannSebastianBach_PraeludiumInCDur_BWV846_1.xml&endUrl&form-id=1&field-id=4&hash=c4ba271ef08204a26cbd4cd2d751c53b78f238c25ddbb1f343e1172f2ce2aa53
            Severity: Minor
            Found in demo/index.js - About 1 hr to fix

              Similar blocks of code found in 2 locations. Consider refactoring.
              Open

                      showCursorBtn.addEventListener("click", function () {
                          if (openSheetMusicDisplay.cursor) {
                              openSheetMusicDisplay.cursor.show();
                          } else {
                              console.info("Can't show cursor, as it was disabled (e.g. by drawingParameters).");
              Severity: Major
              Found in demo/index.js and 1 other location - About 1 hr to fix
              demo/index.js on lines 518..524

              Duplicated Code

              Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

              Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

              When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

              Tuning

              This issue has a mass of 57.

              We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

              The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

              If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

              See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

              Refactorings

              Further Reading

              Similar blocks of code found in 2 locations. Consider refactoring.
              Open

                      hideCursorBtn.addEventListener("click", function () {
                          if (openSheetMusicDisplay.cursor) {
                              openSheetMusicDisplay.cursor.hide();
                          } else {
                              console.info("Can't hide cursor, as it was disabled (e.g. by drawingParameters).");
              Severity: Major
              Found in demo/index.js and 1 other location - About 1 hr to fix
              demo/index.js on lines 525..531

              Duplicated Code

              Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

              Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

              When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

              Tuning

              This issue has a mass of 57.

              We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

              The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

              If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

              See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

              Refactorings

              Further Reading

              Similar blocks of code found in 2 locations. Consider refactoring.
              Open

                      if (skylineDebug) {
                          skylineDebug.onclick = function () {
                              openSheetMusicDisplay.DrawSkyLine = !openSheetMusicDisplay.DrawSkyLine;
                              openSheetMusicDisplay.render();
                          }
              Severity: Minor
              Found in demo/index.js and 1 other location - About 45 mins to fix
              demo/index.js on lines 419..424

              Duplicated Code

              Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

              Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

              When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

              Tuning

              This issue has a mass of 50.

              We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

              The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

              If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

              See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

              Refactorings

              Further Reading

              Similar blocks of code found in 2 locations. Consider refactoring.
              Open

                      if (bottomlineDebug) {
                          bottomlineDebug.onclick = function () {
                              openSheetMusicDisplay.DrawBottomLine = !openSheetMusicDisplay.DrawBottomLine;
                              openSheetMusicDisplay.render();
                          }
              Severity: Minor
              Found in demo/index.js and 1 other location - About 45 mins to fix
              demo/index.js on lines 412..417

              Duplicated Code

              Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

              Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

              When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

              Tuning

              This issue has a mass of 50.

              We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

              The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

              If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

              See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

              Refactorings

              Further Reading

              There are no issues that match your filters.

              Category
              Status