").dxList( {
dataSource : e.component.getDataSource(),
displayExpr : "brokerName",
selectionMode: "all",
showSelectionControls : true,
selectedItemKeys : v,
onSelectionChanged : function( sce ) {
const keys = sce.component.option( "selectedItemKeys" );
//console.log("keys");
//console.log(keys);
e.component.option( "value", keys );
}
}).dxList( "instance" );
return list.element();
},
}
});*/
permissionItems.push({
dataField : "brokerIds", label : { location : "left", text : "Brokers" }, editorType : "dxDropDownBox",
editorOptions : Fse.UI.multiSelectDropDownBoxEditorOptions( {
placeholder : "Select Broker",
dataSource : new DevExpress.data.DataSource( { store : { type : "array", data : brokers, key : "brokerId" }}),
searchExpr : "brokerName",
searchMode : "contains",
displayExpr : "brokerName",
multipleSelectedDisplay : "Multiple Brokers Selected",
keyExpr : "brokerId",
title : "Select Brokers"
})
});
brokers.forEach( function( broker ) {
let brokerStaffDataSource = Fse.Data.newDataSource( { object : "SEC.users", keyField : "fspro_userId", filter : [[ "userType", "=", "brokerStaff" ], "and", [ "userOwnerId", "=", broker.brokerId ]], objectParams : { includeBrokerStaff : true } });
/*permissionItems.push({
dataField : `bro${broker.brokerId}`, label : { location : "left", text : broker.brokerName },
editorType : "dxDropDownBox",
editorOptions : {
placeholder : "Select User",
dataSource : brokerStaffDataSource,
valueExpr : "fspro_userId", displayExpr : "fullName",
contentTemplate : function( e ) {
const v = e.component.option( "value" );
const list = $("
").dxList( {
dataSource : e.component.getDataSource(),
displayExpr : "fullName",
selectionMode: "all",
showSelectionControls : true,
selectedItemKeys : v,
onSelectionChanged : function( sce ) {
const keys = sce.component.option( "selectedItemKeys" );
console.log("keys here");
console.log(keys);
e.component.option( "value", keys );
}
}).dxList( "instance" );
return list.element();
},
}
}); */
permissionItems.push({
dataField : `bro${broker.brokerId}`, label : { location : "left", text : broker.brokerName }, editorType : "dxDropDownBox",
editorOptions : Fse.UI.multiSelectDropDownBoxEditorOptions( {
placeholder : "Select User",
dataSource : brokerStaffDataSource,
searchExpr : "fullName",
searchMode : "contains",
displayExpr : "fullName",
multipleSelectedDisplay : "Multiple Users Selected",
keyExpr : "fspro_userId",
title : "Select Users"
})
});
})
}
permissionItemsPromise.notify();
})
});
return permissionItemsPromise;
}
AssetEditor.prototype._prepareFormData = function( data ) {
let formDataPromise = $.Deferred();
let assetPermissionDataSource = Fse.Data.newDataSource( { object : "CMA.assetPermissions", paginate : false, objectParams : { assetId : data.fileId, assetType : data.contentDomain} });
assetPermissionDataSource.load().done( function( assetPermissions ) {
// console.log( "assetPermissions", assetPermissions );
const assetDefaults = {
privateYesNo : data.privateYesNo == 'Y' ? true : false,
assetEnabled : "Y",
brokerStaff :"",
staff : [],
nonStaff : [],
brokerUsers : [],
staffUserGrp : [],
permGrp : [],
onefsGrp : [],
crmStaffRolePermGrp : [],
crmLocMktGrp : [],
webTeamGrp : [],
presentSiteGrp : [],
corpGrp : [],
emailRecipientsGrp : [],
overrideGrp : [],
workTeamGrp : [],
sysGroupMPR : [],
sysGroupMRR : [],
sysGroupSME : [],
brokerIds : []
};
assetDefaults.brokerIds = DevExpress.data.query( assetPermissions ).filter( [ "resourceType", "=", "BRO" ] ).select( "resourceId" ).toArray().map( function( i ) { return i.resourceId } );
console.log( "assetDefaults.brokerIds from assetPermissions", assetDefaults.brokerIds );
assetDefaults.staff = DevExpress.data.query( assetPermissions ).filter( [[ "resourceType", "=", "USR" ], "and", [ "resourceOwnerType", "=", Fse.Portal.appConfiguration.STP.ownerType ], "and", [ "resourceOwnerId", "=", Fse.Portal.appConfiguration.STP.ownerId ] ]).select( "resourceId" ).toArray().map( function( i ) { return i.resourceId } );
let userGroups = [
{ groupCategory : "Staff User Groups", fieldName : "staffUserGrp" },
{ groupCategory : "Permission Groups", fieldName : "permGrp" },
{ groupCategory : "1FS Groups", fieldName : "onefsGrp" },
{ groupCategory : "Override Group", fieldName : "overrideGrp" },
{ groupCategory : "CRM - Override-Groups", fieldName : "overrideGrp" },
{ groupCategory : "Work Teams", fieldName : "workTeamGrp" },
{ groupCategory : "CRM - Work Teams", fieldName : "workTeamGrp" },
{ groupCategory : "CRM - Staff-Roles/Permissions", fieldName : "crmStaffRolePermGrp" },
{ groupCategory : "CRM - Local-Markets", fieldName : "crmLocMktGrp" },
{ groupCategory : "Website Team Divisions", fieldName : "webTeamGrp" },
{ groupCategory : "AG Presentation Site", fieldName : "presentSiteGrp" },
{ groupCategory : "AG_Corporate", fieldName : "corpGrp" },
{ groupCategory : "Email Recipients", fieldName : "emailRecipientsGrp" }
];
userGroups.forEach( function( ug ) {
let permissionFilter = [
[ "resourceType", "=", "GRP" ], "and", [ "resourceCategory", "=", ug.groupCategory ]
]
assetDefaults[ug.fieldName] = DevExpress.data.query( assetPermissions ).filter( permissionFilter ).select( "resourceId" ).toArray().map( function( i ) { return i.resourceId } );
})
let groupTypeCodes = [ "MPR", "MRR", "SME" ];
groupTypeCodes.forEach( function( groupTypeCode ) {
let fieldName = `sysGroup${groupTypeCode}`;
let permissionFilter = [
[ "resourceType", "=", "GRP" ], "and", [ "resourceSubType", "=", groupTypeCode ]
]
assetDefaults[fieldName] = DevExpress.data.query( assetPermissions ).filter( permissionFilter ).select( "resourceId" ).toArray().map( function( i ) { return i.resourceId } );
})
// broNNN fields
if( Fse.Portal.appConfiguration.STP.ownerType == "MFR" ) {
assetPermissions.forEach( function( resource ) {
if( resource.resourceType != "USR" ) return;
if( resource.resourceOwnerType != "BRO" ) return;
let fieldName = `bro${resource.resourceOwnerId}`;
if( ! assetDefaults[fieldName] ) assetDefaults[fieldName] = [];
assetDefaults[fieldName].push( resource.resourceId );
})
}
// console.log( "assetDefaults", assetDefaults );
formDataPromise.resolve( assetDefaults );
})
return formDataPromise;
}
AssetEditor.prototype.permissionsTabTemplate = function( data ) {
let instance = this;
//console.log("permissions tab template");
//console.log(data);
let generalItems = [];
instance.permissionForm = null;
let permissionFormElement = $("
").css( "padding", "10px");
generalItems.push(
{
dataField : "privateYesNo", label : { text : "Restrict Visibility" }, editorType : "dxSwitch",
editorOptions : {
onValueChanged: function (e) {
e.component.option("value", e.value);
data.privateYesNo = e.value;
instance.permissionForm.itemOption('generalSection.permissionSection', 'visible', e.value);
instance.permissionForm.itemOption('generalSection.permissionStaffSection', 'visible', e.value);
instance.permissionForm.itemOption('generalSection.brokerSection', 'visible', e.value);
instance.permissionForm.itemOption('generalSection.brokerCompanySection', 'visible', e.value);
if( e.value ) {
// check if any selection field already has a value â if so, save is already valid
const permissionFields = [
"staffUserGrp","permGrp","onefsGrp","overrideGrp","workTeamGrp",
"crmStaffRolePermGrp","crmLocMktGrp","webTeamGrp","presentSiteGrp",
"corpGrp","emailRecipientsGrp","sysGroupMPR","sysGroupMRR","sysGroupSME",
"staff","brokerIds"
];
const anySelected = permissionFields.some( function( f ) {
const editor = instance.permissionForm.getEditor( f );
if( !editor ) return false;
const v = editor.option( "value" );
return Array.isArray( v ) ? v.length > 0 : !!v;
});
instance.saveButton.option( "disabled", !anySelected );
instance.saveAnotherButton.option( "disabled", true );
} else {
// reset all permission dropdown selections
const permissionFields = [
"staffUserGrp","permGrp","onefsGrp","overrideGrp","workTeamGrp",
"crmStaffRolePermGrp","crmLocMktGrp","webTeamGrp","presentSiteGrp",
"corpGrp","emailRecipientsGrp","sysGroupMPR","sysGroupMRR","sysGroupSME",
"staff","brokerIds"
];
permissionFields.forEach( function( f ) {
const editor = instance.permissionForm.getEditor( f );
if( editor ) { editor.option( "value", [] ); }
});
// also reset any broker staff fields (bro### dynamic fields)
const formData = instance.permissionForm.option( "formData" );
Object.keys( formData ).forEach( function( f ) {
if( /^bro\d+$/.test( f ) ) {
const editor = instance.permissionForm.getEditor( f );
if( editor ) { editor.option( "value", [] ); }
}
});
instance.saveButton.option( "disabled", false );
instance.saveAnotherButton.option( "disabled", false );
}
}
}
}
);
instance._createPermissionItems().done( function( permissionItems ) {
instance._prepareFormData( data ).done( function( assetDefaults ) {
//console.log( "assetDefaults", assetDefaults );
//console.log( "PermissionItems", permissionItems );
//console.log(data);
const brokerItems = permissionItems.filter(item =>
item.dataField.startsWith("bro")
&&
!(typeof item.dataField === "string" && item.dataField == "brokerIds")
);
const brokerCompanyItems = permissionItems.filter(item =>
item.dataField == "brokerIds"
);
const groupItems = permissionItems.filter(item =>
!(typeof item.dataField === "string" && item.dataField.startsWith("bro"))
&&
!(typeof item.dataField === "string" && item.dataField == "staff")
);
const staffItems = permissionItems.filter(item =>
item.dataField == "staff"
);
let permissionSectionItems ={
itemType : "group",
name : "permissionSection",
caption : "Groups & Staff",
colCount : 2,
visible : data.privateYesNo == 'Y'? true : false,
items : groupItems
};
let permissionStaffSectionItems ={
itemType : "group",
name : "permissionStaffSection",
caption : "",
colCount : 1,
width : 250,
visible : data.privateYesNo == 'Y'? true : false,
items : staffItems
};
generalItems.push(permissionSectionItems);
generalItems.push(permissionStaffSectionItems);
let brokerCompanySectionItems ={
itemType : "group",
name : "brokerCompanySection",
caption : "Brokers",
colCount : 1,
visible : data.privateYesNo == 'Y'? true : false,
items : brokerCompanyItems
};
if( Fse.Portal.appConfiguration.STP.ownerType != "BRO" ) {
generalItems.push(brokerCompanySectionItems);
}
let brokerSectionItems ={
itemType : "group",
name : "brokerSection",
// caption : "Brokers",
colCount : 2,
visible : data.privateYesNo == 'Y'? true : false,
items : brokerItems
};
if( Fse.Portal.appConfiguration.STP.ownerType != "BRO" ) {
generalItems.push(brokerSectionItems);
}
let generalSectionItems = {
itemType : "group",
name : "generalSection",
caption : " Restriction Settings",
items : generalItems
};
let formItems = [];
formItems.push(generalSectionItems);
instance.permissionForm = permissionFormElement.dxForm( {
items : formItems,
formData : assetDefaults,
// validationGroup : "AssetEditor",
onFieldDataChanged : function( e ) {
if(e.component.getEditor("staffUserGrp") !== undefined)
e.component.option("formData").staffUserGrp = e.component.getEditor("staffUserGrp").option("value");
if(e.component.getEditor("permGrp") !== undefined)
e.component.option("formData").permGrp = e.component.getEditor("permGrp").option("value");
if(e.component.getEditor("workTeamGrp") !== undefined)
e.component.option("formData").workTeamGrp = e.component.getEditor("workTeamGrp").option("value");
if(e.component.getEditor("onefsGrp") !== undefined)
e.component.option("formData").onefsGrp = e.component.getEditor("onefsGrp").option("value");
if(e.component.getEditor("overrideGrp") !== undefined)
e.component.option("formData").overrideGrp = e.component.getEditor("overrideGrp").option("value");
if(e.component.getEditor("crmStaffRolePermGrp") !== undefined)
e.component.option("formData").crmStaffRolePermGrp = e.component.getEditor("crmStaffRolePermGrp").option("value");
if(e.component.getEditor("crmLocMktGrp") !== undefined)
e.component.option("formData").crmLocMktGrp = e.component.getEditor("crmLocMktGrp").option("value");
if(e.component.getEditor("webTeamGrp") !== undefined)
e.component.option("formData").webTeamGrp = e.component.getEditor("webTeamGrp").option("value");
if(e.component.getEditor("presentSiteGrp") !== undefined)
e.component.option("formData").presentSiteGrp = e.component.getEditor("presentSiteGrp").option("value");
if(e.component.getEditor("corpGrp") !== undefined)
e.component.option("formData").corpGrp = e.component.getEditor("corpGrp").option("value");
if(e.component.getEditor("emailRecipientsGrp") !== undefined)
e.component.option("formData").emailRecipientsGrp = e.component.getEditor("emailRecipientsGrp").option("value");
if(e.component.getEditor("sysGroupMPR") !== undefined)
e.component.option("formData").sysGroupMPR = e.component.getEditor("sysGroupMPR").option("value");
if(e.component.getEditor("sysGroupMRR") !== undefined)
e.component.option("formData").sysGroupMRR = e.component.getEditor("sysGroupMRR").option("value");
if(e.component.getEditor("sysGroupSME") !== undefined)
e.component.option("formData").sysGroupSME = e.component.getEditor("sysGroupSME").option("value");
if(e.component.getEditor("brokerStaff") !== undefined)
e.component.option("formData").brokerStaff = e.component.getEditor("brokerStaff").option("value");
if(e.component.getEditor("staff") !== undefined)
e.component.option("formData").staff = e.component.getEditor("staff").option("value");
if(e.component.getEditor("nonStaff") !== undefined)
e.component.option("formData").nonStaff = e.component.getEditor("nonStaff").option("value");
if(e.component.getEditor("brokerUsers") !== undefined)
e.component.option("formData").brokerUsers = e.component.getEditor("brokerUsers").option("value");
if(e.component.getEditor("brokerIds") !== undefined)
e.component.option("formData").brokerIds = e.component.getEditor("brokerIds").option("value");
// if(e.component.getEditor("privateYesNo") !== undefined)
// e.component.option("formData").privateYesNo = e.component.getEditor("privateYesNo").option("value");
// instance.permissionForm.option( "formData", {
// privateYesNo : data.privateYesNo ? true : false
// })
if((null == e.component.option("formData").staffUserGrp || e.component.option("formData").staffUserGrp.length == 0)
&& (null == e.component.option("formData").permGrp || e.component.option("formData").permGrp.length == 0)
&& (null == e.component.option("formData").workTeamGrp || e.component.option("formData").workTeamGrp.length == 0)
&& (null == e.component.option("formData").onefsGrp || e.component.option("formData").onefsGrp.length == 0)
&& (null == e.component.option("formData").staff || e.component.option("formData").staff.length == 0)
&& (null == e.component.option("formData").overrideGrp || e.component.option("formData").overrideGrp.length == 0)
&& (null == e.component.option("formData").sysGroupMPR || e.component.option("formData").sysGroupMPR.length == 0)
&& (null == e.component.option("formData").sysGroupMRR || e.component.option("formData").sysGroupMRR.length == 0)
&& (null == e.component.option("formData").sysGroupSME || e.component.option("formData").sysGroupSME.length == 0)
// for AG
&& (null == e.component.option("formData").crmStaffRolePermGrp || e.component.option("formData").crmStaffRolePermGrp.length == 0)
&& (null == e.component.option("formData").crmLocMktGrp || e.component.option("formData").crmLocMktGrp.length == 0)
&& (null == e.component.option("formData").webTeamGrp || e.component.option("formData").webTeamGrp.length == 0)
&& (null == e.component.option("formData").presentSiteGrp || e.component.option("formData").presentSiteGrp.length == 0)
&& (null == e.component.option("formData").corpGrp || e.component.option("formData").corpGrp.length == 0)
&& (null == e.component.option("formData").emailRecipientsGrp || e.component.option("formData").emailRecipientsGrp.length == 0)
) {
instance.saveButton.option( "disabled", true );
}
else {
instance.saveButton.option( "disabled", false );
}
if( ! instance.updating ) {
// console.log("here4");
instance.applyValidation( "onFieldDataChanged" );
//alert("done");
}
}
}).dxForm( "instance" );
});
})
return permissionFormElement;
}
AssetEditor.prototype.customersTabTemplate = function( data ) {
// console.log("inside customer's tab");
// console.log(data);
let instance = this;
let fileId = data.fileId;
// console.log("data in customer's tab");
if (typeof instance.assetId !== 'undefined' && instance.assetId !== null) {
fileId = instance.assetId;
}
let template = $("
").css( "padding", "10px 10px 10px 10px" );
template.append( "
Linked Operators
" );
let operatorLinks = new LinkManager( { height : "100%", subjectType : data.contentDomain, subjectId : fileId, partnerType : "OPR", label : "" } );
let distributorLinks = new LinkManager( { height : "100%", subjectType : data.contentDomain, subjectId : fileId, partnerType : "CDR", label : "" } );
// let manufacturerLinks = new LinkManager( { height : "100%", subjectType : data.contentDomain, subjectId : data.fileId, partnerType : "MFR", label : "" } );
let oprSection = $("
").css( { "height" : "100%", "display" : "flex", "flex-direction" : "column" } )
.append( $("
").css( { "flex" : "1 1 auto", "margin-bottom" : "5px" } ).append( operatorLinks.element() ));
template.append( oprSection ).append( "
Linked Distributors
" );
let distSection = $("
").css( { "height" : "100%", "display" : "flex", "flex-direction" : "column" } )
.append( $("
").css( { "flex" : "1 1 auto" } ).append( distributorLinks.element() ));
/* template.append( distSection ).append( "
Linked Manufacturers
" );
let mfrSection = $("
").css( { "height" : "100%", "display" : "flex", "flex-direction" : "column" } )
.append( $("
").css( { "flex" : "1 1 auto", "border" : "1px solid lime" } ).append( manufacturerLinks.element() ));
*/
return template.append( distSection );
}
AssetEditor.prototype.productsTabTemplate = function( data ) {
let instance = this;
let fileId = data.fileId;
// console.log("data in customer's tab");
if (typeof instance.assetId !== 'undefined' && instance.assetId !== null) {
fileId = instance.assetId;
}
let template = $("
").css( "padding", "10px 10px 10px 10px" );
template.append( "
Linked SKUs
" );
let skuLinks = new LinkManager( { height : "100%", subjectType : data.contentDomain, subjectId : fileId, catalogType : "SKU", label : "" } );
let prdLinks = new LinkManager( { height : "100%", subjectType : data.contentDomain, subjectId : fileId, catalogType : "PRD", label : "" } );
// console.log("sku links");
// console.log(skuLinks);
let skuSection = $("
").css( { "height" : "100%", "display" : "flex", "flex-direction" : "column" } )
.append( $("
").css( { "flex" : "1 1 auto", "margin-bottom" : "5px" } ).append( skuLinks.element() ));
template.append( skuSection ).append( "
Linked Products
" );
let prdSection = $("
").css( { "height" : "100%", "display" : "flex", "flex-direction" : "column" } )
.append( $("
").css( { "flex" : "1 1 auto" } ).append( prdLinks.element() ));
return template.append( prdSection );
}