home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2008 November / PCWNOV08.iso / Software / Freeware / Mini Map Sidebar 0.3 / mini_map_sidebar-0.3.0-fx.xpi / chrome / content / export.js < prev    next >
Encoding:
Text File  |  2008-02-24  |  12.6 KB  |  306 lines

  1. function exportMaps(expType){
  2.     var expTypeData;
  3.     var expTypeExt;
  4.         switch(expType)
  5.         {
  6.             case "csv":
  7.                 expTypeData = exportCsv();
  8.                 expTypeExt = 'csv'
  9.                 break;
  10.             case "csvsel":
  11.                 expTypeData = exportCsvSel();
  12.                 expTypeExt = 'csv'
  13.             break;
  14.             case "kml":
  15.                 expTypeData = exportKml();
  16.                 expTypeExt = 'kml'
  17.             break;
  18.             case "kmlsel":
  19.                 expTypeData = exportKmlSel();
  20.                 expTypeExt = 'kml'
  21.             break;
  22.             case "gpx":
  23.                 expTypeData = exportGpx();
  24.                 expTypeExt = 'gpx'
  25.             break;
  26.             case "gpxsel":
  27.                 expTypeData = exportGpxSel();
  28.                 expTypeExt = 'gpx'
  29.             break;
  30.             case "minimap":
  31.                 expTypeData = exportMinimap();
  32.                 expTypeExt = 'minimap'
  33.             break;
  34.             case "minimapsel":
  35.                 expTypeData = exportMinimapSel();
  36.                 expTypeExt = 'minimap'
  37.             break;
  38.         }
  39.  
  40.     const nsIFilePicker = Components.interfaces.nsIFilePicker;
  41.     var fp = Components.classes["@mozilla.org/filepicker;1"]
  42.               .createInstance(nsIFilePicker);
  43.     fp.init(window, "Export to file ", nsIFilePicker.modeSave);
  44.       fp.appendFilter(expTypeExt+" Files","*."+expTypeExt);
  45.     fp.defaultString = "map_export."+expTypeExt;
  46.     var rv = fp.show();
  47.     if (rv != nsIFilePicker.returnOK && rv != nsIFilePicker.returnReplace)
  48.     {
  49.         return false;
  50.     }
  51.     var file = Components.classes["@mozilla.org/file/local;1"]
  52.                         .createInstance(Components.interfaces.nsILocalFile);
  53.     file.initWithFile(fp.file);
  54.     var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
  55.     
  56.     foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0);
  57.     
  58.     var charset = "UTF-8"; // Can be any character encoding name that Mozilla supports
  59.  
  60.     var os = Components.classes["@mozilla.org/intl/converter-output-stream;1"]
  61.                        .createInstance(Components.interfaces.nsIConverterOutputStream);
  62.  
  63.     // This assumes that fos is the nsIOutputStream you want to write to
  64.     os.init(foStream, charset, 0, 0x0000);
  65.  
  66.     os.writeString(expTypeData);
  67.     // etc.
  68.  
  69.     os.close();
  70.     //foStream.write(text,text.length);
  71.     foStream.close();
  72. }
  73.  
  74. function exportKml(){
  75.     var allAddresses = '<?xml version="1.0" encoding="UTF-8"?>\n';
  76.     allAddresses += '<kml xmlns="http://earth.google.com/kml/2.2">\n';
  77.     allAddresses += '<Document>\n'
  78.     var ds = flock_mapsGetDS();
  79.     var container = ds.getNode("urn:flock:maps:addresses");
  80.     var nodes = container.getChildren();
  81.     while ( nodes.hasMoreElements() ) {
  82.         var node = nodes.getNext(); 
  83.         var data = mapsPlacemarks(node);
  84.         allAddresses += '\t<Placemark>\n';
  85.         allAddresses +=  '\t\t<name><![CDATA['+data.title+']]></name>\n';
  86.         allAddresses +=  '\t\t<description><![CDATA['+data.desc+']]></description>\n';
  87.         allAddresses +=  '\t\t<Point>\n';
  88.         allAddresses +=  '\t\t\t<coordinates>'+data.lng+','+data.lat+'</coordinates>\n';
  89.         allAddresses +=  '\t\t</Point>\n';
  90.         allAddresses +=  '\t\t<address><![CDATA['+data.address+']]></address>\n';
  91.         allAddresses +=  '\t</Placemark>\n';
  92.     }
  93.     allAddresses += '</Document>\n</kml>';
  94.     return allAddresses;
  95. }
  96.  
  97. function exportKmlSel(){
  98.     var allAddresses = '<?xml version="1.0" encoding="UTF-8"?>\n';
  99.     allAddresses += '<kml xmlns="http://earth.google.com/kml/2.2">\n';
  100.     allAddresses += '<Document>\n'
  101.     var ds = flock_mapsGetDS();
  102.     var container = ds.getNode("urn:flock:maps:addresses");
  103.     var tree = $('address_list');
  104.     var treeSelection = flock_getTreeSelection(tree, ["idCol"]);
  105.     for (var i = 0; i < treeSelection.length; ++i) {
  106.         var item = treeSelection[i];
  107.         var objectId = item["idCol"];
  108.         var node = ds.getNode(objectId);
  109.         var data = mapsPlacemarks(node);
  110.         allAddresses += '\t<Placemark>\n';
  111.         allAddresses +=  '\t\t<name><![CDATA['+data.title+']]></name>\n';
  112.         allAddresses +=  '\t\t<description><![CDATA['+data.desc+']]></description>\n';
  113.         allAddresses +=  '\t\t<Point>\n';
  114.         allAddresses +=  '\t\t\t<coordinates>'+data.lng+','+data.lat+'</coordinates>\n';
  115.         allAddresses +=  '\t\t</Point>\n';
  116.         allAddresses +=  '\t\t<address><![CDATA['+data.address+']]></address>\n';
  117.         allAddresses +=  '\t</Placemark>\n';
  118.     }
  119.     allAddresses += '</Document>\n</kml>';
  120.     return allAddresses;
  121. }
  122.  
  123. function exportCsv(){
  124.     var allAddresses = '"Title","Location","URL","Description","Lat","Lng","Accuracy","Altitude","Country","State","County","Locality","Street","Postal Code"';
  125.     var ds = flock_mapsGetDS();
  126.     var container = ds.getNode("urn:flock:maps:addresses");
  127.     var nodes = container.getChildren();
  128.     while ( nodes.hasMoreElements() ) {
  129.         var node = nodes.getNext(); 
  130.         var data = mapsPlacemarks(node);
  131.         allAddresses += '\n"'
  132.         allAddresses += data.title+'","';
  133.         allAddresses +=  data.address+'","';
  134.         allAddresses +=  data.url+'","';
  135.         allAddresses +=  data.desc+'","';
  136.         allAddresses +=  data.lat+'","';
  137.         allAddresses +=  data.lng+'","';
  138.         allAddresses +=  data.accuracy+'","';
  139.         allAddresses +=  data.altd+'","';
  140.         allAddresses +=  data.country+'","';
  141.         allAddresses +=  data.state+'","';
  142.         allAddresses +=  data.county+'","';
  143.         allAddresses +=  data.locality+'","';
  144.         allAddresses +=  data.street+'","';
  145.         allAddresses +=  data.postal+'"';
  146.     }
  147.     return allAddresses;
  148. }
  149.  
  150. function exportCsvSel(){
  151.     var allAddresses = '"Title","Location","URL","Description","Lat","Lng","Accuracy","Altitude","Country","State","County","Locality","Street","Postal Code"';
  152.     var ds = flock_mapsGetDS();
  153.     var container = ds.getNode("urn:flock:maps:addresses");
  154.     var tree = $('address_list');
  155.     var treeSelection = flock_getTreeSelection(tree, ["idCol"]);
  156.     for (var i = 0; i < treeSelection.length; ++i) {
  157.         var item = treeSelection[i];
  158.         var objectId = item["idCol"];
  159.         var node = ds.getNode(objectId);
  160.         var data = mapsPlacemarks(node);
  161.         allAddresses += '\n"'
  162.         allAddresses += data.title+'","';
  163.         allAddresses +=  data.address+'","';
  164.         allAddresses +=  data.url+'","';
  165.         allAddresses +=  data.desc+'","';
  166.         allAddresses +=  data.lat+'","';
  167.         allAddresses +=  data.lng+'","';
  168.         allAddresses +=  data.accuracy+'","';
  169.         allAddresses +=  data.altd+'","';
  170.         allAddresses +=  data.country+'","';
  171.         allAddresses +=  data.state+'","';
  172.         allAddresses +=  data.county+'","';
  173.         allAddresses +=  data.locality+'","';
  174.         allAddresses +=  data.street+'","';
  175.         allAddresses +=  data.postal+'"';
  176.     }
  177.     return allAddresses;
  178. }
  179.  
  180. function exportGpx(){
  181.     var allAddresses = '<?xml version="1.0" encoding="Windows-1252" standalone="no" ?>\n';
  182.     allAddresses += '<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="byHand" version="1.1" \n';
  183.     allAddresses += '\txmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \n';
  184.     allAddresses += '\txsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">\n';
  185.     var ds = flock_mapsGetDS();
  186.     var container = ds.getNode("urn:flock:maps:addresses");
  187.     var nodes = container.getChildren();
  188.     while ( nodes.hasMoreElements() ) {
  189.         var node = nodes.getNext(); 
  190.         var data = mapsPlacemarks(node);
  191.         allAddresses += '\t<wpt lat="'+data.lat+'" lon="'+data.lng+'">\n';
  192.         allAddresses +=  '\t\t<ele>'+data.altd+'</ele>\n';
  193.         allAddresses +=  '\t\t<time></time>\n';
  194.         allAddresses +=  '\t\t<name><![CDATA['+data.title+']]></name>\n';
  195.         allAddresses +=  '\t\t<sym></sym>\n';
  196.         allAddresses +=  '\t</wpt>\n';
  197.     }
  198.     allAddresses += '</gpx>';
  199.     return allAddresses;
  200. }
  201.  
  202. function exportGpxSel(){
  203.     var allAddresses = '<?xml version="1.0" encoding="Windows-1252" standalone="no" ?>\n';
  204.     allAddresses += '<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="byHand" version="1.1" \n';
  205.     allAddresses += '\txmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" \n';
  206.     allAddresses += '\txsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">\n';
  207.     var ds = flock_mapsGetDS();
  208.     var container = ds.getNode("urn:flock:maps:addresses");
  209.     var tree = $('address_list');
  210.     var treeSelection = flock_getTreeSelection(tree, ["idCol"]);
  211.     for (var i = 0; i < treeSelection.length; ++i) {
  212.         var item = treeSelection[i];
  213.         var objectId = item["idCol"];
  214.         var node = ds.getNode(objectId);
  215.         var data = mapsPlacemarks(node);
  216.         allAddresses += '\t<wpt lat="'+data.lat+'" lon="'+data.lng+'">\n';
  217.         allAddresses +=  '\t\t<ele>'+data.altd+'</ele>\n';
  218.         allAddresses +=  '\t\t<time></time>\n';
  219.         allAddresses +=  '\t\t<name><![CDATA['+data.title+']]></name>\n';
  220.         allAddresses +=  '\t\t<sym></sym>\n';
  221.         allAddresses +=  '\t</wpt>\n';
  222.     }
  223.     allAddresses += '</gpx>';
  224.     return allAddresses;
  225. }
  226.  
  227. function exportMinimap(){
  228.     var allAddresses = '<?xml version="1.0" encoding="UTF-8"?>\n<Placemarks>\n';
  229.     var ds = flock_mapsGetDS();
  230.       var container = ds.getNode("urn:flock:maps:addresses");
  231.      var nodes = container.getChildren();
  232.       while ( nodes.hasMoreElements() ) {
  233.         var node = nodes.getNext(); 
  234.         var data = mapsPlacemarks(node);
  235.         allAddresses += '\t<Placemark>\n';
  236.         allAddresses +=  '\t\t<title><![CDATA['+data.title+']]></title>\n';
  237.         allAddresses +=  '\t\t<address><![CDATA['+data.address+']]></address>\n';
  238.         allAddresses +=  '\t\t<description><![CDATA['+data.desc+']]></description>\n';
  239.         allAddresses +=  '\t\t<url><![CDATA['+data.url+']]></url>\n';
  240.         allAddresses +=  '\t\t<lat>'+data.lat+'</lat>\n';
  241.         allAddresses +=  '\t\t<lng>'+data.lng+'</lng>\n';
  242.         allAddresses +=  '\t\t<accuracy><![CDATA['+data.accuracy+']]></accuracy>\n';
  243.         allAddresses +=  '\t\t<altd>'+data.altd+'</altd>\n';
  244.         allAddresses +=  '\t\t<country><![CDATA['+data.country+']]></country>\n';
  245.         allAddresses +=  '\t\t<state><![CDATA['+data.state+']]></state>\n';
  246.         allAddresses +=  '\t\t<county><![CDATA['+data.county+']]></county>\n';
  247.         allAddresses +=  '\t\t<locality><![CDATA['+data.locality+']]></locality>\n';
  248.         allAddresses +=  '\t\t<street><![CDATA['+data.street+']]></street>\n';
  249.         allAddresses +=  '\t\t<postal><![CDATA['+data.postal+']]></postal>\n';
  250.         allAddresses +=  '\t</Placemark>\n';
  251.     }
  252.     allAddresses += '</Placemarks>';
  253.     return allAddresses;
  254. }
  255.  
  256. function exportMinimapSel(){
  257.     var allAddresses = '<?xml version="1.0" encoding="UTF-8"?>\n<Placemarks>\n';
  258.     var ds = flock_mapsGetDS();
  259.     var container = ds.getNode("urn:flock:maps:addresses");
  260.     var tree = $('address_list');
  261.     var treeSelection = flock_getTreeSelection(tree, ["idCol"]);
  262.     for (var i = 0; i < treeSelection.length; ++i) {
  263.         var item = treeSelection[i];
  264.         var objectId = item["idCol"];
  265.         var node = ds.getNode(objectId);
  266.         var data = mapsPlacemarks(node);
  267.         allAddresses += '\t<Placemark>\n';
  268.         allAddresses +=  '\t\t<title><![CDATA['+data.title+']]></title>\n';
  269.         allAddresses +=  '\t\t<address><![CDATA['+data.address+']]></address>\n';
  270.         allAddresses +=  '\t\t<description><![CDATA['+data.desc+']]></description>\n';
  271.         allAddresses +=  '\t\t<url><![CDATA['+data.url+']]></url>\n';
  272.         allAddresses +=  '\t\t<lat>'+data.lat+'</lat>\n';
  273.         allAddresses +=  '\t\t<lng>'+data.lng+'</lng>\n';
  274.         allAddresses +=  '\t\t<accuracy><![CDATA['+data.accuracy+']]></accuracy>\n';
  275.         allAddresses +=  '\t\t<altd>'+data.altd+'</altd>\n';
  276.         allAddresses +=  '\t\t<country><![CDATA['+data.country+']]></country>\n';
  277.         allAddresses +=  '\t\t<state><![CDATA['+data.state+']]></state>\n';
  278.         allAddresses +=  '\t\t<county><![CDATA['+data.county+']]></county>\n';
  279.         allAddresses +=  '\t\t<locality><![CDATA['+data.locality+']]></locality>\n';
  280.         allAddresses +=  '\t\t<street><![CDATA['+data.street+']]></street>\n';
  281.         allAddresses +=  '\t\t<postal><![CDATA['+data.postal+']]></postal>\n';
  282.         allAddresses +=  '\t</Placemark>\n';
  283.     }
  284.     allAddresses += '</Placemarks>';
  285.     return allAddresses;
  286. }
  287.  
  288. function mapsPlacemarks(node){
  289.     var data ={};
  290.     try{data.address = node.getTarget(_mns('location')).getValue();}catch(e){data.address='';}
  291.     try{data.title = node.getTarget(_mns('title')).getValue();}catch(e){data.title='';}
  292.     try{data.url = node.getTarget(_mns('sourceurl')).getValue();}catch(e){data.url='';}
  293.     try{data.desc = node.getTarget(_mns('description')).getValue();}catch(e){data.desc='';}
  294.     try{data.lat = parseFloat(node.getTarget(_mns('lat')).getValue());}catch(e){data.lat='';}
  295.     try{data.lng = parseFloat(node.getTarget(_mns('lng')).getValue());}catch(e){data.lng='';}
  296.     try{data.accuracy = node.getTarget(_mns('accuracy')).getValue();}catch(e){data.accuracy='';}
  297.     try{data.altd = node.getTarget(_mns('altd')).getValue();}catch(e){data.altd='';}
  298.     try{data.country = node.getTarget(_mns('country')).getValue();}catch(e){data.country='';}
  299.     try{data.state = node.getTarget(_mns('state')).getValue();}catch(e){data.state='';}
  300.     try{data.county = node.getTarget(_mns('county')).getValue();}catch(e){data.county='';}
  301.     try{data.locality = node.getTarget(_mns('locality')).getValue();}catch(e){data.locality='';}
  302.     try{data.street = node.getTarget(_mns('street')).getValue();}catch(e){data.street='';}
  303.     try{data.postal = node.getTarget(_mns('postal')).getValue();}catch(e){data.postal='';}
  304.     return data;    
  305. }
  306.