mirror of
				https://github.com/Jermolene/TiddlyWiki5
				synced 2025-10-31 15:42:59 +00:00 
			
		
		
		
	 6fc5c70ace
			
		
	
	6fc5c70ace
	
	
	
		
			
			New export button appears as a page control toolbar button, a tiddler toolbar button, and a button in the advanced search filter tab. Initially supports exporting as static HTML, CSV, JSON or `.tid` file. Still to do: * Made the exporter descriptions translatable * Hide the export button by default * User docs * Cleaning up the existing templates (eg, `$:/core/templates/alltiddlers.template.html` should work by transcluding `$:/core/templates/exporters/Static`) * Docs for the new macros `exportButton`, `csvtiddlers` and `jsontiddlers` Issues: * OS X Numbers refuses to open CSV files that have been generated in Chrome, because it thinks they’ve been downloaded from the Internet. Firefox works OK * The export button won’t work within the tiddler info panel, or from the *more* popup (this is because we don’t support nested popups)
		
			
				
	
	
		
			76 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*\
 | |
| title: $:/core/modules/macros/csvtiddlers.js
 | |
| type: application/javascript
 | |
| module-type: macro
 | |
| 
 | |
| Macro to output tiddlers matching a filter to CSV
 | |
| 
 | |
| \*/
 | |
| (function(){
 | |
| 
 | |
| /*jslint node: true, browser: true */
 | |
| /*global $tw: false */
 | |
| "use strict";
 | |
| 
 | |
| /*
 | |
| Information about this macro
 | |
| */
 | |
| 
 | |
| exports.name = "csvtiddlers";
 | |
| 
 | |
| exports.params = [
 | |
| 	{name: "filter"},
 | |
| 	{name: "format"},
 | |
| ];
 | |
| 
 | |
| /*
 | |
| Run the macro
 | |
| */
 | |
| exports.run = function(filter,format) {
 | |
| 	var self = this,
 | |
| 		tiddlers = this.wiki.filterTiddlers(filter),
 | |
| 		tiddler,
 | |
| 		fields = [],
 | |
| 		t,f;
 | |
| 	// Collect all the fields
 | |
| 	for(t=0;t<tiddlers.length; t++) {
 | |
| 		tiddler = this.wiki.getTiddler(tiddlers[t]);
 | |
| 		for(f in tiddler.fields) {
 | |
| 			if(fields.indexOf(f) === -1) {
 | |
| 				fields.push(f);
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	// Sort the fields and bring the standard ones to the front
 | |
| 	fields.sort();
 | |
| 	"title text modified modifier created creator".split(" ").reverse().forEach(function(value,index) {
 | |
| 		var p = fields.indexOf(value);
 | |
| 		if(p !== -1) {
 | |
| 			fields.splice(p,1);
 | |
| 			fields.unshift(value)
 | |
| 		}
 | |
| 	});
 | |
| 	// Output the column headings
 | |
| 	var output = [], row = [];
 | |
| 	fields.forEach(function(value) {
 | |
| 		row.push(quoteAndEscape(value))
 | |
| 	});
 | |
| 	output.push(row.join(","));
 | |
| 	// Output each tiddler
 | |
| 	for(var t=0;t<tiddlers.length; t++) {
 | |
| 		row = [];
 | |
| 		tiddler = this.wiki.getTiddler(tiddlers[t]);
 | |
| 			for(f=0; f<fields.length; f++) {
 | |
| 				row.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || "" : ""));
 | |
| 			}
 | |
| 		output.push(row.join(","));
 | |
| 	}
 | |
| 	return output.join("\n");
 | |
| };
 | |
| 
 | |
| function quoteAndEscape(value) {
 | |
| 	return "\"" + value.replace(/"/mg,"\"\"") + "\"";
 | |
| }
 | |
| 
 | |
| })();
 |