From c81fa0d28527012231c4f584b35c7183e3da5cfd Mon Sep 17 00:00:00 2001 From: Chris Houseknecht Date: Thu, 30 Jan 2014 15:23:32 -0500 Subject: [PATCH] AC-976, AC-1000, AC-602 --- awx/ui/static/img/help/groups001.png | Bin 0 -> 9536 bytes awx/ui/static/img/help/groups002.png | Bin 0 -> 9011 bytes awx/ui/static/img/help/groups003.png | Bin 0 -> 11331 bytes awx/ui/static/img/help/groups004.png | Bin 0 -> 7378 bytes awx/ui/static/img/help/groups005.png | Bin 0 -> 8993 bytes awx/ui/static/img/help/groups006.png | Bin 0 -> 8687 bytes awx/ui/static/js/app.js | 2 +- awx/ui/static/js/controllers/Inventories.js | 35 +++++++++-- awx/ui/static/js/help/InventoryGroups.js | 52 ++++++++++++++++ awx/ui/static/js/help/InventorySummary.js | 29 --------- awx/ui/static/js/helpers/Groups.js | 7 +-- awx/ui/static/js/helpers/Hosts.js | 2 +- awx/ui/static/js/helpers/inventory.js | 9 +++ awx/ui/static/js/lists/InventoryGroups.js | 15 ++--- awx/ui/static/js/lists/InventoryHosts.js | 12 ---- awx/ui/static/less/ansible-ui.less | 56 ++++++++++++++---- awx/ui/static/lib/ansible/InventoryTree.js | 1 + awx/ui/static/lib/ansible/Utilities.js | 26 ++++++-- .../static/lib/ansible/generator-helpers.js | 10 ++-- awx/ui/templates/ui/index.html | 2 +- 20 files changed, 170 insertions(+), 88 deletions(-) create mode 100644 awx/ui/static/img/help/groups001.png create mode 100644 awx/ui/static/img/help/groups002.png create mode 100644 awx/ui/static/img/help/groups003.png create mode 100644 awx/ui/static/img/help/groups004.png create mode 100644 awx/ui/static/img/help/groups005.png create mode 100644 awx/ui/static/img/help/groups006.png create mode 100644 awx/ui/static/js/help/InventoryGroups.js delete mode 100644 awx/ui/static/js/help/InventorySummary.js diff --git a/awx/ui/static/img/help/groups001.png b/awx/ui/static/img/help/groups001.png new file mode 100644 index 0000000000000000000000000000000000000000..9d202cbcaceeabff869e36e91a0225a5b07c5e07 GIT binary patch literal 9536 zcmeHtWm{Wauy*j`6dt^|6?ZA_?(PIDTHM_!?(R}3P`nT+e7OaCqk+1Y9waQP7^_QFrY!YJ+hnz4LABAXaQ{*ZyrtUfwBBK6q0(rcu8kz~+C*O(XzUQT`aH9{ zV{MrKj-O{D5VEJVbv4}^wtZD}8<=-R-9H4}*~P%5MdEr*;8E9RY{VFW`WE?Za36j; z0Q#!@G{jI}QiL=uL4v%Dj0~zw%iDJ^kf|b$O6&g+LmSG{&C4zw zrX`xB#Ka@A_fI`NqQbe5Dqy^n zN;o+dwJ#qqzLi9YpOlKa@>+VeeJ`#xJ%W@-dNtT{&w4HcAcpYYZ-a+~@Z1J*$L%K0 zAxa2T0@%-_QjW?ZTdD)>&qh+>6_k)qUbVdYm}H?zmP8dPnge@D&7qoT;A(KP$&rWlbkriQ*QW@zR9Q?Je^BfgC0X%<+uQJQ>29$L z$^V4no^mDN5Hore^FG|ouGZw5sa&FP&K50+^lz$HPR?Z!LuKxHnbeL-~HnmNZDRpR4t z0;({Pakk?Rf*Kh2w(i?9K#N@0D$`o%s%s5U%EnFgYxaM3IYMtlY_ACH(p61T)(i{Q zroVA4fx*b`XGhJ8l+Q(tKf!a3utt9Jk=T!P`=zflDLy@iI1QIE`HnLmyE}U`=N(AT zfmLKIq7~R0`*&)NYF%S>ZQ_?fx$FCKf^#h2Wx3R6rkm@IRq z61LnhKiGTDoY(meXOk2Q{A|EoIhFK@ek<&$#O3=ukZ98M47v9;8*)WhjJjPINLk^@ z6E0g^_rod(12^#sWojU#+~aue_$!1?#$%zb5jW1nUZ_9()%DdUK@B|+WVSFqFeYmP zUD`%z+Gu9g8?#2sFgYo@6}{n)8GQ;hfyV9CCxdacvSQ?^_=hAro81oQ{ihGLKEU_q z0o=)F#J{<{m`U@#`_`9ou_7`5ej6!w^%$YgVVlz@kq?XUe4el(>GAt)Wzrl=TqDie zQQrsKb#o81QpdV$);tL6X?cG1Hpq=_op*RhfA#8q7;OYv%a&Y~d`cwXZG1dosZTME z3WOK6jb!^HhAeabDiFFvCq>9SiC)uREBMjpB31^ z^8K&4PQQn~fZcyIY|nN<^dkSMZc=U&lRNzV96T3^T%c^Mxep>6{ck4i813*ah2YtnaisWR9 zMCZdzQ`VcHQ=-Q3wl=^h|9N7O($3!+pcbGzhEF%K{`0Nkr)#WY32{|sx03g@{q;5I zyIu);Ugvp*@)$)fkX$0BobeXGTtgZ@AeyEvLMvjDk?im4*h}vKYKgfu%}*|0r7$n= zTQpztB?e%~0I)}weZcK7pd)At1ZA_()l0pvMW*3Tl!Wqkd?aB)l)cIL=wAixx-7RUTET*S!2wDEbLz61SY zadoM6tmO`H&T63j+X3EPq3w(BP8CwZU5_+1EWXWh6+g0dbVPS?Y@oVi(#1wUzGc8D z#$B?F?Yv8qMZ*wG$|X6UK%AsUv-MBG~ z_Qr_$CXz|Qc1ljy0n0Sp?L>Wbe`u|h*rJq%`G6CZLvY~yioGSUCVJeed1-1R$6;fU zMQIE+S)=&VA(4Uugd(b+Y{4=<^d~ID!+6cZ*(K`&L*T{Jd4?;pl0E0B%)59k;d~^a zAssvGZsgdPa$wrh{~UP_CH43CsO_pIClN*M=vqpfL&|g>!>>Y`g{idul-(D+Me*`$ zQf&O`V~J45KZ7FS`J-0+t?QA2W7c7)95j8GvF&E&gW?6CGd{=5lmyR)QU6#DU=Xq) z&6yhBMoI3qbeXjAdJ$|)!C1)$;(f0OzmzCQzTDU46H+IkS#^dDzXd+S^je_H1?J|2 zq$weJKp!*uZsF`}94kf7Xl!hxD;Q5aMiyENO1QokFy5KkH8>ws7H%crx)$i-Wwd8H z_`KmD*_&;38pVs2e_Q_4sKq#`kq{H!!YVC$K7<^9B7LRT*?F?dJ6#g{2=%rve;UxD zd6mT4Vt#wZ#HvnTe&22O^0v`O#v)(9L`)m@WiC)&p6t)9IRffLm=+04B0`LxgGN{i_{q_@EtW4!E1=d>^TV1RJ~<$HEXaJx(} zPnDP1!wp{&vHVg&)Ft$3FKr>?!k;BpMcEmxqDSUxv)~u_&}jUF6z+(qnBQw11PQti z__92}nu?i;bG!?>Zm4V)brr`a@PFgJiitn(dIhsYrdi2t_(k?bsu?11)2?viefvj_ zui`nz)HVVWtv2gx=3sY2;z;j|5R^WO<^0HiDl;i3`7ca%bv-3f4N1oL+=oitf6h!* zto>;6c>{0iKOrhV#|NL^E$^C%ysR_O#!Jz@YNj9;^#nT09UJNz7GMX&z3QHFFm<&b zlD#_N^ZKe;nvSh9=zSSP_oh*)~4@mf=11{w#o)_`||bMnyHco6pia znGK*U%8$cU)qlh%8$o>V$CxBV^PAmhV`KE`t>O5USAr>?uOmAPYoec4U$lL-BY8~t zk@?ROoVAa`dbMBche(QjOQC3ZP|HBMw&^9_owg^*RYnF!l8D5w#>hy z(v&I@UJ9ys(ovK=E83UnPKEW+=45!jwxDA*){U?eYg~p33v_wy)^3WSpopjs0trHH zx#y%Tmy-)B11|(4i7x4%vGe>u8L#}p!<~qUhdNV)Z~2sbd{dX$Cg^Vn8`TiK&|dAiK0H_iLB#A zMv*o9Zn&pvueI@eMD_QW@^>ce+kP>m~ga=st>FgLEvI@T$ov^j*# z?vfz4#I^>11}Iv3^mnLX0XjpWZ_;M6N$h9J&&hr)s{O%m`A9Rscf4>sY{RJOMst(T z_8=`I{kg=uCRC|KcGVx%AlHe4%`Kg#nF0Uw&#|xge9F2;8$eF`qxM1JX{`M{Phm3w zf8m{;Pmw%CBt^dDT(zpL0 z(JJoUe9LY}=d`JkO&DbNB4x{5>^MMtL`NZ!U5slxd-##FK_Pex^v{Bmy)x<{Gz|=v z_`;Jcf#@Y*+FnA*)4F6xusdor zl4x*=YV$zB%7CaqliRg`=iH}*;`z|DPz~o3(R>SXat!Y~$6fybJx^wo?9g~&!Jot@ z-Wke&&d%`D)Q1QxSP$1{jn$rQ@*ouH++z6dLsFbFXtm8BM}bux1pxeib%XXg24p(JfN%8 zYvUf$55|nHu281GCRNl1*S!rwPC)s?Pvwb(%A|&89uxzi{bb)>Bd@HB$tHa;UTL+x z+xGuuh1XFct#Y~Z>!L0rBZH3DV!E1ZNyzN6a3$d6?>Z!ITNDAx*;`(r-45T5Hr(c~ zRPD?Hkd14jZ{LP(ZEU3P?aq))vLMp`1>NA0{#~z$-xiezq=dwKv|_6Nos7mf8-JU$ zxunF9SzOpH-lFCj5YT1Lwd~wM&=4}2U3o-lr%ZMY>!h!gA_O8raR#{%Mdvf_eRyeh z_}sKC{IKpyVGQm#HJnSG--C~bhrVw#X-Pq!QJ!%I@WgS(K*S(bdhx4Dy@pRNRy&ky zK`O!19}{qgX+C0NW8>hUPR(m=4!*a%8=G|$;48oh4rVb0RGI!u3FHw2%UKI-KX*c6 zJ5a_>%4sMT%S-|uHZ~SkRA}$@gE+WAn3fg*d6Bv5a@4Lde4q0S1#3)N)zFN<;kL=@_`N z=WO({2;hZBl#WKz!5f{#7hjgPBqJY^w+gJ`DWDq6`mpsL;MyK`I7dzDv34GHT>c)$ zi`!X3agEb1F$QM&iN(?ZaPwH}i4p$3x$!^t9%f?A0yV8Y6~@dZ4G|4e|1ffyA3+Xh z&9KiPdT5rECbh0G266l+*R8(5iJ^7Z{iJ8*!DIl%{d?&ZE8VnJ@O@?D-UkD|K*gg> z0v9pw#I#eXvAucn0N5}J#AYZ?d z!9M5!JaHSk{^k7_=tbI;DJPkvsHiB#`?HkE;8#s6{B&-6-(IwUA%dOQ}TMieX|NPeth?F|2yy_#v25(x6PfX_C!SWx%Outn6z_ z%45gf*`NN|`8nsntz$mTpOP;t(uYXy6m_|~)dgwPx{X_hp-C4c@Sk`4~c`YT6+b!s$m%B)&|6w#naxK7x z|5m4P`F3;Zjs01@4uLD2p;v7OA6}s=W~7~d;pdG-OsuiLIu)EKkX2^U>luDJU{v!- z;uol1cGD(wBQY*KG!bz^gf>;D$7X+?Pc_qH9m44e9E&0E^n;j-UeXyLYgnNuYjad= z+&9b@L600|uxLyq>0Xc8WM(AQ^YQa*aer{Zv9k0cB&7Y7o8pwpcQRHRFJ1TXx2WQ% z3coHPJfN?vPBHAyT-T#2m^PkC z0tIKBWpOWOzbq(tyidI;d8a{&{{<|qknLKO&Sy6{x#>f{p87`@k5}-UmgcK+i9nLQ z4|`$#OgLItsnsiHIsr1f;_nM1u;>rSrGMBkMeQd;Gv^d>X?#6I+)!%Is zlQZ8NeJ+~05r=nTi-ij(p?)b_9)c@z)pLzkHpLo~qYW z3HGzRV)}@U)k!Q1r4X033UcVt+RfR*bWR)GgI+Y@5qx`9O%+9sTPCeKj;P zm&@93dXm1h*7YIz&pANyaSw~U4d9*lkQMsaEPq#H!M0CteC7P9OEF8rA7V*=#nniB zdx6S$y}+|_yyFEwY!={K=gypBYE98FU0*2OiJ4X=>$`70 zpakHV33JQ10>d~=<%E0XkCNT-s>82F#x8H6F?nHG*e+OwV<>ydD;|y{gxsNV02u6~ zh;TA^DAiy79{Pn@XCqkozRQV3%scs;kOdqv!P8~={3qRTJL1_L|5MHJ64kRFr)tnu z8aEV=6J2t`(rvDWrnC!J5rT*xsfr$ZYHp~k8fY@j(Xh@l`~B2R5d4a2KA7(i zglgL~($|Gqjy0sQ z`x7qf5}FcqxV>6H2y$^Gwvvr$;Vs^NeT`&DtGOL-zR{3Y#A3CpQY*z9af5WUr^pcn zGrHOB`ByELgK`XI_IgJG6ytrMn!u8DaS7W5apqj=Ut%v2RLXO4WQ{J=^>$*3jSs4> zcGm3T55c@h0+*`-)b?9v_tM2#)`DJ;yMm~7^f|d8h&5#c-5e2SS1cm8tWOZpW!>*e z+0j0A>D_U*nPXe?O|Ijbw`)|)n**f^pU?vvQOAZ?ZbVD&I-sZ;JWWC`3vu%M;upgC zqtOOIS@9nxQGN>&daxkGY_Es0CUC*&YMh#Ipcj+>;y1Rk9Fza3hSMJXJK14qWs}+wU{th!D01O=fo* z9#Z|ph^CKBWkOJaJZ_(xrx{QZf2xV%XWXQ*50ZpLsY4@lU?!UD3jsuN?lp~BE7l89 zfITd((v_T|`FWpt05 zkqy_mcC$aO5H)q(nL*=%*lUk)f`AFGw2&N%L)}?nWu7n}ko$4=M;1cjLnog7R&y!4 z;}?Ex9U4O4!@7~Ki!B^%%b?c?ly62WCm+KucSqP(8eAkz32;i?E zZGyqu1pk%hb^a%SU*uh_>vWvNK1DR>!nkvYXf7a}cD^ub&Au0JNZVkSn@F`VGGp4c4me@Z5%D0u&Gh# z^Iou;e-a*!%G*){*l(}-6*lCJ`R8_83ioCs4Rt$B6y&Y!rf((VTLv*8WrwOY=s@6! zwNuoMg6C)^TAa8CB=``CzVFlbL}%a&k|DlFY6M+etU(k*Scr0|r1R1ssggwfz!mkZ zICYwXB04v?5b^iQuRe&X(N`R9>f+_ zYp>O~LTt_`)F|LGJ;9nK;Gc#xwZ{e~C-1w)MJ~<-TQ=--7cptGryvNWn(UbE48L5E zc`JWhwA(iApv7u*VDsh$m(znOJAxYS9vW2W=!jI`raV%*Smywg?6nGR?^i4Fm-1!a z-5y|PmWBfN5G0cb)f&cWNsolEptE``NHKJ25;6~3BEh4c57?G#!6e<%NvXAZ9EGQJ zw5UcTwbi~q12wZum+>*{Qoc44DG5>%?4KPc!|n;q1VHT&&*(P!Belijrb$H?Rn-<% zWqaOjYRho|Ge9oR0&6ysaH#FM6eXKoe;f9e2O(_B1=;c)z*LYoG9~hFAJVoMz4#IC zecj&lco59LMa0Nxlp786Al<4S1dizYVW8w9qSW#6AM?#A3FSp7s3MHPCAzG}qFK%J zd{g!DQ0Mtvj8VT4I*DOaDs$RF;(vONE*~dWM^g&L{6xcdw2fPbq0T9-d?vzywmoM)E?&m_w}2b=lyj63s2ULqgw#E7&BOCu|m(7z^=z)rv&Hr|J(|m7&|s9fW$zZXQqwcym>7%FpHHoZu7G| zS`RhE5SASnexh_ZR5ChMz#G^k(kd)zH~G)Z_7IPxggK zwL4Q3R}C!S$JY0OApaH-O8yYCEE!>8 z%)7#qT?4;A+oV_x;{^~7jh-r-lfCP7YQ*GQ%A+SxLsVhFt*ibQ*@uZ`^(3JOjI!|G zOk}_IbWCuFd}xu%GQmwJg|5Tw>Qxj0PyF-GB(oi2h(|LYNFz%R`rF|{z>a^hzpXjf zSa>T+R)TF&eQxf&DC00i(*XqMum3@3)XVhaWmv#j!MwRL!Rc#YT9F4i$N#7+*)?;r zUI)9so3GTcF?oOVd-mhUogHAEe&YWCK#N4XgWb05)bU$z28-f2pJXckvRHr)v#h~B zq8tU2jOaWF0pQH`fJWv8yI#YDf3h704gq4~{K#9J!Lxm*s--8L}e^ZGtquoRl{-{rf?Ib+qVxO zFfV`*fV{;LJl;1W%Cruro)24K-jEsg97#or!uxl+a)!w3)whToYOZ2OFY-uYnW{88 z@gQiD0*tT41yXET{IBP|rOZ}ZrV(W+UpboMn17bqq4y>M4 zADgT-9C6&f`F?HX6(=mm42VA&>JzShp%r@~w{R4}6lU<%(e^;0*Z;3qSmdgX z?kh`Zxp-k8_Me5JCuZX821&-F$$BmNU`A|>!S3JI2x?}=Jmiqf&f7YoWoUeeriR^ zq-a#}s0fTPL|p$x?EXu_PCWYwC~lgCn1%6ryq+V|3~nSGG0g<$w5!M2szaHzccPpv z1`~g}+jHaNVu$2E$Peq1=Xzv7ayyvZ8Xt6D{8E(WUjor-w5wMY;eXCdr2XsrGuNAa*cV5Bsm+Hdx9_a zt~`~`p3P9yc6w1axDoNV-KB3FghuOvIoJJ_cql{XJekVv+s$S#o(tqXvRf{qz_kpe zi!6AV8cs8KD}W#O5=)BQu_m{cF}ti_=OQwjJCDF-;O-{=lK8n}K!Aw2ZTwl&^$jKd zF;o-TZL1i2{RDBC?&;}i;F&=yjVI>eNz^3fjxkw8iTdi+5K$H*x`S3?96qLGseS@( zAvhbDGpgG=GNLFr*!fViN{21yTM7IC`&GGpnfq&ups(AD!zdO#k`}`bq##6VIC5VG*_<|_4JylSOO+9Ui6DWPczx3U_uKyhgUA;Q ZV-Q6Hc3PVVD=QtoeQV#cw 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 literal 0 HcmV?d00001 diff --git a/awx/ui/static/img/help/groups003.png b/awx/ui/static/img/help/groups003.png new file mode 100644 index 0000000000000000000000000000000000000000..c29bc66d372382a590a3b19f5a339b1a504d9610 GIT binary patch literal 11331 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 Il90gv2Z8bNF8}}l literal 0 HcmV?d00001 diff --git a/awx/ui/static/img/help/groups005.png b/awx/ui/static/img/help/groups005.png new file mode 100644 index 0000000000000000000000000000000000000000..805881f84b7fb9a340550bfa4113f55348b32594 GIT binary patch literal 8993 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 button to add a new group to the inventory.", + autoOffNotice: true, + height: 500 + }, + step2: { + img: { src: 'groups002.png', maxWidth: 443, maxHeight: 251 }, + box: "Provide a name, description and any variables.", + height: 460 + }, + step3: { + img: { src: 'groups003.png', maxWidth: 412, maxHeight: 215 }, + box: "If this a cloud inventory, choose a Source.", + height: 460 + }, + step4: { + img: { src: 'groups004.png', maxWidth: 261, maxHeight: 221 }, + box: "For a cloud inventory, start the sync process by clicking .", + height: 460 + }, + step5: { + intro: "Create subgroups by first clicking a group name to select it.", + img: { src: 'groups005.png', maxWidth: 430, maxHeight: 206 }, + box: "With a group selected, click the to create the new subgroup.", + height: 500 + }, + step6: { + intro: ' ', + img: { src: 'groups006.png', maxWidth: 263, maxHeight: 211 }, + box: "Copy or move a group by dragging and dropping the group name.", + height: 460 + } + } + } + }); diff --git a/awx/ui/static/js/help/InventorySummary.js b/awx/ui/static/js/help/InventorySummary.js deleted file mode 100644 index f7233a1b82..0000000000 --- a/awx/ui/static/js/help/InventorySummary.js +++ /dev/null @@ -1,29 +0,0 @@ -/********************************************* - * Copyright (c) 2014 AnsibleWorks, Inc. - * - * InventorySummary.js - * Help object for Inventory-> Groups page. - * - * @dict - */ -angular.module('InventorySummaryHelpDefinition', []) - .value( - 'InventorySummaryHelp', { - story: { - hdr: 'Building Your Inventory', - steps: { - step1: { - intro: 'Start by creating a group:', - img: { src: 'help002.png', maxWidth: 460 , maxHeight: 111 }, - box: "Click the Create New button and add a new group to the inventory.", - height: 400 - }, - step2: { - intro: 'After creating a group, add hosts:', - img: { src: 'help001.png', maxWidth: 467, maxHeight: 208 }, - box: "Navigate to Hosts using the drop-down menu, where you can add hosts to the new group", - height: 480 - } - } - } - }); \ No newline at end of file diff --git a/awx/ui/static/js/helpers/Groups.js b/awx/ui/static/js/helpers/Groups.js index 073620cd2d..e2480d8820 100644 --- a/awx/ui/static/js/helpers/Groups.js +++ b/awx/ui/static/js/helpers/Groups.js @@ -12,8 +12,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', 'GroupListDefinition', 'SearchHelper', 'PaginationHelpers', 'ListGenerator', 'AuthService', 'GroupsHelper', 'InventoryHelper', 'SelectionHelper', 'JobSubmissionHelper', 'RefreshHelper', - 'PromptDialog', 'InventorySummaryHelpDefinition', 'CredentialsListDefinition', - 'InventoryTree' + 'PromptDialog', 'CredentialsListDefinition','InventoryTree' ]) .factory('GetSourceTypeOptions', [ 'Rest', 'ProcessErrors', 'GetBasePath', function(Rest, ProcessErrors, GetBasePath) { @@ -391,7 +390,6 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', ' scope.searchCleanup(); } scope.formModalActionDisabled = false; - scope.showGroupHelp = false; //get rid of the Hint BuildTree({ scope: parent_scope, inventory_id: inventory_id, refresh: true, new_group_id: group_id }); WatchInventoryWindowResize(); } @@ -848,7 +846,6 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', ' } scope.formModalActionDisabled = false; - scope.showGroupHelp = false; //get rid of the Hint $('#form-modal').modal('hide'); @@ -892,7 +889,7 @@ angular.module('GroupsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', ' } data['source_regions'] = r.join(); - if (scope['source'].value == 'ec2') { + if (scope['source'] && scope['source'].value == 'ec2') { // for ec2, validate variable data try { if (scope.envParseType == 'json') { diff --git a/awx/ui/static/js/helpers/Hosts.js b/awx/ui/static/js/helpers/Hosts.js index e53ec26a24..8e6915fcc9 100644 --- a/awx/ui/static/js/helpers/Hosts.js +++ b/awx/ui/static/js/helpers/Hosts.js @@ -91,7 +91,7 @@ angular.module('HostsHelper', [ 'RestServices', 'Utilities', 'ListGenerator', 'H html += "\n"; html += "" + job.id + "\n"; html += "\n"; - html += "" + job.name + "\n"; + html += "" + "language_features/roletest.yml(limit:all:cloud)therealsuperlonglaskaname\n"; html += "\n"; } html += "\n"; diff --git a/awx/ui/static/js/helpers/inventory.js b/awx/ui/static/js/helpers/inventory.js index 7c0b446015..3658629866 100644 --- a/awx/ui/static/js/helpers/inventory.js +++ b/awx/ui/static/js/helpers/inventory.js @@ -19,6 +19,15 @@ angular.module('InventoryHelper', [ 'RestServices', 'Utilities', 'OrganizationLi $(window).resize(function() { clearTimeout(timeOut); timeOut = setTimeout(function() { + // Hack to stop group-name div slipping to a new line + $('#groups_table .name-column').each( function() { + var td_width = $(this).width(); + var level_width = $(this).find('.level').width(); + var level_padding = parseInt($(this).find('.level').css('padding-left').replace(/px/,'')); + var level = level_width + level_padding; + var pct = ( 100 - Math.ceil((level / td_width)*100) ) + '%'; + $(this).find('.group-name').css({ width: pct }); + }); ApplyEllipsis('#groups_table .group-name a'); ApplyEllipsis('#hosts_table .host-name a'); }, 100); diff --git a/awx/ui/static/js/lists/InventoryGroups.js b/awx/ui/static/js/lists/InventoryGroups.js index 79b8e9750f..c5a2c9e76f 100644 --- a/awx/ui/static/js/lists/InventoryGroups.js +++ b/awx/ui/static/js/lists/InventoryGroups.js @@ -1,9 +1,7 @@ /********************************************* * Copyright (c) 2014 AnsibleWorks, Inc. * - * InventorySummary.js - * - * Summary of groups contained within an inventory + * InventoryGroups.js * */ angular.module('InventoryGroupsDefinition', []) @@ -25,7 +23,7 @@ angular.module('InventoryGroupsDefinition', []) name: { label: 'Groups', key: true, - ngClick: "\{\{ 'showHosts(' + group.id + ',' + group.group_id + ', false)' \}\}", + ngClick: "showHosts(group.id,group.group_id, false)", ngClass: "group.selected_class", hasChildren: true, columnClass: 'col-lg-9 col-md-9 col-sm-7 col-xs-7', @@ -66,11 +64,8 @@ angular.module('InventoryGroupsDefinition', []) }, help: { mode: 'all', - awToolTip: - //"
" + - //"

Need help getting started creating your inventory?

Click here for help.

", - "

Need help getting started creating your inventory?

Click here for help.

", - ngClick: "showHelp()", + awToolTip: "Get help building your inventory", + ngClick: "showGroupHelp()", id: "inventory-summary-help" } }, @@ -128,4 +123,4 @@ angular.module('InventoryGroupsDefinition', []) } } }); - \ No newline at end of file + diff --git a/awx/ui/static/js/lists/InventoryHosts.js b/awx/ui/static/js/lists/InventoryHosts.js index c0f9ad40b0..0eeb7204b4 100644 --- a/awx/ui/static/js/lists/InventoryHosts.js +++ b/awx/ui/static/js/lists/InventoryHosts.js @@ -57,7 +57,6 @@ angular.module('InventoryHostsDefinition', []) fieldActions: { enabled_flag: { - //label: 'Enabled', iconClass: "{{ 'fa icon-enabled-' + host.enabled }}", dataPlacement: 'top', awToolTip: "{{ host.enabledToolTip }}", @@ -65,8 +64,6 @@ angular.module('InventoryHostsDefinition', []) ngClick: "toggleHostEnabled(host.id, host.has_inventory_sources)" }, active_failures: { - //label: 'Job Status', - //ngHref: "\{\{'/#/hosts/' + host.id + '/job_host_summaries/?inventory=' + inventory_id \}\}", awPopOver: "{{ host.job_status_html }}", dataTitle: "{{ host.job_status_title }}", awToolTip: "{{ host.badgeToolTip }}", @@ -105,15 +102,6 @@ angular.module('InventoryHostsDefinition', []) awToolTip: "View Activity Stream", mode: 'all', ngShow: "user_is_superuser" - }, - help: { - mode: 'all', - awToolTip: - //"
" + - //"

Need help getting started creating your inventory?

Click here for help.

", - "

Need help getting started creating your inventory?

Click here for help.

", - ngClick: "showHelp()", - id: "inventory-summary-help" } } diff --git a/awx/ui/static/less/ansible-ui.less b/awx/ui/static/less/ansible-ui.less index 2b729b0765..9c582cea07 100644 --- a/awx/ui/static/less/ansible-ui.less +++ b/awx/ui/static/less/ansible-ui.less @@ -71,7 +71,7 @@ body.modal-open { .group-name { display: inline-block; - width: 90%; + width: 85%; } a { @@ -223,6 +223,14 @@ hr { display: inline-block; } +.help-auto-off { + margin-top: 15px; + margin-bottom: 15px; + label { + font-weight: normal; + } +} + /* help collapse */ h4.panel-title { font-size: 14px; @@ -315,7 +323,7 @@ dd { } .break { - word-wrap: break-word; + word-break: break-all; } .login-alert { @@ -1059,16 +1067,17 @@ input[type="checkbox"].checkbox-no-label { cursor: default; } /* Padding levels used on job events and inventory groups */ - .level-1 { padding-left: 20px; } - .level-2 { padding-left: 40px; } - .level-3 { padding-left: 60px; } - .level-4 { padding-left: 80px; } - .level-5 { padding-left: 100px; } - .level-6 { padding-left: 120px; } - .level-7 { padding-left: 140px; } - .level-8 { padding-left: 160px; } - .level-9 { padding-left: 180px; } - .level-10 { padding-left: 200px; } + .level { display: inline-block; } + .level-1 { padding-left: 15px; } + .level-2 { padding-left: 30px; } + .level-3 { padding-left: 45px; } + .level-4 { padding-left: 60px; } + .level-5 { padding-left: 75px; } + .level-6 { padding-left: 90px; } + .level-7 { padding-left: 105px; } + .level-8 { padding-left: 120px; } + .level-9 { padding-left: 135px; } + .level-10 { padding-left: 150px; } .level-3-detail { padding-left: 80px; @@ -1344,7 +1353,7 @@ tr td button i { text-align: center; border: 1px solid @info-border; border-radius: 6px; - margin-top: 0; + margin-top: 10px; margin-bottom: 10px; padding: 10px; background-color: @info; @@ -1440,6 +1449,20 @@ tr td button i { } @media (min-width: 768px) and (max-width: 1199px) { + + .level-1, + .level-2, + .level-3, + .level-4, + .level-5, + .level-6, + .level-7, + .level-8, + .level-9, + .level-10, + .level-3-detail { + padding-left: 0; + } .list-actions button, .list-actions .checkbox-inline { margin-top: 10px; @@ -1465,6 +1488,13 @@ tr td button i { .level-1, .level-2, .level-3, + .level-4, + .level-5, + .level-6, + .level-7, + .level-8, + .level-9, + .level-10, .level-3-detail { padding-left: 0; } diff --git a/awx/ui/static/lib/ansible/InventoryTree.js b/awx/ui/static/lib/ansible/InventoryTree.js index bafdb5f01a..ac4b13e68b 100644 --- a/awx/ui/static/lib/ansible/InventoryTree.js +++ b/awx/ui/static/lib/ansible/InventoryTree.js @@ -136,6 +136,7 @@ angular.module('InventoryTree', ['Utilities', 'RestServices', 'GroupsHelper', 'P .success( function(data, status, headers, config) { buildAllHosts(data); buildGroups(data, 0, 0); + scope.autoShowGroupHelp = (data.length == 0) ? true : false; if (refresh) { scope.groups = groups; scope.$emit('GroupTreeRefreshed', inventory_name, groups, emit); diff --git a/awx/ui/static/lib/ansible/Utilities.js b/awx/ui/static/lib/ansible/Utilities.js index 4d4ba92c40..02849cad4f 100644 --- a/awx/ui/static/lib/ansible/Utilities.js +++ b/awx/ui/static/lib/ansible/Utilities.js @@ -243,7 +243,7 @@ angular.module('Utilities',['RestServices', 'Utilities']) } }]) - .factory('HelpDialog', ['$rootScope', '$location', function($rootScope, $location) { + .factory('HelpDialog', ['$rootScope', '$location', 'Store', function($rootScope, $location, Store) { return function(params) { // Display a help dialog // @@ -257,6 +257,7 @@ angular.module('Utilities',['RestServices', 'Utilities']) var defn = params.defn; var nxtStory = { story: { steps: { } } }; var width, height; + var autoShow = params.autoShow || false; function buildHtml(step) { var html = ''; @@ -270,6 +271,8 @@ angular.module('Utilities',['RestServices', 'Utilities']) html += ">"; } html += (step.box) ? "
" + step.box + "
" : ""; + html += (autoShow && step.autoOffNotice) ? "
\n" : ""; return html; } @@ -291,7 +294,7 @@ angular.module('Utilities',['RestServices', 'Utilities']) } nxtStory.story.hdr = defn.story.hdr; - nxtStep = function() { + var nxtStep = function() { showHelp({ defn: nxtStory }); } @@ -312,8 +315,9 @@ angular.module('Utilities',['RestServices', 'Utilities']) hide: 500, close: function() { $('#help-modal').empty(); } }); - $('.ui-dialog-buttonset button').addClass('btn btn-primary').focus(); - $('.ui-dialog-titlebar-close').empty().removeClass('close').removeClass('ui-dialog-titlebar-close').addClass('close').append('x'); + $('.ui-dialog-buttonset button').attr({ 'class': 'btn btn-primary' }); + $('.ui-dialog[aria-describedby="help-modal"]').find('.ui-dialog-titlebar button') + .empty().attr({ 'class': 'close' }).text('x'); } else { try { @@ -333,9 +337,19 @@ angular.module('Utilities',['RestServices', 'Utilities']) hide: 500, close: function() { $('#help-modal').empty(); } }); - $('.ui-dialog-buttonset button').addClass('btn btn-primary').focus(); - $('.ui-dialog-titlebar button').empty().removeClass('close').removeClass('ui-dialog-titlebar-close').addClass('close').append('x'); + $('.ui-dialog-buttonset button').attr({ 'class': 'btn btn-primary' }); + $('.ui-dialog[aria-describedby="help-modal"]').find('.ui-dialog-titlebar button') + .empty().attr({ 'class': 'close' }).text('x'); } + + $('#auto-off-checkbox').click(function() { + if ($('input[name="auto-off-checkbox"]:checked').length) { + Store('inventoryAutoHelp','off'); + } + else { + Store('inventoryAutoHelp','on'); + } + }); } showHelp(params); diff --git a/awx/ui/static/lib/ansible/generator-helpers.js b/awx/ui/static/lib/ansible/generator-helpers.js index 2253508c2a..d49331a8a3 100644 --- a/awx/ui/static/lib/ansible/generator-helpers.js +++ b/awx/ui/static/lib/ansible/generator-helpers.js @@ -471,8 +471,8 @@ angular.module('GeneratorHelpers', ['GeneratorHelpers']) // Add collapse/expand icon --used on job_events page if (list['hasChildren'] && field.hasChildren) { - html += " " + - " "; + html += ""; //ng-show=\"'\{\{ " + list.iterator + ".related.children \}\}' !== ''\" } @@ -548,9 +548,9 @@ angular.module('GeneratorHelpers', ['GeneratorHelpers']) html += field.text; } - if (list['hasChildren'] && field.hasChildren) { - html += ""; - } + //if (list['hasChildren'] && field.hasChildren) { + // html += ""; + //} // close the link if ( (field.key || field.link || field.linkTo || field.ngClick || field.ngHref ) diff --git a/awx/ui/templates/ui/index.html b/awx/ui/templates/ui/index.html index 43bdfc6ad6..4c4f2e18e9 100644 --- a/awx/ui/templates/ui/index.html +++ b/awx/ui/templates/ui/index.html @@ -122,7 +122,7 @@ - +