import BasicWidget from "../basic_widget.js"; import froca from "../../services/froca.js"; import bulkActionService from "../../services/bulk_action.js"; import utils from "../../services/utils.js"; import server from "../../services/server.js"; import toastService from "../../services/toast.js"; const TPL = ` `; export default class BulkActionsDialog extends BasicWidget { doRender() { this.$widget = $(TPL); this.$includeDescendants = this.$widget.find(".include-descendants"); this.$includeDescendants.on("change", () => this.refresh()); this.$affectedNoteCount = this.$widget.find(".affected-note-count"); this.$availableActionList = this.$widget.find(".bulk-available-action-list"); this.$existingActionList = this.$widget.find(".bulk-existing-action-list"); this.$widget.on('click', '[data-action-add]', async event => { const actionName = $(event.target).attr('data-action-add'); await bulkActionService.addAction('bulkaction', actionName); await this.refresh(); }); this.$executeButton = this.$widget.find(".execute-bulk-actions"); this.$executeButton.on("click", async () => { await server.post("bulk-action/execute", { noteIds: this.selectedOrActiveNoteIds, includeDescendants: this.$includeDescendants.is(":checked") }); toastService.showMessage("Bulk actions have been executed successfully.", 3000); utils.closeActiveDialog(); }); } async refresh() { this.renderAvailableActions(); const {affectedNoteCount} = await server.post('bulk-action/affected-notes', { noteIds: this.selectedOrActiveNoteIds, includeDescendants: this.$includeDescendants.is(":checked") }); this.$affectedNoteCount.text(affectedNoteCount); const bulkActionNote = await froca.getNote('bulkaction'); const actions = bulkActionService.parseActions(bulkActionNote); this.$existingActionList.empty(); if (actions.length > 0) { this.$existingActionList.append(...actions.map(action => action.render())); } else { this.$existingActionList.append($("

None yet ... add an action by clicking one of the available ones above.

")) } } renderAvailableActions() { this.$availableActionList.empty(); for (const actionGroup of bulkActionService.ACTION_GROUPS) { const $actionGroupList = $(""); const $actionGroup = $("") .append($("").text(actionGroup.title + ": ")) .append($actionGroupList); for (const action of actionGroup.actions) { $actionGroupList.append( $('