From b176bb3d40066e0873ddc998dfcd1ade02010459 Mon Sep 17 00:00:00 2001 From: InzynierDomu Date: Fri, 26 Apr 2024 07:49:07 +0000 Subject: [PATCH] deploy: 6ba6e6bc5af8e892d93f6d46cc1db2eee75c175a --- .nojekyll | 0 _buttons_8cpp.html | 87 + _buttons_8h.html | 112 ++ _buttons_8h_source.html | 104 + _calibration__data__memory_8h_source.html | 104 + _config_8h_source.html | 109 ++ _data__presentation_8cpp.html | 89 + _data__presentation_8h.html | 100 + _data__presentation_8h_source.html | 122 ++ _i_screen_8h.html | 97 + _i_screen_8h_source.html | 96 + _linear__function_8cpp.html | 86 + _linear__function_8h.html | 101 + _linear__function_8h_source.html | 109 ++ _screen__lcd_8cpp.html | 87 + _screen__lcd_8h.html | 88 + _screen__lcd_8h_source.html | 108 ++ _screen__oled_8h_source.html | 113 ++ _sd__card_8cpp.html | 87 + _sd__card_8h.html | 99 + _sd__card_8h_source.html | 111 ++ annotated.html | 86 + bc_s.png | Bin 0 -> 676 bytes bdwn.png | Bin 0 -> 147 bytes class_buttons-members.html | 78 + class_buttons.html | 135 ++ class_calibration__data__memory-members.html | 81 + class_calibration__data__memory.html | 209 ++ class_data__presentation-members.html | 87 + class_data__presentation.html | 296 +++ class_i_screen-members.html | 85 + class_i_screen.html | 354 ++++ class_i_screen.png | Bin 0 -> 434 bytes class_linear__function-members.html | 80 + class_linear__function.html | 182 ++ class_screen__oled-members.html | 86 + class_screen__oled.html | 380 ++++ class_screen__oled.png | Bin 0 -> 429 bytes class_sd__card-members.html | 84 + class_sd__card.html | 229 +++ classes.html | 98 + closed.png | Bin 0 -> 132 bytes dir_68267d1309a1af8e8297ef4c3efbcdba.html | 118 ++ doc.png | Bin 0 -> 746 bytes doxygen.css | 1827 ++++++++++++++++++ doxygen.svg | 26 + dynsections.js | 121 ++ files.html | 94 + folderclosed.png | Bin 0 -> 616 bytes folderopen.png | Bin 0 -> 597 bytes functions.html | 97 + functions_func.html | 97 + globals.html | 98 + globals_enum.html | 75 + globals_func.html | 85 + globals_vars.html | 84 + hierarchy.html | 86 + index.html | 81 + jquery.js | 35 + main_8cpp.html | 403 ++++ md_src_docs_index.html | 76 + menu.js | 127 ++ menudata.js | 41 + nav_f.png | Bin 0 -> 153 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes open.png | Bin 0 -> 123 bytes pages.html | 79 + search/all_0.html | 37 + search/all_0.js | 9 + search/all_1.html | 37 + search/all_1.js | 8 + search/all_2.html | 37 + search/all_2.js | 10 + search/all_3.html | 37 + search/all_3.js | 4 + search/all_4.html | 37 + search/all_4.js | 4 + search/all_5.html | 37 + search/all_5.js | 4 + search/all_6.html | 37 + search/all_6.js | 7 + search/all_7.html | 37 + search/all_7.js | 11 + search/all_8.html | 37 + search/all_8.js | 15 + search/all_9.html | 37 + search/all_9.js | 6 + search/all_a.html | 37 + search/all_a.js | 17 + search/classes_0.html | 37 + search/classes_0.js | 4 + search/classes_1.html | 37 + search/classes_1.js | 4 + search/classes_2.html | 37 + search/classes_2.js | 4 + search/classes_3.html | 37 + search/classes_3.js | 4 + search/classes_4.html | 37 + search/classes_4.js | 4 + search/classes_5.html | 37 + search/classes_5.js | 4 + search/classes_6.html | 37 + search/classes_6.js | 5 + search/close.svg | 31 + search/enums_0.html | 37 + search/enums_0.js | 4 + search/enums_1.html | 37 + search/enums_1.js | 4 + search/files_0.html | 37 + search/files_0.js | 5 + search/files_1.html | 37 + search/files_1.js | 5 + search/files_2.html | 37 + search/files_2.js | 4 + search/files_3.html | 37 + search/files_3.js | 5 + search/files_4.html | 37 + search/files_4.js | 4 + search/files_5.html | 37 + search/files_5.js | 7 + search/functions_0.html | 37 + search/functions_0.js | 5 + search/functions_1.html | 37 + search/functions_1.js | 7 + search/functions_2.html | 37 + search/functions_2.js | 6 + search/functions_3.html | 37 + search/functions_3.js | 4 + search/functions_4.html | 37 + search/functions_4.js | 4 + search/functions_5.html | 37 + search/functions_5.js | 5 + search/functions_6.html | 37 + search/functions_6.js | 9 + search/functions_7.html | 37 + search/functions_7.js | 5 + search/functions_8.html | 37 + search/functions_8.js | 4 + search/functions_9.html | 37 + search/functions_9.js | 13 + search/mag_sel.svg | 74 + search/nomatches.html | 13 + search/pages_0.html | 37 + search/pages_0.js | 4 + search/pages_1.html | 37 + search/pages_1.js | 4 + search/search.css | 263 +++ search/search.js | 794 ++++++++ search/search_l.png | Bin 0 -> 567 bytes search/search_m.png | Bin 0 -> 158 bytes search/search_r.png | Bin 0 -> 553 bytes search/searchdata.js | 33 + search/variables_0.html | 37 + search/variables_0.js | 4 + search/variables_1.html | 37 + search/variables_1.js | 12 + search/variables_2.html | 37 + search/variables_2.js | 4 + splitbar.png | Bin 0 -> 314 bytes struct_point-members.html | 80 + struct_point.html | 150 ++ sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_b.png | Bin 0 -> 169 bytes tab_h.png | Bin 0 -> 177 bytes tab_s.png | Bin 0 -> 184 bytes tabs.css | 1 + work_schem.svg | 44 + 170 files changed, 11461 insertions(+) create mode 100644 .nojekyll create mode 100644 _buttons_8cpp.html create mode 100644 _buttons_8h.html create mode 100644 _buttons_8h_source.html create mode 100644 _calibration__data__memory_8h_source.html create mode 100644 _config_8h_source.html create mode 100644 _data__presentation_8cpp.html create mode 100644 _data__presentation_8h.html create mode 100644 _data__presentation_8h_source.html create mode 100644 _i_screen_8h.html create mode 100644 _i_screen_8h_source.html create mode 100644 _linear__function_8cpp.html create mode 100644 _linear__function_8h.html create mode 100644 _linear__function_8h_source.html create mode 100644 _screen__lcd_8cpp.html create mode 100644 _screen__lcd_8h.html create mode 100644 _screen__lcd_8h_source.html create mode 100644 _screen__oled_8h_source.html create mode 100644 _sd__card_8cpp.html create mode 100644 _sd__card_8h.html create mode 100644 _sd__card_8h_source.html create mode 100644 annotated.html create mode 100644 bc_s.png create mode 100644 bdwn.png create mode 100644 class_buttons-members.html create mode 100644 class_buttons.html create mode 100644 class_calibration__data__memory-members.html create mode 100644 class_calibration__data__memory.html create mode 100644 class_data__presentation-members.html create mode 100644 class_data__presentation.html create mode 100644 class_i_screen-members.html create mode 100644 class_i_screen.html create mode 100644 class_i_screen.png create mode 100644 class_linear__function-members.html create mode 100644 class_linear__function.html create mode 100644 class_screen__oled-members.html create mode 100644 class_screen__oled.html create mode 100644 class_screen__oled.png create mode 100644 class_sd__card-members.html create mode 100644 class_sd__card.html create mode 100644 classes.html create mode 100644 closed.png create mode 100644 dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 doc.png create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 dynsections.js create mode 100644 files.html create mode 100644 folderclosed.png create mode 100644 folderopen.png create mode 100644 functions.html create mode 100644 functions_func.html create mode 100644 globals.html create mode 100644 globals_enum.html create mode 100644 globals_func.html create mode 100644 globals_vars.html create mode 100644 hierarchy.html create mode 100644 index.html create mode 100644 jquery.js create mode 100644 main_8cpp.html create mode 100644 md_src_docs_index.html create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 nav_f.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 open.png create mode 100644 pages.html create mode 100644 search/all_0.html create mode 100644 search/all_0.js create mode 100644 search/all_1.html create mode 100644 search/all_1.js create mode 100644 search/all_2.html create mode 100644 search/all_2.js create mode 100644 search/all_3.html create mode 100644 search/all_3.js create mode 100644 search/all_4.html create mode 100644 search/all_4.js create mode 100644 search/all_5.html create mode 100644 search/all_5.js create mode 100644 search/all_6.html create mode 100644 search/all_6.js create mode 100644 search/all_7.html create mode 100644 search/all_7.js create mode 100644 search/all_8.html create mode 100644 search/all_8.js create mode 100644 search/all_9.html create mode 100644 search/all_9.js create mode 100644 search/all_a.html create mode 100644 search/all_a.js create mode 100644 search/classes_0.html create mode 100644 search/classes_0.js create mode 100644 search/classes_1.html create mode 100644 search/classes_1.js create mode 100644 search/classes_2.html create mode 100644 search/classes_2.js create mode 100644 search/classes_3.html create mode 100644 search/classes_3.js create mode 100644 search/classes_4.html create mode 100644 search/classes_4.js create mode 100644 search/classes_5.html create mode 100644 search/classes_5.js create mode 100644 search/classes_6.html create mode 100644 search/classes_6.js create mode 100644 search/close.svg create mode 100644 search/enums_0.html create mode 100644 search/enums_0.js create mode 100644 search/enums_1.html create mode 100644 search/enums_1.js create mode 100644 search/files_0.html create mode 100644 search/files_0.js create mode 100644 search/files_1.html create mode 100644 search/files_1.js create mode 100644 search/files_2.html create mode 100644 search/files_2.js create mode 100644 search/files_3.html create mode 100644 search/files_3.js create mode 100644 search/files_4.html create mode 100644 search/files_4.js create mode 100644 search/files_5.html create mode 100644 search/files_5.js create mode 100644 search/functions_0.html create mode 100644 search/functions_0.js create mode 100644 search/functions_1.html create mode 100644 search/functions_1.js create mode 100644 search/functions_2.html create mode 100644 search/functions_2.js create mode 100644 search/functions_3.html create mode 100644 search/functions_3.js create mode 100644 search/functions_4.html create mode 100644 search/functions_4.js create mode 100644 search/functions_5.html create mode 100644 search/functions_5.js create mode 100644 search/functions_6.html create mode 100644 search/functions_6.js create mode 100644 search/functions_7.html create mode 100644 search/functions_7.js create mode 100644 search/functions_8.html create mode 100644 search/functions_8.js create mode 100644 search/functions_9.html create mode 100644 search/functions_9.js create mode 100644 search/mag_sel.svg create mode 100644 search/nomatches.html create mode 100644 search/pages_0.html create mode 100644 search/pages_0.js create mode 100644 search/pages_1.html create mode 100644 search/pages_1.js create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/search_l.png create mode 100644 search/search_m.png create mode 100644 search/search_r.png create mode 100644 search/searchdata.js create mode 100644 search/variables_0.html create mode 100644 search/variables_0.js create mode 100644 search/variables_1.html create mode 100644 search/variables_1.js create mode 100644 search/variables_2.html create mode 100644 search/variables_2.js create mode 100644 splitbar.png create mode 100644 struct_point-members.html create mode 100644 struct_point.html create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_b.png create mode 100644 tab_h.png create mode 100644 tab_s.png create mode 100644 tabs.css create mode 100644 work_schem.svg diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/_buttons_8cpp.html b/_buttons_8cpp.html new file mode 100644 index 0000000..ffd58fe --- /dev/null +++ b/_buttons_8cpp.html @@ -0,0 +1,87 @@ + + + + + + + +Ph-ec-meter: src/Buttons.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Buttons.cpp File Reference
+
+
+ +

