kintone側実装

This commit is contained in:
2025-01-22 19:37:05 +09:00
parent d0ce7b8349
commit 28abd8d232
6 changed files with 2465 additions and 24 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,49 @@
import type { SavedData } from "@/types/model";
import type { Button } from "kintone-ui-component";
export class KintoneIndexEventHandler {
private config: SavedData;
constructor(config: SavedData) {
this.config = config;
}
public init(): void {
this.addButtonToView();
}
// ボタン追加
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);
}
// ボタンクリック
private async handleButtonClick(): Promise<void> {
try {
console.log('Button clicked! Starting data processing...');
alert('データ取得開始');
} catch (error) {
console.error('Error during data processing:', error);
}
}
}

View File

@@ -1,22 +1,28 @@
import { KintoneIndexEventHandler } from "./KintoneIndexEventHandler";
(function (PLUGIN_ID) { (function (PLUGIN_ID) {
kintone.events.on('app.record.index.show', () => { kintone.events.on('app.record.index.show', (event) => {
const spaceEl = kintone.app.getHeaderSpaceElement();
if (spaceEl === null) {
throw new Error('The header element is unavailable on this page.');
}
const fragment = document.createDocumentFragment();
const headingEl = document.createElement('h3');
const messageEl = document.createElement('p');
const config = kintone.plugin.app.getConfig(PLUGIN_ID); const config = kintone.plugin.app.getConfig(PLUGIN_ID);
messageEl.textContent = config.message; const handler = new KintoneIndexEventHandler(config);
messageEl.classList.add('plugin-space-message'); handler.init();
headingEl.textContent = 'Hello kintone plugin!'; // const spaceEl = kintone.app.getHeaderSpaceElement();
headingEl.classList.add('plugin-space-heading'); // if (spaceEl === null) {
// throw new Error('The header element is unavailable on this page.');
// }
fragment.appendChild(headingEl); // const fragment = document.createDocumentFragment();
fragment.appendChild(messageEl); // const headingEl = document.createElement('h3');
spaceEl.appendChild(fragment); // const messageEl = document.createElement('p');
// const config = kintone.plugin.app.getConfig(PLUGIN_ID);
// messageEl.textContent = config.message;
// messageEl.classList.add('plugin-space-message');
// headingEl.textContent = 'Hello kintone plugin!';
// headingEl.classList.add('plugin-space-heading');
// fragment.appendChild(headingEl);
// fragment.appendChild(messageEl);
// spaceEl.appendChild(fragment);
return event;
}); });
})(kintone.$PLUGIN_ID); })(kintone.$PLUGIN_ID);

View File

@@ -5,6 +5,7 @@
"type": "APP", "type": "APP",
"desktop": { "desktop": {
"js": [ "js": [
"js/kuc.min.js",
"js/desktop.js" "js/desktop.js"
], ],
"css": [ "css": [
@@ -16,14 +17,14 @@
"config": { "config": {
"html": "html/config.html", "html": "html/config.html",
"js": [ "js": [
"js/config.js" "js/config.js"
], ],
"css": [ "css": [
"css/51-modern-default.css", "css/51-modern-default.css",
"css/config.css" "css/config.css"
], ],
"required_params": [ "required_params": [
"message" "buttonName"
] ]
}, },
"name": { "name": {
@@ -36,6 +37,7 @@
}, },
"mobile": { "mobile": {
"js": [ "js": [
"js/kuc.min.js",
"js/mobile.js" "js/mobile.js"
], ],
"css": [ "css": [

View File

@@ -0,0 +1,6 @@
declare global {
const Kucs: {
[version: string]: any;
};
}
export {};

View File

@@ -53,7 +53,8 @@ export default defineConfig({
targets: [ targets: [
{ src: 'dist/index.html', dest: 'dist/src/html', rename: 'config.html' }, { src: 'dist/index.html', dest: 'dist/src/html', rename: 'config.html' },
{ src: 'src/manifest.json', dest: 'dist/src' }, { src: 'src/manifest.json', dest: 'dist/src' },
{ src: 'src/assets/*', dest: 'dist/src/image' }, { src: 'src/assets/*.js', dest: 'dist/src/js' },
{ src: 'src/assets/*.png', dest: 'dist/src/image' },
{ src: 'src/css/*', dest: 'dist/src/css' }, { src: 'src/css/*', dest: 'dist/src/css' },
], ],
hook: 'writeBundle' // 指定在何时复制文件 hook: 'writeBundle' // 指定在何时复制文件
@@ -74,11 +75,11 @@ export default defineConfig({
}, },
output: { output: {
entryFileNames: (chunkInfo) => { entryFileNames: (chunkInfo) => {
// console.log(chunkInfo); return 'src/js/[name].js'; // 默认处理为 JS 文件
return 'src/js/[name].js'; // 默认处理为 JS 文件
}, },
assetFileNames: 'src/[ext]/[name].[ext]', assetFileNames: 'src/[ext]/[name].[ext]',
} },
} },
sourcemap:'inline',
} }
}) })