From 4f4482e20d5d1c14fbf725d0e3abdd7210d9a115 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A6=AC?= Date: Sun, 26 Jan 2025 16:42:56 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E5=8F=96=E5=BE=97?= =?UTF-8?q?=E5=87=A6=E7=90=86=E6=9D=A1=E4=BB=B6=E5=BC=8F=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...¢å–得プラグイン開発_基本設計書_20241218時点.xlsx | Bin 161326 -> 161308 bytes document/æ¡ä»¶å¼æ•´ç†.xlsx | Bin 0 -> 14411 bytes .../src/js/KintoneIndexEventHandler.ts | 356 +++++++++++++++--- .../my-kintone-plugin/src/js/conditions.ts | 17 +- .../my-kintone-plugin/src/js/desktop.ts | 342 ++++++++++++----- .../my-kintone-plugin/src/types/model.d.ts | 18 +- 6 files changed, 586 insertions(+), 147 deletions(-) create mode 100644 document/æ¡ä»¶å¼æ•´ç†.xlsx diff --git a/document/å°ãƒ—ロ様_検索å–得プラグイン開発_基本設計書_20241218時点.xlsx b/document/å°ãƒ—ロ様_検索å–得プラグイン開発_基本設計書_20241218時点.xlsx index 051c79ffda43a3bbaa2d42c97f67a06c3170767a..04e0b801b065d41b38200c3cc38e65a564a3ddc9 100644 GIT binary patch delta 37669 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 diff --git a/document/æ¡ä»¶å¼æ•´ç†.xlsx b/document/æ¡ä»¶å¼æ•´ç†.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..91df648422f8d55dba32746e997b08d26e569572 GIT binary patch literal 14411 zcmeHu^;cv|vNh1SySp{+?(XjH?(P&c?(Xi;xVt-zyEP6CjXRBh+&eSho#}VqU-0Jq zkZ0AZidg4l#g3hku~R|%6DTSWI1nTd5D*a%GUn!n2`~^4CKwP93J@fSwy?dOi>aN9 zzKW-Vsk1Jfhpi1^0VoJX9uUaK@Be%KAD)51q-nc;2H4??#Cv$vYGs^l23eHgfj3u9m_;YGXwOkNtj%B`As8pcVRH8Ce>T>T+WA5-^ z<|UYwvb{LNi1qXN8;|P-sSn?Z!^MQz6yx<&1~8p$4@zSr5iT%>4CCRY_%qX?8*5VF z)bn}~1uZLq%j!h6BE_&;4*9lo0~AY&{S4#oeI$R0#PsnyB5rZV{qzJ-CQQT!lGxI0 z7yJ1k^ZwAOfP9K3c0U>d23Qg7Za;H}^AWl`1$MlW4na5$T-{He!%bj{S%PFe}J<|m4W2;BjRK}um|%2PJJg+8)tgDKgR!p^8YXr z|LxT)6J+HF7+^y#Bwj*C9~L*_5QU`O1tmI&Q~>^x-w~Rk3rTS{dOqVKs$d6x68Gx@ zynI{V;E6sSCA!~bsfiaTf9#fm-3`=>x!kS zXf4Z^9@`=jo4*pNL!72l$A&^F#tlK|P5+`bEUUR`^s5?pQAqi$Dx|iBJ?}ViI@51C zrQ|0Ze;B9C>0CP6sI!szYPHX(4bj~rwyLrPr)8~CjuRKLr@o0z?~O=i56Y_#tz6cq z5-|(%FQ#en5wg5HKdnZVtMP2lL3XHtiqXrlfJlO}%@3aXpCIwab&To!1O$W!1q6if zF*6=E^zQaf)<*XB)_<^9rRuuf9vh-B{fr;t?NnHjt9Vv0>9~czi6N=o90)jwSOGCx zdn+m$H{?Ce)55F2sN!vL@7n_UO3#r(bC!uRs$Fx4Y{tOsPI@}?!cL~Es+GG;W9Qcq zF3#Te;p4_J4`1e`o?Q9(QtPTBSF!ODGvn8srl-t8`yNgm*4_JdOFLGevh_MWi8ff+ zLRlEK+50@rdTh6AF%^}5rSF($N(>oIV8-=Sa45zjWfV1ca6*LleHPbQr8aX#xD>|;zDz2$W`?vleOMT!it5&si@KI(D&`U+U&sbU0>RtXq z(8rKAAX$62TNY7TV410d57byk^hyi}fD_6oHh5)%cqY;eF>u#ebQqE1s4+P>t<4f= z2#m6iew+TT&-RNvA}+Vx&w)@G^(l zVYzk&>CWS%r`X}1?em~$4LhwRJHZR#Z}%Z(l0+qch9sdOLt#y(v9p5W`aXQulyOqG zR{$JrZGL(f0|Oon_7tFDSY#4ct-1F98)rIrWa`vgZC#IX@Po&~Mmj4RK`gBn-u@g8H=^pA|K%0A;BwujD>u~FxoQ@Q45D_u5FWK4@V((rS* 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 I|M>L(05MYZ2><{9 literal 0 HcmV?d00001 diff --git a/vue-project/my-kintone-plugin/src/js/KintoneIndexEventHandler.ts b/vue-project/my-kintone-plugin/src/js/KintoneIndexEventHandler.ts index 86235f0..53d8b6b 100644 --- a/vue-project/my-kintone-plugin/src/js/KintoneIndexEventHandler.ts +++ b/vue-project/my-kintone-plugin/src/js/KintoneIndexEventHandler.ts @@ -1,49 +1,317 @@ -import type { SavedData } from "@/types/model"; -import type { Button } from "kintone-ui-component"; - +import type { FieldLayout, FieldsJoinMapping, JoinTable, Record, RecordForParameter, SavedData, WhereCondition } from "@/types/model"; +import { isType, type OneOf } from "./kintone-rest-api-client"; +declare var KintoneRestAPIClient: typeof import("@kintone/rest-api-client").KintoneRestAPIClient; export class KintoneIndexEventHandler { - private config: SavedData; - - constructor(config: SavedData) { - this.config = config; - } - - public init(): void { - this.addButtonToView(); - } - + private config: SavedData; + private currentApp: string; + constructor(config: SavedData, currentApp: string) { + this.config = config; + this.currentApp = currentApp; + } + + public init(): void { + this.addButtonToView(); + } + + // ボタン追加 + private addButtonToView(): void { + const headerSpace = kintone.app.getHeaderMenuSpaceElement(); + if (!headerSpace) { + throw new Error('ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ãƒ˜ãƒƒãƒ€ãƒ¼è¦ç´ ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“。'); + }; + // ボタン追加 - private addButtonToView(): void { - const headerSpace = kintone.app.getHeaderMenuSpaceElement(); - if (!headerSpace){ - throw new Error('ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ãƒ˜ãƒƒãƒ€ãƒ¼è¦ç´ ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“。'); - }; - - // ボタン追加 - if (document.getElementById('btn-data-fetch')) return; - const kuc = Kucs['1.18.0']; - const button = new kuc.Button({ - text: this.config.buttonName, - type:"submit", - id:'btn-data-fetch', - }); - - // const button = document.createElement('button'); - // button.id = 'btn-data-fetch'; - // button.textContent = this.config.buttonName; - // button.style.margin = '0 8px'; - button.addEventListener('click', () => this.handleButtonClick()); - - headerSpace.appendChild(button); + if (document.getElementById('btn-data-fetch')) return; + const kuc = Kucs['1.18.0']; + const button = new kuc.Button({ + text: this.config.buttonName, + type: "submit", + id: 'btn-data-fetch', + }); + + // const button = document.createElement('button'); + // button.id = 'btn-data-fetch'; + // button.textContent = this.config.buttonName; + // button.style.margin = '0 8px'; + button.addEventListener('click', () => this.handleButtonClick()); + + headerSpace.appendChild(button); + } + + // ボタンクリック + private handleButtonClick = async (): Promise => { + try { + console.log('データåŽé›†é–‹å§‹...'); + await this.execDataFectch(); + } catch (error) { + console.error('Error during data processing:', error); + throw error; } - - // ボタンクリック - private async handleButtonClick(): Promise { - try { - console.log('Button clicked! Starting data processing...'); - alert('データå–å¾—é–‹å§‹'); - } catch (error) { - console.error('Error during data processing:', error); + } + + + /** + * 検索データå–得&作æˆå‡¦ç† + */ + private execDataFectch = async (): Promise => { + const mainTable = this.config.joinTables[0]; + const mainRecords = await this.fetchDataFromApp(mainTable); + // フィールドçµåˆ + let mainData = mainRecords.map((record) => { + const rightRecord: Record = {}; + mainTable.fieldsMapping.forEach((mapping => { + rightRecord[this.fieldCode(mapping.rightField)] = record[this.fieldCode(mapping.leftField)] + })); + return rightRecord; + }); + const joinTables = this.config.joinTables.filter((table, index) => index > 0); + for (const table of joinTables) { + const subDatas = await this.fetchDataFromApp(table); + mainData = this.leftJoin(mainData, subDatas, table); + }; + //ç¾åœ¨ã®ãƒ‡ãƒ¼ã‚¿ã‚’クリアã™ã‚‹ + await this.deleteCurrentRecords(); + //データを更新ã™ã‚‹ + await this.saveDataToCurrentApp(mainData); + } + /** + * Appã‹ã‚‰ãƒ‡ãƒ¼ã‚¿ã‚’å–å¾—ã™ã‚‹ + * @param joinTable 対象アプリã‹ã‚‰ã‚Œãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’å–å¾—ã™ã‚‹ + * @returns + */ + private fetchDataFromApp = async (joinTable: JoinTable): Promise => { + // Filter æ¡ä»¶ä½œæˆ + const filter = this.getWhereCondition(joinTable.whereConditions); + + const fetchFields = joinTable.fieldsMapping.map(map => this.fieldCode(map.leftField)); + if (joinTable.table) { + fetchFields.push(joinTable.table); + } + // KintoneRESTAPI + const client = new KintoneRestAPIClient(); + const records = await client.record.getAllRecords({ + app: joinTable.app, + fields: fetchFields, + condition: filter + }); + //SubTableãŒå«ã¾ã‚Œã‚‹å ´åˆã€ãƒ•ラットãªãƒ‡ãƒ¼ã‚¿ã«å¤‰æ›ã™ã‚‹ + return this.convertToFlatDatas(records, joinTable.table); + + } + + private getWhereCondition(whereCondifions: WhereCondition[]): string { + const conds = whereCondifions + .filter((cond) => this.fieldCode(cond.field) !== ''); + const condition = conds.map((cond) => { + const condValue = this.getConditionValue(cond); + return `${this.fieldCode(cond.field)} ${cond.condition} ${condValue}`; + }).join(' and '); + return condition; + } + + private getConditionValue(condi: WhereCondition): string { + const field = condi.field as OneOf; + const data = condi.data; + if (!data) return ""; + if (isType.NUMBER(field) || isType.RECORD_NUMBER(field)) { + // For numbers, return as is + return data; + } else if (isType.DATE(field)) { + // If field is DATE, format as "yyyy-MM-dd" unless it's a reserved function + if (/^\d{4}-\d{2}-\d{2}$/.test(data) || data.match(/^\w+\(.*\)$/)) { + return `"${data}"`; } + const date = new Date(data); + return `"${date.toISOString().split('T')[0]}"`; + } else if (isType.DATETIME(field) || isType.CREATED_TIME(field) || isType.UPDATED_TIME(field)) { + // If field is DATETIME, format as "yyyy-MM-ddTHH:mm:ssZ" + if (data.match(/^\w+\(.*\)$/)) { + return `"${data}"`; + } + const dateTime = new Date(data); + return `"${dateTime.toISOString()}"`; + } else if ((condi.condition === "in" || condi.condition === "not in" )) { + if( data.includes(",")){ + // Handle "in" and "not in" with comma-separated strings + const items = data.split(",").map(item => `"${item.trim()}"`); + return `(${items.join(",")})`; + } else { + return `"${data}"`; + } + } else { + // Default case for other types (treat as text) + return `"${data}"`; } - } \ No newline at end of file + } + + + /** + * fieldã‹ã‚‰ã‚³ãƒ¼ãƒ‰ã‚’å–å¾—ã™ã‚‹ + * @param field + * @returns + */ + private fieldCode(field: any): string { + if (!field) { + return ""; + } + if (typeof field === 'string' && field) { + return field; + } else if (typeof field === 'object' && 'code' in field) { + return field.code; + } + return ""; + } + + /** + * ãƒã‚¹ãƒˆã•れãŸã‚µãƒ–テーブルデータをフラットãªãƒ‡ãƒ¼ã‚¿ã«å¤‰æ›ã—ã€è¦ªãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’複製ã—ã¾ã™ã€‚ + * @param records レコードã®é…列 + * @returns 変æ›å¾Œã®ãƒ•ラットãªãƒ¬ã‚³ãƒ¼ãƒ‰é…列 + */ + private convertToFlatDatas(records: Record[], subTable: string): Record[] { + if (!subTable) { + return records; + } + const flattenedData: Record[] = []; + records.forEach((record) => { + // テーブルフィールドãŒå­˜åœ¨ã™ã‚‹ã‹ã‚’ç¢ºèª + if (record[subTable]?.type === "SUBTABLE" && record[subTable].value.length > 0) { + // サブテーブル内ã®å„ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’å‡¦ç† + record[subTable].value.forEach((nested: Record) => { + // 親レコードã®ã‚³ãƒ”ãƒ¼ã‚’ä½œæˆ + const flatRecord = { ...record }; + + // サブテーブルフィールドを抽出ã—ã¦ãƒ•ãƒ©ãƒƒãƒˆãªæ§‹é€ ã«è¿½åŠ  + Object.entries(nested.value).forEach(([key, field]) => { + flatRecord[key] = field.value; + }); + + // テーブルフィールドを削除 + delete flatRecord[subTable]; + + // çµæžœã®é…列ã«è¿½åŠ  + flattenedData.push(flatRecord); + }); + } else { + // サブテーブルãŒç©ºã®å ´åˆã€è¦ªãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’ãã®ã¾ã¾è¿½åŠ  + const flatRecord = { ...record }; + delete flatRecord[subTable]; + flattenedData.push(flatRecord); + } + }); + + return flattenedData; + } + + /** + * データLeftJoinå‡¦ç† + * @param mainData + * @param subData + * @param onConditions + * @param fieldsMapping + * @returns + */ + private leftJoin( + mainData: Record[], + subData: Record[], + joinTable: JoinTable + ): Record[] { + + const joinedRecords = mainData.map((mainRecord) => { + const matchedRecord = subData.find((subRecord) => + joinTable.onConditions.every( + (cond) => mainRecord[this.fieldCode(cond.leftField)] === subRecord[this.fieldCode(cond.rightField)] + ) + ); + + // マッãƒå‡ºæ¥ãªã„å ´åˆã€LEFTã®åˆ—ã®ã¿è¿”ã™ + if (!matchedRecord) return mainRecord; + + // フィールドçµåˆ + const combinedRecord: Record = { ...mainRecord }; + joinTable.fieldsMapping.forEach((mapping) => { + combinedRecord[this.fieldCode(mapping.rightField)] = matchedRecord[this.fieldCode(mapping.leftField)]; + }); + return combinedRecord; + }); + return joinedRecords; + } + + /** + * å–å¾—å…ˆã¯ãƒ†ãƒ¼ãƒ–ルã®å ´åˆã®ç‰¹åˆ¥å¯¾å¿œ + */ + private leftJoinForTable( + mainData: Record[], + subData: Record[], + joinTable: JoinTable + ): any[] { + return mainData.map((mainRecord) => { + const matchedRecord = subData.find((subRecord) => { + const subRows = subRecord[joinTable.table].value as Record[]; + joinTable.onConditions.every( + (cond) => mainRecord[cond.leftField] === subRecord[cond.rightField] + ) + + } + + ); + + // マッãƒå‡ºæ¥ãªã„å ´åˆã€LEFTã®åˆ—ã®ã¿è¿”ã™ + if (!matchedRecord) return mainRecord; + + // フィールドçµåˆ + const combinedRecord = { ...mainRecord }; + joinTable.fieldsMapping.forEach((mapping) => { + combinedRecord[mapping.rightField] = matchedRecord[mapping.leftField]; + }); + return combinedRecord; + }); + } + + /** + * ç¾åœ¨ã‚¢ãƒ—リã®ã™ã¹ã¦ãƒ¬ã‚³ãƒ¼ãƒ‰ã‚’削除ã™ã‚‹ + */ + private async deleteCurrentRecords(): Promise { + const client = new KintoneRestAPIClient(); + const currentRecords = await client.record.getAllRecords({ + app: this.currentApp, + fields: ["$id"], + }); + const deleteRecords = currentRecords.map(record => { + return { id: record.$id.value as string } + }); + await client.record.deleteAllRecords({ + app: this.currentApp, + records: deleteRecords + }); + client.record.addAllRecords + } + /** + * çµåˆå¾Œã®ãƒ‡ãƒ¼ã‚¿ã‚’ç¾åœ¨ã®ã‚¢ãƒ—ãƒªã«æŒ¿å…¥ã™ã‚‹ + * @param records + */ + private async saveDataToCurrentApp(records: Record[]): Promise { + try { + const client = new KintoneRestAPIClient(); + const result = await client.record.addAllRecords({ + app: this.currentApp, + records: this.convertForUpdate(records) + }); + } catch (error) { + console.error('ãƒ‡ãƒ¼ã‚¿ä½œæˆæ™‚エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ:', error); + throw error; + } + } + + /** + * Recordを更新時ã®å½¢å¼ã‚’変æ›ã™ã‚‹ + * @param resords + * @returns + */ + private convertForUpdate(resords: Record[]): RecordForParameter[] { + return resords.map((record) => + Object.fromEntries( + Object.entries(record).map(([fieldCode, { value }]) => [fieldCode, { value }]) + ) + ); + } +} \ No newline at end of file diff --git a/vue-project/my-kintone-plugin/src/js/conditions.ts b/vue-project/my-kintone-plugin/src/js/conditions.ts index 0ffd963..319f1d5 100644 --- a/vue-project/my-kintone-plugin/src/js/conditions.ts +++ b/vue-project/my-kintone-plugin/src/js/conditions.ts @@ -5,7 +5,16 @@ import { getFieldObj } from './helper'; // conditionValue = '' | 'eq' | 'ne' // conditionItem = { value: 'eq', label: '=(等ã—ã„)', type: 'input', func: (a: string, b: string) => a === b } // = conditionMap[conditionValue] -export type ConditionValue = '' | 'eq' | 'ne' | 'test'; +export type ConditionValue = ""| "=" +| "!=" +| ">=" +| "<=" +| "<" +| ">" +| "like" +| "not like" +| "in" +| "not in"; type ConditionItem = { value: ConditionValue; @@ -16,9 +25,9 @@ type ConditionItem = { export const conditionList: ConditionItem[] = [ { value: '', label: '--------', type: '', func: (a: string, b: string) => true }, - { value: 'eq', label: '=(等ã—ã„)', type: 'input', func: (a: string, b: string) => a === b }, - { value: 'ne', label: '≠ (等ã—ããªã„)', type: 'input', func: (a: string, b: string) => a !== b }, - { value: 'test', label: 'test combobox', type: 'select', func: (a: string, b: string) => a < b }, + { value: '=', label: '=(等ã—ã„)', type: 'input', func: (a: string, b: string) => a === b }, + { value: '!=', label: '≠ (等ã—ããªã„)', type: 'input', func: (a: string, b: string) => a !== b }, + { value: '>=', label: 'test combobox', type: 'select', func: (a: string, b: string) => a < b }, ]; // search from conditionList diff --git a/vue-project/my-kintone-plugin/src/js/desktop.ts b/vue-project/my-kintone-plugin/src/js/desktop.ts index e785768..2cad521 100644 --- a/vue-project/my-kintone-plugin/src/js/desktop.ts +++ b/vue-project/my-kintone-plugin/src/js/desktop.ts @@ -1,11 +1,13 @@ -import type { SavedData } from "@/types/model"; +import type { Field, FieldLayout, SavedData } from "@/types/model"; import { KintoneIndexEventHandler } from "./KintoneIndexEventHandler"; (function (PLUGIN_ID) { kintone.events.on('app.record.index.show', (event) => { const setting = kintone.plugin.app.getConfig(PLUGIN_ID); - const config:SavedData = getConfig(setting); - const handler = new KintoneIndexEventHandler(config); + const config:SavedData = getConfig(setting); + const currentApp = kintone.app.getId()?.toString(); + if(!currentApp) return; + const handler = new KintoneIndexEventHandler(config,currentApp); handler.init(); return event; }); @@ -14,106 +16,252 @@ import { KintoneIndexEventHandler } from "./KintoneIndexEventHandler"; * @param setting * @returns */ - function getConfig(setting:any):SavedData{ - const config:SavedData={ + function getConfig(setting:any):SavedData{ + const config:SavedData={ buttonName:setting.buttonName, joinTables:JSON.parse(setting.joinTables) } return config; } - function getTestSetting(config:SavedData):SavedData{ - const mainTable = { - id:12345, - app:"140", - onConditions:[ - { - leftField:"文字列__1行_", - rightField:"文字列__1行_" - } - ], - fieldsMapping:[{ - leftField:"", - rightField:"" - }, - { - leftField:"", - rightField:"" - } - ], - table:"", - whereConditions:[ - { - field:"", - condition:"", - data:"" - } - ] - }; - const leftJoinTable1 = { - id:12345, - app:"140", - onConditions:[ - { - leftField:"文字列__1行_", - rightField:"文字列__1行_" - } - ], - fieldsMapping:[{ - leftField:"", - rightField:"" - }, - { - leftField:"", - rightField:"" - } - ], - table:"", - whereConditions:[ - { - field:"", - condition:"", - data:"" - } - ] - }; - const leftJoinTable2 = { - id:12345, - app:"140", - onConditions:[ - { - leftField:"文字列__1行_", - rightField:"文字列__1行_" - } - ], - fieldsMapping:[{ - leftField:"", - rightField:"" - }, - { - leftField:"", - rightField:"" - } - ], - table:"", - whereConditions:[ - { - field:"", - condition:"", - data:"" - } - ] - }; - const retConfig :SavedData ={ - buttonName : config.buttonName, - joinTables:[ - mainTable, - leftJoinTable1, - leftJoinTable2 - ] - }; - return retConfig; - } + // function getTestSetting(config:SavedData):SavedData{ + // const retConfig :SavedData ={ + // "buttonName": "集約ã™ã‚‹", + // "joinTables": [ + // { + // "id": "m6c69ojr-bx9l8n9fm", + // "app": "140", + // "table": "", + // "onConditions": [ + // { + // "leftField": "", + // "rightField": "", + // "id": "m6c69ojr-7pho6voer" + // } + // ], + // "fieldsMapping": [ + // { + // "leftField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行_", + // "label": "社員番å·", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "rightField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行_", + // "label": "社員番å·", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "id": "m6c69ojr-i75a82qvb" + // }, + // { + // "leftField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行__0", + // "label": "æ°å", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "rightField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行__0", + // "label": "æ°å", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "id": "m6c6v8sp-7yw58m6e9" + // } + // ], + // "whereConditions": [ + // { + // "field": "", + // "condition": "", + // "data": "", + // "id": "m6c69ojr-az5k7bvp6" + // } + // ] + // }, + // { + // "id": "m6c6u15u-yq4kzp31c", + // "app": "141", + // "table": "使用者テーブル", + // "onConditions": [ + // { + // "leftField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "社員番å·", + // "label": "社員番å·", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "rightField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行_", + // "label": "社員番å·", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "id": "m6c6ue5e-k7yibisue" + // } + // ], + // "fieldsMapping": [ + // { + // "leftField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "æ°å", + // "label": "æ°å", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "rightField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行__0", + // "label": "æ°å", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "id": "m6c6ue5e-bjdpae18q" + // } + // ], + // "whereConditions": [ + // { + // "field": "", + // "condition": "", + // "data": "", + // "id": "m6c6ue5e-1rf2v4l9m" + // } + // ] + // }, + // { + // "id": "m6c6vrso-vr7a7v5h1", + // "app": "143", + // "table": "テーブル", + // "onConditions": [ + // { + // "leftField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行__1", + // "label": "資産管ç†ç•ªå·", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "rightField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行__1", + // "label": "資産管ç†ç•ªå·", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "id": "m6c6vx94-02xbd48xt" + // } + // ], + // "fieldsMapping": [ + // { + // "leftField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行__2", + // "label": "資産å", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "rightField": { + // "type": "SINGLE_LINE_TEXT", + // "code": "文字列__1行__2", + // "label": "資産å", + // "noLabel": false, + // "required": false, + // "minLength": "", + // "maxLength": "", + // "expression": "", + // "hideExpression": false, + // "unique": false, + // "defaultValue": "" + // }, + // "id": "m6c6vx94-t7d8juf6x" + // } + // ], + // "whereConditions": [ + // { + // "field": "", + // "condition": "", + // "data": "", + // "id": "m6c6vx94-gbxhjgf8m" + // } + // ] + // } + // ] + // }; + // return retConfig; + // } })(kintone.$PLUGIN_ID); diff --git a/vue-project/my-kintone-plugin/src/types/model.d.ts b/vue-project/my-kintone-plugin/src/types/model.d.ts index 62791ac..39e99cf 100644 --- a/vue-project/my-kintone-plugin/src/types/model.d.ts +++ b/vue-project/my-kintone-plugin/src/types/model.d.ts @@ -26,9 +26,9 @@ export interface JoinTable { } // å­˜å‚¨çš„æ•°æ®æ ¼å¼ -export interface SavedData { +export interface SavedData { buttonName: string; - joinTables: JoinTable[]; + joinTables: JoinTable[]; } export interface FieldsInfo { @@ -46,3 +46,17 @@ export interface CachedSelectedAppData { loading: boolean, table: JoinTable, } +export type Record = { + [fieldCode: string]: Field; +}; + +export type RecordForParameter = { + [fieldCode: string]: { + value: unknown; + }; +}; + +export type Field={ + type:string; + value:any; +} \ No newline at end of file