module Workstation
  class ViewReleasePage2 < Workstation::BasePage
    include Workstation::CreateRelease
    include Workstation::ReleaseStatusBar
    page_url("/rb/view/<%=params[:release_id]%>")

    h1(:title, text: "View Release")
    div(:saving_overlay_present, class: ["loading-overlay", "text-center"])
    span(:release_meta_language, name: "metaLanguage")
    select(:primary_artist, name: "performer")
    span(:featuring, name: "featuring")
    span(:remixer, name: "remixer")
    span(:release_date, name: "releaseDate")
    span(:sale_date, name: "saleStartDate")
    span(:itunes_pre_order, name: "preorderDate")
    span(:itunes_previewable, name: "itunesPreviewable")
    span(:pricing, name: "pricing")
    span(:c_line, name: "cLine")
    span(:format, name: "format")
    span(:imprint, name: "imprint")
    span(:genre, name: "genre")
    span(:subgenre, name: "subgenre")
    span(:upc, name: "upc")
    span(:vendor_catalog_number, name: "vendorCatalogNumber")
    span(:vendor_release_Identifier, name: "vendorReleaseIdentifier")
    span(:version, name: "version")
    span(:manufacturer_upc, name: "manufacturerUpc")
    span(:description, name: "description")
    button(:edit_release, text: "Edit Release Basics")
    button(:edit_territory_restrictions, id: "toggle-territory")
    file_field(:add_track, id: "bulk-upload")
    button(:add_volume, id: "add-volume")
    file_field(:album_art_upload, id: "artwork-fileupload")
    link(:submit, id: "submit-toggle")
    # submit your release modal
    div(:submit_release_div, class: "modal-footer") # container for debug purposes
    button(:submit_release_final, id: "submit-release")
    button(:cancel_release_final, text: "Cancel")
    div(:edit_track, class: ["fa", "fa-edit"])
    # track errors
    span(:track_error_btn, title: "There are track errors")
    div(:track_error_modal, id: "tracks-modal")
    elements(:release_status_error, :element) do
      div_element(class: "release-status").element.elements(class: "text-danger")
    end
    span(:release_status_loader, css: ".circle-loader.status-loader")
    button(:close_tracks_error_modal) { track_error_modal_element.button_element(text: "Close") }

    # indexed tracks
    divs(:tracks, class: "sortable")
    indexed_property(
      :track,
      [
        [:div, :index_progress_bar, { css: "div#%s div.progress-bar" }],
        [:div, :index_play_track, { css: "div#%s div.play" }],
        [:list_item, :index_edit_track, { css: "div#%s li.track-edit" }],
        [:select_list, :index_meta_language, { css: "div#%s select[name='metaLanguage']" }],
        [:text_field, :index_track_name, { css: "div#%s input[name='trackName']" }],
        [:text_field, :index_p_line, { css: "div#%s input[name='pLine']" }],
        [:text_field, :index_performer, { css: "div#%s select[name='performer'] + div input" }],
        [:text_field, :index_writer, { css: "div#%s select[name='TrackWriter'] + div input" }],
        [:button, :index_save, { css: "div#%s button.save-track" }]
      ]
    )

    def add_index_track_data(i, track_data)
      current_track = track[i]
      wait_until(120) { current_track.index_play_track_element.element.exist? }
      click_with_javascript(current_track.index_edit_track_element)
      current_track.index_meta_language_element.element.wait_until(&:present?)
      current_track.index_performer = track_data["orchard_artist"]
      current_track.index_writer = track_data["songwriter"]
      current_track.index_track_name = "track #{i}"
      current_track.index_meta_language = track_data["meta_language"]
      current_track.index_p_line = track_data["c_line"]
      current_track.index_save
      current_track.index_save_element.element.wait_while(timeout: 90, &:present?)
    end

    def upload_track(file)
      upload_workaround(element: add_track_element, path: file)
    end

    def upload_album_art(file)
      upload_workaround(element: album_art_upload_element, path: file)
    end
  end
end
