cpee-frames 1.0.0
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/AUTHORS +2 -0
- data/LICENSE +674 -0
- data/README.md +0 -0
- data/Rakefile +21 -0
- data/cpee-frames.gemspec +25 -0
- data/lib/cpee-frames/frames.xml +141 -0
- data/lib/cpee-frames/implementation.rb +539 -0
- data/lib/cpee-frames/ui/framedata.html +60 -0
- data/lib/cpee-frames/ui/menu.html +71 -0
- data/lib/cpee-frames/ui/template.html +64 -0
- data/lib/cpee-frames/ui/test.html +55 -0
- data/lib/cpee-frames/ui/tutorial.html +170 -0
- data/server/frames +38 -0
- data/server/frames.conf +2 -0
- data/tools/cpee-frames +83 -0
- data/ui/css/favicon-16x16.png +0 -0
- data/ui/css/favicon-32x32.png +0 -0
- data/ui/css/favicon-96x96.png +0 -0
- data/ui/css/frames.css +49 -0
- data/ui/js/frame_data.js +68 -0
- data/ui/js/language.js +71 -0
- data/ui/js/test.js +68 -0
- data/ui/js/ui.js +374 -0
- metadata +98 -0
@@ -0,0 +1,64 @@
|
|
1
|
+
<!--
|
2
|
+
This file is part of centurio.work/out/frame.
|
3
|
+
|
4
|
+
centurio.work/out/frame is free software: you can redistribute it and/or modify
|
5
|
+
it under the terms of the GNU General Public License as published by the Free
|
6
|
+
Software Foundation, either version 3 of the License, or (at your option) any
|
7
|
+
later version.
|
8
|
+
|
9
|
+
centurio.work/out/frame is distributed in the hope that it will be useful, but
|
10
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
11
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
12
|
+
more details.
|
13
|
+
|
14
|
+
You should have received a copy of the GNU General Public License along with
|
15
|
+
centurio.work/out/frame (file LICENSE in the main directory). If not, see
|
16
|
+
<http://www.gnu.org/licenses/>.
|
17
|
+
-->
|
18
|
+
|
19
|
+
<!DOCTYPE html>
|
20
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
|
21
|
+
<head>
|
22
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
23
|
+
<title>template frame</title>
|
24
|
+
|
25
|
+
<!-- libs, do not modify. When local than load local libs. -->
|
26
|
+
<script type="text/javascript" src="/js_libs/jquery.min.js"></script>
|
27
|
+
<script type="text/javascript" src="/js_libs/jquery.browser.js"></script>
|
28
|
+
<script type="text/javascript" src="/js_libs/jquery.svg.min.js"></script>
|
29
|
+
<script type="text/javascript" src="/js_libs/jquery.svgdom.min.js"></script>
|
30
|
+
<script type="text/javascript" src="/js_libs/vkbeautify.js"></script>
|
31
|
+
<script type="text/javascript" src="/js_libs/util.js"></script>
|
32
|
+
<script type="text/javascript" src="/js_libs/printf.js"></script>
|
33
|
+
<script type="text/javascript" src="/js_libs/strftime.min.js"></script>
|
34
|
+
<script type="text/javascript" src="/js_libs/parsequery.js"></script>
|
35
|
+
<script type="text/javascript" src="/js_libs/underscore.min.js"></script>
|
36
|
+
<script type="text/javascript" src="/js_libs/jquery.caret.min.js"></script>
|
37
|
+
<script type="text/javascript" src="/js_libs/jquery.cookie.js"></script>
|
38
|
+
|
39
|
+
<!-- custom stuff, play arround -->
|
40
|
+
<script type="text/javascript" src="../js/ui.js"></script>
|
41
|
+
<script type="text/javascript" src="../js/language.js"></script>
|
42
|
+
<link rel="stylesheet" href="../css/frames.css" type="text/css"/>
|
43
|
+
<link class='custom' rel="stylesheet" href="" type="text/css"/>
|
44
|
+
|
45
|
+
|
46
|
+
<link rel="icon" type="image/png" sizes="32x32" href="../css/favicon-32x32.png">
|
47
|
+
<link rel="icon" type="image/png" sizes="96x96" href="../css/favicon-96x96.png">
|
48
|
+
<link rel="icon" type="image/png" sizes="16x16" href="../css/favicon-16x16.png">
|
49
|
+
|
50
|
+
|
51
|
+
<!-- Forms
|
52
|
+
<script src='https://centurio.work/out/forms/js/formio.full.min.js'></script>
|
53
|
+
-->
|
54
|
+
<script>
|
55
|
+
if (location.href.match(/\/$/) == null) {
|
56
|
+
location.href = location.href + '/';
|
57
|
+
}
|
58
|
+
</script>
|
59
|
+
</head>
|
60
|
+
<body is="x-ui">
|
61
|
+
<div id="container">
|
62
|
+
</div>
|
63
|
+
</body>
|
64
|
+
</html>
|
@@ -0,0 +1,55 @@
|
|
1
|
+
<!--
|
2
|
+
This file is part of centurio.work/out/frame.
|
3
|
+
|
4
|
+
centurio.work/out/frame is free software: you can redistribute it and/or modify
|
5
|
+
it under the terms of the GNU General Public License as published by the Free
|
6
|
+
Software Foundation, either version 3 of the License, or (at your option) any
|
7
|
+
later version.
|
8
|
+
|
9
|
+
centurio.work/out/frame is distributed in the hope that it will be useful, but
|
10
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
11
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
12
|
+
more details.
|
13
|
+
|
14
|
+
You should have received a copy of the GNU General Public License along with
|
15
|
+
centurio.work/out/frame (file LICENSE in the main directory). If not, see
|
16
|
+
<http://www.gnu.org/licenses/>.
|
17
|
+
-->
|
18
|
+
|
19
|
+
<!DOCTYPE html>
|
20
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
|
21
|
+
<head>
|
22
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
23
|
+
<title>test frame</title>
|
24
|
+
|
25
|
+
<!-- libs, do not modify. When local than load local libs. -->
|
26
|
+
<script type="text/javascript" src="/js_libs/jquery.min.js"></script>
|
27
|
+
<script type="text/javascript" src="/js_libs/jquery.browser.js"></script>
|
28
|
+
<script type="text/javascript" src="/js_libs/jquery.svg.min.js"></script>
|
29
|
+
<script type="text/javascript" src="/js_libs/jquery.svgdom.min.js"></script>
|
30
|
+
<script type="text/javascript" src="/js_libs/vkbeautify.js"></script>
|
31
|
+
<script type="text/javascript" src="/js_libs/util.js"></script>
|
32
|
+
<script type="text/javascript" src="/js_libs/printf.js"></script>
|
33
|
+
<script type="text/javascript" src="/js_libs/strftime.min.js"></script>
|
34
|
+
<script type="text/javascript" src="/js_libs/parsequery.js"></script>
|
35
|
+
<script type="text/javascript" src="/js_libs/underscore.min.js"></script>
|
36
|
+
<script type="text/javascript" src="/js_libs/jquery.caret.min.js"></script>
|
37
|
+
<script type="text/javascript" src="/js_libs/jquery.cookie.js"></script>
|
38
|
+
|
39
|
+
<!-- custom stuff, play arround -->
|
40
|
+
<script type="text/javascript" src="../js/test.js"></script>
|
41
|
+
<link rel="stylesheet" href="../css/design.css" type="text/css"/>
|
42
|
+
<link class='custom' rel="stylesheet" href="" type="text/css"/>
|
43
|
+
<script>
|
44
|
+
if (location.href.match(/\/$/) == null) {
|
45
|
+
location.href = location.href + '/';
|
46
|
+
}
|
47
|
+
</script>
|
48
|
+
</head>
|
49
|
+
<body is="x-ui">
|
50
|
+
<div id="container">
|
51
|
+
test
|
52
|
+
</div>
|
53
|
+
|
54
|
+
</body>
|
55
|
+
</html>
|
@@ -0,0 +1,170 @@
|
|
1
|
+
<!--
|
2
|
+
This file is part of centurio.work/out/frame.
|
3
|
+
|
4
|
+
centurio.work/out/frame is free software: you can redistribute it and/or modify
|
5
|
+
it under the terms of the GNU General Public License as published by the Free
|
6
|
+
Software Foundation, either version 3 of the License, or (at your option) any
|
7
|
+
later version.
|
8
|
+
|
9
|
+
centurio.work/out/frame is distributed in the hope that it will be useful, but
|
10
|
+
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
11
|
+
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
12
|
+
more details.
|
13
|
+
|
14
|
+
You should have received a copy of the GNU General Public License along with
|
15
|
+
centurio.work/out/frame (file LICENSE in the main directory). If not, see
|
16
|
+
<http://www.gnu.org/licenses/>.
|
17
|
+
-->
|
18
|
+
|
19
|
+
<!DOCTYPE html>
|
20
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
|
21
|
+
<head>
|
22
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
23
|
+
<title>Frames - Tutorial</title>
|
24
|
+
|
25
|
+
<!-- libs, do not modify. When local than load local libs. -->
|
26
|
+
<script type="text/javascript" src="/js_libs/jquery.min.js"></script>
|
27
|
+
<script type="text/javascript" src="/js_libs/jquery.browser.js"></script>
|
28
|
+
<script type="text/javascript" src="/js_libs/jquery.svg.min.js"></script>
|
29
|
+
<script type="text/javascript" src="/js_libs/jquery.svgdom.min.js"></script>
|
30
|
+
<script type="text/javascript" src="/js_libs/vkbeautify.js"></script>
|
31
|
+
<script type="text/javascript" src="/js_libs/util.js"></script>
|
32
|
+
<script type="text/javascript" src="/js_libs/printf.js"></script>
|
33
|
+
<script type="text/javascript" src="/js_libs/strftime.min.js"></script>
|
34
|
+
<script type="text/javascript" src="/js_libs/parsequery.js"></script>
|
35
|
+
<script type="text/javascript" src="/js_libs/underscore.min.js"></script>
|
36
|
+
<script type="text/javascript" src="/js_libs/jquery.caret.min.js"></script>
|
37
|
+
<script type="text/javascript" src="/js_libs/jquery.cookie.js"></script>
|
38
|
+
|
39
|
+
<!-- custom stuff, play arround -->
|
40
|
+
<link class='custom' rel="stylesheet" href="" type="text/css"/>
|
41
|
+
<script>
|
42
|
+
if (location.href.match(/\/$/) == null) {
|
43
|
+
location.href = location.href + '/';
|
44
|
+
}
|
45
|
+
</script>
|
46
|
+
</head>
|
47
|
+
<body is="x-ui">
|
48
|
+
<div id="container">
|
49
|
+
|
50
|
+
First Steps:<br>
|
51
|
+
<ul>
|
52
|
+
|
53
|
+
<li>define Endpoint: *adapt to your needs*</li>
|
54
|
+
<ul>
|
55
|
+
<li>init: https-post://centurio.work/out/frames/</li>
|
56
|
+
<li>frames: https-put://centurio.work/out/frames/</li>
|
57
|
+
</ul>
|
58
|
+
<li>define Data Element: (url where your frame will be reached)</li>
|
59
|
+
<ul>
|
60
|
+
<li><a href="getConfigs">check if frame is not already in use </a></li>
|
61
|
+
<li>frameID: YourFrameName</a></li>
|
62
|
+
</ul>
|
63
|
+
<li>Create Init Activity</li>
|
64
|
+
<ul>
|
65
|
+
<li>Create a new "Service Call with Script"</li>
|
66
|
+
<li>Set the Endpoint to "init"</li>
|
67
|
+
<li>Set your arguments e.g. width: 10, height:10, languge: de-at and some title</li>
|
68
|
+
<li>Set the Prepare Code to: "endpoints.init = File.join(endpoints.init,data.frameID)" where data.frameID is the name from the variable we created before</li>
|
69
|
+
</ul>
|
70
|
+
<li>Create Frame Activity</li>
|
71
|
+
<ul>
|
72
|
+
<li>Create a new "Service Call with Script"</li>
|
73
|
+
<li>Set the Endpoint to "frames"</li>
|
74
|
+
<li>Set your argument Type to "Set UI and contion" (default option)
|
75
|
+
<li>Set your other arguments e.g. DisplacementLeft:0, top:0, width:10, Height:10</li>
|
76
|
+
<li>In Section "Form Url" click on the button "New Language"</li>
|
77
|
+
<li>Define the URL that should be displayed</li>
|
78
|
+
<li>Set the Prepare Code to: "endpoints.frames = File.join(endpoints.frames,data.frameID)" where data.frameID is the name from the variable we created before</li>
|
79
|
+
|
80
|
+
</ul>
|
81
|
+
<li>Execute your Process</li>
|
82
|
+
<li>Open your frame URL (add the defined name (YourFrameName) to the url currently open in this browser Window</li>
|
83
|
+
</ul>
|
84
|
+
|
85
|
+
|
86
|
+
Ohter Steps:<br>
|
87
|
+
<ul>
|
88
|
+
|
89
|
+
<li>My new frame site process runs through once and then its done</li>
|
90
|
+
<ul>
|
91
|
+
<li>Use an endless loop within your proces engine</li>
|
92
|
+
<li>Be aware that in case you do not wait for input at some point your loop will run a gazillion times per second!!!</li>
|
93
|
+
</ul>
|
94
|
+
<li>Ohhh nooo i forgot the process engine instance that drives my frames application</li>
|
95
|
+
<ul>
|
96
|
+
<li>In the case your site is not empty</li>
|
97
|
+
<ul>
|
98
|
+
<li>Inspect the site (ctrl+shift+c)</li>
|
99
|
+
<li>Find one of your iframes</li>
|
100
|
+
<li>Arguments "name" or "id" will give you the instance ID</li>
|
101
|
+
</ul>
|
102
|
+
<li>In the case your site is empty</li>
|
103
|
+
<ul>
|
104
|
+
<li>HAHA</li>
|
105
|
+
<li>Nah its not that bad, look in your process engine and best thing to do is to use the design service next time</li>
|
106
|
+
</ul>
|
107
|
+
</ul>
|
108
|
+
</ul>
|
109
|
+
|
110
|
+
There are more Ohter Steps?<br>
|
111
|
+
<ul>
|
112
|
+
<li>My Frame needs to Return something to the process engine Step1</li>
|
113
|
+
<ul>
|
114
|
+
<li>Create a new "Service Call with Script"</li>
|
115
|
+
<li>Set the Endpoint to "frames"</li>
|
116
|
+
<li>Set your argument Type to "Set UI and wait for input"
|
117
|
+
<li>Set your other arguments e.g. DisplacementLeft:0, top:0, width:10, Height:10</li>
|
118
|
+
<li>In Section "Form Url" click on the button "New Language"</li>
|
119
|
+
<li>Define the URL that should be displayed</li>
|
120
|
+
<li>Set the Prepare Code to: "endpoints.frames = File.join(endpoints.frames,data.frameID)" where data.frameID is the name from the variable we created before</li>
|
121
|
+
<li>Set the Finalize Code to: "data.yourDataElementName = result</li>
|
122
|
+
<li>How to return data from your Frame? see Step2 (below)</li>
|
123
|
+
</ul>
|
124
|
+
<li>My Frame needs to Return something to the process engine Step2</li>
|
125
|
+
<ul>
|
126
|
+
<li>You have some fancy html site that wants to send oodles of data back to centurio</li>
|
127
|
+
<li>Within your frame call the javascript function parent.sendJson(window.name,yourJsonDataHere)</li>
|
128
|
+
<li>All you need to change is define "yourJsonDataHere"</li>
|
129
|
+
</ul>
|
130
|
+
<li>I want to delete some frames</li>
|
131
|
+
<ul>
|
132
|
+
<li>Create a new "Service Call with Script"</li>
|
133
|
+
<li>Set the Endpoint to "frames"</li>
|
134
|
+
<li>Set your argument Type to "Set UI and contion" (default option)
|
135
|
+
<li>Set your other arguments e.g. DisplacementLeft:0, top:0, width:10, Height:10 to match the frames you would like to delete</li>
|
136
|
+
<li>Set the Prepare Code to: "endpoints.frames = File.join(endpoints.frames,data.frameID)" where data.frameID is the name from the variable we created before</li>
|
137
|
+
<li>Thats it</li>
|
138
|
+
</ul>
|
139
|
+
<li>Do i need to delete a frame in order to create one at that poisiton?</li>
|
140
|
+
<ul>
|
141
|
+
<li>Nope, when one frame overlaps one or multiple frames the overlapped ones will be deleted automatically</li>
|
142
|
+
</ul>
|
143
|
+
</ul>
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
I Would like to use the Forms service:<br>
|
148
|
+
<ul>
|
149
|
+
<li>Will be described soon ;)</li>
|
150
|
+
</ul>
|
151
|
+
|
152
|
+
Data Handling:<br>
|
153
|
+
<ul>
|
154
|
+
<li>Will be described soon ;)</li>
|
155
|
+
</ul>
|
156
|
+
|
157
|
+
|
158
|
+
Other questions you could have: (note this is not other steps!)<br>
|
159
|
+
<ul>
|
160
|
+
<li>I want to do a circular iframe</li>
|
161
|
+
<ul>
|
162
|
+
<li>Why?</li>
|
163
|
+
<li>You have to manage this within your html site</li>
|
164
|
+
</ul>
|
165
|
+
</ul>
|
166
|
+
|
167
|
+
</div>
|
168
|
+
|
169
|
+
</body>
|
170
|
+
</html>
|
data/server/frames
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# This file is part of CPEE-FRAMES.
|
4
|
+
#
|
5
|
+
# CPEE-FRAMES is free software: you can redistribute it and/or
|
6
|
+
# modify it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or (at your
|
8
|
+
# option) any later version.
|
9
|
+
#
|
10
|
+
# CPEE-FRAMES is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
13
|
+
# Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License along with
|
16
|
+
# CPEE-FRAMES (file LICENSE in the main directory). If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
if File.exists?(File.join(__dir__,'..','lib','cpee-frames','implementation.rb'))
|
20
|
+
require_relative File.join(__dir__,'..','lib','cpee-frames','implementation')
|
21
|
+
else
|
22
|
+
require 'cpee-frames/implementation'
|
23
|
+
end
|
24
|
+
|
25
|
+
options = {
|
26
|
+
:host => 'localhost',
|
27
|
+
:port => 8305,
|
28
|
+
:secure => false
|
29
|
+
}
|
30
|
+
|
31
|
+
Riddl::Server.new(CPEE::Frames::SERVER, options) do
|
32
|
+
accessible_description true
|
33
|
+
cross_site_xhr true
|
34
|
+
|
35
|
+
@riddl_opts[:data_dir] ||= File.join(__dir__,'data')
|
36
|
+
|
37
|
+
use CPEE::Frames::implementation(@riddl_opts)
|
38
|
+
end.loop!
|
data/server/frames.conf
ADDED
data/tools/cpee-frames
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
#
|
3
|
+
# This file is part of CPEE-FRAMES.
|
4
|
+
#
|
5
|
+
# CPEE-FRAMES is free software: you can redistribute it and/or modify it under
|
6
|
+
# the terms of the GNU Lesser General Public License as published by the Free
|
7
|
+
# Software Foundation, either version 3 of the License, or (at your option) any
|
8
|
+
# later version.
|
9
|
+
#
|
10
|
+
# CPEE-FRAMES is distributed in the hope that it will be useful, but WITHOUT
|
11
|
+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
12
|
+
# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
|
13
|
+
# details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
16
|
+
# along with CPEE-FRAMES (file LICENSE in the main directory). If not, see
|
17
|
+
# <http://www.gnu.org/licenses/>.
|
18
|
+
|
19
|
+
curpath = __dir__
|
20
|
+
require 'rubygems'
|
21
|
+
require 'optparse'
|
22
|
+
require 'fileutils'
|
23
|
+
require 'xml/smart'
|
24
|
+
require 'yaml'
|
25
|
+
require 'typhoeus'
|
26
|
+
require 'stringio'
|
27
|
+
|
28
|
+
def wrap(s, width=78, indent=18, extra_indent=4) #{{{
|
29
|
+
lines = []
|
30
|
+
line, s = s[0..indent-2], s[indent..-1]
|
31
|
+
s.split(/\n/).each do |ss|
|
32
|
+
ss.split(/[ \t]+/).each do |word|
|
33
|
+
if line.size + word.size >= width
|
34
|
+
lines << line
|
35
|
+
line = (" " * (indent + extra_indent)) + word
|
36
|
+
else
|
37
|
+
line << " " << word
|
38
|
+
end
|
39
|
+
end
|
40
|
+
lines << line if line
|
41
|
+
line = (" " * (indent-1))
|
42
|
+
end
|
43
|
+
return lines.join "\n"
|
44
|
+
end #}}}
|
45
|
+
|
46
|
+
exname = File.basename($0)
|
47
|
+
|
48
|
+
ARGV.options { |opt|
|
49
|
+
opt.summary_indent = ' ' * 2
|
50
|
+
opt.summary_width = 15
|
51
|
+
opt.banner = "Usage:\n#{opt.summary_indent}#{exname} new [DIR] | newui [DIR]\n"
|
52
|
+
opt.on("Options:")
|
53
|
+
opt.on("--help", "-h", "This text") { puts opt; exit }
|
54
|
+
opt.on("")
|
55
|
+
opt.on(wrap("new [DIR] scaffolds a sample logging service. Add a handler to a cpee instance to experience the pleasure.",78,18,0))
|
56
|
+
opt.on("")
|
57
|
+
opt.on(wrap("newui [DIR] scaffolds css/js directors that are use by the UI into your webserver dir."))
|
58
|
+
opt.parse!
|
59
|
+
}
|
60
|
+
if (ARGV.length != 2)
|
61
|
+
puts ARGV.options
|
62
|
+
exit
|
63
|
+
else
|
64
|
+
command = ARGV[0]
|
65
|
+
dir = ARGV[1]
|
66
|
+
end
|
67
|
+
|
68
|
+
if command == 'new'
|
69
|
+
if !File.exists?(dir)
|
70
|
+
FileUtils.cp_r(File.join(curpath,'..','server'),dir)
|
71
|
+
FileUtils.mkdir(File.join(dir,'data')) rescue nil
|
72
|
+
else
|
73
|
+
puts 'Directory already exists.'
|
74
|
+
end
|
75
|
+
elsif command == 'newui'
|
76
|
+
if !File.exists?(dir)
|
77
|
+
FileUtils.cp_r(File.join(curpath,'..','ui'),dir)
|
78
|
+
else
|
79
|
+
puts 'Directory already exists.'
|
80
|
+
end
|
81
|
+
else
|
82
|
+
puts ARGV.options
|
83
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
data/ui/css/frames.css
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
* {
|
2
|
+
box-sizing: border-box;
|
3
|
+
padding: 0;
|
4
|
+
margin: 0;
|
5
|
+
}
|
6
|
+
|
7
|
+
:root {
|
8
|
+
--grid-cols: 1;
|
9
|
+
--grid-rows: 1;
|
10
|
+
}
|
11
|
+
|
12
|
+
body {
|
13
|
+
width: 100vw;
|
14
|
+
height: 100vh;
|
15
|
+
}
|
16
|
+
|
17
|
+
#container {
|
18
|
+
display: grid;
|
19
|
+
grid-template-rows: repeat(var(--grid-rows), 1fr);
|
20
|
+
grid-auto-rows: calc(100vh/var(--grid-rows));
|
21
|
+
grid-auto-columns: calc(100vw/var(--grid-cols));
|
22
|
+
grid-template-columns: repeat(var(--grid-cols), 1fr);
|
23
|
+
overflow: hidden;
|
24
|
+
width: 100%;
|
25
|
+
height: 100%;
|
26
|
+
}
|
27
|
+
|
28
|
+
.grid-item {
|
29
|
+
border: none;
|
30
|
+
background-color: #fff;
|
31
|
+
text-align: center;
|
32
|
+
}
|
33
|
+
|
34
|
+
.grid-item-invis{
|
35
|
+
border: none;
|
36
|
+
text-align: center;
|
37
|
+
width: 0px;
|
38
|
+
height: 0px;
|
39
|
+
background-color: #fff;
|
40
|
+
}
|
41
|
+
|
42
|
+
.formbutton{
|
43
|
+
position: relative;
|
44
|
+
bottom: 4.8em;
|
45
|
+
right: 0.8em;
|
46
|
+
z-index: 9;
|
47
|
+
padding: 1em;
|
48
|
+
float: right;
|
49
|
+
}
|
data/ui/js/frame_data.js
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
function showDocument(fr = "") {
|
4
|
+
|
5
|
+
if(fr != ""){
|
6
|
+
$.ajax({
|
7
|
+
type: "GET",
|
8
|
+
url: 'https://centurio.work/out/frames/' + fr + '/dataelements.json',
|
9
|
+
success: function(ret) {
|
10
|
+
|
11
|
+
$("#alldata").text(JSON.stringify(ret["ausfuehrungen"]));
|
12
|
+
},
|
13
|
+
error: function() {
|
14
|
+
reason = '';
|
15
|
+
clearDocument();
|
16
|
+
}
|
17
|
+
});
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
|
22
|
+
function clearDocument() {
|
23
|
+
console.log('rrrr');
|
24
|
+
}
|
25
|
+
|
26
|
+
|
27
|
+
function init() {
|
28
|
+
es = new EventSource('handler/sse/');
|
29
|
+
es.onopen = function() {
|
30
|
+
showDocument("FormTest");
|
31
|
+
// load
|
32
|
+
};
|
33
|
+
es.onmessage = function(e) {
|
34
|
+
if (e.data == 'new') {
|
35
|
+
reason = '';
|
36
|
+
showDocument();
|
37
|
+
}
|
38
|
+
if (e.data == 'reset') {
|
39
|
+
reason = '';
|
40
|
+
showDocument();
|
41
|
+
}
|
42
|
+
else{
|
43
|
+
if(e.data != "keepalive" && e.data != "started"){
|
44
|
+
try {
|
45
|
+
showDocument(e.data);
|
46
|
+
}
|
47
|
+
catch (e) {
|
48
|
+
}
|
49
|
+
}
|
50
|
+
|
51
|
+
}
|
52
|
+
};
|
53
|
+
es.onerror = function() {
|
54
|
+
reason = 'Server down.';
|
55
|
+
clearDocument();
|
56
|
+
setTimeout(init, 10000);
|
57
|
+
};
|
58
|
+
}
|
59
|
+
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
$(document).ready(function() {
|
66
|
+
init();
|
67
|
+
});
|
68
|
+
|
data/ui/js/language.js
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
function lang_init(obj,target){
|
2
|
+
if (obj == null) {
|
3
|
+
obj = $(document);
|
4
|
+
} else {
|
5
|
+
obj = $(obj);
|
6
|
+
}
|
7
|
+
$(target).empty();
|
8
|
+
let langSelect = new Set();
|
9
|
+
$("[lang]", obj).each(function(){
|
10
|
+
if(langSelect.has($(this).attr("lang"))){ return true; }
|
11
|
+
$(target).append("<span class=\"lang-select-item\" data-lang="+$(this).attr("lang")+">"+countryCodeToUTF8Flag($(this).attr("lang"))+"</span>");
|
12
|
+
langSelect.add($(this).attr("lang"));
|
13
|
+
});
|
14
|
+
if(langSelect.size <= 1){
|
15
|
+
$(target).hide();
|
16
|
+
return;
|
17
|
+
}
|
18
|
+
$(target).show();
|
19
|
+
displayLang($("html").attr("lang"), obj);
|
20
|
+
$(".lang-select-item").click(function(){
|
21
|
+
$("html").attr("lang", $(this).data("lang"));
|
22
|
+
let lang = $("html").attr("lang");
|
23
|
+
displayLang(lang);
|
24
|
+
});
|
25
|
+
}
|
26
|
+
|
27
|
+
function displayLang(lang, obj){
|
28
|
+
if(obj == null) obj = $(document);
|
29
|
+
let elementsWithLangAttr = new Set();
|
30
|
+
let elementIdsLangTrue = new Set();
|
31
|
+
$("[lang]").each(function(){
|
32
|
+
if($(this).is("html")){
|
33
|
+
return true;
|
34
|
+
}
|
35
|
+
elementsWithLangAttr.add($(this).attr("id"));
|
36
|
+
if($(this).attr("lang") != lang){
|
37
|
+
$(this).hide();
|
38
|
+
}else{
|
39
|
+
$(this).show();
|
40
|
+
elementIdsLangTrue.add($(this).attr("id"));
|
41
|
+
}
|
42
|
+
});
|
43
|
+
let elemWithLangAttrArr = Array.from(elementsWithLangAttr);
|
44
|
+
let elemIdsLangFalse = elemWithLangAttrArr.filter(x => !elementIdsLangTrue.has(x));
|
45
|
+
elemIdsLangFalse.forEach(function(x){
|
46
|
+
$("#"+x).first().show();
|
47
|
+
});
|
48
|
+
}
|
49
|
+
|
50
|
+
function countryCodeToUTF8Flag(code){
|
51
|
+
let charCodeA = "A".charCodeAt(0);
|
52
|
+
let utf8CountryIndicatorA = 127462;
|
53
|
+
let langCode = code;
|
54
|
+
let langFlagMap = new Map([["en", "gb"]]);
|
55
|
+
if(langFlagMap.has(code.toLowerCase())){
|
56
|
+
langCode = langFlagMap.get(code);
|
57
|
+
}
|
58
|
+
const utf8CountryIndicator = function(letter) {return (letter.toUpperCase().charCodeAt(0) - charCodeA) + utf8CountryIndicatorA;}
|
59
|
+
let firstIndicator = utf8CountryIndicator(langCode.charAt(0));
|
60
|
+
let secondIndicator = utf8CountryIndicator(langCode.charAt(1));
|
61
|
+
return "&#" + firstIndicator + ";&#" + secondIndicator + ";";
|
62
|
+
}
|
63
|
+
|
64
|
+
function fitTextToDiv(divTextElem, divFitToHeight, divFitToWidth){
|
65
|
+
let measureDiv = $('<div/>').text(divTextElem.text()).css("font-size", divTextElem.css("font-size"));
|
66
|
+
console.log($(this));
|
67
|
+
divTextElem.css("font-size", parseInt(divTextElem.css("font-size"))*divFitToWidth/divTextElem.width());
|
68
|
+
if(divTextElem.height() > divFitToHeight){
|
69
|
+
divTextElem.css("font-size", parseInt(divTextElem.css("font-size"))*divFitToHeight/divTextElem.height());
|
70
|
+
}
|
71
|
+
}
|