andreychernih/railsbox

View on GitHub
app/views/boxes/steps/_step3_environments.html.slim

Summary

Maintainability
Test Coverage
a.anchor#environments
.row.step.step3 ng-controller='EnvironmentsController'
  .col-lg-1.step-number.visible-lg-block
    h1 3
  .col-lg-11.step-conf
    .panel.panel-default
      .panel-heading
        h2.panel-title Environments
      .panel-body
        .dropdown ng-hide='allActive()'
          button.btn.btn-lg.btn-default.dropdown-toggle type='button' data-toggle='dropdown' id='environmentsMenu'
            = t('boxes.form.add_environment')
            ' 
            span.caret
          ul.dropdown-menu role='menu' aria-labelledby='environmentsMenu'
            li ng-repeat='environment in allObjects' role='presentation' ng-hide='isActive(environment.id)'
              a role='menuitem' tabindex='-1' href='#' ng-click='add(environment.id)' {{ environment.id }}

        .panel.panel-primary.database ng-repeat='environment in activeObjects'
          input type='hidden' name='box[environments][]' value='{{ environment }}'

          .panel-heading {{ environment }}
          .panel-body
            p
              label.radio-inline
                input name='box[{{ environment }}][target]' type='radio' value='virtualbox' ng-model='configuration[environment].target'
                ' VirtualBox
              label.radio-inline
                input name='box[{{ environment }}][target]' type='radio' value='server' ng-model='configuration[environment].target'
                = t('boxes.form.remote_server')

            br

            div ng-show="configuration[environment].target == 'virtualbox'"
              .row
                .col-lg-8
                  .row
                    .col-lg-12
                      .form-group
                        label.checkbox-inline
                          input type='checkbox' name='box[{{ environment }}][autoconf]' value='true' ng-model='configuration[environment].autoconf'
                          = t('boxes.form.autoconf')
                          p.small VirtualBox will use all of available CPU cores and 1/3 of available RAM. This option is recommended if you are using one virtual machine at a time.

                  .row ng-hide='configuration[environment].autoconf'
                    .col-lg-4
                      .form-group
                        label for='{{ environment }}_vm_memory'= t('boxes.form.memory')
                        input.form-control ng-required='isVirtualBox()' id='{{ environment }}_vm_memory' name='box[{{ environment }}][vm_memory]' type='text' ng-model='configuration[environment].vm_memory' ng-pattern="/^[0-9]+$/"
                    .col-lg-4
                      .form-group
                        label for='{{ environment }}_vm_swap' Swap, Mb
                        input.form-control ng-required='isVirtualBox()' id='{{ environment }}_vm_swap' name='box[{{ environment }}][vm_swap]' type='text' ng-model='configuration[environment].vm_swap' ng-pattern="/^[0-9]+$/"
                    .col-lg-4
                      .form-group
                        label for='{{ environment }}_vm_cores' CPU cores
                        select.form-control ng-required='isVirtualBox()' id='{{ environment }}_vm_cores' name='box[{{ environment }}][vm_cores]' ng-options='coreNum for coreNum in coresList track by coreNum' ng-model='configuration[environment].vm_cores'
                  .row
                    .col-lg-6
                      .form-group
                        label for='{{ environment }}_vm_share_type'= t('boxes.form.share_type')
                        select.form-control ng-required='isVirtualBox()' id='{{ environment }}_vm_share_type' name='box[{{ environment }}][vm_share_type]' ng-model='configuration[environment].vm_share_type' ng-options='t.label for t in shareTypes track by t.id'
                    .col-lg-6
                      .form-group
                        label for='{{ environment }}_vm_ip' IP address
                        input.form-control ng-required='isVirtualBox()' type='text' id='{{ environment }}_vm_ip' name='box[{{ environment }}][vm_ip]' ng-model='configuration[environment].vm_ip'
                .col-lg-4 ng-controller='VirtualMachineController'
                  label for='{{ environment }}_new_guest_port' Port forwarding
                  table.table.table-bordered
                    thead
                      tr
                        th Guest port
                        th Host port
                        th
                    tbody
                      tr ng-repeat='port in configuration[environment].vm_ports'
                        input type='hidden' name='box[{{ environment }}][vm_ports[{{ $index }}][guest]]' value='{{ port.guest }}'
                        input type='hidden' name='box[{{ environment }}][vm_ports[{{ $index }}][host]]' value='{{ port.host }}'
                        td {{ port.guest }}
                        td {{ port.host }}
                        td
                          button.btn.btn-danger type='button' ng-click='deletePort($index)' Delete
                      tr
                        td
                          input.form-control id='{{ environment }}_new_guest_port' type='number' placeholder='guest port' ng-model='newGuestPort'
                        td
                          input.form-control type='number' placeholder='host port' ng-model='newHostPort'
                        td
                          button.btn.btn-default type='button' ng-disabled='!newGuestPort || !newHostPort' ng-click='addPort()' Add

            div ng-show="configuration[environment].target == 'server'"
              p.small SSH connection will be used to provision and deploy. Your default private key will be used to authenticate.
              .row
                .col-lg-6
                  .form-group
                    label for='{{ environment }}_host'= t('boxes.form.server_host')
                    input.form-control id='{{ environment }}_host' name='box[{{ environment }}][host]' type='text' ng-model='configuration[environment].host' ng-required='isServer()'
                .col-lg-3
                  .form-group
                    label for='{{ environment }}_port'= t('boxes.form.server_port')
                    input.form-control id='{{ environment }}_port' name='box[{{ environment }}][port]' type='text' ng-model='configuration[environment].port' ng-required='isServer()'
                .col-lg-3
                  .form-group
                    label for='{{ environment }}_username'= t('boxes.form.server_username')
                    input.form-control id='{{ environment }}_username' name='box[{{ environment }}][username]' type='text' ng-model='configuration[environment].username' ng-required='isServer()'

            button.btn.btn-danger.pull-right type='button' ng-show='activeObjects.length > 1' ng-click="delete(environment)" Delete