0

現在、Quickbase 内のガント チャート機能を使用して、現在の開発者のワークロードを強調しています。休暇を同じタスク レベルに配置するために、休暇のあるタスクを作成しています。2 つのバーを区別できるように、青いバーを紫色にするという未解決の要求があります。現在、HTML が追加された Calulated フィールドを作成しましたが、jquery を正しく動作させることができません。これが現時点で私たちが持っているものです。

If([Task Name]="Vacation","<script type=\"text/javascript\">$(document).ready(function() { $('#timeline img').attr('src',('https://images.quickbase.com/si/16/821-check_purple.png')); });</script>","")

これにより、現在の行の div 内の画像がスクリプト内の画像に置き換えられます。どんな助けでも素晴らしいでしょう

感謝

4

1 に答える 1

0

コードが機能しない原因となる問題がいくつかあるようです。まず、Quickbase の「計算フィールド」と「数式フィールド」を区別してみましょう。計算フィールドはレポート ビューで定義され (つまり、そのレポートでのみ表示され、他のレポートでは表示されません)、HTML は使用できません。一方、数式フィールドは従来のフィールドと同様に作成され、一部の HTML を許可するチェックボックスを選択できます。フォームまたはレポートで実行するコードを取得するには、数式フィールドを使用する必要があります。また、フィールドがレポートに表示されるようにする必要があります。そうしないと、コードが実行されません。

それが解決されると、Quickbase が許可される HTML タグを制限するため、おそらくスクリプトは実行されません。画像を変更する代わりに、スクリプトのテキストがフィールドに表示されるだけです。これは、スクリプトを要素のonloadタグに入れることで回避できます。これにより、適切に実行するIMG必要がなくなるという追加の効果が得られます。document.ready(function(){});

最後に、最後の問題はセレクターです。特定のレコードに関連付けられた数式フィールドを使用している場合でも、スクリプト自体はページ全体に対して実行されます。タスク名が「休暇」であるレコードの要素のみを選択するにはimg、行を区別する方法が必要です。幸いなことに、タイムライン レポートでは、各行divが "rid" + レコード ID の ID でラップされます。

したがって、これらをすべてまとめると、「フィールドに一部の HTML タグを挿入できるようにする」がチェックされた数式テキスト フィールドが作成され、数式は次のようになります。

If([Task Name]="Vacation", "<img qbu=\"module\" src=\"/i/clear2x2.gif\" onload=\"javascript:$('#rid" & [Record ID#] & " > td:has(div.timeline) > div.timeline > img').attr('src',('https://images.quickbase.com/si/16/821-check_purple.png'));\">", "")

上記の式を自分のタイムライン レポートでテストしたところ、期待どおりに機能しました。

編集:

ソースを編集するときに、Quickbase が間隔のために自動的に配置する clear2x2.gif 画像を除外するには:

If([Task Name]="Vacation", "<img qbu=\"module\" src=\"/i/clear2x2.gif\" onload=\"javascript:$('#rid" & [Record ID#] & " > td:has(div.timeline) > div.timeline > img:not([src^=&quot;/i/clear2x2.gif&quot;])').attr('src',('https://images.quickbase.com/si/16/821-check_purple.png'));\">", "")
于 2016-07-14T17:23:27.547 に答える