Page Menu
Home
GRNET
Search
Configure Global Search
Log In
Files
F1300412
bulky.coffee
No One
Temporary
Actions
Download 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
Wed, Nov 19, 1:48 PM
Size
8 KB
Mime Type
text/x-c++
Expires
Fri, Nov 21, 1:48 PM (9 h, 50 m)
Engine
blob
Format
Raw Data
Handle
293204
Attached To
rWEBDNS WebDNS (edet4)
bulky.coffee
View Options
class
window
.
Bulky
constructor:
(valid_record_url, submit_url) ->
@enabled =
false
@deletes =
{}
@changes =
{}
@additions =
{}
@add_counter =
0
@valid_record_url =
valid_record_url
@submit_url =
submit_url
@hooked =
false
@hook
()
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
$
(
'#bulk-panel'
).
removeClass
(
'hidden'
)
$
(
'#new_record .btn'
).
attr
(
'value'
,
'Bulk Add'
)
$
(
'#records .js-bulk-hide'
).
hide
()
@enabled =
true
disable:
->
return
if
!
@enabled
$
(
'#bulk-panel'
).
addClass
(
'hidden'
)
$
(
'#inline-record-form .btn'
).
attr
(
'value'
,
'Add'
)
$
(
'#records .js-bulk-hide'
).
show
()
@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