From dea9d03d08ada4281e659f9fb68e14d52f552bca Mon Sep 17 00:00:00 2001 From: Dave Hagen Date: Tue, 31 Aug 2021 13:04:37 -0700 Subject: [PATCH 1/5] Adding Tableau Viz info --- _config.yml | 2 +- _includes/docs_menu.html | 6 + assets/continuous_palette.png | Bin 0 -> 122767 bytes assets/discrete_palette.png | Bin 0 -> 95651 bytes assets/vizapi_demo3.svg | 2783 +++++++++++++++++++++++++++++++++ docs/trex_create.md | 6 +- docs/trex_release-notes.md | 21 + docs/trex_tableau_viz.md | 169 ++ docs/trex_tableau_viz_ref.md | 215 +++ index.html | 2 +- 10 files changed, 3199 insertions(+), 5 deletions(-) create mode 100644 assets/continuous_palette.png create mode 100644 assets/discrete_palette.png create mode 100644 assets/vizapi_demo3.svg create mode 100644 docs/trex_tableau_viz.md create mode 100644 docs/trex_tableau_viz_ref.md diff --git a/_config.yml b/_config.yml index aaea41ab..b4fe8d3e 100644 --- a/_config.yml +++ b/_config.yml @@ -23,7 +23,7 @@ github: [metadata] kramdown: toc_levels: 1..3 -gems: [jekyll-mermaid] +plugins: [jekyll-mermaid] mermaid: https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js # Exclude diff --git a/_includes/docs_menu.html b/_includes/docs_menu.html index 96d8282b..bd1ba765 100644 --- a/_includes/docs_menu.html +++ b/_includes/docs_menu.html @@ -35,6 +35,9 @@
  • Add a Configuration Popup Dialog
  • +
  • + Add a Tableau Viz to an Extension +
  • Show and Hide Objects in the Dashboard
  • @@ -86,6 +89,9 @@
  • API Reference +
  • +
  • + Tableau Viz Reference
  • Release Notes diff --git a/assets/continuous_palette.png b/assets/continuous_palette.png new file mode 100644 index 0000000000000000000000000000000000000000..45987b8d0866442d99fcc3f1426c222b41d4b48b GIT binary patch literal 122767 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 literal 0 HcmV?d00001 diff --git a/assets/discrete_palette.png b/assets/discrete_palette.png new file mode 100644 index 0000000000000000000000000000000000000000..e7fc5508c954c949837485de6bb0d6a006589efb GIT binary patch literal 95651 zcmZ_01yogA*e(o+gtRE#NQg*xBdw%_Al(hp-6dVp9n#X>NDGK`H*C67sXI3wzweGa z{{M`_V7py=t-02obG}c#2FuGzpgkdY0s{ksCM7BQ9tH;X3I+yV2nhka0~ajZ4t~Mf zy_a|cQ~Hx=8~nl9P*uuEMh1osyheh7hb4e{3_S$=2*48l&uej5T9`)<@58~s1ewCX z|96Zm_znFp3j9Dn^Y{0oOxXX92JdCU{W}`=D)Z65*YHB%XqW&Sa$N8W`IDrY9SjT( z74!#I>ivr&7#JZKDN$i1XV|?o?C_Go{MZk-pQ=;Fehi-0%mirEqi^lsN7c-lw9-dR1RdePG zr?=`&b_-MW7s)J!KQaaq7&&pZoU^cyVadth{k<_U;gWoWChu>C?+tont5N>F`G(9_ zXp+?HM)&UKbXd}d;o-$x>pyz)>#s;TWEh@wK6b^a<=yh2TeJoy_JHNM_a|`sJ-Cus9`KD%$ZKFhf zKYiO-tiVz5n}>i>(`6aS^P)6@e0h-5D>8t)fVXIbQ2c=?N#? z9Hnb?9f*Hz)ES6|5Qr16qj%<0|C5b?(<-%Lr>GcJ4Tl_E{Xl4KX%~^yUB{~VSiH({ zf3~2A_n^L$@9t`?mZ9hk=ffAF=j|Q0%*y_PfpHi^y0WUuj*H9{Lqu2&#_z{TWyI=a zLg(AV#TJ=1&)YYqay?=A`V1{+@7?-l+zwlY8aC6--^S4yiboKca#+oqG&=5^T`V|h z+nrB*z~!W^(FPAQgd481qxTB7onD8d?f%Yf95E1fqD)(`XuigLyg(rgOF5MgE)XnU@%%ox}c9O_tJ-YUO zzi!E@)@p&kiC+21!-PPCHFr;d&+v+Lxczf(w9x1vB~xxTL09E*eUba8Q8rOWrA*7R zT!H2dkyZR_bt4Ss;In~ubG(PmV}q&OV{ez`1aGVH*-Yf;SIQggXuS^_Hc9;M{c@f> zr%RL|^%!5&`+>AOxBO>U9XbK!$Fa&$1+<9V6_#{_OGxv^D)c4n+F=nBZ8v_XNtAVB z2+l8`ZQ#8xaj=}N?$_|TJy-ctqFRwX18!jOxR=zLYE0F`_lNG!5}&&u64wImtxP}E z*#JZmXEME}%S+0YkymBSdX@_&OhrnCde@vLzuMnU++8rK;%zhc60Mb0Ubfx+Db~fP z?!aO~C9gSj>C9@_ubqQqrFZScW8W#8M;P?^a*&Ts%#-MPzB98rk|S|l?7;XixlG_K ziaxrG`(wX(;N@-8r0#vJF*D4Q%OFu^_qubp>!(Uc zloR;fm1_5sTfsq?b2=R#G168d5tCXb*+7sBPOs_0?W@zy_{*Si)L8K%NT+jI+g&5! z=-zZiXZg~S=k@FNke20kZydPU8uNrYx}#)2nN!Hnw;{fApR!M@UBR{R^nMh$zogSV z|7;sgmZ&){5gB~_cH&c@4qfXwu-(01uSQk}A5#XcG@t(DRpGxo9TrSU&~oj6dseV} zyoXMa$S_E}9d{V_>O(T;lKU9hZ6`fr+l}q%g45Dthwv{Q7RYse_z4V}vlqQhM8PDz z?0EAD+McF0@X@kv3{mB2Z&UA>#PF_gwcT}lbM^_Xn{{#MRhReUM|Z*X7}@NM^)_|A zy09d=G!Q=`ArZP$C_G_CR0@FZPMM#{bQC8j7J}dV!I0b1q}j(P2T_Xg?u>p7MLTz0 z3BaZIbJ(~$B($pU(D8BPSv~92j=o8 zaYb6{n9J1DJUs?^th=wN`5U$lTQ0Q@s}-gsdzhS47j7ygF}s?<3@|9p4tfb@ z^VA{(cd7AUqV9k!*NQ(an!gZl~|i^FP1{@CmO_EK18R14xD zK(AhFG5EX1A()4the+x9!wy8@EyNL%!dcsdRMH?xf1ID;$s!Vj&i*cep(cj&r(Hq+ z8dgkWZ0ha4&h#(vwXT(gG&-S@D8h_-@x4Ji#A`N}fN)vN6|5@k=S&*ygDGVv^Q4PU5Wj3B1$1K>c%*C(B5t|J?!?&kKDN2Ecj>)$A2gkC^b z6DjFSo~foB!+-U!;F2H_q^=HJvWc(&P+_cAz{)R4DP2 z_RRlfSXR|O_Yqs^JZAZJYfB3hQ)zLsRAIhYEXkF{zD!8-U=S+4UQ(`;GmWO( zK=YJ=b|=arX{$J4J_U`SXR|yb%U*Qe^9eS@uyTKH*zdxaul+N8W6qbO5ToA-nk?9D z{yfKs9d#qZ&^_`eiIML!w>G9g$78tD#79tk(t>~uCOZhzMr?az zmHE|QG3{q-Sg6QSvvNcPiyoJn>Kb)cnqCg${HP?WOw5jZ(*-bmu+N5;eHvJurE^TZ}xRsr^D3i ztcazoSasTAVpHHF_r1D4W97a7`c}nZu~d_n@OntK1fwu*^R^3HPW8HRjvEp2`x%lT zr6Y;DpsWQEL)5P{+&1%J&i%AB(nHS|t_iC+GVp_(DoWl?sm&T|oZgWzvlx{((UIxn z4gTj@3LW#p7cFE}5?T;tXl?cv(v@guasFC_cArS3axgcCtr+AM*$`?&bCDco3zkF( zSH(!LIgX9~3Y$0uKHl@&v{-_Mb*WEwGlmIbd3GMOM_P7~ili}u%!gc~x}-F(h|3hH z9A0raroy&}rr&^aI!-;IYnfYM=$Xh?6{&!Gz3E7HKwW6*0}kwl^J%%rrM<FT5))O98cX>R2sGZ6oN3y^nZb1dW-IuW!6m}Gn#*I z3bng7Kb~3cK0AMe1^4$&d3&tBm;{><59f~!(1Ha8;i^cIVx%beaVW6R$pAL8???t& zAsFvRa98+ExBs0igddJWS{Ai+`W_wr0f`GC8Q{T%_zjmM7VSR(aqv+XANpJ;m%-iM zhZ8~JdKG5*Q+FdvsiuD;AcL>eZ$S}I+&>vr*^+p`A((L8u&{)Pq>RdzHZa0&&;A>0 zlqu4*##u$KGsoOTI(gQGyYO{h)~qJi@s|AlMcEvcQd4Nc5c&-A z3}BuFW0#-34R)Kdiutl>sm~j}gpmp^vRTb@C8&%{fO^SH$YH^h!f72*`q>U~EgPfD zfqLX@d+Y&yPnK$?=&OIwa`_7CQ|3#BY|#jwCjwW?kL=dMIU!qay~Iw5V5^&-eC(){ z^}wP!G0Rc4w9dFQ=sb~UW@fl!U|eJfgsoRm=mxkO-|CSwfeYK+{oW+ZJsSP`E@e!X zcj(Kj4?o|Y2;SdRP1v_z3ErM5uJyVOCNe`t-!ax8rng)!&XGL*|KkC@$yyr^lPyfR zo#o28iTnH{>9~l}VIzP3X+wn5u|%v2^pD^2RU$Nco4BgPxlDh1#3thMqf$t+Knt(S zaX0R_AI^Y!9LMK1zQEiX$q6z%00ons$*nbO$?JYW!}Irs(blglBfuw&W~)sh1N71hK4TplYSZq;1b6wkG1rzjfn8_D683= zb5A?4Fx?#bW2iK1ZVv$Gg|aavd}&w6VA4gWv*btwfDyXWhk!ysLb6-AnKA>s!Lod= zjBD?gaC5ojMXF>tFx?4Izh2pGP)IN~&8+Pwv=F`aeBWc^p=3j5p{lGK4CX8qC}_v` z7Q*rJzy0|Zzq|}?4h~&|$u@BikU{;4HLjqRv(a}d*%F$OoKBb>_7%iSj&qh5ZW}-1 zAVZu>)uV#L$b{9}w&#(Ls;K7Cjl#O#d8Lj{EXYgm0&umMn5I?jJJC230dnSf?=hkLL9OO2$vE9K=_$JB z?e%5k_%)+WA2zjgc{flCScj6?L)kif&@9n7{vTq|zrD~@hbEYl7VA4AK3=3eV1^Nu ziGK}5i}0|dQj}^Wk3VM>V?O=;G#Nxm$qpUWS%7RfnsB4@9SJdr{axguWFOY9HzMiL zYL0(=BLRDKtMI8vO;c5WR@SUC!Lee2<7JRp+@<*CqMP-ga8#J?5m!q`)J^*Q)f;$b z>qLAy*ThP@H=*por+b1c{@B@xP3B$;4pV9fks+=Zdo$6A9*`pznW=Q^z1i`s#mM|O zmlskS?7>!G+3T}Eah?!7?!s2+bR)(B;s~MgX3Oy;)sFoZvBcEF@Up#u>QpI~cc*ZB zHYUfBivsbtB;Mp6Uq41dWTD}{p6e(luWah3>|JJlOt#%aIev7P%jX}XJ1qV@(roFQ z$6~X~ao~?So(mry67{IvtWe8HdiUYSkjK(!MA=79pT!n=vY&`P+?BLA0CC(iUm;kX zFOEee{)iP>%v658RVvk(2`p5QMbe;uGaD&Z8d1*vLY1-VY!oj}2e-PtVT9yDL^%IA)_Im#- zW`Y5y!g>-H1@{j(+LIzzsiTT0B`B^)@&!-$t#V3o?{A>hNc;~MG5E_xfDG^rjr%mH zY^0~KuRoG>IQRQIHOZk6p5#a3suUtb{(fX1kpv%8?b`faKDOv}TWUK1mGMsyvO^@o zO634U70JyNRWq18+|7{NM=SnFel)1j{@hw_yq4S+^;b?Ou%92c)}#m_oKf7EeA+`K z=cLScMXTae?_u*uBX!>VRGgnf@4p9O|HY~{AlSX zTr=FZW?uJ=g}n_7k}QskXE%Y8#Je=P2L_)d;aJA9)K-6q`ex1}(eNQ*_jF=x+F!kp z9!YwkF*o0%)B>%unY5HqL!=|lPj$Nq-2!Hp%169dL!F6B`L;uxC!!l)#%4rP=6S~yr*FMW@=Sr((aAdnR6TATY9nZnOy2X7SRsL*+WFm7PT7GZjwg_B`k zxLH>cUU>X?nVhKjpz0^jt88KNu7j)~l1lv;1$oAl3i&Nka-h%<0T>%;C^B@^ zlJD*&*;Y^=ZKV6jy*#NYie9OcVeR9ub;)>xZ<;g8=&Bwmhu?nv?z*lV&qg4s`*1fxmtY6Q8Wf`_f& z9z_(JgR%Mx<&o(qpH+4Qd8MMiy4>FnruOH|#7c+g%`ceCxt;Gkx6#Xq{9wM?^IZWo zm>44J)jQu$CFe`HHyWWqdeAa8zcwym<*2u4liMkPZWr`2rt~=>Z%lK7yx-{)l|%}2 zKPgs0X#(Xol(ExcFF9-W!}6qB#=y~h1rBIe8}U)Zj$)&G5tq0xsjKpxG%CSVFc4TgNUkM>0W3>nNQ9?Y%)p|;DJRX z<=ZZ=3gA4YMrBufbGx599YfrCzUCc`wDKrQn&3miE`M~xN%3m}#C(UoGH$lgho!(o z8AVl?$0SJdO$K^L(8q6!WRUYVBEOblq}tJzGQW6g%{tGVdWaIrLZGXsk4z_RFE^W! zW%wP+^Z!@@<`bVpjw|Q)9tF`855Nta2yhlA_{v1J!RGd(sV?Y1q31t&>_b0(s(19; z_Zz~$Ps{5dsUo+w8~yK5{z9!}QOc@|w`q(`W10Ux8}bs416_c2-wz@qZ&zaM@>rjJ#gw6`i%6XbX=S1`oLI0n25uM8$0rKXimLF5UmjJ&A; zv&$ZK2ay^@%752Pf~xf!Vj0Mh@7?}g^@tPht^Fw{P9q%*Jcsq7MXmLc77VNTTj*zm zj3}eRZvj&D8s5{)`{bnUaUPe%ZXW-8J3nL4^LpP{7U+3)qf#_Uei#B=hE+hH{ytuM zJ7w;gbhwohDLXUWkIv?Fpn<&}6@0PTM;Xa>ec0wTn5DmOJYR1EnYSBe2P6X0c7Iz| z2oTvZD*v@ zsq*b(lGpw9QXVK_WNB7g_}hv;K+; zR7(L?ur5W!j(UwD`WENDLbaH=Yq2JxnZLj#@ypt_DVyPP7~ zl>rgnCo98sr_dnyBix!100<6_>I! zIqtI%1!}n;i;3Wm(!9R~ry2wg+hkXMuFh&<_8CqguOP{k-7vo~K9_Xr@Q=7xL+w6~ zWPk#(XAeLd6ToaJ><$36y$)RKjpU4@Q+_fb5&n0bkP*R6_M=lXJ`vB9h$O+HDc5Ro zO#-_0$ZVLV`HNWrk3Xu^5;Hp!#Y5n0J1lzCrhsidTm7<}VdQ&rSdGODOO?%9k7$0F znReEj$9^yF0R6>hBm9-fte-uby8|^)i~xtt3R=tTCh@x7ulwaOF8{D8y+rB@75Et| z`sNm>D3&NnXBYqj4o(7cT*D3QB}@MItr>uo;f^&qS-;xWyYGHkX0^}=0gwPFxToQ5 zF7wx-y~zR|jXqdwsy!XPHQ&REfyn_3Bm$?>^0=?>5+b+|O4X{UmFga&;7mJI)Yh0! ziT`n)LWyk!9*6X|k2TW2Pd2`>YEKj?4}p?~V|v(j1t{1zP%RJ};p^bpl@&lzX9#IuupI5fSJd)Xm$5l1oQAyG%lTi)pI+(~SEt z+pSKG5rE|e=9$y@E~fQyE)U!87kOabUo5&EZWuQ0yn^mgv@Br5)RJ}V7)CKAqEo9h z7_Hdy_af(i11x}CLzN4oVL^ar)56Im8iQ8aenV0q2Tg~L6Wpze%#(2+v`japRLuS4 z;A8_Z2R(or7fl-$%Gf%6v#WjoR;nO#&b>E+c!+hFZ_P?36zBCI3S+a5$Vt@ENJvx= z%$qe|SCSpz1vacj@b0nS+aE42B#SZ0{r82!0#JR79w|n8|CFKEJ>%q79}P=ct9U0^ z;j+SNv1O-9Ras#}ao~W^fpixVuKL{O$8l5;I{(=(+TKPkORe(2C!rc*`w8bfFRY9~Msd5Tdu{!nPcSLOBrKP)*0me(*q&%4v z@gMQ@YEN~K7(}s}ni3kCdPGIaTfqj{Na69IrLo}n(Ca0(TnvXTm_8-6lQNg*&moZu zBpMR{oJP;l$sxk0*DNulVqT*H()aBK$OIKhH+_&^#JszoyoZVJ7+c1dH)QGgV%&>7 z6%+Yxx>mBJlUQn}31hZ$FP)L?e0xqK%iJC|cxtk!a905}2TN)gOlyoFBHPd3#Gi*R zq*_=7kA4q8u}mm+zw7uCcP_sNp}PdE7!qR02^IyYVum9hd=tEGINpXIGi49;i?k}eXfxxd%E4MBIPhg);8#$+JUQDuDbef2!j^PqZX``$>CJBWMr5G1$%&G2c zc+mBPuuEtSqy@HbBo6O72cJ3ZI0YHYFBxE%3G4qwP4bCY<%MQc9f*Py&6~%of$}3u zpE}Vlc(yWt;W8Cv8&~4ZRmp8DofK6K75bh_v?4PT0;Rdd$&xaz73D)lNQJvd{<>pd z6gh_jqhB;0?ZUb=;wbSl?~cFEtzFHWJ;vXwR-7tK4kmPg`wrJLd!{~`UP zmP@PhjoB`a!rwMJE?k~XLh_uemYmyGXqm|Y$c=LbTtrBX4!cJC2L`4n zCwNY4M`=GQn%AgpTYzybqR~Lsk`;kcbU=2J`l9OrSQ`6Fk^mgAeWIwButr*`&;R{@k0XcBs;KU{zL-5*;0tIAz&e z_+Hjx5c9D8i1_KFv)&hd@y&EPFt`&Uv|-4W`(CWko?~6rJJ+^E)oxwoF4F6!^C(!1 z$X(#i7G(+vhf2x~9nE7VyVH0O8dZBs7-7~Q^tpGHZh$`tt zene?%CMR@lCa=qnAH4*pw3i-mtF*9A8KAa1a;wdAb&;|rYj@?c;S3QChq^R@()MG2 zLK5|zUzN_^6kKvZ&c`dg3ib3kuG&HrcStPDnq%y&JbZWhH)Vf1jE_1uuT3jE$Ze@o zz%S;856S3Zuo}_zK4H~XF!ST~vG7lnkyLr{kWP6<18?9bcVwD_AOLg*?7im;^D~Dz z?_!(YZK(Et%RIX9Eex%|UEIux11dpO8xk$LfY{77Ap*#rSM;v8v+Zb;>(C|J&yA~uE8t#%3~&U3aLinf`SM70L6eK zLS&)iMNjbQ2r%9i|I^qpabQzI1>&EPI%3uUOYcAA`~(-Aa#$&-@%!T%m49fQ%mc|l z%2keZI$7!;es9Dq*E)+?9(!B|`6us3k-&f1qUPr^$ARukP=IVI26PD!GI(w$L;Vl+ zE@727Z21}WE7i2DUi+oj{`e2bjA8cqM&AQxD5;ilU*g|oD#SsNoS9*M>@s%hL-PjK zzUO6ckQt{zpG4N|g2$#z)~rl253f=aA+PrTlkvGoT&fCtv%#{WV21JU=I+GFb|VGv zm~xAs|4Rb_!NSjbVyJUn>=;XE;25X^NuVSESPDseP*VXaglhUk?nfQRytqEI&tIt| zg80H*oF|C5K%fYDt_YVw!-QHk)dZ9Ty<1@r)X}%$2b20N-M^auu?)b6LV4tvb64r6 zyhELyI$IzfRE63nh$;&#b#f7L4}Ei6uA0nG>j2jL5y@{jQnwXrs7H`1~pU_=ZB zq7ho~mW~NSGcr)jjL&ZN1v$iu_CskZ5J#h+YkRbUXy|Wfh!*}!KSM$2>o^7hMAq7<;e{Gd|8^vW*XCd zUNtOGg_n(GI+`173Y4TmfS1!O0T=|8k0b9xnU?s+yk~+iXf)u~dMI`9n^X7n1UJF9 zKMl=#e0i-t8AilCTC@$-vrab>w39PD|MY7(uLRVdLW@l6)oSSUqe5z5m}K9J{kfF$ z-Kn`s5L5bf1L~_0pcO`ETO$Z|9UzG!1N7$Cr(Qt%9t2V};dU9y-?`OC{GhAhqK-qc zEigkYsot-v8K*s;z$`pny1%Ofnw*Hm?>Xx>V&%gY;m1SH02!U)Y`UUhi^jaB|FS30 zyxX>!?naOE1!zFf6ZGzZ3oKHrG~NRcIkXZ)YBg|uc}S{Ex@$C3X=t?86V6@4%qyR; z#7zol6Q`SM|DlVmh5X}(xkU=x-dD=sFyii;x-SkaI%O^Qtb>QH1@C`H);!m??Wejk z8&KkL+%p0ASI`bf^&dBz#ls1b9-=;{7f#D2mi-1YTyHGyM zw*lz=mdvA!m+qyFJ7v@NOqR|12%4QlYKj!sNCd{9azoOb7Aus&lWh#{tp`lc%g-Le z=2tS0Ls5(4`4@=p&?294|#CuA^1GvDUUOCAa0MuEWgL&c1_lDhjB1x@*jf2e&`M-Pu zP2B4tep02W#3wrMe}Uh29_571>M6go{Q~6e@FH__tJ@n zGi6Idg2W{kZ7O>Sgm4CJdWntG-A|-Wfl;&0^Q`D2Iy_S})GmX@j!HC}Cf}X`$Xk_2 z`BDo6Wfb(ugTMD(&KQ#pu<39?eKf3&EzWnc=fr#g1wq-A?@eJbI&<b+41ng#bx!3Ae4c$G~ zh%1PcHf9=l7(2G(`_o_W*G42rYxL1c_@-I(gCxL$v7BB2p*aI+UeJ6=Vj~pZc_Z$_ ztdZ7pmN4X=LyKvm>H1B-WV|P1JshZ4G&3IXsD_~`r5dJfx=~Pbs>BF6&JV@tDFwbW z$8vWSrF%3IqC2H5-?6BhkPzV!6qrjVcJWh|a%%_^6*X^s=_tp2{jtk1mw3wLMJ7n8 zPB*ltJ~~CFN!8)PocFj~xR|k7e)_QSj|L0j3`%iaO-Dh$f{RFAn*$~ci5G?)2XE_% zV)%>f7@-tl@gzuq)_%Wnx3ubfIr7=o7GOs;VQ>?z8L8{Yk7gSkiraX!4`LT2O1ink zgYw8F`6C%Spf1jp4>KZG5NR9E&U&m|E!X$;+Ze&SXX7G7vqV`6pFTdO`PRhaB$xQ2 z)4^i;R12!g0Lo!(V{OpBKo*hgv^C3g@sp zFlRZq2c|3Z(H3V4(sa)xJ$~XG;!)B$Z0_NhXB0$6&$oyokw^!uvom2>3~@DnO*v`A zxOW}V6G|kPPvRZ&GY<+Uj1|S?&VchG4k}RX5)PwxDOhEW=Aw6r5Vjv;pGt(rL^Ja? zVK&j*B08=!sB~k9C{)#fH2#{Eh8ct72B;NNN<~U9O$eX}1_*A%uqpjN8E@CGOT?Vv zUbqS@G&$AT%!AFS&E@w-!nYxu9wv}6Y~tNi4f=4cZr$?SsaGpSAVLiU#y&_-c+LBq zWU!I zg>J`WmY*l_HS&^g#|3iC>Rb&=M8-6Q*((<&IGlp951ceh8MrIVzr=A{luVuZsJ~O@ zgpe;c8a4W=eC)ewxl2wum6Jy-wag%xBe+gajo0!S)0ZSu{MDl;!ZA1u^$uQM@@{k! zb3Kmh-=kctp8ihklaSF7Yc!Q&mLLL?eu!yyTizwS0tM(p{T0LHS-?NRktm0kV59NW zLq8#osz)j$MmWrMs-{oGxUmP{@yBoI{jQQtp^@;n{klS3kJ@~I$?>rb$xD0Tfj*v~ zz!q+;k%cZ0Q^Rz2u=3)pyhiiu9ryV`f*?2j+-n~Aw1!FcC9R9LsU4{wE~Cgr=oL>U zc}-{41Azc;zxBsC7a%e#T^yz6}aJ zq3+R7l30rz~ zheVFMT~8b`8@zh~4F0sv{(U?C)XqFy@9=B(o0=h#j5p8h>O~Ui7pRxxIzv`iQz$f zt|h(xx#9C?Z?5rmj{MzxXk5%+s0gGo1mfZ2iljnzxR_+{P`r+G+0uBOY8{mbz{4uBP@)jjkuZG%gfQ$lr}#bclf}{S<<|Y!4Fq8&(-Q>GC7=TY!@o$ zU6b$OQP{q&%I`K`V|yO9-vSXB@%Tl<`Q0UQ9yXCyXB9K=v9XqpmkC>YC$Vd@zU$Oh zudn0!z67s#p0_K}`B5ZUVA>-;{i8*j=C#<6c=k6;mTdUK_Tvf?YKS~EE3tjXcQ?OP z^xLb*S}ghQ!!wzcA9#!8V>q{csg6H1#}l5{+1EKUP%biL_y55~{y4=XIul#%-Asjk zII&F>e%nb%Fu^zK0I>77GaPFz>jl6+Op;KM?dEkm)DK$%g~v$Zc*Ce^UxwASToO32 zg+1-TFV;@vSY&RQ3f}9S1M4A(Bym;FO&Uw1Q$BiiA!S|f97SCg9oFI?YzJ>cc3O!7rD#Rl^Ge@!XX}q|mcTWaIJZcK5Fw8QehU-Xr^b`*T_wuu9ORCRp^*l1 zJ!_(O*PSg6e^_pUSmicH72{uib651>zy+YeN)v#5^j5b^$*m ztHPQ#A6Bm`3AqD7h=|!j#Sw|;M(r|MN@w`x9+u?ja0QcTos>hL%wGI~4dVVQ4Hb~< zP+dtILd5oUO!F|bYN{#;4f>=tS18$rg`iCeaqcu zrsU$~f4miXkm5wlg!F%MKe(^~I-trl#Yz8bMfDNELusc)>*?T3j3dQ=9|cFAzK_ks z%`hIXkxRUsoX{&T!HN2crc%Ic|5NP-^5uSx~iM&pw-If6BHJ~T$usZ;m7RvtY59Yb28YcdR zbqkSH37g+fK-`;|c6c0i)=T=n8r)nR=Kw*D@)+7rZyQ=nmbpgWIUVVE4xYJe6b z$N*y-8|cbm0|6&VPx6<0YKfC)0P7_|!}PBurDrR9SVzjxN2L8$W@4FuhQP;gAU=sKg$)sT=ex;!XgrH|tD={LkiUMD zL7GtRG%>+^suWGbdJx^TK()cvaJl2v;P@+*lD>(T%!6EJ54?=_36kpb7VYj`&8v#u zxYI>y_m(9Emr%d5)*RRGb_fnvKXVz;J^!3-LkYc6+wBD_tMN~^2XTSbC`_%!EUsZa z<{gxBn@cjB&6<}bfgs8xlvyn5%LxL1X9z@ZEe=|*4+<=a9H(_JV9Je#2-E>Fu1f)Y zV#d73e73p}c`UHO1O-&wVGwy-)N1n5@dW`Q=IP@)%Q>UaV&!5ZsQGvbOvOZyc^GAv znQ^i*2h1?Odk5eW)_3vr6?w5x%E|XaF55%1G*$3Hj|Le` zwA)(%P39D_1j%_ zjez|VIXKV_-N*&^)_{}8WSnXvuH>O*z4{H=P6U`4*=)!qZlIxMQgj5g1T~SOD|)_B zA8m9nck{M&I0G!Th#R;^sE8F{*38nC+t=6E9tcS8uFh`#?JH8nDyMUuSw7u7#>_!i zYzCZquw1uuaJ4%W+J;qUUeD3VDmSCY#A-L`%JQuh~IukVN^vF!Q+o + +## Input specification + +A Tableau Viz is defined by a specification. This is the `inputSpec` that you pass as an argument to the `createVizImageAsync` method. The `inputSpec` is a JavaScript object that contains the embedded data and visual specification details. There are two main parts to the `inputSpec`: + +* the `data:` (an array of objects, for example, the selected measures and dimensions in the dashboard) + +* information about how to format that data (size of viz, mark type, mark color, encoding) + +The `inputSpec` is structured in JSON format. The following example shows a specification that creates a simple bar chart. In this example, the data values are statically assigned as part of the specification. In many cases, you would probably programmatically assign the values based upon marks selection in the dashboard or based on some other selection criteria. + + +```javascript + + var yourEmbeddedDataSpec = { + description: 'A simple chart with embedded data.', + data: { + values: [ + { Category: 'A', Sales: 28 }, + { Category: 'B', Sales: 55 }, + { Category: 'C', Sales: 43 }, + { Category: 'D', Sales: 91 }, + { Category: 'E', Sales: 81 }, + { Category: 'F', Sales: 53 }, + { Category: 'G', Sales: 19 }, + { Category: 'H', Sales: 87 }, + { Category: 'I', Sales: 52 } + ] + }, + mark: 'bar', + encoding: { + columns: { field: 'Category', type: 'discrete' }, + rows: { field: 'Sales', type: 'continuous', hidden: true}, + color: { field: 'Sales', type: 'continuous', palette: 'tableau-map-temperatur'}, + text: { field: 'Category', type: 'discrete' }, + size: { field: 'Category', type: 'discrete'} + } + }; + +``` + +For more information about the `inputSpec`, see [Tableau Viz Reference]({{site.baseurl}}/docs/trex_tableau_viz_ref.html). + +--- + +## Call createVizImageAsync + +After you create the `inputSpec` you pass it as an argument to the `createVizImageAsync` method. The method returns an SVG image that can be used by the extension. This example takes the `yourEmbeddedDataSpec` that was defined in the previous step, and uses that to describe the SVG to create. + + ```javascript + tableau.extensions.createVizImageAsync(yourEmbeddedDataSpec).then((svg) => { + ... + }); + + ``` + + +## Display the SVG image in the dashboard extension + +The asynchronous method returns an SVG image as the promise. Here is one way of taking that SVG and embedding it as a an element in your extension web page. In this example, the `svg` is converted to a JavaScript `Blob`, and the `Blob` is used as the image data source in the hosting dashboard extensions page. + +```javascript + tableau.extensions.createVizImageAsync(yourEmbeddedDataSpec).then((svg) => { + console.log(svg); + var blob = new Blob([svg], { type: 'image/svg+xml' }); + var url = URL.createObjectURL(blob); + var image = document.createElement('img'); + image.src = url; + image.style.maxWidth = '100%'; + var vizApiElement = document.getElementById('viz-container'); + vizApiElement.appendChild(image); + image.addEventListener('load', function () { return URL.revokeObjectURL(url); }, { once: true }); + }, (err) => { + console.log('We are here'); + console.log(err); + }); + +``` + +Tableau renders an image that looks something like this: + + +![Tableau Viz SVG image]({{site.baseurl }}/assets/vizapi_demo3.svg) + + + +---- + +## What's next? + +Now that you have seen the basic steps for adding a Tableau Viz to a dashboard extension, you can try adding Tableau Viz to your own dashboard extensions, or to one of the samples. + +* For information about the Tableau Viz `inputSpec` and all the options for specifying the visualization, see [Tableau Viz Reference]({{site.baseurl}}/docs/trex_tableau_viz_ref.html). + +* Review the [`tableau.extensions.createVizImageAsync`]({{site.baseurl}}/docs/interfaces/extensions.html#createvizimageasync){:target="_blank"} method for information about the API. + +--- + +## Troubleshoot Tableau Viz images in dashboard extensions + +You can use the same tools that you use to debug dashboard extensions to debug problems that occur when you use Tableau Viz to create images. For information about debugging your extension, see [Debug Extensions in Tableau Desktop](https://tableau.github.io/extensions-api/docs/trex_debugging.html){:target="_blank"} and [Debug Extensions in Tableau Server and Tableau Online](https://tableau.github.io/extensions-api/docs/trex_debug_server.html){:target="_blank"}. + + + +### Tableau Viz Error Messages + +The following is a list of common error messages that you might encounter and includes steps for fixing those errors. The error messages appear in the Console window when you use the Chrome or Chromium debugging tools. + +#### Invalid Palette Name + +`Error: internal-error: {"vizapiErrorMsg":"Invalid Palette Name"}` + +Be sure that you use one of the palette names listed for the `color` key under encoding in the `inputSpec`. See [Encoding]({{site.baseurl}}/docs/viz_reference.html#encoding). Note that the palette must be supported by the version of Tableau that you are using, and that the palette colors are subject to change. In addition, there are some palette colors can only be used for continuous or discrete fields, but not for both. + + +#### Encoding column (or row) has invalid type + +`Error: internal-error: {"vizapiErrorMsg":"Encoding columns has invalid type. Accepted values are Continuous and Discrete"}` + +When you encode the fields in the `inputSpec`, you need to make sure that the discrete fields (dimensions, or blue pills) and continuous fields (measures, or green pills) are mapped to the correct types. + + +#### Invalid JSON + +The `inputSpec` needs to be in JSON format and must include all required elements. You must encode columns and fields. Use a JSON validator, if possible, to check that your format is correct. + diff --git a/docs/trex_tableau_viz_ref.md b/docs/trex_tableau_viz_ref.md new file mode 100644 index 00000000..723ece55 --- /dev/null +++ b/docs/trex_tableau_viz_ref.md @@ -0,0 +1,215 @@ +--- +title: Tableau Viz Reference +layout: docs +--- +The programming interface for Tableau Viz consists of a method call in the Dashboard Extensions API called `createVizImageAsync`. The `createVizImageAsync` method returns an SVG image. The method takes a single argument, a JavaScript object (the `inputSpec`). The `inputSpec` describes the viz that you want to create and includes the data, or a reference to the data, and the information about how you want that data displayed. + +The following section describes the components and syntax of the `inputSpec`. For information about how to add a Tableau Viz, see [Add Tableau Viz to your Dashboard Extensions]({{site.baseurl}}/docs/trex_tableau_viz.html). + +**In this section** + +* TOC +{:toc} + + + +## The createVizImageAsync method + +The `createVizImageAsync` method is one of the methods in the Tableau Dashboard Extensions API `extensions` namespace. The method has the following syntax: + +```javascript + +createVizImageAsync( inputSpec: *object* ): Promise + +``` + +This method takes a single argument, the `inputSpec`, a JavaScript object, and returns the SVG description of that image. To call this method, you first initialize the Dashboard Extensions API (`tableau.extensions.initialize()`). You then create the `inputSpec` object that defines your graphic. + + +## JSON specification for `inputSpec` object + +The `inputSpec` is a JavaScript object that uses JSON format and specifies the attribute-value pairs to use to create the SVG image. The object consists of the `data` and the attributes that specify how to format the data, for example, `mark`, `markcolor`, `size`, and `encoding`. The `data` is an array of objects. The `data` is listed in row-level order, where each object represents one item. The `mark` attribute specifies the type of mark to use in the image,for example, you can change the marks from bars to lines. + +The following shows an example `inputSpec` that creates a bar chart image. + +```json + + +{ + "description": "A bar chart with multiple encodings", + "size": {"width": 800, "height": 600}, + "data": { + "values": [ + {"Category": "A", "Sales": 28, "Weather": "Sun", "Quantity": 3}, + {"Category": "B", "Sales": 55, "Weather": "Sun", "Quantity": 6}, + {"Category": "C", "Sales": 43, "Weather": "Sun", "Quantity": 9} + ] + }, + "mark": "bar", + "markcolor": "#FFA500", + "encoding": { + "columns": {"field": "Sales", "type": "continuous"}, + "rows": {"field": "Category", "type": "discrete", "hidden": "true"}, + "color": {"field": "Weather", "type": "discrete", "palette": "seattle_grays_10_0"}, + "size": {"field": "Quantity", "type": "continuous"}, + "text": {"field": "Category", "type": "discrete"} + } +} + + +``` + +--- +## Descripion of `inputSpec` keys + +The following table describes the keys of the elements in the `inputSpec`, the JavaScript JSON object. + + +### `description` + +(Optional) A description about the visualization. Currently, the description is not used anywhere and is not visible when the image is generated. However, it might be helpful to use this description as you comment your code. + +### `title` + +(Optional) Creates a title for the image. + +```json +title: "My Custom Viz", + +``` + +### `data` + +(Required) The data to use to create the image. The `data` consists of an array of objects, specified with the `"values"` key. Data is listed in row level order, where each object represents one item. + +```json +data: { + values: [ + { Category: 'A', Sales: 28 }, + { Category: 'B', Sales: 55 }, + { Category: 'C', Sales: 43 }, + { Category: 'D', Sales: 91 }, + { Category: 'E', Sales: 81 }, + { Category: 'F', Sales: 53 }, + { Category: 'G', Sales: 19 }, + { Category: 'H', Sales: 87 }, + { Category: 'I', Sales: 52 } + ] +}, + +``` + +### `mark` + +(Optional) Supported mark types include: `bar`, `line`, `area`, `square`, `circle`, `text`. If no mark type is specified, the generated image will use the Tableau default for that data. + + +### `markcolor` + +Specifies a mark color for all marks, for example, hex values. This is equivalent to selecting an arbitrary color in the Color Shelf of the Marks card in Tableau. + +```json + markcolor: "#FFA500", + +``` + +### `size` + +(Optional) Specifies the size of the image in pixels. The size is described with width and height dimensions. + +| Key | Value | +|:--- |:--- | +|`width` | Width of the SVG image. | +|`height`| Height of the SVG image.| +|`showlegend` | Boolean (`true`, `false`). Specifies whether to show or hide the Size legend. | + +If you specify the size, you must specify both the width and height. If you don't specify a size, the image uses the default size (600 x 400). + +```json +"size": {"width": 800, "height": 600}, + +``` + +### `encoding` + +Corresponds to the Marks card in Tableau and describes how the marks (measures and dimensions) are encoded. In Tableau, when you drag fields onto the properties on the Marks card it encodes the data in the view. The `encoding` key lets you set the properties of the marks for the image.
    The `columns`, `rows` keys allow you to define the layout of your view, just like you do in Tableau today. You can also map fields to the `color`, `size`, and `text` properties. +Within these properties, you must specify the field to encode and its type (`continuous` or `discrete`). Some keys allow you to set additional values as shown in the following table. + +--- + +#### `columns` and `rows` + +| Key | Value | +|:--- |:--- | +|`field` | The name of the field to encode. | +|`type`| The type of field, either `discrete` (blue "pill") or `continuous` (green "pill"). You can also specify the type using the enumerations: `tableau.VizImageEncodingType.Discrete` or `tableau.VizImageEncodingType.Continuous`.| +|`hidden` | Boolean (`true`, `false`). Specifies whether to show or hide the column or row header. | +|`title` | Specifies a custom field label (x-axis, or header) or custom axis title (y-axis) for the columns and rows. | +| `showtitle` | Boolean (`true`, `false`). Specifies whether to show or hide the custom column or row title. | + +The following is an example of how you might specify the encodings for columns and rows: + +```json + +encoding: { + columns: {field: "Sales", type: "continuous", title: "My Custom Title", showtitle: false}, + rows: {field: "Category", type: "discrete" } +} + +``` + +#### `color` + +The `color` key corresponds to the Color button on the Marks card. The color can contain the following keys: + +| Key | Value | +|:--- |:--- | +|`field` | The name of the field to encode. | +|`type`| The way the data is distributed in the view (`discrete` or `continuous`).| +|`palette` | Specifies color encoding for the field from the Tableau palette. Note that there are separate palettes for `discrete` or `continuous` fields. | +|`showlegend` | Boolean (`true`, `false`). Specifies whether to show or hide the color legend. | + + +**`palette` names for `continuous` fields** + +You can specify one of the following Tableau color palettes with the `palette` key for continuous fields. Note that the list of available palettes depends upon the version of Tableau that is being used. Be aware that the palette colors are subject to change. + +The following is an example that shows how you might encode a continuous field with a Tableau palette. + +```json + +encoding: { + ... + color: { field: 'Measure', type: 'continuous', palette: 'green_blue_white_diverging_10_0'}, + ... +} + +``` + + +| Continuous colors palettes | Palette name | +|:--- |:--- | +| ![Tableau Continuous Palette]({{site.baseurl}}/assets/continuous_palette.png) | `blue_10_0`
    `orange_10_0`
    `green_10_0`
    `red_10_0`
    `purple_10_0`
    `brown_10_0`
    `gray_10_0`
    `gray_warm_10_0`
    `blue_teal_10_0`
    `orange_gold_10_0`
    `green_gold_10_0`
    `red_gold_10_0`
    `orange_blue_diverging_10_0`
    `red_green_diverging_10_0`
    `green_blue_diverging_10_0`
    `red_blue_diverging_10_0`
    `red_black_10_0`
    `gold_purple_diverging_10_0`
    `red_green_gold_diverging_10_0`
    `sunrise_sunset_diverging_10_0`
    `orange_blue_white_diverging_10_0`
    `red_green_white_diverging_10_0`
    `green_blue_white_diverging_10_0`
    `red_blue_white_diverging_10_0`
    `red_black_white_diverging_10_0`
    `tableau-blue-light`
    `tableau-orange-light`
    `tableau-orange-blue-light`
    `tableau-map-blue-green`
    `tableau-map-temperatur` | + + + +**`palette` names for `discrete` fields** + +You can specify one of the following Tableau color palettes with the `palette` key for discrete fields. Note that the list of available palettes depends upon the version of Tableau that is being used. Be aware that the palette colors are subject to change. + +The following is an example that shows how you might encode a discrete field with a Tableau palette. + +```json +encoding: { + ... + color: { field: 'Category', type: 'discrete', palette: 'seattle_grays_10_0'}, + ... +} + +``` + +| Discrete color palettes | Palette name | +|:--- |:--- | +| ![Tableau Discrete Palette]({{site.baseurl}}/assets/discrete_palette.png) | `tableau10_10_0`
    `tableau20_10_0`
    `color_blind_10_0`
    `seattle_grays_10_0`
    `traffic_light_10_0`
    `superfishel_stone_10_0`
    `miller_stone_10_0`
    `nuriel_stone_10_0`
    `jewel_bright_10_0`
    `summer_10_0`
    `winter_10_0`
    `green_orange_cyan_yellow_10_0`
    `blue_red_brown_10_0`
    `purple_pink_gray_10_0`
    `tableau-10`
    `tableau-10-medium`
    `tableau-20`
    `blue_10_0`
    `orange_10_0`
    `green_10_0`
    `red_10_0`
    `purple_10_0`
    `brown_10_0`
    `gray_10_0`
    `gray_warm_10_0`
    `blue_teal_10_0`
    `orange_gold_10_0`
    `green_gold_10_0`
    `red_gold_10_0`
    `cyclic_10_0` | + +--- diff --git a/index.html b/index.html index 45bbfa2a..0ae7f301 100644 --- a/index.html +++ b/index.html @@ -34,7 +34,7 @@

    Get Started

    Extensions API Reference

    -

    Consult the Tableau Extensions API Reference while you build your extensions.

    +

    Consult the Tableau Extensions API Reference and Tableau Viz Reference while you build your extensions.

    From 3df39f4eb47e25f3db13532bfe61c4669779c698 Mon Sep 17 00:00:00 2001 From: d45 <3d.hagen@gmail.com> Date: Tue, 31 Aug 2021 14:26:56 -0700 Subject: [PATCH 2/5] Adding Tableau Viz known issues --- docs/trex_known_issues.md | 9 +++++++++ docs/trex_tableau_viz.md | 2 ++ 2 files changed, 11 insertions(+) diff --git a/docs/trex_known_issues.md b/docs/trex_known_issues.md index 056157cb..687c5f4b 100644 --- a/docs/trex_known_issues.md +++ b/docs/trex_known_issues.md @@ -12,6 +12,15 @@ For information about what is new or has changed in each release, see the [Relea * TOC {:toc} +### Tableau Viz - Known Issues + +Tableau Viz provides a way to create visualizations in dashboard extensions. The following is a list of issues with the current release of Tableau Viz. + +* The vertical header text appears slightly cropped in the SVG output. +* Tableau fonts are not available in the SVG output. + +For information about Tableau Viz, see [Add Tableau Viz to Your Dashboard Extension]({{site.baseurl}}/docs/trex_tableau_viz.html). + ### Unable to debug extensions using Chrome version 80 or later Because of incompatibilities between Chrome and the internal Chromium-based browser used in Tableau, you can't use Chrome version 80 or later to debug your extensions. If you are using Tableau Desktop 2019.1 or later, you can debug extensions using Chrome version 79 or Chromium version 79. If you are using Tableau Desktop versions 2018.2 or 2018.3, you can use Chromium version 47. For more information about debugging extensions and using the Chromium browser, see [Debug Extensions in Tableau Desktop]({{site.baseurl}}/docs/trex_debugging.html) and [Download the Chromium Browser]({{site.baseurl}}/docs/trex_debugging.html#download-the-chromium-browser). diff --git a/docs/trex_tableau_viz.md b/docs/trex_tableau_viz.md index f3b78597..209710dc 100644 --- a/docs/trex_tableau_viz.md +++ b/docs/trex_tableau_viz.md @@ -149,6 +149,8 @@ You can use the same tools that you use to debug dashboard extensions to debug p The following is a list of common error messages that you might encounter and includes steps for fixing those errors. The error messages appear in the Console window when you use the Chrome or Chromium debugging tools. +For specific issues with the current release, see [Tableau Viz - Known Issues]({{site.baseurl}}/docs/trex_known_issues.html#tableau-viz---known-issues). + #### Invalid Palette Name `Error: internal-error: {"vizapiErrorMsg":"Invalid Palette Name"}` From db93d5a7590ded6e9825ba26290e3ac0ab2253ef Mon Sep 17 00:00:00 2001 From: d45 <3d.hagen@gmail.com> Date: Wed, 1 Sep 2021 16:43:18 -0700 Subject: [PATCH 3/5] Review feedback, fixed types, typos, and various errors --- docs/trex_create.md | 25 +++++++++++++------------ docs/trex_release-notes.md | 2 +- docs/trex_tableau_viz.md | 23 +++++++++++------------ 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/docs/trex_create.md b/docs/trex_create.md index fca9c0ad..a2fef5ff 100644 --- a/docs/trex_create.md +++ b/docs/trex_create.md @@ -24,15 +24,14 @@ These instructions assume that you already have cloned or download the Extension For convenience, you might want to create a folder for your "Hello World" dashboard extension in the same location where you installed or cloned the GitHub repository (for example, `HelloDemo` under `/extensions-api`). That way, you can use the same web server (`http-server`) that is used for the samples. - +--- ### Create a manifest file -The manifest file (`EXTENSION-NAME.trex`) is an XML file that describes the extension and provides information to register the extension with Tableau. +The manifest file (`EXTENSION-NAME.trex`) is an XML file that describes the extension and provides information to register the extension with Tableau. For a description of the contents of this file, see [Elements of the manifest file]({{site.baseurl}}/docs/trex_manifest#elements-of-the-manifest-file). 1. In the `HelloDemo` folder (or where ever you want to put your files), create a manifest file for your extension. -Name the manifest file for your extension (for example, `HelloExtension` and save it with the file name extension `.trex`.
    -The manifest file is an XML file that contains elements and attributes that describe the extension. For a description of the contents of this file, see [Elements of the manifest file]({{site.baseurl}}/docs/trex_manifest#elements-of-the-manifest-file). +Name the manifest file for your extension (for example, `HelloExtension` and save it with the file name extension `.trex`. 2. Copy the following XML code into your new file. Make sure that the `` declaration appears as the first element in the file (line 1, column 1). Any blank spaces in front of the declaration will cause an error when you load the extension. @@ -71,11 +70,10 @@ The manifest file is an XML file that contains elements and attributes that desc - After you have created the HTML and JavaScript files for your extension, you use this `.trex` file to add the extension to a Tableau dashboard. To do that, you drag the **Extension** object on to the dashboard. In the **Choose an Extension** dialog box, click **My Extensions** to locate and open the manifest file you just created. -- For information about validating the manifest and adding version information, see the [Tableau Extension Manifest]({{site.baseurl}}/docs/trex_manifest.html). - - +- For information about the manifest file and about adding version information, see the [Tableau Extension Manifest]({{site.baseurl}}/docs/trex_manifest.html). +--- ### Create your web app @@ -87,13 +85,11 @@ The web app you create controls and interacts with the Tableau dashboard objects Your web application must include an HTML page. This page should link to the Extensions API JavaScript library and to any other JavaScript, CSS, or HTML resources your web app requires. You could add the JavaScript code to initialize and call Extensions API functions directly in the HTML page. However, in most cases you want to keep this code in a separate file. -1. In the `HelloDemo` folder (or where ever you put your `.trex` file), create a file called `HelloExtension.html`. - +1. In the `HelloDemo` folder (or where ever you put your `.trex` file), create a file called `HelloExtension.html`. 2. You can copy and paste the following code into your file. This code creates a very simple page with a button that when clicked will initialize and use the API to get the name of the dashboard the extension is running in. This HTML code assumes that you are creating your extension in a folder (for example, `HelloDemo`) under the `/extensions-api` directory. - ```html @@ -131,7 +127,6 @@ Your web application must include an HTML page. This page should link to the Ext The sample code includes a link to the JavaScript library (`tableau.extensions.1.latest.js`), which is available in the `/lib` folder. The sample code also includes links to jQuery and Bootstrap libraries. - 3. If necessary, adjust the relative path to the Extensions API JavaScript library (`tableau.extensions.1.latest.js`), which is available in the `/lib` folder. ```html @@ -150,6 +145,8 @@ Your web application must include an HTML page. This page should link to the Ext ``` +--- + #### Start the web service to host the extension 1. Start the web service to verify you have the web app and files configured.
    The URL of the server must match the `SERVER` in the manifest file for the extension. Be sure to include the `http://` or `https://` in the URL. If you are using your `localhost` for development work, you might want to use the same lightweight web server that is used for the Extensions API samples and tutorial. Assuming that you've cloned or downloaded the repository, and that you've created a folder under `/extensions-api`, you can start the server by using the `npm start` command. Or if you need to use a different port and location, you can install and start the `http-server` yourself (replacing PORT with the port you need): @@ -168,6 +165,9 @@ Your web application must include an HTML page. This page should link to the Ext ``` + +--- + ### Test your extension in Tableau After you have created the manifest file (`.trex`) and have hosted your web app you can test it in Tableau. It's a good idea to do this even if your application isn't completed. @@ -185,7 +185,7 @@ After you have created the manifest file (`.trex`) and have hosted your web app - Tableau parses the `.trex` file when you add the extension to the dashboard. If you make changes to the `.trex` file after you have added it to the dashboard, you need to remove the extension and re-add it. See [What Happens When you Reload an Extension]({{site.baseurl}}/docs/trex_reload.html) - +--- ### Add code to initialize the extension and call Tableau Extensions API functions @@ -225,6 +225,7 @@ The next step is to create the JavaScript that calls the Extensions API. In your |**About the example code**
    The JavaScript example uses the jQuery document ready function to detect when the web page is loaded and ready. The code also uses an event handler to delay the initialization until the user clicks the `initializeButton`. When the page is ready and the user clicks the button, the initialization function (`initializeAsync`) instantiates a dashboard extension. To handle the promise, the `then` method calls two callback functions to handle successful initialization or failure. In case of success, the example gets the dashboard object from the extension, and then accesses the `name` property to display the name of the dashboard sheet in the hosting web page. In case of an error, the error message is displayed. +--- ### Debugging and testing your extension in Tableau diff --git a/docs/trex_release-notes.md b/docs/trex_release-notes.md index 281e0c70..a5a93060 100644 --- a/docs/trex_release-notes.md +++ b/docs/trex_release-notes.md @@ -27,7 +27,7 @@ About this release: ![Tableau Viz SVG image]({{site.baseurl }}/assets/vizapi_demo3.svg) -Starting with version 1.6 of the Dashboard Extensions API library and Tableau 2021.3, you can now add Tableau visualizations to your dashboard extensions. Tableau Viz takes a declarative description of your visualization and renders it as an SVG file that you can embed in your extension. Version 1.6 of the Dashboard Extensions library adds the [`tableau.extensions.createVizImageAsync`]({{site.baseurl}}/docs/interfaces/extensions.html#createvizimageasync){:target="_blank"} method, which takes the JSON description of the image as an input.
    +Starting with version 1.6 of the Dashboard Extensions API library and Tableau 2021.3, you can now add Tableau visualizations to your dashboard extensions. Tableau Viz takes a declarative description of your visualization and renders it as an SVG image that you can embed in your extension. Version 1.6 of the Dashboard Extensions library adds the [`tableau.extensions.createVizImageAsync`]({{site.baseurl}}/docs/interfaces/extensions.html#createvizimageasync){:target="_blank"} method, which takes the JSON description of the image as an input.
    For more information about using Tableau Viz, see:
    - [Add Tableau Viz to Your Dashboard Extensions]({{site.baseurl}}/docs/trex_tableau_viz.html) - [Tableau Viz Reference]({{site.baseurl}}/docs/trex_tableau_viz_ref.html) diff --git a/docs/trex_tableau_viz.md b/docs/trex_tableau_viz.md index 209710dc..2e769137 100644 --- a/docs/trex_tableau_viz.md +++ b/docs/trex_tableau_viz.md @@ -44,13 +44,13 @@ graph LR ## Input specification -A Tableau Viz is defined by a specification. This is the `inputSpec` that you pass as an argument to the `createVizImageAsync` method. The `inputSpec` is a JavaScript object that contains the embedded data and visual specification details. There are two main parts to the `inputSpec`: +A Tableau Viz is defined by a specification. This is the `inputSpec` that you pass as an argument to the `createVizImageAsync` method. The `inputSpec` is a JavaScript object that contains the embedded data and visual specification details. There are two main parts to the `inputSpec`: * the `data:` (an array of objects, for example, the selected measures and dimensions in the dashboard) * information about how to format that data (size of viz, mark type, mark color, encoding) -The `inputSpec` is structured in JSON format. The following example shows a specification that creates a simple bar chart. In this example, the data values are statically assigned as part of the specification. In many cases, you would probably programmatically assign the values based upon marks selection in the dashboard or based on some other selection criteria. +The `inputSpec` is a structured JavaScript object. The following example shows a specification that creates a simple bar chart. In this example, the data values are statically assigned as part of the specification. In many cases, you would probably programmatically assign the values based upon mark selection in the dashboard or based on some other selection criteria. ```javascript @@ -70,13 +70,13 @@ The `inputSpec` is structured in JSON format. The following example shows a spec { Category: 'I', Sales: 52 } ] }, - mark: 'bar', + mark: tableau.MarkType.Bar, encoding: { - columns: { field: 'Category', type: 'discrete' }, - rows: { field: 'Sales', type: 'continuous', hidden: true}, - color: { field: 'Sales', type: 'continuous', palette: 'tableau-map-temperatur'}, - text: { field: 'Category', type: 'discrete' }, - size: { field: 'Category', type: 'discrete'} + columns: { field: 'Category', type: tableau.VizImageEncodingType.Discrete }, + rows: { field: 'Sales', type: tableau.VizImageEncodingType.Continuous, hidden: true}, + color: { field: 'Sales', type: tableau.VizImageEncodingType.Continuous, palette: 'tableau-map-temperatur'}, + text: { field: 'Category', type: tableau.VizImageEncodingType.Discrete }, + size: { field: 'Category', type: tableau.VizImageEncodingType.Discrete} } }; @@ -88,7 +88,7 @@ For more information about the `inputSpec`, see [Tableau Viz Reference]({{site.b ## Call createVizImageAsync -After you create the `inputSpec` you pass it as an argument to the `createVizImageAsync` method. The method returns an SVG image that can be used by the extension. This example takes the `yourEmbeddedDataSpec` that was defined in the previous step, and uses that to describe the SVG to create. +After you create the `inputSpec` you pass it as an argument to the `createVizImageAsync` method. The method returns an SVG image that can be used by the extension. This example takes the `yourEmbeddedDataSpec` that was defined in the previous step, and uses that to describe the chart to create. ```javascript tableau.extensions.createVizImageAsync(yourEmbeddedDataSpec).then((svg) => { @@ -114,7 +114,6 @@ The asynchronous method returns an SVG image as the promise. Here is one way of vizApiElement.appendChild(image); image.addEventListener('load', function () { return URL.revokeObjectURL(url); }, { once: true }); }, (err) => { - console.log('We are here'); console.log(err); }); @@ -162,10 +161,10 @@ Be sure that you use one of the palette names listed for the `color` key under e `Error: internal-error: {"vizapiErrorMsg":"Encoding columns has invalid type. Accepted values are Continuous and Discrete"}` -When you encode the fields in the `inputSpec`, you need to make sure that the discrete fields (dimensions, or blue pills) and continuous fields (measures, or green pills) are mapped to the correct types. +When you encode the fields in the `inputSpec`, you need to make sure that the discrete fields (blue pills) and continuous fields (green pills) are mapped to the correct types: `tableau.VizImageEncodingType.Discrete` and `tableau.VizImageEncodingType.Continuous`. #### Invalid JSON -The `inputSpec` needs to be in JSON format and must include all required elements. You must encode columns and fields. Use a JSON validator, if possible, to check that your format is correct. +The `inputSpec` is a JavaScript object, which Tableau converts to JSON for processing. The `inputSpec` needs to be in the correct format and must include all required elements. You must encode columns and fields. For the list of required elements, see [Tableau Viz Reference]({{site.baseurl}}/docs/trex_tableau_viz_ref.html). From 2ff480958d244a53f56b260286478c8e4afb0113 Mon Sep 17 00:00:00 2001 From: d45 <3d.hagen@gmail.com> Date: Wed, 1 Sep 2021 16:54:19 -0700 Subject: [PATCH 4/5] More review fixes --- docs/trex_tableau_viz.md | 2 +- docs/trex_tableau_viz_ref.md | 30 +++++++++++++++--------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/docs/trex_tableau_viz.md b/docs/trex_tableau_viz.md index 2e769137..49951fc0 100644 --- a/docs/trex_tableau_viz.md +++ b/docs/trex_tableau_viz.md @@ -166,5 +166,5 @@ When you encode the fields in the `inputSpec`, you need to make sure that the di #### Invalid JSON -The `inputSpec` is a JavaScript object, which Tableau converts to JSON for processing. The `inputSpec` needs to be in the correct format and must include all required elements. You must encode columns and fields. For the list of required elements, see [Tableau Viz Reference]({{site.baseurl}}/docs/trex_tableau_viz_ref.html). +The `inputSpec` is a JavaScript object that Tableau converts to JSON for processing. The `inputSpec` needs to be in the correct format and must include all required elements. You must encode columns and fields. For the list of required elements, see [Tableau Viz Reference]({{site.baseurl}}/docs/trex_tableau_viz_ref.html). diff --git a/docs/trex_tableau_viz_ref.md b/docs/trex_tableau_viz_ref.md index 723ece55..e37a4e36 100644 --- a/docs/trex_tableau_viz_ref.md +++ b/docs/trex_tableau_viz_ref.md @@ -45,14 +45,14 @@ The following shows an example `inputSpec` that creates a bar chart image. {"Category": "C", "Sales": 43, "Weather": "Sun", "Quantity": 9} ] }, - "mark": "bar", + "mark": tableau.MarkType.Bar, "markcolor": "#FFA500", "encoding": { - "columns": {"field": "Sales", "type": "continuous"}, - "rows": {"field": "Category", "type": "discrete", "hidden": "true"}, - "color": {"field": "Weather", "type": "discrete", "palette": "seattle_grays_10_0"}, - "size": {"field": "Quantity", "type": "continuous"}, - "text": {"field": "Category", "type": "discrete"} + "columns": {"field": "Sales", "type": tableau.VizImageEncodingType.Continuous}, + "rows": {"field": "Category", "type": tableau.VizImageEncodingType.Discrete, "hidden": "true"}, + "color": {"field": "Weather", "type": tableau.VizImageEncodingType.Discrete, "palette": "seattle_grays_10_0"}, + "size": {"field": "Quantity", "type": tableau.VizImageEncodingType.Continuous}, + "text": {"field": "Category", "type": tableau.VizImageEncodingType.Discrete} } } @@ -101,7 +101,7 @@ data: { ### `mark` -(Optional) Supported mark types include: `bar`, `line`, `area`, `square`, `circle`, `text`. If no mark type is specified, the generated image will use the Tableau default for that data. +(Optional) Supported mark types include: `tableau.MarkType.Bar`, `tableau.MarkType.Line`, `tableau.MarkType.Area`, `tableau.MarkType.Square`, `tableau.MarkType.Circle`, `tableau.MarkType.Text`. If no mark type is specified, the generated image will use the Tableau default for that data. ### `markcolor` @@ -133,7 +133,7 @@ If you specify the size, you must specify both the width and height. If you don' ### `encoding` Corresponds to the Marks card in Tableau and describes how the marks (measures and dimensions) are encoded. In Tableau, when you drag fields onto the properties on the Marks card it encodes the data in the view. The `encoding` key lets you set the properties of the marks for the image.
    The `columns`, `rows` keys allow you to define the layout of your view, just like you do in Tableau today. You can also map fields to the `color`, `size`, and `text` properties. -Within these properties, you must specify the field to encode and its type (`continuous` or `discrete`). Some keys allow you to set additional values as shown in the following table. +Within these properties, you must specify the field to encode and its type (`tableau.VizImageEncodingType.Continuous` or `tableau.VizImageEncodingType.Discrete`). Some keys allow you to set additional values as shown in the following table. --- @@ -142,7 +142,7 @@ Within these properties, you must specify the field to encode and its type (`con | Key | Value | |:--- |:--- | |`field` | The name of the field to encode. | -|`type`| The type of field, either `discrete` (blue "pill") or `continuous` (green "pill"). You can also specify the type using the enumerations: `tableau.VizImageEncodingType.Discrete` or `tableau.VizImageEncodingType.Continuous`.| +|`type`| The type of field, either `tableau.VizImageEncodingType.Discrete` (blue "pill") or `tableau.VizImageEncodingType.Continuous` (green "pill"). | |`hidden` | Boolean (`true`, `false`). Specifies whether to show or hide the column or row header. | |`title` | Specifies a custom field label (x-axis, or header) or custom axis title (y-axis) for the columns and rows. | | `showtitle` | Boolean (`true`, `false`). Specifies whether to show or hide the custom column or row title. | @@ -152,8 +152,8 @@ The following is an example of how you might specify the encodings for columns a ```json encoding: { - columns: {field: "Sales", type: "continuous", title: "My Custom Title", showtitle: false}, - rows: {field: "Category", type: "discrete" } + columns: {field: "Sales", type: tableau.VizImageEncodingType.Continuous, title: "My Custom Title", showtitle: false}, + rows: {field: "Category", type: tableau.VizImageEncodingType.Discrete } } ``` @@ -170,7 +170,7 @@ The `color` key corresponds to the Color button on the Marks card. The color can |`showlegend` | Boolean (`true`, `false`). Specifies whether to show or hide the color legend. | -**`palette` names for `continuous` fields** +**`palette` names for continuous fields** You can specify one of the following Tableau color palettes with the `palette` key for continuous fields. Note that the list of available palettes depends upon the version of Tableau that is being used. Be aware that the palette colors are subject to change. @@ -180,7 +180,7 @@ The following is an example that shows how you might encode a continuous field w encoding: { ... - color: { field: 'Measure', type: 'continuous', palette: 'green_blue_white_diverging_10_0'}, + color: { field: 'Measure', type: tableau.VizImageEncodingType.Continuous, palette: 'green_blue_white_diverging_10_0'}, ... } @@ -193,7 +193,7 @@ encoding: { -**`palette` names for `discrete` fields** +**`palette` names for discrete fields** You can specify one of the following Tableau color palettes with the `palette` key for discrete fields. Note that the list of available palettes depends upon the version of Tableau that is being used. Be aware that the palette colors are subject to change. @@ -202,7 +202,7 @@ The following is an example that shows how you might encode a discrete field wit ```json encoding: { ... - color: { field: 'Category', type: 'discrete', palette: 'seattle_grays_10_0'}, + color: { field: 'Category', type: tableau.VizImageEncodingType.Discrete, palette: 'seattle_grays_10_0'}, ... } From 5731de911e07e489f368a6740f79a268a90ecde0 Mon Sep 17 00:00:00 2001 From: d45 <3d.hagen@gmail.com> Date: Thu, 2 Sep 2021 13:31:59 -0700 Subject: [PATCH 5/5] Fixed JSON references --- docs/trex_tableau_viz_ref.md | 69 ++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/docs/trex_tableau_viz_ref.md b/docs/trex_tableau_viz_ref.md index e37a4e36..9d0d2ce7 100644 --- a/docs/trex_tableau_viz_ref.md +++ b/docs/trex_tableau_viz_ref.md @@ -24,35 +24,36 @@ createVizImageAsync( inputSpec: *object* ): Promise ``` This method takes a single argument, the `inputSpec`, a JavaScript object, and returns the SVG description of that image. To call this method, you first initialize the Dashboard Extensions API (`tableau.extensions.initialize()`). You then create the `inputSpec` object that defines your graphic. +For more information about the method, see [`tableau.extensions.createVizImageAsync`]({{site.baseurl}}/docs/interfaces/extensions.html#createvizimageasync){:target="_blank"} in the Dashboard Extensions API reference. -## JSON specification for `inputSpec` object +## Specification for `inputSpec` object -The `inputSpec` is a JavaScript object that uses JSON format and specifies the attribute-value pairs to use to create the SVG image. The object consists of the `data` and the attributes that specify how to format the data, for example, `mark`, `markcolor`, `size`, and `encoding`. The `data` is an array of objects. The `data` is listed in row-level order, where each object represents one item. The `mark` attribute specifies the type of mark to use in the image,for example, you can change the marks from bars to lines. +The `inputSpec` is a JavaScript object that specifies the name-value pairs to use to create the SVG image. The object consists of the `data` and the properties that specify how to format the data, for example, `mark`, `markcolor`, `size`, and `encoding`. The `data` is an array of objects. The `data` is listed in row-level order, where each object represents one item. The `mark` property specifies the type of mark to use in the image, for example, you can change the mark type from bars to lines. The following shows an example `inputSpec` that creates a bar chart image. -```json +```javascript { - "description": "A bar chart with multiple encodings", - "size": {"width": 800, "height": 600}, - "data": { - "values": [ + description: "A bar chart with multiple encodings", + size: {width: 800, height: 600}, + data: { + values: [ {"Category": "A", "Sales": 28, "Weather": "Sun", "Quantity": 3}, {"Category": "B", "Sales": 55, "Weather": "Sun", "Quantity": 6}, {"Category": "C", "Sales": 43, "Weather": "Sun", "Quantity": 9} ] }, - "mark": tableau.MarkType.Bar, - "markcolor": "#FFA500", - "encoding": { - "columns": {"field": "Sales", "type": tableau.VizImageEncodingType.Continuous}, - "rows": {"field": "Category", "type": tableau.VizImageEncodingType.Discrete, "hidden": "true"}, - "color": {"field": "Weather", "type": tableau.VizImageEncodingType.Discrete, "palette": "seattle_grays_10_0"}, - "size": {"field": "Quantity", "type": tableau.VizImageEncodingType.Continuous}, - "text": {"field": "Category", "type": tableau.VizImageEncodingType.Discrete} + mark: tableau.MarkType.Bar, + markcolor: "#FFA500", + encoding: { + columns: {field: "Sales", type: tableau.VizImageEncodingType.Continuous}, + rows: {field: "Category", type: tableau.VizImageEncodingType.Discrete, hidden: "true"}, + color: {field: "Weather", type: tableau.VizImageEncodingType.Discrete, palette: "seattle_grays_10_0"}, + size: {field: "Quantity", type: tableau.VizImageEncodingType.Continuous}, + text: {field: "Category", type: tableau.VizImageEncodingType.Discrete} } } @@ -60,9 +61,9 @@ The following shows an example `inputSpec` that creates a bar chart image. ``` --- -## Descripion of `inputSpec` keys +## Descripion of `inputSpec` properties -The following table describes the keys of the elements in the `inputSpec`, the JavaScript JSON object. +The following table describes the properties in the `inputSpec`, the JavaScript object that you provide as input to the `createVizImageAsync` method. ### `description` @@ -73,16 +74,16 @@ The following table describes the keys of the elements in the `inputSpec`, the J (Optional) Creates a title for the image. -```json +```javascript title: "My Custom Viz", ``` ### `data` -(Required) The data to use to create the image. The `data` consists of an array of objects, specified with the `"values"` key. Data is listed in row level order, where each object represents one item. +(Required) The data to use to create the image. The `data` consists of an array of objects, specified with the `"values"` property. Data is listed in row level order, where each object represents one item. -```json +```javascript data: { values: [ { Category: 'A', Sales: 28 }, @@ -108,7 +109,7 @@ data: { Specifies a mark color for all marks, for example, hex values. This is equivalent to selecting an arbitrary color in the Color Shelf of the Marks card in Tableau. -```json +```javascript markcolor: "#FFA500", ``` @@ -117,7 +118,7 @@ Specifies a mark color for all marks, for example, hex values. This is equivalen (Optional) Specifies the size of the image in pixels. The size is described with width and height dimensions. -| Key | Value | +| Property | Value | |:--- |:--- | |`width` | Width of the SVG image. | |`height`| Height of the SVG image.| @@ -125,21 +126,21 @@ Specifies a mark color for all marks, for example, hex values. This is equivalen If you specify the size, you must specify both the width and height. If you don't specify a size, the image uses the default size (600 x 400). -```json -"size": {"width": 800, "height": 600}, +```javascript +size: {width: 800, height: 600}, ``` ### `encoding` -Corresponds to the Marks card in Tableau and describes how the marks (measures and dimensions) are encoded. In Tableau, when you drag fields onto the properties on the Marks card it encodes the data in the view. The `encoding` key lets you set the properties of the marks for the image.
    The `columns`, `rows` keys allow you to define the layout of your view, just like you do in Tableau today. You can also map fields to the `color`, `size`, and `text` properties. -Within these properties, you must specify the field to encode and its type (`tableau.VizImageEncodingType.Continuous` or `tableau.VizImageEncodingType.Discrete`). Some keys allow you to set additional values as shown in the following table. +Corresponds to the Marks card in Tableau and describes how the marks (measures and dimensions) are encoded. In Tableau, when you drag fields onto the properties on the Marks card it encodes the data in the view. The `encoding` property lets you set the properties of the marks for the image.
    The `columns`, `rows` properties allow you to define the layout of your view, just like you do in Tableau today. You can also map fields to the `color`, `size`, and `text` properties. +Within these properties, you must specify the field to encode and its type (`tableau.VizImageEncodingType.Continuous` or `tableau.VizImageEncodingType.Discrete`). Some properties allow you to set additional values as shown in the following table. --- #### `columns` and `rows` -| Key | Value | +| Property | Value | |:--- |:--- | |`field` | The name of the field to encode. | |`type`| The type of field, either `tableau.VizImageEncodingType.Discrete` (blue "pill") or `tableau.VizImageEncodingType.Continuous` (green "pill"). | @@ -149,7 +150,7 @@ Within these properties, you must specify the field to encode and its type (`tab The following is an example of how you might specify the encodings for columns and rows: -```json +```javascript encoding: { columns: {field: "Sales", type: tableau.VizImageEncodingType.Continuous, title: "My Custom Title", showtitle: false}, @@ -160,9 +161,9 @@ encoding: { #### `color` -The `color` key corresponds to the Color button on the Marks card. The color can contain the following keys: +The `color` property corresponds to the Color button on the Marks card. The color can contain additional properties: -| Key | Value | +| Property | Value | |:--- |:--- | |`field` | The name of the field to encode. | |`type`| The way the data is distributed in the view (`discrete` or `continuous`).| @@ -172,11 +173,11 @@ The `color` key corresponds to the Color button on the Marks card. The color can **`palette` names for continuous fields** -You can specify one of the following Tableau color palettes with the `palette` key for continuous fields. Note that the list of available palettes depends upon the version of Tableau that is being used. Be aware that the palette colors are subject to change. +You can specify one of the following Tableau color palettes with the `palette` property for continuous fields. Note that the list of available palettes depends upon the version of Tableau that is being used. Be aware that the palette colors are subject to change. The following is an example that shows how you might encode a continuous field with a Tableau palette. -```json +```javascript encoding: { ... @@ -195,11 +196,11 @@ encoding: { **`palette` names for discrete fields** -You can specify one of the following Tableau color palettes with the `palette` key for discrete fields. Note that the list of available palettes depends upon the version of Tableau that is being used. Be aware that the palette colors are subject to change. +You can specify one of the following Tableau color palettes with the `palette` property for discrete fields. Note that the list of available palettes depends upon the version of Tableau that is being used. Be aware that the palette colors are subject to change. The following is an example that shows how you might encode a discrete field with a Tableau palette. -```json +```javascript encoding: { ... color: { field: 'Category', type: tableau.VizImageEncodingType.Discrete, palette: 'seattle_grays_10_0'},

    %)Mj-f&R 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ξn1*{P5zkW%_8A8?N&=Toj!_VMp!6JP~O=h{{yogtz&5C zVjdGj&!Mz3iHIUUIz!1dp1K-9I%Cdw*i37@Xb)?ViSuvKwP}dvu-|bSjZiOb`j}~i z=Ld}O&x2dhu~weJq^nGxZByAVIlyhC6u0(L!%s-u({NzR%MQNx&N=yXE=WTD)x3qu zQmpH(U;iVW(&0zfypMr}Y_&EvMA_Aiu%e4CZd5)cOm&n;DQ$RZuh6x+SL-{}^hpsk zZi}ouhvl93?8+Wu2>wbpLi+bh@cix8cLa*|3@fmy55{Y(rR+@3XBOQspy8hBX+fUW&;nbaG@WmxOOt(8njts~iGT|uD;N2-_CXXB zh?P=|8Eb*={JGK`j3j>S&J8`kTx48pK|Oq5m2SJ5G9zwi5Adq#!F#F7pMvjI&d#Nr zUXja~2L?G-tKajxc#L<=U6rl*epaL=yct|W(z2Va9eO`T$JgrVw>m|>EJmj{wnw*E z>xFH$Fkv*$?);)uI7Wh3QhnC%G%VW3#;iq@B4#Vw249TnZLsd)qSNAYDR=w;#G$d{ zcH3S)n29=eIv!^9eZ2bhr?1F2p ziI(8HCn)f=$wv;KU5>mxAGMR?aH4BFR<4)GTs8jAjq}2Akfrp<*5b4@$jMA?FZLpJ zj$3!Xz*H-)`{JgtczNWSd9YrgjlY2emynJAx)OfX_iD8_gN3Hn;zEnnf%F^V9wk%N z9|}u;S9F-Sp7-JtSSMv6BHAl-%1J)nJ$z{tXEYLgKIZDB`|%;~CnT+H49%mZnS}yh9{}Wg#4;AQv z44Yf_!$&WWPjLDq$rA!8zxvO$aFuD~R)()MdkS9MZUv=Np5DI?RwqS!&s9)rI)2&v zSH%y@ExFU5gq|}s!0S6DM+~X|?SHR^?*+>+yuCrFR0-7-ZgtxWk55Mb4i-=x)k)Tw z2bLo=uMHIc_kyBS83qz}@D=*Z^LWkBxmJ+-KNy@GG(I!(DzvKWcEg{YKmy?kE-zin zMp;|`)!yBNgU2HMlYBplX;i*llwyR~&Kn0lA4|XWZG0hf`^(&6$|hLFtbiJ{9Bj4@=g^<^TWy literal 0 HcmV?d00001 diff --git a/assets/vizapi_demo3.svg b/assets/vizapi_demo3.svg new file mode 100644 index 00000000..e232ae2d --- /dev/null +++ b/assets/vizapi_demo3.svg @@ -0,0 +1,2783 @@ + + +Rendered by Tableau + + + + + + + + + + + + + + + + + + + + + + +Category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A + + + + + + +B + + + + + + +C + + + + + + +D + + + + + + +E + + + + + + +F + + + + + + +G + + + + + + +H + + + + + + +I + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +I + + + + + + +H + + + + + + +G + + + + + + +F + + + + + + +E + + + + + + +D + + + + + + +C + + + + + + +B + + + + + + +A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +19.00 + + + + + + +91.00 + + + + + + +Sales + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Category + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +C + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +D + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +F + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +G + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +H + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +I + + + + + + diff --git a/docs/trex_create.md b/docs/trex_create.md index 3e6fef26..fca9c0ad 100644 --- a/docs/trex_create.md +++ b/docs/trex_create.md @@ -22,17 +22,17 @@ To create a Tableau extension you need the following components. These instructions assume that you already have cloned or download the Extensions API SDK. For information about setting up your environment and the Tableau requirements, see [Get Started]({{site.baseurl}}/docs/trex_getstarted.html). -For convenience, you might want to create a folder for your "Hello World" dashboard extension in the same location where you installed or cloned the GitHub repository (for example, `HelloDemo` under `/extensions-api`). That way, you can use the same web server (`http-server`) that is used for the samples. +For convenience, you might want to create a folder for your "Hello World" dashboard extension in the same location where you installed or cloned the GitHub repository (for example, `HelloDemo` under `/extensions-api`). That way, you can use the same web server (`http-server`) that is used for the samples. ### Create a manifest file -The manifest file (`EXTENSION-NAME.trex`) is an XML file that describes the extension and provides information to register the extension with Tableau. +The manifest file (`EXTENSION-NAME.trex`) is an XML file that describes the extension and provides information to register the extension with Tableau. 1. In the `HelloDemo` folder (or where ever you want to put your files), create a manifest file for your extension. Name the manifest file for your extension (for example, `HelloExtension` and save it with the file name extension `.trex`.
    -The manifest file is an XML file that contains elements and attributes that describe the extension. For a description of the contents of this file, see [Elements of the manifest file]({{site.baseurl}}/docs/trex_manifest#elements-of-the-manifest-file). The XSD that is used for validation is available on the [Tableau Pre-Release website](https://prerelease.tableau.com/project/version/item.html?cap=52e2710a0793434d82142736c7ab3029&arttypeid={0DD668AE-472C-4E70-B465-35F7AE0DEB6D}&artid={939493D2-8000-4192-857A-67624CBCC35A}){:target="_blank"}. +The manifest file is an XML file that contains elements and attributes that describe the extension. For a description of the contents of this file, see [Elements of the manifest file]({{site.baseurl}}/docs/trex_manifest#elements-of-the-manifest-file). 2. Copy the following XML code into your new file. Make sure that the `` declaration appears as the first element in the file (line 1, column 1). Any blank spaces in front of the declaration will cause an error when you load the extension. diff --git a/docs/trex_release-notes.md b/docs/trex_release-notes.md index 07bdb72f..281e0c70 100644 --- a/docs/trex_release-notes.md +++ b/docs/trex_release-notes.md @@ -13,6 +13,27 @@ See also: [Known Issues]({{site.baseurl}}/docs/trex_known_issues.html) ---- +### Tableau Dashboard Extensions API version 1.6 + +*September 2021* + +* Tableau Dashboard Extensions API library: `tableau.extensions.1.6.0.js`
    (download or clone the Extensions API repository on [GitHub](https://github.com/tableau/extensions-api){:target="_blank"}.)
    + +* Download [Tableau Desktop 2021.3](https://www.tableau.com/support/releases){:target="_blank"} or [Tableau Server 2021.3](https://www.tableau.com/support/releases/server){:target="_blank"}. + +About this release: + +* Tableau Viz is here!
    + +![Tableau Viz SVG image]({{site.baseurl }}/assets/vizapi_demo3.svg) + +Starting with version 1.6 of the Dashboard Extensions API library and Tableau 2021.3, you can now add Tableau visualizations to your dashboard extensions. Tableau Viz takes a declarative description of your visualization and renders it as an SVG file that you can embed in your extension. Version 1.6 of the Dashboard Extensions library adds the [`tableau.extensions.createVizImageAsync`]({{site.baseurl}}/docs/interfaces/extensions.html#createvizimageasync){:target="_blank"} method, which takes the JSON description of the image as an input.
    +For more information about using Tableau Viz, see:
    + - [Add Tableau Viz to Your Dashboard Extensions]({{site.baseurl}}/docs/trex_tableau_viz.html) + - [Tableau Viz Reference]({{site.baseurl}}/docs/trex_tableau_viz_ref.html) + +---- + ### Tableau Dashboard Extensions API version 1.5 *June 2021* diff --git a/docs/trex_tableau_viz.md b/docs/trex_tableau_viz.md new file mode 100644 index 00000000..f3b78597 --- /dev/null +++ b/docs/trex_tableau_viz.md @@ -0,0 +1,169 @@ +--- +title: Add Tableau Viz to your Dashboard Extensions +layout: docs +--- + +Tableau Viz provides a lightweight method for creating visualizations in Tableau. You provide a declarative description of graph or chart, and then call a method to render the description as an SVG image that you can embed in your dashboard extension. The description includes the data (or programmatically adds the data) and specifies the type of chart you wish to create and how it should be encoded. This feature is available through the Dashboard Extensions API and employs the same visualization pipeline that Tableau uses. + + + +**In this section** + +* TOC +{:toc} + +--- + +## What you need to get started + +Tableau Viz is integrated with the Tableau Dashboard Extensions API. To add visualizations to your extension requires the following versions of Tableau and the Dashboard Extensions JavaScript library. + +* Tableau 2021.3 and later + +* Dashboard Extensions API library (version 1.6 and later) + + +--- + + +## The components of a Tableau Viz + +There are three main steps in creating a Tableau Viz image. + +* Provide the description (or specification) of the image + +* Call the Dashboard Extensions method to create the image + +* Display the SVG image in the dashboard extension + + +