diff --git a/iidx@asphyxia/README.md b/iidx@asphyxia/README.md index 44fe8a2..6ca9104 100644 --- a/iidx@asphyxia/README.md +++ b/iidx@asphyxia/README.md @@ -136,6 +136,7 @@ Changelogs - Added Initial support for GOLD - Added Disable Beginner Option - Added Experimental Badge saving support + - Added Experimental score Import/Export - Fixed where plugin may fail to register due to missing types in dev mode - Fixed where pacemaker isn't working as intended due to malformed ghost data on music.appoint response (~ DJ TROOPERS) - Fixed where unable to login after first-play (SPADA, SINOBUZ, Rootage) diff --git a/iidx@asphyxia/handlers/webui.ts b/iidx@asphyxia/handlers/webui.ts index cc23509..37217b8 100644 --- a/iidx@asphyxia/handlers/webui.ts +++ b/iidx@asphyxia/handlers/webui.ts @@ -1,6 +1,7 @@ import { profile } from "../models/profile"; import { rival } from "../models/rival"; import { custom } from "../models/custom"; +import { score, old_score } from "../models/score"; export const updateRivalSettings = async (data) => { let update_array = []; @@ -264,6 +265,113 @@ export const updateCustomSettings = async (data) => { } }; +export const importScoreData = async (data) => { + if (_.isEmpty(data.data)) return; + + let content = JSON.parse(data.data); + let version = content.version; + let count = content.count; + + switch (version) { + case 1: + let sd_ver1: old_score[] = content.data; + for (let a = 0; a < count; a++) { + let result = { + pgArray: Array(10).fill(0), + gArray: Array(10).fill(0), + mArray: Array(10).fill(0), + cArray: Array(10).fill(0), + rArray: Array(10).fill(-1), + esArray: Array(10).fill(0), + + optArray: Array(10).fill(0), + opt2Array: Array(10).fill(0), + } + + if (!_.isNil(sd_ver1[a].spmArray)) { + for (let b = 0; b < 5; b++) { + result.cArray[b] = sd_ver1[a].spmArray[2 + b]; + result.esArray[b] = sd_ver1[a].spmArray[7 + b]; + if (sd_ver1[a].spmArray[12 + b] != -1) result.mArray[b] = sd_ver1[a].spmArray[12 + b]; + } + } + + if (!_.isNil(sd_ver1[a].dpmArray)) { + for (let b = 5; b < 10; b++) { + result.cArray[b] = sd_ver1[a].dpmArray[2 + b]; + result.esArray[b] = sd_ver1[a].dpmArray[7 + b]; + if (sd_ver1[a].dpmArray[12 + b] != -1) result.mArray[b] = sd_ver1[a].dpmArray[12 + b]; + } + } + + if (!_.isNil(sd_ver1[a].optArray)) { + result.optArray = sd_ver1[a].optArray; + } + + if (!_.isNil(sd_ver1[a].opt2Array)) { + result.opt2Array = sd_ver1[a].opt2Array; + } + + for (let b = 0; b < 10; b++) { + if (_.isNil(sd_ver1[a][b])) continue; + result[b] = sd_ver1[a][b]; + + if (!_.isNil(sd_ver1[a][b + 10])) { + result[b + 10] = sd_ver1[a][b + 10]; + } + } + + await DB.Upsert(data.refid, + { + collection: "score", + mid: sd_ver1[a].music_id + }, + { + $set: { + ...result + } + } + ); + } + break; + case 2: + let sd_ver2: score[] = content.data; + for (let a = 0; a < count; a++) { + await DB.Upsert(data.refid, + { + collection: "score", + mid: sd_ver2[a].mid + }, + { + $set: { + ...sd_ver2[a] + } + } + ); + } + break; + + default: + break; + } +} + +export const exportScoreData = async (data, send: WebUISend) => { + const score = await DB.Find(data.refid, { + collection: "score" + }); + + let result = { + version: 2, + count: score.length, + data: { + ...score, + } + } + + send.json(result); +} + function StoB(value: string) { return value == "on" ? true : false; }; diff --git a/iidx@asphyxia/index.ts b/iidx@asphyxia/index.ts index e517015..022b752 100644 --- a/iidx@asphyxia/index.ts +++ b/iidx@asphyxia/index.ts @@ -3,7 +3,7 @@ import { shopgetname, shopsavename, shopgetconvention, shopsetconvention } from import { musicreg, musicgetrank, musicappoint, musicarenacpu, musiccrate, musicbreg, musicgetralive } from "./handlers/music"; import { graderaised } from "./handlers/grade"; import { gssysteminfo } from "./handlers/gamesystem"; -import { updateRivalSettings, updateCustomSettings } from "./handlers/webui"; +import { updateRivalSettings, updateCustomSettings, importScoreData, exportScoreData } from "./handlers/webui"; import { GetVersion } from "./util"; import { rankingentry, rankinggetranker, rankingoentry } from "./handlers/ranking"; @@ -461,6 +461,8 @@ export function register() { // TODO:: Reflect data when version dropdown menu has been changed // R.WebUIEvent("updateIIDXRival", updateRivalSettings); R.WebUIEvent("updateIIDXCustom", updateCustomSettings); + R.WebUIEvent("importScoreData", importScoreData); + R.WebUIEvent("exportScoreData", exportScoreData); const MultiRoute = (method: string, handler: EPR | boolean) => { R.Route(`${method}`, handler); diff --git a/iidx@asphyxia/models/score.ts b/iidx@asphyxia/models/score.ts index 3f546ba..3b08c9d 100644 --- a/iidx@asphyxia/models/score.ts +++ b/iidx@asphyxia/models/score.ts @@ -24,3 +24,16 @@ export interface score_top { scores: number[]; clflgs: number[]; } + +export interface old_score { + music_id: number; + + spmArray: number[]; + dpmArray: number[]; + + optArray: number[]; + opt2Array: number[]; + + option_1: number; + option_2: number; +} \ No newline at end of file diff --git a/iidx@asphyxia/webui/profile_----detail.pug b/iidx@asphyxia/webui/profile_-----detail.pug similarity index 94% rename from iidx@asphyxia/webui/profile_----detail.pug rename to iidx@asphyxia/webui/profile_-----detail.pug index ff2c45d..601157a 100644 --- a/iidx@asphyxia/webui/profile_----detail.pug +++ b/iidx@asphyxia/webui/profile_-----detail.pug @@ -1,65 +1,65 @@ -//DATA// - profile: DB.FindOne(refid, { collection: 'profile' }) - pcdata: DB.FindOne(refid, { collection: 'pcdata' }) - -- - const version = [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ]; - -div - .card - .card-header - p.card-header-title - span.icon - i.mdi.mdi-account-edit - | Profile - .card-content - .field - label.label Version - .ver-select - .control - .select - select(name="version") - each i in version - option(selected=(i==pcdata.version)) #{i} - .field - label.label Name - .body - body #{profile.name} - .field - label.label IIDX ID - .body - body #{profile.idstr} - .field - label.label SP Grade - .body - - const a = pcdata.sgid - if a==-1 - body ---- - else - body #{pcdata.sgid} - .field - label.label DP Grade - .body - - const b = pcdata.dgid - if b==-1 - body ---- - else - body #{pcdata.dgid} +//DATA// + profile: DB.FindOne(refid, { collection: 'profile' }) + pcdata: DB.FindOne(refid, { collection: 'pcdata' }) + +- + const version = [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ]; + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Profile + .card-content + .field + label.label Version + .ver-select + .control + .select + select(name="version") + each i in version + option(selected=(i==pcdata.version)) #{i} + .field + label.label Name + .body + body #{profile.name} + .field + label.label IIDX ID + .body + body #{profile.idstr} + .field + label.label SP Grade + .body + - const a = pcdata.sgid + if a==-1 + body ---- + else + body #{pcdata.sgid} + .field + label.label DP Grade + .body + - const b = pcdata.dgid + if b==-1 + body ---- + else + body #{pcdata.dgid} diff --git a/iidx@asphyxia/webui/profile_---setting.pug b/iidx@asphyxia/webui/profile_----setting.pug similarity index 97% rename from iidx@asphyxia/webui/profile_---setting.pug rename to iidx@asphyxia/webui/profile_----setting.pug index 22979ad..e373c70 100644 --- a/iidx@asphyxia/webui/profile_---setting.pug +++ b/iidx@asphyxia/webui/profile_----setting.pug @@ -1,202 +1,202 @@ -//DATA// - profile: DB.FindOne(refid, { collection: "profile" }) - pcdata: DB.FindOne(refid, { collection: "pcdata" }) - custom: DB.FindOne(refid, { collection: "custom" }) - -- - const version = [ - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30 - ]; - -div - .card - .card-header - p.card-header-title - span.icon - i.mdi.mdi-account-edit - | Settings - .card-content - form(method="post" action="/emit/updateIIDXCustom") - .field - input(type="text" name="refid", value=refid readonly hidden) - label.label IIDX ID - .control - input.input(type="text" name="iidxid", value=profile.idstr readonly) - .field - label.label Version - .control - .select - select(name="version") - each i in version - option(selected=(i==pcdata.version)) #{i} - .field - label.label Name - .control - input.input(type="text" name="name", value=profile.name) - //- SKIN - .field - label.label Frame - .control - input.input(type="number" name="frame", value=custom.frame) - .field - label.label Turntable - .control - input.input(type="number" name="turntable", value=custom.turntable) - .field - label.label Note Burst - .control - input.input(type="number" name="note_burst", value=custom.note_burst) - .field - label.label Menu Music - .control - input.input(type="number" name="menu_music", value=custom.menu_music) - .field - label.label Lane Cover - .control - input.input(type="number" name="lane_cover", value=custom.lane_cover) - .field - label.label Category Voice - .control - input.input(type="number" name="category_vox", value=custom.category_vox) - .field - label.label Note Skin - .control - input.input(type="number" name="note_skin", value=custom.note_skin) - .field - label.label Full Combo Splash - .control - input.input(type="number" name="full_combo_splash", value=custom.full_combo_splash) - .field - label.label Note Beam - .control - input.input(type="number" name="note_beam", value=custom.note_beam) - .field - label.label Judgement Font - .control - input.input(type="number" name="judge_font", value=custom.judge_font) - .field - label.label Disable Music Preview - .control - input(type="checkbox" name="disable_musicpreview", checked=Boolean(custom.disable_musicpreview)) - .field - label.label Pacemaker Cover - .control - input.input(type="number" name="pacemaker_cover", value=custom.pacemaker_cover) - .field - label.label VEFX Lock - .control - input(type="checkbox" name="vefx_lock", checked=Boolean(custom.vefx_lock)) - .field - label.label VEFX Lock (Effector) - .control - input.input(type="number" name="effect", value=custom.effect) - .field - label.label Note Burst Size - .control - input.input(type="number" name="bomb_size", value=custom.bomb_size) - .field - label.label Disable HCN Color - .control - input(type="checkbox" name="disable_hcn_color", checked=Boolean(custom.disable_hcn_color)) - .field - label.label First Note Preview - .control - input.input(type="number" name="first_note_preview", value=custom.first_note_preview) - //- APPEND SETTINGS - .field - label.label Rank Folder - .control - input(type="checkbox" name="rank_folder", checked=Boolean(custom.rank_folder)) - .field - label.label Clear State Folder - .control - input(type="checkbox" name="clear_folder", checked=Boolean(custom.clear_folder)) - .field - label.label Difficulty Folder - .control - input(type="checkbox" name="diff_folder", checked=Boolean(custom.diff_folder)) - .field - label.label Alphabet Folder - .control - input(type="checkbox" name="alpha_folder", checked=Boolean(custom.alpha_folder)) - .field - label.label Rival Folder - .control - input(type="checkbox" name="rival_folder", checked=Boolean(custom.rival_folder)) - .field - label.label Rival WIN/LOSE Folder - .control - input(type="checkbox" name="rival_battle_folder", checked=Boolean(custom.rival_battle_folder)) - .field - label.label Rival Info / Venue Top Display - .control - input(type="checkbox" name="rival_info", checked=Boolean(custom.rival_info)) - .field - label.label Hide Playcount - .control - input(type="checkbox" name="hide_playcount", checked=Boolean(custom.hide_playcount)) - .field - label.label Disable Pacemaker Cut-In - .control - input(type="checkbox" name="disable_graph_cutin", checked=Boolean(custom.disable_graph_cutin)) - .field - label.label Classic Hi-SPEED - .control - input(type="checkbox" name="class_hispeed", checked=Boolean(custom.class_hispeed)) - .field - label.label Rival Played Folder - .control - input(type="checkbox" name="rival_played_folder", checked=Boolean(custom.rival_played_folder)) - .field - label.label Hide IIDX ID - .control - input(type="checkbox" name="hide_iidxid", checked=Boolean(custom.hide_iidxid)) - .field - label.label Disable Beginner Option - .control - if custom.disable_beginner_option === undefined - input(type="checkbox" name="disable_beginner_option", checked=Boolean(false)) - else - input(type="checkbox" name="disable_beginner_option", checked=Boolean(custom.disable_beginner_option)) - //- QPRO - .field - label.label QPRO Head - .control - input.input(type="number" name="qpro_head", value=custom.qpro_head) - .field - label.label QPRO Hair - .control - input.input(type="number" name="qpro_hair", value=custom.qpro_hair) - .field - label.label QPRO Hand - .control - input.input(type="number" name="qpro_hand", value=custom.qpro_hand) - .field - label.label QPRO Face - .control - input.input(type="number" name="qpro_face", value=custom.qpro_face) - .field - label.label QPRO Body - .control - input.input(type="number" name="qpro_body", value=custom.qpro_body) - .field - button.button.is-primary(type="submit") - span.icon - i.mdi.mdi-check - span Submit +//DATA// + profile: DB.FindOne(refid, { collection: "profile" }) + pcdata: DB.FindOne(refid, { collection: "pcdata" }) + custom: DB.FindOne(refid, { collection: "custom" }) + +- + const version = [ + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30 + ]; + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Settings + .card-content + form(method="post" action="/emit/updateIIDXCustom") + .field + input(type="text" name="refid", value=refid readonly hidden) + label.label IIDX ID + .control + input.input(type="text" name="iidxid", value=profile.idstr readonly) + .field + label.label Version + .control + .select + select(name="version") + each i in version + option(selected=(i==pcdata.version)) #{i} + .field + label.label Name + .control + input.input(type="text" name="name", value=profile.name) + //- SKIN + .field + label.label Frame + .control + input.input(type="number" name="frame", value=custom.frame) + .field + label.label Turntable + .control + input.input(type="number" name="turntable", value=custom.turntable) + .field + label.label Note Burst + .control + input.input(type="number" name="note_burst", value=custom.note_burst) + .field + label.label Menu Music + .control + input.input(type="number" name="menu_music", value=custom.menu_music) + .field + label.label Lane Cover + .control + input.input(type="number" name="lane_cover", value=custom.lane_cover) + .field + label.label Category Voice + .control + input.input(type="number" name="category_vox", value=custom.category_vox) + .field + label.label Note Skin + .control + input.input(type="number" name="note_skin", value=custom.note_skin) + .field + label.label Full Combo Splash + .control + input.input(type="number" name="full_combo_splash", value=custom.full_combo_splash) + .field + label.label Note Beam + .control + input.input(type="number" name="note_beam", value=custom.note_beam) + .field + label.label Judgement Font + .control + input.input(type="number" name="judge_font", value=custom.judge_font) + .field + label.label Disable Music Preview + .control + input(type="checkbox" name="disable_musicpreview", checked=Boolean(custom.disable_musicpreview)) + .field + label.label Pacemaker Cover + .control + input.input(type="number" name="pacemaker_cover", value=custom.pacemaker_cover) + .field + label.label VEFX Lock + .control + input(type="checkbox" name="vefx_lock", checked=Boolean(custom.vefx_lock)) + .field + label.label VEFX Lock (Effector) + .control + input.input(type="number" name="effect", value=custom.effect) + .field + label.label Note Burst Size + .control + input.input(type="number" name="bomb_size", value=custom.bomb_size) + .field + label.label Disable HCN Color + .control + input(type="checkbox" name="disable_hcn_color", checked=Boolean(custom.disable_hcn_color)) + .field + label.label First Note Preview + .control + input.input(type="number" name="first_note_preview", value=custom.first_note_preview) + //- APPEND SETTINGS + .field + label.label Rank Folder + .control + input(type="checkbox" name="rank_folder", checked=Boolean(custom.rank_folder)) + .field + label.label Clear State Folder + .control + input(type="checkbox" name="clear_folder", checked=Boolean(custom.clear_folder)) + .field + label.label Difficulty Folder + .control + input(type="checkbox" name="diff_folder", checked=Boolean(custom.diff_folder)) + .field + label.label Alphabet Folder + .control + input(type="checkbox" name="alpha_folder", checked=Boolean(custom.alpha_folder)) + .field + label.label Rival Folder + .control + input(type="checkbox" name="rival_folder", checked=Boolean(custom.rival_folder)) + .field + label.label Rival WIN/LOSE Folder + .control + input(type="checkbox" name="rival_battle_folder", checked=Boolean(custom.rival_battle_folder)) + .field + label.label Rival Info / Venue Top Display + .control + input(type="checkbox" name="rival_info", checked=Boolean(custom.rival_info)) + .field + label.label Hide Playcount + .control + input(type="checkbox" name="hide_playcount", checked=Boolean(custom.hide_playcount)) + .field + label.label Disable Pacemaker Cut-In + .control + input(type="checkbox" name="disable_graph_cutin", checked=Boolean(custom.disable_graph_cutin)) + .field + label.label Classic Hi-SPEED + .control + input(type="checkbox" name="class_hispeed", checked=Boolean(custom.class_hispeed)) + .field + label.label Rival Played Folder + .control + input(type="checkbox" name="rival_played_folder", checked=Boolean(custom.rival_played_folder)) + .field + label.label Hide IIDX ID + .control + input(type="checkbox" name="hide_iidxid", checked=Boolean(custom.hide_iidxid)) + .field + label.label Disable Beginner Option + .control + if custom.disable_beginner_option === undefined + input(type="checkbox" name="disable_beginner_option", checked=Boolean(false)) + else + input(type="checkbox" name="disable_beginner_option", checked=Boolean(custom.disable_beginner_option)) + //- QPRO + .field + label.label QPRO Head + .control + input.input(type="number" name="qpro_head", value=custom.qpro_head) + .field + label.label QPRO Hair + .control + input.input(type="number" name="qpro_hair", value=custom.qpro_hair) + .field + label.label QPRO Hand + .control + input.input(type="number" name="qpro_hand", value=custom.qpro_hand) + .field + label.label QPRO Face + .control + input.input(type="number" name="qpro_face", value=custom.qpro_face) + .field + label.label QPRO Body + .control + input.input(type="number" name="qpro_body", value=custom.qpro_body) + .field + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Submit diff --git a/iidx@asphyxia/webui/profile_--rival.pug b/iidx@asphyxia/webui/profile_---rival.pug similarity index 97% rename from iidx@asphyxia/webui/profile_--rival.pug rename to iidx@asphyxia/webui/profile_---rival.pug index ee524f9..c236238 100644 --- a/iidx@asphyxia/webui/profile_--rival.pug +++ b/iidx@asphyxia/webui/profile_---rival.pug @@ -1,118 +1,118 @@ -//DATA// - profile: DB.FindOne(refid, { collection: "profile" }) - profiles: DB.Find(null, { collection: "profile" }) - rival: DB.Find(refid, { collection: "rival" }) - -- - let rival_list=[["", "None", "0000-0000"]]; - profiles.forEach((res) => { - rival_list.push([res.refid, res.name, res.idstr]) - }); - - let my_sp_rival = [], my_dp_rival = []; - rival.forEach((res) => { - if (res.play_style == 1) my_sp_rival[res.index] = res.rival_refid; - else if (res.play_style == 2) my_dp_rival[res.index] = res.rival_refid; - }); - -div - .card - .card-header - p.card-header-title - span.icon - i.mdi.mdi-account-edit - | Rivals - .card-content - form(method="post" action="/emit/updateIIDXRival") - .field - input(type="text" name="refid", value=refid readonly hidden) - label.label SP Rivals - .body - .control - .select - select(name="sp_rival1") - each i in rival_list - if my_sp_rival[0] != null - option(selected=(i[0]==my_sp_rival[0]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .control - .select - select(name="sp_rival2") - each i in rival_list - if my_sp_rival[1] != null - option(selected=(i[0]==my_sp_rival[1]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .control - .select - select(name="sp_rival3") - each i in rival_list - if my_sp_rival[2] != null - option(selected=(i[0]==my_sp_rival[2]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .control - .select - select(name="sp_rival4") - each i in rival_list - if my_sp_rival[3] != null - option(selected=(i[0]==my_sp_rival[3]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .control - .select - select(name="sp_rival5") - each i in rival_list - if my_sp_rival[4] != null - option(selected=(i[0]==my_sp_rival[4]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .field - label.label DP Rivals - .body - .control - .select - select(name="dp_rival1") - each i in rival_list - if my_dp_rival[0] != null - option(selected=(i[0]==my_dp_rival[0]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .control - .select - select(name="dp_rival2") - each i in rival_list - if my_dp_rival[1] != null - option(selected=(i[0]==my_dp_rival[1]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .control - .select - select(name="dp_rival3") - each i in rival_list - if my_dp_rival[2] != null - option(selected=(i[0]==my_dp_rival[2]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .control - .select - select(name="dp_rival4") - each i in rival_list - if my_dp_rival[3] != null - option(selected=(i[0]==my_dp_rival[3]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .control - .select - select(name="dp_rival5") - each i in rival_list - if my_dp_rival[4] != null - option(selected=(i[0]==my_dp_rival[4]) value=i[0]) #{i[1]} [#{i[2]}] - else - option(value=i[0]) #{i[1]} [#{i[2]}] - .field - button.button.is-primary(type="submit") - span.icon - i.mdi.mdi-check - span Submit +//DATA// + profile: DB.FindOne(refid, { collection: "profile" }) + profiles: DB.Find(null, { collection: "profile" }) + rival: DB.Find(refid, { collection: "rival" }) + +- + let rival_list=[["", "None", "0000-0000"]]; + profiles.forEach((res) => { + rival_list.push([res.refid, res.name, res.idstr]) + }); + + let my_sp_rival = [], my_dp_rival = []; + rival.forEach((res) => { + if (res.play_style == 1) my_sp_rival[res.index] = res.rival_refid; + else if (res.play_style == 2) my_dp_rival[res.index] = res.rival_refid; + }); + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Rivals + .card-content + form(method="post" action="/emit/updateIIDXRival") + .field + input(type="text" name="refid", value=refid readonly hidden) + label.label SP Rivals + .body + .control + .select + select(name="sp_rival1") + each i in rival_list + if my_sp_rival[0] != null + option(selected=(i[0]==my_sp_rival[0]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival2") + each i in rival_list + if my_sp_rival[1] != null + option(selected=(i[0]==my_sp_rival[1]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival3") + each i in rival_list + if my_sp_rival[2] != null + option(selected=(i[0]==my_sp_rival[2]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival4") + each i in rival_list + if my_sp_rival[3] != null + option(selected=(i[0]==my_sp_rival[3]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="sp_rival5") + each i in rival_list + if my_sp_rival[4] != null + option(selected=(i[0]==my_sp_rival[4]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .field + label.label DP Rivals + .body + .control + .select + select(name="dp_rival1") + each i in rival_list + if my_dp_rival[0] != null + option(selected=(i[0]==my_dp_rival[0]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival2") + each i in rival_list + if my_dp_rival[1] != null + option(selected=(i[0]==my_dp_rival[1]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival3") + each i in rival_list + if my_dp_rival[2] != null + option(selected=(i[0]==my_dp_rival[2]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival4") + each i in rival_list + if my_dp_rival[3] != null + option(selected=(i[0]==my_dp_rival[3]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .control + .select + select(name="dp_rival5") + each i in rival_list + if my_dp_rival[4] != null + option(selected=(i[0]==my_dp_rival[4]) value=i[0]) #{i[1]} [#{i[2]}] + else + option(value=i[0]) #{i[1]} [#{i[2]}] + .field + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Submit diff --git a/iidx@asphyxia/webui/profile_-score.pug b/iidx@asphyxia/webui/profile_--score.pug similarity index 95% rename from iidx@asphyxia/webui/profile_-score.pug rename to iidx@asphyxia/webui/profile_--score.pug index 403e716..44002ee 100644 --- a/iidx@asphyxia/webui/profile_-score.pug +++ b/iidx@asphyxia/webui/profile_--score.pug @@ -1,25 +1,25 @@ -//DATA// - score: DB.Find(refid, { collection: 'score' }) - -div - .card - .card-header - p.card-header-title - span.icon - i.mdi.mdi-account-edit - | Score - .card-content - table.table - thead - tr - th Music ID - th EXSCORE [SPB~DPL] - th Miss Count [SPB~DPL] - th Clear Lamp [SPB~DPL] - tbody - each i in score - tr - td #{i.mid} - td #{i.esArray} - td #{i.mArray} - td #{i.cArray} +//DATA// + score: DB.Find(refid, { collection: 'score' }) + +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Score + .card-content + table.table + thead + tr + th Music ID + th EXSCORE [SPB~DPL] + th Miss Count [SPB~DPL] + th Clear Lamp [SPB~DPL] + tbody + each i in score + tr + td #{i.mid} + td #{i.esArray} + td #{i.mArray} + td #{i.cArray} diff --git a/iidx@asphyxia/webui/profile_-data.pug b/iidx@asphyxia/webui/profile_-data.pug new file mode 100644 index 0000000..8b870ac --- /dev/null +++ b/iidx@asphyxia/webui/profile_-data.pug @@ -0,0 +1,27 @@ +div + .card + .card-header + p.card-header-title + span.icon + i.mdi.mdi-account-edit + | Data Management + .card-content + .field + label.label [!] This will overwrite exsiting scores + form(method="post" action="/emit/importScoreData") + .field + input(type="text" name="refid", value=refid readonly hidden) + input.input(type="text" name="data" placeholder="Paste score JSON data") + p + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Score Import + .field + form(method="post" action="/emit/exportScoreData") + .field + input(type="text" name="refid", value=refid readonly hidden) + button.button.is-primary(type="submit") + span.icon + i.mdi.mdi-check + span Score Export