fixing sorting
This commit is contained in:
@@ -6,10 +6,10 @@ const SortLevel = (props) => {
|
|||||||
<select id={"select_" + props.id} onChange={props.updateCallback} value={props.selected}>
|
<select id={"select_" + props.id} onChange={props.updateCallback} value={props.selected}>
|
||||||
<option key="-1" value="0">--do not sort--</option>
|
<option key="-1" value="0">--do not sort--</option>
|
||||||
{
|
{
|
||||||
props.keys.map((key, i) => <option key={i} value={i + 1}>{key}</option>)
|
props.keys.map((key, i) => <option key={i} value={i + 1} hidden={!props.visible.includes(key)} >{key}</option>)
|
||||||
}
|
}
|
||||||
</select>
|
</select>
|
||||||
<input type="checkbox" id={"reverse_" + props.id} />reversed?
|
<input type="checkbox" id={"reverse_" + props.id} onChange={props.checkboxUpdate} checked={props.reverse} />reversed?
|
||||||
<br />
|
<br />
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
@@ -18,30 +18,39 @@ const SortLevel = (props) => {
|
|||||||
|
|
||||||
const Sorting = (props) => {
|
const Sorting = (props) => {
|
||||||
const [selections, updateSelections] = useState([-1]);
|
const [selections, updateSelections] = useState([-1]);
|
||||||
|
const [checkboxes, updateCheckboxes] = useState([0]);
|
||||||
const updateOption = (x, id) => {
|
const updateOption = (x, id) => {
|
||||||
|
|
||||||
selections[id] = x;
|
selections[id] = x;
|
||||||
|
console.log("fixup function called")
|
||||||
let unusedOptions = [...selections];
|
let checkboxesCopy = [...checkboxes];
|
||||||
let selectionsUpdate = selections.map((x, i, arr) => {
|
let selectionsCopy = selections.map((x, i, arr) => {
|
||||||
if (i < id) {
|
if (i < id) {
|
||||||
unusedOptions.filter((v) => v != x);
|
console.log("a", i, x)
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (x != -1 && arr.indexOf(x) != i) {
|
if (x != -1 && arr.indexOf(x) != i) {
|
||||||
return unusedOptions[0];
|
let unusedoption =
|
||||||
|
console.log("b", i, [0])
|
||||||
|
return unusedOption;
|
||||||
}
|
}
|
||||||
|
console.log("c", i,x)
|
||||||
|
|
||||||
return x
|
return x
|
||||||
})
|
})
|
||||||
|
|
||||||
selectionsUpdate = selectionsUpdate.filter((x, i) => x != -1);
|
|
||||||
|
|
||||||
if (selectionsUpdate.length == 0 || selectionsUpdate[selectionsUpdate.length - 1] != -1) {
|
checkboxesCopy = checkboxesCopy.filter((x, i) => selectionsCopy[i] != -1);
|
||||||
selectionsUpdate.push(-1)
|
selectionsCopy = selectionsCopy.filter((x, i) => x != -1);
|
||||||
|
|
||||||
|
if (selectionsCopy.length == 0 || selectionsCopy[selectionsCopy.length - 1] != -1) {
|
||||||
|
selectionsCopy.push(-1)
|
||||||
|
checkboxesCopy.push(false)
|
||||||
}
|
}
|
||||||
console.log(selectionsUpdate)
|
|
||||||
updateSelections(selectionsUpdate);
|
updateSelections(selectionsCopy);
|
||||||
|
updateCheckboxes(checkboxesCopy);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -54,14 +63,22 @@ const Sorting = (props) => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{
|
{
|
||||||
|
|
||||||
selections.map((x, i, arr) => {
|
selections.map((x, i, arr) => {
|
||||||
let curenSelectiontArr = keys.filter((selection) => !arr.slice(0, i).includes(keys.indexOf(selection)))
|
let curenSelectiontArr = keys.filter((selection) => !arr.slice(0, i).includes(keys.indexOf(selection)))
|
||||||
const upadteOptionWrap = (event) => {
|
const upadteOptionWrap = (event) => {
|
||||||
console.log(event)
|
// console.log(event);
|
||||||
updateOption(Number(event.target.value) - 1, i)
|
updateOption(Number(event.target.value) - 1, i);
|
||||||
};
|
};
|
||||||
|
const updateCheckBoxesWrap = (event) => {
|
||||||
return <SortLevel key={i} id="SortLevel0" keys={curenSelectiontArr} updateCallback={upadteOptionWrap} selected={x + 1} />
|
// console.log(event);
|
||||||
|
let checkboxesCopy = [...checkboxes];
|
||||||
|
checkboxesCopy[i] = Number(event.target.checked);
|
||||||
|
updateCheckboxes(checkboxesCopy);
|
||||||
|
};
|
||||||
|
if (curenSelectiontArr.length > 0) {
|
||||||
|
return <SortLevel key={i} id={"SortLevel" + i} keys={keys} visible={curenSelectiontArr} updateCallback={upadteOptionWrap} checkboxUpdate={updateCheckBoxesWrap} selected={x + 1} reverse={checkboxes[i]} />
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user