Wiki source code of ProjectsSheet

Version 2.1 by Zenna Elfen on 2025/11/20 21:31

Show last authors
1 {{velocity}}
2 #set ($object = $doc.getObject('Projects.Code.ProjectsClass'))
3 #if (!$object)
4 #set ($messageKey = 'projects.sheet.description')
5 #set ($messageType = 'info')
6 #if ($doc.documentReference.name != 'ProjectsSheet')
7 #set ($messageKey = 'projects.sheet.noObject')
8 #set ($messageType = 'warning')
9 #end
10 {{$messageType}}
11 $services.localization.render($messageKey)
12 {{/$messageType}}
13 #stop
14 #end
15 #set ($discard = $xwiki.jsfx.use('uicomponents/edit/editableProperty.js', {
16 'forceSkinAction': true,
17 'language': $xcontext.locale
18 }))
19 #set ($discard = $doc.use($object))
20 #set ($editing = $xcontext.action == 'edit')
21 {{html wiki="true" clean="false"}}
22 <div class="xform">
23 <dl>
24 <dt #if (!$editing && $hasEdit)
25 class="editableProperty"
26 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('shortText1')))"
27 data-property-type="object"#end>
28 <label#if ($editing) for="Projects.Code.ProjectsClass_0_shortText1"#end>
29 $escapetool.xml($doc.displayPrettyName('shortText1', false, false))
30 </label>
31 <span class="xHint">
32 $escapetool.xml($services.localization.render('What''s the name of the project?'))
33 </span>
34 </dt>
35 <dd>$doc.display('shortText1')</dd>
36 <dt #if (!$editing && $hasEdit)
37 class="editableProperty"
38 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('shortText2')))"
39 data-property-type="object"#end>
40 <label#if ($editing) for="Projects.Code.ProjectsClass_0_shortText2"#end>
41 $escapetool.xml($doc.displayPrettyName('shortText2', false, false))
42 </label>
43 <span class="xHint">
44 $escapetool.xml($services.localization.render('What''s the projects website?'))
45 </span>
46 </dt>
47 <dd>$doc.display('shortText2')</dd>
48 <dt #if (!$editing && $hasEdit)
49 class="editableProperty"
50 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('data_synchronization')))"
51 data-property-type="object"#end>
52 <label#if ($editing) for="Projects.Code.ProjectsClass_0_data_synchronization"#end>
53 $escapetool.xml($doc.displayPrettyName('data_synchronization', false, false))
54 </label>
55 <span class="xHint">
56 $escapetool.xml($services.localization.render('Synchronization answers how updates flow between peers and how they determine what data to exchange. This layer is about diffing, reconciliation, order, causality tracking, and efficient exchange, not persistence or user-facing collaboration semantics. Examples: Range-Based Set Reconciliation, RIBLT, Gossip-based sync, State-based vs op-based sync, Lamport/Vector/HLC clocks, Braid Protocol'))
57 </span>
58 </dt>
59 <dd>$doc.display('data_synchronization')</dd>
60 <dt #if (!$editing && $hasEdit)
61 class="editableProperty"
62 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText1')))"
63 data-property-type="object"#end>
64 <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText1"#end>
65 $escapetool.xml($doc.displayPrettyName('longText1', false, false))
66 </label>
67 <span class="xHint">
68 $escapetool.xml($services.localization.render('How do peers detect differences and synchronize state?'))
69 </span>
70 </dt>
71 <dd>$doc.display('longText1')</dd>
72 <dt #if (!$editing && $hasEdit)
73 class="editableProperty"
74 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('conf_res')))"
75 data-property-type="object"#end>
76 <label#if ($editing) for="Projects.Code.ProjectsClass_0_conf_res"#end>
77 $escapetool.xml($doc.displayPrettyName('conf_res', false, false))
78 </label>
79 <span class="xHint">
80 $escapetool.xml($services.localization.render('This layer defines how shared data evolves when multiple peers edit concurrently. It focuses on conflict-free merging, causality, and consistency of meaning, not transport or storage. CRDTs ensure deterministic convergence, while event-sourced or stream-driven models maintain a history of all changes and derive consistent state from it. Examples: CRDTs (Yjs, Automerge), OT, Event Sourcing, Stream Processing, Version Vectors, Peritext'))
81 </span>
82 </dt>
83 <dd>$doc.display('conf_res')</dd>
84 <dt #if (!$editing && $hasEdit)
85 class="editableProperty"
86 data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('content1')))"
87 data-property-type="object"#end>
88 <label#if ($editing) for="Projects.Code.ProjectsClass_0_content1"#end>
89 $escapetool.xml($doc.displayPrettyName('content1', false, false))
90 </label>
91 <span class="xHint">
92 $escapetool.xml($services.localization.render('How is data persisted locally and replicated between peers?'))
93 </span>
94 </dt>
95 <dd>$doc.display('content1')</dd>
96 </dl>
97 </div>
98 {{/html}}
99 {{/velocity}}