13 qRegisterMetaType<DBT_INVERTORS>();
15 connect(
this, SIGNAL(deleteInvertor(
int)), Static::db, SLOT(deleteInvertor(
int)), Qt::QueuedConnection);
19 QByteArray action = request.getParameter(
"action");
20 if(action.startsWith(
"add")) {
22 }
else if(action.startsWith(
"edit")) {
24 }
else if(action.startsWith(
"delete")) {
30 QList<DBT_INVERTORS> invertors = Static::db->
invertors();
31 write(QString(
"<h2>%1</h2>\n").arg(tr(
"Invertors")));
32 write(QString(
"<a href=\"/invertors?action=add\">%1</a>\n").arg(tr(
"Add an invertor")));
34 QString s0 (
"<tr class=\"line1st\"><th colspan=\"4\"></th><th colspan=\"6\">%1</th><th colspan=\"6\">%2</th><th colspan=\"6\">%3</th><th colspan=\"3\">%4</th></tr>");
35 s0 = s0.arg(tr(
"Now"), tr(
"Day"), tr(
"Total"), tr(
"Sensors"));
36 QString s (
"<tr class=\"line2nd\"><th></th>"
40 "<th class=\"group\">%4</th>"
46 "<th class=\"group\">%5</th>"
52 "<th class=\"group\">%5</th>"
58 "<th class=\"group\">T1 [°C]</th>"
59 "<th>T2 [°C]</th>"
60 "<th>Irr [W/m³]</th>"
62 s = s.arg(tr(
"Description"), tr(
"Line"), tr(
"Addr"), tr(
"Pwr [W]"), tr(
"Energy"), tr(
"Pwr max [W]"), tr(
"Hours"));
68 "<a href=\"/invertors?action=edit&id=%1\">%26</a> "
69 "<a href=\"/invertors?action=delete&id=%1\">%27</a>"
71 for(
int k = 2; k <= 25; k++)
72 s2.append(QString(
"<td>\%%1</td>").arg(k));
74 QList<DBT_INVERTORS>::const_iterator i;
75 for(i = invertors.constBegin(); i != invertors.constEnd(); ++i) {
82 .arg((l.now_power) ?
"✓" :
"")
83 .arg((l.now_ac_current) ?
"✓" :
"")
84 .arg((l.now_ac_voltage) ?
"✓" :
"")
85 .arg((l.now_ac_frequency) ?
"✓" :
"")
86 .arg((l.now_dc_current) ?
"✓" :
"")
87 .arg((l.now_dc_voltage) ?
"✓" :
"")
88 .arg((l.day_energy) ?
"✓" :
"")
89 .arg((l.day_power_maximum) ?
"✓" :
"")
90 .arg((l.day_ac_voltage_maximum) ?
"✓" :
"")
91 .arg((l.day_ac_voltage_minimum) ?
"✓" :
"")
92 .arg((l.day_dc_voltage_maximum) ?
"✓" :
"")
93 .arg((l.day_operating_hours) ?
"✓" :
"")
94 .arg((l.total_energy) ?
"✓" :
"")
95 .arg((l.total_power_maximum) ?
"✓" :
"")
96 .arg((l.total_ac_voltage_maximum) ?
"✓" :
"")
97 .arg((l.total_ac_voltage_minimum) ?
"✓" :
"")
98 .arg((l.total_dc_voltage_maximum) ?
"✓" :
"")
99 .arg((l.total_operating_hours) ?
"✓" :
"")
100 .arg((l.temperature_1) ?
"✓" :
"")
101 .arg((l.temperature_2) ?
"✓" :
"")
102 .arg((l.irradiance) ?
"✓" :
"")
103 .arg(tr(
"Edit"), tr(
"Delete")));
113 QString iii (
"<tr><td><label for=\"%2\">%1</label>: </td><td><input type=\"%3\" name=\"%2\" %4 /></td></tr>\n");
114 QByteArray gener = request.getParameter(
"generate");
115 int gen = (gener.isEmpty()) ? 0 : gener.toInt();
116 s.append(iii.arg(tr(
"Number of invertors"),
"generate",
"text", QString(
"value=\"%1\"").arg(gen)));
118 s.append(QString(
"<input type=\"hidden\" name=\"id\" value=\"%1\" />\n").arg(invertor.invertor));
119 QString i (
"<tr><td><label for=\"%2\">%1</label>: </td><td><input type=\"text\" name=\"%2\" value=\"%3\" /></td></tr>\n");
121 s.append(i.arg(tr(
"Description"),
"idescription").arg(invertor.description));
123 QList<DBT_LINES> lines = Static::db->
lines();
124 s.append(QString(
"<tr><td><label for=\"%2\">%1</label>: </td><td><select id=\"%2\" name=\"%2\">\n").arg(tr(
"Line"),
"line"));
125 QList<DBT_LINES>::const_iterator ii;
126 for(ii = lines.constBegin(); ii != lines.constEnd(); ++ii) {
128 s.append(QString(
"<option value=\"%1\" %4>%1 %2 %3</option>\n")
129 .arg(l.line).arg(l.device, l.description,
130 (l.line == invertor.line) ?
"selected=\"selected\"" :
""));
132 s.append(
"</select></td></tr>\n");
134 s.append(i.arg(tr(
"Address (sensors +1000)"),
"address").arg(invertor.address));
136 s.append(i.arg(tr(
"First invertor address"),
"address").arg(invertor.address));
138 i = QString(
"<tr><td><label for=\"%2\">%1</label>: </td><td><input type=\"checkbox\" name=\"%2\" id=\"%2\" %3 /></td></tr>\n");
139 s.append(i.arg(tr(
"Now Power"),
"now_power").arg((invertor.now_power) ?
"checked=\"checked\"" :
""));
140 s.append(i.arg(tr(
"Now AC Current"),
"now_ac_current").arg((invertor.now_ac_current) ?
"checked=\"checked\"" :
""));
141 s.append(i.arg(tr(
"Now AC Voltage"),
"now_ac_voltage").arg((invertor.now_ac_voltage) ?
"checked=\"checked\"" :
""));
142 s.append(i.arg(tr(
"Now AC Frequency"),
"now_ac_frequency").arg((invertor.now_ac_frequency) ?
"checked=\"checked\"" :
""));
143 s.append(i.arg(tr(
"Now DC Current"),
"now_dc_current").arg((invertor.now_dc_current) ?
"checked=\"checked\"" :
""));
144 s.append(i.arg(tr(
"Now DC Voltage"),
"now_dc_voltage").arg((invertor.now_dc_voltage) ?
"checked=\"checked\"" :
""));
145 s.append(i.arg(tr(
"Day Energy"),
"day_energy").arg((invertor.day_energy) ?
"checked=\"checked\"" :
""));
146 s.append(i.arg(tr(
"Day Power Maximum"),
"day_power_maximum").arg((invertor.day_power_maximum) ?
"checked=\"checked\"" :
""));
147 s.append(i.arg(tr(
"Day AC Voltage Maximum"),
"day_ac_voltage_maximum").arg((invertor.day_ac_voltage_maximum) ?
"checked=\"checked\"" :
""));
148 s.append(i.arg(tr(
"Day AC Voltage Minimum"),
"day_ac_voltage_minimum").arg((invertor.day_ac_voltage_minimum) ?
"checked=\"checked\"" :
""));
149 s.append(i.arg(tr(
"Day DC Voltage Maximum"),
"day_dc_voltage_maximum").arg((invertor.day_dc_voltage_maximum) ?
"checked=\"checked\"" :
""));
150 s.append(i.arg(tr(
"Day Operating Hours"),
"day_operating_hours").arg((invertor.day_operating_hours) ?
"checked=\"checked\"" :
""));
151 s.append(i.arg(tr(
"Total Energy"),
"total_energy").arg((invertor.total_energy) ?
"checked=\"checked\"" :
""));
152 s.append(i.arg(tr(
"Total Power Maximum"),
"total_power_maximum").arg((invertor.total_power_maximum) ?
"checked=\"checked\"" :
""));
153 s.append(i.arg(tr(
"Total AC Voltage Maximum"),
"total_ac_voltage_maximum").arg((invertor.total_ac_voltage_maximum) ?
"checked=\"checked\"" :
""));
154 s.append(i.arg(tr(
"Total AC Voltage Minimum"),
"total_ac_voltage_minimum").arg((invertor.total_ac_voltage_minimum) ?
"checked=\"checked\"" :
""));
155 s.append(i.arg(tr(
"Total DC Voltage Maximum"),
"total_dc_voltage_maximum").arg((invertor.total_dc_voltage_maximum) ?
"checked=\"checked\"" :
""));
156 s.append(i.arg(tr(
"Total Operating Hours"),
"total_operating_hours").arg((invertor.total_operating_hours) ?
"checked=\"checked\"" :
""));
157 s.append(i.arg(tr(
"Temperature ch. 1"),
"temperature_1").arg((invertor.temperature_1) ?
"checked=\"checked\"" :
""));
158 s.append(i.arg(tr(
"Temperature ch. 2"),
"temperature_2").arg((invertor.temperature_2) ?
"checked=\"checked\"" :
""));
159 s.append(i.arg(tr(
"Irradiance"),
"irradiance").arg((invertor.irradiance) ?
"checked=\"checked\"" :
""));
165 invertor.invertor = request.getParameter(
"id").toInt();
166 invertor.description = request.getParameter(
"idescription");
167 invertor.line = request.getParameter(
"line").toInt();
168 invertor.address = request.getParameter(
"address").toInt();
169 invertor.now_power = !request.getParameter(
"now_power").isEmpty();
170 invertor.now_ac_current = !request.getParameter(
"now_ac_current").isEmpty();
171 invertor.now_ac_voltage = !request.getParameter(
"now_ac_voltage").isEmpty();
172 invertor.now_ac_frequency = !request.getParameter(
"now_ac_frequency").isEmpty();
173 invertor.now_dc_current = !request.getParameter(
"now_dc_current").isEmpty();
174 invertor.now_dc_voltage = !request.getParameter(
"now_dc_voltage").isEmpty();
175 invertor.day_energy = !request.getParameter(
"day_energy").isEmpty();
176 invertor.day_power_maximum = !request.getParameter(
"day_power_maximum").isEmpty();
177 invertor.day_ac_voltage_maximum = !request.getParameter(
"day_ac_voltage_maximum").isEmpty();
178 invertor.day_ac_voltage_minimum = !request.getParameter(
"day_ac_voltage_minimum").isEmpty();
179 invertor.day_dc_voltage_maximum = !request.getParameter(
"day_dc_voltage_maximum").isEmpty();
180 invertor.day_operating_hours = !request.getParameter(
"day_operating_hours").isEmpty();
181 invertor.total_energy = !request.getParameter(
"total_energy").isEmpty();
182 invertor.total_power_maximum = !request.getParameter(
"total_power_maximum").isEmpty();
183 invertor.total_ac_voltage_maximum = !request.getParameter(
"total_ac_voltage_maximum").isEmpty();
184 invertor.total_ac_voltage_minimum = !request.getParameter(
"total_ac_voltage_minimum").isEmpty();
185 invertor.total_dc_voltage_maximum = !request.getParameter(
"total_dc_voltage_maximum").isEmpty();
186 invertor.total_operating_hours = !request.getParameter(
"total_operating_hours").isEmpty();
187 invertor.temperature_1 = !request.getParameter(
"temperature_1").isEmpty();
188 invertor.temperature_2 = !request.getParameter(
"temperature_2").isEmpty();
189 invertor.irradiance = !request.getParameter(
"irradiance").isEmpty();
196 QByteArray action = request.getParameter(
"action");
198 write(QString(
"<h2>%1</h2>\n").arg(tr(
"Add an invertor")));
199 write(
"<form method=\"post\">\n"
200 "<input type=\"hidden\" name=\"action\" value=\"add2\" />\n");
203 write(
"<table class=\"formTable\">");
206 write(QString(
"<input type=\"submit\" value=\"%1\">\n"
207 "</form>\n").arg(tr(
"Add")));
208 if(action ==
"add2") {
210 invertor.invertor = 0;
213 emit saveInvertor(invertor);
214 QString location = QString(
"/invertors?message=%1").arg(percentEncode(tr(
"Invertor added.")));
217 write(QString(
"<p>%1</p>").arg(tr(
"Invertor definition invalid (not added).")));
226 QByteArray action = request.getParameter(
"action");
229 write(QString(
"<h2>%1</h2>\n").arg(tr(
"Edit an invertor")));
230 write(
"<form method=\"post\">\n"
231 "<input type=\"hidden\" name=\"action\" value=\"edit2\" />\n");
232 if(action ==
"edit") {
233 QByteArray
id = request.getParameter(
"id");
234 int idi =
id.toInt();
235 if(
id.isEmpty() || idi < 1) {
236 redirect(QString(
"/invertors?message=%1").arg(percentEncode(tr(
"Error: Invalid invertor ID."))));
239 QList<DBT_INVERTORS> invertors = Static::db->
invertors(QList<int>() << idi);
240 if(invertors.empty()) {
241 redirect(QString(
"/invertors?message=%1").arg(percentEncode(tr(
"Error: no such invertor found."))));
244 write(
"<table class=\"formTable\">");
249 write(
"<table class=\"formTable\">");
253 write(QString(
"<input type=\"submit\" value=\"%1\">\n"
254 "</form>\n").arg(tr(
"Edit")));
255 if(action ==
"edit2") {
258 if(invertor.invertor > 0 &&
true) {
259 emit saveInvertor(invertor);
260 QString location = QString(
"/invertors?message=%1").arg(percentEncode(tr(
"Invertor edited.")));
263 write(QString(
"<p>%1</p>").arg(tr(
"Error: Invertor definition invalid (not edited).")));
272 write(QString(
"<h2>%1</h2>\n").arg(tr(
"Delete an invertor")));
274 QByteArray
id = request.getParameter(
"id");
275 int idi =
id.toInt();
276 if(!
id.isEmpty() && idi > 0) {
277 emit deleteInvertor(idi);
278 location = QString(
"/invertors?message=%1").arg(percentEncode(tr(
"Invertor deleted.")));
280 location = QString(
"/invertors?message=%1").arg(percentEncode(tr(
"Error: Invalid invertor ID. Invertor not deleted.")));
QList< DBT_LINES > lines(int line=0)
Returns list of communications lines.
void actionDelete(HttpRequest &request)
void actionEdit(HttpRequest &request)
QList< DBT_INVERTORS > invertors(int line=0)
Returns list of invertors filtered by line number.
static QString getEditFormContents(HttpRequest &request, DBT_INVERTORS line=DBT_INVERTORS(), bool generator=false)
static void readForm(DBT_INVERTORS &invertor, HttpRequest &request)
Class describing database table LINES.
void actionAdd(HttpRequest &request)
Class describing database table INVERTORS.
void servicePrivate(HttpRequest &request)