You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

108 lines
3.0 KiB

  1. odoo.define('galicea_environment_checkup', function(require) {
  2. "use strict";
  3. var core = require('web.core');
  4. var form_common = require('web.form_common');
  5. var Widget = require('web.Widget');
  6. var session = require('web.session');
  7. var QWeb = core.qweb;
  8. var SystrayMenu = require('web.SystrayMenu');
  9. var Model = require('web.Model');
  10. var Users = new Model('res.users');
  11. var SystrayIcon = Widget.extend({
  12. tagName: 'li',
  13. events: {
  14. "click": "on_click",
  15. },
  16. start: function(){
  17. this.load(this.all_dashboards);
  18. return this._super();
  19. },
  20. load: function(dashboards){
  21. var self = this;
  22. var loading_done = new $.Deferred();
  23. Users.call('has_group', ['base.group_erp_manager']).then(function(is_admin) {
  24. if (is_admin) {
  25. session.rpc('/galicea_environment_checkup/data', {})
  26. .then(function (data) {
  27. var counts = { 'success': 0, 'warning': 0, 'fail': 0 };
  28. data.forEach(function (check) { ++counts[check.result]; });
  29. var result;
  30. if (counts['fail']) {
  31. result = 'fail';
  32. } else if (counts['warning']) {
  33. result = 'warning';
  34. } else {
  35. result = 'success';
  36. }
  37. self.replaceElement(QWeb.render('GaliceaEnvironmentCheckupIcon', {
  38. 'result': result,
  39. 'count': counts['warning'] + counts['fail']
  40. }));
  41. loading_done.resolve();
  42. });
  43. } else {
  44. loading_done.resolve();
  45. }
  46. });
  47. return loading_done;
  48. },
  49. on_click: function (event) {
  50. event.preventDefault();
  51. this.do_action('galicea_environment_checkup.dashboard_action', {clear_breadcrumbs: true});
  52. },
  53. });
  54. SystrayMenu.Items.push(SystrayIcon);
  55. var Dashboard = Widget.extend({
  56. start: function(){
  57. return this.load(this.all_dashboards);
  58. },
  59. load: function(dashboards) {
  60. var self = this;
  61. var loading_done = new $.Deferred();
  62. session.rpc('/galicea_environment_checkup/data', {})
  63. .then(function (data) {
  64. self.replaceElement(QWeb.render('GaliceaEnvironmentCheckupDashboard', {'data': data}));
  65. loading_done.resolve();
  66. });
  67. return loading_done;
  68. },
  69. });
  70. core.action_registry.add('galicea_environment_checkup.dashboard', Dashboard);
  71. var FormWidget = form_common.AbstractField.extend({
  72. init: function() {
  73. this._super.apply(this, arguments);
  74. this.set("value", "[]");
  75. },
  76. render_value: function() {
  77. var data = JSON.parse(this.get('value'));
  78. if (data.length == 0) {
  79. this.replaceElement('<div />');
  80. return;
  81. }
  82. this.replaceElement(QWeb.render('GaliceaEnvironmentCheckupFormWidget', {'data': data}));
  83. },
  84. });
  85. core.form_widget_registry.add('environment_checks', FormWidget);
  86. return {
  87. SystrayIcon: SystrayIcon,
  88. Dashboard: Dashboard,
  89. FormWidget: FormWidget
  90. };
  91. });