Browse Source

first commit

master
ss.pedroisac 5 years ago
commit
20814ea0d9
53 changed files with 81359 additions and 0 deletions
  1. +3
    -0
      config/_development.js
  2. +36
    -0
      config/_development.json
  3. +3
    -0
      config/_production.js
  4. +31
    -0
      config/_production.json
  5. BIN
      config/icon.png
  6. BIN
      dbs/social.mv.db
  7. +160
    -0
      dbs/social.trace.db
  8. BIN
      public/images/logo-main.png
  9. BIN
      public/images/logo.png
  10. +80111
    -0
      public/scripts/main.js
  11. +1
    -0
      public/scripts/main.js.map
  12. +13
    -0
      public/styles/main.css
  13. +22
    -0
      server/core/_config.js
  14. +5
    -0
      server/core/_init.js
  15. +0
    -0
      server/core/_request_close.js
  16. +0
    -0
      server/core/_request_end.js
  17. +17
    -0
      server/core/_request_error.js
  18. +2
    -0
      server/core/_request_start.js
  19. +14
    -0
      server/core/_request_url.js
  20. +13
    -0
      server/core/_service_config.js
  21. +0
    -0
      server/core/_service_end.js
  22. +5
    -0
      server/core/_service_error.js
  23. +0
    -0
      server/core/_service_start.js
  24. +7
    -0
      server/package.json
  25. +39
    -0
      server/services/pessoa.js
  26. +0
    -0
      server/setup/_end.js
  27. +57
    -0
      server/setup/_schema-form-1-cidade.js
  28. +117
    -0
      server/setup/_schema-form-2-comunidade.js
  29. +177
    -0
      server/setup/_schema-form-3-pessoa.js
  30. +88
    -0
      server/setup/_schema-form-4-pessoa_comunidade.js
  31. +0
    -0
      server/setup/_start.js
  32. +24
    -0
      server/templates/dashboard.html
  33. +31
    -0
      server/templates/dev/dashboard.html
  34. +1
    -0
      server/templates/scripts.html
  35. +0
    -0
      server/templates/scripts_dev.html
  36. +0
    -0
      server/templates/scripts_login.html
  37. +1
    -0
      server/templates/styles.html
  38. +1
    -0
      server/templates/styles_dev.html
  39. +0
    -0
      server/templates/styles_login.html
  40. +4
    -0
      storage/filesystem/private/info.txt
  41. +2
    -0
      storage/filesystem/public/info.txt
  42. +4
    -0
      storage/filesystem/server/info.txt
  43. +9
    -0
      ui/.babelrc
  44. +18
    -0
      ui/.gitignore
  45. +24
    -0
      ui/README.md
  46. +36
    -0
      ui/package.json
  47. +17
    -0
      ui/src/components/MyButton/index.jsx
  48. +80
    -0
      ui/src/components/PessoasTabela/index.jsx
  49. +51
    -0
      ui/src/containers/DashboardContainer/index.jsx
  50. +8
    -0
      ui/src/containers/DashboardContainer/index.less
  51. +42
    -0
      ui/src/index.jsx
  52. +4
    -0
      ui/src/styles/main.less
  53. +81
    -0
      ui/webpack.config.js

+ 3
- 0
config/_development.js View File

@ -0,0 +1,3 @@
/*
* Development dynamic configurations is here.
*/

+ 36
- 0
config/_development.json View File

@ -0,0 +1,36 @@
{
"cron": {"jobs": []},
"settings": {"public": {}},
"smtp": {},
"name": "social",
"setup": {
"schema": {
"execution": true,
"auto_create": true
},
"scripts": {"execution": true},
"enabled": true
},
"language": "pt_PT",
"firebase": {
"app_name": "",
"database_url": "",
"key_file": "",
"listener_secret": ""
},
"locale": "pt_PT",
"remote": {},
"commands": [{
"path": "ui",
"command": "npm run watch",
"enabled": true
}],
"db": {"default": {
"password": "",
"engine": "h2",
"port": "",
"host": "",
"name": "social",
"username": ""
}}
}

+ 3
- 0
config/_production.js View File

@ -0,0 +1,3 @@
/*
* Production dynamic configurations is here.
*/

+ 31
- 0
config/_production.json View File

@ -0,0 +1,31 @@
{
"cron": {"jobs": []},
"settings": {"public": {}},
"smtp": {},
"name": "social",
"setup": {
"schema": {
"execution": true,
"auto_create": true
},
"scripts": {"execution": true},
"enabled": true
},
"language": "pt_PT",
"firebase": {
"app_name": "",
"database_url": "",
"key_file": "",
"listener_secret": ""
},
"locale": "pt_PT",
"remote": {},
"db": {"default": {
"password": "",
"engine": "h2",
"port": "",
"host": "",
"name": "social",
"username": ""
}}
}

BIN
config/icon.png View File

Before After
Width: 1024  |  Height: 1024  |  Size: 68 KiB

BIN
dbs/social.mv.db View File


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

