From 48b8c5d0219e8328aa1075eb0175f5d29b421c60 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Sat, 23 Mar 2019 23:46:59 +0300 Subject: [PATCH 01/65] Extracted Users filter as a single file component --- src/views/users/components/UsersFilter.vue | 43 ++++++++++++++++++++++ src/views/users/index.vue | 7 +++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 src/views/users/components/UsersFilter.vue diff --git a/src/views/users/components/UsersFilter.vue b/src/views/users/components/UsersFilter.vue new file mode 100644 index 00000000..a866584a --- /dev/null +++ b/src/views/users/components/UsersFilter.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/views/users/index.vue b/src/views/users/index.vue index f27ac791..51860f0e 100644 --- a/src/views/users/index.vue +++ b/src/views/users/index.vue @@ -2,7 +2,8 @@

{{ $t('users.users') }}

- {{ $t('users.localUsersOnly') }} + +
@@ -93,9 +94,13 @@ + + From 28c28335830c5314473195c118d848209be96351 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Mon, 25 Mar 2019 01:58:01 +0300 Subject: [PATCH 06/65] Return select multiple filters --- src/store/modules/users.js | 15 ++++---------- src/views/users/components/UsersFilter.vue | 23 +++++++--------------- 2 files changed, 11 insertions(+), 27 deletions(-) diff --git a/src/store/modules/users.js b/src/store/modules/users.js index 4ea3b43d..c4b7ec21 100644 --- a/src/store/modules/users.js +++ b/src/store/modules/users.js @@ -42,8 +42,8 @@ const users = { SET_SEARCH_QUERY: (state, query) => { state.searchQuery = query }, - SET_USERS_FILTER: (state, filters) => { - state.filters = filters + SET_USERS_FILTER: (state, filter) => { + state.filters[filter] = !state.filters[filter] } }, actions: { @@ -72,15 +72,8 @@ const users = { loadUsers(commit, page, response.data) } }, - async ToggleUsersFilter({ commit, dispatch, state }, filters) { - const newFilters = Object.keys(state.filters).reduce((acc, filter) => { - if (filters.includes(filter)) { - return { ...acc, [filter]: true } - } else { - return { ...acc, [filter]: false } - } - }, {}) - commit('SET_USERS_FILTER', newFilters) + async ToggleUsersFilter({ commit, dispatch, state }, filter) { + commit('SET_USERS_FILTER', filter) // dispatch('SearchUsers', { query: state.searchQuery, page: 1 }) }, async ToggleRight({ commit, getters }, { user, right }) { diff --git a/src/views/users/components/UsersFilter.vue b/src/views/users/components/UsersFilter.vue index f4a269c5..41e6b673 100644 --- a/src/views/users/components/UsersFilter.vue +++ b/src/views/users/components/UsersFilter.vue @@ -28,19 +28,19 @@ export default { label: 'By user type', options: [{ label: 'Local', - value: 'userType/showLocalUsersOnly' + value: 'showLocalUsersOnly' }, { label: 'External', - value: 'userType/showExternalUsersOnly' + value: 'showExternalUsersOnly' }] }, { label: 'By status', options: [{ label: 'Active', - value: 'userStatus/showActiveUsersOnly' + value: 'showActiveUsersOnly' }, { label: 'Deactivated', - value: 'userStatus/showDeactivatedUsersOnly' + value: 'showDeactivatedUsersOnly' }] }], value: [] @@ -52,18 +52,9 @@ export default { } }, methods: { - handleFilterToggle(value) { - const reversed = value.reverse() - const userTypeFilter = reversed.find(filter => filter.includes('userType')) - const userStatusFilter = reversed.find(filter => filter.includes('userStatus')) - const filters = [userTypeFilter, userStatusFilter].filter(item => item) - this.$data.value = filters - const filtersWithoutGroupnames = filters.reduce((acc, item) => { - const filter = item.split('/')[1] - acc.push(filter) - return acc - }, []) - this.$store.dispatch('ToggleUsersFilter', filtersWithoutGroupnames) + handleFilterToggle(filters) { + const currentFilter = filters[filters.length - 1] + this.$store.dispatch('ToggleUsersFilter', currentFilter) } } } From ab12129b8aae446b94a27dba677c72ad6de58960 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Mon, 25 Mar 2019 15:55:39 +0300 Subject: [PATCH 07/65] Add ability to clear all filters --- src/store/modules/users.js | 18 +++++++++++++++--- src/views/users/components/UsersFilter.vue | 5 +++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/store/modules/users.js b/src/store/modules/users.js index c4b7ec21..d5a10d48 100644 --- a/src/store/modules/users.js +++ b/src/store/modules/users.js @@ -44,11 +44,19 @@ const users = { }, SET_USERS_FILTER: (state, filter) => { state.filters[filter] = !state.filters[filter] + }, + CLEAR_USERS_FILTERS: (state) => { + state.filters = { + showLocalUsersOnly: false, + showExternalUsersOnly: false, + showActiveUsersOnly: false, + showDeactivatedUsersOnly: false + } } }, actions: { async FetchUsers({ commit, state, getters }, { page }) { - const response = await fetchUsers(state.filters.showLocalUsersOnly, getters.authHost, getters.token, page) + const response = await fetchUsers(state.filters, getters.authHost, getters.token, page) commit('SET_LOADING', true) @@ -67,14 +75,18 @@ const users = { commit('SET_LOADING', true) commit('SET_SEARCH_QUERY', query) - const response = await searchUsers(query, state.filters.showLocalUsersOnly, getters.authHost, getters.token, page) + const response = await searchUsers(query, state.filters, getters.authHost, getters.token, page) loadUsers(commit, page, response.data) } }, async ToggleUsersFilter({ commit, dispatch, state }, filter) { commit('SET_USERS_FILTER', filter) - // dispatch('SearchUsers', { query: state.searchQuery, page: 1 }) + dispatch('SearchUsers', { query: state.searchQuery, page: 1 }) + }, + async ClearFilters({ commit, dispatch, state }) { + commit('CLEAR_USERS_FILTERS') + dispatch('SearchUsers', { query: state.searchQuery, page: 1 }) }, async ToggleRight({ commit, getters }, { user, right }) { user.roles[right] diff --git a/src/views/users/components/UsersFilter.vue b/src/views/users/components/UsersFilter.vue index 41e6b673..6da55b41 100644 --- a/src/views/users/components/UsersFilter.vue +++ b/src/views/users/components/UsersFilter.vue @@ -3,9 +3,11 @@ v-model="value" :collapse-tags="isMobile" multiple + clearable placeholder="Select filter" class="select-field" @change="handleFilterToggle" + @clear="clearFilters" @remove-tag="handleFilterToggle"> Date: Mon, 25 Mar 2019 16:25:29 +0300 Subject: [PATCH 08/65] Add general function to toggle filters --- src/store/modules/users.js | 31 +++++++++++----------- src/views/users/components/UsersFilter.vue | 21 ++++++--------- 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/src/store/modules/users.js b/src/store/modules/users.js index d5a10d48..b165c563 100644 --- a/src/store/modules/users.js +++ b/src/store/modules/users.js @@ -8,10 +8,10 @@ const users = { totalUsersCount: 0, currentPage: 1, filters: { - showLocalUsersOnly: false, - showExternalUsersOnly: false, - showActiveUsersOnly: false, - showDeactivatedUsersOnly: false + localUsersOnly: false, + externalUsersOnly: false, + activeUsersOnly: false, + deactivatedUsersOnly: false } }, mutations: { @@ -42,16 +42,8 @@ const users = { SET_SEARCH_QUERY: (state, query) => { state.searchQuery = query }, - SET_USERS_FILTER: (state, filter) => { - state.filters[filter] = !state.filters[filter] - }, - CLEAR_USERS_FILTERS: (state) => { - state.filters = { - showLocalUsersOnly: false, - showExternalUsersOnly: false, - showActiveUsersOnly: false, - showDeactivatedUsersOnly: false - } + SET_USERS_FILTERS: (state, filters) => { + state.filters = filters } }, actions: { @@ -80,8 +72,15 @@ const users = { loadUsers(commit, page, response.data) } }, - async ToggleUsersFilter({ commit, dispatch, state }, filter) { - commit('SET_USERS_FILTER', filter) + async ToggleUsersFilter({ commit, dispatch, state }, filters) { + const defaultFilters = { + localUsersOnly: false, + externalUsersOnly: false, + activeUsersOnly: false, + deactivatedUsersOnly: false + } + const currentFilters = { ...defaultFilters, ...filters } + commit('SET_USERS_FILTERS', currentFilters) dispatch('SearchUsers', { query: state.searchQuery, page: 1 }) }, async ClearFilters({ commit, dispatch, state }) { diff --git a/src/views/users/components/UsersFilter.vue b/src/views/users/components/UsersFilter.vue index 6da55b41..1fe8dbf7 100644 --- a/src/views/users/components/UsersFilter.vue +++ b/src/views/users/components/UsersFilter.vue @@ -6,9 +6,7 @@ clearable placeholder="Select filter" class="select-field" - @change="handleFilterToggle" - @clear="clearFilters" - @remove-tag="handleFilterToggle"> + @change="toggleFilters"> ({ ...acc, [filter]: true }), {}) + this.$store.dispatch('ToggleUsersFilter', currentFilters) } } } From cdeca18604bbb4a673b31648ae01f077e4317042 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Mon, 25 Mar 2019 22:43:34 +0500 Subject: [PATCH 09/65] Fix styles for desktop and mobile ui --- src/views/users/components/UsersFilter.vue | 8 ++++++-- src/views/users/index.vue | 17 ++++++++--------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/views/users/components/UsersFilter.vue b/src/views/users/components/UsersFilter.vue index 1fe8dbf7..20c76e80 100644 --- a/src/views/users/components/UsersFilter.vue +++ b/src/views/users/components/UsersFilter.vue @@ -2,8 +2,8 @@ @@ -47,6 +47,9 @@ export default { } }, computed: { + isDesktop() { + return this.$store.state.app.device === 'desktop' + }, isMobile() { return this.$store.state.app.device === 'mobile' } @@ -68,7 +71,8 @@ export default { only screen and (max-width: 760px), (min-device-width: 768px) and (max-device-width: 1024px) { .select-field { - width: 48%; + width: 100%; + margin-bottom: 5px; } } diff --git a/src/views/users/index.vue b/src/views/users/index.vue index baeaa1e5..4c2d37b1 100644 --- a/src/views/users/index.vue +++ b/src/views/users/index.vue @@ -174,7 +174,7 @@ export default { diff --git a/yarn.lock b/yarn.lock index a4c90db2..1f7a8a5b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3446,10 +3446,10 @@ elegant-spinner@^1.0.1: resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= -element-ui@2.4.11: - version "2.4.11" - resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.4.11.tgz#db6a2d37001b8fe5fff9f176fb58bb3908cfa9c9" - integrity sha512-RtgK0t840NAFTajGMWvylzZRSX1EkZ7V4YgAoBxhv4TtkeMscLuk/IdYOzPdlQq6IN0byx1YVBxCX+u4yYkGvw== +element-ui@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/element-ui/-/element-ui-2.7.0.tgz#6bfcdfa5c75bfc4cda835186f2a1f98b93cd5d14" + integrity sha512-FalWzOmT/K4w4C/8tw2kGvzzQnRJ5MqEvSL5rEKNa081PFGIcUS9exyVpYrNPKF8ua/W6qaqrXPC6DQ8sNcmOQ== dependencies: async-validator "~1.8.1" babel-helper-vue-jsx-merge-props "^2.0.0" From f885cdbaf1fa309d4510757fbd5beb0e61e7934b Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Sun, 31 Mar 2019 02:33:02 +0700 Subject: [PATCH 27/65] Add notes rendering and styles --- src/store/modules/reports.js | 21 +++++--- src/views/reports/components/TimelineItem.vue | 50 ++++++++++++++++++- src/views/reports/index.vue | 2 +- 3 files changed, 65 insertions(+), 8 deletions(-) diff --git a/src/store/modules/reports.js b/src/store/modules/reports.js index 9638ca02..983c16b8 100644 --- a/src/store/modules/reports.js +++ b/src/store/modules/reports.js @@ -3,30 +3,39 @@ const reports = { fetchedReports: [ { id: '1', - timestamp: '2018/4/12', + timestamp: '2019/4/12', local: true, from: 'John', // actor nickname object: 'Bob', // user nickname header: 'Report #1', // content - content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' + content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', + notes: [ + { author: 'Nick', text: 'Lorem ipsum', timestamp: '2019/4/13' }, + { author: 'Val', text: 'dolor sit amet', timestamp: '2019/4/13' } + ] }, { id: '2', - timestamp: '2018/4/1', + timestamp: '2019/4/1', local: true, from: 'Max', object: 'Vic', header: 'Report #2', - content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' + content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', + notes: [ + { author: 'Tony', text: 'consectetur adipiscing elit', timestamp: '2019/4/2' }, + { author: 'Zac', text: 'sed do eiusmod tempor incididunt', timestamp: '2019/4/3' } + ] }, { id: '3', - timestamp: '2018/2/28', + timestamp: '2019/2/28', local: true, from: 'Tim', object: 'Jen', header: 'Report #3', - content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' + content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.', + notes: [{ author: 'Bruce', text: 'ut labore et dolore magna aliqua', timestamp: '2019/3/1' }] } ] }, diff --git a/src/views/reports/components/TimelineItem.vue b/src/views/reports/components/TimelineItem.vue index aa334806..39ef5d5d 100644 --- a/src/views/reports/components/TimelineItem.vue +++ b/src/views/reports/components/TimelineItem.vue @@ -1,8 +1,19 @@ @@ -15,6 +26,43 @@ export default { type: Object, required: true } + }, + data() { + return { + showNotes: [] + } } } + + diff --git a/src/views/reports/index.vue b/src/views/reports/index.vue index 895f0b10..83393c5c 100644 --- a/src/views/reports/index.vue +++ b/src/views/reports/index.vue @@ -28,7 +28,7 @@ export default { margin: 22px 0 0 15px; } .el-timeline { - margin: 45px; + margin: 45px 45px 45px 19px; padding: 0px; } } From 2bed9bf5fa5de34cec7f488dd79e60b1a002c521 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Sun, 31 Mar 2019 17:08:41 +0700 Subject: [PATCH 28/65] Add input for notes --- src/views/reports/components/TimelineItem.vue | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/src/views/reports/components/TimelineItem.vue b/src/views/reports/components/TimelineItem.vue index 39ef5d5d..e30fab37 100644 --- a/src/views/reports/components/TimelineItem.vue +++ b/src/views/reports/components/TimelineItem.vue @@ -1,7 +1,10 @@ diff --git a/src/views/reports/index.vue b/src/views/reports/index.vue index f02d7fc7..10dcade8 100644 --- a/src/views/reports/index.vue +++ b/src/views/reports/index.vue @@ -1,6 +1,9 @@