Browse Source

First commit

master
Nuno Martinho 5 years ago
commit
cc39f968e1
59 changed files with 113445 additions and 0 deletions
  1. +18
    -0
      .gitignore
  2. +3
    -0
      config/_development.js
  3. +3
    -0
      config/_production.js
  4. BIN
      config/icon.png
  5. BIN
      dbs/myapp.mv.db
  6. +2620
    -0
      dbs/myapp.trace.db
  7. BIN
      public/images/logo-main.png
  8. BIN
      public/images/logo.png
  9. +109222
    -0
      public/scripts/main.js
  10. +1
    -0
      public/scripts/main.js.map
  11. +13
    -0
      public/styles/main.css
  12. +22
    -0
      server/core/_config.js
  13. +5
    -0
      server/core/_init.js
  14. +0
    -0
      server/core/_request_close.js
  15. +0
    -0
      server/core/_request_end.js
  16. +17
    -0
      server/core/_request_error.js
  17. +2
    -0
      server/core/_request_start.js
  18. +14
    -0
      server/core/_request_url.js
  19. +13
    -0
      server/core/_service_config.js
  20. +0
    -0
      server/core/_service_end.js
  21. +5
    -0
      server/core/_service_error.js
  22. +0
    -0
      server/core/_service_start.js
  23. +7
    -0
      server/package.json
  24. +16
    -0
      server/services/users/events/post.js
  25. +24
    -0
      server/services/users/get.js
  26. +0
    -0
      server/services/users/reminders/post.js
  27. +0
    -0
      server/services/users/tasks/post.js
  28. +0
    -0
      server/setup/_end.js
  29. +147
    -0
      server/setup/_schema-form-1-event.js
  30. +147
    -0
      server/setup/_schema-form-2-reminder.js
  31. +57
    -0
      server/setup/_schema-form-3-role.js
  32. +207
    -0
      server/setup/_schema-form-4-task.js
  33. +87
    -0
      server/setup/_schema-form-5-task_list.js
  34. +147
    -0
      server/setup/_schema-form-6-user.js
  35. +88
    -0
      server/setup/_schema-form-7-user_event.js
  36. +0
    -0
      server/setup/_start.js
  37. +24
    -0
      server/templates/dashboard.html
  38. +31
    -0
      server/templates/dev/dashboard.html
  39. +1
    -0
      server/templates/scripts.html
  40. +0
    -0
      server/templates/scripts_dev.html
  41. +0
    -0
      server/templates/scripts_login.html
  42. +1
    -0
      server/templates/styles.html
  43. +1
    -0
      server/templates/styles_dev.html
  44. +0
    -0
      server/templates/styles_login.html
  45. +4
    -0
      storage/filesystem/private/info.txt
  46. +2
    -0
      storage/filesystem/public/info.txt
  47. +4
    -0
      storage/filesystem/server/info.txt
  48. +9
    -0
      ui/.babelrc
  49. +18
    -0
      ui/.gitignore
  50. +24
    -0
      ui/README.md
  51. +36
    -0
      ui/package.json
  52. +17
    -0
      ui/src/components/MyButton/index.jsx
  53. +78
    -0
      ui/src/components/TableUsers/index.jsx
  54. +85
    -0
      ui/src/components/UserCalendar/index.jsx
  55. +90
    -0
      ui/src/containers/DashboardContainer/index.jsx
  56. +8
    -0
      ui/src/containers/DashboardContainer/index.less
  57. +42
    -0
      ui/src/index.jsx
  58. +4
    -0
      ui/src/styles/main.less
  59. +81
    -0
      ui/webpack.config.js

+ 18
- 0
.gitignore View File

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

+ 3
- 0
config/_development.js View File

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

+ 3
- 0
config/_production.js View File

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

BIN
config/icon.png View File

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

BIN
dbs/myapp.mv.db View File


+ 2620
- 0
dbs/myapp.trace.db
File diff suppressed because it is too large
View File


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

+ 109222
- 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"
}

+ 16
- 0
server/services/users/events/post.js View File

@ -0,0 +1,16 @@
dbEvents = _db.query(`
select user.uid,
event.title,
event.description,
event.date_start,
event.date_end
from user
inner join user_event on user.id = user_event.user_id
inner join event on event.id = user_event.event_id
where user.uid = ?
`, _req.getString("uid"))
//console.log(_req);
//java.lang.Thread.sleep(4000)
_out.json(dbEvents)

+ 24
- 0
server/services/users/get.js View File

@ -0,0 +1,24 @@
const role = 'user';
const dbUsers = _db.query(
`select user.id, user.uid, user.username, user.email, role.name "role"
from user
inner join role
on user.role_id = role.id
where role.name = ?`,
role
);
const users = _val.list();
for (const dbUser of dbUsers) {
users.add(
_val.map()
.set("uid", dbUser.getString("uid"))
.set("username", dbUser.getString("username"))
.set("email", dbUser.getString("email"))
.set("role", dbUser.getString("role"))
);
}
_out.json(users);

+ 0
- 0
server/services/users/reminders/post.js View File


+ 0
- 0
server/services/users/tasks/post.js View File


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


+ 147
- 0
server/setup/_schema-form-1-event.js View File

@ -0,0 +1,147 @@
/**
*
* 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", "Event")
.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", "event")
.set("report", false)
.set("show_id", true)
.set("uid", "e4f8908d-735c-4d1c-8c69-f6a2a200ba98")
)
_form.createComponentIfNotExists(
"e4f8908d-735c-4d1c-8c69-f6a2a200ba98",
_val.init()
.set("colspan", 0)
.set("displayname", "DateEnd")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "date_end")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"DEFAULT_CURRENT\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "datetime")
.set("uid", "00d17b2d-7744-4ba0-a667-91b9c5b876cc")
.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", 4)
)
_form.createComponentIfNotExists(
"e4f8908d-735c-4d1c-8c69-f6a2a200ba98",
_val.init()
.set("colspan", 0)
.set("displayname", "DateStart")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "date_start")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"DEFAULT_CURRENT\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "datetime")
.set("uid", "3be2b157-73a0-4bd7-aeb3-a7404ae1ae7e")
.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(
"e4f8908d-735c-4d1c-8c69-f6a2a200ba98",
_val.init()
.set("colspan", 0)
.set("displayname", "Description")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "description")
.set("notnull", false)
.set("primarykey", false)
.set("properties", "{}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "textarea")
.set("uid", "306716d1-7702-4b5e-b5eb-929092007097")
.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(
"e4f8908d-735c-4d1c-8c69-f6a2a200ba98",
_val.init()
.set("colspan", 0)
.set("displayname", "Title")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "title")
.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", "92fd9e5a-cdfd-49e2-be20-7791a4380b4a")
.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)
)

+ 147
- 0
server/setup/_schema-form-2-reminder.js View File

@ -0,0 +1,147 @@
/**
*
* 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", "Reminder")
.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", "reminder")
.set("report", false)
.set("show_id", true)
.set("uid", "2e4aee20-6bf5-4c95-adee-346ea7b5969f")
)
_form.createComponentIfNotExists(
"2e4aee20-6bf5-4c95-adee-346ea7b5969f",
_val.init()
.set("colspan", 0)
.set("displayname", "Date")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "date")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"DEFAULT_CURRENT\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "date")
.set("uid", "329881d1-0d34-41ee-a7ce-f04fad9975c3")
.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(
"2e4aee20-6bf5-4c95-adee-346ea7b5969f",
_val.init()
.set("colspan", 0)
.set("displayname", "Time")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "time")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"DEFAULT_CURRENT\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "time")
.set("uid", "7e3f6cf8-2088-453d-8eed-14f3a18f7c87")
.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(
"2e4aee20-6bf5-4c95-adee-346ea7b5969f",
_val.init()
.set("colspan", 0)
.set("displayname", "Title")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "title")
.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", "e94f7c5e-f88a-4117-9d0f-5b05918ac8ea")
.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(
"2e4aee20-6bf5-4c95-adee-346ea7b5969f",
_val.init()
.set("colspan", 0)
.set("displayname", "User")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "user_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\":\"user:username\"},\"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", "34e681d5-adad-40d7-9971-81fc0eab37c3")
.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", 4)
)

+ 57
- 0
server/setup/_schema-form-3-role.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", "Role")
.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", "role")
.set("report", false)
.set("show_id", true)
.set("uid", "1fe5b8fa-13f7-49c1-ab6e-8f3cfa6c320a")
)
_form.createComponentIfNotExists(
"1fe5b8fa-13f7-49c1-ab6e-8f3cfa6c320a",
_val.init()
.set("colspan", 0)
.set("displayname", "Name")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "name")
.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", "6d72828c-3b46-4b7c-a52d-c72fbfe30731")
.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)
)

+ 207
- 0
server/setup/_schema-form-4-task.js View File

@ -0,0 +1,207 @@
/**
*
* 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", "Task")
.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", "task")
.set("report", false)
.set("show_id", true)
.set("uid", "f01fd874-ec8b-4350-ac26-ab4f2697b56f")
)
_form.createComponentIfNotExists(
"f01fd874-ec8b-4350-ac26-ab4f2697b56f",
_val.init()
.set("colspan", 0)
.set("displayname", "Date")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "date")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"DEFAULT_CURRENT\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "date")
.set("uid", "6518d528-301e-465f-92f2-a7ab8411ce7e")
.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", 4)
)
_form.createComponentIfNotExists(
"f01fd874-ec8b-4350-ac26-ab4f2697b56f",
_val.init()
.set("colspan", 0)
.set("displayname", "Description")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "description")
.set("notnull", false)
.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", "e30dd92d-2024-4e6a-8bc3-892712339e0d")
.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(
"f01fd874-ec8b-4350-ac26-ab4f2697b56f",
_val.init()
.set("colspan", 0)
.set("displayname", "IsCompleted")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "is_completed")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"DEFAULT\":{\"default\":\"true\",\"type\":\"BOOLEAN\",\"value\":\"true\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "checkbox")
.set("uid", "774a5fea-dfed-4c66-a12f-5fb0b16ff1bd")
.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(
"f01fd874-ec8b-4350-ac26-ab4f2697b56f",
_val.init()
.set("colspan", 0)
.set("displayname", "List")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "list_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\":\"task_list:title,user_id\"},\"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", "71795de9-0d9e-4fb9-b777-f2b8e0a2199f")
.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(
"f01fd874-ec8b-4350-ac26-ab4f2697b56f",
_val.init()
.set("colspan", 0)
.set("displayname", "Time")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "time")
.set("notnull", true)
.set("primarykey", false)
.set("properties", "{\"DEFAULT_CURRENT\":{\"default\":\"false\",\"type\":\"BOOLEAN\",\"value\":\"false\"}}")
.set("rowspan", 0)
.set("tdheight", 0)
.set("tdwidth", 0)
.set("type", "time")
.set("uid", "46dc28b5-d65a-484a-b297-b105c78e60ac")
.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(
"f01fd874-ec8b-4350-ac26-ab4f2697b56f",
_val.init()
.set("colspan", 0)
.set("displayname", "Title")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "title")
.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", "29b71c9e-1df9-45d9-8d25-9142677078bf")
.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)
)

+ 87
- 0
server/setup/_schema-form-5-task_list.js View File

@ -0,0 +1,87 @@
/**
*
* 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", "TaskList")
.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", "task_list")
.set("report", false)
.set("show_id", true)
.set("uid", "5325616a-1a01-4f05-b3c8-3da43d2ad102")
)
_form.createComponentIfNotExists(
"5325616a-1a01-4f05-b3c8-3da43d2ad102",
_val.init()
.set("colspan", 0)
.set("displayname", "Title")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "title")
.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", "3be02f32-700f-4b20-9ed3-deec240dc220")
.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(
"5325616a-1a01-4f05-b3c8-3da43d2ad102",
_val.init()
.set("colspan", 0)
.set("displayname", "User")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "user_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\":\"user:username,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", "dd0826c0-58a9-4b2a-8758-66cd25080559")
.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)
)

+ 147
- 0
server/setup/_schema-form-6-user.js View File

@ -0,0 +1,147 @@
/**
*
* 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", "User")
.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", "user")
.set("report", false)
.set("show_id", true)
.set("uid", "e5ec80ac-841c-416d-b73b-dc3ab56dad69")
)
_form.createComponentIfNotExists(
"e5ec80ac-841c-416d-b73b-dc3ab56dad69",
_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", "{\"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", "9c46c2a4-b09e-4fe4-bb65-c1ad27452372")
.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(
"e5ec80ac-841c-416d-b73b-dc3ab56dad69",
_val.init()
.set("colspan", 0)
.set("displayname", "Password")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "password")
.set("notnull", false)
.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", "c980e7fa-8435-441c-92b4-b6f3145b54ee")
.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", 4)
)
_form.createComponentIfNotExists(
"e5ec80ac-841c-416d-b73b-dc3ab56dad69",
_val.init()
.set("colspan", 0)
.set("displayname", "Role")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "role_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\":\"role:name\"},\"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", "6fc66e68-2b15-42be-96e5-46730bd2d7b0")
.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(
"e5ec80ac-841c-416d-b73b-dc3ab56dad69",
_val.init()
.set("colspan", 0)
.set("displayname", "Username")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "username")
.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", "cfc5b22b-a04f-4545-84ce-f2c54500d877")
.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)
)

+ 88
- 0
server/setup/_schema-form-7-user_event.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", "UserEvent")
.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", "user_event")
.set("parent_uid", "e5ec80ac-841c-416d-b73b-dc3ab56dad69")
.set("report", false)
.set("show_id", true)
.set("uid", "7f752ee9-6fb5-4b9e-9d10-6bd38dac7118")
)
_form.createComponentIfNotExists(
"7f752ee9-6fb5-4b9e-9d10-6bd38dac7118",
_val.init()
.set("colspan", 0)
.set("displayname", "Event")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "event_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\":\"event:title\"},\"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", "9fcbf344-5be8-4dc1-bc1f-e5e472b92110")
.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(
"7f752ee9-6fb5-4b9e-9d10-6bd38dac7118",
_val.init()
.set("colspan", 0)
.set("displayname", "User")
.set("firebase", "")
.set("group_id", 0)
.set("height", 0)
.set("max", 0)
.set("min", 0)
.set("name", "user_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\":\"user:username\"},\"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", "21592dcc-7e74-4e6d-a2be-347d5155d82b")
.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;

+ 78
- 0
ui/src/components/TableUsers/index.jsx View File

@ -0,0 +1,78 @@
import React, { useState, useEffect } from "react";
import Table from 'antd/lib/table';
import Button from 'antd/lib/button';
//import Tag from 'antd/lib/tag';
const TableUsers = ({onView}) => {
const [users, setUsers] = useState([]);
const [loading, setLoading] = useState(false);
const [ userEvents, setUserEvents ] = useState(null);
useEffect(() => {
setLoading(true);
const fail = ()=> {
this.setState({ loading: false });
notification["error"]({
message: 'Tabela Pessoas',
description: 'Data loading error...',
style: {
marginTop: 100,
}
});
};
netuno.service({
url: '/services/users',
method: 'GET',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
success: (response)=> {
//console.log(response);
if (response.json) {
setUsers(response.json);
setLoading(false);
} else {
fail();
}
},
fail: ()=> {
fail();
}
});
}, []);
const columns = [
{
title: "Username",
dataIndex: "username"
},
{
title: "Email",
dataIndex: "email"
},
{
title: "Role",
dataIndex: "role"
},
{
title: "Calendar",
render: (text, record, index) => (
<div>
{<Button onClick={ () => {setUserEvents(record); onView(record)}}>View</Button>}
</div>
)
}
];
return <>
<Table dataSource={users} { ...{ columns, loading } } />
</>
}
export default TableUsers;

+ 85
- 0
ui/src/components/UserCalendar/index.jsx View File

@ -0,0 +1,85 @@
import React, { useState, useEffect } from "react";
import Calendar from 'antd/lib/calendar';
import Button from 'antd/lib/button';
import PropTypes from "prop-types";
import Badge from 'antd/lib/badge';
const UserCalendar = ({ user, closeCalendar }) => {
const [loading, setLoading] = useState(false);
const [data, setData] = useState([]);
const onPanelChange = (value, mode) => {
console.log(value.format('YYYY-MM-DD'), mode);
};
//console.log(JSON.stringify(user));
useEffect(() => {
setLoading(true);
const fail = () => {
setLoading(false);
notification["error"]({
message: 'Lista de Publicações',
description: 'Houve uma falha ao carregar a lista das publicações...',
style: {
marginTop: 100,
}
});
};
netuno.service({
url: '/services/users/events',
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
uid: user.uid
}),
success: (response) => {
if (response.json) {
console.log(response.json);
setData(response.json);
setLoading(false);
} else {
fail();
}
},
fail: () => {
fail();
}
});
}, []);
const dateCellRender = (value) => { //moment
console.log("datecellrender", value.format("YYYY MM DD"));
if (data.length > 0) {
for (const item of data) {
if (item.date_start.indexOf(value.format("YYYY-MM-DD")) == 0) {
return (
<ul className="events">
<li key={item.title}>
<Badge status="success" text={item.title} />
</li>
</ul>
)
}
}
}
}
return <>
<Calendar dateCellRender={dateCellRender} onPanelChange={onPanelChange} />
<Button type="primary" onClick={() => closeCalendar()}>Close Calendar</Button>
</>;
};
UserCalendar.propTypes = {
user: PropTypes.object.isRequired,
closeCalendar: PropTypes.func.isRequired
};
export default UserCalendar;

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

@ -0,0 +1,90 @@
import React, { Component } from "react";
import MyButton from "../../components/MyButton/index.jsx";
import Spin from 'antd/lib/spin';
import notification from 'antd/lib/notification';
import "./index.less";
import TableUsers from "../../components/TableUsers/index.jsx";
import UserCalendar from "../../components/UserCalendar/index.jsx";
export default class DashboardContainer extends Component {
constructor(props) {
super(props);
this.state = {
counter: 0,
title: 'Bom Dia!',
loading: false,
user: null
};
this.button = React.createRef();
this.click = this.click.bind(this);
this.openCalendar = this.openCalendar.bind(this);
this.closeCalendar = this.closeCalendar.bind(this);
}
componentWillMount() {
console.log("will mount")
}
componentDidMount() {
console.log("did mount")
}
componentWillUpdate(prevProps, prevState, snapshot) {
console.log("will update");
}
componentDidUpdate(prevProps, prevState, snapshot) {
console.log("update");
$(this.button.current).fadeOut(250).fadeIn(250);
}
click() {
this.setState({ counter: this.state.counter + 1 });
}
openCalendar(user) {
this.setState({ user });
}
closeCalendar() {
this.setState({user: null});
}
render() {
console.log("render");
const { counter, title, loading, user } = this.state;
if (loading) {
return <Spin/>;
}
if (user) {
return <>
<UserCalendar
user={user}
closeCalendar={() => this.closeCalendar()}>
</UserCalendar>
</>;
}
return (
<div className="my-dashboard">
<h1>Table Users</h1>
<TableUsers onView={ this.openCalendar } />
<h1>Table...</h1>
<div className="my-dashboard__button">
<MyButton
mainRef={ this.button }
title={ title }
text={ `ReactJS ⚡ Ant.Design 👉 Click me! ${ counter }` }
click={ this.click }
/>
</div>
</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