1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-09-29 06:50:50 +00:00

Wikibase: Consolidate quantity output formatting in Wdata_prop_val_visitor and Wdata_visitor__html_wtr

This commit is contained in:
gnosygnu 2016-11-10 10:43:54 -05:00
parent 130aacc4d7
commit 0f8d0257c9
9 changed files with 74 additions and 83 deletions

View File

@ -66,11 +66,12 @@ public class Wdata_prop_val_visitor implements Wbase_claim_visitor {
if (lo.Eq(hi) && hi.Eq(val))// lo, hi, val are same; print val only; if (lo.Eq(hi) && hi.Eq(val))// lo, hi, val are same; print val only;
bfr.Add(lang.Num_mgr().Format_num_by_decimal(val)); // amount; EX: 1,234 bfr.Add(lang.Num_mgr().Format_num_by_decimal(val)); // amount; EX: 1,234
else { else {
Wdata_hwtr_msgs msgs = wdata_mgr.Hwtr_mgr().Msgs();
Decimal_adp lo_dif = val.Subtract(lo); Decimal_adp lo_dif = val.Subtract(lo);
Decimal_adp hi_dif = hi.Subtract(val); Decimal_adp hi_dif = hi.Subtract(val);
if (lo_dif.Eq(hi_dif)) { // lo_dif, hi_dif are same; print val±dif if (lo_dif.Eq(hi_dif)) { // lo_dif, hi_dif are same; print val±dif
bfr.Add(lang.Num_mgr().Format_num_by_decimal(val)); // amount; EX: 1,234 bfr.Add(lang.Num_mgr().Format_num_by_decimal(val)); // amount; EX: 1,234
bfr.Add(Bry__quantity_margin_of_error); // symbol: EX: ± bfr.Add(msgs.Sym_plusminus()); // symbol: EX: ±
bfr.Add(lang.Num_mgr().Format_num_by_decimal(lo_dif)); // amount; EX: 4 bfr.Add(lang.Num_mgr().Format_num_by_decimal(lo_dif)); // amount; EX: 4
} }
else { // lo_dif, hi_dif are diff; print lo - hi; this may not be what MW does else { // lo_dif, hi_dif are diff; print lo - hi; this may not be what MW does
@ -118,8 +119,8 @@ public class Wdata_prop_val_visitor implements Wbase_claim_visitor {
} }
return bfr == null ? bry : bfr.To_bry_and_clear(); return bfr == null ? bry : bfr.To_bry_and_clear();
} }
public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) {Write_geo(Bool_.N, bfr, wdata_mgr.Hwtr_mgr().Lbl_mgr(), itm.Lat(), itm.Lng(), itm.Alt(), itm.Prc(), itm.Glb());} public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) {Write_geo(Bool_.N, bfr, wdata_mgr.Hwtr_mgr().Lbl_mgr(), msgs, itm.Lat(), itm.Lng(), itm.Alt(), itm.Prc(), itm.Glb());}
public static void Write_geo(boolean wikidata_page, Bry_bfr bfr, Wdata_lbl_mgr lbl_mgr, byte[] lat, byte[] lng, byte[] alt, byte[] prc, byte[] glb) { public static void Write_geo(boolean wikidata_page, Bry_bfr bfr, Wdata_lbl_mgr lbl_mgr, Wdata_hwtr_msgs msgs, byte[] lat, byte[] lng, byte[] alt, byte[] prc, byte[] glb) {
// get precision // get precision
Decimal_adp precision_frac = Bry_.Eq(prc, Object_.Bry__null) ? Decimal_adp_.One : Decimal_adp_.parse(String_.new_a7(prc)); Decimal_adp precision_frac = Bry_.Eq(prc, Object_.Bry__null) ? Decimal_adp_.One : Decimal_adp_.parse(String_.new_a7(prc));
int precision_int = Math_.Log10(Decimal_adp_.One.Divide(precision_frac).To_int()); // convert precision to log10 integer; EX: .00027777 -> 3600 -> 3 int precision_int = Math_.Log10(Decimal_adp_.One.Divide(precision_frac).To_int()); // convert precision to log10 integer; EX: .00027777 -> 3600 -> 3
@ -143,5 +144,4 @@ public class Wdata_prop_val_visitor implements Wbase_claim_visitor {
private static final byte[] Wikidata_url = Bry_.new_a7("http://www.wikidata.org/entity/"); private static final byte[] Wikidata_url = Bry_.new_a7("http://www.wikidata.org/entity/");
public void Visit_system(Wbase_claim_value itm) {} public void Visit_system(Wbase_claim_value itm) {}
public static final byte[] Bry__quantity_margin_of_error = Bry_.new_u8("±");
} }

View File

@ -156,7 +156,7 @@ public class Wdata_prop_val_visitor_ {
case Wbase_claim_globecoordinate_.Tid__globe: glb = To_bry_by_str(kv.Val()); break; case Wbase_claim_globecoordinate_.Tid__globe: glb = To_bry_by_str(kv.Val()); break;
} }
} }
Wdata_prop_val_visitor.Write_geo(Bool_.Y, bfr, wdata_mgr.Hwtr_mgr().Lbl_mgr(), lat, lng, alt, prc, glb); Wdata_prop_val_visitor.Write_geo(Bool_.Y, bfr, wdata_mgr.Hwtr_mgr().Lbl_mgr(), wdata_mgr.Hwtr_mgr().Msgs(), lat, lng, alt, prc, glb);
} }
private static void Write_langtext(Bry_bfr bfr, byte[] page_url, Keyval[] kvs) { private static void Write_langtext(Bry_bfr bfr, byte[] page_url, Keyval[] kvs) {
byte[] text = null; byte[] text = null;

View File

@ -136,7 +136,7 @@ public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk {
Xoapi_toggle_mgr toggle_mgr = app.Api_root().Html().Page().Toggle_mgr(); Xoapi_toggle_mgr toggle_mgr = app.Api_root().Html().Page().Toggle_mgr();
Xoapi_wikibase wikibase_api = app.Api_root().Xtns().Wikibase(); Xoapi_wikibase wikibase_api = app.Api_root().Xtns().Wikibase();
hwtr_mgr = new Wdata_hwtr_mgr(); hwtr_mgr = new Wdata_hwtr_mgr();
hwtr_mgr.Init_by_ctor(wikibase_api, new Wdata_lbl_wkr_wiki(wikibase_api, this), gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, toggle_mgr, app.Usere().Wiki().Xwiki_mgr()); hwtr_mgr.Init_by_ctor(wikibase_api, this, new Wdata_lbl_wkr_wiki(wikibase_api, this), gplx.langs.htmls.encoders.Gfo_url_encoder_.Href, toggle_mgr, app.Usere().Wiki().Xwiki_mgr());
this.Hwtr_msgs_make(); this.Hwtr_msgs_make();
Gfo_evt_mgr_.Sub_same_many(app.Usere(), this, Xoue_user.Evt_lang_changed); Gfo_evt_mgr_.Sub_same_many(app.Usere(), this, Xoue_user.Evt_lang_changed);
} }
@ -146,7 +146,7 @@ public class Wdata_wiki_mgr implements Gfo_evt_itm, Gfo_invk {
Xowe_wiki cur_wiki = this.Wdata_wiki(); Xowe_wiki cur_wiki = this.Wdata_wiki();
cur_wiki.Xtn_mgr().Xtn_wikibase().Load_msgs(cur_wiki, new_lang); cur_wiki.Xtn_mgr().Xtn_wikibase().Load_msgs(cur_wiki, new_lang);
Wdata_hwtr_msgs hwtr_msgs = Wdata_hwtr_msgs.new_(cur_wiki.Msg_mgr()); Wdata_hwtr_msgs hwtr_msgs = Wdata_hwtr_msgs.new_(cur_wiki.Msg_mgr());
hwtr_mgr.Init_by_lang(hwtr_msgs); hwtr_mgr.Init_by_lang(new_lang, hwtr_msgs);
} }
public static void Write_json_as_html(Json_parser jdoc_parser, Bry_bfr bfr, byte[] data_raw) { public static void Write_json_as_html(Json_parser jdoc_parser, Bry_bfr bfr, byte[] data_raw) {
bfr.Add(Xoh_consts.Span_bgn_open).Add(Xoh_consts.Id_atr).Add(Html_json_id).Add(Xoh_consts.__end_quote); // <span id="xowa-wikidata-json"> bfr.Add(Xoh_consts.Span_bgn_open).Add(Xoh_consts.Id_atr).Add(Html_json_id).Add(Xoh_consts.__end_quote); // <span id="xowa-wikidata-json">

View File

@ -40,8 +40,9 @@ public class Wdata_wiki_mgr_fxt {
parser_fxt.Reset(); parser_fxt.Reset();
} }
return this; return this;
} private Xoae_app app; private Xowe_wiki wiki; private Wdata_wiki_mgr wdata_mgr; private Wdata_doc_bldr wdoc_bldr; } private Xoae_app app; private Xowe_wiki wiki; private Wdata_doc_bldr wdoc_bldr;
public Xoae_app App() {return app;} public Xoae_app App() {return app;}
public Wdata_wiki_mgr Wdata_mgr() {return wdata_mgr;} private Wdata_wiki_mgr wdata_mgr;
public Xop_fxt Parser_fxt() {return parser_fxt;} private Xop_fxt parser_fxt; public Xop_fxt Parser_fxt() {return parser_fxt;} private Xop_fxt parser_fxt;
public void Init_lang_fallbacks(String... fallbacks) { public void Init_lang_fallbacks(String... fallbacks) {
wiki.Lang().Fallback_bry_(Bry_.new_a7(String_.Concat_with_str(",", fallbacks))); wiki.Lang().Fallback_bry_(Bry_.new_a7(String_.Concat_with_str(",", fallbacks)));

View File

@ -17,17 +17,21 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*;
import gplx.core.brys.fmtrs.*; import gplx.core.brys.fmtrs.*;
import gplx.xowa.langs.*;
import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*;
import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.apps.apis.xowa.html.*;
class Wdata_fmtr__claim_grp implements gplx.core.brys.Bfr_arg { class Wdata_fmtr__claim_grp implements gplx.core.brys.Bfr_arg {
private Wdata_fmtr__claim_tbl fmtr_tbl = new Wdata_fmtr__claim_tbl(); private boolean is_empty; private Wdata_fmtr__claim_tbl fmtr_tbl = new Wdata_fmtr__claim_tbl(); private boolean is_empty;
private Xoapi_toggle_itm toggle_itm; private Xoapi_toggle_itm toggle_itm;
private Wdata_toc_data toc_data; private Wdata_toc_data toc_data;
public void Init_by_ctor(Wdata_toc_data toc_data, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_mgr) {this.toc_data = toc_data; this.toggle_itm = toggle_mgr.Get_or_new("wikidatawiki-claim"); fmtr_tbl.Init_by_ctor(lbl_mgr);} public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_toc_data toc_data, Xoapi_toggle_mgr toggle_mgr, Wdata_lbl_mgr lbl_mgr) {
public void Init_by_lang(Wdata_hwtr_msgs msgs) { this.toc_data = toc_data; this.toggle_itm = toggle_mgr.Get_or_new("wikidatawiki-claim");
fmtr_tbl.Init_by_ctor(wdata_mgr, lbl_mgr);
}
public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
toc_data.Orig_(msgs.Claim_tbl_hdr()); toc_data.Orig_(msgs.Claim_tbl_hdr());
toggle_itm.Init_msgs(msgs.Toggle_title_y(), msgs.Toggle_title_n()); toggle_itm.Init_msgs(msgs.Toggle_title_y(), msgs.Toggle_title_n());
fmtr_tbl.Init_by_lang(msgs); fmtr_tbl.Init_by_lang(lang, msgs);
} }
public void Init_by_wdoc(byte[] ttl, Ordered_hash list) { public void Init_by_wdoc(byte[] ttl, Ordered_hash list) {
int list_count = list.Count(); int list_count = list.Count();
@ -53,9 +57,9 @@ class Wdata_fmtr__claim_grp implements gplx.core.brys.Bfr_arg {
class Wdata_fmtr__claim_tbl implements gplx.core.brys.Bfr_arg { class Wdata_fmtr__claim_tbl implements gplx.core.brys.Bfr_arg {
private Wdata_fmtr__claim_row fmtr_row = new Wdata_fmtr__claim_row(); private Wdata_lbl_mgr lbl_mgr; private Wdata_fmtr__claim_row fmtr_row = new Wdata_fmtr__claim_row(); private Wdata_lbl_mgr lbl_mgr;
private Ordered_hash list; private byte[] ttl; private Ordered_hash list; private byte[] ttl;
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr; fmtr_row.Init_by_ctor(lbl_mgr);} public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr; fmtr_row.Init_by_ctor(wdata_mgr, lbl_mgr);}
public void Init_by_lang(Wdata_hwtr_msgs msgs) { public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
fmtr_row.Init_by_lang(msgs); fmtr_row.Init_by_lang(lang, msgs);
} }
public void Init_by_wdoc(byte[] ttl, Ordered_hash list) { public void Init_by_wdoc(byte[] ttl, Ordered_hash list) {
this.list = list; this.list = list;
@ -88,24 +92,27 @@ class Wdata_fmtr__claim_row implements gplx.core.brys.Bfr_arg {
private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr(); private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr();
private Wdata_fmtr__qual_tbl fmtr_qual = new Wdata_fmtr__qual_tbl(); private Wdata_fmtr__qual_tbl fmtr_qual = new Wdata_fmtr__qual_tbl();
private Wdata_fmtr__ref_tbl fmtr_ref = new Wdata_fmtr__ref_tbl(); private Wdata_fmtr__ref_tbl fmtr_ref = new Wdata_fmtr__ref_tbl();
private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs; private Wdata_wiki_mgr wdata_mgr; private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs;
private Xol_lang_itm lang;
private Wbase_claim_grp claim_grp; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private Wbase_claim_grp claim_grp; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) { public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {
this.lbl_mgr = lbl_mgr; this.lbl_mgr = lbl_mgr;
fmtr_qual.Init_by_ctor(lbl_mgr); this.wdata_mgr = wdata_mgr;
fmtr_ref.Init_by_ctor(lbl_mgr); fmtr_qual.Init_by_ctor(wdata_mgr, lbl_mgr);
fmtr_ref.Init_by_ctor(wdata_mgr, lbl_mgr);
} }
public void Init_by_lang(Wdata_hwtr_msgs msgs) { public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
this.lang = lang;
this.msgs = msgs; this.msgs = msgs;
fmtr_qual.Init_by_lang(msgs); fmtr_qual.Init_by_lang(lang, msgs);
fmtr_ref.Init_by_lang(msgs); fmtr_ref.Init_by_lang(lang, msgs);
} }
public void Init_by_grp(byte[] ttl, Wbase_claim_grp claim_grp) { public void Init_by_grp(byte[] ttl, Wbase_claim_grp claim_grp) {
this.ttl = ttl; this.claim_grp = claim_grp; this.ttl = ttl; this.claim_grp = claim_grp;
} }
public void Bfr_arg__add(Bry_bfr bfr) { public void Bfr_arg__add(Bry_bfr bfr) {
int len = claim_grp.Len(); int len = claim_grp.Len();
claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr); claim_html_wtr.Init(tmp_bfr, wdata_mgr, msgs, lbl_mgr, lang, ttl);
for (int i = 0; i < len; ++i) { for (int i = 0; i < len; ++i) {
Wbase_claim_base itm = claim_grp.Get_at(i); Wbase_claim_base itm = claim_grp.Get_at(i);
itm.Welcome(claim_html_wtr); itm.Welcome(claim_html_wtr);
@ -147,9 +154,9 @@ class Wdata_fmtr__claim_row implements gplx.core.brys.Bfr_arg {
} }
class Wdata_fmtr__qual_tbl implements gplx.core.brys.Bfr_arg { class Wdata_fmtr__qual_tbl implements gplx.core.brys.Bfr_arg {
private Wdata_fmtr__qual_row fmtr_row = new Wdata_fmtr__qual_row(); private Wbase_claim_base claim; private Wdata_fmtr__qual_row fmtr_row = new Wdata_fmtr__qual_row(); private Wbase_claim_base claim;
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(lbl_mgr);} public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(wdata_mgr, lbl_mgr);}
public void Init_by_lang(Wdata_hwtr_msgs msgs) { public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
fmtr_row.Init_by_lang(msgs); fmtr_row.Init_by_lang(lang, msgs);
} }
public void Init_by_claim(byte[] ttl, Wbase_claim_base claim) { public void Init_by_claim(byte[] ttl, Wbase_claim_base claim) {
this.claim = claim; this.claim = claim;
@ -169,14 +176,15 @@ class Wdata_fmtr__qual_tbl implements gplx.core.brys.Bfr_arg {
} }
class Wdata_fmtr__qual_row implements gplx.core.brys.Bfr_arg { class Wdata_fmtr__qual_row implements gplx.core.brys.Bfr_arg {
private byte[] ttl; private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr(); private byte[] ttl; private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr();
private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs; private Wdata_wiki_mgr wdata_mgr; private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs;
private Xol_lang_itm lang;
private Wbase_claim_grp_list quals; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private Wbase_claim_grp_list quals; private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr;} public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {this.wdata_mgr = wdata_mgr; this.lbl_mgr = lbl_mgr;}
public void Init_by_lang(Wdata_hwtr_msgs msgs) {this.msgs = msgs;} public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {this.lang = lang; this.msgs = msgs;}
public void Init_by_grp(byte[] ttl, Wbase_claim_grp_list quals) {this.ttl = ttl; this.quals = quals;} public void Init_by_grp(byte[] ttl, Wbase_claim_grp_list quals) {this.ttl = ttl; this.quals = quals;}
public void Bfr_arg__add(Bry_bfr bfr) { public void Bfr_arg__add(Bry_bfr bfr) {
int len = quals.Len(); int len = quals.Len();
claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr); claim_html_wtr.Init(tmp_bfr, wdata_mgr, msgs, lbl_mgr, lang, ttl);
for (int i = 0; i < len; ++i) { for (int i = 0; i < len; ++i) {
Wbase_claim_grp grp = quals.Get_at(i); Wbase_claim_grp grp = quals.Get_at(i);
int grp_len = grp.Len(); int grp_len = grp.Len();
@ -211,9 +219,9 @@ class Wdata_fmtr__qual_row implements gplx.core.brys.Bfr_arg {
} }
class Wdata_fmtr__ref_tbl implements gplx.core.brys.Bfr_arg { class Wdata_fmtr__ref_tbl implements gplx.core.brys.Bfr_arg {
private Wdata_fmtr__ref_row fmtr_row = new Wdata_fmtr__ref_row(); private Wbase_claim_base claim; private Wdata_fmtr__ref_row fmtr_row = new Wdata_fmtr__ref_row(); private Wbase_claim_base claim;
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(lbl_mgr);} public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {fmtr_row.Init_by_ctor(wdata_mgr, lbl_mgr);}
public void Init_by_lang(Wdata_hwtr_msgs msgs) { public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
fmtr_row.Init_by_lang(msgs); fmtr_row.Init_by_lang(lang, msgs);
} }
public void Init_by_claim(byte[] ttl, Wbase_claim_base claim) { public void Init_by_claim(byte[] ttl, Wbase_claim_base claim) {
this.claim = claim; this.claim = claim;
@ -243,15 +251,16 @@ class Wdata_fmtr__ref_tbl implements gplx.core.brys.Bfr_arg {
} }
class Wdata_fmtr__ref_row implements gplx.core.brys.Bfr_arg { class Wdata_fmtr__ref_row implements gplx.core.brys.Bfr_arg {
private byte[] ttl; private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr(); private byte[] ttl; private Wdata_visitor__html_wtr claim_html_wtr = new Wdata_visitor__html_wtr();
private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs; private Wdata_wiki_mgr wdata_mgr; private Wdata_lbl_mgr lbl_mgr; private Wdata_hwtr_msgs msgs;
private Xol_lang_itm lang;
private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255); private Bry_bfr tmp_bfr = Bry_bfr_.Reset(255);
private Wbase_references_grp[] ref_grps; private Wbase_references_grp[] ref_grps;
public void Init_by_ctor(Wdata_lbl_mgr lbl_mgr) {this.lbl_mgr = lbl_mgr;} public void Init_by_ctor(Wdata_wiki_mgr wdata_mgr, Wdata_lbl_mgr lbl_mgr) {this.wdata_mgr = wdata_mgr; this.lbl_mgr = lbl_mgr;}
public void Init_by_lang(Wdata_hwtr_msgs msgs) {this.msgs = msgs;} public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {this.lang = lang; this.msgs = msgs;}
public void Init_by_grp(byte[] ttl, Wbase_references_grp[] ref_grps) {this.ttl = ttl; this.ref_grps = ref_grps;} public void Init_by_grp(byte[] ttl, Wbase_references_grp[] ref_grps) {this.ttl = ttl; this.ref_grps = ref_grps;}
public void Bfr_arg__add(Bry_bfr bfr) { public void Bfr_arg__add(Bry_bfr bfr) {
int len = ref_grps.length; int len = ref_grps.length;
claim_html_wtr.Init(ttl, tmp_bfr, msgs, lbl_mgr); claim_html_wtr.Init(tmp_bfr, wdata_mgr, msgs, lbl_mgr, lang, ttl);
for (int i = 0; i < len; ++i) { for (int i = 0; i < len; ++i) {
Wbase_references_grp grp_itm = ref_grps[i]; Wbase_references_grp grp_itm = ref_grps[i];
Wbase_claim_grp_list grp = grp_itm.References(); Wbase_claim_grp_list grp = grp_itm.References();

View File

@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*;
import gplx.core.brys.fmtrs.*; import gplx.core.brys.fmtrs.*;
import gplx.langs.htmls.encoders.*; import gplx.langs.htmls.encoders.*;
import gplx.xowa.langs.*;
import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apps.apis.xowa.xtns.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.apps.apis.xowa.html.*; import gplx.xowa.wikis.xwikis.*; import gplx.xowa.apps.apis.xowa.xtns.*;
public class Wdata_hwtr_mgr { public class Wdata_hwtr_mgr {
private final Bry_bfr bfr = Bry_bfr_.Reset(Io_mgr.Len_mb); private final Bry_bfr bfr = Bry_bfr_.Reset(Io_mgr.Len_mb);
@ -33,10 +34,10 @@ public class Wdata_hwtr_mgr {
public Bry_fmtr Fmtr_main() {return fmtr_main;} private final Bry_fmtr fmtr_main = Bry_fmtr.new_("~{oview}~{toc}~{claims}~{links}~{labels}~{descriptions}~{aliases}~{json}", "oview", "toc", "claims", "links", "labels", "descriptions", "aliases", "json"); public Bry_fmtr Fmtr_main() {return fmtr_main;} private final Bry_fmtr fmtr_main = Bry_fmtr.new_("~{oview}~{toc}~{claims}~{links}~{labels}~{descriptions}~{aliases}~{json}", "oview", "toc", "claims", "links", "labels", "descriptions", "aliases", "json");
public Wdata_hwtr_msgs Msgs() {return msgs;} private Wdata_hwtr_msgs msgs; public Wdata_hwtr_msgs Msgs() {return msgs;} private Wdata_hwtr_msgs msgs;
public Wdata_lbl_mgr Lbl_mgr() {return lbl_mgr;} private final Wdata_lbl_mgr lbl_mgr = new Wdata_lbl_mgr(); public Wdata_lbl_mgr Lbl_mgr() {return lbl_mgr;} private final Wdata_lbl_mgr lbl_mgr = new Wdata_lbl_mgr();
public void Init_by_ctor(Xoapi_wikibase wikibase_api, Wdata_lbl_wkr lbl_wkr, Gfo_url_encoder href_encoder, Xoapi_toggle_mgr toggle_mgr, Xow_xwiki_mgr xwiki_mgr) { public void Init_by_ctor(Xoapi_wikibase wikibase_api, Wdata_wiki_mgr wdata_mgr, Wdata_lbl_wkr lbl_wkr, Gfo_url_encoder href_encoder, Xoapi_toggle_mgr toggle_mgr, Xow_xwiki_mgr xwiki_mgr) {
lbl_mgr.Wkr_(lbl_wkr); lbl_mgr.Wkr_(lbl_wkr);
fmtr_oview.Init_by_ctor(wikibase_api, href_encoder); fmtr_oview.Init_by_ctor(wikibase_api, href_encoder);
fmtr_claim.Init_by_ctor(new Wdata_toc_data(fmtr_toc, href_encoder), toggle_mgr, lbl_mgr); fmtr_claim.Init_by_ctor(wdata_mgr, new Wdata_toc_data(fmtr_toc, href_encoder), toggle_mgr, lbl_mgr);
fmtr_slink.Init_by_ctor(lang_sorter, toggle_mgr, lbl_mgr, href_encoder, fmtr_toc, xwiki_mgr); fmtr_slink.Init_by_ctor(lang_sorter, toggle_mgr, lbl_mgr, href_encoder, fmtr_toc, xwiki_mgr);
fmtr_label.Init_by_ctor(new Wdata_toc_data(fmtr_toc, href_encoder), lang_sorter, toggle_mgr, "wikidatawiki-label", new Wdata_fmtr__langtext_row_base()); fmtr_label.Init_by_ctor(new Wdata_toc_data(fmtr_toc, href_encoder), lang_sorter, toggle_mgr, "wikidatawiki-label", new Wdata_fmtr__langtext_row_base());
fmtr_descr.Init_by_ctor(new Wdata_toc_data(fmtr_toc, href_encoder), lang_sorter, toggle_mgr, "wikidatawiki-descr", new Wdata_fmtr__langtext_row_base()); fmtr_descr.Init_by_ctor(new Wdata_toc_data(fmtr_toc, href_encoder), lang_sorter, toggle_mgr, "wikidatawiki-descr", new Wdata_fmtr__langtext_row_base());
@ -45,11 +46,11 @@ public class Wdata_hwtr_mgr {
lang_sorter.Langs_(wikibase_api.Sort_langs()); lang_sorter.Langs_(wikibase_api.Sort_langs());
Gfo_evt_mgr_.Sub_same_many(wikibase_api, lang_sorter, Xoapi_wikibase.Evt_sort_langs_changed); Gfo_evt_mgr_.Sub_same_many(wikibase_api, lang_sorter, Xoapi_wikibase.Evt_sort_langs_changed);
} }
public void Init_by_lang(Wdata_hwtr_msgs msgs) { public void Init_by_lang(Xol_lang_itm lang, Wdata_hwtr_msgs msgs) {
this.msgs = msgs; this.msgs = msgs;
fmtr_toc.Init_by_lang(msgs); fmtr_toc.Init_by_lang(msgs);
fmtr_oview.Init_by_lang(lang_sorter.Langs()[0], msgs); fmtr_oview.Init_by_lang(lang_sorter.Langs()[0], msgs);
fmtr_claim.Init_by_lang(msgs); fmtr_claim.Init_by_lang(lang, msgs);
fmtr_slink.Init_by_lang(msgs); fmtr_slink.Init_by_lang(msgs);
fmtr_label.Init_by_lang(msgs, msgs.Label_tbl_hdr(), msgs.Label_col_hdr()); fmtr_label.Init_by_lang(msgs, msgs.Label_tbl_hdr(), msgs.Label_col_hdr());
fmtr_descr.Init_by_lang(msgs, msgs.Descr_tbl_hdr(), msgs.Descr_col_hdr()); fmtr_descr.Init_by_lang(msgs, msgs.Descr_tbl_hdr(), msgs.Descr_col_hdr());

View File

@ -291,8 +291,8 @@ class Wdata_hwtr_mgr_fxt {
Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr(); Xoapi_toggle_mgr toggle_mgr = new Xoapi_toggle_mgr();
wdata_fxt.Init(); wdata_fxt.Init();
toggle_mgr.Ctor_by_app(wdata_fxt.App()); // must init, else null error toggle_mgr.Ctor_by_app(wdata_fxt.App()); // must init, else null error
doc_hwtr.Init_by_ctor(new Xoapi_wikibase(), new Wdata_lbl_wkr__test(resolved_ttls), Gfo_url_encoder_.Href, toggle_mgr, new Xow_xwiki_mgr(wdata_fxt.Wiki())); doc_hwtr.Init_by_ctor(new Xoapi_wikibase(), wdata_fxt.Wdata_mgr(), new Wdata_lbl_wkr__test(resolved_ttls), Gfo_url_encoder_.Href, toggle_mgr, new Xow_xwiki_mgr(wdata_fxt.Wiki()));
doc_hwtr.Init_by_lang(msgs); doc_hwtr.Init_by_lang(wdata_fxt.Wiki().Lang(), msgs);
} }
resolved_ttls.Clear(); resolved_ttls.Clear();
doc_hwtr.Lbl_mgr().Clear(); doc_hwtr.Lbl_mgr().Clear();
@ -308,7 +308,7 @@ class Wdata_hwtr_mgr_fxt {
public void Test_claim_val(Wbase_claim_base claim, String expd) { public void Test_claim_val(Wbase_claim_base claim, String expd) {
doc_hwtr.Init_by_wdoc(wdoc_bldr.Add_claims(claim).Xto_wdoc()); doc_hwtr.Init_by_wdoc(wdoc_bldr.Add_claims(claim).Xto_wdoc());
Bry_bfr tmp_bfr = Bry_bfr_.New(); Bry_bfr tmp_bfr = Bry_bfr_.New();
Wdata_visitor__html_wtr html_wtr = new Wdata_visitor__html_wtr().Init(Bry_.Empty, tmp_bfr, doc_hwtr.Msgs(), doc_hwtr.Lbl_mgr()); Wdata_visitor__html_wtr html_wtr = new Wdata_visitor__html_wtr().Init(tmp_bfr, wdata_fxt.Wdata_mgr(), doc_hwtr.Msgs(), doc_hwtr.Lbl_mgr(), wdata_fxt.Wiki().Lang(), Bry_.Empty);
claim.Welcome(html_wtr); claim.Welcome(html_wtr);
byte[] actl = tmp_bfr.To_bry_and_clear(); byte[] actl = tmp_bfr.To_bry_and_clear();
Tfds.Eq(expd, String_.new_u8(actl)); Tfds.Eq(expd, String_.new_u8(actl));

View File

@ -17,12 +17,16 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*; package gplx.xowa.xtns.wbases.hwtrs; import gplx.*; import gplx.xowa.*; import gplx.xowa.xtns.*; import gplx.xowa.xtns.wbases.*;
import gplx.core.brys.fmtrs.*; import gplx.core.brys.fmtrs.*;
import gplx.xowa.langs.*;
import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*; import gplx.xowa.xtns.wbases.core.*; import gplx.xowa.xtns.wbases.claims.*; import gplx.xowa.xtns.wbases.claims.enums.*; import gplx.xowa.xtns.wbases.claims.itms.*;
class Wdata_visitor__html_wtr implements Wbase_claim_visitor { class Wdata_visitor__html_wtr implements Wbase_claim_visitor {
private byte[] ttl; private Bry_bfr tmp_bfr; private Wdata_hwtr_msgs msgs; private Wdata_lbl_mgr lbl_mgr; private Wdata_wiki_mgr wdata_mgr; private Wdata_hwtr_msgs msgs; private Wdata_lbl_mgr lbl_mgr;
private Xol_lang_itm lang;
private byte[] ttl; private Bry_bfr tmp_bfr;
private final Bry_fmtr tmp_time_fmtr = Bry_fmtr.new_(); private final Bry_bfr tmp_time_bfr = Bry_bfr_.New_w_size(32); private final Bry_fmtr tmp_time_fmtr = Bry_fmtr.new_(); private final Bry_bfr tmp_time_bfr = Bry_bfr_.New_w_size(32);
public Wdata_visitor__html_wtr Init(byte[] ttl, Bry_bfr tmp_bfr, Wdata_hwtr_msgs msgs, Wdata_lbl_mgr lbl_mgr) { public Wdata_visitor__html_wtr Init(Bry_bfr tmp_bfr, Wdata_wiki_mgr wdata_mgr, Wdata_hwtr_msgs msgs, Wdata_lbl_mgr lbl_mgr, Xol_lang_itm lang, byte[] ttl) {
this.ttl = ttl; this.tmp_bfr = tmp_bfr; this.msgs = msgs; this.lbl_mgr = lbl_mgr; this.wdata_mgr = wdata_mgr; this.msgs = msgs; this.lbl_mgr = lbl_mgr; this.lang = lang;
this.tmp_bfr = tmp_bfr; this.ttl = ttl;
return this; return this;
} }
public void Visit_str(Wbase_claim_string itm) { public void Visit_str(Wbase_claim_string itm) {
@ -42,37 +46,13 @@ class Wdata_visitor__html_wtr implements Wbase_claim_visitor {
tmp_bfr.Add_byte(Byte_ascii.Space).Add_byte(Byte_ascii.Brack_bgn).Add(itm.Lang()).Add_byte(Byte_ascii.Brack_end); tmp_bfr.Add_byte(Byte_ascii.Space).Add_byte(Byte_ascii.Brack_bgn).Add(itm.Lang()).Add_byte(Byte_ascii.Brack_end);
} }
public void Visit_quantity(Wbase_claim_quantity itm) { public void Visit_quantity(Wbase_claim_quantity itm) {
try { Wdata_prop_val_visitor.Write_quantity(tmp_bfr, wdata_mgr, lang, itm.Amount(), itm.Lbound(), itm.Ubound(), itm.Unit());
Decimal_adp val = itm.Amount_as_num();
Decimal_adp hi = itm.Ubound_as_num();
Decimal_adp lo = itm.Lbound_as_num();
Decimal_adp hi_diff = hi.Subtract(val);
Decimal_adp lo_diff = val.Subtract(lo);
float hi_diff_val = (float)hi_diff.To_double();
float lo_diff_val = (float)lo_diff.To_double();
tmp_bfr.Add(itm.Amount()).Add_byte_space();
if (hi_diff.Eq(lo_diff)) { // delta is same in both directions; EX: val=50 hi=60 lo=40 -> hi_diff == lo_diff == 10
if (hi_diff_val != 0) // skip if 0
tmp_bfr.Add(msgs.Sym_plusminus()).Add_str_a7(hi_diff.To_str());
} }
else { // delta is diff in both directions; EX: val=50 hi=60 lo=30 -> hi_diff == 10, lo_diff == 20
if (hi_diff_val != 0) // skip if 0
tmp_bfr.Add(msgs.Sym_plus()).Add_str_a7(hi_diff.To_str());
if (lo_diff_val != 0) { // skip if 0
if (hi_diff_val != 0) tmp_bfr.Add(Time_plus_minus_spr);
tmp_bfr.Add(msgs.Sym_minus()).Add_str_a7(lo_diff.To_str());
}
}
byte[] unit = itm.Unit();
if (!Bry_.Eq(unit, Wbase_claim_quantity.Unit_1))
tmp_bfr.Add_byte_space().Add(unit);
} catch (Exception e) {
Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to write quantity; ttl=~{0} pid=~{1} err=~{2}", ttl, itm.Pid(), Err_.Message_gplx_full(e));
}
} private static final byte[] Time_plus_minus_spr = Bry_.new_a7(" / ");
public void Visit_time(Wbase_claim_time itm) {itm.Write_to_bfr(tmp_bfr, tmp_time_bfr, tmp_time_fmtr, msgs, ttl);}
public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) { public void Visit_globecoordinate(Wbase_claim_globecoordinate itm) {
Wdata_prop_val_visitor.Write_geo(Bool_.Y, tmp_bfr, lbl_mgr, itm.Lat(), itm.Lng(), itm.Alt(), itm.Prc(), itm.Glb()); Wdata_prop_val_visitor.Write_geo(Bool_.Y, tmp_bfr, lbl_mgr, msgs, itm.Lat(), itm.Lng(), itm.Alt(), itm.Prc(), itm.Glb());
}
public void Visit_time(Wbase_claim_time itm) {
itm.Write_to_bfr(tmp_bfr, tmp_time_bfr, tmp_time_fmtr, msgs, ttl);
} }
public void Visit_system(Wbase_claim_value itm) { public void Visit_system(Wbase_claim_value itm) {
switch (itm.Snak_tid()) { switch (itm.Snak_tid()) {

View File

@ -37,22 +37,22 @@ public class Wdata_visitor__html_wtr_tst {
@Test public void Quantity_ubound_lbound() { @Test public void Quantity_ubound_lbound() {
fxt fxt
.Test_claim_val .Test_claim_val
( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "units", "60", "30") ( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "", "60", "30")
, "50 +10 / -20 units" , "30-60"
); );
} }
@Test public void Quantity_same() { @Test public void Quantity_same() {
fxt fxt
.Test_claim_val .Test_claim_val
( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "units", "60", "40") ( fxt.Wdata_fxt().Make_claim_quantity(1, "50", "1", "60", "40")
, "50 ±10 units" , "50±10"
); );
} }
@Test public void Quantity_frac() { @Test public void Quantity_frac() {
fxt fxt
.Test_claim_val .Test_claim_val
( fxt.Wdata_fxt().Make_claim_quantity(1, "+0.1234", "units", "+0.1235", "+0.1233") ( fxt.Wdata_fxt().Make_claim_quantity(1, "+0.1234", "1", "+0.1235", "+0.1233")
, "+0.1234 ±0.0001 units" , "0.1234±0.0001"
); );
} }
@Test public void Entity_qid() { @Test public void Entity_qid() {