From 8702f90b7d6779bca1e3ab8fb252cfeebced3b78 Mon Sep 17 00:00:00 2001 From: Vitor Borges Date: Dec 10 2017 19:53:20 +0000 Subject: [API] Add api endpoint for packages Signed-off-by: MatheusGodinho Signed-off-by: Vitor Borges --- diff --git a/src/api/analyzers.js b/src/api/analyzers.js new file mode 100644 index 0000000..f5a33d4 --- /dev/null +++ b/src/api/analyzers.js @@ -0,0 +1,7 @@ +import axios from '.' + +export default { + get: (currentPackage) => { + return axios.get(`/analysis/${currentPackage.name}/${currentPackage.version}`) + } +} diff --git a/src/components/package/PackagePage.vue b/src/components/package/PackagePage.vue index 3e1ba03..54c8d9a 100644 --- a/src/components/package/PackagePage.vue +++ b/src/components/package/PackagePage.vue @@ -4,18 +4,20 @@

- Selecione um analizador para verificar os erros: - - {{ analizer.name }} + Select an analyzer + + {{ analyzer.name }}

-

Total de erros do analizador {{ analizers[selectedAnalizer].name }}:

+

Total complaints from {{ selectedAnalyzerName }}

{{ total }}

-
- +
+
+ +
@@ -26,7 +28,7 @@ - + int for packages
@@ -38,8 +40,19 @@ import SummaryPackage from './SummaryPackage' import InformationPerFileTable from './InformationPerFileTable' import ErrorsTable from './ErrorsTable' import PieChart from './PieChart' +import store from '../../store' export default { + async beforeRouteEnter (to, from, next) { + try { + // await Do something before router PUSH + // next(vm => vm.foo = bar) + await store.dispatch('fetchAnalyzers', to.params.package) + next() + } catch (err) { + console.log(err) + } + }, components: { SummaryPackage, ErrorsTable, @@ -56,12 +69,12 @@ export default { }, data () { return { - selectedAnalizer: 0 + selectedAnalyzerId: 0 } }, computed: { ...mapGetters([ - getterNames.analizers, + getterNames.analyzers, getterNames.reports ]), pkg () { @@ -70,6 +83,16 @@ export default { packageNameVersion () { return this.pkg.name + ' - v' + this.pkg.last_version }, + selectedAnalyzer () { + return ( + this.analyzers + .filter(a => a.id === this.selectedAnalyzerId) || + [{name: 'teste', id: 0}] + )[0] + }, + selectedAnalyzerName () { + return (this.selectedAnalyzer || {name: 'error'}).name + }, datasets () { const labels = Object.keys(this.reports) const data = labels.map((key) => { @@ -92,15 +115,14 @@ export default { }, methods: { ...mapActions([ - actionTypes.SET_SELECTED + actionTypes.FETCH_ANALYZERS ]), - onSelectAnalizer (index) { - this.selectedAnalizer = index - this.setSelected(this.analizers[this.selectedAnalizer].id) + onSelectAnalyzer (index, analyzer) { + this.selectedAnalyzerId = analyzer.id } }, - mounted () { - this.setSelected(this.analizers[this.selectedAnalizer].id) + async mounted () { + this.selectedAnalyzerId = this.analyzers[0].id } } diff --git a/src/store/actionTypes.js b/src/store/actionTypes.js index 3cbf87c..1469345 100644 --- a/src/store/actionTypes.js +++ b/src/store/actionTypes.js @@ -1,4 +1,6 @@ // Packages export const FETCH_PACKAGES = 'fetchPackages' -export const SET_SELECTED = 'setSelected' export const FILTERED_PACKAGES = 'filteredPackages' + +// Analyzers +export const FETCH_ANALYZERS = 'fetchAnalyzers' diff --git a/src/store/getterNames.js b/src/store/getterNames.js index 2ffb321..971ffe7 100644 --- a/src/store/getterNames.js +++ b/src/store/getterNames.js @@ -1,6 +1,6 @@ // Packages export const allPackages = 'allPackages' -export const analizers = 'analizers' +export const analyzers = 'analyzers' export const reports = 'reports' export const errorsList = 'errorsList' export const filteredPackages = 'filteredPackages' diff --git a/src/store/index.js b/src/store/index.js index 2b4a4c9..3821c50 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1,11 +1,11 @@ import Vuex from 'vuex' import packages from './modules/packages' -import analisys from './modules/analysis' +import analyzers from './modules/analyzers' export default new Vuex.Store({ modules: { packages, - analisys + analyzers } }) diff --git a/src/store/modules/analyzers.js b/src/store/modules/analyzers.js new file mode 100644 index 0000000..06c340d --- /dev/null +++ b/src/store/modules/analyzers.js @@ -0,0 +1,42 @@ +import * as actionTypes from '../actionTypes' +import * as getterNames from '../getterNames' +import * as mutationTypes from '../mutationsTypes' +import api from '../../api/analyzers' + +const state = { + analyzers: [] +} + +const getters = { + [getterNames.analyzers]: (state) => { + return state.analyzers + }, + [getterNames.reports]: (state) => { + return [] + }, + [getterNames.errorsList]: (state) => { + return [] + } +} + +const actions = { + async [actionTypes.FETCH_ANALYZERS] ({commit, getters, state}, currentPackage) { + console.log(currentPackage) + let { data } = await api.get(currentPackage) + console.log(data) + commit(mutationTypes.STORE_ANALYZERS, data) + } +} + +const mutations = { + [mutationTypes.STORE_ANALYZERS] (state, data) { + state.analyzers = data + } +} + +export default { + state, + getters, + actions, + mutations +} diff --git a/src/store/modules/packages.js b/src/store/modules/packages.js index 11bca3e..cd9dd27 100644 --- a/src/store/modules/packages.js +++ b/src/store/modules/packages.js @@ -1,73 +1,10 @@ -// import api from '../../api/packages' +import api from '../../api/packages' import * as actionTypes from '../actionTypes' import * as getterNames from '../getterNames' import * as mutationTypes from '../mutationsTypes' -// const mockedPackages = [ -// { -// name: 'example1', -// last_version: '0.1' -// }, -// { -// name: 'foo1', -// last_version: '0.2' -// }, -// { -// name: 'example2', -// last_version: '0.3' -// } -// ] - -const mockedPackages = [ - { - name: 'Fedora Package', - version: '0.3.8', - upstream: 'http://www.google.com', - lastUpdate: '17/09/2017', - last_version: '0.1', - versions: [ - {analysis: [ - {analyzer_id: '2'} - ], - number: '2', - package_id: '1' - } - ] - }, - { - name: 'Pacote de Dados', - version: '0.3.8', - upstream: 'http://www.google.com', - lastUpdate: '17/09/2017', - last_version: '0.2', - versions: [ - {analysis: [ - {analyzer_id: '3'} - ], - number: '2', - package_id: '1' - } - ] - }, - { - name: 'Teste', - version: '0.3.8', - upstream: 'http://www.google.com', - lastUpdate: '17/09/2017', - last_version: '0.3', - versions: [ - {analysis: [ - {analyzer_id: '1'} - ], - number: '2', - package_id: '1' - } - ] - } -] - const state = { - allPackages: mockedPackages, + allPackages: [], filteredPackages: {} } @@ -83,21 +20,17 @@ const getters = { const actions = { async [actionTypes.FETCH_PACKAGES] ({commit, getters, state}, search) { // let { data } = await api.get() - let data = [] + let { data } = await api.get() + let results = [] if (!search) { - data = mockedPackages + results = data.packages } else { - data = mockedPackages.filter((pkg) => { + results = data.packages.filter((pkg) => { return pkg.name.includes(search) }) } - commit(mutationTypes.STORE_PACKAGES, data) - - if (data.length === 0) { - return false - } else { - return true - } + commit(mutationTypes.STORE_PACKAGES, results) + return true }, async [actionTypes.FILTERED_PACKAGES] ({commit, getters, state}, search) { commit(mutationTypes.FILTER_PACKAGES, search) @@ -106,16 +39,7 @@ const actions = { const mutations = { [mutationTypes.STORE_PACKAGES] (state, data) { - state.allPackages = data.map((pkg) => { - return { - package_id: pkg.versions[0].package_id, - name: pkg.name, - last_updated: pkg.lastUpdate, - last_version: pkg.versions[0].number, - fetcher_id: pkg.fetcher_id, - analyzer_id: pkg.versions[0].analysis[0].analyzer_id - } - }) + state.allPackages = data }, [mutationTypes.FILTER_PACKAGES] (state, search) { state.filtered = state.allPackages.map((pkg) => { diff --git a/src/store/mutationsTypes.js b/src/store/mutationsTypes.js index f2ba8b2..c34f0c0 100644 --- a/src/store/mutationsTypes.js +++ b/src/store/mutationsTypes.js @@ -2,3 +2,6 @@ export const STORE_PACKAGES = 'STORE_PACKAGES' export const STORE_SELECTED = 'STORE_SELECTED' export const FILTER_PACKAGES = 'FILTER_PACKAGES' + +// Analyzers +export const STORE_ANALYZERS = 'STORE_ANALYZERS'