From 958ee92db747738136d8c8600bc174bb24d35610 Mon Sep 17 00:00:00 2001
From: aignatov-bio <47317017+aignatov-bio@users.noreply.github.com>
Date: Wed, 18 Aug 2021 13:43:26 +0200
Subject: [PATCH] Add BMT filters interactions [SCI-5955] (#3478)
* Add BMT filters interactions [SCI-5955]
* Small fixes [SCI-5955]
---
app/assets/javascripts/application.js.erb | 2 +
.../repositories/repository_datatable.js | 5 +-
app/assets/stylesheets/repositories.scss | 3 +-
.../stylesheets/repository/bmt_filters.scss | 37 +++++++++++
app/javascript/packs/vue/bmt_filter.js | 20 ++++++
app/javascript/vue/bmt_filter/container.vue | 61 +++++++++++++++++++
app/javascript/vue/bmt_filter/filter.vue | 20 ++++++
.../repositories/_toolbar_buttons.html.erb | 4 +-
app/views/repositories/show.html.erb | 3 +
config/locales/en.yml | 5 ++
package.json | 4 +-
11 files changed, 158 insertions(+), 6 deletions(-)
create mode 100644 app/assets/stylesheets/repository/bmt_filters.scss
create mode 100644 app/javascript/packs/vue/bmt_filter.js
create mode 100644 app/javascript/vue/bmt_filter/container.vue
create mode 100644 app/javascript/vue/bmt_filter/filter.vue
diff --git a/app/assets/javascripts/application.js.erb b/app/assets/javascripts/application.js.erb
index 3daeec359..b2f1ff666 100644
--- a/app/assets/javascripts/application.js.erb
+++ b/app/assets/javascripts/application.js.erb
@@ -283,3 +283,5 @@ $(window).scroll(function() {
scroll_function();
})
})
+
+window.I18n = I18n
diff --git a/app/assets/javascripts/repositories/repository_datatable.js b/app/assets/javascripts/repositories/repository_datatable.js
index 7ff8bb36a..74c68cf21 100644
--- a/app/assets/javascripts/repositories/repository_datatable.js
+++ b/app/assets/javascripts/repositories/repository_datatable.js
@@ -1,7 +1,7 @@
/*
globals I18n _ SmartAnnotation FilePreviewModal animateSpinner DataTableHelpers
HelperModule RepositoryDatatableRowEditor prepareRepositoryHeaderForExport
- initAssignedTasksDropdown
+ initAssignedTasksDropdown initBMTFilter
*/
//= require jquery-ui/widgets/sortable
@@ -268,6 +268,7 @@ var RepositoryDatatable = (function(global) {
$.getJSON($(TABLE_ID).data('toolbar-url'), (data) => {
$('#toolbarButtonsDatatable').remove();
$(data.html).appendTo('div.toolbar');
+ initBMTFilter();
});
TABLE.ajax.reload(null, false);
@@ -551,6 +552,7 @@ var RepositoryDatatable = (function(global) {
// Append buttons to inner toolbar in the table
$.getJSON($(TABLE_ID).data('toolbar-url'), (data) => {
$(data.html).appendTo('div.toolbar');
+ initBMTFilter();
});
$('div.toolbar-filter-buttons').prependTo('div.filter-container');
@@ -577,6 +579,7 @@ var RepositoryDatatable = (function(global) {
});
initAssignedTasksDropdown(TABLE_ID);
+
}
});
diff --git a/app/assets/stylesheets/repositories.scss b/app/assets/stylesheets/repositories.scss
index 3e3af7fc9..3535b8cd9 100644
--- a/app/assets/stylesheets/repositories.scss
+++ b/app/assets/stylesheets/repositories.scss
@@ -153,13 +153,12 @@
flex-wrap: nowrap;
height: 6em;
left: var(--repository-sidebar-margin);
- overflow: hidden;
padding: 1em 2em 0;
position: fixed;
top: calc(4em + var(--navbar-height));
transition: .4s $timing-function-sharp;
width: calc(100% - var(--repository-sidebar-margin));
- z-index: 90;
+ z-index: 100;
.filter-container {
flex-shrink: 0;
diff --git a/app/assets/stylesheets/repository/bmt_filters.scss b/app/assets/stylesheets/repository/bmt_filters.scss
new file mode 100644
index 000000000..eb17a0ceb
--- /dev/null
+++ b/app/assets/stylesheets/repository/bmt_filters.scss
@@ -0,0 +1,37 @@
+#bmtFilterContainer {
+ min-width: 300px;
+ z-index: 100;
+
+ .header {
+ align-items: center;
+ border-bottom: $border-tertiary;
+ display: flex;
+ padding: .5em 1em;
+
+ .title {
+ @include font-h2;
+ margin-right: auto;
+ }
+ }
+
+ .filter-element {
+ align-items: center;
+ display: flex;
+ }
+
+ .filters-list {
+ border-top: $border-tertiary;
+ padding: .5em 1em;
+ }
+
+ .footer {
+ align-items: center;
+ border-top: $border-tertiary;
+ display: flex;
+ padding: .5em 1em;
+
+ .add-filter {
+ margin-right: auto;
+ }
+ }
+}
diff --git a/app/javascript/packs/vue/bmt_filter.js b/app/javascript/packs/vue/bmt_filter.js
new file mode 100644
index 000000000..a1938e366
--- /dev/null
+++ b/app/javascript/packs/vue/bmt_filter.js
@@ -0,0 +1,20 @@
+import TurbolinksAdapter from 'vue-turbolinks';
+import Vue from 'vue/dist/vue.esm';
+import FilterContainer from '../../vue/bmt_filter/container.vue';
+
+Vue.use(TurbolinksAdapter);
+
+
+window.initBMTFilter = () => {
+ const app = new Vue({
+ el: '#bmtFilterContainer',
+ components: {
+ 'filter-container': FilterContainer
+ }
+ });
+
+ $('#bmtFilterContainer').on('click', (e) => {
+ e.preventDefault();
+ e.stopPropagation();
+ });
+};
diff --git a/app/javascript/vue/bmt_filter/container.vue b/app/javascript/vue/bmt_filter/container.vue
new file mode 100644
index 000000000..9793d94b3
--- /dev/null
+++ b/app/javascript/vue/bmt_filter/container.vue
@@ -0,0 +1,61 @@
+
+