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:
@@ -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());
|
||||
|
||||
@@ -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")));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user