Browse Source

Add Overview Panel

Add Overview Panel like a neutron network topology panel.
User can see all relationships among
machine learning resources.

implements blueprint overview-panel
Change-Id: I1ee215e43039d984b494aa9f407d176ce008ea81
Hiroyuki Eguchi 2 years ago
parent
commit
9b0f08ab31
22 changed files with 822 additions and 1 deletions
  1. 0
    0
      meteos_ui/content/machine_learning/overview/__init__.py
  2. 23
    0
      meteos_ui/content/machine_learning/overview/panel.py
  3. 19
    0
      meteos_ui/content/machine_learning/overview/tests.py
  4. 20
    0
      meteos_ui/content/machine_learning/overview/urls.py
  5. 21
    0
      meteos_ui/enabled/_1720_machine_learning_overview_panel.py
  6. 0
    0
      meteos_ui/enabled/_1730_machine_learning_templates_panel.py
  7. 0
    0
      meteos_ui/enabled/_1740_machine_learning_experiments_panel.py
  8. 0
    0
      meteos_ui/enabled/_1750_machine_learning_datasets_panel.py
  9. 0
    0
      meteos_ui/enabled/_1760_machine_learning_models_panel.py
  10. 0
    0
      meteos_ui/enabled/_1770_machine_learning_model_evaluations_panel.py
  11. 0
    0
      meteos_ui/enabled/_1780_machine_learning_learnings_panel.py
  12. 2
    1
      meteos_ui/static/dashboard/machine_learning/machine_learning.module.js
  13. 215
    0
      meteos_ui/static/dashboard/machine_learning/overview/details.module.js
  14. 36
    0
      meteos_ui/static/dashboard/machine_learning/overview/images/meteos-dataset.svg
  15. 279
    0
      meteos_ui/static/dashboard/machine_learning/overview/images/meteos-evaluation.svg
  16. 39
    0
      meteos_ui/static/dashboard/machine_learning/overview/images/meteos-experiment.svg
  17. 27
    0
      meteos_ui/static/dashboard/machine_learning/overview/images/meteos-learning.svg
  18. 31
    0
      meteos_ui/static/dashboard/machine_learning/overview/images/meteos-model.svg
  19. 27
    0
      meteos_ui/static/dashboard/machine_learning/overview/images/meteos-template.svg
  20. 52
    0
      meteos_ui/static/dashboard/machine_learning/overview/overview.module.js
  21. 23
    0
      meteos_ui/static/dashboard/machine_learning/overview/overview.module.spec.js
  22. 8
    0
      meteos_ui/static/dashboard/machine_learning/overview/panel.html

+ 0
- 0
meteos_ui/content/machine_learning/overview/__init__.py View File


+ 23
- 0
meteos_ui/content/machine_learning/overview/panel.py View File

@@ -0,0 +1,23 @@
1
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
2
+#    not use this file except in compliance with the License. You may obtain
3
+#    a copy of the License at
4
+#
5
+#         http://www.apache.org/licenses/LICENSE-2.0
6
+#
7
+#    Unless required by applicable law or agreed to in writing, software
8
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10
+#    License for the specific language governing permissions and limitations
11
+#    under the License.
12
+
13
+from django.utils.translation import ugettext_lazy as _
14
+import horizon
15
+
16
+# This panel will be loaded from horizon, because specified in enabled file.
17
+# To register REST api, import below here.
18
+from meteos_ui.api import rest_api  # noqa
19
+
20
+
21
+class Overview(horizon.Panel):
22
+    name = _("Overview")
23
+    slug = "machine_learning.overview"

+ 19
- 0
meteos_ui/content/machine_learning/overview/tests.py View File

@@ -0,0 +1,19 @@
1
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
2
+#    not use this file except in compliance with the License. You may obtain
3
+#    a copy of the License at
4
+#
5
+#         http://www.apache.org/licenses/LICENSE-2.0
6
+#
7
+#    Unless required by applicable law or agreed to in writing, software
8
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10
+#    License for the specific language governing permissions and limitations
11
+#    under the License.
12
+
13
+from openstack_dashboard.test import helpers as test
14
+
15
+
16
+class OverviewTests(test.TestCase):
17
+    # Unit tests for Overview.
18
+    def test_me(self):
19
+        self.assertTrue(1 + 1 == 2)

+ 20
- 0
meteos_ui/content/machine_learning/overview/urls.py View File

@@ -0,0 +1,20 @@
1
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
2
+#    not use this file except in compliance with the License. You may obtain
3
+#    a copy of the License at
4
+#
5
+#         http://www.apache.org/licenses/LICENSE-2.0
6
+#
7
+#    Unless required by applicable law or agreed to in writing, software
8
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10
+#    License for the specific language governing permissions and limitations
11
+#    under the License.
12
+
13
+from django.conf.urls import url
14
+from django.utils.translation import ugettext_lazy as _
15
+from horizon.browsers import views
16
+
17
+title = _("Overview")
18
+urlpatterns = [
19
+    url('', views.AngularIndexView.as_view(title=title), name='index'),
20
+]

+ 21
- 0
meteos_ui/enabled/_1720_machine_learning_overview_panel.py View File

@@ -0,0 +1,21 @@
1
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
2
+#    not use this file except in compliance with the License. You may obtain
3
+#    a copy of the License at
4
+#
5
+#         http://www.apache.org/licenses/LICENSE-2.0
6
+#
7
+#    Unless required by applicable law or agreed to in writing, software
8
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
9
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
10
+#    License for the specific language governing permissions and limitations
11
+#    under the License.
12
+
13
+# The slug of the panel to be added to HORIZON_CONFIG. Required.
14
+PANEL = 'machine_learning.overview'
15
+# The slug of the panel group the PANEL is associated with.
16
+PANEL_GROUP = 'machine_learning'
17
+# The slug of the dashboard the PANEL associated with. Required.
18
+PANEL_DASHBOARD = 'project'
19
+
20
+# Python panel class of the PANEL to be added.
21
+ADD_PANEL = 'meteos_ui.content.machine_learning.overview.panel.Overview'

meteos_ui/enabled/_1720_machine_learning_templates_panel.py → meteos_ui/enabled/_1730_machine_learning_templates_panel.py View File


meteos_ui/enabled/_1730_machine_learning_experiments_panel.py → meteos_ui/enabled/_1740_machine_learning_experiments_panel.py View File


meteos_ui/enabled/_1740_machine_learning_datasets_panel.py → meteos_ui/enabled/_1750_machine_learning_datasets_panel.py View File


meteos_ui/enabled/_1750_machine_learning_models_panel.py → meteos_ui/enabled/_1760_machine_learning_models_panel.py View File


meteos_ui/enabled/_1760_machine_learning_model_evaluations_panel.py → meteos_ui/enabled/_1770_machine_learning_model_evaluations_panel.py View File


meteos_ui/enabled/_1770_machine_learning_learnings_panel.py → meteos_ui/enabled/_1780_machine_learning_learnings_panel.py View File


+ 2
- 1
meteos_ui/static/dashboard/machine_learning/machine_learning.module.js View File

@@ -28,7 +28,8 @@
28 28
       'horizon.dashboard.machine_learning.datasets',
29 29
       'horizon.dashboard.machine_learning.models',
30 30
       'horizon.dashboard.machine_learning.model_evaluations',
31
-      'horizon.dashboard.machine_learning.learnings'
31
+      'horizon.dashboard.machine_learning.learnings',
32
+      'horizon.dashboard.machine_learning.overview'
32 33
     ])
33 34
     .config(config)
34 35
 

+ 215
- 0
meteos_ui/static/dashboard/machine_learning/overview/details.module.js View File

