{
  "uuid": "",
  "components": [
    {
      "type": "content",
      "key": "styleBlock",
      "label": "Custom CSS",
      "input": false,
      "hideLabel": true,
      "tableView": false,
      "persistent": false,
      "refreshOnChange": false,
      "content": ".formio-form { font-family: 'Segoe UI', Meiryo, sans-serif; } .project-header { background: linear-gradient(135deg, #1e88e5 0%, #1565c0 100%); color: white; padding: 20px; border-radius: 8px 8px 0 0; margin-bottom: 20px; } .project-header h2 { margin: 0; font-size: 24px; } .section-title { background: #f5f5f5; padding: 12px 16px; border-left: 4px solid #1e88e5; margin: 20px 0 15px 0; font-weight: bold; color: #333; font-size: 16px; } .period-config { background: #fff3e0; border: 1px solid #ffcc80; border-radius: 8px; padding: 15px; margin-bottom: 20px; } .members-config { background: #e8f5e9; border: 1px solid #a5d6a7; border-radius: 8px; padding: 15px; margin-bottom: 20px; } .btn-primary { background: linear-gradient(135deg, #1e88e5 0%, #1565c0 100%) !important; border: none !important; } .formio-component-editgrid .list-group-item { border: 1px solid #e0e0e0; margin-bottom: 8px; border-radius: 6px; } .editgrid-actions { white-space: nowrap; } .editgrid-actions .btn { margin-right: 4px; } .member-badge { display: inline-block; padding: 4px 12px; background: #4caf50; color: white; border-radius: 20px; margin: 2px; font-size: 12px; } .chart-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 20px; padding: 20px; } .chart-card { background: #fff; border: 1px solid #e0e0e0; border-radius: 8px; padding: 15px; } .chart-card h4 { margin: 0 0 15px 0; font-size: 14px; color: #333; border-bottom: 2px solid #1e88e5; padding-bottom: 8px; } .chart-wrapper { position: relative; height: 250px; } .chart-wrapper-wide { position: relative; height: 180px; }",
      "id": "ensj8lw"
    },
    {
      "type": "htmlelement",
      "tag": "div",
      "className": "project-header",
      "content": "<h2>📊 プロジェクト管理</h2><p style='margin: 10px 0 0 0; opacity: 0.9;'>複数プロジェクトの期間と担当者工数を一括管理できます</p>",
      "key": "header",
      "input": false,
      "placeholder": "",
      "prefix": "",
      "customClass": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "hidden": false,
      "clearOnHide": true,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "HTML",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "hideLabel": false,
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "attrs": [],
      "id": "efzmphj"
    },
    {
      "type": "htmlelement",
      "tag": "div",
      "className": "section-title",
      "content": "👥 担当者マスタ",
      "key": "membersTitle",
      "input": false,
      "placeholder": "",
      "prefix": "",
      "customClass": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "hidden": false,
      "clearOnHide": true,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "HTML",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "hideLabel": false,
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "attrs": [],
      "id": "e5dziz"
    },
    {
      "title": "担当者マスタ",
      "theme": "default",
      "customClass": "members-config",
      "collapsible": true,
      "hidden": false,
      "hideLabel": true,
      "key": "membersPanel",
      "type": "panel",
      "collapsed": true,
      "components": [
        {
          "label": "担当者マスタ編集",
          "hideLabel": true,
          "tableView": false,
          "templates": {
            "header": "",
            "row": "<div style='display:flex;align-items:center;gap:10px;'>{% if (!instance.options.readOnly && !instance.disabled) { %}<i class='fa fa-bars formio-drag-button' style='cursor:move;color:#999;'></i>{% } %}<span class='member-badge'>{{ row.memberName || '(未入力)' }}</span>{% if (!instance.options.readOnly && !instance.disabled) { %}{% if(state !== 'draft'){ %}<button class='btn btn-sm btn-outline-primary editRow' type='button'>✏️</button>{% } %}<button class='btn btn-sm btn-outline-danger removeRow' type='button'>🗑️</button>{% } %}</div>",
            "tableHeader": "\n      <tr>\n        {% util.eachComponent(components, function(component) { %}\n          {% if (!component.hasOwnProperty('tableView') || component.tableView) { %}\n            <td class=\"editgrid-table-column\">{{ component.label }}</td>\n          {% } %}\n        {% }) %}\n        {% if (!instance.options.readOnly && !instance.disabled) { %}\n          <td class=\"editgrid-table-column\">Actions</td>\n        {% } %}\n      </tr>\n    ",
            "tableRow": "\n      {% util.eachComponent(components, function(component) { %}\n          {% if (!component.hasOwnProperty('tableView') || component.tableView) { %}\n            <td class=\"editgrid-table-column\">\n              {{ getView(component, row[component.key]) }}\n            </td>\n          {% } %}\n        {% }) %}\n        {% if (!instance.options.readOnly && !instance.disabled) { %}\n          <td class=\"editgrid-table-column\">\n            <div class=\"btn-group\">\n              <button class=\"btn btn-default btn-light btn-sm editRow\" aria-label=\"{{ t('Edit row') }}\"><i class=\"{{ iconClass('edit') }}\"></i></button>\n              {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}\n              <button class=\"btn btn-danger btn-sm removeRow\" aria-label=\"{{ t('Remove row') }}\"><i class=\"{{ iconClass('trash') }}\"></i></button>\n              {% } %}\n            </div>\n          </td>\n        {% } %}\n    ",
            "footer": ""
          },
          "addAnother": "担当者を追加",
          "saveRow": "✓ 保存",
          "removeRow": "削除",
          "rowDrafts": false,
          "key": "members",
          "type": "editgrid",
          "input": true,
          "reorder": true,
          "defaultValue": [
            {
              "memberName": "山田太郎"
            },
            {
              "memberName": "佐藤花子"
            },
            {
              "memberName": "鈴木一郎"
            },
            {
              "memberName": "高橋美咲"
            },
            {
              "memberName": "田中健太"
            }
          ],
          "components": [
            {
              "type": "textfield",
              "label": "担当者名",
              "key": "memberName",
              "placeholder": "例: 山田太郎",
              "validate": {
                "required": true,
                "custom": "",
                "customPrivate": false,
                "strictDateValidation": false,
                "multiple": false,
                "unique": false,
                "minLength": "",
                "maxLength": "",
                "pattern": ""
              },
              "input": true,
              "prefix": "",
              "customClass": "",
              "suffix": "",
              "multiple": false,
              "defaultValue": null,
              "protected": false,
              "unique": false,
              "persistent": true,
              "hidden": false,
              "clearOnHide": true,
              "refreshOn": "",
              "redrawOn": "",
              "tableView": true,
              "modalEdit": false,
              "dataGridLabel": false,
              "labelPosition": "top",
              "description": "",
              "errorLabel": "",
              "tooltip": "",
              "hideLabel": false,
              "tabindex": "",
              "disabled": false,
              "autofocus": false,
              "dbIndex": false,
              "customDefaultValue": "",
              "calculateValue": "",
              "calculateServer": false,
              "widget": {
                "type": "input"
              },
              "attributes": {},
              "validateOn": "change",
              "conditional": {
                "show": null,
                "when": null,
                "eq": ""
              },
              "overlay": {
                "style": "",
                "left": "",
                "top": "",
                "width": "",
                "height": ""
              },
              "allowCalculateOverride": false,
              "encrypted": false,
              "showCharCount": false,
              "showWordCount": false,
              "properties": {},
              "allowMultipleMasks": false,
              "addons": [],
              "mask": false,
              "inputType": "text",
              "inputFormat": "plain",
              "inputMask": "",
              "displayMask": "",
              "spellcheck": true,
              "truncateMultipleSpaces": false,
              "id": "e36xbtu"
            }
          ],
          "placeholder": "",
          "prefix": "",
          "customClass": "",
          "suffix": "",
          "multiple": false,
          "protected": false,
          "unique": false,
          "persistent": true,
          "hidden": false,
          "clearOnHide": true,
          "refreshOn": "",
          "redrawOn": "",
          "modalEdit": false,
          "dataGridLabel": false,
          "labelPosition": "top",
          "description": "",
          "errorLabel": "",
          "tooltip": "",
          "tabindex": "",
          "disabled": false,
          "autofocus": false,
          "dbIndex": false,
          "customDefaultValue": "",
          "calculateValue": "",
          "calculateServer": false,
          "widget": null,
          "attributes": {},
          "validateOn": "change",
          "validate": {
            "required": false,
            "custom": "",
            "customPrivate": false,
            "strictDateValidation": false,
            "multiple": false,
            "unique": false
          },
          "conditional": {
            "show": null,
            "when": null,
            "eq": ""
          },
          "overlay": {
            "style": "",
            "left": "",
            "top": "",
            "width": "",
            "height": ""
          },
          "allowCalculateOverride": false,
          "encrypted": false,
          "showCharCount": false,
          "showWordCount": false,
          "properties": {},
          "allowMultipleMasks": false,
          "addons": [],
          "tree": true,
          "lazyLoad": false,
          "disableAddingRemovingRows": false,
          "defaultOpen": false,
          "openWhenEmpty": false,
          "modal": false,
          "inlineEdit": false,
          "id": "evaezqq"
        },
        {
          "type": "htmlelement",
          "tag": "div",
          "key": "membersPreview",
          "refreshOnChange": true,
          "content": "{% var members = data.members || []; %}<div style='margin-top:10px;padding:10px;background:#fff;border-radius:6px;'><strong>現在の担当者 ({{ members.length }}名):</strong> {% if(members.length === 0){ %}<span style='color:#999;'>担当者を追加してください</span>{% } else { %}{% for(var i=0; i<members.length; i++){ %}<span style='display:inline-block;padding:2px 8px;background:#e3f2fd;color:#1565c0;border-radius:4px;margin:2px;font-size:12px;'>{{ members[i].memberName }}</span>{% } %}{% } %}</div>",
          "input": false,
          "placeholder": "",
          "prefix": "",
          "customClass": "",
          "suffix": "",
          "multiple": false,
          "defaultValue": null,
          "protected": false,
          "unique": false,
          "persistent": false,
          "hidden": false,
          "clearOnHide": true,
          "refreshOn": "",
          "redrawOn": "",
          "tableView": false,
          "modalEdit": false,
          "label": "HTML",
          "dataGridLabel": false,
          "labelPosition": "top",
          "description": "",
          "errorLabel": "",
          "tooltip": "",
          "hideLabel": false,
          "tabindex": "",
          "disabled": false,
          "autofocus": false,
          "dbIndex": false,
          "customDefaultValue": "",
          "calculateValue": "",
          "calculateServer": false,
          "widget": null,
          "attributes": {},
          "validateOn": "change",
          "validate": {
            "required": false,
            "custom": "",
            "customPrivate": false,
            "strictDateValidation": false,
            "multiple": false,
            "unique": false
          },
          "conditional": {
            "show": null,
            "when": null,
            "eq": ""
          },
          "overlay": {
            "style": "",
            "left": "",
            "top": "",
            "width": "",
            "height": ""
          },
          "allowCalculateOverride": false,
          "encrypted": false,
          "showCharCount": false,
          "showWordCount": false,
          "properties": {},
          "allowMultipleMasks": false,
          "addons": [],
          "attrs": [],
          "id": "eerl32s"
        }
      ],
      "input": false,
      "placeholder": "",
      "prefix": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "clearOnHide": false,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "Panel",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "tree": false,
      "lazyLoad": false,
      "breadcrumb": "default",
      "id": "edj9929"
    },
    {
      "type": "htmlelement",
      "tag": "div",
      "className": "section-title",
      "content": "📅 表示期間設定",
      "key": "periodConfigTitle",
      "input": false,
      "placeholder": "",
      "prefix": "",
      "customClass": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "hidden": false,
      "clearOnHide": true,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "HTML",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "hideLabel": false,
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "attrs": [],
      "id": "e1xoh8j"
    },
    {
      "title": "表示期間設定",
      "theme": "default",
      "customClass": "period-config",
      "collapsible": true,
      "hidden": false,
      "hideLabel": true,
      "key": "periodConfigPanel",
      "type": "panel",
      "collapsed": true,
      "components": [
        {
          "type": "columns",
          "columns": [
            {
              "components": [
                {
                  "type": "number",
                  "label": "表示開始年",
                  "key": "displayStartYear",
                  "defaultValue": 2026,
                  "validate": {
                    "required": true,
                    "min": 2020,
                    "max": 2035,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false,
                    "step": "any",
                    "integer": ""
                  },
                  "input": true,
                  "placeholder": "",
                  "prefix": "",
                  "customClass": "",
                  "suffix": "",
                  "multiple": false,
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": false,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "widget": {
                    "type": "input"
                  },
                  "attributes": {},
                  "validateOn": "change",
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "id": "edckwx"
                }
              ],
              "width": 3,
              "offset": 0,
              "push": 0,
              "pull": 0,
              "size": "md",
              "currentWidth": 3
            },
            {
              "components": [
                {
                  "type": "number",
                  "label": "表示開始月",
                  "key": "displayStartMonthNum",
                  "defaultValue": 1,
                  "validate": {
                    "required": true,
                    "min": 1,
                    "max": 12,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false,
                    "step": "any",
                    "integer": ""
                  },
                  "input": true,
                  "placeholder": "",
                  "prefix": "",
                  "customClass": "",
                  "suffix": "",
                  "multiple": false,
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": false,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "widget": {
                    "type": "input"
                  },
                  "attributes": {},
                  "validateOn": "change",
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "id": "ebiuca6"
                }
              ],
              "width": 3,
              "offset": 0,
              "push": 0,
              "pull": 0,
              "size": "md",
              "currentWidth": 3
            },
            {
              "components": [
                {
                  "type": "number",
                  "label": "表示月数",
                  "key": "displayMonthCount",
                  "defaultValue": 4,
                  "validate": {
                    "required": true,
                    "min": 1,
                    "max": 12,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false,
                    "step": "any",
                    "integer": ""
                  },
                  "input": true,
                  "placeholder": "",
                  "prefix": "",
                  "customClass": "",
                  "suffix": "",
                  "multiple": false,
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": false,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "widget": {
                    "type": "input"
                  },
                  "attributes": {},
                  "validateOn": "change",
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "id": "eeybxrr"
                }
              ],
              "width": 3,
              "size": "md",
              "currentWidth": 3
            },
            {
              "components": [
                {
                  "type": "htmlelement",
                  "tag": "div",
                  "content": "<p style='margin-top:32px;font-size:12px;color:#666;'>※ 設定を変更するとプレビューが更新されます</p>",
                  "key": "periodNote",
                  "input": false,
                  "placeholder": "",
                  "prefix": "",
                  "customClass": "",
                  "suffix": "",
                  "multiple": false,
                  "defaultValue": null,
                  "protected": false,
                  "unique": false,
                  "persistent": false,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": false,
                  "modalEdit": false,
                  "label": "HTML",
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "widget": null,
                  "attributes": {},
                  "validateOn": "change",
                  "validate": {
                    "required": false,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false
                  },
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "attrs": [],
                  "id": "eexvrf"
                }
              ],
              "width": 3,
              "size": "md",
              "currentWidth": 3
            }
          ],
          "key": "periodColumns",
          "input": false,
          "placeholder": "",
          "prefix": "",
          "customClass": "",
          "suffix": "",
          "multiple": false,
          "defaultValue": null,
          "protected": false,
          "unique": false,
          "persistent": false,
          "hidden": false,
          "clearOnHide": false,
          "refreshOn": "",
          "redrawOn": "",
          "tableView": false,
          "modalEdit": false,
          "label": "Columns",
          "dataGridLabel": false,
          "labelPosition": "top",
          "description": "",
          "errorLabel": "",
          "tooltip": "",
          "hideLabel": false,
          "tabindex": "",
          "disabled": false,
          "autofocus": false,
          "dbIndex": false,
          "customDefaultValue": "",
          "calculateValue": "",
          "calculateServer": false,
          "widget": null,
          "attributes": {},
          "validateOn": "change",
          "validate": {
            "required": false,
            "custom": "",
            "customPrivate": false,
            "strictDateValidation": false,
            "multiple": false,
            "unique": false
          },
          "conditional": {
            "show": null,
            "when": null,
            "eq": ""
          },
          "overlay": {
            "style": "",
            "left": "",
            "top": "",
            "width": "",
            "height": ""
          },
          "allowCalculateOverride": false,
          "encrypted": false,
          "showCharCount": false,
          "showWordCount": false,
          "properties": {},
          "allowMultipleMasks": false,
          "addons": [],
          "tree": false,
          "lazyLoad": false,
          "autoAdjust": false,
          "id": "emk05rm"
        }
      ],
      "input": false,
      "placeholder": "",
      "prefix": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "clearOnHide": false,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "Panel",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "tree": false,
      "lazyLoad": false,
      "breadcrumb": "default",
      "id": "e22fr2h"
    },
    {
      "type": "htmlelement",
      "tag": "div",
      "className": "section-title",
      "content": "✏️ プロジェクト登録",
      "key": "editTitle",
      "input": false,
      "placeholder": "",
      "prefix": "",
      "customClass": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "hidden": false,
      "clearOnHide": true,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "HTML",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "hideLabel": false,
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "attrs": [],
      "id": "eg62q8b"
    },
    {
      "type": "editgrid",
      "label": "",
      "key": "projects",
      "addAnother": "＋ 新規プロジェクトを追加",
      "saveRow": "✓ 保存",
      "removeRow": "削除",
      "input": true,
      "rowDrafts": false,
      "modal": false,
      "inlineEdit": false,
      "reorder": true,
      "templates": {
        "header": "<div class='row' style='background:#f8f9fa;padding:10px;border-radius:6px 6px 0 0;font-weight:bold;'><div class='col-sm-1'></div><div class='col-sm-3'>プロジェクト名</div><div class='col-sm-1'>種別</div><div class='col-sm-2'>開始日</div><div class='col-sm-2'>終了日</div><div class='col-sm-1'>アサイン</div><div class='col-sm-2'>操作</div></div>",
        "row": "<div class='row' style='align-items:center;'><div class='col-sm-1'>{% if (!instance.options.readOnly && !instance.disabled) { %}<i class='fa fa-bars formio-drag-button' style='cursor:move;color:#999;'></i>{% } %}</div><div class='col-sm-3' style='overflow:hidden;text-overflow:ellipsis;white-space:nowrap;'>{{ row.projectName || '(未入力)' }}</div><div class='col-sm-1'><span style='padding:2px 6px;border-radius:4px;font-size:10px;color:#fff;background:{% if(row.projectType===\"new\"){%}#1e88e5{% }else if(row.projectType===\"postRelease\"){%}#fb8c00{% }else if(row.projectType===\"itSupport\"){%}#00acc1{% }else if(row.projectType===\"dx\"){%}#7cb342{% }else{%}#78909c{% }%}'>{% if(row.projectType===\"new\"){%}新規{% }else if(row.projectType===\"postRelease\"){%}リリース後{% }else if(row.projectType===\"itSupport\"){%}IT{% }else if(row.projectType===\"dx\"){%}DX{% }else{%}他{% }%}</span></div><div class='col-sm-2'>{% if(row.startDate){%}{{ new Date(row.startDate).toLocaleDateString('ja-JP') }}{% }else{%}-{% }%}</div><div class='col-sm-2'>{% if(row.endDate){%}{{ new Date(row.endDate).toLocaleDateString('ja-JP') }}{% }else{%}-{% }%}</div><div class='col-sm-1'>{% var total = 0; if(row.assignments){ for(var i=0; i<row.assignments.length; i++){ total += (row.assignments[i].manMonth || 0); } } %}<strong>{{ total.toFixed(2) }}</strong></div><div class='col-sm-2'>{% if (!instance.options.readOnly && !instance.disabled) { %}{% if(state !== 'draft'){ %}<button class='btn btn-sm btn-outline-primary editRow' type='button'>✏️</button> {% } %}<button class='btn btn-sm btn-outline-danger removeRow' type='button'>🗑️</button>{% } %}</div></div>",
        "tableHeader": "\n      <tr>\n        {% util.eachComponent(components, function(component) { %}\n          {% if (!component.hasOwnProperty('tableView') || component.tableView) { %}\n            <td class=\"editgrid-table-column\">{{ component.label }}</td>\n          {% } %}\n        {% }) %}\n        {% if (!instance.options.readOnly && !instance.disabled) { %}\n          <td class=\"editgrid-table-column\">Actions</td>\n        {% } %}\n      </tr>\n    ",
        "tableRow": "\n      {% util.eachComponent(components, function(component) { %}\n          {% if (!component.hasOwnProperty('tableView') || component.tableView) { %}\n            <td class=\"editgrid-table-column\">\n              {{ getView(component, row[component.key]) }}\n            </td>\n          {% } %}\n        {% }) %}\n        {% if (!instance.options.readOnly && !instance.disabled) { %}\n          <td class=\"editgrid-table-column\">\n            <div class=\"btn-group\">\n              <button class=\"btn btn-default btn-light btn-sm editRow\" aria-label=\"{{ t('Edit row') }}\"><i class=\"{{ iconClass('edit') }}\"></i></button>\n              {% if (!instance.hasRemoveButtons || instance.hasRemoveButtons()) { %}\n              <button class=\"btn btn-danger btn-sm removeRow\" aria-label=\"{{ t('Remove row') }}\"><i class=\"{{ iconClass('trash') }}\"></i></button>\n              {% } %}\n            </div>\n          </td>\n        {% } %}\n    ",
        "footer": ""
      },
      "components": [
        {
          "type": "columns",
          "columns": [
            {
              "components": [
                {
                  "type": "textfield",
                  "label": "プロジェクト名",
                  "key": "projectName",
                  "placeholder": "例: 基幹システム刷新",
                  "validate": {
                    "required": true,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false,
                    "minLength": "",
                    "maxLength": "",
                    "pattern": ""
                  },
                  "input": true,
                  "prefix": "",
                  "customClass": "",
                  "suffix": "",
                  "multiple": false,
                  "defaultValue": null,
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": true,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "widget": {
                    "type": "input"
                  },
                  "attributes": {},
                  "validateOn": "change",
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "mask": false,
                  "inputType": "text",
                  "inputFormat": "plain",
                  "inputMask": "",
                  "displayMask": "",
                  "spellcheck": true,
                  "truncateMultipleSpaces": false,
                  "id": "e7nb8vc"
                }
              ],
              "width": 6,
              "offset": 0,
              "push": 0,
              "pull": 0,
              "size": "md",
              "currentWidth": 6
            },
            {
              "components": [
                {
                  "type": "select",
                  "label": "プロジェクト種別",
                  "key": "projectType",
                  "data": {
                    "values": [
                      {
                        "label": "🔵 新規開発",
                        "value": "new"
                      },
                      {
                        "label": "🟠 リリース後サポート",
                        "value": "postRelease"
                      },
                      {
                        "label": "🔷 ITサポート",
                        "value": "itSupport"
                      },
                      {
                        "label": "🟢 DX推進",
                        "value": "dx"
                      },
                      {
                        "label": "⚪ その他",
                        "value": "other"
                      }
                    ],
                    "json": "",
                    "url": "",
                    "resource": "",
                    "custom": ""
                  },
                  "defaultValue": "new",
                  "validate": {
                    "required": true,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false,
                    "onlyAvailableItems": false
                  },
                  "input": true,
                  "placeholder": "",
                  "prefix": "",
                  "customClass": "",
                  "suffix": "",
                  "multiple": false,
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": true,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "widget": null,
                  "attributes": {},
                  "validateOn": "change",
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "idPath": "id",
                  "clearOnRefresh": false,
                  "limit": 100,
                  "dataSrc": "values",
                  "valueProperty": "",
                  "lazyLoad": true,
                  "filter": "",
                  "searchEnabled": true,
                  "searchDebounce": 0.3,
                  "searchField": "",
                  "minSearch": 0,
                  "readOnlyValue": false,
                  "authenticate": false,
                  "ignoreCache": false,
                  "template": "<span>{{ item.label }}</span>",
                  "selectFields": "",
                  "selectThreshold": 0.3,
                  "uniqueOptions": false,
                  "fuseOptions": {
                    "include": "score",
                    "threshold": 0.3
                  },
                  "indexeddb": {
                    "filter": {}
                  },
                  "customOptions": {},
                  "useExactSearch": false,
                  "id": "edwno"
                }
              ],
              "width": 6,
              "offset": 0,
              "push": 0,
              "pull": 0,
              "size": "md",
              "currentWidth": 6
            }
          ],
          "key": "row1",
          "input": false,
          "placeholder": "",
          "prefix": "",
          "customClass": "",
          "suffix": "",
          "multiple": false,
          "defaultValue": null,
          "protected": false,
          "unique": false,
          "persistent": false,
          "hidden": false,
          "clearOnHide": false,
          "refreshOn": "",
          "redrawOn": "",
          "tableView": false,
          "modalEdit": false,
          "label": "Columns",
          "dataGridLabel": false,
          "labelPosition": "top",
          "description": "",
          "errorLabel": "",
          "tooltip": "",
          "hideLabel": false,
          "tabindex": "",
          "disabled": false,
          "autofocus": false,
          "dbIndex": false,
          "customDefaultValue": "",
          "calculateValue": "",
          "calculateServer": false,
          "widget": null,
          "attributes": {},
          "validateOn": "change",
          "validate": {
            "required": false,
            "custom": "",
            "customPrivate": false,
            "strictDateValidation": false,
            "multiple": false,
            "unique": false
          },
          "conditional": {
            "show": null,
            "when": null,
            "eq": ""
          },
          "overlay": {
            "style": "",
            "left": "",
            "top": "",
            "width": "",
            "height": ""
          },
          "allowCalculateOverride": false,
          "encrypted": false,
          "showCharCount": false,
          "showWordCount": false,
          "properties": {},
          "allowMultipleMasks": false,
          "addons": [],
          "tree": false,
          "lazyLoad": false,
          "autoAdjust": false,
          "id": "e1vgcfl"
        },
        {
          "type": "columns",
          "columns": [
            {
              "components": [
                {
                  "type": "datetime",
                  "label": "開始日",
                  "key": "startDate",
                  "format": "yyyy-MM-dd",
                  "enableDate": true,
                  "enableTime": false,
                  "validate": {
                    "required": true,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false
                  },
                  "input": true,
                  "widget": {
                    "type": "calendar",
                    "displayInTimezone": "viewer",
                    "locale": "ja",
                    "useLocaleSettings": false,
                    "allowInput": true,
                    "mode": "single",
                    "enableTime": false,
                    "noCalendar": false,
                    "format": "yyyy-MM-dd",
                    "hourIncrement": 1,
                    "minuteIncrement": 1,
                    "time_24hr": false,
                    "minDate": null,
                    "maxDate": null
                  },
                  "placeholder": "",
                  "prefix": "",
                  "customClass": "",
                  "suffix": "",
                  "multiple": false,
                  "defaultValue": "",
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": false,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "attributes": {},
                  "validateOn": "change",
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "useLocaleSettings": false,
                  "allowInput": true,
                  "defaultDate": "",
                  "displayInTimezone": "viewer",
                  "timezone": "",
                  "datepickerMode": "day",
                  "datePicker": {
                    "showWeeks": true,
                    "startingDay": 0,
                    "initDate": "",
                    "minMode": "day",
                    "maxMode": "year",
                    "yearRows": 4,
                    "yearColumns": 5,
                    "minDate": null,
                    "maxDate": null
                  },
                  "timePicker": {
                    "hourStep": 1,
                    "minuteStep": 1,
                    "showMeridian": true,
                    "readonlyInput": false,
                    "mousewheel": true,
                    "arrowkeys": true
                  },
                  "customOptions": {},
                  "id": "esqyqyi"
                }
              ],
              "width": 6,
              "offset": 0,
              "push": 0,
              "pull": 0,
              "size": "md",
              "currentWidth": 6
            },
            {
              "components": [
                {
                  "type": "datetime",
                  "label": "終了日",
                  "key": "endDate",
                  "format": "yyyy-MM-dd",
                  "enableDate": true,
                  "enableTime": false,
                  "validate": {
                    "required": true,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false
                  },
                  "input": true,
                  "widget": {
                    "type": "calendar",
                    "displayInTimezone": "viewer",
                    "locale": "ja",
                    "useLocaleSettings": false,
                    "allowInput": true,
                    "mode": "single",
                    "enableTime": false,
                    "noCalendar": false,
                    "format": "yyyy-MM-dd",
                    "hourIncrement": 1,
                    "minuteIncrement": 1,
                    "time_24hr": false,
                    "minDate": null,
                    "maxDate": null
                  },
                  "placeholder": "",
                  "prefix": "",
                  "customClass": "",
                  "suffix": "",
                  "multiple": false,
                  "defaultValue": "",
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": false,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "attributes": {},
                  "validateOn": "change",
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "useLocaleSettings": false,
                  "allowInput": true,
                  "defaultDate": "",
                  "displayInTimezone": "viewer",
                  "timezone": "",
                  "datepickerMode": "day",
                  "datePicker": {
                    "showWeeks": true,
                    "startingDay": 0,
                    "initDate": "",
                    "minMode": "day",
                    "maxMode": "year",
                    "yearRows": 4,
                    "yearColumns": 5,
                    "minDate": null,
                    "maxDate": null
                  },
                  "timePicker": {
                    "hourStep": 1,
                    "minuteStep": 1,
                    "showMeridian": true,
                    "readonlyInput": false,
                    "mousewheel": true,
                    "arrowkeys": true
                  },
                  "customOptions": {},
                  "id": "ea92ot9"
                }
              ],
              "width": 6,
              "offset": 0,
              "push": 0,
              "pull": 0,
              "size": "md",
              "currentWidth": 6
            }
          ],
          "key": "row2",
          "input": false,
          "placeholder": "",
          "prefix": "",
          "customClass": "",
          "suffix": "",
          "multiple": false,
          "defaultValue": null,
          "protected": false,
          "unique": false,
          "persistent": false,
          "hidden": false,
          "clearOnHide": false,
          "refreshOn": "",
          "redrawOn": "",
          "tableView": false,
          "modalEdit": false,
          "label": "Columns",
          "dataGridLabel": false,
          "labelPosition": "top",
          "description": "",
          "errorLabel": "",
          "tooltip": "",
          "hideLabel": false,
          "tabindex": "",
          "disabled": false,
          "autofocus": false,
          "dbIndex": false,
          "customDefaultValue": "",
          "calculateValue": "",
          "calculateServer": false,
          "widget": null,
          "attributes": {},
          "validateOn": "change",
          "validate": {
            "required": false,
            "custom": "",
            "customPrivate": false,
            "strictDateValidation": false,
            "multiple": false,
            "unique": false
          },
          "conditional": {
            "show": null,
            "when": null,
            "eq": ""
          },
          "overlay": {
            "style": "",
            "left": "",
            "top": "",
            "width": "",
            "height": ""
          },
          "allowCalculateOverride": false,
          "encrypted": false,
          "showCharCount": false,
          "showWordCount": false,
          "properties": {},
          "allowMultipleMasks": false,
          "addons": [],
          "tree": false,
          "lazyLoad": false,
          "autoAdjust": false,
          "id": "erywp8m"
        },
        {
          "type": "columns",
          "columns": [
            {
              "components": [
                {
                  "type": "number",
                  "label": "想定工数",
                  "key": "estimatedHours",
                  "placeholder": "192",
                  "suffix": "時間",
                  "input": true,
                  "prefix": "",
                  "customClass": "",
                  "multiple": false,
                  "defaultValue": null,
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": false,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "widget": {
                    "type": "input"
                  },
                  "attributes": {},
                  "validateOn": "change",
                  "validate": {
                    "required": false,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false,
                    "min": "",
                    "max": "",
                    "step": "any",
                    "integer": ""
                  },
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "id": "ev8wnb"
                }
              ],
              "width": 4,
              "offset": 0,
              "push": 0,
              "pull": 0,
              "size": "md",
              "currentWidth": 4
            },
            {
              "components": [
                {
                  "type": "number",
                  "label": "想定営業日",
                  "key": "estimatedDays",
                  "placeholder": "3",
                  "suffix": "営業日",
                  "input": true,
                  "prefix": "",
                  "customClass": "",
                  "multiple": false,
                  "defaultValue": null,
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": false,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "widget": {
                    "type": "input"
                  },
                  "attributes": {},
                  "validateOn": "change",
                  "validate": {
                    "required": false,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false,
                    "min": "",
                    "max": "",
                    "step": "any",
                    "integer": ""
                  },
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "id": "e7wvfjl"
                }
              ],
              "width": 4,
              "offset": 0,
              "push": 0,
              "pull": 0,
              "size": "md",
              "currentWidth": 4
            },
            {
              "components": [
                {
                  "type": "textfield",
                  "label": "補足",
                  "key": "displayNote",
                  "placeholder": "",
                  "input": true,
                  "prefix": "",
                  "customClass": "",
                  "suffix": "",
                  "multiple": false,
                  "defaultValue": null,
                  "protected": false,
                  "unique": false,
                  "persistent": true,
                  "hidden": false,
                  "clearOnHide": true,
                  "refreshOn": "",
                  "redrawOn": "",
                  "tableView": true,
                  "modalEdit": false,
                  "dataGridLabel": false,
                  "labelPosition": "top",
                  "description": "",
                  "errorLabel": "",
                  "tooltip": "",
                  "hideLabel": false,
                  "tabindex": "",
                  "disabled": false,
                  "autofocus": false,
                  "dbIndex": false,
                  "customDefaultValue": "",
                  "calculateValue": "",
                  "calculateServer": false,
                  "widget": {
                    "type": "input"
                  },
                  "attributes": {},
                  "validateOn": "change",
                  "validate": {
                    "required": false,
                    "custom": "",
                    "customPrivate": false,
                    "strictDateValidation": false,
                    "multiple": false,
                    "unique": false,
                    "minLength": "",
                    "maxLength": "",
                    "pattern": ""
                  },
                  "conditional": {
                    "show": null,
                    "when": null,
                    "eq": ""
                  },
                  "overlay": {
                    "style": "",
                    "left": "",
                    "top": "",
                    "width": "",
                    "height": ""
                  },
                  "allowCalculateOverride": false,
                  "encrypted": false,
                  "showCharCount": false,
                  "showWordCount": false,
                  "properties": {},
                  "allowMultipleMasks": false,
                  "addons": [],
                  "mask": false,
                  "inputType": "text",
                  "inputFormat": "plain",
                  "inputMask": "",
                  "displayMask": "",
                  "spellcheck": true,
                  "truncateMultipleSpaces": false,
                  "id": "eirwrj1"
                }
              ],
              "width": 4,
              "size": "md",
              "currentWidth": 4
            }
          ],
          "key": "row3",
          "input": false,
          "placeholder": "",
          "prefix": "",
          "customClass": "",
          "suffix": "",
          "multiple": false,
          "defaultValue": null,
          "protected": false,
          "unique": false,
          "persistent": false,
          "hidden": false,
          "clearOnHide": false,
          "refreshOn": "",
          "redrawOn": "",
          "tableView": false,
          "modalEdit": false,
          "label": "Columns",
          "dataGridLabel": false,
          "labelPosition": "top",
          "description": "",
          "errorLabel": "",
          "tooltip": "",
          "hideLabel": false,
          "tabindex": "",
          "disabled": false,
          "autofocus": false,
          "dbIndex": false,
          "customDefaultValue": "",
          "calculateValue": "",
          "calculateServer": false,
          "widget": null,
          "attributes": {},
          "validateOn": "change",
          "validate": {
            "required": false,
            "custom": "",
            "customPrivate": false,
            "strictDateValidation": false,
            "multiple": false,
            "unique": false
          },
          "conditional": {
            "show": null,
            "when": null,
            "eq": ""
          },
          "overlay": {
            "style": "",
            "left": "",
            "top": "",
            "width": "",
            "height": ""
          },
          "allowCalculateOverride": false,
          "encrypted": false,
          "showCharCount": false,
          "showWordCount": false,
          "properties": {},
          "allowMultipleMasks": false,
          "addons": [],
          "tree": false,
          "lazyLoad": false,
          "autoAdjust": false,
          "id": "efafual"
        },
        {
          "type": "htmlelement",
          "tag": "div",
          "content": "<div style='background:#e3f2fd;padding:10px 15px;border-radius:6px;margin:10px 0;'><strong style='color:#1565c0;'>👥 担当者アサイン</strong><span style='font-size:12px;color:#666;margin-left:15px;'>0.25=週1日 / 0.5=週2-3日 / 1.0=フルタイム</span></div>",
          "key": "assignLabel",
          "input": false,
          "placeholder": "",
          "prefix": "",
          "customClass": "",
          "suffix": "",
          "multiple": false,
          "defaultValue": null,
          "protected": false,
          "unique": false,
          "persistent": false,
          "hidden": false,
          "clearOnHide": true,
          "refreshOn": "",
          "redrawOn": "",
          "tableView": false,
          "modalEdit": false,
          "label": "HTML",
          "dataGridLabel": false,
          "labelPosition": "top",
          "description": "",
          "errorLabel": "",
          "tooltip": "",
          "hideLabel": false,
          "tabindex": "",
          "disabled": false,
          "autofocus": false,
          "dbIndex": false,
          "customDefaultValue": "",
          "calculateValue": "",
          "calculateServer": false,
          "widget": null,
          "attributes": {},
          "validateOn": "change",
          "validate": {
            "required": false,
            "custom": "",
            "customPrivate": false,
            "strictDateValidation": false,
            "multiple": false,
            "unique": false
          },
          "conditional": {
            "show": null,
            "when": null,
            "eq": ""
          },
          "overlay": {
            "style": "",
            "left": "",
            "top": "",
            "width": "",
            "height": ""
          },
          "allowCalculateOverride": false,
          "encrypted": false,
          "showCharCount": false,
          "showWordCount": false,
          "properties": {},
          "allowMultipleMasks": false,
          "addons": [],
          "attrs": [],
          "id": "ex2h4f"
        },
        {
          "type": "datagrid",
          "label": "",
          "key": "assignments",
          "addAnother": "＋ 担当者を追加",
          "reorder": true,
          "input": true,
          "components": [
            {
              "type": "select",
              "label": "担当者",
              "key": "memberName",
              "dataSrc": "custom",
              "valueProperty": "value",
              "data": {
                "custom": "values = (data.members || []).map(function(m){ return { label: m.memberName, value: m.memberName }; });",
                "values": [
                  {
                    "label": "",
                    "value": ""
                  }
                ],
                "json": "",
                "url": "",
                "resource": ""
              },
              "refreshOn": "members",
              "clearOnRefresh": false,
              "validate": {
                "required": true,
                "custom": "",
                "customPrivate": false,
                "strictDateValidation": false,
                "multiple": false,
                "unique": false,
                "onlyAvailableItems": false
              },
              "input": true,
              "id": "e5q0y800000",
              "placeholder": "",
              "prefix": "",
              "customClass": "",
              "suffix": "",
              "multiple": false,
              "defaultValue": null,
              "protected": false,
              "unique": false,
              "persistent": true,
              "hidden": false,
              "clearOnHide": true,
              "redrawOn": "",
              "tableView": true,
              "modalEdit": false,
              "dataGridLabel": false,
              "labelPosition": "top",
              "description": "",
              "errorLabel": "",
              "tooltip": "",
              "hideLabel": false,
              "tabindex": "",
              "disabled": false,
              "autofocus": false,
              "dbIndex": false,
              "customDefaultValue": "",
              "calculateValue": "",
              "calculateServer": false,
              "widget": null,
              "attributes": {},
              "validateOn": "change",
              "conditional": {
                "show": null,
                "when": null,
                "eq": ""
              },
              "overlay": {
                "style": "",
                "left": "",
                "top": "",
                "width": "",
                "height": ""
              },
              "allowCalculateOverride": false,
              "encrypted": false,
              "showCharCount": false,
              "showWordCount": false,
              "properties": {},
              "allowMultipleMasks": false,
              "addons": [],
              "idPath": "id",
              "limit": 100,
              "lazyLoad": true,
              "filter": "",
              "searchEnabled": true,
              "searchDebounce": 0.3,
              "searchField": "",
              "minSearch": 0,
              "readOnlyValue": false,
              "authenticate": false,
              "ignoreCache": false,
              "template": "<span>{{ item.label }}</span>",
              "selectFields": "",
              "selectThreshold": 0.3,
              "uniqueOptions": false,
              "fuseOptions": {
                "include": "score",
                "threshold": 0.3
              },
              "indexeddb": {
                "filter": {}
              },
              "customOptions": {},
              "useExactSearch": false
            },
            {
              "type": "number",
              "label": "人月",
              "key": "manMonth",
              "placeholder": "0.00",
              "decimalLimit": 2,
              "defaultValue": 0,
              "validate": {
                "required": true,
                "min": 0,
                "max": 1,
                "custom": "",
                "customPrivate": false,
                "strictDateValidation": false,
                "multiple": false,
                "unique": false,
                "step": "any",
                "integer": ""
              },
              "input": true,
              "id": "eaav7eo00000",
              "prefix": "",
              "customClass": "",
              "suffix": "",
              "multiple": false,
              "protected": false,
              "unique": false,
              "persistent": true,
              "hidden": false,
              "clearOnHide": true,
              "refreshOn": "",
              "redrawOn": "",
              "tableView": false,
              "modalEdit": false,
              "dataGridLabel": false,
              "labelPosition": "top",
              "description": "",
              "errorLabel": "",
              "tooltip": "",
              "hideLabel": false,
              "tabindex": "",
              "disabled": false,
              "autofocus": false,
              "dbIndex": false,
              "customDefaultValue": "",
              "calculateValue": "",
              "calculateServer": false,
              "widget": {
                "type": "input"
              },
              "attributes": {},
              "validateOn": "change",
              "conditional": {
                "show": null,
                "when": null,
                "eq": ""
              },
              "overlay": {
                "style": "",
                "left": "",
                "top": "",
                "width": "",
                "height": ""
              },
              "allowCalculateOverride": false,
              "encrypted": false,
              "showCharCount": false,
              "showWordCount": false,
              "properties": {},
              "allowMultipleMasks": false,
              "addons": []
            }
          ],
          "placeholder": "",
          "prefix": "",
          "customClass": "",
          "suffix": "",
          "multiple": false,
          "defaultValue": null,
          "protected": false,
          "unique": false,
          "persistent": true,
          "hidden": false,
          "clearOnHide": true,
          "refreshOn": "",
          "redrawOn": "",
          "tableView": false,
          "modalEdit": false,
          "dataGridLabel": false,
          "labelPosition": "top",
          "description": "",
          "errorLabel": "",
          "tooltip": "",
          "hideLabel": false,
          "tabindex": "",
          "disabled": false,
          "autofocus": false,
          "dbIndex": false,
          "customDefaultValue": "",
          "calculateValue": "",
          "calculateServer": false,
          "widget": null,
          "attributes": {},
          "validateOn": "change",
          "validate": {
            "required": false,
            "custom": "",
            "customPrivate": false,
            "strictDateValidation": false,
            "multiple": false,
            "unique": false
          },
          "conditional": {
            "show": null,
            "when": null,
            "eq": ""
          },
          "overlay": {
            "style": "",
            "left": "",
            "top": "",
            "width": "",
            "height": ""
          },
          "allowCalculateOverride": false,
          "encrypted": false,
          "showCharCount": false,
          "showWordCount": false,
          "properties": {},
          "allowMultipleMasks": false,
          "addons": [],
          "tree": true,
          "lazyLoad": false,
          "disableAddingRemovingRows": false,
          "id": "eykcsxe"
        },
        {
          "type": "textarea",
          "label": "備考",
          "key": "remarks",
          "placeholder": "その他特記事項",
          "rows": 2,
          "input": true,
          "prefix": "",
          "customClass": "",
          "suffix": "",
          "multiple": false,
          "defaultValue": null,
          "protected": false,
          "unique": false,
          "persistent": true,
          "hidden": false,
          "clearOnHide": true,
          "refreshOn": "",
          "redrawOn": "",
          "tableView": true,
          "modalEdit": false,
          "dataGridLabel": false,
          "labelPosition": "top",
          "description": "",
          "errorLabel": "",
          "tooltip": "",
          "hideLabel": false,
          "tabindex": "",
          "disabled": false,
          "autofocus": false,
          "dbIndex": false,
          "customDefaultValue": "",
          "calculateValue": "",
          "calculateServer": false,
          "widget": {
            "type": "input"
          },
          "attributes": {},
          "validateOn": "change",
          "validate": {
            "required": false,
            "custom": "",
            "customPrivate": false,
            "strictDateValidation": false,
            "multiple": false,
            "unique": false,
            "minLength": "",
            "maxLength": "",
            "pattern": "",
            "minWords": "",
            "maxWords": ""
          },
          "conditional": {
            "show": null,
            "when": null,
            "eq": ""
          },
          "overlay": {
            "style": "",
            "left": "",
            "top": "",
            "width": "",
            "height": ""
          },
          "allowCalculateOverride": false,
          "encrypted": false,
          "showCharCount": false,
          "showWordCount": false,
          "properties": {},
          "allowMultipleMasks": false,
          "addons": [],
          "mask": false,
          "inputType": "text",
          "inputFormat": "html",
          "inputMask": "",
          "displayMask": "",
          "spellcheck": true,
          "truncateMultipleSpaces": false,
          "wysiwyg": false,
          "editor": "",
          "fixedSize": true,
          "id": "e7src"
        }
      ],
      "placeholder": "",
      "prefix": "",
      "customClass": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": [
        {
          "projectName": "基幹システム刷新",
          "projectType": "new",
          "startDate": "2026-01-05T00:00:00",
          "endDate": "2026-04-24T00:00:00",
          "estimatedHours": 960,
          "estimatedDays": 80,
          "displayNote": "要件定義〜結合テスト",
          "assignments": [
            {
              "memberName": "山田太郎",
              "manMonth": 0.5
            },
            {
              "memberName": "鈴木一郎",
              "manMonth": 1
            }
          ],
          "remarks": ""
        },
        {
          "projectName": "販売管理システム保守",
          "projectType": "postRelease",
          "startDate": "2026-01-05T00:00:00",
          "endDate": "2026-03-31T00:00:00",
          "estimatedHours": 120,
          "estimatedDays": 15,
          "displayNote": "月次リリース対応",
          "assignments": [
            {
              "memberName": "佐藤花子",
              "manMonth": 0.25
            }
          ],
          "remarks": ""
        },
        {
          "projectName": "社内ヘルプデスク",
          "projectType": "itSupport",
          "startDate": "2026-01-05T00:00:00",
          "endDate": "2026-04-30T00:00:00",
          "estimatedHours": 320,
          "estimatedDays": 40,
          "displayNote": "常設窓口",
          "assignments": [
            {
              "memberName": "高橋美咲",
              "manMonth": 0.5
            },
            {
              "memberName": "田中健太",
              "manMonth": 0.25
            }
          ],
          "remarks": ""
        },
        {
          "projectName": "ペーパーレス化推進",
          "projectType": "dx",
          "startDate": "2026-02-02T00:00:00",
          "endDate": "2026-04-17T00:00:00",
          "estimatedHours": 240,
          "estimatedDays": 30,
          "displayNote": "ワークフロー電子化",
          "assignments": [
            {
              "memberName": "佐藤花子",
              "manMonth": 0.5
            },
            {
              "memberName": "山田太郎",
              "manMonth": 0.25
            }
          ],
          "remarks": ""
        },
        {
          "projectName": "新オフィス移転対応",
          "projectType": "other",
          "startDate": "2026-03-02T00:00:00",
          "endDate": "2026-03-31T00:00:00",
          "estimatedHours": 80,
          "estimatedDays": 10,
          "displayNote": "IT設備移設",
          "assignments": [
            {
              "memberName": "田中健太",
              "manMonth": 0.5
            }
          ],
          "remarks": ""
        }
      ],
      "protected": false,
      "unique": false,
      "persistent": true,
      "hidden": false,
      "clearOnHide": true,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "hideLabel": false,
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "tree": true,
      "lazyLoad": false,
      "disableAddingRemovingRows": false,
      "defaultOpen": false,
      "openWhenEmpty": false,
      "id": "exbdn7"
    },
    {
      "type": "htmlelement",
      "tag": "div",
      "className": "section-title",
      "content": "📊 ガントチャート プレビュー",
      "key": "ganttTitle",
      "input": false,
      "placeholder": "",
      "prefix": "",
      "customClass": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "hidden": false,
      "clearOnHide": true,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "HTML",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "hideLabel": false,
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "attrs": [],
      "id": "euh42sf"
    },
    {
      "type": "htmlelement",
      "tag": "div",
      "key": "ganttPreview",
      "refreshOnChange": true,
      "content": "{% var projects = data.projects || []; var members = data.members || []; var startYear = data.displayStartYear || 2026; var startMonth = data.displayStartMonthNum || 1; var monthCount = data.displayMonthCount || 4; var months = []; for(var i=0; i<monthCount; i++){ var m = startMonth + i; var y = startYear; while(m > 12){ m -= 12; y++; } months.push({year: y, month: m, label: y + '年' + m + '月'}); } var periodStart = new Date(startYear, startMonth - 1, 1); var periodEnd = new Date(startYear, startMonth - 1 + monthCount, 0); var totalDays = Math.floor((periodEnd - periodStart) / (1000*60*60*24)); var memberNames = []; for(var mi=0; mi<members.length; mi++){ memberNames.push(members[mi].memberName); } var totals = {}; for(var mi=0; mi<memberNames.length; mi++){ totals[memberNames[mi]] = 0; } for(var pi=0; pi<projects.length; pi++){ var assigns = projects[pi].assignments || []; for(var ai=0; ai<assigns.length; ai++){ var mName = assigns[ai].memberName; var mMonth = assigns[ai].manMonth || 0; if(mName && typeof totals[mName] !== 'undefined'){ totals[mName] = totals[mName] + mMonth; } } } %}<div style='border:1px solid #ddd;border-radius:8px;overflow:hidden;background:#fff;'>{% if(projects.length === 0){ %}<div style='padding:60px 40px;text-align:center;color:#999;background:#fafafa;'><div style='font-size:48px;margin-bottom:15px;'>📋</div><div>プロジェクトを追加するとガントチャートが表示されます</div></div>{% } else if(members.length === 0){ %}<div style='padding:60px 40px;text-align:center;color:#999;background:#fafafa;'><div style='font-size:48px;margin-bottom:15px;'>👥</div><div>担当者マスタに担当者を追加してください</div></div>{% } else { %}<div style='overflow-x:auto;'><div style='min-width:1000px;'><div style='display:flex;background:linear-gradient(180deg,#f8f9fa,#e9ecef);border-bottom:2px solid #dee2e6;font-weight:bold;font-size:12px;'><div style='width:160px;min-width:160px;padding:10px;border-right:1px solid #dee2e6;'>プロジェクト名</div><div style='flex:1;display:flex;flex-direction:column;'><div style='display:flex;'>{% for(var mi=0; mi<months.length; mi++){ %}<div style='flex:1;text-align:center;padding:6px;border-right:1px solid #ddd;background:#e3f2fd;font-size:11px;'>{{ months[mi].label }}</div>{% } %}</div><div style='display:flex;'>{% for(var mi=0; mi<months.length; mi++){ %}{% for(var w=1; w<=4; w++){ %}<div style='flex:1;text-align:center;padding:3px;border-right:1px solid #eee;font-size:9px;color:#888;{% if(w===1){ %}border-left:2px solid #1e88e5;{% } %}'>{{ w }}W</div>{% } %}{% } %}</div></div><div style='width:{{ memberNames.length * 50 }}px;min-width:{{ memberNames.length * 50 }}px;display:flex;'>{% for(var mi=0; mi<memberNames.length; mi++){ %}<div style='width:50px;text-align:center;padding:8px 2px;border-left:1px solid #dee2e6;font-size:10px;background:#f0f7ff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;' title='{{ memberNames[mi] }}'>{{ memberNames[mi] }}</div>{% } %}</div></div>{% for(var pi=0; pi<projects.length; pi++){ var p = projects[pi]; var pStart = p.startDate ? new Date(p.startDate) : null; var pEnd = p.endDate ? new Date(p.endDate) : null; var leftPct = 0; var widthPct = 0; if(pStart && pEnd && pStart <= periodEnd && pEnd >= periodStart){ var barStart = new Date(Math.max(pStart.getTime(), periodStart.getTime())); var barEnd = new Date(Math.min(pEnd.getTime(), periodEnd.getTime())); leftPct = Math.floor(((barStart - periodStart) / (1000*60*60*24)) / totalDays * 100); widthPct = Math.floor(((barEnd - barStart) / (1000*60*60*24) + 1) / totalDays * 100); if(widthPct < 3) widthPct = 3; } var typeColor = '#78909c'; if(p.projectType === 'new') typeColor = '#1e88e5'; if(p.projectType === 'postRelease') typeColor = '#fb8c00'; if(p.projectType === 'itSupport') typeColor = '#00acc1'; if(p.projectType === 'dx') typeColor = '#7cb342'; var assignMap = {}; var pAssigns = p.assignments || []; for(var ai=0; ai<pAssigns.length; ai++){ var aMemberName = pAssigns[ai].memberName; var aManMonth = pAssigns[ai].manMonth; if(aMemberName){ assignMap[aMemberName] = aManMonth || 0; } } %}<div style='display:flex;align-items:center;border-bottom:1px solid #eee;min-height:40px;{% if(pi % 2 === 0){ %}background:#fafafa;{% } %}'><div style='width:160px;min-width:160px;padding:6px 10px;font-size:12px;font-weight:500;border-right:1px solid #eee;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;'>{{ p.projectName || '(未入力)' }}</div><div style='flex:1;position:relative;height:32px;'>{% if(widthPct > 0){ %}<div style='position:absolute;top:50%;transform:translateY(-50%);left:{{ leftPct }}%;width:calc({{ widthPct }}% - 12px);height:24px;background:linear-gradient(90deg,{{ typeColor }},{{ typeColor }}dd);border-radius:3px;display:flex;align-items:center;padding-left:8px;color:#fff;font-size:10px;font-weight:500;text-shadow:0 1px 1px rgba(0,0,0,0.3);white-space:nowrap;overflow:hidden;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 50%,calc(100% - 12px) 100%,0 100%);'>{% if(widthPct > 12){ %}{{ p.projectName || '' }}{% } %}</div>{% } %}</div><div style='width:{{ memberNames.length * 50 }}px;min-width:{{ memberNames.length * 50 }}px;display:flex;'>{% for(var mi=0; mi<memberNames.length; mi++){ var cellMemberName = memberNames[mi]; var cellVal = assignMap[cellMemberName] || 0; %}<div style='width:50px;text-align:center;padding:6px 2px;border-left:1px solid #eee;font-size:11px;{% if(cellVal > 0){ %}background:#e3f2fd;color:#1565c0;font-weight:600;{% }else{ %}color:#999;{% } %}'>{% if(cellVal > 0){ %}{{ cellVal.toFixed(2) }}{% }else{ %}-{% } %}</div>{% } %}</div></div>{% } %}</div></div><div style='display:flex;gap:15px;padding:12px 15px;background:#f8f9fa;border-top:1px solid #dee2e6;flex-wrap:wrap;justify-content:center;font-size:12px;'><div style='display:flex;align-items:center;gap:6px;'><div style='width:30px;height:14px;border-radius:2px;background:#1e88e5;'></div>新規開発</div><div style='display:flex;align-items:center;gap:6px;'><div style='width:30px;height:14px;border-radius:2px;background:#fb8c00;'></div>リリース後</div><div style='display:flex;align-items:center;gap:6px;'><div style='width:30px;height:14px;border-radius:2px;background:#00acc1;'></div>ITサポート</div><div style='display:flex;align-items:center;gap:6px;'><div style='width:30px;height:14px;border-radius:2px;background:#7cb342;'></div>DX推進</div><div style='display:flex;align-items:center;gap:6px;'><div style='width:30px;height:14px;border-radius:2px;background:#78909c;'></div>その他</div></div><div style='display:flex;flex-wrap:wrap;gap:10px;padding:15px;background:#fff;border-top:1px solid #dee2e6;'><div style='background:#f5f5f5;padding:10px 15px;border-radius:6px;text-align:center;min-width:100px;'><div style='font-size:11px;color:#666;'>プロジェクト数</div><div style='font-size:18px;font-weight:bold;color:#1565c0;'>{{ projects.length }}</div></div>{% for(var mi=0; mi<memberNames.length; mi++){ var sumMemberName = memberNames[mi]; var sumVal = totals[sumMemberName] || 0; %}<div style='background:#f5f5f5;padding:10px 15px;border-radius:6px;text-align:center;min-width:80px;'><div style='font-size:11px;color:#666;'>{{ sumMemberName }}</div><div style='font-size:18px;font-weight:bold;color:#1565c0;'>{{ sumVal.toFixed(2) }}</div></div>{% } %}</div>{% } %}</div>",
      "input": false,
      "placeholder": "",
      "prefix": "",
      "customClass": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "hidden": false,
      "clearOnHide": true,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "HTML",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "hideLabel": false,
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "attrs": [],
      "id": "ejyln8"
    },
    {
      "type": "htmlelement",
      "tag": "div",
      "className": "section-title",
      "content": "📈 分析チャート",
      "key": "chartTitle",
      "input": false,
      "placeholder": "",
      "prefix": "",
      "customClass": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "hidden": false,
      "clearOnHide": true,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "HTML",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "hideLabel": false,
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "attrs": [],
      "id": "ebs2kk"
    },
    {
      "type": "htmlelement",
      "tag": "div",
      "key": "chartContainer",
      "content": "<div style='border:1px solid #ddd;border-radius:8px;overflow:hidden;background:#fff;'><div class='chart-grid'><div class='chart-card'><h4>👥 担当者別工数（人月）</h4><div class='chart-wrapper'><canvas id='chartMember'></canvas></div></div><div class='chart-card'><h4>📂 プロジェクト種別分布</h4><div class='chart-wrapper'><canvas id='chartType'></canvas></div></div><div class='chart-card' style='grid-column: 1 / -1;'><h4>📊 プロジェクト別工数（人月）</h4><div class='chart-wrapper-wide'><canvas id='chartProject'></canvas></div></div></div></div>",
      "input": false,
      "logic": [
        {
          "name": "initCharts",
          "trigger": {
            "type": "event",
            "event": "change"
          },
          "actions": [
            {
              "name": "renderCharts",
              "type": "customAction",
              "customAction": "if (window._chartUpdatePending) { return; } window._chartUpdatePending = true; if (window._chartUpdateTimer) { clearTimeout(window._chartUpdateTimer); } window._chartUpdateTimer = setTimeout(function() { window._chartUpdatePending = false; try { if (typeof Chart === 'undefined') { return; } var formData = data || {}; var projects = formData.projects || []; var members = formData.members || []; var memberNames = []; var memberTotals = []; var memberColors = ['#1e88e5','#fb8c00','#00acc1','#7cb342','#9c27b0','#f44336','#795548','#607d8b','#e91e63','#3f51b5']; for (var i = 0; i < members.length; i++) { memberNames.push(members[i].memberName); memberTotals.push(0); } var typeCount = {new: 0, postRelease: 0, itSupport: 0, dx: 0, other: 0}; var projectNames = []; var projectTotals = []; var projectColors = []; for (var pi = 0; pi < projects.length; pi++) { var p = projects[pi]; var pType = p.projectType || 'other'; if (typeCount[pType] !== undefined) { typeCount[pType]++; } else { typeCount.other++; } var pTotal = 0; var assigns = p.assignments || []; for (var ai = 0; ai < assigns.length; ai++) { var a = assigns[ai]; var mm = a.manMonth || 0; pTotal += mm; for (var mi = 0; mi < memberNames.length; mi++) { if (memberNames[mi] === a.memberName) { memberTotals[mi] += mm; break; } } } projectNames.push(p.projectName || '(未入力)'); projectTotals.push(pTotal); var color = '#78909c'; if (pType === 'new') color = '#1e88e5'; else if (pType === 'postRelease') color = '#fb8c00'; else if (pType === 'itSupport') color = '#00acc1'; else if (pType === 'dx') color = '#7cb342'; projectColors.push(color); } var labelsConfig = { render: function(args) { if (args.value > 0) { return args.value.toFixed(2); } return ''; }, fontColor: '#333', fontStyle: 'bold', fontSize: 11, position: 'outside' }; var labelsConfigPct = { render: 'percentage', fontColor: '#fff', fontStyle: 'bold', fontSize: 12, position: 'default', overlap: false, showZero: false }; var memberCanvas = document.getElementById('chartMember'); if (memberCanvas) { var mColors = []; for (var c = 0; c < memberNames.length; c++) { mColors.push(memberColors[c % memberColors.length]); } if (window._chartMember) { window._chartMember.destroy(); window._chartMember = null; } window._chartMember = new Chart(memberCanvas, { type: 'horizontalBar', data: { labels: memberNames, datasets: [{ label: '工数', data: memberTotals, backgroundColor: mColors }] }, options: { responsive: true, maintainAspectRatio: false, animation: false, legend: { display: false }, plugins: { labels: labelsConfig }, scales: { xAxes: [{ ticks: { beginAtZero: true }, gridLines: { color: '#eee' } }], yAxes: [{ gridLines: { display: false }, barPercentage: 0.7 }] } } }); } var typeCanvas = document.getElementById('chartType'); if (typeCanvas) { var typeData = [typeCount.new, typeCount.postRelease, typeCount.itSupport, typeCount.dx, typeCount.other]; if (window._chartType) { window._chartType.destroy(); window._chartType = null; } window._chartType = new Chart(typeCanvas, { type: 'doughnut', data: { labels: ['新規開発','リリース後','ITサポート','DX推進','その他'], datasets: [{ data: typeData, backgroundColor: ['#1e88e5','#fb8c00','#00acc1','#7cb342','#78909c'], borderWidth: 2, borderColor: '#fff' }] }, options: { responsive: true, maintainAspectRatio: false, animation: false, legend: { position: 'right', labels: { padding: 15, usePointStyle: true } }, plugins: { labels: labelsConfigPct } } }); } var projectCanvas = document.getElementById('chartProject'); if (projectCanvas) { if (window._chartProject) { window._chartProject.destroy(); window._chartProject = null; } window._chartProject = new Chart(projectCanvas, { type: 'bar', data: { labels: projectNames, datasets: [{ label: '工数', data: projectTotals, backgroundColor: projectColors }] }, options: { responsive: true, maintainAspectRatio: false, animation: false, legend: { display: false }, plugins: { labels: labelsConfig }, scales: { xAxes: [{ gridLines: { display: false }, ticks: { maxRotation: 45, minRotation: 45 } }], yAxes: [{ ticks: { beginAtZero: true }, gridLines: { color: '#eee' } }] } } }); } } catch(e) { console.error('Chart error:', e); } }, 300);"
            }
          ]
        }
      ],
      "placeholder": "",
      "prefix": "",
      "customClass": "",
      "suffix": "",
      "multiple": false,
      "defaultValue": null,
      "protected": false,
      "unique": false,
      "persistent": false,
      "hidden": false,
      "clearOnHide": true,
      "refreshOn": "",
      "redrawOn": "",
      "tableView": false,
      "modalEdit": false,
      "label": "HTML",
      "dataGridLabel": false,
      "labelPosition": "top",
      "description": "",
      "errorLabel": "",
      "tooltip": "",
      "hideLabel": false,
      "tabindex": "",
      "disabled": false,
      "autofocus": false,
      "dbIndex": false,
      "customDefaultValue": "",
      "calculateValue": "",
      "calculateServer": false,
      "widget": null,
      "attributes": {},
      "validateOn": "change",
      "validate": {
        "required": false,
        "custom": "",
        "customPrivate": false,
        "strictDateValidation": false,
        "multiple": false,
        "unique": false
      },
      "conditional": {
        "show": null,
        "when": null,
        "eq": ""
      },
      "overlay": {
        "style": "",
        "left": "",
        "top": "",
        "width": "",
        "height": ""
      },
      "allowCalculateOverride": false,
      "encrypted": false,
      "showCharCount": false,
      "showWordCount": false,
      "properties": {},
      "allowMultipleMasks": false,
      "addons": [],
      "attrs": [],
      "id": "enae6x"
    }
  ]
}
