- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-19-2022 06:01 AM
Hi Team,
I have a widget where i am populating user information from the custom table. Once user has added , we have another button called "Remove" as soon as user clicks on Remove button on the portal. Only that particular record should delete from that custom table. How can we achieve this through portal
HTML CODE
<td><button id ={{r.data.teamsysID}} ng-click="confirmDelete()">Remove</button></td>
CLIENT SCRIPT CODE
c.confirmDelete = function(){
c.server.get({
action:'confirmDelete',
ID:c.data.teamMembers.sys_id
}).then(function(r){
spUtil.addTrivialMessage("The " + c.data.teamMembers.sys_id + "record has been deleted");
$rootScope.$emit('confirmDelete', c.data.teamMembers.sys_id);
c.data.teamMembers.sys_id='';
});
}
SERVER CODE
if (input) {
if (input.action == 'deleteRecord'){
gs.addInfoMessage('entered');
}
}
I am not able to understand how can we get that particular sys_id from that custom table
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-19-2022 09:22 AM
Hi,
I have modified the code for you. Please use the same as mentioned below:
HTML:
<table class='table'>
<thead class="thead-dark">
<caption style="color:Brown;"><b>Member details of the selected team</b></caption>
<tr class="tm-header">
<th scope="col">Team</th>
<th scope ="col">Team Members</th>
<th scope ="col">Email</th>
<th scope="col"><button class="btn btn-primary" ng-click="c.openModal()">${Add user}</button></th>
</tr>
</thead>
<tbody>
<tr style="background-color:white; color:blue;" ng-repeat="teamDetails in c.data.member">
<td>{{c.data.teamName}}</td>
<td>{{teamDetails.name}}</td>
<td>{{teamDetails.email}}</td>
<td><button id ={{r.data.teamsysID}} ng-click="confirmDelete($index)">Remove</button></td>
</tr>
</tbody>
</table>
<script>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">Modal Window</h4>
</div>
<div class="panel-body wrapper-xl">
<b>Name: </b><sn-record-picker id="user" field="user" table="'sys_user'" display-field="'user'" value-field="'sys_id'" search-fields="'user_id'" page-size="100" ></sn-record-picker>
<br>
<b>Team: </b><sn-record-picker id="team" field="team" table="'x_80859_teamcool4u_team'" display-field="'team'" value-field="'sys_id'" search-fields="'name'" page-size="100" ></sn-record-picker>
</div>
<div class="panel-footer text-right">
<button type="button" ng-click="c.closeModal()">Add User</button>
</div>
</div>
</script>
Client:
function($uibModal,$scope,$rootScope,spModal,spUtil){
var c =this;
var userData = [];
var team = '';
$rootScope.$on('selectTeam', function(event,data){
c.server.get({
action:'getTeam',
teamID:$rootScope.teamID
}).then(function(r) {
c.data.member = r.data.teamMembers;
c.data.teamName = r.data.teamName;
team = r.data.teamName;
});
});
c.openModal = function(){
c.modalInstance = $uibModal.open({
templateUrl: 'modalTemplate',
scope: $scope
});
}
c.closeModal= function() {
debugger;
var user = $('#user').select2('val');
var teamName = $('#team').select2('val');
c.server.get({
action: 'createRecord',
selectTeam: teamName,
userName: user
}).then(function(r){
$rootScope.$emit('createRecord',r.data);
});
c.modalInstance.close();
}
//Delete record
c.confirmDelete = function(idx){
c.server.get({
action:'confirmDelete',
ID:idx
}).then(function(response) {
//Process your response
c.data.retrivedList = response.data.incList;
alert("Received data from server" + c.data.schedList.toString());
});
}
}
Server:
(function() {
/* populate the 'data' object */
/* e.g., data.table = $sp.getValue('table'); */
data.teamMembers = [];
data.teamName = '';
data.teamsysID = '';
data.UserSysID='';
if(input){
if(input && input.teamID){
if(input.action == 'getTeam'){
var teamSysID = input.teamID;
//gs.addInfoMessage('teamSysID----'+teamSysID);
data.teamsysID = teamSysID;
var grteamcool4 = new GlideRecord('x_80859_teamcool4u_team');
grteamcool4.addQuery('sys_id',teamSysID);
grteamcool4.query();
if(grteamcool4.next()){
data.teamName = grteamcool4.getValue('name');
//gs.addInfoMessage('teamName----'+grteamcool4.getValue('name'));
}
var grTeamID = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
grTeamID.addQuery('team', teamSysID);
grTeamID.query();
while(grTeamID.next()){
var userID = grTeamID.getValue('user');
var grUserDetails = new GlideRecord('sys_user');
grUserDetails.addQuery('sys_id', userID);
grUserDetails.query();
if(grUserDetails.next()){
var teamMembersObj = {};
$sp.getRecordDisplayValues(teamMembersObj, grUserDetails, 'name,email');
data.teamMembers.push(teamMembersObj);
data.UserSysID=grTeamID.getValue('user');
}
}
}
}
if(input.action=='createRecord'){
gs.info('Create Action triggered');
var m2mTableForUserCreation = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
m2mTableForUserCreation.initialize();
m2mTableForUserCreation.team = input.selectTeam;
m2mTableForUserCreation.user = input.userName;
if(m2mTableForUserCreation.insert()){
gs.addInfoMessage('User Added Successfully');
}
else{
gs.error('Insert Failed');
}
}
if (input.action == 'confirmDelete'){
var gr = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
gr.addQuery('sys_id',input.ID);
gr.query();
if(gr.next()){
gr.deleteRecord();
}
}
}
/*function validateNewUSer(teamSysId, userSysId){
return false;
if(!teamSysId || !userSysId)
return false;
return true;
}*/
})();
Hope this helps. Please mark the answer as correct/helpful based on impact.
Regards,
Shloke
Regards,
Shloke

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-19-2022 08:13 AM
Hi,
if your "Remove User" button is available on a particualr record then you can simple access the sys_id from the URL by using "$sp.getParameter('sys_id')"
This will return you the sys_id of the current record. may you can log it first and write down the script for deletion by using the GlideRecord on that table with the query like below:
data.record_id = $sp.getParameter("sys_id")
var gr = new GlideRecord('custom_table_name');
gr.addQuery('sys_id',data.record_id);
gr.query();
if(gr.next())
{
gr.deleteRecord();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-19-2022 08:42 AM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-19-2022 08:53 AM
Can you please paste the whole server code here?
Because i want to check how you are getting values for {{r.data.teamsysID}}. If i am not wrong somewhere we will find the sys_id of the team member from this. Then i will be able to tell you where to add the delete code and how/
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-19-2022 09:02 AM
Hi ANkur,
Please find below full script of that widget
HTML
<table class='table'>
<thead class="thead-dark">
<caption style="color:Brown;"><b>Member details of the selected team</b></caption>
<tr class="tm-header">
<th scope="col">Team</th>
<th scope ="col">Team Members</th>
<th scope ="col">Email</th>
<th scope="col"><button class="btn btn-primary" ng-click="c.openModal()">${Add user}</button></th>
</tr>
</thead>
<tbody>
<tr style="background-color:white; color:blue;" ng-repeat="teamDetails in c.data.member">
<td>{{c.data.teamName}}</td>
<td>{{teamDetails.name}}</td>
<td>{{teamDetails.email}}</td>
<td><button id ={{r.data.teamsysID}} ng-click="confirmDelete($index)">Remove</button></td>
</tr>
</tbody>
</table>
<script type="text/ng-template" id="modalTemplate">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">Modal Window</h4>
</div>
<div class="panel-body wrapper-xl">
<b>Name: </b><sn-record-picker id="user" field="user" table="'sys_user'" display-field="'user'" value-field="'sys_id'" search-fields="'user_id'" page-size="100" ></sn-record-picker>
<br>
<b>Team: </b><sn-record-picker id="team" field="team" table="'x_80859_teamcool4u_team'" display-field="'team'" value-field="'sys_id'" search-fields="'name'" page-size="100" ></sn-record-picker>
</div>
<div class="panel-footer text-right">
<button type="button" ng-click="c.closeModal()">Add User</button>
</div>
</div>
</script>
CLient SIde Code
function($uibModal,$scope,$rootScope,spModal,spUtil){
var c =this;
var userData = [];
var team = '';
$rootScope.$on('selectTeam', function(event,data){
c.server.get({
action:'getTeam',
teamID:$rootScope.teamID
}).then(function(r) {
c.data.member = r.data.teamMembers;
c.data.teamName = r.data.teamName;
team = r.data.teamName;
});
});
c.openModal = function(){
c.modalInstance = $uibModal.open({
templateUrl: 'modalTemplate',
scope: $scope
});
}
c.closeModal= function() {
debugger;
var user = $('#user').select2('val');
var teamName = $('#team').select2('val');
c.server.get({
action: 'createRecord',
selectTeam: teamName,
userName: user
}).then(function(r){
$rootScope.$emit('createRecord',r.data);
});
c.modalInstance.close();
}
//Delete record
c.confirmDelete = function(idx){
c.server.get({
action:'confirmDelete',
ID:c.data.record_id
}).then(function(r){
c.server.update();
});
}
}
Server side Code@@@@@@@
(function() {
/* populate the 'data' object */
/* e.g., data.table = $sp.getValue('table'); */
data.teamMembers = [];
data.teamName = '';
data.teamsysID = '';
data.UserSysID='';
if(input){
if(input && input.teamID){
if(input.action == 'getTeam'){
var teamSysID = input.teamID;
//gs.addInfoMessage('teamSysID----'+teamSysID);
data.teamsysID = teamSysID;
var grteamcool4 = new GlideRecord('x_80859_teamcool4u_team');
grteamcool4.addQuery('sys_id',teamSysID);
grteamcool4.query();
if(grteamcool4.next()){
data.teamName = grteamcool4.getValue('name');
//gs.addInfoMessage('teamName----'+grteamcool4.getValue('name'));
}
var grTeamID = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
grTeamID.addQuery('team', teamSysID);
grTeamID.query();
while(grTeamID.next()){
var userID = grTeamID.getValue('user');
var grUserDetails = new GlideRecord('sys_user');
grUserDetails.addQuery('sys_id', userID);
grUserDetails.query();
if(grUserDetails.next()){
var teamMembersObj = {};
$sp.getRecordDisplayValues(teamMembersObj, grUserDetails, 'name,email');
data.teamMembers.push(teamMembersObj);
data.UserSysID=grTeamID.getValue('user');
}
}
}
}
if(input.action=='createRecord'){
gs.info('Create Action triggered');
var m2mTableForUserCreation = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
m2mTableForUserCreation.initialize();
m2mTableForUserCreation.team = input.selectTeam;
m2mTableForUserCreation.user = input.userName;
if(m2mTableForUserCreation.insert()){
gs.addInfoMessage('User Added Successfully');
}
else{
gs.error('Insert Failed');
}
}
if (input.action == 'confirmDelete'){
gs.addInfoMessage('entered confirmDelete');
data.record_id = $sp.getParameter("sys_id")
gs.addInfoMessage('sys_id of the record m2m--');
var gr = new GlideRecord('x_80859_teamcool4u_m2m_users_teams');
gr.addQuery('sys_id',data.record_id);
gr.query();
if(gr.next())
{
gr.deleteRecord();
}
}
/*function validateNewUSer(teamSysId, userSysId){
return false;
if(!teamSysId || !userSysId)
return false;
return true;
}*/
}
})();