UNPKG

@mikezimm/npmfunctions

Version:
388 lines 23.7 kB
"use strict"; 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