bug540 550 変数の値挿入、条件式の修正
This commit is contained in:
@@ -46,15 +46,16 @@ export class InsertValueAction implements IAction{
|
|||||||
|
|
||||||
let valueHasBlank;
|
let valueHasBlank;
|
||||||
//正規表現チェック
|
//正規表現チェック
|
||||||
valueHasBlank = inputValue.match(/(\s|\u3000)/);//半角スペース・タブ文字・改行・改ページ・全角スペースが1つ以上あるとマッチする
|
valueHasBlank = inputValue.match(/^(\s| )*$/);//値が半角スペース・タブ文字・改行・改ページ・全角スペースのみであるか
|
||||||
|
|
||||||
|
|
||||||
//値に空白文字が入っている、nullのときは、エラーチェックする
|
//値に空白文字が入っている、nullのときは、エラーチェックする
|
||||||
if(valueHasBlank !== null || inputValue === null || inputValue === ''){
|
if(valueHasBlank !== null || inputValue === null || inputValue === ''){
|
||||||
//空白文字を空白文字が非対応のフィールドに挿入しようとしている場合、例外を発生させる
|
//空白文字を空白文字が非対応のフィールドに挿入しようとしている場合、例外を発生させる
|
||||||
if(fieldType === "NUMBER" || fieldType === "DATE" || fieldType === "DATETIME" || fieldType === "TIME" || fieldType === "USER_SELECT"
|
if(fieldType === "NUMBER" || fieldType === "DATE" || fieldType === "DATETIME" || fieldType === "TIME" || fieldType === "USER_SELECT"
|
||||||
|| fieldType === "ORGANIZATION_SELECT" || fieldType === "GROUP_SELECT" || fieldType === "RADIO_BUTTON" || fieldType === "DROP_DOWN" || fieldType === "CHECK_BOX" || fieldType === "MULTI_SELECT"){
|
|| fieldType === "ORGANIZATION_SELECT" || fieldType === "GROUP_SELECT" || fieldType === "RADIO_BUTTON" || fieldType === "DROP_DOWN" || fieldType === "CHECK_BOX" || fieldType === "MULTI_SELECT"){
|
||||||
event.record[fieldCode]['error'] = "「"+fieldCode+"」"+"に挿入しようとした、値に空白文字が含まれています。"; //レコードにエラーを表示
|
event.record[fieldCode]['error'] = "「"+fieldCode+"」"+"に挿入しようとした、値は空白文字です。"; //レコードにエラーを表示
|
||||||
throw new Error("「"+fieldCode+"」"+"に挿入しようとした、値に空白文字が含まれています。「値を挿入する」コンポーネントの処理を中断しました。");
|
throw new Error("「"+fieldCode+"」"+"に挿入しようとした、値は空白文字です。「値を挿入する」コンポーネントの処理を中断しました。");
|
||||||
|
|
||||||
//空白文字を必須項目フィールドに挿入しようとしている場合、例外を発生させる
|
//空白文字を必須項目フィールドに挿入しようとしている場合、例外を発生させる
|
||||||
}else if(fieldRequired){
|
}else if(fieldRequired){
|
||||||
@@ -78,8 +79,8 @@ export class InsertValueAction implements IAction{
|
|||||||
//正規表現チェック
|
//正規表現チェック
|
||||||
for(let i =0;i<inputValueArray.length;i++){
|
for(let i =0;i<inputValueArray.length;i++){
|
||||||
//配列の要素にnullがないか、空白文字が値に含まれていないかチェックする
|
//配列の要素にnullがないか、空白文字が値に含まれていないかチェックする
|
||||||
if (inputValueArray[i] !== null && inputValueArray[i] !== undefined && inputValueArray[i] !== ""){
|
if (inputValueArray[i] !== null && inputValueArray[i] !== undefined && inputValueArray[i] !== "" && typeof inputValueArray[i] === "string"){
|
||||||
variableHasBlank = inputValueArray[i].match(/(\s|\u3000)/);//半角スペース・タブ文字・改行・改ページ・全角スペースが1つ以上あるとマッチする
|
variableHasBlank = inputValueArray[i].match(/^(\s| )*$/);//値が半角スペース・タブ文字・改行・改ページ・全角スペースのみであるか
|
||||||
}else{
|
}else{
|
||||||
variableHasNull = true;
|
variableHasNull = true;
|
||||||
}
|
}
|
||||||
@@ -90,8 +91,8 @@ export class InsertValueAction implements IAction{
|
|||||||
//空白文字を空白文字が非対応のフィールドに挿入しようとしている場合、例外を発生させる
|
//空白文字を空白文字が非対応のフィールドに挿入しようとしている場合、例外を発生させる
|
||||||
if(fieldType === "NUMBER" || fieldType === "DATE" || fieldType === "DATETIME" || fieldType === "TIME" || fieldType === "USER_SELECT"
|
if(fieldType === "NUMBER" || fieldType === "DATE" || fieldType === "DATETIME" || fieldType === "TIME" || fieldType === "USER_SELECT"
|
||||||
|| fieldType === "ORGANIZATION_SELECT" || fieldType === "GROUP_SELECT" || fieldType === "RADIO_BUTTON" || fieldType === "DROP_DOWN" || fieldType === "CHECK_BOX" || fieldType === "MULTI_SELECT"){
|
|| fieldType === "ORGANIZATION_SELECT" || fieldType === "GROUP_SELECT" || fieldType === "RADIO_BUTTON" || fieldType === "DROP_DOWN" || fieldType === "CHECK_BOX" || fieldType === "MULTI_SELECT"){
|
||||||
event.record[fieldCode]['error'] = "「"+fieldCode+"」"+"に挿入しようとした、変数の値に空白文字が含まれています。"; //レコードにエラーを表示
|
event.record[fieldCode]['error'] = "「"+fieldCode+"」"+"に挿入しようとした、変数の値は空白文字です。"; //レコードにエラーを表示
|
||||||
throw new Error("「"+fieldCode+"」"+"に挿入しようとした、変数の値に空白文字が含まれています。「値を挿入する」コンポーネントの処理を中断しました。");
|
throw new Error("「"+fieldCode+"」"+"に挿入しようとした、変数の値は空白文字です。「値を挿入する」コンポーネントの処理を中断しました。");
|
||||||
|
|
||||||
//空白文字を必須項目フィールドに挿入しようとしている場合、例外を発生させる
|
//空白文字を必須項目フィールドに挿入しようとしている場合、例外を発生させる
|
||||||
}else if(fieldRequired){
|
}else if(fieldRequired){
|
||||||
@@ -152,7 +153,7 @@ export class InsertValueAction implements IAction{
|
|||||||
*/
|
*/
|
||||||
checkInputTime(inputValue :string,fieldCode :string,event :any): boolean{
|
checkInputTime(inputValue :string,fieldCode :string,event :any): boolean{
|
||||||
//正規表現チェック
|
//正規表現チェック
|
||||||
let timeFormat =inputValue.match(/^([0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/);
|
let timeFormat =inputValue.match(/^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/);
|
||||||
|
|
||||||
//正規表現チェック確認
|
//正規表現チェック確認
|
||||||
if(timeFormat === null){
|
if(timeFormat === null){
|
||||||
@@ -352,8 +353,13 @@ export class InsertValueAction implements IAction{
|
|||||||
//変数の値
|
//変数の値
|
||||||
let variableValue = [];
|
let variableValue = [];
|
||||||
|
|
||||||
|
//ユーザーオブジェクト挿入できないフィールド(日付、数値)を選択している場合、エラーを出す
|
||||||
|
if(fieldType === "NUMBER" || fieldType === "DATE" || fieldType === "DATETIME" || fieldType === "TIME"){
|
||||||
|
throw new Error("「"+fieldCode+"」"+"フィールドには、ユーザー情報を挿入できません。処理を中断しました。");
|
||||||
|
}
|
||||||
|
|
||||||
//ユーザー選択フィールドに挿入時、ユーザーオブジェクトのcodeを代入する
|
//ユーザー選択フィールドに挿入時、ユーザーオブジェクトのcodeを代入する
|
||||||
if(fieldType.includes('USER_SELECT')){
|
if(fieldType === 'USER_SELECT'){
|
||||||
//変数の値取得
|
//変数の値取得
|
||||||
if(!Array.isArray(objectValue)){
|
if(!Array.isArray(objectValue)){
|
||||||
variableValue.push(objectValue.code);
|
variableValue.push(objectValue.code);
|
||||||
@@ -370,7 +376,7 @@ export class InsertValueAction implements IAction{
|
|||||||
|| inputValue.includes('.language') || inputValue.includes('.mobilePhone') || inputValue.includes('.phone') || inputValue.includes('.url')){
|
|| inputValue.includes('.language') || inputValue.includes('.mobilePhone') || inputValue.includes('.phone') || inputValue.includes('.url')){
|
||||||
|
|
||||||
//値を挿入する変数名取得
|
//値を挿入する変数名取得
|
||||||
let objectPropertyName = inputValue.substr(inputValue.indexOf('.') + 1);
|
let objectPropertyName = inputValue.split('.')[1];
|
||||||
if(!Array.isArray(objectValue)){
|
if(!Array.isArray(objectValue)){
|
||||||
variableValue.push(objectValue[objectPropertyName]);
|
variableValue.push(objectValue[objectPropertyName]);
|
||||||
}else{
|
}else{
|
||||||
@@ -420,18 +426,9 @@ export class InsertValueAction implements IAction{
|
|||||||
}
|
}
|
||||||
|
|
||||||
const fieldColumnIndex=1;
|
const fieldColumnIndex=1;
|
||||||
const valueColumnIndex=3;
|
|
||||||
|
|
||||||
//プロパティで選択されたフィールド
|
//プロパティで選択されたフィールド
|
||||||
const field=this.actionProps[fieldColumnIndex].props.modelValue.type;
|
const field=this.actionProps[fieldColumnIndex].props.modelValue.type;
|
||||||
//プロパティの挿入する値
|
|
||||||
const value=this.actionProps[valueColumnIndex].props.modelValue;
|
|
||||||
|
|
||||||
//条件式の結果を取得
|
|
||||||
const conditionResult = this.getConditionResult(context);
|
|
||||||
if(!conditionResult){
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//プロパティの値を挿入するフィールドが未選択の場合、例外を発生させる
|
//プロパティの値を挿入するフィールドが未選択の場合、例外を発生させる
|
||||||
if(field === null){
|
if(field === null){
|
||||||
@@ -465,55 +462,83 @@ export class InsertValueAction implements IAction{
|
|||||||
let variableValue :any;
|
let variableValue :any;
|
||||||
//挿入する値を格納する
|
//挿入する値を格納する
|
||||||
let fieldValueArray = [];
|
let fieldValueArray = [];
|
||||||
let objectValue :any;
|
|
||||||
let notInputError;
|
let notInputError;
|
||||||
|
//contextに存在する変数名を格納する
|
||||||
|
let contextHasVariablesNames;
|
||||||
|
|
||||||
//変数の場合、値が取得できるかチェック
|
//変数の場合、値が取得できるかチェック
|
||||||
if(insertValueType === "変数" && conditionResult){
|
if(insertValueType === "変数"){
|
||||||
|
|
||||||
//変数の値を呼び出して代入する
|
//変数の値を呼び出して代入する
|
||||||
const getContextVarByPath = (obj: any, path: string) => {
|
const getContextVarByPath = (obj: any, path: string) => {
|
||||||
return path.split(".").reduce((o, k) => (o || {})[k], obj);
|
return path.split(".").reduce((o, k) => (o || {})[k], obj);
|
||||||
};
|
};
|
||||||
//オブジェクト変数で、値の指定がある場合は、変数名のみ取得
|
|
||||||
var variablesName = fieldValue.substr(0, fieldValue.indexOf('.'));
|
//contextに存在する変数名を全て取得する
|
||||||
if(variablesName){
|
contextHasVariablesNames = Object.keys(context.variables);
|
||||||
//変数の値取得
|
//contextに変数が1つも存在しない場合、エラーを出す
|
||||||
objectValue = getContextVarByPath(context.variables,variablesName)
|
if(contextHasVariablesNames.length === 0){
|
||||||
|
throw new Error("「"+fieldCode+"」"+"フィールドに挿入しようとした変数は、存在しないため、処理を中断しました。");
|
||||||
|
}
|
||||||
|
|
||||||
|
let inputVariablesName;
|
||||||
|
//入力値がオブジェクト変数の変数名であり、プロパティの指定がある場合、変数名のみ取得
|
||||||
|
if (fieldValue.includes('.')) {
|
||||||
|
// '.'より前の文字を抽出
|
||||||
|
inputVariablesName = fieldValue.split('.')[0];
|
||||||
} else {
|
} else {
|
||||||
//変数の値取得
|
// '.'が含まれていない場合、そのまま返す
|
||||||
objectValue = getContextVarByPath(context.variables,fieldValue)
|
inputVariablesName = fieldValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//入力された変数名が、contextに不存在の場合、エラーを表示する
|
||||||
|
for(let i=0;i< contextHasVariablesNames.length;i++){
|
||||||
|
let inputVariablesExist;
|
||||||
|
if(inputVariablesName === contextHasVariablesNames[i]){
|
||||||
|
inputVariablesExist = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!inputVariablesExist){
|
||||||
|
throw new Error("「"+fieldCode+"」"+"フィールドに挿入しようとした変数は、存在しないため、処理を中断しました。");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inputVariablesName){
|
||||||
|
//入力された変数名の値を取得
|
||||||
|
variableValue = getContextVarByPath(context.variables,inputVariablesName)
|
||||||
}
|
}
|
||||||
|
|
||||||
//文字列型のフィールド以外に、空白文字の変数の値を挿入する場合、エラーを出す
|
//文字列型のフィールド以外に、空白文字の変数の値を挿入する場合、エラーを出す
|
||||||
if(objectValue === "" || objectValue === null){
|
if(variableValue === "" || variableValue === null){
|
||||||
if(fieldType === "NUMBER" || fieldType === "DATE" || fieldType === "DATETIME" || fieldType === "TIME" || fieldType === "USER_SELECT"
|
if(fieldType === "NUMBER" || fieldType === "DATE" || fieldType === "DATETIME" || fieldType === "TIME" || fieldType === "USER_SELECT"
|
||||||
|| fieldType === "ORGANIZATION_SELECT" || fieldType === "GROUP_SELECT" || fieldType === "RADIO_BUTTON" || fieldType === "DROP_DOWN" || fieldType === "CHECK_BOX" || fieldType === "MULTI_SELECT"){
|
|| fieldType === "ORGANIZATION_SELECT" || fieldType === "GROUP_SELECT" || fieldType === "RADIO_BUTTON" || fieldType === "DROP_DOWN" || fieldType === "CHECK_BOX" || fieldType === "MULTI_SELECT"){
|
||||||
throw new Error("「"+fieldCode+"」"+"フィールドに挿入しようとした変数は、値がnullのため、処理を中断しました。");
|
throw new Error("「"+fieldCode+"」"+"フィールドに挿入しようとした変数は、値がnullのため、処理を中断しました。");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//オブジェクト変数の場合、プロパティを取得し、何のオブジェクト変数か判断する
|
|
||||||
if(objectValue !== null && typeof objectValue === 'object'){
|
//変数がオブジェクトの場合、プロパティを取得し、何のオブジェクトか判断する
|
||||||
|
if(typeof variableValue === 'object'){
|
||||||
let objectProperties=[]
|
let objectProperties=[]
|
||||||
|
|
||||||
if(objectValue.length > 0){
|
if(variableValue.length > 0){
|
||||||
objectProperties=Object.keys(objectValue[0]);
|
objectProperties=Object.keys(variableValue[0]);
|
||||||
}else{
|
}else{
|
||||||
objectProperties = Object.keys(objectValue);
|
objectProperties = Object.keys(variableValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
//(ログインユーザー・値取得のコンポーネントからの)ユーザーオブジェクトを挿入時、挿入先フィールドによって、値を指定する
|
//(ログインユーザー・値取得のコンポーネントからの)ユーザーオブジェクトを挿入時、挿入先フィールドによって、値を指定する
|
||||||
if(objectProperties.includes('code') && objectProperties.includes('name')){
|
if(objectProperties.includes('code') && objectProperties.includes('name')){
|
||||||
objectValue=this.setValueOfUserObject(fieldValue,objectValue,fieldType,fieldCode);
|
variableValue=this.setValueOfUserObject(fieldValue,variableValue,fieldType,fieldCode);
|
||||||
|
|
||||||
//ユーザーオブジェクトから取得した値を、fieldValueArrayに代入
|
//ユーザーオブジェクトから取得した値を、fieldValueArrayに代入
|
||||||
for (const value of objectValue) {
|
for (const value of variableValue) {
|
||||||
fieldValueArray.push(value);
|
fieldValueArray.push(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
//オブジェクト変数でない場合、変数をfieldValueArrayに代入
|
//オブジェクト変数でない場合、変数をfieldValueArrayに代入
|
||||||
variableValue = context.variables[fieldValue];
|
variableValue = context.variables[fieldValue]
|
||||||
fieldValueArray[0] = variableValue;
|
fieldValueArray[0] = variableValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -525,7 +550,7 @@ export class InsertValueAction implements IAction{
|
|||||||
//変数の値にエラー(空文字・空白文字の混入)がないことをチェックする
|
//変数の値にエラー(空文字・空白文字の混入)がないことをチェックする
|
||||||
notInputError=this.checkVariableValueBlank(fieldType,fieldValueArray,fieldCode,fieldRequired,event);
|
notInputError=this.checkVariableValueBlank(fieldType,fieldValueArray,fieldCode,fieldRequired,event);
|
||||||
|
|
||||||
//手入力の場合、プロパティ挿入する値をfieldArrayに代入
|
//手入力の値を挿入する場合、挿入する値をfieldArrayに代入
|
||||||
}else{
|
}else{
|
||||||
fieldValueArray.push(fieldValue);
|
fieldValueArray.push(fieldValue);
|
||||||
//入力エラー(空白文字の混入)がないことをチェック
|
//入力エラー(空白文字の混入)がないことをチェック
|
||||||
@@ -538,7 +563,7 @@ export class InsertValueAction implements IAction{
|
|||||||
let correctValues :any[] = [];
|
let correctValues :any[] = [];
|
||||||
|
|
||||||
//条件式の結果がtrue、入力エラー(空白文字の混入)がない場合、挿入する値をフィールドタイプ別にチェックする
|
//条件式の結果がtrue、入力エラー(空白文字の混入)がない場合、挿入する値をフィールドタイプ別にチェックする
|
||||||
if(conditionResult && notInputError){
|
if(notInputError){
|
||||||
|
|
||||||
//文字列型のフィールドに挿入しようとしている値が適切の場合、correctFormattedValueに代入する
|
//文字列型のフィールドに挿入しようとしている値が適切の場合、correctFormattedValueに代入する
|
||||||
if(fieldType === "SINGLE_LINE_TEXT" || fieldType === "MULTI_LINE_TEXT" || fieldType === "RICH_TEXT" || fieldType === "LINK" ){
|
if(fieldType === "SINGLE_LINE_TEXT" || fieldType === "MULTI_LINE_TEXT" || fieldType === "RICH_TEXT" || fieldType === "LINK" ){
|
||||||
@@ -620,6 +645,7 @@ export class InsertValueAction implements IAction{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const conditionResult = this.getConditionResult(context);
|
||||||
//保存成功イベントの場合、kintone async/await による非同期処理でフィールドに値を挿入する
|
//保存成功イベントの場合、kintone async/await による非同期処理でフィールドに値を挿入する
|
||||||
if(!event.type.includes('success')){
|
if(!event.type.includes('success')){
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user