Files
grecia/app/assets/javascripts/imageable.js.coffee
2017-09-26 13:55:03 +02:00

102 lines
3.1 KiB
CoffeeScript

App.Imageable =
initialize: ->
@initializeDirectUploads()
@initializeInterface()
initializeDirectUploads: ->
$('input.image_ajax_attachment[type=file]').fileupload
paramName: "image[attachment]"
formData: null
add: (e, data) ->
wrapper = $(e.target).closest('.image')
index = $(e.target).data('index')
is_nested_image = $(e.target).data('nested-image')
$(wrapper).find('.progress-bar-placeholder').empty()
data.progressBar = $(wrapper).find('.progress-bar-placeholder').html('<div class="progress-bar"><div class="loading-bar uploading"></div></div>')
$(wrapper).find('.progress-bar-placeholder').css('display','block')
data.formData = {
"image[title]": $(wrapper).find('input.image-title').val() || data.files[0].name
"index": index,
"nested_image": is_nested_image
}
data.submit()
change: (e, data) ->
wrapper = $(e.target).parent()
$.each(data.files, (index, file)->
$(wrapper).find('.file-name').text(file.name)
)
progress: (e, data) ->
progress = parseInt(data.loaded / data.total * 100, 10)
$(data.progressBar).find('.loading-bar').css 'width', progress + '%'
return
initializeInterface: ->
input_files = $('input.image_ajax_attachment[type=file]')
$.each input_files, (index, file) ->
wrapper = $(file).parent()
App.Imageable.watchRemoveImagebutton(wrapper)
watchRemoveImagebutton: (wrapper) ->
remove_image_button = $(wrapper).find('.remove-image')
$(remove_image_button).on 'click', (e) ->
e.preventDefault()
$(wrapper).remove()
$('#new_image_link').show()
$('.max-images-notice').hide()
uploadNestedImage: (id, nested_image, result) ->
$('#' + id).replaceWith(nested_image)
@updateLoadingBar(id, result)
@initialize()
uploadPlainImage: (id, nested_image, result) ->
$('#' + id).replaceWith(nested_image)
@updateLoadingBar(id, result)
@initialize()
updateLoadingBar: (id, result) ->
if result
$('#' + id).find('.loading-bar').addClass 'complete'
else
$('#' + id).find('.loading-bar').addClass 'errors'
$('#' + id).find('.progress-bar-placeholder').css('display','block')
new: (nested_fields) ->
$(".images-list").append(nested_fields)
@initialize()
destroyNestedImage: (id, notice) ->
$('#' + id).remove()
@updateNotice(notice)
replacePlainImage: (id, notice, plain_image) ->
$('#' + id).replaceWith(plain_image)
@updateNotice(notice)
@initialize()
updateNotice: (notice) ->
if $('[data-alert]').length > 0
$('[data-alert]').replaceWith(notice)
else
$("body").append(notice)
updateNewImageButton: (link) ->
if $('.image').length >= $('.images').data('max-images')
$('#new_image_link').hide()
$('.max-images-notice').removeClass('hide')
$('.max-images-notice').show()
else if $('#new_image_link').length > 0
$('#new_image_link').replaceWith(link)
$('.max-images-notice').hide()
else
$('.max-images-notice').hide()
$(link).insertBefore('.images hr:last')