diff --git a/src/園児別出欠簿入力/BatchCreateHandler.js b/src/園児別出欠簿入力/BatchCreateHandler.js new file mode 100644 index 0000000..bd5e6d4 --- /dev/null +++ b/src/園児別出欠簿入力/BatchCreateHandler.js @@ -0,0 +1,24 @@ +class BatchCreateHandler { + + constructor(env, headerSpace) { + BatchCreateHandler.APP_ENV = env; + + const elements = createBtnGroupArea('batch-action-area', '出欠簿一括作成', this.handleCreateDate, { + btnElId: 'batch-btn', + }) + if (!elements) { + return; + } + headerSpace.appendChild(elements['batch-action-area']); + } + + handleCreateDate(e) { + } + + static getInstance(env, headerSpace) { + if (!BatchCreateHandler.instance) { + BatchCreateHandler.instance = new BatchCreateHandler(env, headerSpace); + } + return BatchCreateHandler.instance; + } +} diff --git a/src/園児別出欠簿入力/ExtractHandler.js b/src/園児別出欠簿入力/ExtractHandler.js new file mode 100644 index 0000000..91a255b --- /dev/null +++ b/src/園児別出欠簿入力/ExtractHandler.js @@ -0,0 +1,28 @@ +class ExtractHandler { + constructor(env, headerSpace) { + ExtractHandler.APP_ENV = env; + + const elements = createBtnGroupArea('extract-action-area', '出欠集計表出力', this.handleExtractData, { + btnElId: 'extract-btn', + yearElId: 'extract-year', + monthElId: 'extract-month', + classElId: 'extract-classroom' + }) + if (!elements) { + return; + } + headerSpace.appendChild(elements['extract-action-area']); + } + + handleExtractData(e, { year, month, className }) { + const fileName = getExcelName(ExtractHandler.APP_ENV, year + month + '_' + className + '組'); + console.log(fileName); + } + + static getInstance(env, headerSpace) { + if (!ExtractHandler.instance) { + ExtractHandler.instance = new ExtractHandler(env, headerSpace); + } + return ExtractHandler.instance; + } +} diff --git a/src/園児別出欠簿入力/Link1Handler.js b/src/園児別出欠簿入力/Link1Handler.js new file mode 100644 index 0000000..c6e0afe --- /dev/null +++ b/src/園児別出欠簿入力/Link1Handler.js @@ -0,0 +1,26 @@ +class Link1Handler { + + constructor(env, headerSpace) { + Link1Handler.APP_ENV = env; + + const elements = createBtnGroupArea('link-1-action-area', '0,1歳日誌データ連携', this.handleLink, { + btnElId: 'link-1-btn', + yearElId: 'link-1-year', + monthElId: 'link-1-month', + }) + if (!elements) { + return; + } + headerSpace.appendChild(elements['link-1-action-area']); + } + + handleLink(e, { year, month }) { + } + + static getInstance(env, headerSpace) { + if (!Link1Handler.instance) { + Link1Handler.instance = new Link1Handler(env, headerSpace); + } + return Link1Handler.instance; + } +} diff --git a/src/園児別出欠簿入力/Link2Handler.js b/src/園児別出欠簿入力/Link2Handler.js new file mode 100644 index 0000000..7d8d209 --- /dev/null +++ b/src/園児別出欠簿入力/Link2Handler.js @@ -0,0 +1,29 @@ +class Link2Handler { + + constructor(env, headerSpace) { + Link2Handler.APP_ENV = env; + + const elements = createBtnGroupArea('link-2-action-area', '2歳以上日誌データ連携', this.handleLink, { + btnElId: 'link-2-btn', + yearElId: 'link-2-year', + monthElId: 'link-2-month', + dateElId: 'link-2-date', + defaultThisMonth: true, + }) + if (!elements) { + return; + } + headerSpace.appendChild(elements['link-2-action-area']); + } + + + handleLink(e, { year, month, date }) { + } + + static getInstance(env, headerSpace) { + if (!Link2Handler.instance) { + Link2Handler.instance = new Link2Handler(env, headerSpace); + } + return Link2Handler.instance; + } +} diff --git a/src/園児別出欠簿入力/clock-btn-desktop.js b/src/園児別出欠簿入力/clock-btn-desktop.js new file mode 100644 index 0000000..7a28644 --- /dev/null +++ b/src/園児別出欠簿入力/clock-btn-desktop.js @@ -0,0 +1,58 @@ + +(function () { + "use strict"; + + // ------------------- 詳細画面表示時の処理 ------------------- + kintone.events.on('app.record.detail.show', function (event) { + const area = kintone.app.record.getSpaceElement('header-clocking-btn-area'); + + const clockIn = createBtn('clock-in', '登園', dateToFieldInDetail('登園時刻')); + const clockOut = createBtn('clock-out', '帰園', dateToFieldInDetail('帰園時刻')); + area.appendChild(clockIn); + area.appendChild(clockOut); + + hideSpaceField(['clock-in-btn-area', 'clock-out-btn-area']); + }); + + kintone.events.on('app.record.print.show', (event) => { + hideSpaceField(['clock-in-btn-area', 'clock-out-btn-area']); + }); + + function dateToFieldInDetail(fieldCode) { + return async function (e) { + await new KintoneRestAPIClient().record.updateRecord({ + app: kintone.app.getId(), + id: kintone.app.record.getId(), + record: { + [fieldCode]: { + value: getCurrentTime() + } + } + }); + location.reload(); + } + } + + // ------------------- 編集画面表示時の処理 ------------------- + kintone.events.on(['app.record.create.show', 'app.record.edit.show'], function (event) { + const clockIn = createBtn('clock-in', '登園', dateToFieldInEdit('登園時刻')); + kintone.app.record.getSpaceElement('clock-in-btn-area').appendChild(clockIn); + const clockOut = createBtn('clock-out', '帰園', dateToFieldInEdit('帰園時刻')); + kintone.app.record.getSpaceElement('clock-out-btn-area').appendChild(clockOut); + }); + + function dateToFieldInEdit(fieldCode) { + return function (e) { + var record = kintone.app.record.get(); + record['record'][fieldCode]['value'] = getCurrentTime(); + kintone.app.record.set(record); + } + } + + function getCurrentTime() { + const now = new Date(); + const hours = String(now.getHours()).padStart(2, '0'); + const minutes = String(now.getMinutes()).padStart(2, '0'); + return `${hours}:${minutes}`; + } +})(); \ No newline at end of file diff --git a/src/園児別出欠簿入力/main.js b/src/園児別出欠簿入力/main.js index 173bb88..40f2213 100644 --- a/src/園児別出欠簿入力/main.js +++ b/src/園児別出欠簿入力/main.js @@ -6,113 +6,17 @@ const headerSpace = getHeaderSpace('single-label-line'); if (event.viewId === APP_ENV.view["0,1歳日誌データ連携用途"]) { - const elements = createBtnGroupArea('link-1-action-area', '0,1歳日誌データ連携', handleLink1, { - btnElId: 'link-1-btn', - yearElId: 'link-1-year', - monthElId: 'link-1-month', - }) - if (!elements) { - return; - } - headerSpace.appendChild(elements['link-1-action-area']); + Link1Handler.getInstance(APP_ENV, headerSpace); return event; } if (event.viewId === APP_ENV.view["2歳以上日誌データ連携用途"]) { - const elements = createBtnGroupArea('link-2-action-area', '2歳以上日誌データ連携', handleLink2, { - btnElId: 'link-2-btn', - yearElId: 'link-2-year', - monthElId: 'link-2-month', - dateElId: 'link-2-date', - defaultThisMonth: true, - }) - if (!elements) { - return; - } - headerSpace.appendChild(elements['link-2-action-area']); + Link2Handler.getInstance(APP_ENV, headerSpace); return event; } - const elements1 = createBtnGroupArea('batch-action-area', '出欠簿一括作成', handleCreateDate, { - btnElId: 'batch-btn', - }) - const elements2 = createBtnGroupArea('extract-action-area', '出欠集計表出力', handleExtractData, { - btnElId: 'extract-btn', - yearElId: 'extract-year', - monthElId: 'extract-month', - classElId: 'extract-classroom' - }) - - if (!elements1 || !elements2) { - return; - } - headerSpace.appendChild(elements1['batch-action-area']); - headerSpace.appendChild(elements2['extract-action-area']); + BatchCreateHandler.getInstance(APP_ENV, headerSpace); + ExtractHandler.getInstance(APP_ENV, headerSpace); }); - function handleCreateDate(e) { - } - function handleExtractData(e, { year, month, className }) { - const fileName = getExcelName(APP_ENV, year + month + '_' + className + '組'); - console.log(fileName); - } - function handleLink1(e, { year, month }) { - } - function handleLink2(e, { year, month, date }) { - } - - // ------------------- 詳細画面表示時の処理 ------------------- - - kintone.events.on('app.record.detail.show', function (event) { - const area = kintone.app.record.getSpaceElement('header-clocking-btn-area'); - - const clockIn = createBtn('clock-in', '登園', dateToFieldInDetail('登園時刻')); - const clockOut = createBtn('clock-out', '帰園', dateToFieldInDetail('帰園時刻')); - area.appendChild(clockIn); - area.appendChild(clockOut); - - hideSpaceField(['clock-in-btn-area', 'clock-out-btn-area']); - }); - - kintone.events.on('app.record.print.show', (event) => { - hideSpaceField(['clock-in-btn-area', 'clock-out-btn-area']); - }); - - function dateToFieldInDetail(fieldCode) { - return async function (e) { - await new KintoneRestAPIClient().record.updateRecord({ - app: kintone.app.getId(), - id: kintone.app.record.getId(), - record: { - [fieldCode]: { - value: getCurrentTime() - } - } - }); - location.reload(); - } - } - - // ------------------- 編集画面表示時の処理 ------------------- - kintone.events.on(['app.record.create.show', 'app.record.edit.show'], function (event) { - const clockIn = createBtn('clock-in', '登園', dateToFieldInEdit('登園時刻')); - kintone.app.record.getSpaceElement('clock-in-btn-area').appendChild(clockIn); - const clockOut = createBtn('clock-out', '帰園', dateToFieldInEdit('帰園時刻')); - kintone.app.record.getSpaceElement('clock-out-btn-area').appendChild(clockOut); - }); - - function dateToFieldInEdit(fieldCode) { - return function (e) { - var record = kintone.app.record.get(); - record['record'][fieldCode]['value'] = getCurrentTime(); - kintone.app.record.set(record); - } - } - - function getCurrentTime() { - const now = new Date(); - const hours = String(now.getHours()).padStart(2, '0'); - const minutes = String(now.getMinutes()).padStart(2, '0'); - return `${hours}:${minutes}`; - } })(); \ No newline at end of file