From b8d99a2f9a6067c2674978360648ab2f869235b2 Mon Sep 17 00:00:00 2001 From: Devin Howard Date: Wed, 1 Mar 2017 08:15:57 -0800 Subject: [PATCH] ability to select/unselect all metacodes in custom set with keyboard shortcut --- frontend/src/Metamaps/Create.js | 17 ++++++++++++++++- frontend/src/Metamaps/Listeners.js | 7 ++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/frontend/src/Metamaps/Create.js b/frontend/src/Metamaps/Create.js index 466900e5..f0f5e08a 100644 --- a/frontend/src/Metamaps/Create.js +++ b/frontend/src/Metamaps/Create.js @@ -44,6 +44,22 @@ const Create = { self.newSelectedMetacodeNames.push($(this).attr('data-name')) } }, + metacodeSelectorToggleSelectAll: function() { + // should be called when Create.isSwitchingSet is true and .customMetacodeList is visible + if (!Create.isSwitchingSet) return + if (!$('.customMetacodeList').is(':visible')) return + + // If all are selected, then select none. Otherwise, select all. + const anyToggledOff = $('.customMetacodeList li').toArray() + .map(li => $(li).is('.toggledOff')) + .reduce((curr, prev) => curr || prev) + if (anyToggledOff) { + $('.customMetacodeList li.toggledOff').each(Create.toggleMetacodeSelected) + } else { + // this should be every single one + $('.customMetacodeList li').not('.toggledOff').each(Create.toggleMetacodeSelected) + } + }, updateMetacodeSet: function(set, index, custom) { if (custom && Create.newSelectedMetacodes.length === 0) { window.alert('Please select at least one metacode to use!') @@ -114,7 +130,6 @@ const Create = { } }) }, - cancelMetacodeSetSwitch: function() { var self = Create self.isSwitchingSet = false diff --git a/frontend/src/Metamaps/Listeners.js b/frontend/src/Metamaps/Listeners.js index c3b644df..ea34f396 100644 --- a/frontend/src/Metamaps/Listeners.js +++ b/frontend/src/Metamaps/Listeners.js @@ -1,6 +1,7 @@ /* global $ */ import Active from './Active' +import Create from './Create' import Control from './Control' import DataModel from './DataModel' import JIT from './JIT' @@ -35,7 +36,11 @@ const Listeners = { Control.deleteSelected() break case 65: // if a or A is pressed - if ((e.ctrlKey || e.metaKey) && onCanvas) { + if (Create.isSwitchingSet && e.ctrlKey || e.metaKey) { + Create.metacodeSelectorToggleSelectAll() + e.preventDefault() + break + } else if ((e.ctrlKey || e.metaKey) && onCanvas) { const nodesCount = Object.keys(Visualize.mGraph.graph.nodes).length const selectedNodesCount = Selected.Nodes.length e.preventDefault()