From 152fdf7143fc8909639fe7e11b493a14facabc03 Mon Sep 17 00:00:00 2001 From: Hide_D Date: Fri, 8 Apr 2022 00:20:34 +0900 Subject: [PATCH] =?UTF-8?q?feat(wip):=20=EC=84=B8=EB=A0=A5=EC=9E=A5?= =?UTF-8?q?=EC=88=98=EC=97=90=EC=84=9C=20=EB=A7=88=EC=A7=80=EB=A7=89?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=84=A0=ED=83=9D=ED=95=9C=20=ED=95=AD?= =?UTF-8?q?=EB=AA=A9=20=EA=B8=B0=EC=96=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hwe/ts/PageNationGeneral.vue | 1 + hwe/ts/components/GeneralList.vue | 73 ++++++++++++++++++++++++++----- 2 files changed, 63 insertions(+), 11 deletions(-) diff --git a/hwe/ts/PageNationGeneral.vue b/hwe/ts/PageNationGeneral.vue index 6297baa2..7711a2b2 100644 --- a/hwe/ts/PageNationGeneral.vue +++ b/hwe/ts/PageNationGeneral.vue @@ -8,6 +8,7 @@ :troops="troopList" :env="envVal" :toolbarID="toolbarID" + role="pageNationGeneral" :height="'fill'" /> diff --git a/hwe/ts/components/GeneralList.vue b/hwe/ts/components/GeneralList.vue index d7bb8eb2..c395d951 100644 --- a/hwe/ts/components/GeneralList.vue +++ b/hwe/ts/components/GeneralList.vue @@ -2,18 +2,22 @@ - 기본 - 전투 + 기본 + 전투  보관하기
-
{{ key }}
-
삭제
+
+ {{ key }} +
+
+
삭제
+
@@ -118,6 +122,11 @@ const props = defineProps({ required: false, default: undefined, }, + role: { + type: String, + required: false, + default: "generic", + }, }); const suppressColumnMoveAnimation = ref(true); @@ -159,19 +168,25 @@ function getRowId(params: GetRowIdParams): string { return `${genID}`; } -function setDisplaySetting(setting: GridDisplaySetting) { +function setDisplaySetting(settingKey: SettingKeyType, setting: GridDisplaySetting) { if (!columnApi.value) { console.error("nyc?"); return; } columnApi.value.applyColumnState({ state: setting.column, applyOrder: true }); columnApi.value.setColumnGroupState(setting.columnGroup); + currentSetting.value = settingKey; } const displaySettings = ref(new Map()); const displaySettingVersion = 1; //추가되는 걸로 버전 올리지 말고, 사용할 수 없게 될때만 올리기 const displaySettingsKey = "GeneralListDisplaySetting"; +function getLastUsedSettingsKey() { + const lastUsedSettingsKey = "LastUsedSettingsKey"; + return `${lastUsedSettingsKey}_${props.role}`; +} + function loadDisplaySetting() { const rawSettings = localStorage.getItem(displaySettingsKey); if (!rawSettings) { @@ -187,6 +202,34 @@ function loadDisplaySetting() { } loadDisplaySetting(); +type SettingKeyType = [true, keyof typeof defaultDisplaySetting] | [false, string]; +const currentSetting = ref([true, "normal"]); +function loadLastUsedSettings() { + const rawLastSettingKey = localStorage.getItem(getLastUsedSettingsKey()); + if (!rawLastSettingKey) { + return; + } + const settingKey: SettingKeyType = JSON.parse(rawLastSettingKey); + const [isDefault, settingKeyName] = settingKey; + if (isDefault) { + if (!(settingKeyName in defaultDisplaySetting)) { + console.error(`${settingKeyName}은 이제 기본 지원 타입이 아닙니다.`); + return; + } + } else { + if (!displaySettings.value.has(settingKeyName)) { + console.error(`${settingKeyName}는 저장되어있지 않습니다.`); + return; + } + } + + currentSetting.value = settingKey; + return settingKey; +} +watch(currentSetting, (newTypeKey) => { + localStorage.setItem(getLastUsedSettingsKey(), JSON.stringify(newTypeKey)); +}); + watch( displaySettings, (newSettings) => { @@ -203,7 +246,7 @@ watch( { deep: true } ); -function deleteDisplaySetting(key: string){ +function deleteDisplaySetting(key: string) { if (!confirm(`${key} 설정을 지울까요?`)) { return; } @@ -216,7 +259,7 @@ function storeDisplaySetting() { return; } - const nickName = prompt("선택한 설정의 별명을 지어주세요"); + const nickName = prompt("선택한 설정의 별명을 지어주세요", currentSetting.value[0]?'':currentSetting.value[1]); if (!nickName) { return; } @@ -233,6 +276,7 @@ function storeDisplaySetting() { }; displaySettings.value.set(nickName, setting); + currentSetting.value = [false, nickName]; } function onGridReady(params: GridReadyEvent) { @@ -243,7 +287,14 @@ function onGridReady(params: GridReadyEvent) { } else { params.api.setDomLayout("normal"); } - setDisplaySetting(defaultDisplaySetting.normal); + loadLastUsedSettings(); + if(currentSetting.value[0]){ + setDisplaySetting(currentSetting.value, defaultDisplaySetting[currentSetting.value[1]]); + } + else{ + setDisplaySetting(currentSetting.value, unwrap(displaySettings.value.get(currentSetting.value[1]))); + } + setTimeout(() => { suppressColumnMoveAnimation.value = false; }, 1); @@ -979,8 +1030,8 @@ watch(columnRawDefs, (val) => { z-index: 5; } -:deep(.view-mode-list){ - width:180px; +:deep(.view-mode-list) { + width: 180px; }