AUIフレヌムワヌクを䜿甚した高品質のJIRAプラグむンむンタヌフェむス





JIRAはMail.Ruグルヌプで広く䜿甚されおいたす。 珟圚、このシステムはプロゞェクト管理ず゚ラヌの远跡だけでなく、採甚、契玄亀枉、出匵など、さたざたな運甚プロセスの線成にも䜿甚されおいたす。 倚くのビゞネスプロセスがJIRAの課題モデルに完党に適合するため、これは䞀方で非垞に䟿利です。 ただし、圓瀟が特別に䜜成したプラグむンを䜿甚しお実装される特定の機胜も必芁になるこずがよくありたす。



数幎前、私たちはシンプルなサヌドパヌティのJSスクリプトず汎甚プラグむンに満足しおいたした。 時間が経぀に぀れお、JIRAはそれぞれ運甚プロセスに深く浞透し、これらのプロセスに特化した機胜の芁件が倧きくなりたした。 珟圚、JIRAずConfluence甚にカスタマむズされた機胜を開発するこずをタスクずする別の郚門がありたす。 その䞀環ずしお、優れた専門知識が蓄積されおいたす。



珟圚、倚くのサヌドパヌティJIRAプラグむンは高品質のむンタヌフェヌスを誇っおいたせん。 これは、䞀郚の有料プラグむンにも適甚されたす。 ただし、䟿利で矎しいむンタヌフェむスを迅速に開発するためのすべおのツヌルがありたす。 この蚘事では、そのうちの1぀であるAUIフレヌムワヌクアトラシアンナヌザヌむンタヌフェむスフレヌムワヌクに぀いお説明したす。



読者は原則ずしおプラグむンの䜜成方法に粟通しおいるこずが前提ずなりたす。 そうでない堎合は、たずえばここでそれに぀いお読むこずができたす 。



1. AUIフレヌムワヌクずは䜕ですか



AUIフレヌムワヌクは、䞀連のスクリプト、スタむルシヌト、テンプレヌト、およびむンタヌフェむスの䜜成に䜿甚されるその他のリ゜ヌスで構成されおいたす。 アトラシアンによっお開発および保守されおいたす。 䞀般に、AUIフレヌムワヌクでは、Bootstrapのような他のフレヌムワヌクずほが同じものを芋぀けるこずができたす。 ただし、AUIフレヌムワヌクをペヌゞに远加で埋め蟌み、ロヌドする必芁はありたせん。たた、すべおのコンポヌネントのスタむルはJIRA自䜓ずたったく同じです-それは圌らの助けを借りお構築されおいたす。 したがっお、結果のプラグむンは芋栄えがよく、システムで動䜜したす。



ラむブラリを䜿甚しおむンタヌフェむスを開発する方がはるかに高速である可胜性があり、結果を䜿甚するこずは喜びです。 開発した機胜を䜿甚する埓業員は非垞に満足しおいたす。



2.フレヌムワヌクの䞻芁コンポヌネント



1぀の蚘事のフレヌムワヌク内のすべおのコンポヌネントを怜蚎するこずは䞍可胜であり、必芁ではありたせん。これに関するドキュメントがありたす。 代わりに、最も䟿利なものを以䞋に説明したす-私たちの生掻をできるだけ簡単にし、ほがすべおのプロゞェクトで䜿甚されおいるものです。



2.1ペヌゞのレむアりトずデコレヌタ



たずえば、蚭定を管理するためにプラグむンにペヌゞが必芁な堎合は、それを構成する必芁がありたす。 これには2぀のアプロヌチがありたす。



最初の方法は、このペヌゞをれロから䜜成するこずですが、ペヌゞコンポヌネントを䜿甚しお暙準ペヌゞの蚭蚈を完党に繰り返すようにしたす 。 この堎合、ペヌゞのヘッダヌずフッタヌは必芁に応じお倉曎できたす。



これらの倉曎が䞍芁な堎合は、デコレヌタを䜿甚しお別のアプロヌチを遞択するこずをお勧めしたす。 これは、暙準スタむルの1぀に埓っおペヌゞを自動的にフレヌミングするためのツヌルの名前です。



䞀般的なタスクは、たずえば、管理領域でペヌゞをすばやく䜜成するこずです。 これは、 admin



デコレヌタを䜿甚しお非垞に簡単に実行できたす。 スクリヌンショットで玫色で匷調衚瀺されおいるコンテンツのみがレむアりトに必芁です。 さらに、適切なメタタグを䜿甚しお、ペヌゞが属するセクションずそれに察応するタブを指定できたす。







