1
0
mirror of https://github.com/gnosygnu/xowa.git synced 2024-10-27 20:34:16 +00:00

hrefs and tooltips

This commit is contained in:
gnosygnu 2017-03-12 12:34:48 -04:00
parent 05c8c7c784
commit bafaf114d1
2 changed files with 60 additions and 18 deletions

View File

@ -29,10 +29,40 @@
border-left: 1px solid #ddd; border-left: 1px solid #ddd;
} }
.result_hover {
width:80px;
padding:2px;
text-align:center;
border-left: 1px solid #ddd;
}
/* REF:https://www.w3schools.com/css/css_tooltip.asp */
.tooltip {
position: relative;
display: inline-block;
/* border-bottom: 1px dotted black; */
}
.tooltip .tooltiptext {
visibility: hidden;
width: 100%;
background-color: white;
color: black;
border: 1px solid black;
padding: 5px;
/* Position the tooltip */
position: absolute;
z-index: 1;
}
.tooltip:hover .tooltiptext {
visibility: visible;
}
</style> </style>
<script src="wikimedia.js" type='text/javascript'></script> <script src="wikimedia.js" type='text/javascript'></script>
</head> </head>
<body> <body>
Please wait. Generating.
</body> </body>
<script> <script>
wm.category.run(); wm.category.run();

View File

