1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2026-03-02 03:49:30 +00:00

Graph: Support version 2 graphs

This commit is contained in:
gnosygnu
2018-03-03 08:52:14 -05:00
parent 54d74b0acd
commit 93bac15244
23 changed files with 240 additions and 53 deletions

View File

@@ -43,7 +43,8 @@ public class Xoh_head_itm__globals extends Xoh_head_itm__base {
wtr.Write_js_alias_var (Page__alias, Page__key);
wtr.Write_js_alias_kv (Page__alias, Key__wiki , page.Wiki().Domain_bry());
wtr.Write_js_alias_kv (Page__alias, Key__ttl , page.Ttl().Page_db());
} private static final byte[] Key__app_mode = Bry_.new_a7("xowa.app.mode"), Page__alias = Bry_.new_a7("x_p"), Page__key = Bry_.new_a7("xowa.page"), Key__wiki = Bry_.new_a7("wiki"), Key__ttl = Bry_.new_a7("ttl");
wtr.Write_js_alias_kv (Page__alias, Key__guid , Bry_.new_a7(page.Page_guid().To_str()));
} private static final byte[] Key__app_mode = Bry_.new_a7("xowa.app.mode"), Page__alias = Bry_.new_a7("x_p"), Page__key = Bry_.new_a7("xowa.page"), Key__wiki = Bry_.new_a7("wiki"), Key__ttl = Bry_.new_a7("ttl"), Key__guid = Bry_.new_a7("guid");
@Override public void Write_js_head_global(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) {
wtr.Write_js_global_ini_atr_val(Key_mode_is_gui , app.Mode().Tid_is_gui());
wtr.Write_js_global_ini_atr_val(Key_mode_is_http , app.Mode().Tid_is_http());

View File

@@ -15,28 +15,59 @@ Apache License: https://github.com/gnosygnu/xowa/blob/master/LICENSE-APACHE2.txt
*/
package gplx.xowa.htmls.heads; import gplx.*; import gplx.xowa.*; import gplx.xowa.htmls.*;
import gplx.xowa.guis.*;
import gplx.xowa.wikis.pages.tags.*;
public class Xoh_head_itm__graph extends Xoh_head_itm__base {
private boolean version_is_1, version_is_2;
@Override public byte[] Key() {return Xoh_head_itm_.Key__graph;}
@Override public int Flags() {return Flag__js_include | Flag__js_window_onload;}
public void Version_(Xoa_url url, int v) {
if (v == 1)
version_is_1 = true;
else
version_is_2 = true;
if (version_is_1 && version_is_2)
Gfo_usr_dlg_.Instance.Warn_many("", "", "page should not have both version 1 and version 2 graphs; page=~{0}", url.To_bry_full_wo_qargs());
}
@Override public void Write_js_include(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) {
if (Url__ary == null) {
Io_url lib_dir = app.Fsys_mgr().Bin_xtns_dir().GenSubDir_nest("Graph", "lib");
Url__ary = new byte[][]
{ app.Fsys_mgr().Bin_xowa_dir().GenSubFil_nest("html", "res", "lib", "jquery", "jquery-1.11.3.min.js").To_http_file_bry()
, lib_dir.GenSubFil("d3.js").To_http_file_bry()
, lib_dir.GenSubFil("d3.layout.cloud.js").To_http_file_bry()
, lib_dir.GenSubFil("topojson.js").To_http_file_bry()
, lib_dir.GenSubFil("vega.js").To_http_file_bry()
, app.Fsys_mgr().Bin_xtns_dir().GenSubFil_nest("Graph", "js", "graph.js").To_http_file_bry()
};
// collect tags
Io_url http_root = app.Fsys_mgr().Http_root();
Xopg_tag_mgr tags = new Xopg_tag_mgr(true);
Xopg_tag_wtr_.Add__jquery(tags, http_root);
Xopg_tag_wtr_.Add__xologger(tags, http_root);
Xopg_tag_wtr_.Add__xolog(tags, http_root, false);
Xopg_tag_wtr_.Add__xoajax(tags, http_root, app);
Add__xograph(tags, http_root, page, version_is_1);
// write tags
int len = tags.Len();
for (int i = 0; i < len; i++) {
Xopg_tag_itm tag = tags.Get_at(i);
Io_url tag_url = Io_url_.New__http_or_fail(tag.Href());
wtr.Write_js_include(tag_url);
}
for (int i = 0; i < Url__ary_len; ++i)
wtr.Write_js_include(Url__ary[i]);
}
@Override public void Write_js_window_onload(Xoae_app app, Xowe_wiki wiki, Xoae_page page, Xoh_head_wtr wtr) {
wtr.Write_js_line(Js__graph_exec);
}
private static final int Url__ary_len = 6;
private static byte[][] Url__ary;
private static final byte[] Js__graph_exec = Bry_.new_a7("xtn__graph__exec();");
private static final byte[] Js__graph_exec = Bry_.new_a7("xo.xtns.graph.exec();");
private static void Add__xograph(Xopg_tag_mgr tags, Io_url http_root, Xoae_page page, boolean version_is_1) {
Io_url base_dir = http_root.GenSubDir_nest("bin", "any", "xowa", "html", "res", "src", "xowa", "core");
tags.Add(Xopg_tag_itm.New_js_file(base_dir.GenSubFil_nest("Html_.js")));
// REF: /graph/extension.json/ext.graph.vega1|ext.graph.vega2
Io_url xtn_dir = http_root.GenSubDir_nest("bin", "any", "xowa", "xtns", "Graph");
tags.Add(Xopg_tag_itm.New_js_file(xtn_dir.GenSubFil_nest("lib", "d3.js")));
// tags.Add(Xopg_tag_itm.New_js_file(xtn_dir.GenSubFil_nest("lib", "d3-global.js"))); // XOWA: unused b/c module is not available
if (version_is_1) {
tags.Add(Xopg_tag_itm.New_js_file(xtn_dir.GenSubFil_nest("lib", "vega1", "vega.js")));
}
else {
tags.Add(Xopg_tag_itm.New_js_file(xtn_dir.GenSubFil_nest("lib", "d3.layout.cloud.js")));
tags.Add(Xopg_tag_itm.New_js_file(xtn_dir.GenSubFil_nest("lib", "vega2", "vega.js")));
tags.Add(Xopg_tag_itm.New_js_file(xtn_dir.GenSubFil_nest("lib", "graph2.compiled.js")));
// tags.Add(Xopg_tag_itm.New_js_file(xtn_dir.GenSubFil_nest("modules", "graph2.js")));
}
tags.Add(Xopg_tag_itm.New_js_file(xtn_dir.GenSubFil_nest("Xograph.js")));
}
}

View File

@@ -75,6 +75,7 @@ public class Xoh_head_mgr_tst {
, " var x_p = xowa.page;"
, " x_p.wiki = 'en.wikipedia.org';"
, " x_p.ttl = 'Test_page';"
, " x_p.guid = '00000000-0000-0000-0000-000000000000';"
, " </script>"
));
fxt.Init_msg(Xol_msg_itm_.Id_dte_month_name_january, "January" ); // set it back
@@ -113,6 +114,7 @@ public class Xoh_head_mgr_tst {
, " var x_p = xowa.page;"
, " x_p.wiki = 'en.wikipedia.org';"
, " x_p.ttl = 'Test_page';"
, " x_p.guid = '00000000-0000-0000-0000-000000000000';"
, " </script>"
));
}
@@ -137,6 +139,7 @@ class Xoh_head_mgr_fxt {
msg_itm.Atrs_set(Bry_.new_a7(val), false, false);
}
public void Test_write(String expd) {
fxt.Page().Page_guid_empty_();
mgr.Write(bfr, fxt.App(), wiki, fxt.Page());
Tfds.Eq_str_lines(expd, bfr.To_str_and_clear());
}