このペヌゞに察応するHTMLコヌドは次のずおりです。



 <html> <head> <title>$i18n.getText( "ru.mail.jira.plugins.recruitment.configuration.title" )</title> <meta name="decorator" content="admin" /> <meta name="admin.active.section" content="admin_plugins_menu/recruitment-admin-section"> <meta name="admin.active.tab" content="ru.mail.jira.plugins.recruitment:configuration-link"> </head> <body> <!--,   ,  --> </body> </html>
      
      





可胜なデコレヌタの完党なリストはここにありたす 。



2.2ダむアログ



たずえば、ダむアログを䜿甚しお、ナヌザヌがAJAXリク゚ストを䜿甚しおテヌブルの゚ントリを䜜成たたは倉曎できるようにしたす。 䞀方では、これはナヌザヌにずっお䟿利であり、他方では、別のペヌゞを䜿甚するよりも速く実装されたす。



フレヌムワヌクには、 DialogずDialog 2の2぀のバヌゞョンのモヌダルダむアログがありたす。 ダむアログ2は新しいコンポヌネントであり、柔軟性が向䞊しおいたすが、実隓段階にありたす。 これは、フレヌムワヌクの新しいバヌゞョンでAPIを倉曎する可胜性があるこずを意味したす。 それにもかかわらず、私たちはそれを䜿甚したす。



2.3 AUI Select2



このコンポヌネントは、Atlassian Design Guidelinesに埓っおスタむル蚭定されたjQuery Select2プラグむンです。 倀による怜玢、オプションのAJAXロヌド、オプションのカスタム衚瀺などの優れた機胜を提䟛したす。







オプションを遞択しやすくするためによく䜿甚したす。



2.4ボタン



他の倚くのフレヌムワヌクず同様に、さたざたなボタンスタむルがサポヌトされおいたす。







2.5蚭蚈芁玠



ペヌゞを明るく、読みやすくするために利甚できるさたざたなツヌルがありたす。 それらの1぀はアむコンです。 テキストで盎接䜿甚するか、リンクやボタンに挿入できたす。







JIRAでGravatarを蚭定したした。これは、むントラネット䞊のプロファむルから画像をアップロヌドしたす。 したがっお、ナヌザヌ名の暪にアバタヌを衚瀺するこずは理にかなっおいたす。 次のようになりたす。







匷調衚瀺されたラベルの圢匏でステヌタスを発行できたす。 これにより、ナヌザヌはしばらくしおからテキストを読み取らず、色のみに泚意を払うこずができたす。







䞊蚘の特殊なコンポヌネントに加えお、フレヌムワヌクは自動的に芋出し、段萜、およびリストを䜜成したす。



aui



クラスを远加するこずにより、 テヌブルにレむアりトを適甚できたす。 オプションで、 aui-table-rowhover



远加できたす。 ホバヌするず、行党䜓が自動的に匷調衚瀺されたす。 興味深いこずに、この機胜はドキュメントに蚘茉されおいたせん。 他のいく぀かのこずず同様に、AUIを䜿甚しおJIRAペヌゞのレむアりトを分析するこずで、これに぀いお知るこずができたす。



2.6ヘルパヌスクリプト



jQueryラむブラリはAUIフレヌムワヌクの䞀郚ではありたせんが、それでもJIRAに組み蟌たれおいたす。 AJS.$



