/* Imports */ import { Slider, Rail, Handles, Tracks, Ticks } from "react-compound-slider"; import React, { useState } from 'react'; // https://sghall.github.io/react-compound-slider/#/getting-started/tutorial /* Definitions */ const sliderStyle = { // Give the slider some width position: 'relative', width: '40em', height: 40, border: '5em', } const railStyle = { position: 'absolute', width: '100%', height: 15, marginTop: 32.5, borderRadius: 5, backgroundColor: 'lightgrey', } /* Support functions */ function Handle({ handle: { id, value, percent }, getHandleProps, displayFunction, handleWidth }) { return ( <>
{displayFunction(value)}
) } function Track({ source, target, getTrackProps }) { return (
) } /* Body */ // Two functions, essentially identical. export function SliderElement({ onChange, value, displayFunction, domain }) { let toLogDomain = (arr) => [Math.log(arr[0]) / Math.log(10), Math.log(arr[1]) / Math.log(10)] return ( {({ getRailProps }) => (
)} {({ handles, getHandleProps }) => (
{handles.map(handle => ( ))}
)}
{({ tracks, getTrackProps }) => (
{tracks.map(({ id, source, target }) => ( ))}
)}
) } export function SubmitSliderButton({ posList, binaryComparisons, sliderValue, reasoning, toComparePair, nextStepSlider, dontPushSubmitButtonAnyMore }) { // This element didn't necessarily have to exist, but it made it easier for debugging purposes let onClick = (event) => { if(!dontPushSubmitButtonAnyMore){ //event.preventDefault(); let obj = { posList, binaryComparisons, sliderValue, reasoning, element1: toComparePair[1], element2: toComparePair[0] } // console.log("input@SubmitSliderButton") console.log(obj) if (!!Number(sliderValue) && sliderValue >= 0) { nextStepSlider(obj) } else if (!!Number(sliderValue) && sliderValue < 0) { alert("Negative numbers not yet allowed") } else { alert("Your input is not a number") } } } return () }