buttons handling +More...

+
#include "Buttons.h"
+#include "Config.h"
+

Detailed Description

+

buttons handling

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-08
+
+ + + + diff --git a/_buttons_8h.html b/_buttons_8h.html new file mode 100644 index 0000000..0f6501c --- /dev/null +++ b/_buttons_8h.html @@ -0,0 +1,112 @@ + + + + + + + +Ph-ec-meter: src/Buttons.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
Buttons.h File Reference
+
+
+ +

buttons handling +More...

+
#include <Arduino.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  Buttons
 buttons action handling More...
 
+ + + + +

+Enumerations

enum class  Buttons_action {
+  nothing +, two_buttons_long +, up_button_long +, short_up_button +,
+  short_dwn_button +
+ }
 < possible recognizing buttons action
 
+

Detailed Description

+

buttons handling

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-08
+
+ + + + diff --git a/_buttons_8h_source.html b/_buttons_8h_source.html new file mode 100644 index 0000000..735cf92 --- /dev/null +++ b/_buttons_8h_source.html @@ -0,0 +1,104 @@ + + + + + + + +Ph-ec-meter: src/Buttons.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Buttons.h
+
+
+Go to the documentation of this file.
1
+
8#pragma once
+
9
+
10#include <Arduino.h>
+
11
+ +
14{
+
15 nothing,
+
16 two_buttons_long,
+
17 up_button_long,
+
18 short_up_button,
+
19 short_dwn_button
+
20};
+
21
+ +
24{
+
25 public:
+
26 static Buttons_action check_buttons(bool r_button_pressed, bool l_button_pressed);
+
27
+
28 private:
+
29 static bool check_two_buttons_long();
+
30 static bool check_up_botton_long();
+
31};
+
Buttons_action
< possible recognizing buttons action
Definition: Buttons.h:14
+
buttons action handling
Definition: Buttons.h:24
+
static Buttons_action check_buttons(bool r_button_pressed, bool l_button_pressed)
buttons action reaction
Definition: Buttons.cpp:16
+
+ + + + diff --git a/_calibration__data__memory_8h_source.html b/_calibration__data__memory_8h_source.html new file mode 100644 index 0000000..54c7eba --- /dev/null +++ b/_calibration__data__memory_8h_source.html @@ -0,0 +1,104 @@ + + + + + + + +Ph-ec-meter: src/Calibration_data_memory.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Calibration_data_memory.h
+
+
+
1
+
7#pragma once
+
8
+
9#include "Linear_function.h"
+
10
+
11#include <EEPROM.h>
+
12
+ +
15{
+
16 public:
+
17 void save_ph_calibration(const Point points[2]);
+
18 void save_ec_calibration(const Point points[2]);
+
19 void load_ph_calibration(Point points[2]);
+
20 void load_ec_calibration(Point points[2]);
+
21
+
22 private:
+
23 void save_calibration(const Point points[2], const uint8_t start);
+
24 void load_calibration(Point points[2], const uint8_t start);
+
25};
+
saving and loading calibration data from memory
+
saving and reading calibration from sd card
Definition: Calibration_data_memory.h:15
+
void load_ph_calibration(Point points[2])
load ph calibration data
Definition: Calibration_data_memory.cpp:31
+
void save_ec_calibration(const Point points[2])
save ec calibration data
Definition: Calibration_data_memory.cpp:22
+
void load_ec_calibration(Point points[2])
load ec calibration data
Definition: Calibration_data_memory.cpp:40
+
void save_ph_calibration(const Point points[2])
save ph calibration data
Definition: Calibration_data_memory.cpp:13
+
Point structure.
Definition: Linear_function.h:13
+
+ + + + diff --git a/_config_8h_source.html b/_config_8h_source.html new file mode 100644 index 0000000..d909ace --- /dev/null +++ b/_config_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +Ph-ec-meter: src/Config.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Config.h
+
+
+
1
+
7#pragma once
+
8
+
9#include <Arduino.h>
+
10#include <stdint.h>
+
11
+
12
+
13namespace Config
+
14{
+
15const uint8_t pin_up_button = 3;
+
16const uint8_t pin_dwn_button = 2;
+
17const uint8_t pin_thermometer = 4;
+
18const uint8_t ph_pin_probe = 15;
+
19const uint8_t ec_pin_probe = 16;
+
20const uint8_t ph_supply_pin_probe = 5;
+
21const uint8_t ec_supply_pin_probe = 6;
+
22const uint8_t sd_card_cs_pin = 7;
+
23
+
24const uint8_t screen_address = 0x3C;
+
25const uint8_t screen_width = 128;
+
26const uint8_t screen_height = 32;
+
27
+
28const uint8_t blink_time_calibration = 150;
+
29const uint16_t long_press_time = 1000;
+
30const uint8_t max_ph_to_calib = 24;
+
31const uint8_t max_ec_to_calib = 64;
+
32const uint8_t min_ec_to_calib = 0;
+
33
+
34const String file_name = "data.log";
+
35
+
36} // namespace Config
+
+ + + + diff --git a/_data__presentation_8cpp.html b/_data__presentation_8cpp.html new file mode 100644 index 0000000..cc10af7 --- /dev/null +++ b/_data__presentation_8cpp.html @@ -0,0 +1,89 @@ + + + + + + + +Ph-ec-meter: src/Data_presentation.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Data_presentation.cpp File Reference
+
+
+ +

send data via serial and present on screen +More...

+
#include "Data_presentation.h"
+#include "Config.h"
+#include <Arduino.h>
+#include <math.h>
+

Detailed Description

+

send data via serial and present on screen

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-06
+
+ + + + diff --git a/_data__presentation_8h.html b/_data__presentation_8h.html new file mode 100644 index 0000000..519552b --- /dev/null +++ b/_data__presentation_8h.html @@ -0,0 +1,100 @@ + + + + + + + +Ph-ec-meter: src/Data_presentation.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
Data_presentation.h File Reference
+
+
+ +

send data via serial and present on screen +More...

+
#include "Linear_function.h"
+#include "Screen_lcd.h"
+#include "Screen_oled.h"
+#include <stdint.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  Data_presentation
 presentation data on screen and serial port More...
 
+

Detailed Description

+

send data via serial and present on screen

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-06
+
+ + + + diff --git a/_data__presentation_8h_source.html b/_data__presentation_8h_source.html new file mode 100644 index 0000000..4ab3bdd --- /dev/null +++ b/_data__presentation_8h_source.html @@ -0,0 +1,122 @@ + + + + + + + +Ph-ec-meter: src/Data_presentation.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Data_presentation.h
+
+
+Go to the documentation of this file.
1
+
7#pragma once
+
8
+
9#include "Linear_function.h"
+
10#include "Screen_lcd.h"
+
11#include "Screen_oled.h"
+
12
+
13#include <stdint.h>
+
14
+ +
17{
+
18 public:
+ +
20 void init();
+
21 void calibration_mode();
+
22 void save_data();
+
23 void measurements_ph(const float temperature, const float ph);
+
24 void measurements_ec(const float temperature, const float ec);
+
25 void calibration_ph(const uint8_t sample, const float temperature, const float origin);
+
26 void calibration_ec(const double sample, uint8_t position, const float temperature, const float origin);
+
27 void print_ph_calibration(Point points[2]);
+
28 void print_ec_calibration(Point points[2]);
+
29
+
30 private:
+
31 void print_points(Point points[2]);
+
32#if defined LCD_SCREEN
+
33 Screen_lcd m_display;
+
34#else
+
35 Screen_oled m_display;
+
36#endif
+
37};
+
saving and loading calibration data from memory
+
16x2 lcd Screen
+
presentation data on screen and serial port
Definition: Data_presentation.h:17
+
void calibration_mode()
calibration mode info screen
Definition: Data_presentation.cpp:35
+
Data_presentation()
Construct a new Data_presentation::Data_presentation object.
Definition: Data_presentation.cpp:17
+
void measurements_ec(const float temperature, const float ec)
send ec and temperature and print on screen
Definition: Data_presentation.cpp:70
+
void calibration_ph(const uint8_t sample, const float temperature, const float origin)
ph calibration screen
Definition: Data_presentation.cpp:87
+
void calibration_ec(const double sample, uint8_t position, const float temperature, const float origin)
ec calibration screen
Definition: Data_presentation.cpp:100
+
void init()
startup screen
Definition: Data_presentation.cpp:24
+
void save_data()
save point info screen
Definition: Data_presentation.cpp:44
+
void measurements_ph(const float temperature, const float ph)
send ph and temperature and print on screen
Definition: Data_presentation.cpp:55
+
OLED screen handling.
Definition: Screen_oled.h:19
+
Point structure.
Definition: Linear_function.h:13
+
+ + + + diff --git a/_i_screen_8h.html b/_i_screen_8h.html new file mode 100644 index 0000000..e77424b --- /dev/null +++ b/_i_screen_8h.html @@ -0,0 +1,97 @@ + + + + + + + +Ph-ec-meter: src/IScreen.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
IScreen.h File Reference
+
+
+ +

Screens interface. +More...

+
#include <Wire.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  IScreen
 Interface for screens handling. More...
 
+

Detailed Description

+

Screens interface.

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-08
+
+ + + + diff --git a/_i_screen_8h_source.html b/_i_screen_8h_source.html new file mode 100644 index 0000000..c17d787 --- /dev/null +++ b/_i_screen_8h_source.html @@ -0,0 +1,96 @@ + + + + + + + +Ph-ec-meter: src/IScreen.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
IScreen.h
+
+
+Go to the documentation of this file.
1
+
7#pragma once
+
8
+
9#include <Wire.h>
+
10
+ +
13{
+
14 public:
+
15 ~IScreen() {}
+
16 virtual void display_start() = 0;
+
17 virtual void calibration_mode() = 0;
+
18 virtual void save_data() = 0;
+
19 virtual void measurements_ph(const float temperature, const float ph) = 0;
+
20 virtual void measurements_ec(const float temperature, const float ec) = 0;
+
21 virtual void calibration_ph(const uint8_t sample, const float temperature) = 0;
+
22 virtual void calibration_ec(const double sample, uint8_t position, const float temperature) = 0;
+
23};
+
Interface for screens handling.
Definition: IScreen.h:13
+
+ + + + diff --git a/_linear__function_8cpp.html b/_linear__function_8cpp.html new file mode 100644 index 0000000..6272eef --- /dev/null +++ b/_linear__function_8cpp.html @@ -0,0 +1,86 @@ + + + + + + + +Ph-ec-meter: src/Linear_function.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Linear_function.cpp File Reference
+
+
+ +

saving and loading calibration data from memory +More...

+
#include "Linear_function.h"
+

Detailed Description

+

saving and loading calibration data from memory

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-06
+
+ + + + diff --git a/_linear__function_8h.html b/_linear__function_8h.html new file mode 100644 index 0000000..03e0aab --- /dev/null +++ b/_linear__function_8h.html @@ -0,0 +1,101 @@ + + + + + + + +Ph-ec-meter: src/Linear_function.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
Linear_function.h File Reference
+
+
+ +

saving and loading calibration data from memory +More...

+
#include <stdint.h>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  Point
 Point structure. More...
 
class  Linear_function
 liner function store and calculate More...
 
+

Detailed Description

+

saving and loading calibration data from memory

+

