mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-11-10 00:11:22 +08:00
Merge expand and collapse in results [SCI-10620]
This commit is contained in:
parent
2e5ed1bcb2
commit
a141e42a7b
3 changed files with 48 additions and 16 deletions
|
|
@ -251,6 +251,7 @@ export default {
|
||||||
} else {
|
} else {
|
||||||
$(resultId).collapse('show');
|
$(resultId).collapse('show');
|
||||||
}
|
}
|
||||||
|
this.$emit('result:collapsed');
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -370,6 +371,8 @@ export default {
|
||||||
};
|
};
|
||||||
|
|
||||||
axios.put(this.userSettingsUrl, { settings: [settings] });
|
axios.put(this.userSettingsUrl, { settings: [settings] });
|
||||||
|
|
||||||
|
this.$emit('result:collapsed');
|
||||||
},
|
},
|
||||||
dragEnter(e) {
|
dragEnter(e) {
|
||||||
if (!this.urls.upload_attachment_url) return;
|
if (!this.urls.upload_attachment_url) return;
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,19 @@
|
||||||
<ResultsToolbar
|
<ResultsToolbar
|
||||||
ref="resultsToolbar"
|
ref="resultsToolbar"
|
||||||
:sort="sort"
|
:sort="sort"
|
||||||
|
:results="results"
|
||||||
:canCreate="canCreate == 'true'"
|
:canCreate="canCreate == 'true'"
|
||||||
:archived="archived == 'true'"
|
:archived="archived == 'true'"
|
||||||
:active_url="active_url"
|
:active_url="active_url"
|
||||||
:archived_url="archived_url"
|
:archived_url="archived_url"
|
||||||
:headerSticked="headerSticked"
|
:headerSticked="headerSticked"
|
||||||
:moduleName="moduleName"
|
:moduleName="moduleName"
|
||||||
|
:resultsCollapsed="resultsCollapsed"
|
||||||
@setSort="setSort"
|
@setSort="setSort"
|
||||||
@setFilters="setFilters"
|
@setFilters="setFilters"
|
||||||
@newResult="createResult"
|
@newResult="createResult"
|
||||||
@expandAll="expandAll"
|
@expandAll="expandResults"
|
||||||
@collapseAll="collapseAll"
|
@collapseAll="collapseResults"
|
||||||
class="my-4"
|
class="my-4"
|
||||||
/>
|
/>
|
||||||
<div class="results-list">
|
<div class="results-list">
|
||||||
|
|
@ -32,6 +34,7 @@
|
||||||
@result:deleted="removeResult"
|
@result:deleted="removeResult"
|
||||||
@result:restored="removeResult"
|
@result:restored="removeResult"
|
||||||
@result:drag_enter="dragEnter"
|
@result:drag_enter="dragEnter"
|
||||||
|
@result:collapsed="checkResultsState"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<clipboardPasteModal v-if="showClipboardPasteModal"
|
<clipboardPasteModal v-if="showClipboardPasteModal"
|
||||||
|
|
@ -77,7 +80,8 @@ export default {
|
||||||
nextPageUrl: null,
|
nextPageUrl: null,
|
||||||
loadingPage: false,
|
loadingPage: false,
|
||||||
activeDragResult: null,
|
activeDragResult: null,
|
||||||
userSettingsUrl: null
|
userSettingsUrl: null,
|
||||||
|
resultsCollapsed: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
@ -143,15 +147,27 @@ export default {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
expandAll() {
|
checkResultsState() {
|
||||||
$('.result-wrapper .collapse').collapse('show');
|
this.resultsCollapsed = this.$refs.results.every((result) => result.isCollapsed);
|
||||||
this.toggleCollapsed(false);
|
|
||||||
},
|
},
|
||||||
collapseAll() {
|
collapseResults() {
|
||||||
$('.result-wrapper .collapse').collapse('hide');
|
$('.result-wrapper .collapse').collapse('hide');
|
||||||
this.toggleCollapsed(true);
|
this.updateResultStateSettings(true);
|
||||||
|
this.$refs.results.forEach((result) => { result.isCollapsed = true; });
|
||||||
|
this.resultsCollapsed = true;
|
||||||
},
|
},
|
||||||
toggleCollapsed(newState) {
|
expandResults() {
|
||||||
|
$('.result-wrapper .collapse').collapse('show');
|
||||||
|
this.updateResultStateSettings(false);
|
||||||
|
this.$refs.results.forEach((result) => { result.isCollapsed = false; });
|
||||||
|
this.resultsCollapsed = false;
|
||||||
|
},
|
||||||
|
updateResultStateSettings(newState) {
|
||||||
|
const updatedData = this.results.reduce((acc, currentResult) => {
|
||||||
|
acc[currentResult.id] = newState;
|
||||||
|
return acc;
|
||||||
|
}, {});
|
||||||
|
|
||||||
this.results = this.results.map((result) => ({
|
this.results = this.results.map((result) => ({
|
||||||
...result,
|
...result,
|
||||||
attributes: {
|
attributes: {
|
||||||
|
|
@ -159,6 +175,13 @@ export default {
|
||||||
collapsed: newState
|
collapsed: newState
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
const settings = {
|
||||||
|
key: 'result_states',
|
||||||
|
data: updatedData
|
||||||
|
};
|
||||||
|
|
||||||
|
axios.put(this.userSettingsUrl, { settings: [settings] });
|
||||||
},
|
},
|
||||||
removeResult(result_id) {
|
removeResult(result_id) {
|
||||||
this.results = this.results.filter((r) => r.id != result_id);
|
this.results = this.results.filter((r) => r.id != result_id);
|
||||||
|
|
|
||||||
|
|
@ -34,12 +34,16 @@
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="result-toolbar__right flex items-center [&_.sn-icon-filter]:!text-sn-blue">
|
<div class="result-toolbar__right flex items-center [&_.sn-icon-filter]:!text-sn-blue">
|
||||||
<button class="btn btn-secondary mr-3" @click="collapseResults" tabindex="0">
|
<template v-if="results.length > 0">
|
||||||
{{ i18n.t('my_modules.results.collapse_label') }}
|
<button :title="i18n.t('protocols.steps.collapse_label')" v-if="!resultsCollapsed" class="btn btn-secondary icon-btn xl:!px-4" @click="collapseResults" tabindex="0">
|
||||||
</button>
|
<i class="sn-icon sn-icon-collapse-all"></i>
|
||||||
<button class="btn btn-secondary mr-3" @click="expandResults" tabindex="0">
|
<span class="tw-hidden xl:inline">{{ i18n.t("protocols.steps.collapse_label") }}</span>
|
||||||
{{ i18n.t('my_modules.results.expand_label') }}
|
</button>
|
||||||
</button>
|
<button v-else :title="i18n.t('protocols.steps.expand_label')" class="btn btn-secondary icon-btn xl:!px-4" @click="expandResults" tabindex="0">
|
||||||
|
<i class="sn-icon sn-icon-expand-all"></i>
|
||||||
|
<span class="tw-hidden xl:inline">{{ i18n.t("protocols.steps.expand_label") }}</span>
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
|
||||||
<FilterDropdown :filters="filters" @applyFilters="setFilters" />
|
<FilterDropdown :filters="filters" @applyFilters="setFilters" />
|
||||||
<MenuDropdown
|
<MenuDropdown
|
||||||
|
|
@ -75,7 +79,9 @@ export default {
|
||||||
headerSticked: { type: Boolean, required: true },
|
headerSticked: { type: Boolean, required: true },
|
||||||
active_url: { type: String, required: true },
|
active_url: { type: String, required: true },
|
||||||
archived_url: { type: String, required: true },
|
archived_url: { type: String, required: true },
|
||||||
moduleName: { type: String, required: true }
|
moduleName: { type: String, required: true },
|
||||||
|
results: { type: Array, required: true },
|
||||||
|
resultsCollapsed: { type: Boolean, required: true }
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue