From ea9258d36cabaf5de25c45f65fd92bfc5959bbe0 Mon Sep 17 00:00:00 2001 From: CroogQT Date: Thu, 5 May 2022 13:23:43 -0700 Subject: [PATCH] added main multi-select function --- .../src/buttons/selectMultiple.ts | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/netbox/project-static/src/buttons/selectMultiple.ts b/netbox/project-static/src/buttons/selectMultiple.ts index 08b5165e2..68cd57032 100644 --- a/netbox/project-static/src/buttons/selectMultiple.ts +++ b/netbox/project-static/src/buttons/selectMultiple.ts @@ -9,6 +9,43 @@ function updatePreviousPkCheckState(eventTargetElement: HTMLInputElement, state: state.set('element', eventTargetElement); } +function handlePkCheck(event: _MouseEvent, state: StateManager): void { + const eventTargetElement = event.target as HTMLInputElement; + const previousStateElement = state.get('element'); + updatePreviousPkCheckState(eventTargetElement, state); + //Stop if user is not holding shift key + if(event.shiftKey === false){ + return + } + //If no previous state, store event target element as previous state and return + if (previousStateElement === null) { + return updatePreviousPkCheckState(eventTargetElement, state); + } + const checkboxList = getElements('input[type="checkbox"][name="pk"]'); + let changePkCheckboxState = false; + for(const element of checkboxList){ + //The previously clicked checkbox was above the shift clicked checkbox + if(element === previousStateElement){ + if(changePkCheckboxState === true){ + changePkCheckboxState = false; + return + } + changePkCheckboxState = true; + } + //Change loop's current checkbox state to eventTargetElement checkbox state + if(changePkCheckboxState === true){ + element.checked = eventTargetElement.checked; + } + //The previously clicked checkbox was below the shift clicked checkbox + if(element === eventTargetElement){ + if(changePkCheckboxState === true){ + changePkCheckboxState = false + return + } + changePkCheckboxState = true; + } + } +} export function initSelectMultiple(): void { const checkboxElements = getElements('input[type="checkbox"][name="pk"]');