Webdar 1.0.0
Web user interface to libdar
html_form_overwrite_combining_criterium.hpp
1/*********************************************************************/
2// webdar - a web server and interface program to libdar
3// Copyright (C) 2013-2025 Denis Corbin
4//
5// This file is part of Webdar
6//
7// Webdar is free software: you can redistribute it and/or modify
8// it under the terms of the GNU General Public License as published by
9// the Free Software Foundation, either version 3 of the License, or
10// (at your option) any later version.
11//
12// Webdar is distributed in the hope that it will be useful,
13// but WITHOUT ANY WARRANTY; without even the implied warranty of
14// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15// GNU General Public License for more details.
16//
17// You should have received a copy of the GNU General Public License
18// along with Webdar. If not, see <http://www.gnu.org/licenses/>
19//
20//----
21// to contact the author: dar.linux@free.fr
22/*********************************************************************/
23
24#ifndef HTML_FORM_OVERWRITE_COMBINING_CRITERIUM_HPP
25#define HTML_FORM_OVERWRITE_COMBINING_CRITERIUM_HPP
26
27 // C system header files
28#include "my_config.h"
29extern "C"
30{
31
32}
33
34 // C++ system header files
35#include <list>
36#include <deque>
37#include <map>
38
39 // webdar headers
40#include "html_overwrite_criterium.hpp"
41#include "actor.hpp"
42#include "body_builder.hpp"
43#include "html_table.hpp"
44#include "html_text.hpp"
45#include "html_form_input.hpp"
46#include "html_form_select.hpp"
47#include "html_form_fieldset.hpp"
48#include "html_form_dynamic_table.hpp"
49#include "jsoner.hpp"
50#include "events.hpp"
51#include "html_form_overwrite_base_criterium.hpp"
52
54
56 public actor,
58 public jsoner,
59 public events
60{
61public:
62 static const std::string changed;
63
64 html_form_overwrite_combining_criterium(const std::string & initial_mode = and_op);
70
72
75 void set_logic_mode(const std::string & mode) { crit_type.set_selected_id(mode); };
76
78
81
83
86
88 virtual std::unique_ptr<libdar::criterium> get_overwriting_criterium() const override;
89
91 virtual void load_json(const json & source) override;
92
94 virtual json save_json() const override;
95
97 virtual void clear_json() override;
98
100 virtual void on_event(const std::string & event_name) override;
101
102
104 virtual std::unique_ptr<body_builder> provide_object_of_type(unsigned int num,
105 const std::string & context,
106 std::string & changed_event) const override;
107
108 // mask_type values
109 static constexpr const char* and_op = "and_op";
110 static constexpr const char* or_op = "or_op";
111
112protected:
113
115 virtual std::string inherited_get_body_part(const chemin & path,
116 const request & req) override;
117
119 virtual void new_css_library_available() override;
120
121private:
122 std::string current_bool_mode;
123
124 std::string bool_op_to_name(const std::string & op);
125 void update_table_content_logic(bool unconditionally);
126
128 html_form_select crit_type;
130
131 // events
132 static constexpr const char* bool_changed_event = "bool_changed";
133 static constexpr const char* new_crit_to_add = "new_mask";
134
135 // adder values
136 static constexpr const char* base_crit = "base_crit";
137 static constexpr const char* combining_crit = "combining_crit";
138
139 static std::string invert_logic(const std::string & logic);
140
141 static constexpr const unsigned int format_version = 1;
142 static constexpr const char* myclass_id = "html_form_overwrite_combining_criterium";
143
144 static constexpr const char* jlabel_logic = "logic";
145 static constexpr const char* jlabel_contents = "contents";
146};
147
148#endif
class of object that are pointed/triggered to by others
Definition: actor.hpp:55
class chemin definition
Definition: chemin.hpp:51
class events
Definition: events.hpp:52
class html_form_dynamic_table_object_provider
Definition: html_form_dynamic_table.hpp:60
class html_form_dynamic_table web user dynamically add new lines in a table
Definition: html_form_dynamic_table.hpp:121
class html_form_fieldset implements HTML fieldset feature
Definition: html_form_fieldset.hpp:51
html component to be adopted by an html_form that implements atomic/base actions for overwriting poli...
Definition: html_form_overwrite_base_criterium.hpp:53
html component used for to logically combine (and / or) criteria to setup an overwriting policies
Definition: html_form_overwrite_combining_criterium.hpp:60
virtual void on_event(const std::string &event_name) override
inherited from actor
Definition: html_form_overwrite_combining_criterium.cpp:205
html_form_overwrite_base_criterium & add_base_criterium()
add a new base criterium to be logically combined with eventually existing ones
Definition: html_form_overwrite_combining_criterium.cpp:84
html_form_overwrite_combining_criterium & add_combining_criterium()
add a new subcombining criterium to be logically combined with eventually existing ones at this level
Definition: html_form_overwrite_combining_criterium.cpp:102
void set_logic_mode(const std::string &mode)
set and/or combining mode
Definition: html_form_overwrite_combining_criterium.hpp:75
virtual void clear_json() override
inherited from jsoner
Definition: html_form_overwrite_combining_criterium.cpp:199
virtual std::string inherited_get_body_part(const chemin &path, const request &req) override
inherited from body_builder from html_overwrite_criterium
Definition: html_form_overwrite_combining_criterium.cpp:249
virtual void load_json(const json &source) override
inherited from jsoner
Definition: html_form_overwrite_combining_criterium.cpp:159
virtual json save_json() const override
inherited from jsoner
Definition: html_form_overwrite_combining_criterium.cpp:187
virtual std::unique_ptr< body_builder > provide_object_of_type(unsigned int num, const std::string &context, std::string &changed_event) const override
inherited from html_form_dynamic_table_object_provider
Definition: html_form_overwrite_combining_criterium.cpp:215
virtual std::unique_ptr< libdar::criterium > get_overwriting_criterium() const override
obtain the crit_combining_criterium object for libdar option
Definition: html_form_overwrite_combining_criterium.cpp:121
virtual void new_css_library_available() override
inherited from body_builder
Definition: html_form_overwrite_combining_criterium.cpp:256
void set_selected_id(const std::string &id)
set the radio buttons to the item id given in argument
Definition: html_form_radio.cpp:89
class html_form_select implements HTML input of type "select"
Definition: html_form_select.hpp:53
html ancestor class used for the criterium in html_form_overwrite_conditional_action class
Definition: html_overwrite_criterium.hpp:47
class jsoner
Definition: jsoner.hpp:73
class holding fields of an HTTP request (method, URI, header, cookies, and so on)
Definition: request.hpp:45
defines the event class
defines jsoner class and class exception_json