Browse Source

Grafico Adicionado

Classe serviço para otimização de codigo
Chamada para buscar o total de publicacoes numa comunidade
master
Nuno Martinho 5 years ago
parent
commit
0c5d3584fb
9 changed files with 153250 additions and 7 deletions
  1. BIN
      dbs/social.mv.db
  2. +85
    -0
      dbs/social.trace.db
  3. +153041
    -6
      public/scripts/main.js
  4. +1
    -1
      public/scripts/main.js.map
  5. +14
    -0
      server/services/publicacoes/grafico.js
  6. +1
    -0
      ui/package.json
  7. +46
    -0
      ui/src/components/GraficoPublicacoes/index.jsx
  8. +2
    -0
      ui/src/containers/DashboardContainer/index.jsx
  9. +60
    -0
      ui/src/utils/Service.js

BIN
dbs/social.mv.db View File


+ 85
- 0
dbs/social.trace.db View File

@ -0,0 +1,85 @@
2021-03-25 11:27:45 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT publicacao.momento AS ""mes"",
comunidade.nome AS ""comunidade"",
SUBSTRING(COUNT(comunidade.id) AS[*] ""total"" FROM 1 FOR 10)
FROM publicacao INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY publicacao.momento, comunidade.nome
ORDER BY COUNT(comunidade.id)"; expected "FILTER, OVER, [, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, ILIKE, REGEXP, IS, IN, BETWEEN, AND, OR, FROM, FOR, ,"; SQL statement:
SELECT publicacao.momento AS "mes",
comunidade.nome AS "comunidade",
SUBSTRING(COUNT(comunidade.id) AS "total" FROM 1 FOR 10)
FROM publicacao INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY publicacao.momento, comunidade.nome
ORDER BY COUNT(comunidade.id) [42001-198]
2021-03-25 11:30:00 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT publicacao.momento AS ""mes"",
comunidade.nome AS ""comunidade"",
COUNT(comunidade.id) AS ""total""
FROM publicacao INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY COUNT(comunidade[*].id), comunidade.nome
ORDER BY COUNT(comunidade.id)
"; SQL statement:
SELECT publicacao.momento AS "mes",
comunidade.nome AS "comunidade",
COUNT(comunidade.id) AS "total"
FROM publicacao INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY COUNT(comunidade.id), comunidade.nome
ORDER BY COUNT(comunidade.id)
[42000-198]
2021-03-25 13:31:19 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT
SUBSTRING(publicacao.momento FROM 1 FOR 10) AS ""mes"",
comunidade.nome ASx ""comunidade""[*],
COUNT(publicacao.id) AS ""total""
FROM publicacao
INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
ORDER BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
"; SQL statement:
SELECT
SUBSTRING(publicacao.momento FROM 1 FOR 10) AS "mes",
comunidade.nome ASx "comunidade",
COUNT(publicacao.id) AS "total"
FROM publicacao
INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
ORDER BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
[42000-198]
2021-03-25 13:31:34 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT
SUBSTRING(publicacao.momento FROM 1 FOR 10) AS ""mes"",
comunidade.nome ASx ""comunidade""[*],
COUNT(publicacao.id) AS ""total""
FROM publicacao
INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
ORDER BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
"; SQL statement:
SELECT
SUBSTRING(publicacao.momento FROM 1 FOR 10) AS "mes",
comunidade.nome ASx "comunidade",
COUNT(publicacao.id) AS "total"
FROM publicacao
INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
ORDER BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
[42000-198]
2021-03-25 13:32:56 jdbc[4]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "SELECT
SUBSTRING(publicacao.momento FROM 1 FOR 10) AS ""mes"",
comunidade.nome ASx ""comunidade""[*],
COUNT(publicacao.id) AS ""total""
FROM publicacao
INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
ORDER BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
"; SQL statement:
SELECT
SUBSTRING(publicacao.momento FROM 1 FOR 10) AS "mes",
comunidade.nome ASx "comunidade",
COUNT(publicacao.id) AS "total"
FROM publicacao
INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
ORDER BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
[42000-198]

+ 153041
- 6
public/scripts/main.js
File diff suppressed because it is too large
View File


+ 1
- 1
public/scripts/main.js.map
File diff suppressed because it is too large
View File


+ 14
- 0
server/services/publicacoes/grafico.js View File

@ -0,0 +1,14 @@
const dbPublicacoes = _db.query(
`SELECT
SUBSTRING(publicacao.momento FROM 1 FOR 10) AS "mes",
comunidade.nome AS "comunidade",
COUNT(publicacao.id) AS "total"
FROM publicacao
INNER JOIN comunidade ON publicacao.comunidade_id = comunidade.id
GROUP BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
ORDER BY SUBSTRING(publicacao.momento FROM 1 FOR 10), comunidade.nome
`
)
_out.json(dbPublicacoes)

+ 1
- 0
ui/package.json View File

@ -30,6 +30,7 @@
}, },
"dependencies": { "dependencies": {
"antd": "^4.1.0", "antd": "^4.1.0",
"bizcharts": "^4.1.9",
"chart.js": "^2.9.3", "chart.js": "^2.9.3",
"react-chartjs-2": "^2.9.0" "react-chartjs-2": "^2.9.0"
} }