@ -0,0 +1,160 @@
2021-03-22 23:58:32 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "alter table ""pessoa_comunidade"" alter column ""comunidade"" type varchar_ignorecase(250) default[*] '';"; SQL statement:
alter table "pessoa_comunidade" alter column "comunidade" type varchar_ignorecase(250) default ''; [42000-198]
2021-03-24 23:47:47 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Ambiguous column name "nome"; SQL statement:
select nome, sobrenome,
cidade.nome cidade
from pessoa
inner join cidade on pessoa.cidade_id=cidade_id [90059-198]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:573)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
at org.h2.message.DbException.get(DbException.java:205)
at org.h2.message.DbException.get(DbException.java:181)
at org.h2.expression.ExpressionColumn.mapColumn(ExpressionColumn.java:142)
at org.h2.expression.ExpressionColumn.mapColumns(ExpressionColumn.java:116)
at org.h2.command.dml.Select.mapColumns(Select.java:1636)
at org.h2.command.dml.Select.init(Select.java:1175)
at org.h2.command.Parser.parseSelect(Parser.java:2449)
at org.h2.command.Parser.parsePrepared(Parser.java:815)
at org.h2.command.Parser.parse(Parser.java:789)
at org.h2.command.Parser.parse(Parser.java:761)
at org.h2.command.Parser.prepareCommand(Parser.java:684)
at org.h2.engine.Session.prepareLocal(Session.java:629)
at org.h2.engine.Session.prepareCommand(Session.java:567)
at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1247)
at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:77)
at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:304)
at org.netuno.psamata.DB.executeQuery(SourceFile:456)
at org.netuno.psamata.DB.executeQuery(SourceFile:411)
at org.netuno.psamata.DB.query(SourceFile:381)
at org.netuno.tritao.resource.DB.query(SourceFile:761)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase.invokeHandle(HostMethodDesc.java:292)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostToGuestCodeCache$1.executeImpl(HostToGuestCodeCache.java:86)
at org.graalvm.truffle/com.oracle.truffle.polyglot.GuestToHostRootNode.execute(GuestToHostRootNode.java:82)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:591)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callInlined(OptimizedCallTarget.java:485)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.GraalRuntimeSupport.callInlined(GraalRuntimeSupport.java:120)
at org.graalvm.truffle/com.oracle.truffle.polyglot.GuestToHostRootNode.guestToHostCall(GuestToHostRootNode.java:108)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostMethodDesc$SingleMethod$MHBase.invokeGuestToHost(HostMethodDesc.java:319)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostExecuteNode.doInvoke(HostExecuteNode.java:809)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostExecuteNode.doOverloadedCached(HostExecuteNode.java:241)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostExecuteNodeGen.executeAndSpecialize(HostExecuteNodeGen.java:241)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostExecuteNodeGen.execute(HostExecuteNodeGen.java:94)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostObject.invokeMember(HostObject.java:412)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostObjectGen$InteropLibraryExports$Cached.invokeMemberNode_AndSpecialize(HostObjectGen.java:1393)
at org.graalvm.truffle/com.oracle.truffle.polyglot.HostObjectGen$InteropLibraryExports$Cached.invokeMember(HostObjectGen.java:1365)
at org.graalvm.truffle/com.oracle.truffle.api.interop.InteropLibraryGen$CachedDispatch.invokeMember(InteropLibraryGen.java:6078)
at com.oracle.truffle.js.nodes.function.JSFunctionCallNode$ForeignInvokeNode.executeCall(JSFunctionCallNode.java:1482)
at com.oracle.truffle.js.nodes.function.JSFunctionCallNode.executeAndSpecialize(JSFunctionCallNode.java:294)
at com.oracle.truffle.js.nodes.function.JSFunctionCallNode.executeCall(JSFunctionCallNode.java:240)
at com.oracle.truffle.js.nodes.function.JSFunctionCallNode$InvokeNode.execute(JSFunctionCallNode.java:711)
at com.oracle.truffle.js.nodes.function.JSFunctionCallNode$Invoke1Node.createArguments(JSFunctionCallNode.java:820)
at com.oracle.truffle.js.nodes.function.JSFunctionCallNode$InvokeNode.execute(JSFunctionCallNode.java:711)
at com.oracle.truffle.js.nodes.access.JSWriteCurrentFrameSlotNodeGen.execute_generic4(JSWriteCurrentFrameSlotNodeGen.java:154)
at com.oracle.truffle.js.nodes.access.JSWriteCurrentFrameSlotNodeGen.execute(JSWriteCurrentFrameSlotNodeGen.java:80)
at com.oracle.truffle.js.nodes.access.JSWriteCurrentFrameSlotNodeGen.executeVoid(JSWriteCurrentFrameSlotNodeGen.java:302)
at com.oracle.truffle.js.nodes.binary.DualNode.execute(DualNode.java:124)
at com.oracle.truffle.js.nodes.function.FunctionBodyNode.execute(FunctionBodyNode.java:73)
at com.oracle.truffle.js.nodes.function.FunctionRootNode.executeInRealm(FunctionRootNode.java:147)
at com.oracle.truffle.js.runtime.JavaScriptRealmBoundaryRootNode.execute(JavaScriptRealmBoundaryRootNode.java:93)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:591)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:562)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:512)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.doInvoke(OptimizedCallTarget.java:496)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:459)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:71)
at com.oracle.truffle.js.lang.JavaScriptLanguage$1.execute(JavaScriptLanguage.java:214)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:591)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:562)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:512)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.doInvoke(OptimizedCallTarget.java:496)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callIndirect(OptimizedCallTarget.java:446)
at jdk.internal.vm.compiler/org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:434)
at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotContextImpl.eval(PolyglotContextImpl.java:941)
at org.graalvm.sdk/org.graalvm.polyglot.Context.eval(Context.java:347)
at org.graalvm.sdk/org.graalvm.polyglot.Context.eval(Context.java:373)
at org.netuno.psamata.script.GraalRunner.eval(SourceFile:169)
at org.netuno.tritao.config.Hili.runGraalScript(SourceFile:550)
at org.netuno.tritao.config.Hili.runScriptSandbox(SourceFile:393)
at org.netuno.tritao.config.Hili.runScriptSandbox(SourceFile:310)
at org.netuno.tritao.Service.execute(SourceFile:630)
at org.netuno.tritao.Service._main(SourceFile:571)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.netuno.proteu.Run.run(SourceFile:103)
at org.netuno.proteu.Run.<init>(SourceFile:33)
at org.netuno.proteu.DynamicURL.build(SourceFile:153)
at org.netuno.proteu.Enterprise.processRequest(SourceFile:452)
at org.netuno.proteu.Enterprise.service(SourceFile:525)
at javax.servlet.http.HttpServlet.service(SourceFile:791)
at org.eclipse.jetty.servlet.ServletHolder$NotAsyncServlet.service(SourceFile:1402)
at org.eclipse.jetty.servlet.ServletHolder.handle(SourceFile:763)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(SourceFile:551)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(SourceFile:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SourceFile:602)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(SourceFile:127)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(SourceFile:235)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SourceFile:1610)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(SourceFile:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(SourceFile:1369)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(SourceFile:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(SourceFile:489)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SourceFile:1580)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(SourceFile:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(SourceFile:1284)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(SourceFile:141)
at org.eclipse.jetty.server.handler.HandlerList.handle(SourceFile:59)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(SourceFile:127)
at org.eclipse.jetty.server.Server.handle(SourceFile:501)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(SourceFile:383)
at org.eclipse.jetty.server.HttpChannel.dispatch(SourceFile:556)
at org.eclipse.jetty.server.HttpChannel.handle(SourceFile:375)
at org.eclipse.jetty.server.HttpConnection.onFillable(SourceFile:272)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(SourceFile:311)
at org.eclipse.jetty.io.FillInterest.fillable(SourceFile:103)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(SourceFile:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(SourceFile:336)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(SourceFile:313)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(SourceFile:171)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(SourceFile:129)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(SourceFile:375)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(SourceFile:806)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(SourceFile:938)
at java.base/java.lang.Thread.run(Thread.java:834)
2021-03-25 00:01:54 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "
select pessoa.nome, sobrenome, pessoa.id
cidade.[*]nome cidade
from pessoa
inner join cidade on pessoa.cidade_id=cidade_id"; SQL statement:
select pessoa.nome, sobrenome, pessoa.id
cidade.nome cidade
from pessoa
inner join cidade on pessoa.cidade_id=cidade_id [42000-198]
2021-03-25 00:01:57 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "
select pessoa.nome, sobrenome, pessoa.id
cidade.[*]nome cidade
from pessoa
inner join cidade on pessoa.cidade_id=cidade_id"; SQL statement:
select pessoa.nome, sobrenome, pessoa.id
cidade.nome cidade
from pessoa
inner join cidade on pessoa.cidade_id=cidade_id [42000-198]
2021-03-25 00:02:01 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL statement "
select pessoa.nome, sobrenome, pessoa.id
cidade.[*]nome cidade
from pessoa
inner join cidade on pessoa.cidade_id=cidade_id"; SQL statement:
select pessoa.nome, sobrenome, pessoa.id
cidade.nome cidade
from pessoa
inner join cidade on pessoa.cidade_id=cidade_id [42000-198]

BIN
public/images/logo-main.png View File

Before After
Width: 740  |  Height: 225  |  Size: 12 KiB

BIN
public/images/logo.png View File

Before After
Width: 600  |  Height: 180  |  Size: 22 KiB

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


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


+ 13
- 0
public/styles/main.css View File

@ -0,0 +1,13 @@
/**
HERE YOUR CUSTOM CSS
**/
.navbar, .navbar-inverse {
background-color: #5b5ce1 !important;
}
.dev .navbar, .dev .navbar-inverse {
background-color: #333333 !important;
}

+ 22
- 0
server/core/_config.js View File

@ -0,0 +1,22 @@
_config.set("_lang", _config.get("_lang:default"))
if (_env.is("dev")
&& (_url.equals("/") || _url.equals("/Index.netuno"))) {
_config
.set("_login:user", "dev")
.set("_login:pass", "dev")
.set("_login:auto", _req.getString("action") != "logout")
}
/**
* DISABLE BROWSER CACHE
*/
if (_url.download.isDownloadable()) {
if (_env.is("dev") && _url.indexOf("/public/scripts/main.js") > 0) {
_header.noCache()
} else {
_header.cache(2628000)
}
}

+ 5
- 0
server/core/_init.js View File

@ -0,0 +1,5 @@
/**
* FIREBASE - Set your listeners
*/
// _firebase.listener("my-test", _header.baseURL() + "/services/firebase/listener/my-test.netuno")

+ 0
- 0
server/core/_request_close.js View File


+ 0
- 0
server/core/_request_end.js View File


+ 17
- 0
server/core/_request_error.js View File

@ -0,0 +1,17 @@
if (!_out.isClosed()) {
_out.print(
"### SERVER ERROR ###"
)
/*
// Is insecure but the code below will print errors with more details...
_out.print(
"SERVER ERROR # " +
_error.data().getString("file")
+":"+
_error.data().getString("line")
+" # "+
_error.data().getString("message")
)
*/
}

+ 2
- 0
server/core/_request_start.js View File

@ -0,0 +1,2 @@
_config.set("_script:_request_end", true)

+ 14
- 0
server/core/_request_url.js View File

@ -0,0 +1,14 @@
// _log.info(_url.url())
/**
* ALLOW CORS
*/
/*
_header.response.set("Access-Control-Allow-Origin", "https://www.netuno.org")
_header.response.set("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS")
_header.response.set("Access-Control-Allow-Headers", "content-type,x-requested-with,authorization")
_header.response.set("Access-Control-Allow-Credentials", true)
*/
_url.to(_url.request())

+ 13
- 0
server/core/_service_config.js View File

@ -0,0 +1,13 @@
/**
* When service need public access...
*/
if (_env.is("dev")) {
_service.allow()
}
/*
if (_service.path == 'samples/my-service') {
_service.allow()
}
*/

+ 0
- 0
server/core/_service_end.js View File


+ 5
- 0
server/core/_service_error.js View File

@ -0,0 +1,5 @@
/*
// Print error:
_log.fatal("Service "+ _service.path, _error.data().get("throwable"))
*/

+ 0
- 0
server/core/_service_start.js View File


+ 7
- 0
server/package.json View File

@ -0,0 +1,7 @@
{
"name": "server",
"version": "1.0.0",
"description": "Server modules dependencies.",
"author": "netuno.org",
"license": "ISC"
}

+ 39
- 0
server/services/pessoa.js View File

@ -0,0 +1,39 @@
const dbpessoas = _db.query(`
select pessoa.nome, sobrenome, pessoa.id, cidade.nome cidade
from pessoa
inner join cidade on pessoa.cidade_id=cidade_id`
)
const dados = _val.list()
for(const dbpessoa of dbpessoas){
const dbcomunidades = _db.query(`
select * from pessoa_comunidade
inner join comunidade on pessoa_comunidade.comunidade_id=comunidade.id
where pessoa_id=?
`, dbpessoa.get("id"))
const dadoscomunidades = _val.list()
for(const dbcomunidade of dbcomunidades){
dadoscomunidades.add(
dbcomunidade.getString("nome")
)
} _log.info("dbcomunidades" + dbcomunidades.size())
console.log()
dados.add(
_val.map()
.set("nome", dbpessoa.get("nome"))
.set("sobrenome", dbpessoa.get("sobrenome"))
.set("cidade", dbpessoa.get("cidade"))
.set("comunidades", dadoscomunidades)
.set("comunidade", _db.query(`
select comunidade.nome from pessoa_comunidade
inner join comunidade on pessoa_comunidade.comunidade_id=comunidade.id
where pessoa_id=?
`, dbpessoa.get("id")))
)
}
_out.json(
dados
)

+ 0
- 0
server/setup/_end.js View File


+ 57
- 0
server/setup/_schema-form-1-cidade.js View File

@ -0,0 +1,57 @@
/**
*
* CODE GENERATED AUTOMATICALLY
*
* THIS FILE SHOULD NOT BE EDITED BY HAND
*
*/
_form.createIfNotExists(
_val.init()
.set("big", false)
.set("control_active", true)
.set("control_group", false)
.set("control_user", false)
.set("displayname", "Cidade")
.set("export_id", false)
.set("export_json", true)
.set("export_lastchange", false)
.set("export_uid", true)
.set("export_xls", true)
.set("export_xml", true)
.set("firebase", "")
.set("name", "cidade")
.set("report", false)
.set("show_id", true)
.set("uid", "35741829-d72e-4b60-8e7e-27f44855a658")
)
_form.createComponentIfNotExists(
"35741829-d72e-4b60-8e7e-27f44855a658",
_val.init()
.set("colspan", 0)
.set("displayname", "nome")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "nome")
.set("notnull", true)
.set("primarykey", true)
.set("properties", "{\"MASK_REVERSE\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"},\"MASK_SELECTONFOCUS\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"},\"MASK\":{\"default\":\"\",\"type\":\"STRING\",\"value\":\"\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "text")
.set("uid", "54787d26-38b9-4610-a444-4c55eaf035b6")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 1)
)