@@ -0,0 +1,215 @@
1
+/**
2
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
3
+ * not use this file except in compliance with the License. You may obtain
4
+ * a copy of the License at
5
+ *
6
+ *    http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Unless required by applicable law or agreed to in writing, software
9
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11
+ * License for the specific language governing permissions and limitations
12
+ * under the License.
13
+ */
14
+(function () {
15
+  'use strict';
16
+
17
+  angular
18
+    .module('horizon.framework.widgets')
19
+    .controller('OverviewController', OverviewController);
20
+
21
+  OverviewController.$inject = [
22
+    '$q',
23
+    '$scope',
24
+    'horizon.dashboard.machine_learning.overview.basePath',
25
+    'horizon.app.core.openstack-service-api.meteos'
26
+  ];
27
+
28
+  function OverviewController($q, $scope, basePath, meteos) {
29
+
30
+    var topologyNodes = [];
31
+    var topologyLinks = [];
32
+
33
+    var templates = meteos.getTemplates().then(function(response){
34
+                      response.data.items.map(addIcon, 'template');
35
+                    });
36
+
37
+    var experiments = meteos.getExperiments().then(function(response){
38
+                        response.data.items.map(addIcon, 'experiment');
39
+                      });
40
+
41
+    var datasets = meteos.getDatasets().then(function(response){
42
+                     response.data.items.map(addIcon, 'dataset');
43
+                   });
44
+
45
+    var models = meteos.getModels().then(function(response){
46
+                   response.data.items.map(addIcon, 'model');
47
+                 });
48
+
49
+    var evaluations = meteos.getModelEvaluations().then(function(response){
50
+                        response.data.items.map(addIcon, 'evaluation');
51
+                      });
52
+
53
+    var learnings = meteos.getLearnings().then(function(response){
54
+                      response.data.items.map(addIcon, 'learning');
55
+                    });
56
+
57
+    function addIcon(item){
58
+
59
+      item.icon = "meteos-" + this + ".svg";
60
+      topologyNodes.push(item);
61
+    }
62
+
63
+    var promiseAll = $q.all([templates,
64
+                             experiments,
65
+                             datasets,
66
+                             models,
67
+                             evaluations,
68
+                             learnings]);
69
+
70
+    promiseAll.then(drawTopology);
71
+
72
+    function drawTopology() {
73
+
74
+      angular.forEach(topologyNodes,function(record, index){
75
+        if("template_id" in record){
76
+          createIndex(index, record.template_id);
77
+        }
78
+        if("experiment_id" in record){
79
+          createIndex(index, record.experiment_id);
80
+        }
81
+        if("model_id" in record){
82
+          createIndex(index, record.model_id);
83
+        }
84
+        if("source_dataset_url" in record){
85
+          if ( record.source_dataset_url.indexOf('internal') != -1) {
86
+            createIndex(index, record.source_dataset_url.split('//')[1]);
87
+          }
88
+        }
89
+      });
90
+
91
+      function createIndex(source_index, id){
92
+        angular.forEach(topologyNodes,function(record,i){
93
+          if(record.id == id){
94
+          topologyLinks.push({"source": source_index, "target": i})
95
+          }
96
+        });
97
+      }
98
+
99
+      var topology = {
100
+      "nodes":topologyNodes,
101
+      "links":topologyLinks}
102
+
103
+      var width = 900,
104
+          height = 500;
105
+
106
+      var force = d3.layout.force()
107
+                    .charge(-2500)
108
+                    .linkDistance(100)
109
+                    .size([width, height])
110
+                    .nodes(topology.nodes)
111
+                    .links(topology.links)
112
+                    .start();
113
+
114
+      var zoom = d3.behavior.zoom()
115
+                   .scaleExtent([1, 10])
116
+                   .on("zoom", zoomed);
117
+
118
+      var svg = d3.select("#meteosTopologyCanvas").append("svg")
119
+                                                  .attr("width", width)
120
+                                                  .attr("height", height)
121
+                                                  .append("g")
122
+                                                  .call(zoom);
123
+
124
+      var rect = svg.append("rect")
125
+                    .attr("width", width)
126
+                    .attr("height", height)
127
+                    .style("fill", "none");
128
+
129
+      var container = svg.append("g");
130
+
131
+      var link = container.append("g")
132
+                          .attr("class", "links")
133
+                          .selectAll(".link")
134
+                          .data(topology.links)
135
+                          .enter().append("line")
136
+                          .attr("class", "link");
137
+
138
+      var node = container.append("g")
139
+                          .attr("class", "nodes")
140
+                          .selectAll(".node")
141
+                          .data(topology.nodes)
142
+                          .enter().append("g")
143
+                          .attr("class", "node")
144
+                          .attr("cx", function(d) { return d.x; })
145
+                          .attr("cy", function(d) { return d.y; })
146
+                          .call(force.drag);
147
+
148
+      var div = d3.select("#meteosMenu").append("div")
149
+                                        .style("width", "360px")
150
+                                        .style("height", "180px")
151
+                                        .style("background", "#d6dadf")
152
+                                        .style("position", "absolute")
153
+                                        .style("opacity", 0)
154
+                                        .style("text-overflow", "ellipsis")
155
+                                        .style("display", "inline-block")
156
+                                        .style("overflow", "hidden")
157
+                                        .style("border-radius", "8px")
158
+                                        .style("padding", "5px")
159
+                                        .style("box-shadow", "0px 0px 3px 3px #d6dadf");
160
+
161
+      node.append("image")
162
+          .attr("xlink:href", function(d) {return basePath + "/images/" + d.icon})
163
+          .attr("x", -35)
164
+          .attr("y", -35)
165
+          .attr("width", 70)
166
+          .attr("height", 70);
167
+
168
+      node.on("mouseover", function(d) {
169
+             div.transition()
170
+                .style("opacity", .9);
171
+             div.html(createMenu(d))
172
+                .style("left", (d3.event.pageX - 200) + "px")
173
+                .style("top", (d3.event.pageY - 10) + "px");
174
+          });
175
+
176
+      node.on("mouseout", function(d) {
177
+             div.transition()
178
+                .duration(600)
179
+                .style("opacity", 0);
180
+          });
181
+
182
+      node.append("text")
183
+          .attr("dx", 50)
184
+          .attr("dy", ".60em")
185
+          .text(function(d) { return d.name });
186
+
187
+      force.on("tick", function() {
188
+                  link.attr("x1", function(d) { return d.source.x; })
189
+                      .attr("y1", function(d) { return d.source.y; })
190
+                      .attr("x2", function(d) { return d.target.x; })
191
+                      .attr("y2", function(d) { return d.target.y; });
192
+                  node.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; });
193
+      });
194
+
195
+      var hiddenFields=['x', 'y', 'px', 'py',
196
+                        'index','head','fixed','icon', 'stdout',
197
+                        'weight', 'links', 'name', 'created_at'];
198
+
199
+      function createMenu(d){
200
+        var form = "";
201
+        angular.forEach(d, function(v, k){
202
+
203
+          if(hiddenFields.indexOf(k) == -1){
204
+          form += "<b>" + k + "</b> : " + v + "</br>";
205
+          }
206
+        });
207
+        return form;
208
+      }
209
+
210
+      function zoomed() {
211
+        container.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")");
212
+      }
213
+    }
214
+  }
215
+})();

+ 36
- 0
meteos_ui/static/dashboard/machine_learning/overview/images/meteos-dataset.svg View File

