{"mappings":"MAAO,MAAMA,EAAqB,CAChC,UACA,UACA,UACA,UACA,WAWWC,EAAY,CACvB,KACA,OACA,OACA,MACA,MACA,MACA,MACA,KACA,IACA,KACA,MACA,MACA,MACA,MACA,OACA,OACA,MAGWC,EAAc,EACzB,KAAS,KAAQ,KAAQ,KAAO,KAAO,KAAO,KAAO,EAAI,EACzD,EAAI,IAAO,IAAO,IAAO,IAAO,IAAQ,IAAQ,KAGrCC,EAAa,CACxB,QACA,QACA,SACA,OAGWC,EAAa,CACxB,QACA,QACA,SACA,OAGWC,EAAa,CACxB,OACA,SACA,SAGWC,EAAY,CACvB,OACA,MAGWC,EAAa,CACxB,QACA,MAGWC,EAAa,CACxB,KACA,MAGWC,EAAa,CACxB,QACA,QACA,OACA,QACA,QAGWC,EAAe,CAC1B,MACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,eACA,iBACA,kBACA,qBACA,kBACA,qBACA,kBACA,uBACA,oBACA,mBACA,eACA,eACA,mBACA,cACA,eACA,eACA,iBACA,SACA,KACA,UAGWC,EAAiB,CAC5B,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAClD,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAGjDC,EAAmB,CAC9B,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,SACA,WACA,YACA,eACA,YACA,eACA,YACA,iBACA,cACA,aACA,SACA,SACA,aACA,QACA,SACA,SACA,YAGWC,EAAqB,CAChC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAC/C,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAiBrCC,EAAoB,CAC/B,MACA,MACA,MACA,MACA,MACA,QACA,OACA,QAGWC,EAAsB,CACjC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,KAGXC,EAA0B,CACrC,IACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,QAGWC,EAAa,CACxB,UACA,2FACA,2FACA,2FACA,2FACA,2FACA,2FACA,2FACA,2FACA,2FACA,2FACA,8FAEWC,EAAe,EAAC,EAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAClDC,EAAY,CACvB,UACA,UACA,0FACA,0FACA,0FACA,0FACA,0FACA,0FACA,0FACA,6FAEWC,EAAc,EAAC,GAAI,EAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAC5CC,EAAa,CACxB,UACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,OACA,SAGWC,EAAqB,CAChC,UACA,IACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,QACA,OACA,QAGWC,EAAe,EAC1B,EACA,EACA,IACA,IACA,KACA,IACA,KACA,KACA,KACA,MACA,IACA,KA8BWC,EAAUC,MAAMC,KAAK,CAAEC,OAAQ,KAAM,CAACC,EAAGC,IAAMC,OAAOD,KACnEL,EAAQO,QAED,MAAMC,EAAe,CAC1B,OACA,SACA,QACA,MAGWC,EAAsB,CACjC,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,QAGWC,EAA8B,CACzC,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,OAGWC,EAAwB,CACnC,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACA,KAGWC,EAAa,CACxB,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,MACA,MACA,MACA,OACA,KAGWC,EAAqB,CAChC,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAC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","sources":["src/js/m/const_m.js","src/js/m/site_m.js","src/js/target-score.js"],"sourcesContent":["export const LV_TYPE_BACK_COLOR = [\n '#FFFFFF',\n '#9ED0FF',\n '#C1FF84',\n '#FFFF99',\n '#FF99FF',\n];\n\nexport const STATS_DATA = [\n 'av.',\n '75%',\n 'me.',\n '25%',\n 'top',\n];\n\nexport const DIFF_DATA = [\n '-∞',\n '-20k',\n '-10k',\n '-5k',\n '-3k',\n '-2k',\n '-1k',\n '-1',\n '0',\n '+1',\n '+1k',\n '+2k',\n '+3k',\n '+5k',\n '+10k',\n '+20k',\n '+∞',\n];\n\nexport const DIFF_DATA_R = [\n -200000, -20000, -10000, -5000, -3000, -2000, -1000, -1, 0,\n +1, +1000, +2000, +3000, +5000, +10000, +20000, +200000,\n];\n\nexport const NAME_DATA1 = [\n 'title',\n 'genre',\n 'double',\n 't/g',\n];\n\nexport const NAME_DATA2 = [\n 'genre',\n 'title',\n 'double',\n 'g/t',\n];\n\nexport const ALIGN_DATA = [\n 'left',\n 'center',\n 'right',\n];\n\nexport const WRAP_DATA = [\n 'wrap',\n 'nw',\n];\n\nexport const BREAK_DATA = [\n 'break',\n 'nb',\n];\n\nexport const ORDER_DATA = [\n 'tg',\n 'gt',\n];\n\nexport const UPPER_DATA = [\n 'title',\n 'genre',\n 'both',\n 'first',\n 'last',\n];\n\nexport const VERSION_DATA = [\n 'ALL',\n 'pop\\'n 1',\n 'pop\\'n 2',\n 'pop\\'n 3',\n 'pop\\'n 4',\n 'pop\\'n 5',\n 'pop\\'n 6',\n 'pop\\'n 7',\n 'pop\\'n 8',\n 'pop\\'n 9',\n 'pop\\'n 10',\n 'pop\\'n 11',\n 'pop\\'n 12 いろは',\n 'pop\\'n 13 カーニバル',\n 'pop\\'n 14 FEVER!',\n 'pop\\'n 15 ADVENTURE',\n 'pop\\'n 16 PARTY♪',\n 'pop\\'n 17 THE MOVIE',\n 'pop\\'n 18 せんごく列伝',\n 'pop\\'n 19 TUNE STREET',\n 'pop\\'n 20 fantasia',\n 'pop\\'n Sunny Park',\n 'pop\\'n ラピストリア',\n 'pop\\'n éclale',\n 'pop\\'n うさぎと猫と少年の夢',\n 'pop\\'n peace',\n 'pop\\'n 解明リドルズ',\n 'pop\\'n UniLab',\n 'pop\\'n Jam&Fizz',\n 'TV・アニメ',\n 'CS',\n 'BEMANI',\n];\n\nexport const VERSION_DATA_R = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 26, 27, 28, 29, 30, 31, 23, 24, 25,\n];\n\nexport const ADD_VERSION_DATA = [\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10',\n '11',\n '12 いろは',\n '13 カーニバル',\n '14 FEVER!',\n '15 ADVENTURE',\n '16 PARTY♪',\n '17 THE MOVIE',\n '18 せんごく列伝',\n '19 TUNE STREET',\n '20 fantasia',\n 'Sunny Park',\n 'ラピストリア',\n 'éclale',\n 'うさぎと猫と少年の夢',\n 'peace',\n '解明リドルズ',\n 'UniLab',\n 'Jam&Fizz',\n];\n\nexport const ADD_VERSION_DATA_R = [\n 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 16, 17, 18, 19, 20, 21, 22, 26, 27, 28, 29, 30, 31,\n];\n\nexport const TARGET_MEDAL_DATA = [\n '\"4\"',\n '\"5\"',\n '\"6\"',\n '\"7\"',\n '\"8\"',\n '\"9\"',\n '\"10\"',\n 'NEXT',\n];\nexport const TARGET_MEDAL_DATA_R = [\n 4, 5, 6, 7, 8, 9, 10, 999,\n];\n\nexport const TARGET_SCORE_DATA = [\n '85k',\n '90k',\n '95k',\n '98k',\n '99k',\n '99.4k',\n '100k',\n 'NEXT',\n];\n\nexport const TARGET_SCORE_DATA_R = [\n 4, 5, 6, 7, 8, 9, 10, 999,\n];\n\nexport const TARGET_SCORE_CLASS_DATA = [\n '-',\n '0',\n '70k',\n '80k',\n '85k',\n '90k',\n '95k',\n '98k',\n '99k',\n '99.4k',\n '100k',\n];\n\nexport const MEDAL_DATA = [\n 'NO PLAY',\n '\"0\"',\n '\"1\"',\n '\"2\"',\n '\"3\"',\n '\"4\"',\n '\"5\"',\n '\"6\"',\n '\"7\"',\n '\"8\"',\n '\"9\"',\n '\"10\"',\n];\nexport const MEDAL_DATA_R = [-2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nexport const RANK_DATA = [\n 'NO PLAY',\n 'NO RANK',\n '\"3\"',\n '\"4\"',\n '\"5\"',\n '\"6\"',\n '\"7\"',\n '\"8\"',\n '\"9\"',\n '\"10\"',\n];\nexport const RANK_DATA_R = [-2, -1, 3, 4, 5, 6, 7, 8, 9, 10];\nexport const SCORE_DATA = [\n 'NO PLAY',\n '0',\n '70k',\n '80k',\n '85k',\n '90k',\n '95k',\n '98k',\n '99k',\n '99.4k',\n '100k',\n '=100k',\n];\n\nexport const SCORE_DATA_DISPLAY = [\n 'NO PLAY',\n '0',\n '70k',\n '80k',\n '85k',\n '90k',\n '95k',\n '98k',\n '99k',\n '99.4k',\n '100k',\n '100k',\n];\n\nexport const SCORE_DATA_R = [\n -2,\n 0,\n 70000,\n 80000,\n 85000,\n 90000,\n 95000,\n 98000,\n 99000,\n 99400,\n 100000,\n 200000,\n];\n/*\nexport const otoge.SCORE_DATA_R_LOWER = [\n -2,\n 0,\n 70000,\n 80000,\n 85000,\n 90000,\n 95000,\n 98000,\n 99000,\n 99400,\n 100000,\n];\nexport const otoge.SCORE_DATA_R_UPPER = [\n 0,\n 70000,\n 80000,\n 85000,\n 90000,\n 95000,\n 98000,\n 99000,\n 99400,\n 100000,\n 200000,\n];\n*/\nexport const LV_DATA = Array.from({ length: 51 }, (v, k) => String(k));\nLV_DATA.shift();\n\nexport const LV_TYPE_DATA = [\n 'EASY',\n 'NORMAL',\n 'HYPER',\n 'EX',\n];\n\nexport const TARGET_PERCENT_DATA = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '10',\n '20',\n '30',\n '40',\n '50',\n '60',\n '70',\n '80',\n '90',\n '100',\n '=100',\n];\n\nexport const TARGET_PERCENT_DATA_DISPLAY = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '10',\n '20',\n '30',\n '40',\n '50',\n '60',\n '70',\n '80',\n '90',\n '100',\n '100',\n];\n\nexport const TARGET_PERCENT_DATA_R = [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 10,\n 20,\n 30,\n 40,\n 50,\n 60,\n 70,\n 80,\n 90,\n 100,\n 200,\n];\n\nexport const COUNT_DATA = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10',\n '20',\n '30',\n '40',\n '50',\n '60',\n '70',\n '80',\n '90',\n '100',\n '200',\n '300',\n '400',\n '500',\n '1000',\n '∞',\n];\n\nexport const COUNT_DATA_DISPLAY = [\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10',\n '20',\n '30',\n '40',\n '50',\n '60',\n '70',\n '80',\n '90',\n '100',\n '200',\n '300',\n '400',\n '500',\n '1000',\n '∞',\n];\n\nexport const COUNT_DATA_R = [\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 20,\n 30,\n 40,\n 50,\n 60,\n 70,\n 80,\n 90,\n 100,\n 200,\n 300,\n 400,\n 500,\n 1000,\n 99999,\n];\n","import * as otoge from './const_m.js';\n\nexport const getCurrentSortStatus = () => {\n let sTarget = null;\n let sCount = 0;\n const sortButton = document.querySelector('[class~=gridjs-sort-asc],[class~=gridjs-sort-desc]');\n if (sortButton !== null) {\n sTarget = sortButton.parentNode.attributes['data-column-id'].nodeValue;\n sCount = sortButton.classList.contains('gridjs-sort-desc') ? 2 : 1;\n }\n\n return [sTarget, sCount];\n};\n\nexport const getFilterSortStatus = (pageName, defaultSort, defaultSortCount) => {\n const selectedFilter = window.localStorage.getItem(`${pageName}.selectedFilter`) ?? '0';\n const prevFilters = JSON.parse(window.localStorage.getItem(`${pageName}.filters`));\n const prevFilter = (prevFilters === null\n || !Object.prototype.hasOwnProperty.call(prevFilters, selectedFilter))\n ? null\n : prevFilters[selectedFilter];\n\n return (prevFilter && prevFilter.sort) ? prevFilter.sort : [defaultSort, defaultSortCount];\n};\n\nexport const getKeyNames = (sliderId, dataObject) => {\n const skipStepSlider = document.getElementById(sliderId);\n\n const sliderValues = skipStepSlider.noUiSlider.get();\n const isArray = Array.isArray(sliderValues);\n\n // スライダーの値が1つの場合\n if (!isArray) {\n const keyName = Object.keys(dataObject).find(\n (key) => dataObject[key] === sliderValues,\n );\n return keyName;\n }\n\n // スライダーの値が2つの場合\n const keyName1 = Object.keys(dataObject).find(\n (key) => dataObject[key] === sliderValues[0],\n );\n const keyName2 = Object.keys(dataObject).find(\n (key) => dataObject[key] === sliderValues[1],\n );\n\n return [keyName1, keyName2];\n};\n\nexport const saveView = () => {\n const keyAlign = getKeyNames('skipstep-align', otoge.ALIGN_DATA);\n const keyWrap = getKeyNames('skipstep-wrap', otoge.WRAP_DATA);\n const keyBreak = getKeyNames('skipstep-break', otoge.BREAK_DATA);\n const keyOrder = getKeyNames('skipstep-order', otoge.ORDER_DATA);\n const keyUpper = getKeyNames('skipstep-upper', otoge.UPPER_DATA);\n const keyName = getKeyNames('skipstep-name', keyOrder === '1' ? otoge.NAME_DATA2 : otoge.NAME_DATA1);\n\n const prevView = {\n name: keyName,\n align: keyAlign,\n wrap: keyWrap,\n break: keyBreak,\n order: keyOrder,\n upper: keyUpper,\n };\n\n window.localStorage.setItem('view', JSON.stringify(prevView));\n};\n\nexport const CreateSkipSlider1 = (\n id,\n dataObject,\n prevKey,\n onStart,\n onSet,\n defaultKey,\n) => {\n const skipSlider = document.getElementById(`skipstep-${id}`);\n const defaultPos = dataObject[defaultKey];\n const startPos = (prevKey !== null && prevKey !== undefined)\n ? dataObject[prevKey]\n : defaultPos;\n\n noUiSlider.create(skipSlider, {\n range: {\n min: 0,\n max: dataObject.length - 1,\n },\n start: startPos,\n default: defaultPos,\n matchingTable: dataObject,\n step: 1,\n tooltips: true,\n format: {\n to: (key) => dataObject[Math.round(key)],\n from: (value) => Object.keys(dataObject).filter(\n (key) => dataObject[key] === value,\n )[0],\n },\n });\n\n const skipValues = [\n document.getElementById(`${id}-text`),\n ];\n\n skipSlider.noUiSlider.on('update', (values, handle) => {\n skipValues[handle].innerHTML = values[handle];\n });\n\n skipSlider.noUiSlider.on('start', onStart);\n skipSlider.noUiSlider.on('set', onSet);\n};\n\nexport const CreateSkipSlider2 = (\n id,\n dataObject,\n prevKeys,\n onStart,\n onSet,\n margin = 0,\n defaultPosUpper = undefined,\n updateFn = undefined,\n) => {\n const skipSlider = document.getElementById(`skipstep-${id}`);\n const defaultPos = [dataObject[0],\n defaultPosUpper === undefined ? dataObject[dataObject.length - 1] : defaultPosUpper];\n const startPos = (prevKeys !== null && prevKeys !== undefined\n && prevKeys.length === 2)\n ? [dataObject[prevKeys[0]], dataObject[prevKeys[1]]]\n : defaultPos;\n\n noUiSlider.create(skipSlider, {\n range: {\n min: 0,\n max: dataObject.length - 1,\n },\n connect: true,\n start: startPos,\n default: defaultPos,\n matchingTable: dataObject,\n step: 1,\n margin,\n tooltips: [true, true],\n format: {\n to: (key) => dataObject[Math.round(key)],\n from: (value) => Object.keys(dataObject).filter(\n (key) => dataObject[key] === value,\n )[0],\n },\n });\n\n const skipValues = [\n document.getElementById(`${id}-lower`),\n document.getElementById(`${id}-upper`),\n document.getElementById(`${id}-hyphen`),\n document.getElementById(`${id}-same`),\n ];\n\n skipSlider.noUiSlider.on('update', updateFn !== undefined ? updateFn : (values, handle) => {\n skipValues[handle].innerHTML = values[handle];\n\n const firstDataValue = dataObject[0];\n const lastDataValue = dataObject[dataObject.length - 1];\n\n if (skipValues[0].innerHTML === skipValues[1].innerHTML) {\n skipValues[3].innerHTML = values[handle];\n skipValues[0].style.display = 'none';\n skipValues[1].style.display = 'none';\n skipValues[2].style.display = 'none';\n skipValues[3].style.display = 'inline';\n } else if ((skipValues[0].innerText === firstDataValue\n || skipValues[0].innerHTML === firstDataValue)\n && (skipValues[1].innerText === lastDataValue\n || skipValues[1].innerHTML === lastDataValue)) {\n skipValues[3].innerHTML = 'ALL';\n skipValues[0].style.display = 'none';\n skipValues[1].style.display = 'none';\n skipValues[2].style.display = 'none';\n skipValues[3].style.display = 'inline';\n } else {\n skipValues[0].style.display = 'inline';\n skipValues[1].style.display = 'inline';\n skipValues[2].style.display = 'inline';\n skipValues[3].style.display = 'none';\n }\n });\n\n skipSlider.noUiSlider.on('start', onStart);\n skipSlider.noUiSlider.on('set', onSet);\n};\n","import * as site from './m/site_m.js';\nimport * as otoge from './m/const_m.js';\n\nconst PAGE_NAME = 'targetScore';\n\nlet mainGrid;\nlet fumensDataRaw;\nlet scoreRateDataRaw;\nlet myMusicDataRaw;\n\nlet targetScoreKey;\n\nlet updateFilterTimer;\n\nlet sortClickCount;\nlet sortTarget;\n\nlet initializing = true;\n\nconst fumenFilter = (\n target,\n diff,\n medal,\n rank,\n score,\n version,\n addVersion,\n lv,\n lvType,\n targetPercent,\n count,\n order,\n upper,\n) => {\n const column0 = (upper === '0' || upper === '2') ? 'CONCAT(TBL1.[1], TBL1.[6]) AS [0]' : 'TBL1.[1] AS [0]';\n const column1 = (upper === '1' || upper === '2' || upper === undefined) ? 'CONCAT(TBL1.[2], TBL1.[6]) AS [1]' : 'TBL1.[2] AS [1]';\n\n const columnOrder = order === '1' ? `${column1}, ${column0}` : `${column0}, ${column1}`;\n\n // TBL1.[2] AS [0], TBL1.[1] AS [1]\n const res = alasql(`MATRIX OF\nSELECT ${columnOrder}, -- t/g\nTBL1.[3] AS [2], TBL1.[4] AS [3], -- lv-type/lv\nTBL3.[1] AS [4], -- medal\nTBL3.[2] AS [5], -- rank\nTBL3.[3] AS [6], -- score\n-- CASE WHEN TBL3.[3] = -2 THEN 0 ELSE TBL3.[3] END AS [6], -- score\nTBL1.[5] AS [7], -- version\nTBL2.[1] AS [8], \nTBL2.[2] AS [9], \nTBL2.[3] AS [10], \nTBL2.[4] AS [11], \nTBL2.[5] AS [12], \nTBL2.[6] AS [13], \nTBL2.[7] AS [14],\nTBL2.[9] AS [15], -- count\nTBL1.[6] AS [16], -- upper\nTBL1.[7] AS [17] -- add version\nFROM ? AS TBL1\nINNER JOIN ? AS TBL2 ON TBL2.[0] = TBL1.[0]\nINNER JOIN ? AS TBL3 ON TBL3.[0] = TBL1.[0]`, [fumensDataRaw, scoreRateDataRaw, myMusicDataRaw]);\n\n let res2;\n if (target[0] === otoge.TARGET_SCORE_DATA.length - 1) {\n // get next target\n res2 = alasql(`MATRIX OF\nSELECT \nTBL1.[0] AS [0], \nTBL1.[1] AS [1], \nTBL1.[2] AS [2], \nTBL1.[3] AS [3], \nTBL1.[4] AS [4], \nTBL1.[5] AS [5], \nTBL1.[6] AS [6], \nTBL1.[6] AS [7], -- dummy score\nCASE \nWHEN TBL1.[6] < 85000 THEN TBL1.[8]\nWHEN TBL1.[6] < 90000 THEN TBL1.[9]\nWHEN TBL1.[6] < 95000 THEN TBL1.[10]\nWHEN TBL1.[6] < 98000 THEN TBL1.[11]\nWHEN TBL1.[6] < 99000 THEN TBL1.[12]\nWHEN TBL1.[6] < 99400 THEN TBL1.[13]\nWHEN TBL1.[6] < 100000 THEN TBL1.[14]\nELSE TBL1.[14] END AS [8],\nCASE \nWHEN TBL1.[6] < 85000 THEN 4\nWHEN TBL1.[6] < 90000 THEN 5\nWHEN TBL1.[6] < 95000 THEN 6\nWHEN TBL1.[6] < 98000 THEN 7\nWHEN TBL1.[6] < 99000 THEN 8\nWHEN TBL1.[6] < 99400 THEN 9\nWHEN TBL1.[6] < 100000 THEN 10\nELSE 11 END AS [9], -- target score class\nTBL1.[15] AS [10],\nTBL1.[7] AS [11], -- version\nTBL1.[16] AS [12], -- upper\nTBL1.[17] AS [13] -- add version\nFROM ? AS TBL1`, [res]);\n } else {\n // ${otoge.TARGET_SCORE_DATA_R[target[0]] + 4} is column number\n const test = `MATRIX OF\nSELECT \nTBL1.[0] AS [0], \nTBL1.[1] AS [1], \nTBL1.[2] AS [2], \nTBL1.[3] AS [3], \nTBL1.[4] AS [4], \nTBL1.[5] AS [5], \nTBL1.[6] AS [6], \nTBL1.[6] AS [7], -- dummy score\nCASE WHEN TBL1.[6] < 100000 THEN TBL1.[${otoge.TARGET_SCORE_DATA_R[target[0]] + 4}]\nELSE TBL1.[${otoge.TARGET_SCORE_DATA_R[6] + 4}] END AS [8],\n${otoge.TARGET_SCORE_DATA_R[target[0]]} AS [9], -- target score \nTBL1.[15] AS [10],\nTBL1.[7] AS [11], -- version\nTBL1.[16] AS [12], -- upper\nTBL1.[17] AS [13] -- add version\nFROM ? AS TBL1`;\n res2 = alasql(test, [res]);\n }\n\n // add diff column\n const res3 = alasql(`MATRIX OF\nSELECT \nTBL1.[0] AS [0], \nTBL1.[1] AS [1], \nTBL1.[2] AS [2], \nTBL1.[3] AS [3], \nTBL1.[4] AS [4], \nTBL1.[5] AS [5], \nTBL1.[6] AS [6], \nTBL1.[7] AS [7],\nTBL1.[8] AS [8],\nTBL1.[9] AS [9],\n\nTBL1.[6] - CASE TBL1.[9]\nWHEN 4 THEN 85000 \nWHEN 5 THEN 90000 \nWHEN 6 THEN 95000 \nWHEN 7 THEN 98000 \nWHEN 8 THEN 99000 \nWHEN 9 THEN 99400 \nELSE 100000 END AS [10], -- diff\nTBL1.[10] AS [11],\nTBL1.[11] AS [12], -- version\nTBL1.[12] AS [13], -- upper\nTBL1.[13] AS [14] -- add version\nFROM ? AS TBL1`, [res2]);\n\n let sql = 'MATRIX OF SELECT * FROM ?';\n let arg = [res3];\n if (diff[0] !== 0 || diff[1] !== otoge.DIFF_DATA.length - 1) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n sql += ' ? <= [10] AND [10] <= ?';\n arg = arg.concat([otoge.DIFF_DATA_R[diff[0]], otoge.DIFF_DATA_R[diff[1]]]);\n }\n if (medal[0] !== 0 || medal[1] !== otoge.MEDAL_DATA.length - 1) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n sql += ' ? <= [4] AND [4] <= ?';\n arg = arg.concat([otoge.MEDAL_DATA_R[medal[0]], otoge.MEDAL_DATA_R[medal[1]]]);\n }\n if (rank[0] !== 0 || rank[1] !== otoge.RANK_DATA.length - 1) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n sql += ' ? <= [5] AND [5] <= ?';\n arg = arg.concat([otoge.RANK_DATA_R[rank[0]], otoge.RANK_DATA_R[rank[1]]]);\n }\n if (score[0] !== 0 || score[1] !== otoge.SCORE_DATA.length - 1) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n sql += ' ? <= [6] AND [6] < ?';\n if (target[0] === otoge.TARGET_SCORE_DATA.length - 1) {\n // next\n arg = arg.concat([\n otoge.SCORE_DATA_R[score[0]],\n otoge.SCORE_DATA_R[score[1]]]);\n } else {\n // fix target\n arg = arg.concat([\n otoge.SCORE_DATA_R[score[0]],\n otoge.SCORE_DATA_R[score[1]] < otoge.SCORE_DATA_R[otoge.TARGET_SCORE_DATA_R[target[0]]]\n ? otoge.SCORE_DATA_R[score[1]] : otoge.SCORE_DATA_R[otoge.TARGET_SCORE_DATA_R[target[0]]],\n ]);\n }\n }\n\n if (version[0] !== 0) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n sql += ' [12] = ?';\n arg = arg.concat([otoge.VERSION_DATA_R[version[0]]]);\n }\n if (addVersion[0] !== 0 || addVersion[1] !== otoge.ADD_VERSION_DATA.length - 1) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n sql += ' ? <= [14] AND [14] <= ?';\n arg = arg.concat([otoge.ADD_VERSION_DATA_R[addVersion[0]],\n otoge.ADD_VERSION_DATA_R[addVersion[1]]]);\n }\n if (lv[0] !== 0 || lv[1] !== otoge.LV_DATA.length - 1) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n sql += ' ? <= [3] AND [3] <= ?';\n arg = arg.concat([lv[0] + 1, lv[1] + 1]); // +1 == to lv\n }\n if (lvType[0] !== 0 || lvType[1] !== otoge.LV_TYPE_DATA.length - 1) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n sql += ' ? <= [2] AND [2] <= ?';\n arg = arg.concat([lvType[0] + 1, lvType[1] + 1]); // +1 == to lv type\n }\n if (targetPercent[0] !== 0\n || targetPercent[1] !== otoge.TARGET_PERCENT_DATA.length - 1) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n sql += ' ? <= [8] AND [8] < ?';\n arg = arg.concat([otoge.TARGET_PERCENT_DATA_R[targetPercent[0]],\n otoge.TARGET_PERCENT_DATA_R[targetPercent[1]]]);\n }\n if (count[0] !== 0\n || count[1] !== otoge.COUNT_DATA.length - 1) {\n sql += (arg.length === 1) ? ' WHERE' : ' AND';\n\n if (count[1] === otoge.COUNT_DATA.length - 1) {\n // ~∞\n sql += ' ? <= [11]';\n arg = arg.concat(otoge.COUNT_DATA_R[[count[0]]]);\n } else {\n sql += ' ? <= [11] AND [11] < ?';\n arg = arg.concat([otoge.COUNT_DATA_R[count[0]],\n otoge.COUNT_DATA_R[count[1]]]);\n }\n }\n\n const res4 = alasql(sql, arg);\n\n // remove score class/version column\n const result = res4.map((a) => [a[0], a[1], a[2], a[3], a[4],\n a[5], a[6], a[7], a[8], a[10], a[11], a[13]]);\n\n return result;\n};\n\n// const onReady = (...args) => {\nconst onReady = () => {\n // page 移動, sort 変更のタイミングでも呼ばれる。\n // console.log('row: ' + JSON.stringify(args), args);\n const test = site.getCurrentSortStatus();\n // console.log(test);\n if (test[0]) {\n saveFilterAndSort();\n }\n\n const tableWrapper = document.querySelector('#wrapper');\n const table = tableWrapper.querySelector('table');\n\n table.style.tableLayout = 'auto';\n\n const view = JSON.parse(window.localStorage.getItem('view'));\n\n if (view?.name === '0' || view?.name === '1') {\n table.querySelector('thead tr th:first-child').style.width = '100%';\n table.querySelector('thead tr th:nth-child(4)').style.width = '22px';\n table.querySelector('thead tr th:nth-child(5)').style.width = '22px';\n } else {\n table.querySelector('thead tr th:nth-child(1)').style.width = '50%';\n table.querySelector('thead tr th:nth-child(2)').style.width = '50%';\n table.querySelector('thead tr th:nth-child(5)').style.width = '22px';\n table.querySelector('thead tr th:nth-child(6)').style.width = '22px';\n }\n\n table.style.tableLayout = 'fixed';\n};\n\n// const storeSort = (...args) => {\nconst storeSort = () => {\n mainGrid.off('ready', storeSort);\n\n // console.log('row: ' + JSON.stringify(args), args);\n\n setTimeout(() => {\n [...Array(sortClickCount)].map(() => $(`.gridjs-th[data-column-id=${sortTarget}]`).trigger('click'));\n }, 0);\n};\n\nconst scoreToScoreClass = (score) => {\n if (score < 70000) {\n return 1;\n } if (score < 80000) {\n return 2;\n } if (score < 85000) {\n return 3;\n } if (score < 90000) {\n return 4;\n } if (score < 95000) {\n return 5;\n } if (score < 98000) {\n return 6;\n } if (score < 99000) {\n return 7;\n } if (score < 99400) {\n return 8;\n } if (score < 100000) {\n return 9;\n }\n return 10;\n};\n\nconst updateGrid = (data) => {\n if (mainGrid === undefined) {\n const view = JSON.parse(window.localStorage.getItem('view'));\n\n let containerStyle = `\n display: flex;\n justify-content: space-between;\n padding: 0ch 1ch;\n align-items: center;\n `;\n\n let middleStyle = `\n flex-grow: 1;\n padding: 0;\n `;\n\n let nameStyle = 'display: block;';\n\n if (view?.align === '0') {\n nameStyle += `\n text-align: left;\n `;\n } else if (view?.align === '2') {\n nameStyle += `\n text-align: right;\n `;\n }\n\n if (view?.wrap === '1') {\n containerStyle += `\n overflow: hidden;\n white-space: nowrap; \n `;\n middleStyle += `\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis; \n `;\n nameStyle += `\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n `;\n }\n\n const name1 = view?.order === '1' ? 'genre' : 'title';\n const name2 = view?.order === '1' ? 'title' : 'genre';\n\n const br = (view?.break !== '1') ? '
' : ' ';\n\n // const Upper = (view?.upper === '3' || view?.upper === '4') ? 'UPPER' : '';\n const upperIndex = 11;\n\n let nameColumns = [];\n\n const name = view?.name;\n if (name === '0') {\n nameColumns = [{\n id: '0',\n name: name1,\n formatter: (_, row) => {\n const displayData = row.cells[0].data;\n return gridjs.html(`\n
\n ${(view?.upper === '3' && row.cells[upperIndex].data) ? `${row.cells[upperIndex].data}` : ''}\n ${displayData}\n ${(view?.upper === '4' && row.cells[upperIndex].data) ? `${row.cells[upperIndex].data}` : ''}\n
\n`);\n },\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n colspan: '1',\n };\n },\n },\n {\n id: '1',\n name: name2,\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n style: 'display:none',\n };\n },\n hidden: true,\n }];\n } else if (name === '1') {\n nameColumns = [{\n id: '0',\n name: name1,\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n style: 'display:none',\n };\n },\n hidden: true,\n },\n {\n id: '1',\n name: name2,\n formatter: (_, row) => {\n const displayData = row.cells[1].data;\n return gridjs.html(`\n
\n ${(view?.upper === '3' && row.cells[upperIndex].data) ? `${row.cells[upperIndex].data}` : ''}\n ${displayData}\n ${(view?.upper === '4' && row.cells[upperIndex].data) ? `${row.cells[upperIndex].data}` : ''}\n
\n`);\n },\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n colspan: '1',\n };\n },\n }];\n } else if (name === '3') {\n nameColumns = [{\n id: '0',\n name: name1,\n formatter: (_, row) => {\n let cell0Data = row.cells[0].data;\n let cell1Data = row.cells[1].data;\n if (cell0Data.replace(/UPPER$/, '') === cell1Data.replace(/UPPER$/, '') && cell0Data !== cell1Data) {\n if (cell1Data.length < cell0Data.length) {\n cell1Data = cell0Data;\n } else {\n cell0Data = cell1Data;\n }\n }\n const displayData = `${cell0Data}${cell0Data === cell1Data ? '' : br + cell1Data}`;\n return gridjs.html(`\n
\n ${(view?.upper === '3' && row.cells[upperIndex].data) ? `${row.cells[upperIndex].data}` : ''}\n ${displayData}\n ${(view?.upper === '4' && row.cells[upperIndex].data) ? `${row.cells[upperIndex].data}` : ''}\n
\n`);\n },\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n colspan: '2',\n };\n },\n },\n {\n id: '1',\n name: name2,\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n style: 'display:none',\n };\n },\n }];\n } else {\n nameColumns = [{\n id: '0',\n name: name1,\n formatter: (_, row) => {\n const displayData = `${row.cells[0].data}${br}${row.cells[1].data}`;\n return gridjs.html(`\n
\n ${(view?.upper === '3' && row.cells[upperIndex].data) ? `${row.cells[upperIndex].data}` : ''}\n ${displayData}\n ${(view?.upper === '4' && row.cells[upperIndex].data) ? `${row.cells[upperIndex].data}` : ''}\n
\n`);\n },\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n colspan: '2',\n };\n },\n },\n {\n id: '1',\n name: name2,\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n style: 'display:none',\n };\n },\n }];\n }\n\n const otherColumns = [{\n id: '2',\n name: '',\n sort: 0,\n width: '1px',\n attributes: {\n style: 'display:none',\n },\n },\n {\n id: '3',\n name: 'lv',\n width: '3ch',\n attributes: (cell, row) => {\n if (cell === null) {\n return {\n colspan: '2',\n };\n }\n return {\n style: `background-color:${otoge.LV_TYPE_BACK_COLOR[row.cells[2].data]}; padding:0ch 0.5ch; text-align: right; font-family: monospace;`,\n colspan: '2',\n };\n },\n },\n {\n id: '4',\n name: 'm',\n width: '45px',\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n style: 'display:none',\n };\n },\n },\n {\n id: '5',\n name: 'r',\n formatter: (_, row) => gridjs.html(`\"${row.cells[4].data}\\t\"`\n + `\"${row.cells[5].data}\"`),\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n colspan: '2',\n };\n },\n },\n {\n id: '6',\n name: 'score',\n width: '5ch',\n formatter: (_, row) => (row.cells[6].data === -2 ? '-' : row.cells[6].data),\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n style: 'padding: 0px; text-align: center',\n };\n },\n },\n {\n id: '7',\n name: '→t',\n width: '5ch',\n formatter: (_, row) => {\n let targetScoreClass = otoge.TARGET_SCORE_DATA_R[targetScoreKey];\n const nowScoreClass = scoreToScoreClass(row.cells[6].data);\n if (targetScoreKey === String(otoge.TARGET_SCORE_DATA.length - 1)) {\n if (nowScoreClass < 10) {\n targetScoreClass = nowScoreClass + 1;\n } else {\n targetScoreClass = 10;\n }\n }\n\n // const now_score_class_str = otoge.TARGET_SCORE_CLASS_DATA[now_score_class];\n let targetScoreClassStr = '';\n if (targetScoreClass <= 10) {\n // 85kから\n targetScoreClassStr = otoge.TARGET_SCORE_CLASS_DATA[\n targetScoreClass < 4 ? 4 : targetScoreClass];\n }\n\n // return now_score_class_str + '→' + target_score_class_str;\n return `→${targetScoreClassStr}`;\n },\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n style: 'padding: 0px; text-align: center',\n };\n },\n },\n {\n id: '8',\n // important!\n name: gridjs.html('target
%'),\n width: '5ch',\n formatter: (_, row) => (Number.isFinite(row.cells[8].data)\n ? row.cells[8].data.toFixed(2) : row.cells[8].data),\n sort: {\n compare: (a, b) => {\n const aIsFinite = Number.isFinite(a);\n const bIsFinite = Number.isFinite(b);\n if (!aIsFinite && !bIsFinite) {\n return 0;\n } if (!aIsFinite) {\n return 1;\n } if (!bIsFinite) {\n return -1;\n }\n if (a > b) {\n return 1;\n } if (a < b) {\n return -1;\n }\n return 0;\n },\n },\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n style: 'padding: 0px 5px 0px 0px; text-align: right; font-family: monospace',\n };\n },\n },\n {\n id: '9',\n name: 'diff',\n width: '4ch',\n formatter: (_, row) => (row.cells[9].data <= 0 ? row.cells[9].data : (`+${row.cells[9].data}`)),\n attributes: (cell) => {\n if (cell === null) {\n return undefined;\n }\n return {\n style: 'padding: 0px 5px 0px 0px; text-align: right; font-family: monospace',\n };\n },\n },\n {\n id: '10',\n name: 'c',\n width: '3ch',\n formatter: (_, row) => row.cells[10].data,\n attributes: (cell) => {\n if (cell === null) {\n return {\n colspan: '2',\n };\n }\n return {\n style: 'padding: 0px 5px 0px 0px; text-align: right; font-family: monospace',\n colspan: '2',\n };\n },\n },\n {\n id: '11',\n name: '',\n sort: 0,\n width: '1px',\n attributes: {\n style: 'display:none',\n },\n },\n {\n id: '12',\n name: '',\n sort: 0,\n width: '1px',\n attributes: {\n style: 'display:none',\n },\n }];\n\n mainGrid = new gridjs.Grid({\n columns: [...nameColumns, ...otherColumns],\n sort: true,\n search: {\n ignoreHiddenColumns: false,\n },\n pagination: {\n enabled: true,\n limit: 10,\n },\n style: {\n table: {\n },\n th: {\n padding: '0px',\n 'text-align': 'center',\n },\n td: {\n padding: '0px',\n 'text-align': 'center',\n },\n },\n language: {\n pagination: {\n previous: '←',\n next: '→',\n },\n },\n data,\n }).render(document.getElementById('wrapper'));\n\n mainGrid.on('ready', onReady);\n\n // 1st sort.\n [sortTarget, sortClickCount] = site.getFilterSortStatus(PAGE_NAME, '8', 2);\n\n if (sortClickCount > 0) {\n mainGrid.on('ready', storeSort);\n }\n } else {\n [sortTarget, sortClickCount] = site.getFilterSortStatus(PAGE_NAME, '8', 2);\n\n mainGrid.updateConfig({\n data,\n }).forceRender();\n\n if (sortClickCount > 0) {\n mainGrid.on('ready', storeSort);\n }\n }\n};\n\nfunction saveFilterAndSort() {\n const keyTarget = site.getKeyNames('skipstep-target', otoge.TARGET_SCORE_DATA);\n const [keyDiff1, keyDiff2] = site.getKeyNames('skipstep-diff', otoge.DIFF_DATA);\n const [keyMedal1, keyMedal2] = site.getKeyNames('skipstep-medal', otoge.MEDAL_DATA);\n const [keyRank1, keyRank2] = site.getKeyNames('skipstep-rank', otoge.RANK_DATA);\n const [keyScore1, keyScore2] = site.getKeyNames('skipstep-score', otoge.SCORE_DATA);\n const keyVersion = site.getKeyNames('skipstep-version', otoge.VERSION_DATA);\n const [keyAddVersion1, keyAddVersion2] = site.getKeyNames('skipstep-add-version', otoge.ADD_VERSION_DATA);\n const [keyLv1, keyLv2] = site.getKeyNames('skipstep-lv', otoge.LV_DATA);\n const [keyLvType1, keyLvType2] = site.getKeyNames('skipstep-lv-type', otoge.LV_TYPE_DATA);\n const keyTargetPercent = site.getKeyNames('skipstep-target-percent', otoge.TARGET_PERCENT_DATA);\n const keyCount = site.getKeyNames('skipstep-count', otoge.COUNT_DATA);\n\n const sortStatus = site.getCurrentSortStatus();\n\n const selectedFilter = window.localStorage.getItem(`${PAGE_NAME}.selectedFilter`) ?? '0';\n const prevFilters = JSON.parse(window.localStorage.getItem(`${PAGE_NAME}.filters`)) ?? {};\n prevFilters[selectedFilter] = {\n target: keyTarget,\n diff: [keyDiff1, keyDiff2],\n medal: [keyMedal1, keyMedal2],\n rank: [keyRank1, keyRank2],\n score: [keyScore1, keyScore2],\n version: keyVersion,\n add_version: [keyAddVersion1, keyAddVersion2],\n lv: [keyLv1, keyLv2],\n lv_type: [keyLvType1, keyLvType2],\n target_percent: keyTargetPercent,\n count: keyCount,\n sort: sortStatus,\n filter_version: 2,\n };\n\n window.localStorage.setItem(`${PAGE_NAME}.filters`, JSON.stringify(prevFilters));\n}\n\nfunction updateGrid2() {\n const keyTarget = site.getKeyNames('skipstep-target', otoge.TARGET_SCORE_DATA);\n const [keyDiff1, keyDiff2] = site.getKeyNames('skipstep-diff', otoge.DIFF_DATA);\n const [keyMedal1, keyMedal2] = site.getKeyNames('skipstep-medal', otoge.MEDAL_DATA);\n const [keyRank1, keyRank2] = site.getKeyNames('skipstep-rank', otoge.RANK_DATA);\n const [keyScore1, keyScore2] = site.getKeyNames('skipstep-score', otoge.SCORE_DATA);\n const keyVersion = site.getKeyNames('skipstep-version', otoge.VERSION_DATA);\n const [keyAddVersion1, keyAddVersion2] = site.getKeyNames('skipstep-add-version', otoge.ADD_VERSION_DATA);\n const [keyLv1, keyLv2] = site.getKeyNames('skipstep-lv', otoge.LV_DATA);\n const [keyLvType1, keyLvType2] = site.getKeyNames('skipstep-lv-type', otoge.LV_TYPE_DATA);\n const keyTargetPercent = site.getKeyNames('skipstep-target-percent', otoge.TARGET_PERCENT_DATA);\n const keyCount = site.getKeyNames('skipstep-count', otoge.COUNT_DATA);\n\n const order = JSON.parse(window.localStorage.getItem('view'))?.order;\n const upper = JSON.parse(window.localStorage.getItem('view'))?.upper;\n\n // for column\n targetScoreKey = keyTarget;\n\n const filteredData = fumenFilter(\n [keyTarget].map(Number),\n [keyDiff1, keyDiff2].map(Number),\n [keyMedal1, keyMedal2].map(Number),\n [keyRank1, keyRank2].map(Number),\n [keyScore1, keyScore2].map(Number),\n [keyVersion].map(Number),\n [keyAddVersion1, keyAddVersion2].map(Number),\n [keyLv1, keyLv2].map(Number),\n [keyLvType1, keyLvType2].map(Number),\n keyTargetPercent.map(Number),\n keyCount.map(Number),\n order,\n upper,\n );\n\n updateGrid(filteredData);\n}\n\nfunction onSliderStart() {\n clearTimeout(updateFilterTimer);\n}\n\nfunction onViewSliderSet(values, handle, unencoded, tap, positions, slider, callback) {\n if (!fumensDataRaw || !mainGrid) return;\n\n site.saveView();\n document.getElementById('wrapper').innerHTML = '';\n mainGrid = undefined;\n updateGrid(fumensDataRaw);\n clearTimeout(updateFilterTimer);\n updateFilterTimer = setTimeout(() => {\n if (callback) {\n callback();\n }\n updateGrid2(); // 1st filter\n }, 1000);\n}\n\nfunction onViewOrderSliderSet(values, handle, unencoded, tap, positions, slider) {\n onViewSliderSet(values, handle, unencoded, tap, positions, slider, () => {\n // When the 'order' slider is moved, we need to update the display of the 'name' slider.\n const skipSlider = document.getElementById('skipstep-name');\n const currentView = JSON.parse(window.localStorage.getItem('view'));\n const isNewOrder = currentView?.order === '1';\n\n const newNameData = isNewOrder ? otoge.NAME_DATA2 : otoge.NAME_DATA1;\n const oldNameData = isNewOrder ? otoge.NAME_DATA1 : otoge.NAME_DATA2;\n\n const findKeyByValue = (obj, value) => Object.keys(obj).find((key) => obj[key] === value);\n\n skipSlider.noUiSlider.updateOptions({\n format: {\n to: (key) => newNameData[Math.round(key)],\n from: (value) => findKeyByValue(newNameData, value)\n || findKeyByValue(oldNameData, value),\n },\n });\n });\n}\n\nfunction onFilterSliderSet(values, handle, unencoded, tap, positions, slider, callback) {\n if (!fumensDataRaw || !mainGrid) return;\n\n saveFilterAndSort();\n clearTimeout(updateFilterTimer);\n updateFilterTimer = setTimeout(() => {\n updateGrid2();\n if (callback) {\n callback();\n }\n }, 1000);\n}\n\nfunction onFilterScoreSliderUpdate(values, handle) {\n const skipValues = [\n document.getElementById('score-lower'),\n document.getElementById('score-upper'),\n document.getElementById('score-hyphen'),\n document.getElementById('score-same'),\n ];\n\n const dataObject = otoge.SCORE_DATA;\n const dataDisplayObject = otoge.SCORE_DATA_DISPLAY;\n const firstDataValue = dataObject[0];\n const lastDataValue = dataObject[dataObject.length - 1];\n\n const keyScore = Object.keys(dataObject).filter(\n (key) => dataObject[key] === values[handle],\n )[0];\n\n skipValues[handle].innerHTML = dataDisplayObject[keyScore];\n\n if (values[0] === firstDataValue\n && values[1] === lastDataValue) {\n skipValues[3].innerHTML = 'ALL';\n skipValues[0].style.display = 'none';\n skipValues[1].style.display = 'none';\n skipValues[2].style.display = 'none';\n skipValues[3].style.display = 'inline';\n } else {\n skipValues[0].style.display = 'inline';\n skipValues[1].style.display = 'inline';\n skipValues[2].style.display = 'inline';\n if (values[1] === lastDataValue) {\n skipValues[2].innerHTML = '\"closed\"';\n } else {\n skipValues[2].innerHTML = '\"leftclosed\"';\n }\n skipValues[3].style.display = 'none';\n }\n}\n\nfunction onFilterTargetPercentSliderUpdate(values, handle) {\n const skipValues = [\n document.getElementById('target-percent-lower'),\n document.getElementById('target-percent-upper'),\n document.getElementById('target-percent-hyphen'),\n document.getElementById('target-percent-same'),\n ];\n\n const dataObject = otoge.TARGET_PERCENT_DATA;\n const dataDisplayObject = otoge.TARGET_PERCENT_DATA_DISPLAY;\n const firstDataValue = dataObject[0];\n const lastDataValue = dataObject[dataObject.length - 1];\n\n const keyScore = Object.keys(dataObject).filter(\n (key) => dataObject[key] === values[handle],\n )[0];\n\n skipValues[handle].innerHTML = dataDisplayObject[keyScore];\n\n if (values[0] === firstDataValue\n && values[1] === lastDataValue) {\n skipValues[3].innerHTML = 'ALL';\n skipValues[0].style.display = 'none';\n skipValues[1].style.display = 'none';\n skipValues[2].style.display = 'none';\n skipValues[3].style.display = 'inline';\n } else {\n skipValues[0].style.display = 'inline';\n skipValues[1].style.display = 'inline';\n skipValues[2].style.display = 'inline';\n if (values[1] === lastDataValue) {\n skipValues[2].innerHTML = '\"closed\"';\n } else {\n skipValues[2].innerHTML = '\"leftclosed\"';\n }\n skipValues[3].style.display = 'none';\n }\n}\n\nfunction onFilterCountSliderUpdate(values, handle) {\n const skipValues = [\n document.getElementById('count-lower'),\n document.getElementById('count-upper'),\n document.getElementById('count-hyphen'),\n document.getElementById('count-same'),\n ];\n\n const dataObject = otoge.COUNT_DATA;\n const dataDisplayObject = otoge.COUNT_DATA_DISPLAY;\n const firstDataValue = dataObject[0];\n const lastDataValue = dataObject[dataObject.length - 1];\n\n const keyScore = Object.keys(dataObject).filter(\n (key) => dataObject[key] === values[handle],\n )[0];\n\n skipValues[handle].innerHTML = dataDisplayObject[keyScore];\n\n if (values[0] === firstDataValue\n && values[1] === lastDataValue) {\n skipValues[3].innerHTML = 'ALL';\n skipValues[0].style.display = 'none';\n skipValues[1].style.display = 'none';\n skipValues[2].style.display = 'none';\n skipValues[3].style.display = 'inline';\n } else {\n skipValues[0].style.display = 'inline';\n skipValues[1].style.display = 'inline';\n skipValues[2].style.display = 'inline';\n if (values[1] === lastDataValue) {\n skipValues[2].innerHTML = '\"closed\"';\n } else {\n skipValues[2].innerHTML = '\"leftclosed\"';\n }\n skipValues[3].style.display = 'none';\n }\n}\n\nif (document.querySelector('h1.nologin') !== null) {\n // no login\n} else {\n document.getElementById('filter-selection').addEventListener('click', ({ target }) => {\n if (initializing === false && target.children[0].getAttribute('name') === 'btnradio') {\n // change filter\n const selectedFilter = target.children[0].id.replace('btnradio', '');\n window.localStorage.setItem(`${PAGE_NAME}.selectedFilter`, selectedFilter);\n // load filter\n const prevFilters = JSON.parse(window.localStorage.getItem(`${PAGE_NAME}.filters`));\n const prevFilter = (prevFilters === null\n || !Object.prototype.hasOwnProperty.call(prevFilters, selectedFilter))\n ? null\n : prevFilters[selectedFilter];\n\n Array.from(document.querySelectorAll('[id^=skipstep-]')).map(\n (skipSlider) => {\n if (skipSlider.noUiSlider !== undefined) {\n if (prevFilter === null) {\n skipSlider.noUiSlider.set(skipSlider.noUiSlider.options.default);\n } else {\n const filter = prevFilter[skipSlider.id.replace('skipstep-', '').replaceAll('-', '_')];\n const table = skipSlider.noUiSlider.options.matchingTable;\n if (Array.isArray(filter)) {\n skipSlider.noUiSlider.set([table[filter[0]], table[filter[1]]]);\n } else {\n skipSlider.noUiSlider.set(table[filter]);\n }\n }\n }\n\n return undefined;\n },\n );\n\n // change filter で local storage は更新しない。\n if (prevFilters === null) {\n window.localStorage.removeItem(`${PAGE_NAME}.filters`);\n } else {\n window.localStorage.setItem(`${PAGE_NAME}.filters`, JSON.stringify(prevFilters));\n }\n\n updateGrid2();\n }\n });\n\n document.getElementById('reset-button').addEventListener('click', () => {\n Array.from(document.querySelectorAll('#filter [id^=skipstep-]')).map(\n (skipSlider) => skipSlider.noUiSlider.set(skipSlider.noUiSlider.options.default),\n );\n\n // remove filter\n const selectedFilter = window.localStorage.getItem(`${PAGE_NAME}.selectedFilter`) ?? '0';\n const prevFilters = JSON.parse(window.localStorage.getItem(`${PAGE_NAME}.filters`));\n if (prevFilters !== null) {\n if (Object.prototype.hasOwnProperty.call(prevFilters, selectedFilter)) {\n delete prevFilters[selectedFilter];\n if (Object.keys(prevFilters).length === 0) {\n window.localStorage.removeItem(`${PAGE_NAME}.filters`);\n } else {\n window.localStorage.setItem(`${PAGE_NAME}.filters`, JSON.stringify(prevFilters));\n }\n }\n }\n updateGrid2();\n });\n\n // accordion-item の 表示非表示処理\n const nodelist = document.querySelectorAll('.accordion-item');\n const btns = Array.prototype.slice.call(nodelist, 0);\n btns.forEach((btn) => {\n btn.addEventListener('click', (element) => {\n const ITEM_ID = element.currentTarget.parentNode.id;\n const elm = element.currentTarget.parentNode.querySelectorAll('.content')[0];\n const showStatus = JSON.parse(window.localStorage.getItem(`${PAGE_NAME}.show`)) ?? {};\n\n if (elm.style.display !== 'none') {\n elm.style.display = 'none';\n showStatus[ITEM_ID] = '0';\n } else {\n elm.style.display = '';\n showStatus[ITEM_ID] = '1';\n }\n\n window.localStorage.setItem(`${PAGE_NAME}.show`, JSON.stringify(showStatus));\n });\n });\n\n {\n // load filter\n const selectedFilter = window.localStorage.getItem(`${PAGE_NAME}.selectedFilter`) ?? '0';\n document.getElementById(`btnradio${selectedFilter}`).parentNode.click();\n const view = JSON.parse(window.localStorage.getItem('view'));\n const prevFilters = JSON.parse(window.localStorage.getItem(`${PAGE_NAME}.filters`));\n const prevFilter = (prevFilters === null\n || !Object.prototype.hasOwnProperty.call(prevFilters, selectedFilter))\n ? null\n : prevFilters[selectedFilter];\n\n const nameData = view?.order === '1' ? otoge.NAME_DATA2 : otoge.NAME_DATA1;\n\n // view\n site.CreateSkipSlider1('name', nameData, view?.name, onSliderStart, onViewSliderSet, 2);\n site.CreateSkipSlider1('align', otoge.ALIGN_DATA, view?.align, onSliderStart, onViewSliderSet, 1);\n site.CreateSkipSlider1('wrap', otoge.WRAP_DATA, view?.wrap, onSliderStart, onViewSliderSet, 0);\n site.CreateSkipSlider1('break', otoge.BREAK_DATA, view?.break, onSliderStart, onViewSliderSet, 0);\n site.CreateSkipSlider1('order', otoge.ORDER_DATA, view?.order, onSliderStart, onViewOrderSliderSet, 0);\n site.CreateSkipSlider1('upper', otoge.UPPER_DATA, view?.upper, onSliderStart, onViewSliderSet, 1);\n\n // filter\n if ((prevFilter?.filter_version == null || prevFilter?.filter_version < 2) &&\n prevFilter?.add_version[0] === '0' &&\n prevFilter?.add_version[1] === '26') {\n prevFilter?.add_version[1] = '27';\n }\n site.CreateSkipSlider1('target', otoge.TARGET_SCORE_DATA, prevFilter?.target, onSliderStart, onFilterSliderSet, otoge.TARGET_SCORE_DATA.length - 1);\n site.CreateSkipSlider2('diff', otoge.DIFF_DATA, prevFilter?.diff, onSliderStart, onFilterSliderSet, 0, -1);\n site.CreateSkipSlider2('medal', otoge.MEDAL_DATA, prevFilter?.medal, onSliderStart, onFilterSliderSet);\n site.CreateSkipSlider2('rank', otoge.RANK_DATA, prevFilter?.rank, onSliderStart, onFilterSliderSet);\n site.CreateSkipSlider2('score', otoge.SCORE_DATA, prevFilter?.score, onSliderStart, onFilterSliderSet, 1, '100k', onFilterScoreSliderUpdate);\n site.CreateSkipSlider1('version', otoge.VERSION_DATA, prevFilter?.version, onSliderStart, onFilterSliderSet, 0);\n site.CreateSkipSlider2('add-version', otoge.ADD_VERSION_DATA, prevFilter?.add_version, onSliderStart, onFilterSliderSet);\n site.CreateSkipSlider2('lv', otoge.LV_DATA, prevFilter?.lv, onSliderStart, onFilterSliderSet);\n site.CreateSkipSlider2('lv-type', otoge.LV_TYPE_DATA, prevFilter?.lv_type, onSliderStart, onFilterSliderSet);\n site.CreateSkipSlider2('target-percent', otoge.TARGET_PERCENT_DATA, prevFilter?.target_percent, onSliderStart, onFilterSliderSet, 1, '=100', onFilterTargetPercentSliderUpdate);\n site.CreateSkipSlider2('count', otoge.COUNT_DATA, prevFilter?.count, onSliderStart, onFilterSliderSet, 1, '∞', onFilterCountSliderUpdate);\n }\n\n $.getJSON('/api/mymusic', (myMusicData) => {\n $.getJSON('/api/globalscorerate', (scoreRateData) => {\n $.getJSON('/api/fumens', (fumensData) => {\n fumensDataRaw = fumensData;\n scoreRateDataRaw = scoreRateData;\n myMusicDataRaw = myMusicData;\n\n updateGrid2();\n });\n });\n });\n\n // local storage からの読み込み処理\n {\n const showStatus = JSON.parse(window.localStorage.getItem(`${PAGE_NAME}.show`));\n if (showStatus !== null) {\n const nodelist2 = document.querySelectorAll('.accordion-item');\n\n Array.from(nodelist2).map((a) => {\n const { id } = a.parentNode;\n // ls の結果から表示非表示初期対応\n if (showStatus[id]) {\n document.querySelector(`#${id} .content`).style.display = (showStatus[id] === '1') ? '' : 'none';\n }\n return undefined;\n });\n }\n }\n\n initializing = false;\n}\n"],"names":["$1e74faffb68ba8a3$export$29ae9be4f239d5eb","$1e74faffb68ba8a3$export$9bf7ae6c8fa71721","$1e74faffb68ba8a3$export$f6285729774c0968","$1e74faffb68ba8a3$export$b2ef79de4aad7ee2","$1e74faffb68ba8a3$export$90203b761f8437f2","$1e74faffb68ba8a3$export$9014f6d13cfe3cb7","$1e74faffb68ba8a3$export$f3ad466aa54b4785","$1e74faffb68ba8a3$export$6ab1457b5ef2c742","$1e74faffb68ba8a3$export$92f7773cd98552e6","$1e74faffb68ba8a3$export$7604bacaa643014d","$1e74faffb68ba8a3$export$9b2ef07002a0ce85","$1e74faffb68ba8a3$export$9a0fca8da336ce8a","$1e74faffb68ba8a3$export$fbdc9646959f858c","$1e74faffb68ba8a3$export$d82c53e7702fe75e","$1e74faffb68ba8a3$export$d6fd0259bdf22a18","$1e74faffb68ba8a3$export$97d3511a6e84abd4","$1e74faffb68ba8a3$export$fdea18aee6cb549a","$1e74faffb68ba8a3$export$c997f72d9cc26839","$1e74faffb68ba8a3$export$c14bbb39fab086b0","$1e74faffb68ba8a3$export$94a1503258adbd6","$1e74faffb68ba8a3$export$5ce6209a89deb2bc","$1e74faffb68ba8a3$export$d4133b60643fa9c5","$1e74faffb68ba8a3$export$a5aa4ddf84085b2e","$1e74faffb68ba8a3$export$b768221d2c1318d8","$1e74faffb68ba8a3$export$1ccb888e0abbb150","Array","from","length","v","k","String","shift","$1e74faffb68ba8a3$export$73d2d6170e948738","$1e74faffb68ba8a3$export$5b5f813791abcdfe","$1e74faffb68ba8a3$export$e99fb9bbef9140d4","$1e74faffb68ba8a3$export$af1718340e05e560","$1e74faffb68ba8a3$export$72cb7badadeb04e8","$1e74faffb68ba8a3$export$d6dd09f5befdbc18","$1e74faffb68ba8a3$export$a174b574db99c3b6","$ba3269ee33a960ee$export$9e5f01d6f4239890","sTarget","sCount","sortButton","document","querySelector","parentNode","attributes","nodeValue","classList","contains","$ba3269ee33a960ee$export$beefa8cde267470e","pageName","defaultSort","defaultSortCount","selectedFilter","window","localStorage","getItem","prevFilters","JSON","parse","prevFilter","Object","prototype","hasOwnProperty","call","sort","$ba3269ee33a960ee$export$454d598a873e9650","sliderId","dataObject","sliderValues","getElementById","noUiSlider","get","isArray","keys","find","key","$ba3269ee33a960ee$export$5c85e4ea5ae8a7f2","keyAlign","keyWrap","keyBreak","keyOrder","keyUpper","prevView","name","align","wrap","break","order","upper","setItem","stringify","$ba3269ee33a960ee$export$fa9a4469f22cf7f9","id","prevKey","onStart","onSet","defaultKey","skipSlider","defaultPos","startPos","create","range","min","max","start","default","matchingTable","step","tooltips","format","to","Math","round","value","filter","skipValues","on","values","handle","innerHTML","$ba3269ee33a960ee$export$266d5ac9cfd7ce27","prevKeys","margin","defaultPosUpper","updateFn","undefined","connect","firstDataValue","lastDataValue","style","display","innerText","$bd320cc7e66213d2$var$PAGE_NAME","$bd320cc7e66213d2$var$mainGrid","$bd320cc7e66213d2$var$fumensDataRaw","$bd320cc7e66213d2$var$scoreRateDataRaw","$bd320cc7e66213d2$var$myMusicDataRaw","$bd320cc7e66213d2$var$targetScoreKey","$bd320cc7e66213d2$var$updateFilterTimer","$bd320cc7e66213d2$var$sortClickCount","$bd320cc7e66213d2$var$sortTarget","$bd320cc7e66213d2$var$initializing","$bd320cc7e66213d2$var$fumenFilter","target","diff","medal","rank","score","version","addVersion","lv","lvType","targetPercent","count","column0","column1","res","alasql","res2","test","sql","arg","concat","map","a","$bd320cc7e66213d2$var$onReady","$bd320cc7e66213d2$var$saveFilterAndSort","table","tableLayout","view","width","$bd320cc7e66213d2$var$storeSort","off","setTimeout","$","trigger","$bd320cc7e66213d2$var$updateGrid","data","containerStyle","middleStyle","nameStyle","name1","name2","br","upperIndex","nameColumns","formatter","_","row","displayData","cells","gridjs","html","cell","colspan","hidden","cell0Data","cell1Data","replace","otherColumns","targetScoreClass","nowScoreClass","targetScoreClassStr","Number","isFinite","toFixed","compare","b","aIsFinite","bIsFinite","Grid","columns","search","ignoreHiddenColumns","pagination","enabled","limit","th","padding","td","language","previous","next","render","updateConfig","forceRender","keyTarget","keyDiff1","keyDiff2","keyMedal1","keyMedal2","keyRank1","keyRank2","keyScore1","keyScore2","keyVersion","keyAddVersion1","keyAddVersion2","keyLv1","keyLv2","keyLvType1","keyLvType2","keyTargetPercent","keyCount","sortStatus","add_version","lv_type","target_percent","filter_version","$bd320cc7e66213d2$var$updateGrid2","filteredData","$bd320cc7e66213d2$var$onSliderStart","clearTimeout","$bd320cc7e66213d2$var$onViewSliderSet","unencoded","tap","positions","slider","callback","$bd320cc7e66213d2$var$onFilterSliderSet","addEventListener","children","getAttribute","querySelectorAll","set","options","replaceAll","removeItem","nodelist","slice","forEach","btn","element","ITEM_ID","currentTarget","elm","showStatus","click","currentView","isNewOrder","newNameData","oldNameData","findKeyByValue","obj","updateOptions","dataDisplayObject","keyScore","getJSON","myMusicData","scoreRateData","fumensData","nodelist2"],"version":3,"file":"target-score.js.map"}