+ 117
- 0
server/setup/_schema-form-2-comunidade.js View File

@ -0,0 +1,117 @@
/**
*
* CODE GENERATED AUTOMATICALLY
*
* THIS FILE SHOULD NOT BE EDITED BY HAND
*
*/
_form.createIfNotExists(
_val.init()
.set("big", false)
.set("control_active", true)
.set("control_group", false)
.set("control_user", false)
.set("displayname", "Comunidade")
.set("export_id", false)
.set("export_json", true)
.set("export_lastchange", false)
.set("export_uid", true)
.set("export_xls", true)
.set("export_xml", true)
.set("firebase", "")
.set("name", "comunidade")
.set("report", false)
.set("show_id", true)
.set("uid", "3f326ec7-fb99-4f00-9561-86c81f1d96ca")
)
_form.createComponentIfNotExists(
"3f326ec7-fb99-4f00-9561-86c81f1d96ca",
_val.init()
.set("colspan", 0)
.set("displayname", "cidade_id")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "cidade_id")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"MAX_COLUMN_LENGTH\":{\"default\":\"0\",\"type\":\"INTEGER\",\"value\":\"0\"},\"COLUMN_SEPARATOR\":{\"default\":\" - \",\"type\":\"LINK_SEPARATOR\",\"value\":\" - \"},\"LINK\":{\"default\":\"\",\"type\":\"LINK\",\"value\":\"cidade:nome\"},\"SERVICE\":{\"default\":\"com/Select.netuno\",\"type\":\"STRING\",\"value\":\"com/Select.netuno\"},\"ONLY_ACTIVES\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "select")
.set("uid", "cc23f21c-5633-4046-bf13-e0a995ce863a")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 1)
)
_form.createComponentIfNotExists(
"3f326ec7-fb99-4f00-9561-86c81f1d96ca",
_val.init()
.set("colspan", 0)
.set("displayname", "imagem")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "imagem")
.set("notnull", false)
.set("primarykey", false)
.set("properties", "{}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "image")
.set("uid", "19822828-f178-4d28-831c-e1597ff42f38")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 3)
)
_form.createComponentIfNotExists(
"3f326ec7-fb99-4f00-9561-86c81f1d96ca",
_val.init()
.set("colspan", 0)
.set("displayname", "nome")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "nome")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"MASK_REVERSE\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"},\"MASK_SELECTONFOCUS\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"},\"MASK\":{\"default\":\"\",\"type\":\"STRING\",\"value\":\"\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "text")
.set("uid", "faab8df8-bb1a-483d-b65f-11ed997bb4d5")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 2)
)