@@ -0,0 +1,36 @@
1
+<?xml version="1.0" standalone="no"?>
2
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="356.000000pt" height="356.000000pt" viewBox="0 0 356.000000 356.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+<g transform="translate(0.000000,356.000000) scale(0.100000,-0.100000)"
9
+fill="#000000" stroke="none">
10
+<path d="M1560 3549 c-313 -40 -615 -165 -870 -359 -97 -74 -247 -224 -322
11
+-323 -166 -217 -286 -482 -339 -744 -30 -153 -37 -436 -15 -593 98 -676 561
12
+-1229 1208 -1444 209 -69 293 -81 568 -81 206 0 248 3 340 23 621 135 1109
13
+552 1324 1134 86 231 101 325 101 618 -1 216 -3 257 -23 350 -77 355 -242 660
14
+-494 912 -283 283 -644 457 -1048 508 -97 12 -335 11 -430 -1z m368 -250 c264
15
+-29 481 -105 689 -242 353 -233 593 -594 670 -1007 27 -146 24 -431 -6 -570
16
+-45 -212 -134 -417 -254 -587 -80 -113 -248 -281 -360 -360 -173 -122 -375
17
+-209 -587 -254 -153 -33 -449 -33 -599 -1 -479 104 -860 400 -1079 838 -45 90
18
+-108 285 -126 394 -85 499 65 979 417 1339 129 132 250 219 417 301 259 128
19
+542 180 818 149z"/>
20
+<path d="M1345 2459 c-49 -4 -106 -11 -125 -15 l-35 -7 40 -8 c181 -35 840
21
+-37 1095 -3 229 30 -663 61 -975 33z"/>
22
+<path d="M1150 2237 l0 -165 63 -11 c229 -41 924 -38 1165 4 l32 6 0 166 c0
23
+141 -2 164 -15 159 -60 -23 -220 -31 -615 -31 -395 0 -555 8 -615 31 -13 5
24
+-15 -17 -15 -159z"/>
25
+<path d="M1252 1980 c-29 -4 -55 -10 -58 -13 -7 -7 88 -18 246 -27 269 -17
26
+690 -9 880 16 49 6 52 8 29 18 -29 13 -1016 18 -1097 6z"/>
27
+<path d="M1150 1767 l0 -165 63 -11 c229 -41 924 -38 1165 4 l32 6 0 166 c0
28
+141 -2 164 -15 159 -60 -23 -220 -31 -615 -31 -395 0 -555 8 -615 31 -13 5
29
+-15 -17 -15 -159z"/>
30
+<path d="M1345 1509 c-49 -4 -106 -11 -125 -15 l-35 -7 40 -8 c181 -35 840
31
+-37 1095 -3 229 30 -663 61 -975 33z"/>
32
+<path d="M1150 1287 l0 -165 63 -11 c229 -41 924 -38 1165 4 l32 6 0 166 c0
33
+141 -2 164 -15 159 -60 -23 -220 -31 -615 -31 -395 0 -555 8 -615 31 -13 5
34
+-15 -17 -15 -159z"/>
35
+</g>
36
+</svg>

+ 279
- 0
meteos_ui/static/dashboard/machine_learning/overview/images/meteos-evaluation.svg View File

@@ -0,0 +1,279 @@
1
+<?xml version="1.0" standalone="no"?>
2
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="355.000000pt" height="356.000000pt" viewBox="0 0 355.000000 356.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+<g transform="translate(0.000000,356.000000) scale(0.100000,-0.100000)"
9
+fill="#000000" stroke="none">
10
+<path d="M1560 3549 c-546 -71 -1010 -370 -1303 -844 -101 -161 -189 -387
11
+-228 -582 -30 -153 -37 -436 -15 -593 68 -472 317 -893 695 -1179 201 -152
12
+456 -267 716 -322 98 -21 136 -24 345 -24 206 0 249 3 348 23 707 143 1250
13
+684 1403 1397 22 99 24 134 24 355 -1 279 -12 356 -87 575 -218 640 -778 1101
14
+-1444 1190 -117 16 -348 18 -454 4z m480 -264 c249 -42 507 -163 710 -333 275
15
+-229 461 -549 527 -904 27 -143 24 -430 -6 -568 -122 -572 -531 -1014 -1085
16
+-1174 -275 -80 -620 -70 -898 24 -741 253 -1173 1031 -996 1794 95 412 354
17
+762 726 980 167 98 395 173 592 195 110 13 310 6 430 -14z"/>
18
+<path d="M1730 3060 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
19
+-27 0 -30 -3 -30 -30z"/>
20
+<path d="M1727 2951 c-2 -10 -1 -25 4 -33 6 -10 2 -21 -11 -33 -20 -18 -21
21
+-18 -35 1 -14 19 -14 19 -35 -2 -20 -20 -21 -23 -7 -45 15 -24 10 -30 -255
22
+-319 -149 -162 -275 -295 -282 -295 -26 -2 -57 -27 -52 -43 3 -9 -1 -26 -9
23
+-36 -12 -16 -17 -17 -30 -6 -13 11 -20 11 -40 0 -24 -13 -24 -15 -9 -38 18
24
+-27 11 -39 -26 -44 -22 -3 -26 -10 -33 -57 -7 -52 -6 -56 39 -130 61 -101 56
25
+-95 78 -125 15 -21 16 -30 7 -35 -8 -5 -10 -18 -6 -34 6 -22 11 -26 30 -21 17
26
+4 27 -1 39 -18 16 -22 16 -23 -9 -32 -44 -17 -27 -72 19 -60 22 5 25 10 20 28
27
+-10 33 -1 20 117 -164 100 -158 109 -176 99 -199 -9 -19 -8 -27 5 -40 13 -13
28
+19 -13 36 -3 17 11 33 9 105 -15 83 -27 84 -28 84 -60 0 -30 3 -33 30 -33 24
29
+0 30 4 30 21 0 17 4 20 23 15 12 -3 25 -6 30 -6 4 0 7 -7 7 -15 0 -11 11 -15
30
+38 -15 20 0 132 -33 247 -73 l210 -72 -3 -32 c-3 -31 -1 -33 27 -33 26 0 31 4
31
+31 23 0 20 4 23 30 19 21 -3 30 -10 30 -24 0 -16 7 -19 43 -17 23 1 50 6 60
32
+11 11 5 17 5 17 -2 0 -5 6 -10 13 -10 13 0 37 40 37 61 0 13 -42 28 -55 21
33
+-11 -7 -15 -8 -58 -18 -27 -6 -27 -6 -16 22 161 421 379 1009 379 1024 0 26
34
+-13 40 -414 439 l-346 345 22 23 c21 23 21 23 2 38 -25 19 -41 19 -53 -2 -9
35
+-17 -11 -16 -32 4 -19 19 -20 24 -9 38 12 15 11 19 -10 36 -21 15 -27 16 -35
36
+5 -9 -11 -14 -11 -32 4 -12 9 -21 23 -21 31 3 41 -3 49 -31 49 -20 0 -30 -6
37
+-34 -19z m58 -211 c3 -5 -1 -10 -10 -10 -9 0 -13 5 -10 10 3 6 8 10 10 10 2 0
38
+7 -4 10 -10z m65 -67 c25 -26 38 -41 28 -35 -14 11 -19 9 -32 -10 -15 -21 -15
39
+-24 5 -43 l20 -20 20 24 20 24 22 -21 c17 -17 19 -24 9 -34 -18 -18 -15 -31
40
+10 -47 19 -12 23 -11 33 3 11 14 14 14 30 -4 9 -10 15 -26 12 -35 -7 -16 32
41
+-48 51 -43 6 2 96 -84 201 -191 151 -155 191 -201 196 -228 5 -30 9 -34 29
42
+-29 28 7 67 -27 43 -37 -8 -3 -17 -15 -20 -27 -4 -16 -1 -24 14 -27 22 -6 22
43
+-5 7 -38 -8 -17 -17 -24 -29 -20 -21 7 -38 -44 -18 -55 18 -12 2 -60 -20 -60
44
+-22 0 -35 -38 -20 -56 14 -17 2 -54 -17 -54 -19 0 -39 -51 -24 -60 8 -5 8 -15
45
+0 -34 -5 -15 -14 -25 -19 -22 -5 3 -14 -7 -19 -23 -7 -20 -7 -31 0 -33 11 -4
46
+-10 -58 -23 -58 -5 0 -11 -17 -14 -37 -4 -21 -15 -56 -26 -79 -10 -23 -19 -50
47
+-19 -60 0 -25 -36 -84 -52 -85 -7 -1 -28 0 -45 1 -31 1 -33 -1 -33 -29 0 -35
48
+1 -35 -34 -21 -16 6 -26 17 -26 30 0 15 -7 20 -29 20 -16 0 -31 -4 -33 -9 -1
49
+-5 -113 29 -248 74 -135 46 -235 84 -222 84 18 1 22 7 22 31 0 27 -3 30 -30
50
+30 -25 0 -30 -4 -30 -25 0 -27 -3 -28 -37 -19 -14 4 -23 14 -23 25 0 11 -7 19
51
+-18 19 -17 0 -69 73 -65 90 5 18 -17 61 -28 55 -11 -8 -38 22 -39 43 0 6 7 12
52
+15 12 17 0 18 4 9 38 -6 19 -11 22 -38 17 -31 -6 -32 -5 -146 176 -127 200
53
+-129 204 -109 197 9 -3 20 7 29 28 22 47 456 521 473 516 5 -1 20 4 34 13 18
54
+12 22 20 14 29 -8 10 -6 20 8 37 19 23 20 23 34 5 12 -16 16 -17 35 -5 26 16
55
+28 32 7 49 -13 11 -12 16 8 41 23 29 40 38 31 16 -2 -7 4 -22 16 -32 19 -17
56
+21 -17 40 0 14 12 18 25 14 41 -4 13 -4 24 -2 24 2 0 24 -21 48 -47z m390
57
+-1623 c0 -12 -17 -12 -45 0 -17 7 -15 9 13 9 17 1 32 -3 32 -9z"/>
58
+<path d="M1740 2580 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
59
+-27 0 -30 -3 -30 -30z"/>
60
+<path d="M1740 2458 c1 -34 19 -68 37 -68 6 0 18 11 27 25 9 14 12 25 6 25 -5
61
+0 -10 11 -10 25 0 21 -5 25 -30 25 -27 0 -30 -3 -30 -32z"/>
62
+<path d="M1659 2381 l-24 -20 21 -21 c20 -20 21 -20 42 -3 21 17 21 19 4 41
63
+l-18 23 -25 -20z"/>
64
+<path d="M1847 2375 c-17 -24 -17 -25 8 -41 24 -16 27 -16 40 2 17 23 15 33
65
+-11 50 -16 11 -21 9 -37 -11z"/>
66
+<path d="M1740 2340 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
67
+-27 0 -30 -3 -30 -30z"/>
68
+<path d="M1562 2312 c-23 -18 -23 -18 -5 -41 17 -21 22 -22 41 -10 27 17 27
69
+21 5 48 -17 20 -19 20 -41 3z"/>
70
+<path d="M1946 2306 c-14 -22 -13 -25 4 -41 19 -17 21 -17 40 0 26 23 25 29
71
+-4 48 -23 15 -25 15 -40 -7z"/>
72
+<path d="M2044 2235 c-16 -24 -16 -27 2 -40 23 -17 33 -15 50 11 11 16 9 21
73
+-11 37 -24 17 -25 17 -41 -8z"/>
74
+<path d="M1461 2236 c-9 -11 -10 -20 -1 -35 13 -25 20 -26 46 -7 15 12 17 18
75
+8 33 -15 24 -38 28 -53 9z"/>
76
+<path d="M1740 2220 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
77
+-27 0 -30 -3 -30 -30z"/>
78
+<path d="M1371 2171 c-21 -16 -22 -20 -10 -39 17 -27 31 -28 52 -4 14 15 14
79
+19 -2 38 -17 21 -18 21 -40 5z"/>
80
+<path d="M2142 2168 c-18 -18 -15 -36 7 -48 26 -14 29 -13 41 11 19 35 -20 65
81
+-48 37z"/>
82
+<path d="M1747 2123 c-4 -3 -7 -17 -7 -30 0 -19 5 -23 30 -23 27 0 30 3 30 30
83
+0 25 -4 30 -23 30 -13 0 -27 -3 -30 -7z"/>
84
+<path d="M1271 2099 l-24 -20 20 -20 c18 -18 23 -19 42 -8 25 16 25 18 3 46
85
+l-17 22 -24 -20z"/>
86
+<path d="M2236 2092 c-15 -18 -15 -20 2 -35 25 -22 34 -21 51 5 12 19 11 23
87
+-5 35 -23 17 -28 17 -48 -5z"/>
88
+<path d="M2335 2023 c-13 -19 -15 -28 -6 -31 7 -2 20 -13 30 -24 13 -13 26
89
+-17 44 -13 23 6 24 9 15 36 -5 16 -15 29 -21 29 -6 0 -18 7 -27 15 -16 14 -19
90
+13 -35 -12z"/>
91
+<path d="M1168 2023 c-9 -10 -18 -34 -22 -54 -5 -31 -3 -37 13 -42 11 -3 22
92
+-17 26 -36 6 -27 10 -31 28 -25 32 9 37 17 31 42 -4 13 -14 22 -25 22 -23 0
93
+-23 6 -4 43 26 50 -12 89 -47 50z"/>
94
+<path d="M1747 2004 c-4 -4 -7 -18 -7 -31 0 -20 5 -23 36 -23 33 0 35 2 32 28
95
+-2 20 -9 28 -28 30 -14 2 -29 0 -33 -4z"/>
96
+<path d="M2263 1979 c-42 -16 -22 -66 21 -55 22 5 26 11 20 29 -9 32 -16 36
97
+-41 26z"/>
98
+<path d="M1259 1934 c-12 -33 -13 -31 21 -42 27 -10 30 -9 36 13 7 29 1 41
99
+-26 48 -16 4 -23 -1 -31 -19z"/>
100
+<path d="M2150 1950 c-14 -3 -25 -11 -24 -18 1 -7 2 -19 3 -27 1 -19 50 -20
101
+57 -2 2 7 1 22 -3 33 -6 16 -14 19 -33 14z"/>
102
+<path d="M2311 1908 c-10 -26 -6 -33 26 -42 18 -6 24 -2 29 20 11 43 -39 63
103
+-55 22z"/>
104
+<path d="M1374 1896 c-8 -31 -7 -32 27 -41 23 -6 27 -3 32 22 6 33 8 30 -25
105
+38 -23 6 -28 3 -34 -19z"/>
106
+<path d="M2015 1909 c-4 -5 -4 -21 -1 -34 5 -19 10 -22 31 -17 13 4 25 10 25
107
+15 1 43 -1 47 -24 47 -14 0 -28 -5 -31 -11z"/>
108
+<path d="M1489 1864 c-12 -33 -13 -31 21 -42 27 -10 30 -9 36 13 7 29 1 41
109
+-26 48 -16 4 -23 -1 -31 -19z"/>
110
+<path d="M1750 1855 c0 -19 -5 -35 -10 -35 -12 0 -33 -50 -25 -59 3 -3 10 1
111
+14 8 6 9 11 10 15 2 9 -15 57 -14 76 2 8 7 16 25 18 40 4 34 -32 77 -65 77
112
+-20 0 -23 -5 -23 -35z"/>
113
+<path d="M1902 1881 c-9 -5 -11 -17 -7 -34 6 -23 11 -26 34 -21 34 9 34 9 27
114
+39 -6 25 -29 32 -54 16z"/>
115
+<path d="M1604 1826 c-8 -31 -7 -32 27 -41 23 -6 27 -3 32 22 6 33 8 30 -25
116
+38 -23 6 -28 3 -34 -19z"/>
117
+<path d="M1233 1810 c-15 -6 -20 -15 -16 -30 7 -27 17 -32 47 -24 22 5 23 8
118
+14 35 -11 31 -12 32 -45 19z"/>
119
+<path d="M2274 1794 c-11 -43 39 -63 55 -21 10 25 6 32 -26 41 -18 6 -24 2
120
+-29 -20z"/>
121
+<path d="M1671 1708 c-12 -19 -11 -23 10 -39 23 -18 24 -18 41 4 17 21 17 23
122
+-3 40 -27 22 -31 22 -48 -5z"/>
123
+<path d="M1848 1719 c-21 -12 -23 -29 -5 -53 12 -17 14 -17 36 1 21 17 22 22
124
+10 41 -16 25 -17 25 -41 11z"/>
125
+<path d="M1262 1692 c-9 -6 -10 -15 -3 -35 8 -19 15 -24 31 -20 26 7 33 18 25
126
+43 -7 21 -30 26 -53 12z"/>
127
+<path d="M2235 1680 c-8 -25 -1 -36 25 -43 16 -4 23 1 31 20 7 20 6 29 -3 35
128
+-23 14 -46 9 -53 -12z"/>
129
+<path d="M1613 1618 c-22 -29 -22 -37 2 -52 23 -15 25 -15 41 9 16 24 16 27
130
+-2 40 -24 18 -29 18 -41 3z"/>
131
+<path d="M1906 1615 c-18 -13 -18 -16 -2 -40 16 -24 17 -24 42 -9 22 15 23 19
132
+11 37 -18 27 -28 29 -51 12z"/>
133
+<path d="M2200 1564 c-12 -31 -13 -30 22 -39 23 -6 28 -3 34 19 7 31 7 31 -23
134
+40 -19 6 -25 2 -33 -20z"/>
135
+<path d="M1539 1509 c-9 -17 -8 -25 4 -37 18 -17 45 -10 54 14 4 11 -1 22 -12
136
+30 -25 19 -32 18 -46 -7z"/>
137
+<path d="M1978 1519 c-21 -12 -23 -29 -5 -53 12 -17 14 -17 36 1 21 17 22 22
138
+10 41 -16 25 -17 25 -41 11z"/>
139
+<path d="M2161 1450 c-9 -26 -7 -29 19 -39 26 -9 29 -7 39 19 9 26 7 29 -19
140
+39 -26 9 -29 7 -39 -19z"/>
141
+<path d="M1472 1410 c-16 -26 -16 -25 12 -43 23 -15 25 -15 41 9 16 24 15 26
142
+-2 40 -25 19 -36 17 -51 -6z"/>
143
+<path d="M2041 1413 c-22 -18 -22 -19 -4 -41 17 -21 19 -21 41 -4 23 18 23 19
144
+5 41 -18 22 -19 22 -42 4z"/>
145
+<path d="M2125 1341 c-8 -27 -45 -49 -45 -26 0 10 -10 15 -30 15 -27 0 -30 -3
146
+-30 -30 0 -27 3 -30 30 -30 17 0 30 5 30 13 1 6 9 2 20 -11 18 -22 20 -22 44
147
+-7 20 14 52 72 44 81 -2 1 -15 5 -30 9 -21 5 -27 3 -33 -14z"/>
148
+<path d="M1660 1300 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
149
+-27 0 -30 -3 -30 -30z"/>
150
+<path d="M1780 1300 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
151
+-27 0 -30 -3 -30 -30z"/>
152
+<path d="M1900 1300 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
153
+-27 0 -30 -3 -30 -30z"/>
154
+<path d="M2171 1213 c-22 -18 -22 -19 -4 -42 18 -22 19 -22 42 -4 22 18 22 19
155
+4 42 -18 22 -19 22 -42 4z"/>
156
+<path d="M1551 2813 c-22 -18 -22 -19 -4 -42 18 -22 19 -22 42 -4 22 18 22 19
157
+4 42 -18 22 -19 22 -42 4z"/>
158
+<path d="M1453 2742 c-22 -17 -22 -17 -3 -42 l19 -25 23 23 c22 22 22 22 3 42
159
+-19 18 -21 18 -42 2z"/>
160
+<path d="M2029 2728 c-10 -18 -8 -24 7 -35 21 -15 34 -13 48 9 7 12 6 21 -3
161
+32 -19 22 -38 20 -52 -6z"/>
162
+<path d="M1356 2671 c-15 -16 -15 -22 -4 -40 15 -25 17 -25 42 -6 17 13 18 18
163
+6 40 -16 30 -22 31 -44 6z"/>
164
+<path d="M2129 2664 c-9 -11 -10 -20 -2 -32 16 -26 40 -26 54 -1 10 19 9 25
165
+-7 36 -23 17 -29 16 -45 -3z"/>
166
+<path d="M1261 2603 c-21 -17 -22 -22 -10 -41 17 -27 21 -27 48 -4 20 16 20
167
+18 3 40 -18 23 -18 23 -41 5z"/>
168
+<path d="M2222 2590 c-16 -26 -16 -25 12 -43 23 -15 25 -15 41 9 16 24 15 26
169
+-2 40 -25 19 -36 17 -51 -6z"/>
170
+<path d="M1162 2532 l-23 -18 20 -25 20 -24 21 21 c20 20 20 21 3 42 -17 21
171
+-19 21 -41 4z"/>
172
+<path d="M2319 2518 c-10 -18 -8 -24 11 -40 22 -17 23 -17 36 -1 19 25 17 41
173
+-5 53 -27 14 -29 13 -42 -12z"/>
174
+<path d="M1064 2461 c-21 -17 -21 -18 -5 -40 16 -21 20 -22 39 -10 27 17 28
175
+31 5 52 -16 14 -20 14 -39 -2z"/>
176
+<path d="M2419 2454 c-9 -11 -10 -20 -2 -32 14 -22 43 -22 57 1 9 15 7 21 -8
177
+33 -25 18 -31 18 -47 -2z"/>
178
+<path d="M970 2392 c-20 -16 -21 -21 -9 -40 17 -27 21 -27 48 -4 20 17 20 17
179
+2 39 -19 22 -20 22 -41 5z"/>
180
+<path d="M2523 2388 c-22 -29 -22 -37 2 -52 23 -15 25 -15 41 9 16 24 16 27
181
+-2 40 -24 18 -29 18 -41 3z"/>
182
+<path d="M871 2321 c-21 -16 -22 -20 -10 -39 17 -27 31 -28 52 -4 14 16 14 19
183
+-1 39 -17 22 -18 22 -41 4z"/>
184
+<path d="M2611 2308 c-12 -19 -11 -24 10 -41 23 -18 23 -18 41 5 17 22 17 24
185
+-3 41 -27 22 -31 22 -48 -5z"/>
186
+<path d="M773 2251 c-22 -19 -22 -20 -5 -41 16 -20 21 -21 40 -9 27 17 27 21
187
+5 48 -18 20 -18 20 -40 2z"/>
188
+<path d="M2709 2239 c-9 -18 -7 -25 9 -42 l21 -20 20 24 20 24 -22 17 c-29 23
189
+-34 22 -48 -3z"/>
190
+<path d="M667 2172 c-25 -27 -21 -45 7 -40 22 5 23 3 14 -24 -10 -29 -3 -99
191
+10 -97 34 3 46 18 47 62 2 35 -1 47 -12 47 -10 0 -12 6 -8 20 7 22 -10 50 -30
192
+50 -6 0 -19 -8 -28 -18z"/>
193
+<path d="M2805 2168 c-13 -19 -13 -25 -2 -33 8 -5 17 -22 21 -38 6 -24 10 -26
194
+34 -21 15 4 28 8 29 9 7 4 -19 70 -33 86 -22 24 -29 24 -49 -3z"/>
195
+<path d="M571 2140 c-9 -26 -7 -29 19 -39 26 -9 29 -7 39 19 9 26 7 29 -19 39
196
+-26 9 -29 7 -39 -19z"/>
197
+<path d="M2943 2163 c-7 -3 -8 -14 -4 -31 4 -15 10 -26 14 -24 4 1 11 2 16 2
198
+9 0 3 48 -8 54 -3 2 -11 1 -18 -1z"/>
199
+<path d="M2717 2103 c-13 -3 -16 -11 -11 -31 9 -35 7 -34 38 -26 26 6 31 19
200
+20 48 -6 16 -14 18 -47 9z"/>
201
+<path d="M801 2070 c-9 -26 -7 -29 19 -39 26 -9 29 -7 39 19 9 26 7 29 -19 39
202
+-26 9 -29 7 -39 -19z"/>
203
+<path d="M2779 2053 c-7 -20 -6 -29 3 -35 23 -14 46 -9 53 12 8 25 1 36 -25
204
+43 -16 4 -23 -1 -31 -20z"/>
205
+<path d="M733 1960 c-18 -8 -21 -13 -14 -32 16 -44 69 -29 57 16 -7 28 -10 29
206
+-43 16z"/>
207
+<path d="M2741 1938 c-10 -26 -6 -33 25 -42 18 -5 24 -1 32 23 9 26 8 30 -11
208
+35 -34 9 -37 8 -46 -16z"/>
209
+<path d="M777 1848 c-22 -8 -26 -14 -21 -31 9 -32 16 -36 42 -26 22 8 26 21
210
+14 50 -6 13 -13 14 -35 7z"/>
211
+<path d="M2706 1824 c-5 -18 -3 -30 6 -35 23 -15 46 -9 52 13 6 25 1 33 -30
212
+42 -18 5 -23 1 -28 -20z"/>
213
+<path d="M807 1733 c-15 -4 -17 -11 -12 -31 9 -34 8 -34 39 -26 28 7 29 8 20
214
+42 -6 22 -12 24 -47 15z"/>
215
+<path d="M2666 1708 c-6 -25 -1 -33 30 -42 18 -5 23 -1 28 20 5 18 3 30 -6 35
216
+-23 15 -46 9 -52 -13z"/>
217
+<path d="M849 1617 c-23 -10 -25 -16 -18 -34 14 -39 69 -27 61 13 -6 32 -12
218
+34 -43 21z"/>
219
+<path d="M2630 1594 c-12 -31 -13 -30 22 -39 23 -6 28 -3 34 19 7 31 7 31 -23
220
+40 -19 6 -25 2 -33 -20z"/>
221
+<path d="M872 1502 c-10 -7 -10 -15 -2 -36 8 -22 14 -26 33 -20 30 9 30 10 23
222
+39 -6 25 -29 32 -54 17z"/>
223
+<path d="M2591 1480 c-9 -26 -7 -29 19 -39 26 -9 29 -7 39 19 9 26 7 29 -19
224
+39 -26 9 -29 7 -39 -19z"/>
225
+<path d="M1118 1487 c-24 -11 -26 -14 -15 -39 11 -24 14 -26 39 -15 24 11 26
226
+14 15 39 -11 24 -14 26 -39 15z"/>
227
+<path d="M923 1393 c-25 -5 -26 -7 -17 -40 6 -23 29 -29 52 -14 13 8 7 63 -7
228
+60 -3 -1 -16 -4 -28 -6z"/>
229
+<path d="M2556 1365 c-8 -32 -9 -31 25 -40 23 -6 27 -3 33 20 8 32 9 31 -25
230
+40 -23 6 -27 3 -33 -20z"/>
231
+<path d="M1147 1373 c-13 -3 -16 -10 -11 -26 9 -32 17 -37 42 -31 22 6 27 20
232
+16 48 -6 16 -14 18 -47 9z"/>
233
+<path d="M945 1270 c-3 -5 -3 -21 1 -35 5 -21 11 -24 28 -19 31 9 36 17 30 42
234
+-7 23 -47 32 -59 12z"/>
235
+<path d="M2519 1252 c-7 -18 -6 -28 3 -34 21 -13 45 -9 52 8 11 29 6 42 -20
236
+47 -20 4 -27 -1 -35 -21z"/>
237
+<path d="M1192 1259 c-18 -7 -22 -14 -16 -31 9 -31 9 -31 39 -24 27 7 32 23
238
+13 48 -10 12 -19 14 -36 7z"/>
239
+<path d="M988 1158 c-21 -17 -6 -63 18 -54 9 3 20 6 25 6 16 0 5 55 -11 58 -9
240
+1 -23 -3 -32 -10z"/>
241
+<path d="M2481 1138 c-10 -26 -6 -33 25 -42 18 -5 24 -1 32 23 8 24 7 31 -5
242
+35 -28 11 -44 6 -52 -16z"/>
243
+<path d="M1221 1141 c-19 -12 -6 -65 14 -57 9 3 15 -1 15 -10 0 -11 6 -13 19
244
+-9 11 3 23 0 27 -6 5 -9 11 -7 21 6 7 11 13 13 13 7 0 -7 13 -12 30 -12 27 0
245
+30 3 30 31 0 28 -2 30 -32 28 -18 -1 -41 2 -50 6 -9 4 -22 4 -28 0 -5 -3 -10
246
+1 -10 9 0 17 -27 21 -49 7z"/>
247
+<path d="M1450 1090 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
248
+-27 0 -30 -3 -30 -30z"/>
249
+<path d="M1031 1049 c-15 -6 -21 -14 -17 -25 3 -9 6 -20 6 -25 0 -11 30 -12
250
+48 0 9 5 11 17 6 34 -7 30 -8 30 -43 16z"/>
251
+<path d="M2444 1025 c-12 -47 39 -64 57 -19 11 31 12 30 -23 39 -24 6 -28 3
252
+-34 -20z"/>
253
+<path d="M1206 1008 c-14 -19 -14 -23 2 -34 25 -19 40 -17 53 8 10 18 8 24 -7
254
+35 -24 18 -30 17 -48 -9z"/>
255
+<path d="M1062 931 c-9 -5 -11 -17 -6 -35 5 -20 11 -25 25 -21 13 4 19 1 19
256
+-9 0 -21 48 -21 78 0 28 19 28 40 1 55 -15 8 -24 8 -32 0 -16 -16 -37 -14 -37
257
+4 0 16 -27 20 -48 6z"/>
258
+<path d="M1220 880 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
259
+-27 0 -30 -3 -30 -30z"/>
260
+<path d="M1340 880 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
261
+-27 0 -30 -3 -30 -30z"/>
262
+<path d="M1460 880 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
263
+-27 0 -30 -3 -30 -30z"/>
264
+<path d="M1580 880 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
265
+-27 0 -30 -3 -30 -30z"/>
266
+<path d="M1700 880 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
267
+-27 0 -30 -3 -30 -30z"/>
268
+<path d="M1820 880 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
269
+-27 0 -30 -3 -30 -30z"/>
270
+<path d="M1940 880 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
271
+-27 0 -30 -3 -30 -30z"/>
272
+<path d="M2060 880 c0 -27 3 -30 30 -30 27 0 30 3 30 30 0 27 -3 30 -30 30
273
+-27 0 -30 -3 -30 -30z"/>
274
+<path d="M1072 810 c-16 -26 -16 -25 12 -43 23 -15 25 -15 41 9 16 24 15 26
275
+-2 40 -25 19 -36 17 -51 -6z"/>
276
+<path d="M2432 812 c-23 -18 -23 -18 -5 -41 17 -21 22 -22 41 -10 27 17 27 21
277
+5 48 -17 20 -19 20 -41 3z"/>
278
+</g>
279
+</svg>

+ 39
- 0
meteos_ui/static/dashboard/machine_learning/overview/images/meteos-experiment.svg View File

@@ -0,0 +1,39 @@
1
+<?xml version="1.0" standalone="no"?>
2
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="356.000000pt" height="356.000000pt" viewBox="0 0 356.000000 356.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+<g transform="translate(0.000000,356.000000) scale(0.100000,-0.100000)"
9
+fill="#000000" stroke="none">
10
+<path d="M1560 3549 c-313 -40 -615 -165 -870 -359 -97 -74 -247 -224 -322
11
+-323 -166 -217 -286 -482 -339 -744 -30 -153 -37 -436 -15 -593 98 -676 561
12
+-1229 1208 -1444 209 -69 293 -81 568 -81 206 0 248 3 340 23 621 135 1109
13
+552 1324 1134 86 231 101 325 101 618 -1 216 -3 257 -23 350 -77 355 -242 660
14
+-494 912 -283 283 -644 457 -1048 508 -97 12 -335 11 -430 -1z m368 -250 c264
15
+-29 481 -105 689 -242 353 -233 593 -594 670 -1007 27 -146 24 -431 -6 -570
16
+-45 -212 -134 -417 -254 -587 -80 -113 -248 -281 -360 -360 -173 -122 -375
17
+-209 -587 -254 -153 -33 -449 -33 -599 -1 -479 104 -860 400 -1079 838 -45 90
18
+-108 285 -126 394 -85 499 65 979 417 1339 129 132 250 219 417 301 259 128
19
+542 180 818 149z"/>
20
+<path d="M975 2641 c-11 -5 -29 -19 -40 -31 -19 -21 -20 -38 -23 -283 -2 -185
21
+0 -269 9 -289 25 -60 -6 -58 863 -58 l795 0 28 24 28 24 3 268 c2 190 0 276
22
+-9 296 -25 60 5 58 -851 57 -431 0 -792 -4 -803 -8z m985 -146 l0 -55 -445 0
23
+-445 0 0 55 0 55 445 0 445 0 0 -55z m552 -93 c38 -37 48 -98 23 -140 -50 -83
24
+-169 -81 -210 4 -19 41 -19 67 0 105 38 73 130 88 187 31z m-552 -142 l0 -60
25
+-445 0 -445 0 0 60 0 60 445 0 445 0 0 -60z"/>
26
+<path d="M1750 1905 c0 -32 2 -35 30 -35 28 0 30 3 30 35 0 32 -2 35 -30 35
27
+-28 0 -30 -3 -30 -35z"/>
28
+<path d="M975 1821 c-11 -5 -29 -19 -40 -31 -19 -21 -20 -38 -23 -283 -2 -185
29
+0 -269 9 -289 25 -60 -6 -58 863 -58 l795 0 28 24 28 24 3 268 c2 190 0 276
30
+-9 296 -25 60 5 58 -851 57 -431 0 -792 -4 -803 -8z m985 -151 l0 -60 -445 0
31
+-445 0 0 60 0 60 445 0 445 0 0 -60z m552 -98 c38 -37 48 -98 23 -140 -50 -83
32
+-169 -81 -210 4 -19 41 -19 67 0 105 38 73 130 88 187 31z m-552 -142 l0 -60
33
+-445 0 -445 0 0 60 0 60 445 0 445 0 0 -60z"/>
34
+<path d="M1750 1025 l0 -95 -384 0 -384 0 -30 30 c-34 34 -59 37 -102 15 -58
35
+-30 -67 -90 -21 -136 40 -39 82 -39 123 1 l30 30 795 0 795 0 28 -30 c56 -60
36
+149 -23 150 58 0 39 -46 92 -80 92 -28 0 -76 -26 -83 -45 -6 -13 -54 -15 -392
37
+-15 l-385 0 0 95 0 95 -30 0 -30 0 0 -95z"/>
38
+</g>
39
+</svg>

+ 27
- 0
meteos_ui/static/dashboard/machine_learning/overview/images/meteos-learning.svg View File

@@ -0,0 +1,27 @@
1
+<?xml version="1.0" standalone="no"?>
2
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="356.000000pt" height="356.000000pt" viewBox="0 0 356.000000 356.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+<g transform="translate(0.000000,356.000000) scale(0.100000,-0.100000)"
9
+fill="#000000" stroke="none">
10
+<path d="M1560 3549 c-313 -40 -615 -165 -870 -359 -97 -74 -247 -224 -322
11
+-323 -166 -217 -286 -482 -339 -744 -30 -153 -37 -436 -15 -593 98 -676 561
12
+-1229 1208 -1444 209 -69 293 -81 568 -81 206 0 248 3 340 23 621 135 1109
13
+552 1324 1134 86 231 101 325 101 618 -1 216 -3 257 -23 350 -77 355 -242 660
14
+-494 912 -283 283 -644 457 -1048 508 -97 12 -335 11 -430 -1z m368 -250 c264
15
+-29 481 -105 689 -242 353 -233 593 -594 670 -1007 27 -146 24 -431 -6 -570
16
+-45 -212 -134 -417 -254 -587 -80 -113 -248 -281 -360 -360 -173 -122 -375
17
+-209 -587 -254 -153 -33 -449 -33 -599 -1 -479 104 -860 400 -1079 838 -45 90
18
+-108 285 -126 394 -85 499 65 979 417 1339 129 132 250 219 417 301 259 128
19
+542 180 818 149z"/>
20
+<path d="M1490 2240 c-157 -44 -428 -118 -603 -166 -175 -48 -312 -91 -305
21
+-95 7 -4 132 -39 278 -78 146 -40 273 -74 283 -77 16 -5 17 -28 17 -295 l0
22
+-289 620 0 620 0 0 290 c0 160 2 290 5 290 7 0 589 161 592 163 1 2 -1082 299
23
+-1212 333 -5 1 -138 -33 -295 -76z"/>
24
+<path d="M2631 1738 c-12 -79 -24 -151 -27 -160 -5 -16 2 -18 56 -18 59 0 62
25
+1 57 23 -3 12 -16 84 -28 160 -13 75 -26 137 -29 137 -3 0 -16 -64 -29 -142z"/>
26
+</g>
27
+</svg>

