Sha256: 92f811965d23bafcbda2f48602ea921f946fea8c5980c912526d4002cb790918

Contents?: true

Size: 1.48 KB

Versions: 41

Compression:

Stored size: 1.48 KB

Contents

class Tenon.features.AssetCropping
  constructor: ->
    $(document).on('click', '.asset-crop', @_loadCrop)
    $(document).on('click', '.asset-cropping .close', @_cancelCrop)
    $(document).on('ajax:success', '.asset-cropping form[data-remote]', @_saveCrop)
    $(document).keyup (ev) =>
      @_cancelCrop(ev) if ev.keyCode is 27
    $(document).on('click', '.save', @_showSpinner)

  _showSpinner: (e) ->
    $('.spinner').fadeIn()

  _loadCrop: (e) =>
    e.preventDefault()
    @$link = $(e.currentTarget)
    url = "/tenon/assets/#{@$link.data('asset-id')}/crop"
    $.get(url, {format: 'html'}, @_startCrop, 'html')

  _cancelCrop: (e) ->
    e.preventDefault()
    $('.asset-cropping').remove()

  _startCrop: (data) =>
    $(data).appendTo('body')
    $cropbox = $('#cropbox')

    $("#cropbox").Jcrop
      onChange: @_updateCrop
      onSelect: @_updateCrop
      boxWidth: $(window).width() * 0.8
      boxHeight: $(window).height() * 0.75

  _saveCrop: (e, data) =>
    if @$link.data('post-crop-handler')
      @_sendToHandler(data)
    else
      $('.asset-cropping').remove()

  _sendToHandler: (data) =>
    parts = @$link.data('post-crop-handler').split('.')
    method = window
    $(parts).each (i, part) -> method = method[part]
    new method(@$link, data)

  _updateCrop: (coords) ->
    ratio = $('#cropbox').data('width') / $('#cropbox').width()
    $('#asset_crop_x').val(coords.x)
    $('#asset_crop_y').val(coords.y)
    $('#asset_crop_w').val(coords.w)
    $('#asset_crop_h').val(coords.h)

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
tenon-1.0.41 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.40 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.39 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.38 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.37 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.36 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.35 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.33 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.32 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.31 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.30 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.29 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.28 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.27 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.26 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.25 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.24 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.23 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.22 app/assets/javascripts/tenon/features/asset_cropping.js.coffee
tenon-1.0.21 app/assets/javascripts/tenon/features/asset_cropping.js.coffee