Skip to content

Commit 8bc3a78

Browse files
authored
Merge pull request #1 from opencitations/fix_oscar_on_different_path
Fix oscar on different path
2 parents 4668133 + d5ff648 commit 8bc3a78

File tree

8 files changed

+119
-32
lines changed

8 files changed

+119
-32
lines changed

docker_version.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.3.6sync
1+
1.3.7sync

html-template/common/header.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,19 @@
6464
</div>
6565
</nav>
6666
</header>
67-
$if current_subdomain == 'sparql' and sp_title in ['meta', 'index']:
67+
$if current_subdomain in ['sparql', 'sparql-stg'] and sp_title in ['meta', 'index']:
6868
<nav aria-label="breadcrumb" class="mt-3 ms-3">
6969
<ol class="breadcrumb">
70-
<li class="breadcrumb-item"><a href="https://sparql.opencitations.net">SPARQL</a></li>
70+
<li class="breadcrumb-item"><a href="https://${current_subdomain}.opencitations.net">SPARQL</a></li>
7171
<li class="breadcrumb-item active" aria-current="page">$sp_title.capitalize()</li>
7272
</ol>
7373
</nav>
7474

75-
$if current_subdomain == 'search' and web.ctx.path.startswith('/search'):
75+
$if current_subdomain in ['search', 'search-stg'] and web.ctx.path.startswith('/search'):
7676
$ query_params = web.input(text="", rule="")
7777
<nav aria-label="breadcrumb" class="mt-3 ms-3">
7878
<ol class="breadcrumb">
79-
<li class="breadcrumb-item"><a href="https://search.opencitations.net">Search</a></li>
79+
<li class="breadcrumb-item"><a href="https://${current_subdomain}.opencitations.net">Search</a></li>
8080
<li class="breadcrumb-item active" aria-current="page">
8181
$if query_params.rule == "citeddoi" and query_params.text:
8282
Citing $query_params.text

html-template/search.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,8 @@ <h1 class="brand-title">
7575
</main>
7676
$:render.common.footer()
7777
<!-- Placed at the end of the document so the pages load faster -->
78-
<script src="/static/js/jquery.min.js"><![CDATA[ ]]></script>
79-
<script>window.jQuery || document.write('<script src="/static/js/jquery.min.js"><\/script>')</script>
78+
<script src="/static/oscar/jquery.min.js"><![CDATA[ ]]></script>
79+
<script>window.jQuery || document.write('<script src="/static/oscar/jquery.min.js"><\/script>')</script>
8080
<!-- Bootstrap JS -->
8181
<script src="/static/bootstrap-533/js/bootstrap.bundle.min.js"></script>
8282
<script>
@@ -87,8 +87,8 @@ <h1 class="brand-title">
8787
</script>
8888
<!-- SEARCH GUI -->
8989
<!-- <script type="text/javascript" src="/staticsearch-conf.jsjson"></script> -->
90-
<script type="text/javascript" src="/static/js/search-conf-index-v2.js"></script>
91-
<script type="text/javascript" src="/static/js/search.js"></script>
90+
<script type="text/javascript" src="/static/oscar/search-conf-index-v2.js"></script>
91+
<script type="text/javascript" src="/static/oscar/search.js"></script>
9292
<script>
9393
search.do_sparql_query("$query_string");
9494
</script>

static/oscar/jquery.js

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

static/oscar/jquery.mark.min.js

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