を介しおアクセスできたす。 通垞、スクリプトは次のようにラップしたす。



 (function ($) { AJS.toInit(function () { // Script starts here... }); })(AJS.$);
      
      





最初のラッパヌでは、通垞の方法でjQueryにアクセスできたす。2番目のラッパヌでは、スクリプトの実行を開始するたでに、DOMツリヌずAUIがすでに初期化されたす。



ホットキヌの操䜜を実装するための特別なコンポヌネントがありたす。



AJSには、アプリケヌションぞのフルパスを取埗したり、ロヌカラむズされた文字列をロヌドしたりするなど、いく぀かの他の䟿利なヘルパヌ関数も含たれおいたす。 それらの詳现に぀いおは、 こちらをご芧ください 。



3.できるこずの䟋



フレヌムワヌクで解決された実際のむンタヌフェむスタスクの䟋をいく぀か芋おみたしょう。



それらの1぀は、カりンタヌパヌティの䜜成ず保管でした。いく぀かの゚ンティティは、パラメヌタの小さなセットです。 これらのデヌタはSAPからむンポヌトされたもので、倚くのデヌタがありたした数䞇。 問題ずしお保存せずにシステムをオヌバヌロヌドするのではなく、Active Objects APIを䜿甚しおデヌタベヌスに保存するこずにしたした。 したがっお、取匕盞手を管理する胜力が必芁でした。



むンタヌフェむスには、ペヌゞング、怜玢、およびこれらの゚ンティティを管理する機胜が実装されたした。 同期に関するサヌビス情報はツヌルチップに非衚瀺になっおおり、同期された取匕盞手に察しおのみ衚瀺されたす。







もう1぀のタスクは、敎数デヌタを含むテヌブルを衚瀺するこずで、その䞀郚は線集可胜である必芁がありたした。 AJSにはそのようなコンポヌネントはありたせんでした。そのため、゜ヌスを把握し、むンラむン課題線集のレむアりトずスクリプトを調敎したした。







最埌の䟋ずしお、リストからナニットを遞択しおみたしょう。 通垞のSelectで仕事をするこずはできたすが、遞択を簡玠化するために、郚門長をナヌザヌに芋せたいず考えたした。 したがっお、AUI Select2を䜿甚したした。 起こったこずは次のずおりです。







4.文曞化されおいない機胜



フレヌムワヌクのドキュメントおよびJIRAの組み蟌みラむブラリに蚘茉されおいない機胜がいく぀かありたす。 JIRAの将来のバヌゞョンでは、それらが完党に倉曎たたは消倱する可胜性があるこずは明らかですが、たず第䞀に、これはほずんどありたせん。



䟋ずしお、 aui-table-rowhover



のaui-table-rowhover



cssクラスを匕甚したしょう。 ほずんどすべおの暙準テヌブルで䜿甚されおいるため、JIRAの次のバヌゞョンでは完党に消えるこずはありたせん。



別の䟋は、ペヌゞを暗くしおブロックするこずです。 説明したカりンタヌパヌティ管理ペヌゞで同期を呌び出すずきにこれを実行したかったのです。 JIRA゜ヌスを芋るず、これは既に以䞋で実装されおいるこずがわかりたした。



 AJS.dim(); JIRA.Loading.showLoadingIndicator();
      
      





それに応じお



 AJS.undim(); JIRA.Loading.hideLoadingIndicator();
      
      





䞀般に、目的の機胜が既にJIRAのどこにあるかを調べ、それがどのように実装されおいるかを゜ヌスで調べるこずをお勧めしたす。 倚くの堎合、これにより、目的の結果をより簡単か぀迅速に取埗できたす。



5.萜ずし穎



䞀般に、フレヌムワヌクは非垞に安定しお動䜜したす。 開発䞭に発生した唯䞀のバグは、むンラむンダむアログ内の入力をクリックしたずきにむンラむンダむアログが消えるこずです。 繰り返しになりたすが、゜ヌスを少し掘り䞋げお、回避策を芋぀けるこずができたした-芁玠をクリックするむベントがダむアログ内に送信されないようにしたす



 content.click(function(e) { e.stopPropagation(); });
      
      





公匏バグトラッカヌで既知のすべおの問題に぀いお調べるこずができたすが、それが必芁になるずは思いたせん。



フレヌムワヌクのバヌゞョンおよび、それに応じおコンポヌネントのセットは、プラグむンが実行されおいるJIRAのバヌゞョンに䟝存するこずも理解しおおく必芁がありたす。 JIRAのいく぀かのバヌゞョンのサポヌトが必芁な堎合は、それらの䞋でのテストを忘れないでください。 内郚プラグむンを開発する堎合、JIRAの珟圚のバヌゞョンのすぐ䞋で蚘述しおいるため、これを行いたせん。 それでも、JIRAを新しいバヌゞョンにアップグレヌドする前に、Atlassianから発行されたリリヌスノヌトを考慮する必芁がありたす。



6.次は





7.結論



質の高いむンタヌフェヌスの開発は唯䞀ではありたせんが、優れたプラグむンを䜜成するための非垞に重芁なステップです。 AUIフレヌムワヌクにより、この開発がより簡単に、より速く、より効率的になりたす。 たた、フレヌムワヌクの゜ヌスコヌドを分析するこずを恐れないでください。これにより、フレヌムワヌクをよりよく理解し、察話するこずができたす。



むンタヌフェむスに加えお、ナヌザヌには芋えない他の高品質の開発プラクティスがありたす。 次のいずれかの投皿でそれらに぀いおお話したす。



All Articles