From 79ae301ba96a3e52a7bc19757bacfa3c1c94dd1f Mon Sep 17 00:00:00 2001 From: Damien Nicolleau Date: Mon, 3 Mar 2025 19:48:58 +0100 Subject: [PATCH] ref #850 Added move users to group feature --- .../adminDashboardUsersWithinGroups.yaml | 180 +++++++-- .../moveUserToGroupForm.yaml | 12 +- .../admin_users_get_by_group_v2.yaml | 2 +- .../sequences/admin_users_of_group_get.yaml | 366 ++++++++++++++---- 4 files changed, 448 insertions(+), 112 deletions(-) diff --git a/_c8oProject/mobilePages/adminDashboardUsersWithinGroups.yaml b/_c8oProject/mobilePages/adminDashboardUsersWithinGroups.yaml index 30e2e0bc..19b723f7 100644 --- a/_c8oProject/mobilePages/adminDashboardUsersWithinGroups.yaml +++ b/_c8oProject/mobilePages/adminDashboardUsersWithinGroups.yaml @@ -8,6 +8,7 @@ scriptContent: '/*Begin_c8o_PageImport*/ import { C8Oforms_AddUserToGroupForm } from ''../../components/c8oforms.addusertogroupform/c8oforms-addusertogroupform''; import { C8Oforms_AddGroupForm } from ''../../components/c8oforms.addgroupform/c8oforms-addgroupform''; + import { C8Oforms_MoveUserToGroupForm } from ''../../components/c8oforms.moveusertogroupform/c8oforms-moveusertogroupform'' /*End_c8o_PageImport*/ /*Begin_c8o_PageDeclaration*/ public alertController: AlertController; @@ -190,6 +191,7 @@ scriptContent: return; } else if(bulkOperation == "deleteUsersGroup"){ + console.log(docs) for(let i = 0; i < docs.length;i++) { args = {meta: JSON.stringify(docs[i])}; sequence = "C8Oforms.admin_user_delete_from_group"; @@ -202,6 +204,8 @@ scriptContent: await this.presentToast(this.translate.instant(errorMsg), ''toastError''); } } + // console.log(this.local.data); + return; } else if(bulkOperation == "updateUsersGroup") { sequence = "C8Oforms.admin_users_move_in_group"; @@ -267,7 +271,7 @@ scriptContent: } async showModal(grid = "userToGroup"){ const modal = await this.modalController.create({ - component: (grid == "userToGroup") ? C8Oforms_AddUserToGroupForm : C8Oforms_AddGroupForm, + component: (grid == "userToGroup") ? C8Oforms_AddUserToGroupForm : ((grid == ''moveUserToGroup'') ? C8Oforms_MoveUserToGroupForm : C8Oforms_AddGroupForm), cssClass: "modalAddGroup" }); @@ -1333,32 +1337,54 @@ title: Title for adminDashboardUsersWithinGroups attrName: (RowClicked) comment: Fired when a row is clicked. Data will be the agGrid event eventName: RowClicked - ↓CustomAsyncAction [ngx.components.UICustomAsyncAction-1740565225527]: - actionValue: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.common.FormatedContent - - com.twinsoft.convertigo.beans.common.FormatedContent: - →: | - ' try { - // console.log(event); - // if (event?.data?.group.indexOf(page.translate.instant("all_users")) != -1) { - // page.local.data.result.childrenLabels[2].hide = false; - // } else { - // page.local.data.result.childrenLabels[2].hide = true; - // } - console.log(event.data); - page.valuesSelected = event?.data?.children; - page.groupSelected = event?.data?.group; - page.global.groupSelected = event?.data?.group; - page.local.selected2 = page.myaggrid2?.agGrid?.api?.getSelectedNodes({ startRow: 0, endRow: 1 }).length > 0; - page.global.selectedUsers = page.myaggrid2?.agGrid?.api?.getSelectedNodes(); - page.ref.detectChanges(); - } catch (e) { - - } finally { - return; - } - ' + ↓CallSequence [ngx.components.UIDynamicAction-1741002738792]: + beanData: '{"ionBean":"CallSequenceAction","requestable":"plain:C8Oforms.admin_users_of_group_get"}' + ↓group [ngx.components.UIControlVariable-1741002762144]: + comment: new variable + varValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType + - MobileSmartSourceType: 'source:{"filter":"Action","project":"C8Oforms","input":"","model":{"data":[{"priority":1740488756848,"rootEvent":true,"pageLocals":false}],"path":"?.out","prefix":"(stack[''root'']?.out?.data?.group != this.translate.instant(''any_group'')) ? ","suffix":"?.data?.group : ''any_group''","custom":"","useCustom":false}}' + ↓_use_key [ngx.components.UIControlVariable-1741007450883]: + varValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType + - MobileSmartSourceType: plain:group + ↓CustomAsyncAction [ngx.components.UICustomAsyncAction-1740565225527]: + actionValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.common.FormatedContent + - com.twinsoft.convertigo.beans.common.FormatedContent: + →: | + ' try { + // console.log(event); + // if (event?.data?.group.indexOf(page.translate.instant("all_users")) != -1) { + // page.local.data.result.childrenLabels[2].hide = false; + // } else { + // page.local.data.result.childrenLabels[2].hide = true; + // } + // console.log(vars); + if (page.translate.instant(''all_users'') != event?.data?.group) { + page.valuesSelected = vars.children.users; + } else { + page.valuesSelected = event?.data?.children; + } + page.groupSelected = event?.data?.group; + page.global.groupSelected = event?.data?.group; + page.local.selected2 = page.myaggrid2?.agGrid?.api?.getSelectedNodes({ startRow: 0, endRow: 1 }).length > 0; + page.global.selectedUsers = page.myaggrid2?.agGrid?.api?.getSelectedNodes(); + page.ref.detectChanges(); + } catch (e) { + + } finally { + return; + } + ' + ↓children [ngx.components.UIControlVariable-1741002827074]: + varValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType + - MobileSmartSourceType: source:{"filter":"Action","project":"C8Oforms","input":"","model":{"data":[{"priority":1741002738792,"rootEvent":false,"pageLocals":false},{"priority":1740488756848,"rootEvent":true,"pageLocals":false}],"path":"?.out?.object","prefix":"","suffix":"","custom":"","useCustom":false}} ↓Event2 [ngx.components.UIControlEvent-1740488756851]: attrName: (RowSelected) comment: Fired when a row is selected. Data will be the agGrid event @@ -1924,8 +1950,44 @@ title: Title for adminDashboardUsersWithinGroups - ↑classname: com.twinsoft.convertigo.beans.common.FormatedContent - com.twinsoft.convertigo.beans.common.FormatedContent: →: | - page.performBulk("deleteUsersGroup", "group_sure_delete_rows","group_delete_row_confirm", "group_delete_row_error", "cancel_pwamsg", "Supprimer"); + page.performBulk("deleteUsersGroup", "group_sure_delete_rows","group_delete_row_confirm", "group_delete_row_error", "cancel_pwamsg", "Supprimer"); + ↓CallSequence [ngx.components.UIDynamicAction-1741022313954]: + beanData: '{"ionBean":"CallSequenceAction","requestable":"plain:C8Oforms.admin_users_of_group_get"}' + ↓group [ngx.components.UIControlVariable-1741022313957]: + comment: new variable + varValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType + - MobileSmartSourceType: script:this.groupSelected + ↓_use_key [ngx.components.UIControlVariable-1741022313960]: + varValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType + - MobileSmartSourceType: plain:group + ↓CustomAsyncAction [ngx.components.UICustomAsyncAction-1741022313963]: + actionValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.common.FormatedContent + - com.twinsoft.convertigo.beans.common.FormatedContent: + →: | + ' try { + console.log(vars.children.users); + page.valuesSelected = vars.children.users; + page.local.selected2 = page.myaggrid2?.agGrid?.api?.getSelectedNodes({ startRow: 0, endRow: 1 }).length > 0; + page.global.selectedUsers = page.myaggrid2?.agGrid?.api?.getSelectedNodes(); + page.ref.detectChanges(); + } catch (e) { + + } finally { + return; + } + ' + ↓children [ngx.components.UIControlVariable-1741022313966]: + varValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType + - MobileSmartSourceType: source:{"filter":"Action","project":"C8Oforms","input":"","model":{"data":[{"priority":1741022313954,"rootEvent":false,"pageLocals":false},{"priority":1740592291284,"rootEvent":true,"pageLocals":false},{"priority":1740592291287,"rootEvent":false,"pageLocals":false}],"path":"?.out?.object","prefix":"","suffix":"","custom":"","useCustom":false}} ↓ButtonMoveUsersGroup [ngx.components.UIDynamicElement-1740592291290]: beanData: | '{ @@ -1962,6 +2024,65 @@ title: Title for adminDashboardUsersWithinGroups page.performBulk("delete", "sure_delete_rows","delete_row_confirm", "delete_row_error", "cancel_pwamsg", "Supprimer"); isEnabled: false + ↓showModalMoveUserToGroup [ngx.components.UICustomAsyncAction-1741024254719]: + actionValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.common.FormatedContent + - com.twinsoft.convertigo.beans.common.FormatedContent: + →: | + try { + page.showModal("moveUserToGroup"); + } catch (e) { + console.error("error showing addUser", e); + } finally { + return; + } + + ↓CallSequence [ngx.components.UIDynamicAction-1741024566170]: + beanData: '{"ionBean":"CallSequenceAction","requestable":"plain:C8Oforms.admin_users_of_group_get"}' + isEnabled: false + ↓group [ngx.components.UIControlVariable-1741024566173]: + comment: new variable + varValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType + - MobileSmartSourceType: script:this.groupSelected + ↓_use_key [ngx.components.UIControlVariable-1741024566176]: + varValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType + - MobileSmartSourceType: plain:group + ↓CustomAsyncAction [ngx.components.UICustomAsyncAction-1741024566179]: + actionValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.common.FormatedContent + - com.twinsoft.convertigo.beans.common.FormatedContent: + →: | + ' try { + console.log(vars.children.users); + page.valuesSelected = vars.children.users; + page.local.selected2 = page.myaggrid2?.agGrid?.api?.getSelectedNodes({ startRow: 0, endRow: 1 }).length > 0; + page.global.selectedUsers = page.myaggrid2?.agGrid?.api?.getSelectedNodes(); + page.ref.detectChanges(); + } catch (e) { + + } finally { + return; + } + ' + ↓children [ngx.components.UIControlVariable-1741024566182]: + varValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.ngx.components.MobileSmartSourceType + - MobileSmartSourceType: source:{"filter":"Action","project":"C8Oforms","input":"","model":{"data":[{"priority":1741024566170,"rootEvent":false,"pageLocals":false},{"priority":1740592291284,"rootEvent":true,"pageLocals":false},{"priority":1740592291287,"rootEvent":false,"pageLocals":false}],"path":"?.out?.object","prefix":"","suffix":"","custom":"","useCustom":false}} + ↓loadGridData [ngx.components.UICustomAsyncAction-1741024566185]: + actionValue: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.common.FormatedContent + - com.twinsoft.convertigo.beans.common.FormatedContent: + →: | + page.loadGridData(); + ↓ButtonAddUsersToGroup [ngx.components.UIDynamicElement-1740592291305]: beanData: | '{ @@ -1998,7 +2119,7 @@ title: Title for adminDashboardUsersWithinGroups page.performBulk("delete", "sure_delete_rows","delete_row_confirm", "delete_row_error", "cancel_pwamsg", "Supprimer"); isEnabled: false - ↓showModalUser [ngx.components.UICustomAsyncAction-1740592291320]: + ↓showModalAddUsersToGroup [ngx.components.UICustomAsyncAction-1740592291320]: actionValue: - xmlizable: - ↑classname: com.twinsoft.convertigo.beans.common.FormatedContent @@ -2296,6 +2417,7 @@ title: Title for adminDashboardUsersWithinGroups console.log(page.myaggrid2?.agGrid?.api, " ",event); page.local.selected = page.myaggrid2?.agGrid?.api?.getSelectedNodes({ startRow: 0, endRow: 1 }).length > 0; page.global.selectedUsers = page.myaggrid2?.agGrid?.api?.getSelectedNodes(); + console.log(page.global.selectedUsers); page.ref.detectChanges(); return; } catch (e) { diff --git a/_c8oProject/mobileSharedComponents/moveUserToGroupForm.yaml b/_c8oProject/mobileSharedComponents/moveUserToGroupForm.yaml index 3e2a20f5..b295add3 100644 --- a/_c8oProject/mobileSharedComponents/moveUserToGroupForm.yaml +++ b/_c8oProject/mobileSharedComponents/moveUserToGroupForm.yaml @@ -501,7 +501,7 @@ scriptContent: - com.twinsoft.convertigo.beans.common.FormatedContent: →: | ' try { - console.log(page.myaggrid3?.agGrid?.api, " ",event); + // console.log(page.myaggrid3?.agGrid?.api, " ",event); page.local.selected = page.myaggrid3?.agGrid?.api?.getSelectedNodes({ startRow: 0, endRow: 1 }).length > 0; page.selectedGroups = page.myaggrid3?.agGrid?.api?.getSelectedNodes(); page.ref.detectChanges(); @@ -640,16 +640,20 @@ scriptContent: let docs = page.myaggrid3?.agGrid?.api?.getSelectedNodes().map((node) => { return { "group": node.data.group} }); let docs2 = page.global.selectedUsers.map((node) => { return {"user": node.data["~c8oAcl"]}}); var deleted : any = {success: true}; - var deleted2 : any = {success: true}; + var deleted2 : any = {success: true}; + // console.log(page.myaggrid3?.agGrid?.api?.getSelectedNodes()); + // console.log(page.global.selectedUsers); + // console.log(docs, docs2) for(let i = 0; i < docs.length;i++) { for (let j = 0; j < docs2.length; j++) { let args = {meta: JSON.stringify({group: docs[i].group, user: docs2[j].user})}; - let args2 = {meta: JSON.stringify({group: docs[i].group, user: page.global.groupSelected})}; - console.log(args); + let args2 = {meta: JSON.stringify({group: page.global.groupSelected, user: docs2[j].user})}; + // console.log(args, args2); let sequence2 = "C8Oforms.admin_user_delete_from_group"; let sequence = "C8Oforms.admin_user_add_to_group"; deleted = await page.c8o.callJsonObject(sequence, args).async(); deleted2 = await page.c8o.callJsonObject(sequence2, args2).async() + // console.log(deleted, deleted2); } } diff --git a/_c8oProject/sequences/admin_users_get_by_group_v2.yaml b/_c8oProject/sequences/admin_users_get_by_group_v2.yaml index 0df78e46..e4418f72 100644 --- a/_c8oProject/sequences/admin_users_get_by_group_v2.yaml +++ b/_c8oProject/sequences/admin_users_get_by_group_v2.yaml @@ -91,7 +91,7 @@ comment: Retrieves multiple user's information, requires admin privileges. values: valuesRows }; var filtered = groups; - filtered.push({group:{text:"any_group"}}); + // filtered.push({group:{text:"any_group"}}); filtered.unshift({group:{text:"all_users", attr: {users: String(rows.length)}}}); var values = []; var obj = {}; diff --git a/_c8oProject/sequences/admin_users_of_group_get.yaml b/_c8oProject/sequences/admin_users_of_group_get.yaml index 883095c0..be5caccd 100644 --- a/_c8oProject/sequences/admin_users_of_group_get.yaml +++ b/_c8oProject/sequences/admin_users_of_group_get.yaml @@ -13,84 +13,294 @@ comment: Retrieves multiple user's information, requires admin privileges. - ↑mode: PLAIN - →→: The "group" parameter must be defined and not empty ↓Return [steps.ReturnStep-1740997359720]: -↓Call_Transaction [steps.TransactionStep-1740997423410]: - output: true - sourceTransaction: lib_FullSyncGrp.c8ofullsyncgrp.GetUsersByGroup - ↓_use_key [variables.StepVariable-1740997465947]: - description: (string) – Return only documents that match the specified key. Optional -↓users [steps.JsonSourceStep-1740997685701]: - sourceDefinition: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.common.XMLVector - - com.twinsoft.convertigo.beans.common.XMLVector: - - java.lang.String: - - ↑value: 1740997423410 - - java.lang.String: - - ↑value: ./document/couchdb_output - variableName: users -↓object1 [steps.JsonObjectStep-1740998020992]: - ↓total_count [steps.JsonFieldStep-1740998035826]: - key: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType - - SmartType: - - ↑mode: PLAIN - - →→: total_count - value: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType - - SmartType: - - ↑mode: JS - - →→: users.total_count - ↓users [steps.JsonArrayStep-1740998101702]: - key: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType - - SmartType: - - ↑mode: PLAIN - - →→: users - ↓jIterator [steps.SimpleIteratorStep-1740998122548]: - expression: users.rows.item - ↓object [steps.JsonObjectStep-1740998151885]: - ↓_c8oAcl [steps.JsonFieldStep-1740998193008]: - key: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType - - SmartType: - - ↑mode: PLAIN - - →→: ~c8oAcl - value: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType - - SmartType: - - ↑mode: JS - - →→: item.value - ↓group [steps.JsonFieldStep-1740998221489]: - key: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType - - SmartType: - - ↑mode: PLAIN - - →→: group - value: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType - - SmartType: - - ↑mode: JS - - →→: item.key - ↓id [steps.JsonFieldStep-1740998237176]: - key: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType - - SmartType: - - ↑mode: PLAIN - - →→: id - value: - - xmlizable: - - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType - - SmartType: - - ↑mode: JS - - →→: item.id +↓setUsersVar [steps.SimpleStep-1741008987980]: + expression: var users; +↓jIfThenElse [steps.IfThenElseStep-1741008850787]: + condition: group != undefined && group == 'any_group' + ↓jThen [steps.ThenStep-1741008854747]: + isEnabled: false + ↓Call_Sequence [steps.SequenceStep-1741009059136]: + sourceSequence: lib_FullSyncGrp.Users + ↓users [steps.JsonSourceStep-1741009059139]: + sourceDefinition: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.common.XMLVector + - com.twinsoft.convertigo.beans.common.XMLVector: + - java.lang.String: + - ↑value: 1741009059136 + - java.lang.String: + - ↑value: ./document/user + variableName: user + ↓Sequence_admin_users_get [steps.SimpleStep-1741009105065]: + expression: | + //var users; + //users.rows = user.filter((val) => val != undefined || val['attr'] || val['attr']['groups'] == undefined || val['attr']['groups'] == 0); + //users.total_count = users.rows.length; + // Initialisation correcte de l'objet users + var users = {}; + + // Filtrer les utilisateurs sans groupes + users.rows = user.filter((val) => + val && // S'assurer que val est défini + val['attr'] && // Vérifier que "attr" existe + (!val['attr']['groups'] || val['attr']['groups'].length == 0) // Aucun groupe ou tableau vide + ); + + // Mettre à jour le nombre total + users.total_count = users.rows.length; + ↓object1 [steps.JsonObjectStep-1741016745532]: + ↓total_count [steps.JsonFieldStep-1741016745536]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: total_count + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: users.total_count + ↓users [steps.JsonArrayStep-1741016745539]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: users + ↓jIterator [steps.SimpleIteratorStep-1741016745542]: + expression: users.rows + ↓object [steps.JsonObjectStep-1741016745545]: + ↓_c8oAcl [steps.JsonFieldStep-1741016745548]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: _id + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: item.text + ↓_c8oAcl1 [steps.JsonFieldStep-1741016745551]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: ~c8oAcl + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: item.text + ↓group [steps.JsonFieldStep-1741016745554]: + isEnabled: false + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: group + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: item.key + ↓id [steps.JsonFieldStep-1741016745557]: + isEnabled: false + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: id + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: item.id + ↓field [steps.JsonFieldStep-1741016745560]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: str + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: JSON.stringify(user) + ↓with [steps.JsonFieldStep-1741016745563]: + isEnabled: false + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: strwith + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: users.usersWithGroups + ↓strwithout [steps.JsonFieldStep-1741016745566]: + isEnabled: false + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: strwithout + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: users.usersWithoutGroups + ↓jElse [steps.ElseStep-1741008854749]: + ↓Call_Transaction [steps.TransactionStep-1740997423410]: + output: true + sourceTransaction: lib_FullSyncGrp.c8ofullsyncgrp.GetUsersByGroup + ↓_use_key [variables.StepVariable-1740997465947]: + description: (string) – Return only documents that match the specified key. Optional + ↓users [steps.JsonSourceStep-1740997685701]: + sourceDefinition: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.common.XMLVector + - com.twinsoft.convertigo.beans.common.XMLVector: + - java.lang.String: + - ↑value: 1740997423410 + - java.lang.String: + - ↑value: ./document/couchdb_output + variableName: users + ↓object1 [steps.JsonObjectStep-1740998020992]: + ↓total_count [steps.JsonFieldStep-1740998035826]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: total_count + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: users.total_count + ↓users [steps.JsonArrayStep-1740998101702]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: users + ↓jIterator [steps.SimpleIteratorStep-1740998122548]: + expression: users.rows + ↓object [steps.JsonObjectStep-1740998151885]: + ↓_c8oAcl [steps.JsonFieldStep-1740998193008]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: _id + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: item.value + ↓_c8oAcl1 [steps.JsonFieldStep-1741008551654]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: ~c8oAcl + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: item.value + ↓group [steps.JsonFieldStep-1740998221489]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: group + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: item.key + ↓id [steps.JsonFieldStep-1740998237176]: + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: id + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: item.id + ↓field [steps.JsonFieldStep-1741009682057]: + isEnabled: false + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: str + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: JSON.stringify(users) + ↓with [steps.JsonFieldStep-1741014351428]: + isEnabled: false + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: strwith + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: users.usersWithGroups + ↓strwithout [steps.JsonFieldStep-1741014359083]: + isEnabled: false + key: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: PLAIN + - →→: strwithout + value: + - xmlizable: + - ↑classname: com.twinsoft.convertigo.beans.steps.SmartType + - SmartType: + - ↑mode: JS + - →→: users.usersWithoutGroups ↓group [variables.RequestableVariable-1740998304653]: ↓group_found [core.TestCase]: ↓group [variables.TestCaseVariable-1740998333988]: