Antares Simulator
Power System Simulator
day.h
1 /*
2  * Copyright 2007-2025, RTE (https://www.rte-france.com)
3  * See AUTHORS.txt
4  * SPDX-License-Identifier: MPL-2.0
5  * This file is part of Antares-Simulator,
6  * Adequacy and Performance assessment for interconnected energy networks.
7  *
8  * Antares_Simulator is free software: you can redistribute it and/or modify
9  * it under the terms of the Mozilla Public Licence 2.0 as published by
10  * the Mozilla Foundation, either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * Antares_Simulator is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * Mozilla Public Licence 2.0 for more details.
17  *
18  * You should have received a copy of the Mozilla Public Licence 2.0
19  * along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
20  */
21 #ifndef __ANTARES_TOOLBOX_COMPONENTS_DATAGRID_FILTER_ALL_DAY_H__
22 #define __ANTARES_TOOLBOX_COMPONENTS_DATAGRID_FILTER_ALL_DAY_H__
23 
24 #include "../filter.h"
25 #include <antares/date/date.h>
26 
27 namespace Antares::Toolbox::Filter
28 {
29 class Day: public AFilterBase
30 {
31 public:
32  static const wxChar* Name()
33  {
34  return wxT("day");
35  }
36 
37  static const wxChar* Caption()
38  {
39  return wxT("Day of the month");
40  }
41 
42  static Date::Precision Precision()
43  {
44  return Date::daily;
45  }
46 
47 public:
48  Day(Input* parent):
49  AFilterBase(parent)
50  {
51  operators.addStdArithmetic();
52  }
53 
54  virtual ~Day()
55  {
56  }
57 
58  virtual Date::Precision precision() const
59  {
60  return Day::Precision();
61  }
62 
63  virtual bool checkOnRowsLabels() const
64  {
65  return true;
66  }
67 
68  virtual const wxChar* name() const
69  {
70  return Day::Name();
71  }
72 
73  virtual const wxChar* caption() const
74  {
75  return Day::Caption();
76  }
77 
78  virtual bool rowIsValid(int row) const
79  {
80  // TODO Do not use global study
81  auto studyptr = GetCurrentStudy();
82  if (!studyptr)
83  {
84  return false;
85  }
86  auto& study = *studyptr;
87  auto& calendar = study.calendar;
88 
89  switch (pDataGridPrecision)
90  {
91  case Date::hourly:
92  {
93  if (row < study.calendar.maxHoursInYear)
94  {
95  uint daymonth = calendar.hours[row].dayMonth + 1;
96  return currentOperator->compute((int)daymonth);
97  }
98  break;
99  }
100  case Date::daily:
101  {
102  if (row < study.calendar.maxDaysInYear)
103  {
104  uint daymonth = calendar.days[row].dayMonth + 1;
105  return currentOperator->compute((int)daymonth);
106  }
107  break;
108  }
109  default:
110  break;
111  }
112  return false;
113  }
114 
115 }; // class HourYear
116 
117 } // namespace Antares::Toolbox::Filter
118 
119 #endif // __ANTARES_TOOLBOX_COMPONENTS_DATAGRID_FILTER_ALL_DAY_H__
Abstract Filter.
Definition: filter.h:48
Operator::AOperator * currentOperator
The current selected operator for the filter.
Definition: filter.h:198
Date::Precision pDataGridPrecision
Precision.
Definition: filter.h:202
Operator::List operators
List of all possible operations for the filter.
Definition: filter.h:196
AFilterBase(Input *parent)
Default constructor.
Definition: filter.cpp:34
Definition: day.h:30
virtual const wxChar * name() const
Get the name of the filter.
Definition: day.h:68
virtual const wxChar * caption() const
Get the caption of the filter.
Definition: day.h:73
Definition: input.h:34