0 Votes

Wiki source code of Interactive Link Visualizer

Last modified by Ryan C on 2025/03/08 02:02

Show last authors
1 {{velocity output="false"}}
2 #set ($discard = $xwiki.ssx.use('XWiki.InteractiveLinkVisualizer.Code.MainVisualisation'))
3 #set ($discard = $xwiki.jsx.use('XWiki.InteractiveLinkVisualizer.Code.MainVisualisation'))
4 {{/velocity}}
5
6 {{include reference="Main.SolrSearchConfig" /}}
7
8 {{include reference="Main.SolrSearchMacros" /}}
9
10 {{velocity output="false"}}
11 #set ($discard = $solrConfig.facetFields.remove('type'))
12 #set ($discard = $solrConfig.filterQuery.add('type:DOCUMENT'))
13 #set ($discard = $solrConfig.put('facetEnabled', false))
14 ## To return visualisation as search results
15 #macro (displaySearchResults)
16 {{html}}
17 <div id="top-bar">
18 <div id="search">
19 <i class="fa fa-search"></i>
20 <input
21 type="search"
22 id="search-input"
23 list="suggestions"
24 placeholder="$services.localization.render('intlv.topbar.search.placeholder')"
25 title="$services.localization.render('intlv.topbar.search.title')">
26 </input>
27 <datalist id="suggestions"></datalist>
28 </div>
29 <div title="$services.localization.render('intlv.topbar.graphinfo.hint')" id="graph-info">
30 <span id="node-count"></span>
31 <span id="edge-count"></span>
32 </div>
33 </div>
34 <div id="sigma-container" data-results="$escapetool.xml($jsontool.serialize($searchResponse.results))">
35 <div class="buttonwrapper" id="graph-buttons">
36 <button class="icon-button" title="$services.localization.render('intlv.sigmacontainer.buttons.title.zoomin')
37 " id="zoom-in">$services.icon.renderHTML('search-plus')</button>
38 <button class="icon-button" title="$services.localization.render('intlv.sigmacontainer.buttons.title.zoomout')
39 " id="zoom-out">$services.icon.renderHTML('search-minus')</button>
40 <button class="icon-button" title="$services.localization.render('intlv.sigmacontainer.buttons.title.iterations')
41 " id="iteration-button">$services.icon.renderHTML('refresh')</button>
42 <button class="icon-button" title="$services.localization.render('intlv.sigmacontainer.buttons.title.zoomdefault')
43 " id="zoom-reset">$services.icon.renderHTML('world')</button>
44 <button class="icon-button" title="$services.localization.render('intlv.sigmacontainer.buttons.title.fullscreen')
45 " id="view-fullscreen">$services.icon.renderHTML('arrows')</button>
46 <button class="icon-button hidden" title="$services.localization.render('intlv.sigmacontainer.buttons.title.killgraph')" id="kill-graph-button">$services.icon.renderHTML('delete')</button>
47 </div>
48 </div>
49 {{/html}}
50 #end
51
52 ## To get only the relevant field list (ridiculous performance improvement)
53 #macro(setHighlightQuery $query)
54 #set ($discard = $query.bindValue('fl', 'title_, reference, links, wiki, name, spaces'))
55 #end
56 ## For number of results input & rows override
57
58 #macro (displaySearchForm)
59 ## Override default no. of rows
60 #set ($rows = $numbertool.toNumber($request.rows).intValue())
61 #if ("$!rows" == '')
62 #set ($rows = 1000)
63 #end
64 ##
65 #set($void = $services.progress.startStep('#displaySearchForm'))
66 {{html clean="false"}}
67 <form class="search-form row" action="$doc.getURL()" role="search">
68 <div class="hidden">
69 <input type="hidden" name="sort" value="$!escapetool.xml($sort)"/>
70 <input type="hidden" name="sortOrder" value="$!escapetool.xml($sortOrder)"/>
71 <input type="hidden" name="highlight" value="$highlightEnabled"/>
72 <input type="hidden" name="facet" value="$facetEnabled"/>
73 ## The parameter used to determine if the request has been redirected with default search filters.
74 <input type="hidden" name="r" value="$!escapetool.xml($request.r)"/>
75 #if ("$!request.debug" != '')
76 <input type="hidden" name="debug" value="$escapetool.xml($request.debug)"/>
77 #end
78 ## Preserve the current facet values when submitting a new search query.
79 #foreach ($entry in $request.parameterMap.entrySet())
80 #if ($entry.key.startsWith('f_') || $entry.key.startsWith('l_'))
81 #foreach ($value in $entry.value)
82 <input type="hidden" name="$escapetool.xml($entry.key)" value="$escapetool.xml($value)"/>
83 #end
84 #end
85 #end
86 </div>
87 <div class="col-xs-12 col-sm-6">
88 <div class="input-group">
89 <input type="search" name="text" class="form-control withTip useTitleAsTip"
90 title="$services.localization.render('search.page.bar.query.title')" value="$escapetool.xml($text)"/>
91 <span class="input-group-btn">
92 <button type="submit" class="btn btn-primary">
93 $services.icon.renderHTML('search')
94 <span class="sr-only">$services.localization.render('search.page.bar.submit')</span>
95 </button>
96 </span>
97 </div>
98 <div>
99 <label for="rows" style="margin-right: 2%;">$services.localization.render('intlv.sigmacontainer.form.label.documentfilter')
100 </label>
101 <input id="rows" type="number" name="rows" title="$services.localization.render('intlv.sigmacontainer.form.title.documentfilter')"
102 placeholder="1000" value="$!escapetool.xml($request.rows)"/>
103 <span>
104 <button type="submit" id="refresh-button" class="btn btn-primary">
105 $services.icon.renderHTML('refresh')
106 </button>
107 </span>
108 </div>
109 </div>
110 </form>
111
112 {{/html}}
113 #if ($text == '')
114 #set ($text = "*")
115 #end
116 #end
117
118 ## To disable Highlighting Search Option
119 #macro (displaySearchResultsSort)
120 #set ($defaultSortOrder = $solrConfig.sortFields.get($type))
121 #if (!$defaultSortOrder)
122 #set ($defaultSortOrder = {'score': 'desc'})
123 #end
124 #set ($sortOrderSymbol = {
125 'asc': $services.icon.render('caret-up'),
126 'desc': $services.icon.render('caret-down')
127 })
128 (% class="search-options" %)
129 * {{translation key="solr.options"/}}
130 #if($facetEnabled)#extendQueryString($url {'facet': [false]})#else#extendQueryString($url {'facet': [true]})#end
131 * [[{{translation key="solr.options.facet"/}}>>path:${url}||class="options-item#if($facetEnabled) active#end" title="$services.localization.render('solr.options.facet.title')"]]
132
133 (% class="search-results-sort" %)
134 * {{translation key="solr.sortBy"/}}
135 #foreach ($entry in $defaultSortOrder.entrySet())
136 #set ($class = 'sort-item')
137 #set ($sortOrderIndicator = $NULL)
138 #set ($targetSortOrder = $entry.value)
139 #if ($sort == $entry.key)
140 #set ($class = "$class active")
141 #set ($sortOrderHint = $services.localization.render("solr.sortOrder.$sortOrder"))
142 #set ($sortOrderIndicator = "(% class=""sort-item-order"" title=""$sortOrderHint"" %)$sortOrderSymbol.get($sortOrder)(%%)")
143 #set ($targetSortOrder = "#if ($sortOrder == 'asc')desc#{else}asc#end")
144 #end
145 #extendQueryString($url {'sort': [$entry.key], 'sortOrder': [$targetSortOrder]})
146 * [[{{translation key="solr.sortBy.$entry.key"/}}$!sortOrderIndicator>>path:${url}||class="$class"]]
147 #end
148 #end
149 {{/velocity}}
150
151 {{velocity}}
152 #handleSolrSearchRequest
153 {{/velocity}}