app/views/pinboard_items/update.js.erb
var pinboardRemoteUpdate = {};
Object.assign(pinboardRemoteUpdate, {
alreadyInserted: <%= @pinboard_item.is_inserted -%>,
pinboardItem: document.querySelector('[data-pinboard-object-id="<%= @pinboard_item.pinned_object.id -%>"]'),
defaultExist: document.querySelector('[data-pinboard-object-id="<%= @pinboard_item.pinned_object.id -%>"]')
.parentNode.querySelector('[data-insert="true"]'),
init: function () {
if (this.defaultExist != undefined) {
this.changeLink(this.defaultExist, false);
}
this.changeLink(this.pinboardItem, (this.alreadyInserted ? true : false));
this.eventPinboardInsert();
TW.workbench.pinboard.setDefaultClass();
$('body').mx_spinner('hide');
},
changeLink: function (pinElement, inserted) {
pinElement.setAttribute('data-insert', inserted);
pinElement.querySelector('.itemOptions').replaceChild(this.createUrl(pinElement.dataset.pinboardItemId, (!inserted)),
pinElement.querySelector('.itemOptions .option-default'));
},
createUrl: function (id, inserted) {
var newEl = document.createElement('a');
newEl.innerHTML = (inserted ? 'Make default' : 'Disable default');
newEl.setAttribute('href', '/pinboard_items/' + id + '?pinboard_item%5Bis_inserted%5D=' + inserted);
newEl.setAttribute('data-remote', 'true');
newEl.setAttribute('rel', 'nofollow');
newEl.setAttribute('title', (inserted ? 'Make default' : 'Disable default'));
newEl.setAttribute('data-method', 'put');
newEl.classList.add('circle-button', 'button-pinboard-default', (inserted ? 'button-submit' : 'button-delete'), 'option-default');
return newEl;
},
eventPinboardInsert: function () {
var event = new CustomEvent("pinboard:insert", {
detail: {
id: <%= @pinboard_item.pinned_object_id -%>,
type: "<%= @pinboard_item.pinned_object_type -%>",
object_id: <%= @pinboard_item.pinned_object.id -%>,
is_inserted: <%= @pinboard_item.is_inserted -%>
}
});
document.dispatchEvent(event);
}
});
pinboardRemoteUpdate.init();