include ./mixins/editable.jade
include ./mixins/sidebar.jade

.row.docs-row
  .hidden-xs.col-sm-3
    +sidebar(true)
  .col-md-9.docs-col
    .api-info
      h1
        span(editable-text="spec.info.title" blur="submit") {{ spec.info.title || 'Add title' }}
      p.editable-full-width
        span(editable-text="spec.info['x-summary']" blur="submit") {{ spec.info['x-summary'] || 'Add summary' }}
      p.editable-full-width
        span(ng-if="spec.info['x-logo']") Logo URL:&nbsp;
        span(editable-text="spec.info['x-logo']" blur="submit") {{ spec.info['x-logo'] || 'Add logo URL' }}
      p(ng-if="spec.info['x-logo']")
        img(ng-src="{{ spec.info['x-logo'] }}")
    .api-details
      p
        span Host:&nbsp;
        span(editable-text="spec.host" blur="submit") {{ spec.host || 'add host (required)' }}
      p
        span Base Path:&nbsp;
        span(editable-text="spec.basePath" blur="submit") {{ spec.basePath || 'add basePath' }}
    #README.row.scroll-target
      .col-md-12
        +edit-markdown('README', 'spec.info["x-lucy/readme"]')
    .row.scroll-route.scroll-target(
        ng-controller="Route"
        ng-repeat="route in routesFiltered"
        id="ScrollRoute{{$index}}")
      .col-md-12
        hr(ng-if="$index !== 0")
        h2.text-regular
          span
            span.text-uppercase(
                editable-select="route.method"
                e-ng-options="i for i in ['get', 'put', 'post', 'delete', 'options', 'head', 'patch']"
                blur="submit"
                data-verb="{{ route.method }}") {{ route.method }}
            span &nbsp;
            span(editable-text="route.path" blur="submit") {{ route.path }}
        p.editable-full-width
          span(editable-text="route.operation.summary" blur="submit") {{ route.operation.summary || 'Add summary' }}
        +edit-markdown('Operation Description', 'route.operation.description')
      .col-md-6.docs-request-col
        h4 Parameters
        div(ng-controller="DocParameter"
            ng-repeat="parameter in route.operation.parameters")
          p.parameter-title
            strong.parameter-detail-label Name:&nbsp;
            span(editable-text="parameter.name" blur="submit") {{ parameter.name }}
            span &nbsp;&nbsp;
            i.show-cursor.fa.fa-caret-up(
                ng-if="$index !== 0"
                ng-click="moveParameter($index, -1)")
            span &nbsp;&nbsp;
            i.show-cursor.fa.fa-caret-down(
                ng-if="$index !== route.operation.parameters.length - 1"
                ng-click="moveParameter($index, 1)")
            span &nbsp;&nbsp;
            i.show-cursor.text-danger.fa.fa-times(
                ng-click="removeParameter($index)")
          .parameter-details
            p
              span.parameter-detail-label In:&nbsp;
              span(editable-select="parameter.in" blur="submit"
                   e-ng-options="i as i for i in ['path', 'query', 'header', 'body', 'formData']") {{ parameter.in }}
            p
              span.parameter-detail-label Type:&nbsp;
              span(editable-select="parameter.type" blur="submit"
                  e-ng-options="i as i for i in ['string', 'number', 'integer', 'boolean', 'array', 'file']") {{ parameter.type }}
            p
              span.parameter-detail-label Required:&nbsp;
              input(type="checkbox" ng-model="parameter.required")
            p
              span.parameter-detail-label Example:&nbsp;
              span(editable-text="parameter['x-example']" blur="submit").
                {{ parameter['x-example'] || 'add example'}}
            p
              span.parameter-detail-label Console Default:&nbsp;
              span(editable-text="parameter['x-consoleDefault']" blur="submit").
                {{ parameter['x-consoleDefault'] || "add default" }}
            p
              span.parameter-detail-label Enum:&nbsp; 
              input(type="checkbox" ng-model="hasEnum" ng-change="toggleEnum()")
              div(ng-if="parameter.enum")
                .enum-list
                  ul.enum-list
                    li(ng-repeat="item in parameter.enum track by $index")
                      i.show-cursor.fa.fa-times.text-danger(ng-click="removeEnumItem($index)")
                      span &nbsp;
                      span(editable-text="parameter.enum[$index]" blur="submit") {{ parameter.enum[$index] }}
                    li
                      a(ng-click="parameter.enum.push('value')") Add value
            p
              div(ng-if="parameter.in === 'body'")
                +edit-schema('Schema', 'parameter.schema')
            p
              +edit-markdown('Parameter Description', 'parameter.description')
            p(ng-if="parameter.type === 'array'")
              span Collection Format:&nbsp;
              span(editable-select="parameter.collectionFormat" blur="submit"
                   e-ng-options="i as i for i in ['csv', 'ssv', 'tsv', 'pipes', 'multi']")
        h4
          a.text-lg(ng-click="addParameter()") Add Parameter
      .col-md-6.docs-response-col
        h4 Responses
        div(ng-repeat="(code, response) in route.operation.responses" ng-controller="ResponseCode")
          p
            strong
              span Response&nbsp;&nbsp;
              span(editable-text="code" blur="submit" onbeforesave="save($data)") {{ code }}
              span &nbsp;&nbsp;
              small
                i.text-danger.show-cursor.fa.fa-times(ng-click="removeResponse(code)")
          .response-details
            p
              +edit-markdown('Response Description', 'response.description')
            p
              +edit-schema('Response Schema', 'response.schema')
            p
              +edit-code('Visual HTML', 'response["x-lucy/view"]', 'htmlmixed')
        h4
          a.text-lg(ng-click="addResponse()") Add Response