linear function y = ax + b structure

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-06
+
+ + + + diff --git a/_linear__function_8h_source.html b/_linear__function_8h_source.html new file mode 100644 index 0000000..8ce55f8 --- /dev/null +++ b/_linear__function_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +Ph-ec-meter: src/Linear_function.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Linear_function.h
+
+
+Go to the documentation of this file.
1
+
7#pragma once
+
8
+
9#include <stdint.h>
+
10
+
12struct Point
+
13{
+
19 Point(double _analog_val = 0, double _unit_val = 0)
+
20 : unit_val(_unit_val)
+
21 , analog_val(_analog_val){};
+
22 double unit_val;
+
23 double analog_val;
+
24};
+
25
+ +
28{
+
29 public:
+
30 Linear_function(const Point points[2] = {});
+
31 void set_points(const Point points[2]);
+
32 double find_unit_val(uint16_t analog_val);
+
33
+
34 private:
+
35 double slope;
+
36 double shift;
+
37};
+
liner function store and calculate
Definition: Linear_function.h:28
+
Linear_function(const Point points[2]={})
Construct a new Linear_function::Linear_function object.
Definition: Linear_function.cpp:7
+
double find_unit_val(uint16_t analog_val)
find point on linear function
Definition: Linear_function.cpp:19
+
void set_points(const Point points[2])
set points to calculate linear function
Definition: Linear_function.cpp:28
+
Point structure.
Definition: Linear_function.h:13
+
Point(double _analog_val=0, double _unit_val=0)
Construct a new Point object.
Definition: Linear_function.h:19
+
+ + + + diff --git a/_screen__lcd_8cpp.html b/_screen__lcd_8cpp.html new file mode 100644 index 0000000..991ab2f --- /dev/null +++ b/_screen__lcd_8cpp.html @@ -0,0 +1,87 @@ + + + + + + + +Ph-ec-meter: src/Screen_lcd.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Screen_lcd.cpp File Reference
+
+
+ +

16x2 lcd Screen +More...

+
#include "Screen_lcd.h"
+

Detailed Description

+

16x2 lcd Screen

+

OLED Screen.

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-08
+
+ + + + diff --git a/_screen__lcd_8h.html b/_screen__lcd_8h.html new file mode 100644 index 0000000..67ff545 --- /dev/null +++ b/_screen__lcd_8h.html @@ -0,0 +1,88 @@ + + + + + + + +Ph-ec-meter: src/Screen_lcd.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Screen_lcd.h File Reference
+
+
+ +

16x2 lcd Screen +More...

+ +

Go to the source code of this file.

+

Detailed Description

+

16x2 lcd Screen

+

OLED Screen.

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-08
+
+ + + + diff --git a/_screen__lcd_8h_source.html b/_screen__lcd_8h_source.html new file mode 100644 index 0000000..107d5b8 --- /dev/null +++ b/_screen__lcd_8h_source.html @@ -0,0 +1,108 @@ + + + + + + + +Ph-ec-meter: src/Screen_lcd.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Screen_lcd.h
+
+
+Go to the documentation of this file.
1
+
7#pragma once
+
8#if defined LCD_SCREEN
+
9
+
10#include "Config.h"
+
11#include "IScreen.h"
+
12#include "LiquidCrystal_I2C.h"
+
13
+
15class Screen_lcd : public IScreen
+
16{
+
17 public:
+
18 Screen_lcd();
+
19 void display_start() override;
+
20 void calibration_mode() override;
+
21 void save_data() override;
+
22 void measurements_ph(const float temperature, const float ph) override;
+
23 void measurements_ec(const float temperature, const float ec) override;
+
24 void calibration_ph(const uint8_t sample, const float temperature) override;
+
25 void calibration_ec(const double sample, uint8_t position, const float temperature) override;
+
26
+
27 private:
+
28 LiquidCrystal_I2C m_display;
+
29};
+
30#endif
+
Screens interface.
+
Interface for screens handling.
Definition: IScreen.h:13
+
void measurements_ec(const Buttons_action action)
ec measure
Definition: main.cpp:119
+
void measurements_ph(const Buttons_action action)
ph measure
Definition: main.cpp:83
+
void calibration_ec(const Buttons_action action)
calibration ec procedure
Definition: main.cpp:256
+
void calibration_ph(const Buttons_action action)
calibration ph procedure
Definition: main.cpp:197
+
+ + + + diff --git a/_screen__oled_8h_source.html b/_screen__oled_8h_source.html new file mode 100644 index 0000000..2c726cf --- /dev/null +++ b/_screen__oled_8h_source.html @@ -0,0 +1,113 @@ + + + + + + + +Ph-ec-meter: src/Screen_oled.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Screen_oled.h
+
+
+
1
+
7#pragma once
+
8#ifndef LCD_SCREEN
+
9
+
10#include "Config.h"
+
11#include "IScreen.h"
+
12#include "ssd1306.h"
+
13#include "ssd1306_console.h"
+
14
+
15#include <SPI.h>
+
16
+
18class Screen_oled : public IScreen
+
19{
+
20 public:
+ +
22 void display_start() override;
+
23 void calibration_mode() override;
+
24 void save_data() override;
+
25 void measurements_ph(const float temperature, const float ph) override;
+
26 void measurements_ec(const float temperature, const float ec) override;
+
27 void calibration_ph(const uint8_t sample, const float temperature) override;
+
28 void calibration_ec(const double sample, uint8_t position, const float temperature) override;
+
29};
+
30#endif
+
Screens interface.
+
Interface for screens handling.
Definition: IScreen.h:13
+
OLED screen handling.
Definition: Screen_oled.h:19
+
void calibration_mode() override
display calibration mode screen
Definition: Screen_oled.cpp:35
+
void calibration_ec(const double sample, uint8_t position, const float temperature) override
display caloibration ec screen
Definition: Screen_oled.cpp:120
+
void save_data() override
display save point screen
Definition: Screen_oled.cpp:45
+
void measurements_ec(const float temperature, const float ec) override
display ec measurments screen
Definition: Screen_oled.cpp:70
+
void calibration_ph(const uint8_t sample, const float temperature) override
display caloibration ph screen
Definition: Screen_oled.cpp:85
+
void measurements_ph(const float temperature, const float ph) override
display ph measurments screen
Definition: Screen_oled.cpp:55
+
void display_start() override
display start screen
Definition: Screen_oled.cpp:25
+
Screen_oled()
constructor
Definition: Screen_oled.cpp:13
+
+ + + + diff --git a/_sd__card_8cpp.html b/_sd__card_8cpp.html new file mode 100644 index 0000000..ccd43d5 --- /dev/null +++ b/_sd__card_8cpp.html @@ -0,0 +1,87 @@ + + + + + + + +Ph-ec-meter: src/Sd_card.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Sd_card.cpp File Reference
+
+
+ +

sd card handling +More...

+
#include "Sd_card.h"
+#include "Config.h"
+

Detailed Description

+

sd card handling

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-08
+
+ + + + diff --git a/_sd__card_8h.html b/_sd__card_8h.html new file mode 100644 index 0000000..3410156 --- /dev/null +++ b/_sd__card_8h.html @@ -0,0 +1,99 @@ + + + + + + + +Ph-ec-meter: src/Sd_card.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
Sd_card.h File Reference
+
+
+ +

sd card handling +More...

+
#include "Linear_function.h"
+#include <SD.h>
+#include <SPI.h>
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  Sd_card
 SD card handling. More...
 
+

Detailed Description

+

sd card handling

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-08
+
+ + + + diff --git a/_sd__card_8h_source.html b/_sd__card_8h_source.html new file mode 100644 index 0000000..e00cfc0 --- /dev/null +++ b/_sd__card_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +Ph-ec-meter: src/Sd_card.h Source File + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
Sd_card.h
+
+
+Go to the documentation of this file.
1
+
7#pragma once
+
8
+
9#include "Linear_function.h"
+
10
+
11#include <SD.h>
+
12#include <SPI.h>
+
13
+ +
16{
+
17 public:
+
18 Sd_card();
+
19 bool is_card_available();
+
20 bool get_card_status();
+
21 void save_ph_measurement(const float temperature, const float ph);
+
22 void save_ec_measurement(const float temperature, const float ec);
+
23 void print_ph_calibration(Point points[2]);
+
24 void print_ec_calibration(Point points[2]);
+
25
+
26 private:
+
27 bool m_card_available;
+
28
+
29 void save_measurement(String& measurement);
+
30 void print_calibration(Point points[2], String& output);
+
31};
+
saving and loading calibration data from memory
+
SD card handling.
Definition: Sd_card.h:16
+
bool get_card_status()
get is sd card available
Definition: Sd_card.cpp:39
+
Sd_card()
Construct a new Sd_card::Sd_card object.
Definition: Sd_card.cpp:14
+
bool is_card_available()
check is sd card available and begin communication
Definition: Sd_card.cpp:22
+
void save_ec_measurement(const float temperature, const float ec)
save ec measurement on sd
Definition: Sd_card.cpp:63
+
void save_ph_measurement(const float temperature, const float ph)
save ph measurement on sd
Definition: Sd_card.cpp:49
+
Point structure.
Definition: Linear_function.h:13
+
+ + + + diff --git a/annotated.html b/annotated.html new file mode 100644 index 0000000..4d97c17 --- /dev/null +++ b/annotated.html @@ -0,0 +1,86 @@ + + + + + + + +Ph-ec-meter: Class List + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + +
 CButtonsButtons action handling
 CCalibration_data_memorySaving and reading calibration from sd card
 CData_presentationPresentation data on screen and serial port
 CIScreenInterface for screens handling
 CLinear_functionLiner function store and calculate
 CPointPoint structure
 CScreen_oledOLED screen handling
 CSd_cardSD card handling
+
+
+ + + + diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +Ph-ec-meter: Member List + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
Buttons Member List
+
+
+ +

This is the complete list of members for Buttons, including all inherited members.

+ + +
check_buttons(bool r_button_pressed, bool l_button_pressed)Buttonsstatic
+ + + + diff --git a/class_buttons.html b/class_buttons.html new file mode 100644 index 0000000..e1af46f --- /dev/null +++ b/class_buttons.html @@ -0,0 +1,135 @@ + + + + + + + +Ph-ec-meter: Buttons Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
Buttons Class Reference
+
+
+ +

buttons action handling + More...

+ +

#include <Buttons.h>

+ + + + + +

+Static Public Member Functions

static Buttons_action check_buttons (bool r_button_pressed, bool l_button_pressed)
 buttons action reaction More...
 
+

Detailed Description

+

buttons action handling

+

Member Function Documentation

+ +

◆ check_buttons()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Buttons_action Buttons::check_buttons (bool up_button_pressed,
bool dwn_button_pressed 
)
+
+static
+
+ +

buttons action reaction

+
Returns
Buttons_action type of action was done
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/class_calibration__data__memory-members.html b/class_calibration__data__memory-members.html new file mode 100644 index 0000000..0d2d852 --- /dev/null +++ b/class_calibration__data__memory-members.html @@ -0,0 +1,81 @@ + + + + + + + +Ph-ec-meter: Member List + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
Calibration_data_memory Member List
+
+
+ +

This is the complete list of members for Calibration_data_memory, including all inherited members.

+ + + + + +
load_ec_calibration(Point points[2])Calibration_data_memory
load_ph_calibration(Point points[2])Calibration_data_memory
save_ec_calibration(const Point points[2])Calibration_data_memory
save_ph_calibration(const Point points[2])Calibration_data_memory
+ + + + diff --git a/class_calibration__data__memory.html b/class_calibration__data__memory.html new file mode 100644 index 0000000..ca5c620 --- /dev/null +++ b/class_calibration__data__memory.html @@ -0,0 +1,209 @@ + + + + + + + +Ph-ec-meter: Calibration_data_memory Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
Calibration_data_memory Class Reference
+
+
+ +

saving and reading calibration from sd card + More...

+ +

#include <Calibration_data_memory.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

void save_ph_calibration (const Point points[2])
 save ph calibration data More...
 
void save_ec_calibration (const Point points[2])
 save ec calibration data More...
 
void load_ph_calibration (Point points[2])
 load ph calibration data More...
 
void load_ec_calibration (Point points[2])
 load ec calibration data More...
 
+

Detailed Description

+

saving and reading calibration from sd card

+

Member Function Documentation

+ +

◆ load_ec_calibration()

+ +
+
+ + + + + + + + +
void Calibration_data_memory::load_ec_calibration (Point points[2])
+
+ +

load ec calibration data

+
Parameters
+ + +
pointscalibration data to fill
+
+
+ +
+
+ +

◆ load_ph_calibration()

+ +
+
+ + + + + + + + +
void Calibration_data_memory::load_ph_calibration (Point points[2])
+
+ +

