@mikezimm/npmfunctions
Version:
Functions used in my SPFx webparts
388 lines • 23.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.refreshPanelHTML = exports.refreshPanel = exports.mainWebPartRenderBannerSetup = void 0;
var sp_core_library_1 = require("@microsoft/sp-core-library");
var sp_page_context_1 = require("@microsoft/sp-page-context");
var VisitorPanelComponent_1 = require("../../CoreFPS/VisitorPanelComponent");
var CheckPermissions_1 = require("../../Services/Users/CheckPermissions");
var StringToReactCSS_1 = require("../../Services/PropPane/StringToReactCSS");
var defaults_1 = require("./defaults");
var tables_1 = require("../../Performance/tables");
function mainWebPartRenderBannerSetup(displayMode, beAReader, FPSUser, //tempBannerTitle: string,
minWPBannerProps, repoLink, trickyEmails, exportProps, strings, clientWidth, thisContext, modifyBannerTitle, forceBanner, disablePandoramic, performance, keysToShow, wideToggle, expandConsole, SpecialMessage) {
var anyContext = thisContext;
var renderAsReader = displayMode === sp_core_library_1.DisplayMode.Read && beAReader === true ? true : false;
// console.log('mainWebPart: showTricks ~ 322', );
// Verify if this is a duplicate of the code in FPSUser (copied and commented out below )
var showTricks = false;
trickyEmails.map(function (getsTricks) {
if (thisContext.pageContext.user && thisContext.pageContext.user.loginName && thisContext.pageContext.user.loginName.toLowerCase().indexOf(getsTricks) > -1) {
showTricks = true;
minWPBannerProps.showRepoLinks = true; //Always show these users repo links
}
});
// Copied from getFPSUser Junly 29, 2022
// let showTricks: any = false;
// trickyEmails.map( getsTricks => {
// if ( user.loginName && user.loginName.toLowerCase().indexOf( getsTricks ) > -1 ) {
// showTricks = true ;
// }
// } );
// console.log('mainWebPart: verifyAudienceVsUser ~ 341', );
minWPBannerProps.showBannerGear = (0, CheckPermissions_1.verifyAudienceVsUser)(FPSUser, showTricks, minWPBannerProps.homeParentGearAudience, null, renderAsReader);
var errMessage = '';
var validDocsContacts = ''; //This may no longer be needed if links below are commented out.
if ((minWPBannerProps.documentationIsValid !== true && minWPBannerProps.documentationLinkUrl) //This means it failed the url ping test... throw error
|| (minWPBannerProps.requireDocumentation === true && !minWPBannerProps.documentationLinkUrl)) { //This means docs are required but there isn't one provided
errMessage += ' Invalid Support Doc Link: ' + (minWPBannerProps.documentationLinkUrl ? minWPBannerProps.documentationLinkUrl : 'Empty. ');
validDocsContacts += 'DocLink,';
}
if (minWPBannerProps.requireContacts === true) {
if (!minWPBannerProps.supportContacts || minWPBannerProps.supportContacts.length < 1) {
errMessage += ' Need valid Support Contacts';
validDocsContacts += 'Contacts,';
}
}
var errorObjArray = [];
/***
* d8888b. .d8b. d8b db d8b db d88888b d8888b.
* 88 `8D d8' `8b 888o 88 888o 88 88' 88 `8D
* 88oooY' 88ooo88 88V8o 88 88V8o 88 88ooooo 88oobY'
* 88~~~b. 88~~~88 88 V8o88 88 V8o88 88~~~~~ 88`8b
* 88 8D 88 88 88 V888 88 V888 88. 88 `88.
* Y8888P' YP YP VP V8P VP V8P Y88888P 88 YD
*
*
*/
var replacePanelWarning = "Anyone with lower permissions than '".concat(minWPBannerProps.fullPanelAudience, "' will ONLY see this content in panel");
// console.log('mainWebPart: buildBannerSettings ~ 387', );
// const buildBannerSettings : IBuildBannerSettings = {
// FPSUser: FPSUser,
// //this. related info
// context: thisContext as any,
// clientWidth: ( clientWidth - ( displayMode === DisplayMode.Edit ? 250 : 0) ),
// exportProps: exportProps,
// //Webpart related info
// panelTitle: panelTitle,
// modifyBannerTitle: modifyBannerTitle,
// repoLinks: repoLink,
// //Hard-coded Banner settings on webpart itself
// forceBanner: forceBanner,
// earyAccess: false,
// wideToggle: wideToggle, // Set on ALVFinaMan
// expandAlert: false,
// expandConsole: expandConsole, // Set on ALVFinaMan
// replacePanelWarning: replacePanelWarning,
// //Error info
// errMessage: errMessage,
// errorObjArray: errorObjArray, //In the case of Pivot Tiles, this is manualLinks[],
// expandoErrorObj: expandoErrorObj, // Is this needed any more?
// beAUser: renderAsReader,
// showBeAUserIcon: false,
// };
// const bannerSetup = buildBannerProps( minWPBannerProps , FPSUser, buildBannerSettings, showTricks, displayMode );
// export function buildBannerProps ( wpProps : IMinWPBannerProps, FPSUser: IFPSUser, bbs: IBuildBannerSettings, showTricks: boolean, displayMode: DisplayMode ) {
/***
* d8888b. .d8b. d8b db d8b db d88888b d8888b.
* 88 `8D d8' `8b 888o 88 888o 88 88' 88 `8D
* 88oooY' 88ooo88 88V8o 88 88V8o 88 88ooooo 88oobY'
* 88~~~b. 88~~~88 88 V8o88 88 V8o88 88~~~~~ 88`8b
* 88 8D 88 88 88 V888 88 V888 88. 88 `88.
* Y8888P' YP YP VP V8P VP V8P Y88888P 88 YD
*
*
*/
// Updated for SPA to get Title which is also the window.name property https://github.com/mikezimm/drilldown7/issues/243
var bannerTitle = modifyBannerTitle === true && minWPBannerProps.bannerTitle && minWPBannerProps.bannerTitle.length > 0 ? minWPBannerProps.bannerTitle :
anyContext._pageLayoutType === 'SingleWebPartAppPageLayout' ? document.title : repoLink.desc;
var bannerStyle = (0, StringToReactCSS_1.getReactCSSFromString)('bannerStyle', minWPBannerProps.bannerStyle, defaults_1.baseBannerStyles);
var bannerCmdStyle = (0, StringToReactCSS_1.getReactCSSFromString)('bannerCmdStyle', minWPBannerProps.bannerCmdStyle, defaults_1.baseBannerCmdStyles);
//Over-rides gear for certain users
var showRepoLinks = renderAsReader === true || minWPBannerProps.showRepoLinks === false ? false : true;
var isSiteAdmin = renderAsReader !== true && FPSUser.isSiteAdmin === true ? true : false;
var hasCustomizePages = isSiteAdmin === true ? true :
(0, CheckPermissions_1.verifyAudienceVsUser)(FPSUser, showTricks, minWPBannerProps.homeParentGearAudience, sp_page_context_1.SPPermission.addAndCustomizePages, renderAsReader);
var homeParentGearAudience = isSiteAdmin === true ? true : (0, CheckPermissions_1.verifyAudienceVsUser)(FPSUser, showTricks, minWPBannerProps.homeParentGearAudience, null, renderAsReader);
var showBannerGear = isSiteAdmin === true ? true : minWPBannerProps.showBannerGear === true && homeParentGearAudience === true ? true : false;
var showGoToHome = isSiteAdmin === true ? true : minWPBannerProps.showGoToHome === true && homeParentGearAudience === true ? true : false;
var showGoToParent = isSiteAdmin === true ? true : minWPBannerProps.showGoToParent === true && homeParentGearAudience === true ? true : false;
var showExport = isSiteAdmin === true ? true : minWPBannerProps.showExport === true && hasCustomizePages !== true ? false : true;
var enableExpandoramic = disablePandoramic === true || minWPBannerProps.enableExpandoramic === false ? false :
(0, CheckPermissions_1.verifyAudienceVsUser)(FPSUser, showTricks, minWPBannerProps.expandoAudience, null, renderAsReader);
//Always show full panel if you are SCA
var showFullPanel = isSiteAdmin === true ? true : (0, CheckPermissions_1.verifyAudienceVsUser)(FPSUser, showTricks, minWPBannerProps.fullPanelAudience, sp_page_context_1.SPPermission.editListItems, renderAsReader);
//Over-rides expand for certain users
console.log('_pageLayoutType:', anyContext._pageLayoutType);
console.log('pageLayoutType:', anyContext.pageLayoutType);
// Changed expandoStyle from buildExpandoStyle function based on https://github.com/mikezimm/CoreFPS114/issues/6
// let expandobuildExpandoStyle = buildExpandoStyle( errMessage, minWPBannerProps, bbs.errorObjArray, bbs.expandoErrorObj );
var expandoStyleObject = (0, StringToReactCSS_1.getReactCSSFromString)('expandoStyle', minWPBannerProps.expandoStyle, {});
var styleErrors = [];
if (bannerStyle.errMessage) {
styleErrors.push(bannerStyle.errMessage);
}
if (bannerCmdStyle.errMessage) {
styleErrors.push(bannerCmdStyle.errMessage);
}
if (expandoStyleObject.errMessage) {
styleErrors.push(expandoStyleObject.errMessage);
}
var styleErrorMessage = styleErrors.length > 0 ? "; ".concat(styleErrors.join('; ')) : '';
errMessage += styleErrorMessage;
var showBannerError = errMessage !== '' && errMessage !== null ? true : false;
//Always pass false for verifyAudienceVsUser 'beAUser' or it will hide the beAUser Icon.
var showBeAUserIcon = (0, CheckPermissions_1.verifyAudienceVsUser)(FPSUser, showTricks, minWPBannerProps.beAUserAudience, sp_page_context_1.SPPermission.addAndCustomizePages, false);
// let showBeAUserIcon: boolean = false;
// if ( ( minWPBannerProps.expandoAudience && minWPBannerProps.expandoAudience !== 'Everyone')
// || ( minWPBannerProps.homeParentGearAudience && minWPBannerProps.homeParentGearAudience !== 'Everyone' ) ) {
// showBeAUserIcon = true;
// }
var infoElement = 'More Information';
if (minWPBannerProps.infoElementChoice === 'Text') {
infoElement = minWPBannerProps.infoElementText;
}
else if (minWPBannerProps.infoElementChoice) {
infoElement = minWPBannerProps.infoElementChoice;
}
var startTime = new Date();
var refreshId = startTime.toISOString().replace('T', ' T'); // + ' ~ ' + startTime.toLocaleTimeString();
var bannerProps = {
webpartHistory: minWPBannerProps.webpartHistory,
refreshId: refreshId,
FPSUser: FPSUser,
exportProps: exportProps,
pageContext: thisContext.pageContext,
displayMode: displayMode,
WebPartHelpElement: null,
SpecialMessage: SpecialMessage,
panelTitle: showBannerError === true ? errMessage : bannerTitle,
infoElement: infoElement,
// changed null to undefined: https://github.com/mikezimm/ALVFinMan/issues/171
contentPages: {
aboutTable: undefined,
advancedContent: undefined,
basicsContent: undefined,
errorsContent: undefined,
futureContent: undefined,
getRandomTip: undefined,
gettingStartedContent: undefined,
tricksTable: undefined,
webParTips: [],
whyContent: undefined,
},
bannerWidth: (clientWidth - (displayMode === sp_core_library_1.DisplayMode.Edit ? 250 : 0)),
showBanner: showTricks === true || forceBanner === true || minWPBannerProps.showBanner !== false ? true : false,
feedbackEmail: minWPBannerProps.feedbackEmail ? minWPBannerProps.feedbackEmail : '',
showTricks: showTricks,
showBannerGear: showBannerGear,
showGoToHome: showGoToHome,
showGoToParent: showGoToParent,
showRepoLinks: showRepoLinks,
showExport: showExport,
showFullPanel: showFullPanel,
replacePanelHTML: minWPBannerProps.replacePanelHTML,
bonusHTML1: null,
panelPerformance: performance,
bonusHTML2: null,
replacePanelWarning: replacePanelWarning,
// onHomePage: anyContext._pageLayoutType === 'Home' ? true : false,
onHomePage: thisContext.pageContext.legacyPageContext.isWebWelcomePage === true ? true : false,
hoverEffect: minWPBannerProps.bannerHoverEffect === false ? false : true,
//This was my modified attempt that didn't work
title: showBannerError === true ? errMessage : bannerTitle,
bannerReactCSS: showBannerError === true ? { background: "yellow", color: "red", } : bannerStyle.parsed,
bannerCmdReactCSS: bannerCmdStyle.parsed,
gitHubRepo: repoLink,
farElements: [],
nearElements: [],
earyAccess: false,
wideToggle: wideToggle,
//2022-02-17: Added these for expandoramic mode
domElement: thisContext.domElement,
pageLayout: minWPBannerProps.pageLayout,
enableExpandoramic: enableExpandoramic,
expandoDefault: minWPBannerProps.expandoDefault,
expandoStyle: expandoStyleObject.parsed,
expandAlert: false,
expandConsole: expandConsole,
expandoPadding: minWPBannerProps.expandoPadding,
//2022-02-17: END additions for expandoramic mode
beAUser: renderAsReader,
showBeAUserIcon: showBeAUserIcon,
beAUserFunction: null,
};
//close #129: This makes the maxWidth added in fps options apply to banner as well.
if (minWPBannerProps.fpsContainerMaxWidth && minWPBannerProps.fpsContainerMaxWidth.length > 0 && bannerProps.bannerReactCSS) {
bannerProps.bannerReactCSS.maxWidth = minWPBannerProps.fpsContainerMaxWidth;
}
// return { errMessage: errMessage, bannerProps: bannerProps, errorObjArray: [ expandoStyleObject.errMessage ], };
if (minWPBannerProps.defPinState === 'disabled') {
// npm install @mikezimm/npmfunctions@2.1.14
}
else {
if (!minWPBannerProps.bannerTitle || minWPBannerProps.bannerTitle === '') {
if (minWPBannerProps.defPinState !== 'normal' && strings.bannerTitle) {
bannerProps.title = strings.bannerTitle;
}
else {
bannerProps.title = 'hide';
}
}
//Add this to force a title because when pinned by default, users may not know it's there.
if (minWPBannerProps.forcePinState === true && minWPBannerProps.defPinState !== 'normal') {
if (!minWPBannerProps.bannerTitle || minWPBannerProps.bannerTitle.length < 3) {
bannerProps.title = 'Page Contents';
}
}
}
bannerProps.enableExpandoramic = enableExpandoramic; //Hard code this option for FPS PageInfo web part only because of PinMe option
// console.log('mainWebPart: visitorPanelInfo ~ 405', );
minWPBannerProps.replacePanelHTML = (0, VisitorPanelComponent_1.visitorPanelInfo)(minWPBannerProps, repoLink, '', '', (0, tables_1.createPerformanceTableVisitor)(performance, keysToShow));
bannerProps.replacePanelHTML = minWPBannerProps.replacePanelHTML;
return bannerProps;
}
exports.mainWebPartRenderBannerSetup = mainWebPartRenderBannerSetup;
function refreshPanel(bannerProps, repoLink, performance, keysToShow) {
if (performance) {
bannerProps.replacePanelHTML = (0, VisitorPanelComponent_1.visitorPanelInfo)(bannerProps, repoLink, '', '', (0, tables_1.createPerformanceTableVisitor)(performance, keysToShow));
}
return bannerProps;
}
exports.refreshPanel = refreshPanel;
function refreshPanelHTML(bannerProps, repoLink, performance, keysToShow) {
var replacePanelHTML = bannerProps.replacePanelHTML;
if (performance) {
replacePanelHTML = (0, VisitorPanelComponent_1.visitorPanelInfo)(bannerProps, repoLink, '', '', (0, tables_1.createPerformanceTableVisitor)(performance, keysToShow));
}
return replacePanelHTML;
}
exports.refreshPanelHTML = refreshPanelHTML;
// export function buildBannerProps ( wpProps : IMinWPBannerProps, FPSUser: IFPSUser, bbs: IBuildBannerSettings, showTricks: boolean, displayMode: DisplayMode ) {
// /***
// * d8888b. .d8b. d8b db d8b db d88888b d8888b.
// * 88 `8D d8' `8b 888o 88 888o 88 88' 88 `8D
// * 88oooY' 88ooo88 88V8o 88 88V8o 88 88ooooo 88oobY'
// * 88~~~b. 88~~~88 88 V8o88 88 V8o88 88~~~~~ 88`8b
// * 88 8D 88 88 88 V888 88 V888 88. 88 `88.
// * Y8888P' YP YP VP V8P VP V8P Y88888P 88 YD
// *
// *
// */
// let bannerTitle = bbs.modifyBannerTitle === true && wpProps.bannerTitle && wpProps.bannerTitle.length > 0 ? wpProps.bannerTitle : bbs.repoLinks.desc;
// let bannerStyle: ICurleyBraceCheck = getReactCSSFromString( 'bannerStyle', wpProps.bannerStyle, baseBannerStyles );
// let bannerCmdStyle: ICurleyBraceCheck = getReactCSSFromString( 'bannerCmdStyle', wpProps.bannerCmdStyle, baseBannerCmdStyles );
// //Over-rides gear for certain users
// let showRepoLinks = bbs.beAUser === true || wpProps.showRepoLinks === false ? false : true;
// let isSiteAdmin = bbs.beAUser !== true && FPSUser.isSiteAdmin === true ? true : false;
// let showBannerGear = isSiteAdmin === true ? true : false;
// let showGoToHome = isSiteAdmin === true ? true : false;
// let showGoToParent = isSiteAdmin === true ? true : false;
// let showExport = isSiteAdmin === true ? true : false;
// let enableExpandoramic = isSiteAdmin === true ? true : false;
// //Always show full panel if you are SCA
// let showFullPanel = isSiteAdmin === true ? true : false;
// if ( isSiteAdmin !== true ) {
// let homeParentGearAudience = verifyAudienceVsUser( FPSUser, showTricks, wpProps.homeParentGearAudience , null, bbs.beAUser );
// showBannerGear = wpProps.showBannerGear === true && homeParentGearAudience === true ? true : false;
// showGoToHome = wpProps.showGoToHome === true && homeParentGearAudience === true ? true : false;
// showGoToParent = wpProps.showGoToParent === true && homeParentGearAudience === true ? true : false;
// let hasCustomizePages = verifyAudienceVsUser( FPSUser, showTricks, wpProps.homeParentGearAudience , SPPermission.addAndCustomizePages, bbs.beAUser );
// showExport = wpProps.showExport === true && hasCustomizePages !== true ? false : true;
// enableExpandoramic = verifyAudienceVsUser( FPSUser, showTricks, wpProps.expandoAudience , null, bbs.beAUser );
// //Logic for showing full panel... If you can edit items, you can likely edit the page and therefore should know about the webpart.
// let getsFullPanelExperience = verifyAudienceVsUser( FPSUser, showTricks, wpProps.fullPanelAudience , SPPermission.editListItems, bbs.beAUser );
// showFullPanel = getsFullPanelExperience;
// }
// //Over-rides expand for certain users
// let anyContext: any = bbs.context;
// console.log('_pageLayoutType:', anyContext._pageLayoutType );
// console.log('pageLayoutType:', anyContext.pageLayoutType );
// // Changed expandoStyle from buildExpandoStyle function based on https://github.com/mikezimm/CoreFPS114/issues/6
// // let expandobuildExpandoStyle = buildExpandoStyle( errMessage, wpProps, bbs.errorObjArray, bbs.expandoErrorObj );
// let expandoStyleObject = getReactCSSFromString( 'expandoStyle', wpProps.expandoStyle, {} );
// let styleErrors : string[] = [];
// if ( bannerStyle.errMessage ) { styleErrors.push( bannerStyle.errMessage ) ; }
// if ( bannerCmdStyle.errMessage ) { styleErrors.push( bannerCmdStyle.errMessage ) ; }
// if ( expandoStyleObject.errMessage ) { styleErrors.push( expandoStyleObject.errMessage ) ; }
// let styleErrorMessage = styleErrors.length > 0 ? `; ${styleErrors.join('; ')}` : '';
// bbs.errMessage += styleErrorMessage;
// let showBannerError = bbs.errMessage !== '' && bbs.errMessage !== null ? true : false;
// //Always pass false for verifyAudienceVsUser 'beAUser' or it will hide the beAUser Icon.
// const showBeAUserIcon = verifyAudienceVsUser( FPSUser , showTricks, wpProps.beAUserAudience, SPPermission.addAndCustomizePages, false );
// // let showBeAUserIcon: boolean = false;
// // if ( ( wpProps.expandoAudience && wpProps.expandoAudience !== 'Everyone')
// // || ( wpProps.homeParentGearAudience && wpProps.homeParentGearAudience !== 'Everyone' ) ) {
// // showBeAUserIcon = true;
// // }
// let infoElement = 'More Information';
// if ( wpProps.infoElementChoice === 'Text' ) {
// infoElement = wpProps.infoElementText;
// } else if ( wpProps.infoElementChoice ) {
// infoElement = wpProps.infoElementChoice;
// }
// let bannerProps: IWebpartBannerProps = {
// webpartHistory: wpProps.webpartHistory,
// FPSUser: FPSUser,
// exportProps: bbs.exportProps,
// pageContext: bbs.context.pageContext,
// displayMode: displayMode,
// WebPartHelpElement: null,
// panelTitle: showBannerError === true ? bbs.errMessage : bannerTitle ,
// infoElement: infoElement,
// contentPages: {
// aboutTable: null,
// advancedContent: null,
// basicsContent: null,
// errorsContent: null,
// futureContent: null,
// getRandomTip: null,
// gettingStartedContent: null,
// tricksTable: null,
// webParTips: [],
// whyContent: null,
// },
// bannerWidth : bbs.clientWidth,
// showBanner: showTricks === true || bbs.forceBanner === true || wpProps.showBanner !== false ? true : false,
// feedbackEmail: wpProps.feedbackEmail ? wpProps.feedbackEmail : '',
// showTricks: showTricks,
// showBannerGear: showBannerGear,
// showGoToHome: showGoToHome,
// showGoToParent: showGoToParent,
// showRepoLinks: showRepoLinks,
// showExport: showExport,
// showFullPanel: showFullPanel,
// replacePanelHTML: wpProps.replacePanelHTML,
// replacePanelWarning: bbs.replacePanelWarning,
// // onHomePage: anyContext._pageLayoutType === 'Home' ? true : false,
// onHomePage: bbs.context.pageContext.legacyPageContext.isWebWelcomePage === true ? true : false,
// hoverEffect: wpProps.bannerHoverEffect === false ? false : true,
// //This was my modified attempt that didn't work
// title: showBannerError === true ? bbs.errMessage : bannerTitle ,
// bannerReactCSS: showBannerError === true ? { background: "yellow", color: "red", } : bannerStyle.parsed ,
// bannerCmdReactCSS: bannerCmdStyle.parsed ,
// gitHubRepo: bbs.repoLinks,
// farElements: [],
// nearElements: [],
// earyAccess: bbs.earyAccess,
// wideToggle: bbs.wideToggle,
// //2022-02-17: Added these for expandoramic mode
// domElement: bbs.context.domElement,
// pageLayout: wpProps.pageLayout, // like SinglePageApp etc... this.context[_pageLayout];
// enableExpandoramic: enableExpandoramic,
// expandoDefault: wpProps.expandoDefault,
// expandoStyle: expandoStyleObject.parsed,
// expandAlert: bbs.expandAlert,
// expandConsole: bbs.expandConsole,
// expandoPadding: wpProps.expandoPadding,
// //2022-02-17: END additions for expandoramic mode
// beAUser: bbs.beAUser,
// showBeAUserIcon: showBeAUserIcon,
// beAUserFunction: null,
// };
// //close #129: This makes the maxWidth added in fps options apply to banner as well.
// if ( wpProps.fpsContainerMaxWidth && wpProps.fpsContainerMaxWidth.length > 0 && bannerProps.bannerReactCSS ) {
// bannerProps.bannerReactCSS.maxWidth = wpProps.fpsContainerMaxWidth;
// }
// return { errMessage: bbs.errMessage, bannerProps: bannerProps, errorObjArray: [ expandoStyleObject.errMessage ], };
// }
//# sourceMappingURL=WebPartRenderBannerV2.js.map