+ 46
- 0
ui/src/components/GraficoPublicacoes/index.jsx View File

@ -0,0 +1,46 @@
import React, { useState, useEffect } from "react";
import PropTypes from "prop-types";
import Spin from 'antd/lib/spin';
import { Chart, LineAdvance } from 'bizcharts';
import Service from "../../utils/Service";
const GraficoPublicacoes = () => {
const [data, setData] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
Service.call({
url: "publicacoes/grafico",
method: "post",
setData,
setLoading,
errorTitle: 'Erro Carregar Grafico',
errorMessage: 'Serviço do grafico'
});
}, []);
return <>
{loading && <Spin />}
<Chart padding={[10, 20, 50, 40]} autoFit height={300} data={data} >
<LineAdvance
shape="smooth"
point
area
position="mes*total"
color="comunidade"
/>
</Chart>
</>
};
GraficoPublicacoes.propTypes = {
};
export default GraficoPublicacoes;

+ 2
- 0
ui/src/containers/DashboardContainer/index.jsx View File

@ -1,4 +1,5 @@
import React, { Component } from "react"; import React, { Component } from "react";
import GraficoPublicacoes from "../../components/GraficoPublicacoes/index.jsx";
import MyButton from "../../components/MyButton/index.jsx"; import MyButton from "../../components/MyButton/index.jsx";
import TabelaPessoas from "../../components/TabelaPessoas/index.jsx"; import TabelaPessoas from "../../components/TabelaPessoas/index.jsx";
@ -81,6 +82,7 @@ export default class DashboardContainer extends Component {
return ( return (
<div className="my-dashboard"> <div className="my-dashboard">
<TabelaPessoas /> <TabelaPessoas />
<GraficoPublicacoes />
<div className="my-dashboard__button"> <div className="my-dashboard__button">
<MyButton mainRef={ this.button } text={ `ReactJS ⚡ Ant.Design 👉 Click me! ${ counter }` } click={ this.click } /> <MyButton mainRef={ this.button } text={ `ReactJS ⚡ Ant.Design 👉 Click me! ${ counter }` } click={ this.click } />
</div> </div>


+ 60
- 0
ui/src/utils/Service.js View File

@ -0,0 +1,60 @@
import notification from 'antd/lib/notification';
export default class Service {
static call(settings) {
const {url, method, body, setData, setLoading, errorTitle, errorMessage} = settings;
const errors = {};
if (!url || url == '') {
errors['url'] = 'Required!';
};
if (!setData) {
errors['setData'] = 'Required!';
};
if (!setLoading) {
errors['setLoading'] = 'Required!';
};
if (Object.keys(errors).length > 0) {
return console.error("Service call invalid setting:", errors);
}
setLoading(true);
const fail = ()=> {
setLoading(false);
notification["error"]({
message: errorTitle ? errorTitle : 'Erro no serviço',
description: errorMessage ? errorMessage : url,
style: {
marginTop: 100,
}
});
};
netuno.service({
url: `/services/${url}`,
method: method ? method.toUpperCase() : 'GET',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: body ? body : null,
success: (response)=> {
if (response.json) {
setData(response.json);
setLoading(false);
} else {
fail();
}
},
fail: ()=> {
fail();
}
});
}
}

Loading…
Cancel
Save