+ 177
- 0
server/setup/_schema-form-3-pessoa.js View File

@ -0,0 +1,177 @@
/**
*
* CODE GENERATED AUTOMATICALLY
*
* THIS FILE SHOULD NOT BE EDITED BY HAND
*
*/
_form.createIfNotExists(
_val.init()
.set("big", false)
.set("control_active", true)
.set("control_group", false)
.set("control_user", false)
.set("displayname", "Pessoa")
.set("export_id", false)
.set("export_json", true)
.set("export_lastchange", false)
.set("export_uid", true)
.set("export_xls", true)
.set("export_xml", true)
.set("firebase", "")
.set("name", "pessoa")
.set("report", false)
.set("show_id", true)
.set("uid", "576dd48d-20fc-4ceb-b8ea-22eb20632867")
)
_form.createComponentIfNotExists(
"576dd48d-20fc-4ceb-b8ea-22eb20632867",
_val.init()
.set("colspan", 0)
.set("displayname", "cidade")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "cidade_id")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"MAX_COLUMN_LENGTH\":{\"default\":\"0\",\"type\":\"INTEGER\",\"value\":\"0\"},\"COLUMN_SEPARATOR\":{\"default\":\" - \",\"type\":\"LINK_SEPARATOR\",\"value\":\" - \"},\"LINK\":{\"default\":\"\",\"type\":\"LINK\",\"value\":\"cidade:nome\"},\"SERVICE\":{\"default\":\"com/Select.netuno\",\"type\":\"STRING\",\"value\":\"com/Select.netuno\"},\"ONLY_ACTIVES\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "select")
.set("uid", "e5017588-7b42-4546-b1c3-3cd8adaa3838")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 5)
)
_form.createComponentIfNotExists(
"576dd48d-20fc-4ceb-b8ea-22eb20632867",
_val.init()
.set("colspan", 0)
.set("displayname", "Comunidades")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "comunidades")
.set("notnull", false)
.set("primarykey", false)
.set("properties", "{\"ITEM_SEPARATOR\":{\"default\":\" # \",\"type\":\"STRING\",\"value\":\" # \"},\"MAX_COLUMN_LENGTH\":{\"default\":\"0\",\"type\":\"INTEGER\",\"value\":\"0\"},\"COLUMN_SEPARATOR\":{\"default\":\" - \",\"type\":\"LINK_SEPARATOR\",\"value\":\" - \"},\"REFERENCE\":{\"default\":\"\",\"type\":\"LINK\",\"value\":\"pessoa_comunidade:pessoa_id\"},\"LINK\":{\"default\":\"\",\"type\":\"LINK\",\"value\":\"pessoa_comunidade:comunidade_id\"},\"SERVICE\":{\"default\":\"com/MultiSelect.netuno\",\"type\":\"STRING\",\"value\":\"com/MultiSelect.netuno\"},\"ONLY_ACTIVES\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "multiselect")
.set("uid", "3a7bd5d2-80ba-4893-a2cc-045c82c33d35")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 6)
)
_form.createComponentIfNotExists(
"576dd48d-20fc-4ceb-b8ea-22eb20632867",
_val.init()
.set("colspan", 0)
.set("displayname", "Email")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "email")
.set("notnull", true)
.set("primarykey", true)
.set("properties", "{}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "email")
.set("uid", "3cf86f7c-d331-451a-b800-225015464a22")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 3)
)
_form.createComponentIfNotExists(
"576dd48d-20fc-4ceb-b8ea-22eb20632867",
_val.init()
.set("colspan", 0)
.set("displayname", "Nome")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "nome")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"MASK_REVERSE\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"},\"MASK_SELECTONFOCUS\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"},\"MASK\":{\"default\":\"\",\"type\":\"STRING\",\"value\":\"\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "text")
.set("uid", "cc1f32a8-e81c-4782-8ca7-d978e1b8d3a3")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 1)
)
_form.createComponentIfNotExists(
"576dd48d-20fc-4ceb-b8ea-22eb20632867",
_val.init()
.set("colspan", 0)
.set("displayname", "Sobrenome")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "sobrenome")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"MASK_REVERSE\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"},\"MASK_SELECTONFOCUS\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"},\"MASK\":{\"default\":\"\",\"type\":\"STRING\",\"value\":\"\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "text")
.set("uid", "9e73f8b7-d8c6-440a-a594-c4279988a2df")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 2)
)