@ -1,6 +1,6 @@
/* /*
Given a domain and a category, list its member pages and readability score Given a domain and a category, list its member pages and readability score
EX: http://localhost/wikimedia.html?domain=en.wikipedia.org&page=Earth EX: http://xowa.org/wikimedia.html?domain=en.wikipedia.org&page=Earth
*/ */
(function (wm) { (function (wm) {
wm.category = new function() { wm.category = new function() {
@ -40,7 +40,7 @@
} }
this.getQueryArg = function(url, name) { this.getQueryArg = function(url, name) {
// http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript // REF: http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
if (!url) { if (!url) {
url = window.location.href; url = window.location.href;
} }
@ -62,8 +62,8 @@
/* /*
*/ */
/*
// run mock code // run mock code
/*
var root = {"query":{"categorymembers":[{"pageid":9228,"ns":0,"title":"Earth"},{"pageid":51506837,"ns":0,"title":"Outline of Earth"},{"pageid":25287133,"ns":0,"title":"Anywhere on Earth"},{"pageid":174069,"ns":0,"title":"Asteroid impact avoidance"},{"pageid":35971482,"ns":0,"title":"Day length fluctuations"},{"pageid":33256286,"ns":0,"title":"Demographics of the world"},{"pageid":19509955,"ns":0,"title":"Earth in culture"},{"pageid":212485,"ns":0,"title":"Earth religion"},{"pageid":944638,"ns":0,"title":"Earth's energy budget"},{"pageid":41077022,"ns":0,"title":"Earth's internal heat budget"}]}}; var root = {"query":{"categorymembers":[{"pageid":9228,"ns":0,"title":"Earth"},{"pageid":51506837,"ns":0,"title":"Outline of Earth"},{"pageid":25287133,"ns":0,"title":"Anywhere on Earth"},{"pageid":174069,"ns":0,"title":"Asteroid impact avoidance"},{"pageid":35971482,"ns":0,"title":"Day length fluctuations"},{"pageid":33256286,"ns":0,"title":"Demographics of the world"},{"pageid":19509955,"ns":0,"title":"Earth in culture"},{"pageid":212485,"ns":0,"title":"Earth religion"},{"pageid":944638,"ns":0,"title":"Earth's energy budget"},{"pageid":41077022,"ns":0,"title":"Earth's internal heat budget"}]}};
var root = {"query":{"categorymembers":[{"pageid":9228,"ns":0,"title":"Earth"}]}}; var root = {"query":{"categorymembers":[{"pageid":9228,"ns":0,"title":"Earth"}]}};
wm.category.findPagesInCategoryCallbackRoot(root); wm.category.findPagesInCategoryCallbackRoot(root);
@ -123,8 +123,8 @@
/* /*
*/ */
/*
// run mock code // run mock code
/*
var root = {"query":{"pages": var root = {"query":{"pages":
[ [
{"pageid":9228,"ns":0,"title":"Earth","extract":"Earth (Greek: Γαῖα Gaia; Latin: Terra)."} {"pageid":9228,"ns":0,"title":"Earth","extract":"Earth (Greek: Γαῖα Gaia; Latin: Terra)."}
@ -145,10 +145,10 @@
var page_id = page.pageid; var page_id = page.pageid;
var excerpt = page.extract; var excerpt = page.extract;
// calc score // calc readability score
var score = wm.category.calcReadabilityScore(excerpt); var score = wm.category.calcReadabilityScore(excerpt);
// update category // update local category
var category = wm.category.categories[page_id]; var category = wm.category.categories[page_id];
category.excerpt = excerpt; category.excerpt = excerpt;
category.score = score; category.score = score;
@ -164,15 +164,19 @@
// ********************************************** // **********************************************
this.calcReadabilityScore = function(s) { this.calcReadabilityScore = function(s) {
// REF: https://en.wikipedia.org/wiki/FleschKincaid_readability_tests // REF: https://en.wikipedia.org/wiki/FleschKincaid_readability_tests
// count words and sentences
var words = wm.category.toWordArray(s); var words = wm.category.toWordArray(s);
var totalWords = words.length; var totalWords = words.length;
var totalSentences = wm.category.countSentences(s); var totalSentences = wm.category.countSentences(s);
// count syllables
var totalSyllables = 0; var totalSyllables = 0;
for (var word in words) { for (var word in words) {
totalSyllables += wm.category.countSyllablesInWord(word); totalSyllables += wm.category.countSyllablesInWord(word);
} }
// calc score: again, see https://en.wikipedia.org/wiki/FleschKincaid_readability_tests
return 206.835 - (1.015 * (totalWords / totalSentences)) - (84.6 * (totalSyllables / totalWords)); return 206.835 - (1.015 * (totalWords / totalSentences)) - (84.6 * (totalSyllables / totalWords));
} }
@ -206,22 +210,30 @@
wm.category.categories.sort(wm.category.compareResult); wm.category.categories.sort(wm.category.compareResult);
// generate string // generate string
var s = ''; var s
s += '<div class="results_div">\n'; = '<div class="results_div">\n'
s += ' <div class="result_div">\n'; + ' <div class="result_div">\n'
s += ' <div class="result_title result_header">Title</div>\n'; + ' <div class="result_title result_header">Title</div>\n'
s += ' <div class="result_score result_header">Score</div>\n'; + ' <div class="result_score result_header">Score</div>\n'
s += ' </div>'; + ' </div>'
;
for (var page_id in wm.category.categories) { for (var page_id in wm.category.categories) {
var category = wm.category.categories[page_id]; var category = wm.category.categories[page_id];
s += ' <div class="result_div">\n';
s += ' <div class="result_title">' + category.title + '</div>\n' // get category_title for url
s += ' <div class="result_score">' + category.score.toFixed(2) + '</div>\n' var page_enc = category.title.replace(/ /g, '_');
s += ' </div>'; page_enc = encodeURI(page_enc);
s += ' <div class="result_div">\n'
+ ' <div class="result_title tooltip"><a href="https://' + wm.category.domain + '/wiki/' + page_enc + '">' + category.title + '</a>\n'
+ ' <span class="tooltiptext">' + category.excerpt + '\n'
+ ' </div>\n'
+ ' <div class="result_score">' + category.score.toFixed(2) + '</div>\n'
+ ' </div>\n';
} }
s += '</div>'; s += '</div>';
// print it // print string
document.body.innerHTML = s; document.body.innerHTML = s;
} }
this.compareResult = function(lhs, rhs) { this.compareResult = function(lhs, rhs) {