merge with dev

This commit is contained in:
2024-06-10 11:33:42 +09:00
13 changed files with 277 additions and 15 deletions

View File

@@ -8,7 +8,8 @@
"name": "kintone-addins",
"version": "0.0.0",
"dependencies": {
"jquery": "^3.7.1"
"jquery": "^3.7.1",
"yarn": "^1.22.22"
},
"devDependencies": {
"@types/jquery": "^3.5.24",
@@ -795,6 +796,19 @@
"optional": true
}
}
},
"node_modules/yarn": {
"version": "1.22.22",
"resolved": "https://registry.npmjs.org/yarn/-/yarn-1.22.22.tgz",
"integrity": "sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==",
"hasInstallScript": true,
"bin": {
"yarn": "bin/yarn.js",
"yarnpkg": "bin/yarn.js"
},
"engines": {
"node": ">=4.0.0"
}
}
}
}

View File

@@ -6,7 +6,7 @@
"scripts": {
"dev": "tsc && set \"SOURCE_MAP=true\" && vite build && vite preview",
"build": "tsc && vite build && xcopy dist\\*.js ..\\..\\backend\\Temp\\ /E /I /Y",
"build:dev":"tsc && set \"SOURCE_MAP=true\" && vite build && xcopy dist\\*.js ..\\..\\backend\\Temp\\ /E /I /Y",
"build:dev": "tsc && set \"SOURCE_MAP=true\" && vite build && xcopy dist\\*.js ..\\..\\backend\\Temp\\ /E /I /Y",
"preview": "vite preview",
"ngrok":"ngrok http http://localhost:4173/",
"vite":"vite dev"
@@ -19,6 +19,7 @@
"vite": "^4.4.5"
},
"dependencies": {
"jquery": "^3.7.1"
"jquery": "^3.7.1",
"yarn": "^1.22.22"
}
}

View File

@@ -0,0 +1,75 @@
import { actionAddins } from ".";
import { IAction,IActionResult, IActionNode, IActionProperty, IField} from "../types/ActionTypes";
/**
* アクションの属性定義
*/
interface IStrCountCheckProps{
field:IField;//チェックするフィールドの対象
message:string;//エラーメッセージ
maxLength:number;//
}
/**
* 正規表現チェックアクション
*/
export class StrCountCheckAciton implements IAction{
name: string;
actionProps: IActionProperty[];
props:IStrCountCheckProps;
constructor(){
this.name="文字数チェック";
this.actionProps=[];
this.props={
field:{code:''},
message:'',
maxLength:0
}
//アクションを登録する
this.register();
}
/**
* アクションの実行を呼び出す
* @param actionNode
* @param event
* @returns
*/
async process(actionNode:IActionNode,event:any):Promise<IActionResult> {
let result={
canNext:true,
result:false
};
try{
//属性設定を取得する
this.actionProps=actionNode.actionProps;
if (!('field' in actionNode.ActionValue) && !('message' in actionNode.ActionValue) && !('strExpression'in actionNode.ActionValue)) {
return result
}
this.props = actionNode.ActionValue as IStrCountCheckProps;
//条件式の計算結果を取得
const record = event.record;
const value = record[this.props.field.code].value;
const maxLength = this.props.maxLength;
if(value === undefined || value === '' ){
return result;
}else if(maxLength < value.length){
record[this.props.field.code].error = this.props.message;
}else{
result= {
canNext:true,
result:true
}
}
return result;
}catch(error){
event.error=error;
console.error(error);
result.canNext=false;
return result;
}
};
register(): void {
actionAddins[this.name]=this;
}
}
new StrCountCheckAciton();

View File

