diff --git a/app/javascript/vue/my_modules/list.vue b/app/javascript/vue/my_modules/list.vue index 8e0e6e260..22bb26b7c 100644 --- a/app/javascript/vue/my_modules/list.vue +++ b/app/javascript/vue/my_modules/list.vue @@ -27,7 +27,8 @@ @duplicate="duplicate" @updateDueDate="updateDueDate" @updateStartDate="updateStartDate" - @editTags="editTags"/> + @editTags="editTags" + @updateFavorite="updateFavorite"/> ' + }, + headerName: this.i18n.t('experiments.table.column.favorite'), + sortable: true, + cellRenderer: FavoriteRenderer, + minWidth: 80, + notSelectable: true + }, { field: 'code', headerName: this.i18n.t('experiments.table.column.id_html'), @@ -423,6 +437,12 @@ export default { ${option[1]} `; + }, + updateFavorite(value, params) { + const url = value ? params.data.urls.favorite : params.data.urls.unfavorite; + axios.post(url).then(() => { + this.updateTable(); + }); } } }; diff --git a/app/serializers/lists/my_module_serializer.rb b/app/serializers/lists/my_module_serializer.rb index 3128f7ffe..6dd1fc922 100644 --- a/app/serializers/lists/my_module_serializer.rb +++ b/app/serializers/lists/my_module_serializer.rb @@ -27,6 +27,7 @@ module Lists permissions default_public_user_role_id team + favorite ) def attributes(_options = {}) @@ -39,6 +40,8 @@ module Lists delegate :provisioning_status, to: :object + delegate :favorite, to: :object + def default_public_user_role_id object.experiment.project.default_public_user_role_id end diff --git a/app/services/lists/my_modules_service.rb b/app/services/lists/my_modules_service.rb index cda5ff0d8..e14101eb1 100644 --- a/app/services/lists/my_modules_service.rb +++ b/app/services/lists/my_modules_service.rb @@ -51,7 +51,8 @@ module Lists results: 'results', tags: 'tags', signatures: 'signatures', - comments: 'comments' + comments: 'comments', + favorite: 'favorite' } end @@ -121,6 +122,10 @@ module Lists @records = @records.left_joins(:tags) .group('my_modules.id') .order(Arel.sql('COUNT(DISTINCT tags.id) DESC')) + when 'favorite_ASC' + @records = @records.order(:favorite) + when 'favorite_DESC' + @records = @records.order(favorite: :desc) else __send__("#{sortable_columns[order_params[:column].to_sym]}_sort", sort_direction(order_params)) end