[{"id":"7720ca38-fc98-4fd8-a3a5-3c0e730c3c72","tags":[{"product":null,"links":null,"id":"2f522515-8c88-4017-855d-905bc4b0ea3c","name":"Upd","color":"Blue","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"247ded67-b050-4436-be40-fe7b0eeabef7","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"9a8c377f-1f1e-476e-b487-c2339da9bed3","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"5e8e6db2-89b9-4184-bbdc-301ee676869e","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"e04b598e-b0d8-4054-bdac-5143d90b3d51","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"edb028d0-a8cc-42b2-acda-42a5515729f0","tags":[{"product":null,"links":null,"id":"2f522515-8c88-4017-855d-905bc4b0ea3c","name":"Upd","color":"Blue","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"2adde444-20a6-43d7-8896-2b445877327a","tags":[{"product":null,"links":null,"id":"2f522515-8c88-4017-855d-905bc4b0ea3c","name":"Upd","color":"Blue","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"6ab8ced2-6c7a-41b6-b861-ba066bd40f40","tags":[{"product":null,"links":null,"id":"2f522515-8c88-4017-855d-905bc4b0ea3c","name":"Upd","color":"Blue","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"0c34aedd-80a3-470b-a0f6-c327a4346be7","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"717a5892-fa23-499b-a61d-cff228943aaf","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"bd9be971-69fc-4793-ad6d-234be7a93048","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"a1e8d38f-43d8-4b3e-b747-3fbf7656fcd9","tags":[{"product":null,"links":null,"id":"2f522515-8c88-4017-855d-905bc4b0ea3c","name":"Upd","color":"Blue","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"d6995fdf-76ee-421f-9e7a-3fb324d14bbb","tags":[{"product":null,"links":null,"id":"2f522515-8c88-4017-855d-905bc4b0ea3c","name":"Upd","color":"Blue","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"64fa3155-4543-4acd-83b7-f9860fd46673","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"698413bd-0b16-4287-baec-644d98a411d1","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]},{"id":"7e4393a0-21ef-438b-981b-325b64db5baa","tags":[{"product":null,"links":null,"id":"6c1a6899-1b88-404c-9a73-4a0c6c9090a3","name":"New","color":"Red","productId":"66a69675-7df9-45b2-867a-4ab2613535fa"}]}]
        
(Showing Draft Content)

カスタムコンポーネントの追加

リボンコンテナにカスタムのコンポーネントを追加することができます。リボンコンテナに jQuery UIの「DatePicker」コンポーネントを追加するには、次の手順を実行します。

  1. HTMLの<head>タグにjQuery UIのライブラリの参照を追加します。

    <link rel="stylesheet" href="http://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1/i18n/jquery.ui.datepicker-ja.min.js"></script>


2. プロジェクトでカスタムコンポーネントのクラスを定義します。

```Javascript
// カスタムコンポーネントを追加します。
var DatePicker = defineCustomComponent();
//コンポーネントのクラス構造を定義します。
function defineCustomComponent() {
    function DatePicker() {
        GC.Spread.Sheets.Designer.AtomicComponentBase.call(this, ...arguments)
    };
    DatePicker.prototype = new GC.Spread.Sheets.Designer.AtomicComponentBase();
    // この関数は、コンポーネントのinnerHTMLを定義するために使用されます。
    DatePicker.prototype.getTemplate = function () {
        return `
            <div class="input-append date" style="margin-top: 35px;">
              <input size="20" class ='form_date' type="text">
            </div>
            `;
    }
    // ホスト要素がDOMに追加されたため、イベントリスナーを追加できます。
    DatePicker.prototype.onMounted = function (host) {
        $(".form_date", host).datepicker();
        // 日付ピッカーが変更された場合、valuechangedイベントを発生させます。
        $(".form_date", host).change((e) => {
            this.raiseValueChanged()
        })
    }
    DatePicker.prototype.onValueChanged = function (prevValue, nextValue, host) {
        $(".form_date", host).datepicker('setDate', (nextValue && nextValue.toLocaleString) ? nextValue.toLocaleString('ja-jp', { year: 'numeric', month: 'numeric', day: 'numeric' }) : "");
    }
    // この関数は、raiseValueChangedの後に呼び出されます。
    DatePicker.prototype.updateValue = function (host) {
        var value = $(".form_date", host).datepicker('getDate')
        if (value) {
            return new Date(value);
        }
        return null;
    }
    // 日付ピッカーを削除し、changeイベントを連結解除します。
    DatePicker.prototype.onDestroy = function (host) {
        $(".form_date", host).datepicker("destroy");
        $(".form_date", host).unbind("change");
    }
    return DatePicker;
}
```


3. DesignerクラスのRegisterComponentメソッドを使用して、デザイナにカスタムコンポーネントを登録します。

```JavaScript
// カスタムコンポーネントをデザイナに登録します。
GC.Spread.Sheets.Designer.Designer.RegisterComponent("DatePicker", DatePicker);
```


4. プロジェクトでカスタムコンポーネントのコマンドを定義します。

```JavaScript
//カスタムコンポーネントコマンドの使用法-コマンドを実装します。
var date = initCommand();
            
//コマンドを実装します。
function initCommand() {
    return {
        title: "日付を設定する",
        text: "日付を設定する",
        commandName: "date",
        type: 'DatePicker',
        execute: (designer, propertyName, value) => {
            let sheet = designer.getWorkbook().getActiveSheet();
            if (sheet) {
                var row = sheet.getActiveRowIndex();
                var col = sheet.getActiveColumnIndex();
                sheet.setValue(row, col, value);
            }
        },
        getState: (designer) => {
            var spread = designer.getWorkbook();
            var sheet = spread.getActiveSheet();
            var row = sheet.getActiveRowIndex();
            var col = sheet.getActiveColumnIndex();
            var value = sheet.getValue(row, col);
            return value;
        }
    };
}
```


5. 上記のコマンドをcommandMapに設定し、デザイナ構成にカスタムコンポーネントを追加します。

```JavaScript
// デザイナのConfigをカスタマイズします。
var config = initConfig(date);

//デザイナのConfigをカスタマイズします。
function initConfig(date) {
    var config = GC.Spread.Sheets.Designer.DefaultConfig;
    // commandMapでコマンドを設定します。
    config.commandMap = {
        cmdDatePicker: date
    }
    // configにカスタムコンポーネントボタンを追加します。
    var command = {
        text: "DATE",
        id: "date",
        buttonGroups: [
            {
                label: "DATE",
                commandGroup: {
                    direction: "horizontal",
                    commands: ["cmdDatePicker"]
                }
            }
        ]
    };
    config.ribbon.unshift(command);
    return config;
}
```


6. カスタマイズした構成を使用してデザイナのインスタンスを初期化します。

```JavaScript
// Configを使用してデザイナを作成します。
designer = new GC.Spread.Sheets.Designer.Designer(designer_host, config);
```



上記の手順に従うと、以下の出力が生成されます。