From de55396134e9e3de429c5c6df55ff06efb8ba329 Mon Sep 17 00:00:00 2001 From: Kushal Pandya Date: Wed, 4 Oct 2017 14:10:24 +0000 Subject: [PATCH] Groups tree enhancements for Groups Dashboard and Group Homepage --- app/assets/javascripts/filterable_list.js | 7 +- .../javascripts/groups/components/app.vue | 191 +++++++ .../groups/components/group_folder.vue | 38 +- .../groups/components/group_item.vue | 236 +++------ .../javascripts/groups/components/groups.vue | 23 +- .../groups/components/item_actions.vue | 92 ++++ .../groups/components/item_caret.vue | 25 + .../groups/components/item_stats.vue | 98 ++++ .../groups/components/item_type_icon.vue | 34 ++ app/assets/javascripts/groups/constants.js | 35 ++ .../groups/groups_filterable_list.js | 25 +- app/assets/javascripts/groups/index.js | 202 ++------ .../javascripts/groups/new_group_child.js | 62 +++ .../{services => service}/groups_service.js | 2 +- .../javascripts/groups/store/groups_store.js | 105 ++++ .../javascripts/groups/stores/groups_store.js | 167 ------ app/assets/stylesheets/framework/lists.scss | 89 +++- app/assets/stylesheets/pages/groups.scss | 115 ++++- app/helpers/sorting_helper.rb | 11 + app/views/dashboard/_groups_head.html.haml | 6 +- .../dashboard/groups/_empty_state.html.haml | 7 - app/views/dashboard/groups/_groups.html.haml | 9 +- app/views/dashboard/groups/index.html.haml | 4 +- app/views/explore/groups/_groups.html.haml | 6 +- app/views/explore/groups/index.html.haml | 9 +- app/views/groups/_children.html.haml | 9 +- app/views/groups/show.html.haml | 37 +- app/views/shared/groups/_dropdown.html.haml | 33 +- .../shared/groups/_empty_state.html.haml | 7 + app/views/shared/groups/_group.html.haml | 2 +- app/views/shared/groups/_list.html.haml | 2 +- .../shared/groups/_search_form.html.haml | 4 +- app/views/shared/projects/_dropdown.html.haml | 2 +- spec/features/dashboard/groups_list_spec.rb | 7 +- spec/features/explore/groups_list_spec.rb | 13 +- .../javascripts/groups/components/app_spec.js | 440 ++++++++++++++++ .../groups/components/group_folder_spec.js | 66 +++ .../groups/components/group_item_spec.js | 177 +++++++ .../groups/components/groups_spec.js | 70 +++ .../groups/components/item_actions_spec.js | 110 ++++ .../groups/components/item_caret_spec.js | 40 ++ .../groups/components/item_stats_spec.js | 159 ++++++ .../groups/components/item_type_icon_spec.js | 54 ++ spec/javascripts/groups/group_item_spec.js | 102 ---- spec/javascripts/groups/groups_spec.js | 99 ---- spec/javascripts/groups/mock_data.js | 480 ++++++++++++++---- .../groups/service/groups_service_spec.js | 41 ++ .../groups/store/groups_store_spec.js | 110 ++++ 48 files changed, 2762 insertions(+), 900 deletions(-) create mode 100644 app/assets/javascripts/groups/components/app.vue create mode 100644 app/assets/javascripts/groups/components/item_actions.vue create mode 100644 app/assets/javascripts/groups/components/item_caret.vue create mode 100644 app/assets/javascripts/groups/components/item_stats.vue create mode 100644 app/assets/javascripts/groups/components/item_type_icon.vue create mode 100644 app/assets/javascripts/groups/constants.js create mode 100644 app/assets/javascripts/groups/new_group_child.js rename app/assets/javascripts/groups/{services => service}/groups_service.js (94%) create mode 100644 app/assets/javascripts/groups/store/groups_store.js delete mode 100644 app/assets/javascripts/groups/stores/groups_store.js delete mode 100644 app/views/dashboard/groups/_empty_state.html.haml create mode 100644 app/views/shared/groups/_empty_state.html.haml create mode 100644 spec/javascripts/groups/components/app_spec.js create mode 100644 spec/javascripts/groups/components/group_folder_spec.js create mode 100644 spec/javascripts/groups/components/group_item_spec.js create mode 100644 spec/javascripts/groups/components/groups_spec.js create mode 100644 spec/javascripts/groups/components/item_actions_spec.js create mode 100644 spec/javascripts/groups/components/item_caret_spec.js create mode 100644 spec/javascripts/groups/components/item_stats_spec.js create mode 100644 spec/javascripts/groups/components/item_type_icon_spec.js delete mode 100644 spec/javascripts/groups/group_item_spec.js delete mode 100644 spec/javascripts/groups/groups_spec.js create mode 100644 spec/javascripts/groups/service/groups_service_spec.js create mode 100644 spec/javascripts/groups/store/groups_store_spec.js diff --git a/app/assets/javascripts/filterable_list.js b/app/assets/javascripts/filterable_list.js index 6d516a253bb..9e91f72b2ea 100644 --- a/app/assets/javascripts/filterable_list.js +++ b/app/assets/javascripts/filterable_list.js @@ -6,10 +6,11 @@ import _ from 'underscore'; */ export default class FilterableList { - constructor(form, filter, holder) { + constructor(form, filter, holder, filterInputField = 'filter_groups') { this.filterForm = form; this.listFilterElement = filter; this.listHolderElement = holder; + this.filterInputField = filterInputField; this.isBusy = false; } @@ -32,10 +33,10 @@ export default class FilterableList { onFilterInput() { const $form = $(this.filterForm); const queryData = {}; - const filterGroupsParam = $form.find('[name="filter_groups"]').val(); + const filterGroupsParam = $form.find(`[name="${this.filterInputField}"]`).val(); if (filterGroupsParam) { - queryData.filter_groups = filterGroupsParam; + queryData[this.filterInputField] = filterGroupsParam; } this.filterResults(queryData); diff --git a/app/assets/javascripts/groups/components/app.vue b/app/assets/javascripts/groups/components/app.vue new file mode 100644 index 00000000000..fdec34f5dab --- /dev/null +++ b/app/assets/javascripts/groups/components/app.vue @@ -0,0 +1,191 @@ + + + diff --git a/app/assets/javascripts/groups/components/group_folder.vue b/app/assets/javascripts/groups/components/group_folder.vue index 7cc6c4b0359..e60221fa08d 100644 --- a/app/assets/javascripts/groups/components/group_folder.vue +++ b/app/assets/javascripts/groups/components/group_folder.vue @@ -1,15 +1,27 @@ @@ -20,8 +32,20 @@ export default { v-for="(group, index) in groups" :key="index" :group="group" - :base-group="baseGroup" - :collection="groups" + :parent-group="parentGroup" /> +
  • + +