g_modal: クライアント
g_modal API を使用すると、モーダルウィンドウを表示してアプリケーションの機能を拡張できます。
この API を使用して、ワークスペースにモーダルを表示します。
- 入力タイプフィールドをモーダルウィンドウに表示します。
- UI ページや外部リンクなど、フレーム内に何かを表示します。
- ユーザーの確認時にアクションを実行します。
- コンポーネントをロードします。
- HTML を使用してモーダルのコンテンツを入力します。
g_modal:alert(文字列のタイトル、文字列のメッセージ、関数コールバック、スタイルオブジェクト)
UI アクションに関連するアラートメッセージを表示します。
| 名前 | タイプ | 説明 |
|---|---|---|
| title | 文字列 | オプション。モーダルのヘッダーに表示するタイトル。 デフォルト:アラート |
| メッセージ | 文字列 | モーダル本文に表示するメッセージ。 注:
パラメーターを 1 つだけ渡すと、メソッドはそれを message パラメーターとして扱います。 |
| コールバック | 関数 | オプション。フォームが送信され、サーバー上で処理された後に呼び出す関数。 コールバック関数の形式は callbackFunction(String action_verb, String sys_id, String table, String displayValue) です。
デフォルト:追加処理なし |
| style | オブジェクト | オプション。モーダルに表示する確認ボタンのスタイル。 |
| style.buttonTitle | 文字列 | オプション。確認ボタンに表示するテキスト。 デフォルト:OK |
| style.buttonType | 文字列 | オプション。表示する確認ボタンのタイプ。 デフォルト:default |
| タイプ | 説明 |
|---|---|
| Promise | callback パラメーターが渡された場合、成功した場合は promise を返し、それ以外の場合は error を返します。 callback パラメーターが渡されない場合、メソッドは常に success を返します。 |
次のコード例は、このメソッドを呼び出して「アサイン先のみがこのアクションを終了できます。」というアラートメッセージを表示する方法を示しています。
function onClick(g_form) {
if (g_user.userID != g_form.getValue('assigned_to')) {
g_modal.alert('Only the assigned to can end this action.');
return;
}
var msg = getMessage("Are you sure you want to take this action?");
g_modal.confirm(getMessage("Confirmation"), msg, function (confirmed) {
if (confirmed) {
g_form.setValue('state', 'closed_complete');
g_form.save();
}
});
return false;
}
g_modal - confirm(String title, String message, Function callback, style Object)
UI アクションに関連する確認メッセージを表示します。
| 名前 | タイプ | 説明 |
|---|---|---|
| title | 文字列 | オプション。モーダルのヘッダーに表示するタイトル。 デフォルト:確認 |
| メッセージ | 文字列 | モーダル本文に表示するメッセージ。 注:
パラメーターを 1 つだけ渡すと、メソッドはそれを message パラメーターとして扱います。 |
| コールバック | 関数 | オプション。フォームが送信され、サーバー上で処理された後に呼び出す関数。 コールバック関数の形式は callbackFunction(String action_verb, String sys_id, String table, String displayValue) です。
デフォルト:追加処理なし |
| style | オブジェクト | オプション。モーダルに表示する [確認] ボタンと [キャンセル] ボタンのスタイル。 |
| style.cancelTitle | 文字列 | オプション。キャンセルボタンに表示するテキスト。 デフォルト:キャンセル |
| style.cancelType | 文字列 | オプション。表示するキャンセルボタンのタイプ。 有効な値:
デフォルト:confirm |
| style.confirmTitle | 文字列 | オプション。[確認] ボタンに表示するテキスト。 デフォルト:OK |
| style.confirmType | 文字列 | オプション。表示する確認ボタンのタイプ。 有効な値:
デフォルト:default |
| タイプ | 説明 |
|---|---|
| Promise | callback パラメーターが渡された場合、成功した場合は promise を返し、それ以外の場合は error を返します。 callback パラメーターが渡されない場合、メソッドは常に success を返します。 |
次のコード例は、このメソッドを呼び出して、「このアクションを実行してもよろしいですか?」という確認メッセージを表示する方法を示しています。
function onClick(g_form) {
if (g_user.userID != g_form.getValue('assigned_to')) {
g_modal.alert('Only the assigned to can end this action.');
return;
}
var msg = getMessage("Are you sure you want to take this action?");
g_modal.confirm(getMessage("Confirmation"), msg, function (confirmed) {
if (confirmed) {
g_form.setValue('state', 'closed_complete');
g_form.save();
}
});
return false;
}
出力:
g_modal - confirmDestroy(String title, String message, Function callback, style Object)
UI アクションに関連する確認メッセージを表示し、[確認] ボタンには破棄スタイルが表示されます。
| 名前 | タイプ | 説明 |
|---|---|---|
| title | 文字列 | オプション。モーダルのヘッダーに表示するタイトル。 デフォルト:確認 |
| メッセージ | 文字列 | モーダル本文に表示するメッセージ。 注:
パラメーターを 1 つだけ渡すと、メソッドはそれを message パラメーターとして扱います。 |
| コールバック | 関数 | オプション。フォームが送信され、サーバー上で処理された後に呼び出す関数。 コールバック関数の形式は callbackFunction(String action_verb, String sys_id, String table, String displayValue) です。
デフォルト:追加処理なし |
| style | オブジェクト | オプション。モーダルに表示する [確認] ボタンと [キャンセル] ボタンのスタイル。 |
| style.cancelTitle | 文字列 | オプション。キャンセルボタンに表示するテキスト。 デフォルト:キャンセル |
| style.cancelType | 文字列 | オプション。表示するキャンセルボタンのタイプ。 有効な値:
デフォルト:confirm |
| style.confirmTitle | 文字列 | オプション。[確認] ボタンに表示するテキスト。 デフォルト:OK |
| style.confirmType | 文字列 | オプション。表示する確認ボタンのタイプ。 デフォルト:破棄 |
| タイプ | 説明 |
|---|---|
| Promise | callback パラメーターが渡された場合、成功した場合は promise を返し、それ以外の場合は error を返します。 callback パラメーターが渡されない場合、メソッドは常に success を返します。 |
このコード例は、 confirmDestroy() メソッドを呼び出して、赤い OK ボタンのある確認モーダルを表示する方法を示しています。
function callback(value){
value ? console.log("confirm destroy callback") : console.log('cancel callback');
}
function onClick(g_form) {
g_modal.confirmDestroy("Confirm Destroy Title", "Confirm Destroy Message", callback, {
cancelTitle: "Cancel",
confirmTitle: "Confirm",
cancelType: "destructive",
confirmType: "confirm"
})
.then(
function test() {
g_form.setValue("state', '7");
},
function fail() {
g_form.setValue("state", 2)
}
)
}
出力:
g_modal - richText(文字列 title, 文字列 richText, 関数コールバック, 文字列サイズ, 文字列 cancelTitle, 文字列 confirmTitle, 文字列 cancelType, 文字列 confirmType)
渡された HTML を使用してモーダル内にコンテンツを生成するモーダルを表示します。
| 名前 | タイプ | 説明 |
|---|---|---|
| title | 文字列 | オプション。モーダルのヘッダーに表示するタイトル。 デフォルト:空欄 |
| リッチテキスト | 文字列 | モーダルに表示する HTML コンテンツ。 注:
このメソッドは、セキュリティエクスプロイトを引き起こす可能性のある <![CDATA[<script>]]> タグ、インライン JavaScript、およびその他の要素を削除します。 |
| コールバック | 関数 | オプション。フォームが送信され、サーバー上で処理された後に呼び出す関数。 コールバック関数の形式は callbackFunction(String action_verb, String sys_id, String table, String displayValue) です。
デフォルト:追加処理なし |
| cancelTitle | 文字列 | オプション。キャンセルボタンに表示するテキスト。 デフォルト:キャンセル |
| confirmTitle | 文字列 | オプション。[確認] ボタンに表示するテキスト。 デフォルト:OK |
| キャンセルタイプ | 文字列 | オプション。表示するキャンセルボタンのタイプ。 有効な値:
デフォルト:confirm |
| confirmType | 文字列 | オプション。表示する確認ボタンのタイプ。 有効な値:
デフォルト:default |
| タイプ | 説明 |
|---|---|
| Promise | callback パラメーターが渡された場合、成功した場合は promise を返し、それ以外の場合は error を返します。 callback パラメーターが渡されない場合、メソッドは常に success を返します。 |
次のコード例は、関連するモーダルで「This is rich text」というテキストを太字で表示する方法を示しています。
function callback(value){
value ? console.log("confirm richtext callback") : console.log('cancel rich text callback');
}
function onClick(g_form) {
g_modal.richText("RichTextTitle", "<b>This is rich text</b>", callback, {
cancelTitle: "Rich Cancel",
confirmTitle: "Rich Confirm"
})
.then(
function test() {
g_form.setValue("state', '7");
},
function fail() {
g_form.setValue("state", 2)
}
)
}
出力:
g_modal - showFields(文字列 title, アレイフィールド, 関数コールバック, 文字列サイズ, 文字列 cancelTitle, 文字列 confirmTitle, 文字列 cancelType, 文字列 confirmType, 文字列命令)
デフォルトでは、指定したフィールドと [ OK ] および [キャンセル ] ボタンを含むモーダルウィンドウを表示します。
| 名前 | タイプ | 説明 |
|---|---|---|
| title | 文字列 | オプション。モーダルのヘッダーに表示するタイトル。 デフォルト:「 |
| フィールド | オブジェクトのアレイ | モーダルに表示するフィールドのリスト。各フィールドは個別のオブジェクトで定義されます。渡す fields パラメーターは、指定されたフィールドのタイプ (fields.type) によって異なります。 フィールドは、アレイに表示されるのと同じ順序でモーダルに表示されます。 |
| フィールド。autoFocus | ブール | オプション。モーダルのロード時にフィールドをデフォルトでオートフォーカスするかどうかを示すフラグ。この値を true に設定する必要があるのは 1 つのフィールドのみです。 有効な値:
デフォルト値:false |
| フィールド。選択肢 | オブジェクトのアレイ | fields.typeパラメーターが choice に設定されている場合は必須です。関連リストフィールドに表示するオプションのリスト。選択リスト内の各エントリは、 選択肢 アレイ内の個別のオブジェクトとして指定する必要があります。たとえば、次のようになります: |
| フィールド。選択肢。displayValue | 文字列 | オプション。リストフィールドに表示する値。 デフォルト:空欄 |
| fields.choices.value | 文字列 | オプション。リストフィールドに表示される値の内部値。 デフォルト値:null |
| フィールド。display_value_list | 文字列のアレイ | オプション。表示する文字列のリスト。例:['item1', 'item2', 'item3']。 |
| フィールド。メンションの有効化 | ブール | fields.typeが html の場合は必須です。モーダルでユーザーをメンションできるかどうかを示すフラグ。有効な値:
デフォルト値:false |
| fields.label | 文字列 | オプション。モーダルでこのフィールドのラベルとして表示するテキスト。 デフォルト:空欄 |
| フィールド。必須 | ブール | オプション。フィールドが必須かどうかを示すフラグ。 有効な値:
デフォルト値:false |
| フィールド。名前 | 文字列 | フィールドの内部名。fields.typeパラメーターが reference または glide_list に設定されている場合は、検索に使用されている現在のレコードの参照フィールドです。 |
| fields.referingTable | 文字列 | fields.typeパラメーターが reference または glide_list に設定されている場合は必須です。参照元のテーブルの名前。例: |
| フィールド。参照レコード ID | 文字列 | fields.typeパラメーターが reference に設定されている場合は必須です。UI アクションフォームで呼び出すレコードのSys_id。 |
| fields.type | 文字列 | モーダルに表示するフィールドのタイプ。 各フィールドタイプには、渡すことができる fields.<> 要素のセットがあります。以下の括弧 [ ] 内の値は、関連付けられたfieldsタイプでサポートされているfields要素です。 有効な値:
|
| fields.value | 文字列 | オプション。フィールドに表示する値。 たとえば、選択フィールドに対して、ユーザープロンプトを表示することができます。
または、参照フィールドの場合は、関連するフォームにフィールドの値を表示できます。
デフォルト:空欄 |
| コールバック | 関数 | オプション。フォームが送信され、サーバー上で処理された後に呼び出す関数。 コールバック関数の形式は callbackFunction(String action_verb, String sys_id, String table, String displayValue) です。
デフォルト:追加処理なし |
| サイズ | 文字列 | オプション。 モーダルのサイズ。 有効な値:
注: ピクセル値を指定すると、モーダルがブラウザー全体を占有します。たとえば、「1px」を渡すと、モーダルは全角になります。 デフォルト:sm |
| cancelTitle | 文字列 | オプション。キャンセルボタンに表示するテキスト。 デフォルト:キャンセル |
| confirmTitle | 文字列 | オプション。[確認] ボタンに表示するテキスト。 デフォルト:OK |
| キャンセルタイプ | 文字列 | オプション。表示するキャンセルボタンのタイプ。 有効な値:
デフォルト:confirm |
| confirmType | 文字列 | オプション。表示する確認ボタンのタイプ。 有効な値:
デフォルト:default |
| 指示 | 文字列 | オプション。モーダルに表示する指示。このコンテンツは、モーダルタイトルの下、モーダルの最初のフィールドの上に表示されます。 デフォルト:指示は表示されません |
| タイプ | 説明 |
|---|---|
| Promise | 成功した場合は promise を返し、それ以外の場合はエラーを返します。 |
次の例は、モーダルウィンドウを使用してユーザーに理由を尋ね、それをレコードの作業メモフィールドに戻す方法を示しています。then() メソッドは、モーダルが返すものを返す promise を返します。この場合は fieldValues です。クライアント側の作業メモフィールドは、フィールド値とともに updatedFields アレイにあります。返されるフィールドは 1 つだけなので、この例ではインデックス位置を 0 と仮定します。
function onClick(g_form) {
g_modal.showFields({
title: "Enter your reason",
fields: [{
type: 'textarea',
name: 'work_notes',
label: getMessage('Reason'),
mandatory: true
}],
size: 'lg'
}).then(function(fieldValues) {
g_form.setValue('work_notes', fieldValues.updatedFields[0].value);
g_form.save();
});
}
出力:
次の例は、上記の例を拡張して、選択肢フィールドと参照フィールドを追加します。
function onClick(g_form) {
var fields = [{
type: 'textarea',
name: 'work_notes',
label: getMessage('Reason'),
mandatory: true
},
{
type: 'choice',
name: 'reason_code',
label: getMessage('Reason code'),
value: getMessage(' -- Select -- '),
choices: [
{
displayValue: 'Duplicate',
value: 'duplicate'
},
{
displayValue: 'Canceled',
value: 'canceled'
}
],
mandatory: true
},
{
type: 'reference',
name: 'caller_id',
label: getMessage('What is your name?'),
mandatory: true,
reference: 'sys_user',
referringTable: 'incident',
referringRecordId: g_form.getUniqueValue(),
value: g_form.getValue('caller_id'),
displayValue: g_form.getDisplayValue('caller_id')
}
];
g_modal.showFields({
title: "Enter your reason",
fields: fields,
size: 'lg'
}).then(function(fieldValues) {
g_form.setValue('work_notes', fieldValues.updatedFields[0].value);
g_form.setValue('caller_id', fieldValues.updatedFields[2].value);
g_form.save();
});
}
出力:
次の例は、このメソッドを使用して、textarea、choices、reference、glide_list、および domain_id フィールドタイプを含むモーダルを表示する方法を示しています。
function onClick(g_form) {
var fields = [
{
type: 'textarea',
name: 'work_notes',
label: getMessage('Reason'),
mandatory: true
},
{
type: 'choice',
name: 'reason_code',
label: getMessage('Reason code'),
value: getMessage(' -- Select -- '),
choices: [
{
displayValue: 'Duplicate',
value: 'duplicate'
},
{
displayValue: 'Canceled',
value: 'canceled'
}
],
mandatory: true
},
{
type: 'reference',
name: 'caller_id',
label: getMessage('What is your name?'),
mandatory: true,
referringTable: 'incident',
referringRecordId: g_form.getUniqueValue(),
value: g_form.getValue('caller_id')
},
{
type: 'glide_list',
name: 'watch_list',
label: 'A list',
mandatory: false,
referringTable: 'incident',
referringRecordId: g_form.getUniqueValue(),
value: '628,9ee1,f298d',
display_value_list: ['item1', 'item2', 'item3']
},
{
label: 'Domain ID',
type: 'domain_id',
value: 'c90d4b084a362312013398f051272c0d',
displayValue: 'TOP/ACME',
referringRecordId: '552c48888c033300964f4932b03eb092',
referringTable: 'incident'
}
];
g_modal.showFields({
title: "Enter your reason",
fields: fields,
size: 'lg'
}).then(function(fieldValues) {
});
}
出力:
g_modal - showFrame(文字列 title, 文字列 url, 関数コールバック, 文字列サイズ, 文字列高さ, 文字列 modalHeight, 文字列 modalWidth, ブール値 showClose, 文字列 autoCloseOn, ブール値 hasLoadingMessage, ブール値 closeOnEscape, ブール値 hideOverlay)
コンテンツの外部 URL または UI ページへのリンクを使用するモーダルを表示します。
| 名前 | タイプ | 説明 |
|---|---|---|
| title | 文字列 | オプション。モーダルのヘッダーに表示するタイトル。 デフォルト:空欄 |
| URL | 文字列 | IFrame にロードする情報の URL。 注:
引数が 1 つだけ渡された場合は、 url パラメーターとして扱われます。 |
| コールバック | 関数 | オプション。フォームが送信され、サーバー上で処理された後に呼び出す関数。 コールバック関数の形式は callbackFunction(String action_verb, String sys_id, String table, String displayValue) です。
デフォルト:追加処理なし |
| サイズ | 文字列 | オプション。モーダルのサイズ。 有効な値:
デフォルト:lg |
| 高さ | 文字列 | オプション。モーダルのコンテンツセクションの高さ。この値は、「80%」や「300px」など、「<number><unit>」の形式です。数値のみを渡す場合、メソッドは測定単位をピクセルであると想定します。 有効な測定単位:
デフォルト:100% または 153.75px |
| モーダルの高さ | 文字列 | オプション。モーダルの高さ。この値は、「80%」や「300px」など、「<number><unit>」の形式です。数値のみを渡す場合、メソッドは測定単位をピクセルであると想定します。 有効な測定単位:
デフォルト:254px |
| モーダル幅 | 文字列 | オプション。モーダルの幅。この値は、「80%」や「300px」など、「<number><unit>」の形式です。数値のみを渡す場合、メソッドは測定単位をピクセルであると想定します。 有効な測定単位:
デフォルト:800px |
| showClose | ブール | オプション。閉じるアイコン (X) がモーダルの右上隅に表示されるかどうかを示すフラグ。 有効な値:
デフォルト:true |
| autoCloseOn | 文字列 | オプション。モーダルを自動的に閉じる条件。 有効な値:
デフォルト:モーダルは自動的に閉じません。 |
| hasLoadingMessage | ブール | オプション。モーダルコンテンツをロードする前に、モーダルのコンテンツスロットに「 ロード中... (Loading...) 」メッセージを表示するかどうかを示すフラグ。 有効な値:
注:
「ロード中...」をカスタマイズすることはできません。メッセージ;表示するかどうかのみを設定します。 デフォルト値:false |
| closeOnEscape | ブール | オプション。ユーザーが Esc キーを押してモーダルを閉じることができるかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| オーバーレイを非表示 | ブール | オプション。レコードページの上に透明なグレーのオーバーレイを表示するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| タイプ | 説明 |
|---|---|
| Promise | 成功した場合は promise を返し、それ以外の場合はエラーを返します。この Promise は、IFrame モーダルが閉じられると解決されます。 |
次の例は、KB 記事レコードのsys_idとベース URL を使用して、モデルに KB 記事を表示する方法を示しています。
function onClick(g_form) {
var kbId = '24d9243187032100deddb882a2e3ec33'; //sysId of KB article
g_modal.showFrame({
url: '/kb_view.do?sys_kb_id=' + kbId,
title: 'Test Knowledge Article',
size: 'lg',
height: 500px
});
}
出力:
この例では、モーダルを作成するときに埋め込み UI ページを使用する方法を示します。g_form API が iFrame にあるときは UI ページでアクセスできないため、UI ページで window.parent.postMessage() を使用して iFrame からワークスペースにデータを渡します。
function onClick(g_form) {
function proposeMIC(data) {
var workNotes = data.msg + "\n" + data.workNotes;
var notes = g_form.getValue('work_notes') + ' ' + workNotes;
var bi = g_form.getValue('business_impact') + ' ' + data.businessImpact;
g_form.setValue('work_notes', notes.trim());
g_form.setValue('business_impact', bi.trim());
g_form.submit('sysverb_mim_propose');
}
function openPopup() {
if(!g_form.getControl('work_notes')) {
getMessage('Cannot propose major incident as "Worknotes" is not visible', function(msg) {
g_form.addErrorMessage(msg);
});
return false;
}
var url = "/sn_major_inc_mgmt_mim_propose.do?sysparm_stack=no&sysparm_workspace=" + true;
g_modal.showFrame({
title: getMessage("Propose Major Incident"),
url: url,
size: 'lg',
autoCloseOn: 'URL_CHANGED',
callback: function (ret, data) {
if (ret)
proposeMIC(data);
}
});
}
openPopup();
}
出力: