diff --git a/strictdoc/export/html/_static/_content.css b/strictdoc/export/html/_static/_content.css
index e6d982fce..6cd9a97c3 100644
--- a/strictdoc/export/html/_static/_content.css
+++ b/strictdoc/export/html/_static/_content.css
@@ -1,57 +1,44 @@
-.content {
- display: grid;
- grid-template-columns: 1fr 1fr 1fr;
- gap: 0 0;
- place-items: stretch stretch;
- /*
- for vertical line in 'current' column:
- .content_item[data-role="current"]::before
- */
- overflow: hidden;
-}
-
[data-viewtype="document"] .content {
display: block;
- background-color: var(--color-bg-contrast);
max-width: 900px;
- padding: calc(var(--base-padding)*2);
}
[data-viewtype="traceability"] .content {
+ display: grid;
+ place-items: stretch stretch;
grid-template-columns: minmax(min-content, max-content)
minmax(var(--card-width), calc(2*var(--card-width)))
minmax(min-content, max-content);
gap: var(--traceability-arrow) 0;
width: -moz-fit-content;
width: fit-content;
+ overflow: hidden;
}
[data-viewtype="requirements-coverage"] .content,
[data-viewtype="deep_traceability"] .content {
+ display: grid;
+ place-items: stretch stretch;
grid-template-columns: minmax(min-content, max-content)
max-content
minmax(min-content, max-content);
gap: var(--traceability-arrow) 0;
width: -moz-fit-content;
width: fit-content;
+ overflow: hidden;
}
[data-viewtype="table"] .content {
- /* grid-template-columns: minmax(250px, 25%)
- minmax(300px, 45%)
- minmax(250px, 30%);
- gap: 2px;
- background-color: #ddd;
- border: 2px solid #ddd; */
background-color: var(--color-bg-contrast);
display: block;
- overflow: visible;
}
+/* TODO */
+/* used in TR, DTR, requirements_coverage: */
.content_section {
display: contents;
}
-
+/* TODO */
.content_item {
position: relative;
display: flex;
@@ -96,37 +83,6 @@
border-left: 1px dotted #000;
}
-/* [data-viewtype="table"] */
-
-[data-viewtype="table"] article {
- display: contents;
-}
-
-[data-viewtype="table"] [data-section="meta"] {
- grid-column: 1 / 2;
-}
-
-[data-viewtype="table"] [data-section="meta"].docsection_section:only-child {
- grid-column: 1 / -1;
- /* background-color: var(--color-bg-main); */
-}
-
-[data-viewtype="table"] [data-section="description"] {
- grid-column: 2 / -1;
-}
-
-[data-viewtype="table"] [data-section="statement"] {
- grid-column: 2 / 3;
-}
-
-[data-viewtype="table"] [data-section="comment"] {
- grid-column: 3 / 4;
-}
-
-[data-viewtype="table"] [data-col="0"] {
- grid-column: 1 / -1;
-}
-
/* meta info */
.content_meta {
@@ -250,11 +206,11 @@
}
.content-view-td-related,
-.content-view-td-related > ul.requirement_link {
+.content-view-td-related > ul.requirement__link {
font-size: .85rem;
margin-top: 0;
}
-.content-view-td-related > ul.requirement_link:last-child {
+.content-view-td-related > ul.requirement__link:last-child {
margin-bottom: 0;
}
diff --git a/strictdoc/export/html/_static/_element.css b/strictdoc/export/html/_static/_element.css
index ce093e205..7d679e395 100644
--- a/strictdoc/export/html/_static/_element.css
+++ b/strictdoc/export/html/_static/_element.css
@@ -1,6 +1,6 @@
-[data-viewtype="source-file"] .requirement_link:hover {
+[data-viewtype="source-file"] .requirement__link:hover {
text-decoration: none;
}
@@ -34,9 +34,10 @@ a[aria-disabled="true"] {
pointer-events: none;
}
-main a,
-main a:link,
-main a:visited {
+/* .document from tool */
+.document a,
+.document a:link,
+.document a:visited {
text-decoration: underline;
}
@@ -80,8 +81,10 @@ main a:visited {
column-gap: var(--base-rhythm);
}
+.action_button,
a.action_button,
-.action_button {
+a.action_button:link,
+a.action_button:visited {
font-size:var(--font-size-xsm);
font-weight: 600;
text-align: left;
@@ -89,6 +92,7 @@ a.action_button,
white-space: nowrap;
position: relative;
display: inline-flex;
+
align-items: center;
justify-content: center;
-webkit-box-align: center;
@@ -99,19 +103,24 @@ a.action_button,
user-select: none;
cursor: pointer;
appearance: none;
- padding: calc(var(--base-rhythm)*0.5) calc(var(--base-rhythm)*1.5);
- min-height: 32px;
- box-shadow: rgb(0 0 0 / 10%) 0px 1px 2px 0px;
+ /* 1.5 column-gap is compensated by SVG negative margin */
+ column-gap: calc(var(--base-rhythm)*1.5);
+ padding-left: calc(var(--base-rhythm)*1.5);
+ padding-right: calc(var(--base-rhythm)*1.5);
+ min-height: calc(var(--base-rhythm)*4);
+
+ /* box-shadow: rgb(0 0 0 / 10%) 0px 1px 2px 0px; */
color: var(--color-action);
background-color: rgb(255, 255, 255);
- border-color: rgba(0, 0, 0, 0.1);
+ border-color: rgba(0, 0, 0, 0.05);
background-clip: padding-box;
transition: 0.2s;
}
-.action_button:hover {
+.action_button:hover,
+a.action_button:hover {
box-shadow: rgb(0 0 0 / 10%) 0px 2px var(--base-rhythm) 0px;
color: var(--color-hover);
}
@@ -125,6 +134,15 @@ a.action_button,
cursor: default;
}
+.action_button svg {
+ /*
+ action_button 1.5 column-gap
+ is compensated by SVG negative margin
+ */
+ margin-left: calc(var(--base-rhythm)*(-.5));
+ margin-right: calc(var(--base-rhythm)*(-.5));
+}
+
/* nav */
.nav {
diff --git a/strictdoc/export/html/_static/_requirement.css b/strictdoc/export/html/_static/_requirement.css
index ad7efe56f..c48302bb9 100644
--- a/strictdoc/export/html/_static/_requirement.css
+++ b/strictdoc/export/html/_static/_requirement.css
@@ -1,107 +1,76 @@
+turbo-frame {
+ display: contents;
+}
+
+sdoc-node {
+ display: block;
+ position: relative;
+
+ background-color: var(--color-bg-contrast);
+ padding: calc(var(--base-padding)) calc(var(--base-padding)*2);
+
+ /* margin-bottom: 4px; */
+}
+
+/* * */
+
[data-role="anchor"] {
/* for Fixed Headers + Section Anchors */
scroll-snap-margin-top: calc(var(--base-gap) + var(--base-padding));
scroll-margin-top: calc(var(--base-gap) + var(--base-padding));
}
-[data-role="anchor"]:target + .section-title {
+[data-role="anchor"]:target + .requirement__title {
background-color: var(--color-highlight);
}
-/* article */
+/* sdoc-node */
-article {
- position: relative;
-}
-
-[data-role='current'] article {
+[data-role='current'] sdoc-node {
background-color: var(--color-bg-contrast);
border: 1px solid var(--color-fg-contrast);
/* height: 100%; */
/* flex-grow: 1; */
}
-[data-role='parents'] article,
-[data-role='children'] article {
+[data-role='parents'] sdoc-node,
+[data-role='children'] sdoc-node {
background-color: var(--color-bg-secondary);
border: 1px solid var(--color-border);
width: var(--card-width);
}
-article.requirement.nouid {
+sdoc-node.nouid {
background-color: rgb(240, 220, 220);
}
-article.requirement.nouid .section-title {
+sdoc-node.nouid .requirement__title {
color: #502222;
}
-article.requirement.highlighted {
+sdoc-node.highlighted {
background-color: var(--color-highlight);
}
-[data-viewtype="traceability"] article + article {
+[data-viewtype="traceability"] sdoc-node + sdoc-node {
margin-top: var(--base-padding);
}
-[data-viewtype="deep_traceability"] article {
+[data-viewtype="deep_traceability"] sdoc-node {
/* width: var(--card-width); */
/* flex-grow: 1; */
}
-[data-viewtype="requirements-coverage"] article {
+[data-viewtype="requirements-coverage"] sdoc-node {
width: calc(var(--card-width)*0.75);
/* width: auto; */
font-size: .85em;
line-height: 1.4;
}
-/* section */
-
-article > section {
- padding-left: var(--base-padding);
- padding-right: var(--base-padding);
-}
-
-article > section:first-of-type {
- padding-top: var(--base-padding);
-}
-
-article > section:last-of-type {
- padding-bottom: var(--base-padding);
-}
-
-[data-viewtype="document"] article > section {
- padding-left: 0;
- padding-right: 0;
-}
+/* requirement__statement */
-/* [data-viewtype="table"] */
-
-[data-viewtype="table"] section,
-[data-viewtype="table"] [data-section] {
- background-color: var(--color-bg-contrast);
- padding: var(--base-padding);
-}
-
-[data-viewtype="table"] [data-section] p:first-child { margin-top: 0; }
-[data-viewtype="table"] [data-section] p:last-child { margin-bottom: 0; }
-
-[data-viewtype="table"] [data-section="meta"] > .requirement_meta {
- border-width: 1px;
- border-color: #ddd;
- background-color: #ddd;
- padding: 0;
- width: 100%;
-}
-
-[data-viewtype="table"] [data-section="meta"] > .requirement_meta dt i {
- max-width: 100px;
-}
-
-/* requirement_statement */
-
-[data-viewtype="document"] .requirement_statement {
+[data-viewtype="document"] .requirement__statement {
/* margin: calc(var(--base-margin)*2) 0px; */
font-size: calc(var(--base-font-size)*1.2);
}
@@ -112,11 +81,7 @@ div.document {
display: contents;
}
-section:target [data-role="current"] .section-title {
- background-color: var(--color-highlight);
-}
-
-section p {
+div.document p {
margin: var(--base-margin) 0;
}
@@ -127,31 +92,31 @@ h4 { font-size: 1.2em; }
h5 { font-size: 1em; }
h6 { font-size: 1em; }
-/* section-title */
+/* requirement__title */
-.section-title {
+.requirement__title {
margin: 0;
line-height: 1.6;
- /* color: var(--color-accent); */
+ font-weight: bold;
}
-/* .section-title[data-level]::before {
+/* .requirement__title[data-level]::before {
content: attr(data-level) " ";
font-weight: bold;
} */
-[data-viewtype="traceability"] .section-title,
-[data-viewtype="deep_traceability"] .section-title {
+[data-viewtype="traceability"] .requirement__title,
+[data-viewtype="deep_traceability"] .requirement__title {
font-size: 1.1em;
}
-[data-viewtype="requirements-coverage"] .section-title {
+[data-viewtype="requirements-coverage"] .requirement__title {
margin: 0;
}
-[data-viewtype="table"] .section-title {
+/* [data-viewtype="table"] .requirement__title {
font-size: 1rem;
-}
+} */
/* blockquote */
@@ -209,15 +174,15 @@ a.reference.external {
/* ul */
-article ul,
-article ol {
+div.document ul,
+div.document ol {
padding-left: 1.6em;
}
/* object */
-article img,
-article object {
+div.document img,
+div.document object {
width: 100%;
padding: 1em;
background: var(--color-bg-contrast);
@@ -225,7 +190,7 @@ article object {
/* meta table */
-dl.requirement_meta {
+dl.requirement__meta {
display: grid;
grid-template-columns: min-content auto;
place-items: stretch stretch;
@@ -238,12 +203,12 @@ dl.requirement_meta {
margin-bottom: 1rem;
}
-.section-title + dl.requirement_meta {
+.requirement__title + dl.requirement__meta {
margin-top: 1rem;
}
-.requirement_meta dt,
-.requirement_meta dd {
+.requirement__meta dt,
+.requirement__meta dd {
margin: 0;
padding: 2px 8px;
font-size: .85rem;
@@ -253,51 +218,51 @@ dl.requirement_meta {
/* background-color: var(--color-bg-main); */
}
-.requirement_meta dt i {
+.requirement__meta dt i {
display: inline-block;
/* letter-spacing: -1px; */
overflow-wrap: break-word;
}
-.requirement_meta dt i::after {
+.requirement__meta dt i::after {
content: ':';
}
-.requirement-tree_node .requirement_meta dt,
-.requirement-tree_node .requirement_meta dd {
+.requirement-tree_node .requirement__meta dt,
+.requirement-tree_node .requirement__meta dd {
background-color: var(--color-bg-main);
}
/* meta multiline list (next to comments/rationale) */
-.requirement_meta_multiline {
+.requirement__meta_multiline {
font-size: .9em;
font-style: italic;
}
-.requirement_meta_multiline + .requirement_meta_multiline {
+.requirement__meta_multiline + .requirement__meta_multiline {
margin-top: var(--base-margin);
}
-.requirement_meta_multiline_label {
+.requirement__meta_multiline_label {
font-weight: bold;
}
/* requirement: parent / child / file */
-ul.requirement_link {
+ul.requirement__link {
font-size: .85em;
line-height: 1.4;
list-style: none;
padding: 0;
}
-[data-viewtype="source-file"] ul.requirement_link li {
+[data-viewtype="source-file"] ul.requirement__link li {
margin-top: 0.5rem;
}
-.requirement_link a,
-.requirement_link li > span {
+.requirement__link a,
+.requirement__link li > span {
display: inline-block;
position: relative;
margin-left: 1.5rem;
@@ -305,78 +270,78 @@ ul.requirement_link {
overflow-wrap: break-word;
}
-.requirement_link a::before,
-.requirement_link li > span::before {
+.requirement__link a::before,
+.requirement__link li > span::before {
color: #808080;
position: absolute;
left: -1.5rem;
}
-.requirement_link a:link,
-.requirement_link a:visited {
+.requirement__link a:link,
+.requirement__link a:visited {
color: var(--color-accent-dark);
text-decoration: underline;
}
-.requirement_link a:hover {
+.requirement__link a:hover {
text-decoration: none;
}
-/* .requirement_link a::before {
+/* .requirement__link a::before {
content: '\2014';
} */
-a.requirement_link-file::before,
-.requirement_link-file::before {
+a.requirement__link-file::before,
+.requirement__link-file::before {
content: '>';
}
-a.requirement_link-parent::before {
+a.requirement__link-parent::before {
content: '\2190';
}
-a.requirement_link-child::before {
+a.requirement__link-child::before {
content: '\2192';
}
-.requirement_link-external::before {
+.requirement__link-external::before {
content: '\21D6';
}
-.requirement_parent-uid,
-.requirement_child-uid {
+.requirement__parent-uid,
+.requirement__child-uid {
position: relative;
font-weight: bold;
}
/* rationale */
-.requirement_rationale {
+.requirement__rationale {
font-size: .9em;
font-style: italic;
}
-.requirement_rationale + .requirement_rationale {
+.requirement__rationale + .requirement__rationale {
margin-top: var(--base-margin);
}
-.requirement_rationale p:first-child::before {
+.requirement__rationale p:first-child::before {
content: "Rationale: ";
font-weight: bold;
}
/* comment */
-.requirement_comment {
+.requirement__comment {
font-size: .9em;
font-style: italic;
}
-.requirement_comment + .requirement_comment {
+.requirement__comment + .requirement__comment {
margin-top: var(--base-margin);
}
-.requirement_comment p:first-child::before {
+.requirement__comment p:first-child::before {
content: "Comment: ";
font-weight: bold;
}
@@ -391,29 +356,24 @@ a.requirement_link-child::before {
/* table */
-div.document table,
-article table {
+div.document table {
border-collapse: collapse;
margin: var(--base-margin) 0;
font-size: 1rem;
border: #ccc;
}
-div.document table caption,
-article table caption {
+div.document table caption {
font-weight: bold;
padding-bottom: 1rem;
}
-div.document table th,
-article table th {
+div.document table th {
background-color: #eee;
}
div.document table th,
-div.document table td,
-article table th,
-article table td {
+div.document table td {
padding: calc(var(--base-margin)/2);
vertical-align: top;
text-align: left;
@@ -509,7 +469,7 @@ input:checked + .std-switch_slider:before {
padding: 0;
}
-.requirement-table caption .section-title {
+.requirement-table caption .requirement__title {
padding: .5rem 1rem;
}
@@ -533,15 +493,15 @@ input:checked + .std-switch_slider:before {
border: 1px solid #666;
}
-.requirement-table ul.requirement_link:first-child,
+.requirement-table ul.requirement__link:first-child,
.requirement-table p:first-child {
margin-top: 0;
}
-.requirement-table ul.requirement_link:last-child,
+.requirement-table ul.requirement__link:last-child,
.requirement-table p:last-child {
margin-bottom: 0;
}
-.requirement-table ul.requirement_link {
+.requirement-table ul.requirement__link {
font-size: 1em;
}
diff --git a/strictdoc/export/html/_static/_source.css b/strictdoc/export/html/_static/_source.css
index f47d694fd..03872b440 100644
--- a/strictdoc/export/html/_static/_source.css
+++ b/strictdoc/export/html/_static/_source.css
@@ -7,9 +7,9 @@
--source-line: 1px solid rgba(0, 0, 0, .05);
}
-/* article in SOURCE */
+/* SDOC-NODE in SOURCE */
-[data-viewtype="source-file"] article.requirement {
+.source-file__requirement {
position: static;
padding: var(--base-padding);
background-color: var(--color-bg-secondary);
@@ -18,8 +18,8 @@
transition: background-color 0.3s ease-in, border-color 0.3s ease-in;
font-size: var(--font-size-xsm);
}
-/* [data-viewtype="source-file"] article.requirement:target, */
-[data-viewtype="source-file"] article.requirement.active {
+
+.source-file__requirement.active {
background-color: var(--color-bg-contrast);
border: 1px solid var(--color-fg-contrast);
}
diff --git a/strictdoc/export/html/_static/_tree.css b/strictdoc/export/html/_static/_tree.css
index a6a2a124f..7640f7b55 100644
--- a/strictdoc/export/html/_static/_tree.css
+++ b/strictdoc/export/html/_static/_tree.css
@@ -82,7 +82,6 @@
fill: var(--tree-color-line);
}
- /* section */
.std-tree_row {
padding-top: var(--tree-cell-padding);
padding-bottom: var(--tree-cell-padding);
diff --git a/strictdoc/export/html/_static/requirements-coverage.js b/strictdoc/export/html/_static/requirements-coverage.js
index f33318d6f..fc14a91f6 100644
--- a/strictdoc/export/html/_static/requirements-coverage.js
+++ b/strictdoc/export/html/_static/requirements-coverage.js
@@ -1,4 +1,4 @@
-
+const SELECTOR = '[js-requirements-coverage]';
const __log = (topic, ...payload) => {
console.log(`%c ${topic} `, 'background:yellow;color:black',
@@ -25,9 +25,7 @@ window.addEventListener("load", function () {
}
// https://stackoverflow.com/questions/32249997/how-to-check-if-data-attribute-exist-with-plain-javascript/32250073
-
- // const reqs = [...document.querySelectorAll('[data-uid]')]
- const reqs = [...document.querySelectorAll('.requirement')]
+ const reqs = [...document.querySelectorAll(SELECTOR)]
.reduce((acc, req) => {
if (req.hasAttribute('data-uid')) {
req.addEventListener('click', () => markSame(uid, state, reqs));
diff --git a/strictdoc/export/html/templates/_res/svg_ico16_edit.jinja.html b/strictdoc/export/html/templates/_res/svg_ico16_edit.jinja.html
new file mode 100644
index 000000000..3f74c649a
--- /dev/null
+++ b/strictdoc/export/html/templates/_res/svg_ico16_edit.jinja.html
@@ -0,0 +1,4 @@
+
diff --git a/strictdoc/export/html/templates/_res/svg_ico16_gear.jinja.html b/strictdoc/export/html/templates/_res/svg_ico16_gear.jinja.html
new file mode 100644
index 000000000..8ad24603f
--- /dev/null
+++ b/strictdoc/export/html/templates/_res/svg_ico16_gear.jinja.html
@@ -0,0 +1,3 @@
+
diff --git a/strictdoc/export/html/templates/_shared/document_freetext.jinja.html b/strictdoc/export/html/templates/_shared/document_freetext.jinja.html
index 595c1ad50..0f262b998 100644
--- a/strictdoc/export/html/templates/_shared/document_freetext.jinja.html
+++ b/strictdoc/export/html/templates/_shared/document_freetext.jinja.html
@@ -1,13 +1,11 @@
+
{%- for link, opt_ranges in requirement_file_links %} {%- if opt_ranges -%} {%- for range in opt_ranges %}-
-
+
{{ link.file_entry.file_path }}, lines: {{ range.ng_range_line_begin }}-{{ range.ng_range_line_end }}
{%- endfor -%}
{%- else -%}
-
-
+
{{ link.file_entry.file_path }}
diff --git a/strictdoc/export/html/templates/_shared/requirement_block/free_text.jinja.html b/strictdoc/export/html/templates/_shared/requirement_block/free_text.jinja.html
index a53d21911..56288041f 100644
--- a/strictdoc/export/html/templates/_shared/requirement_block/free_text.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_block/free_text.jinja.html
@@ -1,9 +1,7 @@
{%- if section.free_texts -%}
-
{%- for free_text in section.free_texts -%}
{{ renderer.render_free_text(document_type, free_text) }}
{%- endfor -%}
-
-{%- endif -%}
\ No newline at end of file
+{%- endif -%}
diff --git a/strictdoc/export/html/templates/_shared/requirement_block/h_title.jinja.html b/strictdoc/export/html/templates/_shared/requirement_block/h_title.jinja.html
index 71654ef3d..4843c0fbf 100644
--- a/strictdoc/export/html/templates/_shared/requirement_block/h_title.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_block/h_title.jinja.html
@@ -1,5 +1,5 @@
{%- if node.context.title_number_string %}
{{ node.context.title_number_string }}.
diff --git a/strictdoc/export/html/templates/_shared/requirement_block/meta.jinja.html b/strictdoc/export/html/templates/_shared/requirement_block/meta.jinja.html
index 1b61226df..49bd1c5db 100644
--- a/strictdoc/export/html/templates/_shared/requirement_block/meta.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_block/meta.jinja.html
@@ -1,5 +1,5 @@
{%- if requirement.has_meta -%}
-
+
{% for meta_field in requirement.enumerate_meta_fields(skip_multi_lines=True) %}- {{meta_field[0]}}
- {{ meta_field[1] }}
diff --git a/strictdoc/export/html/templates/_shared/requirement_block/multi_line_metas.jinja.html b/strictdoc/export/html/templates/_shared/requirement_block/multi_line_metas.jinja.html
index 976063d62..c28e2503f 100644
--- a/strictdoc/export/html/templates/_shared/requirement_block/multi_line_metas.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_block/multi_line_metas.jinja.html
@@ -1,6 +1,6 @@
{%- if requirement.has_meta %}
{% for meta_field in requirement.enumerate_meta_fields(skip_single_lines=True) %}
- {{meta_field[0]}}:
- {{ renderer.render_meta_value(meta_field[1]) }}
+ {{meta_field[0]}}:
+ {{ renderer.render_meta_value(meta_field[1]) }}
{%- endfor %}
{%- endif %}
diff --git a/strictdoc/export/html/templates/_shared/requirement_block/rationale.jinja.html b/strictdoc/export/html/templates/_shared/requirement_block/rationale.jinja.html
index dd5b763dc..605260461 100644
--- a/strictdoc/export/html/templates/_shared/requirement_block/rationale.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_block/rationale.jinja.html
@@ -1,5 +1,5 @@
{%- if requirement.rationale -%}
-
+
{{ renderer.render_requirement_rationale(requirement) }}
{%- endif -%}
diff --git a/strictdoc/export/html/templates/_shared/requirement_block/related.jinja.html b/strictdoc/export/html/templates/_shared/requirement_block/related.jinja.html
index d1a7bf31b..42bed8da3 100644
--- a/strictdoc/export/html/templates/_shared/requirement_block/related.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_block/related.jinja.html
@@ -1,10 +1,10 @@
{%- if traceability_index.has_parent_requirements(requirement) %}
-
+
{%- for requirement in traceability_index.get_parent_requirements(requirement) %}-
-
+
{%- if requirement.reserved_uid %}
- {{ requirement.reserved_uid }}
+ {{ requirement.reserved_uid }}
{%- endif %}
{{ requirement.reserved_title if requirement.reserved_title else "" }}
@@ -14,12 +14,12 @@
{%- endif %}
{%- if traceability_index.has_children_requirements(requirement) %}
-
+
{%- for requirement in traceability_index.get_children_requirements(requirement) %}-
-
+
{%- if requirement.reserved_uid %}
- {{ requirement.reserved_uid }}
+ {{ requirement.reserved_uid }}
{%- endif %}
{{ requirement.reserved_title if requirement.reserved_title else "" }}
diff --git a/strictdoc/export/html/templates/_shared/requirement_block/statement.jinja.html b/strictdoc/export/html/templates/_shared/requirement_block/statement.jinja.html
index d54170405..400703ec3 100644
--- a/strictdoc/export/html/templates/_shared/requirement_block/statement.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_block/statement.jinja.html
@@ -1,5 +1,5 @@
{%- if requirement.reserved_statement -%}
-
+
{{ renderer.render_requirement_statement(requirement) }}
{%- endif -%}
diff --git a/strictdoc/export/html/templates/_shared/requirement_block/uid_and_title.jinja.html b/strictdoc/export/html/templates/_shared/requirement_block/uid_and_title.jinja.html
index 5063ccd78..bad76f596 100644
--- a/strictdoc/export/html/templates/_shared/requirement_block/uid_and_title.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_block/uid_and_title.jinja.html
@@ -1,5 +1,5 @@
{{ requirement.reserved_uid if requirement.reserved_uid else '[no UID]' }}
{%- if requirement.reserved_title -%}
@@ -9,4 +9,4 @@
{%- endif -%}
{{ requirement.reserved_title }}
-{%- endif %}
\ No newline at end of file
+{%- endif %}
diff --git a/strictdoc/export/html/templates/_shared/requirement_edit_field_multiline.jinja.html b/strictdoc/export/html/templates/_shared/requirement_edit_field_multiline.jinja.html
index ca16e7830..e8edbff6b 100644
--- a/strictdoc/export/html/templates/_shared/requirement_edit_field_multiline.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_edit_field_multiline.jinja.html
@@ -1,6 +1,6 @@
{%- if true -%}
diff --git a/strictdoc/export/html/templates/_shared/requirement_table.jinja.html b/strictdoc/export/html/templates/_shared/requirement_table.jinja.html
index 46cae5746..411d1f881 100644
--- a/strictdoc/export/html/templates/_shared/requirement_table.jinja.html
+++ b/strictdoc/export/html/templates/_shared/requirement_table.jinja.html
@@ -1,6 +1,6 @@
{%- set anchor=link_renderer.render_local_anchor(requirement) -%}
-
@@ -12,7 +12,7 @@
{%- if requirement.reserved_title is not none %}
{% include "_shared/requirement_block/anchor.jinja.html" %}
-
+
{%- if requirement.context.title_number_string -%}
{{ requirement.context.title_number_string }}.
{%- endif -%}
@@ -42,14 +42,14 @@
parent refs:
-
+
{%- for requirement in traceability_index.get_parent_requirements(requirement) %}-
-
+
{%- if requirement.reserved_uid %}
- {{ requirement.reserved_uid }}
+ {{ requirement.reserved_uid }}
{%- endif %}
- {%- if requirement.reserved_title is not none -%}
+ {%- if requirement.reserved_title is not none %}
{{ requirement.reserved_title }}
{%- endif -%}
@@ -66,14 +66,14 @@
child refs:
-
+
{%- for requirement in traceability_index.get_children_requirements(requirement) %}-
-
+
{%- if requirement.reserved_uid %}
- {{ requirement.reserved_uid }}
+ {{ requirement.reserved_uid }}
{%- endif %}
- {%- if requirement.reserved_title is not none -%}
+ {%- if requirement.reserved_title is not none %}
{{ requirement.reserved_title }}
{%- endif %}
@@ -90,10 +90,10 @@
external refs:
-
+
{%- for bib_ref in requirement.get_requirement_references("BibRef") %}-
-
+
{{ bib_ref.bib_entry.ref_cite if bib_ref.bib_entry.ref_cite else "" }}
{%- if bib_ref.bib_entry.ref_detail %}
: {{ bib_ref.bib_entry.ref_detail }}
@@ -115,19 +115,19 @@
file refs:
-
+
{%- for link, opt_ranges in requirement_file_links %} {%- if opt_ranges -%} {%- for range in opt_ranges %}-
-
+
{{ link.file_entry.file_path }}, lines: {{ range.ng_range_line_begin }}-{{ range.ng_range_line_end }}
{%- endfor -%}
{%- else -%}
-
-
+
{{ link.file_entry.file_path }}
@@ -158,7 +158,7 @@
Rationale:
-
+
{{ renderer.render_requirement_rationale(requirement) }}
@@ -180,4 +180,4 @@
{%- endif %}
-
+
diff --git a/strictdoc/export/html/templates/_shared/section.jinja.html b/strictdoc/export/html/templates/_shared/section.jinja.html
index 3136b1103..793e56432 100644
--- a/strictdoc/export/html/templates/_shared/section.jinja.html
+++ b/strictdoc/export/html/templates/_shared/section.jinja.html
@@ -2,9 +2,7 @@
{%- set anchor=link_renderer.render_local_anchor(section) -%}
-
-
-
+
{% include "_shared/requirement_block/anchor.jinja.html" %}
@@ -12,8 +10,6 @@
{% include "_shared/requirement_block/h_title.jinja.html" %}
{% endwith %}
-
-
{% include "_shared/requirement_block/free_text.jinja.html" %}
{%- if config.is_running_on_server -%}
@@ -28,6 +24,6 @@
+R⬇
{%- endif -%}
-
+
diff --git a/strictdoc/export/html/templates/requirements_coverage/requirement.jinja.html b/strictdoc/export/html/templates/requirements_coverage/requirement.jinja.html
index 548d535a7..ee6ca1a9b 100644
--- a/strictdoc/export/html/templates/requirements_coverage/requirement.jinja.html
+++ b/strictdoc/export/html/templates/requirements_coverage/requirement.jinja.html
@@ -1,15 +1,13 @@
-
-
-
{% include "_shared/requirement_block/uid_and_title.jinja.html" %}
-
-
+
{% if config.experimental_enable_file_traceability %}
{% include "_shared/requirement_block/files_tree.jinja.html" %}
diff --git a/strictdoc/export/html/templates/requirements_coverage/requirements_coverage.jinja.html b/strictdoc/export/html/templates/requirements_coverage/requirements_coverage.jinja.html
index b360c52ca..b18248551 100644
--- a/strictdoc/export/html/templates/requirements_coverage/requirements_coverage.jinja.html
+++ b/strictdoc/export/html/templates/requirements_coverage/requirements_coverage.jinja.html
@@ -37,20 +37,8 @@
{{document. {%- set document_iterator = traceability_index.get_document_iterator(document) -%}
{%- for section_or_requirement in document_iterator.all_content() %}
- {%- if section_or_requirement.is_section and section_or_requirement.ng_has_requirements %}
- {# TODO Stanilaw: iterate only throw requirements #}
-
- {#
-
- {%- set section = section_or_requirement %}
- {%- with anchor=link_renderer.render_local_anchor(section_or_requirement) -%}
- {% include "_shared/section.jinja.html" %}
- {%- endwith -%}
-
- #}
-
- {%- elif section_or_requirement.is_requirement %}
+ {%- if section_or_requirement.is_requirement %}
{%- set requirement = section_or_requirement %}
diff --git a/strictdoc/export/html/templates/single_document/frame_document_config.jinja.html b/strictdoc/export/html/templates/single_document/frame_document_config.jinja.html
index 6461f06d9..60e1b41fa 100644
--- a/strictdoc/export/html/templates/single_document/frame_document_config.jinja.html
+++ b/strictdoc/export/html/templates/single_document/frame_document_config.jinja.html
@@ -38,7 +38,23 @@
{%- if traceability_index.has_parent_requirements(requirement) %}
Parents:
-
{{document.title}}
{%- endif -%} {%- if config.is_running_on_server -%} - Edit document configuration - Edit document grammar + + {% include "_res/svg_ico16_edit.jinja.html" %} + Edit document configuration + + + {% include "_res/svg_ico16_edit.jinja.html" %} + Edit document grammar + {%- endif -%} diff --git a/strictdoc/export/html/templates/single_document_table/document.jinja.html b/strictdoc/export/html/templates/single_document_table/document.jinja.html index 140ca5df7..607a715f9 100644 --- a/strictdoc/export/html/templates/single_document_table/document.jinja.html +++ b/strictdoc/export/html/templates/single_document_table/document.jinja.html @@ -146,12 +146,12 @@{{document.title}}
+
{%- for requirement in traceability_index.get_parent_requirements(requirement) %}-
-
+
{%- if requirement.reserved_uid %}
- {{ requirement.reserved_uid }}
+ {{ requirement.reserved_uid }}
{%- endif %}
{{ requirement.reserved_title if requirement.reserved_title else "" }}
@@ -162,12 +162,12 @@
{{document.title}}
{%- if traceability_index.has_children_requirements(requirement) %} Children: -+
{%- for requirement in traceability_index.get_children_requirements(requirement) %}-
-
+
{%- if requirement.reserved_uid %}
- {{ requirement.reserved_uid }}
+ {{ requirement.reserved_uid }}
{%- endif %}
{{ requirement.reserved_title if requirement.reserved_title else "" }}
@@ -178,10 +178,10 @@
{{document.title}}
{%- if requirement.has_requirement_references("BibRef") %} External: -+
{%- for bib_ref in requirement.get_requirement_references("BibRef") %}-
-
+
{{ bib_ref.bib_entry.ref_cite if bib_ref.bib_entry.ref_cite else "" }}
{%- if bib_ref.bib_entry.ref_detail %}
: {{ bib_ref.bib_entry.ref_detail }}
@@ -196,19 +196,19 @@
{{document.title}}
{%- set requirement_file_links = traceability_index.get_requirement_file_links(requirement) %} {%- if requirement_file_links %} Source files: -+
{%- for link, opt_ranges in requirement_file_links %} {%- if opt_ranges -%} {%- for range in opt_ranges %}-
-
+
{{ link.file_entry.file_path }}, lines: {{ range.ng_range_line_begin }}-{{ range.ng_range_line_end }}
{%- endfor -%}
{%- else -%}
-
-
+
{{ link.file_entry.file_path }}
@@ -223,7 +223,7 @@
+
{{ requirement.reserved_title }}
{%- endif -%}
@@ -265,7 +265,7 @@
+
{{ section.title }}
{%- for meta_field_title in document.enumerate_custom_content_field_titles() -%}
diff --git a/strictdoc/export/html/templates/source_file_view/source_requirement.jinja.html b/strictdoc/export/html/templates/source_file_view/source_requirement.jinja.html
index b6ff5340c..640f7f05b 100644
--- a/strictdoc/export/html/templates/source_file_view/source_requirement.jinja.html
+++ b/strictdoc/export/html/templates/source_file_view/source_requirement.jinja.html
@@ -1,13 +1,13 @@
-
+
{%- if requirement.reserved_uid %}
- {{ requirement.reserved_uid }}
+ {{ requirement.reserved_uid }}
{%- endif %}
{%- if requirement.reserved_title is not none %}
{{ requirement.reserved_title }}
{%- endif %}
-
+
{%- set requirement_file_links = traceability_index.get_requirement_file_links(requirement) %}
{%- if requirement_file_links %}
@@ -53,4 +53,4 @@
{%- endif -%}
{%- endfor -%}
-{%- endif %}
\ No newline at end of file
+{%- endif %}
diff --git a/strictdoc/server/routers/main_router.py b/strictdoc/server/routers/main_router.py
index b3857a080..b4682e861 100644
--- a/strictdoc/server/routers/main_router.py
+++ b/strictdoc/server/routers/main_router.py
@@ -1568,7 +1568,10 @@ async def document__save_edit_config(request: Request):
"edit_document_config/"
"stream_save_document_config.jinja.html"
)
- output = template.render(document=document)
+ output = template.render(
+ document=document,
+ config=export_config,
+ )
return HTMLResponse(
content=output,
status_code=200,
diff --git a/tasks.py b/tasks.py
index d582dffda..b9e08f556 100644
--- a/tasks.py
+++ b/tasks.py
@@ -78,7 +78,7 @@ def run_invoke_cmd(
result = context.run(
one_line_command(
"""
- pip install toml &&
+ pip3 install toml &&
python3 check_environment.py
"""
),
diff --git a/tests/end2end/document/UC11_edit_document_config/01_editing_document_title/test_01_editing_document_title.py b/tests/end2end/document/UC11_edit_document_config/01_editing_document_title/test_01_editing_document_title.py
index 6fc41f169..764ac273e 100644
--- a/tests/end2end/document/UC11_edit_document_config/01_editing_document_title/test_01_editing_document_title.py
+++ b/tests/end2end/document/UC11_edit_document_config/01_editing_document_title/test_01_editing_document_title.py
@@ -33,7 +33,7 @@ def test_01(self):
self.assert_text_visible("Requirement title")
self.click_nth_visible_element(
- "//a[contains(text(), 'Edit document config')]", 1
+ "//a[@title='Edit document configuration']", 1
)
self.type(
diff --git a/tests/end2end/document/UC11_edit_document_config/02_editing_document_title_empty/test_02_editing_document_title_empty.py b/tests/end2end/document/UC11_edit_document_config/02_editing_document_title_empty/test_02_editing_document_title_empty.py
index d799c3f81..24979608c 100644
--- a/tests/end2end/document/UC11_edit_document_config/02_editing_document_title_empty/test_02_editing_document_title_empty.py
+++ b/tests/end2end/document/UC11_edit_document_config/02_editing_document_title_empty/test_02_editing_document_title_empty.py
@@ -33,7 +33,7 @@ def test_01(self):
self.assert_text_visible("Requirement title")
self.click_nth_visible_element(
- "//a[contains(text(), 'Edit document config')]", 1
+ "//a[@title='Edit document configuration']", 1
)
# HACK: The only way the field is actually cleared.
diff --git a/tests/end2end/document/UC11_edit_document_config/03_editing_document_cancel/test_03_editing_document_cancel.py b/tests/end2end/document/UC11_edit_document_config/03_editing_document_cancel/test_03_editing_document_cancel.py
index 82f5475f8..6bb19cd33 100644
--- a/tests/end2end/document/UC11_edit_document_config/03_editing_document_cancel/test_03_editing_document_cancel.py
+++ b/tests/end2end/document/UC11_edit_document_config/03_editing_document_cancel/test_03_editing_document_cancel.py
@@ -31,7 +31,7 @@ def test_01(self):
self.assert_text_visible("Requirement title")
self.click_nth_visible_element(
- "//a[contains(text(), 'Edit document config')]", 1
+ "//a[@title='Edit document configuration']", 1
)
self.click_link("Cancel")
diff --git a/tests/end2end/document/UC11_edit_document_config/11_editing_document_version/test_11_editing_document_version.py b/tests/end2end/document/UC11_edit_document_config/11_editing_document_version/test_11_editing_document_version.py
index 6c6089cd1..d35967fd6 100644
--- a/tests/end2end/document/UC11_edit_document_config/11_editing_document_version/test_11_editing_document_version.py
+++ b/tests/end2end/document/UC11_edit_document_config/11_editing_document_version/test_11_editing_document_version.py
@@ -33,7 +33,7 @@ def test_01(self):
self.assert_text_visible("Requirement title")
self.click_nth_visible_element(
- "//a[contains(text(), 'Edit document config')]", 1
+ "//a[@title='Edit document configuration']", 1
)
self.type("(//div[@id='document[VERSION]'])[1]", "1.0.0", by=By.XPATH)
diff --git a/tests/end2end/document/UC11_edit_document_config/20_editing_document_uid/test_20_editing_document_uid.py b/tests/end2end/document/UC11_edit_document_config/20_editing_document_uid/test_20_editing_document_uid.py
index f502c978f..7af842773 100644
--- a/tests/end2end/document/UC11_edit_document_config/20_editing_document_uid/test_20_editing_document_uid.py
+++ b/tests/end2end/document/UC11_edit_document_config/20_editing_document_uid/test_20_editing_document_uid.py
@@ -33,7 +33,7 @@ def test_01(self):
self.assert_text_visible("Requirement title")
self.click_nth_visible_element(
- "//a[contains(text(), 'Edit document config')]", 1
+ "//a[@title='Edit document configuration']", 1
)
self.type("(//div[@id='document[UID]'])[1]", "DOC_001", by=By.XPATH)
diff --git a/tests/end2end/document/UC11_edit_document_config/31_editing_document_classification/test_31_editing_document_classification.py b/tests/end2end/document/UC11_edit_document_config/31_editing_document_classification/test_31_editing_document_classification.py
index 3514915fd..870d51beb 100644
--- a/tests/end2end/document/UC11_edit_document_config/31_editing_document_classification/test_31_editing_document_classification.py
+++ b/tests/end2end/document/UC11_edit_document_config/31_editing_document_classification/test_31_editing_document_classification.py
@@ -33,7 +33,7 @@ def test_01(self):
self.assert_text_visible("Requirement title")
self.click_nth_visible_element(
- "//a[contains(text(), 'Edit document config')]", 1
+ "//a[@title='Edit document configuration']", 1
)
self.type(
@@ -44,6 +44,7 @@ def test_01(self):
self.click_xpath("//button[@type='submit' and text()='Save']")
+ self.assert_text_not_visible("Save")
self.assert_text("Restricted")
assert os.path.exists(os.path.join(path_to_sandbox, "document.sdoc"))
diff --git a/tests/integration/html_markup_validator.py b/tests/integration/html_markup_validator.py
index b1b522664..49b26bbdd 100644
--- a/tests/integration/html_markup_validator.py
+++ b/tests/integration/html_markup_validator.py
@@ -41,9 +41,11 @@
# HTML 5
"main, aside, header, footer, section, article, nav, "
# Turbo.js
- "turbo-frame,"
+ "turbo-frame, "
# SVG
- "svg, path, line, circle, polyline"
+ "svg, path, line, circle, polyline, "
+ # StrictDoc
+ "sdoc-node"
),
"char-encoding": "utf8",
"input-encoding": "utf8",
{{document.title}}
{%- with anchor=link_renderer.render_local_anchor(section_or_requirement) -%} {% include "_shared/requirement_block/anchor.jinja.html" %} {%- endwith %} -{{document.title}}
{%- with anchor=link_renderer.render_local_anchor(section_or_requirement) -%} {% include "_shared/requirement_block/anchor.jinja.html" %} {%- endwith %} -