Skip to content

Commit 00929b6

Browse files
authored
Merge pull request #833 from strictdoc-project/mettta/newUI
server: fix editing of the grammar fields
2 parents 3916334 + b83da55 commit 00929b6

File tree

13 files changed

+292
-7
lines changed

13 files changed

+292
-7
lines changed

strictdoc/export/html/_static/controllers/document_grammar_form_controller.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Stimulus.register("document_grammar_form", class extends Controller {
4949
link.addEventListener("click", function(event){
5050
event.preventDefault();
5151
const grammarFieldNode = event.target.closest('editable-grammar-field');
52-
swapNodes(grammarFieldNode, grammarFieldNode.previousSibling);
52+
swapNodes(grammarFieldNode, grammarFieldNode.previousElementSibling);
5353
});
5454
});
5555

@@ -58,7 +58,7 @@ Stimulus.register("document_grammar_form", class extends Controller {
5858
link.addEventListener("click", function(event){
5959
event.preventDefault();
6060
const grammarFieldNode = event.target.closest('editable-grammar-field');
61-
swapNodes(grammarFieldNode, grammarFieldNode.nextSibling);
61+
swapNodes(grammarFieldNode, grammarFieldNode.nextElementSibling);
6262
});
6363
});
6464
}

strictdoc/export/html/templates/single_document/frame_document_grammar_edit.jinja.html

-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@
1616

1717
<div id="document__editable_grammar_fields">
1818
{%- for field in form_object.fields -%}
19-
<editable-grammar-field>
2019
{%- include "single_document/frame_document_grammar_edit_custom_field.jinja.html" -%}
21-
</editable-grammar-field>
2220
{%- endfor -%}
2321
</div>
2422

strictdoc/export/html/templates/single_document/frame_document_grammar_edit_custom_field.jinja.html

+4-2
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,17 @@
2828
{% include "_helpers/singleline_field.jinja.html" %}
2929
{%- endwith -%}
3030
<a
31+
href="#"
32+
title="Move up"
3133
class="std-form-btn"
3234
data-js-move-field-up
33-
href="#"
3435
data-turbo="false"
3536
>Move up</a>
3637
<a
38+
href="#"
39+
title="Move down"
3740
class="std-form-btn"
3841
data-js-move-field-down
39-
href="#"
4042
data-turbo="false"
4143
>Move down</a>
4244
<a

