mirror of https://gitlab.com/octtspacc/OcttKB
OcttKB Cross-Repo Sync (HTML to Raw)
This commit is contained in:
parent
c28818b7a0
commit
f4fbc5a9b5
|
@ -0,0 +1,6 @@
|
|||
created: 20140530174219263
|
||||
tags: contextPlugin
|
||||
title: $:/plugins/danielo515/ContextPlugin/Caption
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Context search
|
|
@ -0,0 +1,3 @@
|
|||
.matched{background-color:yellow}
|
||||
.tw-context {/*border:1px solid;
|
||||
/*word-break: break-all; word-wrap: break-word*/}
|
|
@ -0,0 +1,4 @@
|
|||
created: 20140529162823729
|
||||
tags: $:/tags/Stylesheet contextPlugin
|
||||
title: $:/plugins/danielo515/ContextPlugin/Stylesheet/results
|
||||
type: text/css
|
|
@ -0,0 +1,55 @@
|
|||
title: $:/plugins/danielo515/ContextPlugin/readme
|
||||
|
||||
!Usage
|
||||
|
||||
After installing the plugin you will have a new tab in [[$:/AdvancedSearch]] called [[Context Search]]. If you want this functionality in other places you will have to edit the desired tiddler yourself adding the ''context widget''. For more details about using the widget see the section below.
|
||||
|
||||
!!Using the widget
|
||||
|
||||
The very basic usage of the widget is the following:
|
||||
|
||||
```
|
||||
<$context term="lorem"/>
|
||||
```
|
||||
Which will render as:
|
||||
<$context term="lorem"/>
|
||||
|
||||
The widgets will search inside the current tiddler by default. Because that you see the same content twice here. This example is not very useful. Other more meaningful would be:
|
||||
|
||||
```
|
||||
<$list filter="[search{$:/temp/advancedsearch}sort[title]limit[250]]">
|
||||
{{!!title||$:/core/ui/ListItemTemplate}}
|
||||
<$context term={{$:/temp/advancedsearch}}/>
|
||||
</$list>
|
||||
```
|
||||
|
||||
That will search for tiddlers containing the text specified in [[$:/temp/advancedsearch]] and will display a link to the matching tiddlers plus a preview of the matching content. Something very similar is used in [[Context Search]]. Below you can find a complete list of parameters and their default values.
|
||||
|
||||
|! parameter |! description | !default |
|
||||
| term | The term you want to search ||
|
||||
| searchTerm | An alias for the previous one ||
|
||||
| tiddler | The tiddler's name to look into | current tiddler |
|
||||
| length | Number of context characters to show | 50 |
|
||||
| before | Number of characters before the matched term to show | the value of the length parameter |
|
||||
| after | Number of characters after the matched term to show | the value of the length parameter |
|
||||
| maxMatches | maximun number of matched elements to show. Incrementing this can cause several performance issues | 10 |
|
||||
| element | Node element to create. This element will contain the results of the search. If you want to style it its class is `tw-context` | `<pre>` |
|
||||
| matchClass | The css class to assign to the matched terms in the results. This is used to highlight the results | matched |
|
||||
|
||||
!Customizing the output
|
||||
There are not many ways to customize the output of this widget. You can specify ''what type of node you want to create'' to wrap the results (div,span...). The default is `<pre>`. This container is created with the class `tw-context` so you can easily apply styles to it. Something similar happens to the ''highlighted'' words. You can specify the name of the class to assign to it and also you can apply styles to that class.
|
||||
|
||||
A very basic example of customization could be:
|
||||
|
||||
# Create a tiddler, for example [[$/plugins/danielo515/context/css]]
|
||||
# Paste the following text or any css rule you want: """
|
||||
|
||||
<pre>
|
||||
.matched{background-color:yellow}
|
||||
.tw-context {
|
||||
border:1px solid blue;
|
||||
word-break: break-all; word-wrap: break-word;}
|
||||
</pre>
|
||||
"""
|
||||
# Tag it with `$:/tags/stylesheet`
|
||||
# Save the tiddler
|
|
@ -0,0 +1,8 @@
|
|||
caption: Context
|
||||
tags: $:/tags/SearchResults
|
||||
title: $:/plugins/danielo515/ContextPlugin/visualizer
|
||||
|
||||
<$list filter="[!is[system]search{$:/temp/search}sort[title]limit[250]]">
|
||||
{{!!title||$:/core/ui/ListItemTemplate}}
|
||||
<$context term={{$:/temp/search}} />
|
||||
</$list>
|
|
@ -0,0 +1,136 @@
|
|||
/*\\
|
||||
title: $:/core/modules/widgets/danielo/context-widget.js
|
||||
type: application/javascript
|
||||
module-type: widget
|
||||
|
||||
Edit-text widget
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: true, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var Widget = require("$:/core/modules/widgets/widget.js").widget;
|
||||
var contextWidget = function(parseTreeNode,options) {
|
||||
this.initialise(parseTreeNode,options);
|
||||
};
|
||||
|
||||
/*
|
||||
Inherit from the base widget class
|
||||
*/
|
||||
contextWidget.prototype = new Widget();
|
||||
|
||||
/*
|
||||
Render this widget into the DOM
|
||||
*/
|
||||
contextWidget.prototype.render = function(parent,nextSibling) {
|
||||
// Save the parent dom node
|
||||
this.parentDomNode = parent;
|
||||
// Compute our attributes
|
||||
this.computeAttributes();
|
||||
// Execute our logic
|
||||
this.execute();
|
||||
|
||||
if(this.term && this.term.length>3){
|
||||
|
||||
this.createRegexp();
|
||||
var matches = this.executeRegexp();
|
||||
if(matches.length > 0){
|
||||
this.domNode = this.document.createElement(this.element);
|
||||
this.domNode.className="tw-context";
|
||||
this.composeResults( matches ); //this appends to domNode
|
||||
// Insert element
|
||||
parent.insertBefore(this.domNode,nextSibling);
|
||||
this.renderChildren(this.domNode,null);
|
||||
this.domNodes.push(this.domNode);
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
Compute the internal state of the widget
|
||||
*/
|
||||
contextWidget.prototype.execute = function() {
|
||||
// Get the parameters from the attributes
|
||||
this.matchedClass = this.getAttribute("matchClass","matched");
|
||||
this.tiddler = this.getAttribute( "tiddler",this.getVariable("currentTiddler") );
|
||||
this.term = this.getAttribute("term",this.getAttribute("searchTerm"));
|
||||
this.contextLength = this.getAttribute("length",50);
|
||||
this.before = this.getAttribute("before",this.contextLength);
|
||||
this.after = this.getAttribute("after",this.contextLength);
|
||||
this.maxMatches = this.getAttribute("maxMatches",10);
|
||||
this.element = this.getAttribute("element","pre");
|
||||
this.makeChildWidgets();
|
||||
};
|
||||
|
||||
/*Create the regular expression*/
|
||||
contextWidget.prototype.createRegexp = function()
|
||||
{
|
||||
var regString = "(\\w+[\\s\\S]{0,#before#})?(#term#)([\\s\\S]{0,#after#}\\w+)?";
|
||||
|
||||
var regString = regString.replace("#before#",this.before).replace("#term#", $tw.utils.escapeRegExp(this.term) ) .replace("#after#",this.after);
|
||||
this.regexp = new RegExp(regString,"ig");
|
||||
//console.log(regString);
|
||||
};
|
||||
/*
|
||||
execute the regular expresion
|
||||
*/
|
||||
contextWidget.prototype.executeRegexp = function()
|
||||
{
|
||||
var text = this.wiki.getTiddlerText(this.tiddler), match,results = new Array();
|
||||
while( (match = this.regexp.exec( text ) ) && (results.length < this.maxMatches) )
|
||||
{ results.push(match) }
|
||||
//console.log("matches",results);
|
||||
return results;
|
||||
};
|
||||
|
||||
/*
|
||||
compose the results
|
||||
matches : array of match objects from regular expression execute
|
||||
*/
|
||||
contextWidget.prototype.composeResults = function(matches){
|
||||
var result=[], self=this, node = this.domNode,
|
||||
dots = textNode("...\n"),
|
||||
span = matchedNode( this.term );
|
||||
|
||||
for(var i=0; i < matches.length; i++){
|
||||
processMatch( matches[i] );
|
||||
}
|
||||
|
||||
function processMatch(match){
|
||||
if( match.index !== 0) node.appendChild( dots.cloneNode(true) );
|
||||
for( var i=1;i<match.length;i++ ) {//match[0] full matched text (all groups together)
|
||||
if( match[i] ) {
|
||||
if ( match[i].toLowerCase() == self.term.toLowerCase() )
|
||||
node.appendChild( match[i] == self.term ? span.cloneNode(true) : matchedNode( match[i] ) )
|
||||
else
|
||||
node.appendChild( textNode( match[i]) )
|
||||
}
|
||||
}
|
||||
if( match.index + match[0].length < match.input.length) node.appendChild( dots.cloneNode(true) );
|
||||
}
|
||||
|
||||
function textNode(text){ return self.document.createTextNode(text) }
|
||||
function matchedNode(text) {
|
||||
var node = self.document.createElement("span"); node.appendChild( textNode(text) ); node.className = self.matchedClass;
|
||||
return node }
|
||||
|
||||
};
|
||||
/*
|
||||
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
|
||||
*/
|
||||
contextWidget.prototype.refresh = function(changedTiddlers) {
|
||||
var changedAttributes = this.computeAttributes();
|
||||
if(changedAttributes.tiddler || changedAttributes.term || changedAttributes.length || changedAttributes.matchedClass) {
|
||||
this.refreshSelf();
|
||||
return true;
|
||||
}
|
||||
return this.refreshChildren(changedTiddlers);
|
||||
};
|
||||
|
||||
exports.context = contextWidget;
|
||||
|
||||
})();
|
|
@ -0,0 +1,7 @@
|
|||
created: 20140418153435777
|
||||
creator: danielo
|
||||
modified: 20140530231943517
|
||||
modifier: danielo
|
||||
module-type: widget
|
||||
title: $:/plugins/danielo515/ContextPlugin/widgets/context.js
|
||||
type: application/javascript
|
|
@ -0,0 +1,32 @@
|
|||
caption: {{$:/plugins/danielo515/ContextPlugin/Caption}}
|
||||
created: 20140530173407542
|
||||
tags: $:/tags/AdvancedSearch
|
||||
title: Context Search
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
\define lingo-base() $:/language/Search/
|
||||
<$linkcatcher to="$:/temp/advancedsearch">
|
||||
|
||||
<<lingo Standard/Hint>>
|
||||
|
||||
<div class="tw-search"><$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input"/><$reveal state="$:/temp/advancedsearch" type="nomatch" text=""> <$link to="" class="btn-invisible">{{$:/core/images/close-button}}</$link></$reveal></div>
|
||||
|
||||
</$linkcatcher>
|
||||
|
||||
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
|
||||
<div class="tw-search-results">
|
||||
|
||||
<<lingo Standard/Matches>>
|
||||
|
||||
<$list filter="[!is[system]search{$:/temp/advancedsearch}sort[title]limit[250]]">
|
||||
{{!!title||$:/core/ui/ListItemTemplate}}
|
||||
<$context term={{$:/temp/advancedsearch}}/>
|
||||
</$list>
|
||||
|
||||
</div>
|
||||
|
||||
</$reveal>
|
||||
|
||||
<$reveal state="$:/temp/advancedsearch" type="match" text="">
|
||||
|
||||
</$reveal>
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"bag": "default",
|
||||
"revision": "0",
|
||||
"version": "2.1.0",
|
||||
"title": "$:/plugins/danielo515/ContextPlugin",
|
||||
"source": "https://github.com/danielo515/TW5-contextPlugin",
|
||||
"plugin-type": "plugin",
|
||||
"list": "readme",
|
||||
"description": "Context search - provides visual highlight of search results",
|
||||
"dependents": "",
|
||||
"core-version": ">=5.1.0",
|
||||
"author": "Danielo Rodrigez"
|
||||
}
|
|
@ -1,8 +1,11 @@
|
|||
created: 20230202225750547
|
||||
creator: Octt
|
||||
modified: 20230413072916135
|
||||
modified: 20230429224405395
|
||||
modifier: Octt
|
||||
tags: $:/i18n:en
|
||||
title: JSON
|
||||
|
||||
<<^WikipediaFrame JSON en>>
|
||||
<<^WikipediaFrame JSON en>>
|
||||
|
||||
* [[JSON Editor Online|https://jsoneditoronline.org]] + formatter, filterer, querier - <<[ "[[Git|https://github.com/josdejong/jsoneditor]]">>
|
||||
* [[JMESPath|https://jmespath.org/]] - cross-platform //query language for JSON// - <<[ "[[Git|https://github.com/jmespath]]">>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
created: 20221110145611678
|
||||
creator: Octt
|
||||
modified: 20230428191647381
|
||||
modified: 20230429221017331
|
||||
modifier: Octt
|
||||
tags: Development Internet $:/i18n:en
|
||||
title: JavaScript
|
||||
|
@ -10,3 +10,15 @@ title: JavaScript
|
|||
<<^wikipediaframe JavaScript>>
|
||||
|
||||
* [[Ecma International TC39|https://tc39.es/]] - Committee maintaining JS specifications
|
||||
|
||||
!!! ''Resources''
|
||||
|
||||
* [[Which equals operator (== vs ===) should be used in JavaScript comparisons?|https://stackoverflow.com/questions/359494/which-equals-operator-vs-should-be-used-in-javascript-comparisons]] ("Good and bad twins")
|
||||
** [[In theory === is faster, no type conversion takes place. Practically there's no performance difference.|https://stackoverflow.com/questions/12332855/which-javascript-equality-operator-or-is-faster]]
|
||||
** [[JavaScript-Equality-Table|https://dorey.github.io/JavaScript-Equality-Table/unified/]] - <<[ "[[Git|https://github.com/dorey/JavaScript-Equality-Table]]">>
|
||||
|
||||
!!! ''Tools''
|
||||
|
||||
* [[jsPerf|https://jsperf.app/]] - //online JavaScript performance benchmark// - <<[ "[[Git|https://github.com/rd13/jsperf.app]]">>
|
||||
** Old source code: [[v2|https://github.com/jsperf]], [[v1|https://github.com/mathiasbynens/jsperf.com]]
|
||||
* [[MeasureThat.net|https://www.measurethat.net/]] - //measure performance of JavaScript code// - <<[ "[[Git|https://github.com/thecoderok/MeasureThat.net]]">>
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
created: 20230429221135750
|
||||
creator: Octt
|
||||
modified: 20230429223626598
|
||||
modifier: Octt
|
||||
tags:
|
||||
title: Newsgroup
|
||||
|
||||
<<^wikipediaframe Newsgroup>>
|
||||
|
||||
Browse newsgroup archives online:
|
||||
|
||||
* [[Google Groups|https://www.google.com/search?q=site%3Agroups.google.com]]
|
||||
* [[Narkive|https://narkive.com/]]
|
||||
* [[UsenetArchives.com|https://www.usenetarchives.com/]] - [<<RedditLink r/usenet/comments/in6u06/free_usenet_text_archive_goes_online_300_million/ Info>>]
|
||||
** [[2.1 Million of the Oldest Internet Posts Are Now Online for Anyone to Read|https://www.vice.com/en/article/pky7km/usenet-archive-utzoo-online]]
|
||||
|
||||
Details and downloads of archives
|
||||
|
||||
* [[https://wiki.archiveteam.org/index.php/Usenet]]
|
||||
* [[Usenet|https://archive.org/details/usenet]], [[Giganews|https://archive.org/details/giganews]] (Archive.org)
|
|
@ -1,15 +1,15 @@
|
|||
created: 20230221204801305
|
||||
creator: Octt
|
||||
modified: 20230429191254121
|
||||
modified: 20230429215115349
|
||||
modifier: Octt
|
||||
tags:
|
||||
title: Web/Development
|
||||
|
||||
!!! ''Misc''
|
||||
|
||||
* [[web.dev|https://web.dev/]] - //Guidance to build modern web experiences that work on any browser//
|
||||
* [[web.dev|https://web.dev/]] - //Guidance to build modern web experiences that work on any browser// (?)
|
||||
* [[Go Make Things|https://gomakethings.com/]] - //how to build a simpler, more resilient web//
|
||||
** [[The Vanilla JS Toolkit|https://vanillajstoolkit.com/]] - //tools and snippets for working with JavaScript//
|
||||
** [[The Vanilla JS Toolkit|https://vanillajstoolkit.com/]] - //tools and snippets for working with JavaScript// (libraries, functions, polyfills, learning)
|
||||
|
||||
!!! ''References''
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
created: 20221202225934313
|
||||
creator: Octt
|
||||
modified: 20230215210830921
|
||||
modified: 20230429221407380
|
||||
modifier: Octt
|
||||
tags: Internet $:/i18n:en
|
||||
title: Wikipedia:en
|
||||
title: Wikipedia
|
||||
|
||||
<<MediaWiki Wikipedia en 1>>
|
||||
<<^wikipediaframe Wikipedia>>
|
||||
|
||||
It is truly one of the best places to gain general culture from. For anything that is not found on the [[OcttKB]], you should visit Wikipedia!
|
||||
It is truly one of the best places to gain general culture from. For anything that is not found on the [[OcttKB]], you should visit Wikipedia no doubt.
|
||||
|
||||
!!! ''Resources''
|
||||
|
||||
* [[Have you ever looked up Wikipedia on Wikipedia?|https://polls.entmt.narkive.com/3RQHnrMT/have-you-ever-looked-up-wikipedia-on-wikipedia]]
|
||||
* [[Have you ever looked up Wikipedia on Wikipedia?|https://polls.entmt.narkive.com/3RQHnrMT/have-you-ever-looked-up-wikipedia-on-wikipedia]]
|
|
@ -1,5 +1,5 @@
|
|||
created: 20230429192341730
|
||||
created: 20230429224536166
|
||||
current-tiddler: GettingStarted
|
||||
modified: 20230429192341730
|
||||
modified: 20230429224536166
|
||||
title: $:/HistoryList
|
||||
type: application/json
|
|
@ -3,4 +3,4 @@ title: $:/Import
|
|||
|
||||
The following tiddlers were imported:
|
||||
|
||||
# [[$:/Styles/Main]]
|
||||
# [[$:/plugins/danielo515/ContextPlugin]]
|
|
@ -1,7 +1,7 @@
|
|||
Enabled: 1
|
||||
Enabled: 0
|
||||
created: 20230413083119554
|
||||
creator: Octt
|
||||
modified: 20230417102138503
|
||||
modified: 20230429202841556
|
||||
modifier: Octt
|
||||
tags: $:/GlobalOption
|
||||
title: $:/OcttKB/Config/AiLinks.ui
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
created: 19700101000000000
|
||||
modified: 20230428191937000
|
||||
modified: 20230429192506000
|
||||
title: $:/OcttKB/Empty
|
|
@ -1,6 +1,6 @@
|
|||
created: 20230429182908215
|
||||
created: 20230429201758976
|
||||
creator: Octt
|
||||
list:
|
||||
modified: 20230429192120468
|
||||
modified: 20230429221307042
|
||||
modifier: Octt
|
||||
title: $:/StoryList
|
|
@ -1,6 +1,6 @@
|
|||
created: 20230124112022156
|
||||
creator: Octt
|
||||
modified: 20230413085126714
|
||||
modified: 20230429202157475
|
||||
modifier: Octt
|
||||
tags: $:/tags/ViewTemplate
|
||||
title: $:/Styles/View/9-99-Hacks
|
||||
|
@ -8,6 +8,7 @@ title: $:/Styles/View/9-99-Hacks
|
|||
\define AiLinks(Enabled:1)
|
||||
\whitespace trim
|
||||
<<script script="
|
||||
try {
|
||||
|
||||
if ('$(Enabled)$' == 1) {
|
||||
var Query = decodeURIComponent('Please summarize the following article into concise key bullet points: ${URL}. Write the points as objective, generalized declarations that stand by themselves. Do not write them as to explain what the author thinks subjectively. Do not leave any point as unclear: each point must not lead the reader to asking any %22why%22; questions. Avoid boilerplate and repetitions.');
|
||||
|
@ -23,6 +24,8 @@ if ('$(Enabled)$' == 1) {
|
|||
});
|
||||
});
|
||||
};
|
||||
|
||||
} catch(e) { ErrAtLine(e); };
|
||||
">>
|
||||
\end
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
created: 20230429202159808
|
||||
creator: Octt
|
||||
modified: 20230429202200401
|
||||
modifier: Octt
|
||||
title: $:/state/folded/$:/Styles/View/9-99-Hacks
|
||||
|
||||
show
|
|
@ -1,7 +1,7 @@
|
|||
created: 20220920140732083
|
||||
creator: Octt
|
||||
modified: 20230429183022361
|
||||
modified: 20230429221154956
|
||||
modifier: Octt
|
||||
title: $:/state/showeditpreview
|
||||
|
||||
no
|
||||
yes
|
|
@ -1,7 +1,7 @@
|
|||
created: 20220920090405977
|
||||
creator: Octt
|
||||
modified: 20230429191411290
|
||||
modified: 20230429202855018
|
||||
modifier: Octt
|
||||
title: $:/state/tab-1749438307
|
||||
|
||||
$:/core/ui/ControlPanel/Info
|
||||
$:/core/ui/ControlPanel/Plugins
|
|
@ -1,7 +1,7 @@
|
|||
created: 20220920092307479
|
||||
creator: Octt
|
||||
modified: 20230429191920084
|
||||
modified: 20230429202204521
|
||||
modifier: Octt
|
||||
title: $:/state/tab/sidebar--595412856
|
||||
|
||||
$:/core/ui/SideBar/More
|
||||
$:/core/ui/SideBar/Recent
|
|
@ -1,3 +1,3 @@
|
|||
title: $:/status/RequireReloadDueToPluginChange
|
||||
|
||||
no
|
||||
yes
|
Loading…
Reference in New Issue