Skip to content

Commit 026414e

Browse files
committed
Fix some issues on the decay chain diagram.
The double-clicking on a nuclide to show its decay products no longer worked, so this was replaced with a link that can be clicked - its a bit cleaner anyway. Fixed decay chart options layout being a bit messed up. Fixed sending translated string to the JS - before the strings were not properly escaped, so would cause JS errors if they had a single quote character. Improved translating the decay diagram string to better take into account translations having the nuclide name at different locations within the sentence than in English.
1 parent 6285905 commit 026414e

17 files changed

+137
-64
lines changed

InterSpec_resources/DecayChainChart.css

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,16 @@ rect.DecayChartNuc.MousedOver
104104
cursor: pointer;
105105
}
106106

107+
.ShowDecayProductsTxt
108+
{
109+
cursor: pointer;
110+
}
111+
112+
.ShowDecayProductsRect
113+
{
114+
cursor: pointer;
115+
}
116+
107117
.DecayChainDnldBtn
108118
{
109119
position: absolute;

InterSpec_resources/DecayChainChart.js

Lines changed: 72 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -53,22 +53,23 @@ DecayChainChart = function(elem, options) {
5353

5454
if( (typeof this.options.clickNucTxt) !== 'string' )
5555
this.options.clickNucTxt = "Click nuclide for more information.";
56-
if( (typeof this.options.clickNucMoreInfoTxt1) !== 'string' )
57-
this.options.clickNucMoreInfoTxt1 = "Double-click nuclide for particles it gives off.";
5856
if( (typeof this.options.clickNucMoreInfoTxt2) !== 'string' )
5957
this.options.clickNucMoreInfoTxt2 = "Click a different source nuclide above to";
6058
if( (typeof this.options.clickNucMoreInfoTxt3) !== 'string' )
6159
this.options.clickNucMoreInfoTxt3 = "change displayed decay chain.";
6260

6361
if( (typeof this.options.clickNucMblTxt) !== 'string' )
6462
this.options.clickNucMblTxt = "Tap nuclide for more information.";
65-
if( (typeof this.options.clickNucMblMoreInfoTxt1) !== 'string' )
66-
this.options.clickNucMblMoreInfoTxt1 = "Touch nuclide for 1 second for particles it gives off.";
6763
if( (typeof this.options.clickNucMblMoreInfoTxt2) !== 'string' )
6864
this.options.clickNucMblMoreInfoTxt2 = "Click a different source nuclide above to";
69-
if( (typeof this.options.clickNucMblMoreInfoTxt3) !== 'string' )
65+
if( (typeof this.options.clickNucMblMoreInfoTxt3) !== 'string' )
7066
this.options.clickNucMblMoreInfoTxt3 = "change displayed decay chain.";
71-
67+
68+
if( (typeof this.options.showDecayProductsTxt) !== 'string' )
69+
this.options.showDecayProductsTxt = "Show {nuclide} decay products";
70+
if( (typeof this.options.showDecaysThroughTxt) !== 'string' )
71+
this.options.showDecaysThroughTxt = "Show decays through {nuclide}";
72+
7273
this.svg = d3.select(this.area).append("svg");
7374

7475
this.chartbackground = this.svg.append("rect")
@@ -262,16 +263,14 @@ DecayChainChart.prototype.setDecayData = function( data, decayFrom ){
262263
{
263264
this.instructions.html(
264265
'<tspan x="0">' + this.options.clickNucMblTxt + '</tspan>'
265-
+ (decayFrom ? '<tspan x="0" dy="1em">' + this.options.clickNucMblMoreInfoTxt1 + '</tspan>'
266-
+ '<tspan x="0" dy="1em">' + this.options.clickNucMblMoreInfoTxt2 + '</tspan>'
266+
+ (decayFrom ? '<tspan x="0" dy="1em">' + this.options.clickNucMblMoreInfoTxt2 + '</tspan>'
267267
+ '<tspan x="0" dy="1em">' + this.options.clickNucMblMoreInfoTxt3 + '</tspan>': '')
268268
);
269269
}else
270270
{
271271
this.instructions.html(
272272
'<tspan x="0" dy="1em">' + this.options.clickNucTxt + '</tspan>'
273-
+ (decayFrom ? '<tspan x="0" dy="1em">' + this.options.clickNucMoreInfoTxt1 + '</tspan>'
274-
+ '<tspan x="0" dy="1em">' + this.options.clickNucMoreInfoTxt2 + '</tspan>'
273+
+ (decayFrom ? '<tspan x="0" dy="1em">' + this.options.clickNucMoreInfoTxt2 + '</tspan>'
275274
+ '<tspan x="0" dy="1em">' + this.options.clickNucMoreInfoTxt3 + '</tspan>': '')
276275
);
277276
}//if( no data ) / else mobile / else
@@ -501,7 +500,6 @@ DecayChainChart.prototype.redraw = function() {
501500
self.decays.selectAll('.DecayChartNuc').classed('MousedOver',false);
502501
} )
503502
.on("click", function(d){ self.nuclideClicked(d); } )
504-
.on("dblclick", function(d){ self.nuclideDoubleClicked(d); } )
505503
;
506504

507505
rects.exit().remove();
@@ -667,7 +665,6 @@ DecayChainChart.prototype.redraw = function() {
667665
self.decays.selectAll('.DecayChartNuc').classed('MousedOver',false);
668666
} )
669667
.on("click", function(d){ self.nuclideClicked(d); } )
670-
.on("dblclick", function(d){ self.nuclideDoubleClicked(d); } )
671668
.html( function(d){ return labelTxtFcn(d,txtXPos); } )
672669
.attr("font-family", "sans-serif")
673670
.attr("font-size", function(){ return font_size + "px";} )
@@ -759,12 +756,19 @@ DecayChainChart.prototype.redraw = function() {
759756
//I cant decide if its better to underline the "Show Decays Through ..." text,
760757
// or draw a box around it; currently underlineing, but I left the box
761758
// implementation commented out in the various lines below.
762-
759+
763760
if( !this.selectedNuclide && this.showParentsTxt ){
764761
self.showParentsTxt.remove();
765762
self.showParentsRect.remove();
766763
self.showParentsTxt = null;
767764
self.showParentsRect = null;
765+
766+
if( self.showDecayProductsTxt ){
767+
self.showDecayProductsTxt.remove();
768+
self.showDecayProductsRect.remove();
769+
self.showDecayProductsTxt = null;
770+
self.showDecayProductsRect = null;
771+
}
768772
}else if( this.selectedNuclide && this.options.isDecayChain ){
769773
if( !self.showParentsTxt ) {
770774
self.showParentsRect = this.chart.append("rect")
@@ -776,33 +780,76 @@ DecayChainChart.prototype.redraw = function() {
776780
.attr("stroke", "none")
777781
.attr("class", "ShowDecaysThroughRect" )
778782
.on("click", function(){ self.emitShowDecaysThrough(); } );
779-
783+
780784
self.showParentsTxt = this.chart.append("text")
781785
.attr("class", "ShowDecaysThroughTxt")
782786
.attr("x",0)
783787
.attr("y","0")
784788
.attr("fill", self.options.linkColor)
785789
.on("click", function(){ self.emitShowDecaysThrough(); } );
790+
791+
self.showDecayProductsRect = this.chart.append("rect")
792+
.attr("x", 0 )
793+
.attr("y", 0 )
794+
.attr("fill", "#ffffff") //add fill so mouse over will be active for entire rect area
795+
.attr("fill-opacity", "0")
796+
.attr("stroke", "none")
797+
.attr("class", "ShowDecayProductsRect" )
798+
.on("click", function(){ self.showNuclideDecayProducts( self.selectedNuclide ); } );
799+
800+
self.showDecayProductsTxt = this.chart.append("text")
801+
.attr("class", "ShowDecayProductsTxt")
802+
.attr("x",0)
803+
.attr("y","0")
804+
.attr("fill", self.options.linkColor)
805+
.on("click", function(){ self.showNuclideDecayProducts( self.selectedNuclide ); } );
786806
}
787-
807+
808+
// Position the "Show decay products" text first, below the instructions
809+
const decayProductsText = self.options.showDecayProductsTxt.replace( '{nuclide}', self.selectedNuclide.nuclide );
810+
self.showDecayProductsTxt
811+
.html( decayProductsText )
812+
.attr("font-size", 0.9*inst_font_size )
813+
.attr("text-decoration", "underline" )
814+
;
815+
816+
const decayprodtxtbb = self.showDecayProductsTxt.node().getBoundingClientRect();
817+
const decayprod_txt_h = decayprodtxtbb.height;
818+
const decayprod_txt_w = decayprodtxtbb.width;
819+
const box_x = chartwidth - txtbb.width - 4;
820+
821+
// Position below the instructions text
822+
const decayprod_box_y = txtbb.height + 4 + 0.15*decayprod_txt_h;
823+
824+
self.showDecayProductsTxt.attr("transform", "translate(" + box_x + "," + (decayprod_box_y + 0.9*decayprod_txt_h) + ")")
825+
826+
self.showDecayProductsRect
827+
.attr("height", 1.2*decayprod_txt_h )
828+
.attr("width", decayprod_txt_w + 0.75*decayprod_txt_h )
829+
.attr("rx", 0.08*1.2*decayprod_txt_h )
830+
.attr("transform", "translate(" + (box_x - 0.375*decayprod_txt_h) + "," + decayprod_box_y + ")")
831+
;
832+
833+
// Position the "Show Decays Through" text below the decay products text
834+
const decaysThroughText = self.options.showDecaysThroughTxt.replace( '{nuclide}', self.selectedNuclide.nuclide );
788835
self.showParentsTxt
789-
.html( 'Show Decays Through ' + self.selectedNuclide.nuclide )
836+
.html( decaysThroughText )
790837
//.attr("font-size", 0.8*inst_font_size )
791838
.attr("font-size", 0.9*inst_font_size )
792839
.attr("text-decoration", "underline" )
793840
;
794-
841+
795842
const showtxtpbb = self.showParentsTxt.node().getBoundingClientRect();
796843
const txt_h = showtxtpbb.height;
797844
const txt_w = showtxtpbb.width;
798-
const box_x = chartwidth - txtbb.width - 4;
799-
//const box_y = txtbb.height + 4 + 0.25*txt_h;
800-
const box_y = txtbb.height + 4 + 0.15*txt_h;
801-
845+
846+
// Position below the decay products text, with some spacing
847+
const box_y = decayprod_box_y + decayprod_txt_h + 0.3*txt_h;
848+
802849
//self.showParentsTxt.attr("transform", "translate(" + (box_x + 0.375*txt_h) + "," + (box_y + 0.90*txt_h) + ")");
803850
self.showParentsTxt.attr("transform", "translate(" + box_x + "," + (box_y + 0.9*txt_h) + ")")
804-
805-
851+
852+
806853
self.showParentsRect
807854
.attr("height", 1.2*txt_h )
808855
.attr("width", txt_w + 0.75*txt_h )
@@ -849,12 +896,12 @@ DecayChainChart.prototype.nuclideClicked = function( d ) {
849896

850897

851898

852-
DecayChainChart.prototype.nuclideDoubleClicked = function( d ) {
899+
DecayChainChart.prototype.showNuclideDecayProducts = function( d ) {
853900
let nucstr = (d && d.nuclide) ? d.nuclide : '';
854901
((d && d.additionalIsos) ? d.additionalIsos : []).forEach( function(nuc){
855902
nucstr += "," + nuc.nuclide;
856903
} );
857-
904+
858905
this.WtEmit(this.area.id, {name: 'ShowDecayParticleInfo'}, nucstr );
859906
}
860907

InterSpec_resources/NuclideDecayInfo.css

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,18 @@ cursor: default;
9494
border-radius: 8px;
9595
}
9696

97+
.displayOptionsDiv .LowerOptions
98+
{
99+
display: flex;
100+
align-items: center;
101+
}
102+
103+
.displayOptionsDiv .LowerOptions .LowerOptionsSpacer
104+
{
105+
flex-grow: 1;
106+
flex-shrink: 1;
107+
}
108+
97109
.m_parentNuclidesDiv
98110
{
99111
border: 1px solid #888888;

InterSpec_resources/app_text/DecayActivity.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,15 @@
7676
<message id="dcc-xAxisTitle">Decreasing Atomic Mass</message>
7777
<message id="dcc-yAxisTitle">Increasing Atomic Number</message>
7878
<message id="dcc-clickNucTxt">Click nuclide for more information.</message>
79-
<message id="dcc-clickNucMoreInfoTxt1">Double-click nuclide for particles it gives off.</message>
8079
<message id="dcc-clickNucMoreInfoTxt2">Click a different source nuclide above to</message>
8180
<message id="dcc-clickNucMoreInfoTxt3">change displayed decay chain.</message>
8281
<message id="dcc-clickNucMblTxt">Tap nuclide for more information.</message>
83-
<message id="dcc-clickNucMblMoreInfoTxt1">Touch nuclide for 1 second for particles it gives off.</message>
8482
<message id="dcc-clickNucMblMoreInfoTxt2">Click a different source nuclide above to</message>
8583
<message id="dcc-clickNucMblMoreInfoTxt3">change displayed decay chain.</message>
84+
<message id="dcc-show-decay-products">Show {nuclide} decay products</message>
85+
<message id="dcc-show-decays-through">Show decays through {nuclide}</message>
8686

8787

8888
<message id="dcn-initial-age">Initial Age: </message>
8989

90-
</messages>
90+
</messages>

InterSpec_resources/app_text/DecayActivity_ar.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,13 @@
7676
<message id="dcc-xAxisTitle">تناقص الكتلة الذرية</message>
7777
<message id="dcc-yAxisTitle">تزايد العدد الذري</message>
7878
<message id="dcc-clickNucTxt">انقر على النواة للمزيد من المعلومات.</message>
79-
<message id="dcc-clickNucMoreInfoTxt1">انقر مرتين على النواة للجسيمات التي تطلقها.</message>
8079
<message id="dcc-clickNucMoreInfoTxt2">انقر على نواة مصدر مختلفة أعلاه لـ</message>
8180
<message id="dcc-clickNucMoreInfoTxt3">تغيير سلسلة التحلل المعروضة.</message>
8281
<message id="dcc-clickNucMblTxt">اضغط على النواة للمزيد من المعلومات.</message>
83-
<message id="dcc-clickNucMblMoreInfoTxt1">المس النواة لثانية واحدة للجسيمات التي تطلقها.</message>
8482
<message id="dcc-clickNucMblMoreInfoTxt2">انقر على نواة مصدر مختلفة أعلاه لـ</message>
8583
<message id="dcc-clickNucMblMoreInfoTxt3">تغيير سلسلة التحلل المعروضة.</message>
84+
<message id="dcc-show-decay-products">إظهار منتجات تحلل {nuclide}</message>
85+
<message id="dcc-show-decays-through">إظهار التحللات عبر {nuclide}</message>
8686

8787

8888
<message id="dcn-initial-age">العمر الأولي: </message>

InterSpec_resources/app_text/DecayActivity_bn.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,13 @@
7676
<message id="dcc-xAxisTitle">হ্রাসকারী পরমাণু ভর</message>
7777
<message id="dcc-yAxisTitle">বর্ধমান পরমাণু সংখ্যা</message>
7878
<message id="dcc-clickNucTxt">আরও তথ্যের জন্য নিউক্লাইড ক্লিক করুন।</message>
79-
<message id="dcc-clickNucMoreInfoTxt1">যে কণা ছেড়ে দেয় তার জন্য নিউক্লাইড ডাবল-ক্লিক করুন।</message>
8079
<message id="dcc-clickNucMoreInfoTxt2">প্রদর্শিত ক্ষয় চেইন পরিবর্তন করতে</message>
8180
<message id="dcc-clickNucMoreInfoTxt3">উপরে একটি ভিন্ন উৎস নিউক্লাইড ক্লিক করুন।</message>
8281
<message id="dcc-clickNucMblTxt">আরও তথ্যের জন্য নিউক্লাইড ট্যাপ করুন।</message>
83-
<message id="dcc-clickNucMblMoreInfoTxt1">যে কণা ছেড়ে দেয় তার জন্য নিউক্লাইড 1 সেকেন্ডের জন্য স্পর্শ করুন।</message>
8482
<message id="dcc-clickNucMblMoreInfoTxt2">প্রদর্শিত ক্ষয় চেইন পরিবর্তন করতে</message>
8583
<message id="dcc-clickNucMblMoreInfoTxt3">উপরে একটি ভিন্ন উৎস নিউক্লাইড ক্লিক করুন।</message>
84+
<message id="dcc-show-decay-products">{nuclide} ক্ষয় পণ্য দেখান</message>
85+
<message id="dcc-show-decays-through">{nuclide} এর মাধ্যমে ক্ষয় দেখান</message>
8686

8787

8888
<message id="dcn-initial-age">প্রাথমিক বয়স: </message>

InterSpec_resources/app_text/DecayActivity_es.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,13 @@
7676
<message id="dcc-xAxisTitle">Masa atómica decreciente</message>
7777
<message id="dcc-yAxisTitle">Número atómico creciente</message>
7878
<message id="dcc-clickNucTxt">Hacer clic en nucleído para más información.</message>
79-
<message id="dcc-clickNucMoreInfoTxt1">Doble clic en nucleído para partículas que emite.</message>
8079
<message id="dcc-clickNucMoreInfoTxt2">Hacer clic en un nucleído fuente diferente arriba para</message>
8180
<message id="dcc-clickNucMoreInfoTxt3">cambiar cadena de desintegración mostrada.</message>
8281
<message id="dcc-clickNucMblTxt">Tocar nucleído para más información.</message>
83-
<message id="dcc-clickNucMblMoreInfoTxt1">Tocar nucleído por 1 segundo para partículas que emite.</message>
8482
<message id="dcc-clickNucMblMoreInfoTxt2">Hacer clic en un nucleído fuente diferente arriba para</message>
8583
<message id="dcc-clickNucMblMoreInfoTxt3">cambiar cadena de desintegración mostrada.</message>
84+
<message id="dcc-show-decay-products">Mostrar productos de desintegración de {nuclide}</message>
85+
<message id="dcc-show-decays-through">Mostrar desintegraciones a través de {nuclide}</message>
8686

8787

8888
<message id="dcn-initial-age">Edad inicial: </message>

InterSpec_resources/app_text/DecayActivity_fr.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,15 @@
7070
<message id="dcc-xAxisTitle">Masse atomique décroissante</message>
7171
<message id="dcc-yAxisTitle">Numéro atomique croissant</message>
7272
<message id="dcc-clickNucTxt">Cliquez sur le nucléide pour plus d'informations.</message>
73-
<message id="dcc-clickNucMoreInfoTxt1">Double-cliquez sur le nucléide pour les particules qu'il émet.</message>
7473
<message id="dcc-clickNucMoreInfoTxt2">Cliquez sur un nucléide source différent ci-dessus pour</message>
7574
<message id="dcc-clickNucMoreInfoTxt3">changer la chaîne de désintégration affichée.</message>
7675
<message id="dcc-clickNucMblTxt">Appuyez sur le nucléide pour plus d'informations.</message>
77-
<message id="dcc-clickNucMblMoreInfoTxt1">Touchez le nucléide pendant 1 seconde pour les particules qu'il émet.</message>
7876
<message id="dcc-clickNucMblMoreInfoTxt2">Cliquez sur un nucléide source différent ci-dessus pour</message>
7977
<message id="dcc-clickNucMblMoreInfoTxt3">changer la chaîne de désintégration affichée.</message>
78+
<message id="dcc-show-decay-products">Afficher les produits de désintégration de {nuclide}</message>
79+
<message id="dcc-show-decays-through">Afficher les désintégrations via {nuclide}</message>
8080

8181

8282
<message id="dcn-initial-age">Âge initial : </message>
8383

84-
</messages>
84+
</messages>

InterSpec_resources/app_text/DecayActivity_hi.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,13 @@
7676
<message id="dcc-xAxisTitle">घटता परमाणु द्रव्यमान</message>
7777
<message id="dcc-yAxisTitle">बढ़ता परमाणु क्रमांक</message>
7878
<message id="dcc-clickNucTxt">अधिक जानकारी के लिए न्यूक्लाइड पर क्लिक करें।</message>
79-
<message id="dcc-clickNucMoreInfoTxt1">इसके द्वारा छोड़े गए कणों के लिए न्यूक्लाइड पर डबल-क्लिक करें।</message>
8079
<message id="dcc-clickNucMoreInfoTxt2">प्रदर्शित क्षय श्रृंखला को बदलने के लिए</message>
8180
<message id="dcc-clickNucMoreInfoTxt3">ऊपर एक अलग स्रोत न्यूक्लाइड पर क्लिक करें।</message>
8281
<message id="dcc-clickNucMblTxt">अधिक जानकारी के लिए न्यूक्लाइड पर टैप करें।</message>
83-
<message id="dcc-clickNucMblMoreInfoTxt1">इसके द्वारा छोड़े गए कणों के लिए न्यूक्लाइड को 1 सेकंड के लिए स्पर्श करें।</message>
8482
<message id="dcc-clickNucMblMoreInfoTxt2">प्रदर्शित क्षय श्रृंखला को बदलने के लिए</message>
8583
<message id="dcc-clickNucMblMoreInfoTxt3">ऊपर एक अलग स्रोत न्यूक्लाइड पर क्लिक करें।</message>
84+
<message id="dcc-show-decay-products">{nuclide} क्षय उत्पाद दिखाएं</message>
85+
<message id="dcc-show-decays-through">{nuclide} के माध्यम से क्षय दिखाएं</message>
8686

8787

8888
<message id="dcn-initial-age">प्रारंभिक आयु: </message>

InterSpec_resources/app_text/DecayActivity_hu.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,15 @@
7575
<message id="dcc-xAxisTitle">Csökkenő atomtömeg</message>
7676
<message id="dcc-yAxisTitle">Növekvő atomszám</message>
7777
<message id="dcc-clickNucTxt">Kattintson a nuklidra további információért.</message>
78-
<message id="dcc-clickNucMoreInfoTxt1">Dupla kattintás a nuklidon az általa kibocsátott részecskesért.</message>
7978
<message id="dcc-clickNucMoreInfoTxt2">Kattintson egy másik forrás nuklidra fent a</message>
8079
<message id="dcc-clickNucMoreInfoTxt3">megjelenített bomlási lánc megváltoztatásához.</message>
8180
<message id="dcc-clickNucMblTxt">Koppintson a nuklidra további információért.</message>
82-
<message id="dcc-clickNucMblMoreInfoTxt1">Érintse meg a nuklidot 1 másodpercig az általa kibocsátott részecskesért.</message>
8381
<message id="dcc-clickNucMblMoreInfoTxt2">Kattintson egy másik forrás nuklidra fent a</message>
8482
<message id="dcc-clickNucMblMoreInfoTxt3">megjelenített bomlási lánc megváltoztatásához.</message>
83+
<message id="dcc-show-decay-products">{nuclide} bomlási termékek megjelenítése</message>
84+
<message id="dcc-show-decays-through">Bomlások megjelenítése {nuclide} keresztül</message>
8585

8686

8787
<message id="dcn-initial-age">Kezdeti életkor: </message>
8888

89-
</messages>
89+
</messages>

0 commit comments

Comments
 (0)