load ph calibration data

+
Parameters
+ + +
pointscalibration data to fill
+
+
+ +
+
+ +

◆ save_ec_calibration()

+ +
+
+ + + + + + + + +
void Calibration_data_memory::save_ec_calibration (const Point points[2])
+
+ +

save ec calibration data

+
Parameters
+ + +
pointscalibration data
+
+
+ +
+
+ +

◆ save_ph_calibration()

+ +
+
+ + + + + + + + +
void Calibration_data_memory::save_ph_calibration (const Point points[2])
+
+ +

save ph calibration data

+
Parameters
+ + +
pointscalibration data
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/class_data__presentation-members.html b/class_data__presentation-members.html new file mode 100644 index 0000000..c2a624a --- /dev/null +++ b/class_data__presentation-members.html @@ -0,0 +1,87 @@ + + + + + + + +Ph-ec-meter: Member List + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
Data_presentation Member List
+
+
+ +

This is the complete list of members for Data_presentation, including all inherited members.

+ + + + + + + + + + + +
calibration_ec(const double sample, uint8_t position, const float temperature, const float origin)Data_presentation
calibration_mode()Data_presentation
calibration_ph(const uint8_t sample, const float temperature, const float origin)Data_presentation
Data_presentation()Data_presentation
init()Data_presentation
measurements_ec(const float temperature, const float ec)Data_presentation
measurements_ph(const float temperature, const float ph)Data_presentation
print_ec_calibration(Point points[2]) (defined in Data_presentation)Data_presentation
print_ph_calibration(Point points[2]) (defined in Data_presentation)Data_presentation
save_data()Data_presentation
+ + + + diff --git a/class_data__presentation.html b/class_data__presentation.html new file mode 100644 index 0000000..e55eb93 --- /dev/null +++ b/class_data__presentation.html @@ -0,0 +1,296 @@ + + + + + + + +Ph-ec-meter: Data_presentation Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
Data_presentation Class Reference
+
+
+ +

presentation data on screen and serial port + More...

+ +

#include <Data_presentation.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Data_presentation ()
 Construct a new Data_presentation::Data_presentation object.
 
+void init ()
 startup screen
 
+void calibration_mode ()
 calibration mode info screen
 
+void save_data ()
 save point info screen
 
void measurements_ph (const float temperature, const float ph)
 send ph and temperature and print on screen More...
 
void measurements_ec (const float temperature, const float ec)
 send ec and temperature and print on screen More...
 
void calibration_ph (const uint8_t sample, const float temperature, const float origin)
 ph calibration screen More...
 
void calibration_ec (const double sample, uint8_t position, const float temperature, const float origin)
 ec calibration screen More...
 
+void print_ph_calibration (Point points[2])
 
+void print_ec_calibration (Point points[2])
 
+

Detailed Description

+

presentation data on screen and serial port

+

Member Function Documentation

+ +

◆ calibration_ec()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void Data_presentation::calibration_ec (const double sample,
uint8_t position,
const float temperature,
const float origin 
)
+
+ +

ec calibration screen

+
Parameters
+ + + + + +
sampleec value current calibrating
positiontoggling digit position
temperaturecurrent temperature
origin//TODO:
+
+
+ +
+
+ +

◆ calibration_ph()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Data_presentation::calibration_ph (const uint8_t sample,
const float temperature,
const float origin 
)
+
+ +

ph calibration screen

+
Parameters
+ + + + +
sampleph value current calibrating
temperaturecurrent temperature
origin//TODO:
+
+
+ +
+
+ +

◆ measurements_ec()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Data_presentation::measurements_ec (const float temperature,
const float ec 
)
+
+ +

send ec and temperature and print on screen

+
Parameters
+ + + +
temperaturetemperature value to send and print
phec value to send and print
+
+
+ +
+
+ +

◆ measurements_ph()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Data_presentation::measurements_ph (const float temperature,
const float ph 
)
+
+ +

send ph and temperature and print on screen

+
Parameters
+ + + +
temperaturetemperature value to send and print
phph value to send and print
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/class_i_screen-members.html b/class_i_screen-members.html new file mode 100644 index 0000000..ffdd195 --- /dev/null +++ b/class_i_screen-members.html @@ -0,0 +1,85 @@ + + + + + + + +Ph-ec-meter: Member List + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
IScreen Member List
+
+
+ +

This is the complete list of members for IScreen, including all inherited members.

+ + + + + + + + + +
calibration_ec(const double sample, uint8_t position, const float temperature)=0 (defined in IScreen)IScreenpure virtual
calibration_mode()=0 (defined in IScreen)IScreenpure virtual
calibration_ph(const uint8_t sample, const float temperature)=0 (defined in IScreen)IScreenpure virtual
display_start()=0 (defined in IScreen)IScreenpure virtual
measurements_ec(const float temperature, const float ec)=0 (defined in IScreen)IScreenpure virtual
measurements_ph(const float temperature, const float ph)=0 (defined in IScreen)IScreenpure virtual
save_data()=0 (defined in IScreen)IScreenpure virtual
~IScreen() (defined in IScreen)IScreeninline
+ + + + diff --git a/class_i_screen.html b/class_i_screen.html new file mode 100644 index 0000000..81b91ec --- /dev/null +++ b/class_i_screen.html @@ -0,0 +1,354 @@ + + + + + + + +Ph-ec-meter: IScreen Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
IScreen Class Referenceabstract
+
+
+ +

Interface for screens handling. + More...

+ +

#include <IScreen.h>

+
+Inheritance diagram for IScreen:
+
+
+ + +Screen_oled + +
+ + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void display_start ()=0
 
virtual void calibration_mode ()=0
 
virtual void save_data ()=0
 
virtual void measurements_ph (const float temperature, const float ph)=0
 
virtual void measurements_ec (const float temperature, const float ec)=0
 
virtual void calibration_ph (const uint8_t sample, const float temperature)=0
 
virtual void calibration_ec (const double sample, uint8_t position, const float temperature)=0
 
+

Detailed Description

+

Interface for screens handling.

+

Member Function Documentation

+ +

◆ calibration_ec()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void IScreen::calibration_ec (const double sample,
uint8_t position,
const float temperature 
)
+
+pure virtual
+
+ +

Implemented in Screen_oled.

+ +
+
+ +

◆ calibration_mode()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void IScreen::calibration_mode ()
+
+pure virtual
+
+ +

Implemented in Screen_oled.

+ +
+
+ +

◆ calibration_ph()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void IScreen::calibration_ph (const uint8_t sample,
const float temperature 
)
+
+pure virtual
+
+ +

Implemented in Screen_oled.

+ +
+
+ +

◆ display_start()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void IScreen::display_start ()
+
+pure virtual
+
+ +

Implemented in Screen_oled.

+ +
+
+ +

◆ measurements_ec()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void IScreen::measurements_ec (const float temperature,
const float ec 
)
+
+pure virtual
+
+ +

Implemented in Screen_oled.

+ +
+
+ +

◆ measurements_ph()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void IScreen::measurements_ph (const float temperature,
const float ph 
)
+
+pure virtual
+
+ +

Implemented in Screen_oled.

+ +
+
+ +

◆ save_data()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void IScreen::save_data ()
+
+pure virtual
+
+ +

