From 2a300acd4ec7a51f40b994bc07ad7109b75c33be Mon Sep 17 00:00:00 2001 From: "Delaney M. Dow" <56002316+delaneydow@users.noreply.github.com> Date: Wed, 20 Apr 2022 14:12:33 -0400 Subject: [PATCH 1/4] Create dilution.js --- src/app/library/dilution.js | 134 ++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 src/app/library/dilution.js diff --git a/src/app/library/dilution.js b/src/app/library/dilution.js new file mode 100644 index 00000000..9d1df04f --- /dev/null +++ b/src/app/library/dilution.js @@ -0,0 +1,134 @@ +import Template from "./template"; +import paper from "paper"; + +export default class Dilution extends Template{ + constructor() { + super(); + } + + __setupDefinitions() { + this.__unique = { + position: "Point" + }; + + this.__heritable = { + componentSpacing: "Float" , + channelWidth: "Float", + length: "Float" , + width: "Float" , + height: "Float" + } + + this.__defaults = { + // see if any additional values need to be added + componentSpacing: 1000, + channelWidth: 0.8*1000, + length: 4.92 * 1000, + width: 1.23 * 1000, + height: 250 + } + + this.__units = { + componentSpacing: "μm", + channelWidth: "μm", + length: "μm", + width: "μm", + height: "μm" + + } + + this.__minimum = { + componentSpacing: 0, + channelWidth: 10, + width: 30, + length: 120, + height: 10 + + } + + this.__maximum = { + componentSpacing: 10000, + channelWidth: 2000, + width: 6000, + length: 24 * 1000, + height: 1200 + + } + + this.__placementTool = "componentPositionTool" + + this.__toolParams = { + position: "position" + } + + this.__featureParams = { + componentSpacing: "componentSpacing", + position: "position", + channelWidth: "channelWidth", + length: "length", + width: "width" + } + + this.__targetParams = { + componentSpacing: "componentSpacing", + channelWidth: "channelWidth", + length: "length", + width: "width", + + } + + this.__renderKeys = ["FLOW"]; + + this.__mind = "DILUTION"; + } + + getPorts(params) { + let length = params["length"] + let ports = []; + // idk what needs to be pushed ?? aka size of component ports + ports.push(new ComponentPort(0, - length/2, "1", "FLOW")); + ports.push(new ComponentPort(0, length/2, "2", "FLOW")); + + return ports; + } + + render2D(params, key) { + // drawing, user paper library + let position = params["position"]; + let px = position[0]; + let py = position[1]; + let color = params["color"]; + let cw = params["channelWidth"]; + let l = params["length"]; + let w = params["width"]; + let p0, p1, p2, p3, p4, p5; + + // create points to add to 2D render + p0 = [px - cw / 2, py - l / 2]; + p1 = [px + cw / 2, py - l / 2]; + p2 = [px + w + cw / 2, py]; + p3 = [px + cw / 2, py + l / 2]; + p4 = [px - cw / 2, py + l / 2]; + p5 = [px - cw / 2 - w, py]; + + let hex = new paper.Path(); + hex.add(new paper.Point(p0)); + hex.add(new paper.Point(p1)); + hex.add (new paper.Point(p2)); + hex.add (new paper.Point(p3)); + hex.add (new paper.Point(p4)); + hex.add (new paper.Point(p5)); + + hex.closed = true; + hex.fillColor = color; + + return hex; + } + + render2DTarget(key, params) { + let render = this.render2D(params, key); + render.fillColor.alpha = 0.5; + return render; + } + +} \ No newline at end of file From 318101aa37a0056de62460975b371a00426fc309 Mon Sep 17 00:00:00 2001 From: "Delaney M. Dow" <56002316+delaneydow@users.noreply.github.com> Date: Wed, 20 Apr 2022 14:37:41 -0400 Subject: [PATCH 2/4] register Dilution definition --- .DS_Store | Bin 0 -> 6148 bytes src/app/featureSets/featureSet.js | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..00aa5ca7c856448b00bec83732e567297f621557 GIT binary patch literal 6148 zcmeHK%Wl&^6g?A1B7KOKvY<;ZSg;`yYlLLd1XQUF5(#UtlQsmL7^M$&=?%Yv#MkgK zd_Xz(&Pdo3XH^NIYDStl2v z#U64sHuYz|d+ZLTIOBH}v~C!q`R&<9v@bBJe^V>*$r+X5N=GBA>I|v(s*$L& zA29+cRsG6xM$U7NjPc|1hWVwjse0J;JZ#`;bgH~9&c^{>bM~JSo8~^(k9k^&RK)qd z^5+&9n?t@13Iql2n*y>w#LR+;!_uN|9W3+;Ky0&F z6YKJuAe`7?;;^*HH%!J-iI!^I6~kCM+hb>!I4mt%I*hw~7}v9LHx#42(|@eyFp0%b z1_gowbp;~(xG(4bVDtUIP6|&!fuO*>QoywPqkfM=a%bz>;N+~0nLja061&o(Qdqd- hSSxZAA2Ms=yI3m3#9?WXEllA@KxGI;P~e{`@CPB#2=4#@ literal 0 HcmV?d00001 diff --git a/src/app/featureSets/featureSet.js b/src/app/featureSets/featureSet.js index 90fdeb98..e687bc8c 100644 --- a/src/app/featureSets/featureSet.js +++ b/src/app/featureSets/featureSet.js @@ -46,6 +46,7 @@ import Node from "../library/node"; import DropletGeneratorT from "../library/dropletGeneratorT"; import DropletGeneratorFlowFocus from "../library/dropletGeneratorFlowFocus"; import LogicArray from "../library/logicArray"; +import Dilution from "../library/dilution"; export default class FeatureSet { constructor(definitions, tools, render2D, render3D, setString) { @@ -123,7 +124,9 @@ export default class FeatureSet { DropletGenFlow: { object: new DropletGeneratorFlowFocus(), key: null }, LogicArray: { object: new LogicArray(), key: "FLOW" }, LogicArray_control: { object: new LogicArray(), key: "CONTROL" }, - LogicArray_cell: { object: new LogicArray(), key: "CELL" } + LogicArray_cell: { object: new LogicArray(), key: "CELL" }, + "Dilution": {object: new Dilution(), key: "FLOW"}, + "Dilution_control": {object: new Dilution(), key: "CONTROL"} }; // this.__checkDefinitions(); From e7593feeeae5c475716211fbd79c450f8cfdfada Mon Sep 17 00:00:00 2001 From: "Delaney M. Dow" <56002316+delaneydow@users.noreply.github.com> Date: Wed, 20 Apr 2022 14:47:26 -0400 Subject: [PATCH 3/4] create UI element for dilution --- .DS_Store | Bin 6148 -> 8196 bytes index.html | 6 ++++++ src/.DS_Store | Bin 0 -> 6148 bytes src/app/.DS_Store | Bin 0 -> 8196 bytes 4 files changed, 6 insertions(+) create mode 100644 src/.DS_Store create mode 100644 src/app/.DS_Store diff --git a/.DS_Store b/.DS_Store index 00aa5ca7c856448b00bec83732e567297f621557..0bdf66999a0d689dcdbb14b2310c60b5b5e9894f 100644 GIT binary patch delta 323 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8E20o2aMAD6%nNH}hr%jz7$c**Q2SHn1>? zZ02EE!(5+KUR;orlb-}sd@89RC$qT3z~DL~6Eh1d8&Dw^2Ny3_Y;Z28L!j3Z@nYwY8ia;;M$Wo(Z{? zRn;}Mb+drZ1p-D!2+hC`rD4?U$?Mp~H!tPMWag6K1`4`@f?~5E$9Lw*{34!{{dqVz PfLcMJ#IQM@XAUy}EvZrT delta 107 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$SAxqU^g?P@Ma!?HO!M|i11D< ta$3yJ!6C>DR0IS9+(5z=q<&-Jcjn3bGM*sa3``J{K!!7Hj^~-f3;@(u5l{dC diff --git a/index.html b/index.html index 7225f9a5..44c976bc 100644 --- a/index.html +++ b/index.html @@ -47,6 +47,12 @@
+ Mixer + + Edit Border
diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d39a98704f08ea08d346fa481d039509cf967324 GIT binary patch literal 6148 zcmeHK!EVz)5S>i|-K0X~fK+<(1&KorNt9A5RLKhAkQUzW@l&C-nZ7S2LM!eHfjOX0YIY?ma5qNLuj0ILrUza zAS#-}e2EehVUMO0*#!n@@5&Iu1Sb7tZU0{3$n!fZb|D-U&9e#b@=Y{J;w*1AZ&j&W zdGK&g>zb}Ts(lX5%{<7%e3o^?=|}3l4fFGe?RUl`D?5zd$K&~+{^Yeu^Ds`wQ=1%* z#u)PHL!6GxylZCZD6{hfZb0j*t`6#li$$m1X?X3E<7LBJw3@9K4e#h>bGfYQgJ-SN z{_x`JdhvDn?Yr9wg2O7M-%V3%&COtzBMOPq)F=UYc#m-M0`;#5)iU^vHqeGZqff zgQ8q2qDxg=VkoX1luO5PpW_RME*+G8GS0(KR$QSdE@V W5PinNA$m~cN5Ik`jWDoP27UqQ3S|ZW literal 0 HcmV?d00001 diff --git a/src/app/.DS_Store b/src/app/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1dbb152c6ceec5e8e0574d68fcefc1bb880a47bf GIT binary patch literal 8196 zcmeHM&u<$=6n^8l?K)}5CQX{O0%=85sZt}9RH1-SRO7aSz#*ZINo{o$@`WpZK)F}qKj6fzmtHs`ap51}fP~a*`R0dRd)**T2-Q2%%zK{s-kZ!f^JeuX zM8rzX+7i(m5m~5G+GA*5QRKL+10`pArXU&Yi8v+Hqz1i1Uk{+Oj*NkffsBESfsBES zf&T*o_-4yuo$}q+qgk6VkTEcn49NSzL6x#-WLryhb)Zox0AwEBsz65`pllo?i$=D! zRHpE$vj=8OnMpC2HpjRl;gCfm+gfUKV%nUTnVFdkg{j$L=O{R_qLx{kF_1AZ$bih< z$H+y_-k@?{{vNLeqUr_0140JXhp1Oyr~*xfe3b-6#8bE*Q#cD=4>7|&W(c6C{Ib~; zevEd3a@9)$yqmu&ZS~#1v+`PT!>r+%*9iPLSzP>;A9W zmQ}C{75mch@$&WM1?Tz)@0~0-$4iS#Hx`_C-(NgADOj^tmR44G_KzMNe{=HfW2_B@ znX8T_^zUx_1GH0EIw(hBAi}ydN42O91_ij6FEbGx_3st?3z*(LwaBNCYCs>VH=Gpf zIX8trhaL6FgJ*Zpd+wKiM!&XulVZiM9+)%8e(s#X-)*~d3JarS=f~feuqUT3OioYE z%v_wEo4IuP@|zX=g6CEr)+2eIZizrdrJ%_-{i+Dd{v*Db@WVtZ6?-a$yUS}|z3kdJ zY5+6+vP1d$IO06qu19`tZFe{3$!3qfRk0`HY9xYSUBrIki*W0HjIdZu`2K3RD=^~$ z!eFf-hvIuYiXjJVHn-d;a>F_=9X$wKj|XdENhFEbmq_Ui3t5l2^rYr4H{7Zp*5_~j ziDQE@UtI4fSG8i(yjJAk;f~TRn{9+5d3KS#&91R!w!&_*PuS<|F56&R>`S(-?Q@;Dd&~GUg4Lj;_BIu7RxR zt$vT{&V42BwT;Ox6R90Ddpne3M6Y^I=Kpt2fBzp!Zn8yZ3=9hcEPuOvyM)ztK78qg z%Us(*-9eQ_;@Vm&6ErFvhg9h}WcMG2&>cXfP0`4}YV|89n)&fqXM Fe*;4(ZBGCI literal 0 HcmV?d00001 From 34ff771a80df22bb48f5afccc77a4b77f8bad15d Mon Sep 17 00:00:00 2001 From: "Delaney M. Dow" <56002316+delaneydow@users.noreply.github.com> Date: Wed, 20 Apr 2022 15:01:05 -0400 Subject: [PATCH 4/4] add Dilution component to viewManager.js --- .DS_Store | Bin 8196 -> 8196 bytes src/.DS_Store | Bin 6148 -> 6148 bytes src/app/.DS_Store | Bin 8196 -> 10244 bytes src/app/view/.DS_Store | Bin 0 -> 8196 bytes src/app/view/ui/componentToolBar.js | 13 ++++++++++++- src/app/view/viewManager.js | 1 + 6 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 src/app/view/.DS_Store diff --git a/.DS_Store b/.DS_Store index 0bdf66999a0d689dcdbb14b2310c60b5b5e9894f..ffe3fe737589dbfd9d90840b24ecfca0154ca591 100644 GIT binary patch delta 78 zcmZp1XmQwZSeWtTwRN*5=ZeS+&t_m?U}h+0C}K!13ogpb$chP#fp~ diff --git a/src/.DS_Store b/src/.DS_Store index d39a98704f08ea08d346fa481d039509cf967324..fbf683e1515b286bbdb0dd51db2b1a278d782a60 100644 GIT binary patch delta 619 zcmZoMXfc=|#>B!ku~2NHo+2ab#(>?7ixZfc7+ELtFj+I6ob18WP%lwkZDwMjqhMrd zUaO-}ZEk6#qhM-bP+QB%A+Bm@>zR;SSyf$ATQ`#d3>X<9Gy^}BhEcPC3}%Kzh609y z%;d6yq@4UD1_s7`Nd-BX#U%y?_XPwPnV4Bv+1NQaxwv_F`S=9{g@gq~>IFqbMa9G= zB!#49;su105|gvji}FkJQk?U1@{62uN>k$n_=_|0%RQ6x^8$)e%Q92TBT7;$N`f=1 zfKoze8iG<&;t)b1l?6aGA_xJnq3%Vgsd>@qMVTr7X=(MvsU;C0E0T-yb8-Umi!)0y z^YbEM(m>hB7_jvvskxqcY571aK~C^504XaDOD!q}(ir+9A`^>>67$kiohoB<5|dJM z{PUdhOG@%{BQk;B0686OL2yB0eR5`Ay0ZNTNHB6LJ7_>y0u0KqkmV3yRCdUG0Op3| z<>#dWRRusKl^wjHsyG<585|jc8Dba;85$U-Gc0D<%5ae39K&OVuMGbgc^SnRl^C@d zbr?+<%^4jS9T}Y&eHa57gBTT~AqFtP;#C%EAe3TE*(}7Y#JHKAgP#MKlr{%4e`lV| SFXG4nRL=xbvpGU!4Ko0udYqvE delta 123 zcmZoMXfc=|#>B)qu~2NHo+2a5#(>?7j4YFRSgaXOP4-}E(2}gKHZd~MQ82PJuhmhg zHZ(9a(@`+BFsQBNU9q*Xk%#n_C*`D41Fp)Yfuxh^rdfdM4ynR#n&3*3F!}Kv14{7SJ>n zhBAgshE#^~$$7&1ETUrK5}OwaD>CwM2rw!;qyrTI!Q^uy_ROA)-jfAHwKsnj6Jgxg zpv@-843Sje2GXt|XKgI}&ODi4CQyV4;#duk0!9V~0}wsAK&E#yqo@ia65) z2*2ktAq8V8Lo48kb||CLos>~5XX*lez@v9g; z&|1SunZt)NBP(-4Q8GIEcg3AlMQdAI1}p=U4DiS0D)~6CCpfu}p5G(b_F+rtHoc{E zyBXL0X6(bCF%M8~{SrZos6=&&sfm(Mnv3|FL0ku-1K&0=LHZnLzGR{$Qj4QM? zK5NPFmyryQ``?-H=lqWP&w~AiFi=M}L(C`2n~!916gMp^g4a@J%}KsSJqyS|I3Bg+ zYQo3wrY*B}zxl0Zn6{UeeyGA!ar(kV$C+_v=4Rg14&rXD?X^2;)k|LS(=)Gq;G6dI zIBpKxp1%_|y1V6Tn{m|k!l;o5I1CzadHo`cg1B3aJ5i8IKQ;ZraY{~Ux4h8n-M_oG z=&r1<_7~mW>iWu}dv9&2-!D1yHgd*)m`m_)`W{ajUjfg}3bLIVj%cU6ef(7WNxxEf7>=KLqeR{KF7!7p{z{ V7(LJ$7KptF5E^V{8ThLV{04wCB0m5C literal 0 HcmV?d00001 diff --git a/src/app/view/ui/componentToolBar.js b/src/app/view/ui/componentToolBar.js index 38148cfc..ad5b557b 100644 --- a/src/app/view/ui/componentToolBar.js +++ b/src/app/view/ui/componentToolBar.js @@ -64,6 +64,7 @@ export default class ComponentToolBar { this.__dropletgenTButton = document.getElementById("dropletgenT_button"); this.__dropletgenFlowButton = document.getElementById("dropletgenFlow_button"); this.__logicarrayButton = document.getElementById("logicarray_button"); + this.__dilutionButtom = document.getElementById("dilution_buttom"); //Create all the parameter menu buttons @@ -115,6 +116,7 @@ export default class ComponentToolBar { this.__dropletgenTParams = document.getElementById("dropletgenT_params_button"); this.__dropletgenFlowParams = document.getElementById("dropletgenFlow_params_button"); this.__logicarrayParams = document.getElementById("logicarray_params_button"); + this.__dilutionParams = document.getElementById("dilution_params_buttom"); this.buttons = { SelectButton: this.__selectToolButton, @@ -164,7 +166,8 @@ export default class ComponentToolBar { CapacitanceSensor: this.__capacitancesensorButton, DropletGenT: this.__dropletgenTButton, DropletGenFlow: this.__dropletgenFlowButton, - LogicArray: this.__logicarrayButton + LogicArray: this.__logicarrayButton, + "Dilution": this.__dilutionButton }; @@ -475,6 +478,13 @@ export default class ComponentToolBar { ref.setActiveButton("LogicArray"); ref.__viewManagerDelegate.switchTo2D(); }; + + this.__dilutionButton.onclick = function() { + Registry.viewManager.activateTool("dilution"); + + ref.setActiveButton("dilution"); + ref.__viewManagerDelegate.switchTo2D(); + }; } setActiveButton(feature) { @@ -541,6 +551,7 @@ export default class ComponentToolBar { this.__dropletgenTParams.onclick = ComponentToolBar.getParamsWindowCallbackFunction("DropletGenT", "Basic"); this.__dropletgenFlowParams.onclick = ComponentToolBar.getParamsWindowCallbackFunction("DropletGenFlow", "Basic"); this.__logicarrayParams.onclick = ComponentToolBar.getParamsWindowCallbackFunction("LogicArray", "Basic"); + this.__dilutionParams.onclick = ComponentToolBar.getParamsWindowCallbackFunction("dilution", "Basic"); } static getParamsWindowCallbackFunction(typeString, setString, isTranslucent = false) { diff --git a/src/app/view/viewManager.js b/src/app/view/viewManager.js index 0405b792..03ee96d0 100644 --- a/src/app/view/viewManager.js +++ b/src/app/view/viewManager.js @@ -1292,6 +1292,7 @@ export default class ViewManager { this.tools["DropletGenT"] = new ComponentPositionTool("DropletGenT", "Basic"); this.tools["DropletGenFlow"] = new ComponentPositionTool("DropletGenFlow", "Basic"); this.tools["LogicArray"] = new ControlCellPositionTool("LogicArray", "Basic"); + this.tools["dilution"] = new MultilayerPositionTool("dilution", "Basic"); } /**