Merged PR 87: [ルックアップ更新]条件式の不具合対応

[ルックアップ更新]条件式の不具合対応
1.条件式は更新先のフィールドを設定できるように変更しました
2.ルックアップ更新のDB登録情報も更新しました。
3.その他:色選択の必須設定追加

Related work items: #589
This commit is contained in:
Shohtetsu Ma
2024-08-29 03:55:00 +00:00
committed by Takuto Yoshida(タクト)
9 changed files with 965 additions and 27 deletions

View File

@@ -4,7 +4,7 @@ import base64
PROJECT_NAME = "KintoneAppBuilder" PROJECT_NAME = "KintoneAppBuilder"
#SQLALCHEMY_DATABASE_URI = "postgres://maxz64:m@xz1205@alicornkintone.postgres.database.azure.com/postgres" #SQLALCHEMY_DATABASE_URI = "postgres://kabAdmin:P@ssw0rd!@kintonetooldb.postgres.database.azure.com/dev"
SQLALCHEMY_DATABASE_URI = "postgres://kabAdmin:P@ssw0rd!@kintonetooldb.postgres.database.azure.com/postgres" SQLALCHEMY_DATABASE_URI = "postgres://kabAdmin:P@ssw0rd!@kintonetooldb.postgres.database.azure.com/postgres"
#SQLALCHEMY_DATABASE_URI = "postgres://kabAdmin:P@ssw0rd!@kintonetooldb.postgres.database.azure.com/test" #SQLALCHEMY_DATABASE_URI = "postgres://kabAdmin:P@ssw0rd!@kintonetooldb.postgres.database.azure.com/test"
#SQLALCHEMY_DATABASE_URI = "postgres://kabAdmin:P@ssw0rd!@ktune-prod-db.postgres.database.azure.com/postgres" #SQLALCHEMY_DATABASE_URI = "postgres://kabAdmin:P@ssw0rd!@ktune-prod-db.postgres.database.azure.com/postgres"

Binary file not shown.

View File

@@ -8,8 +8,8 @@
class="q-mr-sm"> class="q-mr-sm">
</q-icon> </q-icon>
<div class="no-wrap" <div class="no-wrap"
:class="selectedEvent && prop.node.eventId === selectedEvent.eventId ? 'selected-node' : ''">{{ :class="selectedEvent && prop.node.eventId === selectedEvent.eventId ? 'selected-node' : ''">{{prop.node.label }}
prop.node.label }}</div> </div>
<q-space></q-space> <q-space></q-space>
<!-- <q-icon v-if="prop.node.hasFlow" name="delete" color="negative" size="16px" class="q-mr-sm"></q-icon> --> <!-- <q-icon v-if="prop.node.hasFlow" name="delete" color="negative" size="16px" class="q-mr-sm"></q-icon> -->
</div> </div>
@@ -27,7 +27,7 @@
<template v-slot:header-DELETABLE="prop"> <template v-slot:header-DELETABLE="prop">
<div class="row col items-start event-node" @click="onSelected(prop.node)"> <div class="row col items-start event-node" @click="onSelected(prop.node)">
<q-icon v-if="prop.node.eventId" name="play_circle" :color="prop.node.hasFlow ? 'green' : 'grey'" size="16px" class="q-mr-sm" /> <q-icon v-if="prop.node.eventId" name="play_circle" :color="prop.node.hasFlow ? 'green' : 'grey'" size="16px" class="q-mr-sm" />
<div class="no-wrap" :class="selectedEvent && prop.node.eventId === selectedEvent.eventId ? 'selected-node' : ''" >{{ prop.node.label }}</div> <div class="no-wrap" :class="selectedEvent && prop.node.eventId === selectedEvent.eventId ? 'selected-node' : ''" >{{ prop.node.label}}</div>
<q-space></q-space> <q-space></q-space>
<q-icon name="delete_forever" color="negative" size="16px" @click="deleteEvent(prop.node)"></q-icon> <q-icon name="delete_forever" color="negative" size="16px" @click="deleteEvent(prop.node)"></q-icon>
</div> </div>

View File

@@ -1,6 +1,6 @@
<template> <template>
<div class="" v-bind="$attrs"> <div class="" v-bind="$attrs">
<q-field v-model="color" :label="displayName" labelColor="primary" :clearable="isSelected" stack-label :bottom-slots="!isSelected" > <q-field v-model="color" :label="displayName" labelColor="primary" :clearable="isSelected" stack-label :bottom-slots="!isSelected" :rules="rulesExp">
<template v-slot:control> <template v-slot:control>
<q-chip text-color="black" color="white" v-if="isSelected"> <q-chip text-color="black" color="white" v-if="isSelected">
<div class="row"> <div class="row">
@@ -57,17 +57,34 @@ export default defineComponent({
type: String, type: String,
default: null default: null
}, },
//例:[val=>!!val ||'入力してください']
rules: {
type: String,
default: undefined
},
required:{
type:Boolean,
default:false
},
requiredMessage: {
type: String,
default: ''
}
}, },
setup(props, { emit }) { setup(props, { emit }) {
const color = ref(props.modelValue??""); const color = ref(props.modelValue??"");
const isSelected = computed(()=>props.modelValue && props.modelValue!==""); const isSelected = computed(()=>props.modelValue && props.modelValue!=="");
const customExp = props.rules === undefined ? [] : eval(props.rules);
const errmsg = props.requiredMessage?props.requiredMessage:`${props.displayName}が必須です。`;
const requiredExp = props.required?[((val:any)=>!!val || errmsg ),"anyColor"]:[];
const rulesExp=[...requiredExp,...customExp];
watchEffect(()=>{ watchEffect(()=>{
emit('update:modelValue', color.value); emit('update:modelValue', color.value);
}); });
return { return {
color, color,
isSelected isSelected,
rulesExp
}; };
} }
}); });

