|
@@ -4,6 +4,10 @@
|
|
|
<meta charset="utf-8" />
|
|
|
<title>Pokemon By Color</title>
|
|
|
<link rel="stylesheet" href="styles.css" />
|
|
|
+ <link
|
|
|
+ rel="stylesheet"
|
|
|
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0"
|
|
|
+ />
|
|
|
<script src="https://unpkg.com/fuse.js@6.5.3/dist/fuse.min.js"></script>
|
|
|
<script src="database.js"></script>
|
|
|
<script src="main.js" defer></script>
|
|
@@ -16,20 +20,20 @@
|
|
|
<form
|
|
|
action="javascript:void(0)"
|
|
|
autocomplete="off"
|
|
|
- class="metric-fields | flex col small-gap"
|
|
|
+ class="metric-fields | flex center-items smaller-gap"
|
|
|
>
|
|
|
<output hidden name="metric"></output>
|
|
|
- <div class="flex center">
|
|
|
+ <div class="metric-kind-toggle | flex col center-content">
|
|
|
<label>
|
|
|
<input type="radio" name="metricKind" value="compare" />
|
|
|
<div class="toggle-label | center pill-shape highlight-border">Compare</div>
|
|
|
</label>
|
|
|
<label>
|
|
|
<input type="radio" name="metricKind" value="stat" />
|
|
|
- <div class="toggle-label | center pill-shape highlight-border">Stat</div>
|
|
|
+ <div class="toggle-label | center pill-shape highlight-border">Statistic</div>
|
|
|
</label>
|
|
|
</div>
|
|
|
- <select class="pill-shape highlight-border" name="compare" disabled>
|
|
|
+ <select class="pill-shape highlight-border ellipsis" name="compare" disabled>
|
|
|
<option value="arcDiff">Arc Difference (Ω)</option>
|
|
|
<option value="psi">RMS Deviation (Ψ)</option>
|
|
|
<option value="theta">Quasi-mean Angular Difference (Θ)</option>
|
|
@@ -45,7 +49,7 @@
|
|
|
<option value="deltaC">Chroma Difference (ΔC)</option>
|
|
|
<option value="deltaH">Hue Angular Difference (Δh)</option>
|
|
|
</select>
|
|
|
- <select class="pill-shape highlight-border" name="stat" disabled>
|
|
|
+ <select class="pill-shape highlight-border ellipsis" name="stat" disabled>
|
|
|
<option value="size">Size (N)</option>
|
|
|
<option value="stddevTotal">Standard Deviation (σ)</option>
|
|
|
<option value="deltaL">Mean Lightness (L̅)</option>
|
|
@@ -84,7 +88,7 @@
|
|
|
|
|
|
<template id="pkmn-tile-template">
|
|
|
<div class="pkmn-tile | flex col no-gap" bind-to="tileRoot">
|
|
|
- <div class="pkmn-title | emphasis flex">
|
|
|
+ <div class="pkmn-title | emphasis flex center-items">
|
|
|
<span class="ellipsis" bind-to="name"></span>
|
|
|
</div>
|
|
|
<div class="pkmn-info | highlight-border flex">
|
|
@@ -93,11 +97,17 @@
|
|
|
<div class="pkmn-info-detail | math-font grid" bind-to="cls2Data"></div>
|
|
|
<div class="pkmn-info-detail | math-font grid" bind-to="cls3Data"></div>
|
|
|
<div class="pkmn-info-detail | math-font grid" bind-to="cls4Data"></div>
|
|
|
- <div class="pkmn-info-main | flex col">
|
|
|
- <a bind-to="link" target="_blank" rel="noopener noreferrer" href="">
|
|
|
+ <div class="pkmn-info-main | flex col smaller-gap">
|
|
|
+ <a
|
|
|
+ bind-to="link"
|
|
|
+ class="iflex center-content center-items"
|
|
|
+ target="_blank"
|
|
|
+ rel="noopener noreferrer"
|
|
|
+ href=""
|
|
|
+ >
|
|
|
<img bind-to="image" />
|
|
|
</a>
|
|
|
- <div class="pkmn-score-row | flex">
|
|
|
+ <div class="pkmn-score-row | flex center-items">
|
|
|
<div class="math-font" bind-to="score"></div>
|
|
|
<div class="smaller">"<span bind-to="color"></span>"</div>
|
|
|
</div>
|
|
@@ -109,7 +119,7 @@
|
|
|
<span class="pkmn-info-icon | smaller" bind-to="infoHover">ⓘ</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="cluster-buttons | math-font flex col">
|
|
|
+ <div class="cluster-buttons | math-font flex center-content col smaller-gap">
|
|
|
<div class="flex">
|
|
|
<button bind-to="cls1Btn" class="color-select" hidden></button>
|
|
|
<span class="pkmn-info-icon | smaller" bind-to="infoHover1">ⓘ</span>
|
|
@@ -164,28 +174,37 @@
|
|
|
autocomplete="off"
|
|
|
></form>
|
|
|
|
|
|
- <div class="section flow small-flow-space">
|
|
|
- <div class="color-inputs | flex col small-gap">
|
|
|
- <label class="emphasis center" for="colorInputText">Target Color</label>
|
|
|
- <div class="flex small-gap">
|
|
|
- <input
|
|
|
- form="targetColorForm"
|
|
|
- class="pill-shape highlight-border"
|
|
|
- name="colorText"
|
|
|
- type="text"
|
|
|
- pattern="#?[0-9a-fA-F]{0,6}"
|
|
|
- maxlength="7"
|
|
|
- placeholder="#000000"
|
|
|
- />
|
|
|
- <input form="targetColorForm" name="colorPicker" type="color" />
|
|
|
+ <main class="section flow">
|
|
|
+ <div class="flex wrap small-gap">
|
|
|
+ <!-- Color Select -->
|
|
|
+ <div id="sort-inputs" class="control-block | flex col smaller-gap center-items">
|
|
|
+ <div class="flex center-content center-items small-gap wrap">
|
|
|
+ <input
|
|
|
+ form="targetColorForm"
|
|
|
+ class="pill-shape highlight-border"
|
|
|
+ name="colorText"
|
|
|
+ type="text"
|
|
|
+ pattern="#?[0-9a-fA-F]{0,6}"
|
|
|
+ maxlength="7"
|
|
|
+ placeholder="#000000"
|
|
|
+ />
|
|
|
+ <input form="targetColorForm" name="colorPicker" type="color" />
|
|
|
+ <button
|
|
|
+ title="Randomize Color"
|
|
|
+ class="icon-button | material-symbols-outlined"
|
|
|
+ type="button"
|
|
|
+ form="targetColorForm"
|
|
|
+ name="randomColor"
|
|
|
+ >
|
|
|
+ shuffle
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ <output class="smaller" form="targetColorForm" name="info"></output>
|
|
|
</div>
|
|
|
- <button type="button" form="targetColorForm" name="randomColor">
|
|
|
- Random Color
|
|
|
- </button>
|
|
|
- <output class="center smaller" form="targetColorForm" name="info"></output>
|
|
|
- <div class="center">
|
|
|
+ <!-- Filter/Limit -->
|
|
|
+ <div class="control-block | flex center-items">
|
|
|
<label>
|
|
|
- <div class="emphasis">
|
|
|
+ <div class="center emphasis">
|
|
|
Results: <output form="colorDisplayForm" name="output">10</output>
|
|
|
</div>
|
|
|
<input
|
|
@@ -197,160 +216,198 @@
|
|
|
value="10"
|
|
|
/>
|
|
|
</label>
|
|
|
+ <div id="filter-toggles" class="flex col">
|
|
|
+ <label class="center">
|
|
|
+ <input
|
|
|
+ form="filterControl"
|
|
|
+ type="checkbox"
|
|
|
+ name="allowRepeatDexNum"
|
|
|
+ hidden
|
|
|
+ />
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">
|
|
|
+ Repeat Species
|
|
|
+ </span>
|
|
|
+ </label>
|
|
|
+ <label class="center">
|
|
|
+ <input
|
|
|
+ form="filterControl"
|
|
|
+ type="checkbox"
|
|
|
+ name="hideNoStart"
|
|
|
+ hidden
|
|
|
+ checked
|
|
|
+ />
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">
|
|
|
+ Start Forms Only
|
|
|
+ </span>
|
|
|
+ </label>
|
|
|
+ <label class="center">
|
|
|
+ <input
|
|
|
+ form="filterControl"
|
|
|
+ type="checkbox"
|
|
|
+ name="allowNFE"
|
|
|
+ hidden
|
|
|
+ checked
|
|
|
+ />
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">
|
|
|
+ Include NFE
|
|
|
+ </span>
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
- <label class="center">
|
|
|
- <input form="filterControl" type="checkbox" name="allowRepeatDexNum" hidden />
|
|
|
- <span class="toggle-label | pill-shape highlight-border">Repeat Species</span>
|
|
|
- </label>
|
|
|
- <label class="center">
|
|
|
- <input form="filterControl" type="checkbox" name="hideNoStart" hidden checked />
|
|
|
- <span class="toggle-label | pill-shape highlight-border">Start Forms Only</span>
|
|
|
- </label>
|
|
|
- <label class="center">
|
|
|
- <input form="filterControl" type="checkbox" name="allowNFE" hidden checked />
|
|
|
- <span class="toggle-label | pill-shape highlight-border">Include NFE</span>
|
|
|
- </label>
|
|
|
- </div>
|
|
|
- <hr />
|
|
|
- <div class="emphasis center">Sort Function</div>
|
|
|
- <div id="sort-metric-mount"></div>
|
|
|
- <!-- Main Sort Function -->
|
|
|
- <div class="fn-control | flex col no-gap">
|
|
|
- <div class="fn-minmax | center flex small-gap">
|
|
|
- <label>
|
|
|
- <input
|
|
|
- form="colorSortForm"
|
|
|
- type="radio"
|
|
|
- name="sortOrder"
|
|
|
- value="min"
|
|
|
- checked
|
|
|
- />
|
|
|
- <span class="toggle-label | pill-shape highlight-border">Min</span>
|
|
|
- </label>
|
|
|
- <label>
|
|
|
- <input form="colorSortForm" type="radio" name="sortOrder" value="max" />
|
|
|
- <span class="toggle-label | pill-shape highlight-border">Max</span>
|
|
|
- </label>
|
|
|
- </div>
|
|
|
- <div class="fn-body | math-font flex">
|
|
|
- <label>
|
|
|
- <input
|
|
|
- form="colorCalculateForm"
|
|
|
- type="checkbox"
|
|
|
- name="sortUseWholeImage"
|
|
|
- checked
|
|
|
- />
|
|
|
- <span class="toggle-label | pill-shape highlight-border">
|
|
|
- <output form="colorCalculateForm" name="sortMetricSymbolP"></output>(I)
|
|
|
- </span>
|
|
|
- </label>
|
|
|
- +
|
|
|
- <label>
|
|
|
- <input
|
|
|
- form="colorCalculateForm"
|
|
|
- type="checkbox"
|
|
|
- name="sortUseBestCluster"
|
|
|
- checked
|
|
|
- />
|
|
|
- <span class="toggle-label | pill-shape highlight-border">
|
|
|
- <output form="colorCalculateForm" name="sortMetricSymbolB"></output>(B)
|
|
|
- </span>
|
|
|
- </label>
|
|
|
- ⋅
|
|
|
- <div class="fn-fraction | flex col no-gap">
|
|
|
+ <!-- Sort Function -->
|
|
|
+ <div
|
|
|
+ class="fn-control | control-block | flex center-items center-content small-gap"
|
|
|
+ >
|
|
|
+ <div id="sort-metric-mount"></div>
|
|
|
+ <div class="fn-minmax | flex col center-items small-gap">
|
|
|
+ <label>
|
|
|
+ <input
|
|
|
+ form="colorSortForm"
|
|
|
+ type="radio"
|
|
|
+ name="sortOrder"
|
|
|
+ value="min"
|
|
|
+ checked
|
|
|
+ />
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">Min</span>
|
|
|
+ </label>
|
|
|
+ <label>
|
|
|
+ <input form="colorSortForm" type="radio" name="sortOrder" value="max" />
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">Max</span>
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ <div class="fn-body | math-font flex center-content center-items">
|
|
|
<label>
|
|
|
<input
|
|
|
form="colorCalculateForm"
|
|
|
type="checkbox"
|
|
|
- name="sortUseClusterProportion"
|
|
|
+ name="sortUseWholeImage"
|
|
|
+ checked
|
|
|
/>
|
|
|
- <span class="toggle-label | pill-shape highlight-border">%B</span>
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">
|
|
|
+ <output form="colorCalculateForm" name="sortMetricSymbolP"></output>(I)
|
|
|
+ </span>
|
|
|
</label>
|
|
|
+ +
|
|
|
<label>
|
|
|
<input
|
|
|
form="colorCalculateForm"
|
|
|
type="checkbox"
|
|
|
- name="sortUseInvClusterProportion"
|
|
|
+ name="sortUseBestCluster"
|
|
|
checked
|
|
|
/>
|
|
|
- <span class="toggle-label | pill-shape highlight-border">%B</span>
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">
|
|
|
+ <output form="colorCalculateForm" name="sortMetricSymbolB"></output>(B)
|
|
|
+ </span>
|
|
|
</label>
|
|
|
+ ⋅
|
|
|
+ <div class="fn-fraction | flex col no-gap">
|
|
|
+ <label>
|
|
|
+ <input
|
|
|
+ form="colorCalculateForm"
|
|
|
+ type="checkbox"
|
|
|
+ name="sortUseClusterProportion"
|
|
|
+ />
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">%B</span>
|
|
|
+ </label>
|
|
|
+ <label>
|
|
|
+ <input
|
|
|
+ form="colorCalculateForm"
|
|
|
+ type="checkbox"
|
|
|
+ name="sortUseInvClusterProportion"
|
|
|
+ checked
|
|
|
+ />
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">%B</span>
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <hr />
|
|
|
- <div id="cls-title" class="emphasis center">Cluster Choice</div>
|
|
|
- <div id="cls-metric-mount"></div>
|
|
|
- <!-- Cluster Sort Function -->
|
|
|
- <div id="cls-fn" class="fn-control | flex small-gap">
|
|
|
- <div class="fn-minmax | flex col small-gap">
|
|
|
- <label>
|
|
|
- <input
|
|
|
- form="colorCalculateForm"
|
|
|
- type="radio"
|
|
|
- name="clusterSortOrder"
|
|
|
- value="min"
|
|
|
- />
|
|
|
- <span class="toggle-label | pill-shape highlight-border">Min</span>
|
|
|
- </label>
|
|
|
- <label>
|
|
|
- <input
|
|
|
- form="colorCalculateForm"
|
|
|
- type="radio"
|
|
|
- name="clusterSortOrder"
|
|
|
- value="max"
|
|
|
- checked
|
|
|
- />
|
|
|
- <span class="toggle-label | pill-shape highlight-border">Max</span>
|
|
|
- </label>
|
|
|
- </div>
|
|
|
- <div class="fn-body | math-font flex">
|
|
|
- <span class="toggle-label | pill-shape highlight-border">
|
|
|
- <output form="colorCalculateForm" name="clusterMetricSymbol"></output>(K)
|
|
|
- </span>
|
|
|
- ⋅
|
|
|
- <div class="fn-fraction | flex col no-gap">
|
|
|
+ <!-- Cluster Function -->
|
|
|
+ <div
|
|
|
+ id="cls-fn"
|
|
|
+ class="fn-control | control-block | flex center-items center-content small-gap"
|
|
|
+ >
|
|
|
+ <div id="cls-metric-mount"></div>
|
|
|
+ <div class="fn-minmax | flex col center-items small-gap">
|
|
|
<label>
|
|
|
<input
|
|
|
form="colorCalculateForm"
|
|
|
- type="checkbox"
|
|
|
- name="clusterUseClusterSize"
|
|
|
- checked
|
|
|
+ type="radio"
|
|
|
+ name="clusterSortOrder"
|
|
|
+ value="min"
|
|
|
/>
|
|
|
- <span class="toggle-label | pill-shape highlight-border">N(K)</span>
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">Min</span>
|
|
|
</label>
|
|
|
<label>
|
|
|
<input
|
|
|
form="colorCalculateForm"
|
|
|
- type="checkbox"
|
|
|
- name="clusterUseInvClusterSize"
|
|
|
+ type="radio"
|
|
|
+ name="clusterSortOrder"
|
|
|
+ value="max"
|
|
|
+ checked
|
|
|
/>
|
|
|
- <span class="toggle-label | pill-shape highlight-border">N(K)</span>
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">Max</span>
|
|
|
</label>
|
|
|
</div>
|
|
|
+ <div class="fn-body | math-font flex center-content center-items">
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">
|
|
|
+ <output form="colorCalculateForm" name="clusterMetricSymbol"></output>(K)
|
|
|
+ </span>
|
|
|
+ ⋅
|
|
|
+ <div class="fn-fraction | flex col no-gap">
|
|
|
+ <label>
|
|
|
+ <input
|
|
|
+ form="colorCalculateForm"
|
|
|
+ type="checkbox"
|
|
|
+ name="clusterUseClusterSize"
|
|
|
+ checked
|
|
|
+ />
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">N(K)</span>
|
|
|
+ </label>
|
|
|
+ <label>
|
|
|
+ <input
|
|
|
+ form="colorCalculateForm"
|
|
|
+ type="checkbox"
|
|
|
+ name="clusterUseInvClusterSize"
|
|
|
+ />
|
|
|
+ <span class="toggle-label | pill-shape highlight-border">N(K)</span>
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div id="color-results" class="flex wrap"></div>
|
|
|
<hr />
|
|
|
- <div class="flex col small-gap">
|
|
|
- <div class="emphasis center">Name Search</div>
|
|
|
+ <div id="name-search-controls" class="flex wrap center-items small-gap">
|
|
|
<input
|
|
|
+ id="nameSearchInput"
|
|
|
form="nameSearchForm"
|
|
|
class="pill-shape highlight-border"
|
|
|
type="text"
|
|
|
autocomplete="off"
|
|
|
name="input"
|
|
|
+ aria-label="Search By Name"
|
|
|
+ placeholder="Search By Name"
|
|
|
/>
|
|
|
- <button form="nameSearchForm" type="button" name="random">Random Pokemon</button>
|
|
|
- <button form="nameSearchForm" type="button" name="clear">Clear</button>
|
|
|
+ <button
|
|
|
+ title="Randomize"
|
|
|
+ class="icon-button | material-symbols-outlined"
|
|
|
+ form="nameSearchForm"
|
|
|
+ type="button"
|
|
|
+ name="random"
|
|
|
+ >
|
|
|
+ shuffle
|
|
|
+ </button>
|
|
|
+ <button
|
|
|
+ title="Clear"
|
|
|
+ class="icon-button | material-symbols-outlined"
|
|
|
+ form="nameSearchForm"
|
|
|
+ type="button"
|
|
|
+ name="clear"
|
|
|
+ >
|
|
|
+ clear
|
|
|
+ </button>
|
|
|
<button form="nameSearchForm" type="button" name="all">Show All (slow)</button>
|
|
|
</div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <main class="section flow">
|
|
|
- <div class="emphasis">By Color</div>
|
|
|
- <div id="color-results" class="flex wrap"></div>
|
|
|
- <hr />
|
|
|
- <div class="emphasis">By Name</div>
|
|
|
<div id="name-results" class="flex wrap"></div>
|
|
|
</main>
|
|
|
|