+ 88
- 0
server/setup/_schema-form-4-pessoa_comunidade.js View File

@ -0,0 +1,88 @@
/**
*
* CODE GENERATED AUTOMATICALLY
*
* THIS FILE SHOULD NOT BE EDITED BY HAND
*
*/
_form.createIfNotExists(
_val.init()
.set("big", false)
.set("control_active", true)
.set("control_group", false)
.set("control_user", false)
.set("displayname", "Comunidade")
.set("export_id", false)
.set("export_json", true)
.set("export_lastchange", false)
.set("export_uid", true)
.set("export_xls", true)
.set("export_xml", true)
.set("firebase", "")
.set("name", "pessoa_comunidade")
.set("parent_uid", "576dd48d-20fc-4ceb-b8ea-22eb20632867")
.set("report", false)
.set("show_id", true)
.set("uid", "5f7c6836-8362-4c15-967a-1f548df6607d")
)
_form.createComponentIfNotExists(
"5f7c6836-8362-4c15-967a-1f548df6607d",
_val.init()
.set("colspan", 0)
.set("displayname", "comunidade_id")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "comunidade_id")
.set("notnull", false)
.set("primarykey", false)
.set("properties", "{\"MAX_COLUMN_LENGTH\":{\"default\":\"0\",\"type\":\"INTEGER\",\"value\":\"0\"},\"COLUMN_SEPARATOR\":{\"default\":\" - \",\"type\":\"LINK_SEPARATOR\",\"value\":\" - \"},\"LINK\":{\"default\":\"\",\"type\":\"LINK\",\"value\":\"comunidade:nome\"},\"SERVICE\":{\"default\":\"com/Select.netuno\",\"type\":\"STRING\",\"value\":\"com/Select.netuno\"},\"ONLY_ACTIVES\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "select")
.set("uid", "d8d5004c-aa49-44fb-b0d8-0c57a407ab74")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 2)
)
_form.createComponentIfNotExists(
"5f7c6836-8362-4c15-967a-1f548df6607d",
_val.init()
.set("colspan", 0)
.set("displayname", "Pessoa")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "pessoa_id")
.set("notnull", false)
.set("primarykey", false)
.set("properties", "{\"MAX_COLUMN_LENGTH\":{\"default\":\"0\",\"type\":\"INTEGER\",\"value\":\"0\"},\"COLUMN_SEPARATOR\":{\"default\":\" - \",\"type\":\"LINK_SEPARATOR\",\"value\":\" - \"},\"LINK\":{\"default\":\"\",\"type\":\"LINK\",\"value\":\"pessoa:nome,sobrenome,email\"},\"SERVICE\":{\"default\":\"com/Select.netuno\",\"type\":\"STRING\",\"value\":\"com/Select.netuno\"},\"ONLY_ACTIVES\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "select")
.set("uid", "6bd327dc-8a15-421b-9edd-ce5b608eb310")
.set("user_id", 0)
.set("whenedit", true)
.set("whenexport", true)
.set("whenfilter", true)
.set("whennew", true)
.set("whenresult", true)
.set("whenview", true)
.set("width", 0)
.set("x", 1)
.set("y", 1)
)

+ 0
- 0
server/setup/_start.js View File


+ 24
- 0
server/templates/dashboard.html View File

@ -0,0 +1,24 @@
<div class="row">
<div class="col-lg-12">
<div class="with-form">
<h1 class="page-header">
_{&lang=netuno.main.dashboard.title}
</h1>
</div>
<div class="no-form">
<h1 class="page-header">
_{&lang=netuno.main.dashboard.welcome_netuno}
</h1>
<p>_{&lang=netuno.main.dashboard.you_not_form}</p>
<p>_{&lang=netuno.main.dashboard.you_can_start_by_clicking_top_bar}</p>
<br>
<img src="_{netuno-config=url-styles}/build-button-tutorial.png" height="80">
</div>
</div>
</div>
<div id="app-dashboard"></div>

+ 31
- 0
server/templates/dev/dashboard.html View File

@ -0,0 +1,31 @@
<div class="row">
<div class="col-lg-12">
<div class="with-form">
<h1 class="page-header">
_{&lang=netuno.main.dashboard.title}
</h1>
<p>_{&lang=netuno.main.dashboard.description}</p>
</div>
<div class="no-form">
<h1 class="page-header">
_{&lang=netuno.main.dashboard.welcome_netuno}
</h1>
<p>_{&lang=netuno.dev.main.you_not_form}</p>
<p>_{&lang=netuno.dev.main.you_can_start_by_clicking_top_bar}</p>
<br>
<img src="_{netuno-config=url-styles}/build-button-tutorial-dev.png" height="200">
</div>
#macro(listFormItems $items)
<ul>
#foreach($item in $items)
<li>
<a href="#" netuno-dev-form="$item.getString('name')">$item.getString('text')</a>
#listFormItems($item.get('items'))
</li>
#end
</ul>
#end
#listFormItems($data.get('menu').get('forms'))
</div>
</div>

