From dfd71f7bfd20db07dae0ece6186ea5ad1555192f Mon Sep 17 00:00:00 2001 From: Natsumi Date: Fri, 25 Jun 2021 18:22:31 +1200 Subject: [PATCH] Save feed/game log filters --- html/src/app.js | 34 +++++++++++++++++++++++++++------- html/src/index.pug | 4 ++-- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/html/src/app.js b/html/src/app.js index 268b3596..2b1b8aec 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -883,6 +883,9 @@ speechSynthesis.getVoices(); watch: { imageurl() { this.parse(); + }, + userid() { + this.parse(); } }, mounted() { @@ -6060,6 +6063,13 @@ speechSynthesis.getVoices(); } }; + $app.methods.saveFeedTableFilters = function () { + configRepository.setString('VRCX_feedTableFilters', JSON.stringify(this.feedTable.filters[0].value)); + }; + if (configRepository.getString('VRCX_feedTableFilters')) { + $app.data.feedTable.filters[0].value = JSON.parse(configRepository.getString('VRCX_feedTableFilters')); + } + API.$on('LOGIN', function (args) { $app.feedTable.data = VRCXStorage.GetArray(`${args.ref.id}_feedTable`); $app.sweepFeed(); @@ -6236,11 +6246,6 @@ speechSynthesis.getVoices(); value: [], filterFn: (row, filter) => filter.value.some((v) => v === row.type) }, - { - prop: 'type', - value: true, - filterFn: (row, filter) => row.type !== 'Notification' - }, { prop: 'data', value: '' @@ -6249,6 +6254,11 @@ speechSynthesis.getVoices(); prop: 'data', value: true, filterFn: (row, filter) => row.data !== API.currentUser.displayName + }, + { + prop: 'type', + value: true, + filterFn: (row, filter) => row.type !== 'Notification' } ], tableProps: { @@ -6272,6 +6282,13 @@ speechSynthesis.getVoices(); } }; + $app.methods.saveGameLogTableFilters = function () { + configRepository.setString('VRCX_gameLogTableFilters', JSON.stringify(this.gameLogTable.filters[0].value)); + }; + if (configRepository.getString('VRCX_gameLogTableFilters')) { + $app.data.gameLogTable.filters[0].value = JSON.parse(configRepository.getString('VRCX_gameLogTableFilters')); + } + $app.methods.resetGameLog = async function () { await gameLogService.reset(); this.gameLogTable.data = []; @@ -11181,10 +11198,13 @@ speechSynthesis.getVoices(); $app.data.friendsListSearch = ''; $app.data.friendsListSearchFilterVIP = false; - $app.data.friendsListSearchFilters = [ 'Display Name', 'User Name', 'Rank', 'Status', 'Bio', 'Memo' ]; + $app.data.friendsListSearchFilters = []; $app.methods.friendsListSearchChange = function () { - var filters = this.friendsListSearchFilters; + var filters = [...this.friendsListSearchFilters]; + if (filters.length === 0) { + filters = [ 'Display Name', 'User Name', 'Rank', 'Status', 'Bio', 'Memo' ]; + } var results = []; if (this.friendsListSearch) { var query = this.friendsListSearch.toUpperCase(); diff --git a/html/src/index.pug b/html/src/index.pug index 11a4609c..3d0822e1 100644 --- a/html/src/index.pug +++ b/html/src/index.pug @@ -78,7 +78,7 @@ html div(style="flex:none;margin-right:10px") el-tooltip(placement="bottom" content="Filter VIP only" :disabled="hideTooltips") el-switch(v-model="feedTable.filters[2].value" active-color="#13ce66") - el-select(v-model="feedTable.filters[0].value" multiple clearable collapse-tags style="flex:1" placeholder="Filter") + el-select(v-model="feedTable.filters[0].value" @change="saveFeedTableFilters" multiple clearable collapse-tags style="flex:1" placeholder="Filter") el-option(v-once v-for="type in ['GPS', 'Online', 'Offline', 'Status', 'Avatar']" :key="type" :label="type" :value="type") el-input(v-model="feedTable.filters[1].value" placeholder="Search" style="flex:none;width:150px;margin:0 10px") el-tooltip(placement="bottom" content="Clear feed" :disabled="hideTooltips") @@ -176,7 +176,7 @@ html data-tables(v-bind="gameLogTable") template(#tool) div(style="margin:0 0 10px;display:flex;align-items:center") - el-select(v-model="gameLogTable.filters[0].value" multiple clearable collapse-tags style="flex:1" placeholder="Filter") + el-select(v-model="gameLogTable.filters[0].value" @change="saveGameLogTableFilters" multiple clearable collapse-tags style="flex:1" placeholder="Filter") el-option(v-once v-for="type in ['Location', 'OnPlayerJoined', 'OnPlayerLeft', 'PortalSpawn', 'Event', 'VideoPlay']" :key="type" :label="type" :value="type") el-input(v-model="gameLogTable.filters[1].value" placeholder="Search" style="flex:none;width:150px;margin:0 10px") el-tooltip(placement="bottom" content="Reset game log" :disabled="hideTooltips")