describe('OHIF Measurement Panel', function () {
  beforeEach(function () {
    cy.checkStudyRouteInViewer('1.2.840.113619.2.5.1762583153.215519.978957063.78');

    cy.expectMinimumThumbnails(3);
    cy.initCommonElementsAliases();
    cy.initCornerstoneToolsAliases();
    cy.waitDicomImage();
  });

  it('checks if Measurements right panel can be hidden/displayed', function () {
    cy.get('@measurementsPanel').should('exist');
    cy.get('@measurementsPanel').should('be.visible');

    cy.get('@RightCollapseBtn').click();
    cy.get('@measurementsPanel').should('not.exist');

    cy.get('@RightCollapseBtn').click();

    // segmentation panel should be visible
    cy.get('@segmentationPanel').should('be.visible');

    // measurements panel should be clickable
    cy.get('@measurementsBtn').click();
    cy.get('@measurementsPanel').should('be.visible');
  });

  it('checks if measurement item can be Relabeled under Measurements panel', function () {
    // Add length measurement
    cy.addLengthMeasurement();

    cy.get('[data-cy="viewport-notification"]').as('viewportNotification').should('exist');
    cy.get('[data-cy="viewport-notification"]').as('viewportNotification').should('be.visible');

    cy.get('[data-cy="prompt-begin-tracking-yes-btn"]').as('yesBtn').click();

    cy.get('[data-cy="data-row"]').as('measurementItem').click();

    cy.get('[data-cy="data-row"]').find('svg').eq(0).as('measurementItemSvg').click();

    // enter Bone label
    // Todo: move it to the new annotation input with drop down
    // cy.get('[data-cy="input-annotation"]').should('exist');
    // cy.get('[data-cy="input-annotation"]').should('be.visible');
    // cy.get('[data-cy="input-annotation"]').type('Bone{enter}');

    // cy.get('[data-cy="data-row"]').as('measurementItem').should('contain.text', 'Bone');
  });

  it('checks if image would jump when clicked on a measurement item', function () {
    cy.get('[data-cy="study-browser-thumbnail"][data-series="1"]').dblclick();
    cy.wait(250);
    cy.scrollToIndex(0);

    // Add length measurement
    cy.addLengthMeasurement().wait(250);
    cy.get('[data-cy="prompt-begin-tracking-yes-btn"]').as('yesBtn').click();

    cy.scrollToIndex(13);

    // Reset to default tool so that the new add length works
    cy.addLengthMeasurement([100, 100], [200, 200]); //Adding measurement in the viewport

    cy.get('@viewportInfoBottomRight').should('contains.text', '(14/');

    // Click on first measurement item
    cy.get('[data-cy="data-row"]').eq(0).click();

    cy.get('@viewportInfoBottomRight').should('contains.text', '(1/');
    cy.get('@viewportInfoBottomRight').should('not.contains.text', '(14/');
  });

  /*
  TODO: Not sure why this is failing
  it('checks if Description can be added to measurement item under Measurements panel', () => {
    cy.addLengthMeasurement(); //Adding measurement in the viewport
    cy.get('@measurementsBtn').click();
    cy.get('.measurementItem').click();

    // Click "Description"
    cy.get('.btnAction')
      .contains('Description')
      .click();

    // Enter description text
    const descriptionText = 'Adding text for description test';
    cy.get('#description').type(descriptionText);

    // Confirm
    cy.get('.btn-confirm').click();

    //Verify if descriptionText was added
    cy.get('.measurementLocation').should('contain.text', descriptionText);

    // Remove the measurement we just added
    cy.get('.btnAction')
      .last()
      .contains('Delete')
      .click()

    // Close panel
    cy.get('@measurementsBtn').click();
    cy.get('@measurementsPanel').should('not.be.enabled');
  });
   */

  /*it('checks if measurement item can be deleted through the context menu on the viewport', function() {
    cy.addLengthMeasurement([100, 100], [200, 100]); //Adding measurement in the viewport

    //Right click on measurement annotation
    const [x1, y1] = [150, 100];
    cy.get('@viewport')
      .trigger('mousedown', x1, y1, {
        which: 3,
      })
      .trigger('mouseup', x1, y1, {
        which: 3,
      })
      .wait(300)
      .then(() => {
        //Contextmenu is visible
        cy.get('.ToolContextMenu').should('be.visible');
      });

    //Click "Delete measurement"
    cy.get('.form-action')
      .contains('Delete measurement')
      .click();

    //Open measurements menu
    cy.get('@measurementsBtn').click();

    //Verify measurements was removed from panel
    cy.get('.measurementItem')
      .should('not.exist')
      .log('Annotation successfully removed');

    //Close panel
    cy.get('@measurementsBtn').click();
    cy.get('@measurementsPanel').should('not.exist');
  });*/

  /*it('adds relabel and description to measurement item through the context menu on the viewport', function() {
    cy.addLengthMeasurement([100, 100], [200, 100]); //Adding measurement in the viewport

    // Relabel
    // Right click on measurement annotation
    const [x1, y1] = [150, 100];
    cy.get('@viewport')
      .trigger('mousedown', x1, y1, {
        which: 3,
      })
      .trigger('mouseup', x1, y1, {
        which: 3,
      });

    // Contextmenu is visible
    cy.get('.ToolContextMenu').should('be.visible');

    // Click "Relabel"
    cy.get('.form-action')
      .contains('Relabel')
      .click();

    // Search for "Brain"
    cy.get('.searchInput').type('Brain');

    // Select "Brain" Result
    cy.get('.treeInputs > .wrapperLabel')
      .contains('Brain')
      .click();

    // Confirm Selection
    cy.get('.checkIconWrapper').click();

    // Description
    // Right click on measurement annotation
    cy.get('@viewport')
      .trigger('mousedown', x1, y1, {
        which: 3,
      })
      .trigger('mouseup', x1, y1, {
        which: 3,
      });

    // Contextmenu is visible
    cy.get('.ToolContextMenu').should('be.visible');

    // Click "Description"
    cy.get('.form-action')
      .contains('Add Description')
      .click();

    // Enter description text
    const descriptionText = 'Adding text for description test';
    cy.get('#description').type(descriptionText);

    // Confirm
    cy.get('.btn-confirm').click();

    //Open measurements menu
    cy.get('@measurementsBtn').click();

    // Verify if label was added
    cy.get('.measurementLocation')
      .should('contain.text', 'Brain')
      .log('Relabel added with success');

    //Verify if descriptionText was added
    cy.get('.measurementLocation')
      .should('contain.text', descriptionText)
      .log('Description added with success');

    // Close panel
    cy.get('@measurementsBtn').click();
    cy.get('@measurementsPanel').should('not.exist');
  });*/
});
