Ignore:
Timestamp:
Jul 12, 2012, 6:16:38 PM (12 years ago)
Author:
Evgeny Stambulchik <Evgeny.Stambulchik@…>
Branch:
default
Phase:
public
Message:

Implemented data export from plot.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source/class/pf/Application.js

    r333 r336  
    14661466            var wymax = 0;
    14671467
    1468             var sets = new Array;
     1468            this.sets = new Array;
    14691469            var first = true;
    14701470            for (var i = 0; i < this.favorites.length; i++) {
     
    15381538                set.legend = vname;
    15391539                set.color = fav.color;
    1540                 sets.push(set);
     1540                this.sets.push(set);
    15411541            }
    15421542           
     
    16351635            // Draw sets
    16361636            canvas.setStroke(2);
    1637             for (var i = 0; i < sets.length; i++) {
    1638                 var set = sets[i];
     1637            for (var i = 0; i < this.sets.length; i++) {
     1638                var set = this.sets[i];
    16391639                canvas.setColor(set.color);
    16401640                canvas.drawPolyLineW(set.x, set.y);
    1641                
    1642                 delete set;
    1643             }
    1644            
    1645             delete sets;
     1641            }
    16461642           
    16471643            canvas.paint();
     
    16771673        {
    16781674            this.drawAll();
     1675        },
     1676       
     1677        exportSet : function(set)
     1678        {
     1679            var str = "";
     1680           
     1681            str += "# legend: " + set.legend + "\n";
     1682            str += "# color: "  + set.color + "\n";
     1683
     1684            var xdata = set.x;
     1685            var ydata = set.y;
     1686            var slen  = xdata.length;
     1687
     1688            for (var j = 0; j < slen; j++) {
     1689                str += pf.util.Format.sprintf("%.6e\t%.6e\n",
     1690                    xdata[j], ydata[j]);
     1691            }
     1692           
     1693            return str;
     1694        },
     1695
     1696        exportDataCB : function(ev)
     1697        {
     1698            if (!this.sets || !this.sets.length) {
     1699                return false;
     1700            }
     1701           
     1702            var str = "";
     1703            for (var i = 0; i < this.sets.length; i++) {
     1704                str += this.exportSet(this.sets[i]);
     1705               
     1706                if (i < this.sets.length - 1) {
     1707                    str += "\n";
     1708                }
     1709            }
     1710           
     1711            var w = this.dataExportWindow;
     1712
     1713            var text_area = w.textArea;
     1714           
     1715            text_area.setValue(str);
     1716
     1717            w.open();
    16791718        },
    16801719       
     
    17111750            btn.addListener("execute", this.drawCB, this);
    17121751            gl.add(btn, {row: 0, column: 0});
     1752
     1753            var btn = new qx.ui.form.Button("Export Data",
     1754                "pf/image/export.png");
     1755            btn.addListener("execute", this.exportDataCB, this);
     1756            gl.add(btn, {row: 0, column: 1});
    17131757
    17141758            l = new qx.ui.basic.Label("Parameter to vary:");
     
    29182962        },
    29192963
     2964        createDataExportDialog : function()
     2965        {
     2966            // Data export window
     2967            var w = new pf.ui.DialogWindow();
     2968            w.set({
     2969                width:  350,
     2970                height: 400
     2971            });
     2972            w.setResizable(true);
     2973            w.setLayout(new qx.ui.layout.VBox(0));
     2974            w.setContentPadding(0);
     2975           
     2976            var nstr = "Copy the contents below to a text editor and save";
     2977            var note = new qx.ui.basic.Label(nstr, {height: 20});
     2978            w.add(note);
     2979               
     2980            var text_area = new qx.ui.form.TextArea();
     2981            text_area.setWrap(true);
     2982            text_area.setReadOnly(true);
     2983           
     2984            w.add(text_area, {flex: 1});
     2985
     2986            w.setCaption("Export plot data")
     2987            w.setIcon("pf/image/export.png");
     2988           
     2989            w.textArea = text_area;
     2990           
     2991            this.dataExportWindow = w;
     2992        },           
     2993
    29202994        applyTheme : function()
    29212995        {
     
    30253099            this.createSaveLoadDialog();
    30263100
     3101            // Export data dialog
     3102            this.createDataExportDialog();
     3103
    30273104            // "About..." dialog
    30283105            var w = new pf.ui.DialogWindow("About Plasma Formulary",
Note: See TracChangeset for help on using the changeset viewer.