{"id":125757,"date":"2022-07-28T17:15:57","date_gmt":"2022-07-28T08:15:57","guid":{"rendered":"https:\/\/support.questetra.com\/tips\/task-form-decoration-202208\/"},"modified":"2025-01-27T12:59:45","modified_gmt":"2025-01-27T03:59:45","slug":"task-form-decoration-202208","status":"publish","type":"page","link":"https:\/\/support.questetra.com\/ja\/tips\/task-form-decoration-202208\/","title":{"rendered":"Task Form Decoration 202208"},"content":{"rendered":"\n<p class=\"has-text-align-center has-background wp-block-paragraph\" style=\"background-color:#ffff66\">Latest &#8220;Task Form Decorations&#8221;: <a href=\"https:\/\/support.questetra.com\/ja\/category\/deco-ja\/\">https:\/\/support.questetra.com\/category\/deco\/<\/a><br>\u6700\u65b0\u306e&#8221;\u51e6\u7406\u753b\u9762\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3&#8221;: <a href=\"https:\/\/support.questetra.com\/ja\/category\/deco-ja\/\">https:\/\/support.questetra.com\/ja\/category\/deco-ja\/<\/a><\/p>\n\n\n<div class=\"su-box su-box-style-soft\" id=\"\" style=\"border-color:#000000;border-radius:0px;max-width:none\"><div class=\"su-box-title\" style=\"background-color:#333333;color:#ffffff;border-top-left-radius:0px;border-top-right-radius:0px\">Task Form Decoration 202208 \/ \u51e6\u7406\u30d5\u30a9\u30fc\u30e0\u753b\u9762\uff08\u30bf\u30b9\u30afForm\uff09\u306e\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3 202208<\/div><div class=\"su-box-content su-u-clearfix su-u-trim\" style=\"border-bottom-left-radius:0px;border-bottom-right-radius:0px\">\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>UI\/UX design of the Task form<\/strong> determines the <strong>productivity<\/strong> of each process step. In particular, the &#8220;time required&#8221; and &#8220;error rate&#8221; for unskilled workers depend greatly on UI\/UX design. It is important to keep improving task forms from the viewpoint of on-site workers. The following form decoration examples (HTML JavaScript code) can be freely duplicated and used free of charge.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u30bf\u30b9\u30af\u51e6\u7406\u753b\u9762\uff08\u30bf\u30b9\u30afForm\uff09\u306eUI\/UX\u30c7\u30b6\u30a4\u30f3<\/strong>\u306f\u3001\u5404\u5de5\u7a0b\u306e<strong>\u751f\u7523\u6027\u3092\u5de6\u53f3<\/strong>\u3057\u307e\u3059\u3002\u7279\u306b\u672a\u7fd2\u719f\u8005\u306e\u300c\u6240\u8981\u6642\u9593\u300d\u3084\u300c\u30df\u30b9\u7387\u300d\u306f\u3001UI\/UX\u30c7\u30b6\u30a4\u30f3\u306b\u5927\u304d\u304f\u4f9d\u5b58\u3057\u307e\u3059\u3002\u73fe\u5834\u51e6\u7406\u8005\u306e\u8996\u70b9\u306b\u7acb\u3063\u3066\u3001\u51e6\u7406\u753b\u9762\uff08\u30bf\u30b9\u30af\u30d5\u30a9\u30fc\u30e0\uff09\u306e\u6539\u5584\u30b5\u30a4\u30af\u30eb\u3092\u56de\u3057\u7d9a\u3051\u308b\u3053\u3068\u304c\u91cd\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306eForm\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3\u4f8b\uff08HTML JavaScript \u30b3\u30fc\u30c9\uff09\u306f\u3001\u7121\u6599\u3067\u81ea\u7531\u306b\u8907\u88fd\u5229\u7528\u3057\u3066\u9802\u3051\u307e\u3059\u3002<\/p>\n\n\n<\/div><\/div>\n\n\n\t\t\t\t<div class=\"wp-block-uagb-table-of-contents uagb-toc__align-left uagb-toc__columns-1  uagb-block-6604752c      \"\n\t\t\t\t\tdata-scroll= \"1\"\n\t\t\t\t\tdata-offset= \"30\"\n\t\t\t\t\tstyle=\"\"\n\t\t\t\t>\n\t\t\t\t<div class=\"uagb-toc__wrap\">\n\t\t\t\t\t\t<div class=\"uagb-toc__title\">\n\t\t\t\t\t\t\tTable Of Contents\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"uagb-toc__list-wrap \">\n\t\t\t\t\t\t<ol class=\"uagb-toc__list\"><li class=\"uagb-toc__list\"><a href=\"#generate-password-with-click\" class=\"uagb-toc-link__trigger\">Generate Password with Click<\/a><li class=\"uagb-toc__list\"><a href=\"#overwrite-frequent-strings-using-button-attribute\" class=\"uagb-toc-link__trigger\">Overwrite Frequent Strings using Button Attribute<\/a><li class=\"uagb-toc__list\"><a href=\"#overwrite-frequent-strings-using-button-content\" class=\"uagb-toc-link__trigger\">Overwrite Frequent Strings using Button Content<\/a><li class=\"uagb-toc__list\"><a href=\"#overwrite-multiline-string-with-click\" class=\"uagb-toc-link__trigger\">Overwrite Multiline String with Click<\/a><li class=\"uagb-toc__list\"><a href=\"#append-frequent-strings-using-button-attribute\" class=\"uagb-toc-link__trigger\">Append Frequent Strings using Button Attribute<\/a><li class=\"uagb-toc__list\"><a href=\"#convert-to-katakana\" class=\"uagb-toc-link__trigger\">Convert to Katakana<\/a><li class=\"uagb-toc__list\"><a href=\"#convert-to-roman-letters\" class=\"uagb-toc-link__trigger\">Convert to Roman Letters<\/a><li class=\"uagb-toc__list\"><a href=\"#enter-number-using-numpad-buttons\" class=\"uagb-toc-link__trigger\">Enter Number using NumPad Buttons<\/a><li class=\"uagb-toc__list\"><a href=\"#set-geolocation-data\" class=\"uagb-toc-link__trigger\">Set Geolocation Data<\/a><li class=\"uagb-toc__list\"><a href=\"#check-geolocation-data\" class=\"uagb-toc-link__trigger\">Check Geolocation Data<\/a><li class=\"uagb-toc__list\"><a href=\"#confirm-selected-user\" class=\"uagb-toc-link__trigger\">Confirm Selected User<\/a><li class=\"uagb-toc__list\"><a href=\"#confirm-selected-value\" class=\"uagb-toc-link__trigger\">Confirm Selected Value<\/a><li class=\"uagb-toc__list\"><a href=\"#check-all-checkboxes\" class=\"uagb-toc-link__trigger\">Check All Checkboxes<\/a><li class=\"uagb-toc__list\"><a href=\"#increment-date-using-button\" class=\"uagb-toc-link__trigger\">Increment Date using +\/- Button<\/a><li class=\"uagb-toc__list\"><a href=\"#set-date-range-and-datetime\" class=\"uagb-toc-link__trigger\">Set Date Range and Datetime<\/a><li class=\"uagb-toc__list\"><a href=\"#calculate-working-hours\" class=\"uagb-toc-link__trigger\">Calculate Working Hours<\/a><li class=\"uagb-toc__list\"><a href=\"#copy-to-clipboard\" class=\"uagb-toc-link__trigger\">Copy to Clipboard<\/a><li class=\"uagb-toc__list\"><a href=\"#validate-with-regular-expressions\" class=\"uagb-toc-link__trigger\">Validate with Regular Expressions<\/a><li class=\"uagb-toc__list\"><a href=\"#show-process-detail\" class=\"uagb-toc-link__trigger\">Show Process Detail<\/a><li class=\"uagb-toc__list\"><a href=\"#extract-process-ids\" class=\"uagb-toc-link__trigger\">Extract Process IDs<\/a><li class=\"uagb-toc__list\"><a href=\"#validate-using-check-digit\" class=\"uagb-toc-link__trigger\">Validate using Check-Digit<\/a><li class=\"uagb-toc__list\"><a href=\"#generate-qr-code\" class=\"uagb-toc-link__trigger\">Generate QR Code<\/a><li class=\"uagb-toc__list\"><a href=\"#preview-html-code-in-new-window\" class=\"uagb-toc-link__trigger\">Preview HTML Code in New Window<\/a><li class=\"uagb-toc__list\"><a href=\"#extract-urls\" class=\"uagb-toc-link__trigger\">Extract URLs<\/a><li class=\"uagb-toc__list\"><a href=\"#export-text-as-utf8b-file\" class=\"uagb-toc-link__trigger\">Export Text as UTF8B-File<\/a><li class=\"uagb-toc__list\"><a href=\"#check-role-members-via-rest-api\" class=\"uagb-toc-link__trigger\">Check Role Members via REST API<\/a><li class=\"uagb-toc__list\"><a href=\"#check-form-history-via-rest-api\" class=\"uagb-toc-link__trigger\">Check Form History via REST API<\/a><li class=\"uagb-toc__list\"><a href=\"#copy-input-history-using-rest-api\" class=\"uagb-toc-link__trigger\">Copy Input-History using REST API<\/a><li class=\"uagb-toc__list\"><a href=\"#clip-to-browser-cookie\" class=\"uagb-toc-link__trigger\">Clip to Browser Cookie<\/a><li class=\"uagb-toc__list\"><a href=\"#clip-to-browser-storage\" class=\"uagb-toc-link__trigger\">Clip to Browser Storage<\/a><li class=\"uagb-toc__list\"><a href=\"#switch-between-edit-and-read-only\" class=\"uagb-toc-link__trigger\">Switch between Edit and Read-Only<\/a><\/ol>\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The workflow app administrator sets the decorations in the properties of each data item. Knowledge of HTML\/JavaScript is required. \uff0f \u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30a2\u30d7\u30ea\u306e\u7ba1\u7406\u8005\u306f\u3001\u5404\u30c7\u30fc\u30bf\u9805\u76ee\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u90e8\u5206\u306b\u3066\u8aac\u660e\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3\u3092\u8a2d\u5b9a\u3057\u307e\u3059\u3002HTML\/JavaScript \u306e\u77e5\u8b58\u304c\u5fc5\u8981\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-medium is-style-default\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/workflow-data-decoration-config.png?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"554\" height=\"315\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/workflow-data-decoration-config.png?resize=554%2C315&#038;ssl=1\" alt=\"Data modeling - Questetra BPM Suite\" class=\"wp-image-127643\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/workflow-data-decoration-config.png?resize=554%2C315&amp;ssl=1 554w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/workflow-data-decoration-config.png?resize=1024%2C582&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/workflow-data-decoration-config.png?resize=768%2C437&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/workflow-data-decoration-config.png?resize=1536%2C874&amp;ssl=1 1536w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/workflow-data-decoration-config.png?w=1767&amp;ssl=1 1767w\" sizes=\"auto, (max-width: 554px) 100vw, 554px\" \/><\/a><figcaption class=\"wp-element-caption\">Data modeling &#8211; Questetra BPM Suite<\/figcaption><\/figure>\n\n\n\n<ul class=\"wp-block-list has-small-font-size\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/questetra.zendesk.com\/hc\/en-us\/articles\/360002245252-M213-Guidance-Descriptions-on-the-Operating-Screen-HTML-JavaScript-\" target=\"_blank\">M213: Guidance Descriptions on the Operating Screen (HTML\/JavaScript)<\/a>\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/questetra.zendesk.com\/hc\/ja\/articles\/360002245252-M213\" target=\"_blank\">M213: \u51e6\u7406\u30d5\u30a9\u30fc\u30e0\u753b\u9762\u3092\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3\u3059\u308b\uff08HTML\/JavaScript\uff09<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/questetra.zendesk.com\/hc\/en-us\/articles\/360024615831-R2131\" target=\"_blank\">R2131: HTML Tags Available for Operation Form<\/a>\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/questetra.zendesk.com\/hc\/ja\/articles\/360024615831-R2131\" target=\"_blank\">R2131: \u51e6\u7406\u30d5\u30a9\u30fc\u30e0\u753b\u9762\u3067\u5229\u7528\u3067\u304d\u308b HTML \u30bf\u30b0<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/questetra.zendesk.com\/hc\/en-us\/articles\/4406943475097-R2132-Questetra-Form-JavaScript-API\" target=\"_blank\">R2132: Questetra Form JavaScript API<\/a> (en)\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/questetra.zendesk.com\/hc\/ja\/articles\/4406943475097-R2132\" target=\"_blank\">R2132: Questetra Form JavaScript API<\/a> (ja)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>MDN Web Docs: <a rel=\"noreferrer noopener\" href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Document\/querySelector\" target=\"_blank\">Document.querySelector()<\/a> (en)\n<ul class=\"wp-block-list\">\n<li>MDN Web Docs: <a href=\"https:\/\/developer.mozilla.org\/ja\/docs\/Web\/API\/Document\/querySelector\" target=\"_blank\" rel=\"noreferrer noopener\">Document.querySelector()<\/a> (ja)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Older examples\n<ul class=\"wp-block-list\">\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/support.questetra.com\/ja\/tips\/form-decoration-examples-api20211011\/\" target=\"_blank\">decoration 202110<\/a><\/li>\n\n\n\n<li><a rel=\"noreferrer noopener\" href=\"https:\/\/support.questetra.com\/ja\/tips\/form-decoration-examples\/\" target=\"_blank\">decoration 2020<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-small-font-size wp-block-paragraph\">The following code examples are written in &#8220;<code><strong>Questetra Form JavaScript API<\/strong><\/code>&#8221; and &#8220;<code><strong>W3C Selectors API<\/strong><\/code>&#8221; (vanilla JavaScript). If necessary, refer to each manual. Please note that the HTML tag <code>&lt;script&gt;<\/code> for decoration is only available in the Professional Edition. (C) Questetra, Inc. MIT License<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Generate Password with Click<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Generate-Password-with-Click-202209011.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"360\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Generate-Password-with-Click-202209011.gif?resize=1280%2C360&#038;ssl=1\" alt=\"&quot;Hello World&quot; for learning 'Questetra Form JavaScript API'. Add this code to the Description area of the string data item where you want the &quot;Generate Password&quot; button to appear.\n\u3053\u308c\u306f\u300cQuestetra Form JavaScript API\u300d\u3092\u5b66\u7fd2\u3059\u308b\u305f\u3081\u306e\u300cHello World\u300d\u3067\u3059\u3002\u3053\u306e\u30b3\u30fc\u30c9\u3092 &quot;\u30d1\u30b9\u30ef\u30fc\u30c9\u751f\u6210&quot; \u30dc\u30bf\u30f3\u3092\u8868\u793a\u3055\u305b\u305f\u3044\u9805\u76ee\u306e\uff3b\u8aac\u660e\uff3d\u90e8\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\" class=\"wp-image-127641\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/41\/0\/TZNgnkKgRtWaS2Z48CQ1btklNi5Ew7P1\/view\" target=\"_blank\" rel=\"noreferrer noopener\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2192 STRING (STRING_TEXTFIELD) <code>q_NewPassword<\/code> (update)<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Generate-Password-with-Click\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;script&gt;\n\/*\n== Generate Password with Click ==\n    &quot;Hello World&quot; for learning &#39;Questetra Form JavaScript API&#39;.\n    Add this code to the Description area of the string data item\n    where you want the &quot;Generate Password&quot; button to appear.\n\n    \u3053\u308c\u306f\u300cQuestetra Form JavaScript API\u300d\u3092\u5b66\u7fd2\u3059\u308b\u305f\u3081\u306e\u300cHello World\u300d\u3067\u3059\u3002\n    \u3053\u306e\u30b3\u30fc\u30c9\u3092 &quot;\u30d1\u30b9\u30ef\u30fc\u30c9\u751f\u6210&quot; \u30dc\u30bf\u30f3\u3092\u8868\u793a\u3055\u305b\u305f\u3044\u9805\u76ee\u306e\uff3b\u8aac\u660e\uff3d\u90e8\u306b\u8a2d\u5b9a\u3057\u307e\u3059\u3002\n*\/\n\nfunction user_overwriteRandomPasswordToQstr ( qStrFieldName ) {\n  const strNumeric = &quot;23456789&quot;;        const numNumeric = 2;\n  const strUpper   = &quot;ACFGHJKNRSUXYZ&quot;;  const numUpper   = 4;\n  const strLower   = &quot;acfghjknrsuxyz&quot;;  const numLower   = 4;\n  const strSymbol  = &quot;#$%&+-&quot;;          const numSymbol  = 2;\n\n  let strPwd = &quot;&quot;;\n  for( let i = 0; i &lt; numNumeric; i++ ){\n    strPwd  += strNumeric.charAt( Math.floor( Math.random() * strNumeric.length ) );\n  }\n  for( let i = 0; i &lt; numUpper; i++ ){\n    strPwd  += strUpper.charAt(   Math.floor( Math.random() * strUpper.length ) );\n  }\n  for( let i = 0; i &lt; numLower; i++ ){\n    strPwd  += strLower.charAt(   Math.floor( Math.random() * strLower.length ) );\n  }\n  for( let i = 0; i &lt; numSymbol; i++ ){\n    strPwd  += strSymbol.charAt(  Math.floor( Math.random() * strSymbol.length ) );\n  }\n\n  let arrPwd = strPwd.split(&quot;&quot;);\n  let j = arrPwd.length;\n  while ( j &gt; 1 ) {  \/\/ shuffle (Fisher-Yates)\n    let k = Math.floor( Math.random() * j );\n    j = j - 1;\n    if (j === k) continue;\n    let charTmp = arrPwd[j];\n    arrPwd[j]   = arrPwd[k];\n    arrPwd[k]   = charTmp;\n  }\n\n  qbpms.form.set( qStrFieldName, arrPwd.join(&quot;&quot;) ); \/\/ update the input form of Questetra\n}\n&lt;\/script&gt;\n\n&lt;button type=&quot;button&quot; \n onclick=&quot;user_overwriteRandomPasswordToQstr (\n            &#39;q_NewPassword&#39;\n          )&quot;&gt; Generate Password &lt;\/button&gt;\n\u3000\u203b Click to Overwrite \uff0f \u30af\u30ea\u30c3\u30af\u3067\u4e0a\u66f8\u304d<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Overwrite Frequent Strings using Button Attribute<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Overwrite-Frequent-Strings-using-Button-Attribute-20220726.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"481\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Overwrite-Frequent-Strings-using-Button-Attribute-20220726.gif?resize=1280%2C481&#038;ssl=1\" alt=\"\" class=\"wp-image-125565\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2192 STRING (STRING_TEXTFIELD): <strong><em><code>q_Departure<\/code><\/em> <\/strong>(update)<\/li>\n\n\n\n<li>\u2192 STRING (STRING_TEXTFIELD): <strong><em><code>q_Arrival<\/code><\/em> <\/strong>(update)<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Overwrite-Frequent-Strings-using-Button-Attribute\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>Click to overwrite: &lt;br&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Departure&quot;, &quot;NRT&quot; )&#39;&gt;\n NRT: Narita \u6210\u7530\u56fd\u969b\u7a7a\u6e2f \uff08\u65b0\u6771\u4eac\uff09&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Departure&quot;, &quot;HND&quot; )&#39;&gt;\n HND: Haneda \u6771\u4eac\u56fd\u969b\u7a7a\u6e2f \u7fbd\u7530&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Departure&quot;, &quot;KIX&quot; )&#39;&gt;\n KIX: Kansai \u95a2\u897f\u56fd\u969b\u7a7a\u6e2f \u5927\u962a&lt;\/button&gt;&lt;br&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Departure&quot;, &quot;LAX&quot; )&#39;&gt;\n LAX: Los Angeles \u30ed\u30b5\u30f3\u30bc\u30eb\u30b9\u56fd\u969b\u7a7a\u6e2f&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Departure&quot;, &quot;ORD&quot; )&#39;&gt;\n ORD: Chicago O&#39;Hare \u30b7\u30ab\u30b4\u30fb\u30aa\u30d8\u30a2&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Departure&quot;, &quot;ATL&quot; )&#39;&gt;\n ATL: Hartsfield-Jackson Atlanta \u30cf\u30fc\u30c4\u30d5\u30a3\u30fc\u30eb\u30c9\u30fb\u30b8\u30e3\u30af\u30bd\u30f3\u30fb\u30a2\u30c8\u30e9\u30f3\u30bf&lt;\/button&gt;&lt;br&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Departure&quot;, &quot;LHR&quot; )&#39;&gt;\n LHR: Heathrow \u30ed\u30f3\u30c9\u30f3\u30fb\u30d2\u30fc\u30b9\u30ed\u30fc&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Departure&quot;, &quot;FRA&quot; )&#39;&gt;\n FRA: Flughafen Frankfurt \u30d5\u30e9\u30f3\u30af\u30d5\u30eb\u30c8&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Departure&quot;, &quot;CDG&quot; )&#39;&gt;\n CDG: Aeroport de Paris-Charles-de-Gaulle \u30d1\u30ea\uff1d\u30b7\u30e3\u30eb\u30eb\u30fb\u30c9\u30fb\u30b4\u30fc\u30eb&lt;\/button&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Overwrite-Frequent-Strings-using-Button-Attribute2\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>Click to overwrite: &lt;br&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Arrival&quot;, &quot;LAX&quot; )&#39;&gt;\n LAX: Los Angeles \u30ed\u30b5\u30f3\u30bc\u30eb\u30b9\u56fd\u969b\u7a7a\u6e2f&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Arrival&quot;, &quot;ORD&quot; )&#39;&gt;\n ORD: Chicago O&#39;Hare \u30b7\u30ab\u30b4\u30fb\u30aa\u30d8\u30a2&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Arrival&quot;, &quot;ATL&quot; )&#39;&gt;\n ATL: Hartsfield-Jackson Atlanta \u30cf\u30fc\u30c4\u30d5\u30a3\u30fc\u30eb\u30c9\u30fb\u30b8\u30e3\u30af\u30bd\u30f3\u30fb\u30a2\u30c8\u30e9\u30f3\u30bf&lt;\/button&gt;&lt;br&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Arrival&quot;, &quot;LHR&quot; )&#39;&gt;\n LHR: Heathrow \u30ed\u30f3\u30c9\u30f3\u30fb\u30d2\u30fc\u30b9\u30ed\u30fc&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Arrival&quot;, &quot;FRA&quot; )&#39;&gt;\n FRA: Flughafen Frankfurt \u30d5\u30e9\u30f3\u30af\u30d5\u30eb\u30c8&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Arrival&quot;, &quot;CDG&quot; )&#39;&gt;\n CDG: Aeroport de Paris-Charles-de-Gaulle \u30d1\u30ea\uff1d\u30b7\u30e3\u30eb\u30eb\u30fb\u30c9\u30fb\u30b4\u30fc\u30eb&lt;\/button&gt;&lt;br&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Arrival&quot;, &quot;NRT&quot; )&#39;&gt;\n NRT: Narita \u6210\u7530\u56fd\u969b\u7a7a\u6e2f \uff08\u65b0\u6771\u4eac\uff09&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Arrival&quot;, &quot;HND&quot; )&#39;&gt;\n HND: Haneda \u6771\u4eac\u56fd\u969b\u7a7a\u6e2f \u7fbd\u7530&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Arrival&quot;, &quot;KIX&quot; )&#39;&gt;\n KIX: Kansai \u95a2\u897f\u56fd\u969b\u7a7a\u6e2f \u5927\u962a&lt;\/button&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">If to overwrite the process title, write &#8220;<code>Title<\/code>&#8221; instead of &#8220;<code>q_Departure<\/code>&#8220;. \uff0f \u30d7\u30ed\u30bb\u30b9\u4ef6\u540d\u3092\u4e0a\u66f8\u304d\u3057\u305f\u3044\u5834\u5408\u3001 &#8220;<code>q_Departure<\/code>&#8221; \u306e\u4ee3\u308f\u308a\u306b &#8220;<code>Title<\/code>&#8221; \u3068\u66f8\u304d\u307e\u3059\u3002<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Overwrite Frequent Strings using Button Content<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Overwrite-Frequent-Strings-using-Button-Content-20220726.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"200\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Overwrite-Frequent-Strings-using-Button-Content-20220726.gif?resize=1280%2C200&#038;ssl=1\" alt=\"Overwrite Frequent Strings using Button Content\" class=\"wp-image-125578\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2192 STRING (STRING_TEXTFIELD): <strong><em><code>q_AccountTitle<\/code> <\/em><\/strong>(update)<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Overwrite-Frequent-Strings-using-Button-Content\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\uff08\u4e0d\u660e\uff09&lt;\/button&gt; ((not clear))\n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u5e83\u544a\u5ba3\u4f1d\u8cbb&lt;\/button&gt; (Advertising) &lt;br&gt;\n&lt;strong&gt;Other Marketing & Admin.&lt;\/strong&gt;: \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u65c5\u8cbb\u4ea4\u901a\u8cbb&lt;\/button&gt; (Traveling) \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u4f1a\u8b70\u8cbb&lt;\/button&gt; (Conference) \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u5099\u54c1\u30fb\u6d88\u8017\u54c1\u8cbb&lt;\/button&gt; (Supplies) \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u79df\u7a0e\u516c\u8ab2&lt;\/button&gt; (Taxes&Dues) \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u901a\u4fe1\u8cbb&lt;\/button&gt; (Communication)&lt;br&gt; \n&lt;strong&gt;Manufacturing costs&lt;\/strong&gt;: \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u65c5\u8cbb\u4ea4\u901a\u8cbb(\u88fd)&lt;\/button&gt; (Traveling) \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u4f1a\u8b70\u8cbb(\u88fd)&lt;\/button&gt; (Conference) \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u5099\u54c1\u30fb\u6d88\u8017\u54c1\u8cbb(\u88fd)&lt;\/button&gt; (Supplies) \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u79df\u7a0e\u516c\u8ab2(\u88fd)&lt;\/button&gt; (Taxes&Dues) \n&lt;button type=&#39;button&#39; class=&#39;user_AccountName&#39;&gt;\u901a\u4fe1\u8cbb(\u88fd)&lt;\/button&gt; (Communication) \n&lt;script&gt;\ndocument.querySelectorAll(&#39;.user_AccountName&#39;).forEach( btn =&gt; {\n  btn.addEventListener(&#39;click&#39;, () =&gt; {\n    const strClicked  = btn.textContent;\n    qbpms.form.set( &quot;q_AccountTitle&quot;, strClicked );\n  });\n});\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Overwrite Multiline String with Click<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Overwrite-Multiline-String-with-Click-202209014.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"360\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Overwrite-Multiline-String-with-Click-202209014.gif?resize=1280%2C360&#038;ssl=1\" alt=\"Overwrite Multiline String with Click - Questetra Form JavaScript API\" class=\"wp-image-127695\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/43\/0\/88BeheHr1KUlVxvs8yQtDFEXuvEm8uO0\/view\" target=\"_blank\" rel=\"noreferrer noopener\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2192 STRING (STRING_TEXTAREA) <code>q_EmailBody<\/code> (update)<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Overwrite-Multiline-String-with-Click\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_EmailBody&quot;,\n`Dear Questetra BPM Suite Administrator,\n\nSincerely,\nThe Questetra BPM Suite Operations Team\nhttps:\/\/support.questetra.com\/`\n)&#39;&gt;English Template&lt;\/button&gt;\n\n\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_EmailBody&quot;,\n`Questetra BPM Suite \u30b7\u30b9\u30c6\u30e0\u7ba1\u7406\u8005\u69d8\n\n--\n\u682a\u5f0f\u4f1a\u793e\u30af\u30a8\u30b9\u30c6\u30c8\u30e9 \/ Questetra, Inc.\nhttps:\/\/support.questetra.com\/ja\/`\n)&#39;&gt;\u65e5\u672c\u8a9e\u30c6\u30f3\u30d7\u30ec&lt;\/button&gt;\n\n\n\u3000\u203b Click to Overwrite \uff0f \u30af\u30ea\u30c3\u30af\u3067\u4e0a\u66f8\u304d<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Append Frequent Strings using Button Attribute<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Append-Frequent-String-using-Button-20220726.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"200\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Append-Frequent-String-using-Button-20220726.gif?resize=1280%2C200&#038;ssl=1\" alt=\"Append Frequent String using Button Attribute\" class=\"wp-image-125583\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u21c6 STRING (STRING_TEXTFIELD): <em><strong><code>q_Email<\/code> <\/strong><\/em>(append)<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Append-Frequent-String-using-Button\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>Click to append:\n&lt;button type=&#39;button&#39; onclick=&#39;user_appendQStr(&quot;q_Email&quot;, &quot;@questetra.com&quot;)&#39;&gt;@questetra.com&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;user_appendQStr(&quot;q_Email&quot;, &quot;@gmail.com&quot;)&#39;&gt;@gmail.com&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;user_appendQStr(&quot;q_Email&quot;, &quot;@outlook.com&quot;)&#39;&gt;@outlook.com&lt;\/button&gt;\n&lt;script&gt;\nfunction user_appendQStr( qfieldName, strArg ){        \/\/ Input Output same field\n  let strOriginal = &quot;&quot;;\n  if( qbpms.form.get( qfieldName ) !== null ){\n      strOriginal = qbpms.form.get( qfieldName );\n  }\n  qbpms.form.set( qfieldName, (strOriginal + strArg) );\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Convert to Katakana<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Convert-to-Katakana-20220829.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"360\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Convert-to-Katakana-20220829.gif?resize=1280%2C360&#038;ssl=1\" alt=\"Convert to Katakana in javascript \uff08\u30ab\u30bf\u30ab\u30ca\u5909\u63db\uff09\n\u5168\u89d2\u3072\u3089\u304c\u306a\u304b\u3089\u5168\u89d2\u30ab\u30bf\u30ab\u30ca\u3078\n\u534a\u89d2\u30ab\u30bf\u30ab\u30ca\u304b\u3089\u5168\u89d2\u30ab\u30bf\u30ab\u30ca\u3078\" class=\"wp-image-126809\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/36\/1\/crSl5YnnWw1paiyYepOyGntuwjNmLZkR\/view\" target=\"_Blank\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u21c6 STRING (STRING_TEXTFIELD): <code>q_SurnameKatakana<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Convert-to-Katakana\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button onclick=&#39;user_qStrStrCopyWithConvertHiraKata( &quot;q_SurnameKatakana&quot;, &quot;q_SurnameKatakana&quot; );&#39;\n type=&#39;button&#39;&gt;\u304b\u306a\u21d2\u30ab\u30ca&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertHalfFull( &quot;q_SurnameKatakana&quot;, &quot;q_SurnameKatakana&quot; );&#39;\n type=&#39;button&#39;&gt;\u534a\uff76\uff85\u21d2\u30ab\u30ca&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertKataHira( &quot;q_SurnameKatakana&quot;, &quot;q_SurnameKatakana&quot; );&#39;\n type=&#39;button&#39;&gt;\uff08\u30ab\u30ca\u21d2\u304b\u306a\uff09&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertFullHalf( &quot;q_SurnameKatakana&quot;, &quot;q_SurnameKatakana&quot; );&#39;\n type=&#39;button&#39;&gt;\uff08\u30ab\u30ca\u21d2\u534a\uff76\uff85\uff09&lt;\/button&gt;\n\n&lt;script&gt;\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0b\u3072\u3089\u30ab\u30bf\u5909\u63db\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertHiraKata( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceHiragana2Katakana( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0b\u30ab\u30bf\u3072\u3089\u5909\u63db\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertKataHira( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceKatakana2Hiragana( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0b\u5168\u89d2\u5909\u63db\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertHalfFull( qStrFieldInput, qStrFieldOutput ){\n  let strInput = qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceHalf2Full( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0b\u534a\u89d2\u5909\u63db\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertFullHalf( qStrFieldInput, qStrFieldOutput ){\n  let strInput = qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceFull2Half( strInput ) );\n}\n\n\n\/\/\u25bc \u30ab\u30ca\u5909\u63db\uff08\u3072\u3089\u304c\u306a \u304b\u3089 \u30ab\u30bf\u30ab\u30ca \u3078\u306e\u5909\u63db\uff09 \u25bc\nfunction user_strReplaceHiragana2Katakana( str ){\n  return str.replace( \/[\\u3041-\\u3096]\/g, function(s){\n    return String.fromCharCode( s.charCodeAt(0) + 0x60 );\n  });\n}\n\/\/\u25bc \u3072\u3089\u5909\u63db\uff08\u30ab\u30bf\u30ab\u30ca \u304b\u3089 \u3072\u3089\u304c\u306a \u3078\u306e\u5909\u63db\uff09 \u25bc\nfunction user_strReplaceKatakana2Hiragana( str ){\n  return str.replace( \/[\\u30a1-\\u30f6]\/g, function(s){\n    return String.fromCharCode( s.charCodeAt(0) - 0x60 );\n  });\n}\n\/\/\u25bc \u534a\u89d2(\uff76\uff80\uff76\uff85) \u304b\u3089 \u5168\u89d2\uff08\u30ab\u30bf\u30ab\u30ca\uff09 \u3078\u306e\u5909\u63db \u25bc\nfunction user_strReplaceHalf2Full( str ){\n  const objHalf2Full = {\n    &#39;\uff76\uff9e&#39;: &#39;\u30ac&#39;, &#39;\uff77\uff9e&#39;: &#39;\u30ae&#39;, &#39;\uff78\uff9e&#39;: &#39;\u30b0&#39;, &#39;\uff79\uff9e&#39;: &#39;\u30b2&#39;, &#39;\uff7a\uff9e&#39;: &#39;\u30b4&#39;,\n    &#39;\uff7b\uff9e&#39;: &#39;\u30b6&#39;, &#39;\uff7c\uff9e&#39;: &#39;\u30b8&#39;, &#39;\uff7d\uff9e&#39;: &#39;\u30ba&#39;, &#39;\uff7e\uff9e&#39;: &#39;\u30bc&#39;, &#39;\uff7f\uff9e&#39;: &#39;\u30be&#39;,\n    &#39;\uff80\uff9e&#39;: &#39;\u30c0&#39;, &#39;\uff81\uff9e&#39;: &#39;\u30c2&#39;, &#39;\uff82\uff9e&#39;: &#39;\u30c5&#39;, &#39;\uff83\uff9e&#39;: &#39;\u30c7&#39;, &#39;\uff84\uff9e&#39;: &#39;\u30c9&#39;,\n    &#39;\uff8a\uff9e&#39;: &#39;\u30d0&#39;, &#39;\uff8b\uff9e&#39;: &#39;\u30d3&#39;, &#39;\uff8c\uff9e&#39;: &#39;\u30d6&#39;, &#39;\uff8d\uff9e&#39;: &#39;\u30d9&#39;, &#39;\uff8e\uff9e&#39;: &#39;\u30dc&#39;,\n    &#39;\uff8a\uff9f&#39;: &#39;\u30d1&#39;, &#39;\uff8b\uff9f&#39;: &#39;\u30d4&#39;, &#39;\uff8c\uff9f&#39;: &#39;\u30d7&#39;, &#39;\uff8d\uff9f&#39;: &#39;\u30da&#39;, &#39;\uff8e\uff9f&#39;: &#39;\u30dd&#39;, &#39;\uff73\uff9e&#39;: &#39;\u30f4&#39;,\n    &#39;\uff71&#39;: &#39;\u30a2&#39;, &#39;\uff72&#39;: &#39;\u30a4&#39;, &#39;\uff73&#39;: &#39;\u30a6&#39;, &#39;\uff74&#39;: &#39;\u30a8&#39;, &#39;\uff75&#39;: &#39;\u30aa&#39;,\n    &#39;\uff76&#39;: &#39;\u30ab&#39;, &#39;\uff77&#39;: &#39;\u30ad&#39;, &#39;\uff78&#39;: &#39;\u30af&#39;, &#39;\uff79&#39;: &#39;\u30b1&#39;, &#39;\uff7a&#39;: &#39;\u30b3&#39;,\n    &#39;\uff7b&#39;: &#39;\u30b5&#39;, &#39;\uff7c&#39;: &#39;\u30b7&#39;, &#39;\uff7d&#39;: &#39;\u30b9&#39;, &#39;\uff7e&#39;: &#39;\u30bb&#39;, &#39;\uff7f&#39;: &#39;\u30bd&#39;,\n    &#39;\uff80&#39;: &#39;\u30bf&#39;, &#39;\uff81&#39;: &#39;\u30c1&#39;, &#39;\uff82&#39;: &#39;\u30c4&#39;, &#39;\uff83&#39;: &#39;\u30c6&#39;, &#39;\uff84&#39;: &#39;\u30c8&#39;,\n    &#39;\uff85&#39;: &#39;\u30ca&#39;, &#39;\uff86&#39;: &#39;\u30cb&#39;, &#39;\uff87&#39;: &#39;\u30cc&#39;, &#39;\uff88&#39;: &#39;\u30cd&#39;, &#39;\uff89&#39;: &#39;\u30ce&#39;,\n    &#39;\uff8a&#39;: &#39;\u30cf&#39;, &#39;\uff8b&#39;: &#39;\u30d2&#39;, &#39;\uff8c&#39;: &#39;\u30d5&#39;, &#39;\uff8d&#39;: &#39;\u30d8&#39;, &#39;\uff8e&#39;: &#39;\u30db&#39;,\n    &#39;\uff8f&#39;: &#39;\u30de&#39;, &#39;\uff90&#39;: &#39;\u30df&#39;, &#39;\uff91&#39;: &#39;\u30e0&#39;, &#39;\uff92&#39;: &#39;\u30e1&#39;, &#39;\uff93&#39;: &#39;\u30e2&#39;,\n    &#39;\uff94&#39;: &#39;\u30e4&#39;, &#39;\uff95&#39;: &#39;\u30e6&#39;, &#39;\uff96&#39;: &#39;\u30e8&#39;,\n    &#39;\uff97&#39;: &#39;\u30e9&#39;, &#39;\uff98&#39;: &#39;\u30ea&#39;, &#39;\uff99&#39;: &#39;\u30eb&#39;, &#39;\uff9a&#39;: &#39;\u30ec&#39;, &#39;\uff9b&#39;: &#39;\u30ed&#39;,\n    &#39;\uff9c&#39;: &#39;\u30ef&#39;, &#39;\uff66&#39;: &#39;\u30f2&#39;, &#39;\uff9d&#39;: &#39;\u30f3&#39;,\n    &#39;\uff67&#39;: &#39;\u30a1&#39;, &#39;\uff68&#39;: &#39;\u30a3&#39;, &#39;\uff69&#39;: &#39;\u30a5&#39;, &#39;\uff6a&#39;: &#39;\u30a7&#39;, &#39;\uff6b&#39;: &#39;\u30a9&#39;,\n    &#39;\uff6f&#39;: &#39;\u30c3&#39;, &#39;\uff6c&#39;: &#39;\u30e3&#39;, &#39;\uff6d&#39;: &#39;\u30e5&#39;, &#39;\uff6e&#39;: &#39;\u30e7&#39;,\n    &#39;\uff61&#39;: &#39;\u3002&#39;, &#39;\uff64&#39;: &#39;\u3001&#39;, &#39;\uff70&#39;: &#39;\u30fc&#39;, &#39;\uff62&#39;: &#39;\u300c&#39;, &#39;\uff63&#39;: &#39;\u300d&#39;, &#39;\uff65&#39;: &#39;\u30fb&#39;\n  };\n  \/\/ \u696d\u52d9\u306b\u3088\u3063\u3066\u306f\u300c\u30cf\u30a4\u30d5\u30f3\uff08&quot;-&quot;\uff09\u3092\u9577\u97f3\uff08&quot;\u30fc&quot;\uff09\u306b\u7f6e\u63db\u300d\u3059\u3079\u304d\u5834\u5408\u3082\u3002\n  \/\/ \u696d\u52d9\u306b\u3088\u3063\u3066\u306f\u300c\uff9c\uff9e (va)\u300d\u3084\u300c\uff66\uff9e (vo)\u300d\u7b49\u3092\u8ffd\u52a0\u3059\u3079\u304d\u5834\u5408\u3082\u3002\n\n  const regHalf = new RegExp( &#39;(&#39; + Object.keys( objHalf2Full ).join(&#39;|&#39;) + &#39;)&#39;, &#39;g&#39; );\n    \/\/ array of object&#39;s own enumerable property names\n    \/\/ new RegExp( (\uff76\uff9e|\uff77\uff9e|\uff78\uff9e|\u2026|\uff65), &#39;g&#39; );\n  return str.replace( regHalf, function(s){ return objHalf2Full[s]; } )\n            .replace(\/\uff9e\/g, &#39;\u309b&#39;)\n            .replace(\/\uff9f\/g, &#39;\u309c&#39;);\n}\n\/\/\u25bc \u5168\u89d2\uff08\u30ab\u30bf\u30ab\u30ca\uff09 \u304b\u3089 \u534a\u89d2(\uff76\uff80\uff76\uff85) \u3078\u306e\u5909\u63db \u25bc\nfunction user_strReplaceFull2Half( str ){\n  const objFull2Half = {\n    &quot;\u30ac&quot;: &quot;\uff76\uff9e&quot;, &quot;\u30ae&quot;: &quot;\uff77\uff9e&quot;, &quot;\u30b0&quot;: &quot;\uff78\uff9e&quot;, &quot;\u30b2&quot;: &quot;\uff79\uff9e&quot;, &quot;\u30b4&quot;: &quot;\uff7a\uff9e&quot;,\n    &quot;\u30b6&quot;: &quot;\uff7b\uff9e&quot;, &quot;\u30b8&quot;: &quot;\uff7c\uff9e&quot;, &quot;\u30ba&quot;: &quot;\uff7d\uff9e&quot;, &quot;\u30bc&quot;: &quot;\uff7e\uff9e&quot;, &quot;\u30be&quot;: &quot;\uff7f\uff9e&quot;,\n    &quot;\u30c0&quot;: &quot;\uff80\uff9e&quot;, &quot;\u30c2&quot;: &quot;\uff81\uff9e&quot;, &quot;\u30c5&quot;: &quot;\uff82\uff9e&quot;, &quot;\u30c7&quot;: &quot;\uff83\uff9e&quot;, &quot;\u30c9&quot;: &quot;\uff84\uff9e&quot;,\n    &quot;\u30d0&quot;: &quot;\uff8a\uff9e&quot;, &quot;\u30d3&quot;: &quot;\uff8b\uff9e&quot;, &quot;\u30d6&quot;: &quot;\uff8c\uff9e&quot;, &quot;\u30d9&quot;: &quot;\uff8d\uff9e&quot;, &quot;\u30dc&quot;: &quot;\uff8e\uff9e&quot;,\n    &quot;\u30d1&quot;: &quot;\uff8a\uff9f&quot;, &quot;\u30d4&quot;: &quot;\uff8b\uff9f&quot;, &quot;\u30d7&quot;: &quot;\uff8c\uff9f&quot;, &quot;\u30da&quot;: &quot;\uff8d\uff9f&quot;, &quot;\u30dd&quot;: &quot;\uff8e\uff9f&quot;, &quot;\u30f4&quot;: &quot;\uff73\uff9e&quot;,\n    &quot;\u30a2&quot;: &quot;\uff71&quot;, &quot;\u30a4&quot;: &quot;\uff72&quot;, &quot;\u30a6&quot;: &quot;\uff73&quot;, &quot;\u30a8&quot;: &quot;\uff74&quot;, &quot;\u30aa&quot;: &quot;\uff75&quot;,\n    &quot;\u30ab&quot;: &quot;\uff76&quot;, &quot;\u30ad&quot;: &quot;\uff77&quot;, &quot;\u30af&quot;: &quot;\uff78&quot;, &quot;\u30b1&quot;: &quot;\uff79&quot;, &quot;\u30b3&quot;: &quot;\uff7a&quot;,\n    &quot;\u30b5&quot;: &quot;\uff7b&quot;, &quot;\u30b7&quot;: &quot;\uff7c&quot;, &quot;\u30b9&quot;: &quot;\uff7d&quot;, &quot;\u30bb&quot;: &quot;\uff7e&quot;, &quot;\u30bd&quot;: &quot;\uff7f&quot;,\n    &quot;\u30bf&quot;: &quot;\uff80&quot;, &quot;\u30c1&quot;: &quot;\uff81&quot;, &quot;\u30c4&quot;: &quot;\uff82&quot;, &quot;\u30c6&quot;: &quot;\uff83&quot;, &quot;\u30c8&quot;: &quot;\uff84&quot;,\n    &quot;\u30ca&quot;: &quot;\uff85&quot;, &quot;\u30cb&quot;: &quot;\uff86&quot;, &quot;\u30cc&quot;: &quot;\uff87&quot;, &quot;\u30cd&quot;: &quot;\uff88&quot;, &quot;\u30ce&quot;: &quot;\uff89&quot;,\n    &quot;\u30cf&quot;: &quot;\uff8a&quot;, &quot;\u30d2&quot;: &quot;\uff8b&quot;, &quot;\u30d5&quot;: &quot;\uff8c&quot;, &quot;\u30d8&quot;: &quot;\uff8d&quot;, &quot;\u30db&quot;: &quot;\uff8e&quot;,\n    &quot;\u30de&quot;: &quot;\uff8f&quot;, &quot;\u30df&quot;: &quot;\uff90&quot;, &quot;\u30e0&quot;: &quot;\uff91&quot;, &quot;\u30e1&quot;: &quot;\uff92&quot;, &quot;\u30e2&quot;: &quot;\uff93&quot;,\n    &quot;\u30e4&quot;: &quot;\uff94&quot;, &quot;\u30e6&quot;: &quot;\uff95&quot;, &quot;\u30e8&quot;: &quot;\uff96&quot;,\n    &quot;\u30e9&quot;: &quot;\uff97&quot;, &quot;\u30ea&quot;: &quot;\uff98&quot;, &quot;\u30eb&quot;: &quot;\uff99&quot;, &quot;\u30ec&quot;: &quot;\uff9a&quot;, &quot;\u30ed&quot;: &quot;\uff9b&quot;,\n    &quot;\u30ef&quot;: &quot;\uff9c&quot;, &quot;\u30f2&quot;: &quot;\uff66&quot;, &quot;\u30f3&quot;: &quot;\uff9d&quot;,\n    &quot;\u30a1&quot;: &quot;\uff67&quot;, &quot;\u30a3&quot;: &quot;\uff68&quot;, &quot;\u30a5&quot;: &quot;\uff69&quot;, &quot;\u30a7&quot;: &quot;\uff6a&quot;, &quot;\u30a9&quot;: &quot;\uff6b&quot;,\n    &quot;\u30c3&quot;: &quot;\uff6f&quot;, &quot;\u30e3&quot;: &quot;\uff6c&quot;, &quot;\u30e5&quot;: &quot;\uff6d&quot;, &quot;\u30e7&quot;: &quot;\uff6e&quot;,\n    &quot;\u3002&quot;: &quot;\uff61&quot;, &quot;\u3001&quot;: &quot;\uff64&quot;, &quot;\u30fc&quot;: &quot;\uff70&quot;, &quot;\u300c&quot;: &quot;\uff62&quot;, &quot;\u300d&quot;: &quot;\uff63&quot;, &quot;\u30fb&quot;: &quot;\uff65&quot;\n  };\n  const regFull = new RegExp( &#39;(&#39; + Object.keys( objFull2Half ).join(&#39;|&#39;) + &#39;)&#39;, &#39;g&#39; );\n  return str.replace( regFull, function(s){ return objFull2Half[s]; })\n            .replace(\/\u309b\/g, &#39;\uff9e&#39;)\n            .replace(\/\u309c\/g, &#39;\uff9f&#39;);\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u21c6 STRING (STRING_TEXTFIELD): <code>q_GivennameKatakana<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Convert-to-Katakana-Givenname\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button onclick=&#39;user_qStrStrCopyWithConvertHiraKata( &quot;q_GivennameKatakana&quot;, &quot;q_GivennameKatakana&quot; );&#39;\n type=&#39;button&#39;&gt;\u304b\u306a\u21d2\u30ab\u30ca&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertHalfFull( &quot;q_GivennameKatakana&quot;, &quot;q_GivennameKatakana&quot; );&#39;\n type=&#39;button&#39;&gt;\u534a\uff76\uff85\u21d2\u30ab\u30ca&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertKataHira( &quot;q_GivennameKatakana&quot;, &quot;q_GivennameKatakana&quot; );&#39;\n type=&#39;button&#39;&gt;\uff08\u30ab\u30ca\u21d2\u304b\u306a\uff09&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertFullHalf( &quot;q_GivennameKatakana&quot;, &quot;q_GivennameKatakana&quot; );&#39;\n type=&#39;button&#39;&gt;\uff08\u30ab\u30ca\u21d2\u534a\uff76\uff85\uff09&lt;\/button&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-default q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Unicode-katakana-hiragana.png?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Unicode-katakana-hiragana.png?resize=1200%2C675&#038;ssl=1\" alt=\"Unicode for Japanese Hiragana Katakana\" class=\"wp-image-126826\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Unicode-katakana-hiragana.png?w=1200&amp;ssl=1 1200w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Unicode-katakana-hiragana.png?resize=560%2C315&amp;ssl=1 560w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Unicode-katakana-hiragana.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Unicode-katakana-hiragana.png?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-default q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Hepburn-romanization.png?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Hepburn-romanization.png?resize=1200%2C675&#038;ssl=1\" alt=\"Hepburn-romanization Katakana\" class=\"wp-image-126828\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Hepburn-romanization.png?w=1200&amp;ssl=1 1200w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Hepburn-romanization.png?resize=560%2C315&amp;ssl=1 560w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Hepburn-romanization.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/Hepburn-romanization.png?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Convert to Roman Letters<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Convert-to-Roman-Letters-20220829.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"540\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Convert-to-Roman-Letters-20220829.gif?resize=1280%2C540&#038;ssl=1\" alt=\"Convert to Roman Letters in JavaScript \uff08\u30ed\u30fc\u30de\u5b57\u5909\u63db\uff09\n\u5168\u89d2\u30ab\u30bf\u30ab\u30ca\u304b\u3089\u30d8\u30dc\u30f3\u5f0f\u30ed\u30fc\u30de\u5b57\" class=\"wp-image-126815\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/36\/1\/crSl5YnnWw1paiyYepOyGntuwjNmLZkR\/view\" target=\"_Blank\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_SurnameKatakana<\/code><\/li>\n\n\n\n<li>\u2192 STRING (STRING_TEXTFIELD): <code>q_SurnameRomanized<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_SurnameRomanized<\/code><\/li>\n\n\n\n<li>\u2192 STRING (STRING_TEXTFIELD): <code>q_EmailAddr<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Convert-to-Roman-Letters\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button onclick=&#39;user_qStrStrCopyWithConvertKataRoma (  &quot;q_SurnameKatakana&quot;, &quot;q_SurnameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;\u30ab\u30ca\u21d2romaji&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithCapitalizeAll   ( &quot;q_SurnameRomanized&quot;, &quot;q_SurnameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;romaji\u21d2Romaji&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertUpperCase( &quot;q_SurnameRomanized&quot;, &quot;q_SurnameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;Romaji\u21d2ROMAJI&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertLowerCase( &quot;q_SurnameRomanized&quot;, &quot;q_SurnameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;(Romaji\u21d2romaji)&lt;\/button&gt;\n&lt;br&gt;\n\u203b\u9577\u97f3\u306e\u524a\u9664\uff1a\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertUU2U( &quot;q_SurnameRomanized&quot;, &quot;q_SurnameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;&quot;UU&quot;\u21d2&quot;U&quot;&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertOU2O( &quot;q_SurnameRomanized&quot;, &quot;q_SurnameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;&quot;OU&quot;\u21d2&quot;O&quot;&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertOO2O( &quot;q_SurnameRomanized&quot;, &quot;q_SurnameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;&quot;OO&quot;\u21d2&quot;O&quot;&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertO2OH( &quot;q_SurnameRomanized&quot;, &quot;q_SurnameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;\uff08&quot;O&quot;\u21d2&quot;OH&quot;\uff09&lt;\/button&gt;\n&lt;br&gt;\n&lt;button onclick=&#39;user_qStrStrCopyAsEmail( &quot;q_SurnameRomanized&quot;, &quot;example.com&quot;, &quot;q_EmailAddr&quot; );&#39;\n type=&#39;button&#39;&gt;+&quot;@example.com&quot; \u21d2 \u25bcEmail\u25bc&lt;\/button&gt;\n\n&lt;script&gt;\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0b\u30ed\u30fc\u30de\u5b57\u3078\u5909\u63db\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertKataRoma( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceKatakana2Romaji( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0b\u5927\u6587\u5b57\u5316\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertUpperCase( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceUpperCase( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0b\u5c0f\u6587\u5b57\u5316\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertLowerCase( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceLowerCase( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0b\u5927\u6587\u5b57\u59cb\u307e\u308a\u5316\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithCapitalizeAll( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strCapitalizeAll( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0bUU2U\u5909\u63db\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertUU2U( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceUU2U( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0bOU2O\u5909\u63db\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertOU2O( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceOU2O( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0bOO2O\u5909\u63db\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertOO2O( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceOO2O( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u6587\u5b57\u5217\u30c7\u30fc\u30bfInput \u3092 \u6587\u5b57\u5217\u30c7\u30fc\u30bfOutput \u306b\u30b3\u30d4\u30fc\uff08\uff0bO2OH\u5909\u63db\uff09 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyWithConvertO2OH( qStrFieldInput, qStrFieldOutput ){\n  let strInput =  qbpms.form.get( qStrFieldInput );\n  if( strInput === null ){ return; } \/\/ ReadOnly source\n  if( strInput === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  qbpms.form.set( qStrFieldOutput, user_strReplaceO2OH( strInput ) );\n}\n\/\/\u25bc\u25bc\u25bc \u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u5316 \u25bc\u25bc\u25bc\nfunction user_qStrStrCopyAsEmail( qStrFieldMailboxname, strDomain, qStrFieldEmail ){\n  let strMailboxname =  qbpms.form.get( qStrFieldMailboxname );\n  if( strMailboxname === null ){ return; } \/\/ ReadOnly source\n  if( strMailboxname === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  let strEmail = strMailboxname.toLowerCase()\n                               .replace(\/\\s+\/g, &#39;-&#39;) +\n                 &quot;@&quot; + strDomain.toLowerCase();\n  qbpms.form.set( qStrFieldEmail, strEmail );\n}\n\n\/\/\u25bc Replace to UpperCase \uff0f \u5927\u6587\u5b57\u3078\u7f6e\u63db \u25bc\n\/\/ \u203b\u5927\u6587\u5b57\u5c0f\u6587\u5b57\u304c\u5b58\u5728\u3057\u306a\u3044\u6587\u5b57\uff08\u6f22\u5b57\u3084\u30ab\u30bf\u30ab\u30ca\u306a\u3069\uff09\u306f\u7f6e\u63db\u3055\u308c\u307e\u305b\u3093\nfunction user_strReplaceUpperCase( str ){\n  return str.toUpperCase();\n}\n\/\/\u25bc Replace to LowerCase \uff0f \u5c0f\u6587\u5b57\u3078\u7f6e\u63db \u25bc\nfunction user_strReplaceLowerCase( str ){\n  return str.toLowerCase();\n}\n\/\/\u25bc Capitalize All Words \uff0f \u5168\u3066\u306e\u5358\u8a9e\u3092\u5927\u6587\u5b57\u59cb\u307e\u308a\u3078\u7f6e\u63db \u25bc\nfunction user_strCapitalizeAll( str ){\n  return str.replace( \/\\b[a-z]\/g, function(s){ return s.toUpperCase(); });\n}\n\/\/\u25bc Replace UU to U \uff0f UU\u3092U\u306b\u7f6e\u63db \u25bc\nfunction user_strReplaceUU2U( str ){\n  return str.replace( \/UU\/gi, function(s){ return s.slice( 0, 1 ); });\n}\n\/\/\u25bc Replace OU to O \uff0f OU\u3092O\u306b\u7f6e\u63db \u25bc\nfunction user_strReplaceOU2O( str ){\n  return str.replace( \/OU\/gi, function(s){ return s.slice( 0, 1 ); });\n}\n\/\/\u25bc Replace OO to O \uff0f OO\u3092O\u306b\u7f6e\u63db \u25bc\nfunction user_strReplaceOO2O( str ){\n  return str.replace( \/OO\/gi, function(s){ return s.slice( 0, 1 ); });\n}\n\/\/\u25bc Replace O to OH \uff0f O\u3092OH\u306b\u7f6e\u63db \u25bc\nfunction user_strReplaceO2OH( str ){\n  return str.replace( \/O\/gi, function(s){ return (s + &quot;h&quot;); });\n}\n\/\/\u25bc \u30ed\u30fc\u30de\u5b57\u5909\u63db\uff08\u30ab\u30bf\u30ab\u30ca \u304b\u3089 Romaji \u3078\u306e\u5909\u63db\uff09 \u25bc\nfunction user_strReplaceKatakana2Romaji( str ){\n  \/\/ \uff1c\u5916\u52d9\u7701\u30d8\u30dc\u30f3\u5f0f\uff08\u30d1\u30b9\u30dd\u30fc\u30c8\u5f0f\uff09\uff1e\n  \/\/ \u25bdhttps:\/\/www.mofa.go.jp\/mofaj\/toko\/passport\/download\/faq.html#6-Q1\n  \/\/ \u25c7\u6c0f\u540d\u306e\u30d8\u30dc\u30f3\u5f0f\u30ed\u30fc\u30de\u5b57\u3092\u3069\u306e\u3088\u3046\u306b\u66f8\u3044\u305f\u3089\u3088\u3044\u304b\n  \/\/ \u2514 \u30d8\u30dc\u30f3\u5f0f\u30ed\u30fc\u30de\u5b57\u7db4\u65b9\u8868 \n  \/\/ \u3000\u2514 https:\/\/www.ezairyu.mofa.go.jp\/passport\/hebon.html\n\n  const objKatakana2Romaji = {\n  \/\/ \u203b\u9577\u97f3\u306eO\u3068U\u306b\u3064\u3044\u3066\u5224\u5b9a\u3057\u306a\u3044\uff08\u5909\u63db\u6642\u306b\u524a\u9664\u3057\u306a\u3044\uff09\uff08\u672b\u5c3eOU\u306eU\u306f\u524a\u9664\uff09\n  \/\/ \u3070\u884c\u307e\u884c\u3071\u884c\u306b\u7d9a\u304f\u64a5\u97f3\u306fN\u3067\u306f\u306a\u304fM\n    &quot;\u30f3\u30d0&quot;:&quot;mba&quot;, &quot;\u30f3\u30d3&quot;:&quot;mbi&quot;, &quot;\u30f3\u30d6&quot;:&quot;mbu&quot;, &quot;\u30f3\u30d9&quot;:&quot;mbe&quot;, &quot;\u30f3\u30dc&quot;:&quot;mbo&quot;,\n    &quot;\u30f3\u30d1&quot;:&quot;mpa&quot;, &quot;\u30f3\u30d4&quot;:&quot;mpi&quot;, &quot;\u30f3\u30d7&quot;:&quot;mpu&quot;, &quot;\u30f3\u30da&quot;:&quot;mpe&quot;, &quot;\u30f3\u30dd&quot;:&quot;mpo&quot;,\n    &quot;\u30f3\u30de&quot;:&quot;mma&quot;, &quot;\u30f3\u30df&quot;:&quot;mma&quot;, &quot;\u30f3\u30e0&quot;:&quot;mma&quot;, &quot;\u30f3\u30e1&quot;:&quot;mma&quot;, &quot;\u30f3\u30e2&quot;:&quot;mma&quot;,\n  \/\/ \u30c1\u30c1\u30e3\u30c1\u30e5\u30c1\u30e7\u306b\u7d9a\u304f\u4fc3\u97f3\u306fT\u3067\u8868\u8a18\uff08c\uff09\n    &quot;\u30c3\u30c1\u30e3&quot;:&quot;tcha&quot;, &quot;\u30c3\u30c1\u30e5&quot;:&quot;tchu&quot;, &quot;\u30c3\u30c1\u30e7&quot;:&quot;tcho&quot;, &quot;\u30c3\u30c1&quot;:&quot;tch&quot;,\n  \/\/ \u4e00\u822c\u7684\u306a\u4fc3\u97f3\u306f\u5b50\u97f3\u3092\u91cd\u306d\u3066\u8868\u8a18\uff08k\u3001t\u3001p\u3001s\uff09\n    &quot;\u30c3\u30ab&quot;:&quot;kka&quot;, &quot;\u30c3\u30ad&quot;:&quot;kki&quot;, &quot;\u30c3\u30af&quot;:&quot;kku&quot;, &quot;\u30c3\u30b1&quot;:&quot;kke&quot;, &quot;\u30c3\u30b3&quot;:&quot;kko&quot;,\n    &quot;\u30c3\u30bf&quot;:&quot;tta&quot;,               &quot;\u30c3\u30c4&quot;:&quot;ttsu&quot;,&quot;\u30c3\u30c6&quot;:&quot;tte&quot;, &quot;\u30c3\u30c8&quot;:&quot;tto&quot;,\n    &quot;\u30c3\u30d1&quot;:&quot;ppa&quot;, &quot;\u30c3\u30d4&quot;:&quot;ppi&quot;, &quot;\u30c3\u30d7&quot;:&quot;ppu&quot;, &quot;\u30c3\u30da&quot;:&quot;ppe&quot;, &quot;\u30c3\u30dd&quot;:&quot;ppo&quot;,\n    &quot;\u30c3\u30b5&quot;:&quot;ssa&quot;, &quot;\u30c3\u30b7&quot;:&quot;sshi&quot;,&quot;\u30c3\u30b9&quot;:&quot;ssu&quot;, &quot;\u30c3\u30bb&quot;:&quot;sse&quot;, &quot;\u30c3\u30bd&quot;:&quot;sso&quot;,\n  \/\/ \u7279\u6b8a\u306a\u62d7\u97f3\uff08\u30a1\u3001\u30a3\u3001\u30a5\u3001\u30a7\u3001\u30a9\uff09\n    &quot;\u30b7\u30a7&quot;:&quot;shie&quot;,&quot;\u30b8\u30a7&quot;:&quot;jie&quot;, &quot;\u30c1\u30a7&quot;:&quot;chie&quot;,\n    &quot;\u30c6\u30a3&quot;:&quot;tei&quot;, &quot;\u30c7\u30a3&quot;:&quot;dei&quot;,\n    &quot;\u30c7\u30e5&quot;:&quot;deyu&quot;,\n                  &quot;\u30cb\u30a3&quot;:&quot;nii&quot;,               &quot;\u30cb\u30a7&quot;:&quot;nie&quot;,\n    &quot;\u30d5\u30a1&quot;:&quot;fua&quot;, &quot;\u30d5\u30a3&quot;:&quot;fui&quot;,               &quot;\u30d5\u30a7&quot;:&quot;fue&quot;, &quot;\u30d5\u30a9&quot;:&quot;fuo&quot;,\n                  &quot;\u30a6\u30a3&quot;:&quot;ui&quot;,                &quot;\u30a6\u30a7&quot;:&quot;ue&quot;,  &quot;\u30a6\u30a9&quot;:&quot;uo&quot;,\n    &quot;\u30f4\u30a1&quot;:&quot;ba&quot;,  &quot;\u30f4\u30a3&quot;:&quot;bi&quot;,                &quot;\u30f4\u30a7&quot;:&quot;be&quot;,  &quot;\u30f4\u30a9&quot;:&quot;bo&quot;,\n    \/\/&quot;\u30f4\u30a1&quot;:&quot;bua&quot;, &quot;\u30f4\u30a3&quot;:&quot;bui&quot;, &quot;\u30f4\u30a7&quot;:&quot;bue&quot;, &quot;\u30f4\u30a9&quot;:&quot;buo&quot;,\n  \/\/ \u4e00\u822c\u7684\u306a\u62d7\u97f3\uff08\u30ee\u306f\u60f3\u5b9a\u3057\u306a\u3044\uff09\n    &quot;\u30ad\u30e3&quot;:&quot;kya&quot;, &quot;\u30ad\u30e5&quot;:&quot;kyu&quot;, &quot;\u30ad\u30e7&quot;:&quot;kyo&quot;,\n    &quot;\u30b7\u30e3&quot;:&quot;sha&quot;, &quot;\u30b7\u30e5&quot;:&quot;shu&quot;, &quot;\u30b7\u30e7&quot;:&quot;sho&quot;,\n    &quot;\u30c1\u30e3&quot;:&quot;cha&quot;, &quot;\u30c1\u30e5&quot;:&quot;chu&quot;, &quot;\u30c1\u30e7&quot;:&quot;cho&quot;,\n    &quot;\u30cb\u30e3&quot;:&quot;nya&quot;, &quot;\u30cb\u30e5&quot;:&quot;nyu&quot;, &quot;\u30cb\u30e7&quot;:&quot;nyo&quot;,\n    &quot;\u30d2\u30e3&quot;:&quot;hya&quot;, &quot;\u30d2\u30e5&quot;:&quot;hyu&quot;, &quot;\u30d2\u30e7&quot;:&quot;hyo&quot;,\n    &quot;\u30df\u30e3&quot;:&quot;mya&quot;, &quot;\u30df\u30e5&quot;:&quot;myu&quot;, &quot;\u30df\u30e7&quot;:&quot;myo&quot;,\n    &quot;\u30ea\u30e3&quot;:&quot;rya&quot;, &quot;\u30ea\u30e5&quot;:&quot;ryu&quot;, &quot;\u30ea\u30e7&quot;:&quot;ryo&quot;,\n    &quot;\u30ae\u30e3&quot;:&quot;gya&quot;, &quot;\u30ae\u30e5&quot;:&quot;gyu&quot;, &quot;\u30ae\u30e7&quot;:&quot;gyo&quot;,\n    &quot;\u30b8\u30e3&quot;:&quot;ja&quot;,  &quot;\u30b8\u30e5&quot;:&quot;ju&quot;,  &quot;\u30b8\u30e7&quot;:&quot;jo&quot;,\n    &quot;\u30d3\u30e3&quot;:&quot;bya&quot;, &quot;\u30d3\u30e5&quot;:&quot;byu&quot;, &quot;\u30d3\u30e7&quot;:&quot;byo&quot;,\n    &quot;\u30d4\u30e3&quot;:&quot;pya&quot;, &quot;\u30d4\u30e5&quot;:&quot;pyu&quot;, &quot;\u30d4\u30e7&quot;:&quot;pyo&quot;,\n  \/\/ \u4e00\u822c\u7684\u306a50\u97f3\n    &quot;\u30a2&quot;:&quot;a&quot;,  &quot;\u30a4&quot;:&quot;i&quot;,  &quot;\u30a6&quot;:&quot;u&quot;,  &quot;\u30a8&quot;:&quot;e&quot;,  &quot;\u30aa&quot;:&quot;o&quot;,\n    &quot;\u30ab&quot;:&quot;ka&quot;, &quot;\u30ad&quot;:&quot;ki&quot;, &quot;\u30af&quot;:&quot;ku&quot;, &quot;\u30b1&quot;:&quot;ke&quot;, &quot;\u30b3&quot;:&quot;ko&quot;,\n    &quot;\u30b5&quot;:&quot;sa&quot;, &quot;\u30b7&quot;:&quot;shi&quot;,&quot;\u30b9&quot;:&quot;su&quot;, &quot;\u30bb&quot;:&quot;se&quot;, &quot;\u30bd&quot;:&quot;so&quot;,\n    &quot;\u30bf&quot;:&quot;ta&quot;, &quot;\u30c1&quot;:&quot;chi&quot;,&quot;\u30c4&quot;:&quot;tsu&quot;,&quot;\u30c6&quot;:&quot;te&quot;, &quot;\u30c8&quot;:&quot;to&quot;,\n    &quot;\u30ca&quot;:&quot;na&quot;, &quot;\u30cb&quot;:&quot;ni&quot;, &quot;\u30cc&quot;:&quot;nu&quot;, &quot;\u30cd&quot;:&quot;ne&quot;, &quot;\u30ce&quot;:&quot;no&quot;,\n    &quot;\u30cf&quot;:&quot;ha&quot;, &quot;\u30d2&quot;:&quot;hi&quot;, &quot;\u30d5&quot;:&quot;fu&quot;, &quot;\u30d8&quot;:&quot;he&quot;, &quot;\u30db&quot;:&quot;ho&quot;,\n    &quot;\u30de&quot;:&quot;ma&quot;, &quot;\u30df&quot;:&quot;mi&quot;, &quot;\u30e0&quot;:&quot;mu&quot;, &quot;\u30e1&quot;:&quot;me&quot;, &quot;\u30e2&quot;:&quot;mo&quot;,\n    &quot;\u30e4&quot;:&quot;ya&quot;,            &quot;\u30e6&quot;:&quot;yu&quot;,            &quot;\u30e8&quot;:&quot;yo&quot;,\n    &quot;\u30e9&quot;:&quot;ra&quot;, &quot;\u30ea&quot;:&quot;ri&quot;, &quot;\u30eb&quot;:&quot;ru&quot;, &quot;\u30ec&quot;:&quot;re&quot;, &quot;\u30ed&quot;:&quot;ro&quot;,\n    &quot;\u30ef&quot;:&quot;wa&quot;, &quot;\u30f0&quot;:&quot;i&quot;,             &quot;\u30f1&quot;:&quot;e&quot;,  &quot;\u30f2&quot;:&quot;o&quot;,  &quot;\u30f3&quot;:&quot;n&quot;,\n                          &quot;\u30f4&quot;:&quot;bu&quot;,\n    &quot;\u30ac&quot;:&quot;ga&quot;, &quot;\u30ae&quot;:&quot;gi&quot;, &quot;\u30b0&quot;:&quot;gu&quot;, &quot;\u30b2&quot;:&quot;ge&quot;, &quot;\u30b4&quot;:&quot;go&quot;,\n    &quot;\u30b6&quot;:&quot;za&quot;, &quot;\u30b8&quot;:&quot;ji&quot;, &quot;\u30ba&quot;:&quot;zu&quot;, &quot;\u30bc&quot;:&quot;ze&quot;, &quot;\u30be&quot;:&quot;zo&quot;,\n    &quot;\u30c0&quot;:&quot;da&quot;, &quot;\u30c2&quot;:&quot;ji&quot;, &quot;\u30c5&quot;:&quot;zu&quot;, &quot;\u30c7&quot;:&quot;de&quot;, &quot;\u30c9&quot;:&quot;do&quot;,\n    &quot;\u30d0&quot;:&quot;ba&quot;, &quot;\u30d3&quot;:&quot;bi&quot;, &quot;\u30d6&quot;:&quot;bu&quot;, &quot;\u30d9&quot;:&quot;be&quot;, &quot;\u30dc&quot;:&quot;bo&quot;,\n    &quot;\u30d1&quot;:&quot;pa&quot;, &quot;\u30d4&quot;:&quot;pi&quot;, &quot;\u30d7&quot;:&quot;pu&quot;, &quot;\u30da&quot;:&quot;pe&quot;, &quot;\u30dd&quot;:&quot;po&quot;,\n  \/\/ \u5404\u7a2e\u8a18\u53f7\u3092\u524a\u9664\n    &quot;\u3002&quot;: &quot;&quot;, &quot;\u3001&quot;: &quot;&quot;, &quot;\u30fc&quot;: &quot;&quot;, &quot;\u300c&quot;: &quot;&quot;, &quot;\u300d&quot;: &quot;&quot;, &quot;\u30fb&quot;: &quot;&quot;\n  };\n  const regKatakana = new RegExp( &#39;(&#39; + Object.keys( objKatakana2Romaji ).join(&#39;|&#39;) + &#39;)&#39;, &#39;g&#39; );\n  return str.replace( regKatakana, function(s){ return objKatakana2Romaji[s]; })\n            .replace( \/ou\\b\/g, function(s){ return s.slice( 0, -1 ); }); \/\/ \u672b\u5c3eOU\u306eU\u306f\u524a\u9664\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_GivennameKatakana<\/code><\/li>\n\n\n\n<li>\u2192 STRING (STRING_TEXTFIELD): <code>q_GivennameRomanized<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_GivennameRomanized<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Convert-to-Roman-Letters-Givenname\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button onclick=&#39;user_qStrStrCopyWithConvertKataRoma(  &quot;q_GivennameKatakana&quot;, &quot;q_GivennameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;\u30ab\u30ca\u21d2romaji&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithCapitalizeAll   ( &quot;q_GivennameRomanized&quot;, &quot;q_GivennameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;romaji\u21d2Romaji&lt;\/button&gt;\n&lt;br&gt;\n\u203b\u9577\u97f3\u306e\u524a\u9664\uff1a\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertUU2U( &quot;q_GivennameRomanized&quot;, &quot;q_GivennameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;&quot;uu&quot;\u21d2&quot;u&quot;&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertOU2O( &quot;q_GivennameRomanized&quot;, &quot;q_GivennameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;&quot;ou&quot;\u21d2&quot;o&quot;&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertOO2O( &quot;q_GivennameRomanized&quot;, &quot;q_GivennameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;&quot;oo&quot;\u21d2&quot;o&quot;&lt;\/button&gt;\n&lt;button onclick=&#39;user_qStrStrCopyWithConvertO2OH( &quot;q_GivennameRomanized&quot;, &quot;q_GivennameRomanized&quot; );&#39;\n type=&#39;button&#39;&gt;\uff08&quot;o&quot;\u21d2&quot;oh&quot;\uff09&lt;\/button&gt;\n&lt;br&gt;\n\u203b\u9577\u97f3UU\/OU\/OO\u306e\u5224\u5b9a\u30eb\u30fc\u30eb\uff1a &lt;a href=&quot;https:\/\/www.mofa.go.jp\/mofaj\/toko\/passport\/download\/faq.html#6-Q1&quot; target=&quot;_Blank&quot;&gt;\u5916\u52d9\u7701\u30d8\u30dc\u30f3\u5f0f\u3014\u30d1\u30b9\u30dd\u30fc\u30c8\u5f0f\u3015&lt;\/a&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Enter Number using NumPad Buttons<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Enter-Number-using-NumPad-Buttons-20220726.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"451\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Enter-Number-using-NumPad-Buttons-20220726.gif?resize=1280%2C451&#038;ssl=1\" alt=\"Enter Number using NumPad Buttons\" class=\"wp-image-125619\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u21c6 NUMERIC (DECIMAL): <strong><em><code>q_Cost<\/code> <\/em><\/strong>(update)<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"\u25cfoverwrite_title\u25cf\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;qbpms.form.set( &quot;q_Cost&quot;, &quot;410&quot; )&#39;&gt;410&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_plusQNum( &quot;q_Cost&quot;, 80 )&#39;&gt;+80&lt;\/button&gt;&lt;br \/&gt;\n\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;1&quot; )&#39;&gt;1&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;2&quot; )&#39;&gt;2&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;3&quot; )&#39;&gt;3&lt;\/button&gt;&lt;br \/&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;4&quot; )&#39;&gt;4&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;5&quot; )&#39;&gt;5&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;6&quot; )&#39;&gt;6&lt;\/button&gt;&lt;br \/&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;7&quot; )&#39;&gt;7&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;8&quot; )&#39;&gt;8&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;9&quot; )&#39;&gt;9&lt;\/button&gt;&lt;br \/&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_appendQNum( &quot;q_Cost&quot;, &quot;0&quot; )&#39;&gt;0&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_timesQNum( &quot;q_Cost&quot;, 10  )&#39;&gt;*10&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_timesQNum( &quot;q_Cost&quot;, 0.1 )&#39;&gt;\/10&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_deletePrevQNum( &quot;q_Cost&quot; )&#39;&gt;BS&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_numPad&#39; onclick=&#39;user_formatQNum( &quot;q_Cost&quot; )&#39;&gt;Format&lt;\/button&gt;\n\n&lt;style&gt;\n.user_numPad {\n  margin: 1px 2px;\n  padding: 0 5px;\n  border: 1px solid #009900;\n  background-color: #ffffff\n}\n.user_numPad:active{\n  background-color: #99ff99\n}\n&lt;\/style&gt;\n\n&lt;script&gt;\nfunction user_appendQNum( qfieldName, strArg ){               \/\/ Input Output same field\n  let strOriginal = &quot;&quot;;\n  if( qbpms.form.get( qfieldName ) !== null &&                \/\/ like as qSTRING\n      qbpms.form.get( qfieldName ).toString() !== &quot;0&quot; ){      \/\/ no Thousands-separators\n      strOriginal = qbpms.form.get( qfieldName ).toString();  \/\/ exception: &quot;1.&quot;, &quot;1.0&quot; as &quot;1&quot;\n  }\n  qbpms.form.set( qfieldName, ( strOriginal + strArg ) );\n}\nfunction user_deletePrevQNum( qfieldName ){                       \/\/ Input Output same field\n  if( qbpms.form.get( qfieldName ) !== null ){                    \/\/ like as qSTRING\n      let strOriginal = qbpms.form.get( qfieldName ).toString();  \/\/ no Thousands-separators\n      qbpms.form.set( qfieldName, strOriginal.slice( 0, -1 ) );\n  }\n}\nfunction user_timesQNum( qfieldName, numArg ){\n  let numOriginal = new Big(0);\n  if( qbpms.form.get( qfieldName ) !== null ){\n      numOriginal = qbpms.form.get( qfieldName );\n  }\n  qbpms.form.set( qfieldName, numOriginal.times( numArg ) );\n  \/\/ https:\/\/mikemcl.github.io\/big.js\/#times\n}\nfunction user_plusQNum( qfieldName, numArg ){\n  let numOriginal = new Big(0);\n  if( qbpms.form.get( qfieldName ) !== null ){\n      numOriginal = qbpms.form.get( qfieldName );\n  }\n  qbpms.form.set( qfieldName, numOriginal.plus( numArg ) );\n  \/\/ https:\/\/mikemcl.github.io\/big.js\/#plus\n}\nfunction user_formatQNum( qfieldName ){\n  if( qbpms.form.get( qfieldName ) !== null ){\n      qbpms.form.set( qfieldName, qbpms.form.get( qfieldName ) );\n  }\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Set Geolocation Data<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Set-Geolocation-Data-20220916.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Set-Geolocation-Data-20220916.gif?resize=1280%2C720&#038;ssl=1\" alt=\"Obtains the user's current location. \u30e6\u30fc\u30b6\u306e\u73fe\u5728\u4f4d\u7f6e\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 (W3C Geolocation API)\" class=\"wp-image-127750\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/44\/0\/88BeheHr1KUlVxvs8yQtDFEXuvEm8uO0\/view\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2192 STRING (STRING_TEXTFIELD) <code>q_LatitudeLongitude<\/code> (ReadWrite)<\/li>\n\n\n\n<li>\u2192 <code>span#user_GeolocationAPI_Status<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Set-Geolocation-Data\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>Set Geolocation Data\n&lt;script&gt;\n\/*\nDecoration Name: Set Geolocation Data\nLicense: MIT\nDescription: To obtain the user&#39;s current location. \u30e6\u30fc\u30b6\u306e\u73fe\u5728\u4f4d\u7f6e\u3092\u53d6\u5f97\u3057\u307e\u3059\u3002 (W3C Geolocation API)\n*\/\n\nfunction user_setLatitudeLongitude( qStrField ){\n\/\/ https:\/\/developer.mozilla.org\/docs\/Web\/API\/Geolocation_API\/Using_the_Geolocation_API#examples\n\n  let elApiStatus = document.querySelector( &quot;#user_GeolocationAPI_Status&quot; );\n\n  if( !navigator.geolocation ) {\n    elApiStatus.textContent = &#39;Geolocation is not supported by your browser&#39;;\n  } else {\n    elApiStatus.textContent = &#39;Locating\u2026&#39;;\n    navigator.geolocation.getCurrentPosition(success, error);\n  }\n  function success( position ) {\n    qbpms.form.set( qStrField, position.coords.latitude + &quot;,&quot; + position.coords.longitude );\n    elApiStatus.textContent = &quot;&quot;;\n  }\n  function error() {\n    elApiStatus.textContent = &#39;Unable to retrieve your location&#39;;\n  }\n\n  navigator.geolocation.getCurrentPosition( success, error );\n}\n&lt;\/script&gt;\n\n&lt;button type=&quot;button&quot;\n onclick=&quot;user_setLatitudeLongitude(\n               &#39;q_LatitudeLongitude&#39;\n          )&quot;&gt;&lt;span class=&quot;material-icons&quot;&gt;my_location&lt;\/span&gt;&lt;\/button&gt;\n\n&lt;button type=&quot;button&quot;\n onclick=&quot;qbpms.form.set( &#39;q_LatitudeLongitude&#39;, null )&quot;\n&gt;&lt;span class=&quot;material-icons&quot;&gt;backspace&lt;\/span&gt;&lt;\/button&gt;\n\n&lt;span id=&quot;user_GeolocationAPI_Status&quot;&gt;&lt;\/span&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Check Geolocation Data<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Check-Geolocation-Data-20220916.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Check-Geolocation-Data-20220916.gif?resize=1280%2C720&#038;ssl=1\" alt=\"Google Map buttons such as route and street view will appear. You can check another tab just by clicking. \n \u7d4c\u8def\u3084\u30b9\u30c8\u30ea\u30fc\u30c8\u30d3\u30e5\u30fc\u3068\u3044\u3063\u305f Google Map \u30dc\u30bf\u30f3\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u5225\u30bf\u30d6\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\" class=\"wp-image-127754\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/44\/0\/88BeheHr1KUlVxvs8yQtDFEXuvEm8uO0\/view\" target=\"_blank\" rel=\"noreferrer noopener\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD) <code>q_LatitudeLongitude<\/code> (ReadOnly)<\/li>\n\n\n\n<li>\u2192 browsing context (new tab)<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Check-Geolocation-Data\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>Check Geolocation Data (Guide Panel) \n&lt;script&gt;\n\/*\nDecoration Name: Check Geolocation Data\nLicense: MIT\nDescription:\n Google Map buttons such as route and street view will appear. You can check another tab just by clicking. \n \u7d4c\u8def\u3084\u30b9\u30c8\u30ea\u30fc\u30c8\u30d3\u30e5\u30fc\u3068\u3044\u3063\u305f Google Map \u30dc\u30bf\u30f3\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u5225\u30bf\u30d6\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\n\u25bchttps:\/\/developers.google.com\/maps\/documentation\/urls\/get-started\n\u25c6Google Maps URLs -- Universal cross-platform syntax (No API key required)\n- Search:     e.g., https:\/\/www.google.com\/maps\/search\/?api=1&query=35.0110379%2C135.7617619\n- Satellite:  e.g., https:\/\/www.google.com\/maps\/@?api=1&map_action=map&basemap=satellite&zoom=18\u00a2er=35.026%2C135.779\n- Directions: e.g., https:\/\/www.google.com\/maps\/dir\/?api=1&destination=35.0115636%2C135.7516171\n- StreetView: e.g., https:\/\/www.google.com\/maps\/@?api=1&map_action=pano&pitch=25&viewpoint=34.9865559%2C135.7596661\n*\/\n\nfunction user_encodeLatitudeLongitude( strLatitudeLongitude ){\n  if( typeof( strLatitudeLongitude ) !== &quot;string&quot; ){\n    console.error( &quot;\\n DecorationError:&quot; +\n                   &quot; &#39;strLatitudeLongitude&#39; must be string \\n&quot; );\n    return null;\n  }\n  let strTmp = strLatitudeLongitude.replace( \/\\s\/g, &quot;&quot; );\n  \/\/ Remove all single white space character, including space, tab, feed, and other Unicode spaces.\n  const regLatLng = \/^((\\-?|\\+?)?\\d+(\\.\\d+)?),((\\-?|\\+?)?\\d+(\\.\\d+)?)$\/; \/\/ RegExp\n  if( regLatLng.test( strTmp ) === false ){\n    console.error( &quot;\\n DecorationError:&quot; +\n                   &quot; &#39;strLatitudeLongitude&#39; must be comma-separated lat\/lng coordinates. \\n&quot; );\n    return null;\n  }\n  return encodeURIComponent( strTmp );\n}\n\nfunction user_openPinnedMap( strLatitudeLongitude ){\n  let strTmp = user_encodeLatitudeLongitude( strLatitudeLongitude );\n  if( strTmp === null ){ return; }\n  console.log( &#39;https:\/\/www.google.com\/maps\/search\/?api=1&query=&#39; + strTmp );\n  window.open( &#39;https:\/\/www.google.com\/maps\/search\/?api=1&query=&#39; + strTmp );\n}\nfunction user_openSatelliteMap( strLatitudeLongitude ){\n  let strTmp = user_encodeLatitudeLongitude( strLatitudeLongitude );\n  if( strTmp === null ){ return; }\n  console.log( &#39;https:\/\/www.google.com\/maps\/@?api=1&map_action=map&basemap=satellite&zoom=18\u00a2er=&#39; + strTmp );\n  window.open( &#39;https:\/\/www.google.com\/maps\/@?api=1&map_action=map&basemap=satellite&zoom=18\u00a2er=&#39; + strTmp );\n}\nfunction user_openDirectionsMap( strLatitudeLongitude ){\n  let strTmp = user_encodeLatitudeLongitude( strLatitudeLongitude );\n  if( strTmp === null ){ return; }\n  console.log( &#39;https:\/\/www.google.com\/maps\/dir\/?api=1&destination=&#39; + strTmp );\n  window.open( &#39;https:\/\/www.google.com\/maps\/dir\/?api=1&destination=&#39; + strTmp );\n}\nfunction user_openStreetViewMap( strLatitudeLongitude ){\n  let strTmp = user_encodeLatitudeLongitude( strLatitudeLongitude );\n  if( strTmp === null ){ return; }\n  console.log( &#39;https:\/\/www.google.com\/maps\/@?api=1&map_action=pano&pitch=25&viewpoint=&#39; + strTmp );\n  window.open( &#39;https:\/\/www.google.com\/maps\/@?api=1&map_action=pano&pitch=25&viewpoint=&#39; + strTmp );\n}\n&lt;\/script&gt;\n\n&lt;button type=&quot;button&quot;\n onclick=&quot;user_openPinnedMap(\n            qbpms.form.get( &#39;q_LatitudeLongitude&#39; )\n          )&quot;&gt;&lt;span class=&quot;material-icons&quot;&gt;place&lt;\/span&gt;&lt;\/button&gt;\n&lt;button type=&quot;button&quot;\n onclick=&quot;user_openDirectionsMap(\n            qbpms.form.get( &#39;q_LatitudeLongitude&#39; )\n          )&quot;&gt;&lt;span class=&quot;material-icons&quot;&gt;directions&lt;\/span&gt;&lt;\/button&gt;\n&lt;button type=&quot;button&quot;\n onclick=&quot;user_openSatelliteMap(\n            qbpms.form.get( &#39;q_LatitudeLongitude&#39; )\n          )&quot;&gt;&lt;span class=&quot;material-icons&quot;&gt;satellite&lt;\/span&gt;&lt;\/button&gt;\n&lt;button type=&quot;button&quot;\n onclick=&quot;user_openStreetViewMap(\n            qbpms.form.get( &#39;q_LatitudeLongitude&#39; )\n          )&quot;&gt;&lt;span class=&quot;material-icons&quot;&gt;panorama&lt;\/span&gt;&lt;\/button&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Confirm Selected User<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Confirm-Selected-User-20220817.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Confirm-Selected-User-20220817.gif?resize=1280%2C720&#038;ssl=1\" alt=\"Confirm Selected User\" class=\"wp-image-126436\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 QUSER <code>q_Reviewer<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_footnote_Reviewer<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Confirm-Selected-User\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;span id=&quot;user_footnote_Reviewer&quot;&gt;&lt;\/span&gt;&lt;br&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;ready&#39;,                user_setFootnote_Reviewer ); \/\/ for Initial Value\nqbpms.form.on( &#39;change&#39;, &#39;q_Reviewer&#39;, user_setFootnote_Reviewer );\nfunction user_setFootnote_Reviewer(){\n  let quserTarget = qbpms.form.get( &quot;q_Reviewer&quot; );\n  if( quserTarget === null ){ return; }\n  let strInnerHtml =  &#39;&#39;;\n      strInnerHtml += &#39;uid: &lt;span style=&quot;font-style:italic; color:#999999&quot;&gt;&#39;;\n      strInnerHtml += quserTarget.id;\n      strInnerHtml += &#39;&lt;\/span&gt;, email: &lt;span style=&quot;font-weight:bold; color:#009900&quot;&gt;&#39;;\n      strInnerHtml += quserTarget.email;\n      strInnerHtml += &#39;&lt;\/span&gt;&#39;;\n  document.querySelector( &#39;#user_footnote_Reviewer&#39; ).innerHTML = strInnerHtml;\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Confirm Selected Value<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Confirm-Selected-Value-20220728.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"200\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Confirm-Selected-Value-20220728.gif?resize=1280%2C200&#038;ssl=1\" alt=\"Confirm Selected Value\" class=\"wp-image-125753\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 SELECT (SELECT_SINGLE): <code>q_Currency<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_notice01<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Confirm-Selected-Value\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Currency&quot;, null )&#39;&gt;Clear&lt;\/button&gt;\n&lt;span id=&quot;user_notice01&quot;&gt;(default)&lt;\/span&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;change&#39;, &#39;q_Currency&#39;, user_updateNotice01 );\n\nfunction user_updateNotice01( eventField ){\n  let arrOptions = eventField.value; \/\/ = qbpms.form.get( &#39;q_Currency&#39; );\n  console.log( &quot;Number of Selected: &quot; + arrOptions.length );\n\n  let strInnerHtml = &#39;&#39;;\n  if( arrOptions.length ){\n    if( arrOptions[0].value === &#39;jpy&#39; ){\n      strInnerHtml =\n        &#39;&lt;span style=&quot;font-weight:bold; color:#C60F38&quot;&gt; Selected: \u00a5&lt;\/span&gt; &#39; +\n        &#39;(&#39; + arrOptions[0].value + &#39;)&#39;; \n    }else if( arrOptions[0].value === &#39;usd&#39; ){\n      strInnerHtml =\n        &#39;&lt;span style=&quot;font-weight:bold; color:#1E7E4B&quot;&gt; Selected: $&lt;\/span&gt; &#39; +\n        &#39;(&#39; + arrOptions[0].value + &#39;)&#39;; \n    }else if( arrOptions[0].value === &#39;eur&#39; ){\n      strInnerHtml =\n        &#39;&lt;span style=&quot;font-weight:bold; color:#003295&quot;&gt; Selected: \u20ac&lt;\/span&gt; &#39; +\n        &#39;(&#39; + arrOptions[0].value + &#39;)&#39;; \n    }\n  }\n  document.querySelector( &quot;#user_notice01&quot; ).innerHTML = strInnerHtml;\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Check All Checkboxes<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Check-All-Checkboxes-20220729.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"256\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/deco-Check-All-Checkboxes-20220729.gif?resize=1280%2C256&#038;ssl=1\" alt=\"Check All Checkboxes\" class=\"wp-image-125787\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2192 SELECT (SELECT_CHECKBOX): <code>q_Regions<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Check-All-Checkboxes\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;div style=&quot;text-align: right&quot;&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;user_checkCheckboxes(\n                   &quot;q_Regions&quot;,\n                   &quot;CA&quot;, &quot;FR&quot;, &quot;DE&quot;, &quot;IT&quot;, &quot;JP&quot;, &quot;GB&quot;, &quot;US&quot;\n                 )&#39;&gt;Check All&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;qbpms.form.set( &quot;q_Regions&quot;, null )&#39;&gt;Clear All&lt;\/button&gt;\n&lt;\/div&gt;\n\n&lt;script&gt;\nfunction user_checkCheckboxes( qfieldName, ...arrStrValues ){ \/\/ SELECT_CHECKBOX\n  \/\/ rest parameter syntax allows an indefinite number of arguments as an array\n  qbpms.form.set( qfieldName, arrStrValues );\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Increment Date using +\/- Button<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Increment-Date-using-Button-20220803.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"540\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Increment-Date-using-Button-20220803.gif?resize=1280%2C540&#038;ssl=1\" alt=\"Increment Date using +\/- Button\" class=\"wp-image-125906\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u21c6 DATE (DATE_YMD): <code>q_DueDate<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_footnote_DueDate<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Increment-Date\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_DueDate&quot;, 0, 0, -7 );\n  user_setFootnote_DueDate();\n&#39;&gt;-7d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_DueDate&quot;, 0, 0, -1 );\n  user_setFootnote_DueDate();\n&#39;&gt;-1d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_DueDate&quot;, 0, 0, 1 );\n  user_setFootnote_DueDate();\n&#39;&gt;+1d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_DueDate&quot;, 0, 0, 7 );\n  user_setFootnote_DueDate();\n&#39;&gt;+7d&lt;\/button&gt;\n&lt;span id=&quot;user_footnote_DueDate&quot;&gt;&lt;\/span&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;ready&#39;,               user_setFootnote_DueDate ); \/\/ for Initial Value\nqbpms.form.on( &#39;change&#39;, &#39;q_DueDate&#39;, user_setFootnote_DueDate );\n\nfunction user_setFootnote_DueDate(){\n  let dateTarget = qbpms.form.get( &quot;q_DueDate&quot; );\n  if( dateTarget === null ){ return; }\n  let dateNow = new Date();\n  let bigDateDifMsec  = new Big( dateTarget.getTime() - dateNow.getTime() );\n  let bigDateDifHours = bigDateDifMsec.div(1000).div(60).div(60).round(1, Big.roundDown);\n  let bigDateDifDays  = bigDateDifMsec.div(1000).div(60).div(60).div(24).round(1, Big.roundDown);\n  \/\/ https:\/\/mikemcl.github.io\/big.js\/#round\n  let strInnerHtml = &quot;&quot;;\n  if( bigDateDifDays.gt(1) ){\n    strInnerHtml =\n      &#39;&lt;span style=&quot;background-color:#00ffff&quot;&gt;&#39; +\n      bigDateDifDays.toString() + &#39; days&#39; +\n      &#39;&lt;\/span&gt;&#39;;\n  }else if( Big(1).gte(bigDateDifDays) && bigDateDifDays.gt(0) ){\n    strInnerHtml =\n      &#39;&lt;span style=&quot;background-color:#80ff00&quot;&gt;&#39; +\n      bigDateDifHours.toString() + &#39; h (tomorrow)&#39; +\n      &#39;&lt;\/span&gt;&#39;;\n  }else if( Big(0).gte(bigDateDifDays) && bigDateDifDays.gt(-1) ){\n    strInnerHtml =\n      &#39;&lt;span style=&quot;background-color:#ffff00&quot;&gt;&#39; +\n      bigDateDifHours.abs().toString() + &#39; h ago (today)&#39; +\n      &#39;&lt;\/span&gt;&#39;;\n  }else if( Big(-1).gte(bigDateDifDays) ){\n    strInnerHtml =\n      &#39;&lt;span style=&quot;background-color:#ff8000&quot;&gt;&#39; +\n      bigDateDifDays.abs().toString() + &#39; days ago (PastDate\/\u904e\u53bb)&#39; +\n      &#39;&lt;\/span&gt;&#39;;\n  }\n  document.querySelector( &#39;#user_footnote_DueDate&#39; ).innerHTML = strInnerHtml;\n}\n\nfunction user_addYmdQDate( qfieldName, numY, numM, numD, numHour = 0, numMin = 0 ){\n  \/\/ Supports QDate and QDatetime (Undefined parts will be completed 2000-01-01T00:00:00.)\n  let dateTmp = qbpms.form.get( qfieldName );\n  if( dateTmp === null ){ return; }\n  \/\/ console.log( dateTmp.toISOString() );\n  dateTmp.setFullYear( dateTmp.getFullYear() + numY );\n  dateTmp.setMonth   ( dateTmp.getMonth()    + numM );\n  dateTmp.setDate    ( dateTmp.getDate()     + numD );\n  dateTmp.setHours   ( dateTmp.getHours()    + numHour );\n  dateTmp.setMinutes ( dateTmp.getMinutes()  + numMin );\n  qbpms.form.set( qfieldName, dateTmp );\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Set Date Range and Datetime<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Set-Date-Range-and-Datetime-20220803.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Set-Date-Range-and-Datetime-20220803.gif?resize=1280%2C720&#038;ssl=1\" alt=\"Set Date Range and Datetime\" class=\"wp-image-125910\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u21c6 DATE (DATE_YMD): <code>q_StartDate<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_footnote_StartDate<\/code><\/li>\n\n\n\n<li>\u21c6 DATE (DATE_YMD): <code>q_EndDate<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_footnote_EndDate<\/code><\/li>\n\n\n\n<li>\u21c6 DATETIME: <code>q_NotificationDatetime<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_footnote_NotificationDatetime<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Set-Date-Range-Start\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;span id=&quot;user_footnote_StartDate&quot;&gt;&lt;\/span&gt;&lt;br&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_rewriteQDate_First( &quot;q_StartDate&quot; );\n  user_setFootnote_StartDate();\n&#39;&gt;First Day&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_rewriteQDate_MonOfNext( &quot;q_StartDate&quot; );\n  user_setFootnote_StartDate();\n&#39;&gt;Monday of Next Week&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_rewriteQDate_FirstOfNext( &quot;q_StartDate&quot; );\n  user_setFootnote_StartDate();\n&#39;&gt;First Day of Next Month&lt;\/button&gt;\n&lt;br \/&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_StartDate&quot;, 0, 0, -1 );\n  user_setFootnote_StartDate();\n&#39;&gt;-1d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_StartDate&quot;, 0, 0, 1 );\n  user_setFootnote_StartDate();\n&#39;&gt;+1d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_StartDate&quot;, 0, 0, 7 );\n  user_setFootnote_StartDate();\n&#39;&gt;+7d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_StartDate&quot;, 0, 1, 0 );\n  user_setFootnote_StartDate();\n&#39;&gt;+1m&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_StartDate&quot;, 1, 0, 0 );\n  user_setFootnote_StartDate();\n&#39;&gt;+1y&lt;\/button&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;ready&#39;,                 user_setFootnote_StartDate ); \/\/ for Initial Value\nqbpms.form.on( &#39;change&#39;, &#39;q_StartDate&#39;, user_setFootnote_StartDate );\n\nfunction user_setFootnote_StartDate(){\n  let dateTarget = qbpms.form.get( &quot;q_StartDate&quot; );\n  if( dateTarget === null ){ return; }\n  let strInnerHtml = &quot;&quot;;\n  if( dateTarget.getDay() === 0 ){ \/\/ Sunday - Saturday : 0 - 6\n    strInnerHtml = &#39;&lt;span style=&quot;background-color:#FFCCCC&quot;&gt;Sun \u65e5\u66dc\u65e5&lt;\/span&gt;&#39;;\n  }else if( dateTarget.getDay() === 1 ){\n    strInnerHtml = &#39;&lt;span&gt;Mon \u6708\u66dc\u65e5&lt;\/span&gt;&#39;;\n  }else if( dateTarget.getDay() === 2 ){\n    strInnerHtml = &#39;&lt;span&gt;Tue \u706b\u66dc\u65e5&lt;\/span&gt;&#39;;\n  }else if( dateTarget.getDay() === 3 ){\n    strInnerHtml = &#39;&lt;span&gt;Wed \u6c34\u66dc\u65e5&lt;\/span&gt;&#39;;\n  }else if( dateTarget.getDay() === 4 ){\n    strInnerHtml = &#39;&lt;span&gt;Thu \u6728\u66dc\u65e5&lt;\/span&gt;&#39;;\n  }else if( dateTarget.getDay() === 5 ){\n    strInnerHtml = &#39;&lt;span&gt;Fri \u91d1\u66dc\u65e5&lt;\/span&gt;&#39;;\n  }else if( dateTarget.getDay() === 6 ){\n    strInnerHtml = &#39;&lt;span style=&quot;background-color:#BDD7EE&quot;&gt;Sat \u571f\u66dc\u65e5&lt;\/span&gt;&#39;;\n  }\n  document.querySelector( &#39;#user_footnote_StartDate&#39; ).innerHTML = strInnerHtml;\n}\n\nfunction user_addYmdQDate( qfieldName, numY, numM, numD, numHour = 0, numMin = 0 ){\n  \/\/ Supports QDate and QDatetime (Undefined parts will be completed 2000-01-01T00:00:00.)\n  let dateTmp = qbpms.form.get( qfieldName );\n  if( dateTmp === null ){ return; }\n  \/\/ console.log( dateTmp.toISOString() );\n  dateTmp.setFullYear( dateTmp.getFullYear() + numY );\n  dateTmp.setMonth   ( dateTmp.getMonth()    + numM );\n  dateTmp.setDate    ( dateTmp.getDate()     + numD );\n  dateTmp.setHours   ( dateTmp.getHours()    + numHour );\n  dateTmp.setMinutes ( dateTmp.getMinutes()  + numMin );\n  qbpms.form.set( qfieldName, dateTmp );\n}\n\nfunction user_rewriteQDate_First( qfieldName ){\n  let dateTmp = qbpms.form.get( qfieldName );\n  if( dateTmp === null ){ return; }\n  dateTmp.setDate(1);\n  qbpms.form.set( qfieldName, dateTmp );\n}\nfunction user_rewriteQDate_MonOfNext( qfieldName ){\n  let dateTmp = qbpms.form.get( qfieldName );\n  if( dateTmp === null ){ return; }\n  \/\/ getDay() -&gt; Sunday - Saturday : 0 - 6\n  \/\/ plus(7-getDay()) -&gt; Weekend Sunday\n  dateTmp.setDate( dateTmp.getDate() + ( 7 - dateTmp.getDay() ) + 1 );\n  \/\/ Week: Monday - Sunday (ISO 8601)\n  qbpms.form.set( qfieldName, dateTmp );\n}\nfunction user_rewriteQDate_FirstOfNext( qfieldName ){\n  let dateTmp = qbpms.form.get( qfieldName );\n  if( dateTmp === null ){ return; }\n  dateTmp.setDate(1);\n  dateTmp.setMonth( dateTmp.getMonth() + 1 );\n  qbpms.form.set( qfieldName, dateTmp );\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Set-Date-Range-End\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;span id=&quot;user_footnote_EndDate&quot;&gt;&lt;\/span&gt;\n&lt;br \/&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;user_copyPasteQDate( &quot;q_StartDate&quot;, &quot;q_EndDate&quot; )&#39;&gt;copy from q_StartDate&lt;\/button&gt;\n&lt;br \/&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_EndDate&quot;, 1, 0, -1 );\n  user_setFootnote_EndDate();\n&#39;&gt;+1y-1d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_EndDate&quot;, 0, 1, -1 );\n  user_setFootnote_EndDate();\n&#39;&gt;+1m-1d&lt;\/button&gt;\n&lt;br \/&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_EndDate&quot;, 0, -1, 0 );\n  user_setFootnote_EndDate();\n&#39;&gt;-1m&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_EndDate&quot;, 0, 0, -1 );\n  user_setFootnote_EndDate();\n&#39;&gt;-1d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_EndDate&quot;, 0, 0, 1 );\n  user_setFootnote_EndDate();\n&#39;&gt;+1d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_EndDate&quot;, 0, 1, 0 );\n  user_setFootnote_EndDate();\n&#39;&gt;+1m&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_addYmdQDate( &quot;q_EndDate&quot;, 1, 0, 0 );\n  user_setFootnote_EndDate();\n&#39;&gt;+1y&lt;\/button&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;ready&#39;,               user_setFootnote_EndDate ); \/\/ for Initial Value\nqbpms.form.on( &#39;change&#39;, &#39;q_EndDate&#39;, user_setFootnote_EndDate );\n\nfunction user_setFootnote_EndDate(){\n  let dateStart = qbpms.form.get( &quot;q_StartDate&quot; );\n  if( dateStart === null ){ return; }\n  let dateEnd   = qbpms.form.get( &quot;q_EndDate&quot; );\n  if( dateEnd   === null ){ return; }\n  let numDateDifMsec  = dateEnd.getTime() - dateStart.getTime();\n  let numDateDifDays  = numDateDifMsec \/1000 \/60 \/ 60 \/24;\n  let strInnerHtml = &quot;&quot;;\n  if( numDateDifDays &lt; 0 ){\n    strInnerHtml =\n      &#39;&lt;span style=&quot;background-color:#ff0000&quot;&gt; Start-End Range: &#39; +\n      ( numDateDifDays + 1 )  + &#39; days ( &lt; 0 )&#39; +\n      &#39;&lt;\/span&gt;&#39;;\n  }else{\n    strInnerHtml = &#39; Start-End Range: &#39; +  ( numDateDifDays + 1 ) + &#39; days&#39;;\n  }\n  document.querySelector( &#39;#user_footnote_EndDate&#39; ).innerHTML = strInnerHtml;\n}\n\nfunction user_copyPasteQDate( qfieldNameSource, qfieldNameDestination ){\n  \/\/ Also supports QDatetime (Undefined parts completed 2000-01-01T00:00:00.)\n  if( qbpms.form.get( qfieldNameSource ) === null ){ return; }\n  const dateSource = qbpms.form.get( qfieldNameSource );\n  qbpms.form.set( qfieldNameDestination, dateSource );\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Set-Date-Range-Notification\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;span id=&quot;user_footnote_NotificationDatetime&quot;&gt;&lt;\/span&gt;\n&lt;br \/&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\n  user_copyPasteQDate( &quot;q_StartDate&quot;, &quot;q_NotificationDatetime&quot; );\n  user_setFootnote_NotificationDatetime();\n&#39;&gt;copy from q_StartDate&lt;\/button&gt;\n&lt;br \/&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\nuser_setHmQDatetime( &quot;q_NotificationDatetime&quot;, 9, 0 );\n  user_setFootnote_NotificationDatetime();\n&#39;&gt;09:00&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\nuser_setHmQDatetime( &quot;q_NotificationDatetime&quot;, 12, 0 );\n  user_setFootnote_NotificationDatetime();\n&#39;&gt;12:00&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;\nuser_setHmQDatetime( &quot;q_NotificationDatetime&quot;, 17, 0 );\n  user_setFootnote_NotificationDatetime();\n&#39;&gt;17:00&lt;\/button&gt;\n&lt;br \/&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;user_addYmdQDate( &quot;q_NotificationDatetime&quot;, 0, -1, 0 ); user_setFootnote_NotificationDatetime();&#39;&gt;-1m&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;user_addYmdQDate( &quot;q_NotificationDatetime&quot;, 0, 0, -1 ); user_setFootnote_NotificationDatetime();&#39;&gt;-1d&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;user_addYmdQDate( &quot;q_NotificationDatetime&quot;, 0, 0, 0, -1 ); user_setFootnote_NotificationDatetime();&#39;&gt;-1h&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;user_addYmdQDate( &quot;q_NotificationDatetime&quot;, 0, 0, 0, 1 ); user_setFootnote_NotificationDatetime();&#39;&gt;+1h&lt;\/button&gt;\n&lt;button type=&#39;button&#39; onclick=&#39;user_addYmdQDate( &quot;q_NotificationDatetime&quot;, 0, 0, 1 ); user_setFootnote_NotificationDatetime();&#39;&gt;+1d&lt;\/button&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;ready&#39;,                            user_setFootnote_NotificationDatetime ); \/\/ for Initial Value\nqbpms.form.on( &#39;change&#39;, &#39;q_NotificationDatetime&#39;, user_setFootnote_NotificationDatetime );\n\nfunction user_setFootnote_NotificationDatetime(){\n  let dateStart = qbpms.form.get( &quot;q_StartDate&quot; );\n  if( dateStart === null ){ return; }\n  let dateNoDa  = qbpms.form.get( &quot;q_NotificationDatetime&quot; );\n  if( dateNoDa  === null ){ return; }\n  let numDateDifMsec  = dateNoDa.getTime() - dateStart.getTime();\n  let numDateDifDays  = numDateDifMsec \/1000 \/60 \/ 60 \/24;\n  let strInnerHtml = &quot;&quot;;\n  if( numDateDifDays &gt; 0 ){\n    strInnerHtml =\n      &#39;&lt;span style=&quot;background-color:#ff0000&quot;&gt; Start-Notification: &#39; +\n      Math.floor( numDateDifDays )  + &#39; days passed ( &gt; 0 )&#39; +\n      &#39;&lt;\/span&gt;&#39;;\n  }else{\n    strInnerHtml = &#39; Start-Notification: &#39; +  Math.floor( numDateDifDays ) + &#39; days&#39;;\n  }\n  document.querySelector( &#39;#user_footnote_NotificationDatetime&#39; ).innerHTML = strInnerHtml;\n}\n\nfunction user_setHmQDatetime( qfieldName, numHour = 0, numMin = 0 ){\n  let dateTmp = qbpms.form.get( qfieldName );\n  if( dateTmp === null ){ return; }\n  \/\/ console.log( dateTmp.toISOString() );\n  dateTmp.setHours   ( numHour );\n  dateTmp.setMinutes ( numMin );\n  qbpms.form.set( qfieldName, dateTmp );\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Calculate Working Hours<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Calculate-Working-Hours-20220929.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Calculate-Working-Hours-20220929.gif?resize=1280%2C720&#038;ssl=1\" alt=\"Calculate Working Hours (W3C, Web Animations API)\nCalculates the difference (elapsed time) between Start time data and End time data. The values exceeding 8 hours are displayed in red. The values exceeding 12 hours or negative values are displayed in purple. (Bar Chart)\nStart\u6642\u523b\u30c7\u30fc\u30bf\u3068End\u6642\u523b\u30c7\u30fc\u30bf\u306e\u5dee\u5206\uff08\u7d4c\u904e\u6642\u9593\uff09\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002\u300c8\u6642\u9593\u3092\u8d85\u3048\u308b\u5024\u300d\u3068\u306a\u3063\u305f\u5834\u5408\u3001\u8d64\u8272\u306e\u5b57\u3067\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u300c12\u6642\u9593\u3092\u8d85\u3048\u308b\u5024\u300d\u3084\u300c\u30de\u30a4\u30ca\u30b9\u306e\u5024\u300d\u3068\u306a\u3063\u305f\u5834\u5408\u306b\u306f\u3001\u7d2b\u8272\u306e\u5b57\u3067\u8868\u793a\u3055\u308c\u307e\u3059\u3002\uff08\u68d2\u30b0\u30e9\u30d5\u8868\u793a\u4ed8\u304d\uff09\" class=\"wp-image-137211\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/46\/1\/prISN2C1nWQvp4i8KpzGWiIsUmxIKp25\/view\" target=\"_blank\" rel=\"noreferrer noopener\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 DATETIME: <code>q_StartTime<\/code><\/li>\n\n\n\n<li>\u2190 DATETIME: <code>q_EndTime<\/code><\/li>\n\n\n\n<li>\u2190 NUMERIC (2 decimal places): <code>q_BreakTimes<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2192 <code>span#user_WorkingHours<\/code> (update)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"q_StartTime\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (q_StartTime)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;script&gt;\nfunction user_setQDatetime( qfieldName, numHour = 0, numMin = 0 ){\n  let dateTmp      = new Date();\n  let dateSource   = qbpms.form.get( qfieldName );\n  if( dateSource !== null ){\n    dateTmp.setFullYear( dateSource.getFullYear() );\n    dateTmp.setDate    ( dateSource.getDate()     );\n  }\n  dateTmp.setHours   ( numHour );\n  dateTmp.setMinutes ( numMin );\n  qbpms.form.set( qfieldName, dateTmp );\n}\nfunction user_addYmdQDate( qfieldName, numY, numM, numD, numHour = 0, numMin = 0 ){\n  \/\/ Supports QDate and QDatetime (Undefined parts will be completed 2000-01-01T00:00:00.)\n  let dateTmp = qbpms.form.get( qfieldName );\n  if( dateTmp === null ){ return; }\n  \/\/ console.log( dateTmp.toISOString() );\n  dateTmp.setFullYear( dateTmp.getFullYear() + numY );\n  dateTmp.setMonth   ( dateTmp.getMonth()    + numM );\n  dateTmp.setDate    ( dateTmp.getDate()     + numD );\n  dateTmp.setHours   ( dateTmp.getHours()    + numHour );\n  dateTmp.setMinutes ( dateTmp.getMinutes()  + numMin );\n  qbpms.form.set( qfieldName, dateTmp );\n}\n&lt;\/script&gt;\n\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_setQDatetime( &quot;q_StartTime&quot;, 9, 0 );\n&#39;&gt;09:00&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_setQDatetime( &quot;q_StartTime&quot;, 9, 30 );\n&#39;&gt;09:30&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_setQDatetime( &quot;q_StartTime&quot;, 10, 0 );\n&#39;&gt;10:00&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_setQDatetime( &quot;q_StartTime&quot;, 12, 0 );\n&#39;&gt;12:00&lt;\/button&gt;\n&lt;br \/&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_StartTime&quot;, 0, 0, 0, -1 )&#39;&gt;-1:00&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_StartTime&quot;, 0, 0, 0, 0, -10 )&#39;&gt;-0:10&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_StartTime&quot;, 0, 0, 0, 0, -1 )&#39;&gt;-0:01&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_StartTime&quot;, 0, 0, 0, 0, 1 )&#39;&gt;+0:01&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_StartTime&quot;, 0, 0, 0, 0, 10 )&#39;&gt;+0:10&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_StartTime&quot;, 0, 0, 0, 1 )&#39;&gt;+1:00&lt;\/button&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"q_EndTime\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (q_EndTime)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39;\n onclick=&#39;user_setQDatetime( &quot;q_EndTime&quot;, 14, 30 );\n&#39;&gt;14:30&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_setQDatetime( &quot;q_EndTime&quot;, 15, 0 );\n&#39;&gt;15:00&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_setQDatetime( &quot;q_EndTime&quot;, 17, 0 );\n&#39;&gt;17:00&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_setQDatetime( &quot;q_EndTime&quot;, 18, 0 );\n&#39;&gt;18:00&lt;\/button&gt;\n&lt;br \/&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_EndTime&quot;, 0, 0, 0, -1 )&#39;&gt;-1:00&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_EndTime&quot;, 0, 0, 0, 0, -10 )&#39;&gt;-0:10&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_EndTime&quot;, 0, 0, 0, 0, -1 )&#39;&gt;-0:01&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_EndTime&quot;, 0, 0, 0, 0, 1 )&#39;&gt;+0:01&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_EndTime&quot;, 0, 0, 0, 0, 10 )&#39;&gt;+0:10&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;user_addYmdQDate( &quot;q_EndTime&quot;, 0, 0, 0, 1 )&#39;&gt;+1:00&lt;\/button&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"q_BreakTimes\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (q_BreakTimes)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39;\n onclick=&#39;qbpms.form.set( &quot;q_BreakTimes&quot;, 0 )&#39;&gt;0.0 h&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;qbpms.form.set( &quot;q_BreakTimes&quot;, 0.5 )&#39;&gt;0.5 h&lt;\/button&gt;\n&lt;button type=&#39;button&#39;\n onclick=&#39;qbpms.form.set( &quot;q_BreakTimes&quot;, 1 )&#39;&gt;1.0 h&lt;\/button&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"calculate-working-hours-Guide-Panel\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (Guide Panel)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;div id=&quot;user_WorkingHours&quot;&gt;&lt;\/div&gt;\n&lt;script&gt;\n\/* Calculate Working Hours\nCalculates the difference (elapsed time) between Start time data and End time data. The values exceeding 8 hours are displayed in red. The values exceeding 12 hours or negative values are displayed in purple. (Bar Chart)\nStart\u6642\u523b\u30c7\u30fc\u30bf\u3068End\u6642\u523b\u30c7\u30fc\u30bf\u306e\u5dee\u5206\uff08\u7d4c\u904e\u6642\u9593\uff09\u3092\u8a08\u7b97\u3057\u307e\u3059\u3002\u300c8\u6642\u9593\u3092\u8d85\u3048\u308b\u5024\u300d\u3068\u306a\u3063\u305f\u5834\u5408\u3001\u8d64\u8272\u306e\u5b57\u3067\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u300c12\u6642\u9593\u3092\u8d85\u3048\u308b\u5024\u300d\u3084\u300c\u30de\u30a4\u30ca\u30b9\u306e\u5024\u300d\u3068\u306a\u3063\u305f\u5834\u5408\u306b\u306f\u3001\u7d2b\u8272\u306e\u5b57\u3067\u8868\u793a\u3055\u308c\u307e\u3059\u3002\uff08\u68d2\u30b0\u30e9\u30d5\u8868\u793a\u4ed8\u304d\uff09\n*\/\n\nqbpms.form.on ( &#39;ready&#39;,                  user_calcQdatetimeDiff );\nqbpms.form.on ( &#39;change&#39;, &#39;q_StartTime&#39;,  user_calcQdatetimeDiff );\nqbpms.form.on ( &#39;change&#39;, &#39;q_EndTime&#39;,    user_calcQdatetimeDiff );\nqbpms.form.on ( &#39;change&#39;, &#39;q_BreakTimes&#39;, user_calcQdatetimeDiff );\n\nfunction user_calcQdatetimeDiff () {\n  const qDatetimeStart = &#39;q_StartTime&#39;;            \/\/\/\/\/ \u2605\u2605\u2605 EDIT HERE \u2605\u2605\u2605\n  const qDatetimeEnd   = &#39;q_EndTime&#39;;              \/\/\/\/\/ \u2605\u2605\u2605 EDIT HERE \u2605\u2605\u2605\n  const selectorId     = &#39;user_WorkingHours&#39;;      \/\/\/\/\/ \u2605\u2605\u2605 EDIT HERE \u2605\u2605\u2605\n  const qNumericBreak  = &#39;q_BreakTimes&#39;;            \/\/\/\/\/ \u2605\u2605\u2605 EDIT HERE \u2605\u2605\u2605\n\n  const strZoneAcolor  = &#39;#009900&#39;; \/\/ green         \/\/\/\/\/ \u2605\u2605 to customize \u2605\u2605\n  const numZoneAhour   = 7;         \/\/ upto 7h       \/\/\/\/\/ \u2605\u2605 to customize \u2605\u2605\n  const strZoneBcolor  = &#39;#87c645&#39;; \/\/ light green   \/\/\/\/\/ \u2605\u2605 to customize \u2605\u2605\n  const numZoneBhour   = 8;         \/\/ upto 8h       \/\/\/\/\/ \u2605\u2605 to customize \u2605\u2605\n  const strZoneCcolor  = &#39;#EF9A9A&#39;; \/\/ red           \/\/\/\/\/ \u2605\u2605 to customize \u2605\u2605\n  const numZoneChour   = 12;        \/\/ upto 12h      \/\/\/\/\/ \u2605\u2605 to customize \u2605\u2605\n  const strZoneDcolor  = &#39;#990099&#39;; \/\/ purple        \/\/\/\/\/ \u2605\u2605 to customize \u2605\u2605\n  const numZoneDhour   = 16; \/\/ Container width=100% \/\/\/\/\/ \u2605\u2605 to customize \u2605\u2605\n\n  \/\/\/\/ Container: remove all children\n  let elContainer = document.querySelector( &quot;#&quot; + selectorId );\n  elContainer.textContent     = &#39;Working Hours:&#39;;\n\n  \/\/\/\/ Container: draw dotted box\n  elContainer.style.border    = &#39;2px dotted&#39;;\n  elContainer.style.width     = &#39;90%&#39;;\n  elContainer.style.minHeight = &#39;1.8em&#39;;\n  elContainer.style.margin    = &#39;0.5em 5% 0 0&#39;;\n  elContainer.style.maxWidth  = &#39;1000px&#39;;\n  let dateStart = qbpms.form.get ( qDatetimeStart );\n  if( dateStart === null ){ console.log( &quot; Start===null&quot; ); return; }\n  let dateEnd   = qbpms.form.get ( qDatetimeEnd   );\n  if( dateEnd   === null ){ console.log( &quot; End===null&quot; ); return; }\n\n  let bigBreak  = qbpms.form.get ( qNumericBreak );\n  console.log( &quot; Break Times: &quot; + bigBreak + &quot; (h)&quot; );\n  let numBreak  = bigBreak ? bigBreak : 0;\n\n  \/\/\/\/ Calc length of bar chart\n  let numMinute = ( dateEnd.getTime() - dateStart.getTime() ) \/1000 \/60 -\n                  ( numBreak *60 );\n  let numHour   = Math.ceil ( numMinute *100 \/60 ) \/100;\n  console.log( &quot; Working Hours: &quot; + numHour + &quot; (h)&quot; );\n\n  let strHour   = numHour.toFixed(2) + &quot; h&quot;;       \/\/ e.g. &quot;7.99 h&quot;, &quot;15.99 h&quot;, &quot;100.0 h&quot;\n  let strHHmm   = ( Math.floor ( numMinute \/ 60 ) ) +\n                  &quot;:&quot; + ( &quot;0&quot; + ( numMinute % 60 ) ).slice(-2); \/\/ e.g. &quot;07:59&quot;, &quot;15:59&quot;, &quot;100:00&quot;\n  let numWidthA = 0;\n  let numWidthB = 0;\n  let numWidthC = 0;\n  let numWidthD = 0;\n  if( numHour &lt; 0 ){\n  }else if( numHour &lt;= numZoneAhour ){\n    numWidthA = Math.ceil ( numHour                       \/ numZoneDhour *100);\n  }else if( numHour &lt;= numZoneBhour ){\n    numWidthA = Math.ceil ( numZoneAhour                  \/ numZoneDhour *100 );\n    numWidthB = Math.ceil ( (numHour      - numZoneAhour) \/ numZoneDhour *100 );\n  }else if( numHour &lt;= numZoneChour ){\n    numWidthA = Math.ceil ( numZoneAhour                  \/ numZoneDhour *100 );\n    numWidthB = Math.ceil ( (numZoneBhour - numZoneAhour) \/ numZoneDhour *100 );\n    numWidthC = Math.ceil ( (numHour      - numZoneBhour) \/ numZoneDhour *100 );\n  }else if( numHour &lt; numZoneDhour ){\n    numWidthA = Math.ceil ( numZoneAhour                  \/ numZoneDhour *100 );\n    numWidthB = Math.ceil ( (numZoneBhour - numZoneAhour) \/ numZoneDhour *100 );\n    numWidthC = Math.ceil ( (numZoneChour - numZoneBhour) \/ numZoneDhour *100 );\n    numWidthD = Math.ceil ( (numHour      - numZoneChour) \/ numZoneDhour *100 );\n  }else if( numHour &gt;= numZoneDhour ){\n    numWidthD = 100;\n  }\n\n  \/\/\/\/ Calc offset of Label\n  let numLeft  = Math.ceil ( numHour \/ numZoneDhour *100 );\n  if( numLeft &lt; 0 )   { numLeft = 0; }\n  if( numLeft &gt;= 100 ){ numLeft = 0; }\n\n  \/\/\/\/ Label for Diff Data: \n  let elLabel             = document.createElement( &quot;div&quot; );\n  let elHour              = document.createElement( &quot;span&quot; );\n  elHour.style.zIndex     = 2;\n  elHour.style.position   = &#39;relative&#39;;\n  elHour.style.left       = numLeft + &quot;%&quot;;\n  elLabel.append( elHour );\n  elContainer.append( elLabel );\n\n  \/\/\/\/ Bar Chart configs for user recognition:\n  let elBarBox            = document.createElement( &quot;div&quot; );\n  elBarBox.style.width    = &#39;100%&#39;;\n  elBarBox.style.whiteSpace = &quot;nowrap&quot;; \/\/ Prevention of line feed code insertion\n  let elBarA              = document.createElement( &quot;span&quot; );\n  elBarA.style.display    = &#39;inline-block&#39;;\n  elBarA.style.background = strZoneAcolor;\n  elBarA.style.height     = &#39;0.8em&#39;;\n  elBarBox.append( elBarA );\n  let elBarB              = document.createElement( &quot;span&quot; );\n  elBarB.style.display    = &#39;inline-block&#39;;\n  elBarB.style.background = strZoneBcolor;\n  elBarB.style.height     = &#39;0.8em&#39;;\n  elBarBox.append( elBarB );\n  let elBarC              = document.createElement( &quot;span&quot; );\n  elBarC.style.display    = &#39;inline-block&#39;;\n  elBarC.style.background = strZoneCcolor;\n  elBarC.style.height     = &#39;0.8em&#39;;\n  elBarBox.append( elBarC );\n  let elBarD              = document.createElement( &quot;span&quot; );\n  elBarD.style.display    = &#39;inline-block&#39;;\n  elBarD.style.background = strZoneDcolor;\n  elBarD.style.height     = &#39;0.8em&#39;;\n  elBarBox.append( elBarD );\n  elContainer.append( elBarBox );\n\n  \/\/\/\/ Bar Animation:\n  if( numHour &lt; 0 ){                  \/\/\/\/\/\/ Less than 0 h \/\/\/\/\/\/\n    elHour.innerHTML        = &#39;&lt;span class=&quot;material-icons&quot;&gt;warning&lt;\/span&gt;&#39; +\n                              &#39; &lt;strong&gt;Negative Value \uff0f \u30de\u30a4\u30ca\u30b9\u5024\u3067\u3059&lt;\/strong&gt;&#39;;\n    elHour.style.color      = strZoneDcolor;\n\n  }else if( numHour &lt;= numZoneAhour ){ \/\/\/\/\/\/ 7h or less \/\/\/\/\/\/\n    elHour.innerHTML        = &#39;&lt;span class=&quot;material-icons&quot;&gt;sentiment_satisfied_alt&lt;\/span&gt; &#39; +\n                              strHour + &#39; (&#39; + strHHmm + &#39;)&#39;;\n    elHour.style.color      = strZoneAcolor;\n    elBarA.animate([ \/\/\/ W3C, Web Animations API, Element.animate()\n      { width: &#39;0%&#39; },\n      { width: numWidthA + &quot;%&quot; }\n    ],{duration:700,fill:&#39;forwards&#39;,easing:&#39;linear&#39;}); \/\/\/ KeyframeEffect\n    \/\/ CAUTION: W3C, Web Animations: Working Draft (asof 20220929)\n\n  }else if( numHour &lt;= numZoneBhour ){ \/\/\/\/\/\/ Over 7h \/\/\/\/\/\/\n    elHour.innerHTML        = &#39;&lt;span class=&quot;material-icons&quot;&gt;sentiment_neutral&lt;\/span&gt; &#39; +\n                              strHour + &#39; (&#39; + strHHmm + &#39;)&#39;;\n    elHour.style.color      = strZoneAcolor; \/\/ or strZoneBcolor;\n    elBarA.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthA + &quot;%&quot; }\n    ],{duration:700,fill:&#39;forwards&#39;,easing:&#39;linear&#39;});\n    elBarB.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthB + &quot;%&quot; }\n    ],{delay:700,duration:400,fill:&#39;forwards&#39;,easing:&#39;ease-out&#39;});\n\n  }else if( numHour &lt;= numZoneChour ){ \/\/\/\/\/\/ Over 8h \/\/\/\/\/\/\n    elHour.innerHTML        = &#39;&lt;span class=&quot;material-icons&quot;&gt;sentiment_dissatisfied&lt;\/span&gt; &#39; +\n                              strHour + &#39; (&#39; + strHHmm + &#39;)&#39;;\n    elHour.style.color      = &quot;#D50000&quot;; \/\/ or strZoneCcolor;\n    elBarA.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthA + &quot;%&quot; }\n    ],{duration:700,fill:&#39;forwards&#39;,easing:&#39;linear&#39;});\n    elBarB.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthB + &quot;%&quot; }\n    ],{delay:700,duration:100,fill:&#39;forwards&#39;,easing:&#39;linear&#39;});\n    elBarC.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthC + &quot;%&quot; }\n    ],{delay:800,duration:1200,fill:&#39;forwards&#39;,easing:&#39;ease-out&#39;});\n\n  }else if( numHour &lt; numZoneDhour ){ \/\/\/\/\/\/ Over 12h \/\/\/\/\/\/\n    elHour.innerHTML        = &#39;&lt;span class=&quot;material-icons&quot;&gt;sentiment_very_dissatisfied&lt;\/span&gt; &#39; +\n                              &#39;&lt;strong&gt;&#39; + strHour + &#39; (&#39; + strHHmm + &#39;)&lt;\/strong&gt;&#39;;\n    elHour.style.color      = strZoneDcolor;\n    elBarA.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthA + &quot;%&quot; }\n    ],{duration:700,fill:&#39;forwards&#39;,easing:&#39;linear&#39;});\n    elBarB.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthB + &quot;%&quot; }\n    ],{delay:700,duration:100,fill:&#39;forwards&#39;,easing:&#39;linear&#39;});\n    elBarC.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthC + &quot;%&quot; }\n    ],{delay:800,duration:800,fill:&#39;forwards&#39;,easing:&#39;linear&#39;});\n    elBarD.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthD + &quot;%&quot; }\n    ],{delay:1600,duration:1600,fill:&#39;forwards&#39;,easing:&#39;ease-out&#39;});\n\n  }else if( numHour &gt;= numZoneDhour ){  \/\/\/\/\/\/ Over 12h \/\/\/\/\/\/\n    elHour.innerHTML        = &#39;&lt;span class=&quot;material-icons&quot;&gt;warning&lt;\/span&gt;&#39; +\n                              &#39;&lt;strong&gt;&#39; + strHour + &#39; (&#39; + strHHmm + &#39;)&lt;\/strong&gt;&#39; +\n                              &#39; \u2190 Are you sure? \uff0f \u6b63\u3057\u3044\u5024\u3067\u3059\u304b\uff1f&#39;;\n    elHour.style.color      = strZoneDcolor;\n    elBarD.animate([\n      { width: &#39;0%&#39; },\n      { width: numWidthD + &quot;%&quot; }\n    ],{duration:700,fill:&#39;forwards&#39;,easing:&#39;ease-in&#39;});\n  }\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Copy to Clipboard<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Copy-to-Clipboard-20220804.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Copy-to-Clipboard-20220804.gif?resize=1280%2C720&#038;ssl=1\" alt=\"Copy to Clipboard\" class=\"wp-image-126052\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTAREA): <code>q_SalesTSV<\/code><\/li>\n\n\n\n<li>\u2192 clipboard<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Copy-to-Clipboard\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; onclick=&#39;\n  user_copyQStringToClipboard( &quot;q_SalesTSV&quot;, &quot;#user_clicklog_copy&quot; )\n&#39;&gt;copy q_SalesTSV to Clipboard&lt;\/button&gt;\n&lt;span id=&quot;user_clicklog_copy&quot;&gt;&lt;\/span&gt;&lt;br&gt;\n\n&lt;script&gt;\nfunction user_copyQStringToClipboard( qfieldName, spanId ){\n  let strValue = qbpms.form.get( qfieldName );\n  let strInnerHtml = &quot;&quot;;\n  if( strValue === &quot;&quot; ){         \/\/ ReadWrite\n    strInnerHtml = &#39;&lt;span style=&quot;color:#ff0000&quot;&gt; empty, clipboard not updated &lt;\/span&gt;&#39;;\n  }else if( strValue === null ){ \/\/ Read-only\n    strInnerHtml = &#39;&lt;span style=&quot;color:#ff8000&quot;&gt; empty, clipboard not updated &lt;\/span&gt;&#39;;\n  }else{\n    navigator.clipboard.writeText( strValue );\n    \/\/ https:\/\/developer.mozilla.org\/docs\/Web\/API\/Clipboard_API\n    let dateNow = new Date();\n    strInnerHtml = dateNow.toLocaleTimeString() + &quot; copied (&quot; + strValue.length + &quot;)&quot;;\n  }\n  document.querySelector( spanId ).innerHTML = strInnerHtml;\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">The Tab codes <code>\"\\t\"<\/code> stored in <strong>Read-only qString<\/strong> will NOT be copied.<\/p>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Validate with Regular Expressions<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full is-resized q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Validate-with-Regular-Expressions-20220805.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"360\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Validate-with-Regular-Expressions-20220805.gif?resize=1280%2C360&#038;ssl=1\" alt=\"Validate with Regular Expressions\" class=\"wp-image-126055\" style=\"width:1200px;height:337px\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_Email<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_footnote_Email<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Validate-with-Regular-Expressions\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;span id=&quot;user_footnote_Email&quot;&gt;&lt;\/span&gt;&lt;br&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;change&#39;, &#39;q_Email&#39;, user_setFootnote_Email );\n\nfunction user_setFootnote_Email(){\n  let regEmail = \/^[a-zA-Z0-9.!#$%&&#39;*+\\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$\/;\n    \/\/ https:\/\/html.spec.whatwg.org\/multipage\/input.html#valid-e-mail-address\n  let strInnerHtml = &quot;&quot;;\n  let strTarget = qbpms.form.get( &quot;q_Email&quot; );\n  if( strTarget === &quot;&quot; ){          \/\/ ReadWrite QString\n    strInnerHtml = &#39;&lt;span style=&quot;color:#ffa500&quot;&gt; empty &lt;\/span&gt;&#39;;\n  }else if( strTarget === null ){  \/\/ Read-only QString ( no case )\n    strInnerHtml = &#39;&lt;span style=&quot;color:#ffa500&quot;&gt; empty \/ \u7a7a\u3067\u3059 &lt;\/span&gt;&#39;;\n  }else{\n    if( regEmail.test( strTarget ) ){\n      strInnerHtml = &#39;&lt;span style=&quot;color:#0000ff&quot;&gt; \u2713 valid \/ \u6709\u52b9\u3067\u3059 &lt;\/span&gt;&#39;;\n    }else{\n      strInnerHtml = &#39;&lt;span style=&quot;color:#ff0000&quot;&gt; \u2717 invalid \/ \u554f\u984c\u304c\u3042\u308a\u307e\u3059 &lt;\/span&gt;&#39;;\n    }\n  }\n  document.querySelector( &#39;#user_footnote_Email&#39; ).innerHTML = strInnerHtml;\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Show Process Detail<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/10\/deco-show-process-detail-20221004.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1036\" height=\"692\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/10\/deco-show-process-detail-20221004.gif?resize=1036%2C692&#038;ssl=1\" alt=\"\" class=\"wp-image-137378\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING: <code>q_Process_ID<\/code><\/li>\n\n\n\n<li>\u2192 (separated window or tab)<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Validate-using-Check-Digit\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>Show Process Detail: &lt;button type=&quot;button&quot; onclick=&quot;user_showProcessDetail(&#39;q_Process_ID&#39;,&#39;#user_msg&#39;)&quot;&gt;Desktop View&lt;\/button&gt;\n&lt;button type=&quot;button&quot; onclick=&quot;user_showProcessDetail(&#39;q_Process_ID&#39;,&#39;#user_msg&#39;, &#39;mobile&#39;)&quot;&gt;Mobile View&lt;\/button&gt;&lt;br&gt;\n&lt;span id=&quot;user_msg&quot;&gt;&lt;\/span&gt;\n\n&lt;script&gt;\n\n\/\/\u5bfe\u8c61\u306e\u6587\u5b57\u578b\u30c7\u30fc\u30bf\u9805\u76ee\u306e\u5024\u304c\u30d7\u30ed\u30bb\u30b9ID\u306e\u5834\u5408\u3001\u8a72\u5f53\u3059\u308b\u30d7\u30ed\u30bb\u30b9\u8a73\u7d30\u753b\u9762\u304c\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\uff08\u30bf\u30d6\uff09\u3067\u8868\u793a\u3055\u308c\u307e\u3059\u3002\n\/\/\u30d7\u30ed\u30bb\u30b9ID\u3068\u5224\u65ad\u3055\u308c\u308b\u6587\u5b57\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306f\u3001 user_parsePRocessId \u95a2\u6570\u306e\u8aac\u660e\u3092\u3054\u89a7\u304f\u3060\u3055\u3044\u3002\n\/\/If the value of the target String type data item is a process ID, the corresponding process detail is displayed in a separate window (or tab).\n\/\/See the description of the user_parseProcessId function for the format of characters that are determined to be process IDs.\n\nfunction user_showProcessDetail(qfieldName, spanId, type){\n    const qfieldValue = qbpms.form.get(qfieldName);\n    if(qfieldValue !== null){\n        const processId = user_parseProcessId(qfieldValue.trim());\n        let usermsg = &#39;&#39;;\n        if(processId !== &#39;-1&#39;){\n            usermsg += new Date().toLocaleTimeString() + &#39; Process Detail(p&#39; + processId +&#39;) is displayed in a separate window(or tab).&#39;;\n            window.open(user_createProcessDetailUrl(processId, type), &#39;_blank&#39;);\n        }else{\n            usermsg += &#39;&lt;span style=&quot;color:#ff0000&quot;&gt;\\&#39;&#39; + qfieldValue.trim() +&#39;\\&#39; is not process ID!&lt;\/span&gt;&#39;;\n        }\n        document.querySelector(spanId).innerHTML = usermsg;\n    }\n}\n\n\/*\n\u6587\u5b57\u5217\u304c\u30d7\u30ed\u30bb\u30b9ID\u304b\u3069\u3046\u304b\u3092\u89e3\u6790\u3059\u308b\u3002\n\u6b21\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u6587\u5b57\u5217\u3092\u30d7\u30ed\u30bb\u30b9ID\u3068\u5224\u65ad\u3002\n- \u6570\u5b57\u3060\u3051\u3067\u69cb\u6210\u3055\u308c\u308b\u3002\u305f\u3060\u30571\u6587\u5b57\u306f0\u3067\u306f\u306a\u3044\u3002\n- &#39;p&#39; \u3067\u59cb\u307e\u308a\u3001\u7d9a\u304f\u6587\u5b57\u306f\u5168\u3066\u6570\u5b57\u3067\u3042\u308b\u3002&#39;p&#39; \u306e\u5f8c\u308d\u306e\u6570\u5b57\u306f0\u3067\u306f\u306a\u3044\u3002\n@param {string} text \u5bfe\u8c61\u306e\u6587\u5b57\u5217\n@return {string} \u30d7\u30ed\u30bb\u30b9ID(\u6570\u5b57\u306e\u307f\u3067\u69cb\u6210)\u3002\u30d7\u30ed\u30bb\u30b9ID\u3067\u306f\u306a\u3044\u5834\u5408\u3001&#39;-1&#39;\u3002\n*\/\nfunction user_parseProcessId(text){\n    const regex = \/^p?[1-9]{1}\\d*$\/g;\n    const match = text.match(regex);\n    if(match !== null){\n        if(match[0].startsWith(&#39;p&#39;)){\n            return match[0].slice(1,match[0].length);\n        }else{\n            return match[0];\n        }\n    }else{\n        return &#39;-1&#39;;\n    }\n}\n\n\/*\n\u30d7\u30ed\u30bb\u30b9ID\u304b\u3089\u30d7\u30ed\u30bb\u30b9\u8a73\u7d30\u753b\u9762URL\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\n\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u57fa\u76e4\u306e\u30a2\u30af\u30bb\u30b9URL\u306f\u3001https:\/\/s.questetra.net\/xxxxxxxx, https:\/\/xxxxxxxx.questetra.net\/ \u306e\u4e21\u65b9\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002\n@param {string} processId\n@param {string} type \u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u306e\u753b\u9762URL\u3092\u53d6\u5f97\u3059\u308b\u5834\u5408\u3001&#39;mobile&#39;\u3092\u6307\u5b9a\u3002\n@return {string} \u30d7\u30ed\u30bb\u30b9\u8a73\u7d30\u753b\u9762\u306eURL\u3002\n*\/\nfunction user_createProcessDetailUrl(processId, type){\n\n    let processDetailPath = &#39;\/OR\/ProcessInstance\/view?processInstanceId=&#39; + processId;\n    if(type !== null && type === &#39;mobile&#39;){\n        processDetailPath = &#39;\/SP&#39; + processDetailPath;\n    }\n\n    const hostname = location.hostname;\n\n    if(hostname.startsWith(&#39;s.&#39;)){\n    \/\/in case of Access URL -&gt; https:\/\/s.qustetra.net\/xxxxxxxx\/\n        return &#39;https:\/\/&#39; + hostname + &#39;\/&#39; + location.pathname.split(&#39;\/&#39;)[1] + processDetailPath;\n    }else{\n        return &#39;https:\/\/&#39; + hostname + processDetailPath;\n    }\n\n}\n&lt;\/script&gt;\n<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Extract Process IDs<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/10\/deco-Extract-Process-IDs-20221006.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"620\" height=\"480\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/10\/deco-Extract-Process-IDs-20221006.gif?resize=620%2C480&#038;ssl=1\" alt=\"\" class=\"wp-image-137472\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING: <code>q_Related_Process_IDs<\/code><\/li>\n\n\n\n<li>\u2192 span#user_msg<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Validate-using-Check-Digit\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>Extract Process IDs \/ \u30d7\u30ed\u30bb\u30b9ID \u62bd\u51fa: &lt;button type=&quot;button&quot; onclick=&quot;user_createProcessDetailButton(&#39;q_Related_Process_IDs&#39;,&#39;#user_msg&#39;)&quot;&gt;Desktop View&lt;\/button&gt;\n&lt;button type=&quot;button&quot; onclick=&quot;user_createProcessDetailButton(&#39;q_Related_Process_IDs&#39;,&#39;#user_msg&#39;, &#39;mobile&#39;)&quot;&gt;Mobile View&lt;\/button&gt;\n&lt;div&gt;&lt;span id=&quot;user_msg&quot;&gt;&lt;\/span&gt;&lt;\/div&gt;\n\n&lt;script&gt;\nfunction user_createProcessDetailButton(qfieldName, spanId, type){\n    const qfieldValue = qbpms.form.get(qfieldName);\n    if(qfieldValue === null){\n        return;\n    }\n    const pidArray = user_extractProcessIds(qfieldValue);\n\n    let usermsg = &#39;&#39;;\n    if(pidArray === null){\n        usermsg += &#39;There are no Process IDs.&#39;;\n    }else{\n        pidArray.forEach((element)=&gt;{\n            let processId = element;\n            usermsg += &#39;&lt;a class=&quot;processDetailBtn&quot; href=&quot;&#39; + user_createProcessDetailUrl(processId, type) + &#39;&quot; target=&quot;_blank&quot;&gt;p&#39; + processId + &#39;&lt;span class=&quot;material-icons&quot;&gt;open_in_new&lt;\/span&gt;&lt;\/a&gt; &#39;;\n        });\n    }\n\n    document.querySelector(spanId).innerHTML = usermsg;\n\n}\n\n\/*\n\u6587\u5b57\u5217\u306e\u4e2d\u304b\u3089\u30d7\u30ed\u30bb\u30b9ID\uff08\u8907\u6570\uff09\u3092\u62bd\u51fa\u3002\n\u6b21\u306e\u30d5\u30a9\u30fc\u30de\u30c3\u30c8\u306e\u6587\u5b57\u5217\u3092\u30d7\u30ed\u30bb\u30b9ID\u3068\u5224\u65ad\u3002\n- \u6570\u5b57\u3060\u3051\u3067\u69cb\u6210\u3055\u308c\u308b\u3002\u305f\u3060\u30571\u6587\u5b57\u306f0\u3067\u306f\u306a\u3044\u3002\n- &#39;p&#39; \u3067\u59cb\u307e\u308a\u3001\u7d9a\u304f\u6587\u5b57\u306f\u5168\u3066\u6570\u5b57\u3067\u3042\u308b\u3002&#39;p&#39; \u306e\u5f8c\u308d\u306e\u6570\u5b57\u306f0\u3067\u306f\u306a\u3044\u3002\n@param {string} text \u5bfe\u8c61\u306e\u6587\u5b57\u5217\n@return {array} \u30d7\u30ed\u30bb\u30b9ID\u3092\u8981\u7d20\u3068\u3059\u308b Array \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3002\u30d7\u30ed\u30bb\u30b9ID\u304c\u306a\u3044\u5834\u5408\u306f null\u3002\n*\/\nfunction user_extractProcessIds(text){\n    const regex = \/((^p[1-9])|(\\s+p[1-9])|(^[1-9])|(\\s+[1-9]))\\d*\/g;\n    const match = text.match(regex);\n\n    if(match === null){\n        return null;\n    }\n\n    const array = new Array();\n    match.forEach((element) =&gt; {\n        let incompleteProcessId = element.trim();\n        if(incompleteProcessId.startsWith(&#39;p&#39;)){\n            array.push(incompleteProcessId.slice(1, incompleteProcessId.length));\n        }else{\n            array.push(incompleteProcessId);\n        }\n    });\n    return array;\n\n}\n\n\/*\n\u30d7\u30ed\u30bb\u30b9ID\u304b\u3089\u30d7\u30ed\u30bb\u30b9\u8a73\u7d30\u753b\u9762URL\u304c\u751f\u6210\u3055\u308c\u307e\u3059\u3002\n\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u57fa\u76e4\u306e\u30a2\u30af\u30bb\u30b9URL\u306f\u3001https:\/\/s.questetra.net\/xxxxxxxx, https:\/\/xxxxxxxx.questetra.net\/ \u306e\u4e21\u65b9\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002\n@param {string} processId\n@param {string} type \u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u306e\u753b\u9762URL\u3092\u53d6\u5f97\u3059\u308b\u5834\u5408\u3001&#39;mobile&#39;\u3092\u6307\u5b9a\u3002\n@return {string} \u30d7\u30ed\u30bb\u30b9\u8a73\u7d30\u753b\u9762\u306eURL\u3002\n*\/\nfunction user_createProcessDetailUrl(processId, type){\n    \n    let processDetailPath = &#39;\/OR\/ProcessInstance\/view?processInstanceId=&#39; + processId;\n    if(type !== null && type === &#39;mobile&#39;){\n        processDetailPath = &#39;\/SP&#39; + processDetailPath;\n    }\n\n    const hostname = location.hostname;\n\n    if(hostname.startsWith(&#39;s.&#39;)){\n    \/\/in case of Access URL -&gt; https:\/\/s.qustetra.net\/xxxxxxxx\/\n        return &#39;https:\/\/&#39; + hostname + &#39;\/&#39; + location.pathname.split(&#39;\/&#39;)[1] + processDetailPath;\n    }else{\n        return &#39;https:\/\/&#39; + hostname + processDetailPath;\n    }\n\n}\n\n&lt;\/script&gt;\n&lt;style&gt;\na.processDetailBtn{\n    line-height: 2.2;\n    border-radius: 0.5rem;\n    border-style: solid;\n    border-width: 0.5px;\n    border-color: #009FE8;\n    padding-top:0.2rem;\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n    color:#000;\n    background-color: #D1E1E8;\n}\na.processDetailBtn:hover{\n    color: #fff;\n    background-color: #009FE8;\n}\n&lt;\/style&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Validate using Check-Digit<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Validate-using-Check-Digit-20220830.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"361\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Validate-using-Check-Digit-20220830.gif?resize=1280%2C361&#038;ssl=1\" alt=\"Validate using Check-Digit \nJapan's Corporate Number \/ \u6cd5\u4eba\u756a\u53f7 q_CorporateNumber\nJapan's Individual Number \/ \u500b\u4eba\u756a\u53f7\uff08\u30de\u30a4\u30ca\u30f3\u30d0\u30fc\uff09 q_IndividualNumber\" class=\"wp-image-126914\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/37\/0\/zKxfvsv01fV1wNsafnDqs5m3j8qsLQiM\/view\" target=\"_blank\" rel=\"noreferrer noopener\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u21c6 STRING (STRING_TEXTFIELD): <code>q_CorporateNumber<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Validate-using-Check-Digit\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;span id=&quot;user_footnote_CorporateNumber&quot;&gt;&lt;\/span&gt;&lt;br&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;ready&#39;,                       user_setFootnote_CorporateNumber );\nqbpms.form.on( &#39;change&#39;, &#39;q_CorporateNumber&#39;, user_setFootnote_CorporateNumber );\n\nfunction user_setFootnote_CorporateNumber(){\n  const qfieldName     = &quot;q_CorporateNumber&quot;;               \/\/\/\/ EDIT \/\/\/\/\n  const strSelector    = &quot;#user_footnote_CorporateNumber&quot;;  \/\/\/\/ EDIT \/\/\/\/\n\n  const regDigit13     = \/^\\d{13}$\/;\n  const strTarget      = qbpms.form.get( qfieldName );\n  console.log( &quot; strTarget: &quot; + strTarget );\n  let   strInnerHtml   = &quot;&quot;;\n  if( regDigit13.test( strTarget ) === false ){\n    strInnerHtml  = &#39;&#39;;\n    strInnerHtml += &#39;&lt;span style=&quot;color:#ffa500&quot;&gt;&#39;;\n    strInnerHtml += &#39;NOT 13 digit \/ 13\u6841\u3067\u306f\u3042\u308a\u307e\u305b\u3093&#39;;\n    strInnerHtml += &#39;&lt;\/span&gt;&#39;;\n  }else{\n    if( isCorporateNumber( strTarget ) ){\n      strInnerHtml  = &#39;&#39;;\n      strInnerHtml += &#39;&lt;span style=&quot;color:#0000ff&quot;&gt;&#39;;\n      strInnerHtml += &#39;\u2713 valid \/ \u6709\u52b9\u3067\u3059&#39;; \/\/ \uff06\uff0310003\uff1b\n      strInnerHtml += &#39;&lt;\/span&gt;&#39;;\n    }else{\n      strInnerHtml  = &#39;&#39;;\n      strInnerHtml += &#39;&lt;span style=&quot;color:#ff0000&quot;&gt;&#39;;\n      strInnerHtml += &#39;\u2717 invalid \/ \u554f\u984c\u304c\u3042\u308a\u307e\u3059&#39;; \/\/ &cross = \uff06\uff0310007\uff1b\n      strInnerHtml += &#39;&lt;\/span&gt;&#39;;\n    }\n  }\n  document.querySelector( strSelector ).innerHTML = strInnerHtml;\n}\n\nfunction isCorporateNumber( str ){\n  const regDigit13    = \/^\\d{13}$\/;\n  if( regDigit13.test( str ) === false ){ return false; }\n  const numCheckDigit = parseInt( str.charAt(0) );\n  let numCheckSum = 0;\n      numCheckSum += parseInt( str.charAt(1) ) * 2;\n      numCheckSum += parseInt( str.charAt(2) );\n      numCheckSum += parseInt( str.charAt(3) ) * 2;\n      numCheckSum += parseInt( str.charAt(4) );\n      numCheckSum += parseInt( str.charAt(5) ) * 2;\n      numCheckSum += parseInt( str.charAt(6) );\n      numCheckSum += parseInt( str.charAt(7) ) * 2;\n      numCheckSum += parseInt( str.charAt(8) );\n      numCheckSum += parseInt( str.charAt(9) ) * 2;\n      numCheckSum += parseInt( str.charAt(10));\n      numCheckSum += parseInt( str.charAt(11)) * 2;\n      numCheckSum += parseInt( str.charAt(12));\n  if( numCheckDigit === (9 - numCheckSum % 9) ){\n    return true;\n  }else{\n    return false;\n  }\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u21c6 STRING (STRING_TEXTFIELD): <code>q_IndividualNumber<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Validate-using-Check-Digit-IndividualNumber\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;span id=&quot;user_footnote_IndividualNumber&quot;&gt;&lt;\/span&gt;&lt;br&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;ready&#39;,                        user_setFootnote_IndividualNumber );\nqbpms.form.on( &#39;change&#39;, &#39;q_IndividualNumber&#39;, user_setFootnote_IndividualNumber );\n\nfunction user_setFootnote_IndividualNumber(){\n  const qfieldName     = &quot;q_IndividualNumber&quot;;               \/\/\/\/ EDIT \/\/\/\/\n  const strSelector    = &quot;#user_footnote_IndividualNumber&quot;;  \/\/\/\/ EDIT \/\/\/\/\n\n  const regDigit12     = \/^\\d{12}$\/;\n  const strTarget      = qbpms.form.get( qfieldName );\n  console.log( &quot; strTarget: &quot; + strTarget );\n  let   strInnerHtml   = &quot;&quot;;\n  if( regDigit12.test( strTarget ) === false ){\n    strInnerHtml  = &#39;&#39;;\n    strInnerHtml += &#39;&lt;span style=&quot;color:#ffa500&quot;&gt;&#39;;\n    strInnerHtml += &#39;NOT 12 digit \/ 12\u6841\u3067\u306f\u3042\u308a\u307e\u305b\u3093&#39;;\n    strInnerHtml += &#39;&lt;\/span&gt;&#39;;\n  }else{\n    if( isIndividualNumber( strTarget ) ){\n      strInnerHtml  = &#39;&#39;;\n      strInnerHtml += &#39;&lt;span style=&quot;color:#0000ff&quot;&gt;&#39;;\n      strInnerHtml += &#39;\u2713 valid \/ \u6709\u52b9\u3067\u3059&#39;; \/\/ &check = \uff06\uff0310003\uff1b\n      strInnerHtml += &#39;&lt;\/span&gt;&#39;;\n    }else{\n      strInnerHtml  = &#39;&#39;;\n      strInnerHtml += &#39;&lt;span style=&quot;color:#ff0000&quot;&gt;&#39;;\n      strInnerHtml += &#39;\u2717 invalid \/ \u554f\u984c\u304c\u3042\u308a\u307e\u3059&#39;; \/\/ &cross = \uff06\uff0310007\uff1b\n      strInnerHtml += &#39;&lt;\/span&gt;&#39;;\n    }\n  }\n  document.querySelector( strSelector ).innerHTML = strInnerHtml;\n}\n\nfunction isIndividualNumber( str ){\n  const regDigit12    = \/^\\d{12}$\/;\n  if( regDigit12.test( str ) === false ){ return false; }\n  const numCheckDigit = parseInt( str.charAt(11) );\n  let numCheckSum = 0;\n      numCheckSum += parseInt( str.charAt(0) ) * (11 - 5 );\n      numCheckSum += parseInt( str.charAt(1) ) * (10 - 5 );\n      numCheckSum += parseInt( str.charAt(2) ) * ( 9 - 5 );\n      numCheckSum += parseInt( str.charAt(3) ) * ( 8 - 5 );\n      numCheckSum += parseInt( str.charAt(4) ) * ( 7 - 5 );\n      numCheckSum += parseInt( str.charAt(5) ) * ( 6 + 1 );\n      numCheckSum += parseInt( str.charAt(6) ) * ( 5 + 1 );\n      numCheckSum += parseInt( str.charAt(7) ) * ( 4 + 1 );\n      numCheckSum += parseInt( str.charAt(8) ) * ( 3 + 1 );\n      numCheckSum += parseInt( str.charAt(9) ) * ( 2 + 1 );\n      numCheckSum += parseInt( str.charAt(10)) * ( 1 + 1 );\n      numCheckSum = 11 - numCheckSum % 11;\n  if( numCheckSum % 11 &lt;= 1 ){ numCheckSum = 0; }\n  if( numCheckDigit === numCheckSum ){\n    return true;\n  }else{\n    return false;\n  }\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-default q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/corporate-number-check-digit-algorithm.png?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/corporate-number-check-digit-algorithm.png?resize=1200%2C675&#038;ssl=1\" alt=\"corporate-number check digit-algorithm\" class=\"wp-image-87725\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/corporate-number-check-digit-algorithm.png?w=1200&amp;ssl=1 1200w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/corporate-number-check-digit-algorithm.png?resize=560%2C315&amp;ssl=1 560w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/corporate-number-check-digit-algorithm.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/corporate-number-check-digit-algorithm.png?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-default q-box\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/my-number-check-digit-algorithm.png?resize=1200%2C675&#038;ssl=1\" alt=\"my-number check digit algorithm\" class=\"wp-image-87716\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/my-number-check-digit-algorithm.png?w=1200&amp;ssl=1 1200w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/my-number-check-digit-algorithm.png?resize=560%2C315&amp;ssl=1 560w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/my-number-check-digit-algorithm.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/my-number-check-digit-algorithm.png?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-questetra-support wp-block-embed-questetra-support\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"Ky8IDmaSIv\"><a href=\"https:\/\/support.questetra.com\/ja\/addons\/corporate-number-string-test-check-digit-2021\/\">#\u6cd5\u4eba\u756a\u53f7\u6587\u5b57\u5217: \u30c1\u30a7\u30c3\u30af\u30c7\u30a3\u30b8\u30c3\u30c8\u691c\u67fb<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;#\u6cd5\u4eba\u756a\u53f7\u6587\u5b57\u5217: \u30c1\u30a7\u30c3\u30af\u30c7\u30a3\u30b8\u30c3\u30c8\u691c\u67fb&#8221; &#8212; Questetra Support\" src=\"https:\/\/support.questetra.com\/ja\/addons\/corporate-number-string-test-check-digit-2021\/embed\/#?secret=DUeo07Tdun#?secret=Ky8IDmaSIv\" data-secret=\"Ky8IDmaSIv\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-questetra-support wp-block-embed-questetra-support\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"M5OUW0kHtj\"><a href=\"https:\/\/support.questetra.com\/ja\/addons\/my-number-string-test-check-digit-2021\/\">#\u30de\u30a4\u30ca\u30f3\u30d0\u30fc\u6587\u5b57\u5217: \u30c1\u30a7\u30c3\u30af\u30c7\u30a3\u30b8\u30c3\u30c8\u691c\u67fb<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;#\u30de\u30a4\u30ca\u30f3\u30d0\u30fc\u6587\u5b57\u5217: \u30c1\u30a7\u30c3\u30af\u30c7\u30a3\u30b8\u30c3\u30c8\u691c\u67fb&#8221; &#8212; Questetra Support\" src=\"https:\/\/support.questetra.com\/ja\/addons\/my-number-string-test-check-digit-2021\/embed\/#?secret=xnPdyjPsb4#?secret=M5OUW0kHtj\" data-secret=\"M5OUW0kHtj\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Generate QR Code<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Generate-QR-Code-20220808.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"512\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Generate-QR-Code-20220808.gif?resize=1280%2C512&#038;ssl=1\" alt=\"Generate QR Code image in JavaScript\" class=\"wp-image-126123\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTAREA) <code>q_Url<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_output_encode<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Generate-QR-Code\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; onclick=&#39;\n  user_encodeQStringToQrcode( &quot;q_Url&quot;, &quot;#user_output_encode&quot; )\n&#39;&gt;encode q_Url to QR-code image&lt;\/button&gt;&lt;br&gt;\n&lt;span id=&quot;user_output_encode&quot;&gt;&lt;\/span&gt;\n\n&lt;script&gt;\nfunction user_encodeQStringToQrcode( qfieldName, spanId ){\n  let strValue = qbpms.form.get( qfieldName );\n  console.log( &quot;Encode QString: &quot; + strValue );\n  let strInnerHtml = &quot;&quot;;\n\n  if( strValue === &quot;&quot; ){   \/\/ ReadWrite\n    strInnerHtml = &#39;&lt;span style=&quot;color:#ff0000&quot;&gt; empty, QR-Code image not created &lt;\/span&gt;&#39;;\n    document.querySelector( spanId ).innerHTML = strInnerHtml;\n    return;\n  }\n  if( strValue === null ){ \/\/ Read-only\n    strInnerHtml = &#39;&lt;span style=&quot;color:#ff8000&quot;&gt; empty, QR-Code image not created &lt;\/span&gt;&#39;;\n    document.querySelector( spanId ).innerHTML = strInnerHtml;\n    return;\n  }\n\n  \/\/ js-dynamic-loading\n  user_getScript( &#39;https:\/\/cdn.jsdelivr.net\/npm\/qrcode@1.4.4\/build\/qrcode.min.js&#39;,\n                  &#39;sha256-DhdpoP64xch\/Frz8CiBQE12en55NX+RhlPGRg6KWm5s=&#39;,\n                  function () {\n\n    \/\/ https:\/\/www.jsdelivr.com\/package\/npm\/qrcode?version=1.4.4\n    \/\/ https:\/\/cdn.jsdelivr.net\/npm\/qrcode@1.4.4\/license\n    \/\/ https:\/\/cdn.jsdelivr.net\/npm\/qrcode@1.4.4\/README.md\n    const opts = {\n      errorCorrectionLevel: &#39;H&#39;, \/\/ L, M, Q, H\n      type: &#39;image\/png&#39;, width: 200, quality: 0.3, margin: 1,\n      color: { dark:&quot;#000&quot;, light:&quot;#FFF0&quot; } \/\/ alpha channel (opacity) = 0\n    };\n    QRCode.toDataURL( strValue, opts, function (err, url) {\n      if (err) throw err;\n      strInnerHtml = &#39;&#39;;\n      strInnerHtml += &#39;&lt;a href=&quot;&#39; + url + &#39;&quot; download=&quot;QR.png&quot;&gt;&#39;;\n      strInnerHtml += &#39;&lt;img src=&quot;&#39; + url + &#39;&quot; alt=&quot;QR Code&quot; \/&gt;&#39;;\n      strInnerHtml += &#39;&lt;br&gt;&#39;;\n      strInnerHtml += &#39;Click to Download&#39;;\n      strInnerHtml += &#39;&lt;\/a&gt;&#39;;\n      document.querySelector( spanId ).innerHTML = strInnerHtml;\n    });\n\n  }); \/\/ endof js-dynamic-loading\n}\n\nfunction user_getScript(scriptUrl, integrity, callback) { \/\/ for dynamic-loading\n  const script = document.createElement(&#39;script&#39;);\n  script.src = scriptUrl;\n  \/\/ Subresource Integrity (SRI) is a security feature that enables browsers to verify that\n  \/\/ resources they fetch (for example, from a CDN) are delivered without unexpected manipulation.\n  \/\/ https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/Security\/Subresource_Integrity\n  script.integrity = integrity;\n  script.crossOrigin = &quot;anonymous&quot;; \/\/ note: property name is &quot;crossOrigin&quot;, not &quot;crossorigin&quot;\n  script.onload = callback;\n  document.body.appendChild(script);\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Preview HTML Code in New Window<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/11\/decoration-examples-Preview-HtmlCode.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"200\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/11\/decoration-examples-Preview-HtmlCode.gif?resize=1200%2C200&#038;ssl=1\" alt=\"Preview HTML Code in New Window\" class=\"wp-image-116662\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTAREA): <code>q_Str_EmailHtmlReport<\/code><\/li>\n\n\n\n<li>\u2192 window: <code>_Blank<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Preview-HTML\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; onclick=&#39;\n  user_previewHtmlInNewWindow( &quot;q_Str_EmailHtmlReport&quot; )\n&#39;&gt;Open Window to Preview HTML&lt;\/button&gt;\n\n&lt;script&gt;\nfunction user_previewHtmlInNewWindow( qfieldName ) {\n  let strHtml = qbpms.form.get( qfieldName );\n  if( strHtml === null ){ return; } \/\/ when ReadOnly\n  if( strHtml === &quot;&quot; ){\n    throw new Error(&#39;No String in this Textarea&#39;);\n  }\n  let blob = new Blob([ strHtml ], { type: &#39;text\/html&#39; });\n  let strUrl = URL.createObjectURL(blob);\n  window.open( strUrl, &quot;_Blank&quot; );\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Extract URLs<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Extract-URLs-20220930.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1176\" height=\"400\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Extract-URLs-20220930.gif?resize=1176%2C400&#038;ssl=1\" alt=\"\" class=\"wp-image-137315\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING: <code>q_text<\/code><\/li>\n\n\n\n<li>\u2192 <code>clipboard<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Export-Text\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&quot;button&quot; onclick=&quot;user_getUrlsInText(&#39;q_text&#39;,&#39;#user_msg&#39;)&quot;&gt;Get URLs&lt;\/button&gt;\n&lt;span id=&quot;user_msg&quot;&gt;&lt;\/span&gt;\n&lt;script&gt;\n\/\/ qfieldName \u3067\u6307\u5b9a\u3055\u308c\u305f\u30c7\u30fc\u30bf\u9805\u76ee\uff08\u6587\u5b57\u578b\uff09\u306e\u5024\u306e\u4e2d\u304b\u3089\u3001URL \u304c\u62bd\u51fa\u3055\u308c\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u306b\u30b3\u30d4\u30fc\u3055\u308c\u307e\u3059\u3002\n\/\/ \/https?:\\\/\\\/[\\w\/:%#\\$&\\?\\(\\)~\\.=\\+\\-]+\/g \u306b\u30de\u30c3\u30c1\u3059\u308b\u6587\u5b57\u5217\u304c URL \u3068\u3057\u3066\u62bd\u51fa\u3055\u308c\u307e\u3059\u3002\n\/\/ The URL is extracted from the value of the data item (string type) specified by qfieldName and copied to the clipboard.\n\/\/ \/https?:\\\/\\\/[\\w\/:%#\\$&\\?\\(\\)~\\.=\\+\\-]+\/g \u306b\u30de\u30c3\u30c1\u3059\u308b\u6587\u5b57\u5217\u304c URL \u3068\u3057\u3066\u62bd\u51fa\u3055\u308c\u307e\u3059\u3002\n\/\/ Strings matching \/https?:\\\/\\\/[\\w\/:%#\\$&\\?\\(\\)~\\.=\\+\\-]+\/g are extracted as URLs.\nfunction user_getUrlsInText(qfieldName, spanId){\n    const text = qbpms.form.get(qfieldName);\n    const regex = \/https?:\\\/\\\/[\\w\/:%#\\$&\\?\\(\\)~\\.=\\+\\-]+\/g;\n    const matches = text.match(regex);\n    let msg = &#39;&#39;;\n    if(matches != null){\n        let urls = &#39;&#39;;\n        matches.forEach((element) =&gt; {\n            urls += element + &#39;\\n&#39;;\n        });\n        urls = urls.trim();\n        navigator.clipboard.writeText(urls);\n        msg = new Date().toLocaleTimeString() + &#39; &#39; + matches.length + &#39;URLs copied to the clipboard!&#39;;\n    }else{\n        msg = &#39;&lt;span style=&quot;color:#ff0000&quot;&gt;No URLs! Clipboard not updated.&lt;\/span&gt;&#39;;\n    }\n    document.querySelector(spanId).innerHTML = msg;\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Export Text as UTF8B-File<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/10\/decoration-examples-Export-Text-as-File.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"301\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/10\/decoration-examples-Export-Text-as-File.gif?resize=1200%2C301&#038;ssl=1\" alt=\"\" class=\"wp-image-115093\"\/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-style-default q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/10\/decoration-examples-Export-Text-as-File-GuidePanel.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"251\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2021\/10\/decoration-examples-Export-Text-as-File-GuidePanel.gif?resize=1200%2C251&#038;ssl=1\" alt=\"\" class=\"wp-image-115095\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTAREA): <code>q_MultilineString<\/code><\/li>\n\n\n\n<li>\u2192 <code>download.txt<\/code> (download)<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Export-Text\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; onclick=&#39;user_exportAsFile_MultilineString()&#39;&gt;Save as Text File&lt;\/button&gt;\n&lt;script&gt;\nfunction user_exportAsFile_MultilineString(){\n  let strTmp = qbpms.form.get(&quot;q_Multiline_String&quot;);\n  if( strTmp === null ){ return; } \/\/ when ReadOnly\n  if( strTmp === &quot;&quot; )  { return; } \/\/ when ReadWrite\n  let bom  = new Uint8Array([0xEF, 0xBB, 0xBF]);\n  let blob = new Blob([bom, strTmp], {type: &#39;text\/plain&#39;});\n  let url = (window.URL || window.webkitURL).createObjectURL(blob);\n  let link = document.createElement(&#39;a&#39;);\n  link.download = &#39;download.txt&#39;;\n  link.href = url;\n  document.body.appendChild(link);\n  link.click();\n  document.body.removeChild(link);\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Check Role Members via REST API<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Check-Role-Members-via-REST-API-20220822.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"360\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Check-Role-Members-via-REST-API-20220822.gif?resize=1280%2C360&#038;ssl=1\" alt=\"\" class=\"wp-image-126525\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 <code>button.user_ListQusers<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_footnote_Translator<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2190 <code>button.user_SetQuser<\/code><\/li>\n\n\n\n<li>\u2192 QUSER <code>q_Translator<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Check-Role-Members-via-REST-API\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&#39;button&#39; class=&#39;user_ListQusers&#39; onclick=&#39;\n  user_listButtons( &quot;23&quot;, &quot;#user_footnote_Translator&quot;, &quot;q_Translator&quot; );\n&#39;&gt;r81-Native English speaker \u2193&lt;\/button&gt;\n&lt;button type=&#39;button&#39; class=&#39;user_ListQusers&#39; onclick=&#39;\n  user_listButtons( &quot;24&quot;, &quot;#user_footnote_Translator&quot;, &quot;q_Translator&quot; );\n&#39;&gt;r82-Native Spanish speaker \u2193&lt;\/button&gt;\n&lt;br&gt;\n&lt;span id=&quot;user_footnote_Translator&quot;&gt;&lt;\/span&gt;\n&lt;br&gt;\n\n&lt;script&gt;\nfunction user_setByButtonValue_Translator(){  \/\/\/\/ EDIT\n  let qfieldName          = &quot;q_Translator&quot;;   \/\/\/\/ EDIT\n  let strButtonValue      = this.value; \n  qbpms.form.set( qfieldName, strButtonValue );\n}\n\nfunction user_listButtons( numRoleId, strSpanId, qfieldName ){\n  let elSpan = document.querySelector( strSpanId );\n  let xhr = new XMLHttpRequest();\n  xhr.open( &quot;GET&quot;, &quot;\/API\/User\/RoleMembership\/listByQrole?id=&quot; + numRoleId );\n  \/\/ System Settings API - Retrieving all Members of a Role\n  \/\/ https:\/\/online-demo-en.questetra.net\/s\/swagger\/index.html#\/RoleMembership\/listRoleMembershipsByQrole\n  xhr.responseType = &#39;json&#39;;\n  xhr.send();\n\n  \/* RESPONCE SAMPLE\n  {\n    roleMemberships: [\n      {\n        qroleId: 23,\n        qroleName: &quot;r81-Native English speaker&quot;,\n        quserEmail: &quot;SouthPole@questetra.com&quot;,\n        quserId: 1,\n        quserName: &quot;SouthPole&quot;\n      },\n      { \u2026 },\n      {\n        qroleId: 23,\n        qroleName: &quot;r81-Native English speaker&quot;,\n        quserEmail: &quot;SaintHelena@questetra.com&quot;,\n        quserId: 10,\n        quserName: &quot;SaintHelena&quot;\n      }\n    ]\n  }*\/\n\n  xhr.onload = function() {\n    if (xhr.status != 200) {\n      console.error(`Error ${xhr.status}: ${xhr.statusText}`); \/\/ e.g. &quot;404: Not Found&quot;\n    } else { \/\/ show the result\n      let objResponse = xhr.response;\n      console.log( &quot; Decoration XHR: Found quser &quot; + objResponse.roleMemberships.length );\n\n      elSpan.innerHTML = &quot;&quot;; \/\/ clear\n      for (let i = 0; i &lt; objResponse.roleMemberships.length; i++ ) {\n        console.log( &quot; quser &quot; + i + &quot;: &quot; + objResponse.roleMemberships[i].quserEmail );\n        let elNewButton = document.createElement(&quot;button&quot;);\n        elNewButton.type      = &quot;button&quot;;\n        elNewButton.title     = \/\/ as tooltip\n          objResponse.roleMemberships[i].quserId +\n          &quot;: &quot; +\n          objResponse.roleMemberships[i].quserEmail +\n          &quot;&quot;;\n        elNewButton.value     = objResponse.roleMemberships[i].quserEmail;\n        elNewButton.innerHTML = objResponse.roleMemberships[i].quserName;\n        elNewButton.classList.add( &quot;user_SetQuser&quot; );\n        elNewButton.onclick   = user_setByButtonValue_Translator;  \/\/\/\/ EDIT\n        elSpan.append( \/\/ ...nodesOrDOMStrings\n          &quot; &quot;,\n          elNewButton\n        );\n      }\n    }\n    console.log( &quot; Decoration XHR: finished &quot; );\n  };\n  xhr.onerror = function() {\n    alert( &quot;Request failed&quot; );\n  };\n}\n&lt;\/script&gt;\n\n\n&lt;style type=&quot;text\/css&quot;&gt;\nbutton.user_ListQusers {\n  text-align    : center;\n  font-size     : 0.9rem;\n  line-height   : 1em;\n  color         : #ffffff;\n\n  background    : #009900;\n  padding       : 3px 5px;\n  border        : 2px solid #009900;\n  border-radius : 5%;\n  box-shadow    : 2px 2px 3px #666666;\n  margin        : 2px 3px;\n\n  cursor        : pointer;\n  transition    : .3s;\n}\nbutton.user_ListQusers:hover {\n  color         : #009900;\n  background    : #ffffff;\n  box-shadow    : none;\n}\n\nbutton.user_SetQuser {\n  text-align    : center;\n  font-size     : 0.8rem;\n  line-height   : 1.2em;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 10px;\n  margin        : 2px 3px;\n}\nbutton.user_SetQuser:hover {\n  background    : #00bb00;\n}\nbutton.user_SetQuser:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\n&lt;\/style&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Check Form History via REST API<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/02\/Check-Form-History-via-REST-API.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"384\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/02\/Check-Form-History-via-REST-API.gif?resize=1024%2C384&#038;ssl=1\" alt=\"Check Form History via REST API\" class=\"wp-image-119029\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_ContentsOfDuties<\/code><\/li>\n\n\n\n<li>\u2190 Questetra Workflow API, ProcessInstance: <code>get \/API\/OR\/ProcessInstance\/list<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_Result_ContentsOfDuties<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2190 <code>button.user_Appender<\/code><\/li>\n\n\n\n<li>\u2192 STRING (STRING_TEXTFIELD): <code>q_ContentsOfDuties<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Check-Form-History\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&quot;button&quot; onclick=&quot;user_getHistory_ContentsOfDuties()&quot; class=&quot;user_Search&quot;&gt;Sample Search \u2192&lt;\/button&gt;\n&lt;span id=&quot;user_footnote_ContentsOfDuties&quot;&gt;&lt;\/span&gt;\n\n&lt;script&gt;\ndocument.addEventListener(&quot;click&quot;, function (e) {\n  console.log( &quot; DocumentElement clicked: &quot; + e.target.textContent );\n  if (e.target.classList.contains(&quot;user_Appender&quot;)) {\n    qbpms.form.set( &quot;q_ContentsOfDuties&quot;, e.target.value );        \/\/\/EDIT\/\/\/\n  }\n}); \/\/ Not recommended ... orz\n\nfunction user_getHistory_ContentsOfDuties() {\n  let numTARGETID      = 8;                                        \/\/\/EDIT\/\/\/ ID of q_ContentsOfDuties\n  let numLIMITSIZE     = 10;                                       \/\/\/EDIT\/\/\/\n  let numWORKFLOWAPPID = 1883;                                     \/\/\/EDIT\/\/\/\n  let strSearchWord    = qbpms.form.get( &quot;q_ContentsOfDuties&quot; );                     \/\/\/EDIT\/\/\/\n  let elResultSpan     = document.querySelector(&quot;#user_footnote_ContentsOfDuties&quot;);  \/\/\/EDIT\/\/\/\n\n  let objCriteria = {}; \/\/ JSON criteria: (BPMS v13.3~)\n      \/\/ https:\/\/questetra.zendesk.com\/hc\/ja\/articles\/4415341995289\n      \/\/ https:\/\/questetra.zendesk.com\/hc\/en-us\/articles\/4415341995289\n      objCriteria.processModelInfoId = numWORKFLOWAPPID;\n      objCriteria.processInstanceState = [];\n      objCriteria.processInstanceState[0] = &quot;ENDED&quot;; \/\/ only completed instances\n      if ( strSearchWord !== &quot;&quot; ) {\n        objCriteria.data = [];\n        objCriteria.data[0] = {};\n        objCriteria.data[0].type   = &quot;string&quot;;\n        objCriteria.data[0].number = numTARGETID;\n        objCriteria.data[0].method = &quot;contains&quot;;\n        objCriteria.data[0].value  = strSearchWord;\n      }\n      objCriteria.fields = [];\n      objCriteria.fields[0] = {};\n      objCriteria.fields[0].type   = &quot;string&quot;;\n      objCriteria.fields[0].number = numTARGETID;\n  let xhr = new XMLHttpRequest();\n      xhr.open( &quot;GET&quot;, &quot;\/API\/OR\/ProcessInstance\/list?limit=&quot; + numLIMITSIZE +\n                       &quot;&criteria=&quot; + encodeURIComponent(JSON.stringify(objCriteria)) );\n      xhr.responseType = &#39;json&#39;;\n      xhr.send();\n      xhr.onload = function() {\n        if (xhr.status != 200) {\n          console.error(`Error ${xhr.status}: ${xhr.statusText}`); \/\/ e.g. &quot;404: Not Found&quot;\n        } else { \/\/ show the result\n          let objResponse = xhr.response;\n          console.log( &quot; Decoration XHR: Found PastData &quot; + objResponse.processInstances.length + \n                       &quot;\/&quot; + objResponse.count  );\n          elResultSpan.innerHTML = &quot;&quot;; \/\/ clear\n          for (let i = 0; i &lt; objResponse.processInstances.length; i++ ) {\n            let elNewAnchor = document.createElement(&quot;a&quot;);\n                elNewAnchor.href      = &quot;\/OR\/ProcessInstance\/view?processInstanceId=&quot; + \n                                        objResponse.processInstances[i].processInstanceId;\n                elNewAnchor.target    = &quot;_blank&quot;;\n                elNewAnchor.innerText = &quot;p&quot; + objResponse.processInstances[i].processInstanceId;\n            let elNewButton = document.createElement(&quot;button&quot;);\n                elNewButton.type = &quot;button&quot;;\n                elNewButton.classList.add(&quot;user_Appender&quot;);\n                if ( objResponse.processInstances[i].data[numTARGETID].value === null ){\n                  elNewButton.value     = &quot;&quot;;\n                  elNewButton.innerHTML = &quot;?&quot;;\n                }else{\n                  elNewButton.value     = objResponse.processInstances[i].data[numTARGETID].value;\n                  elNewButton.innerText = objResponse.processInstances[i].data[numTARGETID].value;\n                }\n            \/\/ &quot;&lt;a&gt;p123&lt;\/a&gt;=&lt;button&gt;\u6d88\u8017\u54c1\u8cbb&lt;\/button&gt;&quot;\n            elResultSpan.append( &quot; &quot;, elNewAnchor,&quot;=&quot; );\n            elResultSpan.append( elNewButton );\n          }\n        }\n        console.log( &quot; Decoration XHR: finished &quot; );\n      };\n      xhr.onerror = function() {\n        alert(&quot;Request failed&quot;);\n      };\n}\n&lt;\/script&gt;\n\n&lt;style type=&quot;text\/css&quot;&gt;\nbutton.user_Appender {\n    border          : 0;\n    line-height     : 1.2;\n    padding         : 3px 8px;\n    font-size       : 0.9rem;\n    text-align      : center;\n    color           : #fff;\n    text-shadow     : 1px 1px 1px #000;\n    border-radius   : 10px;\n    background-color: #050505;\n}\nbutton.user_Appender:hover {\n    background-color: #00bb00;\n}\nbutton.user_Appender:active {\n    box-shadow      : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                      inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\n\nbutton.user_Search {\n  display       : inline-block;\n  border-radius : 5%;\n  font-size     : 1rem;\n  text-align    : center;\n  cursor        : pointer;\n  padding       : 5px 20px;\n  background    : #009900;\n  color         : #ffffff;\n  line-height   : 1em;\n  transition    : .3s;\n  box-shadow    : 2px 2px 3px #666666;\n  border        : 2px solid #009900;\n}\nbutton.user_Search:hover {\n  box-shadow    : none;\n  color         : #009900;\n  background    : #ffffff;\n}\n&lt;\/style&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Copy Input-History using REST API<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Copy-Input-History-using-REST-API-202209011.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"361\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Copy-Input-History-using-REST-API-202209011.gif?resize=1280%2C361&#038;ssl=1\" alt=\"Copy Input-History using REST API\" class=\"wp-image-127552\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_ContentsOfDuties<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_Candidate_Form8<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Copy-Input-History-using-REST-API\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&quot;button&quot; class=&quot;user_SearchButton&quot;\n onclick=&quot;user_getInputHistories(\n           qbpms.form.get( &#39;q_ContentsOfDuties&#39; ),\n           &#39;user_Candidate_Form8&#39;, 1883, 8\n           )&quot;&gt;Sample Search \u2192&lt;\/button&gt;\n&lt;span id=  &quot;user_Candidate_Form8&quot; &gt;&lt;\/span&gt;\n\n&lt;script&gt;\n\/\/\/\/\/ Lists the copyable buttons in SPAN.\n\/\/\/\/\/ The buttons will support not only for Singleline-String but also Multiline-String.\n\n\/\/\/\/ Get List of ProcessInstances\nfunction user_getInputHistories(\n           strSearchWord, selectorForButtons, numWfappId, numDataItemId ) {\n  let numLIMITSIZE     = 20;                         \/\/\/\/ EDIT if you need \/\/\/\/\n\n  let objCriteria = {}; \/\/ JSON criteria: (BPMS v13.3~)\n      \/\/ https:\/\/questetra.zendesk.com\/hc\/ja\/articles\/4415341995289\n      \/\/ https:\/\/questetra.zendesk.com\/hc\/en-us\/articles\/4415341995289\n      objCriteria.processModelInfoId = numWfappId;\n      objCriteria.processInstanceState = [];\n      objCriteria.processInstanceState[0] = &quot;ENDED&quot;; \/\/ only completed instances\n      if ( strSearchWord !== &quot;&quot; ) {\n        objCriteria.data = [];\n        objCriteria.data[0] = {};\n        objCriteria.data[0].type   = &quot;string&quot;;\n        objCriteria.data[0].number = numDataItemId;\n        objCriteria.data[0].method = &quot;contains&quot;;\n        objCriteria.data[0].value  = strSearchWord;\n      }\n      objCriteria.fields = [];\n      objCriteria.fields[0] = {};\n      objCriteria.fields[0].type   = &quot;string&quot;;\n      objCriteria.fields[0].number = numDataItemId;\n  let xhr = new XMLHttpRequest();\n      xhr.open( &quot;GET&quot;, &quot;\/API\/OR\/ProcessInstance\/list?limit=&quot; + numLIMITSIZE +\n                       &quot;&criteria=&quot; + encodeURIComponent(JSON.stringify(objCriteria)) );\n      xhr.responseType = &#39;json&#39;;\n      xhr.send();\n      xhr.onload = function() {\n        if (xhr.status != 200) {\n          console.error(`Error ${xhr.status}: ${xhr.statusText}`); \/\/ e.g. &quot;404: Not Found&quot;\n        } else { \/\/ show the result\n          let objResponse = xhr.response;\n          console.log( &quot; Decoration XHR: Found PastData &quot; +\n                       objResponse.processInstances.length + \n                       &quot;\/&quot; + objResponse.count );\n\n          document.querySelector( &quot;#&quot; + selectorForButtons ).innerHTML = &#39;&#39;; \/\/ clear\n          for (let i = 0; i &lt; objResponse.processInstances.length; i++ ) {\n\n            let elNewAnchor = document.createElement(&quot;a&quot;);\n                elNewAnchor.href        = &quot;\/OR\/ProcessInstance\/view?processInstanceId=&quot; + \n                                          objResponse.processInstances[i].processInstanceId;\n                elNewAnchor.target      = &quot;_blank&quot;;\n                elNewAnchor.innerText   = &quot;p&quot; + objResponse.processInstances[i].processInstanceId;\n            let elNewButton = document.createElement(&quot;button&quot;);\n                elNewButton.type        = &quot;button&quot;;\n                if ( objResponse.processInstances[i].data[numDataItemId].value === null ){\n                  elNewButton.value     = &quot;&quot;;\n                  elNewButton.innerHTML = &quot;\u2205&quot;; \/\/ \u2190&quot;\uff06empty\uff1b&quot; -- emptyset\n                }else{\n                  elNewButton.title     = objResponse.processInstances[i].data[numDataItemId].value;\n                  elNewButton.value     = objResponse.processInstances[i].data[numDataItemId].value;\n                  elNewButton.innerHTML = &quot;\u274f &quot; + \/\/ \u2190&quot;\uff06\uff0310063\uff1b &quot; -- Lower right drop-shadowed white square\n                    user_escapeHtml(\n                      user_truncStr( objResponse.processInstances[i].data[numDataItemId].value )\n                    );\n                }\n                elNewButton.onclick     = user_copyButtonValue;  \/\/\/ avoid using event listeners\n                elNewButton.classList.add(&quot;user_Appender&quot;);\n\n            \/\/ &quot;&lt;a&gt;p123&lt;\/a&gt;=&lt;button&gt;\u6d88\u8017\u54c1\u8cbb&lt;\/button&gt;&quot;\n            document.querySelector( &quot;#&quot; + selectorForButtons )\n                    .append( &quot; &quot;, elNewAnchor, &quot;:&quot;, elNewButton );\n          }\n        }\n        console.log( &quot; Decoration XHR: finished &quot; );\n      };\n      xhr.onerror = function() {\n        alert(&quot;Request failed&quot;);\n      };\n}\n\n\/\/\/\/ Click BUTTON to copy to clipboard\n\/\/ onclick = user_copyButtonValue\nfunction     user_copyButtonValue() {\n  let str = this.value; \/\/ this: &quot;event.currentTarget&quot;\n  if( str !== &quot;&quot; ){\n    navigator.clipboard.writeText( str );\n    \/\/ https:\/\/developer.mozilla.org\/docs\/Web\/API\/Clipboard_API\n    console.log( &quot;&gt;&gt;&gt; copied: &#39;&quot;+ user_truncStr(str) + &quot;&#39;&quot; );\n  }else{\n    console.error( &quot;   element.value is empty&quot; );\n  }\n}\nfunction user_truncStr( str ) {\n  const numLength = 10;\n  return str.length &lt;= numLength ? str : (str.substr(0, numLength) + &quot;\u2026&quot; );\n}\nfunction user_escapeHtml(str) {\n  if( typeof str !== &#39;string&#39; ) { console.error( &quot; non-string escaping &quot; ); return str; }\n  return str.replace(\/&\/g, &#39;&&#39;)  \/\/ \u2190&quot;\uff06amp\uff1b&quot;;\n            .replace(\/&#39;\/g, &#39;&#39;&#39;) \/\/ \u2190&quot;\uff06\uff03x27\uff1b&quot;;\n            .replace(\/`\/g, &#39;`&#39;) \/\/ \u2190&quot;\uff06\uff03x60\uff1b&quot;;\n            .replace(\/&quot;\/g, &#39;&quot;&#39;) \/\/ \u2190&quot;\uff06quot\uff1b&quot;;\n            .replace(\/&lt;\/g, &#39;&lt;&#39;)   \/\/ \u2190&quot;\uff06lt\uff1b&quot;;\n            .replace(\/&gt;\/g, &#39;&gt;&#39;);  \/\/ \u2190&quot;\uff06gt\uff1b&quot;;\n}\n&lt;\/script&gt;\n\n&lt;style type=&quot;text\/css&quot;&gt;\nbutton.user_Appender {\n  text-align    : center;\n  font-size     : 0.9rem;\n  line-height   : 1.2;\n  color         : #fff;\n\n  background    : #050505;\n  padding       : 3px 8px;\n  border        : 0;\n  border-radius : 10px;\n  text-shadow   : 1px 1px 1px #000;\n}\nbutton.user_Appender:hover {\n  background    : #00bb00;\n}\nbutton.user_Appender:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\n\nbutton.user_SearchButton {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1em;\n  color         : #ffffff;\n\n  background    : #009900;\n  padding       : 5px 20px;\n  border        : 2px solid #009900;\n  border-radius : 5%;\n\n  display       : inline-block;\n  cursor        : pointer;\n  transition    : .3s;\n  box-shadow    : 2px 2px 3px #666666;\n}\nbutton.user_SearchButton:hover {\n  color         : #009900;\n  background    : #ffffff;\n  box-shadow    : none;\n}\n&lt;\/style&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Clip to Browser Cookie<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Clip-to-Browser-Cookie-20220904.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"360\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Clip-to-Browser-Cookie-20220904.gif?resize=1280%2C360&#038;ssl=1\" alt=\"'Cookie Clip' is a note for yourself.\nThe sample below takes note of the &quot;Registered Trade Name&quot;. Cross-Apps is also useful.\n'\u30af\u30c3\u30ad\u30fc\u30af\u30ea\u30c3\u30d7' \u306f\u81ea\u5206\u81ea\u8eab\u5411\u3051\u30e1\u30e2\u3067\u3059\u3002\n\u4ee5\u4e0b\u306e\u30b5\u30f3\u30d7\u30eb\u306f &quot;Registered Trade Name \/ \u6b63\u5f0f\u5546\u53f7&quot; \u3092\u30e1\u30e2\u3057\u307e\u3059\u3002\u30a2\u30d7\u30ea\u6a2a\u65ad\u6d3b\u7528\u3082\u4fbf\u5229\u3067\u3059\u3002\" class=\"wp-image-127242\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/39\/0\/1VUWutsuaw2ld2mt8tz9WlNtyrCOzh6M\/view\" target=\"_blank\" rel=\"noreferrer noopener\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_RegisteredTradeName<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_CookieClips_RegisteredTradeName<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Clip-to-Browser-Cookie\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>Check official name: \n&lt;a href=&quot;https:\/\/www.houjin-bangou.nta.go.jp\/&quot; target=&quot;_Blank&quot;&gt;\u6cd5\u52d9\u7701 \u6cd5\u4eba\u756a\u53f7\u516c\u8868\u30b5\u30a4\u30c8&lt;\/a&gt;,\n&lt;a href=&quot;https:\/\/www.nta.go.jp\/publication\/pamph\/shohi\/cross\/touroku.pdf&quot; target=&quot;_Blank&quot;&gt;\u767b\u9332\u56fd\u5916\u4e8b\u696d\u8005\u540d\u7c3f PDF&lt;\/a&gt;\n&lt;br&gt;\n&lt;button onclick=&#39;user_addCookieClip_RegisteredTradeName( &quot;q_RegisteredTradeName&quot; );&#39;\n type=&#39;button&#39; class=&#39;user_AddWordButton&#39;&gt;+ CookieClip&lt;\/button&gt;\n&lt;span id=&quot;user_CookieClips_RegisteredTradeName&quot;&gt;&lt;\/span&gt;\n\n&lt;script&gt;\n\/\/\/ &#39;Cookie Clip&#39; is a note for yourself.\n\/\/\/ The sample below takes note of the &quot;Registered Trade Name&quot;. Cross-Apps is also useful.\n\/\/\/ &#39;\u30af\u30c3\u30ad\u30fc\u30af\u30ea\u30c3\u30d7&#39; \u306f\u81ea\u5206\u81ea\u8eab\u5411\u3051\u30e1\u30e2\u3067\u3059\u3002\n\/\/\/ \u4ee5\u4e0b\u306e\u30b5\u30f3\u30d7\u30eb\u306f &quot;Registered Trade Name \/ \u6b63\u5f0f\u5546\u53f7&quot; \u3092\u30e1\u30e2\u3057\u307e\u3059\u3002\u30a2\u30d7\u30ea\u6a2a\u65ad\u6d3b\u7528\u3082\u4fbf\u5229\u3067\u3059\u3002\n\nqbpms.form.on( &#39;ready&#39;, user_loadCookieClips_RegisteredTradeName );     \/\/\/\/ EDIT \/\/\/\/\n\n\/\/ \u25bc\u25bc\u25bc user_loadCookieClips_XXX \u25bc\u25bc\u25bc\nfunction  user_loadCookieClips_RegisteredTradeName(){                   \/\/\/\/ EDIT \/\/\/\/\n  let strCookieName        = &quot;user_CookieRTN&quot;;                          \/\/\/\/ EDIT \/\/\/\/ (RegSymbols unavailable)\n  let selectorButtonListed = &quot;#user_CookieClips_RegisteredTradeName&quot;;   \/\/\/\/ EDIT \/\/\/\/\n\n  let strClipsTSV  = user_getCookieValue( strCookieName );\n  if( strClipsTSV !== &quot;&quot; ){\n    user_setCookieValue( strCookieName, strClipsTSV );\n    user_showClipButtons( strClipsTSV, selectorButtonListed );\n  }\n}\n\/\/ \u25bc\u25bc\u25bc onclick: user_addCookieClip_XXX \u25bc\u25bc\u25bc \nfunction user_addCookieClip_RegisteredTradeName( qStrField ){           \/\/\/\/ EDIT \/\/\/\/\n  let strCookieName        = &quot;user_CookieRTN&quot;;                          \/\/\/\/ EDIT \/\/\/\/ (RegSymbols unavailable)\n  let selectorButtonListed = &quot;#user_CookieClips_RegisteredTradeName&quot;;   \/\/\/\/ EDIT \/\/\/\/\n\n  let strTarget   = qbpms.form.get( qStrField );\n  if( strTarget   === null ){ return; } \/\/ ReadOnly source\n  if( strTarget   === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  strTarget = strTarget.trim().replace(&#39;\\t&#39;,&#39; &#39;);\n\n  let strClipsTSV = user_getCookieValue( strCookieName );\n  let strNewTSV   = &quot;&quot;;\n  if( strClipsTSV === &quot;&quot; ){\n      strNewTSV   = strTarget;\n  }else{\n      strNewTSV   = strClipsTSV + &quot;\\t&quot; + strTarget;\n  }\n  user_setCookieValue( strCookieName, strNewTSV );\n  user_showClipButtons( strNewTSV, selectorButtonListed );\n}\n\/\/ \u25bc\u25bc\u25bc onclick: user_deleteCookieClip_XXX \u25bc\u25bc\u25bc \nfunction user_deleteCookieClip_RegisteredTradeName(){                   \/\/\/\/ EDIT \/\/\/\/\n  let strCookieName        = &quot;user_CookieRTN&quot;;                          \/\/\/\/ EDIT \/\/\/\/ (RegSymbols unavailable)\n  let selectorButtonListed = &quot;#user_CookieClips_RegisteredTradeName&quot;;   \/\/\/\/ EDIT \/\/\/\/\n\n  let strTarget   = this.value;\n  let strClipsTSV = user_getCookieValue( strCookieName );\n  let arrClipsTSV = strClipsTSV.split( &#39;\\t&#39; );\n  let numIndex    = arrClipsTSV.indexOf( strTarget );\n  console.log( &quot; delete[&quot; + numIndex + &quot;]: &quot; + strTarget );\n  if( numIndex &lt; 0 ){ console.log( &quot; search element error &quot; ); return; }\n  arrClipsTSV.splice( numIndex, 1 );\n\n  user_setCookieValue( strCookieName, arrClipsTSV.join( &#39;\\t&#39; ) );\n  user_showClipButtons( arrClipsTSV.join( &#39;\\t&#39; ), selectorButtonListed );\n}\n\/\/ \u25bc\u25bc\u25bc onclick: user_moveLeftCookieClip_XXX \u25bc\u25bc\u25bc \nfunction user_moveLeftCookieClip_RegisteredTradeName(){                 \/\/\/\/ EDIT \/\/\/\/\n  let strCookieName        = &quot;user_CookieRTN&quot;;                          \/\/\/\/ EDIT \/\/\/\/ (RegSymbols unavailable)\n  let selectorButtonListed = &quot;#user_CookieClips_RegisteredTradeName&quot;;   \/\/\/\/ EDIT \/\/\/\/\n\n  let strTarget   = this.value;\n  let strClipsTSV = user_getCookieValue( strCookieName );\n  let arrClipsTSV = strClipsTSV.split( &#39;\\t&#39; );\n  let numIndex    = arrClipsTSV.indexOf( strTarget );\n  if( numIndex &lt; 0 ){\n    console.log( &quot; search element error &quot; ); return;\n  }else if( numIndex === 0 ){ \/\/ Leftmost\n    console.log( &quot; move [&quot; + numIndex + &quot;] to [&quot; + (arrClipsTSV.length-1) + &quot;} :&quot;  + strTarget );\n    arrClipsTSV.shift();\n    arrClipsTSV.push( strTarget );\n  }else if( numIndex &gt; 0 ){\n    console.log( &quot; move [&quot; + numIndex + &quot;] to [&quot; + (numIndex-1) + &quot;} :&quot;  + strTarget );\n    arrClipsTSV.splice( numIndex, 1 );\n    arrClipsTSV.splice( numIndex-1, 0, strTarget );\n  }\n\n  user_setCookieValue( strCookieName, arrClipsTSV.join( &#39;\\t&#39; ) );\n  user_showClipButtons( arrClipsTSV.join( &#39;\\t&#39; ), selectorButtonListed );\n}\n\/\/ \u25bd\u25bd\u25bd onclick: user_copyButtonValueToClipboard \u25bd\u25bd\u25bd\nfunction user_copyButtonValueToClipboard(){\n  let str = this.value;\n  if( str !== &quot;&quot; ){\n    navigator.clipboard.writeText( str );\n    \/\/ https:\/\/developer.mozilla.org\/docs\/Web\/API\/Clipboard_API\n  }\n}\n\n\/\/ \u25bc\u25bc user_showClipButtons \u25bc\u25bc \nfunction user_showClipButtons( strClipsTSV, selectorButtonListed ){\n  document.querySelector( selectorButtonListed ).innerHTML = &#39;&#39;; \/\/ remove all children\n  let arrClips = strClipsTSV.split(&#39;\\t&#39;);\n  for( let i = 0; i &lt; arrClips.length; i++ ){\n    user_addClipButton( arrClips[i], selectorButtonListed );\n  }\n}\n\/\/ \u25bc\u25bc user_setCookieValue \u25bc\u25bc \nfunction user_setCookieValue( strCookieName, strValue ){\n  console.log( strCookieName + &quot;=&quot; + strValue );\n  let strNewCookie = strCookieName + &quot;=&quot; +\n                     encodeURIComponent( strValue ) + &quot;; max-age=&quot; + (60*60*24*100); \/\/ 100 days\n  if( strNewCookie.length &gt; 4000 ){ console.log( &quot; too much values &quot; ); return; }\n  document.cookie  = strNewCookie;\n}\n\/\/ \u25bc\u25bc user_getCookieValue \u25bc\u25bc \nfunction user_getCookieValue( strCookieName ){\n  let regValue = new RegExp( &quot;(?:(?:^|.*;\\s*)&quot; + strCookieName + &quot;\\s*\\=\\s*([^;]*).*$)|^.*$&quot; );\n  let strValue = document.cookie.replace( regValue, &#39;$1&#39;);\n  \/\/ https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Guide\/Regular_Expressions\/Groups_and_Backreferences\n  \/\/   (?:x) --- Non-capturing group: Matches &quot;x&quot; but does not remember the match.\n  \/\/ https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Guide\/Regular_Expressions\/Character_Classes\n  \/\/   \\s --- a single white space character, including space, tab, form feed, line feed, and other Unicode spaces.\n  strValue = decodeURIComponent( strValue );\n  let arrValues = strValue.split(&#39;\\t&#39;);\n  console.log( strCookieName + &quot;[&quot; + arrValues.length + &quot;]: &quot; + strValue );\n  return strValue;\n}\n\/\/ \u25bc user_addClipButton \u25bc \nfunction user_addClipButton( strClip, selectorButtonListed ){\n  if( strClip === &quot;&quot;   ){ return; }\n  let elNewSpan  = document.createElement( &quot;span&quot; );\n      elNewSpan.style.whiteSpace = &quot;nowrap&quot;;\n  let elNewButton = document.createElement( &quot;button&quot; );\n      elNewButton.type      = &quot;button&quot;;\n      elNewButton.title     = &quot;copy to clipboard&quot;; \/\/ as tooltip\n      elNewButton.ariaLabel = &quot;Copy&quot;;\n      elNewButton.value     = strClip;\n      elNewButton.innerHTML = &quot;\u274f &quot; + strClip; \/\/ &quot;\uff06\uff0310063\uff1b &quot; -- Lower right drop-shadowed white square\n      elNewButton.onclick   = user_copyButtonValueToClipboard;\n      elNewButton.classList.add( &quot;user_CopyWordButton&quot; );\n  let elNewDelButton = document.createElement( &quot;button&quot; );\n      elNewDelButton.type      = &quot;button&quot;;\n      elNewDelButton.title     = &quot;delete button&quot;; \/\/ as tooltip\n      elNewDelButton.ariaLabel = &quot;Delete&quot;;\n      elNewDelButton.value     = strClip;\n      elNewDelButton.innerHTML = &quot;\u232b&quot;; \/\/ &quot;\uff06\uff039003\uff1b&quot; -- DELETE mark\n      elNewDelButton.onclick   = user_deleteCookieClip_RegisteredTradeName;   \/\/\/\/ EDIT \/\/\/\/\n      elNewDelButton.classList.add( &quot;user_DeleteWordButton&quot; );\n  let elNewMoveButton = document.createElement( &quot;button&quot; );\n      elNewMoveButton.type      = &quot;button&quot;;\n      elNewMoveButton.title     = &quot;move to left&quot;; \/\/ as tooltip\n      elNewMoveButton.ariaLabel = &quot;Move&quot;;\n      elNewMoveButton.value     = strClip;\n      elNewMoveButton.innerHTML = &quot;\u21c6 &quot;; \/\/ &quot;\uff06\uff038646\uff1b &quot; -- Leftwards arrow over rightwards arrow\n      elNewMoveButton.onclick   = user_moveLeftCookieClip_RegisteredTradeName;   \/\/\/\/ EDIT \/\/\/\/\n      elNewMoveButton.classList.add( &quot;user_MoveButton&quot; );\n  elNewSpan.append( elNewMoveButton, elNewButton, elNewDelButton );\n  document.querySelector( selectorButtonListed ).append( &quot; &quot;, elNewSpan );\n}\n&lt;\/script&gt;\n&lt;style type=&quot;text\/css&quot;&gt;\nbutton.user_AddWordButton {\n  font-size     : 0.9rem;\n  line-height   : 1rem;\n  color         : #ffffff;\n\n  background    : #009900;\n  padding       : 3px 5px;\n  border        : 2px solid #009900;\n  border-radius : 5%;\n  box-shadow    : 2px 2px 3px #666666;\n  margin        : 2px 3px;\n\n  cursor        : pointer;\n  transition    : .3s;\n}\nbutton.user_AddWordButton:hover {\n  color         : #009900;\n  background    : #ffffff;\n  box-shadow    : none;\n}\n\nbutton.user_CopyWordButton {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 0 0 0 0;\n  margin        : 2px 0 2px 0;\n}\nbutton.user_CopyWordButton:hover {\n  background    : #00bb00;\n}\nbutton.user_CopyWordButton:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_DeleteWordButton {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 0 10px 10px 0;\n  margin        : 2px 3px 2px 1px;\n}\nbutton.user_DeleteWordButton:hover {\n  background    : #00bb00;\n}\nbutton.user_DeleteWordButton:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_MoveButton {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 10px 0 0 10px;\n  margin        : 2px 1px 2px 3px;\n}\nbutton.user_MoveButton:hover {\n  background    : #00bb00;\n}\nbutton.user_MoveButton:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\n&lt;\/style&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Clip-to-Browser-Cookie-Japan-Zip-20220904.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Clip-to-Browser-Cookie-Japan-Zip-20220904.gif?resize=1280%2C720&#038;ssl=1\" alt=\"\" class=\"wp-image-127246\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/bpm.questetra.net\/System\/Event\/MessageStartForm\/1862\/3\/73afl9AcQzmxfTHVQ8ZSkwfGWmyPeU0Y\/view\" target=\"_blank\" rel=\"noreferrer noopener\">Online DEMO (public form)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_FilterPhrase<\/code><\/li>\n\n\n\n<li>\u2192 <code>span#user_CookieClips_FilterPhrase<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Clip-to-Browser-Cookie-Japan-Zip\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button onclick=&#39;user_addCookieClip_FilterPhrase( &quot;q_FilterPhrase&quot; );&#39;\n type=&#39;button&#39; class=&#39;user_AddWordButton&#39;&gt;+ CookieClip&lt;\/button&gt;\n&lt;span id=&quot;user_CookieClips_FilterPhrase&quot;&gt;&lt;\/span&gt;\n\n&lt;script&gt;\nqbpms.form.on( &#39;ready&#39;, user_loadCookieClips_FilterPhrase );     \/\/\/\/ EDIT \/\/\/\/\n\n\/\/ \u25bc\u25bc\u25bc user_loadCookieClips_XXX \u25bc\u25bc\u25bc\nfunction  user_loadCookieClips_FilterPhrase(){                   \/\/\/\/ EDIT \/\/\/\/\n  let strCookieName        = &quot;user_CookieFilterPhrase&quot;;          \/\/\/\/ EDIT \/\/\/\/ (RegSymbols unavailable)\n  let selectorButtonListed = &quot;#user_CookieClips_FilterPhrase&quot;;   \/\/\/\/ EDIT \/\/\/\/\n\n  let strClipsTSV  = user_getCookieValue( strCookieName );\n  if( strClipsTSV !== &quot;&quot; ){\n    user_setCookieValue( strCookieName, strClipsTSV );\n    user_showClipButtons( strClipsTSV, selectorButtonListed );\n  }\n}\n\/\/ \u25bc\u25bc\u25bc onclick: user_addCookieClip_XXX \u25bc\u25bc\u25bc \nfunction user_addCookieClip_FilterPhrase( qStrField ){           \/\/\/\/ EDIT \/\/\/\/\n  let strCookieName        = &quot;user_CookieFilterPhrase&quot;;          \/\/\/\/ EDIT \/\/\/\/ (RegSymbols unavailable)\n  let selectorButtonListed = &quot;#user_CookieClips_FilterPhrase&quot;;   \/\/\/\/ EDIT \/\/\/\/\n\n  let strTarget   = qbpms.form.get( qStrField );\n  if( strTarget   === null ){ return; } \/\/ ReadOnly source\n  if( strTarget   === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  strTarget = strTarget.trim().replace(&#39;\\t&#39;,&#39; &#39;);\n\n  let strClipsTSV = user_getCookieValue( strCookieName );\n  let strNewTSV   = &quot;&quot;;\n  if( strClipsTSV === &quot;&quot; ){\n      strNewTSV   = strTarget;\n  }else{\n      strNewTSV   = strClipsTSV + &quot;\\t&quot; + strTarget;\n  }\n  user_setCookieValue( strCookieName, strNewTSV );\n  user_showClipButtons( strNewTSV, selectorButtonListed );\n}\n\/\/ \u25bc\u25bc\u25bc onclick: user_deleteCookieClip_XXX \u25bc\u25bc\u25bc \nfunction user_deleteCookieClip_FilterPhrase(){                   \/\/\/\/ EDIT \/\/\/\/\n  let strCookieName        = &quot;user_CookieFilterPhrase&quot;;          \/\/\/\/ EDIT \/\/\/\/ (RegSymbols unavailable)\n  let selectorButtonListed = &quot;#user_CookieClips_FilterPhrase&quot;;   \/\/\/\/ EDIT \/\/\/\/\n\n  let strTarget   = this.value;\n  let strClipsTSV = user_getCookieValue( strCookieName );\n  let arrClipsTSV = strClipsTSV.split( &#39;\\t&#39; );\n  let numIndex    = arrClipsTSV.indexOf( strTarget );\n  console.log( &quot; delete[&quot; + numIndex + &quot;]: &quot; + strTarget );\n  if( numIndex &lt; 0 ){ console.log( &quot; search element error &quot; ); return; }\n  arrClipsTSV.splice( numIndex, 1 );\n\n  user_setCookieValue( strCookieName, arrClipsTSV.join( &#39;\\t&#39; ) );\n  user_showClipButtons( arrClipsTSV.join( &#39;\\t&#39; ), selectorButtonListed );\n}\n\/\/ \u25bc\u25bc\u25bc onclick: user_moveLeftCookieClip_XXX \u25bc\u25bc\u25bc \nfunction user_moveLeftCookieClip_FilterPhrase(){                 \/\/\/\/ EDIT \/\/\/\/\n  let strCookieName        = &quot;user_CookieFilterPhrase&quot;;          \/\/\/\/ EDIT \/\/\/\/ (RegSymbols unavailable)\n  let selectorButtonListed = &quot;#user_CookieClips_FilterPhrase&quot;;   \/\/\/\/ EDIT \/\/\/\/\n\n  let strTarget   = this.value;\n  let strClipsTSV = user_getCookieValue( strCookieName );\n  let arrClipsTSV = strClipsTSV.split( &#39;\\t&#39; );\n  let numIndex    = arrClipsTSV.indexOf( strTarget );\n  if( numIndex &lt; 0 ){\n    console.log( &quot; search element error &quot; ); return;\n  }else if( numIndex === 0 ){ \/\/ Leftmost\n    console.log( &quot; move [&quot; + numIndex + &quot;] to [&quot; + (arrClipsTSV.length-1) + &quot;} :&quot;  + strTarget );\n    arrClipsTSV.shift();\n    arrClipsTSV.push( strTarget );\n  }else if( numIndex &gt; 0 ){\n    console.log( &quot; move [&quot; + numIndex + &quot;] to [&quot; + (numIndex-1) + &quot;} :&quot;  + strTarget );\n    arrClipsTSV.splice( numIndex, 1 );\n    arrClipsTSV.splice( numIndex-1, 0, strTarget );\n  }\n\n  user_setCookieValue( strCookieName, arrClipsTSV.join( &#39;\\t&#39; ) );\n  user_showClipButtons( arrClipsTSV.join( &#39;\\t&#39; ), selectorButtonListed );\n}\n\/\/ \u25bd\u25bd\u25bd onclick: user_copyButtonValueToClipboard \u25bd\u25bd\u25bd\nfunction user_copyButtonValueToClipboard(){\n  let str = this.value;\n  if( str !== &quot;&quot; ){\n    navigator.clipboard.writeText( str );\n    \/\/ https:\/\/developer.mozilla.org\/docs\/Web\/API\/Clipboard_API\n  }\n}\n\n\/\/ \u25bc\u25bc user_showClipButtons \u25bc\u25bc \nfunction user_showClipButtons( strClipsTSV, selectorButtonListed ){\n  document.querySelector( selectorButtonListed ).innerHTML = &#39;&#39;; \/\/ remove all children\n  let arrClips = strClipsTSV.split(&#39;\\t&#39;);\n  for( let i = 0; i &lt; arrClips.length; i++ ){\n    user_addClipButton( arrClips[i], selectorButtonListed );\n  }\n}\n\/\/ \u25bc\u25bc user_setCookieValue \u25bc\u25bc \nfunction user_setCookieValue( strCookieName, strValue ){\n  console.log( &quot;SET &quot; + strCookieName + &quot;=&quot; + strValue );\n  let strNewCookie = strCookieName + &quot;=&quot; +\n                     encodeURIComponent( strValue ) + &quot;; max-age=&quot; + (60*60*24*100); \/\/ 100 days\n  if( strNewCookie.length &gt; 4000 ){ console.log( &quot; too much values &quot; ); return; }\n  document.cookie  = strNewCookie;\n}\n\/\/ \u25bc\u25bc user_getCookieValue \u25bc\u25bc \nfunction user_getCookieValue( strCookieName ){\n  let regValue = new RegExp( &quot;(?:(?:^|.*;\\s*)&quot; + strCookieName + &quot;\\s*\\=\\s*([^;]*).*$)|^.*$&quot; );\n  let strValue = document.cookie.replace( regValue, &#39;$1&#39;);\n  \/\/ https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Guide\/Regular_Expressions\/Groups_and_Backreferences\n  \/\/   (?:x) --- Non-capturing group: Matches &quot;x&quot; but does not remember the match.\n  \/\/ https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Guide\/Regular_Expressions\/Character_Classes\n  \/\/   \\s --- a single white space character, including space, tab, form feed, line feed, and other Unicode spaces.\n  strValue = decodeURIComponent( strValue );\n  let arrValues = strValue.split(&#39;\\t&#39;);\n  console.log( &quot;GET &quot; + strCookieName + &quot;[&quot; + arrValues.length + &quot;]: &quot; + strValue );\n  return strValue;\n}\n\/\/ \u25bc user_addClipButton \u25bc (EDIT XXX)\nfunction user_addClipButton( strClip, selectorButtonListed ){\n  if( strClip === &quot;&quot;   ){ return; }\n  let elNewSpan  = document.createElement( &quot;span&quot; );\n      elNewSpan.style.whiteSpace = &quot;nowrap&quot;;\n  let elNewButton = document.createElement( &quot;button&quot; );\n      elNewButton.type      = &quot;button&quot;;\n      elNewButton.title     = &quot;copy to clipboard&quot;; \/\/ as tooltip\n      elNewButton.ariaLabel = &quot;Copy&quot;;\n      elNewButton.value     = strClip;\n      elNewButton.innerHTML = &quot;\u274f &quot; + strClip; \/\/ &quot;\uff06\uff0310063\uff1b &quot; -- Lower right drop-shadowed white square\n      elNewButton.onclick   = user_copyButtonValueToClipboard;\n      elNewButton.classList.add( &quot;user_CopyWordButton&quot; );\n  let elNewDelButton = document.createElement( &quot;button&quot; );\n      elNewDelButton.type      = &quot;button&quot;;\n      elNewDelButton.title     = &quot;delete button&quot;; \/\/ as tooltip\n      elNewDelButton.ariaLabel = &quot;Delete&quot;;\n      elNewDelButton.value     = strClip;\n      elNewDelButton.innerHTML = &quot;\u232b&quot;; \/\/ &quot;\uff06\uff039003\uff1b&quot; -- DELETE mark\n      elNewDelButton.onclick   = user_deleteCookieClip_FilterPhrase;      \/\/\/\/ EDIT XXX \/\/\/\/\n      elNewDelButton.classList.add( &quot;user_DeleteWordButton&quot; );\n  let elNewMoveButton = document.createElement( &quot;button&quot; );\n      elNewMoveButton.type      = &quot;button&quot;;\n      elNewMoveButton.title     = &quot;move to left&quot;; \/\/ as tooltip\n      elNewMoveButton.ariaLabel = &quot;Move&quot;;\n      elNewMoveButton.value     = strClip;\n      elNewMoveButton.innerHTML = &quot;\u21c6 &quot;; \/\/ &quot;\uff06\uff038646\uff1b &quot; -- Leftwards arrow over rightwards arrow\n      elNewMoveButton.onclick   = user_moveLeftCookieClip_FilterPhrase;   \/\/\/\/ EDIT XXX \/\/\/\/\n      elNewMoveButton.classList.add( &quot;user_MoveButton&quot; );\n  elNewSpan.append( elNewMoveButton, elNewButton, elNewDelButton );\n  document.querySelector( selectorButtonListed ).append( &quot; &quot;, elNewSpan );\n}\n&lt;\/script&gt;\n&lt;style type=&quot;text\/css&quot;&gt;\nbutton.user_AddWordButton {\n  font-size     : 0.9rem;\n  line-height   : 1rem;\n  color         : #ffffff;\n\n  background    : #009900;\n  padding       : 3px 5px;\n  border        : 2px solid #009900;\n  border-radius : 5%;\n  box-shadow    : 2px 2px 3px #666666;\n  margin        : 2px 3px;\n\n  cursor        : pointer;\n  transition    : .3s;\n}\nbutton.user_AddWordButton:hover {\n  color         : #009900;\n  background    : #ffffff;\n  box-shadow    : none;\n}\n\nbutton.user_CopyWordButton {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 0 0 0 0;\n  margin        : 2px 0 2px 0;\n}\nbutton.user_CopyWordButton:hover {\n  background    : #00bb00;\n}\nbutton.user_CopyWordButton:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_DeleteWordButton {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 0 10px 10px 0;\n  margin        : 2px 3px 2px 1px;\n}\nbutton.user_DeleteWordButton:hover {\n  background    : #00bb00;\n}\nbutton.user_DeleteWordButton:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_MoveButton {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 10px 0 0 10px;\n  margin        : 2px 1px 2px 3px;\n}\nbutton.user_MoveButton:hover {\n  background    : #00bb00;\n}\nbutton.user_MoveButton:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\n&lt;\/style&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_AddressWithZipCode<\/code><\/li>\n\n\n\n<li>\u2192 STRING (STRING_TEXTFIELD): <code>q_ZIPCode<\/code><\/li>\n\n\n\n<li>\u2192 STRING (STRING_TEXTFIELD): <code>q_Address<\/code><\/li>\n\n\n\n<li>\u2192 STRING (STRING_TEXTFIELD): <code>q_BizName<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Clip-to-Browser-Cookie-Split-Address\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button onclick=&#39;user_splitAddressWithZipCode( &quot;q_AddressWithZipCode&quot;,\n                                &quot;q_ZIPCode&quot;, &quot;q_Address&quot;, &quot;q_BizName&quot; );&#39;\n type=&#39;button&#39; &gt;Copy to below&lt;\/button&gt;\n&lt;script&gt;\nfunction user_splitAddressWithZipCode( qStrFieldAWZC, qStrFieldZ, qStrFieldA, qStrFieldBiz ){\n  let qSelectAWZC = qbpms.form.get( qStrFieldAWZC );\n  if( qSelectAWZC.length === 0 ){ console.log( &quot; not selected &quot; ); return; }\n  let strAWZC = qSelectAWZC[0].display;\n  let arrAWZC = strAWZC.split( &quot; &quot; );\n  qbpms.form.set( qStrFieldZ,   arrAWZC[0] );\n  qbpms.form.set( qStrFieldA,   arrAWZC[1] );\n  qbpms.form.set( qStrFieldBiz, (arrAWZC[2] ?? &quot;&quot;) );\n} \n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-default q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions1.png?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions1.png?resize=1200%2C675&#038;ssl=1\" alt=\"\" class=\"wp-image-127259\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions1.png?w=1200&amp;ssl=1 1200w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions1.png?resize=560%2C315&amp;ssl=1 560w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions1.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions1.png?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-style-default q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions2.png?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"675\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions2.png?resize=1200%2C675&#038;ssl=1\" alt=\"\" class=\"wp-image-127262\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions2.png?w=1200&amp;ssl=1 1200w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions2.png?resize=560%2C315&amp;ssl=1 560w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions2.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/Cookie-Clip-functions2.png?resize=768%2C432&amp;ssl=1 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large is-style-default q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Cookie-Clip-simplified.png?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Cookie-Clip-simplified.png?resize=1024%2C576&#038;ssl=1\" alt=\"\" class=\"wp-image-127429\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Cookie-Clip-simplified.png?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Cookie-Clip-simplified.png?resize=560%2C315&amp;ssl=1 560w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Cookie-Clip-simplified.png?resize=768%2C432&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Cookie-Clip-simplified.png?w=1200&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Clip-to-Browser-Cookie-Simplified-20220908.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Clip-to-Browser-Cookie-Simplified-20220908.gif?resize=1280%2C720&#038;ssl=1\" alt=\"CookieClip (simplified)\" class=\"wp-image-127426\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a rel=\"noreferrer noopener\" href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/40\/0\/1VUWutsuaw2ld2mt8tz9WlNtyrCOzh6M\/view\" target=\"_blank\">Online DEMO (public form<\/a>), <a href=\"https:\/\/drive.google.com\/file\/d\/17yjb-X2QaAWiE2vE8Yp2-sN5WpC5zXSJ\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">Download Sample (Workflow App)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD): <code>q_ApprovalTitle<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2192 <code>span#user_ApprovalTitle<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u2190 STRING (STRING_TEXTAREA): <code>q_ApprovalOverview<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2192 <code>span#user_ApprovalOverview<\/code><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u2190 STRING (STRING_TEXTAREA): <code>q_ApprovalDescription<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2192 <code>span#user_ApprovalDescription<\/code><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"q_ApprovalTitle\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button onclick=&#39;user_appendClip( &quot;user_ApprovalTitle&quot;, &quot;q_ApprovalTitle&quot; );&#39;\n type=&#39;button&#39; class=&#39;user_ButtonAppend&#39;&gt;+ CookieClip \u21d2&lt;\/button&gt;\n&lt;span id=&quot;user_ApprovalTitle&quot;&gt;&lt;\/span&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"q_ApprovalOverview\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button onclick=&#39;user_appendClip( &quot;user_ApprovalOverview&quot;, &quot;q_ApprovalOverview&quot; );&#39;\n type=&#39;button&#39; class=&#39;user_ButtonAppend&#39;&gt;+ CookieClip \u21d2&lt;\/button&gt;\n&lt;span id=&quot;user_ApprovalOverview&quot;&gt;&lt;\/span&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"q_ApprovalDescription\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button onclick=&#39;user_appendClip( &quot;user_ApprovalDescription&quot;, &quot;q_ApprovalDescription&quot; );&#39;\n type=&#39;button&#39; class=&#39;user_ButtonAppend&#39;&gt;+ CookieClip \u21d2&lt;\/button&gt;\n&lt;span id=&quot;user_ApprovalDescription&quot;&gt;&lt;\/span&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"\u25cfoverwrite_title\u25cf\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;h4 style=&quot;font-size:13px;background-color:#198000;color:#ffffff;padding:3px;margin-bottom:3px;&quot;&gt;\n Approval Flows \/ \u7533\u8acb\u627f\u8a8d&lt;\/h4&gt;\n&#39;Cookie Clip&#39; is a note for yourself. \/ &#39;CookieClip&#39; \u306f\u81ea\u5206\u81ea\u8eab\u5411\u3051\u30e1\u30e2\u3067\u3059\u3002\n&lt;p style=&quot;text-align:right&quot;&gt;\n &lt;button onclick=&quot;user_deleteAllClips()&quot; type=&#39;button&#39;&gt;\ud83d\uddd1 Clear ALL Clips&lt;\/button&gt;\n&lt;\/p&gt;\n\n&lt;script&gt;\n\/\/ &lt;!-- &quot;\uff06\uff03128465\uff1b&quot; --- Wastebasket --&gt;\n\/\/ &lt;!-- Fundamental Methods & Styles in &quot;Guide Panel&quot; or &quot;Title&quot; etc --&gt;\n\n\/\/ \u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u25bd EDIT HERE \u25bd\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\n\/\/ &quot;CookieKey&quot; will be generated by &quot;user_arrSelectorIds[i]&quot;.\nconst user_arrSelectorIds = [\n  &quot;user_ApprovalTitle&quot;,         \/\/ \u2190 &lt;span id=&quot;user_ApprovalTitle&quot;&gt;&lt;\/span&gt;\n  &quot;user_ApprovalOverview&quot;,      \/\/ \u2190 &lt;span id=&quot;user_ApprovalOverview&quot;&gt;&lt;\/span&gt;\n  &quot;user_ApprovalDescription&quot; ]; \/\/ \u2190 &lt;span id=&quot;user_ApprovalDescription&quot;&gt;&lt;\/span&gt;\n\/\/ \u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u25b3 EDIT HERE \u25b3\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\n\n\/\/\/\u25bc\u25bc\u25bc user_loadAllClips() \u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\nqbpms.form.on( &#39;ready&#39;, user_loadClips );\nfunction user_loadClips() {\n  for( let i = 0; i &lt; user_arrSelectorIds.length; i++ ) { \/\/ Selector: SpanID in which Button Listed\n    let strClipTsv = user_getCookie( user_arrSelectorIds[i] );\n    if( strClipTsv === &quot;&quot; ){ console.log( &quot; = no cookie: &#39;&quot; + user_arrSelectorIds[i] + &quot;&#39;&quot; ); continue; }\n    user_setCookie( user_arrSelectorIds[i], strClipTsv ); \/\/ Extend expiration date\n    user_listClips( user_arrSelectorIds[i], strClipTsv );\n  }\n}\n\/\/\/\u25bc\u25bc\u25bc user_deleteAllClips() \u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\nfunction user_deleteAllClips() {\n  if( ! confirm( &quot;Clear All Cookies for Clips?&quot; ) ){ return; }\n  console.log( &quot; &lt;&lt;&lt; Delete All Clips &quot; );\n  for( let i = 0; i &lt; user_arrSelectorIds.length; i++ ) {\n    user_deleteCookie( user_arrSelectorIds[i] );\n    user_listClips   ( user_arrSelectorIds[i], &quot;&quot; );\n  }\n}\n\/\/\/\u25bc\u25bc\u25bc user_appendClip(str,str) \u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\nfunction user_appendClip( selectorId, qStrField ){\n  let strTarget  = qbpms.form.get( qStrField );\n  if( strTarget  === null ){ return; } \/\/ ReadOnly source\n  if( strTarget  === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  strTarget = strTarget.trim().replace( &#39;\\t&#39;, &#39; &#39; );\n  let strClipTsv    = user_getCookie( selectorId );\n  let strClipTsvNew = &quot;&quot;;\n  if( strClipTsv    === &quot;&quot; ){\n      strClipTsvNew = strTarget;\n  }else{\n    let arrClipTsv  = strClipTsv.split(&#39;\\t&#39;);\n    if( arrClipTsv.includes( strTarget ) ){\n      console.log( &quot; already exists &quot; );\n      return; \/\/ Duplicate entries are not allowed.\n    }else{\n      strClipTsvNew = strClipTsv + &quot;\\t&quot; + strTarget;\n    }\n  }\n  user_setCookie( selectorId, strClipTsvNew );\n  user_listClips( selectorId, strClipTsvNew );\n}\n\n\/\/\/\u25bc user_getCookie(str) \u25bc\u25bc\u25bc\u25bc\u25bc\nfunction user_getCookie( strCookieKey ) { \/\/ Split cookie string and get all individual &quot;key=value&quot; pairs in an array\n  let arrCookie = document.cookie.split(&quot;;&quot;);   \/\/ eg; &quot;...; q_KeyA=ValueA; q_KeyB=ValueB;...&quot;\n  for( let i = 0; i &lt; arrCookie.length; i++ ) { \/\/ Loop through the array elements\n    if( ! arrCookie[i].includes(&#39;=&#39;) ){ console.log( &quot; - getCookie: noise data included&quot; ); continue; }\n    let arrCookiePair = arrCookie[i].split(&quot;=&quot;);\n    if( strCookieKey === arrCookiePair[0].trim() ) { \/\/ Removing whitespace at the beginning of the cookie name\n      console.log( &quot; &lt; getCookie: &quot;+ strCookieKey );\n      \/\/console.log( &quot; &lt; getCookie: &quot;+ strCookieKey + &quot;=&quot; + arrCookiePair[1] ); \/\/ for Debug\n      return decodeURIComponent( arrCookiePair[1] );\n    }\n  }\n  return &#39;&#39;; \/\/ Return empty\n}\n\/\/\/\u25bc user_setCookie(str,str) \u25bc\u25bc\u25bc\u25bc\u25bc\nfunction user_setCookie( strCookieKey, strCookieValue ) {\n  let strNewCookiePair = strCookieKey + &quot;=&quot; + encodeURIComponent( strCookieValue );\n      strNewCookiePair += &quot;; max-age=&quot; + (60*60*24*366); \/\/ 366 days\n  console.log( &quot; &gt; setCookie: &quot;+ strCookieKey );\n  \/\/ console.log( &quot; &gt; setCookie: &quot;+ strNewCookiePair ); \/\/ for Debug\n  document.cookie = strNewCookiePair;\n}\n\/\/\/\u25bc user_deleteCookie(str) \u25bc\u25bc\u25bc\u25bc\u25bc\nfunction user_deleteCookie( strCookieKey ) {\n  let strNewCookiePair = strCookieKey + &quot;=; max-age=-1&quot;;\n  document.cookie = strNewCookiePair;\n}\n\/\/\/\u25bc\u25bc user_listClips(str,str) \u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\nfunction user_listClips( selectorId, strClipTsv ) { \/\/ List Buttons. &quot;selectorId&quot; is also &quot;CookieKey&quot;.\n  console.log( &quot;   Element &#39;#&quot; + selectorId + &quot;&#39; rewritten&quot; );\n  if( document.querySelector( &quot;#&quot; + selectorId ) === null ){ console.error( &quot;no &#39;#&quot; + selectorId + &quot;&#39;&quot; ); return; }\n  document.querySelector( &quot;#&quot; + selectorId ).innerHTML = &#39;&#39;; \/\/ remove all children\n  if( strClipTsv === &quot;&quot; ){ return; }\n  let arrClips = strClipTsv.split(&#39;\\t&#39;);\n  for( let i = 0; i &lt; arrClips.length; i++ ){\n    user_createButton( selectorId, arrClips[i] );\n  }\n}\n\/\/\/\u25bc user_createButton(str,str) \u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\u25bc\nfunction user_createButton( selectorId, strClip ) { \/\/ Generate Button in &quot;selectorId&quot;.\n  if( strClip === &quot;&quot;   ){ return; }\n  let elNewSpan  = document.createElement( &quot;span&quot; );\n      elNewSpan.style.whiteSpace = &quot;nowrap&quot;;\n  let elNewButton = document.createElement( &quot;button&quot; );\n      elNewButton.type      = &quot;button&quot;;\n      elNewButton.title     = strClip; \/\/ for previewing as tooltip\n      elNewButton.value     = strClip;\n      elNewButton.innerHTML = &quot;\u274f &quot; + \/\/ &quot;\uff06\uff0310063\uff1b &quot; -- Lower right drop-shadowed white square\n                              user_truncateStr( strClip );\n      elNewButton.onclick   = user_copyClip;\n      elNewButton.classList.add( &quot;user_ButtonCopy&quot; );\n  let elNewButtonDel = document.createElement( &quot;button&quot; );\n      elNewButtonDel.type      = &quot;button&quot;;\n      elNewButtonDel.title     = &quot;delete Clip&quot;; \/\/ as tooltip\n      elNewButtonDel.value     = strClip;\n      elNewButtonDel.innerHTML = &quot;\u232b&quot;; \/\/ &quot;\uff06\uff039003\uff1b&quot; -- DELETE mark\n      elNewButtonDel.onclick   = user_deleteClip;\n      elNewButtonDel.classList.add( &quot;user_ButtonDelete&quot; );\n  let elNewButtonShift = document.createElement( &quot;button&quot; );\n      elNewButtonShift.type      = &quot;button&quot;;\n      elNewButtonShift.title     = &quot;move to left&quot;; \/\/ as tooltip\n      elNewButtonShift.value     = strClip;\n      elNewButtonShift.innerHTML = &quot;\u21c6 &quot;; \/\/ &quot;\uff06\uff038646\uff1b &quot; -- Leftwards arrow over rightwards arrow\n      elNewButtonShift.onclick   = user_shiftClip;\n      elNewButtonShift.classList.add( &quot;user_ButtonShift&quot; );\n  elNewSpan.append( elNewButtonShift, elNewButton, elNewButtonDel );\n  document.querySelector( &quot;#&quot; + selectorId ).append( &quot; &quot;, elNewSpan );\n}\n\/\/\/\u25bd user_copyClip() \u25bd\u25bd\u25bd\u25bd\u25bd\nfunction user_copyClip() {\n  let str = this.value;  \/\/ this: &quot;event.currentTarget&quot;\n  if( str !== &quot;&quot; ){\n    navigator.clipboard.writeText( str );\n    \/\/ https:\/\/developer.mozilla.org\/docs\/Web\/API\/Clipboard_API\n    console.log( &quot;&gt;&gt;&gt; copied: &#39;&quot;+ user_truncateStr(str) + &quot;&#39;&quot; );\n  }\n}\n\/\/\/\u25bd user_deleteClip() \u25bd\u25bd\u25bd\u25bd\u25bd\nfunction user_deleteClip() {\n  let selectorId = this.parentElement.parentElement.id;\n  console.log( &quot;=== Delete button in &quot; + selectorId + &quot; is clicked ===&quot; );\n  let strTarget  = this.value;\n  strTarget      = strTarget.trim();\n  let strClipTsv = user_getCookie( selectorId ); \/\/ selectorId is also CookieKey\n  let arrClipTsv = strClipTsv.split(&#39;\\t&#39;);\n  let numIndex   = arrClipTsv.indexOf( strTarget );\n  if( numIndex &lt; 0 ){ console.error( &quot; search Value error in DeleteClip &quot; ); return; }\n  console.log( &quot;   [&quot; + numIndex + &quot;]: &quot; + strTarget ); \/\/ no &quot;user_truncateStr()&quot; for operation mistakes\n  arrClipTsv.splice( numIndex, 1 );\n  user_setCookie( selectorId, arrClipTsv.join(&#39;\\t&#39;) );\n  user_listClips( selectorId, arrClipTsv.join(&#39;\\t&#39;) );\n}\n\/\/\/\u25bd user_shiftClip() \u25bd\u25bd\u25bd\u25bd\u25bd\nfunction user_shiftClip() {\n   \/\/ span-selectorId(CookieKey) &gt; span-nowrap &gt; button-clip\n  let selectorId = this.parentElement.parentElement.id;\n  console.log( &quot;=== Shift button in &quot; + selectorId + &quot; is clicked ===&quot; );\n  let strTarget  = this.value;\n  strTarget      = strTarget.trim();\n  let strClipTsv = user_getCookie( selectorId ); \/\/ selectorId is also CookieKey\n  let arrClipTsv = strClipTsv.split(&#39;\\t&#39;);\n  let numIndex   = arrClipTsv.indexOf( strTarget );\n  if( numIndex &lt; 0 ){\n    console.error( &quot; search Value error in ShiftClip &quot; ); return;\n  }else if( numIndex === 0 ){ \/\/ Leftmost\n    console.log( &quot;   [&quot; + numIndex + &quot;] to [&quot; + (arrClipTsv.length-1) + &quot;]: &quot; + user_truncateStr(strTarget) );\n    arrClipTsv.shift();\n    arrClipTsv.push( strTarget );\n  }else if( numIndex &gt; 0 ){\n    console.log( &quot;   [&quot; + numIndex + &quot;] to [&quot; + (numIndex-1) + &quot;]: &quot; + user_truncateStr(strTarget) );\n    arrClipTsv.splice( numIndex, 1 );\n    arrClipTsv.splice( numIndex-1, 0, strTarget );\n  }\n  user_setCookie( selectorId, arrClipTsv.join(&#39;\\t&#39;) );\n  user_listClips( selectorId, arrClipTsv.join(&#39;\\t&#39;) );\n}\n\/\/\/\u25bd user_truncateStr(str) \u25bd\u25bd\u25bd\u25bd\u25bd\n\/*\nfunction user_truncateStr( str ) {\n  const numLength = 10;\n  return str.length &lt;= numLength ? str : (str.substr(0, numLength) + &quot;\u2026&quot; );\n  \/\/ &quot;\uff06hellip\uff1b&quot; --- Horizontal Ellipsis \/ \u6c34\u5e73\u7701\u7565\u8a18\u53f7\n}\n*\/\nfunction user_truncateStr( str ) {\n  const numLength = 10;\n  return str.length &lt;= numLength ?\n          user_escapeHtml( str ) : (user_escapeHtml( str ).substr(0, numLength) + &quot;\u2026&quot; );\n  \/\/ &quot;\uff06hellip\uff1b&quot; --- Horizontal Ellipsis \/ \u6c34\u5e73\u7701\u7565\u8a18\u53f7\n}\nfunction user_escapeHtml(str) {\n  if( typeof str !== &#39;string&#39; ) { return str; }\n  return str.replace( \/[&&#39;`&quot;&lt;&gt;]\/g, function(match) {\n    return {\n      &#39;&&#39;: &#39;&&#39;,  \/\/ &quot;\uff06amp\uff1b&quot;\n      &quot;&#39;&quot;: &#39;&#39;&#39;, \/\/ &quot;\uff06\uff03x27\uff1b&quot;\n      &#39;`&#39;: &#39;`&#39;, \/\/ &quot;\uff06\uff03x60\uff1b&quot;\n      &#39;&quot;&#39;: &#39;&quot;&#39;, \/\/ &quot;\uff06quot\uff1b&quot;\n      &#39;&lt;&#39;: &#39;&lt;&#39;,   \/\/ &quot;\uff06lt\uff1b&quot;\n      &#39;&gt;&#39;: &#39;&gt;&#39;,   \/\/ &quot;\uff06gt\uff1b&quot;\n    }[match]\n  });\n}\n&lt;\/script&gt;\n&lt;style&gt;\nbutton.user_ButtonCopy {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 0 0 0 0;\n  margin        : 2px 0 2px 0;\n}\nbutton.user_ButtonCopy:hover {\n  background    : #00bb00;\n}\nbutton.user_ButtonCopy:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_ButtonDelete {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 0 10px 10px 0;\n  margin        : 2px 3px 2px 1px;\n}\nbutton.user_ButtonDelete:hover {\n  background    : #00bb00;\n}\nbutton.user_ButtonDelete:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_ButtonShift {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 10px 0 0 10px;\n  margin        : 2px 1px 2px 3px;\n}\nbutton.user_ButtonShift:hover {\n  background    : #00bb00;\n}\nbutton.user_ButtonShift:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_ButtonAppend {\n  font-size     : 0.9rem;\n  line-height   : 1rem;\n  color         : #ffffff;\n\n  background    : #009900;\n  padding       : 3px 5px;\n  border        : 2px solid #009900;\n  border-radius : 5%;\n  box-shadow    : 2px 2px 3px #666666;\n  margin        : 2px 3px;\n\n  cursor        : pointer;\n  transition    : .3s;\n}\nbutton.user_ButtonAppend:hover {\n  color         : #009900;\n  background    : #ffffff;\n  box-shadow    : none;\n}\n&lt;\/style&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Clip to Browser Storage<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Clip-to-Browser-Storage-20220920.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"720\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/09\/deco-Clip-to-Browser-Storage-20220920.gif?resize=1280%2C720&#038;ssl=1\" alt=\"Clip to Browser Storage: &quot;StorageClip&quot; is a note for yourself. Improve your business with copy paste. You can save any sentences to the 'localStorage'. It also supports line-feed codes and tab codes.\" class=\"wp-image-136970\"\/><\/a><\/figure>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/bpm-us.questetra.net\/System\/Event\/MessageStartForm\/45\/1\/prISN2C1nWQvp4i8KpzGWiIsUmxIKp25\/view\" target=\"_blank\" rel=\"noreferrer noopener\">Online DEMO (public form)<\/a><br><a href=\"https:\/\/drive.google.com\/file\/d\/1EjDKaQgsvMoXDieFBhK2HKDQ3oWC4x14\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">Workflow App example (qar file)<\/a><br><a href=\"https:\/\/drive.google.com\/file\/d\/1cJJgFosriFbt968C5P2ckIpZPIBXpxO1\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">HTML\/JavaScript (text file)<\/a><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (TITLE): <code>title<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2192 <code>span#user_ReportTitle<\/code> (append)<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>\u2190 STRING (STRING_TEXTAREA): <code>q_RegionMaster<\/code>\n<ul class=\"wp-block-list\">\n<li>\u2192 <code>span#user_RegionMaster<\/code> (append)<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Clip-to-Browser-Storage\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;script&gt;\n\/\/\/\/\/\/ Clip to Browser Storage\n\/\/ &quot;StorageClip&quot; is a note for yourself. Improve your business with copy paste.\n\/\/ You can save any sentences to the &#39;localStorage&#39;. It also supports line-feed codes and tab codes.\n\/\/\n\/\/ 1.\n\/\/ Set this code in the Description of dataitem (&quot;Guide Panel&quot; or &quot;Title&quot;) that is loaded in all Steps.\n\/\/ \u3053\u306e\u30b3\u30fc\u30c9\u5168\u4f53\u3092\uff3b\u8aac\u660e\uff3d\u90e8\u306b\u8cbc\u308a\u4ed8\u3051\u307e\u3059\u3002\uff20\u5168\u5de5\u7a0b\u3067\u8aad\u307f\u8fbc\u307e\u308c\u308b\u30c7\u30fc\u30bf\u9805\u76ee\uff08&quot;\u30ac\u30a4\u30c9\u30d1\u30cd\u30eb&quot; \u3084 &quot;\u4ef6\u540d&quot;\uff09\n\/\/ 2.\n\/\/ To display the Clip button, add the button tag code in the dataitem (such as &quot;String&quot; or &quot;Numeric&quot;).\n\/\/ Clip\u30dc\u30bf\u30f3\u3092\u8868\u793a\u3055\u305b\u305f\u3044\u30c7\u30fc\u30bf\u9805\u76ee\uff08&quot;\u6587\u5b57\u578b&quot; \u3084 &quot;\u6570\u5024&quot; \u306a\u3069\uff09\u306b\u3001button\u30bf\u30b0\u30b3\u30fc\u30c9\u3092\u8a18\u8ff0\u3057\u307e\u3059\u3002\n\/\/\n\/\/ \u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u25bd (1) EDIT HERE \u25bd\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\n\/\/ &quot;StorageKey&quot; will be generated with the same name as &quot;user_arrSelectorIds[i]&quot;.\nconst user_arrSelectorIds = [\n  &quot;user_ReportTitle&quot;,\n  &quot;user_RegionMaster&quot;\n]; \/\/ &quot;user_\u25cfSelectorId\u25cf&quot;,\n\/\/ \u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u25b3 (1) EDIT HERE \u25b3\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\n\/\/\n\/\/ \u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u25bd (2) ADD HTML  \u25bd\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\n\/*\n\/\/ Add this code to every data item you want to display &quot;StorageClip&quot;.\n&lt;button type=&quot;button&quot; class=&quot;user_StorageClip&quot;\n onclick=&quot;user_appendClip(\n            &#39;user_\u25cfSelectorId\u25cf&#39;,\n            qbpms.form.get( &#39;q_\u25c6FieldName\u25c6&#39; )\n          )&quot;&gt;&lt;span class=&quot;material-icons&quot;&gt;add_circle&lt;\/span&gt; Storage Clip&lt;\/button&gt;\n&lt;span id=&quot;user_\u25cfSelectorId\u25cf&quot;&gt;&lt;\/span&gt;\n\n         \/\/ qbpms.form.get( &#39;q_\u25c6Numeric\u25c6&#39; ).toString()\n         \/\/ qbpms.form.get( &#39;q_\u25c6Select\u25c6&#39; )[0].value -- only to paste elsewhere\n         \/\/ qbpms.form.get( &#39;q_\u25c6Date\u25c6&#39; ).toLocaleString(&#39;sv-SE&#39;).slice(0, 10)\n         \/\/ qbpms.form.get( &#39;q_\u25c6Datetime\u25c6&#39; ).toLocaleString(&#39;sv-SE&#39;).slice(0, 16)\n         \/\/ qbpms.form.get( &#39;q_\u25c6Quser\u25c6&#39; ).email\n         \/\/ qbpms.form.get( &#39;q_\u25c6Qorg\u25c6&#39; ).name\n\n\/\/ If you need to delete all clips, add this code.\n&lt;button type=&quot;button&quot;\n onclick=&quot;user_deleteAllClips()&quot;&gt;Clear All Clips&lt;\/button&gt;\n*\/\n\/\/ \u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u25b3 (2) ADD HTML \u25b3\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\u2605\n\/\/\n\/\/ - \u25bc Web Storage API\n\/\/ - https:\/\/developer.mozilla.org\/docs\/Web\/API\/Web_Storage_API\n\/\/     - \u25bc Window.localStorage\n\/\/     - https:\/\/developer.mozilla.org\/docs\/Web\/API\/Window\/localStorage\n\n\n\n\/\/\/\u25bd\u25bd\u25bd\u25bd user_loadAllClips() \u25bd\u25bd\u25bd\u25bd\nqbpms.form.on( &#39;ready&#39;, user_loadAllClips );\nfunction user_loadAllClips() {\n  for( let i = 0; i &lt; user_arrSelectorIds.length; i++ ) { \/\/ Selector: SpanID in which Button Listed\n    let jsonArrClips   = localStorage.getItem( user_arrSelectorIds[i] );\n    if( jsonArrClips === null ){ console.log( &quot; = no data, key: &#39;&quot; + user_arrSelectorIds[i] + &quot;&#39;&quot; ); continue; }\n    user_listClips( user_arrSelectorIds[i], JSON.parse( jsonArrClips ) );\n  }\n}\n\/\/\/\u25bd\u25bd\u25bd\u25bd user_deleteAllClips() \u25bd\u25bd\u25bd\u25bd\nfunction user_deleteAllClips() {\n  if( ! confirm( &quot;Clear All localStorage for Clips?&quot; ) ){ return; }\n  console.log( &quot; &lt;&lt;&lt; Delete All Clips &quot; );\n  for( let i = 0; i &lt; user_arrSelectorIds.length; i++ ) {\n    localStorage.removeItem( user_arrSelectorIds[i] );\n    user_listClips( user_arrSelectorIds[i], [] );\n    console.log( &quot; &lt;&lt;&lt; deleted: &#39;&quot;+ user_arrSelectorIds[i] + &quot;&#39;&quot; );\n  } \/\/ see also &quot;localStorage.clear()&quot;\n}\n\/\/\/\u25bd\u25bd\u25bd\u25bd user_appendClip(str,str) \u25bd\u25bd\u25bd\u25bd\nfunction user_appendClip( selectorId, strClip ){\n  if( strClip      === null ){ return; } \/\/ String ReadOnly source\n  if( strClip      === &quot;&quot;   ){ return; } \/\/ ReadWrite source\n  let jsonArrClips   = localStorage.getItem( selectorId );\n  let arrClips       = [];\n  if( jsonArrClips === null ){\n    console.log( &quot; = no data for the key: &#39;&quot; + selectorId + &quot;&#39;&quot; );\n  }else{\n    arrClips         = JSON.parse( jsonArrClips );\n  }\n  if( arrClips.includes( strClip ) ){\n    console.log( &quot; already exists &quot; );\n    return; \/\/ Duplicate entries are not allowed.\n  }else{\n    arrClips.push( strClip );\n  }\n  user_listClips( selectorId, arrClips );\n  localStorage.setItem( selectorId, JSON.stringify( arrClips ) );\n  \/\/ &quot;StorageKey&quot; is generated with the same name as &quot;selectorId&quot;.\n}\n\n\/\/\/\u25bc\u25bc user_listClips(str,arrStr) \u25bc\u25bc\nfunction user_listClips( selectorId, arrClips ) { \/\/ List all Clips as Buttons in the &quot;selectorId&quot; area.\n  console.log( &quot;   Element &#39;#&quot; + selectorId + &quot;&#39; rewritten&quot; );\n  if( document.querySelector( &quot;#&quot; + selectorId ) === null ){ console.error( &quot;no &#39;#&quot; + selectorId + &quot;&#39;&quot; ); return; }\n  document.querySelector( &quot;#&quot; + selectorId ).textContent = &#39;&#39;; \/\/ remove all children\n  if( arrClips.length === 0 ){ return; }\n  for( let i = 0; i &lt; arrClips.length; i++ ){\n    user_createButton( selectorId, arrClips[i] );\n  }\n}\n\/\/\/\u25bc user_createButton(str,str) \u25bc\nfunction user_createButton( selectorId, strClip ) { \/\/ Generate Button in the &quot;selectorId&quot; area.\n  if( strClip   === &quot;&quot; ){ return; }\n\n  let elButtons          = document.createElement( &quot;span&quot; );\n  elButtons.style.whiteSpace = &quot;nowrap&quot;; \/\/ Prevention of line feed code insertion\n\n  let elButtonCopy       = document.createElement( &quot;button&quot; );\n  elButtonCopy.type      = &quot;button&quot;;\n  elButtonCopy.title     = strClip; \/\/ for previewing as tooltip\n  elButtonCopy.value     = strClip;\n  elButtonCopy.onclick   = user_copyClip;\n  elButtonCopy.innerHTML = &quot;&lt;span class=&#39;material-icons&#39;&gt;content_copy&lt;\/span&gt; &quot; +\n                           user_truncateStr( strClip );\n  elButtonCopy.classList.add( &quot;user_ButtonCopy&quot; );\n\n  let elButtonDel        = document.createElement( &quot;button&quot; );\n  elButtonDel.type       = &quot;button&quot;;\n  elButtonDel.title      = &quot;delete Clip&quot;; \/\/ as tooltip\n  elButtonDel.value      = strClip;\n  elButtonDel.onclick    = user_deleteClip;\n  elButtonDel.innerHTML  = &quot;&lt;span class=&#39;material-icons&#39;&gt;backspace&lt;\/span&gt;&quot;;\n  elButtonDel.classList.add( &quot;user_ButtonDelete&quot; );\n\n  let elButtonShi        = document.createElement( &quot;button&quot; );\n  elButtonShi.type       = &quot;button&quot;;\n  elButtonShi.title      = &quot;move to left&quot;; \/\/ as tooltip\n  elButtonShi.value      = strClip;\n  elButtonShi.onclick    = user_shiftClip;\n  elButtonShi.innerHTML  = &quot;&lt;span class=&#39;material-icons&#39;&gt;switch_left&lt;\/span&gt;&quot;;\n  elButtonShi.classList.add( &quot;user_ButtonShift&quot; );\n\n  elButtons.append( elButtonShi, elButtonCopy, elButtonDel );\n  document.querySelector( &quot;#&quot; + selectorId ).append( &quot; &quot;, elButtons );\n}\n\/\/\/\u25bd user_copyClip() \u25bd\u25bd\u25bd\u25bd\u25bd\nfunction user_copyClip() {\n  let str = this.value;  \/\/ this: &quot;event.currentTarget&quot;\n  if( str !== &quot;&quot; ){\n    navigator.clipboard.writeText( str );\n    \/\/ https:\/\/developer.mozilla.org\/docs\/Web\/API\/Clipboard_API\n    console.log( &quot;&gt;&gt;&gt; copied: &#39;&quot;+ user_truncateStr(str) + &quot;&#39;&quot; );\n  }\n}\n\/\/\/\u25bd user_deleteClip() \u25bd\nfunction user_deleteClip() {\n  let selectorId = this.parentElement.parentElement.id;\n  console.log( &quot;=== Delete button in &quot; + selectorId + &quot; is clicked ===&quot; );\n  let strTarget  = this.value;\n\n  let jsonArrClips = localStorage.getItem( selectorId );\n  let arrClips     = [];\n  if( jsonArrClips === null ){\n    console.error( &quot; = no data for the key: &#39;&quot; + selectorId + &quot;&#39;&quot; );\n  }else{\n    arrClips       = JSON.parse( jsonArrClips );\n  }\n\n  let numIndex = arrClips.indexOf( strTarget );\n  if( numIndex &lt; 0 ){ console.error( &quot; search Value error in DeleteClip &quot; ); return; }\n  console.log( &quot;   [&quot; + numIndex + &quot;]: &quot; + strTarget ); \/\/ no &quot;user_truncateStr()&quot; for operation mistakes\n  arrClips.splice( numIndex, 1 );\n  user_listClips( selectorId, arrClips );\n  localStorage.setItem( selectorId, JSON.stringify( arrClips ) );\n}\n\/\/\/\u25bd user_shiftClip() \u25bd\nfunction user_shiftClip() {\n   \/\/ span-selectorId(==StorageKey) &gt; span-nowrap &gt; button-clip\n  let selectorId = this.parentElement.parentElement.id;\n  console.log( &quot;=== Shift button in &quot; + selectorId + &quot; is clicked ===&quot; );\n  let strTarget  = this.value;\n\n  let jsonArrClips = localStorage.getItem( selectorId );\n  let arrClips     = [];\n  if( jsonArrClips === null ){\n    console.error( &quot; = no data for the key: &#39;&quot; + selectorId + &quot;&#39;&quot; );\n  }else{\n    arrClips       = JSON.parse( jsonArrClips );\n  }\n\n  let numIndex = arrClips.indexOf( strTarget );\n  if( numIndex &lt; 0 ){\n    console.error( &quot; search Value error in ShiftClip &quot; ); return;\n  }else if( numIndex === 0 ){ \/\/ Leftmost\n    console.log( &quot;   [&quot; + numIndex + &quot;] to [&quot; + (arrClips.length-1) + &quot;]: &quot; + user_truncateStr(strTarget) );\n    arrClips.shift();\n    arrClips.push( strTarget );\n  }else if( numIndex &gt; 0 ){\n    console.log( &quot;   [&quot; + numIndex + &quot;] to [&quot; + (numIndex-1) + &quot;]: &quot; + user_truncateStr(strTarget) );\n    arrClips.splice( numIndex, 1 );\n    arrClips.splice( numIndex-1, 0, strTarget );\n  }\n  user_listClips( selectorId, arrClips );\n  localStorage.setItem( selectorId, JSON.stringify( arrClips ) );\n}\n\/\/\/\u25bd user_truncateStr(str) \u25bd\nfunction user_truncateStr( str ) {\n  const numLength = 30; \/\/ \u25c6\u25c6\u25c6EDIT\u25c6\u25c6\u25c6 if you need\n  return str.length &lt;= numLength ?\n          user_escapeHtml( str ) : ( user_escapeHtml( str ).substr(0, numLength) + &quot;\u2026&quot; );\n}\nfunction user_escapeHtml(str) {\n  if( typeof str !== &#39;string&#39; ) { console.error( &quot; non-string escaping &quot; ); return str; }\n  return str.replace(\/&\/g, &#39;&&#39;)  \/\/ \u2190&quot;\uff06amp\uff1b&quot;;\n            .replace(\/&#39;\/g, &#39;&#39;&#39;) \/\/ \u2190&quot;\uff06\uff03x27\uff1b&quot;;\n            .replace(\/`\/g, &#39;`&#39;) \/\/ \u2190&quot;\uff06\uff03x60\uff1b&quot;;\n            .replace(\/&quot;\/g, &#39;&quot;&#39;) \/\/ \u2190&quot;\uff06quot\uff1b&quot;;\n            .replace(\/&lt;\/g, &#39;&lt;&#39;)   \/\/ \u2190&quot;\uff06lt\uff1b&quot;;\n            .replace(\/&gt;\/g, &#39;&gt;&#39;);  \/\/ \u2190&quot;\uff06gt\uff1b&quot;;\n}\n&lt;\/script&gt;\n&lt;style&gt;\nbutton.user_ButtonCopy {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 0 0 0 0;\n  margin        : 2px 0 2px 0;\n}\nbutton.user_ButtonCopy:hover {\n  background    : #00bb00;\n}\nbutton.user_ButtonCopy:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_ButtonDelete {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 0 10px 10px 0;\n  margin        : 2px 3px 2px 1px;\n}\nbutton.user_ButtonDelete:hover {\n  background    : #00bb00;\n}\nbutton.user_ButtonDelete:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_ButtonShift {\n  text-align    : center;\n  font-size     : 1rem;\n  line-height   : 1.2rem;\n  color         : #ffffff;\n\n  background    : #050505;\n  padding       : 2px 7px;\n  border        : 0;\n  border-radius : 10px 0 0 10px;\n  margin        : 2px 1px 2px 3px;\n}\nbutton.user_ButtonShift:hover {\n  background    : #00bb00;\n}\nbutton.user_ButtonShift:active {\n  box-shadow    : inset -2px -2px 3px rgba(255, 255, 255, .6),\n                  inset 2px 2px 3px rgba(0, 0, 0, .6);\n}\nbutton.user_StorageClip {\n  font-size     : 0.9rem;\n  line-height   : 1rem;\n  color         : #ffffff;\n\n  background    : #009900;\n  padding       : 3px 5px;\n  border        : 2px solid #009900;\n  border-radius : 5%;\n  box-shadow    : 2px 2px 3px #666666;\n  margin        : 2px 3px;\n\n  cursor        : pointer;\n  transition    : .3s;\n}\nbutton.user_StorageClip:hover {\n  color         : #009900;\n  background    : #ffffff;\n  box-shadow    : none;\n}\n&lt;\/style&gt;\n\n&lt;button type=&quot;button&quot; class=&quot;user_StorageClip&quot;\n onclick=&quot;user_appendClip(\n            &#39;user_ReportTitle&#39;,\n            qbpms.form.get( &#39;title&#39; )\n          )&quot;&gt;&lt;span class=&quot;material-icons&quot;&gt;add_circle&lt;\/span&gt; Storage Clip&lt;\/button&gt;\n&lt;span id=&quot;user_ReportTitle&quot;&gt;&lt;\/span&gt;\n\n&lt;p style=&quot;text-align:right&quot;&gt;&lt;button type=&quot;button&quot; onclick=&quot;user_deleteAllClips()&quot;&gt;\n &lt;span class=&quot;material-icons&quot;&gt;delete_forever&lt;\/span&gt; Clear All Clips\n&lt;\/button&gt;&lt;\/p&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"Clip-to-Browser-Storage-RegionMaster\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;button type=&quot;button&quot; class=&quot;user_StorageClip&quot;\n onclick=&quot;user_appendClip(\n            &#39;user_RegionMaster&#39;,\n            qbpms.form.get( &#39;q_RegionMaster&#39; )\n          )&quot;&gt;&lt;span class=&quot;material-icons&quot;&gt;add_circle&lt;\/span&gt; Storage Clip&lt;\/button&gt;\n&lt;span id=&quot;user_RegionMaster&quot;&gt;&lt;\/span&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#1565c0\" class=\"has-inline-color\">Switch between Edit and Read-Only<\/mark><\/h3>\n\n\n\n<figure class=\"wp-block-image size-full q-box\"><a href=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Switch-between-Edit-and-Read-Only-20220808.gif?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"400\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/08\/deco-Switch-between-Edit-and-Read-Only-20220808.gif?resize=1280%2C400&#038;ssl=1\" alt=\"Switch between Edit and Read-Only\" class=\"wp-image-126142\"\/><\/a><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Input \/ Output<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 SELECT (SELECT_SINGLE) <code>q_Answer<\/code><\/li>\n\n\n\n<li>\u2192 STRING (STRING_TEXTFIELD) <code>q_FreeText<\/code><\/li>\n<\/ul>\n\n\n<div class=\"su-spoiler su-spoiler-style-modern-light su-spoiler-icon-plus-square-1 su-spoiler-closed\" data-anchor=\"SwitchbetweenEditandRead-Only\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span>HTML\/JavaScript (click to open)<\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;script&gt;\nqbpms.form.on( &#39;ready&#39;,              user_syncWithSelected ); \/\/ for Initial Value\nqbpms.form.on( &#39;change&#39;, &#39;q_Answer&#39;, user_syncWithSelected );\n\nfunction user_syncWithSelected(){\n  let qfieldNameSelect = &quot;q_Answer&quot;;      \/\/\/\/ EDIT\n  let qfieldNameString = &quot;q_FreeText&quot;;    \/\/\/\/ EDIT\n\n  \/\/\/ Format as of v14.1 (Risk of change in the future)\n  let selector    = &quot;div[data-var-name=&#39;&quot; + qfieldNameString + &quot;&#39;]&quot;;\n  let elContainer = document.querySelector( selector );\n  let elTarget    = elContainer.querySelector( &quot;input&quot; );\n\n  let arrOptions = qbpms.form.get( qfieldNameSelect );\n  console.log( &quot;Num of Selected: &quot; + arrOptions.length );\n  if( arrOptions.length ){\n    if( arrOptions[0].value === &#39;other&#39; ){\n      \/\/ https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTML\/Attributes\/readonly\n      \/\/ https:\/\/developer.mozilla.org\/ja\/docs\/Web\/HTML\/Attributes\/readonly\n      elTarget.readOnly = false;\n      elTarget.style.backgroundColor = &quot;#ffffff&quot;;\n      return;\n    }\n  }\n  elTarget.readOnly = true;\n  elTarget.style.backgroundColor = &quot;#f2f2f2&quot;;\n}\n&lt;\/script&gt;<\/code><\/pre><\/div>\n\n\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-ast-global-color-1-color has-alpha-channel-opacity has-ast-global-color-1-background-color has-background is-style-wide\"\/>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"426\" height=\"240\" data-attachment-id=\"119626\" data-permalink=\"https:\/\/support.questetra.com\/ja\/addons\/converter-zengin-to-mizuhocsv-2021\/attachment\/ads1920x1080-nocode-20220302-min\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/03\/ads1920x1080-nocode-20220302-min.gif?fit=426%2C240&amp;ssl=1\" data-orig-size=\"426,240\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"ads1920x1080-nocode-20220302-min\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/03\/ads1920x1080-nocode-20220302-min.gif?fit=426%2C240&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/03\/ads1920x1080-nocode-20220302-min.gif?resize=426%2C240&#038;ssl=1\" alt=\"\" class=\"wp-image-119626 q-box\"><\/figure>\n<\/div>\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>UI\/UX design is extremely important for improving business processes. These are examples of Task Form decorations for workflow app administrators. Please feel free to use these code examples. (Note that you do so at your own risk, low-code programming skills in JavaScript are required.) UI\/UX\u30c7\u30b6\u30a4\u30f3\u306f\u3001\u30d3\u30b8\u30cd\u30b9\u30d7\u30ed\u30bb\u30b9\u6539\u5584\u306b\u304a\u3044\u3066\u6975\u3081\u3066\u91cd\u8981\u3067\u3059\u3002\u4ee5\u4e0b\u306f\u3001\u51e6\u7406\u30d5\u30a9\u30fc\u30e0\u753b\u9762\uff08\u30bf\u30b9\u30af\u30d5\u30a9\u30fc\u30e0\uff09\u306e\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3\u4f8b\u3067\u3059\u3002\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u30a2\u30d7\u30ea\u7ba1\u7406\u8005\u306e\u307f\u306a\u3055\u307e\u306b\u3001\u81ea\u7531\u306b\u3054\u5229\u7528\u3057\u3066\u3044\u305f\u3060\u3051\u307e\u3059\u3002\uff08\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3\u306f\u81ea\u8eab\u306e\u8cac\u4efb\u3067\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002JavaScript \u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0\u77e5\u8b58\u304c\u5fc5\u8981\u3067\u3059\uff09<\/p>\n","protected":false},"author":2,"featured_media":125563,"parent":106397,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"66937","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"footnotes":""},"class_list":["post-125757","page","type-page","status-publish","has-post-thumbnail","hentry"],"uagb_featured_image_src":{"full":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1200%2C675&ssl=1",1200,675,false],"thumbnail":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=440%2C440&ssl=1",440,440,true],"medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=560%2C315&ssl=1",560,315,true],"medium_large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=768%2C432&ssl=1",768,432,true],"large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1024%2C576&ssl=1",1024,576,true],"1536x1536":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1200%2C675&ssl=1",1200,675,true],"2048x2048":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-portrait-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=900%2C675&ssl=1",900,675,true],"newspack-article-block-square-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=1200%2C675&ssl=1",1200,675,true],"newspack-article-block-landscape-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=800%2C600&ssl=1",800,600,true],"newspack-article-block-portrait-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=600%2C675&ssl=1",600,675,true],"newspack-article-block-square-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=800%2C675&ssl=1",800,675,true],"newspack-article-block-landscape-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=600%2C450&ssl=1",600,450,true],"newspack-article-block-portrait-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=450%2C600&ssl=1",450,600,true],"newspack-article-block-square-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=600%2C600&ssl=1",600,600,true],"newspack-article-block-landscape-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=400%2C300&ssl=1",400,300,true],"newspack-article-block-portrait-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=300%2C400&ssl=1",300,400,true],"newspack-article-block-square-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=400%2C400&ssl=1",400,400,true],"newspack-article-block-landscape-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=200%2C150&ssl=1",200,150,true],"newspack-article-block-portrait-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=150%2C200&ssl=1",150,200,true],"newspack-article-block-square-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?resize=200%2C200&ssl=1",200,200,true],"newspack-article-block-uncropped":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1200%2C675&ssl=1",1200,675,true]},"uagb_author_info":{"display_name":"IMAMURA, Genichi","author_link":"https:\/\/support.questetra.com\/ja\/author\/imamuragenichi\/"},"uagb_comment_info":0,"uagb_excerpt":"UI\/UX design is extremely important for improving busin&hellip;","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P9DiIh-wIl","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":106397,"url":"https:\/\/support.questetra.com\/ja\/tips\/","url_meta":{"origin":125757,"position":0},"title":"Developer Tips","author":"IMAMURA, Genichi","date":"2021-05-06","format":false,"excerpt":"\"\u30ef\u30fc\u30af\u30d5\u30ed\u30fc\u57fa\u76e4\" \u3092\u4f7f\u3044\u3053\u306a\u3059\u305f\u3081\u306e\u30d2\u30f3\u30c8\u96c6\u3002","rel":"","context":"\u985e\u4f3c\u6295\u7a3f","block_context":{"text":"\u985e\u4f3c\u6295\u7a3f","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":97486,"url":"https:\/\/support.questetra.com\/tips\/","url_meta":{"origin":125757,"position":1},"title":"Developer Tips","author":"IMAMURA, Genichi","date":"2020-11-05","format":false,"excerpt":"Tips and tricks for using Workflow Platform.","rel":"","context":"\u985e\u4f3c\u6295\u7a3f","block_context":{"text":"\u985e\u4f3c\u6295\u7a3f","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/02\/business-process-developer-tips.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":125547,"url":"https:\/\/support.questetra.com\/tips\/task-form-decoration-202208\/","url_meta":{"origin":125757,"position":2},"title":"Task Form Decoration 202208","author":"IMAMURA, Genichi","date":"2022-07-28","format":false,"excerpt":"UI\/UX design is extremely important for improving \u2026","rel":"","context":"\u985e\u4f3c\u6295\u7a3f","block_context":{"text":"\u985e\u4f3c\u6295\u7a3f","link":""},"img":{"alt_text":"Task Form Decoration","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2022\/07\/task-form-decoration-low-code.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2,"url":"https:\/\/support.questetra.com\/home\/","url_meta":{"origin":125757,"position":3},"title":"How to Master Questetra","author":"Hirotaka NISHI","date":"2017-06-19","format":false,"excerpt":"Support site for Questetra user. Workflow Designer\u2026","rel":"","context":"\u985e\u4f3c\u6295\u7a3f","block_context":{"text":"\u985e\u4f3c\u6295\u7a3f","link":""},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/05\/SupportCover.png?fit=1200%2C630&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/05\/SupportCover.png?fit=1200%2C630&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/05\/SupportCover.png?fit=1200%2C630&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/05\/SupportCover.png?fit=1200%2C630&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2018\/05\/SupportCover.png?fit=1200%2C630&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":98021,"url":"https:\/\/support.questetra.com\/ja\/tips\/form-decoration-examples\/","url_meta":{"origin":125757,"position":4},"title":"Form Decoration Examples","author":"IMAMURA, Genichi","date":"2020-11-20","format":false,"excerpt":"\u30d5\u30a9\u30fc\u30e0\u753b\u9762\u306e \"\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3HTML\" \u306b\u306f JavaScript \u3092\u8a2d\u5b9a\u3067\u304d\u307e\u3059\u3002\u30b9\u30af\u30ea\u30d7\u30c8\u77e5\u2026","rel":"","context":"\u985e\u4f3c\u6295\u7a3f","block_context":{"text":"\u985e\u4f3c\u6295\u7a3f","link":""},"img":{"alt_text":"workflow form decoration","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":115088,"url":"https:\/\/support.questetra.com\/tips\/form-decoration-examples-api20211011\/","url_meta":{"origin":125757,"position":5},"title":"Form Decoration Examples (api20211011)","author":"IMAMURA, Genichi","date":"2021-10-08","format":false,"excerpt":"Accelerate your Workflow!! Since you can set HTML \u2026","rel":"","context":"\u985e\u4f3c\u6295\u7a3f","block_context":{"text":"\u985e\u4f3c\u6295\u7a3f","link":""},"img":{"alt_text":"workflow form decoration","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/11\/qmascot-workflow-form-decoration.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"amp_enabled":false,"_links":{"self":[{"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/pages\/125757","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/comments?post=125757"}],"version-history":[{"count":78,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/pages\/125757\/revisions"}],"predecessor-version":[{"id":170135,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/pages\/125757\/revisions\/170135"}],"up":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/pages\/106397"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/media\/125563"}],"wp:attachment":[{"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/media?parent=125757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}