diff options
| author | Mango0x45 <thomasvoss@live.com> | 2021-02-03 18:01:11 +0100 | 
|---|---|---|
| committer | Mango0x45 <thomasvoss@live.com> | 2021-02-03 18:01:11 +0100 | 
| commit | 83285d8fce40a6df4a4d35ee54409b88a1848340 (patch) | |
| tree | 837158edf13785eb5f0a2e1ae15a0df3a88fad60 | |
| parent | ee767fc3b2c7d00c50282317b6200fcbc1b92652 (diff) | |
Clean up code
| -rw-r--r-- | .clang-format | 44 | ||||
| -rw-r--r-- | index.html | 21 | ||||
| -rw-r--r-- | main.js | 130 | 
3 files changed, 119 insertions, 76 deletions
| diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..f7f31ac --- /dev/null +++ b/.clang-format @@ -0,0 +1,44 @@ +Language: JavaScript + +AlignAfterOpenBracket:                  DontAlign +AlignConsecutiveAssignments:            false +AlignConsecutiveDeclarations:           false +AlignOperands:                          Align +AlignTrailingComments:                  true +AllowShortBlocksOnASingleLine:          Empty +AllowShortCaseLabelsOnASingleLine:      false +AllowShortFunctionsOnASingleLine:       Empty +AllowShortIfStatementsOnASingleLine:    Never +AllowShortLoopsOnASingleLine:           false +BinPackArguments:                       true +BinPackParameters:                      true +BreakBeforeBinaryOperators:             NonAssignment +BreakBeforeBraces:                      Attach +BreakBeforeTernaryOperators:            true +ColumnLimit:                            100 +ContinuationIndentWidth:                4 +DeriveLineEnding:                       true +IndentCaseBlocks:                       false +IndentCaseLabels:                       false +IndentWidth:                            4 +InsertTrailingCommas:                   None +JavaScriptQuotes:                       Double +JavaScriptWrapImports:                  true +KeepEmptyLinesAtTheStartOfBlocks:       false +MaxEmptyLinesToKeep:                    2 +ReflowComments:                         true +SpaceAfterLogicalNot:                   false +SpaceBeforeAssignmentOperators:         true +SpaceBeforeParens:                      ControlStatements +SpaceBeforeSquareBrackets:              false +SpaceInEmptyBlock:                      false +SpaceInEmptyParentheses:                false +SpacesBeforeTrailingComments:           1 +SpacesInAngles:                         false +SpacesInConditionalStatement:           false +SpacesInContainerLiterals:              false +SpacesInParentheses:                    false +SpacesInSquareBrackets:                 false +TabWidth:                               4 +UseCRLF:                                false +UseTab:                                 Never
\ No newline at end of file @@ -12,18 +12,13 @@  <body class="stackedit">    <div class="stackedit__html"> -    <h1 id="youtube-interval-timer">YouTube Interval Timer</h1> -    <h3 id="about">About</h3> -    <p>Takes start and stop points of a YouTube video, down to the frame, and gives the time between them in the format -      <code>1h 23m 45s 678ms</code>. Source code is <a -        href="https://github.com/slashinfty/yt-frame-timer">available</a>. -    </p> +    <h1 id="youtube-interval-timer">Speedrun Retimer without Ads</h1>      <h3 id="video-framerate">Video Framerate</h3>      <p>Right click the YouTube video and select “Stats for nerds.” The third line is “Current / Optimal Res” - find the        two numbers after the @ and enter them for framerate.</p>      <p>        <label for="framerate">Framerate: </label> -      <input type="text" id="framerate" size="3" value="60" onchange='validateFPS(event)' /> +      <input type="text" id="framerate" size="3" value="60" onchange='check_fps(event)' />      </p>      <h3 id="video-endpoints">Video Endpoints</h3>      <p> @@ -32,20 +27,20 @@      </p>      <p>        <label for="startobj">Starting frame: </label> -      <input type="text" id="startobj" style='width:100%' onchange='parseForTime(event)' /> +      <input type="text" id="startobj" style='width:100%' onchange='parse_time(event)' />      </p>      <p>        <label for="endobj">Ending frame: </label> -      <input type="text" id="endobj" style='width:100%' onchange='parseForTime(event)' /> +      <input type="text" id="endobj" style='width:100%' onchange='parse_time(event)' />      </p>      <h3 id="video-time">Video Time</h3> -    <button id="computeButton" onclick="compute()">Compute time</button> <input type="text" id="time" readonly +    <button id="compute_button" onclick="compute()">Compute time</button> <input type="text" id="time" readonly        size="20" />      <p> -      <textarea id="modMessage" cols="40" rows="5" disabled></textarea> +      <textarea id="mod_message" cols="40" rows="5" disabled></textarea>      </p> -    <button id="modMessageButton" onclick="copyModMessage()" disabled>Copy Mod Message to Clipboard</button> +    <button id="mod_message_button" onclick="copy_mod_message()" disabled>Copy Mod Message to Clipboard</button>    </div>  </body> -</html> +</html>
\ No newline at end of file @@ -1,86 +1,90 @@ -function compute() -{ +function compute() {      /* Initiate basic time variables */ -    let hours = 0; -    let minutes = 0; -    let seconds = 0; -    let milliseconds = 0; +    let h = 0; +    let m = 0; +    let s = 0; +    let ms = 0;      /*       * Get framerate, start frame, and end frame from corresponding elements       * Double check they all have a value       */ -    let frameRate = parseInt(document.getElementById('framerate').value); -    let startFrame = document.getElementById('startobj').value; -    let endFrame = document.getElementById('endobj').value; -    if (typeof (startFrame) === 'undefined' || endFrame === 'undefined' || framerate === 'undefined') +    let fps = parseInt(document.getElementById("framerate").value); +    let sframe = document.getElementById("startobj").value; +    let eframe = document.getElementById("endobj").value; + +    if (typeof (sframe) === "undefined" || typeof (eframe) === "undefined" +        || typeof (fps) === "undefined")          return;      /* Calculate framerate */ -    let frames = (endFrame - startFrame) * frameRate; -    seconds = Math.floor(frames / frameRate); -    frames = frames % frameRate; -    milliseconds = Math.round(frames / frameRate * 1000); -    if (milliseconds < 10) -        milliseconds = '00' + milliseconds; -    else if (milliseconds < 100) -        milliseconds = '0' + milliseconds; -	     -    if (seconds >= 60) { -        minutes = Math.floor(seconds / 60); -        seconds = seconds % 60; -        seconds = seconds < 10 ? '0' + seconds : seconds; +    let frames = (eframe - sframe) * fps; +    s = Math.floor(frames / fps); +    frames = frames % fps; +    ms = Math.round(frames / fps * 1000); +    if (ms < 10) +        ms = "00" + ms; +    else if (ms < 100) +        ms = "0" + ms; + +    if (s >= 60) { +        m = Math.floor(s / 60); +        s = s % 60; +        s = s < 10 ? "0" + s : s;      } -    if (minutes >= 60) { -        hours = Math.floor(minutes / 60); -        minutes = minutes % 60; -        minutes = minutes < 10 ? '0' + minutes : minutes; +    if (m >= 60) { +        h = Math.floor(m / 60); +        m = m % 60; +        m = m < 10 ? "0" + m : m;      }      /* Show the time and mod message in the DOM */ -    let finalTime = hours.toString() + 'h ' + minutes.toString() + 'm ' + seconds.toString() + 's ' + milliseconds.toString() + 'ms'; -    let modMessage = `Mod Note: Retimed (Start: ${parseFloat(startFrame).toFixed(3)}, End: ${parseFloat(endFrame).toFixed(3)}, FPS: ${frameRate}, Total Time: ${finalTime})`; -    document.getElementById('time').value = finalTime; -    document.getElementById('modMessage').disabled = false; -    document.getElementById('modMessage').innerText = modMessage;     -    document.getElementById("modMessageButton").disabled = false; +    let ftime = +        h.toString() + "h " + m.toString() + "m " + s.toString() + "s " + ms.toString() + "ms"; +    let mod_message = `Mod Note: Retimed (Start: Frame ${sframe * fps}, End: ${ +        eframe * fps}, FPS: ${fps}, Total Time: ${ftime})`; + +    document.getElementById("time").value = ftime; +    document.getElementById("mod_message").disabled = false; +    document.getElementById("mod_message").innerText = mod_message; +    document.getElementById("mod_message_button").disabled = false;  }  /* Allow user to copy mod message to clipboard */ -function copyModMessage() -{ -	const textArea = document.getElementById('modMessage'); -	textArea.focus(); -	textArea.select(); -	document.execCommand('copy'); -	alert(`The mod message has been copied to clipboard! Please paste it into the comment of the run you are verifying.`); +function copyModMessage() { +    const text_area = document.getElementById("mod_message"); +    text_area.focus(); +    text_area.select(); +    document.execCommand("copy"); +    alert( +        `The mod message has been copied to clipboard! Please paste it into the comment of the run you are verifying.`);  }  /* If framerate is invalid, show an error message and disable start and end frame fields */ -const validateFPS = (event) => { -    if (event.target.value === '' || parseInt(event.target.value) <= 0 || isNaN(parseInt(event.target.value))) { -        document.getElementById('framerate').setCustomValidity('Please enter a valid framerate.'); -        document.getElementById('framerate').reportValidity(); -        document.getElementById('startobj').disabled = true; -        document.getElementById('endobj').disabled = true; -        document.getElementById('computeButton').disabled = true; -    } else { -        document.getElementById('startobj').disabled = false; -        document.getElementById('endobj').disabled = false; -        document.getElementById('computeButton').disabled = false; +const check_fps = +    (event) => { +        if (event.target.value === "" || parseInt(event.target.value) <= 0 +            || isNaN(parseInt(event.target.value))) { +            document.getElementById("framerate") +                .setCustomValidity("Please enter a valid framerate."); +            document.getElementById("framerate").reportValidity(); +            document.getElementById("startobj").disabled = true; +            document.getElementById("endobj").disabled = true; +            document.getElementById("computeButton").disabled = true; +        } else { +            document.getElementById("startobj").disabled = false; +            document.getElementById("endobj").disabled = false; +            document.getElementById("computeButton").disabled = false; +        }      } -} -const parseForTime = (event) => { -    /* Get current frame from input field (either start time or end time) */ -    let frameFromInputText = (JSON.parse(event.target.value)).lct; -    if (typeof frameFromInputText !== 'undefined') { -        /* Get the framerate */ -        let frameRate = parseInt(document.getElementById('framerate').value); -        /* Calculate the frame */ -        let frameFromObj = (time, fps) => Math.floor(time * fps) / fps; //round to the nearest frame -        let finalFrame = frameFromObj(frameFromInputText, frameRate); -        /* Update the DOM */ -        document.getElementById(event.target.id).value = `${finalFrame}`; +/* Get current frame from input field (either start time or end time) */ +const parse_time = (event) => { +    let inptext_frame = (JSON.parse(event.target.value)).lct; +    if (typeof inptext_frame !== "undefined") { +        let fps = parseInt(document.getElementById("framerate").value); +        let frameFromObj = (time, fps) => Math.floor(time * fps) / fps; +        let fframe = frameFromObj(inptext_frame, fps); +        document.getElementById(event.target.id).value = `${fframe}`;      }  } |