View File

@@ -59,6 +59,10 @@ export default defineComponent({
type: String, type: String,
default: 'field' default: 'field'
}, },
connectProps:{
type:Object,
default:()=>({})
},
onlySourceSelect: { onlySourceSelect: {
type: Boolean, type: Boolean,
default: false default: false
@@ -87,7 +91,10 @@ export default defineComponent({
}, },
setup(props, { emit }) { setup(props, { emit }) {
const source = props.context.find(element => element.props.name === 'sources') let source = reactive(props.connectProps["source"]);
if(!source){
source = props.context.find(element => element.props.name === 'sources');
}
if (source) { if (source) {
if (props.sourceType === 'field') { if (props.sourceType === 'field') {

View File

@@ -139,12 +139,12 @@ const columns = [
{ name: 'kintoneuser', label: 'User', field: 'kintoneuser', sortable: true }, { name: 'kintoneuser', label: 'User', field: 'kintoneuser', sortable: true },
{ name: 'kintonepwd' }, { name: 'kintonepwd' },
{ name: 'active', field: 'active' } { name: 'active', field: 'active' }
] ];
const userDomainTableFilter = ref() const userDomainTableFilter = ref();
const currentUserName = ref('') const currentUserName = ref('');
const useOtherUser = ref(false); const useOtherUser = ref(false);
const otherUserId = ref('') const otherUserId = ref('');
let editId = ref(0); let editId = ref(0);
@@ -168,7 +168,7 @@ const addUserDomainFinished = (val: string) => {
} }
}; };
const showDeleteConfirm = ref(false) const showDeleteConfirm = ref(false);
const clickDeleteConfirm = (row: any) => { const clickDeleteConfirm = (row: any) => {
showDeleteConfirm.value = true; showDeleteConfirm.value = true;

View File

@@ -70,8 +70,9 @@
| placeholder | 対象項目を選択してください| 入力フィールドに表示されるプレースホルダーのテキストです。この場合は設定されていません。 | | placeholder | 対象項目を選択してください| 入力フィールドに表示されるプレースホルダーのテキストです。この場合は設定されていません。 |
| hint | 説明文| 長い説明文を設定することが可能です。markdown形式サポート予定、現在HTML可能 | | hint | 説明文| 長い説明文を設定することが可能です。markdown形式サポート予定、現在HTML可能 |
| selectType |`single` or `multiple`| フィールド選択・他のアプリのフィールド選択の選択モードを設定する | | selectType |`single` or `multiple`| フィールド選択・他のアプリのフィールド選択の選択モードを設定する |
| required | boolean | 必須チェックするかどうか |
| requiredMessage | string | 必須チェック時のエラーメッセージ。未設定の場合「XXXX」が必須です。になります |
| rules |"[val=>val<=100 && val>=1 \|\| '1-100の範囲内の数値を入力してください']"| 必須チェック以外のルールを設定する |
### 使用可能なコンポーネント ### 使用可能なコンポーネント
| No. | コンポーネント名 | コンポーネントタイプ | 説明 | | No. | コンポーネント名 | コンポーネントタイプ | 説明 |
@@ -83,9 +84,9 @@
| 5 | 選択リスト | SelectBox | 複数のオプションから選択するためのドロップダウンリストです。 | | 5 | 選択リスト | SelectBox | 複数のオプションから選択するためのドロップダウンリストです。 |
| 6 | 条件式設定 | ConditionInput | 条件式やロジックを入力するためのコンポーネントです。 | | 6 | 条件式設定 | ConditionInput | 条件式やロジックを入力するためのコンポーネントです。 |
| 7 | イベント設定 |EventSetter | ボタンイベント設定のコンポーネントです。 | | 7 | イベント設定 |EventSetter | ボタンイベント設定のコンポーネントです。 |
| 8 | 色選択 | ColorPicker | 色を設定する(追加予定中) | | 8 | 色選択 | ColorPicker | 色を設定する |
| 9 | 他のアプリのフィールド選択 | AppFieldPicker | 他のアプリのフィールドを選択する(追加予定中) | | 9 | 他のアプリのフィールド選択 | AppFieldSelect | 他のアプリのフィールドを選択する |
| 10 |ユーザー選択 | UserPicker | ユーザーを選択する(追加予定中) | | 10 | アプリ選択 | AppSelect | アプリを選択する |
## 2.アクションアドインの開発 ## 2.アクションアドインの開発
@@ -270,7 +271,7 @@ npm run build:dev
- Azure App Service 拡張機能でデプロイが完了したことを確認します。 - Azure App Service 拡張機能でデプロイが完了したことを確認します。
- ka-addin の URL にアクセスしてアプリケーションが正常に動作しているか確認します。 - ka-addin の URL にアクセスしてアプリケーションが正常に動作しているか確認します。
3. **ローカルでプラグインをテストする** 3. **ローカルでプラグインをテストする(ZCCの導入ため、廃止する)**
1. kintone-addinsをPreviewで起動する 1. kintone-addinsをPreviewで起動する
```bash ```bash
yarn build:dev yarn build:dev
@@ -278,7 +279,7 @@ yarn preview
#またはyarn devは yarn build:dev + yarn preview と同じです #またはyarn devは yarn build:dev + yarn preview と同じです
yarn dev yarn dev
``` ```
2. **ngrokをインストールする** 2. **ngrokをインストールする(ZCCの導入ため、廃止する)**
1. [ngrok の公式ウェブサイト](https://ngrok.com/)にアクセスします。 1. [ngrok の公式ウェブサイト](https://ngrok.com/)にアクセスします。
2. 「Sign up」をクリックしてアカウントを登録するか、既存のアカウントにログインします。 2. 「Sign up」をクリックしてアカウントを登録するか、既存のアカウントにログインします。
3. 登録またはログイン後、ダッシュボードに進み、ダウンロードリンクが表示されます。操作システムWindows、macOS、Linuxに応じて、適切なバージョンを選択してダウンロードします。 3. 登録またはログイン後、ダッシュボードに進み、ダウンロードリンクが表示されます。操作システムWindows、macOS、Linuxに応じて、適切なバージョンを選択してダウンロードします。
@@ -292,4 +293,10 @@ yarn dev
6. ngrok を起動する 6. ngrok を起動する
```bash ```bash
ngrok https http://localhost:4173/ ngrok https http://localhost:4173/
``` ```
3. kintone-addinsをビルドする
```bash
yarn build:dev #開発モード
#またはyarn devは yarn build:dev + yarn preview と同じです
yarn build #本番リリースモード
```

View File

@@ -16,7 +16,7 @@ import "bootstrap/js/dist/modal";
import {Modal} from "bootstrap" import {Modal} from "bootstrap"
import $ from "jquery"; import $ from "jquery";
interface Props { interface IAutoLookUpProps {
displayName: string; displayName: string;
lookupField: LookupField; lookupField: LookupField;
condition: Condition; condition: Condition;
@@ -84,11 +84,11 @@ interface App {
export class AutoLookUpAction implements IAction { export class AutoLookUpAction implements IAction {
name: string; name: string;
actionProps: IActionProperty[]; actionProps: IActionProperty[];
props: Props; props: IAutoLookUpProps;
constructor() { constructor() {
this.name = "ルックアップ更新"; this.name = "ルックアップ更新";
this.actionProps = []; this.actionProps = [];
this.props = {} as Props; this.props = {} as IAutoLookUpProps;
this.register(); this.register();
} }
@@ -104,7 +104,7 @@ export class AutoLookUpAction implements IAction {
this.props = { this.props = {
...actionNode.ActionValue, ...actionNode.ActionValue,
condition: JSON.parse((actionNode.ActionValue as any).condition), condition: JSON.parse((actionNode.ActionValue as any).condition),
} as Props; } as IAutoLookUpProps;
// console.log(context); // console.log(context);
let result = { let result = {
@@ -150,12 +150,17 @@ export class AutoLookUpAction implements IAction {
* @returns * @returns
*/ */
makeQuery=(lookUpField:Field,key:any)=>{ makeQuery=(lookUpField:Field,key:any)=>{
let query ="";
if(typeof key==='number'){ if(typeof key==='number'){
return `${lookUpField.code} = ${key}` query = `${lookUpField.code} = ${key}`
} }
if(typeof key==='string'){ if(typeof key==='string'){
return `${lookUpField.code} = "${key}"` query = `${lookUpField.code} = "${key}"`
} }
if(this.props.condition.queryString!==''){
query = `${query} and (${this.props.condition.queryString})`
}
return query;
} }
/** /**

View File

@@ -0,0 +1,902 @@
--
-- PostgreSQL database dump
--
-- Dumped from database version 15.6
-- Dumped by pg_dump version 15.4
-- Started on 2024-08-29 11:26:40
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SELECT pg_catalog.set_config('search_path', '', false);
SET check_function_bodies = false;
SET xmloption = content;
SET client_min_messages = warning;
SET row_security = off;
ALTER TABLE IF EXISTS ONLY public.action DROP CONSTRAINT IF EXISTS fk_categoryid;
ALTER TABLE IF EXISTS ONLY public.eventaction DROP CONSTRAINT IF EXISTS eventaction_eventid_fkey;
ALTER TABLE IF EXISTS ONLY public.eventaction DROP CONSTRAINT IF EXISTS eventaction_actionid_fkey;
DROP INDEX IF EXISTS public.ix_eventaction_id;
DROP INDEX IF EXISTS public.ix_action_name;
DROP INDEX IF EXISTS public.ix_action_id;
ALTER TABLE IF EXISTS ONLY public.action DROP CONSTRAINT IF EXISTS name;
ALTER TABLE IF EXISTS ONLY public.eventaction DROP CONSTRAINT IF EXISTS eventaction_pkey;
ALTER TABLE IF EXISTS ONLY public.category DROP CONSTRAINT IF EXISTS category_pkey;
ALTER TABLE IF EXISTS ONLY public.action DROP CONSTRAINT IF EXISTS action_pkey;
ALTER TABLE IF EXISTS public.eventaction ALTER COLUMN id DROP DEFAULT;
ALTER TABLE IF EXISTS public.action ALTER COLUMN id DROP DEFAULT;
DROP SEQUENCE IF EXISTS public.eventaction_id_seq;
DROP TABLE IF EXISTS public.eventaction;
DROP TABLE IF EXISTS public.category;
DROP SEQUENCE IF EXISTS public.action_id_seq;
DROP TABLE IF EXISTS public.action;
SET default_tablespace = '';
SET default_table_access_method = heap;
--
-- TOC entry 214 (class 1259 OID 27560)
-- Name: action; Type: TABLE; Schema: public; Owner: kabAdmin
--
CREATE TABLE public.action (
id integer NOT NULL,
create_time timestamp without time zone,
update_time timestamp without time zone,
name character varying(100) NOT NULL,
title character varying(200),
subtitle character varying(500),
outputpoints character varying,
property character varying,
nosort integer,
categoryid integer
);
ALTER TABLE public.action OWNER TO "kabAdmin";
--
-- TOC entry 215 (class 1259 OID 27565)
-- Name: action_id_seq; Type: SEQUENCE; Schema: public; Owner: kabAdmin
--
CREATE SEQUENCE public.action_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.action_id_seq OWNER TO "kabAdmin";
--
-- TOC entry 3991 (class 0 OID 0)
-- Dependencies: 215
-- Name: action_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: kabAdmin
--
ALTER SEQUENCE public.action_id_seq OWNED BY public.action.id;
--
-- TOC entry 238 (class 1259 OID 27752)
-- Name: category; Type: TABLE; Schema: public; Owner: kabAdmin
--
CREATE TABLE public.category (
id integer NOT NULL,
categoryname character varying(20) NOT NULL,
nosort integer,
create_time timestamp without time zone,
update_time timestamp without time zone
);
ALTER TABLE public.category OWNER TO "kabAdmin";
--
-- TOC entry 224 (class 1259 OID 27591)
-- Name: eventaction; Type: TABLE; Schema: public; Owner: kabAdmin
--
CREATE TABLE public.eventaction (
id integer NOT NULL,
create_time timestamp without time zone,
update_time timestamp without time zone,
eventid character varying(100),
actionid integer
);
ALTER TABLE public.eventaction OWNER TO "kabAdmin";
--
-- TOC entry 225 (class 1259 OID 27594)
-- Name: eventaction_id_seq; Type: SEQUENCE; Schema: public; Owner: kabAdmin
--
CREATE SEQUENCE public.eventaction_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE public.eventaction_id_seq OWNER TO "kabAdmin";
--
-- TOC entry 3992 (class 0 OID 0)
-- Dependencies: 225
-- Name: eventaction_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: kabAdmin
--
ALTER SEQUENCE public.eventaction_id_seq OWNED BY public.eventaction.id;
--
-- TOC entry 3823 (class 2604 OID 27627)
-- Name: action id; Type: DEFAULT; Schema: public; Owner: kabAdmin
--
ALTER TABLE ONLY public.action ALTER COLUMN id SET DEFAULT nextval('public.action_id_seq'::regclass);
--
-- TOC entry 3824 (class 2604 OID 27632)
-- Name: eventaction id; Type: DEFAULT; Schema: public; Owner: kabAdmin
--
ALTER TABLE ONLY public.eventaction ALTER COLUMN id SET DEFAULT nextval('public.eventaction_id_seq'::regclass);
--
-- TOC entry 3981 (class 0 OID 27560)
-- Dependencies: 214
-- Data for Name: action; Type: TABLE DATA; Schema: public; Owner: kabAdmin
--
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (5, '2024-01-21 15:33:50.958114', '2024-01-21 15:33:50.958114', 'エラー表示', '指定した条件でエラーメッセージを表示する', 'エラー表示', '[]', '[{"component":"ConditionInput","props":{"displayName":"条件","modelValue":"","name":"condition","placeholder":"条件を選択または入力してください"}},{"component":"MuiltInputText","props":{"displayName":"エラーメッセージ","modelValue":"","name":"message","placeholder":"エラーメッセージを入力してください","required":true}}]', 1, 2);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (3, '2024-01-21 15:33:50.958114', '2024-01-21 15:33:50.958114', '表示/非表示', '要素の表示/非表示を設定する', '表示/非表示', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "フィールド",
"modelValue": {},
"name": "field",
"placeholder": "対象項目を選択してください",
"required": true,
"requiredMessage": "フィールドを選択してください"
}
},
{
"component": "SelectBox",
"props": {
"displayName": "表示/非表示",
"options": [
"表示",
"非表示"
],
"modelValue": "",
"name": "show",
"placeholder": "",
"required": true
}
},
{
"component": "ConditionInput",
"props": {
"displayName": "条件",
"modelValue": "",
"name": "condition",
"placeholder": "条件式を設定してください"
}
}
]', 2, 2);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (4, '2024-01-21 15:33:50.958114', '2024-01-21 15:33:50.958114', '条件式', '指定した条件でフローを分岐させる', '条件式', '["はい","いいえ"]', '[{"component":"ConditionInput","props":{"displayName":"条件","modelValue":"","name":"condition","placeholder":"条件式を設定してください"}},{"component":"InputText","props":{"displayName":"結果(戻り値)","modelValue":"","name":"verName","placeholder":"変数名を入力してください"}}]', 3, 3);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (11, '2024-04-30 15:33:50.958114', '2024-04-30 15:33:50.958114', 'メールアドレスチェック', 'フィールドの値がメールアドレスかチェックする', 'メールアドレスチェック', '[]', '[{"component":"FieldInput","props":{"displayName":"フィールド","modelValue":{},"name":"field","placeholder":"対象項目を選択してください","required":true}},{"component":"SelectBox","props":{"displayName":"チェックする強さを選択してください","modelValue":"","name":"emailCheck","placeholder":"チェックする強さを選択してください","options":["厳格","ゆるめ"],"required":true}},{"component":"MuiltInputText","props":{"displayName":"エラーメッセージ","modelValue":"","name":"message","placeholder":"エラーメッセージを入力してください","required":true}}]', 4, 1);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (19, '2024-05-27 18:59:42', '2024-05-27 18:59:42', '現在日時', '現在日時を取得する', '現在日時', '[]', '[
{
"component": "InputText",
"props": {
"displayName": "変数にセット",
"modelValue": "",
"name": "verName",
"placeholder": "",
"required":true,
"requiredMessage":"変数名が必須です"
}
}
]', 1, 3);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (12, '2024-05-07 15:33:50.958114', '2024-05-07 15:33:50.958114', '全角チェック', 'フィールドの値がすべて全角かチェックする', '全角チェック', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "フィールド",
"modelValue": {},
"name": "field",
"placeholder": "対象項目を選択してください",
"required":true
}
}
]', 2, 1);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (1, '2024-01-21 15:33:50.958114', '2024-01-21 15:33:50.958114', '必須チェック', 'フィールドの値が入力されているかチェックする', '必須チェック', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "フィールド",
"modelValue": {},
"name": "field",
"placeholder": "必須項目を選択してください",
"required":true
}
},
{
"component": "MuiltInputText",
"props": {
"displayName": "エラーメッセージ",
"modelValue": "",
"name": "message",
"placeholder": "エラーメッセージを入力してください",
"required":true
}
}
]', 1, 1);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (13, '2024-05-10 10:08:34.990297', '2024-05-10 10:08:34.990297', '文字結合', '2つのフィールドの文字を結合する', '文字結合', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "保存先フィールド",
"modelValue": {},
"name": "saveField",
"placeholder": "",
"fieldTypes":["SINGLE_LINE_TEXT","MULTI_LINE_TEXT","RICH_TEXT"],
"hint": "対象:文字列(1行),文字列(複数行),リッチエディターのいずれか。<br>未選択/不存在/型合わない時エラー表示。",
"required":true
}
},
{
"component": "FieldInput",
"props": {
"displayName": "結合元フィールド1",
"modelValue": {},
"name": "joinField1",
"placeholder": "",
"hint": "対象外:ラベル,関連レコード一覧,スペース,罫線,グループ,テーブル,イベント的な取得対象外(例:新規追加成功前のレコード番号取得)。<br>未選択/不存在/対象外時エラー表示。",
"required":true
}
},
{
"component": "FieldInput",
"props": {
"displayName": "結合元フィールド2",
"modelValue": {},
"name": "joinField2",
"placeholder": "",
"hint": "対象外:ラベル,関連レコード一覧,スペース,罫線,グループ,テーブル,イベント的な取得対象外(例:新規追加成功前のレコード番号取得)。<br>未選択/不存在/対象外時エラー表示。",
"required":true
}
},
{
"component": "InputText",
"props": {
"displayName": "区切り文字",
"modelValue": "",
"name": "delimiter",
"placeholder": ""
}
}
]', 2, 4);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (16, '2024-05-13 04:08:44', '2024-05-13 04:08:48', 'データ処理', '指定したアプリのデータを指定した条件で集計する', 'データ処理', '[]', '[
{
"component": "AppFieldSelect",
"props": {
"displayName": "データソース",
"modelValue": {},
"name": "sources",
"placeholder": "データソースを選択してください",
"selectType": "multiple",
"fieldTypes":["CALC","CATEGORY","CREATED_TIME","DATE","DATETIME","NUMBER","SINGLE_LINE_TEXT","TIME"],
"required":true
}
},
{
"component": "ConditionInput",
"props": {
"displayName": "抽出条件",
"modelValue": "",
"name": "condition",
"placeholder": "データ抽出条件を設定してください",
"sourceType": "app",
"operatorList": [
{
"label": "=",
"value": "="
},
{
"label": "!=",
"value": "!="
},
{
"label": ">",
"value": ">"
},
{
"label": ">=",
"value": ">="
},
{
"label": "<",
"value": "<"
},
{
"label": "<=",
"value": "<="
},
{
"label": "contains",
"value": "like"
}
]
}
},
{
"component": "DataProcessing",
"props": {
"displayName": "集計処理",
"modelValue": "",
"name": "verName",
"placeholder": "データのマッピング・集計処理を設定してください",
"required":true
}
}
]', 5, 4);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (18, '2024-01-21 15:33:50.958114', '2024-01-21 15:33:50.958114', '値を取得する', 'フィールドの値を取得する', '値を取得する', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "フィールド",
"placeholder": "フィールドを選択してください",
"name": "field",
"required":true
}
},
{
"component": "InputText",
"props": {
"displayName": "結果(戻り値)",
"modelValue": "",
"name": "verName",
"placeholder": "変数名を入力してください",
"required":true
}
}
]', 3, 4);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (8, '2024-01-21 15:33:50.958114', '2024-01-21 15:33:50.958114', '正規表現チェック', 'フィールドの値が指定した正規表現かチェックする', '正規表現チェック', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "フィールド",
"placeholder": "フィールドを選択してください",
"name": "field",
"required":true
}
},
{
"component": "InputText",
"props": {
"displayName": "正規表現",
"name": "regExpression",
"placeholder": "正規表現を入力してください",
"required":true,
"rules":"[(val) => {try { return !!new RegExp(val); } catch (e) { return ''正規表現は無効です''; }} ]"
}
},
{
"component": "MuiltInputText",
"props": {
"displayName": "エラーメッセージ",
"modelValue": "",
"name": "message",
"placeholder": "エラーメッセージを入力してください",
"required":true
}
}
]', 5, 1);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (15, '2024-05-13 01:17:24', '2024-05-13 01:17:28', 'データ更新', '指定のアプリのレコードを追加または更新する', 'データ更新', '[]', '[
{
"component": "AppSelect",
"props": {
"displayName": "連携先アプリ選択",
"modelValue": {},
"name": "sources",
"placeholder": "データ連携先のアプリを選択してください",
"required":true,
"requiredMessage":"データ連携先のアプリを選択してください"
}
},
{
"component": "DataMapping",
"props": {
"displayName": "マッピング設定",
"modelValue": {},
"name": "dataMapping",
"placeholder": "データ連携のマッピングを設定してください",
"onlySourceSelect": false,
"required":true,
"requiredMessage":"データ連携のマッピングを設定してください"
}
}
]', 6, 4);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (22, '2024-06-07 10:34:50.958114', '2024-06-07 10:34:50.958114', '半角チェック', 'フィールドの値がすべて半角かチェックする', '半角チェック', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "フィールド",
"modelValue": {},
"name": "field",
"placeholder": "対象項目を選択してください",
"required":true
}
}
]', 3, 1);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (14, '2024-05-10 13:00:23.958114', '2024-05-10 13:00:23.958114', '文字数チェック', 'フィールドの値が指定された文字数かチェックする', '文字数チェック', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "フィールド",
"placeholder": "フィールドを選択してください",
"name": "field",
"required":true
}
},
{
"component": "NumInput",
"props": {
"displayName": "文字数チェック",
"name": "maxLength",
"placeholder": "制限したい文字数を入力してください",
"rules":"[val=>val>0||''0以上の数字を入力してください'']"
}
},
{
"component": "MuiltInputText",
"props": {
"displayName": "エラーメッセージ",
"modelValue": "",
"name": "message",
"placeholder": "エラーメッセージを入力してください",
"required":true
}
}
]', 6, 1);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (23, '2024-06-07 15:37:50.958114', '2024-06-07 15:37:50.958114', 'ログインユーザー取得', 'ログインユーザーのデータを取得する', 'ログインユーザー取得', '[]', '[
{
"component":"InputText",
"props":{
"displayName":"変数にセット:",
"modelValue":"",
"name":"verName",
"placeholder":"セット先の変数名を入力してください",
"required":true,
"requiredMessage":"変数名が必須です"
}
}
]', 2, 3);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (9, '2024-04-08 11:21:50.958114', '2024-04-08 11:21:50.958114', '値を挿入する', 'フィールドに値を挿入する', '値を挿入する', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "フィールド選択",
"modelValue": {},
"name": "field",
"placeholder": "値を挿入するフィールドを選択してください",
"required":true
}
},
{
"component": "ConditionInput",
"props": {
"displayName": "条件",
"modelValue": "",
"name": "condition",
"placeholder": "条件式を設定してください"
}
},
{
"component": "InputText",
"props": {
"displayName": "挿入する値、変数",
"modelValue": "",
"name": "value",
"placeholder": "変数は、変数名を直接入力ください",
"required":true
}
},
{
"component": "SelectBox",
"props": {
"displayName": "値は手入力/変数",
"options": [
"手入力",
"変数"
],
"modelValue": "",
"name": "show",
"placeholder": "",
"required":true
}
}
]', 4, 4);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (24, '2024-07-23 15:33:50.958114', '2024-07-23 15:33:50.958114', '編集可/不可', 'フィールドの編集可/不可を設定する', '編集可/不可', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "フィールド",
"modelValue": {},
"name": "field",
"fieldTypes":[
"CHECK_BOX",
"DATE",
"DATETIME",
"DROP_DOWN",
"FILE",
"GROUP_SELECT",
"LINK",
"MULTI_LINE_TEXT",
"MULTI_SELECT",
"NUMBER",
"ORGANIZATION_SELECT",
"RADIO_BUTTON",
"RICH_TEXT",
"SINGLE_LINE_TEXT",
"TIME",
"USER_SELECT"
],
"placeholder": "対象項目を選択してください",
"required":true
}
},
{
"component": "SelectBox",
"props": {
"displayName": "編集可/不可",
"options": [
"編集可",
"編集不可"
],
"modelValue": "",
"name": "editable",
"placeholder": "",
"required":true
}
},
{
"component": "ConditionInput",
"props": {
"displayName": "条件",
"modelValue": "",
"name": "condition",
"placeholder": "条件式を設定してください"
}
}
]', 3, 2);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (21, '2024-01-21 15:33:50.958114', '2024-01-21 15:33:50.958114', 'ルックアップ更新', '更新されたときにルックアップ先を同期する', 'ルックアップ更新', '[]', '[
{
"component": "AppFieldSelect",
"props": {
"displayName": "更新先選択",
"fieldTypes": [
"lookup"
],
"hint": "更新先のルックアップフィールドを選択する",
"modelValue": {},
"name": "lookupField",
"required": true
}
},
{
"component": "ConditionInput",
"props": {
"displayName": "更新条件",
"modelValue": "",
"name": "condition",
"connectProps": [
{
"key": "source",
"propName": "lookupField"
}
],
"sourceType": "app",
"operatorList": [
{
"label": "=",
"value": "="
},
{
"label": "!=",
"value": "!="
},
{
"label": ">",
"value": ">"
},
{
"label": ">=",
"value": ">="
},
{
"label": "<",
"value": "<"
},
{
"label": "<=",
"value": "<="
},
{
"label": "contains",
"value": "like"
}
],
"placeholder": "条件式を設定してください"
}
}
]', 8, 4);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (6, '2024-02-29 15:33:50.958114', '2024-02-29 15:33:50.958114', 'ボタンの配置', 'ボタンをメニュー/スペースに配置する', 'ボタンの配置', '[]', '[
{
"component": "InputText",
"props": {
"displayName": "ボタン名",
"modelValue": "",
"name": "buttonName",
"placeholder": "ボタンのラベルを入力してください",
"required":true
}
},
{
"component": "FieldInput",
"props": {
"displayName": "配置スペースを選択",
"modelValue": {},
"name": "space",
"fieldTypes":["SPACER"],
"placeholder": "ボタンを配置するスペースを選択"
}
},
{
"component": "SelectBox",
"props": {
"displayName": "追加位置",
"modelValue": "",
"name": "position",
"options": [
"一番右に追加する",
"一番左に追加する"
],
"placeholder": "追加位置を選択してください",
"required":true
}
},
{
"component": "EventSetter",
"props": {
"displayName": "イベント名",
"modelValue": "",
"name": "eventName",
"connectProps": [
{
"key": "displayName",
"propName": "buttonName"
}
],
"placeholder": "イベント名を入力してください",
"required":true
}
}
]
', 4, 2);
INSERT INTO public.action (id, create_time, update_time, name, title, subtitle, outputpoints, property, nosort, categoryid) VALUES (2, '2024-01-21 15:33:50.958114', '2024-01-21 15:33:50.958114', '自動採番する', 'レコードIDを元に指定のフォーマットに変換する', '自動採番する', '[]', '[
{
"component": "FieldInput",
"props": {
"displayName": "採番項目",
"modelValue": {},
"name": "field",
"placeholder": "採番項目を選択してください",
"fieldTypes":["SINGLE_LINE_TEXT"],
"required":true
}
},
{
"component": "InputText",
"props": {
"displayName": "フォーマット",
"modelValue": "",
"name": "format",
"placeholder": "数値書式文字列を指定します",
"rules":"[val=>!val||/^[0]+$/.test(val)||''数値書式文字列が不正です'']",
"hint": "数値書式文字列記入例:<br>ゼロ埋めと桁揃えを指定することができます。<br>使用例:\"000000\" - 整数部が6桁に満たない場合に先頭をゼロで埋めて6桁にする。"
}
},
{
"component": "InputText",
"props": {
"displayName": "前につける文字列",
"modelValue": "",
"name": "prefix",
"placeholder": "前につける文字列を入力してください",
"hint": "固定文字やJavascriptの式を`${}`内に記述することが可能です。<br>使用可能日付フォーマット関数:$format(''フォーマット式'')。<br>使用例:${$format(''yyyyMMdd'')} --現在の日付をyyyyMMdd形式を表記する"
}
},
{
"component": "InputText",
"props": {
"displayName": "後ろにつける文字列",
"modelValue": "",
"name": "suffix",
"placeholder": "後ろにつける文字列を入力してください",
"hint": "固定文字やJavascriptの式を`${}`内に記述することが可能です。<br>使用可能日付フォーマット関数:$format(''フォーマット式'')。<br>使用例:${$format(''yyyyMMdd'')} --現在の日付をyyyyMMdd形式を表記する"
}
},
{
"component": "InputText",
"props": {
"displayName": "結果(戻り値)",
"modelValue": "",
"name": "verName",
"placeholder": "変数名を入力してください",
"hint": "採番された番号の値を指定の変数名に格納する"
}
}
]', 7, 4);
--
-- TOC entry 3985 (class 0 OID 27752)
-- Dependencies: 238
-- Data for Name: category; Type: TABLE DATA; Schema: public; Owner: kabAdmin
--
INSERT INTO public.category (id, categoryname, nosort, create_time, update_time) VALUES (1, '入力チェック', 1, '2024-08-19 00:00:00', '2024-08-19 00:00:00');
INSERT INTO public.category (id, categoryname, nosort, create_time, update_time) VALUES (2, '表示・動作', 2, '2024-08-19 00:00:00', '2024-08-19 00:00:00');
INSERT INTO public.category (id, categoryname, nosort, create_time, update_time) VALUES (3, 'ユーティリティ', 4, '2024-08-19 00:00:00', '2024-08-19 00:00:00');
INSERT INTO public.category (id, categoryname, nosort, create_time, update_time) VALUES (4, 'データ操作', 3, '2024-08-19 00:00:00', '2024-08-19 00:00:00');
--
-- TOC entry 3983 (class 0 OID 27591)
-- Dependencies: 224
-- Data for Name: eventaction; Type: TABLE DATA; Schema: public; Owner: kabAdmin
--
INSERT INTO public.eventaction (id, create_time, update_time, eventid, actionid) VALUES (1, '2024-06-24 00:00:00', '2024-06-24 00:00:00', 'app.record.create.show', 1);
INSERT INTO public.eventaction (id, create_time, update_time, eventid, actionid) VALUES (2, '2024-06-24 00:00:00', '2024-06-24 00:00:00', 'app.record.create.submit.success', 1);
INSERT INTO public.eventaction (id, create_time, update_time, eventid, actionid) VALUES (3, '2024-06-24 00:00:00', '2024-06-24 00:00:00', 'app.record.detail.show', 1);
INSERT INTO public.eventaction (id, create_time, update_time, eventid, actionid) VALUES (4, '2024-06-24 00:00:00', '2024-06-24 00:00:00', 'app.record.detail.process.proceed', 1);
INSERT INTO public.eventaction (id, create_time, update_time, eventid, actionid) VALUES (5, '2024-06-24 00:00:00', '2024-06-24 00:00:00', 'app.record.edit.show', 1);
INSERT INTO public.eventaction (id, create_time, update_time, eventid, actionid) VALUES (6, '2024-06-24 00:00:00', '2024-06-24 00:00:00', 'app.record.edit.submit.success', 1);
INSERT INTO public.eventaction (id, create_time, update_time, eventid, actionid) VALUES (7, '2024-06-24 00:00:00', '2024-06-24 00:00:00', 'app.record.index.show', 1);
INSERT INTO public.eventaction (id, create_time, update_time, eventid, actionid) VALUES (8, '2024-06-24 00:00:00', '2024-06-24 00:00:00', 'app.record.index.edit.show', 1);
INSERT INTO public.eventaction (id, create_time, update_time, eventid, actionid) VALUES (9, '2024-06-24 00:00:00', '2024-06-24 00:00:00', 'app.record.index.edit.submit.success', 1);
--
-- TOC entry 3993 (class 0 OID 0)
-- Dependencies: 215
-- Name: action_id_seq; Type: SEQUENCE SET; Schema: public; Owner: kabAdmin
--
SELECT pg_catalog.setval('public.action_id_seq', 23, true);
--
-- TOC entry 3994 (class 0 OID 0)
-- Dependencies: 225
-- Name: eventaction_id_seq; Type: SEQUENCE SET; Schema: public; Owner: kabAdmin
--
SELECT pg_catalog.setval('public.eventaction_id_seq', 1, false);
--
-- TOC entry 3826 (class 2606 OID 27662)
-- Name: action action_pkey; Type: CONSTRAINT; Schema: public; Owner: kabAdmin
--
ALTER TABLE ONLY public.action
ADD CONSTRAINT action_pkey PRIMARY KEY (id);
--
-- TOC entry 3835 (class 2606 OID 27756)
-- Name: category category_pkey; Type: CONSTRAINT; Schema: public; Owner: kabAdmin
--
ALTER TABLE ONLY public.category
ADD CONSTRAINT category_pkey PRIMARY KEY (id);
--
-- TOC entry 3832 (class 2606 OID 27672)
-- Name: eventaction eventaction_pkey; Type: CONSTRAINT; Schema: public; Owner: kabAdmin
--
ALTER TABLE ONLY public.eventaction
ADD CONSTRAINT eventaction_pkey PRIMARY KEY (id);
--
-- TOC entry 3830 (class 2606 OID 27682)
-- Name: action name; Type: CONSTRAINT; Schema: public; Owner: kabAdmin
--
ALTER TABLE ONLY public.action
ADD CONSTRAINT name UNIQUE (name);
--
-- TOC entry 3827 (class 1259 OID 27689)
-- Name: ix_action_id; Type: INDEX; Schema: public; Owner: kabAdmin
--
CREATE INDEX ix_action_id ON public.action USING btree (id);
--
-- TOC entry 3828 (class 1259 OID 27690)
-- Name: ix_action_name; Type: INDEX; Schema: public; Owner: kabAdmin
--
CREATE INDEX ix_action_name ON public.action USING btree (name);
--
-- TOC entry 3833 (class 1259 OID 27697)
-- Name: ix_eventaction_id; Type: INDEX; Schema: public; Owner: kabAdmin
--
CREATE INDEX ix_eventaction_id ON public.eventaction USING btree (id);
--
-- TOC entry 3837 (class 2606 OID 27710)
-- Name: eventaction eventaction_actionid_fkey; Type: FK CONSTRAINT; Schema: public; Owner: kabAdmin
--
ALTER TABLE ONLY public.eventaction
ADD CONSTRAINT eventaction_actionid_fkey FOREIGN KEY (actionid) REFERENCES public.action(id);
--
-- TOC entry 3838 (class 2606 OID 27715)
-- Name: eventaction eventaction_eventid_fkey; Type: FK CONSTRAINT; Schema: public; Owner: kabAdmin
--
ALTER TABLE ONLY public.eventaction
ADD CONSTRAINT eventaction_eventid_fkey FOREIGN KEY (eventid) REFERENCES public.event(eventid);
--
-- TOC entry 3836 (class 2606 OID 27762)
-- Name: action fk_categoryid; Type: FK CONSTRAINT; Schema: public; Owner: kabAdmin
--
ALTER TABLE ONLY public.action
ADD CONSTRAINT fk_categoryid FOREIGN KEY (categoryid) REFERENCES public.category(id) NOT VALID;
-- Completed on 2024-08-29 11:26:44
--
-- PostgreSQL database dump complete
--