Implemented in Screen_oled.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/class_i_screen.png b/class_i_screen.png new file mode 100644 index 0000000000000000000000000000000000000000..66188c0c77fe0cf934b9dc04fbdbfab1f67f3872 GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^AwV3!!3-ofs4RL4q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg9X(wfLn;{G&b@oCS%JraKljmZ`%ll? zMSjlY+g7!)MO9r_w0~;eZnYMHJ&FuJHZ5V;7vu52yRe7ha*TKKU*p%(nP>Xj9{Zh6 zzM;KdzUud{^jXt1w+Gl&1iE*WZ2uC5b2^$0 z`rcd*PETS2J3>eE0LQ9T$vLZ5IWJIB+NZO!qeFkW$s2jWiI%UTFKKx{uDWNX;43Tt z+BQP&aGa)Sm`+(~(C)`~W)^d6+RnD%a=qpmd^Yd&C$l>qzx^(s^Qz)Ge`xBK-FJ9b zz1_kWKKI)6crWR;`2F_5zvn%BIlWj{-q^TSP*8o@(n6j5y6V^QUM@$b&!4nvmDOi< Y4{0HDO}lt0U;s0Cy85}Sb4q9e0Fbo2&j0`b literal 0 HcmV?d00001 diff --git a/class_linear__function-members.html b/class_linear__function-members.html new file mode 100644 index 0000000..82f9ded --- /dev/null +++ b/class_linear__function-members.html @@ -0,0 +1,80 @@ + + + + + + + +Ph-ec-meter: Member List + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
Linear_function Member List
+
+
+ +

This is the complete list of members for Linear_function, including all inherited members.

+ + + + +
find_unit_val(uint16_t analog_val)Linear_function
Linear_function(const Point points[2]={})Linear_function
set_points(const Point points[2])Linear_function
+ + + + diff --git a/class_linear__function.html b/class_linear__function.html new file mode 100644 index 0000000..f234516 --- /dev/null +++ b/class_linear__function.html @@ -0,0 +1,182 @@ + + + + + + + +Ph-ec-meter: Linear_function Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
Linear_function Class Reference
+
+
+ +

liner function store and calculate + More...

+ +

#include <Linear_function.h>

+ + + + + + + + + + + +

+Public Member Functions

 Linear_function (const Point points[2]={})
 Construct a new Linear_function::Linear_function object. More...
 
void set_points (const Point points[2])
 set points to calculate linear function More...
 
double find_unit_val (uint16_t analog_val)
 find point on linear function More...
 
+

Detailed Description

+

liner function store and calculate

+

Constructor & Destructor Documentation

+ +

◆ Linear_function()

+ +
+
+ + + + + + + + +
Linear_function::Linear_function (const Point points[2] = {})
+
+ +

Construct a new Linear_function::Linear_function object.

+
Parameters
+ + +
pointspoints to calculate linear function
+
+
+ +
+
+

Member Function Documentation

+ +

◆ find_unit_val()

+ +
+
+ + + + + + + + +
double Linear_function::find_unit_val (uint16_t analog_val)
+
+ +

find point on linear function

+
Parameters
+ + +
xinput variable to function
+
+
+
Returns
double: return value from function
+ +
+
+ +

◆ set_points()

+ +
+
+ + + + + + + + +
void Linear_function::set_points (const Point points[2])
+
+ +

set points to calculate linear function

+
Parameters
+ + +
pointspoints to set
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/class_screen__oled-members.html b/class_screen__oled-members.html new file mode 100644 index 0000000..db56dc2 --- /dev/null +++ b/class_screen__oled-members.html @@ -0,0 +1,86 @@ + + + + + + + +Ph-ec-meter: Member List + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
Screen_oled Member List
+
+
+ +

This is the complete list of members for Screen_oled, including all inherited members.

+ + + + + + + + + + +
calibration_ec(const double sample, uint8_t position, const float temperature) overrideScreen_oledvirtual
calibration_mode() overrideScreen_oledvirtual
calibration_ph(const uint8_t sample, const float temperature) overrideScreen_oledvirtual
display_start() overrideScreen_oledvirtual
measurements_ec(const float temperature, const float ec) overrideScreen_oledvirtual
measurements_ph(const float temperature, const float ph) overrideScreen_oledvirtual
save_data() overrideScreen_oledvirtual
Screen_oled()Screen_oled
~IScreen() (defined in IScreen)IScreeninline
+ + + + diff --git a/class_screen__oled.html b/class_screen__oled.html new file mode 100644 index 0000000..a37d6e1 --- /dev/null +++ b/class_screen__oled.html @@ -0,0 +1,380 @@ + + + + + + + +Ph-ec-meter: Screen_oled Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
Screen_oled Class Reference
+
+
+ +

OLED screen handling. + More...

+ +

#include <Screen_oled.h>

+
+Inheritance diagram for Screen_oled:
+
+
+ + +IScreen + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Screen_oled ()
 constructor
 
void display_start () override
 display start screen More...
 
void calibration_mode () override
 display calibration mode screen More...
 
void save_data () override
 display save point screen More...
 
void measurements_ph (const float temperature, const float ph) override
 display ph measurments screen More...
 
void measurements_ec (const float temperature, const float ec) override
 display ec measurments screen More...
 
void calibration_ph (const uint8_t sample, const float temperature) override
 display caloibration ph screen More...
 
void calibration_ec (const double sample, uint8_t position, const float temperature) override
 display caloibration ec screen More...
 
+

Detailed Description

+

OLED screen handling.

+

Member Function Documentation

+ +

◆ calibration_ec()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Screen_oled::calibration_ec (const double sample,
uint8_t position,
const float temperature 
)
+
+overridevirtual
+
+ +

display caloibration ec screen

+ +

Implements IScreen.

+ +
+
+ +

◆ calibration_mode()

+ +
+
+ + + + + +
+ + + + + + + +
void Screen_oled::calibration_mode ()
+
+overridevirtual
+
+ +

display calibration mode screen

+ +

Implements IScreen.

+ +
+
+ +

◆ calibration_ph()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Screen_oled::calibration_ph (const uint8_t sample,
const float temperature 
)
+
+overridevirtual
+
+ +

display caloibration ph screen

+ +

Implements IScreen.

+ +
+
+ +

◆ display_start()

+ +
+
+ + + + + +
+ + + + + + + +
void Screen_oled::display_start ()
+
+overridevirtual
+
+ +

display start screen

+ +

Implements IScreen.

+ +
+
+ +

◆ measurements_ec()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Screen_oled::measurements_ec (const float temperature,
const float ec 
)
+
+overridevirtual
+
+ +

display ec measurments screen

+ +

Implements IScreen.

+ +
+
+ +

◆ measurements_ph()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void Screen_oled::measurements_ph (const float temperature,
const float ph 
)
+
+overridevirtual
+
+ +

display ph measurments screen

+ +

Implements IScreen.

+ +
+
+ +

◆ save_data()

+ +
+
+ + + + + +
+ + + + + + + +
void Screen_oled::save_data ()
+
+overridevirtual
+
+ +

display save point screen

+ +

Implements IScreen.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/class_screen__oled.png b/class_screen__oled.png new file mode 100644 index 0000000000000000000000000000000000000000..0be2d982d928733a418827f8edfed0919b46aef8 GIT binary patch literal 429 zcmV;e0aE^nP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0003zNkldJ0?*rXWNc|E!lJ z&2uhI!q2R4q$%GD4rwswDXb%}H@$rQJ$8fGsWsu*IbSwzw4F4k3hK4FSLwmjc+bOH + + + + + + +Ph-ec-meter: Member List + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
Sd_card Member List
+
+
+ +

This is the complete list of members for Sd_card, including all inherited members.

+ + + + + + + + +
get_card_status()Sd_card
is_card_available()Sd_card
print_ec_calibration(Point points[2]) (defined in Sd_card)Sd_card
print_ph_calibration(Point points[2]) (defined in Sd_card)Sd_card
save_ec_measurement(const float temperature, const float ec)Sd_card
save_ph_measurement(const float temperature, const float ph)Sd_card
Sd_card()Sd_card
+ + + + diff --git a/class_sd__card.html b/class_sd__card.html new file mode 100644 index 0000000..f71858d --- /dev/null +++ b/class_sd__card.html @@ -0,0 +1,229 @@ + + + + + + + +Ph-ec-meter: Sd_card Class Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
Sd_card Class Reference
+
+
+ +

SD card handling. + More...

+ +

#include <Sd_card.h>

+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Sd_card ()
 Construct a new Sd_card::Sd_card object.
 
bool is_card_available ()
 check is sd card available and begin communication More...
 
bool get_card_status ()
 get is sd card available More...
 
void save_ph_measurement (const float temperature, const float ph)
 save ph measurement on sd More...
 
void save_ec_measurement (const float temperature, const float ec)
 save ec measurement on sd More...
 
+void print_ph_calibration (Point points[2])
 
+void print_ec_calibration (Point points[2])
 
+

Detailed Description

+

SD card handling.

+

Member Function Documentation

+ +

◆ get_card_status()

+ +
+
+ + + + + + + +
bool Sd_card::get_card_status ()
+
+ +

get is sd card available

+
Returns
is sd card available
+ +
+
+ +

◆ is_card_available()

+ +
+
+ + + + + + + +
bool Sd_card::is_card_available ()
+
+ +

check is sd card available and begin communication

+
Returns
is sd card available
+ +
+
+ +

◆ save_ec_measurement()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Sd_card::save_ec_measurement (const float temperature,
const float ec 
)
+
+ +

save ec measurement on sd

+
Parameters
+ + + +
temperatureactual temperature to save
ecactual ec value to save
+
+
+ +
+
+ +

◆ save_ph_measurement()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void Sd_card::save_ph_measurement (const float temperature,
const float ph 
)
+
+ +

save ph measurement on sd

+
Parameters
+ + + +
temperatureactual temperature to save
phactual ph value to save
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classes.html b/classes.html new file mode 100644 index 0000000..018a2de --- /dev/null +++ b/classes.html @@ -0,0 +1,98 @@ + + + + + + + +Ph-ec-meter: Class Index + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Class Index
+
+
+
B | C | D | I | L | P | S
+ +
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..840c32a --- /dev/null +++ b/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,118 @@ + + + + + + + +Ph-ec-meter: src Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
src Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  Buttons.cpp
 buttons handling
 
file  Buttons.h [code]
 buttons handling
 
file  Data_presentation.cpp
 send data via serial and present on screen
 
file  Data_presentation.h [code]
 send data via serial and present on screen
 
file  IScreen.h [code]
 Screens interface.
 
file  Linear_function.cpp
 saving and loading calibration data from memory
 
file  Linear_function.h [code]
 saving and loading calibration data from memory
 
file  main.cpp
 pH and EC meter
 
file  Screen_lcd.cpp
 16x2 lcd Screen
 
file  Screen_lcd.h [code]
 16x2 lcd Screen
 
file  Sd_card.cpp
 sd card handling
 
file  Sd_card.h [code]
 sd card handling
 
+
+ + + + diff --git a/doc.png b/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doxygen.css b/doxygen.css new file mode 100644 index 0000000..8e9cca3 --- /dev/null +++ b/doxygen.css @@ -0,0 +1,1827 @@ +/* The standard CSS for doxygen 1.9.2 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #A3B4D7; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 200% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 90% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +Ph-ec-meter: File List + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + +
  src
 Buttons.cppButtons handling
 Buttons.hButtons handling
 Calibration_data_memory.h
 Config.h
 Data_presentation.cppSend data via serial and present on screen
 Data_presentation.hSend data via serial and present on screen
 IScreen.hScreens interface
 Linear_function.cppSaving and loading calibration data from memory
 Linear_function.hSaving and loading calibration data from memory
 main.cppPH and EC meter
 Screen_lcd.cpp16x2 lcd Screen
 Screen_lcd.h16x2 lcd Screen
 Screen_oled.h
 Sd_card.cppSd card handling
 Sd_card.hSd card handling
+
+
+ + + + diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/functions.html b/functions.html new file mode 100644 index 0000000..075675e --- /dev/null +++ b/functions.html @@ -0,0 +1,97 @@ + + + + + + + +Ph-ec-meter: Class Members + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 0000000..18d43a2 --- /dev/null +++ b/functions_func.html @@ -0,0 +1,97 @@ + + + + + + + +Ph-ec-meter: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/globals.html b/globals.html new file mode 100644 index 0000000..35186da --- /dev/null +++ b/globals.html @@ -0,0 +1,98 @@ + + + + + + + +Ph-ec-meter: File Members + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented file members with links to the documentation:
+
+ + + + diff --git a/globals_enum.html b/globals_enum.html new file mode 100644 index 0000000..a67b6c2 --- /dev/null +++ b/globals_enum.html @@ -0,0 +1,75 @@ + + + + + + + +Ph-ec-meter: File Members + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/globals_func.html b/globals_func.html new file mode 100644 index 0000000..7c83690 --- /dev/null +++ b/globals_func.html @@ -0,0 +1,85 @@ + + + + + + + +Ph-ec-meter: File Members + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/globals_vars.html b/globals_vars.html new file mode 100644 index 0000000..5ce49eb --- /dev/null +++ b/globals_vars.html @@ -0,0 +1,84 @@ + + + + + + + +Ph-ec-meter: File Members + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 0000000..d089bcb --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,86 @@ + + + + + + + +Ph-ec-meter: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + + + +
 CButtonsButtons action handling
 CCalibration_data_memorySaving and reading calibration from sd card
 CData_presentationPresentation data on screen and serial port
 CIScreenInterface for screens handling
 CScreen_oledOLED screen handling
 CLinear_functionLiner function store and calculate
 CPointPoint structure
 CSd_cardSD card handling
+
+
+ + + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..ebb691d --- /dev/null +++ b/index.html @@ -0,0 +1,81 @@ + + + + + + + +Ph-ec-meter: pH EC metr + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
pH EC metr
+
+
+

+State machine

+
+ +
+

*/

+
+
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..c9ed3d9 --- /dev/null +++ b/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/main_8cpp.html b/main_8cpp.html new file mode 100644 index 0000000..52e6e60 --- /dev/null +++ b/main_8cpp.html @@ -0,0 +1,403 @@ + + + + + + + +Ph-ec-meter: src/main.cpp File Reference + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
main.cpp File Reference
+
+
+ +

pH and EC meter +More...

+
#include "Buttons.h"
+#include "Calibration_data_memory.h"
+#include "Config.h"
+#include "DS18B20.h"
+#include "Data_presentation.h"
+#include "Linear_function.h"
+#include "OneWire.h"
+#include "Sd_card.h"
+#include <Arduino.h>
+#include <EEPROM.h>
+#include <math.h>
+
+ + + + +

+Enumerations

enum class  Device_state {
+  startup +, display_measure_ph +, display_measure_ec +, calibration_ph +,
+  calibration_ec +
+ }
 < possible device state
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+void ds_thermometer_init ()
 find thermometer on one wire
 
+void button_r_pressed ()
 right button press interrupt
 
+void button_l_pressed ()
 left button press interrupt
 
void measurements_ph (const Buttons_action action)
 ph measure More...
 
void measurements_ec (const Buttons_action action)
 ec measure More...
 
bool save_sample (Point *samples, double sample)
 saving next point in characteristic More...
 
double load_ph_point (uint8_t point)
 load old ph calibration unit value More...
 
void calibration_ph (const Buttons_action action)
 calibration ph procedure More...
 
double load_ec_point (uint8_t point)
 load old ec calibration unit value More...
 
void calibration_ec (const Buttons_action action)
 calibration ec procedure More...
 
+void setup ()
 setup on startup
 
+void loop ()
 main loop with state machine
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

+byte m_ds_address [8]
 ds18b20 thermometer one wire address
 
+OneWire m_one_wire = OneWire(Config::pin_thermometer)
 one wire bus
 
+DS18B20 m_ds_sensor = DS18B20(Config::pin_thermometer)
 ds18b20 thermometer
 
+Data_presentation m_data_presentation
 screen and serial handling
 
+Calibration_data_memory m_memory
 memory handling
 
+Sd_card m_sd_card
 sd crad handling
 
+Device_state m_device_state = Device_state::startup
 actual device state
 
+volatile bool m_up_button_pressed = false
 right button pressed flag
 
+volatile bool m_dwn_button_pressed = false
 left button pressed flag
 
+Linear_function ph_probe_characteristic
 ph probe linear characteristic
 
+Linear_function ec_probe_characteristic
 ec probe linear characteristic
 
+

Detailed Description

+

pH and EC meter

+
Author
by Szymon Markiewicz (https://github.com/InzynierDomu/)
+
Date
2022-06
+

Function Documentation

+ +

◆ calibration_ec()

+ +
+
+ + + + + + + + +
void calibration_ec (const Buttons_action action)
+
+ +

calibration ec procedure

+
Parameters
+ + +
actionbuttons action
+
+
+ +
+
+ +

◆ calibration_ph()

+ +
+
+ + + + + + + + +
void calibration_ph (const Buttons_action action)
+
+ +

calibration ph procedure

+
Parameters
+ + +
actionbuttons action
+
+
+ +
+
+ +

◆ load_ec_point()

+ +
+
+ + + + + + + + +
double load_ec_point (uint8_t point)
+
+ +

load old ec calibration unit value

+
Parameters
+ + +
pointfirst or second point
+
+
+
Returns
double unit value for specify point
+ +
+
+ +

◆ load_ph_point()

+ +
+
+ + + + + + + + +
double load_ph_point (uint8_t point)
+
+ +

load old ph calibration unit value

+
Parameters
+ + +
pointfirst or second point
+
+
+
Returns
double unit value for specify point
+ +
+
+ +

◆ measurements_ec()

+ +
+
+ + + + + + + + +
void measurements_ec (const Buttons_action action)
+
+ +

ec measure

+
Parameters
+ + +
actionbuttons action
+
+
+ +
+
+ +

◆ measurements_ph()

+ +
+
+ + + + + + + + +
void measurements_ph (const Buttons_action action)
+
+ +

ph measure

+
Parameters
+ + +
actionbuttons action
+
+
+ +
+
+ +

◆ save_sample()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool save_sample (Pointsamples,
double sample 
)
+
+ +

saving next point in characteristic

+
Parameters
+ + + +
samplespoints to characteristic
samplenew reference value
+
+
+
Returns
is calibration finished
+ +
+
+
+ + + + diff --git a/md_src_docs_index.html b/md_src_docs_index.html new file mode 100644 index 0000000..7e7cb47 --- /dev/null +++ b/md_src_docs_index.html @@ -0,0 +1,76 @@ + + + + + + + +Ph-ec-meter: docs_index + + + + + + + + + +
+
+ + + + + + +
+
Ph-ec-meter +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
docs_index
+
+
+

/*!

+
+
+ + + + diff --git a/menu.js b/menu.js new file mode 100644 index 0000000..54e81cf --- /dev/null +++ b/menu.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + var searchBox; + if (searchEnabled) { + if (serverSide) { + searchBox='
'+ + '
'+ + '
'+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBox='
'+ + ''+ + ''+ + ''+ + ''+ + ''+ + '' + '' + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBox) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBox); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBox); + $('#searchBoxPos2').show(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 0000000..ac90749 --- /dev/null +++ b/menudata.js @@ -0,0 +1,41 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html"}, +{text:"Functions",url:"functions_func.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Functions",url:"globals_func.html"}, +{text:"Variables",url:"globals_vars.html"}, +{text:"Enumerations",url:"globals_enum.html"}]}]}]} diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +Ph-ec-meter: Related Pages + + + + + + + + + +
    +
    + + + + + + +
    +
    Ph-ec-meter +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     docs_index
    +
    +
    + + + + diff --git a/search/all_0.html b/search/all_0.html new file mode 100644 index 0000000..65f85b5 --- /dev/null +++ b/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 0000000..1905734 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['button_5fl_5fpressed_0',['button_l_pressed',['../main_8cpp.html#aa47c0aff9b0e3765854f578548126cbc',1,'main.cpp']]], + ['button_5fr_5fpressed_1',['button_r_pressed',['../main_8cpp.html#a157e346024ede1fc3eb4c55be54decf7',1,'main.cpp']]], + ['buttons_2',['Buttons',['../class_buttons.html',1,'']]], + ['buttons_2ecpp_3',['Buttons.cpp',['../_buttons_8cpp.html',1,'']]], + ['buttons_2eh_4',['Buttons.h',['../_buttons_8h.html',1,'']]], + ['buttons_5faction_5',['Buttons_action',['../_buttons_8h.html#aaa653f99bab31207d449344a4c435534',1,'Buttons.h']]] +]; diff --git a/search/all_1.html b/search/all_1.html new file mode 100644 index 0000000..af53dab --- /dev/null +++ b/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 0000000..4c9bd35 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['calibration_5fdata_5fmemory_0',['Calibration_data_memory',['../class_calibration__data__memory.html',1,'']]], + ['calibration_5fec_1',['calibration_ec',['../class_data__presentation.html#a5e8f84997d4f61e30a5c74a86e5311c4',1,'Data_presentation::calibration_ec()'],['../class_screen__oled.html#a8a3721ab66864d1b2aaf105a39c662ee',1,'Screen_oled::calibration_ec()'],['../main_8cpp.html#a69443df5ab3e87cc601e8c47c35e04ac',1,'calibration_ec(): main.cpp']]], + ['calibration_5fmode_2',['calibration_mode',['../class_data__presentation.html#a174f6589aa9ab800c5e6deb2b64cc188',1,'Data_presentation::calibration_mode()'],['../class_screen__oled.html#a0a464a77d7095d5586a3b9f05fbde811',1,'Screen_oled::calibration_mode()']]], + ['calibration_5fph_3',['calibration_ph',['../class_data__presentation.html#a5103b5c9fbb303098abb5beab3cd3f42',1,'Data_presentation::calibration_ph()'],['../class_screen__oled.html#aaac6236c5b4e2b0c15e7cede05c0f323',1,'Screen_oled::calibration_ph()'],['../main_8cpp.html#a698371d9bfa198be645e292b57433e02',1,'calibration_ph(): main.cpp']]], + ['check_5fbuttons_4',['check_buttons',['../class_buttons.html#a6c54eb4fb91f7e68eebad09a48b0dd6f',1,'Buttons']]] +]; diff --git a/search/all_2.html b/search/all_2.html new file mode 100644 index 0000000..f8fe8ec --- /dev/null +++ b/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 0000000..ccad01a --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['data_5fpresentation_0',['Data_presentation',['../class_data__presentation.html',1,'Data_presentation'],['../class_data__presentation.html#a2115085a1bfc11623df5bda781c89db8',1,'Data_presentation::Data_presentation()']]], + ['data_5fpresentation_2ecpp_1',['Data_presentation.cpp',['../_data__presentation_8cpp.html',1,'']]], + ['data_5fpresentation_2eh_2',['Data_presentation.h',['../_data__presentation_8h.html',1,'']]], + ['device_5fstate_3',['Device_state',['../main_8cpp.html#af48d747003644179fca8a130508bbc82',1,'main.cpp']]], + ['display_5fstart_4',['display_start',['../class_screen__oled.html#abd7b729f694cfda994b34a3ca9674532',1,'Screen_oled']]], + ['docs_5findex_5',['docs_index',['../md_src_docs_index.html',1,'']]], + ['ds_5fthermometer_5finit_6',['ds_thermometer_init',['../main_8cpp.html#a6ba32d2a088d19f650e226940c6c638e',1,'main.cpp']]] +]; diff --git a/search/all_3.html b/search/all_3.html new file mode 100644 index 0000000..fdb6e19 --- /dev/null +++ b/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 0000000..c8e85f5 --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ec_5fprobe_5fcharacteristic_0',['ec_probe_characteristic',['../main_8cpp.html#a09e139c95c2f5c49f758721c73c2e3c4',1,'main.cpp']]] +]; diff --git a/search/all_4.html b/search/all_4.html new file mode 100644 index 0000000..1a50c46 --- /dev/null +++ b/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 0000000..c8ec1f5 --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['find_5funit_5fval_0',['find_unit_val',['../class_linear__function.html#a3d8685b7cebe95bbbe0f887d808a029a',1,'Linear_function']]] +]; diff --git a/search/all_5.html b/search/all_5.html new file mode 100644 index 0000000..4dce5e7 --- /dev/null +++ b/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 0000000..d7d950b --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['get_5fcard_5fstatus_0',['get_card_status',['../class_sd__card.html#a111a0128d46e063bcd38ea6ad66bd25f',1,'Sd_card']]] +]; diff --git a/search/all_6.html b/search/all_6.html new file mode 100644 index 0000000..bb28b19 --- /dev/null +++ b/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 0000000..8c47a22 --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['init_0',['init',['../class_data__presentation.html#a7c20ba1182f0b47a6803c57338dce86b',1,'Data_presentation']]], + ['is_5fcard_5favailable_1',['is_card_available',['../class_sd__card.html#a49fd472f166e2a35f55f5834d8240841',1,'Sd_card']]], + ['iscreen_2',['IScreen',['../class_i_screen.html',1,'']]], + ['iscreen_2eh_3',['IScreen.h',['../_i_screen_8h.html',1,'']]] +]; diff --git a/search/all_7.html b/search/all_7.html new file mode 100644 index 0000000..ee4017e --- /dev/null +++ b/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 0000000..7b73027 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['linear_5ffunction_0',['Linear_function',['../class_linear__function.html',1,'Linear_function'],['../class_linear__function.html#a147c4b1f9da47883050155e67e4a08f7',1,'Linear_function::Linear_function()']]], + ['linear_5ffunction_2ecpp_1',['Linear_function.cpp',['../_linear__function_8cpp.html',1,'']]], + ['linear_5ffunction_2eh_2',['Linear_function.h',['../_linear__function_8h.html',1,'']]], + ['load_5fec_5fcalibration_3',['load_ec_calibration',['../class_calibration__data__memory.html#ae5e162aa346f74b7dc575ee49563e2d1',1,'Calibration_data_memory']]], + ['load_5fec_5fpoint_4',['load_ec_point',['../main_8cpp.html#a3a7cfce2bedd6203001f9c02489f8886',1,'main.cpp']]], + ['load_5fph_5fcalibration_5',['load_ph_calibration',['../class_calibration__data__memory.html#a31ec5a32e1148eaf443e7365dc18aa4b',1,'Calibration_data_memory']]], + ['load_5fph_5fpoint_6',['load_ph_point',['../main_8cpp.html#a3ffddf6d454c1483c35a764c3ba2a3f0',1,'main.cpp']]], + ['loop_7',['loop',['../main_8cpp.html#afe461d27b9c48d5921c00d521181f12f',1,'main.cpp']]] +]; diff --git a/search/all_8.html b/search/all_8.html new file mode 100644 index 0000000..e2c6307 --- /dev/null +++ b/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 0000000..36ef681 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['m_5fdata_5fpresentation_0',['m_data_presentation',['../main_8cpp.html#ac7f739ac37accc300104cbad0409ed89',1,'main.cpp']]], + ['m_5fdevice_5fstate_1',['m_device_state',['../main_8cpp.html#acba40964937e2cce7df8901e6f6c1819',1,'main.cpp']]], + ['m_5fds_5faddress_2',['m_ds_address',['../main_8cpp.html#af46e0db802fbd00899d5bad05b9b7a4b',1,'main.cpp']]], + ['m_5fds_5fsensor_3',['m_ds_sensor',['../main_8cpp.html#aa3c944eee1996c88fceb031a11027fc9',1,'main.cpp']]], + ['m_5fdwn_5fbutton_5fpressed_4',['m_dwn_button_pressed',['../main_8cpp.html#aba63d02f6d114f16632365518854a0d0',1,'main.cpp']]], + ['m_5fmemory_5',['m_memory',['../main_8cpp.html#aa48bf39bcb8588333fd430a63a858a72',1,'main.cpp']]], + ['m_5fone_5fwire_6',['m_one_wire',['../main_8cpp.html#a9110b863b78d70cf8ffba96c90e31b75',1,'main.cpp']]], + ['m_5fsd_5fcard_7',['m_sd_card',['../main_8cpp.html#a1380cf51f72fb2cd35080c073d65395a',1,'main.cpp']]], + ['m_5fup_5fbutton_5fpressed_8',['m_up_button_pressed',['../main_8cpp.html#aa7181afcac47d8ac3b332c8cc9096044',1,'main.cpp']]], + ['main_2ecpp_9',['main.cpp',['../main_8cpp.html',1,'']]], + ['measurements_5fec_10',['measurements_ec',['../class_data__presentation.html#a22bce4254b831fae98418987b0f14182',1,'Data_presentation::measurements_ec()'],['../class_screen__oled.html#aa5a1914a6bcc462a015b831413d36094',1,'Screen_oled::measurements_ec()'],['../main_8cpp.html#a16b9febb8dc61547332a4dd312e0e98f',1,'measurements_ec(): main.cpp']]], + ['measurements_5fph_11',['measurements_ph',['../class_data__presentation.html#acc2b0b86638edea3a3b0299acdc588b9',1,'Data_presentation::measurements_ph()'],['../class_screen__oled.html#aadea930b243c6ea9f021a771164bca2a',1,'Screen_oled::measurements_ph()'],['../main_8cpp.html#a26a244cb529ea3274e01584ba2b21381',1,'measurements_ph(): main.cpp']]] +]; diff --git a/search/all_9.html b/search/all_9.html new file mode 100644 index 0000000..768d5c9 --- /dev/null +++ b/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 0000000..1e6d97d --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ph_20ec_20metr_0',['pH EC metr',['../index.html',1,'']]], + ['ph_5fprobe_5fcharacteristic_1',['ph_probe_characteristic',['../main_8cpp.html#a5f69152f62e2ab2342b6263714ed323e',1,'main.cpp']]], + ['point_2',['Point',['../struct_point.html',1,'Point'],['../struct_point.html#acb9659c3a184153cc74ca9597dc65284',1,'Point::Point()']]] +]; diff --git a/search/all_a.html b/search/all_a.html new file mode 100644 index 0000000..e3ec122 --- /dev/null +++ b/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 0000000..a99dc04 --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['save_5fdata_0',['save_data',['../class_data__presentation.html#aa410558d73bf4d8884d5983aa373c3a4',1,'Data_presentation::save_data()'],['../class_screen__oled.html#aa155964e67fd898060fb44ac1ec07062',1,'Screen_oled::save_data()']]], + ['save_5fec_5fcalibration_1',['save_ec_calibration',['../class_calibration__data__memory.html#a652a5bc3bf9a64f2aa4d85a1771a5363',1,'Calibration_data_memory']]], + ['save_5fec_5fmeasurement_2',['save_ec_measurement',['../class_sd__card.html#a6b0ee6654f17c2fda4c645169d7c3816',1,'Sd_card']]], + ['save_5fph_5fcalibration_3',['save_ph_calibration',['../class_calibration__data__memory.html#ae92a0b8a61d24d2615763172f79107dc',1,'Calibration_data_memory']]], + ['save_5fph_5fmeasurement_4',['save_ph_measurement',['../class_sd__card.html#a8c4a2d7ba77b077aae047bcf4ac1e7dc',1,'Sd_card']]], + ['save_5fsample_5',['save_sample',['../main_8cpp.html#a0a4ba7e89f6fec7b8f11054d42f62ecf',1,'main.cpp']]], + ['screen_5flcd_2ecpp_6',['Screen_lcd.cpp',['../_screen__lcd_8cpp.html',1,'']]], + ['screen_5flcd_2eh_7',['Screen_lcd.h',['../_screen__lcd_8h.html',1,'']]], + ['screen_5foled_8',['Screen_oled',['../class_screen__oled.html',1,'Screen_oled'],['../class_screen__oled.html#af8f016ed428f7206c5f087c1f639f8ce',1,'Screen_oled::Screen_oled()']]], + ['sd_5fcard_9',['Sd_card',['../class_sd__card.html',1,'Sd_card'],['../class_sd__card.html#a2885f6f429766e40dce8aa1db9171855',1,'Sd_card::Sd_card()']]], + ['sd_5fcard_2ecpp_10',['Sd_card.cpp',['../_sd__card_8cpp.html',1,'']]], + ['sd_5fcard_2eh_11',['Sd_card.h',['../_sd__card_8h.html',1,'']]], + ['set_5fpoints_12',['set_points',['../class_linear__function.html#aaedf539e62cc5240d87f8df145444cec',1,'Linear_function']]], + ['setup_13',['setup',['../main_8cpp.html#a4fc01d736fe50cf5b977f755b675f11d',1,'main.cpp']]] +]; diff --git a/search/classes_0.html b/search/classes_0.html new file mode 100644 index 0000000..4112ea7 --- /dev/null +++ b/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 0000000..dbebe0f --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['buttons_0',['Buttons',['../class_buttons.html',1,'']]] +]; diff --git a/search/classes_1.html b/search/classes_1.html new file mode 100644 index 0000000..1f92ba8 --- /dev/null +++ b/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 0000000..3b71a67 --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['calibration_5fdata_5fmemory_0',['Calibration_data_memory',['../class_calibration__data__memory.html',1,'']]] +]; diff --git a/search/classes_2.html b/search/classes_2.html new file mode 100644 index 0000000..b65ed72 --- /dev/null +++ b/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 0000000..4512b1c --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['data_5fpresentation_0',['Data_presentation',['../class_data__presentation.html',1,'']]] +]; diff --git a/search/classes_3.html b/search/classes_3.html new file mode 100644 index 0000000..11b019a --- /dev/null +++ b/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 0000000..831bb44 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['iscreen_0',['IScreen',['../class_i_screen.html',1,'']]] +]; diff --git a/search/classes_4.html b/search/classes_4.html new file mode 100644 index 0000000..56c3689 --- /dev/null +++ b/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 0000000..5a6a310 --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['linear_5ffunction_0',['Linear_function',['../class_linear__function.html',1,'']]] +]; diff --git a/search/classes_5.html b/search/classes_5.html new file mode 100644 index 0000000..9b2fcaa --- /dev/null +++ b/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 0000000..4598438 --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['point_0',['Point',['../struct_point.html',1,'']]] +]; diff --git a/search/classes_6.html b/search/classes_6.html new file mode 100644 index 0000000..16163e7 --- /dev/null +++ b/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 0000000..a4abb34 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['screen_5foled_0',['Screen_oled',['../class_screen__oled.html',1,'']]], + ['sd_5fcard_1',['Sd_card',['../class_sd__card.html',1,'']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/search/enums_0.html b/search/enums_0.html new file mode 100644 index 0000000..3071d59 --- /dev/null +++ b/search/enums_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 0000000..4504722 --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['buttons_5faction_0',['Buttons_action',['../_buttons_8h.html#aaa653f99bab31207d449344a4c435534',1,'Buttons.h']]] +]; diff --git a/search/enums_1.html b/search/enums_1.html new file mode 100644 index 0000000..4b930ac --- /dev/null +++ b/search/enums_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 0000000..8c38afc --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['device_5fstate_0',['Device_state',['../main_8cpp.html#af48d747003644179fca8a130508bbc82',1,'main.cpp']]] +]; diff --git a/search/files_0.html b/search/files_0.html new file mode 100644 index 0000000..e284084 --- /dev/null +++ b/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 0000000..49fab0a --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['buttons_2ecpp_0',['Buttons.cpp',['../_buttons_8cpp.html',1,'']]], + ['buttons_2eh_1',['Buttons.h',['../_buttons_8h.html',1,'']]] +]; diff --git a/search/files_1.html b/search/files_1.html new file mode 100644 index 0000000..2e6e1e1 --- /dev/null +++ b/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_1.js b/search/files_1.js new file mode 100644 index 0000000..eac809d --- /dev/null +++ b/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['data_5fpresentation_2ecpp_0',['Data_presentation.cpp',['../_data__presentation_8cpp.html',1,'']]], + ['data_5fpresentation_2eh_1',['Data_presentation.h',['../_data__presentation_8h.html',1,'']]] +]; diff --git a/search/files_2.html b/search/files_2.html new file mode 100644 index 0000000..7a0a2e1 --- /dev/null +++ b/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_2.js b/search/files_2.js new file mode 100644 index 0000000..fef2fe9 --- /dev/null +++ b/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['iscreen_2eh_0',['IScreen.h',['../_i_screen_8h.html',1,'']]] +]; diff --git a/search/files_3.html b/search/files_3.html new file mode 100644 index 0000000..418f304 --- /dev/null +++ b/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_3.js b/search/files_3.js new file mode 100644 index 0000000..be0409a --- /dev/null +++ b/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['linear_5ffunction_2ecpp_0',['Linear_function.cpp',['../_linear__function_8cpp.html',1,'']]], + ['linear_5ffunction_2eh_1',['Linear_function.h',['../_linear__function_8h.html',1,'']]] +]; diff --git a/search/files_4.html b/search/files_4.html new file mode 100644 index 0000000..d5e4577 --- /dev/null +++ b/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_4.js b/search/files_4.js new file mode 100644 index 0000000..695b4fd --- /dev/null +++ b/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2ecpp_0',['main.cpp',['../main_8cpp.html',1,'']]] +]; diff --git a/search/files_5.html b/search/files_5.html new file mode 100644 index 0000000..c1ae5d6 --- /dev/null +++ b/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/files_5.js b/search/files_5.js new file mode 100644 index 0000000..1fc1cd9 --- /dev/null +++ b/search/files_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['screen_5flcd_2ecpp_0',['Screen_lcd.cpp',['../_screen__lcd_8cpp.html',1,'']]], + ['screen_5flcd_2eh_1',['Screen_lcd.h',['../_screen__lcd_8h.html',1,'']]], + ['sd_5fcard_2ecpp_2',['Sd_card.cpp',['../_sd__card_8cpp.html',1,'']]], + ['sd_5fcard_2eh_3',['Sd_card.h',['../_sd__card_8h.html',1,'']]] +]; diff --git a/search/functions_0.html b/search/functions_0.html new file mode 100644 index 0000000..ce45090 --- /dev/null +++ b/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 0000000..686f29c --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['button_5fl_5fpressed_0',['button_l_pressed',['../main_8cpp.html#aa47c0aff9b0e3765854f578548126cbc',1,'main.cpp']]], + ['button_5fr_5fpressed_1',['button_r_pressed',['../main_8cpp.html#a157e346024ede1fc3eb4c55be54decf7',1,'main.cpp']]] +]; diff --git a/search/functions_1.html b/search/functions_1.html new file mode 100644 index 0000000..9b97441 --- /dev/null +++ b/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 0000000..5875b9f --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['calibration_5fec_0',['calibration_ec',['../class_data__presentation.html#a5e8f84997d4f61e30a5c74a86e5311c4',1,'Data_presentation::calibration_ec()'],['../class_screen__oled.html#a8a3721ab66864d1b2aaf105a39c662ee',1,'Screen_oled::calibration_ec()'],['../main_8cpp.html#a69443df5ab3e87cc601e8c47c35e04ac',1,'calibration_ec(): main.cpp']]], + ['calibration_5fmode_1',['calibration_mode',['../class_data__presentation.html#a174f6589aa9ab800c5e6deb2b64cc188',1,'Data_presentation::calibration_mode()'],['../class_screen__oled.html#a0a464a77d7095d5586a3b9f05fbde811',1,'Screen_oled::calibration_mode()']]], + ['calibration_5fph_2',['calibration_ph',['../class_data__presentation.html#a5103b5c9fbb303098abb5beab3cd3f42',1,'Data_presentation::calibration_ph()'],['../class_screen__oled.html#aaac6236c5b4e2b0c15e7cede05c0f323',1,'Screen_oled::calibration_ph()'],['../main_8cpp.html#a698371d9bfa198be645e292b57433e02',1,'calibration_ph(): main.cpp']]], + ['check_5fbuttons_3',['check_buttons',['../class_buttons.html#a6c54eb4fb91f7e68eebad09a48b0dd6f',1,'Buttons']]] +]; diff --git a/search/functions_2.html b/search/functions_2.html new file mode 100644 index 0000000..43aea53 --- /dev/null +++ b/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 0000000..7c6d953 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['data_5fpresentation_0',['Data_presentation',['../class_data__presentation.html#a2115085a1bfc11623df5bda781c89db8',1,'Data_presentation']]], + ['display_5fstart_1',['display_start',['../class_screen__oled.html#abd7b729f694cfda994b34a3ca9674532',1,'Screen_oled']]], + ['ds_5fthermometer_5finit_2',['ds_thermometer_init',['../main_8cpp.html#a6ba32d2a088d19f650e226940c6c638e',1,'main.cpp']]] +]; diff --git a/search/functions_3.html b/search/functions_3.html new file mode 100644 index 0000000..6c0090f --- /dev/null +++ b/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 0000000..c8ec1f5 --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['find_5funit_5fval_0',['find_unit_val',['../class_linear__function.html#a3d8685b7cebe95bbbe0f887d808a029a',1,'Linear_function']]] +]; diff --git a/search/functions_4.html b/search/functions_4.html new file mode 100644 index 0000000..2966937 --- /dev/null +++ b/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 0000000..d7d950b --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['get_5fcard_5fstatus_0',['get_card_status',['../class_sd__card.html#a111a0128d46e063bcd38ea6ad66bd25f',1,'Sd_card']]] +]; diff --git a/search/functions_5.html b/search/functions_5.html new file mode 100644 index 0000000..ad6be4c --- /dev/null +++ b/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 0000000..bd2418f --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['init_0',['init',['../class_data__presentation.html#a7c20ba1182f0b47a6803c57338dce86b',1,'Data_presentation']]], + ['is_5fcard_5favailable_1',['is_card_available',['../class_sd__card.html#a49fd472f166e2a35f55f5834d8240841',1,'Sd_card']]] +]; diff --git a/search/functions_6.html b/search/functions_6.html new file mode 100644 index 0000000..ebb5d2b --- /dev/null +++ b/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 0000000..28abda9 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['linear_5ffunction_0',['Linear_function',['../class_linear__function.html#a147c4b1f9da47883050155e67e4a08f7',1,'Linear_function']]], + ['load_5fec_5fcalibration_1',['load_ec_calibration',['../class_calibration__data__memory.html#ae5e162aa346f74b7dc575ee49563e2d1',1,'Calibration_data_memory']]], + ['load_5fec_5fpoint_2',['load_ec_point',['../main_8cpp.html#a3a7cfce2bedd6203001f9c02489f8886',1,'main.cpp']]], + ['load_5fph_5fcalibration_3',['load_ph_calibration',['../class_calibration__data__memory.html#a31ec5a32e1148eaf443e7365dc18aa4b',1,'Calibration_data_memory']]], + ['load_5fph_5fpoint_4',['load_ph_point',['../main_8cpp.html#a3ffddf6d454c1483c35a764c3ba2a3f0',1,'main.cpp']]], + ['loop_5',['loop',['../main_8cpp.html#afe461d27b9c48d5921c00d521181f12f',1,'main.cpp']]] +]; diff --git a/search/functions_7.html b/search/functions_7.html new file mode 100644 index 0000000..eb4b6cc --- /dev/null +++ b/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 0000000..1485386 --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['measurements_5fec_0',['measurements_ec',['../class_data__presentation.html#a22bce4254b831fae98418987b0f14182',1,'Data_presentation::measurements_ec()'],['../class_screen__oled.html#aa5a1914a6bcc462a015b831413d36094',1,'Screen_oled::measurements_ec()'],['../main_8cpp.html#a16b9febb8dc61547332a4dd312e0e98f',1,'measurements_ec(): main.cpp']]], + ['measurements_5fph_1',['measurements_ph',['../class_data__presentation.html#acc2b0b86638edea3a3b0299acdc588b9',1,'Data_presentation::measurements_ph()'],['../class_screen__oled.html#aadea930b243c6ea9f021a771164bca2a',1,'Screen_oled::measurements_ph()'],['../main_8cpp.html#a26a244cb529ea3274e01584ba2b21381',1,'measurements_ph(): main.cpp']]] +]; diff --git a/search/functions_8.html b/search/functions_8.html new file mode 100644 index 0000000..e25ede7 --- /dev/null +++ b/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 0000000..aac8c97 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['point_0',['Point',['../struct_point.html#acb9659c3a184153cc74ca9597dc65284',1,'Point']]] +]; diff --git a/search/functions_9.html b/search/functions_9.html new file mode 100644 index 0000000..25c3a65 --- /dev/null +++ b/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 0000000..2f54325 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['save_5fdata_0',['save_data',['../class_data__presentation.html#aa410558d73bf4d8884d5983aa373c3a4',1,'Data_presentation::save_data()'],['../class_screen__oled.html#aa155964e67fd898060fb44ac1ec07062',1,'Screen_oled::save_data()']]], + ['save_5fec_5fcalibration_1',['save_ec_calibration',['../class_calibration__data__memory.html#a652a5bc3bf9a64f2aa4d85a1771a5363',1,'Calibration_data_memory']]], + ['save_5fec_5fmeasurement_2',['save_ec_measurement',['../class_sd__card.html#a6b0ee6654f17c2fda4c645169d7c3816',1,'Sd_card']]], + ['save_5fph_5fcalibration_3',['save_ph_calibration',['../class_calibration__data__memory.html#ae92a0b8a61d24d2615763172f79107dc',1,'Calibration_data_memory']]], + ['save_5fph_5fmeasurement_4',['save_ph_measurement',['../class_sd__card.html#a8c4a2d7ba77b077aae047bcf4ac1e7dc',1,'Sd_card']]], + ['save_5fsample_5',['save_sample',['../main_8cpp.html#a0a4ba7e89f6fec7b8f11054d42f62ecf',1,'main.cpp']]], + ['screen_5foled_6',['Screen_oled',['../class_screen__oled.html#af8f016ed428f7206c5f087c1f639f8ce',1,'Screen_oled']]], + ['sd_5fcard_7',['Sd_card',['../class_sd__card.html#a2885f6f429766e40dce8aa1db9171855',1,'Sd_card']]], + ['set_5fpoints_8',['set_points',['../class_linear__function.html#aaedf539e62cc5240d87f8df145444cec',1,'Linear_function']]], + ['setup_9',['setup',['../main_8cpp.html#a4fc01d736fe50cf5b977f755b675f11d',1,'main.cpp']]] +]; diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/nomatches.html b/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/search/pages_0.html b/search/pages_0.html new file mode 100644 index 0000000..34ca499 --- /dev/null +++ b/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_0.js b/search/pages_0.js new file mode 100644 index 0000000..93b8d44 --- /dev/null +++ b/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['docs_5findex_0',['docs_index',['../md_src_docs_index.html',1,'']]] +]; diff --git a/search/pages_1.html b/search/pages_1.html new file mode 100644 index 0000000..37ed0d6 --- /dev/null +++ b/search/pages_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/pages_1.js b/search/pages_1.js new file mode 100644 index 0000000..1d3e4ac --- /dev/null +++ b/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ph_20ec_20metr_0',['pH EC metr',['../index.html',1,'']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 0000000..648a792 --- /dev/null +++ b/search/search.css @@ -0,0 +1,263 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 19px; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 0000000..ac8055d --- /dev/null +++ b/search/search.js @@ -0,0 +1,794 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var width = 400; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/search/search_r.png b/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/search/searchdata.js b/search/searchdata.js new file mode 100644 index 0000000..5827cee --- /dev/null +++ b/search/searchdata.js @@ -0,0 +1,33 @@ +var indexSectionsWithContent = +{ + 0: "bcdefgilmps", + 1: "bcdilps", + 2: "bdilms", + 3: "bcdfgilmps", + 4: "emp", + 5: "bd", + 6: "dp" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "files", + 3: "functions", + 4: "variables", + 5: "enums", + 6: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Files", + 3: "Functions", + 4: "Variables", + 5: "Enumerations", + 6: "Pages" +}; + diff --git a/search/variables_0.html b/search/variables_0.html new file mode 100644 index 0000000..7778cf0 --- /dev/null +++ b/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_0.js b/search/variables_0.js new file mode 100644 index 0000000..c8e85f5 --- /dev/null +++ b/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ec_5fprobe_5fcharacteristic_0',['ec_probe_characteristic',['../main_8cpp.html#a09e139c95c2f5c49f758721c73c2e3c4',1,'main.cpp']]] +]; diff --git a/search/variables_1.html b/search/variables_1.html new file mode 100644 index 0000000..e2f95e2 --- /dev/null +++ b/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_1.js b/search/variables_1.js new file mode 100644 index 0000000..835fe9a --- /dev/null +++ b/search/variables_1.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['m_5fdata_5fpresentation_0',['m_data_presentation',['../main_8cpp.html#ac7f739ac37accc300104cbad0409ed89',1,'main.cpp']]], + ['m_5fdevice_5fstate_1',['m_device_state',['../main_8cpp.html#acba40964937e2cce7df8901e6f6c1819',1,'main.cpp']]], + ['m_5fds_5faddress_2',['m_ds_address',['../main_8cpp.html#af46e0db802fbd00899d5bad05b9b7a4b',1,'main.cpp']]], + ['m_5fds_5fsensor_3',['m_ds_sensor',['../main_8cpp.html#aa3c944eee1996c88fceb031a11027fc9',1,'main.cpp']]], + ['m_5fdwn_5fbutton_5fpressed_4',['m_dwn_button_pressed',['../main_8cpp.html#aba63d02f6d114f16632365518854a0d0',1,'main.cpp']]], + ['m_5fmemory_5',['m_memory',['../main_8cpp.html#aa48bf39bcb8588333fd430a63a858a72',1,'main.cpp']]], + ['m_5fone_5fwire_6',['m_one_wire',['../main_8cpp.html#a9110b863b78d70cf8ffba96c90e31b75',1,'main.cpp']]], + ['m_5fsd_5fcard_7',['m_sd_card',['../main_8cpp.html#a1380cf51f72fb2cd35080c073d65395a',1,'main.cpp']]], + ['m_5fup_5fbutton_5fpressed_8',['m_up_button_pressed',['../main_8cpp.html#aa7181afcac47d8ac3b332c8cc9096044',1,'main.cpp']]] +]; diff --git a/search/variables_2.html b/search/variables_2.html new file mode 100644 index 0000000..833f416 --- /dev/null +++ b/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/search/variables_2.js b/search/variables_2.js new file mode 100644 index 0000000..7567db5 --- /dev/null +++ b/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ph_5fprobe_5fcharacteristic_0',['ph_probe_characteristic',['../main_8cpp.html#a5f69152f62e2ab2342b6263714ed323e',1,'main.cpp']]] +]; diff --git a/splitbar.png b/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/struct_point-members.html b/struct_point-members.html new file mode 100644 index 0000000..d887762 --- /dev/null +++ b/struct_point-members.html @@ -0,0 +1,80 @@ + + + + + + + +Ph-ec-meter: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    Ph-ec-meter +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    Point Member List
    +
    +
    + +

    This is the complete list of members for Point, including all inherited members.

    + + + + +
    analog_val (defined in Point)Point
    Point(double _analog_val=0, double _unit_val=0)Pointinline
    unit_val (defined in Point)Point
    + + + + diff --git a/struct_point.html b/struct_point.html new file mode 100644 index 0000000..e251de8 --- /dev/null +++ b/struct_point.html @@ -0,0 +1,150 @@ + + + + + + + +Ph-ec-meter: Point Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    Ph-ec-meter +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    + +
    + +

    Point structure. + More...

    + +

    #include <Linear_function.h>

    + + + + + +

    +Public Member Functions

     Point (double _analog_val=0, double _unit_val=0)
     Construct a new Point object. More...
     
    + + + + + +

    +Public Attributes

    +double unit_val
     
    +double analog_val
     
    +

    Detailed Description

    +

    Point structure.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Point()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    Point::Point (double _analog_val = 0,
    double _unit_val = 0 
    )
    +
    +inline
    +
    + +

    Construct a new Point object.

    +
    Parameters
    + + + +
    _analog_valanalog_val value directly from the converter
    _unit_valunit_val value in SI unit
    +
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/tab_b.png b/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 0000000..00d1c60 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/work_schem.svg b/work_schem.svg new file mode 100644 index 0000000..580f6be --- /dev/null +++ b/work_schem.svg @@ -0,0 +1,44 @@ +calibration_phcalibration_ecset_first_sample_phset_second_sample_phset_first_sample_ecset_second_sample_ecstartupmeasure_phmeasure_eclong_press_uplong_press_uplong_press_two_buttonslong_press_two_buttonslong_press_two_buttonslong_press_two_buttonslong_press_two_buttonslong_press_two_buttons \ No newline at end of file