@@ -0,0 +1,80 @@
import { actionAddins } from ".";
import { IAction, IActionResult, IActionNode, IActionProperty, IField } from "../types/ActionTypes";
/**
* アクションの属性定義
*/
interface IMailCheckProps {
field: IField;//チェックするフィールドの対象
message: string;//エラーメッセージ
emailCheck:string;
}
/**
* メールアドレスチェックアクション
*/
export class MailCheckAction implements IAction {
name: string;
actionProps: IActionProperty[];
props: IMailCheckProps;
constructor() {
this.name = "メールアドレスチェック";
this.actionProps = [];
this.props = {
field: { code: '' },
message: '',
emailCheck:''
}
//アクションを登録する
this.register();
}
/**
* アクションの実行を呼び出す
* @param actionNode
* @param event
* @returns
*/
async process(actionNode: IActionNode, event: any): Promise<IActionResult> {
let result = {
canNext: true,
result: false
};
try {
//属性設定を取得する
this.actionProps = actionNode.actionProps;
if (!('field' in actionNode.ActionValue) && !('message' in actionNode.ActionValue) && !('emailCheck' in actionNode.ActionValue)) {
return result
}
this.props = actionNode.ActionValue as IMailCheckProps;
//条件式の計算結果を取得
const record = event.record;
const value = record[this.props.field.code].value;
if (this.props.emailCheck === '厳格') {
if (!/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(value)) {
record[this.props.field.code].error = this.props.message;
}
} else if (this.props.emailCheck === 'ゆるめ') {
if (!/^[^@]+@[^@]+$/.test(value)) {
record[this.props.field.code].error = this.props.message;
}
} else {
result = {
canNext: true,
result: true
}
}
return result;
} catch (error) {
event.error = error;
console.error(error);
result.canNext = false;
return result;
}
};
register(): void {
actionAddins[this.name] = this;
}
}
new MailCheckAction();

View File

@@ -0,0 +1,72 @@
import { actionAddins } from ".";
import { IAction,IActionResult, IActionNode, IActionProperty, IField} from "../types/ActionTypes";
/**
* アクションの属性定義
*/
interface IRegularCheckProps{
field:IField;//チェックするフィールドの対象
message:string;//エラーメッセージ
regExpression:string;//正規表現式
}
/**
* 正規表現チェックアクション
*/
export class RegularCheckAction implements IAction{
name: string;
actionProps: IActionProperty[];
props:IRegularCheckProps;
constructor(){
this.name="正規表現チェック";
this.actionProps=[];
this.props={
field:{code:''},
message:'',
regExpression:''
}
//アクションを登録する
this.register();
}
/**
* アクションの実行を呼び出す
* @param actionNode
* @param event
* @returns
*/
async process(actionNode:IActionNode,event:any):Promise<IActionResult> {
let result={
canNext:true,
result:false
};
try{
//属性設定を取得する
this.actionProps=actionNode.actionProps;
if (!('field' in actionNode.ActionValue) && !('message' in actionNode.ActionValue) && !('regExpression'in actionNode.ActionValue)) {
return result
}
this.props = actionNode.ActionValue as IRegularCheckProps;
//条件式の計算結果を取得
const record = event.record;
const value = record[this.props.field.code].value;
const regex = new RegExp(this.props.regExpression);
if(!regex.test(value)){
record[this.props.field.code].error=this.props.message;
}else{
result= {
canNext:true,
result:true
}
}
return result;
}catch(error){
event.error=error;
console.error(error);
result.canNext=false;
return result;
}
};
register(): void {
actionAddins[this.name]=this;
}
}
new RegularCheckAction();

View File

@@ -6,6 +6,9 @@ import '../actions/field-shown';
import '../actions/error-show';
import '../actions/button-add';
import '../actions/condition-action';
import '../actions/regular-check';
import '../actions/mail-check';
import '../actions/counter-check';
import { ActionFlow,IActionFlow, IActionResult,IContext } from "./ActionTypes";
export class ActionProcess{

View File

@@ -15,8 +15,8 @@
/* Linting */
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noUnusedLocals": false,
"noUnusedParameters": false,
"noFallthroughCasesInSwitch": true,
"esModuleInterop": true
},

View File

@@ -221,3 +221,8 @@ vite@^4.4.5:
rollup "^3.27.1"
optionalDependencies:
fsevents "~2.3.2"
yarn@^1.22.22:
version "1.22.22"
resolved "https://registry.npmjs.org/yarn/-/yarn-1.22.22.tgz"
integrity sha512-prL3kGtyG7o9Z9Sv8IPfBNrWTDmXB4Qbes8A9rEzt6wkJV8mUvoirjU0Mp3GGAU06Y0XQyA3/2/RQFVuK7MTfg==