Skip to content
Extraits de code Groupes Projets
Valider 4cf2e895 rédigé par Juliana's avatar Juliana
Parcourir les fichiers

[UPD]Clean code

parent 7a2033c3
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -10,8 +10,8 @@ OACC - Visualisation des courbes
Description
===========
Ce module hérite de module *oacc* et rajoute la fonctionnalité de visualisation des courbes de charges sur le BackEnd de Odoo.
Une nouvelle vue est implémentée et est accessible à partir de la page d'une opération.
Ce module hérite de module *oacc* et rajoute toutes les fonctions de visualisation des courbes et des champs calculés
affichés sur le portail.
Exemple
=======
......@@ -22,7 +22,7 @@ Credits
=======
Le développement de ce module a été financé par / The development of this module has been financially supported by:
- CLIENT (https://website-client)
- ENERCOOP (https://website-client)
Contributors
------------
......
......@@ -7,9 +7,8 @@
"license": "AGPL-3",
"depends": ["oacc"],
"data": [
"security/ir.model.access.csv",
# "security/ir.model.access.csv",
# datas
"templates/acc_operation_overview_cdc.xml",
# views
"views/acc_operation_views.xml",
# views menu
......@@ -21,7 +20,6 @@
"web.assets_frontend": [],
"web.assets_tests": [],
"web.assets_backend": [
"oacc_overview_cdc/static/src/js/operation_graph.js",
],
"web.assets_qweb": [],
},
......
......@@ -15,82 +15,12 @@ DEFAULT_MONTH_RANGE = 3
class AccOperation(models.Model):
_inherit = "acc.operation"
def prepare_values(self):
last_record = self.get_the_last_day()
date_day_start, date_day_end = self.get_last_day("day", last_record)
last_day = date_day_start.strftime("%d %B %Y")
date_day_start = date_day_start.strftime("%Y-%m-%d")
date_day_end = date_day_end.strftime("%Y-%m-%d")
date_week_start, date_week_end = self.get_last_day("week", last_record)
last_week = (
date_week_start.strftime("%d %B %Y")
+ "-"
+ date_week_end.strftime("%d %B %Y")
)
date_week_start = date_week_start.strftime("%Y-%m-%d")
date_week_end = date_week_end.strftime("%Y-%m-%d")
date_month_start, date_month_end = self.get_last_day("month", last_record)
last_month = (
date_month_start.strftime("%d %B %Y")
+ "-"
+ date_month_end.strftime("%d %B %Y")
)
date_month_start = date_month_start.strftime("%Y-%m-%d")
date_month_end = date_month_end.strftime("%Y-%m-%d")
date_semestre_start, date_semestre_end = self.get_last_day(
"semestre", last_record
)
last_semester = (
date_semestre_start.strftime("%d %B %Y")
+ "-"
+ date_semestre_end.strftime("%d %B %Y")
)
date_semestre_start = date_semestre_start.strftime("%Y-%m-%d")
date_semestre_end = date_semestre_end.strftime("%Y-%m-%d")
date_year_start, date_year_end = self.get_last_day("year", last_record)
last_year = (
date_year_start.strftime("%d %B %Y")
+ "- "
+ date_year_end.strftime("%d %B %Y")
)
date_year_start = date_year_start.strftime("%Y-%m-%d")
date_year_end = date_year_end.strftime("%Y-%m-%d")
data_values = {
"last_day": last_day,
"last_week": last_week,
"last_month": last_month,
"last_semestre": last_semester,
"last_year": last_year,
# 'range_date': range_date,
"date_day_start": date_day_start,
"date_day_end": date_day_end,
"date_week_start": date_week_start,
"date_week_end": date_week_end,
"date_month_start": date_month_start,
"date_month_end": date_month_end,
"date_semestre_start": date_semestre_start,
"date_semestre_end": date_semestre_end,
"date_year_start": date_year_start,
"date_year_end": date_year_end,
}
return data_values
def get_overview(self):
return self.prepare_values()
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
def action_view_courbes(self):
"""
Action qui ouvre la vue Qweb
Action qui ouvre le portail sur l'opération
:return: Vue Qweb
"""
self.ensure_one()
......@@ -104,27 +34,6 @@ class AccOperation(models.Model):
# ------------------------------------------------------
# Business methods
# ------------------------------------------------------
def get_auto_power_tot(self):
"""
Fonction retournant l autoconsommation totale du dernier mois.
:return: la somme de l'autoconso totale de tous les consommateurs
"""
# Récupère les dates du dernier mois disponible
last_record = self.get_the_last_day()
date_start, date_end = self.get_last_day("month", last_record)
# Conso Totale
autoconso_ids = self.env["acc.enedis.cdc"].search(
[
("acc_operation_id", "=", self.id),
("comp_data_type", "=", "autocons"),
("date_slot", ">=", date_start),
("date_slot", "<", date_end),
]
)
autoconso_tot = (sum(autoconso_ids.mapped("power")) / 1000) / 2
return autoconso_tot
def get_power_tot(self):
"""
Fonction retournant la consommation totale, l'autoconsommation totale
......@@ -169,18 +78,6 @@ class AccOperation(models.Model):
raw_data = self.env.cr.fetchall()
return raw_data[0][1], raw_data[0][2], raw_data[0][3], date_start
def get_power_install_tot(self):
"""
Fonction retournant la puissance totale installée.
:return: la somme de toutes les puissances d'injection
"""
puiss_tot = 0.0
for counter in self.acc_injection_ids:
puiss_tot += counter.acc_counter_id.power_instal
return puiss_tot
def get_the_last_day(self):
"""
Fonction retournant la date du dernier enregistrement
......@@ -345,13 +242,6 @@ class AccOperation(models.Model):
self.env.cr.execute(query, query_params)
raw_data = self.env.cr.fetchall()
for row in raw_data:
# if slot_type == "month" or slot_type == "year":
# data_autocons.append(int(row[1]))
# data_prod.append(int(row[2]))
# data_allocons.append(int(row[3]))
# data_cons.append(int(row[4]))
# label.append(row[0])
# else:
data_autocons.append({"x": row[0], "y": round(row[1], 2)})
data_prod.append({"x": row[0], "y": round(row[2], 2)})
data_allocons.append({"x": row[0], "y": round(row[3], 2)})
......@@ -474,15 +364,10 @@ class AccOperation(models.Model):
self.env.cr.execute(query, query_params)
raw_data = self.env.cr.fetchall()
for row in raw_data:
# if slot_type == "month" or slot_type == "year":
# data_autocons.append(int(row[1]))
# data_surplus.append(int(row[2]))
# label.append(row[0])
if slot_type == "day":
data_autocons_histo.append(round(row[1], 2))
data_surplus_histo.append(round(row[2], 2))
label_histo.append(row[0])
# else:
data_autocons.append({"x": row[0], "y": round(row[1], 2)})
data_surplus.append({"x": row[0], "y": round(row[2], 2)})
label.append(row[0])
......
odoo.define("oacc_overview_cdc.operation_overview_cdc", function (require) {
"use strict";
var qweb = require("web.qweb");
var viewRegistry = require("web.view_registry");
let chartValues = null;
const Renderer = qweb.Renderer.extend({
events: _.extend({}, qweb.Renderer.prototype.events, {
"click .o_acc_button": "_onChartClicked",
}),
_render: async function () {
var self = this;
var chart_line_conso;
var chart_line_prod;
var chart_donuts_conso;
var chart_donuts_prod;
var chart_histo_conso;
var chart_histo_prod;
if (chart_line_conso !== undefined) {
chart_line_conso.destroy();
}
if (chart_line_prod !== undefined) {
chart_line_prod.destroy();
}
if (chart_donuts_conso !== undefined) {
chart_donuts_conso.destroy();
}
if (chart_donuts_prod !== undefined) {
chart_donuts_prod.destroy();
}
if (chart_histo_conso !== undefined) {
chart_histo_conso.destroy();
}
if (chart_histo_prod !== undefined) {
chart_histo_prod.destroy();
}
await this._super(...arguments);
var result = self.state.chartValues;
var line_conso = self.$el.find("#line_chart_conso");
var donuts_conso = self.$el.find("#donuts_chart_conso");
var histo_conso = self.$el.find("#histo_chart_conso");
var line_prod = self.$el.find("#line_chart_prod");
var donuts_prod = self.$el.find("#donuts_chart_prod");
var histo_prod = self.$el.find("#histo_chart_prod");
if (result.scale !== "week" && result.scale !== "day") {
line_conso.hide();
line_prod.hide();
}
if (result.scale === "week" || result.scale === "day") {
chart_line_conso = new Chart(
line_conso,
Object.assign({}, result.line_chart_conso_line)
);
}
chart_donuts_conso = new Chart(
donuts_conso,
Object.assign({}, result.donuts_chart_conso)
);
chart_histo_conso = new Chart(
histo_conso,
Object.assign({}, result.histo_chart_conso)
);
if (result.scale === "week" || result.scale === "day") {
chart_line_prod = new Chart(
line_prod,
Object.assign({}, result.line_chart_prod_line)
);
}
chart_donuts_prod = new Chart(
donuts_prod,
Object.assign({}, result.donuts_chart_prod)
);
chart_histo_prod = new Chart(
histo_prod,
Object.assign({}, result.histo_chart_prod)
);
this.$el.find(".o_acc_button").removeClass("active");
var $but = null;
if (this.state.scale) {
$but = this.$el.find(
'.o_acc_button[data-mode="' + this.state.scale + '"]'
);
} else {
$but = this.$el.find('.o_acc_button[data-mode="month"]');
}
$but.addClass("active");
},
_onChartClicked: function (e) {
e.preventDefault();
var $action = $(e.currentTarget);
$action.addClass("active");
var context = JSON.parse($action.attr("context").replace(/'/g, '"'));
var first_day = context.first_day;
var last_day = context.last_day;
this.trigger_up("chart_open_action", {
action_name: $action.attr("name"),
action_context: $action.attr("context"),
action_first_day: first_day,
action_last_day: last_day,
});
},
});
const Model = qweb.Model.extend({
/**
* @override
*/
init: function () {
this.chartValues = {};
this._super.apply(this, arguments);
},
/**
* @override
*/
__get: function (localID) {
var result = this._super.apply(this, arguments);
if (_.isObject(result)) {
result.chartValues = this.chartValues[localID];
}
return result;
},
/**
* @override
* @returns {Promise}
*/
__load: function (params) {
if ("scales" in params) {
this.scales = params.scales;
this.first_day = params.first_day;
this.last_day = params.last_day;
}
return this._loadChart(this._super.apply(this, arguments), params);
},
/**
* @override
* @returns {Promise}
*/
__reload: function (handle, params) {
if ("scales" in params) {
this.scales = params.scales;
this.first_day = params.first_day;
this.last_day = params.last_day;
}
return this._loadChart(this._super.apply(this, arguments), params);
},
/**
* @private
* @param {Promise} super_def a promise that resolves with a dataPoint id
* @returns {Promise -> string} resolves to the dataPoint id
*/
_loadChart: function (super_def) {
var self = this;
var acc_counter_id =
self._state.context.search_default_acc_delivery_operation_ids;
var domain = self._state.domain;
var chart_def = this._rpc({
model: "acc.operation",
method: "graph_view_global",
args: [
this,
this.scales,
this.first_day,
this.last_day,
"",
acc_counter_id,
"",
],
// Method: "graph_view",
// args: [
// domain,
// this.scales,
// this.first_day,
// this.last_day,
// acc_counter_id,
// ],
context: this._state.context,
});
return Promise.all([super_def, chart_def]).then(function (results) {
var id = results[0];
chartValues = results[1];
self.chartValues[id] = chartValues;
return id;
});
},
setScale: function (scale) {
this.scales = scale;
},
setDate: function (first_day, last_day) {
this.first_day = first_day;
this.last_day = last_day;
},
});
const Controller = qweb.Controller.extend({
custom_events: _.extend({}, qweb.Controller.prototype.custom_events, {
chart_open_action: "_onChartClicked",
cal_open_action: "_onCalClicked",
}),
init: function (parent, model, renderer, params) {
this._super.apply(this, arguments);
this.scales = params.scales;
this.first_day = params.first_day;
this.last_day = params.last_day;
},
/**
* @private
* @param {OdooEvent} e
*/
_onChartClicked: function (e) {
this.model.setScale(e.data.action_name);
this.model.setDate(e.data.action_first_day, e.data.action_last_day);
var state = this.model.get();
state.scale = e.data.action_name;
state.first_day = e.data.action_first_day;
state.last_day = e.data.action_last_day;
this.reload();
},
/**
* @private
* @param {OdooEvent} e
*/
_onCalClicked: function (e) {
var state = this.model.get();
state.date_start = e.data.date_start;
state.date_end = e.data.date_end;
this.reload();
},
});
var OperationGraph = qweb.View.extend({
withSearchBar: true,
searchMenuTypes: ["filter", "favorite"],
jsLibs: [
"/web/static/lib/Chart/Chart.js",
"/oacc_overview_cdc/static/src/lib/chartjs-plugin-datalabels/chartjs-plugin-datalabels.min.js",
"/web/static/lib/moment/moment.js",
],
config: _.extend({}, qweb.View.prototype.config, {
Model: Model,
Renderer: Renderer,
Controller: Controller,
}),
init: function () {
this._super.apply(this, arguments);
this.controllerParams.scales = "month";
this.loadParams.scales = "month";
this.controllerParams.first_day = "";
this.controllerParams.last_day = "";
this.loadParams.first_day = "";
this.loadParams.last_day = "";
},
});
viewRegistry.add("operation_overview_cdc", OperationGraph);
});
......@@ -17,10 +17,4 @@
</field>
</record>
<record id="acc_operation_action_client_courbes" model="ir.actions.act_window">
<field name="name">Voir les courbes</field>
<field name="res_model">acc.operation</field>
<field name="view_mode">qweb</field>
</record>
</odoo>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter