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

Change button + function calcul date + Value En kW

parent 47f67f37
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -32,31 +32,45 @@ class EnercoopOperation(models.Model):
# ------------------------------------------------------
# CRUD methods (ORM overrides)
# ------------------------------------------------------
@api.model
def graph_view(self, domain, scale):
# Création des variables
# date_start = datetime.strptime('2021-03-09T00:00:00', "%Y-%m-%dT%H:%M:%S")
operation_ids = self.env['enercoop.operation'].search(domain)
def get_last_day(self, scale):
# Get last date slot recorded
last_record = self.env['enercoop.enedis.cdc'].search([
('enercoop_operation_id', '=', operation_ids.ids),
('enercoop_operation_id', '=', self.ids),
], limit=1, order='date_slot DESC')
date_end = last_record.date_slot
if scale == 'day':
date_build = str(last_record.date_slot.year) + '-' + str(last_record.date_slot.month) + '-' + str(last_record.date_slot.day) + 'T00:00:00'
date_build = str(last_record.date_slot.year) + '-' + str(last_record.date_slot.month) + '-' + str(
last_record.date_slot.day) + 'T00:00:00'
date_start = datetime.strptime(date_build, "%Y-%m-%dT%H:%M:%S")
date_end = date_start + timedelta(days=1)
elif scale == 'week':
date_start = date_end + timedelta(weeks=-1)
elif scale == 'semestre':
date_start = date_end - relativedelta(months=1)
date_start = date_end - relativedelta(months=6)
elif scale == 'year':
date_start = date_end - relativedelta(years=1)
else:
date_start = date_end - relativedelta(months=1)
return date_start, date_end
@api.model
def graph_view(self, domain, scale):
# Création des variables
# date_start = datetime.strptime('2021-03-09T00:00:00', "%Y-%m-%dT%H:%M:%S")
result = {}
operation_ids = self.env['enercoop.operation'].search(domain)
# Get last date slot recorded
if operation_ids:
date_start, date_end = operation_ids.get_last_day(scale)
# last_record = self.env['enercoop.enedis.cdc'].search([
# ('enercoop_operation_id', '=', operation_ids.ids),
# ], limit=1, order='date_slot DESC')
# date_end = last_record.date_slot
chart_data = operation_ids.get_cdc(scale, date_start, date_end)
# Création des graphes
......@@ -213,10 +227,10 @@ class EnercoopOperation(models.Model):
# Data by year / months for type = year
if type == 'day':
type_date = 'date_slot:hour'
elif type == 'week' or type == 'month':
type_date = 'date_slot:day'
elif type == 'year':
type_date = 'date_slot:month'
else:
type_date = 'date_slot:day'
cdc_ids = self.env['enercoop.enedis.cdc'].sudo().read_group(
[('enercoop_operation_id', '=', self.ids),
......@@ -237,8 +251,10 @@ class EnercoopOperation(models.Model):
label_line_cons.append(value_hour)
for cdc in cdc_ids:
value_power = cdc['power']
if type == 'day':
value_power = round((cdc['power'] / 2), 2)
else:
value_power = round((cdc['power'] / 1000 / 2), 2)
if cdc['comp_data_type'] == 'autocons':
data_autocons.append(value_power)
......@@ -269,19 +285,19 @@ class EnercoopOperation(models.Model):
power_tot = power_autocons + power_cons
if power_tot > 0:
percent_autocons = power_autocons * 100 / power_tot
percent_cons = power_cons * 100 / power_tot
percent_autocons = round(power_autocons * 100 / power_tot, 2)
percent_cons = round(power_cons * 100 / power_tot, 2)
else:
percent_autocons = power_autocons * 100
percent_cons = power_cons * 100
percent_autocons = round(power_autocons * 100, 2)
percent_cons = round(power_cons * 100, 2)
power_prod_tot = power_autocons + power_surplus
if power_prod_tot > 0:
percent_autocons_prod = power_autocons * 100 / power_prod_tot
percent_surplus_prod = power_surplus * 100 / power_prod_tot
percent_autocons_prod = round(power_autocons * 100 / power_prod_tot, 2)
percent_surplus_prod = round(power_surplus * 100 / power_prod_tot, 2)
else:
percent_autocons_prod = power_autocons * 100
percent_surplus_prod = power_surplus * 100
percent_autocons_prod = round(power_autocons * 100, 2)
percent_surplus_prod = round(power_surplus * 100, 2)
cdc_jour = {
'autocons': data_autocons,
......
......@@ -12,31 +12,37 @@ class EnercoopOperation(models.Model):
def _qweb_prepare_qcontext(self, view_id, domain):
values = super()._qweb_prepare_qcontext(view_id, domain)
operations = self.search(domain)
values.update(operations._plan_prepare_values())
return values
def _plan_prepare_values(self):
values = {}
date_start, date_end = self.get_last_day('day')
last_day = date_start.strftime("%d %B %Y")
values = {
'operations': self,
date_start, date_end = self.get_last_day('week')
last_week = date_start.strftime("%d %B %Y") + '-' + date_end.strftime("%d %B %Y")
date_start, date_end = self.get_last_day('month')
last_month = date_start.strftime("%d %B %Y") + '-' + date_end.strftime("%d %B %Y")
date_start, date_end = self.get_last_day('semestre')
last_semester = date_start.strftime("%d %B %Y") + '-' + date_end.strftime("%d %B %Y")
date_start, date_end = self.get_last_day('year')
last_year = date_start.strftime("%d %B %Y") + '-' + date_end.strftime("%d %B %Y")
data_values = {
'last_day': last_day,
'last_week': last_week,
'last_month': last_month,
'last_semestre': last_semester,
'last_year': last_year
}
#
# Hours, Rates and Profitability
#
# dashboard_values = {
# 'time': dict.fromkeys(billable_types + ['total'], 0.0),
# 'rates': dict.fromkeys(billable_types + ['total'], 0.0),
# 'profit': {
# 'invoiced': 0.0,
# 'to_invoice': 0.0,
# 'cost': 0.0,
# 'total': 0.0,
# }
# }
date_start = datetime.strptime('2021-03-09T17:00:00', "%Y-%m-%dT%H:%M:%S")
# conso_by_day = self.get_cdc_conso_day(date_start)
# values['conso_by_day'] = conso_by_day
values['data_values'] = data_values
return values
def plan_prepare_values(self):
......
......@@ -12,31 +12,6 @@ odoo.define('enercoop_cdc.operation_graph', function (require) {
'click .o_enercoop_button': '_onChartClicked',
}),
init: function (parent, state, params) {
this._super.apply(this, arguments);
this.isInDOM = false;
},
/**
* Chart.js does not need the canvas to be in dom in order
* to be able to work well. We could avoid the calls to on_attach_callback
* and on_detach_callback.
*
* @override
*/
on_attach_callback: function () {
this._super.apply(this, arguments);
this.isInDOM = true;
this._render();
},
/**
* @override
*/
on_detach_callback: function () {
this._super.apply(this, arguments);
this.isInDOM = false;
},
_render: async function () {
var self = this;
await this._super(...arguments);
......@@ -44,7 +19,7 @@ odoo.define('enercoop_cdc.operation_graph', function (require) {
var options = { options: {
scales: {
y: {
beginAtZero: true
beginAtZero: true,
}
}
}};
......@@ -108,7 +83,6 @@ odoo.define('enercoop_cdc.operation_graph', function (require) {
_onChartClicked: function (e) {
e.preventDefault();
var $action = $(e.currentTarget);
// var $context = this.state.context.append($action.attr('context'))
this.trigger_up('chart_open_action', {
action_name: $action.attr('name'),
action_context: $action.attr('context'),
......@@ -136,6 +110,7 @@ odoo.define('enercoop_cdc.operation_graph', function (require) {
}
return result;
},
/**
* @override
* @returns {Promise}
......@@ -196,6 +171,7 @@ odoo.define('enercoop_cdc.operation_graph', function (require) {
this._super.apply(this, arguments);
this.scales = params.scales;
},
/**
* @private
* @param {OdooEvent} e
......@@ -203,27 +179,9 @@ odoo.define('enercoop_cdc.operation_graph', function (require) {
_onChartClicked: function (e) {
this.model.setScale(e.data.action_name);
this.reload();
// return this.do_action(
// e.data.action_name,
//// {additional_context: JSON.parse(e.data.action_context)});
// {context: this.renderer.state.context,
// additional_context: JSON.parse(e.data.action_context)});
},
});
// const Controller = qweb.Controller.extend({
// custom_events: _.extend({}, qweb.Controller.prototype.custom_events, {
// changeFilter: '_onChangeFilter',
// }),
//
// _onChangeFilter: function (event) {
// var self = this;
//// if (this.model.changeFilter(event.data) && !event.data.no_reload) {
//// this.reload();
//// }
// },
// });
var OperationGraph = qweb.View.extend({
withSearchBar: true,
searchMenuTypes: ['filter', 'favorite'],
......
......@@ -19,20 +19,20 @@
<div class="o_form_sheet_bg">
<div class="o_form_sheet o_timesheet_plan_content">
<div class="o_timesheet_plan_sale_timesheet">
<button name="day" class="btn btn-secondary o_enercoop_button" title="Dernier jour" aria-label="Dernier jour" data-mode="by_day" context='{"search_default_day": true}'>Dernière journée</button>
<button name="week" class="btn btn-secondary o_enercoop_button" title="7 derniers jours" aria-label="7 derniers jours" data-mode="by_week" context='{"search_default_week": true}'>7 derniers jours</button>
<button name="month" class="btn btn-secondary o_enercoop_button" title="Dernier mois" aria-label="Dernier mois" data-mode="by_month" context='{"search_default_month": true}'>Dernier mois</button>
<button name="semestre" class="btn btn-secondary o_enercoop_button" title="6 derniers mois" aria-label="6 derniers mois" data-mode="by_semestre" context='{"search_default_month": true}'>6 derniers mois</button>
<button name="year" class="btn btn-secondary o_enercoop_button" title="12 derniers mois" aria-label="12 derniers mois" data-mode="by_year" context='{"search_default_year": true}'>12 derniers mois</button>
<div class="o_timesheet_plan_sale_timesheet_dashboard">
<div class="o_title">
<div class="container text-center mt32 mb32">
<button name="day" class="btn btn-secondary o_enercoop_button" title="Dernier jour" aria-label="Dernier jour" ><strong>Dernière journée</strong><br/><t t-esc="data_values['last_day']"/></button>
<button name="week" class="btn btn-secondary o_enercoop_button" title="7 derniers jours" aria-label="7 derniers jours"><strong>7 derniers jours</strong><br/><t t-esc="data_values['last_week']"/></button>
<button name="month" class="btn btn-secondary o_enercoop_button" title="Dernier mois" aria-label="Dernier mois"><strong>Dernier mois</strong><br/><t t-esc="data_values['last_month']"/></button>
<button name="semestre" class="btn btn-secondary o_enercoop_button" title="6 derniers mois" aria-label="6 derniers mois"><strong>6 derniers mois</strong><br/><t t-esc="data_values['last_semestre']"/></button>
<button name="year" class="btn btn-secondary o_enercoop_button" title="12 derniers mois" aria-label="12 derniers mois"><strong>12 derniers mois</strong><br/><t t-esc="data_values['last_year']"/></button>
</div>
<div class="text-center o_title mt32">
<h2>Vues Consommateurs</h2>
</div>
<div>
<div class="container">
<h3>Vues consommateurs : Courbe de charge</h3>
<div class="row mt32 mb32">
<div class="row mb32">
<div class="col-md-6 col-12 p-5">
<canvas id="line_chart_conso" width="auto" height="200"></canvas>
</div>
......@@ -47,13 +47,12 @@
</div>
</div>
<div class="o_title">
<div class="text-center o_title mt32">
<h2>Vues Producteurs</h2>
</div>
<div>
<div class="container">
<h3>Vues Producteurs : Courbe de charge</h3>
<div class="row mt32 mb32">
<div class="row mb32">
<div class="col-md-6 col-12 p-5">
<canvas id="line_chart_prod" width="auto" height="200"></canvas>
</div>
......
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