Sha256: 3414799bfa0eb6e664b99cdea51d3cbd45871cf4be99e52b4b832dd1f1691b73

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

angular.module('EssayApp.directives').directive "filesRequired", ['validationModifier', '$timeout', (validationModifier, $timeout) ->
  restrict: 'A'
  scope: true
  require: "ngModel"
  link: (scope, element, attrs, ngModel) ->
    $timeout (->
      # applyValidation()
      $('[uploader] .template-upload').detach()
    ), 10, true

    filesCount = ->
      $('[uploader] a.delete')?.length

    validFiles = () ->
      return (filesCount() > 0) || !(attrs.filesRequired? && scope.$eval(attrs.filesRequired))

    $timeout (->
      $('[uploader]').trigger 'uploader.update'
    ), 100, true

    ngModel.$validators.required = (val)->
      validFiles()

    applyValidation = ->
      ngModel.$validate()
      if ngModel.$valid || ngModel.$untouched
        validationModifier.makeValid($('[uploader] input[type="file"]'))
        $('[uploader] input[type="file"]').removeClass('ng-invalid')
      else
        validationModifier.makeInvalid($('[uploader] input[type="file"]'), element.data('errorRequired') || 'file required')

    $('[uploader] input[type="file"]').on 'fileuploadalways fileuploadstop fileuploaddestroy fileuploaddestroyed', ->
      $timeout (->
        $('[uploader]').trigger('uploader.update')
        $('[uploader]').trigger('uploader.save_files')
        $timeout (->
          $('[uploader]').trigger('uploader.update')
        ), 500, true
      ), 100, true

    $('[uploader]').on 'change uploader.remove_file uploader.update', ->
      applyValidation()

      $('[uploader] .icon.delete').off('click.upload_watcher').on 'click.upload_watcher', ->
        $timeout (->
          # applyValidation()
          $(this).closest('.template-download').detach()
          $('[uploader]').trigger('uploader.update')
        ), 100, true
]

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
translation_cms-0.1.5 app/assets/javascripts/app/directives/files_required.js.coffee