configurationengine/source/scripts/gen_report_template.html
changeset 0 2e8eeb919028
child 3 e7e0ae78773e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/configurationengine/source/scripts/gen_report_template.html	Thu Mar 11 17:04:37 2010 +0200
@@ -0,0 +1,440 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<html lang="en">
+<head>
+    <title>ConE generation report</title>
+    <style type="text/css">
+        body {
+            font-family: Nokia Standard Multiscript, Tahoma, Verdana, Arial;
+            font-size: 0.8em;
+            color: #0055B7;
+        }
+
+        .red{
+            color: Red;
+        }
+        
+        h1 {
+            padding: 30px 0 0 0;
+            margin: 0;
+            text-align: left;
+        }
+
+        #date {
+            text-align: center;
+        }
+
+        hr {
+            height: 1px;
+            background-color: cccccc;
+            color: #cccccc;
+        }
+
+        h2 h3 {
+            padding: 10px 0 10px 0;
+            margin: 0;
+        }
+
+        table.report {
+            width: 100%;
+            border: 1px solid #e0dfe3;
+            border-collapse: collapse;
+            color: #333333;
+        }
+
+        table.report th {
+            text-align: left;
+            padding: 5px;
+            background-color: #f9fafd;
+            color: #595a5f;
+            border-bottom: 1px #999999 solid;
+        }
+
+        table.report th.featureName {
+            background-color: #f2f2f3;
+            font: #595a5f Tahoma, Verdana, Arial bold;
+            font-size: 1.1em;
+            border-top: 3px #9d9da1;
+            border-top-style: double;
+            border-bottom: 3px #9d9da1;
+            border-bottom-style: double;
+        }
+
+        table.report th.header {
+            background-color: #f9fafd;
+            font: #595a5f Tahoma, Verdana, Arial bold;
+            font-size: 0.8em;
+            border-top: 1px #9d9da1;
+            border-bottom: 1px #9d9da1;
+        }
+
+        table.report td {
+            word-wrap: break-word;
+            border: 1px #EBEBEB;
+            padding: 5px;
+            border-style: solid; 
+            vertical-align: top;
+            font: Tahoma, Verdana, Arial;
+            _font-size: 0.8em;
+        }
+
+        table.summary {
+            border: 1px solid #e0dfe3;
+            border-collapse: collapse;
+            color: #333333;
+        }
+
+        table.summary th {
+            text-align: left;
+            padding: 5px;
+            background-color: #f9fafd;
+            color: #595a5f;
+            border-bottom: 1px #999999 solid;
+        }
+
+        table.summary th.featureName {
+            background-color: #f2f2f3;
+            font: #595a5f Tahoma, Verdana, Arial bold;
+            font-size: 1.1em;
+            border-top: 3px #9d9da1;
+            border-top-style: double;
+            border-bottom: 3px #9d9da1;
+            border-bottom-style: double;
+        }
+
+        table.summary td {
+            word-wrap: break-word;
+            border: 1px #EBEBEB;
+            padding: 5px;
+            border-style: solid; 
+            vertical-align: top;
+            font: Tahoma, Verdana, Arial;
+            _font-size: 0.8em;
+        }
+
+        .currentValue {
+            background-color: #e8f2fe;
+        }
+    </style>
+</head>
+<body>
+
+    <h1>Generation summary:</h1>
+    <table class="summary">
+     <tr>
+        <th class="featureName" colspan="2">Statistics</th>
+     </tr>
+     <tr>
+        <td>Refs in files</td>
+        <td>{{ rep_data.nbr_of_refs }}</td>
+    </tr>
+    <tr>
+        <td>Refs with no implementation</td>
+        <td>{{ rep_data.nbr_of_refs_noimpl }}</td>
+    </tr>
+    <tr>
+        <th class="featureName" colspan="2">Details</th>
+     </tr>
+    <tr>
+        <td>Report generated</td>
+        <td>{{ rep_data.generation_time }}</td>
+    </tr>
+    <tr>
+        <td>Generation duration</td>
+        <td>{{ rep_data.duration }}</td>
+    </tr>
+    <tr>
+        <td>Generation log</td>
+        <td><a href="file:{{ rep_data.cwd|pathname_to_url }}/cone.log">cone.log</a></td>
+    </tr>
+    <tr>
+        <th class="featureName" colspan="2">Generation options</th>
+    </tr>
+    <tr>
+        <td align="left">Layers</td>
+        <td align="left">{{ rep_data.options.layers }}</td>
+    </tr>
+    <tr>
+        <td align="left">Added</td>
+        <td align="left">{{ rep_data.options.added }}</td>
+    </tr>
+    <tr>
+        <td align="left">Dryrun</td>
+        <td align="left">{{ rep_data.options.dryrun }}</td>
+    </tr>
+    <tr>
+        <td align="left">Verbose</td>
+        <td align="left">{{ rep_data.options.verbose }}</td>
+    </tr>
+    <tr>
+        <td align="left">Overrides</td>
+        <td align="left">{{ rep_data.options.overrides }}</td>
+    </tr>
+    <tr>
+        <td align="left">Project</td>
+        <td align="left">{{ rep_data.options.project }}</td>
+    </tr>
+        <tr>
+        <td align="left">Report</td>
+        <td align="left">{{ rep_data.options.report }}</td>
+    </tr>
+    <tr>
+        <td align="left">Impls</td>
+        <td align="left">{{ rep_data.options.impls }}</td>
+    </tr>
+    <tr>
+        <td align="left">Output</td>
+        <td align="left">{{ rep_data.options.output }}</td>
+    </tr>
+    <tr>
+        <td align="left">Configuration</td>
+        <td align="left">{{ rep_data.options.configuration }}</td>
+    </tr>
+    <tr>
+        <td align="left">Working directory</td>
+        <td align="left">{{ rep_data.cwd }}</td>
+    </tr>
+    </table>
+    
+    <h1>Rule execution results:</h1><br>
+    
+    <table class="report">
+        <tr>
+            <th class="featureName">File</th>
+            <th class="featureName">Rule No.</th>
+            <th class="featureName">Input refs</th>
+            <th class="featureName">Affected refs</th>
+        </tr>
+        
+        {% for result in rep_data.rule_exec_results %}
+        {#- Report only rule executions that affected something #}
+        {%- if result.affected_refs|length > 0 %}
+        <tr>
+            <a name="rule:{{result.source}}:{{result.index}}"/>
+            <td><a href="file:{{ rep_data.project_dir|pathname_to_url }}/{{ result.source|pathname_to_url }}">{{ result.source }}</a></td>
+            <td>{{result.index}}</td>
+            <td>
+            {%- for ref in result.input_refs -%}
+                {{ref}}<br/>
+            {% endfor %}
+            </td>
+            <td>
+            {%- for ref in result.affected_refs -%}
+                {{ref}}<br/>
+            {% endfor %}
+            </td>
+        </tr>
+        {% endif -%}
+        {% endfor %}
+        
+    </table>
+    
+    
+    <h1>Output files:</h1><br>
+    
+    <table class="report">
+    <tr>
+        <th class="featureName">API</th>
+        <th class="featureName">Data</th>
+        <th class="featureName">Impl. file</th>
+        <th class="featureName">Impl. type</th>
+        <th class="featureName">Generated for</th>
+        <th class="featureName">Output files</th>
+    </tr>
+    {% for feat in rep_data.lines %}
+    
+        <tr>
+            <td align="left" rowspan={{ feat.nbr_impls }}>
+                {% if feat.is_temp_feature -%}
+                <b><i>{{ feat.ref }}</i></b><br>
+                {%- else -%}
+                <b>{{ feat.ref }}</b><br>
+                {%- endif %}
+                <b>Name: </b>{{ feat.feat_name }}<br>
+                <b>Type: </b>{{ feat.feat_type }}<br>
+                <b>ConfML: </b><a href="file:{{ rep_data.project_dir|pathname_to_url }}/{{ feat.config_path|pathname_to_url }}">{{ feat.config_path }}</a>
+            </td>
+            <td align="left" rowspan={{ feat.nbr_impls }}>
+            <table class="report">
+            
+            {% for data in feat.datas %}
+                {% if loop.first %}
+                    <tr>
+                        <th class="th.header">Layer</th>
+                        <th class="th.header">Value</th>
+                    </tr>
+                    <tr>
+                        <td><a href="file:{{ rep_data.project_dir|pathname_to_url }}/{{ data.layer|pathname_to_url }}">{{ data.layer }}</a></td>
+                        <td>{{ data.value|e|xml_charref_replace }}</td>
+                    </tr>
+                {% else %}
+                    <tr>
+                        <td><a href="file:{{ rep_data.project_dir|pathname_to_url }}/{{ data.layer|pathname_to_url }}">{{ data.layer }}</a></td>
+                        <td>{{ data.value|e|xml_charref_replace  }}</td>
+                    </tr>
+                {% endif %}
+            {% endfor %}
+            </table>
+
+            <table class="report">
+                {% for data in feat.seq_data %}
+                    {% if loop.first %}
+                        <tr>
+                            <th class="th.header">Setting</th>
+                            <th class="th.header">Value</th>
+                        </tr>
+                        <tr>
+                            <td><b>{{ data[0]|e|xml_charref_replace }}</b></td>
+                            <td>
+                                {% for value in data[1] %}
+                                    {{ value|e|xml_charref_replace }}<br>
+                                {% endfor %}
+                            </td>
+                        </tr>
+                    {% else %}
+                        <tr>
+                            <td><b>{{ data[0]|e|xml_charref_replace }}</b></td>
+                            <td>
+                                {% for value in data[1] %}
+                                    {{ value|e|xml_charref_replace }}<br>
+                                {% endfor %}
+                            </td>
+                        </tr>
+                    {% endif %}
+                {% endfor %}
+            </table>
+            
+            {% for impl in feat.impls %}
+                {% if loop.first %}
+                    <td align="left">
+                        <a href="file:{{ rep_data.project_dir|pathname_to_url }}/{{ impl.name|pathname_to_url }}">{{ impl.name }}</a>
+                    </td>
+                    <td align="left">
+                        {{ impl.type }}
+                    </td>
+                    <td align="left">
+                        {{ ', '.join(impl.generation_runs) }}
+                    </td>
+                    <td align="left">
+                        {% for output in impl.outputfiles -%}
+                            {% if output.exists %}
+                                <a href="file:{{ output.abs_filename|pathname_to_url }}">{{ output.filename }}</a><br>
+                            {% else %}
+                                <span class="red">{{ output.filename }}</span><br>
+                            {% endif %}
+                        {%- endfor %}
+                    </td>
+                {% else %}
+                    <tr>
+                    <td align="left">
+                        <a href="file:{{ rep_data.project_dir|pathname_to_url }}/{{ impl.name|pathname_to_url }}">{{ impl.name }}</a>
+                    </td>
+                    <td align="left">
+                        {{ impl.type }}
+                    </td>
+                    <td align="left">
+                        {{ ', '.join(impl.generation_runs) }}
+                    </td>
+                    <td align="left">
+                        {% for output in impl.outputfiles %}
+                            {% if output.exists %}
+                                <a href="file:{{ output.abs_filename|pathname_to_url }}">{{ output.filename }}</a><br>
+                            {% else %}
+                                <span class="red">{{ output.filename }}</span><br>
+                            {% endif %}
+                        {% endfor %}
+                    </td>
+                    </tr>
+                {% endif %}
+                
+            {% endfor %}
+        </tr>
+    {% endfor %}    
+    </table>
+
+    <h1>Refs with no implementation:</h1><br>
+    
+    <table class="report">
+    <tr>
+        <th class="featureName">API</th>
+        <th class="featureName">Data</th>
+    </tr>
+    {% for feat in rep_data.ref_noimpl %}
+        <tr>
+            <td align="left" >
+                {% if feat.is_temp_feature -%}
+                <b><i>{{ feat.ref }}</i></b><br>
+                {%- else -%}
+                <b>{{ feat.ref }}</b><br>
+                {%- endif %}
+                <b>Name: </b>{{ feat.feat_name|e|xml_charref_replace }}<br>
+                <b>Type: </b>{{ feat.feat_type|e|xml_charref_replace }}<br>
+                <b>ConfML: </b><a href="file:{{ rep_data.project_dir|pathname_to_url }}/{{ feat.config_path|pathname_to_url }}">{{ feat.config_path }}</a>
+            </td>
+            <td align="left">
+            <table class="report">
+            
+            {% for data in feat.datas %}
+                {% if loop.first %}
+                    <tr>
+                        <th class="th.header">Layer</th>
+                        <th class="th.header">Value</th>
+                    </tr>
+                    <tr>
+                        <td><a href="file:{{ rep_data.project_dir|pathname_to_url }}/{{ data.layer|pathname_to_url }}">{{ data.layer }}</a></td>
+                        <td>{{ data.value|e|xml_charref_replace }}</td>
+                    </tr>
+                {% else %}
+                    <tr>
+                        <td><a href="file:{{ rep_data.project_dir|pathname_to_url }}/{{ data.layer|pathname_to_url }}">{{ data.layer }}</a></td>
+                        <td>{{ data.value|e|xml_charref_replace }}</td>
+                    </tr>
+                {% endif %}
+            {% endfor %}
+            </table>
+            
+            <table class="report">
+                {% for data in feat.seq_data %}
+                    {% if loop.first %}
+                        <tr>
+                            <th class="th.header">Setting</th>
+                            <th class="th.header">Value</th>
+                        </tr>
+                        <tr>
+                            <td><b>{{ data[0] }}</b></td>
+                            <td>
+                                {% for value in data[1] %}
+                                    {{ value|e|xml_charref_replace }}<br>
+                                {% endfor %}
+                            </td>
+                        </tr>
+                    {% else %}
+                        <tr>
+                            <td><b>{{ data[0] }}</b></td>
+                            <td>
+                                {% for value in data[1] %}
+                                    {{ value|e|xml_charref_replace }}<br>
+                                {% endfor %}
+                            </td>
+                        </tr>
+                    {% endif %}
+                {% endfor %}
+            </table>
+        </tr>
+    {% endfor %}    
+    </table>
+    <h1>Not generated output files:</h1><br>
+    
+    <table class="report">
+    <tr>
+        <th class="featureName">Output file</th>
+    </tr>
+    {% for file in rep_data.missing_output_files %}
+        <tr>
+            <td align="left" >
+                {{ file.filename }}
+            </td>
+    {% endfor %}
+    </table>
+    
+</body>
+</html>