| 1 | sbool ai_html_wordThoughts_showMem = true; | 
| 2 | static int ai_html_wordThoughts_searchMax = 100; | 
| 3 | static int ai_html_wordThoughts_nodesMax_default = 1000; | 
| 4 | static new ThreadLocal<Int> ai_html_wordThoughts_nodesMax; | 
| 5 | |
| 6 | static S ai_html_wordThoughts(S selectedWord) {
 | 
| 7 | ret ai_html_wordThoughts(ll(selectedWord)); | 
| 8 | } | 
| 9 | |
| 10 | static S ai_html_wordThoughts(L<S> selectedWords) {
 | 
| 11 | lock aiLock(); | 
| 12 | int shrt = 80; // max length of entries shown | 
| 13 | Int oldShrt = setThreadLocal(ai_html_shortenTextForDisplay_length, shrt); | 
| 14 |   try {
 | 
| 15 | S t = ai_html_triangle(); | 
| 16 | S selectedWord = first(selectedWords); | 
| 17 | S title = h3(htmlencode(selectedWord)); | 
| 18 | |
| 19 | new Matches m; | 
| 20 |     if (swic_trim(selectedWord, "[search]", m)) {
 | 
| 21 | int max = ai_html_wordThoughts_searchMax; | 
| 22 | L<S> l = indexedTerms_scoredSearch(m.rest(), max+1); | 
| 23 | ret title | 
| 24 | + p(l(l) > ai_html_wordThoughts_searchMax ? max + "+ search results" : n(l, "search result")) | 
| 25 | + ul(map html_encyclopediaTopic(takeFirst(max, l))); | 
| 26 | } | 
| 27 | |
| 28 | new L<WebNode> nodes; | 
| 29 | int max = or(ai_html_wordThoughts_nodesMax!, ai_html_wordThoughts_nodesMax_default); | 
| 30 | Set<S> ignoredWebs = ai_ignoredWebs(); | 
| 31 |     for (S word : selectedWords) {
 | 
| 32 | nodes.addAll(web_nodesNotFromCertainWebs(ignoredWebs, indexedNodes(word))); | 
| 33 | if (l(nodes) >= max) break; | 
| 34 | } | 
| 35 | int realN = l(nodes); | 
| 36 | truncateList(nodes, max); | 
| 37 | |
| 38 | L<WebRelation> rel1 = web_dropConfirmedPossibles(web_collectBackwardRelations(nodes)); | 
| 39 | L<WebRelation> rel2 = web_dropConfirmedPossibles(web_collectForwardRelations(nodes)); | 
| 40 | |
| 41 | final MultiMap<S> mm = orderedMultiMap(); // HTML -> web id | 
| 42 | |
| 43 |     for (bool invalid : ll(false, true)) {
 | 
| 44 | for (WebRelation r : ai_sortRelationsByImportance(ai_filterInvalid(invalid, rel2))) | 
| 45 | mm.put(t + " " + ai_textHTML(r) + t + ai_renderNodeHTML(r.b), r.web.globalID()); | 
| 46 | for (WebRelation r : ai_sortRelationsByImportance(ai_filterInvalid(invalid, rel1))) | 
| 47 | mm.put(ai_renderNodeHTML(r.a) + t + ai_textHTML(r) + t + ai_textHTML(r.b), r.web.globalID()); | 
| 48 | |
| 49 | if (!invalid) | 
| 50 | for (WebNode n : nodes) | 
| 51 | if (n instanceof WebRelation) | 
| 52 | mm.put(ai_renderNodeHTML(n/WebRelation.a) + t + ai_textHTML(n) + t + ai_textHTML(n/WebRelation.b), n.web.globalID()); | 
| 53 | } | 
| 54 | |
| 55 | L<S> l1 = ll(); | 
| 56 | Web web = ai_getWebFromTerm(selectedWord); | 
| 57 |     if (web != null) {
 | 
| 58 | S link = ai_html_webLink(web.globalID()); | 
| 59 | bool inv = ai_isInvalidWeb(web); | 
| 60 | l1.add(inv ? "is an " + ahref(link, "invalid web") : "is a " + ahref(link, "web")); | 
| 61 | } | 
| 62 | |
| 63 | L<S> keys = multiMapKeysByPopularity(mm); | 
| 64 | |
| 65 | //long nVirtual = ai_numberOfVirtualWebs(); | 
| 66 | long mem = ai_html_wordThoughts_showMem ? memoryUsedAfterLastGC() : 0; | 
| 67 | ret title | 
| 68 |       + (realN > max ? p("List truncated (" +  n(realN, "total node") + ")") : "")
 | 
| 69 | + ul(concatLists(l1, map html_linkURLs( | 
| 70 | allToString( | 
| 71 |           map(keys, func(S s) {
 | 
| 72 | L<S> webIDs = mm.get(s); | 
| 73 | ret s + " [" + joinWithComma(map ai_html_linkedWebWithThumbs(webIDs)) + "]"; | 
| 74 | }) | 
| 75 | )))) | 
| 76 | + p(n(nodes, "node") + " out of " + ahref(smartBotOfficialURL(), nWebs(ai_allWebsCount())) + (loading() ? " (LOADING)": "") | 
| 77 | //+ (nVirtual == 0 ? "" : " + " + formatWithThousandsSeparator(nVirtual) + " virtual") | 
| 78 | + (mem == 0 ? "" : ". " + toMB(mem) + " MB used")); | 
| 79 |   } finally {
 | 
| 80 | ai_html_shortenTextForDisplay_length.set(oldShrt); | 
| 81 | } | 
| 82 | } | 
Began life as a copy of #1011308
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1012587 | 
| Snippet name: | ai_html_wordThoughts v2 | 
| Eternal ID of this version: | #1012587/1 | 
| Text MD5: | 1bed8e89807144d04e9120681212e8f4 | 
| Author: | stefan | 
| Category: | javax / a.i. | 
| Type: | JavaX fragment (include) | 
| Public (visible to everyone): | Yes | 
| Archived (hidden from active list): | No | 
| Created/modified: | 2017-12-07 15:04:52 | 
| Source code size: | 3523 bytes / 82 lines | 
| Pitched / IR pitched: | No / No | 
| Views / Downloads: | 579 / 588 | 
| Referenced in: | [show references] |