+ 31
- 0
meteos_ui/static/dashboard/machine_learning/overview/images/meteos-model.svg View File

@@ -0,0 +1,31 @@
1
+<?xml version="1.0" standalone="no"?>
2
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="356.000000pt" height="356.000000pt" viewBox="0 0 356.000000 356.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+<g transform="translate(0.000000,356.000000) scale(0.100000,-0.100000)"
9
+fill="#000000" stroke="none">
10
+<path d="M1560 3549 c-313 -40 -615 -165 -870 -359 -97 -74 -247 -224 -322
11
+-323 -166 -217 -286 -482 -339 -744 -30 -153 -37 -436 -15 -593 98 -676 561
12
+-1229 1208 -1444 209 -69 293 -81 568 -81 206 0 248 3 340 23 621 135 1109
13
+552 1324 1134 86 231 101 325 101 618 -1 216 -3 257 -23 350 -77 355 -242 660
14
+-494 912 -283 283 -644 457 -1048 508 -97 12 -335 11 -430 -1z m368 -250 c264
15
+-29 481 -105 689 -242 353 -233 593 -594 670 -1007 27 -146 24 -431 -6 -570
16
+-45 -212 -134 -417 -254 -587 -80 -113 -248 -281 -360 -360 -173 -122 -375
17
+-209 -587 -254 -153 -33 -449 -33 -599 -1 -479 104 -860 400 -1079 838 -45 90
18
+-108 285 -126 394 -85 499 65 979 417 1339 129 132 250 219 417 301 259 128
19
+542 180 818 149z"/>
20
+<path d="M2297 2510 c-65 -37 -120 -70 -123 -73 -3 -3 10 -16 30 -29 l36 -25
21
+-136 -201 c-75 -111 -140 -202 -145 -202 -5 0 -114 59 -242 130 -129 72 -239
22
+130 -246 130 -11 0 -527 -273 -540 -285 -7 -8 30 -75 41 -75 4 0 99 49 211
23
+109 111 60 222 119 247 131 l45 21 245 -136 c139 -77 253 -135 265 -133 14 2
24
+66 71 167 222 81 120 151 223 157 229 6 6 20 2 41 -13 17 -12 33 -20 35 -18 6
25
+6 37 256 33 271 -2 11 -36 -4 -121 -53z"/>
26
+<path d="M2310 1600 l0 -620 175 0 175 0 0 620 0 620 -175 0 -175 0 0 -620z"/>
27
+<path d="M1360 1425 l0 -445 180 0 180 0 0 445 0 445 -180 0 -180 0 0 -445z"/>
28
+<path d="M1840 1365 l0 -385 175 0 175 0 0 385 0 385 -175 0 -175 0 0 -385z"/>
29
+<path d="M890 1335 l0 -355 180 0 180 0 0 355 0 355 -180 0 -180 0 0 -355z"/>
30
+</g>
31
+</svg>

