Page Menu
Home
GRNET
Search
Configure Global Search
Log In
Files
F886082
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Aug 8, 8:43 PM
Size
9 KB
Mime Type
text/x-diff
Expires
Sun, Aug 10, 8:43 PM (15 h, 17 m)
Engine
blob
Format
Raw Data
Handle
245684
Attached To
rWEBDNS WebDNS (edet4)
View Options
diff --git a/app/assets/javascripts/bulky.coffee b/app/assets/javascripts/bulky.coffee
index ccc7e76..db41247 100644
--- a/app/assets/javascripts/bulky.coffee
+++ b/app/assets/javascripts/bulky.coffee
@@ -1,206 +1,225 @@
class window.Bulky
constructor: (valid_record_url, submit_url) ->
@enabled = false
- @deletes = {}
- @changes = {}
- @additions = {}
- @add_counter = 0
+ this.initValues()
@valid_record_url = valid_record_url
@submit_url = submit_url
@hooked = false
@hook()
+ initValues: () ->
+ @deletes = {}
+ @changes = {}
+ @additions = {}
+ @add_counter = 0
+
panel_update: () ->
added = (a for own a of @additions).length
changed = (c for own c of @changes).length
deleted = (d for own d of @deletes).length
$('#bulk-panel .added').text(added)
$('#bulk-panel .changed').text(changed)
$('#bulk-panel .deleted').text(deleted)
marked_for_delete: (id) ->
return @deletes[id]
update: (id, attr, value) ->
@changes[id] or= {}
@changes[id][attr] = value
$("#record-#{id}").addClass('modified')
@panel_update()
add: (rec) ->
@add_counter += 1
@additions[@add_counter] = rec
@panel_update()
@add_counter
validate_add: (arr) ->
_me = this
$.ajax {
url: @valid_record_url,
type: 'post',
dataType: 'json',
data: arr,
success: (data) ->
if data.errors
alert(data.errors)
return
id = _me.add(data.record)
_me.render_new(id, data.record)
error: () ->
alert('There was an error processing your request...')
}
render_new: (id, rec) ->
el = $('#new_records .clone').clone()
el.removeClass('clone').removeClass('hidden')
el.attr('id', "fresh-#{id}")
for attr in ['name', 'ttl', 'type', 'prio', 'content']
if rec[attr]
el.find(".#{attr}").text(rec[attr])
el.find('a.js-destroy').data('id', id).data('fresh', true)
$('#new_records tbody').append(el)
$('#new_records').removeClass('hidden')
render_errors: (errors) ->
if errors.deletes
deleted = ("#record-#{d}" for own d of errors.deletes)
txt = " (#{deleted.length} failed to delete)"
$('#bulk-panel .failed-deleted').text(txt).data(ids:deleted)
if errors.changes
changed = ("#record-#{c}" for own c of errors.changes)
txt = " (#{changed.length} failed to be updated)"
$('#bulk-panel .failed-changed').text(txt).data(ids:changed)
if errors.additions
added = ("#fresh-#{a}" for own a of errors.additions)
txt = " (#{added.length} failed to be added)"
$('#bulk-panel .failed-added').text(txt).data(ids:added)
render_clear_errors: ->
$('#bulk-panel .failed').text('')
enable: ->
return if @enabled
+ # hide bulk mode button
+ $('#js-bulky-activate').hide()
+ # show bulk panel
$('#bulk-panel').removeClass('hidden')
+ # Change Add button
$('#new_record .btn').attr('value', 'Bulk Add')
+ # Hide disabled buttons for bulk mode
$('#records .js-bulk-hide').hide()
@enabled = true
disable: ->
return if !@enabled
+ # hide the bulk panel
$('#bulk-panel').addClass('hidden')
+ # Revert add button to original value
$('#inline-record-form .btn').attr('value', 'Add')
+ # show the buttons that bulk mode hides
$('#records .js-bulk-hide').show()
+ # hide new records table
+ $('#new_records').hide()
+ # show bulk mode button
+ $('#js-bulky-activate').show()
+
+ # revert variables to initial values
+ this.initValues()
+ # update the panel to reflect the new values
+ this.panel_update()
@enabled = false
commit: ->
data = {
deletes: id for id, _ of @deletes,
# changes: rec for id, rec of @changes when !@deletes[id],
changes: @changes,
additions: @additions
}
@render_clear_errors()
_me = this
$.ajax {
url: @submit_url,
type: 'post',
data: JSON.stringify(data),
dataType: 'json',
contentType:'application/json',
success: (data) ->
console.log data
if data.errors
_me.render_errors(data.errors)
return
alert('Bulk operations successfully committed!')
location.reload()
error: () ->
alert('There was an error submiting bulk operations')
}
hook: ->
return if @hooked
_me = this
# Hook bulky buttons
$('#js-bulky-activate').click ->
_me.enable()
- $(this).parents('li').remove()
$('#js-bulky-cancel').click ->
_me.disable()
$('#js-bulky-commit').click ->
_me.commit()
$('#bulk-panel .js-modified-hover').hover \
-> $('.modified').addClass('highlight')
,
-> $('.modified').removeClass('highlight')
$('#bulk-panel .failed').hover \
-> $($(this).data('ids').join(', ')).addClass('highlight')
,
-> $($(this).data('ids').join(', ')).removeClass('highlight')
# Hook destroy button
$('#records, #new_records').on 'click', 'a.js-destroy', () ->
return true if !_me.enabled
link = $(this)
id = link.data('id')
fresh = link.data('fresh')
# Drop a newly created record
if fresh
delete _me.additions[id]
link.parents("#fresh-#{id}").remove()
# Resurrect a delete record
else if link.data('deleted')
delete _me.deletes[id]
link.data('deleted', false)
link.parents('tr').removeClass('danger')
link.parents('tr').attr('title', 'Remove')
link.find('span').removeClass('glyphicon-plus').addClass('glyphicon-remove')
# Delete a record
else
_me.deletes[id] = true
link.data('deleted', true)
link.parents('tr').addClass('danger')
link.find('abbr').attr('title', 'Undo')
link.find('span').removeClass('glyphicon-remove').addClass('glyphicon-plus')
_me.panel_update()
return false;
# Hook add button
$('#new_record').submit () ->
return true if !_me.enabled
_me.validate_add $(this).serializeArray()
return false;
@hooked = true
debug: ->
console.log("Bulky, enabled=#{@enabled}")
for id, rec of @additions
change = for k, v of rec
"#{k}: #{v}"
console.log("Add #{id}: #{change}")
for id, rec of @changes
change = for k, v of rec
"#{k}: #{v}"
console.log("Change #{id}: #{change}")
for id, _ of @deletes
console.log("Delete #{id}")
Event Timeline
Log In to Comment