NB. action_to_POST_method_jconsole.ijs
NB. 02_05_demo_number_list_reformat_with_table_title_option_added
NB. multiple numbers in the textarea will be reformatted. Select table column number, number of total digit including decimal point  and number of decimal digit. Reformatted result file save option available. Table title checkbox is available.

NB. action_to_POST_method_part1_jconsole start (encoding_code: UTF-8, 2023_09_14)

NB. クライアントからのフォーム入力送信による POST method に応答するHTTPレスポンスメッセージを用意する

NB. クライアントからのフォーム送信データに対する処理は大きく３つからなる 

NB. （１）最初にクライアントからの送信データを抽出する
NB. （２）そのデータを使って所望の J console 関数を実行し結果を得る
NB. （３）その結果をクライアントへ送信するための応答 HTTP メッセージを作成する

NB. この時、GET method に応答して送信したものと同じ HTMLフォームを含めて作成し
NB. クライントが継続して同じフォームを利用出来るようにする
NB. フォーム部品の初期値は、受信したクライアントの値に設定しなおす。
NB. 計算結果をフォーム部品に反映させる場合もある。

NB. ====================================================================================================
NB. 受信したメッセージからフォーム部品の値を抽出する関数
extract_POSTed_values =: 3 : 0
NB. この関数はserver_core_jconsole.ijsの中で呼ばれるので関数名を変更しないこと

NB.print 'フォーム部品から抽出した部品IDとその値の一覧'
print 'List of Child Form Control and its posted value'

NB. 全てのアプリケーションに共通のサーバー継続・停止リクエスト用ラジオボタン radio99
NB. が設置されており、それぞれのVALUEを抽出する

NB. extract_entryID_value_and_display 関数は support_tools_jconsole.ijsで定義されている

NB. action_to_POST_method_part_1_jconsole end
TEXTAREA_00_VALUE =: extract_entryID_value_and_display 'textarea00'
DROPDOWN_00_VALUE =: extract_entryID_value_and_display 'dropdown00'
CHECKLIST_00_VALUE =: extract_entryID_value_and_display 'checklist00'
CHECKLIST_01_VALUE =: extract_entryID_value_and_display 'checklist01'
TEXTBOX_00_VALUE =: extract_entryID_value_and_display 'textbox00'
TEXTBOX_01_VALUE =: extract_entryID_value_and_display 'textbox01'
CHECKBOX_00_VALUE =: extract_entryID_value_and_display 'checkbox00'
TEXTBOX_02_VALUE =: extract_entryID_value_and_display 'textbox02'
RADIO_00_VALUE =: extract_entryID_value_and_display 'radiobutton00'

NB. action_to_POST_method_part_2_jconsole start (encoding_code: UTF-8, 2023_09_14)

RADIO_99_VALUE    =: extract_entryID_value_and_display 'radio99'

NB. print 'フォーム部品から抽出した部品IDと値の一覧の終わり'
print 'End of Child Form Control and its posted value'

)

NB. ====================================================================================================
NB. 抽出した VALUE を使って所望の jconsole 関数を実行する
execute_your_job =: 3 : 0

initialize_response_image_bmp 0  NB. response_image.bmp must be initialized as 03x03_Orange.bmp
NB. in YOUR_JOB function user can revise response_image.bmp according to its result...

NB.print '設計ファイルで定義された YOUR_JOB を実行して戻り値ストリングを設定します。'
print 'execute YOUR_JOB defined in app plan file and assign return string'
RETURN_MSG =: YOUR_JOB 0 
1
NB. end of POSTed data processing
)

NB. ====================================================================================================
NB. 結果をクライアントへ返す HTTP レスポンスメッセージを作成する
prepare_http_response_message_to_POST_method =: 3 : 0

http_response_status_and_header_field =. prepare_http_response_status_and_header_field 0

NB. HTTPのボディをhtml form documentとして用意する

NB. MSG_FROM_SERVERには実行結果終了時に定義された RETURN_MSGを代入する。

MSG_FROM_SERVER =: RETURN_MSG

define_html_code_for_controls_based_on_plan_ijs 0

html_form_doc =. make_html_form_doc 0

NB. 完成した html_docのバイト数を数える
byteCount =. $ html_form_doc

NB. クライントへ送信するレスポンスhttpメッセージを完成させる
NB. HTTPプロトコル上、html_docの前に空行が必要
http_response_status_and_header_field, (":byteCount), CRLF, CRLF, html_form_doc
)

NB. End of file

NB. action_to_POST_method_part_2_jconsole end
monitor_entry_ID_values =: 3 : 0
a_collection =. 'form control values submitted from client is as follows', CRLF
a_collection =. a_collection, 'TEXTAREA_00_VALUE  = ', TEXTAREA_00_VALUE, CRLF
a_collection =. a_collection, 'DROPDOWN_00_VALUE  = ', DROPDOWN_00_VALUE, CRLF
a_collection =. a_collection, 'CHECKLIST_00_VALUE  = ', CHECKLIST_00_VALUE, CRLF
a_collection =. a_collection, 'CHECKLIST_01_VALUE  = ', CHECKLIST_01_VALUE, CRLF
a_collection =. a_collection, 'TEXTBOX_00_VALUE  = ', TEXTBOX_00_VALUE, CRLF
a_collection =. a_collection, 'TEXTBOX_01_VALUE  = ', TEXTBOX_01_VALUE, CRLF
a_collection =. a_collection, 'CHECKBOX_00_VALUE  = ', CHECKBOX_00_VALUE, CRLF
a_collection =. a_collection, 'TEXTBOX_02_VALUE  = ', TEXTBOX_02_VALUE, CRLF
a_collection =. a_collection, 'RADIO_00_VALUE  = ', RADIO_00_VALUE, CRLF
a_collection
)