+ 1
- 0
server/templates/scripts.html View File

@ -0,0 +1 @@
<script src="_{netuno-config=url-app-scripts}/main.js?_{util=requestuuid}"></script>

+ 0
- 0
server/templates/scripts_dev.html View File


+ 0
- 0
server/templates/scripts_login.html View File


+ 1
- 0
server/templates/styles.html View File

@ -0,0 +1 @@
<link href='_{netuno-config=url-app-styles}/main.css' rel='stylesheet' />

+ 1
- 0
server/templates/styles_dev.html View File

@ -0,0 +1 @@
<link href='_{netuno-config=url-app-styles}/main.css' rel='stylesheet' />

+ 0
- 0
server/templates/styles_login.html View File


+ 4
- 0
storage/filesystem/private/info.txt View File

@ -0,0 +1,4 @@
Secure data files comes here...
Only accessible for logged users!

+ 2
- 0
storage/filesystem/public/info.txt View File

@ -0,0 +1,2 @@
Public storage files comes here...

+ 4
- 0
storage/filesystem/server/info.txt View File

@ -0,0 +1,4 @@
Secure data files comes here...
Only accessible through server side!

+ 9
- 0
ui/.babelrc View File

@ -0,0 +1,9 @@
{
"presets": [
"@babel/preset-env",
"@babel/preset-react"
],
"plugins": [
["import", { "libraryName": "antd", "style": true } ]
]
}

+ 18
- 0
ui/.gitignore View File

@ -0,0 +1,18 @@
node_modules/
.DS_Store
*.log
.idea/
.metadata/
.vscode
package-lock.json
yarn.lock
.Trash
*~*
*#*

+ 24
- 0
ui/README.md View File

@ -0,0 +1,24 @@
### Install Packages
`npm install`
### Watch changes and auto recompile
`npm run watch`
### Installation requirements
On Windows with an Administrator terminal, run:
```
npm install --global --production windows-build-tools
npm install --global node-gyp
```
With others Python version, then configure the Python 2.7 path:
```
node-gyp --python /path/to/python2.7
npm config set python /path/to/executable/python2.7
```

+ 36
- 0
ui/package.json View File

@ -0,0 +1,36 @@
{
"name": "public",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --mode production",
"watch": "webpack --mode development --watch"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.9.0",
"@babel/plugin-proposal-object-rest-spread": "^7.9.0",
"@babel/preset-env": "^7.9.0",
"@babel/preset-react": "^7.9.4",
"babel-loader": "^8.1.0",
"babel-plugin-import": "^1.13.0",
"less": "^3.11.1",
"less-loader": "^5.0.0",
"css-loader": "^3.4.2",
"style-loader": "^1.1.3",
"prop-types": "^15.7.2",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"webpack": "^4.42.1",
"webpack-cli": "^3.3.11"
},
"dependencies": {
"antd": "^4.1.0",
"chart.js": "^2.9.3",
"react-chartjs-2": "^2.9.0"
}
}

+ 17
- 0
ui/src/components/MyButton/index.jsx View File

@ -0,0 +1,17 @@
import React from "react";
import PropTypes from "prop-types";
import Button from 'antd/lib/button';
const MyButton = ({ buttonRef, text, click }) => (
<div ref={ buttonRef }><Button type="primary" onClick={ click }>
{ text }
</Button></div>
);
MyButton.propTypes = {
buttonRef: PropTypes.shape({ current: PropTypes.instanceOf(Element) }),
text: PropTypes.string.isRequired,
click: PropTypes.func.isRequired
};
export default MyButton;

+ 80
- 0
ui/src/components/PessoasTabela/index.jsx View File

@ -0,0 +1,80 @@
import React, { useEffect, useState } from "react"
import Table from 'antd/lib/table';
import Tag from 'antd/lib/tag'
import notification from 'antd/lib/notification'
const PessoasTabela = () => {
const [data, setData] = useState([])
const [loader, setLoader] = useState(true)
useEffect(() => {
netuno.service({
url: '/services/pessoa',
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
param1: 'value1',
param2: 'value2'
}),
success: (response)=> {
console.log(response);
if (response.json) {
setData(response.json)
setLoader(false)
} else {
fail();
}
},
fail: ()=> {
fail();
}
});
}, [])
const fail = ()=> {
setLoader(false)
notification["error"]({
message: 'Error',
description: 'Data loading error...',
style: {
marginTop: 100,
}
});
};
const columns = [
{
title: 'Nome',
dataIndex: 'nome',
key: 'name',
},
{
title: 'Sobrenome',
dataIndex: 'sobrenome',
key: 'age',
},
{
title: 'Cidade',
dataIndex: 'cidade',
key: 'address',
},
{
title: 'Comunidades',
dataIndex: 'comunidades',
key: 'address',
render: (comunidades) => comunidades.map((comunidade) => {
return(
<Tag>{comunidade}</Tag>
)
})
},
];
return (
<div>
<Table dataSource={data} columns={columns} />;
</div>
)
}
export default PessoasTabela

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

@ -0,0 +1,51 @@
import React, { Component } from "react";
import MyButton from "../../components/MyButton/index.jsx";
import PessoasTabela from "../../components/PessoasTabela/index.jsx";
import "./index.less";
export default class DashboardContainer extends Component {
constructor(props) {
super(props);
this.state = {
counter: 0,
data: []
};
this.button = React.createRef();
this.click = this.click.bind(this);
}
componentWillMount() {
/*
// Basic sample of the service call:
fetch('/services/my-test.netuno', {
credentials: 'include'
}).then((response) => {
return response.json();
}).then((json) => {
// json...;
});
*/
// Better sample of the recommended way to call services:
}
componentDidUpdate(prevProps, prevState, snapshot) {
$(this.button.current).fadeOut(250).fadeIn(250);
}
click() {
this.setState({ counter: this.state.counter + 1 });
}
render() {
const { counter, data } = this.state;
return (
<div className="my-dashboard">
<PessoasTabela />
</div>
);
}
}

+ 8
- 0
ui/src/containers/DashboardContainer/index.less View File

@ -0,0 +1,8 @@
.my-dashboard {
width: 100%;
&__button {
padding: 80px;
text-align: center;
}
}

+ 42
- 0
ui/src/index.jsx View File

@ -0,0 +1,42 @@
import React from "react";
import ReactDOM from "react-dom";
import DashboardContainer from "./containers/DashboardContainer/index.jsx";
const dashboardDiv = document.getElementById("app-dashboard");
const dashboardContainer = dashboardDiv ? ReactDOM.render(<DashboardContainer />, dashboardDiv) : false;
netuno.addNavigationLoad(() => {
$('[netuno-navigation]').find('a').on('netuno:click', (e)=> {
const link = $(e.target);
if (dashboardContainer && link.is('[netuno-navigation-dashboard]')) {
// Menu > Dashboard > Clicked!
}
});
});
netuno.addContentLoad((container) => {
// When any content is loaded dinamically this is executed...
if (container.is('[netuno-form-search="YOUR_FORM_NAME"]')) {
// When search page is loaded...
} else if (container.is('[netuno-form-edit="YOUR_FORM_NAME"]')) {
// When form edit is loaded...
}
});
netuno.addPageLoad(() => {
// When page is loaded...
let modal = $('#app-dashboard-modal-form');
modal.on('hidden.bs.modal', ()=> {
modal.find('[netuno-form-edit]').empty();
});
$('#app-dashboard-modal-form-button').on('click', ()=> {
modal.modal('show');
netuno.loadFormEdit(modal.find('[netuno-form]'));
});
modal.find('[netuno-form]').on('netuno:save', ()=> {
modal.modal('hide');
});
});

+ 4
- 0
ui/src/styles/main.less View File

@ -0,0 +1,4 @@
/*** GLOBAL CSS ***/
@import '~antd/dist/antd';

+ 81
- 0
ui/webpack.config.js View File

@ -0,0 +1,81 @@
const path = require('path');
module.exports = {
entry: [ './src/index.jsx', './src/styles/main.less' ],
devtool: "source-map",
output: {
path: __dirname +'/../public/scripts',
filename: 'main.js'
},
module: {
rules: [
{
test: /\.jsx$/,
include: [
path.resolve(__dirname, 'src')
],
exclude: /node_modules/,
use: [{
loader: 'babel-loader'
}]
},
{
test: /\.js$/,
include: [
path.resolve(__dirname, 'src')
],
exclude: /node_modules/,
use: [{
loader: 'babel-loader'
}]
},
{
test: /\.less$/,
include: [
path.resolve(__dirname, 'src')
],
exclude: /node_modules/,
use: [
{
loader: 'style-loader' // creates style nodes from JS strings
},
{
loader: 'css-loader', // translates CSS into CommonJ,
options: {
sourceMap: true/*,
modules: {
mode: 'local',
localIdentName: "[local]___[hash:base64:5]",
context: path.resolve(__dirname, 'src'),
hashPrefix: 'app',
}*/
}
},
{
loader: 'less-loader', // compiles Less to CSS
options: {
modifyVars: {
'primary-color': '#5b5ce1',
'link-color': '#5b5ce1',
'border-radius-base': '5px'
},
javascriptEnabled: true
}
}
]
},
{
test: /\.css$/,
include: [
path.resolve(__dirname, 'src')
],
exclude: /node_modules/,
use: [
'style-loader',
'css-loader'
]
}
]
}
};

Loading…
Cancel
Save