tasks.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,16 @@ def run_invoke_cmd(
7474
venv_path = os.path.join(os.getcwd(), f".venv-{postfix}")
7575

7676
with context.prefix(get_venv_command(venv_path, reset_path=reset_path)):
77+
# FIXME: pip3 uninstall strictdoc -y" is here because I don't know how
78+
# to make pip install only the dependencies from the pyproject.toml but
79+
# not the project itself.
7780
if VENV_DEPS_CHECK_PASSED not in context:
7881
result = context.run(
7982
one_line_command(
8083
"""
8184
pip3 install toml &&
82-
python3 check_environment.py
85+
python3 check_environment.py &&
86+
pip3 uninstall strictdoc -y
8387
"""
8488
),
8589
env=None,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
[DOCUMENT]
2+
TITLE: Document 1
3+
4+
[GRAMMAR]
5+
ELEMENTS:
6+
- TAG: REQUIREMENT
7+
FIELDS:
8+
- TITLE: UID
9+
TYPE: String
10+
REQUIRED: False
11+
- TITLE: LEVEL
12+
TYPE: String
13+
REQUIRED: False
14+
- TITLE: STATUS
15+
TYPE: String
16+
REQUIRED: False
17+
- TITLE: TAGS
18+
TYPE: String
19+
REQUIRED: False
20+
- TITLE: REFS
21+
TYPE: String
22+
REQUIRED: False
23+
- TITLE: TITLE
24+
TYPE: String
25+
REQUIRED: False
26+
- TITLE: STATEMENT
27+
TYPE: String
28+
REQUIRED: False
29+
- TITLE: RATIONALE
30+
TYPE: String
31+
REQUIRED: False
32+
- TITLE: CUSTOM_FIELD
33+
TYPE: String
34+
REQUIRED: False
35+
- TITLE: COMMENT
36+
TYPE: String
37+
REQUIRED: False
38+
39+
[FREETEXT]
40+
Hello world!
41+
[/FREETEXT]
42+
43+
[REQUIREMENT]
44+
TITLE: Requirement title
45+
STATEMENT: >>>
46+
Requirement statement.
47+
<<<
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
[DOCUMENT]
2+
TITLE: Document 1
3+
4+
[GRAMMAR]
5+
ELEMENTS:
6+
- TAG: REQUIREMENT
7+
FIELDS:
8+
- TITLE: UID
9+
TYPE: String
10+
REQUIRED: False
11+
- TITLE: LEVEL
12+
TYPE: String
13+
REQUIRED: False
14+
- TITLE: STATUS
15+
TYPE: String
16+
REQUIRED: False
17+
- TITLE: TAGS
18+
TYPE: String
19+
REQUIRED: False
20+
- TITLE: REFS
21+
TYPE: String
22+
REQUIRED: False
23+
- TITLE: TITLE
24+
TYPE: String
25+
REQUIRED: False
26+
- TITLE: STATEMENT
27+
TYPE: String
28+
REQUIRED: False
29+
- TITLE: RATIONALE
30+
TYPE: String
31+
REQUIRED: False
32+
- TITLE: COMMENT
33+
TYPE: String
34+
REQUIRED: False
35+
- TITLE: CUSTOM_FIELD
36+
TYPE: String
37+
REQUIRED: False
38+
39+
[FREETEXT]
40+
Hello world!
41+
[/FREETEXT]
42+
43+
[REQUIREMENT]
44+
TITLE: Requirement title
45+
STATEMENT: >>>
46+
Requirement statement.
47+
<<<
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import filecmp
2+
import os
3+
import shutil
4+
5+
from seleniumbase import BaseCase
6+
7+
from tests.end2end.server import SDocTestServer
8+
9+
path_to_this_test_file_folder = os.path.dirname(os.path.abspath(__file__))
10+
11+
12+
class Test_UC12_02_MovingCustomFieldUp(BaseCase):
13+
def test_01(self):
14+
path_to_sandbox = os.path.join(
15+
path_to_this_test_file_folder, ".sandbox"
16+
)
17+
18+
test_server = SDocTestServer.create(path_to_sandbox)
19+
shutil.copyfile(
20+
os.path.join(path_to_this_test_file_folder, "document.sdoc"),
21+
os.path.join(path_to_sandbox, "document.sdoc"),
22+
)
23+
24+
test_server.run()
25+
26+
self.open("http://localhost:8001")
27+
28+
self.assert_text("Document 1")
29+
self.assert_text("PROJECT INDEX")
30+
31+
self.click_link("DOC")
32+
self.assert_text_visible("Requirement title")
33+
34+
self.click_link("Edit document grammar")
35+
36+
self.click_xpath("(//a[@title='Move up'])[last()]")
37+
self.click_xpath("//button[@type='submit' and text()='Save']")
38+
self.assert_text_not_visible("Save")
39+
40+
assert os.path.exists(os.path.join(path_to_sandbox, "document.sdoc"))
41+
assert filecmp.cmp(
42+
os.path.join(path_to_sandbox, "document.sdoc"),
43+
os.path.join(
44+
path_to_this_test_file_folder, "document.expected.sdoc"
45+
),
46+
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
[DOCUMENT]
2+
TITLE: Document 1
3+
4+
[GRAMMAR]
5+
ELEMENTS:
6+
- TAG: REQUIREMENT
7+
FIELDS:
8+
- TITLE: UID
9+
TYPE: String
10+
REQUIRED: False
11+
- TITLE: LEVEL
12+
TYPE: String
13+
REQUIRED: False
14+
- TITLE: STATUS
15+
TYPE: String
16+
REQUIRED: False
17+
- TITLE: TAGS
18+
TYPE: String
19+
REQUIRED: False
20+
- TITLE: REFS
21+
TYPE: String
22+
REQUIRED: False
23+
- TITLE: TITLE
24+
TYPE: String
25+
REQUIRED: False
26+
- TITLE: STATEMENT
27+
TYPE: String
28+
REQUIRED: False
29+
- TITLE: RATIONALE
30+
TYPE: String
31+
REQUIRED: False
32+
- TITLE: COMMENT
33+
TYPE: String
34+
REQUIRED: False
35+
- TITLE: CUSTOM_FIELD
36+
TYPE: String
37+
REQUIRED: False
38+
39+
[FREETEXT]
40+
Hello world!
41+
[/FREETEXT]
42+
43+
[REQUIREMENT]
44+
TITLE: Requirement title
45+
STATEMENT: >>>
46+
Requirement statement.
47+
<<<
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
[DOCUMENT]
2+
TITLE: Document 1
3+
4+
[GRAMMAR]
5+
ELEMENTS:
6+
- TAG: REQUIREMENT
7+
FIELDS:
8+
- TITLE: UID
9+
TYPE: String
10+
REQUIRED: False
11+
- TITLE: LEVEL
12+
TYPE: String
13+
REQUIRED: False
14+
- TITLE: STATUS
15+
TYPE: String
16+
REQUIRED: False
17+
- TITLE: TAGS
18+
TYPE: String
19+
REQUIRED: False
20+
- TITLE: REFS
21+
TYPE: String
22+
REQUIRED: False
23+
- TITLE: TITLE
24+
TYPE: String
25+
REQUIRED: False
26+
- TITLE: STATEMENT
27+
TYPE: String
28+
REQUIRED: False
29+
- TITLE: RATIONALE
30+
TYPE: String
31+
REQUIRED: False
32+
- TITLE: CUSTOM_FIELD
33+
TYPE: String
34+
REQUIRED: False
35+
- TITLE: COMMENT
36+
TYPE: String
37+
REQUIRED: False
38+
39+
[FREETEXT]
40+
Hello world!
41+
[/FREETEXT]
42+
43+
[REQUIREMENT]
44+
TITLE: Requirement title
45+
STATEMENT: >>>
46+
Requirement statement.
47+
<<<
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import filecmp
2+
import os
3+
import shutil
4+
5+
from seleniumbase import BaseCase
6+
7+
from tests.end2end.server import SDocTestServer
8+
9+
path_to_this_test_file_folder = os.path.dirname(os.path.abspath(__file__))
10+
11+
12+
class Test_UC12_03_MovingCustomFieldDown(BaseCase):
13+
def test_01(self):
14+
path_to_sandbox = os.path.join(
15+
path_to_this_test_file_folder, ".sandbox"
16+
)
17+
18+
test_server = SDocTestServer.create(path_to_sandbox)
19+
shutil.copyfile(
20+
os.path.join(path_to_this_test_file_folder, "document.sdoc"),
21+
os.path.join(path_to_sandbox, "document.sdoc"),
22+
)
23+
24+
test_server.run()
25+
26+
self.open("http://localhost:8001")
27+
28+
self.assert_text("Document 1")
29+
self.assert_text("PROJECT INDEX")
30+
31+
self.click_link("DOC")
32+
self.assert_text_visible("Requirement title")
33+
34+
self.click_link("Edit document grammar")
35+
36+
self.click_xpath("(//a[@title='Move down'])[last()]")
37+
38+
self.click_xpath("//button[@type='submit' and text()='Save']")
39+
self.assert_text_not_visible("Save")
40+
41+
assert os.path.exists(os.path.join(path_to_sandbox, "document.sdoc"))
42+
assert filecmp.cmp(
43+
os.path.join(path_to_sandbox, "document.sdoc"),
44+
os.path.join(
45+
path_to_this_test_file_folder, "document.expected.sdoc"
46+
),
47+
)

0 commit comments

Comments
 (0)