+ 27
- 0
meteos_ui/static/dashboard/machine_learning/overview/images/meteos-template.svg View File

@@ -0,0 +1,27 @@
1
+<?xml version="1.0" standalone="no"?>
2
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
3
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
4
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
5
+ width="356.000000pt" height="356.000000pt" viewBox="0 0 356.000000 356.000000"
6
+ preserveAspectRatio="xMidYMid meet">
7
+
8
+<g transform="translate(0.000000,356.000000) scale(0.100000,-0.100000)"
9
+fill="#000000" stroke="none">
10
+<path d="M1560 3549 c-313 -40 -615 -165 -870 -359 -97 -74 -247 -224 -322
11
+-323 -166 -217 -286 -482 -339 -744 -30 -153 -37 -436 -15 -593 98 -676 561
12
+-1229 1208 -1444 209 -69 293 -81 568 -81 206 0 248 3 340 23 621 135 1109
13
+552 1324 1134 86 231 101 325 101 618 -1 216 -3 257 -23 350 -77 355 -242 660
14
+-494 912 -283 283 -644 457 -1048 508 -97 12 -335 11 -430 -1z m368 -250 c264
15
+-29 481 -105 689 -242 353 -233 593 -594 670 -1007 27 -146 24 -431 -6 -570
16
+-45 -212 -134 -417 -254 -587 -80 -113 -248 -281 -360 -360 -173 -122 -375
17
+-209 -587 -254 -153 -33 -449 -33 -599 -1 -479 104 -860 400 -1079 838 -45 90
18
+-108 285 -126 394 -85 499 65 979 417 1339 129 132 250 219 417 301 259 128
19
+542 180 818 149z"/>
20
+<path d="M1150 2450 l0 -40 684 0 c376 0 691 -3 700 -6 14 -5 16 -52 16 -425
21
+l0 -419 45 0 45 0 0 465 0 465 -745 0 -745 0 0 -40z"/>
22
+<path d="M1040 2325 l0 -45 695 0 695 0 0 -419 c0 -231 3 -422 8 -424 4 -3 22
23
+-2 40 0 l32 5 0 464 0 464 -735 0 -735 0 0 -45z"/>
24
+<path d="M910 1686 c0 -520 1 -555 18 -560 72 -21 217 -39 332 -40 163 -1 228
25
+12 444 91 250 92 390 125 589 139 l97 7 0 458 0 459 -740 0 -740 0 0 -554z"/>
26
+</g>
27
+</svg>

+ 52
- 0
meteos_ui/static/dashboard/machine_learning/overview/overview.module.js View File

@@ -0,0 +1,52 @@
1
+/**
2
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
3
+ * not use this file except in compliance with the License. You may obtain
4
+ * a copy of the License at
5
+ *
6
+ *    http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Unless required by applicable law or agreed to in writing, software
9
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11
+ * License for the specific language governing permissions and limitations
12
+ * under the License.
13
+ */
14
+
15
+(function() {
16
+  'use strict';
17
+
18
+  /**
19
+   * @ngdoc overview
20
+   * @name horizon.dashboard.machine_learning.overview
21
+   * @ngModule
22
+   * @description
23
+   * Provides all the services and widgets require to display the experiment
24
+   * panel
25
+   */
26
+  angular
27
+    .module('horizon.dashboard.machine_learning.overview', [
28
+      'ngRoute'])
29
+    .config(config);
30
+
31
+  config.$inject = [
32
+    '$provide',
33
+    '$windowProvider',
34
+    '$routeProvider'
35
+  ];
36
+
37
+  /**
38
+   * @name config
39
+   * @param {Object} $provide
40
+   * @param {Object} $windowProvider
41
+   * @param {Object} $routeProvider
42
+   * @description Routes used by this module.
43
+   * @returns {undefined} Returns nothing
44
+   */
45
+  function config($provide, $windowProvider, $routeProvider) {
46
+    var path = $windowProvider.$get().STATIC_URL + 'dashboard/machine_learning/overview/';
47
+    $provide.constant('horizon.dashboard.machine_learning.overview.basePath', path);
48
+    $routeProvider.when('/project/machine_learning/overview', {
49
+      templateUrl: path + 'panel.html'
50
+    });
51
+  }
52
+})();

+ 23
- 0
meteos_ui/static/dashboard/machine_learning/overview/overview.module.spec.js View File

@@ -0,0 +1,23 @@
1
+/**
2
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
3
+ * not use this file except in compliance with the License. You may obtain
4
+ * a copy of the License at
5
+ *
6
+ *    http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Unless required by applicable law or agreed to in writing, software
9
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11
+ * License for the specific language governing permissions and limitations
12
+ * under the License.
13
+ */
14
+(function() {
15
+  'use strict';
16
+
17
+  describe('horizon.dashboard.machine_learning.overview', function() {
18
+    it('should exist', function() {
19
+      expect(angular.module('horizon.dashboard.machine_learning.overview')).toBeDefined();
20
+    });
21
+  });
22
+
23
+})();

+ 8
- 0
meteos_ui/static/dashboard/machine_learning/overview/panel.html View File

@@ -0,0 +1,8 @@
1
+<div>
2
+  <hz-page-header header="Overview"></hz-page-header>
3
+</div>
4
+<div ng-controller="OverviewController as ctrl">
5
+  <div id="meteosTopologyCanvas">
6
+    <div id="meteosMenu"></div>
7
+  </div>
8
+</div>

Loading…
Cancel
Save