├── _config.yml
├── favicon.ico
├── icons
├── X red.png
├── grid.eps
├── grid.png
├── X black.png
├── grid ppt.png
├── rotate.png
├── rotate90.png
├── spacer.png
├── Green check.png
├── grid thin ppt.png
├── rotate90_18.png
├── X black 18 x 18.png
├── grid ppt 18x18.png
├── grid thin ppt 18x18.png
├── green check ppt 18x13.png
├── green check ppt 24x18.png
├── 18px-Cut_font_awesome.svg.png
├── 18px-Ok_font_awesome.svg.png
├── 200px-Ok_font_awesome.svg.png
├── Reorder_font_awesome.svg.png
├── 18px-Copy_font_awesome.svg.png
├── 18px-Paste_font_awesome.svg.png
├── 18px-Remove_font_awesome.svg.png
├── Icons for Circuit Sandbox.pptx
├── Align_justify_font_awesome.svg.png
├── 18px-Question_sign_font_awesome.svg.png
├── rotate90_18.svg
├── grid.svg
└── make_icon_uri.html
├── Circuit-Sandbox.pptx
├── images
├── 42image_1.png
└── 42image_2.png
├── Translation-table.docx
├── font-awesome-4.6.3
├── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ └── fontawesome-webfont.woff2
├── less
│ ├── fixed-width.less
│ ├── screen-reader.less
│ ├── larger.less
│ ├── list.less
│ ├── core.less
│ ├── stacked.less
│ ├── font-awesome.less
│ ├── bordered-pulled.less
│ ├── rotated-flipped.less
│ ├── path.less
│ ├── animated.less
│ ├── mixins.less
│ └── variables.less
├── scss
│ ├── _fixed-width.scss
│ ├── _screen-reader.scss
│ ├── _larger.scss
│ ├── _list.scss
│ ├── _core.scss
│ ├── font-awesome.scss
│ ├── _stacked.scss
│ ├── _bordered-pulled.scss
│ ├── _rotated-flipped.scss
│ ├── _path.scss
│ ├── _animated.scss
│ ├── _mixins.scss
│ └── _variables.scss
└── HELP-US-OUT.txt
├── README.md
├── sandbox.css
├── index-fr.html
├── index-es.html
├── index-it.html
├── index-mobile.html
├── index-pt.html
├── index-hu.html
├── index-ja.html
├── index-en.html
├── index-hi.html
├── js
├── language.js
├── zh-CN.js
├── ja.js
├── download.js
├── cz.js
├── en-US.js
├── hi.js
├── hu.js
├── it.js
├── pt.js
├── fr.js
├── es.js
├── fet_vsparms.js
├── fet_vsp.js
└── hammer.min.js
├── index_bjt.html
├── index.html
└── index-lang.html
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/favicon.ico
--------------------------------------------------------------------------------
/icons/X red.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/X red.png
--------------------------------------------------------------------------------
/icons/grid.eps:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid.eps
--------------------------------------------------------------------------------
/icons/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid.png
--------------------------------------------------------------------------------
/icons/X black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/X black.png
--------------------------------------------------------------------------------
/icons/grid ppt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid ppt.png
--------------------------------------------------------------------------------
/icons/rotate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/rotate.png
--------------------------------------------------------------------------------
/icons/rotate90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/rotate90.png
--------------------------------------------------------------------------------
/icons/spacer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/spacer.png
--------------------------------------------------------------------------------
/Circuit-Sandbox.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/Circuit-Sandbox.pptx
--------------------------------------------------------------------------------
/images/42image_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/images/42image_1.png
--------------------------------------------------------------------------------
/images/42image_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/images/42image_2.png
--------------------------------------------------------------------------------
/Translation-table.docx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/Translation-table.docx
--------------------------------------------------------------------------------
/icons/Green check.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/Green check.png
--------------------------------------------------------------------------------
/icons/grid thin ppt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid thin ppt.png
--------------------------------------------------------------------------------
/icons/rotate90_18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/rotate90_18.png
--------------------------------------------------------------------------------
/icons/X black 18 x 18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/X black 18 x 18.png
--------------------------------------------------------------------------------
/icons/grid ppt 18x18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid ppt 18x18.png
--------------------------------------------------------------------------------
/icons/grid thin ppt 18x18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/grid thin ppt 18x18.png
--------------------------------------------------------------------------------
/icons/green check ppt 18x13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/green check ppt 18x13.png
--------------------------------------------------------------------------------
/icons/green check ppt 24x18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/green check ppt 24x18.png
--------------------------------------------------------------------------------
/icons/18px-Cut_font_awesome.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Cut_font_awesome.svg.png
--------------------------------------------------------------------------------
/icons/18px-Ok_font_awesome.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Ok_font_awesome.svg.png
--------------------------------------------------------------------------------
/icons/200px-Ok_font_awesome.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/200px-Ok_font_awesome.svg.png
--------------------------------------------------------------------------------
/icons/Reorder_font_awesome.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/Reorder_font_awesome.svg.png
--------------------------------------------------------------------------------
/icons/18px-Copy_font_awesome.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Copy_font_awesome.svg.png
--------------------------------------------------------------------------------
/icons/18px-Paste_font_awesome.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Paste_font_awesome.svg.png
--------------------------------------------------------------------------------
/icons/18px-Remove_font_awesome.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Remove_font_awesome.svg.png
--------------------------------------------------------------------------------
/icons/Icons for Circuit Sandbox.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/Icons for Circuit Sandbox.pptx
--------------------------------------------------------------------------------
/font-awesome-4.6.3/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/icons/Align_justify_font_awesome.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/Align_justify_font_awesome.svg.png
--------------------------------------------------------------------------------
/icons/18px-Question_sign_font_awesome.svg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/icons/18px-Question_sign_font_awesome.svg.png
--------------------------------------------------------------------------------
/font-awesome-4.6.3/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/font-awesome-4.6.3/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/font-awesome-4.6.3/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/font-awesome-4.6.3/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/willymcallister/circuit-sandbox/HEAD/font-awesome-4.6.3/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/fixed-width.less:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .@{fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/screen-reader.less:
--------------------------------------------------------------------------------
1 | // Screen Readers
2 | // -------------------------
3 |
4 | .sr-only { .sr-only(); }
5 | .sr-only-focusable { .sr-only-focusable(); }
6 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_fixed-width.scss:
--------------------------------------------------------------------------------
1 | // Fixed Width Icons
2 | // -------------------------
3 | .#{$fa-css-prefix}-fw {
4 | width: (18em / 14);
5 | text-align: center;
6 | }
7 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_screen-reader.scss:
--------------------------------------------------------------------------------
1 | // Screen Readers
2 | // -------------------------
3 |
4 | .sr-only { @include sr-only(); }
5 | .sr-only-focusable { @include sr-only-focusable(); }
6 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/HELP-US-OUT.txt:
--------------------------------------------------------------------------------
1 | I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project,
2 | Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome,
3 | comprehensive icon sets or copy and paste your own.
4 |
5 | Please. Check it out.
6 |
7 | -Dave Gandy
8 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/larger.less:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .@{fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .@{fa-css-prefix}-2x { font-size: 2em; }
11 | .@{fa-css-prefix}-3x { font-size: 3em; }
12 | .@{fa-css-prefix}-4x { font-size: 4em; }
13 | .@{fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_larger.scss:
--------------------------------------------------------------------------------
1 | // Icon Sizes
2 | // -------------------------
3 |
4 | /* makes the font 33% larger relative to the icon container */
5 | .#{$fa-css-prefix}-lg {
6 | font-size: (4em / 3);
7 | line-height: (3em / 4);
8 | vertical-align: -15%;
9 | }
10 | .#{$fa-css-prefix}-2x { font-size: 2em; }
11 | .#{$fa-css-prefix}-3x { font-size: 3em; }
12 | .#{$fa-css-prefix}-4x { font-size: 4em; }
13 | .#{$fa-css-prefix}-5x { font-size: 5em; }
14 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/list.less:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: @fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .@{fa-css-prefix}-li {
11 | position: absolute;
12 | left: -@fa-li-width;
13 | width: @fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.@{fa-css-prefix}-lg {
17 | left: (-@fa-li-width + (4em / 14));
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_list.scss:
--------------------------------------------------------------------------------
1 | // List Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-ul {
5 | padding-left: 0;
6 | margin-left: $fa-li-width;
7 | list-style-type: none;
8 | > li { position: relative; }
9 | }
10 | .#{$fa-css-prefix}-li {
11 | position: absolute;
12 | left: -$fa-li-width;
13 | width: $fa-li-width;
14 | top: (2em / 14);
15 | text-align: center;
16 | &.#{$fa-css-prefix}-lg {
17 | left: -$fa-li-width + (4em / 14);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/core.less:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .@{fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_core.scss:
--------------------------------------------------------------------------------
1 | // Base Class Definition
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix} {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/font-awesome.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables";
7 | @import "mixins";
8 | @import "path";
9 | @import "core";
10 | @import "larger";
11 | @import "fixed-width";
12 | @import "list";
13 | @import "bordered-pulled";
14 | @import "animated";
15 | @import "rotated-flipped";
16 | @import "stacked";
17 | @import "icons";
18 | @import "screen-reader";
19 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/stacked.less:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .@{fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .@{fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .@{fa-css-prefix}-inverse { color: @fa-inverse; }
21 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_stacked.scss:
--------------------------------------------------------------------------------
1 | // Stacked Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-stack {
5 | position: relative;
6 | display: inline-block;
7 | width: 2em;
8 | height: 2em;
9 | line-height: 2em;
10 | vertical-align: middle;
11 | }
12 | .#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
13 | position: absolute;
14 | left: 0;
15 | width: 100%;
16 | text-align: center;
17 | }
18 | .#{$fa-css-prefix}-stack-1x { line-height: inherit; }
19 | .#{$fa-css-prefix}-stack-2x { font-size: 2em; }
20 | .#{$fa-css-prefix}-inverse { color: $fa-inverse; }
21 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/font-awesome.less:
--------------------------------------------------------------------------------
1 | /*!
2 | * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
4 | */
5 |
6 | @import "variables.less";
7 | @import "mixins.less";
8 | @import "path.less";
9 | @import "core.less";
10 | @import "larger.less";
11 | @import "fixed-width.less";
12 | @import "list.less";
13 | @import "bordered-pulled.less";
14 | @import "animated.less";
15 | @import "rotated-flipped.less";
16 | @import "stacked.less";
17 | @import "icons.less";
18 | @import "screen-reader.less";
19 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/bordered-pulled.less:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em @fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .@{fa-css-prefix}-pull-left { float: left; }
11 | .@{fa-css-prefix}-pull-right { float: right; }
12 |
13 | .@{fa-css-prefix} {
14 | &.@{fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.@{fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .@{fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_bordered-pulled.scss:
--------------------------------------------------------------------------------
1 | // Bordered & Pulled
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-border {
5 | padding: .2em .25em .15em;
6 | border: solid .08em $fa-border-color;
7 | border-radius: .1em;
8 | }
9 |
10 | .#{$fa-css-prefix}-pull-left { float: left; }
11 | .#{$fa-css-prefix}-pull-right { float: right; }
12 |
13 | .#{$fa-css-prefix} {
14 | &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
15 | &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
16 | }
17 |
18 | /* Deprecated as of 4.4.0 */
19 | .pull-right { float: right; }
20 | .pull-left { float: left; }
21 |
22 | .#{$fa-css-prefix} {
23 | &.pull-left { margin-right: .3em; }
24 | &.pull-right { margin-left: .3em; }
25 | }
26 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/rotated-flipped.less:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
5 | .@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
6 | .@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
7 |
8 | .@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
9 | .@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .@{fa-css-prefix}-rotate-90,
15 | :root .@{fa-css-prefix}-rotate-180,
16 | :root .@{fa-css-prefix}-rotate-270,
17 | :root .@{fa-css-prefix}-flip-horizontal,
18 | :root .@{fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_rotated-flipped.scss:
--------------------------------------------------------------------------------
1 | // Rotated & Flipped Icons
2 | // -------------------------
3 |
4 | .#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
5 | .#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
6 | .#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
7 |
8 | .#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
9 | .#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
10 |
11 | // Hook for IE8-9
12 | // -------------------------
13 |
14 | :root .#{$fa-css-prefix}-rotate-90,
15 | :root .#{$fa-css-prefix}-rotate-180,
16 | :root .#{$fa-css-prefix}-rotate-270,
17 | :root .#{$fa-css-prefix}-flip-horizontal,
18 | :root .#{$fa-css-prefix}-flip-vertical {
19 | filter: none;
20 | }
21 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/path.less:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
7 | src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
8 | url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'),
9 | url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
10 | url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
11 | url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
12 | // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_path.scss:
--------------------------------------------------------------------------------
1 | /* FONT PATH
2 | * -------------------------- */
3 |
4 | @font-face {
5 | font-family: 'FontAwesome';
6 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
7 | src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
8 | url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
9 | url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
10 | url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
11 | url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
12 | // src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
13 | font-weight: normal;
14 | font-style: normal;
15 | }
16 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/animated.less:
--------------------------------------------------------------------------------
1 | // Animated Icons
2 | // --------------------------
3 |
4 | .@{fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .@{fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/icons/rotate90_18.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_animated.scss:
--------------------------------------------------------------------------------
1 | // Spinning Icons
2 | // --------------------------
3 |
4 | .#{$fa-css-prefix}-spin {
5 | -webkit-animation: fa-spin 2s infinite linear;
6 | animation: fa-spin 2s infinite linear;
7 | }
8 |
9 | .#{$fa-css-prefix}-pulse {
10 | -webkit-animation: fa-spin 1s infinite steps(8);
11 | animation: fa-spin 1s infinite steps(8);
12 | }
13 |
14 | @-webkit-keyframes fa-spin {
15 | 0% {
16 | -webkit-transform: rotate(0deg);
17 | transform: rotate(0deg);
18 | }
19 | 100% {
20 | -webkit-transform: rotate(359deg);
21 | transform: rotate(359deg);
22 | }
23 | }
24 |
25 | @keyframes fa-spin {
26 | 0% {
27 | -webkit-transform: rotate(0deg);
28 | transform: rotate(0deg);
29 | }
30 | 100% {
31 | -webkit-transform: rotate(359deg);
32 | transform: rotate(359deg);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Circuit Sandbox
2 |
3 | A simulator for experimenting with circuits, written entirely in Javascript.
4 |
5 | Click... draw... simulate. There's no installation.
6 |
7 | A teaching tool for [spinningnumbers.org](https://spinningnumbers.org).
8 |
9 | Circuit Sandbox is available in,
10 | * English,
11 | * Spanish, (courtesy of Khan Academy volunteer translators)
12 | * Simplified Chinese, (courtesy of GitHub user Zhu Hao)
13 | * Japanese, (courtesy of my friend Leslie Shiozaki, a professional translator)
14 | * Hindi, (courtesy of Aniruddh Pratap Singh, a 12th grade student who wants to become an engineer.)
15 | * Portuguese, (courtesy of Luís F. V. Peres, graduando em engenharia elétrica de Universidade de São Paulo)
16 | * Hungarian, (courtesy of Török Attila)
17 | * French, (contributed by Laurent Defoy, Institute De La Providence Herve, Belgium)
18 | * Italian, (contributed by Paolo Giarrusso)
19 |
20 | [Circuit Sandbox documentation](https://spinningnumbers.org/a/circuit-sandbox.html)
21 |
22 | [Circuit Sandbox simulator](https://spinningnumbers.org/circuit-sandbox/index.html)
--------------------------------------------------------------------------------
/sandbox.css:
--------------------------------------------------------------------------------
1 | * {font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;}
2 |
3 | html {
4 | --background-color: #fdfdfd;
5 | --text-color: #000;
6 | --select-background: #F6F7F7;
7 | --select-border: 1px solid #D6D8DA; // KA gray85 D6D8DA
8 | height: 100%;
9 | }
10 | @media (prefers-color-scheme: dark) {
11 | html {
12 | --background-color: #353535;
13 | --text-color: #BABEC2;
14 | --select-background: #353535; // $grey-color-darkish
15 | --select-border: 1px solid #D6D8DA; // KA gray85 D6D8DA
16 | }
17 | }
18 |
19 | body {background-color:var(--background-color);
20 | height: 100%;
21 | margin: 0.5em;
22 | display: flex;
23 | align-items: center;
24 | justify-content: center;
25 | flex-direction: column;
26 | }
27 |
28 | p {color:var(--text-color);}
29 |
30 | select {
31 | font-size: 15px;
32 | color: var(--text-color);
33 | border: var(--select-border);
34 | background: var(--select-background);
35 | border-radius: 4px;
36 | }
37 |
38 | a { color: #3C91E5; text-decoration: none; }
39 | a:hover { text-decoration: underline; }
--------------------------------------------------------------------------------
/icons/grid.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
18 |
--------------------------------------------------------------------------------
/index-fr.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Circuit Sandbox
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Circuit Sandbox en français
27 | From spinningnumbers.org... page d'aide (help)
28 | schematic.js © 2017-2021 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
29 |
30 |
--------------------------------------------------------------------------------
/index-es.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Circuit Sandbox
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Circuit Sandbox en español
27 | From spinningnumbers.org... página de ayuda (help)
28 | schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
29 |
30 |
--------------------------------------------------------------------------------
/index-it.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Circuit Sandbox
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Circuit Sandbox in italiano
27 | From spinningnumbers.org... página de ayuda (help)
28 | schematic.js © 2017-2023 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
29 |
30 |
--------------------------------------------------------------------------------
/index-mobile.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Circuit Sandbox
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Circuit Sandbox simulator
27 | From spinningnumbers.org... help page
28 | schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
29 |
30 |
31 |
--------------------------------------------------------------------------------
/index-pt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Circuit Sandbox
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Circuit Sandbox em português
27 | From spinningnumbers.org... página de ajuda (help)
28 | schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
29 |
30 |
--------------------------------------------------------------------------------
/index-hu.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Áramköri homokozó
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Áramköri Homokozó magyarul (Circuit Sandbox in Hungarian)
27 | From spinningnumbers.org... Súgó oldal (help)
28 | schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
29 |
30 |
--------------------------------------------------------------------------------
/index-ja.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | サーキットサンドボックスの Circuit Sandbox
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Circuit Sandbox simulator 日本語で (Japanese)
27 | From spinningnumbers.org... サーキットサンドボックスのヘルプ (help)
28 | schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
29 |
30 |
--------------------------------------------------------------------------------
/index-en.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Circuit Sandbox
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Circuit Sandbox simulator from spinningnumbers.org ⁓ help ⁓ github
27 | © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
28 |
29 |
--------------------------------------------------------------------------------
/index-hi.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | सर्किट सैंडबॉक्स (Circuit Sandbox)
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Circuit Sandbox simulator हिंदी में (Hindi)
27 | From spinningnumbers.org... सर्किट सैंडबॉक्स मदद पृष्ठ (help)
28 | schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
29 |
30 |
--------------------------------------------------------------------------------
/js/language.js:
--------------------------------------------------------------------------------
1 | function switchLanguage(_lang) {
2 | // Source the proper translation table (i18n) based on lang
3 | var head = document.getElementsByTagName('head')[0];
4 | var script = document.createElement('script');
5 | script.type = 'text/javascript';
6 | switch (_lang) {
7 | case 'es':
8 | script.src = 'js/es.js';
9 | break;
10 | case 'fr':
11 | script.src = 'js/fr.js';
12 | break;
13 | case 'it':
14 | script.src = 'js/it.js';
15 | break;
16 | case 'ja':
17 | script.src = 'js/ja.js';
18 | break;
19 | case 'hu':
20 | script.src = 'js/hu.js';
21 | break;
22 | case 'hi':
23 | script.src = 'js/hi.js';
24 | break;
25 | case 'pt':
26 | case 'pt-BR':
27 | case 'pt-PT':
28 | script.src = 'js/pt.js';
29 | break;
30 | case 'zh':
31 | case 'zh-CN':
32 | script.src = 'js/zh-CN.js';
33 | break;
34 | case 'cz':
35 | script.src = 'js/cz.js';
36 | break;
37 | default:
38 | script.src = 'js/en-US.js';
39 | }
40 | document.head.appendChild(script);
41 | }
42 |
43 | var browserLang = navigator.language; // detect browser language
44 | var userLang = window.localStorage.getItem('language'); // detect language preference saved in the browser's localStorage
45 | var lang = userLang ? userLang : browserLang; // lang is also used in index.html to set the dropdown box value.
46 | switchLanguage(lang); // select the proper translation table i18n variable
47 | // lang is also used by index.html to set the dropdown box value.
48 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/less/mixins.less:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | .fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | .fa-icon-rotate(@degrees, @rotation) {
15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})";
16 | -webkit-transform: rotate(@degrees);
17 | -ms-transform: rotate(@degrees);
18 | transform: rotate(@degrees);
19 | }
20 |
21 | .fa-icon-flip(@horiz, @vert, @rotation) {
22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)";
23 | -webkit-transform: scale(@horiz, @vert);
24 | -ms-transform: scale(@horiz, @vert);
25 | transform: scale(@horiz, @vert);
26 | }
27 |
28 |
29 | // Only display content to screen readers. A la Bootstrap 4.
30 | //
31 | // See: http://a11yproject.com/posts/how-to-hide-content/
32 |
33 | .sr-only() {
34 | position: absolute;
35 | width: 1px;
36 | height: 1px;
37 | padding: 0;
38 | margin: -1px;
39 | overflow: hidden;
40 | clip: rect(0,0,0,0);
41 | border: 0;
42 | }
43 |
44 | // Use in conjunction with .sr-only to only display content when it's focused.
45 | //
46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
47 | //
48 | // Credit: HTML5 Boilerplate
49 |
50 | .sr-only-focusable() {
51 | &:active,
52 | &:focus {
53 | position: static;
54 | width: auto;
55 | height: auto;
56 | margin: 0;
57 | overflow: visible;
58 | clip: auto;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/font-awesome-4.6.3/scss/_mixins.scss:
--------------------------------------------------------------------------------
1 | // Mixins
2 | // --------------------------
3 |
4 | @mixin fa-icon() {
5 | display: inline-block;
6 | font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
7 | font-size: inherit; // can't have font-size inherit on line above, so need to override
8 | text-rendering: auto; // optimizelegibility throws things off #1094
9 | -webkit-font-smoothing: antialiased;
10 | -moz-osx-font-smoothing: grayscale;
11 |
12 | }
13 |
14 | @mixin fa-icon-rotate($degrees, $rotation) {
15 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})";
16 | -webkit-transform: rotate($degrees);
17 | -ms-transform: rotate($degrees);
18 | transform: rotate($degrees);
19 | }
20 |
21 | @mixin fa-icon-flip($horiz, $vert, $rotation) {
22 | -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)";
23 | -webkit-transform: scale($horiz, $vert);
24 | -ms-transform: scale($horiz, $vert);
25 | transform: scale($horiz, $vert);
26 | }
27 |
28 |
29 | // Only display content to screen readers. A la Bootstrap 4.
30 | //
31 | // See: http://a11yproject.com/posts/how-to-hide-content/
32 |
33 | @mixin sr-only {
34 | position: absolute;
35 | width: 1px;
36 | height: 1px;
37 | padding: 0;
38 | margin: -1px;
39 | overflow: hidden;
40 | clip: rect(0,0,0,0);
41 | border: 0;
42 | }
43 |
44 | // Use in conjunction with .sr-only to only display content when it's focused.
45 | //
46 | // Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
47 | //
48 | // Credit: HTML5 Boilerplate
49 |
50 | @mixin sr-only-focusable {
51 | &:active,
52 | &:focus {
53 | position: static;
54 | width: auto;
55 | height: auto;
56 | margin: 0;
57 | overflow: visible;
58 | clip: auto;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/icons/make_icon_uri.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Make an icon
4 |
5 |
6 |
7 | How to make an icon uri for Circuit Sandbox
8 |
9 | PNG images are created in PowerPoint file "Illustration Fodder.ppt", in the Circuit Siulator icons/ folder
10 |
11 |
Icons with PowerPoint
12 |
13 | - Draw the icon in PowerPoint, save it as a .png.
14 |
- Open the icon in Preview and resize to 18 x 18 pixels.
15 |
- Add a link to the icon below, in this file.
16 |
17 | Icons with Adobe Illustrator
18 |
19 | - Draw the icon in Illustrator at actual scale, save as .svg.
20 |
- During save, uncheck "responsive" (or try both ways)
21 |
- Add a link to the icon below, in this file.
22 |
23 |
24 |
25 | - right-click on icon image, INSPECT
26 | - right-click on "img src=somelink", OPEN LINK IN RESOURCES PANEL
27 | - right-click on image, COPY IMAGE AS DATA URL
28 | - paste into schematic javascript file as ok_icon.src = 'data:image/png;base64,iVBORw0K ...
29 |
30 |
31 |
32 | These instructions come from:
33 |
https://www.abeautifulsite.net/convert-an-image-to-a-data-uri-with-your-browser/
34 |
35 |
36 |
37 |
38 |
39 |
40 |
spacer icon
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/index_bjt.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Circuit Sandbox
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | Circuit Sandbox simulator
27 | From spinningnumbers.org... help page
28 | schematic.js © 2017-2020 Willy McAllister, © 2016 Khan Academy, Inc., © 2012 EdX, © 2011, 2018 MIT EECS
29 |
30 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 | Circuit Sandbox
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | Circuit Sandbox simulator
36 | spinningnumbers.org ⁓
37 | help ⁓
38 | github
39 |
40 |
52 |
53 |
63 |
64 | © 2011, 2018 MIT EECS, © 2012 EdX, © 2016-2024 Spinning Numbers
65 |
66 |
67 |
--------------------------------------------------------------------------------
/index-lang.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 | Circuit Sandbox
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
60 |
61 |
68 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 | Circuit Sandbox simulator
85 | spinningnumbers.org ⁓
86 | help ⁓
87 | github
88 |
89 |
99 |
100 |
110 |
111 | © 2016-2021 Willy McAllister, © 2012 EdX, © 2011, 2018 MIT EECS
112 |
113 |
114 |
--------------------------------------------------------------------------------
/js/zh-CN.js:
--------------------------------------------------------------------------------
1 | var i18n = {
2 | error1: '抱歉,启动原理图工具时出现浏览器错误。我们建议使用最新版本的Firefox和Chrome。',
3 | Ground_connection: '接地连接',
4 | Node_label: '节点标签',
5 | Voltage_source: '电压源',
6 | Current_source: '电流源',
7 | Resistor: '电阻',
8 | Capacitor: '电容',
9 | Inductor: '电感',
10 | Op_Amp: '运算放大器',
11 | Diode: '二极管',
12 | NFet: 'N沟道MOS管',
13 | PFet: 'P沟道MOS管',
14 | NPN: 'NPN',
15 | PNP: 'PNP',
16 | Voltage_probe: '电压探头',
17 | Current_probe: '电流探头',
18 | drag_onto_diagram: ': 拖动或点击插入',
19 | Help: '帮助:显示帮助页面',
20 | Grid: '网格:切换网格显示',
21 | Link_tip: '链接:分享电路的链接',
22 | Cut: '剪切选定的组件到剪贴板',
23 | Copy:'将选定的组件复制到剪贴板',
24 | Paste:'将剪贴板粘贴到原理图上',
25 | Delete:'删除选定的组件',
26 | Rotate:'旋转选定的组件',
27 | Save_netlist: '保存网表',
28 | Open_netlist: '打开网表',
29 | Select_netlist: '选择网表',
30 | Perform_DC_Analysis: '执行直流分析',
31 | DC_Analysis: '直流分析',
32 | Perform_AC_Analysis: '执行交流小信号分析',
33 | Perform_Transient_Analysis: '执行瞬态分析',
34 | Transient_Analysis: '瞬态分析',
35 | Edit_Properties: '编辑属性',
36 | Link: '链接',
37 | Sharable_Link: '分享链接',
38 |
39 | points_per_decade: 'Number of points/decade',
40 | Starting_frequency: '开始频率 (Hz)',
41 | Ending_frequency: '结束频率 (Hz)',
42 | source_for_ac: '需要交流分析的电压或电流源的名字',
43 | AC_Analysis_add_a_voltage_probe: '交流分析:在电路图中添加一个电压探头!',
44 | AC_Analysis: '交流分析',
45 | Zero_ac_response: '交流响应为0,DB尺度上为负无穷',
46 | Near_zero_ac_response: '接近零交流响应, 删除 ',
47 | probe: ' 探针',
48 |
49 | // Alerts and warnings from the circuit simulator
50 | Alert: '警告',
51 | ckt_alert1: '警告!电路有电压源回路或电源短路或电流探头短路,请移除导致短路的电源或导线。',
52 | ckt_alert2: '警告!模拟器可能会产生无意义的结果,或者由于非法电路没有结果。',
53 | ckt_warning1: '警告!两个电路元件共享相同的名称',
54 | ckt_alert3: '请至少连接一个接地线。',
55 | ckt_alert4: '牛顿法失败了,你电流源是否有接地?',
56 | ckt_alert5: '牛顿法失败了,它可能是你的电路,也可能是我们的模拟器出错了。',
57 | ckt_alert6: 'DC分析失败,尝试从零开始进行瞬态分析。',
58 | ckt_alert7: 'AC 指向未知的源 ',
59 | ckt_alert8: 'AC 分析失败, 未知源',
60 |
61 | //ckt_error1: 'M行不匹配b或列与x不匹配。',
62 | //ckt_error2: 'A的行或列对B太大',
63 | //ckt_error3: 'A的行或列对于C来说太大',
64 | //ckt_error4: '标量a和标量b必须是标量或数组',
65 | //ckt_error5: '行或列 > dest的行或列',
66 | //ckt_error6: '行或列 > dest的列或行',
67 |
68 | log_Frequency: 'log10(频率单位 Hz)',
69 | degrees: 'degrees',
70 | AC_Phase: 'AC 相位',
71 | AC_Magnitude: 'AC 幅度',
72 |
73 | Minimum_number_of_timepoints: '最少数量的时间点',
74 | Stop_time_seconds: '停止时间 (seconds)',
75 | tstop_lbl: '停止时间',
76 | Transient_Analysis_add_a_probe: '瞬态分析:为图表添加一个探针!',
77 |
78 | //Use creating phrasing to get this right:
79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ' which is not an actual circuit node');
80 | The: '这个 ',
81 | probe_is_connected_to_node: ' 探针被链接到节点 ',
82 | which_is_not_an_actual_circuit_node: ' 不是一个真实的电路节点',
83 |
84 | Voltage: '电压',
85 | Current: '电流',
86 | Time: '时间',
87 | Node_has_two_conflicting_labels: '节点有两个相互冲突的标签: ',
88 |
89 | DC_value: '直流值',
90 |
91 | impulse: '冲激信号',
92 | Height: '高度',
93 | Width: '宽度 (secs)',
94 |
95 | step: '阶跃信号',
96 | Initial_value: '初始值',
97 | Plateau_value: '稳态值',
98 | Delay_until_step: '延迟到阶跃发生 (secs)',
99 | Rise_time: '上升时间 (secs)',
100 |
101 | square: '方波信号',
102 | Frequency: '频率 (Hz)',
103 | Duty_cycle: '占空比 (%)',
104 |
105 | triangle: '三角波',
106 | ramp: '坡道',
107 | Slope: '坡 (伏/秒)',
108 |
109 | pwl: '分段线性',
110 | pwl_repeating: '分段线性 (重复)',
111 | Comma_separated_list: '逗号分隔的交替时间和值的列表',
112 |
113 | pulse: '脉冲信号',
114 | Delay_until_pulse: '延迟到脉冲发生 (secs)',
115 | Time_for_first_transition: '第一次跳变时间 (secs)',
116 | Time_for_second_transition: '第二次跳变时间 (secs)',
117 | Pulse_width: '脉冲宽度 (secs)',
118 | Period: '间隔 (secs)',
119 |
120 | sin: '正弦信号',
121 | Offset_value: '偏移值',
122 | Amplitude: '振幅',
123 | Delay_until_sin_starts: '延迟到正弦开始 (secs)',
124 | Phase_offset_degrees: '相位偏移 (degrees)',
125 |
126 | Circuit_Sandbox_Help: 'CIRCUIT SANDBOX 帮助',
127 | name: '名字',
128 | value: '值',
129 | label: '标签',
130 | r: 'R',
131 | c: 'C',
132 | l: 'L',
133 | color: '颜色',
134 | offset: '偏移',
135 | area: 'Area',
136 | type: '类型',
137 | normal: 'normal',
138 | ideal: 'ideal',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: 'W/L',
142 | lambda: 'λ',
143 | A: 'A',
144 | Plot_color: '绘制颜色',
145 | Plot_offset: '绘图偏移',
146 | dc: 'dc',
147 |
148 | Gain: 'A',
149 | Rin: 'Rin',
150 | Rout: 'Rout',
151 |
152 | red: '红色',
153 | green: '绿色',
154 | blue: '蓝色',
155 | cyan: '青色',
156 | magenta: '品红色',
157 | yellow: '黄色',
158 | orange: '橙色',
159 | black: '黑色',
160 | xaxis: 'x 轴',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: '𝛼F',
165 | alphaR: '𝛼R',
166 |
167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.",
168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.",
169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.",
170 | delete_ctl: "Delete component. Also try 'Del'.",
171 |
172 | last_line: '最后一行,没有逗号'
173 | };
174 |
175 | var strSHelp = "CIRCUIT SANDBOX 帮助\n\n"; //embedded Help
176 | var strAddC = "添加元件:点击零件箱中的零件,然后放置到原理图来添加零件。\n\n";
177 | var strAddW = "添加导线:导线从连接点开始(空心圆圈)。触摸连接以开始连线,拖动和释放。\n\n";
178 | var strSel = "选择:使用按住鼠标按键拖动产生的矩形选择组件。 \n(桌面:)按住Shift键单击以包含其他组件。\n\n";
179 | var strMove = "移动:触摸并拖动到新的位置。\n\n";
180 | var strDel = "删除:点击选择,然后点击X图标或点击退格。\n\n";
181 | var strRot = "旋转/镜像:单击以选择,然后单击旋转图标或键入字母 \"r\" 来旋转90度. 重复更多的旋转和镜像(共8个)。\n\n";
182 | var strView = "";
183 | var strProp = "属性:双击组件可以改变属性,如电阻或电压。\n\n";
184 | var strNum = "可以使用工程符号输入数字:\n\
185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\
186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15";
187 |
--------------------------------------------------------------------------------
/js/ja.js:
--------------------------------------------------------------------------------
1 | var i18n = {
2 | error1: '回路図ツールの開始にあたってブラウザのエラーがありました。最新バージョンの Firefox および Chrome の使用をお勧めします。',
3 | Ground_connection: 'アース接続',
4 | Node_label: 'ノードラベル',
5 | Voltage_source: '電圧源',
6 | Current_source: '電流源',
7 | Resistor: '抵抗器',
8 | Capacitor: 'コンデンサ',
9 | Inductor: 'インダクタ',
10 | Op_Amp: 'オペアンプ',
11 | Diode: 'ダイオード',
12 | NFet: 'NFet',
13 | PFet: 'PFet',
14 | NPN: 'NPN',
15 | PNP: 'PNP',
16 | Voltage_probe: '電圧プローブ',
17 | Current_probe: '電流プローブ',
18 | drag_onto_diagram: ': ドラッグまたはタップして挿入する',
19 | Help: 'ヘルプ: ヘルプページを表示する',
20 | Grid: 'グリッド: グリッド表示を切り替える',
21 | Link_tip: 'リンク: 回路へのリンクを共有する',
22 | Cut: '選択したコンポーネントをクリップボードにカットする',
23 | Copy:'選択したコンポーネントをクリップボードにコピーする',
24 | Paste:'クリップボードを回路図に貼り付ける',
25 | Delete:'選択したコンポーネントを削除する',
26 | Rotate:'選択したコンポーネントを回転させる',
27 | Save_netlist: 'ネットリストを保存する',
28 | Open_netlist: 'ネットリストを開く',
29 | Select_netlist: 'ネットリストを選択する',
30 | Perform_DC_Analysis: 'DC 解析を実行する',
31 | DC_Analysis: 'DC 解析',
32 | Perform_AC_Analysis: 'AC 小信号解析を実行する',
33 | Perform_Transient_Analysis: '過渡解析を実行する',
34 | Transient_Analysis: '過渡解析',
35 | Edit_Properties: 'プロパティを編集する',
36 | Link: 'リンク',
37 | Sharable_Link: '共有可能なリンク',
38 |
39 | points_per_decade: 'ポイント数/ディケード',
40 | Starting_frequency: '開始周波数 (Hz) ',
41 | Ending_frequency: '終了周波数 (Hz)',
42 | source_for_ac: 'AC の V または I ソース名',
43 | AC_Analysis_add_a_voltage_probe: 'AC 解析: 電圧プローブを図に追加してください!',
44 | AC_Analysis: 'AC 解析',
45 | Zero_ac_response: 'AC 応答ゼロ、dB スケールで無限大',
46 | Near_zero_ac_response: 'AC 応答がゼロに近い、取り除く',
47 | probe: ' プローブ',
48 |
49 | // Alerts and warnings from the circuit simulator
50 | Alert: '警報',
51 | ckt_alert1: '警告! 回路に電圧源ループがある、あるいは電源または電流プローブがワイヤで短絡しています。短絡の原因となっている電源またはワイヤを取り除いてください。',
52 | ckt_alert2: '警告! シミュレータが無意味な結果をもたらす、または不正回路が原因で結果が得られないことがあります。',
53 | ckt_warning1: '警告! 2つの回路要素が同じ名前を共有しています。',
54 | ckt_alert3: '少なくとも1つはアース接続してください。',
55 | ckt_alert4: 'ニュートン法に失敗しました。電流源には接地への導電性パスがありますか?',
56 | ckt_alert5: 'ニュートン法に失敗しました。あなたの回路またはこちらのシミュレータに問題があるかもしれません。',
57 | ckt_alert6: 'DC に失敗しました。過渡解析をゼロから始めてください。',
58 | ckt_alert7: 'AC 解析が未知のソースに言及しています: ',
59 | ckt_alert8: 'AC 解析に失敗しました。未知のソース。',
60 |
61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.',
62 | //ckt_error2: 'Row or columns of A too large for B',
63 | //ckt_error3: 'Row or columns of A too large for C',
64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays',
65 | //ckt_error5: 'Rows or cols > rows or cols of dest',
66 | //ckt_error6: 'Rows or cols > cols or rows of dest',
67 |
68 | log_Frequency: 'ログ10(周波数 Hz)',
69 | degrees: '度',
70 | AC_Phase: '交流位相',
71 | AC_Magnitude: 'AC の大きさ',
72 |
73 | Minimum_number_of_timepoints: '時点の最小数',
74 | Stop_time_seconds: '停止時間 (秒)',
75 | tstop_lbl: '停止時間',
76 | Transient_Analysis_add_a_probe: '過渡解析: プローブを図に追加してください!',
77 |
78 | //Use creating phrasing to get this right:
79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ' which is not an actual circuit node');
80 | The: ' ',
81 | probe_is_connected_to_node: ' プローブは、実際の回路ノードでない ',
82 | which_is_not_an_actual_circuit_node: ' ノードに接続されている',
83 |
84 | Voltage: '電圧',
85 | Current: '電流',
86 | Time: '時間',
87 | Node_has_two_conflicting_labels: 'ノードには2つの相反するラベルがついている: ',
88 |
89 | DC_value: 'DC 値',
90 |
91 | impulse: 'インパルス',
92 | Height: '高さ',
93 | Width: '幅 (秒)',
94 |
95 | step: 'ステップ',
96 | Initial_value: '初期値',
97 | Plateau_value: 'プラトー値',
98 | Delay_until_step: 'ステップまで遅らせる (秒)',
99 | Rise_time: '立ち上がり時間 (秒)',
100 |
101 | square: '四角',
102 | Frequency: '周波数 (Hz)',
103 | Duty_cycle: 'デューティサイクル (%)',
104 |
105 | triangle: '三角',
106 | ramp: 'ランプ',
107 | Slope: 'スロープ (ボルト/秒)',
108 |
109 | pwl: 'pwl',
110 | pwl_repeating: 'pwl (反復)',
111 | Comma_separated_list: '時間と値が交互になったコンマ分離リスト',
112 |
113 | pulse: 'パルス',
114 | Delay_until_pulse: 'パルスまで遅らせる (秒)',
115 | Time_for_first_transition: '最初の移行までの時間 (秒)',
116 | Time_for_second_transition: '2番目の移行までの時間 (秒)',
117 | Pulse_width: 'パルス幅 (秒)',
118 | Period: '期間 (秒)',
119 |
120 | sin: 'サイン',
121 | Offset_value: 'オフセット値',
122 | Amplitude: '振幅',
123 | Delay_until_sin_starts: 'サイン開始まで遅らせる (秒)',
124 | Phase_offset_degrees: 'フェーズオフセット (度)',
125 |
126 | Circuit_Sandbox_Help: 'サーキットサンドボックスのヘルプ',
127 | name: '名称',
128 | value: '値',
129 | label: 'ラベル',
130 | r: 'R',
131 | c: 'C',
132 | l: 'L',
133 | color: 'カラー',
134 | offset: 'オフセット',
135 | area: 'エリア',
136 | type: 'Type',
137 | normal: '標準',
138 | ideal: '理想的',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: '幅/長さ',
142 | lambda: 'λ',
143 | A: 'A',
144 | Plot_color: 'プロットカラー',
145 | Plot_offset: 'プロットオフセット',
146 | dc: 'dc',
147 |
148 | Gain: 'A',
149 | Rin: 'Rin',
150 | Rout: 'Rout',
151 |
152 | red: 'レッド',
153 | green: 'グリーン',
154 | blue: 'ブルー',
155 | cyan: 'シアン',
156 | magenta: 'マゼンタ',
157 | yellow: 'イエロー',
158 | orange: 'オレンジ',
159 | black: 'ブラック',
160 | xaxis: 'x 軸',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: '𝛼F',
165 | alphaR: '𝛼R',
166 |
167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.",
168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.",
169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.",
170 | delete_ctl: "Delete component. Also try 'Del'.",
171 |
172 | last_line: '最後の行、コンマ無し'
173 | };
174 |
175 | var strSHelp = "サーキットサンドボックスのヘルプ \n\n"; //embedded Help
176 | var strAddC = "コンポーネントを追加する: パーツビンのパーツをタップし、次に回路図をタップする。\n\n";
177 | var strAddW = "ワイヤを追加する: 接続ポイント (白丸) にタッチして始める。ドラッグする。リリースする。\n\n";
178 | var strSel = "選択する: 長方形をドラッグしてコンポーネントを選ぶ。 \n(デスクトップ:) 別のコンポーネントも含めるには、シフトクリックする。\n\n";
179 | var strMove = "動かす: タッチして新しい場所にドラッグする。\n\n";
180 | var strDel = "削除する: タップして選び、次に X アイコンをタップするまたはバックスペースキーを押す。\n\n";
181 | var strRot = "回転/反転させる: クリックして選び、次に回転アイコンをクリックするか、90度回転の場合は r のキーをタイプする。さらに回転/反転させたい場合は繰り返す (最高8回まで)。\n\n";
182 | var strView = "";
183 | var strProp = "プロパティー: プロパティーを変えるにはコンポーネントをタップする。\n\n";
184 | var strNum = "エンジニアリング表記法を使って数字を入れることもできる。\n\
185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\
186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15";
187 |
--------------------------------------------------------------------------------
/js/download.js:
--------------------------------------------------------------------------------
1 | //download.js v4.2, by dandavis; 2008-2016. [CCBY2] see http://danml.com/download.html for tests/usage
2 | // v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime
3 | // v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs
4 | // v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.
5 | // v4 adds AMD/UMD, commonJS, and plain browser support
6 | // v4.1 adds url download capability via solo URL argument (same domain/CORS only)
7 | // v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors
8 | // https://github.com/rndme/download
9 |
10 | (function (root, factory) {
11 | if (typeof define === 'function' && define.amd) {
12 | // AMD. Register as an anonymous module.
13 | define([], factory);
14 | } else if (typeof exports === 'object') {
15 | // Node. Does not work with strict CommonJS, but
16 | // only CommonJS-like environments that support module.exports,
17 | // like Node.
18 | module.exports = factory();
19 | } else {
20 | // Browser globals (root is window)
21 | root.download = factory();
22 | }
23 | }(this, function () {
24 |
25 | return function download(data, strFileName, strMimeType) {
26 |
27 | var self = window, // this script is only for browsers anyway...
28 | defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads
29 | mimeType = strMimeType || defaultMime,
30 | payload = data,
31 | url = !strFileName && !strMimeType && payload,
32 | anchor = document.createElement("a"),
33 | toString = function(a){return String(a);},
34 | myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),
35 | fileName = strFileName || "download",
36 | blob,
37 | reader;
38 | myBlob= myBlob.call ? myBlob.bind(self) : Blob ;
39 |
40 | if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback
41 | payload=[payload, mimeType];
42 | mimeType=payload[0];
43 | payload=payload[1];
44 | }
45 |
46 |
47 | if(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument
48 | fileName = url.split("/").pop().split("?")[0];
49 | anchor.href = url; // assign href prop to temp anchor
50 | if(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:
51 | var ajax=new XMLHttpRequest();
52 | ajax.open( "GET", url, true);
53 | ajax.responseType = 'blob';
54 | ajax.onload= function(e){
55 | download(e.target.response, fileName, defaultMime);
56 | };
57 | setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:
58 | return ajax;
59 | } // end if valid url?
60 | } // end if url?
61 |
62 |
63 | //go ahead and download dataURLs right away
64 | if(/^data\:[\w+\-]+\/[\w+\-]+[,;]/.test(payload)){
65 |
66 | if(payload.length > (1024*1024*1.999) && myBlob !== toString ){
67 | payload=dataUrlToBlob(payload);
68 | mimeType=payload.type || defaultMime;
69 | }else{
70 | return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:
71 | navigator.msSaveBlob(dataUrlToBlob(payload), fileName) :
72 | saver(payload) ; // everyone else can save dataURLs un-processed
73 | }
74 |
75 | }//end if dataURL passed?
76 |
77 | blob = payload instanceof myBlob ?
78 | payload :
79 | new myBlob([payload], {type: mimeType}) ;
80 |
81 |
82 | function dataUrlToBlob(strUrl) {
83 | var parts= strUrl.split(/[:;,]/),
84 | type= parts[1],
85 | decoder= parts[2] == "base64" ? atob : decodeURIComponent,
86 | binData= decoder( parts.pop() ),
87 | mx= binData.length,
88 | i= 0,
89 | uiArr= new Uint8Array(mx);
90 |
91 | for(i;i rows or cols of dest',
66 | //ckt_error6: 'Rows or cols > cols or rows of dest',
67 |
68 | log_Frequency: 'log(Frekvence v Hz)',
69 | degrees: 'stupně',
70 | AC_Phase: 'AC Fáze',
71 | AC_Magnitude: 'AC Amplituda',
72 |
73 | Minimum_number_of_timepoints: 'Minimální počet časových bodů',
74 | Stop_time_seconds: 'Čas zastavení (s)',
75 | tstop_lbl: 'čas zastavení',
76 | Transient_Analysis_add_a_probe: 'Přechodová analýza: přidejte sondu do schématu!',
77 |
78 | //Use creative phrasing to get this sentence to come out right:
79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node');
80 | The: '',
81 | probe_is_connected_to_node: 'Sonda je připojená k uzlu ',
82 | which_is_not_an_actual_circuit_node: ', který není uzlem obvodu.',
83 |
84 | Voltage: 'Napětí',
85 | Current: 'Proud',
86 | Time: 'Čas',
87 | Node_has_two_conflicting_labels: 'Uzel má dvě konfliktní označení: ',
88 |
89 | DC_value: 'Stejnosměrná hodnota',
90 |
91 | impulse: 'Impuls',
92 | Height: 'Výška',
93 | Width: 'Šířka (s)',
94 |
95 | step: 'skok',
96 | Initial_value: 'Počáteční hodnota',
97 | Plateau_value: 'Hodnota plató',
98 | Delay_until_step: 'Zpoždění do kroku (s)',
99 | Rise_time: 'Doba náběhu (s)',
100 |
101 | square: 'obdélník',
102 | Frequency: 'Frekvence (Hz)',
103 | Duty_cycle: 'Střída (%)',
104 |
105 | triangle: 'trojúhelník',
106 | ramp: 'rampa',
107 | Slope: 'Sklon (V/s)',
108 |
109 | pwl: 'po částech lineární',
110 | pwl_repeating: 'po částech lineární (opakující se)',
111 | Comma_separated_list: 'Seznam časů a hodnot oddělený čárkami',
112 |
113 | pulse: 'puls',
114 | Delay_until_pulse: 'Zpoždění do pulsu (s)',
115 | Time_for_first_transition: 'Čas pro první přechod (s)',
116 | Time_for_second_transition: 'Čas pro druhý přechod (s)',
117 | Pulse_width: 'Šířka pulsu (s)',
118 | Period: 'Perioda (s)',
119 |
120 | sin: 'sin',
121 | Offset_value: 'Hodnota offsetu',
122 | Amplitude: 'Amplituda',
123 | Delay_until_sin_starts: 'Zpoždění do začátku sinu (s)',
124 | Phase_offset_degrees: 'Fázový posun (stupně)',
125 |
126 | Circuit_Sandbox_Help: 'NÁPOVĚDA CIRCUIT SANDBOX',
127 | name: 'Název',
128 | value: 'Hodnota',
129 | label: 'Označení',
130 | r: 'R',
131 | c: 'C',
132 | l: 'L',
133 | color: 'Barva',
134 | offset: 'Offset',
135 | area: 'Plocha',
136 | type: 'Typ',
137 | normal: 'Normální',
138 | ideal: 'Ideální',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: 'W/L',
142 | lambda: 'λ',
143 | A: 'A',
144 | Plot_color: 'Barva grafu',
145 | Plot_offset: 'Offset grafu',
146 | dc: 'dc',
147 |
148 | Gain: 'A',
149 | Rin: 'Rin',
150 | Rout: 'Rout',
151 |
152 | red: 'červená',
153 | green: 'zelená',
154 | blue: 'modrá',
155 | cyan: 'azurová',
156 | magenta: 'purpurová',
157 | yellow: 'žlutá',
158 | orange: 'oranžová',
159 | black: 'černá',
160 | xaxis: 'osa x',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: '𝛼F',
165 | alphaR: '𝛼R',
166 | last_line: 'poslední řádka, bez čárky'
167 | };
168 |
169 | var strSHelp = "NÁPOVĚDA CIRCUIT SANDBOX\n\n"; //embedded Help
170 | var strAddC = "Přidat součást: Klepněte na součást v přihrádce součástí a poté klepněte na schéma.\n\n";
171 | var strAddW = "Přidat vodič: Začněte dotykem na bod připojení (otevřená kružnice). Táhněte a uvolněte.\n\n";
172 | var strSel = "Vybrat: Přetažením obdélníku vyberte součásti. \n(plocha:) Klepnutím se stisknutou klávesou Shift zahrnete další komponentu.\n\n";
173 | var strMove = "Přesunout: Dotkněte se a přetáhněte na nové místo.\n\n";
174 | var strDel = "Smazat: Klepnutím vyberte a poté klepněte na ikonu X nebo stiskněte BACKSPACE.\n\n";
175 | var strRot = "Rotace/Zrcadlení: Klepnutím vyberte a poté klikněte na ikonu rotace nebo stiskněte písmeno \„r\“ pro otočení o 90. Opakujte pro další rotace a zrcadlení (celkem 8).\n\n";
176 | var strProp = "Vlastnosti: Dvojitým klepnutím na součást změníte její vlastnosti.\n\n";
177 | var strNum = "Čísla lze zadávat pomocí inženýrského zápisu, T = 10^12, G = 10^9, M = 10^6, k = 10^3, m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15";
178 |
--------------------------------------------------------------------------------
/js/en-US.js:
--------------------------------------------------------------------------------
1 | var i18n = {
2 | error1: 'Sorry, there was a browser error in starting the schematic tool. We recommend using the latest versions of Firefox and Chrome.',
3 | Ground_connection: 'Ground connection',
4 | Node_label: 'Node label',
5 | Voltage_source: 'Voltage source',
6 | Current_source: 'Current source',
7 | Resistor: 'Resistor',
8 | Capacitor: 'Capacitor',
9 | Inductor: 'Inductor',
10 | Op_Amp: 'Op Amp',
11 | Diode: 'Diode',
12 | NFet: 'NFet',
13 | PFet: 'PFet',
14 | NPN: 'NPN',
15 | PNP: 'PNP',
16 | Voltage_probe: 'Voltage probe',
17 | Current_probe: 'Current probe',
18 | drag_onto_diagram: ': drag or tap to insert',
19 | Help: 'Help: display the help page',
20 | Grid: 'Grid: toggle grid display',
21 | Link_tip: 'Link: share a link to the circuit',
22 | Cut: 'Cut selected components to the clipboard',
23 | Copy:'Copy selected components to the clipboard',
24 | Paste:'Paste clipboard to the schematic',
25 | Delete:'Delete selected components',
26 | Rotate:'Rotate selected component',
27 | Save_netlist: 'Save netlist',
28 | Open_netlist: 'Open netlist',
29 | Select_netlist: 'Select netlist',
30 | Perform_DC_Analysis: 'Perform DC Analysis',
31 | DC_Analysis: 'DC Analysis',
32 | Perform_AC_Analysis: 'Perform AC Small-Signal Analysis',
33 | Perform_Transient_Analysis: 'Perform Transient Analysis',
34 | Transient_Analysis: 'Transient Analysis',
35 | Edit_Properties: 'Edit Properties',
36 | Link: 'Link',
37 | Sharable_Link: 'Sharable link',
38 |
39 | points_per_decade: 'Number of points/decade',
40 | Starting_frequency: 'Starting frequency (Hz)',
41 | Ending_frequency: 'Ending frequency (Hz)',
42 | source_for_ac: 'Name of V or I source for ac',
43 | AC_Analysis_add_a_voltage_probe: 'AC Analysis: add a voltage probe to the diagram!',
44 | AC_Analysis: 'AC Analysis',
45 | Zero_ac_response: 'Zero ac response, -infinity on dB scale.',
46 | Near_zero_ac_response: 'Near zero ac response, remove ',
47 | probe: ' probe',
48 |
49 | // Alerts and warnings from the circuit simulator
50 | Alert: 'Alert',
51 | ckt_alert1: 'Warning! Circuit has a voltage source loop or a source or current probe shorted by a wire, please remove the source or the wire causing the short.',
52 | ckt_alert2: 'Warning! Simulator might produce meaningless results or no result with illegal circuits.',
53 | ckt_warning1: 'Warning! Two circuit elements share the same name ',
54 | ckt_alert3: 'Please make at least one connection to ground.',
55 | ckt_alert4: 'Newton Method failed, do your current sources have a conductive path to ground?',
56 | ckt_alert5: 'Newton Method failed, it may be your circuit or it may be our simulator.',
57 | ckt_alert6: 'DC failed, trying transient analysis from zero.',
58 | ckt_alert7: 'AC analysis refers to an unknown source, ',
59 | ckt_alert8: 'AC analysis failed, unknown source.',
60 |
61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.',
62 | //ckt_error2: 'Row or columns of A too large for B',
63 | //ckt_error3: 'Row or columns of A too large for C',
64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays',
65 | //ckt_error5: 'Rows or cols > rows or cols of dest',
66 | //ckt_error6: 'Rows or cols > cols or rows of dest',
67 |
68 | log_Frequency: 'log10(Frequency in Hz)',
69 | degrees: 'degrees',
70 | AC_Phase: 'AC Phase',
71 | AC_Magnitude: 'AC Magnitude',
72 |
73 | Minimum_number_of_timepoints: 'Minimum number of time points',
74 | Stop_time_seconds: 'Stop time (seconds)',
75 | tstop_lbl: 'stop time',
76 | Transient_Analysis_add_a_probe: 'Transient Analysis: add a probe to the diagram!',
77 |
78 | //Use creative phrasing to get this sentence to come out right:
79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node');
80 | The: 'The ',
81 | probe_is_connected_to_node: ' probe is connected to node ',
82 | which_is_not_an_actual_circuit_node: ', which is not an actual circuit node.',
83 |
84 | Voltage: 'Voltage',
85 | Current: 'Current',
86 | Time: 'Time',
87 | Node_has_two_conflicting_labels: 'Node has two conflicting labels: ',
88 |
89 | DC_value: 'DC value',
90 |
91 | impulse: 'impulse',
92 | Height: 'Height',
93 | Width: 'Width (sec)',
94 |
95 | step: 'step',
96 | Initial_value: 'Initial value',
97 | Plateau_value: 'Plateau value',
98 | Delay_until_step: 'Delay until step (sec)',
99 | Rise_time: 'Rise time (sec)',
100 |
101 | square: 'square',
102 | Frequency: 'Frequency (Hz)',
103 | Duty_cycle: 'Duty cycle (%)',
104 |
105 | triangle: 'triangle',
106 | ramp: 'ramp',
107 | Slope: 'Slope (volts/sec)',
108 |
109 | pwl: 'pwl',
110 | pwl_repeating: 'pwl (repeating)',
111 | Comma_separated_list: 'Comma-separated list of alternating times and values',
112 |
113 | pulse: 'pulse',
114 | Delay_until_pulse: 'Delay until pulse (sec)',
115 | Time_for_first_transition: 'Time for first transition (sec)',
116 | Time_for_second_transition: 'Time for second transition (sec)',
117 | Pulse_width: 'Pulse width (sec)',
118 | Period: 'Period (sec)',
119 |
120 | sin: 'sin',
121 | Offset_value: 'Offset value',
122 | Amplitude: 'Amplitude',
123 | Delay_until_sin_starts: 'Delay until sin starts (sec)',
124 | Phase_offset_degrees: 'Phase offset (degrees)',
125 |
126 | Circuit_Sandbox_Help: 'CIRCUIT SANDBOX HELP',
127 | name: 'Name',
128 | value: 'Value',
129 | label: 'Label',
130 | r: 'R',
131 | c: 'C',
132 | l: 'L',
133 | color: 'Color',
134 | offset: 'Offset',
135 | area: 'Area',
136 | type: 'Type',
137 | normal: 'normal',
138 | ideal: 'ideal',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: 'W/L',
142 | lambda: 'λ',
143 | A: 'A',
144 | Plot_color: 'Plot color',
145 | Plot_offset: 'Plot offset',
146 | dc: 'dc',
147 |
148 | Gain: 'A',
149 | Rin: 'Rin',
150 | Rout: 'Rout',
151 |
152 | red: 'red',
153 | green: 'green',
154 | blue: 'blue',
155 | cyan: 'cyan',
156 | magenta: 'magenta',
157 | yellow: 'yellow',
158 | orange: 'orange',
159 | black: 'black',
160 | xaxis: 'x axis',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: '𝛼F',
165 | alphaR: '𝛼R',
166 |
167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.",
168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.",
169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.",
170 | delete_ctl: "Delete component. Also try 'Del'.",
171 |
172 | last_line: 'last line, no comma'
173 | };
174 |
175 | var strSHelp = "CIRCUIT SANDBOX HELP\n\n"; //embedded Help
176 | var strAddC = "Add component: Tap on a part in the parts bin, then tap on the schematic.\n\n";
177 | var strAddW = "Add wire: Touch on a connection point (open circle). Drag. Release.\n\n";
178 | var strSel = "Select: Drag a rectangle to select components. \n(desktop:) Shift-click to include another component.\n\n";
179 | var strMove = "Move: Touch and drag to a new location.\n\n";
180 | var strDel = "Delete: Tap to select, then tap the X icon or hit BACKSPACE.\n\n";
181 | var strRot = "Rotate/Reflect: Click to select, then click on the rotation icon or type the letter \"r\" to rotate 90. Repeat for more rotations and reflections (8 total).\n\n";
182 | var strView = "Zoom using a scroll wheel or trackpad\nPan the schematic using Alt-drag\n\n";
183 | var strProp = "Properties: Double tap on a component to change its properties.\n\n";
184 | var strNum = "Numbers may be entered using engineering notation,\n\
185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\
186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15";
187 |
--------------------------------------------------------------------------------
/js/hi.js:
--------------------------------------------------------------------------------
1 | var i18n = {
2 | error1: 'क्षमा करें, योजनाबद्ध टूल को शुरू करने में एक ब्राउज़र त्रुटि थी। हम फ़ायरफ़ॉक्स और क्रोम के नवीनतम संस्करणों का उपयोग करने की सलाह देते हैं',
3 | Ground_connection: 'जमीनी कनेक्शन',
4 | Node_label: 'नोड लेबल',
5 | Voltage_source: 'वोल्टेज स्रोत',
6 | Current_source: 'विद्युत धारा स्रोत',
7 | Resistor: 'प्रतिरोधक',
8 | Capacitor: 'संधारित्र',
9 | Inductor: 'प्रेरक',
10 | Op_Amp: 'आपरेशनल एम्पलीफायर',
11 | Diode: 'डायोड',
12 | NFet: 'ऐनफेट',
13 | PFet: 'पीफेट',
14 | NPN: 'ऐनपीऐन',
15 | PNP: 'पीऐनपी',
16 | Voltage_probe: 'वोल्टेज की जांच',
17 | Current_probe: 'विद्युत धारा जांच',
18 | drag_onto_diagram: ': डालने के लिए खींचें या टैप करें',
19 | Help: 'सहायता: सहायता पृष्ठ प्रदर्शित करें',
20 | Grid: 'ग्रिड: ग्रिड प्रदर्शन टॉगल करें',
21 | Link_tip: 'लिंक: सर्किट का लिंक साझा करें',
22 | Cut: 'चयनित घटकों को क्लिपबोर्ड पर काटें',
23 | Copy:'चयनित घटकों को क्लिपबोर्ड पर कॉपी करें',
24 | Paste:'योजनाबद्ध के लिए क्लिपबोर्ड पेस्ट करें',
25 | Delete:'चयनित घटकों को हटाएं',
26 | Rotate:'चयनित घटक को घुमाएं',
27 | Save_netlist: 'नेटलिस्ट बचाओ',
28 | Open_netlist: 'नेटलिस्ट खोलें',
29 | Select_netlist: 'नेटलिस्ट का चयन करें',
30 | Perform_DC_Analysis: 'एक डीसी विश्लेषण करें',
31 | DC_Analysis: 'डीसी विश्लेषण',
32 | Perform_AC_Analysis: 'एक एसी लघु-संकेत विश्लेषण करें',
33 | Perform_Transient_Analysis: 'एक क्षणिक विश्लेषण करें',
34 | Transient_Analysis: 'क्षणिक विश्लेषण',
35 | Edit_Properties: 'गुण संपादित करें',
36 | Link: 'संपर्क',
37 | Sharable_Link: 'साझा करने योग्य लिंक',
38 |
39 | points_per_decade: 'अंकों की संख्या / दशक',
40 | Starting_frequency: 'प्रारंभ आवृत्ति (हर्ट्ज)',
41 | Ending_frequency: 'समाप्ति की आवृत्ति (हर्ट्ज)',
42 | source_for_ac: 'एसी के लिए वी या वी स्रोत का नाम',
43 | AC_Analysis_add_a_voltage_probe: 'एसी विश्लेषण: आरेख में एक वोल्टेज जांच जोड़ें!',
44 | AC_Analysis: 'एसी विश्लेषण',
45 | Zero_ac_response: 'शून्य एसी प्रतिक्रिया, -Bf पैमाने पर dB पैमाने पर।',
46 | Near_zero_ac_response: 'शून्य एसी प्रतिक्रिया के पास, निकालें ',
47 | probe: ' जांच',
48 |
49 | // Alerts and warnings from the circuit simulator
50 | Alert: 'चेतावनी',
51 | ckt_alert1: 'चेतावनी! सर्किट में एक वोल्टेज स्रोत लूप या एक तार से छोटा एक स्रोत या विद्युत धारा जांच है, कृपया स्रोत या तार को हटा दें जिससे शॉर्ट हो।',
52 | ckt_alert2: 'चेतावनी! सिम्युलेटर अर्थहीन परिणाम या अवैध सर्किट के साथ कोई परिणाम नहीं दे सकता है',
53 | ckt_warning1: 'चेतावनी! दो सर्किट तत्व एक ही नाम साझा करते हैं। ',
54 | ckt_alert3: 'कृपया जमीन से कम से कम एक संबंध बनाएं।',
55 | ckt_alert4: 'न्यूटन विधि विफल; क्या आपके विद्युत धारा स्रोतों में जमीन तक प्रवाहकीय पथ है?',
56 | ckt_alert5: 'न्यूटन विधि विफल; यह आपका सर्किट हो सकता है या यह हमारा सिम्युलेटर हो सकता है।',
57 | ckt_alert6: 'डीसी विफल रहा, शून्य से क्षणिक विश्लेषण की कोशिश कर रहा है।',
58 | ckt_alert7: 'एसी विश्लेषण अज्ञात स्रोत को संदर्भित करता है ',
59 | ckt_alert8: 'एसी विश्लेषण विफल, अज्ञात स्रोत',
60 |
61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.',
62 | //ckt_error2: 'Row or columns of A too large for B',
63 | //ckt_error3: 'Row or columns of A too large for C',
64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays',
65 | //ckt_error5: 'Rows or cols > rows or cols of dest',
66 | //ckt_error6: 'Rows or cols > cols or rows of dest',
67 |
68 | log_Frequency: 'लॉग10(Hz में फ़्रिक्वेंसी)',
69 | degrees: 'डिग्री',
70 | AC_Phase: 'एसी चरण',
71 | AC_Magnitude: 'एसी परिमाण',
72 |
73 | Minimum_number_of_timepoints: 'न्यूनतम समय बिंदु',
74 | Stop_time_seconds: 'बंद करो समय (सेकंड)',
75 | tstop_lbl: 'रुकने का समय',
76 | Transient_Analysis_add_a_probe: 'क्षणिक विश्लेषण: आरेख में एक जांच जोड़ें!',
77 |
78 | //Use creative phrasing to get this sentence to come out right:
79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node');
80 | The: '',
81 | probe_is_connected_to_node: ' जांच नोड से जुड़ी है ',
82 | which_is_not_an_actual_circuit_node: ', जो एक वास्तविक सर्किट नोड नहीं है',
83 |
84 | Voltage: 'वोल्टेज',
85 | Current: 'विद्युत धारा',
86 | Time: 'समय',
87 | Node_has_two_conflicting_labels: 'नोड के दो परस्पर विरोधी लेबल हैं: ',
88 |
89 | DC_value: 'डीसी मूल्य',
90 |
91 | impulse: 'आवेग',
92 | Height: 'ऊंचाई',
93 | Width: 'चौड़ाई (सेकंड)',
94 |
95 | step: 'कदम',
96 | Initial_value: 'प्रारंभिक मूल्य',
97 | Plateau_value: 'पठार का मूल्य',
98 | Delay_until_step: 'कदम तक देरी (सेकंड)',
99 | Rise_time: 'उदय समय (सेकंड)',
100 |
101 | square: 'वर्ग',
102 | Frequency: 'फ्रीक्वेंसी (हर्ट्ज)',
103 | Duty_cycle: 'साइकिल शुल्क (%)',
104 |
105 | triangle: 'त्रिकोण',
106 | ramp: 'ramp',
107 | Slope: 'Slope (volts/sec)',
108 |
109 | pwl: 'पीडब्लूऐल',
110 | pwl_repeating: 'पीडब्लूऐल(दोहरा)',
111 | Comma_separated_list: 'वैकल्पिक समय और मूल्यों की कोमा-अलग सूची',
112 |
113 | pulse: 'पल्स',
114 | Delay_until_pulse: 'पल्स तक देरी (सेकंड)',
115 | Time_for_first_transition: 'पहले संक्रमण के लिए समय (सेकंड)',
116 | Time_for_second_transition: 'दूसरे संक्रमण के लिए समय (सेकंड)',
117 | Pulse_width: 'पल्स चौड़ाई (सेकंड)',
118 | Period: 'अवधि (सेकंड)',
119 |
120 | sin: 'साइन',
121 | Offset_value: 'ऑफसेट मान',
122 | Amplitude: 'आयाम',
123 | Delay_until_sin_starts: 'विलंब जब तक साइन शुरू होता है (सेकंड)',
124 | Phase_offset_degrees: 'चरण ऑफसेट (डिग्री)',
125 |
126 | Circuit_Sandbox_Help: 'सर्किट सैंडबॉक्स की मदद',
127 | name: 'नाम',
128 | value: 'मूल्य',
129 | label: 'लेबल',
130 | r: 'आर',
131 | c: 'सी',
132 | l: 'एल',
133 | color: 'रंग',
134 | offset: 'ओफ़्सेट',
135 | area: 'क्षेत्र',
136 | type: 'प्रकार',
137 | normal: 'साधारण',
138 | ideal: 'आदर्श',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: 'डब्ल्यू / एल',
142 | lambda: 'λ',
143 | A: 'ए',
144 | Plot_color: 'प्लॉट का रंग',
145 | Plot_offset: 'प्लॉट ऑफसेट',
146 | dc: 'डीसी',
147 |
148 | Gain: 'A',
149 | Rin: 'Rin',
150 | Rout: 'Rout',
151 |
152 | red: 'लाल',
153 | green: 'हरा',
154 | blue: 'नीला',
155 | cyan: 'हरिनील',
156 | magenta: 'मैजेंटा',
157 | yellow: 'पीला',
158 | orange: 'नारंगी',
159 | black: 'काला',
160 | xaxis: 'एक्स अक्ष',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: '𝛼एफ',
165 | alphaR: '𝛼आर',
166 |
167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.",
168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.",
169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.",
170 | delete_ctl: "Delete component. Also try 'Del'.",
171 |
172 | last_line: 'last line, no comma'
173 | };
174 |
175 | var strSHelp = "सर्किट सैंडबॉक्स की मदद\n\n"; //embedded Help
176 | var strAddC = "घटक जोड़ें: भागों बिन में एक भाग पर टैप करें, फिर योजनाबद्ध पर टैप करें।\n\n";
177 | var strAddW = "तार जोड़ें: शुरू करने के लिए एक कनेक्शन बिंदु (खुले सर्कल) पर स्पर्श करें। खींचना। छोड़ें।\n\n";
178 | var strSel = "चयन करें: घटकों का चयन करने के लिए एक आयत खींचें। \n(डेस्कटॉप :) किसी अन्य घटक को शामिल करने के लिए Shift-क्लिक करें।\n\n";
179 | var strMove = "चाल: स्पर्श करें और एक नए स्थान पर खींचें\n\n";
180 | var strDel = "हटाएं: चयन करने के लिए टैप करें, फिर एक्स आइकन टैप करें या बैकस्पेस को हिट करें।\n\n";
181 | var strRot = "घुमाएँ / प्रतिबिंबित करें: चयन करने के लिए क्लिक करें, फिर रोटेशन आइकन पर क्लिक करें या पत्र \"r\" को 90 को घुमाएं। अधिक घुमाव और प्रतिबिंब (8 कुल) के लिए दोहराएं।\n\n";
182 | var strView = "";
183 | var strProp = "गुण: इसके गुणों को बदलने के लिए एक घटक पर डबल टैप करें।\n\n";
184 | var strNum = "इंजीनियरिंग नोटेशन का उपयोग करके नंबर दर्ज किए जा सकते हैं,\n\
185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\
186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15";
187 |
--------------------------------------------------------------------------------
/js/hu.js:
--------------------------------------------------------------------------------
1 | var i18n = {
2 | error1: 'Sajnáljuk, de hiba történt a böngészőben az eszköz indításakor. Javasoljuk a Firefox és a Chrome legújabb verzióinak használatát.',
3 | Ground_connection: 'Földelés',
4 | Node_label: 'Csomópont felirat',
5 | Voltage_source: 'Feszültségforrás',
6 | Current_source: 'Áramforrás',
7 | Resistor: 'Ellenállás',
8 | Capacitor: 'Kondenzátor',
9 | Inductor: 'Tekercs',
10 | Op_Amp: 'Műveleti erősítő',
11 | Diode: 'Dióda',
12 | NFet: 'NFet',
13 | PFet: 'PFet',
14 | NPN: 'NPN',
15 | PNP: 'PNP',
16 | Voltage_probe: 'Feszültség szonda',
17 | Current_probe: 'Ampermérő',
18 | drag_onto_diagram: ': húzza vagy koppintson a beillesztéshez',
19 | Help: 'Súgó: súgó oldal megjelenítése',
20 | Grid: 'Rács: rács megjelenítésének váltása',
21 | Link_tip: 'Link: megosztja az áramkörre mutató linket',
22 | Cut: 'Kiválasztott elemek kivágása vágólapra',
23 | Copy:'Kiválasztott elemek vágólapra másolása',
24 | Paste:'Vágólap beillesztése',
25 | Delete:'Kiválasztott elemek törlése',
26 | Rotate:'Kiválasztott elem forgatása',
27 | Save_netlist: 'Csomóponti lista mentése',
28 | Open_netlist: 'Csomóponti lista megnyitása',
29 | Select_netlist: 'Csomóponti lista kiválasztása',
30 | Perform_DC_Analysis: 'Egyenáram elemzés végrehajtása',
31 | DC_Analysis: 'Egyenáram elemzés',
32 | Perform_AC_Analysis: 'Kis jelű váltóáram elemzés végrehajtása',
33 | Perform_Transient_Analysis: 'Tranziens elemzés végrehajtása',
34 | Transient_Analysis: 'Tranziens elemzés',
35 | Edit_Properties: 'Tulajdonságok szerkesztése',
36 | Link: 'Hivatkozás',
37 | Sharable_Link: 'Megosztható hivatkozás',
38 |
39 | points_per_decade: 'Tizedesek száma',
40 | Starting_frequency: 'Kezdő frekvencia (Hz)',
41 | Ending_frequency: 'Utolsó frekvencia (Hz)',
42 | source_for_ac: 'Feszültség vagy áramforrás neve',
43 | AC_Analysis_add_a_voltage_probe: 'Váltóáram elemzés: adjon egy feszültség szondát az ábrára!',
44 | AC_Analysis: 'Váltóáram elemzés',
45 | Zero_ac_response: 'Nincs váltoáram válasz, -végtelen a dB skálán.',
46 | Near_zero_ac_response: 'Közel nulla váltóáram válasz, eltávolítani ',
47 | probe: ' szonda',
48 |
49 | // Alerts and warnings from the circuit simulator
50 | Alert: 'Figyelmeztetés',
51 | ckt_alert1: 'Figyelem! Az áramkör rövidre van zárva. Kérjük távolítsa el a forrást vagy a vezetéket ami okozza.',
52 | ckt_alert2: 'Figyelem! A szimulátor értelmetlen vagy semmilyen eredményt nem fog létrehozni érvénytelen áramkör esetében.',
53 | ckt_warning1: 'Figyelem! Két áramköri elemnek ugyan az a neve ',
54 | ckt_alert3: 'Kérjük csatlakoztasson legalább egy földelést.',
55 | ckt_alert4: 'Newton módszer sikertelen; az áramforrások földeléshez vannak kötve?',
56 | ckt_alert5: 'Newton módszer sikertelen; lehet hogy az áramkör, lehet hogy a szimulátorunk az oka.',
57 | ckt_alert6: 'DC sikertelen, próbálkozás tranziens elemzéssel nulláról.',
58 | ckt_alert7: 'AC elemzés egy ismeretlen forrásra utal, ',
59 | ckt_alert8: 'AC elemzés sikertelen, ismeretlen forrás.',
60 |
61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.',
62 | //ckt_error2: 'Row or columns of A too large for B',
63 | //ckt_error3: 'Row or columns of A too large for C',
64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays',
65 | //ckt_error5: 'Rows or cols > rows or cols of dest',
66 | //ckt_error6: 'Rows or cols > cols or rows of dest',
67 |
68 | log_Frequency: 'log10(Frekvencia Hz-ben)',
69 | degrees: 'szög',
70 | AC_Phase: 'Váltóáram fázis',
71 | AC_Magnitude: 'Váltóáram nagyság',
72 |
73 | Minimum_number_of_timepoints: 'Az időpontok minimális száma',
74 | Stop_time_seconds: 'Befejező idő (mp)',
75 | tstop_lbl: 'Befejező idő',
76 | Transient_Analysis_add_a_probe: 'Tranziens elemzés: adjon az ábrához egy szondát!',
77 |
78 | //Use creative phrasing to get this sentence to come out right:
79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node');
80 | The: 'A ',
81 | probe_is_connected_to_node: ' szonda a csomóponthoz van csatlakoztatva ',
82 | which_is_not_an_actual_circuit_node: ', ami nem igazi áramköri csomópont.',
83 |
84 | Voltage: 'Feszültség',
85 | Current: 'Áramerősség',
86 | Time: 'Idő',
87 | Node_has_two_conflicting_labels: 'A csomópontnak két ellentétes címkéje van: ',
88 |
89 | DC_value: 'Egyenáram érték',
90 |
91 | impulse: 'impulzus',
92 | Height: 'Magasság',
93 | Width: 'Szélesség (mp)',
94 |
95 | step: 'lépcső',
96 | Initial_value: 'Kezdő érték',
97 | Plateau_value: 'Tetőző érték',
98 | Delay_until_step: 'Késleltetés (mp)',
99 | Rise_time: 'Növekedési idő (mp)',
100 |
101 | square: 'négyszög',
102 | Frequency: 'Frekvencia (Hz)',
103 | Duty_cycle: 'Munka ciklus (%)',
104 |
105 | triangle: 'háromszög',
106 | ramp: 'rámpa',
107 | Slope: 'Lejtő (volt/mp)',
108 |
109 | pwl: 'szakaszosan lineáris',
110 | pwl_repeating: 'szak-lin (ismétlődő)',
111 | Comma_separated_list: 'Vesszővel elválasztott váltakozó idők és értékek listája',
112 |
113 | pulse: 'lüktetés',
114 | Delay_until_pulse: 'Késleltetés lüktetésig (mp)',
115 | Time_for_first_transition: 'Első átmenet ideje (mp)',
116 | Time_for_second_transition: 'Második átmenet ideje (mp)',
117 | Pulse_width: 'Lüktetés szélesség (mp)',
118 | Period: 'Periódus (mp)',
119 |
120 | sin: 'szinusz',
121 | Offset_value: 'Eltolás mértéke',
122 | Amplitude: 'Amplitúdó',
123 | Delay_until_sin_starts: 'Késleltetés ideje (mp)',
124 | Phase_offset_degrees: 'Fázistolás (szög)',
125 |
126 | Circuit_Sandbox_Help: 'Áramköri homokozó súgó',
127 | name: 'Név',
128 | value: 'Érték',
129 | label: 'Címke',
130 | r: 'E',
131 | c: 'K',
132 | l: 'T',
133 | color: 'Szín',
134 | offset: 'Eltolás',
135 | area: 'Terület',
136 | type: 'Típus',
137 | normal: 'normál',
138 | ideal: 'ideális',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: 'SZ/H',
142 | lambda: 'λ',
143 | A: 'A',
144 | Plot_color: 'Grafikon színe',
145 | Plot_offset: 'Grafikon kitérése',
146 | dc: 'dc',
147 |
148 | Gain: 'A',
149 | Rin: 'Rin',
150 | Rout: 'Rout',
151 |
152 | red: 'piros',
153 | green: 'zöld',
154 | blue: 'kék',
155 | cyan: 'cián',
156 | magenta: 'magenta',
157 | yellow: 'sárga',
158 | orange: 'narancssárga',
159 | black: 'fekete',
160 | xaxis: 'x tengely',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: '𝛼F',
165 | alphaR: '𝛼R',
166 |
167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.",
168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.",
169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.",
170 | delete_ctl: "Delete component. Also try 'Del'.",
171 |
172 | last_line: 'Utolsó sor, nincs vessző'
173 | };
174 |
175 | var strSHelp = "Áramköri Homokozó Súgó\n\n"; //embedded Help
176 | var strAddC = "Alkotóelem hozzáadása: Érintse meg az elemet, majd érintse meg a vázlatot.\n\n";
177 | var strAddW = "Vezeték hozzáadása: A kezdéshez érintse meg a csatlakozási pontot (üres kör). Húzza. Elengedés.\n\n";
178 | var strSel = "Kiválasztás: Húzzon egy téglalapot az elemek kiválasztásához. \n(Asztal :) Shift-kattintás egy másik elem hozzáadásához.\n\n";
179 | var strMove = "Áthelyezés: érintse meg és húzza egy új helyre.\n\n";
180 | var strDel = "Törlés: Koppintson a kiválasztásra, majd koppintson az X ikonra, vagy nyomja meg a BACKSPACE billentyűt.\n\n";
181 | var strRot = "Forgatás/Invertálás: Válassza ki, majd kattintson a forgatás ikonra, vagy nyomja meg az \„r\" gombot a 90-es elforgatáshoz. Ismételje meg a további forgatásokat (összesen 8-at).\n\n";
182 | var strView = "";
183 | var strProp = "Tulajdonságok: Koppintson duplán egy elemre annak tulajdonságainak megváltoztatásához.\n\n";
184 | var strNum = "A számokat műszaki jelöléssel is be lehet írni, T = 10^12, G = 10^9, M = 10^6, k = 10^3, m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15";
185 |
--------------------------------------------------------------------------------
/js/it.js:
--------------------------------------------------------------------------------
1 | var i18n = {
2 | error1: 'Sorry, there was a browser error in starting the schematic tool. We recommend using the latest versions of Firefox and Chrome.',
3 | Ground_connection: 'Messa a terra',
4 | Node_label: 'Nodo di riferimento',
5 | Voltage_source: 'Alimentatore di tensione',
6 | Current_source: 'Alimentatore di corrente',
7 | Resistor: 'Resistore',
8 | Capacitor: 'Capacitore',
9 | Inductor: 'Induttore',
10 | Op_Amp: 'Amplificatore operazionale',
11 | Diode: 'Diodo',
12 | NFet: 'NFet',
13 | PFet: 'PFet',
14 | NPN: 'NPN',
15 | PNP: 'PNP',
16 | Voltage_probe: 'Sonda di tensione',
17 | Current_probe: 'Sonda di corrente',
18 | drag_onto_diagram: ': trascina o clicca per inserire',
19 | Help: 'Aiuto: mostra la pagina di aiuto',
20 | Grid: 'Griglia: attiva/disattiva la griglia dello schermo',
21 | Link_tip: 'Collegamento: condividi un collegamento al circuito',
22 | Cut: 'Taglia i component selezionati nella barra degli appunti',
23 | Copy:'Copia i component selezionati nella barra degli appunti',
24 | Paste:'Incolla gli appunti nello schema',
25 | Delete:'Elimina i componenti selezionati',
26 | Rotate:'Ruota il componente selezionato',
27 | Save_netlist: 'Salva netlist',
28 | Open_netlist: 'Apri netlist',
29 | Select_netlist: 'Seleziona netlist',
30 | Perform_DC_Analysis: 'Avvia analisi DC',
31 | DC_Analysis: 'Analisi DC',
32 | Perform_AC_Analysis: 'Avvia analisi di piccoli segnali in AC',
33 | Perform_Transient_Analysis: 'Avvia analisi in regime transitorio',
34 | Transient_Analysis: 'Analisi in regime transitorio',
35 | Edit_Properties: 'Modifica proprietà',
36 | Link: 'Collegamento',
37 | Sharable_Link: 'Collegamento condivisibile',
38 |
39 | points_per_decade: 'Numero di punti/decade',
40 | Starting_frequency: 'Frequenza iniziale (Hz)',
41 | Ending_frequency: 'Frequenza finale (Hz)',
42 | source_for_ac: 'Nome della sorgente di V o I per AC',
43 | AC_Analysis_add_a_voltage_probe: 'Analisi AC: aggiungere una sonda di tensione al diagramma!',
44 | AC_Analysis: 'Analisi AC',
45 | Zero_ac_response: 'Risposta zero in AC, -infinito su scala dB.',
46 | Near_zero_ac_response: 'Risposta prossima a zero in AC, rimuovere ',
47 | probe: ' sonda',
48 |
49 | // Alerts and warnings from the circuit simulator
50 | Alert: 'Avviso',
51 | ckt_alert1: 'Attenzione! Il circuito ha un generatore di tensione in loop oppure la sonda di corrente è in cortocircuito con un filo, per favore rimuovere il generatore o il filo che produce il cortociruito.',
52 | ckt_alert2: 'Attenzione! Il simulatore potrebbe produrre risultati insignificanti o non produrre risultati con circuiti illegali.',
53 | ckt_warning1: 'Attenzione! Due elementi del circuito hanno lo stesso nome ',
54 | ckt_alert3: 'Per favore effettuare almeno un collegamento a terra.',
55 | ckt_alert4: 'Il metodo di Newton non è applicabile: le tue sorgenti di corrente hanno un collegamento a terra?',
56 | ckt_alert5: 'Il metodo di Newton non è applicabile: può essere un problema del tuo circuito o del simulatore.',
57 | ckt_alert6: 'DC fallita, prova l’analisi in transitorio da zero.',
58 | ckt_alert7: 'L’analisi AC si riferisce ad un generatore sconosciuto, ',
59 | ckt_alert8: 'Analisi AC fallita, generatore sconosciuto.',
60 |
61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.',
62 | //ckt_error2: 'Row or columns of A too large for B',
63 | //ckt_error3: 'Row or columns of A too large for C',
64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays',
65 | //ckt_error5: 'Rows or cols > rows or cols of dest',
66 | //ckt_error6: 'Rows or cols > cols or rows of dest',
67 |
68 | log_Frequency: 'Log (frequenza in Hz)',
69 | degrees: 'gradi',
70 | AC_Phase: 'Fase in AC',
71 | AC_Magnitude: 'Modulo/Ampiezza in AC',
72 |
73 | Minimum_number_of_timepoints: 'Numero minimo di punti temporali',
74 | Stop_time_seconds: 'Tempo di arresto (sec)',
75 | tstop_lbl: 'tempo di arresto',
76 | Transient_Analysis_add_a_probe: 'Analisi in transitorio: aggiungere una sonda al diagramma!',
77 |
78 | //Use creative phrasing to get this sentence to come out right:
79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node');
80 | The: 'La ',
81 | probe_is_connected_to_node: ' sonda è collegata al nodo ',
82 | which_is_not_an_actual_circuit_node: ', che non è un nodo effettivo del circuito.',
83 |
84 | Voltage: 'Tensione',
85 | Current: 'Corrente',
86 | Time: 'Tempo',
87 | Node_has_two_conflicting_labels: 'Il nodo ha due riferimenti diversi: ',
88 |
89 | DC_value: 'Valore DC',
90 |
91 | impulse: 'impulso',
92 | Height: 'Altezza',
93 | Width: 'Larghezza (sec)',
94 |
95 | step: 'gradino',
96 | Initial_value: 'Valore iniziale',
97 | Plateau_value: 'Valore di paragone',
98 | Delay_until_step: 'Ritardo fino al gradino (sec)',
99 | Rise_time: 'Tempo di risalita (sec)',
100 |
101 | square: 'radice',
102 | Frequency: 'Frequenza (Hz)',
103 | Duty_cycle: 'Ciclo di lavoro (%)',
104 |
105 | triangle: 'triangolo',
106 | ramp: 'rampa',
107 | Slope: 'Pendenza (Volt/sec)',
108 |
109 | pwl: 'pwl',
110 | pwl_repeating: 'pwl (ripetuto)',
111 | Comma_separated_list: 'Elenco separato da virgule relativo a tempi e valori',
112 |
113 | pulse: 'impulso',
114 | Delay_until_pulse: 'Ritardo fino all’impulso (sec)',
115 | Time_for_first_transition: 'Tempo di prima transizione (sec)',
116 | Time_for_second_transition: 'Tempo di seconda transizione (sec)',
117 | Pulse_width: 'Larghezza di impulse (sec)',
118 | Period: 'Periodo (sec)',
119 |
120 | sin: 'sin',
121 | Offset_value: 'Valore di deviazione',
122 | Amplitude: 'Ampiezza/Modulo',
123 | Delay_until_sin_starts: 'Ritardo fino all’inzio della funzione sin (sec)',
124 | Phase_offset_degrees: 'Sfasamento (gradi)',
125 |
126 | Circuit_Sandbox_Help: 'CIRCUIT SANDBOX AIUTO',
127 | name: 'Nome',
128 | value: 'Valore',
129 | label: 'Etichetta',
130 | r: 'R',
131 | c: 'C',
132 | l: 'L',
133 | color: 'Colore',
134 | offset: 'Deviazione',
135 | area: 'Area',
136 | type: 'Tipo',
137 | normal: 'normale',
138 | ideal: 'ideale',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: 'W/L',
142 | lambda: 'λ',
143 | A: 'A',
144 | Plot_color: 'Colore trama',
145 | Plot_offset: 'Deviazione trama',
146 | dc: 'dc',
147 |
148 | Gain: 'A',
149 | Rin: 'Rin',
150 | Rout: 'Rout',
151 |
152 | red: 'rosso',
153 | green: 'verde',
154 | blue: 'blu',
155 | cyan: 'ciano',
156 | magenta: 'magenta',
157 | yellow: 'giallo',
158 | orange: 'arancione',
159 | black: 'nero',
160 | xaxis: 'asse x',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: '𝛼F',
165 | alphaR: '𝛼R',
166 | last_line: 'last line, no comma'
167 | };
168 |
169 | var strSHelp = "🇮🇹 CIRCUIT SANDBOX AIUTO\n"; //embedded Help
170 | var strAddC = "Aggiungere componente: clicca un elemento sulla sezione dei componenti, quindi clicca sullo schema.\n\n";
171 | var strAddW = "Aggiungere filo: seleziona su un punto di contatto (cerchio aperto) per iniziare. Rilascia.\n\n";
172 | var strSel = "Seleziona: trascina un rettangolo per selezionare i componenti. \n(desktop: ) premi Shift-click per inserire un altro componente.\n\n";
173 | var strMove = "Muovi: tocca e trascina in una nuova posizione.\n\n";
174 | var strDel = "Cancella: clicca per selezionare, dopo clicca sull’icona X o premi il tasto BACKSPACE.\n\n";
175 | var strRot = "Ruota/Ribalta: clicca per selezionare, dopo clicca sull’icona di rotazione o premi il tasto \"r\" per ruotare di 90°. Ripetere per ulteriori rotazioni e ribaltamenti (8 totali).\n\n";
176 | var strProp = "Proprietà: doppio click su un componente per cambiare le sue proprietà.\n\n";
177 | var strNum = "I numeri si possono inserire con la notazione ingegneristica,\n\
178 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\
179 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15";
180 |
--------------------------------------------------------------------------------
/js/pt.js:
--------------------------------------------------------------------------------
1 | var i18n = {
2 | error1: 'Desculpe-nos, houve um erro na inicialização da ferramenta de esquemático. Nós recomendamos utilizar as últimas versões de Firefox e Chrome.',
3 | Ground_connection: 'Conexão Terra',
4 | Node_label: 'Rótulo do nó',
5 | Voltage_source: 'Fonte de tensão',
6 | Current_source: 'Fonte de corrente',
7 | Resistor: 'Resistor',
8 | Capacitor: 'Capacitor',
9 | Inductor: 'Indutor',
10 | Op_Amp: 'Amp Op',
11 | Diode: 'Diodo',
12 | NFet: 'NFet',
13 | PFet: 'PFet',
14 | NPN: 'NPN',
15 | PNP: 'PNP',
16 | Voltage_probe: 'Ponta de prova de tensão',
17 | Current_probe: 'Ponta de prova de corrente',
18 | drag_onto_diagram: ': arraste ou clique para inserir',
19 | Help: 'Ajuda: Mostrar página de ajuda',
20 | Grid: 'Grade: Alternar visualização',
21 | Link_tip: 'Link: Compartilhe um link para o circuito',
22 | Cut: 'Cortar os componentes selecionados para a área de transferência',
23 | Copy: 'Copiar os componentes selecionados para a área de transferência',
24 | Paste: 'Colar no esquemático',
25 | Delete: 'Deletar componentes selecionados',
26 | Rotate: 'Girar componente selecionado',
27 | Save_netlist: 'Salvar netlist',
28 | Open_netlist: 'Abrir netlist',
29 | Select_netlist: 'Selecionar netlist',
30 | Perform_DC_Analysis: 'Realizar análise DC',
31 | DC_Analysis: 'Análise DC',
32 | Perform_AC_Analysis: 'Realizar análise AC para pequenos sinais',
33 | Perform_Transient_Analysis: 'Realizar Análise Transitória',
34 | Transient_Analysis: 'Análise Transitória',
35 | Edit_Properties: 'Editar propriedades',
36 | Link: 'Link',
37 | Sharable_Link: 'Link compartilhável',
38 |
39 | points_per_decade: 'Número de pontos/década',
40 | Starting_frequency: 'Frequência inicial',
41 | Ending_frequency: 'Frequência final',
42 | source_for_ac: 'Nome de fonte V ou I para AC',
43 | AC_Analysis_add_a_voltage_probe: 'Análise AC: adicionar ponta de prova de tensão ao diagrama!',
44 | AC_Analysis: 'Análise AC',
45 | Zero_ac_response: 'Resposta AC zero, -infinito em escala dB.',
46 | Near_zero_ac_response: 'Resposta AC próxima de zero, remover ',
47 | probe: ' ponta de prova',
48 |
49 | // Alerts and warnings from the circuit simulator
50 | Alert: 'Alerta',
51 | ckt_alert1: 'Aviso! O circuito tem uma malha de tensão, fonte ou ponta de prova de corrente curto-circuitada por um fio, favor remover a fonte ou fio causando o curto.',
52 | ckt_alert2: 'Aviso! O simulador pode obter resultados sem sentido ou resultado nenhum com circuitos inválidos.',
53 | ckt_warning1: 'Aviso! Dois elementos de circuito possuem o mesmo nome ',
54 | ckt_alert3: 'Por favor, faça pelo menos uma conexão ao Terra.',
55 | ckt_alert4: 'O Método de Newton falhou; suas fontes de corrente estão conectadas ao terra?',
56 | ckt_alert5: 'O Método de Newton falhou; pode ser seu circuito ou o nosso simulador.',
57 | ckt_alert6: 'A DC falhou, tentando Análise Transitória do zero.',
58 | ckt_alert7: 'A Análise AC aponta para uma fonte desconhecida, ',
59 | ckt_alert8: 'A análise AC falhou, fonte desconhecida.',
60 |
61 | //ckt_error1: 'Linhas de M incompatíveis com b ou colunas incompatíveis com x.',
62 | //ckt_error2: 'Linhas ou colunas de A muito grandes para B',
63 | //ckt_error3: 'Linhas ou colunas de A muito grandes para C',
64 | //ckt_error4: 'scalea e scaleb devem ser escalares ou vetores',
65 | //ckt_error5: 'Linhas ou colunas > linhas ou colunas do dest',
66 | //ckt_error6: 'Linhas ou colunas > colunas ou linhas de dest',
67 |
68 | log_Frequency: 'log10(Frequência em Hz)',
69 | degrees: 'graus',
70 | AC_Phase: 'Ângulo de fase AC',
71 | AC_Magnitude: 'Magnitude AC',
72 |
73 | Minimum_number_of_timepoints: 'Número mínimo de pontos no tempo',
74 | Stop_time_seconds: 'Tempo de parada (segundos)',
75 | tstop_lbl: 'tempo de parada',
76 | Transient_Analysis_add_a_probe: 'Análise Transitória: adicione uma ponta de prova ao diagrama!',
77 |
78 | //Use creative phrasing to get this sentence to come out right:
79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node');
80 | The: 'A ',
81 | probe_is_connected_to_node: ' ponta de prova está conectada ao nó ',
82 | which_is_not_an_actual_circuit_node: ', que não é um nó válido no circuito.',
83 |
84 | Voltage: 'Tensão',
85 | Current: 'Corrente',
86 | Time: 'Tempo',
87 | Node_has_two_conflicting_labels: 'O nó tem dois rótulos em conflito: ',
88 |
89 | DC_value: 'Valor DC',
90 |
91 | impulse: 'impulso',
92 | Height: 'Altura',
93 | Width: 'Largura (s)',
94 |
95 | step: 'passo',
96 | Initial_value: 'Valor inicial',
97 | Plateau_value: 'Valor de Plateau',
98 | Delay_until_step: 'Atraso até o passo (s)',
99 | Rise_time: 'Tempo de subida (s)',
100 |
101 | square: 'quadrada',
102 | Frequency: 'Frequência (Hz)',
103 | Duty_cycle: 'Ciclo de trabalho (%)',
104 |
105 | triangle: 'triangular',
106 | ramp: 'rampa',
107 | Slope: 'Declive (volts/s)',
108 |
109 | pwl: 'Piecewise Linear (PWL)',
110 | pwl_repeating: 'PWL (repetir)',
111 | Comma_separated_list: 'Lista, separada por vírgulas, de tempos e valores alternados',
112 |
113 | pulse: 'pulso',
114 | Delay_until_pulse: 'Atraso até o pulso (s)',
115 | Time_for_first_transition: 'Tempo para a primeira transição (s)',
116 | Time_for_second_transition: 'Tempo para a segunda transição (s)',
117 | Pulse_width: 'Lagura de pulso (s)',
118 | Period: 'Período (s)',
119 |
120 | sin: 'sen',
121 | Offset_value: 'Valor de deslocamento',
122 | Amplitude: 'Amplitude',
123 | Delay_until_sin_starts: 'Atraso até o sen começar (s)',
124 | Phase_offset_degrees: 'Deslocamento de fase (graus)',
125 |
126 | Circuit_Sandbox_Help: 'AJUDA DO CIRCUIT SANDBOX',
127 | name: 'Nome',
128 | value: 'Valor',
129 | label: 'Rótulo',
130 | r: 'R',
131 | c: 'C',
132 | l: 'L',
133 | color: 'Cor',
134 | offset: 'Deslocamento',
135 | area: 'Área',
136 | type: 'Tipo',
137 | normal: 'normal',
138 | ideal: 'ideal',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: 'Largura / Comprimento',
142 | lambda: 'λ',
143 | A: 'A',
144 | Plot_color: 'Cor do gráfico',
145 | Plot_offset: 'Deslocamento do gráfico',
146 | dc: 'dc',
147 |
148 | Gain: 'A',
149 | Rin: 'Rin',
150 | Rout: 'Rout',
151 |
152 | red: 'vermelho',
153 | green: 'verde',
154 | blue: 'azul',
155 | cyan: 'ciano',
156 | magenta: 'magenta',
157 | yellow: 'amarelo',
158 | orange: 'laranja',
159 | black: 'preto',
160 | xaxis: 'eixo x',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: 'αF',
165 | alphaR: 'αR',
166 |
167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.",
168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.",
169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.",
170 | delete_ctl: "Delete component. Also try 'Del'.",
171 |
172 | last_line: 'última linha, sem vírgula'
173 | };
174 |
175 | var strSHelp = "AJUDA DO CIRCUIT SANDBOX\n\n"; //embedded Help
176 | var strAddC = "Adicionar componente: clique em uma parte no caixote de peças, em seguida, clique no esquema.\n\n";
177 | var strAddW = "Adicionar fio: Clique num ponto de conexão (círculo aberto) Arrastar. Soltar.\n\n";
178 | var strSel = "Selecionar: Arraste um retângulo para selecionar componentes. \n(desktop:) Shift-click para incluir outro componente.\n\n";
179 | var strMove = "Mover: Toque e arraste para outro local.\n\n";
180 | var strDel = "Deletar: Clique para selecionar, depois clique no X ou pressione BACKSPACE.\n\n";
181 | var strRot = "Rodar/Refletir: Clique para selecionar, e depois clique no ícone de rotação ou aperte \"r\" para rodar 90. Repetir para mais rotações e reflexões (8 total).\n\n";
182 | var strView = "";
183 | var strProp = "Propriedades: Clique duas vezes num componente para alterar suas propriedades.\n\n";
184 | var strNum = "Números podem ser inseridos utilizando a notação de engenharia,\n\
185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\
186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15";
187 |
--------------------------------------------------------------------------------
/js/fr.js:
--------------------------------------------------------------------------------
1 | var i18n = {
2 | error1: "Désolé, une erreur de navigateur s'est produite lors du démarrage de l'outil de schéma. Nous vous recommandons d'utiliser les dernières versions de Firefox et Chrome.",
3 | Ground_connection: 'Connexion à la terre',
4 | Node_label: 'Étiquette de nœud',
5 | Voltage_source: 'Source de tension',
6 | Current_source: 'Source de courant',
7 | Resistor: 'Résistance',
8 | Capacitor: 'Capacité',
9 | Inductor: 'Inductance',
10 | Op_Amp: 'Ampli Op',
11 | Diode: 'Diode',
12 | NFet: 'NFet',
13 | PFet: 'PFet',
14 | NPN: 'NPN',
15 | PNP: 'PNP',
16 | Voltage_probe: 'Ampli Op',
17 | Current_probe: 'Sonde de courant',
18 | drag_onto_diagram: ': faites glisser ou appuyez pour insérer',
19 | Help: "Aide: afficher la page d'aide",
20 | Grid: "Grille: basculer l'affichage de la grille",
21 | Link_tip: 'Lien: partager un lien vers le circuit',
22 | Cut: 'Couper les composants sélectionnés dans le presse-papiers',
23 | Copy:'Copier les composants sélectionnés dans le presse-papiers',
24 | Paste:'Coller le presse-papiers dans le schéma',
25 | Delete:'Supprimer les composants sélectionnés',
26 | Rotate:'Faire pivoter le composant sélectionné',
27 | Save_netlist: 'Enregistrer le schéma',
28 | Open_netlist: 'Ouvrir le schéma',
29 | Select_netlist: 'Selectionner le schéma',
30 | Perform_DC_Analysis: 'Effectuer une analyse en DC',
31 | DC_Analysis: 'Analyse en DC',
32 | Perform_AC_Analysis: 'Effectuer une analyse des petits signaux AC',
33 | Perform_Transient_Analysis: 'Effectuer une analyse transitoire',
34 | Transient_Analysis: 'Analyse transitoire',
35 | Edit_Properties: 'Modifier les propriétés',
36 | Link: 'Lien',
37 | Sharable_Link: 'Lien partageable',
38 |
39 | points_per_decade: 'Nombre de points / décade',
40 | Starting_frequency: 'Fréquence de démarrage (Hz)',
41 | Ending_frequency: 'Fréquence de fin (Hz)',
42 | source_for_ac: 'Nom de la source (V) ou (I) pour l’AC',
43 | AC_Analysis_add_a_voltage_probe: 'Analyse AC: ajoutez une sonde de tension au diagramme!',
44 | AC_Analysis: 'Analyse AC',
45 | Zero_ac_response: "Réponse zéro AC, -infini sur l'échelle dB.",
46 | Near_zero_ac_response: 'Réponse quasi nulle en courant alternatif, supprimer ',
47 | probe: ' sonde',
48 |
49 | // Alerts and warnings from the circuit simulator
50 | Alert: 'Alerte',
51 | ckt_alert1: 'Avertissement! Le circuit a une boucle de source de tension ou une source ou une sonde de courant court-circuitée par un fil, veuillez retirer la source ou le fil causant le court-circuit.',
52 | ckt_alert2: 'Avertissement! Le simulateur peut produire des résultats dénués de sens ou aucun résultat avec des circuits illégaux.',
53 | ckt_warning1: 'Avertissement! Deux éléments de circuit partagent le même nom ',
54 | ckt_alert3: 'Veuillez effectuer au moins une connexion à la terre.',
55 | ckt_alert4: 'La méthode Newton a échoué; vos sources de courant ont-elles un chemin conducteur vers la terre?',
56 | ckt_alert5: 'La méthode Newton a échoué; ce peut être votre circuit ou notre simulateur.',
57 | ckt_alert6: 'DC a échoué, en essayant une analyse transitoire à partir de zéro.',
58 | ckt_alert7: "L'analyse AC fait référence à une source inconnue, ",
59 | ckt_alert8: "L'analyse AC a échoué, source inconnue.",
60 |
61 | //ckt_error1: 'Rows of M mismatched to b or cols mismatch to x.',
62 | //ckt_error2: 'Row or columns of A too large for B',
63 | //ckt_error3: 'Row or columns of A too large for C',
64 | //ckt_error4: 'scalea and scaleb must be scalars or Arrays',
65 | //ckt_error5: 'Rows or cols > rows or cols of dest',
66 | //ckt_error6: 'Rows or cols > cols or rows of dest',
67 |
68 | log_Frequency: 'log10(fréquence en Hz)',
69 | degrees: 'degrés',
70 | AC_Phase: 'Phase AC',
71 | AC_Magnitude: 'Amplitude AC',
72 |
73 | Minimum_number_of_timepoints: 'Nombre minimum de points temporels',
74 | Stop_time_seconds: "Temps d'arrêt (sec)",
75 | tstop_lbl: "temps d'arrêt",
76 | Transient_Analysis_add_a_probe: 'Analyse des transitoires: ajoutez une sonde au diagramme!',
77 |
78 | //Use creative phrasing to get this sentence to come out right:
79 | // alert('The ' + color + ' probe is connected to node ' + '"' + label + '"' + ', which is not an actual circuit node');
80 | The: 'Le ',
81 | probe_is_connected_to_node: ' la sonde est connectée au nœud ',
82 | which_is_not_an_actual_circuit_node: ", qui n'est pas un nœud de circuit réel",
83 |
84 | Voltage: 'Tension',
85 | Current: 'Courant',
86 | Time: 'Temps',
87 | Node_has_two_conflicting_labels: 'Le nœud a deux étiquettes en conflit: ',
88 |
89 | DC_value: 'Valeur DC',
90 |
91 | impulse: 'impulsion',
92 | Height: 'Hauteur',
93 | Width: 'Largeur (sec)',
94 |
95 | step: 'étape',
96 | Initial_value: 'Valeur initiale',
97 | Plateau_value: 'Valeur du palier',
98 | Delay_until_step: "Délai jusqu'à l'étape (sec)",
99 | Rise_time: 'Temps de montée (sec)',
100 |
101 | square: 'carrée',
102 | Frequency: 'Fréquence (Hz)',
103 | Duty_cycle: 'Cycle de service (%)',
104 |
105 | triangle: 'triangle',
106 | ramp: 'rampe',
107 | Slope: 'Pente (volts / sec)',
108 |
109 | pwl: 'pwl',
110 | pwl_repeating: 'pwl (répétition)',
111 | Comma_separated_list: "Liste séparée par des virgules d'heures et de valeurs en alternance",
112 |
113 | pulse: 'impulsion',
114 | Delay_until_pulse: 'Délai avant impulsion (sec)',
115 | Time_for_first_transition: 'Temps de première transition (sec)',
116 | Time_for_second_transition: 'Temps pour la deuxième transition (sec)',
117 | Pulse_width: "Largeur d'impulsion (sec)",
118 | Period: 'Période (sec)',
119 |
120 | sin: 'sin',
121 | Offset_value: 'Valeur de décalage',
122 | Amplitude: 'Amplitude',
123 | Delay_until_sin_starts: "Délai jusqu'à ce que le sin commence (sec)",
124 | Phase_offset_degrees: 'Déphasage (degrés)',
125 |
126 | Circuit_Sandbox_Help: 'AIDE DU CIRCUIT SANDBOX',
127 | name: 'Nom',
128 | value: 'Valeur',
129 | label: 'Étiquette',
130 | r: 'R',
131 | c: 'C',
132 | l: 'L',
133 | color: 'Couleur',
134 | offset: 'Décalage',
135 | area: 'Aire',
136 | type: 'Type',
137 | normal: 'normal',
138 | ideal: 'idéal',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: 'W/L',
142 | lambda: 'λ',
143 | A: 'A',
144 | Plot_color: 'Couleur du tracé',
145 | Plot_offset: 'Décalage du tracé',
146 | dc: 'dc',
147 |
148 | Gain: 'A',
149 | Rin: 'Rentrée',
150 | Rout: 'Rsortie',
151 |
152 | red: 'rouge',
153 | green: 'vert',
154 | blue: 'bleu',
155 | cyan: 'cyan',
156 | magenta: 'magenta',
157 | yellow: 'jaune',
158 | orange: 'orange',
159 | black: 'noir',
160 | xaxis: 'axe x',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: '𝛼F',
165 | alphaR: '𝛼R',
166 |
167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.",
168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.",
169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.",
170 | delete_ctl: "Delete component. Also try 'Del'.",
171 |
172 | last_line: 'dernière ligne, pas de virgule'
173 | };
174 |
175 | var strSHelp = "AIDE DU CIRCUIT SANDBOX\n"; //embedded Help
176 | var strAddC = "Ajouter un composant: appuyez sur une pièce dans le bac de pièces, puis appuyez sur le schéma.\n\n";
177 | var strAddW = "Ajouter un fil: appuyez sur un point de connexion (cercle ouvert) pour commencer. Glisser. Libérer.\n\n";
178 | var strSel = "Sélectionner: faites glisser un rectangle pour sélectionner des composants. (bureau :) Cliquez en maintenant la touche Maj enfoncée pour inclure un autre composant.\n\n";
179 | var strMove = "Déplacer: touchez et faites glisser vers un nouvel emplacement.\n\n";
180 | var strDel = "Supprimer: appuyez pour sélectionner, puis appuyez sur l'icône X ou appuyez sur RETOUR ARRIÈRE.\n\n";
181 | var strRot = "Rotation / Réflexion: Cliquez pour sélectionner, puis cliquez sur l'icône de rotation ou tapez la lettre «r» pour faire pivoter 90. Répétez pour plus de rotations et de réflexions (8 au total).\n\n";
182 | var strView = "";
183 | var strProp = "Propriétés: appuyez deux fois pour modifier ses propriétés.\n\n";
184 | var strNum = "Les nombres peuvent être saisis en notation technique,\n\
185 | T 10^12, G 10^9, M 10^6, k 10^3, m 10^-3, u 10^-6, n 10^-9, p 10^-12, f 10^-15";
186 |
--------------------------------------------------------------------------------
/js/es.js:
--------------------------------------------------------------------------------
1 | var i18n = {
2 | error1: 'Lo sentimos, hay un error del navegador al iniciar la herramienta esquemática. Recomendamos el uso de las versiones más nuevas de Firefox y Chrome.',
3 | Ground_connection: 'Conexión a tierra',
4 | Node_label: 'Etiqueta para nodo',
5 | Voltage_source: 'Fuente de voltaje',
6 | Current_source: 'Fuente de corriente',
7 | Resistor: 'Resistor',
8 | Capacitor: 'Condensador',
9 | Inductor: 'Inductor',
10 | Op_Amp: 'Amp Op',
11 | Diode: 'Diodo',
12 | NFet: 'NFet',
13 | PFet: 'PFet',
14 | NPN: 'NPN',
15 | PNP: 'PNP',
16 | Voltage_probe: 'Sensor de voltaje',
17 | Current_probe: 'Sensor de corriente',
18 | drag_onto_diagram: ': arrastre o pulse para insertar',
19 | Help: 'Ayuda: página de ayuda',
20 | Grid: 'Rejilla: Mostrar/ocultar rejilla',
21 | Link_tip: 'Link: Compartir un enlace al circuito',
22 | Cut: 'Cortar componentes seleccionados al portapapeles',
23 | Copy:'Copiar componentes seleccionados al portapapeles',
24 | Paste:'Pegar portapapeles al esquema',
25 | Delete:'Borrar componentes seleccionados',
26 | Rotate:'Rotar componente seleccionado',
27 | Save_netlist: 'Guardar la lista de conexiones',
28 | Open_netlist: 'Abrir la lista de conexiones',
29 | Select_netlist: 'Seleccionar netlist',
30 | Perform_DC_Analysis: 'Realizar análisis DC',
31 | DC_Analysis: 'Análisis DC',
32 | Perform_AC_Analysis: 'Realizar análisis AC de pequeña-señal',
33 | Perform_Transient_Analysis: 'Realizar Análisis transitorio',
34 | Transient_Analysis: 'Análisis transitorio',
35 | Edit_Properties: 'Editar Propiedades',
36 | Link: 'Enlace',
37 | Sharable_Link: 'Compartir enlace',
38 |
39 | points_per_decade: 'Número de puntos/década',
40 | Starting_frequency: 'Frecuencia inicial (Hz)',
41 | Ending_frequency: 'Frecuencia final (Hz)',
42 | source_for_ac: 'Nombre de fuente V o I para ac',
43 | AC_Analysis_add_a_voltage_probe: "Análisis AC: ¡añadir un sensor de voltaje al diagrama!",
44 | AC_Analysis: 'Análisis AC',
45 | Zero_ac_response: 'Respuesta cero de ac, -infinito en la escala dB.',
46 | Near_zero_ac_response: 'Cerca de respuesta cero de ac, expulsar ',
47 | probe: ' sensor',
48 |
49 | // Alerts and warnings from the circuit simulator
50 | Alert: '¡Alerta!',
51 | ckt_alert1: '¡Advertencia! El circuito tiene bucle en la fuente de voltaje o o una fuente o sensor de corriente haciendo cortocircuito en un cable, favor de quitar la fuente o el cable que causa el corto.',
52 | ckt_alert2: '¡Advertencia! El simulador podría producir resultados sin sentido o sin resultados con circuitos ilegales.',
53 | ckt_warning1: '¡Advertencia! Dos elementos del circuito comparten el mismo nombre ',
54 | ckt_alert3: 'Por favor, haga al menos una conexión a tierra.',
55 | ckt_alert4: 'El método de Newton falló. ¿Sus fuentes de corriente tienen una conexión a tierra?',
56 | ckt_alert5: 'El método de Newton falló, puede ser su circuito o puede ser nuestro simulador.',
57 | ckt_alert6: 'DC falló, tratando análisis transitorio de cero.',
58 | ckt_alert7: 'Análisis AC refiere a una fuente desconocida, ',
59 | ckt_alert8: 'Análisis AC falló, fuente desconocida.',
60 |
61 | //ckt_error1: 'Los renglones M no coinciden con b o hay un desajuste con las columnas x.',
62 | //ckt_error2: 'Renglones o columnas de A demasiado grandes para B',
63 | //ckt_error3: 'Renglones o columnas de A demasiado grande para C',
64 | //ckt_error4: 'scalea y scaleb deben ser escalares o Arreglos',
65 | //ckt_error5: 'Renglones o columnas > renglones o columnas de destino',
66 | //ckt_error6: 'Renglones o columnas > columnas o renglones de destino',
67 |
68 | log_Frequency: 'log10(Frecuencia en Hz)',
69 | degrees: 'grados',
70 | AC_Phase: 'Fase AC',
71 | AC_Magnitude: 'Magnitud de AC',
72 |
73 | Minimum_number_of_timepoints: 'Número mínimo de puntos de tiempo',
74 | Stop_time_seconds: 'Detener en el tiempo (segundos)',
75 | tstop_lbl: 'tiempo final',
76 | Transient_Analysis_add_a_probe: 'Análisis transitorio: ¡añadir un sensor al diagrama!',
77 |
78 | //Use creating phrasing to get this right:
79 | // alert('El sensor ' + color + ' está conectado al nodo ' + '"' + label + '"' + ' que no es un nodo del circuito en este momento');
80 | The: 'El sensor ',
81 | probe_is_connected_to_node: ' está conectado al nodo ',
82 | which_is_not_an_actual_circuit_node: ' que no es un nodo del circuito en este momento',
83 |
84 | Voltage: 'Voltaje',
85 | Current: 'Corriente',
86 | Time: 'Tiempo',
87 | Node_has_two_conflicting_labels: 'Nodo tiene dos etiquetas en conflicto: ',
88 |
89 | DC_value: 'Valor DC',
90 |
91 | impulse: 'impulso',
92 | Height: 'Altura',
93 | Width: 'Ancho (segundos)',
94 |
95 | step: 'paso',
96 | Initial_value: 'Valor inicial',
97 | Plateau_value: 'Valor meseta',
98 | Delay_until_step: 'Retardo hasta el paso (seg)',
99 | Rise_time: 'Tiempo de subida (seg)',
100 |
101 | square: 'cuadrado',
102 | Frequency: 'Frecuencia (Hz)',
103 | Duty_cycle: 'Ciclo de trabajo (%)',
104 |
105 | triangle: 'triángulo',
106 | ramp: 'rampa',
107 | Slope: 'Pendiente (voltios/seg)',
108 |
109 | pwl: 'pwl',
110 | pwl_repeating: 'pwl (repitiendo)',
111 | Comma_separated_list: 'Lista separada por comas de los tiempos y valores alternos',
112 |
113 | pulse: 'pulso',
114 | Delay_until_pulse: 'Retardo hasta el pulso (seg)',
115 | Time_for_first_transition: 'Tiempo para la primera transición (seg)',
116 | Time_for_second_transition: 'Tiempo para la segunda transición (seg)',
117 | Pulse_width: 'Ancho de pulso (segundos)',
118 | Period: 'Período (seg)',
119 |
120 | sin: 'seno',
121 | Offset_value: 'Valor de desplazamiento',
122 | Amplitude: 'Amplitud',
123 | Delay_until_sin_starts: 'Retardo hasta el inicio del seno (seg)',
124 | Phase_offset_degrees: 'Desplazamiento de fase (grados)',
125 |
126 | Circuit_Sandbox_Help: 'AYUDA PARA PRUEBAS',
127 | name: 'Nombre',
128 | value: 'Valor',
129 | label: 'Etiqueta',
130 | r: 'R',
131 | c: 'C',
132 | l: 'L',
133 | color: 'Color',
134 | offset: 'Compensar',
135 | area: 'Área',
136 | type: 'Tipo',
137 | normal: 'normal',
138 | ideal: 'ideal',
139 | is: 'Is',
140 | Vt: 'Vt',
141 | WL: 'W/L',
142 | lambda: 'λ',
143 | A: 'A',
144 | Plot_color: 'Color del gráfico',
145 | Plot_offset: 'Compensar gráfica',
146 | dc: 'dc',
147 |
148 | Gain: 'A',
149 | Rin: 'Rin',
150 | Rout: 'Rout',
151 |
152 | red: 'rojo',
153 | green: 'verde',
154 | blue: 'azul',
155 | cyan: 'cian',
156 | magenta: 'magenta',
157 | yellow: 'amarillo',
158 | orange: 'naranja',
159 | black: 'negro',
160 | xaxis: 'eje x',
161 |
162 | Ics: 'Ics',
163 | Ies: 'Ies',
164 | alphaF: '𝛼F',
165 | alphaR: '𝛼R',
166 |
167 | scroll_ctl: "Scroll arrows. Also try Alt-drag or ⌥ Option-drag.",
168 | zoom_ctl: "Zoom: in/out/fit. Also try mouse or trackpad scroll.",
169 | rotate_ctl: "Rotate/Reflect component. Also try 'R'.",
170 | delete_ctl: "Delete component. Also try 'Del'.",
171 |
172 | last_line: 'última líena, sin coma'
173 | };
174 |
175 | var strSHelp = "AYUDA DEL CIRCUITO DE PRUEBAS \n\n"; // Ayuda incrustado
176 | var strAddC = "Añadir componente: Haga clic en una parte en la papelera y a continuación haga clic en el esquema para añadir. \n\n";
177 | var strAddW = "Añadir cable: los cables comienzan a partir de los puntos de conexión (círculos abiertos). Haga clic en una conexión para iniciar un cable, arrastre y suelte. \n\n";
178 | var strSel = "Seleccionar: Arrastre en rectángulo para seleccionar los componentes. Shift clic para incluir otro componente. \n\n";
179 | var strMove = "Mover: Haga clic para seleccionar y a continuación arrastre a una nueva ubicación. \n\n";
180 | var strDel = "Borrar: Seleccionar y a continuación haga clic en el icono X o presione RETROCESO. \n\n";
181 | var strRot = "Rotar/Reflejar: Haga clic para seleccionar, a continuación, haga clic en el icono de rotación o presione la letra \"r\" para girar 90. Repetir para más rotaciones y reflexiones. \n\n";
182 | var strView = "";
183 | var strProp = "Propiedades: Haga doble clic en un componente para cambiar los valores. \n\n";
184 | var strNum = "Sufijos numéricos se pueden introducir con notación de ingeniería: \n\
185 | T = 10^12, G = 10^9, M = 10^6, k = 10^3\n\
186 | m = 10^-3, u = 10^-6, n = 10^-9, p = 10^-12, f = 10^-15";
187 |
--------------------------------------------------------------------------------
/js/fet_vsparms.js:
--------------------------------------------------------------------------------
1 | //////////////////////////////////////////////////////////////////////////////
2 | //
3 | // Circuit simulator fet_vs parameters and parameter initialization
4 | //
5 | //////////////////////////////////////////////////////////////////////////////
6 |
7 | // Copyright (C) 2012 Massachusetts Institute of Technology
8 |
9 | function Fet_vs_parms() {
10 | // this.finalize(undefined);
11 | this.finalize(undefined);
12 | }
13 |
14 | Fet_vs_parms.prototype.vs_display_default = " { \
15 | \"nT\": 22, \"pT\": 22, \
16 | \"nLg\": 38e-7, \"pLg\": 38e-7, \
17 | \"ndLg\": 8e-7, \"pdLg\": 8e-7, \
18 | \"netov\": 1.38e-7, \"petov\": 1.34e-7, \
19 | \"nCg\": 2.50e-6, \"pCg\": 2.57e-6, \
20 | \"nS0\": 0.095, \"pS0\": 0.089, \
21 | \"ndelta\": 0.122, \"pdelta\": 0.145, \
22 | \"nVt0\": 0.470, \"pVt0\": 0.554, \
23 | \
24 | \"nvxo\": 0.985e7, \"pvxo\": 0.754e7, \
25 | \"nmu\": 195, \"pmu\": 166, \
26 | \"nRx\":71, \"pRx\": 73, \
27 | \"nRy\":71, \"pRy\": 73, \
28 | \
29 | \"nCif\": 1.5e-12, \"pCif\": 1.38e-12, \
30 | \"nCof\": 1.84e-12, \"pCof\": 1.47e-12 }";
31 |
32 | Fet_vs_parms.prototype.vs_parm_default = " { \
33 | \"nT\": 22, \"pT\": 22, \
34 | \"nWscale\": 1.0, \"pWscale\": 1.0, \
35 | \"nLg\": 38e-7, \"pLg\": 38e-7, \
36 | \"ndLg\": 8e-7, \"pdLg\": 8e-7, \
37 | \"nCg\": 2.50e-6, \"pCg\": 2.57e-6, \
38 | \"netov\": 1.38e-7, \"petov\": 1.34e-7, \
39 | \"ndelta\": 0.122, \"pdelta\": 0.145, \
40 | \"nS0\": 0.095, \"pS0\": 0.089, \
41 | \"nnd\": 0.0, \"pnd\": 0.0, \
42 | \"nRx\":71, \"pRx\": 73, \
43 | \"nRy\":71, \"pRy\": 73, \
44 | \"nCif\": 1.5e-12, \"pCif\": 1.38e-12, \
45 | \"nCof\": 1.84e-12, \"pCof\": 1.47e-12, \
46 | \"nvxo\": 0.985e7, \"pvxo\": 0.754e7, \
47 | \"nrv\": 1, \"prv\": 1, \
48 | \"nzeta\": 1, \"pzeta\": 1.0, \
49 | \"nmu\": 195, \"pmu\": 166, \
50 | \"nbeta\": 1.8, \"pbeta\": 1.8, \
51 | \"nbetaq\": 1.8, \"pbetaq\": 1.8, \
52 | \"nalpha\": 3.5, \"palpha\": 3.5, \
53 | \"nphib\": 0.9, \"pphib\": 0.9, \
54 | \"ngamma\": 0.24, \"pgamma\": 0.16, \
55 | \"nVt0\": 0.470, \"pVt0\": 0.554, \
56 | \"nVdA\": 1.0, \"pVdA\": 1.0 }";
57 |
58 | // VS Model adapted from Matlab (Lan Wei and Dimitri Antoniadis).
59 |
60 | function Fet_vs_parms_type(type_sign) {
61 | //alert('in device with type ' + type_sign);
62 | this.T=27; // Temperature in degrees C
63 | this.Wscale=1.0; // Scales all the devices
64 | this.Lg = 30e-7; // Gate length [cm]
65 | this.dLg= 9e-7; // dLg=L_g-L_c (default 0.3xLg_nom)
66 | this.Cg=2.65e-6; // Gate cap [F/cm^2]
67 | this.etov = 1.2e-7; // Eqv. dielec. thick at S/D-G overlap [cm]
68 | this.delta=0.125; // DIBL [V/V]
69 | this.S0=0.098; // Subthresh swing at T=27C & Vd=VdA [V/decade]
70 | this.nd=0; // Punchthrough Factor typically none (nd=0) or 0-> 4.
71 |
72 | // Series R for "x" terminal [ohm-micron] (Rs)
73 | if (this.type_sign > 0) this.Rx=55; // [ohm-microns], n < p?
74 | else this.Rx = 75;
75 |
76 | this.Ry=this.Rx; // Series R for "y" (Typically assume Rs=Rd)
77 | this.Cif = 1e-12; // Inner fringing S or D capacitance [F/cm]
78 | this.Cof = 2e-13; // Outer fringing S or D capacitance [F/cm]
79 |
80 | // Virtual src velocity [cm/s]
81 | if (this.type_sign > 0) this.vxo=1.45*1e7;
82 | else this.vxo=1.07*1e7;
83 |
84 | this.rv=1.0; // Ratio vxo(strong inv)/vxo(weak inv)
85 | this.zeta=1; // Sets transition Vg for vxo, do not set=0!
86 | // If rv=1, vxo=constant, zeta irrelevant
87 | this.mu=230; // Mobility [cm^2/V.s]
88 | this.beta=1.8; // Saturation factor. Typ. nFET=1.8, pFET=1.6
89 | this.betaq = 1.8; // Beta in the charge model
90 | this.alpha=3.5;
91 |
92 | this.phib=0.9; // ~abs(2*phif)>0 [V]
93 | this.gamma=0.3; // Body factor [sqrt(V)]
94 |
95 | if (this.type_sign > 0) this.Vt0=0.5286;
96 | else this.Vt0=0.5323; // Nominal threshold voltage
97 |
98 | this.VdA=1.0; // Vd [V] corresponding to IdA if given.
99 |
100 |
101 | this.perturbv = 1.0e-6; //dV for f-D deriv, not too small, not too large.
102 | }
103 |
104 | Fet_vs_parms_type.prototype.postproc = function() {
105 | // Derived physical parameters
106 | this.phit = 8.617e-5*(273+this.T); // kT/q
107 | this.St=this.S0*(this.T+273.0)/300.0;
108 | this.nint = this.St/(Math.log(10.0)*this.phit);
109 | this.n0=this.nint - this.nd*this.VdA;
110 | // Intrinsic swing n-factor at T
111 |
112 | // Derived non-physical parameters.
113 | this.LgmdLg = this.Lg-this.dLg;
114 | this.vel2v = this.LgmdLg/this.mu;
115 | this.aphit = this.alpha*this.phit;
116 | this.sqrtphib = Math.sqrt(this.phib);
117 | this.vxofrac = this.vxo * (this.rv-1.0)/this.rv;
118 | this.dvgstdvds = this.delta;
119 | this.Rx *= 1.0e-4; // Rx, Ry ohm-u -> ohm-cm
120 | this.Ry *= 1.0e-4;
121 | this.Cov=(0.345e-12/this.etov)*this.dLg/2 + this.Cof;
122 | this.Cgso = this.Cov; // Gate to source overlap cap [f/cm]
123 | this.Cgdo = this.Cov; // Gate to drain overlap cap [f/cm]
124 | }
125 |
126 | function niceDisp(obj) {
127 | var strObj = JSON.stringify(obj);
128 | strObj = strObj.replace(/,/g,",\n");
129 | strObj = strObj.slice(1,-1);
130 | return(strObj);
131 | }
132 |
133 | function niceDispCourse(n,p) {
134 | var parmsList =
135 | ["T","Lg","etov","Cg","S0","delta",
136 | "Vt0","vxo","mu","Rx","Ry","Cif","Cof"];
137 | var retStr = "";
138 | for (var i = 0; i < parmsList.length; i++) {
139 | retStr += "\"" + "n" + parmsList[i] + "\"" + ":"
140 | + n[parmsList[i]].toExponential(2)
141 | + "," + " \t"
142 | + "\"" + "p" + parmsList[i] + "\"" + ":"
143 | + p[parmsList[i]].toExponential(2);
144 | if (i < (parmsList.length - 1)) retStr += "," + "\n";
145 | else retStr += "\n";
146 | }
147 | return(retStr);
148 | }
149 |
150 | // Get standard parameters for the n and p-type devices.
151 | Fet_vs_parms.prototype.p = new Fet_vs_parms_type(-1);
152 | Fet_vs_parms.prototype.n = new Fet_vs_parms_type(1);
153 |
154 |
155 | // 1) Extract Parameters from text in JSON format in to Fet prototypes,
156 | // so that all FET's are affected.
157 | Fet_vs_parms.prototype.parse = function(fileString) {
158 | if (fileString.length == 0) {
159 | var fetObj = null;
160 | } else {
161 | try {
162 | var fetObj = JSON.parse(fileString);
163 | }
164 | catch(e) {
165 | // JSON Format error in string, try to find it.
166 | fetObj = null;
167 | var commaInd = 0, foundit = false;
168 | for (var rs = fileString.slice(1,-1); // remove { and }
169 | rs.length > 0;
170 | rs = rs.slice(commaInd+1,rs.length)) {
171 | commaInd = rs.indexOf(",");
172 | commaInd = (commaInd > 0) ? commaInd : rs.length;
173 | var rss = "{" + rs.slice(0,commaInd) + "}";
174 | try {
175 | var fetObjt = JSON.parse(rss);
176 | }
177 | catch(e) {
178 | alert("Syntax error near " + rss +
179 | "\n Format for parm file: key colon val comma" +
180 | "\n Any missing colons or commas?");
181 | foundit = true;
182 | break;
183 | }
184 | }
185 | if (foundit == false)
186 | alert("Could not find the syntax error in " + fileString
187 | + "\n Format for parameter file: key colon val comma"
188 | + "\n Any missing colons or commas?");
189 | }
190 | }
191 | var updateParm = new Object(); updateParm.n = 0; updateParm.p = 0;
192 | for (var keystr in fetObj) {
193 | var k1 = keystr.substring(0,1);
194 | var krest = keystr.substring(1,keystr.length);
195 | var val = fetObj[keystr];
196 | if ((k1 == "n") || (k1 == "p")) {
197 | if (Fet_vs_parms.prototype[k1][krest] == undefined) {
198 | alert("unknown parameter name " + krest);
199 | } else {
200 | updateParm[k1] += 1;
201 | Fet_vs_parms.prototype[k1][krest] = val;
202 | }
203 | } else {
204 | alert("unknown model type " + k1);
205 | }
206 | }
207 | return(updateParm);
208 | }
209 |
210 | // 1) Extract Parameters from text in JSON format if it exists.
211 | // 2) Post process the parameters.
212 | Fet_vs_parms.prototype.finalize = function(fileString) {
213 |
214 | // First put in the default parameters.
215 | var defaultP = Fet_vs_parms.prototype.vs_parm_default;
216 | var updateParm = Fet_vs_parms.prototype.parse(defaultP);
217 |
218 | // If there is a fileString passed in, process it to update
219 | // the prototype parameters.
220 | if (fileString != undefined) {
221 | updateParm = Fet_vs_parms.prototype.parse(fileString);
222 | //var dispN = niceDisp(Fet_vs_parms.prototype.n);
223 | //var dispP = niceDisp(Fet_vs_parms.prototype.p);
224 | var dispText = niceDispCourse(Fet_vs_parms.prototype.n,
225 | Fet_vs_parms.prototype.p);
226 | alert( updateParm["n"] + " VS N-Fet" + " \t"
227 | + updateParm["p"] + " VS P-Fet\n"
228 | + "Updated " + " \t" + "Updated\n"
229 | + "Parameters" + " \t" + "Parameters\n"
230 | + "\n"
231 | + dispText);
232 | }
233 |
234 | Fet_vs_parms.prototype.p.postproc();
235 | Fet_vs_parms.prototype.n.postproc();
236 | }
237 |
238 | // Uses javascript file API in html5 to read local file
239 | function rdFetF(eventt) {
240 |
241 | // Helper function, Process the file data given as a string
242 | function procFileStr(fileString) {
243 | if (fileString.length > 0) {
244 | // Get rid of end of line characters
245 | fileString = fileString.replace(/(\r\n|\n|\r)/gm,"");
246 | // Show results
247 | //alert( "Fet Parameters Received\n" + fileString);
248 | }
249 | // Put in curly braces for JSON.
250 | fileString = "{" + fileString + "}";
251 |
252 | // Modify the prototype so that all fets are affected.
253 | Fet_vs_parms.prototype.finalize(fileString);
254 | }
255 |
256 | // Get file from event, event might be new file name or reload
257 | var fetFile = null;
258 | if (eventt.target.files != null) {
259 | fetFile = eventt.target.files[0];
260 | } else {
261 | var tempf = document.getElementById('fetParms');
262 | if (tempf == undefined) fetFile = undefined;
263 | else fetFile = tempf.files[0];
264 | }
265 |
266 | // Check for undefined file and process null string.
267 | if (fetFile == undefined) {
268 | alert("No Parameter File Name Specified.");
269 | procFileStr("");
270 | }
271 | // Else read the file and process.
272 | else {
273 | var freader = new FileReader();
274 | freader.onload = function(ff) {
275 | var fileString = ff.target.result;
276 | procFileStr(fileString);
277 | }
278 | freader.readAsText(fetFile);
279 | }
280 | }
281 |
282 | //document.querySelector('.fet_reload').addEventListener('click',rdFetF,false);
283 |
284 |
285 |
--------------------------------------------------------------------------------
/js/fet_vsp.js:
--------------------------------------------------------------------------------
1 | //////////////////////////////////////////////////////////////////////////////
2 | //
3 | // Circuit simulator fet_vs equations with analytic derivatives
4 | //
5 | //////////////////////////////////////////////////////////////////////////////
6 |
7 | // Copyright (C) 2012 Massachusetts Institute of Technology
8 |
9 |
10 | // VS Model adapted from Matlab (Lan Wei and Dimitri Antoniadis).
11 |
12 | // Note, evaluate as if an N-type intrinsic device with Vds > 0, type and
13 | // Ids direction correction handled in calling routine.
14 | // Smoothsqrt is used to avoid arg near zero (infinite slope) or neg (complex).
15 | function Fet_vs_idsq(device, V, doq) {
16 |
17 | // Vgs-vt, vt increased by body effect, decreased by dibl.
18 | // Body effect (e.g. SH. Shichman, D. A. Hodges, Modeling and
19 | // Simulation of Insulated-Gate Field-Effect Transistor Circuits,
20 | // IEEE J. of Solid-State Circuits, vol. SC-3, no. 3, Sept. 1968.
21 | // Dibl effect, Khakifirooz (3).
22 | var D=device.D, G=device.G, B=device.B, S=device.S;
23 | var Vt0p = device.parms.Vt0 + device.dVt;
24 |
25 | with(device.parms) {
26 | var Vds = V[D];
27 | var Vgs = V[G];
28 | var Vbs = V[B];
29 | var fdf = device.smoothsqrt(phib-Vbs,true); // Ask for deriv
30 | var sqrtpmv = fdf[0];
31 | var dsqrtpmvdarg = fdf[1];
32 | var Vt0bs = Vt0p + gamma*(sqrtpmv-sqrtphib)
33 | var vgst = Vgs - (Vt0bs - dvgstdvds*Vds);
34 | var dsqrtpmvdvbs = -dsqrtpmvdarg;
35 | var dvgstdvbs = -gamma * dsqrtpmvdvbs;
36 | // dvgstdvgs = 1
37 |
38 | // Carrier vel with transition from weak inversion (vxo/rv)
39 | // to strong (vxo) (reference needed). If rv=1, vx0/rv = vxo, no
40 | // velocity adjustment
41 | var expetafv = Math.exp((vgst - 0.5*zeta*zeta*phit)/(zeta*phit));
42 | var FFv=1 / (1+expetafv);
43 | var vx0 = vxo - vxofrac * FFv;
44 |
45 | var dvx0dvgs = (vxofrac/(zeta*phit))*expetafv*(FFv*FFv);
46 | // dvx0dvgs = dvx0vgst
47 | var dvx0dvds = dvx0dvgs * dvgstdvds;
48 | var dvx0dvbs = dvx0dvgs * dvgstdvbs;
49 |
50 | // Fsub drops from 1->0 as vgst rises from below zero to just
51 | // above (subthresh) Fsub is ~1 vgs-vt << -aphit/2 and
52 | // is ~0 vgs-vt >> aphit/2, Khakifirooz, (4)
53 | var expetafs = Math.exp((vgst + 0.5*aphit)/aphit);
54 | var Fsub = 1/(1+expetafs);
55 |
56 | var dFsubdvgst = -expetafs*(Fsub*Fsub)/aphit;
57 |
58 | // Source chg/unit w, eta and Qinv from Khakifirooz (2),
59 | // Vds variation of n needs ref. Note if nd=0, nphit = n0*phit.
60 | var n = (n0 + nd*Vds);
61 | var nphit = n*phit; // Reference needed
62 | var eta = (vgst + Fsub*aphit)/nphit;
63 | var expeta = Math.exp(eta);
64 | var logexpeta = Math.log(1+expeta);
65 | var Qinv = Cg*nphit*logexpeta;
66 |
67 | var dnphitdvds = nd*phit;
68 | var dlogexpetadeta = expeta / (1 + expeta);
69 | var dQinvdeta = Cg * nphit * dlogexpetadeta;
70 | var detadvgst = (1+aphit*dFsubdvgst)/nphit;
71 | var detadvds = detadvgst*dvgstdvds - dnphitdvds * eta / nphit;
72 | var dQinvdvgs = dQinvdeta*detadvgst;
73 | var dQinvdvbs = dQinvdvgs*dvgstdvbs;
74 | var dQinvdvds = dQinvdeta* detadvds + Cg * logexpeta * dnphitdvds;
75 |
76 | // Fsat models saturation effects, ~1 when
77 | // vds >> vdsat, ->0 as vds -> 0.
78 | // Khakifirooz, (8), (9), (10) (and post eqn text), then (6).
79 | var vdsat = vel2v * vx0 * (1-Fsub) + phit*Fsub;
80 | var vsratio = Vds/vdsat;
81 | var vsbeta = 1+Math.pow(vsratio,beta);
82 | var vsbetabeta = Math.pow(vsbeta,(1/beta));
83 | var Fsat = vsratio/vsbetabeta;
84 |
85 | var dFsatdv_r = 1/(vsbetabeta*vsbeta);
86 | var dv_rdvgst = (vel2v*vx0-phit)*(vsratio/vdsat)*dFsubdvgst;
87 | var dFsatdvgs = dFsatdv_r * dv_rdvgst;
88 | var dFsatdvbs = dFsatdv_r * dv_rdvgst * dvgstdvbs;
89 | var dFsatdvds = dFsatdv_r*(Vds*dv_rdvgst*dvgstdvds + 1.0/vdsat);
90 |
91 | // Ids is width * (src chg/unit width) * vel * Fsat, where
92 | // velocity (vx0) and q/width (Qinv) are complicated functions
93 | // of terminal v's. Khakifirooz, (5)
94 | var Ids = device.W*Qinv*vx0*Fsat;
95 | var dIdsdvds = device.W
96 | * (Qinv*vx0*dFsatdvds + Qinv*dvx0dvds*Fsat +dQinvdvds*vx0*Fsat);
97 | var dIdsdvgs = device.W
98 | * (Qinv*vx0*dFsatdvgs + Qinv*dvx0dvgs*Fsat + dQinvdvgs*vx0*Fsat);
99 | var dIdsdvbs = device.W
100 | * (Qinv*vx0*dFsatdvbs + Qinv*dvx0dvbs*Fsat + dQinvdvbs*vx0*Fsat);
101 |
102 | if (doq == true) {
103 | // Pass back Qd, Qg, and Qb with sensitivities to vds,vgs and vbs.
104 | // Nonlinear Charge calculation. Intrinsic charges adapted from
105 | // classical expressions for Qs and Qd [E.g. Tsividis Book]
106 | var sag = sqrtpmv + 0.5*gamma;
107 | var scale = sqrtpmv / sag;
108 | var Va = nphit * logexpeta * scale;
109 | var Vsatq = Math.sqrt(9*phit*phit + Va * Va); // arg > 0 always
110 | var Vdr = Vds / Vsatq;
111 | var vdrbq = (1+ Math.pow(Vdr,betaq));
112 | var vdrbqbq = Math.pow(vdrbq,(1/betaq));
113 | var x = 1 - Vdr /vdrbqbq;
114 |
115 | var dvadvds = scale
116 | * (dnphitdvds*logexpeta + nphit*dlogexpetadeta*detadvds);
117 | var dvadvgst = nphit*scale*dlogexpetadeta*detadvgst;
118 | var dvadsqrtpmv = 0.5*gamma*(nphit*logexpeta)/(sag*sag);
119 | var dvadvbs = dvadvgst*dvgstdvbs + dvadsqrtpmv*dsqrtpmvdvbs;
120 |
121 | var dvdrdva = -(Vdr/Vsatq)*(Va/Vsatq);
122 | var dvdrdvds = 1/Vsatq + dvdrdva*dvadvds;
123 | var dxdvdr = -1/(vdrbqbq*vdrbq);
124 | var dxdvds = dxdvdr*dvdrdvds;
125 | var dxdvgs = dxdvdr*dvdrdva*dvadvgst;
126 | var dxdvbs = dxdvdr*dvdrdva*dvadvbs;
127 |
128 | ////// original qs, qd model, from Tsividis
129 | // qi=2/3*(1+x+x.^2)./(1+x);
130 | var den=15*((1+x)*(1+x));
131 | var qs = (((4*x+8)*x+12)*x+6)/den;
132 | var qdp = (((6*x+12)*x+8)*x+4)/den;
133 | var ddz = den * (x+1);
134 | var dqsdx = 4.0/15.0-(8*x+4)/ddz;
135 | var dqdpdx = 0.4-(2*x+6)/ddz;
136 |
137 |
138 | // DIBL effect on drain charge. Calculate dQinv at virtual source
139 | // due to DIBL only. Then correct the qd factor to reflect this
140 | // change in channel charge change due to Vd
141 | //logexpetai = log(1+exp((Vgs - Vt0bs + Fsub*aphit)./nphit));
142 | var deta = -(dvgstdvds*Vds)/nphit;
143 | var expdeta = Math.exp(deta);
144 | var logexpetai = Math.log(1+expeta*expdeta);
145 | var etaetair = 1 - logexpetai / logexpeta;
146 | var qd = qdp + x * (qs+qdp) * (Fsub-1) * etaetair;
147 |
148 | var ddetadvds = (-deta*dnphitdvds - dvgstdvds)/nphit;
149 | var dlogexpetaiddeta = (expeta*expdeta)/(1+expeta*expdeta);
150 | var dlogexpetaideta = dlogexpetaiddeta;
151 | var detaetairdeta = ((logexpetai/logexpeta)*dlogexpetadeta
152 | - dlogexpetaideta)/logexpeta;
153 | var detaetairddeta = -dlogexpetaiddeta/logexpeta;
154 |
155 | var dqddx = dqdpdx + (x*(dqsdx+dqdpdx)+(qs+qdp))*(Fsub-1)*etaetair;
156 | var dqddFsub = x * (qs+qdp) * etaetair;
157 | var dqddetaetair = x * (qs+qdp) * (Fsub-1);
158 |
159 | var dqddvds = dqddx*dxdvds + dqddFsub*dFsubdvgst*dvgstdvds
160 | + dqddetaetair*(detaetairddeta*ddetadvds+detaetairdeta*detadvds);
161 | var dqddvgs = dqddx*dxdvgs + dqddFsub*dFsubdvgst
162 | + dqddetaetair*detaetairdeta*detadvgst;
163 | var dqddvbs = dqddx*dxdvbs + dqddFsub*dFsubdvgst*dvgstdvbs
164 | + dqddetaetair*detaetairdeta*detadvgst*dvgstdvbs;
165 |
166 | // Inversion charge partitioning to internal terminals s and d
167 | var Qinvs = LgmdLg * Qinv * qs;
168 | var Qinvd = LgmdLg * Qinv * qd;
169 |
170 | var dQinvsdvds = LgmdLg*(dQinvdvds * qs + Qinv * dqsdx * dxdvds);
171 | var dQinvsdvgs = LgmdLg*(dQinvdvgs * qs + Qinv * dqsdx * dxdvgs);
172 | var dQinvsdvbs = LgmdLg*(dQinvdvbs * qs + Qinv * dqsdx * dxdvbs);
173 |
174 | var dQinvddvds = LgmdLg * (dQinvdvds * qd + Qinv * dqddvds);
175 | var dQinvddvgs = LgmdLg * (dQinvdvgs * qd + Qinv * dqddvgs);
176 | var dQinvddvbs = LgmdLg * (dQinvdvbs * qd + Qinv * dqddvbs);
177 |
178 | // Yet another nonlinear charge
179 | var fdf = device.smoothsqrt(phib-(Vbs-Vds),true);
180 | var sqrtpmvbd = fdf[0];
181 | var dsqrtpmvbddvbs = -fdf[1];
182 | var dsqrtpmvbddvds = fdf[1];
183 |
184 | var Vt0bd = Vt0p + gamma*(sqrtpmvbd-sqrtphib);
185 | var Voff = Vds * dvgstdvds * (1-x) + 0.5*aphit;
186 | var nphits = 1.1 * nphit;
187 | var dnphitsdvds = 1.1*dnphitdvds;
188 | var Vgd = Vgs - Vds; // Voltages referred to the drain
189 | var etas = (Vgs+Voff-Vt0bs)/nphits;
190 | var etad = (Vgd+Voff-Vt0bd)/nphits;
191 | var expetas = Math.exp(etas);
192 | var expetad = Math.exp(etad);
193 | var logexpetas = Math.log(1+expetas);
194 | var logexpetad = Math.log(1+expetad);
195 | var vgsmFF = nphit*logexpetas;
196 | var vgdmFF = nphit*logexpetad;
197 | var CC=3e-13; // Temporary - allows Vg dep of Cif before screening
198 |
199 | var Qsif = CC * Vgs * Vgs - (Cif + CC*Vgs) * vgsmFF;
200 | var Qdif = CC * Vgd * Vgd - (Cif + CC*Vgd) * vgdmFF;
201 |
202 | var dvoffdvbs = -Vds*dvgstdvds*dxdvbs;
203 | var dvoffdvgs = -Vds*dvgstdvds*dxdvgs;
204 | var dvoffdvds = dvgstdvds*(1-x) - Vds*dvgstdvds*dxdvds;
205 |
206 | var detasdvds = (dvoffdvds - dnphitsdvds*etas)/nphits;
207 | var detasdvgs = (1 + dvoffdvgs)/nphits;
208 | var detasdvbs = (dvgstdvbs + dvoffdvbs)/nphits;
209 |
210 | var dvgsmFFdetas = nphit * (expetas/(expetas + 1));
211 | var dvgsmFFdvds = dvgsmFFdetas*detasdvds + dnphitdvds*logexpetas;
212 |
213 | var dvgsmFFdvgs = dvgsmFFdetas * detasdvgs;
214 | var dvgsmFFdvbs = dvgsmFFdetas * detasdvbs;
215 |
216 | var dQsifdvds = -(Cif + CC*Vgs) * dvgsmFFdvds;
217 | var dQsifdvgs = 2.0*CC*Vgs - CC*vgsmFF - (Cif+CC*Vgs)*dvgsmFFdvgs;
218 | var dQsifdvbs = -(Cif + CC*Vgs) * dvgsmFFdvbs;
219 |
220 | //etad = (Vgd + Voff - Vt0bd)/nphits;
221 | var detaddvds =(dvoffdvds-1.0-gamma*dsqrtpmvbddvds
222 | -dnphitsdvds*etad) / nphits;
223 | var detaddvgs = (1.0+dvoffdvgs)/nphits;
224 | var detaddvbs = (dvoffdvbs-gamma*dsqrtpmvbddvbs)/nphits;
225 |
226 | var dvgdmFFdetad = nphit*(expetad/(expetad+1));
227 | var dvgdmFFdvds = dvgdmFFdetad*detaddvds + dnphitdvds*logexpetad;
228 | var dvgdmFFdvgs = dvgdmFFdetad*detaddvgs;
229 | var dvgdmFFdvbs = dvgdmFFdetad*detaddvbs;
230 |
231 | var dQdifdvds = -2.0*CC*Vgd + CC*vgdmFF -(Cif + CC*Vgd)*dvgdmFFdvds;
232 | var dQdifdvgs = 2.0*CC*Vgd - CC*vgdmFF - (Cif + CC*Vgd)*dvgdmFFdvgs;
233 | var dQdifdvbs = -(Cif + CC*Vgd)*dvgdmFFdvbs;
234 |
235 | // Body charge based on approximate surface potential (psis).
236 | var fdf = device.smoothsqrt(phib+aphit+phit*Math.log(logexpeta) - Vbs,true);
237 | var spsis = fdf[0];
238 | var dspsisdarg = fdf[1];
239 | var Qbqi = (1-(qs+qd))/(2*sqrtpmv+gamma);
240 | var qbf = device.W*LgmdLg*gamma;
241 | var Qb = -qbf*(Cg * spsis + Qinv*Qbqi);
242 |
243 | var dspsisdlogexpeta = dspsisdarg*phit/logexpeta;
244 | var dspsisdeta = dspsisdlogexpeta*dlogexpetadeta;
245 | var dspsisdvds = dspsisdeta*detadvds;
246 | var dspsisdvgs = dspsisdeta*detadvgst;
247 | var dspsisdvbs = dspsisdvgs*dvgstdvbs - dspsisdarg;
248 |
249 | var spg = (2*sqrtpmv+gamma);
250 | var dQbqidvds = -(dqsdx*dxdvds + dqddvds)/spg;
251 | var dQbqidvgs = -(dqsdx*dxdvgs + dqddvgs)/spg;
252 | var dQbqidvbs = (-(dqsdx*dxdvbs+dqddvbs)+2*Qbqi*dsqrtpmvdvbs)/spg;
253 |
254 | var dQbdvds = -qbf*(Cg*dspsisdvds+Qinv*dQbqidvds+dQinvdvds*Qbqi);
255 | var dQbdvgs = -qbf*(Cg*dspsisdvgs+Qinv*dQbqidvgs+dQinvdvgs*Qbqi);
256 | var dQbdvbs = -qbf*(Cg*dspsisdvbs+Qinv*dQbqidvbs+dQinvdvbs*Qbqi);
257 |
258 | // Linear caps treated externally with Cgdo and Cgso
259 | // Linear q from G-S and G-D overlap & outer fringe (linear part)
260 | // var Qsov = (Cov + Cif) * Vgs;
261 | // var Qdov = (Cov + Cif) * Vgd; // Vgd = Vgs - Vds
262 | // Put Cif linear part back in to instrinsic model
263 | var Qsov = Cif * Vgs;
264 | var Qdov = Cif * Vgd; // Vgd = Vgs - Vds
265 |
266 | // Total charge at internal terminals x and y.
267 | // var Qs = -W*(Qinvs+Qsov+Qsif); Qsov handled by Cgso
268 | //device.Qd = -W*(Qinvd+Qdov+Qdif); Qdov handled by Cgdo
269 | var Qs = -device.W*(Qinvs + Qsov + Qsif);
270 | var Qd = -device.W*(Qinvd + Qdov + Qdif);
271 |
272 | //var dQddvds = -W*(dQinvddvds - (Cov+Cif) + dQdifdvds);
273 | //var dQddvgs = -W*(dQinvddvgs + (Cov+Cif) + dQdifdvgs);
274 | //var.dQsdvgs = -device.W*(dQinvsdvgs + (Cov+Cif) + dQsifdvgs);
275 | var dQddvds = -device.W*(dQinvddvds - Cif + dQdifdvds);
276 | var dQddvgs = -device.W*(dQinvddvgs + Cif + dQdifdvgs);
277 | var dQddvbs = -device.W*(dQinvddvbs + dQdifdvbs);
278 |
279 | var dQsdvds = -device.W*(dQinvsdvds + dQsifdvds);
280 | var dQsdvgs = -device.W*(dQinvsdvgs + Cif + dQsifdvgs);
281 | var dQsdvbs = -device.W*(dQinvsdvbs + dQsifdvbs);
282 |
283 | // Final charge balance
284 | var Qg = -(Qs+Qd+Qb);
285 | var dQgdvds = -(dQsdvds + dQddvds + dQbdvds);
286 | var dQgdvgs = -(dQsdvgs + dQddvgs + dQbdvgs);
287 | var dQgdvbs = -(dQsdvbs + dQddvbs + dQbdvbs);
288 | }
289 |
290 | if (doq == false) { // Pass back matrix of Ids and derivs.
291 | var R = new Array(1);
292 | R[0] = new Array(4);
293 | R[0][0] = Ids;
294 | R[0][D+1] = dIdsdvds;
295 | R[0][G+1] = dIdsdvgs;
296 | R[0][B+1] = dIdsdvbs;
297 | } else { // Pass back Ids, Qd, Qg, Qb, Qs and derivatives.
298 | var R = new Array(5);
299 | for (var i = R.length-1; i >= 0; i--)
300 | R[i] = new Array(4);
301 | var Rr = R[0]; // first row used for crnt.
302 | Rr[0] = Ids; Rr[D+1]=dIdsdvds; Rr[G+1]=dIdsdvgs; Rr[B+1]=dIdsdvbs;
303 | Rr = R[D+1]; // Drain chg.
304 | Rr[0] = Qd; Rr[D+1]=dQddvds; Rr[G+1]=dQddvgs; Rr[B+1]=dQddvbs;
305 | Rr = R[G+1] // Gate chg.
306 | Rr[0] = Qg; Rr[D+1]=dQgdvds; Rr[G+1]=dQgdvgs; Rr[B+1]=dQgdvbs;
307 | Rr = R[B+1] // Bulk chg.
308 | Rr[0] = Qb; Rr[D+1]=dQbdvds; Rr[G+1]=dQbdvgs; Rr[B+1]=dQbdvbs;
309 | Rr = R[S+1] // Source chg.
310 | Rr[0] = Qs; Rr[D+1]=dQsdvds; Rr[G+1]=dQsdvgs; Rr[B+1]=dQsdvbs;
311 | }
312 | return R;
313 | }
314 | }
315 |
--------------------------------------------------------------------------------
/js/hammer.min.js:
--------------------------------------------------------------------------------
1 | /*! Hammer.JS - v2.0.6 - 2016-01-06
2 | * http://hammerjs.github.io/
3 | *
4 | * Copyright (c) 2016 Jorik Tangelder;
5 | * Licensed under the license */
6 | !function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(j(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e\s*\(/gm,"{anonymous}()@"):"Unknown Stack Trace",f=a.console&&(a.console.warn||a.console.log);return f&&f.call(a.console,e,d),b.apply(this,arguments)}}function i(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&ha(d,c)}function j(a,b){return function(){return a.apply(b,arguments)}}function k(a,b){return typeof a==ka?a.apply(b?b[0]||d:d,b):a}function l(a,b){return a===d?b:a}function m(a,b,c){g(q(b),function(b){a.addEventListener(b,c,!1)})}function n(a,b,c){g(q(b),function(b){a.removeEventListener(b,c,!1)})}function o(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function p(a,b){return a.indexOf(b)>-1}function q(a){return a.trim().split(/\s+/g)}function r(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;dc[b]}):d.sort()),d}function u(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=na(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY);var j=F(b.deltaTime,b.deltaX,b.deltaY);b.overallVelocityX=j.x,b.overallVelocityY=j.y,b.overallVelocity=ma(j.x)>ma(j.y)?j.x:j.y,b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,b.maxPointers=c.prevInput?b.pointers.length>c.prevInput.maxPointers?b.pointers.length:c.prevInput.maxPointers:b.pointers.length,C(c,b);var k=a.element;o(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===Aa||f.eventType===Ca)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Da&&(i>za||h.velocity===d)){var j=b.deltaX-h.deltaX,k=b.deltaY-h.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=ma(l.x)>ma(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function D(a){for(var b=[],c=0;ce;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:la(c/b),y:la(d/b)}}function F(a,b,c){return{x:b/a||0,y:c/a||0}}function G(a,b){return a===b?Ea:ma(a)>=ma(b)?0>a?Fa:Ga:0>b?Ha:Ia}function H(a,b,c){c||(c=Ma);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function I(a,b,c){c||(c=Ma);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function J(a,b){return I(b[1],b[0],Na)+I(a[1],a[0],Na)}function K(a,b){return H(b[0],b[1],Na)/H(a[0],a[1],Na)}function L(){this.evEl=Pa,this.evWin=Qa,this.allow=!0,this.pressed=!1,x.apply(this,arguments)}function M(){this.evEl=Ta,this.evWin=Ua,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function N(){this.evTarget=Wa,this.evWin=Xa,this.started=!1,x.apply(this,arguments)}function O(a,b){var c=s(a.touches),d=s(a.changedTouches);return b&(Ca|Da)&&(c=t(c.concat(d),"identifier",!0)),[c,d]}function P(){this.evTarget=Za,this.targetIds={},x.apply(this,arguments)}function Q(a,b){var c=s(a.touches),d=this.targetIds;if(b&(Aa|Ba)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=s(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return o(a.target,i)}),b===Aa)for(e=0;eh&&(b.push(a),h=b.length-1):e&(Ca|Da)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Va={touchstart:Aa,touchmove:Ba,touchend:Ca,touchcancel:Da},Wa="touchstart",Xa="touchstart touchmove touchend touchcancel";i(N,x,{handler:function(a){var b=Va[a.type];if(b===Aa&&(this.started=!0),this.started){var c=O.call(this,a,b);b&(Ca|Da)&&c[0].length-c[1].length===0&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:va,srcEvent:a})}}});var Ya={touchstart:Aa,touchmove:Ba,touchend:Ca,touchcancel:Da},Za="touchstart touchmove touchend touchcancel";i(P,x,{handler:function(a){var b=Ya[a.type],c=Q.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:va,srcEvent:a})}}),i(R,x,{handler:function(a,b,c){var d=c.pointerType==va,e=c.pointerType==xa;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Ca|Da)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var $a=u(ja.style,"touchAction"),_a=$a!==d,ab="compute",bb="auto",cb="manipulation",db="none",eb="pan-x",fb="pan-y";S.prototype={set:function(a){a==ab&&(a=this.compute()),_a&&this.manager.element.style&&(this.manager.element.style[$a]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){k(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),T(a.join(" "))},preventDefaults:function(a){if(!_a){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=p(d,db),f=p(d,fb),g=p(d,eb);if(e){var h=1===a.pointers.length,i=a.distance<2,j=a.deltaTime<250;if(h&&i&&j)return}if(!g||!f)return e||f&&c&Ja||g&&c&Ka?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var gb=1,hb=2,ib=4,jb=8,kb=jb,lb=16,mb=32;U.prototype={defaults:{},set:function(a){return ha(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=X(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=X(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=X(a,this),-1===r(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=X(a,this);var b=r(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(b,a)}var c=this,d=this.state;jb>d&&b(c.options.event+V(d)),b(c.options.event),a.additionalEvent&&b(a.additionalEvent),d>=jb&&b(c.options.event+V(d))},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=mb)},canEmit:function(){for(var a=0;af?Fa:Ga,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ea:0>g?Ha:Ia,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Y.prototype.attrTest.call(this,a)&&(this.state&hb||!(this.state&hb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=W(a.direction);b&&(a.additionalEvent=this.options.event+b),this._super.emit.call(this,a)}}),i($,Y,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[db]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&hb)},emit:function(a){if(1!==a.scale){var b=a.scale<1?"in":"out";a.additionalEvent=this.options.event+b}this._super.emit.call(this,a)}}),i(_,U,{defaults:{event:"press",pointers:1,time:251,threshold:9},getTouchAction:function(){return[bb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distanceb.time;if(this._input=a,!d||!c||a.eventType&(Ca|Da)&&!f)this.reset();else if(a.eventType&Aa)this.reset(),this._timer=e(function(){this.state=kb,this.tryEmit()},b.time,this);else if(a.eventType&Ca)return kb;return mb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===kb&&(a&&a.eventType&Ca?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=na(),this.manager.emit(this.options.event,this._input)))}}),i(aa,Y,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[db]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&hb)}}),i(ba,Y,{defaults:{event:"swipe",threshold:10,velocity:.3,direction:Ja|Ka,pointers:1},getTouchAction:function(){return Z.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Ja|Ka)?b=a.overallVelocity:c&Ja?b=a.overallVelocityX:c&Ka&&(b=a.overallVelocityY),this._super.attrTest.call(this,a)&&c&a.offsetDirection&&a.distance>this.options.threshold&&a.maxPointers==this.options.pointers&&ma(b)>this.options.velocity&&a.eventType&Ca},emit:function(a){var b=W(a.offsetDirection);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),i(ca,U,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:9,posThreshold:10},getTouchAction:function(){return[cb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance