source: source/class/pf/UnitSelector.js @ 365:d08abf5eb069

Last change on this file since 365:d08abf5eb069 was 358:a8ce6ab71dd5, checked in by Evgeny Stambulchik <Evgeny.Stambulchik@…>, 10 years ago

Added mkm for length and cm/mks for velocity selectors.

File size: 5.4 KB
Line 
1qx.Class.define("pf.UnitSelector",
2{
3    extend: pf.ui.SelectBox,
4   
5    members:
6    {
7        _dimension : null,
8       
9        update: function(dimension, def_units)
10        {
11            if (dimension == this._dimension) {
12                return;
13            }
14           
15            this._dimension = dimension;
16           
17            var list = this.getChildControl("list");
18           
19            // clear everything
20            list.removeAll();
21
22            var selected;
23            var au_f;
24
25            switch (dimension) {
26            case "frequency":
27                au_f = pf.base.Bohr.f0;
28                           this.addNumItem("a.u.",  1.0);
29                           this.addNumItem("Rad/s", 2*Math.PI*au_f);
30                selected = this.addNumItem("Hz",    1.0*au_f);
31                break;
32            case "length":
33                au_f = pf.base.Bohr.a0;
34                           this.addNumItem("a.u.",    1.0);
35                           this.addNumItem("&Aring;", 1.0e8*au_f, true);
36                           this.addNumItem("nm",      1.0e7*au_f);
37                           this.addNumItem("&mu;m",   1.0e4*au_f, true);
38                selected = this.addNumItem("cm",      1.0*au_f);
39                           this.addNumItem("m",       1.0e-2*au_f);
40                break;
41            case "area":
42                au_f = Math.pow(pf.base.Bohr.a0, 2);
43                           this.addNumItem("a.u.",           1.0);
44                           this.addNumItem("Barn",           1.0e24*au_f);
45                selected = this.addNumItem("cm<sup>2</sup>", 1.0*au_f, true);
46                           this.addNumItem("m<sup>2</sup>",  1.0e-4*au_f, true);
47                break;
48            case "velocity":
49                au_f = pf.base.Bohr.v0;
50                           this.addNumItem("a.u.",     1.0);
51                selected = this.addNumItem("cm/s",     1.0*au_f);
52                           this.addNumItem("m/s",      1.0e-2*au_f);
53                           this.addNumItem("cm/&mu;s", 1.0e-6*au_f, true);
54                           this.addNumItem("v/c",      1.0/3e10*au_f);
55                break;
56            case "mass_density":
57                au_f = pf.base.Bohr.m0*pf.base.Bohr.n0;
58                           this.addNumItem("a.u.",             1.0);
59                           this.addNumItem("kg/m<sup>3</sup>", 1.0e3*au_f, true);
60                selected = this.addNumItem("g/cm<sup>3</sup>", 1.0*au_f, true);
61                break;
62            case "energy":
63                au_f = pf.base.Bohr.E0;
64                           this.addNumItem("a.u.",            1.0);
65                           this.addNumItem("cm<sup>-1</sup>", 8065.5*au_f, true);
66                selected = this.addNumItem("eV",              1.0*au_f);
67                           this.addNumItem("erg",             1.6022e-12*au_f);
68                           this.addNumItem("J",               1.6022e-19*au_f);
69                break;
70            case "pressure":
71                au_f = pf.base.Bohr.P0;
72                           this.addNumItem("a.u.",               1.0);
73                selected = this.addNumItem("Dyn/cm<sup>2</sup>", 1.0*au_f, true);
74                           this.addNumItem("Pa",                 0.1*au_f);
75                           this.addNumItem("Torr",               7.5006e-4*au_f);
76                           this.addNumItem("bar",                1.0e-6*au_f);
77                           this.addNumItem("atm",                9.8692e-7*au_f);
78                break;
79            case "power_density":
80                au_f = pf.base.Bohr.E0/pf.base.Bohr.V0/pf.base.Bohr.t0;
81                           this.addNumItem("a.u.",                 1.0);
82                           this.addNumItem("erg/cm<sup>3</sup>/s", 1.6022e-12*au_f, true);
83                           this.addNumItem("W/m<sup>3</sup>",      1.6022e-13*au_f, true);
84                selected = this.addNumItem("W/cm<sup>3</sup>",     1.6022e-19*au_f, true);
85                break;
86            case "spectral_power_density":
87                au_f = 1.0/pf.base.Bohr.V0/pf.base.Bohr.t0;
88                           this.addNumItem("a.u.",                    1.0);
89                           this.addNumItem("erg/s/cm<sup>3</sup>/eV", 1.6022e-12*au_f, true);
90                           this.addNumItem("W/m<sup>3</sup>/eV",      1.6022e-13*au_f, true);
91                selected = this.addNumItem("W/cm<sup>3</sup>/eV",     1.6022e-19*au_f, true);
92                           this.addNumItem("1/s/cm<sup>3</sup>",      1.0*au_f, true);
93                break;
94            case "efield":
95                au_f = pf.base.Bohr.F0;
96                           this.addNumItem("a.u.",     1.0);
97                           this.addNumItem("V/m",      1.0e2*au_f);
98                selected = this.addNumItem("V/cm",     1.0*au_f);
99                           this.addNumItem("StatV/cm", 1.0/300*au_f);
100                           this.addNumItem("MV/cm",    1.0e-6*au_f);
101                break;
102            case "none":
103                selected = this.addNumItem("---", 1.0);
104                break;
105            default:
106                selected = this.addNumItem("???", 1.0);
107                break;
108            }
109
110            if (def_units) {
111                var models = new Array(def_units);
112                list.setModelSelection(models);
113            } else
114            if (selected) {
115                var sels = Array(selected);
116                list.setSelection(sels);
117            }
118        }
119    }
120});
Note: See TracBrowser for help on using the repository browser.