fluffy – Diff between revs 7 and 9
?pathlinks?
Rev 7 | Rev 9 | |||
---|---|---|---|---|
1 | <!DOCTYPE html> |
1 | <!DOCTYPE html> |
|
2 | <html> |
2 | <html> |
|
3 | |
3 | |
|
4 | <head> |
4 | <head> |
|
5 | <meta charset='utf-8'> |
5 | <meta charset='utf-8'> |
|
6 | <title>Fluffy</title> |
6 | <title>Fluffy</title> |
|
7 | <script src='/node_modules/jquery/dist/jquery.min.js'></script> |
7 | <script src='/node_modules/jquery/dist/jquery.min.js'></script> |
|
8 | <script src='/js/jquery.svg3dtagcloud.min.js'></script> |
8 | <script src='/js/jquery.svg3dtagcloud.min.js'></script> |
|
9 | |
9 | |
|
10 | <!-- Bootstrap CSS --> |
10 | <!-- Bootstrap CSS --> |
|
11 | <link href='/node_modules/bootstrap/dist/css/bootstrap.min.css' rel='stylesheet' type='text/css'> |
11 | <link href='/node_modules/bootstrap/dist/css/bootstrap.min.css' rel='stylesheet' type='text/css'> |
|
12 | <link href='/node_modules/bootstrap/dist/css/bootstrap-theme.min.css' rel='stylesheet' type='text/css'> |
12 | <link href='/node_modules/bootstrap/dist/css/bootstrap-theme.min.css' rel='stylesheet' type='text/css'> |
|
13 | |
13 | |
|
14 | <!-- FileInput --> |
14 | <!-- FileInput --> |
|
15 | <link href="/node_modules/bootstrap-fileinput/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css" /> |
15 | <link href="/node_modules/bootstrap-fileinput/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css" /> |
|
16 | <!-- Bootstrap Select --> |
16 | <!-- Bootstrap Select --> |
|
17 | <link href="/node_modules/bootstrap-select/dist/css/bootstrap-select.min.css" media="all" rel="stylesheet" type="text/css" /> |
17 | <link href="/node_modules/bootstrap-select/dist/css/bootstrap-select.min.css" media="all" rel="stylesheet" type="text/css" /> |
|
- | 18 | |
||
- | 19 | <!-- Wizardry and Steamworks Window Manager Style --> |
||
- | 20 | <link href='/node_modules/was.wm.js/css/wm.css' rel='stylesheet' type='text/css'> |
||
18 | |
21 | |
|
19 | <!-- Fluffy style --> |
22 | <!-- Fluffy style --> |
|
20 | <link href='/css/style.css' rel='stylesheet' type='text/css'> |
23 | <link href='/css/style.css' rel='stylesheet' type='text/css'> |
|
21 | |
24 | |
|
22 | </head> |
25 | </head> |
|
23 | <body> |
26 | <body> |
|
24 | <div id='cloud'></div> |
27 | <div class="container"> |
|
- | 28 | <div id="window-manager-desktop"> |
||
- | 29 | </div> |
||
- | 30 | </div> |
||
25 | <!-- Add and remove buttons --> |
31 | <!-- Add and remove buttons --> |
|
26 | <div class="add" data-toggle="modal" data-target="#addModal">+</div> |
32 | <div class="add" data-toggle="modal" data-target="#addModal">+</div> |
|
27 | <div class="remove" data-toggle="modal" data-target="#removeModal">-</div> |
33 | <div class="remove" data-toggle="modal" data-target="#removeModal">-</div> |
|
28 | <!-- Add Modal --> |
34 | <!-- Add Modal --> |
|
29 | <div id="addModal" class="modal fade" role="dialog"> |
35 | <div id="addModal" class="modal fade" role="dialog"> |
|
30 | <div class="modal-dialog"> |
36 | <div class="modal-dialog"> |
|
31 | <!-- Modal content--> |
37 | <!-- Modal content--> |
|
32 | <div class="modal-content"> |
38 | <div class="modal-content"> |
|
33 | <div class="modal-header"> |
39 | <div class="modal-header"> |
|
34 | <button type="button" class="close" data-dismiss="modal">×</button> |
40 | <button type="button" class="close" data-dismiss="modal">×</button> |
|
35 | <h4 class="modal-title">Add New Service</h4> |
41 | <h4 class="modal-title">Add New Service</h4> |
|
36 | </div> |
42 | </div> |
|
37 | <div class="modal-body"> |
43 | <div class="modal-body"> |
|
38 | <div class="row"> |
44 | <div class="row"> |
|
39 | <div class="col-md-6 col-sm-6 col-xs-12"> |
45 | <div class="col-md-6 col-sm-6 col-xs-12"> |
|
40 | <form id="addService" data-toggle="validator" role="form" enctype="multipart/form-data" method="POST" action="/add"> |
46 | <form id="addService" data-toggle="validator" role="form" enctype="multipart/form-data" method="POST" action="/add"> |
|
41 | <div class="form-group "> |
47 | <div class="form-group "> |
|
42 | <label class="control-label requiredField" for="service-url"> |
48 | <label class="control-label requiredField" for="service-url"> |
|
43 | Service URL |
49 | Service URL |
|
44 | </label> |
50 | </label> |
|
45 | <input class="form-control" id="service-url" name="service-url" placeholder="http://myservice.tld/" type="text" required/> |
51 | <input class="form-control" id="service-url" name="service-url" placeholder="http://myservice.tld/" type="text" required/> |
|
46 | <div class="help-block with-errors"> |
52 | <div class="help-block with-errors"> |
|
47 | The URL to link to. |
53 | The URL to link to. |
|
48 | </div> |
54 | </div> |
|
49 | </div> |
55 | </div> |
|
50 | <div class="form-group "> |
56 | <div class="form-group "> |
|
51 | <label class="control-label requiredField" for="service-name"> |
57 | <label class="control-label requiredField" for="service-name"> |
|
52 | Service Name |
58 | Service Name |
|
53 | </label> |
59 | </label> |
|
54 | <input class="form-control" id="service-name" name="service-name" placeholder="My Service" type="text" required/> |
60 | <input class="form-control" id="service-name" name="service-name" placeholder="My Service" type="text" required/> |
|
55 | <div class="help-block with-errors"> |
61 | <div class="help-block with-errors"> |
|
56 | The name that should be used for the service. |
62 | The name that should be used for the service. |
|
57 | </div> |
63 | </div> |
|
58 | </div> |
64 | </div> |
|
59 | <div class="form-group"> |
65 | <div class="form-group"> |
|
60 | <label class="control-label requiredField" for="dropzone"> |
66 | <label class="control-label requiredField" for="dropzone"> |
|
61 | Service Icon |
67 | Service Icon |
|
62 | </label> |
68 | </label> |
|
63 | <div class="file-loading"> |
69 | <div class="file-loading"> |
|
64 | <input id="service-icon" name="service-icon" type="file" required> |
70 | <input id="service-icon" name="service-icon" type="file" required> |
|
65 | </div> |
71 | </div> |
|
66 | <div id="service-icon-errors" class="center-block" style="display:none"></div> |
72 | <div id="service-icon-errors" class="center-block" style="display:none"></div> |
|
67 | <div class="help-block with-errors"> |
73 | <div class="help-block with-errors"> |
|
68 | An icon that should be used to represent the service. |
74 | An icon that should be used to represent the service. |
|
69 | </div> |
75 | </div> |
|
70 | </div> |
76 | </div> |
|
71 | <div class="form-group"> |
77 | <div class="form-group"> |
|
72 | <button id="add" type="submit" class="btn btn-primary">Add</button> |
78 | <button id="add" type="submit" class="btn btn-primary">Add</button> |
|
73 | </div> |
79 | </div> |
|
74 | </form> |
80 | </form> |
|
75 | </div> |
81 | </div> |
|
76 | </div> |
82 | </div> |
|
77 | </div> |
83 | </div> |
|
78 | </div> |
84 | </div> |
|
79 | </div> |
85 | </div> |
|
80 | </div> |
86 | </div> |
|
81 | |
87 | |
|
82 | <!-- Remove Modal --> |
88 | <!-- Remove Modal --> |
|
83 | <div id="removeModal" class="modal fade" role="dialog"> |
89 | <div id="removeModal" class="modal fade" role="dialog"> |
|
84 | <div class="modal-dialog"> |
90 | <div class="modal-dialog"> |
|
85 | <!-- Modal content--> |
91 | <!-- Modal content--> |
|
86 | <div class="modal-content"> |
92 | <div class="modal-content"> |
|
87 | <div class="modal-header"> |
93 | <div class="modal-header"> |
|
88 | <button type="button" class="close" data-dismiss="modal">×</button> |
94 | <button type="button" class="close" data-dismiss="modal">×</button> |
|
89 | <h4 class="modal-title">Remove Services</h4> |
95 | <h4 class="modal-title">Remove Services</h4> |
|
90 | </div> |
96 | </div> |
|
91 | <div class="modal-body"> |
97 | <div class="modal-body"> |
|
92 | <div class="row"> |
98 | <div class="row"> |
|
93 | <div class="col-md-6 col-sm-6 col-xs-12"> |
99 | <div class="col-md-6 col-sm-6 col-xs-12"> |
|
94 | <form id="removeService" data-toggle="validator" role="form" enctype="multipart/form-data" method="POST" action="/remove"> |
100 | <form id="removeService" data-toggle="validator" role="form" enctype="multipart/form-data" method="POST" action="/remove"> |
|
95 | <div class="form-group"> |
101 | <div class="form-group"> |
|
96 | <select name="remove-services" id="remove-services" class="selectpicker" multiple="multiple"> |
102 | <select name="remove-services" id="remove-services" class="selectpicker" multiple="multiple"> |
|
97 | </select> |
103 | </select> |
|
98 | </div> |
104 | </div> |
|
99 | <div class="form-group"> |
105 | <div class="form-group"> |
|
100 | <button id="remove" type="submit" class="btn btn-primary">Remove</button> |
106 | <button id="remove" type="submit" class="btn btn-primary">Remove</button> |
|
101 | </div> |
107 | </div> |
|
102 | </form> |
108 | </form> |
|
103 | </div> |
109 | </div> |
|
104 | </div> |
110 | </div> |
|
105 | </div> |
111 | </div> |
|
106 | </div> |
112 | </div> |
|
107 | </div> |
113 | </div> |
|
108 | </div> |
114 | </div> |
|
109 | |
115 | |
|
110 | <!-- Bootstrap JavaScript --> |
116 | <!-- Bootstrap JavaScript --> |
|
111 | <script src='/node_modules/bootstrap/dist/js/bootstrap.min.js'></script> |
117 | <script src='/node_modules/bootstrap/dist/js/bootstrap.min.js'></script> |
|
112 | <!-- Bootstrap Validator --> |
118 | <!-- Bootstrap Validator --> |
|
113 | <script src='/node_modules/bootstrap-validator/dist/validator.min.js'></script> |
119 | <script src='/node_modules/bootstrap-validator/dist/validator.min.js'></script> |
|
114 | <!-- FileInput --> |
120 | <!-- FileInput --> |
|
115 | <script src='/node_modules/bootstrap-fileinput/js/fileinput.min.js'></script> |
121 | <script src='/node_modules/bootstrap-fileinput/js/fileinput.min.js'></script> |
|
116 | <!-- Bootstrap Select --> |
122 | <!-- Bootstrap Select --> |
|
117 | <script src='/node_modules/bootstrap-select/js/bootstrap-select.js'></script> |
123 | <script src='/node_modules/bootstrap-select/js/bootstrap-select.js'></script> |
|
- | 124 | <!-- Wizardry and Steamworks Window Manager --> |
||
- | 125 | <script src="/node_modules/was.wm.js/dist/was.wm.min.js"></script> |
||
- | 126 | |
||
118 | <script> |
127 | <script> |
|
119 | $(document).ready(function() { |
128 | $(document).ready(function() { |
|
120 | $.getJSON('/data/data.json', (services) => { |
- | ||
121 | // Create and display the tag cloud. |
- | ||
122 | $('#cloud').svg3DTagCloud({ |
- | ||
- | 129 | |
||
123 | entries: services, |
130 | var wm = new wasWM('/services'); |
|
124 | width: '100%', |
- | ||
125 | height: '100%', |
- | ||
126 | radius: '65%', |
- | ||
127 | radiusMin: 75, |
- | ||
128 | bgDraw: true, |
- | ||
129 | bgColor: '#000', |
- | ||
130 | opacityOver: 1.00, |
- | ||
131 | opacityOut: 0.05, |
- | ||
132 | opacitySpeed: 6, |
- | ||
133 | fov: 800, |
- | ||
134 | speed: 2, |
- | ||
135 | //fontFamily: 'Oswald, Arial, sans-serif', |
- | ||
136 | fontSize: '14px', |
- | ||
137 | fontColor: '#000', |
- | ||
138 | fontWeight: 'bold', //bold |
- | ||
139 | fontStyle: 'normal', //italic |
- | ||
140 | fontStretch: 'normal', //wider, narrower, ultra-condensed, extra-condensed, condensed, semi-condensed, semi-expanded, expanded, extra-expanded, ultra-expanded |
- | ||
141 | fontToUpperCase: true, |
- | ||
142 | //tooltipFontFamily: 'Oswald, Arial, sans-serif', |
- | ||
143 | tooltipFontSize: '14px', |
- | ||
144 | tooltipFontColor: '#000', |
- | ||
145 | tooltipFontWeight: 'bold', //bold |
- | ||
146 | tooltipFontStyle: 'normal', //italic |
- | ||
147 | tooltipFontStretch: 'normal', //wider, narrower, ultra-condensed, extra-condensed, condensed, semi-condensed, semi-expanded, expanded, extra-expanded, ultra-expanded |
- | ||
148 | tooltipFontToUpperCase: false, |
- | ||
149 | tooltipTextAnchor: 'middle', |
- | ||
150 | tooltipDiffX: 0, |
- | ||
151 | tooltipDiffY: 16 |
- | ||
152 | }); |
- | ||
153 | |
131 | |
|
154 | // Populate the dropbox for removing services. |
132 | // Populate the dropbox for removing services when the modal is shown. |
|
- | 133 | $('#removeModal').on('show.bs.modal', () => { |
||
155 | services.forEach((service) => { |
134 | wm.icons.forEach((service) => { |
|
156 | if ($("#remove-services option[value='" + service.tooltip + "']").length === 0) { |
135 | if ($("#remove-services option[value='" + service + "']").length === 0) { |
|
157 | $("#remove-services").append('<option value="' + service.tooltip + '">' + service.tooltip + '</option>'); |
136 | $("#remove-services").append('<option value="' + service + '">' + service + '</option>'); |
|
158 | } |
137 | } |
|
159 | }); |
138 | }); |
|
160 | $('#remove-services').selectpicker('refresh'); |
139 | $('#remove-services').selectpicker('refresh'); |
|
- | 140 | }); |
||
161 | |
141 | |
|
162 | // Initialize file input for adding service icons. |
142 | // Initialize file input for adding service icons. |
|
163 | $('#service-icon').fileinput({ |
143 | $('#service-icon').fileinput({ |
|
164 | previewFileType: [ "image" ], |
144 | previewFileType: [ "image" ], |
|
165 | allowedFileTypes: [ "image" ], |
145 | allowedFileTypes: [ "image" ], |
|
166 | allowedFileExtensions: [ "png" ], |
146 | allowedFileExtensions: [ "png" ], |
|
167 | maxFilesNum: 1 |
147 | maxFilesNum: 1 |
|
168 | }); |
148 | }); |
|
169 | |
149 | |
|
170 | // Validation process to ensure that all parameters are passed. |
150 | // Validation process to ensure that all parameters are passed. |
|
171 | $('#addService').validator().on('submit', function (e) { |
151 | $('#addService').validator().on('submit', function (e) { |
|
172 | if (e.isDefaultPrevented()) |
152 | if (e.isDefaultPrevented()) |
|
173 | return; |
153 | return; |
|
174 | }); |
154 | }); |
|
175 | |
155 | |
|
176 | $('#removeService').validator().on('submit', function (e) { |
156 | $('#removeService').validator().on('submit', function (e) { |
|
177 | if (e.isDefaultPrevented()) |
157 | if (e.isDefaultPrevented()) |
|
178 | return; |
158 | return; |
|
179 | }); |
159 | }); |
|
180 | }); |
- | ||
181 | }); |
160 | }); |
|
182 | </script> |
161 | </script> |
|
183 | </body> |
162 | </body> |
|
184 | |
163 | |
|
185 |
|
164 |
|
|
186 | |
165 | |
|
187 | |
166 | |
|
188 | |
167 | |