static/oscar/jquery.min.js

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 85 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,8 @@ var search = (function () {
8787
data: null,
8888
category: "",
8989
filters : {"limit":null, "arr_entries":[], "fields":[], "data":null},
90-
view: {"data": null, "page": 0, "page_limit": null, "fields_filter_index":{}, "sort": {"field":null, "order":null, "type":null}}
90+
view: {"data": null, "page": 0, "page_limit": null, "fields_filter_index":{}, "sort": {"field":null, "order":null, "type":null}},
91+
processed_ext_data: new Set()
9192
}
9293

9394
function init_oscar_obj(){
@@ -103,7 +104,8 @@ var search = (function () {
103104
'data': null,
104105
'category': "",
105106
'filters' : {"limit":null, "arr_entries":[], "fields":[], "data":null},
106-
'view': {"data": null, "page": 0, "page_limit": null, "fields_filter_index":{}, "sort": {"field":null, "order":null, "type":null}}
107+
'view': {"data": null, "page": 0, "page_limit": null, "fields_filter_index":{}, "sort": {"field":null, "order":null, "type":null}},
108+
'processed_ext_data': new Set()
107109
}
108110
}
109111
}
@@ -524,6 +526,10 @@ var search = (function () {
524526
_build_header_sec();
525527
_sort_results();
526528
htmldom.update_res_table(table_conf,search_conf_json);
529+
530+
// Load external data for initially visible results
531+
_load_ext_data_for_visible_results();
532+
527533
return {
528534
"table_conf": JSON.parse(JSON.stringify(table_conf)),
529535
"cat_conf": JSON.parse(JSON.stringify(cat_conf)),
@@ -698,6 +704,73 @@ var search = (function () {
698704
}
699705
}
700706

707+
// Load external data only for visible results
708+
function _load_ext_data_for_visible_results() {
709+
var results = table_conf.view.data["results"]["bindings"];
710+
if (results.length === 0) return;
711+
712+
var i_from = table_conf.view.page * table_conf.view.page_limit;
713+
var i_to = i_from + table_conf.view.page_limit;
714+
if (i_to > results.length) {i_to = results.length;}
715+
716+
var category_conf_obj = cat_conf;
717+
var fields = category_conf_obj.fields;
718+
var ext_data_fields = [];
719+
720+
for (var i = 0; i < fields.length; i++) {
721+
if (fields[i].value.startsWith("ext_data")) {
722+
var all_parts = fields[i].value.split(".");
723+
var data_field = "";
724+
var sep = ".";
725+
for (var j = 2; j < all_parts.length; j++) {
726+
if (j == all_parts.length-1) {
727+
sep = "";
728+
}
729+
data_field = data_field + all_parts[j] + sep;
730+
}
731+
ext_data_fields.push({
732+
"full_name": fields[i].value,
733+
"func_name": all_parts[1],
734+
"data_field": data_field
735+
});
736+
}
737+
}
738+
739+
for (var i = i_from; i < i_to; i++) {
740+
var result = results[i];
741+
var result_key = result[table_conf.data_key].value;
742+
743+
if (!table_conf.processed_ext_data.has(result_key)) {
744+
table_conf.processed_ext_data.add(result_key);
745+
746+
for (var j = 0; j < ext_data_fields.length; j++) {
747+
var key_full_name = ext_data_fields[j]["full_name"];
748+
var key_func_name = ext_data_fields[j]["func_name"];
749+
var func_obj = category_conf_obj["ext_data"][key_func_name];
750+
751+
if (func_obj != undefined) {
752+
var async_val = true;
753+
if (func_obj["async"] != undefined) {
754+
async_val = func_obj["async"];
755+
}
756+
757+
_exec_ext_data(
758+
key_func_name,
759+
func_obj,
760+
result[table_conf.data_key].value,
761+
async_val,
762+
search.callbk_update_data_entry_val,
763+
key_full_name,
764+
func_obj.name,
765+
result,
766+
ext_data_fields[j]["data_field"]
767+
);
768+
}
769+
}
770+
}
771+
}
772+
}
773+
701774
/*init all the local data*/
702775
function _init_data(json_data, callbk = null, callbk_query = null, check_and_update = false){
703776
table_conf.category = cat_conf.name;
@@ -776,36 +849,17 @@ var search = (function () {
776849
table_conf.data.head.vars = new_header;
777850
//console.log(table_conf.data.head.vars);
778851

779-
// now the results
852+
// Initialize ext_data fields and make API calls for visible results only
780853
for (var i = 0; i < table_conf.data.results.bindings.length; i++) {
781-
782854
for (var j = 0; j < ext_data_fields.length; j++) {
783855
var key_full_name = ext_data_fields[j]["full_name"];
784856
var key_func_name = ext_data_fields[j]["func_name"];
785857
var func_obj = category_conf_obj["ext_data"][key_func_name];
786858
if (func_obj != undefined) {
787-
var async_val = true;
788-
if (func_obj["async"] != undefined) {
789-
async_val = func_obj["async"];
790-
}
791-
792859
table_conf.data.results.bindings[i][key_full_name] = {"value":"", "label":""};
793-
var ext_res = _exec_ext_data(
794-
key_func_name,
795-
func_obj,
796-
table_conf.data.results.bindings[i][table_conf.data_key].value,
797-
async_val,
798-
search.callbk_update_data_entry_val,
799-
key_full_name,
800-
func_obj.name,
801-
table_conf.data.results.bindings[i],
802-
ext_data_fields[j]["data_field"]
803-
);
804-
805860
}
806861
}
807862
}
808-
//console.log(table_conf.data.results.bindings);
809863

810864
//set all the other table_conf fields
811865
//init all the filtered fields
@@ -1630,6 +1684,9 @@ var search = (function () {
16301684
change_search_data: change_search_data,
16311685
get_search_data: get_search_data,
16321686

1687+
//lazy loading function
1688+
_load_ext_data_for_visible_results: _load_ext_data_for_visible_results,
1689+
16331690
//others
16341691
callbk_update_data_entry_val: callbk_update_data_entry_val
16351692
}
@@ -2998,6 +3055,11 @@ var htmldom = (function () {
29983055
// Initialize touch-friendly controls
29993056
initTouchFriendlyControls();
30003057

3058+
// Load external data for visible results only after table is rendered
3059+
if (typeof search !== 'undefined' && search._load_ext_data_for_visible_results) {
3060+
search._load_ext_data_for_visible_results();
3061+
}
3062+
30013063
function __build_page(){
30023064
// create new tables
30033065
var new_tab_res = document.createElement("table");
@@ -3235,4 +3297,4 @@ var htmldom = (function () {
32353297
adv_placeholder: adv_placeholder,
32363298
initTouchFriendlyControls: initTouchFriendlyControls
32373299
}
3238-
})();
3300+
})();

0 commit comments

Comments
 (0)