marta 0.26150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +299 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/example_project/p_object/test_page.rb +31 -0
- data/example_project/spec/p_object/pageobjects/MartaTestPage.json +1 -0
- data/example_project/spec/spec_helper.rb +11 -0
- data/example_project/spec/watir_test_page_spec.rb +12 -0
- data/example_project/tests_with_learning.sh +1 -0
- data/example_project/tests_without_learning.sh +1 -0
- data/lib/marta/black_magic.rb +147 -0
- data/lib/marta/classes_creation.rb +21 -0
- data/lib/marta/data/custom-xpath.html +22 -0
- data/lib/marta/data/custom-xpath.js +48 -0
- data/lib/marta/data/element-confirm.html +18 -0
- data/lib/marta/data/element-confirm.js +30 -0
- data/lib/marta/data/element.html +23 -0
- data/lib/marta/data/element.js +183 -0
- data/lib/marta/data/for_test.html +7 -0
- data/lib/marta/data/for_test.js +8 -0
- data/lib/marta/data/page.html +24 -0
- data/lib/marta/data/page.js +38 -0
- data/lib/marta/data/style.css +209 -0
- data/lib/marta/dialogs.rb +124 -0
- data/lib/marta/injector.rb +101 -0
- data/lib/marta/json_2_class.rb +145 -0
- data/lib/marta/lightning.rb +36 -0
- data/lib/marta/options_and_paths.rb +140 -0
- data/lib/marta/public_methods.rb +51 -0
- data/lib/marta/read_write.rb +44 -0
- data/lib/marta/simple_element_finder.rb +84 -0
- data/lib/marta/user_values_prework.rb +26 -0
- data/lib/marta/version.rb +4 -0
- data/lib/marta/x_path.rb +170 -0
- data/lib/marta.rb +62 -0
- data/marta.gemspec +28 -0
- metadata +156 -0
@@ -0,0 +1,21 @@
|
|
1
|
+
module Marta
|
2
|
+
|
3
|
+
private
|
4
|
+
|
5
|
+
#
|
6
|
+
# That module is responsible for user dialog on itit of an unknown class
|
7
|
+
#
|
8
|
+
# The same way Marta is able to create methods she can create classes in
|
9
|
+
# a learn mode from unknown constants.
|
10
|
+
# I suggest that in common each class generated that way is a pageobject.
|
11
|
+
module ClassesCreation
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
# We are asking user about unknown classes
|
16
|
+
def page_edit(const, data=Hash.new)
|
17
|
+
data['vars'] = inject('page', const, data['vars'])
|
18
|
+
json_2_class(file_write(const.to_s, data))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<div id=marta_s_everything martaclass=marta_smthing>
|
2
|
+
|
3
|
+
<div id=marta_s_text martaclass=marta_smthing>
|
4
|
+
<h2 id=marta_main_title martaclass=marta_smthing></h2>
|
5
|
+
<p martaclass=marta_smthing>You are about to write your own xpath.</p>
|
6
|
+
<p martaclass=marta_smthing>Use it when element is: invisible, not present, should be found by exact xpath, marta fails to find it.</p>
|
7
|
+
<p martaclass=marta_smthing>Marta will highlight the elements targeted by your xpath. Sometimes it will even show hidden elements.</p>
|
8
|
+
<p martaclass=marta_smthing>Beware! Anything will be accepted when you will click Confirm. But maybe it will not work :)</p>
|
9
|
+
</div>
|
10
|
+
<div id=marta_s_content martaclass=marta_smthing>
|
11
|
+
<div martaclass=marta_smthing class=label id=marta_element_label>What we are looking for (one element or group?)</div>
|
12
|
+
<label martaclass=marta_smthing><input type=checkbox id=marta_array martaclass=marta_smthing>Collection</label>
|
13
|
+
<input type=button martaclass=marta_smthing id=marta_try_again onclick=marta_try_again(); value="Try again" />
|
14
|
+
<input type=button martaclass=marta_smthing id=marta_confirm onclick=marta_confirm(); value=Confirm />
|
15
|
+
</div>
|
16
|
+
<div id=xpath_field martaclass=marta_smthing>
|
17
|
+
<div martaclass=marta_smthing class=label id=marta_xpath_label>Set XPATH here and hit Enter.</div>
|
18
|
+
<span martaclass=marta_smthing>XPATH: <input onchange=marta_look(); type=text id=marta_user_xpath martaclass=marta_smthing value=>
|
19
|
+
</span>
|
20
|
+
</div>
|
21
|
+
</hr>
|
22
|
+
</div>
|
@@ -0,0 +1,48 @@
|
|
1
|
+
var marta_result = {};
|
2
|
+
var marta_confirm_mark = false;
|
3
|
+
var marta_temp_els =[];
|
4
|
+
var marta_temp_styles = [];
|
5
|
+
|
6
|
+
function marta_add_data() {
|
7
|
+
marta_confirm_mark = false;
|
8
|
+
document.getElementById("marta_main_title").innerHTML = "XPATH for " + marta_what + " = ?";
|
9
|
+
};
|
10
|
+
|
11
|
+
function marta_look() {
|
12
|
+
try {
|
13
|
+
for (var i=0; i<marta_temp_els.snapshotLength; i++) {
|
14
|
+
marta_temp_els.snapshotItem(i).setAttribute("style",marta_temp_styles[i]);
|
15
|
+
};
|
16
|
+
var t=0;
|
17
|
+
var value = document.getElementById("marta_user_xpath").value;
|
18
|
+
var result = document.evaluate(value, document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
|
19
|
+
marta_temp_els = result;
|
20
|
+
|
21
|
+
for (var i=0; i<result.snapshotLength; i++) {
|
22
|
+
var marta_smthing = ((result.snapshotItem(i).getAttribute("martaclass")=="marta_smthing")||(result.snapshotItem(i).getAttribute("martaclass")=="marta_div"));
|
23
|
+
if(!marta_smthing) {
|
24
|
+
marta_temp_styles[i] = result.snapshotItem(i).getAttribute("style");
|
25
|
+
result.snapshotItem(i).setAttribute("style","animation: marta_found 6s infinite;");
|
26
|
+
t = t+1;
|
27
|
+
};
|
28
|
+
};
|
29
|
+
document.getElementById("marta_xpath_label").innerHTML = "Found " + t + " elements";
|
30
|
+
} catch(e) {
|
31
|
+
document.getElementById("marta_xpath_label").innerHTML = "Ooops! Are you sure? Maybe Xpath is wrong?";
|
32
|
+
};
|
33
|
+
};
|
34
|
+
|
35
|
+
function marta_confirm(){
|
36
|
+
marta_result["collection"] = document.getElementById("marta_array").checked;
|
37
|
+
marta_result["xpath"] = document.getElementById("marta_user_xpath").value;
|
38
|
+
var toClear = document.querySelector("[martaclass=marta_smthing]");
|
39
|
+
toClear.parentNode.removeChild(toClear);
|
40
|
+
marta_confirm_mark = true;
|
41
|
+
};
|
42
|
+
|
43
|
+
function marta_try_again(){
|
44
|
+
var toClear = document.querySelector("[martaclass=marta_div]");
|
45
|
+
toClear.parentNode.removeChild(toClear);
|
46
|
+
marta_confirm_mark = true;
|
47
|
+
marta_result = "2";
|
48
|
+
};
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<div id=marta_s_everything martaclass=marta_smthing>
|
2
|
+
<div id=marta_s_text martaclass=marta_smthing>
|
3
|
+
<h2 id=marta_main_title martaclass=marta_smthing></h2>
|
4
|
+
<p martaclass=marta_smthing>You are about to confirm element selection</p>
|
5
|
+
<p martaclass=marta_smthing>Marta highlights elements right now</p>
|
6
|
+
<p martaclass=marta_smthing>If something wrong was found - maybe it is time to talk to the developer?</p>
|
7
|
+
<p martaclass=marta_smthing>Also you could try to set your own xpath</p>
|
8
|
+
<p martaclass=marta_smthing>Or you could try to find element in a basic way once again</p>
|
9
|
+
</div>
|
10
|
+
<div id=marta_s_content martaclass=marta_smthing>
|
11
|
+
<input type=button martaclass=marta_smthing id=marta_confirm onclick=marta_confirm(); value=Confirm />
|
12
|
+
<input type=button martaclass=marta_smthing id=marta_try_again onclick=marta_try_again(); value="Try again" />
|
13
|
+
<input type=button martaclass=marta_smthing id=marta_set_by_hand onclick=marta_set_by_hand(); value="Set by hand" />
|
14
|
+
</div>
|
15
|
+
<div id=attr_fields martaclass=marta_smthing>
|
16
|
+
</div>
|
17
|
+
</hr>
|
18
|
+
</div>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
var marta_result = {};
|
2
|
+
var marta_confirm_mark = false;
|
3
|
+
|
4
|
+
function marta_confirm(){
|
5
|
+
var toClear = document.querySelector("[martaclass=marta_smthing]");
|
6
|
+
toClear.parentNode.removeChild(toClear);
|
7
|
+
marta_confirm_mark = true;
|
8
|
+
marta_result = "1";
|
9
|
+
};
|
10
|
+
|
11
|
+
function marta_click_work(e){};
|
12
|
+
|
13
|
+
function marta_try_again(){
|
14
|
+
var toClear = document.querySelector("[martaclass=marta_div]");
|
15
|
+
toClear.parentNode.removeChild(toClear);
|
16
|
+
marta_confirm_mark = true;
|
17
|
+
marta_result = "2";
|
18
|
+
};
|
19
|
+
|
20
|
+
function marta_set_by_hand(){
|
21
|
+
var toClear = document.querySelector("[martaclass=marta_div]");
|
22
|
+
toClear.parentNode.removeChild(toClear);
|
23
|
+
marta_confirm_mark = true;
|
24
|
+
marta_result = "3";
|
25
|
+
};
|
26
|
+
|
27
|
+
function marta_add_data() {
|
28
|
+
marta_confirm_mark = false;
|
29
|
+
document.getElementById("marta_main_title").innerHTML = old_marta_Data + " elements found for " + marta_what;
|
30
|
+
};
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<div id=marta_s_everything martaclass=marta_smthing>
|
2
|
+
<div id=marta_s_text martaclass=marta_smthing>
|
3
|
+
<h2 id=marta_main_title martaclass=marta_smthing></h2>
|
4
|
+
<p martaclass=marta_smthing>You are about to define some element</p>
|
5
|
+
<p martaclass=marta_smthing>CLICK to select element. Do not worry nothing will work</p>
|
6
|
+
<p martaclass=marta_smthing>After the click select the attributes of an element and parents</p>
|
7
|
+
<p martaclass=marta_smthing>To edit attribute value just change it and hit ENTER</p>
|
8
|
+
<p martaclass=marta_smthing>It is highly recomended to delete dynamically changing attributes</p>
|
9
|
+
<p martaclass=marta_smthing>IF you are gonna to find iframe! Elements in it are active now</p>
|
10
|
+
<p martaclass=marta_smthing>You should click at non-action element of iframe.</p>
|
11
|
+
<p martaclass=marta_smthing>Find it like a usual element and focus to it in code with dance_with(your_iframe)</p>
|
12
|
+
</div>
|
13
|
+
<div id=marta_s_content martaclass=marta_smthing>
|
14
|
+
<input type=button martaclass=marta_smthing id=marta_confirm onclick=marta_confirm(); value=Confirm />
|
15
|
+
</div>
|
16
|
+
<div id=marta_s_element_type martaclass=marta_smthing>
|
17
|
+
<div martaclass=marta_smthing class=label id=marta_element_label>What we are looking for (one element or group?)</div>
|
18
|
+
<label martaclass=marta_smthing><input type=checkbox id=marta_array martaclass=marta_smthing>Collection</label>
|
19
|
+
</div>
|
20
|
+
<div id=attr_fields martaclass=marta_smthing>
|
21
|
+
</div>
|
22
|
+
</hr>
|
23
|
+
</div>
|
@@ -0,0 +1,183 @@
|
|
1
|
+
var marta_room = 0;
|
2
|
+
var marta_result = {};
|
3
|
+
var marta_confirm_mark = false;
|
4
|
+
var marta_waits_iframe = "IFRAME";
|
5
|
+
|
6
|
+
function sleep(ms) {
|
7
|
+
ms += new Date().getTime();
|
8
|
+
while (new Date() < ms){};
|
9
|
+
};
|
10
|
+
|
11
|
+
var marta_monitor = setInterval(function(){
|
12
|
+
var elem = document.activeElement;
|
13
|
+
if(elem && elem.tagName == marta_waits_iframe){
|
14
|
+
marta_waits_iframe = "Nope, she is not";
|
15
|
+
marta_click_work(elem, true);
|
16
|
+
} else {
|
17
|
+
marta_waits_iframe = "IFRAME";
|
18
|
+
};
|
19
|
+
}, 100);
|
20
|
+
|
21
|
+
function marta_add_field(title, what, key, marker) {
|
22
|
+
marta_room++;
|
23
|
+
var objTo = document.getElementById("attr_fields");
|
24
|
+
var divtest = document.createElement("div");
|
25
|
+
var att = document.createAttribute("martaclass");
|
26
|
+
att.value = "marta_smthing";
|
27
|
+
divtest.setAttributeNode(att);
|
28
|
+
divtest.innerHTML = "<div martaclass=marta_smthing class=label id=marta_title"+marta_room+">ATTR</div><div martaclass=marta_smthing class=content id=marta_staff"+marta_room+"><span martaclass=marta_smthing>ATTR: <input martaclass=marta_smthing class=marta_s_name_field type=text disabled=disabled; id=marta_name"+marta_room+" value=></span><span martaclass=marta_smthing> = <input onchange=marta_change_field(this); martaclass=marta_smthing type=text id=marta_default_value"+marta_room+" value=></span><input martaclass=marta_smthing type=button onclick=marta_delete_line("+marta_room+") value=Delete id=delete_marta_value"+marta_room+"</div>";
|
29
|
+
objTo.appendChild(divtest);
|
30
|
+
document.getElementById("marta_title"+marta_room ).innerHTML = title;
|
31
|
+
document.getElementById("marta_name"+marta_room ).value = what;
|
32
|
+
var field = document.getElementById("marta_default_value"+marta_room);
|
33
|
+
field.value = key;
|
34
|
+
var att = document.createAttribute("marta_object_map");
|
35
|
+
att.value = title+";;"+what+";;"+marker;
|
36
|
+
field.setAttributeNode(att);
|
37
|
+
};
|
38
|
+
|
39
|
+
function marta_change_field(field){
|
40
|
+
var data = field.getAttribute("marta_object_map").split(";;");
|
41
|
+
if (data[2] == "-1"){
|
42
|
+
if (field.value == ""){
|
43
|
+
delete marta_result[data[0]][data[1]];
|
44
|
+
} else {
|
45
|
+
marta_result[data[0]][data[1]]=field.value;
|
46
|
+
};
|
47
|
+
}else if (data[2] == "taggy"){
|
48
|
+
if (field.value == ""){
|
49
|
+
marta_result["options"][data[1]] = "*";
|
50
|
+
} else {
|
51
|
+
marta_result["options"][data[1]]=field.value;
|
52
|
+
};
|
53
|
+
}else {
|
54
|
+
if (field.value == ""){
|
55
|
+
delete marta_result[data[0]][data[1]][parseInt(data[2])];
|
56
|
+
} else {
|
57
|
+
marta_result[data[0]][data[1]][parseInt(data[2])]=field.value;
|
58
|
+
};
|
59
|
+
};
|
60
|
+
};
|
61
|
+
|
62
|
+
function marta_confirm(){
|
63
|
+
if (marta_room != 0){
|
64
|
+
marta_result["options"]["collection"] = document.getElementById("marta_array").checked;
|
65
|
+
var toClear = document.querySelector("[martaclass=marta_div]");
|
66
|
+
toClear.parentNode.removeChild(toClear);
|
67
|
+
for (var what in marta_result){
|
68
|
+
for (var key in marta_result[what]){
|
69
|
+
if (marta_result[what][key] instanceof Array){
|
70
|
+
for (var i = 0; i < marta_result[what][key].length; i++) {
|
71
|
+
if (marta_result[what][key][i] == undefined) {
|
72
|
+
marta_result[what][key].splice(i, 1);
|
73
|
+
i--;
|
74
|
+
};
|
75
|
+
};
|
76
|
+
};
|
77
|
+
};
|
78
|
+
};
|
79
|
+
marta_confirm_mark = true;
|
80
|
+
return marta_result;
|
81
|
+
};
|
82
|
+
};
|
83
|
+
|
84
|
+
function marta_add_data() {
|
85
|
+
marta_result = old_marta_Data;
|
86
|
+
marta_confirm_mark = false;
|
87
|
+
document.getElementById("marta_main_title").innerHTML = "You are defining " + marta_what;
|
88
|
+
if (old_marta_Data != {}){
|
89
|
+
try {
|
90
|
+
document.getElementById("marta_array").checked = old_marta_Data["options"]["collection"];}
|
91
|
+
catch(e){};
|
92
|
+
for (var what in old_marta_Data){
|
93
|
+
if (what != "options"){
|
94
|
+
marta_add_field("TAG", what, old_marta_Data["options"][what], "taggy");
|
95
|
+
for (var key in old_marta_Data[what]){
|
96
|
+
if (/class/.test(key) == true){
|
97
|
+
for (var k = 0, length = old_marta_Data[what][key].length; k < length; k++){
|
98
|
+
marta_add_field(what, key, old_marta_Data[what][key][k], k);
|
99
|
+
};
|
100
|
+
}else
|
101
|
+
{
|
102
|
+
marta_add_field(what, key, old_marta_Data[what][key], "-1");
|
103
|
+
};
|
104
|
+
};
|
105
|
+
};
|
106
|
+
};
|
107
|
+
};
|
108
|
+
};
|
109
|
+
|
110
|
+
function marta_click_work(e, iframe=false) {
|
111
|
+
if (iframe == false){
|
112
|
+
e = e || window.event;
|
113
|
+
var target = e.target || e.srcElement;
|
114
|
+
} else {
|
115
|
+
target = e;
|
116
|
+
};
|
117
|
+
var marta_smthing = target.getAttribute("martaclass")=="marta_smthing";
|
118
|
+
if(!marta_smthing){
|
119
|
+
document.getElementById("attr_fields").innerHTML="";
|
120
|
+
marta_room = 0;
|
121
|
+
marta_result = {};
|
122
|
+
marta_result["options"] = {};
|
123
|
+
marta_after_click(target,"self");
|
124
|
+
if (!!target.parentElement){
|
125
|
+
marta_after_click(target.parentElement,"pappy");
|
126
|
+
};
|
127
|
+
if (!!target.parentElement){
|
128
|
+
marta_after_click(target.parentElement.parentElement,"granny");
|
129
|
+
};
|
130
|
+
if(!marta_confirm_mark){
|
131
|
+
e.stopPropagation();
|
132
|
+
e.preventDefault();
|
133
|
+
};
|
134
|
+
};
|
135
|
+
};
|
136
|
+
|
137
|
+
document.addEventListener("click", function(e) {marta_click_work(e)} , true);
|
138
|
+
|
139
|
+
function marta_after_click(el, what) {
|
140
|
+
marta_result[what] = {};
|
141
|
+
marta_result["options"][what] = el.tagName;
|
142
|
+
marta_add_field("TAG", what, marta_result["options"][what], "taggy");
|
143
|
+
for (var att, i = 0, atts = el.attributes, n = atts.length; i < n; i++){
|
144
|
+
att = atts[i];
|
145
|
+
if(/^[a-zA-Z0-9- _!@#$%^*();:,.?/]*$/.test(att.nodeValue) == true){
|
146
|
+
if (/class/.test(att.nodeName) == true){
|
147
|
+
var values=att.nodeValue.split(" ");
|
148
|
+
marta_result[what][att.nodeName]=[];
|
149
|
+
for (var val, j = 0, vals = values, l = vals.length; j < l; j++){
|
150
|
+
val = vals[j];
|
151
|
+
marta_result[what][att.nodeName][j]=val;
|
152
|
+
};
|
153
|
+
} else {
|
154
|
+
marta_result[what][att.nodeName]=att.nodeValue;
|
155
|
+
};
|
156
|
+
};
|
157
|
+
};
|
158
|
+
if (what == "self"){
|
159
|
+
try{
|
160
|
+
marta_result[what]["retrieved_by_marta_text"]=el.firstChild.nodeValue;
|
161
|
+
}catch(e){};
|
162
|
+
};
|
163
|
+
for (var key in marta_result[what]){
|
164
|
+
if (/class/.test(key) == true){
|
165
|
+
for (var k = 0, length = marta_result[what][key].length; k < length; k++){
|
166
|
+
marta_add_field(what, key, marta_result[what][key][k], k);
|
167
|
+
};
|
168
|
+
}else
|
169
|
+
{
|
170
|
+
marta_add_field(what, key, marta_result[what][key], "-1");
|
171
|
+
};
|
172
|
+
};
|
173
|
+
};
|
174
|
+
|
175
|
+
function marta_delete_line(line) {
|
176
|
+
var title = document.getElementById("marta_title"+line);
|
177
|
+
var staff = document.getElementById("marta_staff"+line);
|
178
|
+
var field = document.getElementById("marta_default_value"+line);
|
179
|
+
field.value = "";
|
180
|
+
marta_change_field(field);
|
181
|
+
title.parentNode.removeChild(title);
|
182
|
+
staff.parentNode.removeChild(staff);
|
183
|
+
};
|
@@ -0,0 +1,8 @@
|
|
1
|
+
function marta_add_data(){
|
2
|
+
document.getElementById("title").innerHTML = marta_what;
|
3
|
+
old_marta_Data.innerHTML = old_marta_Data.id
|
4
|
+
};
|
5
|
+
var marta_result = "";
|
6
|
+
var marta_confirm_mark = false;
|
7
|
+
setTimeout(function() { marta_result = "Done" }, 1000);
|
8
|
+
setTimeout(function() { marta_confirm_mark = true }, 2000);
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<div id=marta_s_everything martaclass=marta_smthing>
|
2
|
+
|
3
|
+
<div id=marta_s_text>
|
4
|
+
<h2 id=marta_main_title></h2>
|
5
|
+
<p>You are about to add some vars to the page_object</p>
|
6
|
+
<p>Please use only valid names for ruby vars (no <b>CROCO</b>, <b>special symbols</b>, just <b>some_var</b> or <b>anotherVar</b>)</p>
|
7
|
+
<p>You can use variable in the other one adding: <b>#{@your_var}</b> just like in ruby</p>
|
8
|
+
<p>Note that @ will be added to your var name automatically.</p>
|
9
|
+
<p>So if you have defined <b>something</b> and you wanna use the value of it in the other var you should write <b>#{@something}</b></p>
|
10
|
+
<p>You should set a var with the <b>url</b> name if you are gonna use <b>your_page.open_page</b> method later</p>
|
11
|
+
<p>Your values provided here will be default for your page_object but you can change it like <b>your_page.your_var = newvalue</b></p>
|
12
|
+
</div>
|
13
|
+
<div id=marta_s_content>
|
14
|
+
<input type=button martaclass=marta_smthing id=marta_more_fields onclick=marta_add_field(); value=Add More />
|
15
|
+
<input type=button martaclass=marta_smthing id=marta_confirm onclick=marta_confirm(); value=Confirm />
|
16
|
+
|
17
|
+
<div id=vars_fileds>
|
18
|
+
<div class=label>Custom vars:</div>
|
19
|
+
<div class=content>
|
20
|
+
</div>
|
21
|
+
</div>
|
22
|
+
</div>
|
23
|
+
</hr>
|
24
|
+
</div>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
var marta_room = 0;
|
2
|
+
var marta_result = {};
|
3
|
+
var marta_confirm_mark = false;
|
4
|
+
|
5
|
+
function marta_add_field() {
|
6
|
+
marta_room++;
|
7
|
+
var objTo = document.getElementById("vars_fileds");
|
8
|
+
var divtest = document.createElement("div");
|
9
|
+
divtest.innerHTML = "<div class=label id=marta_title"+marta_room+">Var " + marta_room +":</div><div class=content id=marta_staff"+marta_room+"><span>Name: <input type=text martaclass=marta_smthing class=marta_s_name_field id=marta_name"+marta_room+" value=></span><span>Default value: <input martaclass=marta_smthing type=text id=marta_default_value"+marta_room+" value=></span><input martaclass=marta_smthing type=button onclick=marta_delete_line("+marta_room+") value=Delete id=delete_marta_value"+marta_room+"</div>";
|
10
|
+
|
11
|
+
objTo.appendChild(divtest);
|
12
|
+
};
|
13
|
+
function marta_confirm(){
|
14
|
+
for(i=1; i<=marta_room; i++){
|
15
|
+
if (!!document.getElementById("marta_name"+i) && (document.getElementById("marta_name"+i).value != "")) {
|
16
|
+
marta_result[document.getElementById("marta_name"+i).value] = document.getElementById("marta_default_value"+i).value;
|
17
|
+
};
|
18
|
+
};
|
19
|
+
var toClear = document.querySelector("[martaclass=marta_div]");
|
20
|
+
toClear.parentNode.removeChild(toClear);
|
21
|
+
marta_confirm_mark = true;
|
22
|
+
return marta_result;};
|
23
|
+
|
24
|
+
function marta_add_data() {
|
25
|
+
document.getElementById("marta_main_title").innerHTML = "You are defining " + marta_what;
|
26
|
+
for (var key in old_marta_Data){
|
27
|
+
marta_add_field();
|
28
|
+
document.getElementById("marta_name"+marta_room ).value = key;
|
29
|
+
document.getElementById("marta_default_value"+marta_room ).value = old_marta_Data[key];
|
30
|
+
};
|
31
|
+
};
|
32
|
+
|
33
|
+
function marta_delete_line(line) {
|
34
|
+
var title = document.getElementById("marta_title"+line);
|
35
|
+
var staff = document.getElementById("marta_staff"+line);
|
36
|
+
title.parentNode.removeChild(title);
|
37
|
+
staff.parentNode.removeChild(staff);
|
38
|
+
};
|
@@ -0,0 +1,209 @@
|
|
1
|
+
@keyframes marta_found {
|
2
|
+
0% {border: 4px dashed #6495ED;}
|
3
|
+
20% {border: 4px dashed #FF7F50}
|
4
|
+
40% {border: 4px dashed #8FBC8F;}
|
5
|
+
60% {border: 4px dashed #FFA500}
|
6
|
+
80% {border: 4px dashed #DDA0DD}
|
7
|
+
100% {border: 4px dashed #6495ED;}}
|
8
|
+
|
9
|
+
div#marta_s_everything *, div#marta_s_everything {
|
10
|
+
animation : none;
|
11
|
+
animation-delay : 0;
|
12
|
+
animation-direction : normal;
|
13
|
+
animation-duration : 0;
|
14
|
+
animation-fill-mode : none;
|
15
|
+
animation-iteration-count : 1;
|
16
|
+
animation-name : none;
|
17
|
+
animation-play-state : running;
|
18
|
+
animation-timing-function : ease;
|
19
|
+
backface-visibility : visible;
|
20
|
+
background : 0;
|
21
|
+
background-attachment : scroll;
|
22
|
+
background-clip : border-box;
|
23
|
+
background-color : transparent;
|
24
|
+
background-image : none;
|
25
|
+
background-origin : padding-box;
|
26
|
+
background-position : 0 0;
|
27
|
+
background-position-x : 0;
|
28
|
+
background-position-y : 0;
|
29
|
+
background-repeat : repeat;
|
30
|
+
background-size : auto auto;
|
31
|
+
border : 0;
|
32
|
+
border-style : none;
|
33
|
+
border-width : medium;
|
34
|
+
border-color : inherit;
|
35
|
+
border-bottom : 0;
|
36
|
+
border-bottom-color : inherit;
|
37
|
+
border-bottom-left-radius : 0;
|
38
|
+
border-bottom-right-radius : 0;
|
39
|
+
border-bottom-style : none;
|
40
|
+
border-bottom-width : medium;
|
41
|
+
border-collapse : separate;
|
42
|
+
border-image : none;
|
43
|
+
border-left : 0;
|
44
|
+
border-left-color : inherit;
|
45
|
+
border-left-style : none;
|
46
|
+
border-left-width : medium;
|
47
|
+
border-radius : 0;
|
48
|
+
border-right : 0;
|
49
|
+
border-right-color : inherit;
|
50
|
+
border-right-style : none;
|
51
|
+
border-right-width : medium;
|
52
|
+
border-spacing : 0;
|
53
|
+
border-top : 0;
|
54
|
+
border-top-color : inherit;
|
55
|
+
border-top-left-radius : 0;
|
56
|
+
border-top-right-radius : 0;
|
57
|
+
border-top-style : none;
|
58
|
+
border-top-width : medium;
|
59
|
+
bottom : auto;
|
60
|
+
box-shadow : none;
|
61
|
+
box-sizing : content-box;
|
62
|
+
caption-side : top;
|
63
|
+
clear : none;
|
64
|
+
clip : auto;
|
65
|
+
color : inherit;
|
66
|
+
columns : auto;
|
67
|
+
column-count : auto;
|
68
|
+
column-fill : balance;
|
69
|
+
column-gap : normal;
|
70
|
+
column-rule : medium none currentColor;
|
71
|
+
column-rule-color : currentColor;
|
72
|
+
column-rule-style : none;
|
73
|
+
column-rule-width : none;
|
74
|
+
column-span : 1;
|
75
|
+
column-width : auto;
|
76
|
+
content : normal;
|
77
|
+
counter-increment : none;
|
78
|
+
counter-reset : none;
|
79
|
+
cursor : auto;
|
80
|
+
direction : ltr;
|
81
|
+
empty-cells : show;
|
82
|
+
float : none;
|
83
|
+
font : normal;
|
84
|
+
font-family : inherit;
|
85
|
+
font-size : medium;
|
86
|
+
font-style : normal;
|
87
|
+
font-variant : normal;
|
88
|
+
font-weight : normal;
|
89
|
+
height : auto;
|
90
|
+
hyphens : none;
|
91
|
+
left : auto;
|
92
|
+
letter-spacing : normal;
|
93
|
+
line-height : normal;
|
94
|
+
list-style : none;
|
95
|
+
list-style-image : none;
|
96
|
+
list-style-position : outside;
|
97
|
+
list-style-type : disc;
|
98
|
+
margin : 0;
|
99
|
+
margin-bottom : 0;
|
100
|
+
margin-left : 0;
|
101
|
+
margin-right : 0;
|
102
|
+
margin-top : 0;
|
103
|
+
max-height : none;
|
104
|
+
max-width : none;
|
105
|
+
min-height : 0;
|
106
|
+
min-width : 0;
|
107
|
+
opacity : 1;
|
108
|
+
orphans : 0;
|
109
|
+
outline : 0;
|
110
|
+
outline-color : invert;
|
111
|
+
outline-style : none;
|
112
|
+
outline-width : medium;
|
113
|
+
overflow : visible;
|
114
|
+
overflow-x : visible;
|
115
|
+
overflow-y : visible;
|
116
|
+
padding : 0;
|
117
|
+
padding-bottom : 0;
|
118
|
+
padding-left : 0;
|
119
|
+
padding-right : 0;
|
120
|
+
padding-top : 0;
|
121
|
+
page-break-after : auto;
|
122
|
+
page-break-before : auto;
|
123
|
+
page-break-inside : auto;
|
124
|
+
perspective : none;
|
125
|
+
perspective-origin : 50% 50%;
|
126
|
+
|
127
|
+
right : auto;
|
128
|
+
tab-size : 8;
|
129
|
+
table-layout : auto;
|
130
|
+
text-align : inherit;
|
131
|
+
text-align-last : auto;
|
132
|
+
text-decoration : none;
|
133
|
+
text-decoration-color : inherit;
|
134
|
+
text-decoration-line : none;
|
135
|
+
text-decoration-style : solid;
|
136
|
+
text-indent : 0;
|
137
|
+
text-shadow : none;
|
138
|
+
text-transform : none;
|
139
|
+
top : auto;
|
140
|
+
transform : none;
|
141
|
+
transform-style : flat;
|
142
|
+
transition : none;
|
143
|
+
transition-delay : 0s;
|
144
|
+
transition-duration : 0s;
|
145
|
+
transition-property : none;
|
146
|
+
transition-timing-function : ease;
|
147
|
+
unicode-bidi : normal;
|
148
|
+
vertical-align : baseline;
|
149
|
+
visibility : visible;
|
150
|
+
white-space : normal;
|
151
|
+
widows : 0;
|
152
|
+
width : auto;
|
153
|
+
word-spacing : normal;
|
154
|
+
|
155
|
+
}
|
156
|
+
div#marta_s_everything h2 {
|
157
|
+
text-align: center;
|
158
|
+
font-size: 20px;}
|
159
|
+
div#marta_s_everything {
|
160
|
+
position : relative;
|
161
|
+
z-index : 150000;
|
162
|
+
padding: 0;
|
163
|
+
margin: 0;
|
164
|
+
margin: 0px 0px 0px 0px;
|
165
|
+
border: 4px solid rgb(115,115,100);
|
166
|
+
font-size: 14px;
|
167
|
+
text-align: left;
|
168
|
+
background-color: rgb(230,230,200);
|
169
|
+
color: black;
|
170
|
+
}
|
171
|
+
div#marta_s_everything p {text-align: left;
|
172
|
+
margin-left: 20px;}
|
173
|
+
div#marta_s_everything p b {color: red;}
|
174
|
+
div#marta_s_everything input[type=button] {
|
175
|
+
background-color: #4CAF50;
|
176
|
+
border: none;
|
177
|
+
color: white;
|
178
|
+
padding: 8px 16px;
|
179
|
+
text-align: center;
|
180
|
+
text-decoration: none;
|
181
|
+
display: inline-block;
|
182
|
+
font-size: 14px;
|
183
|
+
}
|
184
|
+
div#marta_s_everything input[type=text] {
|
185
|
+
width: 50%;
|
186
|
+
border-radius: 4px;
|
187
|
+
padding: 6px 8px;
|
188
|
+
font-size: 14px;
|
189
|
+
background-color: rgb(200,230,230);
|
190
|
+
}
|
191
|
+
div#marta_s_everything input[type=text][martaclass=martanamefield],
|
192
|
+
div#marta_s_everything input[type=text].marta_s_name_field{
|
193
|
+
width: 20%;
|
194
|
+
}
|
195
|
+
|
196
|
+
div#marta_s_everything div.label,
|
197
|
+
div#marta_s_everything label {
|
198
|
+
text-decoration: underline;
|
199
|
+
font-size: 16px;
|
200
|
+
}
|
201
|
+
div#marta_s_everything input[type=checkbox]
|
202
|
+
{ padding-left:5px;
|
203
|
+
height:16px;
|
204
|
+
display:inline-block;
|
205
|
+
line-height:16px;
|
206
|
+
background-repeat:no-repeat;
|
207
|
+
background-position: 0 0;
|
208
|
+
font-size:16px;
|
209
|
+
vertical-align:middle;}
|