ManageIQ/manageiq-ui-classic

View on GitHub
app/views/layouts/angular/_ansible_form_options_angular.html.haml

Summary

Maintainability
Test Coverage
- prefix ||= 'provisioning'
.row
  .col-md-12.col-lg-6
    - if prefix == "retirement"
      = render :partial => 'catalog/confirmation_modal'
      .form-group
        %label.col-md-3.control-label
          %table{:width => "100%", :align => "bottom"}
            %tr
              %td#buttons_on
                %button{"type"          => "button",
                        :class          => "btn btn-default",
                        "data-toggle"   => "modal",
                        "data-target"   => "#confirmationModal",
                        :id             => "confirmation_modal",
                        :title          => _("Copy from Provisioning")}
                  = _('Copy from Provisioning')

    .form-group{"ng-class" => "{'has-error': angularForm.#{prefix}_manager_id.$invalid}",
                "ng-if" => "#{ng_model}.location!=='playbook'"}
      %label.col-md-3.control-label{"for" => "#{ng_model}.manager_id"}
        = _('Provider')
      .col-md-9
        %select{"ng-model"    => "#{ng_model}.manager",
                "name"        => "#{ng_model}_manager_id",
                'ng-change'   => "managerChanged()",
                'ng-options'  => "manager as manager.name for manager in #{ng_model}.managers",
                'miq-select'  => true}
          %option{"value" => ""}
            = "<#{_('Choose')}>"

    .form-group{"ng-class" => "{'has-error': angularForm.#{prefix}_playbook_id.$invalid}",
                "ng-if" => "#{ng_model}.location!=='playbook'"}
      %label.col-md-3.control-label{"for" => "#{ng_model}.ansible_template_id"}
        = playbook_label(@ae_method.try(:location) || @edit[:new][:location])
      .col-md-9
        %select{"ng-model"    => "#{ng_model}.ansible_template",
                "name"        => "#{ng_model}_ansible_template_id",
                'ng-options'  => "playbook as playbook.name for playbook in #{ng_model}.ansible_templates",
                'miq-select'  => true}
          %option{"value" => ""}
            = "<#{_('Choose')}>"

    .form-group{"ng-class" => "{'has-error': angularForm.#{prefix}_repository_id.$invalid}",
                "ng-if" => "#{ng_model}.location==='playbook'"}
      %label.col-md-3.control-label{"for" => "vm.#{prefix}_repository_id"}
        = _('Repository')
      .col-md-9
        %select{"ng-model"    => "vm._#{prefix}_repository",
                "name"        => "#{prefix}_repository_id",
                'ng-options'  => 'repository as repository.name for repository in vm.repositories',
                "ng-required" => "vm.fieldsRequired('#{prefix}')",
                'miq-select'  => true}
          %option{"value" => ""}
            = "<#{_('Choose')}>"

    #playbook_div{"ng-if" => "vm.#{prefix}_repository_selected()"}
      .form-group{"ng-class" => "{'has-error': angularForm.#{prefix}_playbook_id.$invalid}"}
        %label.col-md-3.control-label{"for" => "#{prefix}_playbook_id"}
          = _('Playbook')
        .col-md-9
          %select{"ng-model"         => "vm._#{prefix}_playbook",
                  "name"             => "#{prefix}_playbook_id",
                  'ng-options'       => "playbook as playbook.name for playbook in vm.#{prefix}_playbooks",
                  "required"         => "",
                  :miqrequired       => true,
                  "data-live-search" => "true",
                  'miq-select'       => true}
            %option{"value" => ""}
              = "<#{_('Choose')}>"

      #credentials_div{"ng-show" => "vm.#{prefix}_repository_selected()"}
        .form-group{"ng-class" => "{'has-error': angularForm.#{prefix}_machine_credential_id.$invalid}"}
          %label.col-md-3.control-label{"for" => "#{prefix}_machine_credential_id"}
            = _('Machine Credential')
          .col-md-9
            %select{"ng-model"         => "vm._#{prefix}_machine_credential",
                    "name"             => "#{prefix}_machine_credential_id",
                    'ng-options'       => 'machine_credential as machine_credential.name for machine_credential in vm.machine_credentials',
                    "required"         => "",
                    :miqrequired       => true,
                    "data-live-search" => "true",
                    'miq-select'       => true}
              %option{"value" => ""}
                = "<#{_('Choose')}>"
        .form-group{"ng-class" => "{'has-error': angularForm.#{prefix}_vault_credential_id.$invalid}"}
          %label.col-md-3.control-label{"for" => "#{prefix}_vault_credential_id"}
            = _('Vault Credential')
          .col-md-9
            %select{"ng-model"         => "vm._#{prefix}_vault_credential",
                    "name"             => "#{prefix}_vault_credential_id",
                    'ng-options'       => 'vault_credential as vault_credential.name for vault_credential in vm.vault_credentials',
                    "data-live-search" => "true",
                    'miq-select'       => true}
              %option{"value" => ""}
                = "<#{_('Choose')}>"
        -#.form-group
        -#  %label.col-md-3.control-label{"for" => "vm.#{prefix}_network_credential_id"}
        -#    = _('Network Credential')
        -#  .col-md-9
        -#    %select{"ng-model"         => "vm._#{prefix}_network_credential",
        -#            "name"             => "#{prefix}_network_credential_id",
        -#            'ng-options'       => 'network_credential as network_credential.name for network_credential in vm.network_credentials',
        -#            :checkchange       => true,
        -#            "data-live-search" => "true",
        -#            'miq-select'       => true}
        -#      %option{"value" => ""}
        -#        = "<#{_('Choose')}>"

        .form-group
          %label.col-md-3.control-label{"for" => "vm.#{prefix}_cloud_type"}
            = _('Cloud Type')
          .col-md-9
            %select{"ng-model"    => "vm._#{prefix}_cloud_type",
                    "name"        => "#{prefix}_cloud_type",
                    'ng-options'  => "k as v for (k,v) in vm.cloudTypes",
                    "miq-select"  => true}
              %option{"value" => ""}
                = "<#{_('Choose')}>"
        #cloud_credentials_div{"ng-show" => "vm.#{prefix}_cloud_type !== ''"}
          .form-group
            %label.col-md-3.control-label{"for" => "vm.#{prefix}_cloud_credential_id"}
              = _('Cloud Credential')
            .col-md-9
              %select{"ng-model"         => "vm._#{prefix}_cloud_credential",
                      "name"             => "#{prefix}_cloud_credential_id",
                      'ng-options'       => "cloud_credential as cloud_credential.name for cloud_credential in vm.#{prefix}_cloud_credentials",
                      "data-live-search" => "true",
                      'miq-select'       => true}
                %option{"value" => ""}
                  = "<#{_('Choose')}>"

    .form-group{"ng-if" =>"((#{ng_model}.location==='playbook') || (#{ng_model}.location === 'ansible_job_template'))",
                "ng-class" => "{'has-error': angularForm.#{prefix}_inventory.$invalid}"}
      %label.col-md-3.control-label
        = _("Hosts")
      .col-md-9
        %label{'for' => "#{prefix}_inventory_localhost", 'title' => _('Run on localhost')}
          %input{'type'       => "radio",
                 'ng-model'   => "vm.inventory_mode",
                 'value'      => "localhost",
                 'ng-change'  => "#{ng_model}.#{prefix}_inventory = 'localhost'",
                 'id'         => "#{prefix}_inventory_localhost",
                 'name'       => "#{prefix}_inventory_radio"}
          = _('Localhost')
        %br
        %label{'for' => "#{prefix}_inventory_specify", 'title' => _('Specify host values')}
          %input{'type'       => "radio",
                 'ng-model'   => "vm.inventory_mode",
                 'value'      => "specify",
                 'ng-change'  => "#{ng_model}.#{prefix}_inventory = ''",
                 'id'         => "#{prefix}_inventory_specify",
                 'name'       => "#{prefix}_inventory_radio"}
          = _('Specify host values')
        %br
        %textarea.form-control{'ng-model'    => "#{ng_model}.#{prefix}_inventory",
                               'ng-if'       => "vm.inventory_mode !== 'localhost'",
                                'name'        => "#{prefix}_inventory",
                                'maxlength'   => 512,
                                'miqrequired' => "",
                                'checkchange' => true}
          %span.help-block{"ng-show" => "angularForm.#{prefix}_inventory.$error.miqrequired"}
            = _("Required")
    .form-group{"ng-class" => "{'has-error': angularForm.#{prefix}_execution_ttl.$invalid}"}
      %label.col-md-3.control-label{"for" => "#{prefix}_execution_ttl"}
        = _("Max TTL (mins)")
      .col-md-9
        %input.form-control{:type         => "text",
                            'ng-model'    => "#{ng_model}.#{prefix}_execution_ttl",
                            :name         => "#{prefix}_execution_ttl",
                            :maxlength    => 50,
                            "ng-pattern"  => "/^\s*$|^[-+]?[0-9]+$/",
                            "checkchange" => true}
        %span{"style"=>"color:red", "ng-show" => "angularForm.#{prefix}_execution_ttl.$invalid"}
          = _("Max TTL value must be numeric")
    .form-group{"ng-if" =>"#{ng_model}.#{prefix}_log_output!==undefined", "ng-class" => "{'has-error': angularForm.#{prefix}_log_output.$invalid}"}
      %label.col-md-3.control-label{"for" => "#{prefix}_log_output"}
        = _("Logging Output")
      .col-md-9
        %select{"ng-model"    => "#{ng_model}.#{prefix}_log_output",
                "name"        => "#{prefix}_log_output",
                'ng-options'  => 'v as k for (v, k) in vm.log_output_types',
                "checkchange" => "",
                'miq-select'  => true}
    #escalate_privilege{"ng-if" => "(#{ng_model}.location === 'playbook' && #{ng_model}.#{prefix}_become_enabled!=null || vm.retirement_playbook_selected('#{prefix}')) && vm._#{prefix}_machine_credential && vm.enablePrivilegeEscalation(vm._#{prefix}_machine_credential)"}
      .form-group
        %label.col-md-3.control-label
          = _("Escalate Privilege")
        .col-md-9
          %input#become_enabled{"bs-switch"       => "",
                                "type"            => "checkbox",
                                "name"            => "#{prefix}_become_enabled",
                                "ng-model"        => "#{ng_model}.#{prefix}_become_enabled",
                                "switch-on-text"  => _("Yes"),
                                "switch-off-text" => _("No"),
                                "checkchange"     => ""}

    .form-group{"ng-if" => "#{ng_model}.location === 'playbook'"}
      %label.col-md-3.control-label
        = _('Verbosity')
      .col-md-9
        %select{"ng-model"    => "#{ng_model}.#{prefix}_verbosity",
                "name"        => "#{prefix}_verbosity",
                'ng-options'  => 'v as k for (v, k) in vm.verbosity_types',
                "checkchange" => "",
                'miq-select'  => true}

    - if prefix == "retirement"
      .form-group
        %label.col-md-3.control-label{"for" => "catalog_id"}
          = _('Remove resources?')
        .col-md-9
          %select{"ng-model"    => "#{ng_model}.retirement_remove_resources",
                  "name"        => "retirement_remove_resources",
                  'ng-options'  => "v as k for (k, v) in vm.remove_resources_types",
                  'checkchange' => "",
                  "miq-select"  => true}

  .col-md-12.col-lg-6{'ng-if' => "#{ng_model}.#{prefix}_variables!==undefined"}
    .form-group
      %label.col-md-3.control-label
        = _("Variables & Default Values")
      .col-md-4
        %input.form-control{:type         => "text",
               'ng-model'    => "#{ng_model}.#{prefix}_key",
               :name         => "#{prefix}_key",
               "placeholder" => _("Variable"),
               "checkchange" => ""}
        %span.help-block{"ng-show" => "(#{ng_model}.#{prefix}_key === '' && #{ng_model}.#{prefix}_value !== '')"}
          = _("Required")

      .col-md-4
        %input.form-control{:type         => "text",
               'ng-model'    => "#{ng_model}.#{prefix}_value",
               :name         => "#{prefix}_value",
               "placeholder" => _("Default value"),
               "checkchange" => ""}
        %span.help-block{"ng-show" => "(#{ng_model}.#{prefix}_key !== '' && #{ng_model}.#{prefix}_value === '')"}
          = _("Required")
      .col-md-1{:style     => "padding-left: 0"}
        %button{:class     => "btn btn-link",
                :type      => "button",
                "ng-click" => "vm.addKeyValue('#{prefix}')",
                "ng-if"    => "(#{ng_model}.#{prefix}_key != '' && #{ng_model}.#{prefix}_value != '')"}
          %span{:class => "fa fa-plus tag-add"}

    #variables_div{"ng-if" => "!vm.variablesEmpty('#{prefix}')"}
      .form-group
        %label.col-md-3.control-label
        .col-md-7
          %table.table.table-bordered.table-striped
            %thead
              %th
                = _("Variable")
              %th
                = _("Default value")
              %th
                = _("Actions")
            %tbody
              %tr{"ng-repeat" => "(key, key_value) in #{ng_model}.#{prefix}_variables track by $index", "ng-form" => "rowForm"}
                %td{"ng-if" => "!#{ng_model}.#{prefix}_editMode || (#{ng_model}.#{prefix}_editMode && $index !== #{ng_model}.s_index)"}
                  {{key}}
                %td{"ng-if" => "#{ng_model}.#{prefix}_editMode && $index === #{ng_model}.s_index"}
                  %input.form-control{:type         => "text",
                                      :name         => "key",
                                      'ng-model'    => "#{ng_model}.key",
                                      "ng-change" => "",
                                      "miqrequired" => ""}
                %td{"ng-if" => "!#{ng_model}.#{prefix}_editMode || (#{ng_model}.#{prefix}_editMode && $index !== #{ng_model}.s_index)"}
                  {{key_value}}
                %td{"ng-if" => "#{ng_model}.#{prefix}_editMode && $index === #{ng_model}.s_index"}
                  %input.form-control{:type         => "text",
                                      :name         => "key_value",
                                      'ng-model'    => "#{ng_model}.key_value",
                                      "ng-change" => "",
                                      "miqrequired" => ""}

                %td.table-view-pf-select
                  %div{"ng-if" => "#{ng_model}.#{prefix}_editMode && $index === #{ng_model}.s_index"}
                    %button{:class => "btn btn-link", :type => "button", "ng-disabled" => "(#{ng_model}.key === '' || #{ng_model}.key_value === '')", "ng-click" => "vm.saveKeyValue('#{prefix}')"}
                      %i.pficon.pficon-save
                    %button{:class => "btn btn-link", :type => "button", "ng-click" => "vm.cancelKeyValue('#{prefix}')"}
                      %i.pficon.pficon-close

                  %div{"ng-if" => "!#{ng_model}.#{prefix}_editMode || (#{ng_model}.#{prefix}_editMode && $index !== #{ng_model}.s_index)", :class => "btn-container"}
                    %button{:class => "btn btn-link", :type => "button", "ng-click" => "vm.editKeyValue('#{prefix}', this.key, this.key_value, $index)", "ng-disabled" => "#{ng_model}.#{prefix}_editMode"}
                      %span{:class => "pficon pficon-edit"}
                    %button{:class => "btn btn-link", :type => "button", "ng-click" => "vm.removeKeyValue('#{prefix}', this.key, this.key_value, $index)", "ng-disabled" => "#{ng_model}.#{prefix}_editMode"}
                      %span{:class => "pficon pficon-delete"}

    - if prefix == "provisioning"
      .form-group
        %label.col-md-3.control-label
          = _("Dialog")
        .col-md-3
          %label.radio-inline
            %input{"ng-model" => "vm.#{prefix}_dialog_existing", :type => "radio", :value => "existing", "ng-value" => "existing", "ng-click" => "vm.toggleDialogSelection('#{prefix}', 'existing')", "ng-checked" => "#{ng_model}.#{prefix}_dialog_existing == 'existing'"}
            = _("Use Existing")
        .col-md-6{"ng-class" => "{'has-error': angularForm.#{prefix}_dialog_id.$invalid}", "ng-if" => "#{ng_model}.#{prefix}_dialog_existing == 'existing'"}
          %select{"ng-model"         => "vm._#{prefix}_dialog",
                  "name"             => "#{prefix}_dialog_id",
                  'ng-options'       => 'dialog as dialog.label for dialog in vm.dialogs',
                  "ng-required"      => "vm.fieldsRequired('#{prefix}') && #{ng_model}.#{prefix}_dialog_existing == 'existing'",
                  :checkchange       => true,
                  "data-live-search" => "true",
                  'miq-select'       => true}
            %option{"value" => ""}
              = "<#{_('Choose')}>"
            %span.help-block{"ng-show" => "angularForm.#{prefix}_dialog_id.$error.$invalid"}
              = _("Required")

      .form-group
        %label.col-md-3.control-label
        .col-md-3
          %label.radio-inline
            %input{"ng-model" => "vm.#{prefix}_dialog_existing", :type => "radio", :value => "create", :ng-value => "create", "ng-click" => "vm.toggleDialogSelection('#{prefix}', 'create')", "ng-checked" => ("#{ng_model}.#{prefix}_dialog_existing == 'create'")}
            = _("Create New")
        .col-md-6{"ng-class" => "{'has-error': angularForm.#{prefix}_dialog_name.$invalid}", "ng-if" => "#{ng_model}.#{prefix}_dialog_existing == 'create'"}
          %input.form-control{:type         => "text",
                              'ng-model'    => "#{ng_model}.#{prefix}_dialog_name",
                              'ng-change'   => "dialogNameValidation()",
                              :name         => "vm.#{prefix}_dialog_name",
                              :maxlength    => 50,
                              "ng-required" => "vm.fieldsRequired('#{prefix}') && #{ng_model}.#{prefix}_dialog_existing == 'create'",
                              "checkchange" => ""}
            %span.help-block{"ng-show" => "angularForm.#{prefix}_dialog_name.$error.$invalid"}
              = _("Required")

.row{'ng-if' => "((#{ng_model}.location === 'playbook') || (#{ng_model}.location === 'ansible_job_template') || (#{ng_model}.location === 'ansible_workflow_template')) && #{ng_model}.#{prefix}_inputs"}
  = render :partial => "miq_ae_class/angular_inputs_form",
           :locals  => {:ng_model => "vm.aeMethodModel",
                        :prefix   => "provisioning"}