{"version":3,"file":"static/js/application.async.non-landing~fa003125.3ef3a406.chunk.js","mappings":"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,EAAWC,GAAO,EAAO,E,0BClEpFopB,GAAwB,CACnCxB,OAAQ,CACN,QACA,YACA,gBACA,mBACA,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,UAEFC,UAAW,CACT,QACA,YACA,gBACA,mBACA,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,UAEF5pC,MAAO,CACL,QACA,YACA,gBACA,mBACA,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEF6pC,UAAW,CACT,QACA,YACA,gBACA,mBACA,iBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFzyB,OAAQ,CACN,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFg0B,qBAAsB,CACpB,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFrrC,QAAS,CACP,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEF+pC,OAAQ,CACN,WACA,WACA,UACA,UAEFC,QAAS,CACP,QACA,YACA,gBACA,mBACA,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,WAISsB,GAAyB,CACpC,MAAO,CACLtB,QAAS,GACT/pC,MAAO,GACPoX,OAAQ,GACRrX,QAAS,GACT+pC,OAAQ,GACRD,UAAW,GACXuB,qBAAsB,IAExB,KAAM,CACJzB,OAAQ,GACRC,UAAW,GACXG,QAAS,CAAC,YACV/pC,MAAO,CAAC,YACRoX,OAAQ,CAAC,YACTrX,QAAS,CAAC,YACV+pC,OAAQ,GACRsB,qBAAsB,CAAC,aAEzB,MAAO,CACLzB,OAAQ,GACRC,UAAW,GACXG,QAAS,CAAC,YACV/pC,MAAO,CAAC,YACRoX,OAAQ,CAAC,YACTrX,QAAS,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EFC,gBAAiB,CACf,gBAGJ5zC,0BAA2B,CACzBoB,QAAS,CACP,cACA,eACA,iBACA,eACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFsyC,UAAW,CACT,eAEFC,iBAAkB,CAChB,gBAEFC,gBAAiB,CACf,iBAGJ3zC,yBAA0B,CACxBmB,QAAS,CACP,cACA,eACA,cACA,YACA,iBACA,eACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFsyC,UAAW,CACT,cACA,aAEFC,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJ1zC,oBAAqB,CACnBkB,QAAS,CACP,cACA,eACA,cACA,OACA,SACA,UACA,aACA,aACA,aACA,gBACA,iBACA,iBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFsyC,UAAW,GAEXC,iBAAkB,CAChB,QAEFC,gBAAiB,CACf,SAGJzzC,yBAA0B,CACxBiB,QAAS,CACP,cACA,eACA,cACA,YACA,UACA,eACA,iBACA,gBACA,eACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFsyC,UAAW,GAEXC,iBAAkB,CAChB,WAEFC,gBAAiB,CACf,YAGJC,8BAA+B,CAC7BH,UAAW,CACT,cACA,UACA,mBAEFtyC,QAAS,CACP,cACA,eACA,YACA,UACA,kBACA,kBAGJ0yC,mBAAoB,CAClB1yC,QAAS,CACP,cACA,eACA,cACA,WACA,YACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,yBACA,gCACA,iCACA,cACA,iBACA,qBAEFsyC,UAAW,CACT,YACA,0BAEFC,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJxzC,6BAA8B,CAC5BgB,QAAS,CACP,cACA,eACA,cACA,cACA,YACA,UACA,OACA,eACA,qBACA,WACA,UACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFsyC,UAAW,CACT,eAEFC,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJvzC,gCAAiC,CAC/Be,QAAS,CACP,cACA,eACA,cACA,iBACA,iBACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFsyC,UAAW,CACT,kBAEFC,iBAAkB,CAChB,kBAEFC,gBAAiB,CACf,mBAGJ9zC,gCAAiC,CAC/BsB,QAAS,CACP,cACA,eACA,cACA,iBACA,eACA,yBACA,uBACA,wCACA,6BACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,cACA,iBACA,qBAEFsyC,UAAW,CACT,iBAGJK,+BAAgC,CAC9B3yC,QAAS,CACP,cACA,cACA,SACA,UACA,aACA,aACA,aACA,iBACA,SACA,SACA,SACA,iBACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFsyC,UAAW,CACT,UACA,iBACA,SACA,SACA,WAGJpzC,0BAA2B,CACzBozC,UAAW,CACT,aACA,aAEFtyC,QAAS,CACP,aACA,eACA,eACA,gBACA,cACA,YACA,eACA,cACA,oBACA,gBACA,mBACA,2BACA,mCACA,cACA,SACA,MACA,UAGJ4yC,sBAAuB,CACrBN,UAAW,CACT,QAEFtyC,QAAS,CACP,OACA,cACA,eACA,cACA,UACA,iBACA,eAGJ6yC,4BAA6B,CAC3B7yC,QAAS,CACP,cACA,eACA,cACA,iBACA,cACA,SACA,MACA,QACA,UACA,cACA,iBACA,UACA,kBACA,qBAEFsyC,UAAW,IAGbQ,8BAA+B,CAC7BR,UAAW,CACT,eAEFtyC,QAAS,CACP,cACA,eACA,cACA,iBACA,UACA,QACA,YACA,OACA,SACA,aACA,aACA,qBACA,mBACA,iBACA,kBACA,oBACA,wBACA,wBACA,cACA,SACA,MACA,aACA,kBACA,2BACA,mCACA,cACA,iBACA,sBAGJb,0BAA2B,CACzBmzC,UAAW,CACT,cAEFtyC,QAAS,CACP,aACA,YACA,cACA,gBACA,aACA,eACA,YACA,OACA,SACA,cACA,SACA,QACA,MACA,aACA,cACA,UACA,iBACA,oBAGJ+yC,6BAA8B,CAC5BT,UAAW,CACT,gBAEFtyC,QAAS,CACP,OACA,0BACA,0BACA,8BACA,mCACA,mCACA,uCACA,+BACA,+BACA,uCACA,uCACA,uCACA,iDAGJgzC,4BAA6B,CAC3BV,UAAW,CACT,gBAEFtyC,QAAS,CACP,gBACA,eACA,qBACA,YACA,cACA,iBACA,mBACA,uBACA,uBACA,gBAGJ66B,+BAAgC,CAC9B76B,QAAS,CACP,iBACA,cACA,SACA,cACA,UACA,MACA,iBACA,gBAEFsyC,UAAW,CACT,kBAEFC,iBAAkB,CAChB,kBAEFC,gBAAiB,CACf,mBAGJS,6BAA8B,CAC5BX,UAAW,GACXtyC,QAAS,CACP,aACA,eACA,cACA,gBACA,YACA,eACA,aACA,eACA,YACA,cACA,eACA,iBACA,OACA,SACA,YACA,YACA,YACA,0BACA,eACA,eACA,QACA,OACA,cACA,SACA,MACA,QACA,kBCziBqB,CACzBkzC,2BAA4B,CAC1BlzC,QAAS,CACP,cACA,eACA,cACA,UACA,kBACA,YACA,cACA,SACA,cACA,MACA,cACA,aACA,iBACA,QACA,qBAEFsyC,UAAW,CACT,kBACA,YAGJa,sBAAuB,CACrBnzC,QAAS,CACP,cACA,eACA,cACA,SACA,UACA,aACA,aACA,aACA,kBACA,YACA,cACA,SACA,MACA,cACA,aACA,iBACA,QACA,qBAEFsyC,UAAW,CACT,oBAGJc,wBAAyB,CACvBpzC,QAAS,CACP,cACA,eACA,cACA,kBACA,oBACA,gBACA,2BACA,cACA,SACA,MACA,cACA,oBACA,iBACA,QACA,cAEFsyC,UAAW,CACT,kBACA,oBACA,gBACA,6BAGJe,iBAAkB,CAChBrzC,QAAS,CACP,cACA,eACA,cACA,YACA,UACA,YAEFsyC,UAAW,CACT,YACA,cCrF0B,CAC9B,oCAAqC,CACnCA,UAAW,CACT,eACA,cACA,iBAEFtyC,QAAS,CACP,eACA,cACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,cACA,iBACA,sBAGJ,qCAAsC,CACpCsyC,UAAW,CACT,eACA,cACA,aACA,iBAEFtyC,QAAS,CACP,eACA,cACA,aACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,gBAGJ,oCAAqC,CACnCsyC,UAAW,CACT,eACA,cACA,iBAEFtyC,QAAS,CACP,eACA,cACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,gBAGJ,wCAAyC,CACvCsyC,UAAW,CACT,UACA,cACA,eACA,cACA,WACA,yBACA,gBAEFtyC,QAAS,CACP,UACA,cACA,eACA,cACA,WACA,cACA,SACA,MACA,aACA,QACA,kBACA,yBACA,gCACA,iCACA,mBCvFiB,CACrBszC,oBAAqB,CACnBhB,UAAW,CACT,OACA,gBACA,cACA,eACA,eACA,gBACA,aACA,oBAEFtyC,QAAS,CACP,OACA,gBACA,cACA,eACA,eACA,cACA,gBACA,aACA,qBAGJuzC,sBAAuB,CACrBvzC,QAAS,CACP,eACA,gBACA,aACA,gBACA,qBACA,eACA,eACA,kBACA,gBACA,uBACA,qBACA,SACA,iBACA,eACA,aACA,iBAEFsyC,UAAW,CACT,QACA,WAGJkB,uBAAwB,CACtBxzC,QAAS,CACP,eACA,gBACA,eACA,gBACA,uBACA,uBACA,qBACA,iBACA,eACA,cACA,gBAEFsyC,UAAW,CACT,QACA,eACA,gBACA,gBACA,qBACA,iBACA,eACA,iBAGJlzC,qBAAsB,CACpBY,QAAS,CACP,gBACA,cACA,gBACA,qBACA,uBACA,wBACA,aACA,eACA,oBACA,eACA,wBACA,mBACA,YACA,WACA,mBACA,mBACA,sBACA,cACA,mBACA,uBACA,wBAEFsyC,UAAW,CACT,aACA,eACA,4BCpGuB,CAC3BmB,kCAAmC,CACjCnB,UAAW,CACT,YAEFtyC,QAAS,CACP,WACA,eACA,cACA,YACA,aACA,mBACA,cACA,aACA,WACA,aAGJ0zC,4BAA6B,CAC3B1zC,QAAS,CACP,eACA,cACA,eACA,eACA,mBACA,aACA,WACA,WACA,YAEFsyC,UAAW,CACT,aAGJqB,yBAA0B,CACxBrB,UAAW,CACT,SACA,YACA,cACA,aACA,eACA,oBAEFtyC,QAAS,CACP,SACA,YACA,cACA,aACA,eACA,uBCjDa,CACjB4zC,+BAAgC,CAC9B5zC,QAAS,CACP,cACA,eACA,cACA,kBACA,WACA,cACA,SACA,MACA,aACA,kBACA,cACA,iBACA,oBACA,2BACA,mCACA,SAEFsyC,UAAW,CACT,oBAGJuB,6BAA8B,CAC5B7zC,QAAS,CACP,cACA,eACA,cACA,YACA,YACA,YACA,WACA,cACA,SACA,MACA,aACA,kBACA,cACA,iBACA,oBACA,2BACA,mCACA,SAEFsyC,UAAW,CACT,YACA,YACA,cAGJwB,gCAAiC,CAC/B9zC,QAAS,CACP,cACA,eACA,cACA,cACA,kBACA,WACA,cACA,SACA,MACA,aACA,kBACA,cACA,iBACA,oBACA,2BACA,mCACA,SAEFsyC,UAAW,CACT,kBCxEiB,CACrByB,kCAAmC,CACjC/zC,QAAS,CACP,cACA,eACA,cACA,qBACA,eACA,gBACA,gBACA,cACA,SACA,MACA,aACA,mCACA,QACA,cACA,iBACA,oBACA,kBAEFsyC,UAAW,CACT,eACA,kBAGJ0B,sCAAuC,CACrCh0C,QAAS,CACP,cACA,eACA,cACA,qBACA,eACA,gBACA,cACA,SACA,MACA,aACA,aACA,QACA,mCACA,kBAEFsyC,UAAW,CACT,qBACA,iBAGJ2B,kCAAmC,CACjCj0C,QAAS,CACP,cACA,eACA,cACA,oBACA,QACA,cACA,SACA,MACA,aACA,aACA,QACA,cACA,iBACA,oBACA,mCACA,kBAEFsyC,UAAW,IAGb4B,oCAAqC,CACnC5B,UAAW,CACT,cACA,eACA,eAEFtyC,QAAS,CACP,cACA,eACA,cACA,oBACA,QACA,qBACA,eACA,gBACA,cACA,SACA,MACA,aACA,mCACA,QACA,cACA,iBACA,oBACA,mBAGJm0C,wBAAyB,CACvB7B,UAAW,CACT,cACA,eACA,eACA,gCACA,kBAEFtyC,QAAS,CACP,cACA,eACA,qBACA,eACA,gBACA,4BACA,2BACA,kCAGJo0C,qCAAsC,CACpC9B,UAAW,CACT,cACA,eACA,cACA,kBACA,kBAEFtyC,QAAS,CACP,cACA,eACA,cACA,qBACA,oBACA,kBACA,oBCnImB,CACvBq0C,wBAAyB,CACvB/B,UAAW,CACT,WACA,UAEFtyC,QAAS,CACP,cACA,eACA,cACA,iBACA,WACA,SACA,cACA,2BACA,mCACA,SACA,cACA,UAGJs0C,uCAAwC,CACtChC,UAAW,CACT,cACA,cACA,eACA,mBAEFtyC,QAAS,CACP,cACA,eACA,cACA,cACA,eACA,kBACA,iBACA,cACA,SACA,cACA,QACA,kBACA,2BACA,qCAGJ8yC,8BAA+B,CAC7BR,UAAW,GACXtyC,QAAS,CACP,cACA,UACA,QACA,YACA,OACA,cACA,SACA,MACA,aACA,QACA,cACA,2BACA,mCACA,mBAGJu0C,4BAA6B,CAC3BjC,UAAW,GACXtyC,QAAS,CACP,cACA,UACA,QACA,YACA,OACA,eACA,uBACA,cACA,SACA,MACA,aACA,QACA,cACA,2BACA,mCACA,mBAGJw0C,uBAAwB,CACtBlC,UAAW,GACXtyC,QAAS,CACP,cACA,YACA,gBACA,eACA,aACA,cACA,YACA,QACA,cACA,QACA,aACA,aACA,wBACA,wBACA,wBACA,sBACA,0BCxGgB,CACpBy0C,mBAAoB,CAClBz0C,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFsyC,UAAW,CACT,gBAGJoC,oBAAqB,CACnB10C,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFsyC,UAAW,CACT,gBAGJqC,mBAAoB,CAClB30C,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFsyC,UAAW,CACT,gBAGJsC,mBAAoB,CAClB50C,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFsyC,UAAW,CACT,gBAGJuC,cAAe,CACb70C,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFsyC,UAAW,CACT,kBC/De,CACnBwC,gCAAiC,CAC/B90C,QAAS,CACP,cACA,eACA,cACA,kBACA,oBACA,YACA,UACA,OACA,QACA,QACA,aACA,cACA,SACA,MACA,aACA,QACA,WAEFsyC,UAAW,CACT,eAEFC,iBAAkB,GAElBC,gBAAiB,IAGnBuC,4BAA6B,CAC3B/0C,QAAS,CACP,cACA,eACA,cACA,aACA,gBACA,kBACA,oBACA,YACA,UACA,OACA,QACA,QACA,aACA,cACA,SACA,MACA,aACA,QACA,WAEFsyC,UAAW,CACT,eAEFC,iBAAkB,GAElBC,gBAAiB,MCxDC,CACpBwC,sBAAuB,CACrB1C,UAAW,GACXtyC,QAAS,CACP,cACA,eACA,aACA,iBACA,cACA,SACA,MACA,QACA,YACA,wBACA,kBACA,cACA,uBACA,MACA,YACA,0BACA,MACA,gBACA,8BACA,MACA,UACA,kBACA,qBACA,2BC3BgB,CACpBi1C,uBAAwB,CACtB3C,UAAW,GACXtyC,QAAS,CACP,cACA,YACA,eACA,aACA,UACA,eACA,YACA,cACA,cACA,SACA,MACA,QACA,aACA,wBACA,wBACA,wBACA,sBACA,0BCrB6B,CACjCk1C,qCAAsC,CACpC5C,UAAW,GACXtyC,QAAS,CACP,aACA,aACA,aACA,UACA,kBACA,gBACA,qBACA,cACA,YACA,cACA,YACA,uBACA,qBACA,wBACA,sBACA,mBACA,mBAGJm1C,uCAAwC,CACtC7C,UAAW,GACXtyC,QAAS,CACP,cACA,aACA,aACA,aACA,UACA,qBACA,2BACA,wBC/BOo1C,EAAkB,CAC7BvsC,eAAgB,CACdvkB,UAAW,WAAF,OAAQ,CAAI,EACrB5qC,QAAS,CACP,iBACA,oBACA,uBACA,qBACA,0BACA,aACA,0BACA,+BAGJ27F,IAAK,CACH/wD,UAAW,SAAAnwC,GAAW,OAAIA,EAAYmhG,oBAAoB,EAC1D57F,QAAS,CACP,WACA,eACA,eACA,iCACA,sCACA,wCACA,gBAGJ04D,aAAc,CACZ9tB,UAAW,WAAF,OAAQ,CAAI,EACrB5qC,QAAS,CAAC,iBAEZ44D,SAAU,CACRhuB,UAAW,SAAAnwC,GAAW,OACpBA,EAAYohG,wCAAwC,EACtD77F,QAAS,CAAC,aAEZguD,YAAa,CACXpjB,UA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","sources":["../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/index.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/show-rejection-reasons.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/assets-grid.js","../../../../responsive-search-ad/packages/asset-inline-edit/src/ad-helper.js","../../../../responsive-search-ad/packages/asset-inline-edit/src/instrumentation-schema.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/asset.js","../../../../responsive-search-ad/packages/asset-inline-edit/src/text-asset-inline-edit-rsa.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/asset-type.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/status.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/pinned-field.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/asset-source.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/asset-mma.js","../../../../responsive-search-ad/packages/asset-inline-edit/src/text-asset-inline-edit-mma.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/asset-id.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/policy-status.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/index.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/grid-config.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/show-ad-strength.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/plugins.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/assets-gridview-factory.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/error-handler.js","../../reports-v4-component/src/constants.js","../../reports-v4-component/src/utils.js","../../reports-v4-component/src/styles/billing-document-cell.js","../../reports-v4-component/src/styles/amount-cell.js","../../reports-v4-component/src/styles/change-type-cell.js","../../reports-v4-component/src/styles/amount-total-cell.js","../../reports-v4-component/src/styles/insertion-order-selector.js","../../reports-v4-component/src/styles/insertion-order-details.js","../../reports-v4-component/src/controls/billing-document-cell.js","../../reports-v4-component/src/controls/amount-cell.js","../../reports-v4-component/src/controls/change-type-cell.js","../../reports-v4-component/src/controls/amount-total-cell.js","../../reports-v4-component/src/hooks/use-insertion-order-data.js","../../reports-v4-component/src/controls/insertion-order-selector-callout.js","../../reports-v4-component/src/controls/insertion-order-selector.js","../../reports-v4-component/src/controls/insertion-order-details.js","../../reports-v4-filter-view-manager/src/filter-view-manager.js","../../reports-v4-footer/src/index.js","../../reports-v4-my-reports/src/toolbar/schema.js","../../reports-v4-my-reports/src/toolbar/filter-config.js","../../reports-v4-my-reports/src/toolbar/toolbar-config.js","../../reports-v4-my-reports/src/actions/shared.js","../../reports-v4-my-reports/src/actions/inline-edit/name.js","../../reports-v4-my-reports/src/columns/report-name-column.js","../../reports-v4-my-reports/src/columns/report-base-column.js","../../reports-v4-my-reports/src/actions/inline-edit/frequency.js","../../reports-v4-my-reports/src/columns/scheduled-frequency-column.js","../../reports-v4-my-reports/src/actions/inline-edit/date-range.js","../../reports-v4-my-reports/src/columns/date-range-column.js","../../reports-v4-my-reports/src/columns/createde-by-column.js","../../reports-v4-my-reports/src/columns/shared-column.js","../../reports-v4-my-reports/src/columns/last-accessed-column.js","../../reports-v4-my-reports/src/columns/created-on-column.js","../../reports-v4-my-reports/src/columns/index.js","../../reports-v4-my-reports/src/helper/index.js","../../reports-v4-my-reports/src/grid.js","../../reports-v4-my-reports/src/actions/bulk-edit.js","../../reports-v4-my-reports/src/style/index.js","../../reports-v4-my-reports/src/my-reports.js","../../reports-v4-report-preview/src/helpers/account-selector-helper.js","../../reports-v4-report-preview/src/helpers/row-helper.js","../../reports-v4-report-preview/src/helpers/insertion-order-helper.js","../../reports-v4-report-preview/src/helpers/grid-helper.js","../../reports-v4-report-preview/src/style/index.js","../../reports-v4-report-preview/src/report-preview/TimeTravel/index.ts","../../reports-v4-report-preview/src/report-preview/converters/convert-date-range.js","../../reports-v4-report-preview/src/report-preview/converters/convert-filter.js","../../reports-v4-report-preview/src/report-preview/converters/convert-conditional-formats.js","../../reports-v4-report-preview/src/report-preview/converters/convert-old-task-item.js","../../reports-v4-report-preview/src/report-preview/converters/index.js","../../reports-v4-report-preview/src/report-preview/converters/convert-report-options.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/default-time-ranges.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/get-today.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/data-persistance-enum.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/get-minimum-supported-day.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/time-grain-range-options.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/time-ranges.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/util.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/update-time-range.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker-style.js","../../reports-v4-report-preview/src/report-preview/date-picker/date-picker.js","../../reports-v4-report-preview/src/helpers/default-sorting-column-helper.js","../../reports-v4-report-preview/src/report-preview/converters/default-value.js","../../reports-v4-report-preview/src/helpers/default-filter-helper.js","../../reports-v4-report-preview/src/report-preview/error-view.js","../../reports-v4-report-preview/src/helpers/insertion-order-column-helper.js","../../reports-v4-report-preview/src/helpers/use-warnings.js","../../reports-v4-report-preview/src/report-preview/name-editor/index.js","../../reports-v4-report-preview/src/report-preview/navigate-dialog/index.js","../../reports-v4-report-preview/src/report-preview/toolbar-config.js","../../reports-v4-report-preview/src/report-preview/filter/strings.js","../../reports-v4-report-preview/src/report-preview/filter/filter-schema-processor.js","../../reports-v4-report-preview/src/report-preview/filter/index.js","../../reports-v4-report-preview/src/report-preview/account-selector/styles.js","../../reports-v4-report-preview/src/report-preview/account-selector/multiple-account-selector.js","../../reports-v4-report-preview/src/report-preview/account-selector/user-scope-input.js","../../reports-v4-report-preview/src/report-preview/account-selector/account-selector-callout.js","../../reports-v4-report-preview/src/report-preview/account-selector/account-selector-button.js","../../reports-v4-report-preview/src/report-preview/report-grid.js","../../reports-v4-report-preview/src/report-preview/report-grid-modal/report-grid-modal-style.js","../../reports-v4-report-preview/src/report-preview/report-grid-modal/index.js","../../reports-v4-report-preview/src/report-preview/summary-bar/cronConverter.js","../../reports-v4-report-preview/src/report-preview/summary-bar/trivia.js","../../reports-v4-report-preview/src/helpers/is-report-shared.js","../../reports-v4-report-preview/src/report-preview/summary-bar/index.js","../../reports-v4-report-preview/src/report-preview/timezone-selector/timezone-selector.js","../../reports-v4-report-preview/src/report-preview/warning.js","../../reports-v4-report-preview/src/report-preview/side-panel-report-grid-modal/report-grid-modal-style.js","../../reports-v4-report-preview/src/report-preview/side-panel-report-grid-modal/index.js","../../reports-v4-report-preview/src/helpers/search-category-helper.js","../../reports-v4-report-preview/src/report-preview/preview-page-for-common.js","../../reports-v4-report-preview/src/report-preview/preview-page-for-user-scope.js","../../reports-v4-report-preview/src/report-preview/reduce-scope/helper.js","../../reports-v4-report-preview/src/report-preview/reduce-scope/index.js","../../reports-v4-report-preview/src/report-preview/utils.js","../../reports-v4-report-preview/src/report-preview/index.js","../../reports-v4-report-preview/src/report-preview/preview-page-for-legacy.js","../../reports-v4-report-preview/src/helpers/dynamic-filter-options-helper.js","../../reports-v4-report-preview/src/report-preview/converters/convert-collapsed-rows.js","../../reports-v4-schedule-frequency-icon-editor/src/styles.js","../../reports-v4-email-picker/src/styles.js","../../reports-v4-email-picker/src/spin.js","../../reports-v4-email-picker/src/editor.js","../../reports-v4-email-picker/index.js","../../reports-v4-schedule-frequency-icon-editor/src/scheduler/styles/input-title-style.js","../../reports-v4-schedule-frequency-icon-editor/src/scheduler/frequency.js","../../reports-v4-schedule-frequency-icon-editor/src/scheduler/consts.js","../../reports-v4-schedule-frequency-icon-editor/src/scheduler/start-end-date.js","../../reports-v4-schedule-frequency-icon-editor/src/scheduler/FileFormatSelector.js","../../reports-v4-schedule-frequency-icon-editor/src/scheduler/index.js","../../reports-v4-schedule-frequency-icon-editor/src/frequency-edit-panel.js","../../reports-v4-schedule-frequency-icon-editor/src/index.js","../../reports-v4-schedule-frequency-icon-editor/index.js","../../reports-v4-schema/src/columns/restriction-column-sets.js","../../reports-v4-schema/src/columns/elevated-columns/index.js","../../reports-v4-schema/src/columns/elevated-columns/performance.js","../../reports-v4-schema/src/columns/elevated-columns/ad-extension.js","../../reports-v4-schema/src/columns/elevated-columns/advanced-insights.js","../../reports-v4-schema/src/columns/elevated-columns/billing.js","../../reports-v4-schema/src/columns/elevated-columns/change-history.js","../../reports-v4-schema/src/columns/elevated-columns/dsa.js","../../reports-v4-schema/src/columns/elevated-columns/product.js","../../reports-v4-schema/src/columns/elevated-columns/targeting.js","../../reports-v4-schema/src/columns/elevated-columns/labels.js","../../reports-v4-schema/src/columns/elevated-columns/hotel.js","../../reports-v4-schema/src/columns/elevated-columns/app.js","../../reports-v4-schema/src/columns/elevated-columns/assets.js","../../reports-v4-schema/src/columns/elevated-columns/marketplace-insights.js","../../reports-v4-schema/src/columns/piloted-columns/restriction-sets.js","../../reports-v4-schema/src/columns/piloted-columns/default-sets.js","../../reports-v4-schema/src/columns/piloted-columns/index.js","../../reports-v4-schema/src/columns/help-link-ids.js","../../reports-v4-schema/src/columns/missing-mandatory-column-error.js","../../reports-v4-schema/src/filter-processor.js","../../reports-v4-schema/src/column-processor.js","../../reports-v4-schema/src/columns/customize-option.js","../../reports-v4-schema/src/schema-processor.js","../../reports-v4-schema/src/shared-field-processor.js","../../reports-v4-schema/src/columns/get-aggregation-restrictions.js","../../reports-v4-schema/src/polyFillReportSchema.js","../../reports-v4-schema/src/overrides/time-range-override.js","../../reports-v4-schema/src/report-schema.js","../../reports-v4-schema/src/unified-report-schema.js","../../reports-v4-schema/src/deprecated-reports.js","../../reports-v4-schema/src/old-schema-converter.js","../../reports-v4-strings/src/date-range-preset.js","../../reports-v4-strings/src/report-type.js","../../reports-v4-summary-bar/src/styles.js","../../reports-v4-summary-bar/src/summary-bar.js","../../reports-v4-summary-bar/src/divider.js","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/image.pug","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/policy-status.pug","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/status-header.pug","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/status.pug","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/text.pug","../../../../responsive-search-ad/packages/responsive-search-ad-assets-grid/src/columns/video.pug","../../reports-v4-column-chooser/src/types.ts","../../reports-v4-column-chooser/src/ItemRow.tsx","../../reports-v4-column-chooser/src/SelectedItemRow.tsx","../../reports-v4-column-chooser/src/utils/text.ts","../../reports-v4-column-chooser/src/utils/style.ts","../../reports-v4-column-chooser/src/SelectedColumns.tsx","../../reports-v4-column-chooser/src/DragLayerPreview.tsx","../../reports-v4-column-chooser/src/AvailableColumns.tsx","../../reports-v4-column-chooser/src/index.tsx","../../reports-v4-column-chooser/src/utils/exclusionRuleHelper.ts","../../reports-v4-column-chooser/theme.ts","../../reports-v4-column-chooser/helper.ts","../../reports-v4-column-chooser/index.tsx"],"sourcesContent":["import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nimport pkg from './package.json';\r\n\r\nexport const { version } = pkg;\r\n\r\nexport { setUpErrorHandling } from './src/error-handler';\r\n\r\nexport function getAssetsGridFactory(initializeGlobalContext = true) {\r\n if (initializeGlobalContext) {\r\n return globalContext.define(\r\n pkg.legacyDependencies,\r\n () => import(/* webpackMode: 'eager' */ './src/assets-gridview-factory')\r\n );\r\n }\r\n return import(/* webpackMode: 'eager' */ './src/assets-gridview-factory');\r\n}\r\n","/* eslint-disable no-bitwise */\r\n/* istanbul ignore file */\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { getEditorialTemplates, ENTITY } from '@bingads-webui-campaign/delivery-status-popup-factory';\r\n\r\nconst odata = globalContext.require('module/service/communication/channel/odata');\r\nconst locationI18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/location-targets');\r\nconst commonI18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/ads-tab/common');\r\nconst errI18n = globalContext.require('component/api-errors-campaign/index');\r\nconst editorialRejection = globalContext.require('component/api-errors-campaign/map/editorialRejectionFwdLinkId');\r\n\r\nfunction fetchRejectionReasons({ item }) {\r\n const url = 'Advertiser/Customers()/Accounts()/Assets/GetEditorialReasons';\r\n return odata.post(url, {\r\n Entities: JSON.stringify({ [item.Asset.Id]: item.Asset.AssetType }),\r\n });\r\n}\r\n\r\nexport function getReasonTemplates({\r\n item, i18n, permissions, scope,\r\n}) {\r\n return new Promise((resolve) => {\r\n fetchRejectionReasons({ item }).then((data) => {\r\n if (!data || _.isEmpty(data) || _.isEmpty(data[0].Reasons)) resolve([i18n.getString('NoRejectionReasonFound')]);\r\n\r\n const options = {\r\n reasons: data[0].Reasons,\r\n editorialRejection,\r\n errI18n,\r\n i18n: commonI18n,\r\n locationI18n,\r\n commonI18n,\r\n entity: ENTITY.ASSET,\r\n deliveryStatus: item.EditorialStatus,\r\n isAppealable: data[0].IsAppealable,\r\n permissions,\r\n hideParentLevel: true,\r\n scope,\r\n };\r\n const reasonTemplates = getEditorialTemplates(options);\r\n\r\n resolve(reasonTemplates);\r\n });\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport { DeterministicWrapperView } from '@bingads-webui/deterministic-wrapper-view';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { pgridFactory } from '@bingads-webui-campaign/pgrid-factory';\r\nimport { registerCountryListEvent } from '@bingads-webui-campaign/delivery-status-popup-factory';\r\nimport { updateGridQuery } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { getReasonTemplates } from './show-rejection-reasons';\r\n\r\nconst pageContext = globalContext.require('PageContext');\r\nconst { handleSortChange } = globalContext.require('campaignui/feature/bingadsgrid/service/state-manager-helper');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/ads-tab');\r\nconst AppealAggregator = globalContext.requireDefault('campaignui/feature/editorial-appeal/aggregator');\r\n\r\nexport class AssetsGrid extends DeterministicWrapperView {\r\n viewFactory({\r\n router,\r\n scope,\r\n filterService,\r\n preferenceConfig,\r\n getGridConfig,\r\n getPlugins,\r\n setupDataSourceErrorHandling,\r\n isForVNext = false,\r\n }) {\r\n setupDataSourceErrorHandling(this);\r\n\r\n const gridConfig = getGridConfig(this);\r\n const permissions = pageContext.Permissions;\r\n\r\n this.isForVNext = isForVNext;\r\n this.scope = scope;\r\n this.router = router;\r\n this.filterService = filterService;\r\n this.isInitialGrid = true;\r\n this.permissions = permissions;\r\n this.rejectionPopupContainerSelector = '#rejectionContainer';\r\n this.popoverId = 'delivery-status-popup-callout';\r\n this.appealAggregator = null;\r\n\r\n const RequestExceptionCallBack =\r\n (assetsGrid, container = null) => {\r\n if (!this || !this.appealAggregator) {\r\n this.appealAggregator = new AppealAggregator({\r\n grid: assetsGrid.grid,\r\n controller: 'Asset',\r\n submit: 'SubmitAppeal',\r\n menuToFollow: 'button-ad-edit',\r\n isForVNext: this.isForVNext,\r\n permissions,\r\n });\r\n }\r\n this.appealAggregator.openBulkEditor(\r\n i18n.getString('bulkAssetAppealTitle'),\r\n container, null, false, null, this.scope\r\n );\r\n return this.appealAggregator.bulkEditor;\r\n };\r\n\r\n const RequestExceptionCallBackFromPopup = (assetsGrid) => {\r\n if (this.isForVNext) {\r\n this.trigger('closeDeliveryStatusPopup');\r\n } else {\r\n $(this.rejectionPopupContainerSelector).hide();\r\n }\r\n\r\n if (isForVNext) {\r\n const appealView = RequestExceptionCallBack(assetsGrid);\r\n assetsGrid.overrideWith(appealView.render());\r\n\r\n appealView.on('hide', () => {\r\n assetsGrid.overrideWith(null);\r\n appealView.remove();\r\n });\r\n\r\n return appealView;\r\n }\r\n\r\n return RequestExceptionCallBack(assetsGrid, '.assets-bulk-appeal', true);\r\n };\r\n\r\n this.RequestExceptionCallBack = RequestExceptionCallBack;\r\n this.RequestExceptionCallBackFromPopup = RequestExceptionCallBackFromPopup;\r\n\r\n this.grid = pgridFactory({\r\n gridConfig,\r\n plugins: getPlugins(this),\r\n preferenceConfig,\r\n });\r\n\r\n this.grid.gridView.on('willUpdate', (changes) => {\r\n // for the perf issue, should not patch preference when init view\r\n if (this.isInitialGrid) {\r\n this.isInitialGrid = false;\r\n return;\r\n }\r\n handleSortChange(changes, this.grid.gridView, gridConfig.name);\r\n });\r\n\r\n if (isForVNext) {\r\n this.filterService.on('filter-state-changed', () => {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(),\r\n true\r\n );\r\n });\r\n }\r\n\r\n if (permissions.dynamic && permissions.dynamic.AudienceAssetReport) {\r\n this.grid.gridView.on('didReload', (_isOk, data) => {\r\n const { config: { columns } } = this.grid;\r\n const patch = {};\r\n const videoItems = _.filter(data && data.items, item => _.get(item, 'AssociationType', '').includes('Video'));\r\n\r\n if (_.isEmpty(videoItems)) {\r\n patch.columns = columns.filter(col => !col.name.includes('Video'));\r\n } else {\r\n patch.columns = columns;\r\n }\r\n\r\n this.grid.gridView.patch(patch);\r\n });\r\n }\r\n\r\n return this.grid.gridView;\r\n }\r\n\r\n addEditorialHandler({ popupView }) {\r\n popupView.$('#requestException').on('click', _.partial(this.RequestExceptionCallBackFromPopup, this));\r\n registerCountryListEvent(popupView.$el);\r\n }\r\n\r\n showRejectionReason(event) {\r\n const key = this.grid.gridView.keyOfElement(event.target);\r\n const item = this.grid.gridView.itemWithKey(key);\r\n\r\n import(/* webpackMode: 'eager' */'@bingads-webui-campaign/delivery-status-popup-factory').then(({ showRejectionReasons }) => {\r\n showRejectionReasons({\r\n event,\r\n i18n,\r\n entity: item,\r\n deliveryStatusDetails: [item.EditorialStatus],\r\n getCustomTemplate: _.partial(getReasonTemplates, {\r\n event,\r\n scope: this.scope,\r\n i18n,\r\n item,\r\n grid: this.grid,\r\n permissions: this.permissions,\r\n }),\r\n useCustomTemplate: deliveryStatus => _.contains(['Rejected', 'RejectedAppealRejected', 'ApprovedLimited', 'ApprovedLimitedAppealRejected'], deliveryStatus),\r\n popoverId: this.popoverId,\r\n isForVNext: this.isForVNext,\r\n view: this.grid.gridView,\r\n afterRender: popup => this.addEditorialHandler({ popupView: popup }),\r\n isEditorialCategoryEnabled: true,\r\n isForAdsPageOnly: true,\r\n });\r\n });\r\n }\r\n\r\n hideRejectionPopup(e) {\r\n if ($(e.relatedTarget).closest(`#${this.popoverId}`).length === 0) {\r\n this.trigger('closeDeliveryStatusPopup');\r\n }\r\n }\r\n\r\n renderTrunk() {\r\n if (this.isForVNext) {\r\n this.filterService.refreshSource();\r\n this.filterService.initializeCombinedFilterPromise.then(() => {\r\n updateGridQuery(\r\n this.grid.gridView,\r\n this.filterService.getCombinedFilter(),\r\n true\r\n );\r\n });\r\n }\r\n super.renderTrunk();\r\n }\r\n\r\n get className() { return 'assets-grid'; }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { pick } from 'underscore';\r\n\r\nexport function fetchAd({\r\n edm,\r\n jsData,\r\n scope,\r\n}) {\r\n const {\r\n adId,\r\n } = scope;\r\n const params = {\r\n query: {\r\n entitySet: edm.currentAccount\r\n .Ads['Default.GridData']\r\n .$call({\r\n gridDataParameters: {},\r\n })\r\n .toJSON(),\r\n $count: true,\r\n $top: 1,\r\n $expand: 'Campaign($select=CampaignSettings,CampaignSubType,CampaignType,ExperimentId,Id),Labels',\r\n $filter: `Id eq ${adId}`,\r\n $select: 'DeliveryStatus,DeliveryStatusDetails,DisplayUrl,FinalUrlSuffix,FinalUrls,Id,MobileFinalUrls,Model.ResponsiveAd/BusinessName,Model.ResponsiveAd/CallToAction,Model.ResponsiveAd/CallToActionLanguage,Model.ResponsiveAd/Descriptions,Model.ResponsiveAd/Headline,Model.ResponsiveAd/Headlines,Model.ResponsiveAd/HotSpots,Model.ResponsiveAd/Images,Model.ResponsiveAd/ImpressionTrackingUrls,Model.ResponsiveAd/LandscapeImageMediaId,Model.ResponsiveAd/LandscapeImageMediaUrl,Model.ResponsiveAd/LandscapeLogoMediaId,Model.ResponsiveAd/LandscapeLogoMediaUrl,Model.ResponsiveAd/LongHeadline,Model.ResponsiveAd/LongHeadlines,Model.ResponsiveAd/SquareImageMediaId,Model.ResponsiveAd/SquareImageMediaUrl,Model.ResponsiveAd/SquareLogoMediaId,Model.ResponsiveAd/SquareLogoMediaUrl,Model.ResponsiveAd/Videos,Model.ResponsiveSearchAd/Descriptions,Model.ResponsiveSearchAd/Headlines,Status,Text,TextPart2,TrackingUrlTemplate,Type,UrlCustomParameters,Path1,Path2,DestinationUrl,DevicePreference,Title,TitlePart1,TitlePart2,TitlePart3',\r\n },\r\n };\r\n const options = {\r\n cacheResponse: false,\r\n };\r\n return jsData.Ad.findAll(params, options);\r\n}\r\n\r\nexport function processAssets(ad, updated, fieldName, fieldNameMap) {\r\n const result = pick(ad, Object.values(fieldNameMap));\r\n\r\n result[fieldNameMap[fieldName]].map((item) => {\r\n if (item.Asset.IdString === updated.Id) {\r\n item.Asset.Text = updated[fieldName];\r\n }\r\n return item;\r\n });\r\n return result;\r\n}\r\n\r\n","export const instrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'assetGrid',\r\n value: 'Asset Grid',\r\n activity: [\r\n {\r\n name: 'inlineEditRSAAsset',\r\n value: 'Inline Edit',\r\n },\r\n {\r\n name: 'inlineEditMMAAsset',\r\n value: 'Inline Edit',\r\n },\r\n ],\r\n }],\r\n};\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { TextInlineEditRSA } from '@bingads-webui-campaign/asset-inline-edit';\r\nimport template from './text.pug';\r\n\r\nexport class ColumnAsset extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n, view, scope, serverContext, permissions,\r\n }) {\r\n const title = i18n.getString('ColumnName_Asset');\r\n const adType = scope && scope.values && scope.values.adType;\r\n\r\n super({\r\n name: 'Asset',\r\n property: 'Asset/Text',\r\n sortable: 'Asset/Text',\r\n title,\r\n type: 'string',\r\n enableEdit: item => item.Asset.AssetType === 'Text' && item.Asset.AssetSource === 'AdvertiserProvided' && item.UiDisplayStatus === 'Active' && adType === 'ResponsiveSearch',\r\n bodyClasses: 'grid-column-Asset',\r\n helpId: 'pop_BA_RSA_Asset',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n this.i18n = i18n;\r\n this.view = view;\r\n this.scope = scope;\r\n this.serverContext = serverContext;\r\n this.permissions = permissions;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n Asset,\r\n }) => Asset.Text,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n return template({\r\n text: value,\r\n });\r\n }\r\n\r\n onPrompt({\r\n item, newPosition,\r\n }) {\r\n return TextInlineEditRSA({\r\n item,\r\n newPosition,\r\n view: this.view,\r\n i18n: this.i18n,\r\n scope: this.scope,\r\n itemToSchemaMap: {\r\n Headlines: 'Headline',\r\n Descriptions: 'Description',\r\n },\r\n schemaToItemMap: {\r\n Headline: 'Headlines',\r\n Description: 'Descriptions',\r\n },\r\n serverContext: this.serverContext,\r\n permissions: this.permissions,\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport _, { defaults } from 'underscore';\r\nimport { InlineEditableColumnPrompt } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { initializeAdCustomizer, getCharCountExcludingAdCustomizers } from '@bingads-webui-campaign/ad-customizers-next';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { getODataErrors } from '@bingads-webui-campaign/api-errors';\r\nimport { ResponsiveSearchAd } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport { fetchAd, processAssets } from './ad-helper';\r\nimport { instrumentationSchema } from './instrumentation-schema';\r\n\r\nexport function TextInlineEditRSA({\r\n item, newPosition, view, i18n, scope, itemToSchemaMap, schemaToItemMap, serverContext, permissions,\r\n}) {\r\n const newSchema = cloneDeep(ResponsiveSearchAd);\r\n const fieldName = itemToSchemaMap[item.AssociationType];\r\n newSchema.properties[fieldName].required = true;\r\n newSchema.properties[fieldName] = _.omit(newSchema.properties[fieldName], 'maxLength');\r\n item[fieldName] = item.Asset.Text;\r\n const { CurrentAccount } = serverContext;\r\n const { TimeZone } = CurrentAccount;\r\n instrumentation.addScenario(instrumentationSchema);\r\n const logScenario = instrumentation.assetGrid.create();\r\n const activityLogger = logScenario.inlineEditRSAAsset && logScenario.inlineEditRSAAsset.create();\r\n\r\n initializeAdCustomizer({\r\n deps: {\r\n i18n,\r\n permissions,\r\n instrumentation,\r\n timeZone: TimeZone,\r\n showAdCustomizers: true,\r\n edmCampaign,\r\n jsDataCampaign: jsdata,\r\n scope,\r\n },\r\n adType: 'ResponsiveSearchAd',\r\n });\r\n\r\n return InlineEditableColumnPrompt({\r\n position: newPosition,\r\n item,\r\n view,\r\n i18n,\r\n fieldName,\r\n schema: newSchema,\r\n customValidators: {\r\n [fieldName]: {\r\n isValid: (value) => {\r\n const charCount = getCharCountExcludingAdCustomizers({\r\n text: value,\r\n adType: 'ResponsiveSearchAd',\r\n field: item.AssociationType,\r\n });\r\n return charCount <= ResponsiveSearchAd.properties[fieldName].maxLength;\r\n },\r\n message: i18n.getString('Validation_String_Max_Length', { maxlength: ResponsiveSearchAd.properties[fieldName].maxLength }),\r\n },\r\n },\r\n saveModel: (updated, editorView) => {\r\n const {\r\n campaignId, adGroupId, adType, adId,\r\n } = scope.values;\r\n\r\n const callScope = {\r\n entitySet: edmCampaign.currentAccount.Campaigns.$withKey(campaignId).AdGroups.$withKey(adGroupId).Ads,\r\n cacheResponse: false,\r\n scenario: 'ads-grid',\r\n };\r\n const commonParams = {\r\n Campaign: { Id: campaignId },\r\n AdGroup: { Id: adGroupId },\r\n Type: adType,\r\n Id: adId,\r\n };\r\n\r\n fetchAd({\r\n edm: edmCampaign,\r\n jsData: jsdata,\r\n scope: scope.values,\r\n }).then((ad) => {\r\n const params = defaults(processAssets(ad[0], updated, fieldName, schemaToItemMap), commonParams);\r\n\r\n jsdata.ResponsiveSearchAd\r\n .create(params, callScope)\r\n .then(() => {\r\n if (permissions && permissions.dynamic.AdStrengthInAssetTopGrid) {\r\n view.grid.showAdStrength.refreshAdItem();\r\n }\r\n activityLogger.trace(`success inline edit for RSA Asset for ad ${ad[0].Id}`);\r\n editorView.trigger('save');\r\n view.grid.gridView.refresh(true);\r\n })\r\n .catch((response) => {\r\n activityLogger.trace(`fail inline edit for RSA Asset for ad ${ad[0].Id}: ${JSON.stringify(response)}`);\r\n if (!response || !response.errors) {\r\n editorView.setErrors({\r\n [fieldName]: i18n.getString('GenericErrorMessage_Short'),\r\n });\r\n } else {\r\n const errors = getODataErrors(response.errors, i18n);\r\n editorView.setErrors({\r\n [fieldName]: errors,\r\n });\r\n }\r\n })\r\n .finally(withUiBlock(view.grid.gridView.$el));\r\n })\r\n .catch(() => {\r\n editorView.setErrors({\r\n [fieldName]: i18n.getString('GenericErrorMessage_Short'),\r\n });\r\n })\r\n .finally(withUiBlock(view.grid.gridView.$el));\r\n },\r\n });\r\n}\r\n\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport template from './text.pug';\r\n\r\nexport class ColumnAssetType extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n, scope,\r\n }) {\r\n const title = i18n.getString('ColumnName_AssetType');\r\n\r\n const adType = scope && scope.values && scope.values.adType;\r\n\r\n const helpId = {\r\n ResponsiveSearch: 'pop_BA_RSA_AssetType',\r\n Responsive: 'pop_BA_MMA_AssetType',\r\n DynamicSearch: 'pop_BA_DSA_Asset_type',\r\n DynamicResponsive: 'pop_BA_DSA_Asset_type',\r\n };\r\n\r\n super({\r\n name: 'AssociationType',\r\n property: 'AssociationType',\r\n sortable: 'AssociationType',\r\n title,\r\n type: 'string',\r\n bodyClasses: 'grid-column-AssetType',\r\n helpId: helpId[adType],\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n\r\n this.schemaI18n = new SchemaI18n({ i18n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n AssociationType,\r\n }) => AssociationType,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const associationType = value.includes('VideoMedia') ? 'VideoMedia' : value;\r\n return template({\r\n text: this.schemaI18n.enum('AssociationType', associationType),\r\n });\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport cellTemplate from './status.pug';\r\nimport headerTemplate from './status-header.pug';\r\n\r\nexport class ColumnStatus extends CampaignuiBaseColumn {\r\n constructor({ i18n }) {\r\n super({\r\n name: 'UiDisplayStatus',\r\n property: 'UiDisplayStatus',\r\n sortable: 'UiDisplayStatus',\r\n title: i18n.getString('ColumnName_Status'),\r\n type: 'string',\r\n bodyClasses: 'grid-column-AssetStatus',\r\n headerTemplate: () => headerTemplate({}),\r\n i18n,\r\n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({ UiDisplayStatus }) => ({\r\n status: UiDisplayStatus,\r\n label: this.config.i18n.getString(`AssetLink_Status_${UiDisplayStatus}`),\r\n }),\r\n };\r\n }\r\n\r\n template({ value }) {\r\n return cellTemplate(value);\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport template from './text.pug';\r\n\r\nexport class ColumnPinnedField extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n,\r\n }) {\r\n const title = i18n.getString('ColumnName_PinnedField');\r\n\r\n super({\r\n name: 'PinnedField',\r\n property: 'PinnedField',\r\n sortable: 'PinnedField',\r\n title,\r\n type: 'string',\r\n bodyClasses: 'grid-column-PinnedField',\r\n helpId: 'pop_BA_RSA_PositionPinning',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n\r\n this.schemaI18n = new SchemaI18n({ i18n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n PinnedField,\r\n }) => PinnedField,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n return template({\r\n text: this.schemaI18n.enum('PinnedField', value),\r\n });\r\n }\r\n}\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport template from './text.pug';\r\n\r\nexport class ColumnAssetSource extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n, scope,\r\n }) {\r\n const title = i18n.getString('ColumnName_AssetSource');\r\n const adType = scope && scope.values && scope.values.adType;\r\n const helpId = {\r\n Responsive: 'pop_BA_MMA_AssetSource',\r\n ResponsiveSearch: 'pop_BA_RSA_Source',\r\n DynamicSearch: 'pop_BA_DSA_Source',\r\n DynamicResponsive: 'pop_BA_DSA_Source',\r\n };\r\n\r\n super({\r\n name: 'AssetSource',\r\n property: 'AssetSource',\r\n sortable: 'Asset/AssetSource',\r\n title,\r\n type: 'string',\r\n bodyClasses: 'grid-column-AssetSource',\r\n helpId: helpId[adType],\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n\r\n this.schemaI18n = new SchemaI18n({ i18n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n Asset,\r\n }) => Asset.AssetSource,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const mapVal = !value ? '' : this.schemaI18n.enum('AssetSource', value);\r\n return template({\r\n text: mapVal,\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { TextInlineEditMMA } from '@bingads-webui-campaign/asset-inline-edit';\r\nimport template from './text.pug';\r\nimport imageTemplate from './image.pug';\r\nimport videoTemplate from './video.pug';\r\n\r\nexport class ColumnAssetMMA extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n, scope, view,\r\n }) {\r\n const title = i18n.getString('ColumnName_Asset');\r\n const adType = scope && scope.values && scope.values.adType;\r\n const helpId = {\r\n Responsive: 'pop_BA_MMA_Asset',\r\n DynamicSearch: 'pop_BA_DSA_Asset',\r\n DynamicResponsive: 'pop_BA_DSA_Asset',\r\n };\r\n\r\n super({\r\n name: 'Asset',\r\n property: 'Asset',\r\n sortable: 'Asset/Text',\r\n title,\r\n type: 'string',\r\n bodyClasses: 'grid-column-Asset',\r\n enableEdit: item => item.Asset.AssetType === 'Text' && item.Asset.AssetSource === 'AdvertiserProvided' && item.UiDisplayStatus === 'Active' && adType === 'Responsive',\r\n helpId: helpId[adType],\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n\r\n this.scope = scope;\r\n this.i18n = i18n;\r\n this.view = view;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n Asset,\r\n }) => Asset,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n if (value.AssetType === 'Image') {\r\n return imageTemplate({\r\n imageUrl: value.ImageUrl,\r\n });\r\n } else if (value.AssetType === 'Video') {\r\n const isVertical = value?.Height > value?.Width;\r\n return videoTemplate({\r\n imageUrl: value.ThumbnailUrl,\r\n isVerticalVideo: isVertical,\r\n });\r\n }\r\n\r\n return template({\r\n text: value.Text,\r\n });\r\n }\r\n\r\n onPrompt({\r\n item, newPosition,\r\n }) {\r\n return TextInlineEditMMA({\r\n item,\r\n newPosition,\r\n view: this.view,\r\n i18n: this.i18n,\r\n scope: this.scope,\r\n itemToSchemaMap: {\r\n ResponsiveAdHeadlines: 'Headline',\r\n ResponsiveAdDescriptions: 'Text',\r\n ResponsiveAdLongHeadlines: 'LongHeadline',\r\n },\r\n schemaToItemMap: {\r\n Headline: 'Headlines',\r\n Text: 'Descriptions',\r\n LongHeadline: 'LongHeadlines',\r\n },\r\n });\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport _, { defaults } from 'underscore';\r\nimport { InlineEditableColumnPrompt } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { getCharCountExcludingAdCustomizers } from '@bingads-webui-campaign/ad-customizers';\r\nimport { cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport { withUiBlock } from '@bingads-webui/uiblocker';\r\nimport jsdata from '@bingads-webui-component-legacy/js-data-campaign/index';\r\nimport edmCampaign from '@bingads-webui-component-legacy/edm-campaign/index';\r\nimport { getODataErrors } from '@bingads-webui-campaign/api-errors';\r\nimport instrumentation from '@bingads-webui-campaign-legacy/instrumentation/index';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { ResponsiveAd } from '@bingads-webui-campaign/campaign-ui-schemas';\r\nimport { fetchAd, processAssets } from './ad-helper';\r\nimport { instrumentationSchema } from './instrumentation-schema';\r\n\r\nexport function TextInlineEditMMA({\r\n item, newPosition, view, i18n, scope, itemToSchemaMap, schemaToItemMap,\r\n}) {\r\n const newSchema = cloneDeep(ResponsiveAd);\r\n const fieldName = itemToSchemaMap[item.AssociationType];\r\n newSchema.properties[fieldName].required = true;\r\n newSchema.properties[fieldName] = _.omit(newSchema.properties[fieldName], 'maxLength');\r\n item[fieldName] = item.Asset.Text;\r\n instrumentation.addScenario(instrumentationSchema);\r\n const logScenario = instrumentation.assetGrid.create();\r\n const activityLogger = logScenario.inlineEditMMAAsset && logScenario.inlineEditMMAAsset.create();\r\n\r\n return InlineEditableColumnPrompt({\r\n position: newPosition,\r\n item,\r\n view,\r\n i18n,\r\n fieldName,\r\n schema: newSchema,\r\n customValidators: {\r\n [fieldName]: {\r\n isValid: (value) => {\r\n const charCount = getCharCountExcludingAdCustomizers({\r\n text: value,\r\n adType: 'ResponsiveAd',\r\n deps: {\r\n i18n,\r\n countdownI18nDummy: i18n,\r\n config,\r\n instrumentation,\r\n edmCampaign,\r\n jsDataCampaign: jsdata,\r\n },\r\n });\r\n return charCount <= ResponsiveAd.properties[fieldName].maxLength;\r\n },\r\n message: i18n.getString('Validation_String_Max_Length', { maxlength: ResponsiveAd.properties[fieldName].maxLength }),\r\n },\r\n },\r\n saveModel: (updated, editorView) => {\r\n const {\r\n campaignId, adGroupId, adType, adId,\r\n } = scope.values;\r\n\r\n const callScope = {\r\n entitySet: edmCampaign.currentAccount.Campaigns.$withKey(campaignId).AdGroups.$withKey(adGroupId).Ads,\r\n cacheResponse: false,\r\n scenario: 'ads-grid',\r\n };\r\n const commonParams = {\r\n Campaign: { Id: campaignId },\r\n AdGroup: { Id: adGroupId },\r\n Type: adType,\r\n Id: adId,\r\n };\r\n\r\n fetchAd({\r\n edm: edmCampaign,\r\n jsData: jsdata,\r\n scope: scope.values,\r\n }).then((ad) => {\r\n const params = defaults(processAssets(ad[0], updated, fieldName, schemaToItemMap), commonParams);\r\n\r\n jsdata.ResponsiveAd\r\n .create(params, callScope)\r\n .then(() => {\r\n editorView.trigger('save');\r\n activityLogger.trace(`success inline edit for MMA Asset for ad ${ad[0].Id}`);\r\n view.grid.gridView.refresh(true);\r\n })\r\n .catch((response) => {\r\n activityLogger.trace(`fail inline edit for MMA Asset for ad ${ad[0].Id}: ${JSON.stringify(response)}`);\r\n if (!response || !response.errors) {\r\n editorView.setErrors({\r\n [fieldName]: i18n.getString('GenericErrorMessage_Short'),\r\n });\r\n } else {\r\n const errors = getODataErrors(response.errors, i18n);\r\n editorView.setErrors({\r\n [fieldName]: errors,\r\n });\r\n }\r\n })\r\n .finally(withUiBlock(view.grid.gridView.$el));\r\n })\r\n .catch(() => {\r\n editorView.setErrors({\r\n [fieldName]: i18n.getString('GenericErrorMessage_Short'),\r\n });\r\n })\r\n .finally(withUiBlock(view.grid.gridView.$el));\r\n },\r\n });\r\n}\r\n\r\n","import { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\n\r\nexport class ColumnAssetId extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n,\r\n }) {\r\n const title = i18n.getString('ColumnName_AssetId');\r\n\r\n super({\r\n name: 'AssetId',\r\n property: 'AssetId',\r\n title,\r\n type: 'string',\r\n bodyClasses: 'grid-column-AssetId',\r\n });\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({\r\n Asset,\r\n }) => Asset.IdString,\r\n };\r\n }\r\n\r\n template({ value }) {\r\n return value || '-';\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { CampaignuiBaseColumn } from '@bingads-webui-campaign/campaignui-base-column';\r\nimport { getViolationsFromCategoryFAIDMapping } from '@bingads-webui-campaign/delivery-status-popup-factory';\r\nimport template from './policy-status.pug';\r\n\r\n\r\nexport class ColumnPolicyStatus extends CampaignuiBaseColumn {\r\n constructor({\r\n i18n, view, scope, serverContext, permissions,\r\n }) {\r\n const title = i18n.getString('ColumnName_PolicyStatus');\r\n\r\n super({\r\n name: 'PolicyStatus',\r\n property: ['EditorialStatus', 'EditorialCategory'],\r\n sortable: 'EditorialStatus',\r\n title,\r\n type: 'string',\r\n bodyClasses: 'grid-column-Delivery',\r\n helpAriaLabel: i18n.getString('Click to learn more about {{item}}', { item: title }),\r\n });\r\n this.i18n = i18n;\r\n this.view = view;\r\n this.scope = scope;\r\n this.serverContext = serverContext;\r\n this.permissions = permissions;\r\n }\r\n\r\n get property() {\r\n return {\r\n get: ({ EditorialStatus, EditorialCategories }) => ({\r\n EditorialStatus, EditorialCategories,\r\n }),\r\n };\r\n }\r\n\r\n template({ value }) {\r\n const { EditorialCategories } = value;\r\n const EditorialStatus = value.EditorialStatus || '-';\r\n const errorStatusList = [\r\n 'Rejected',\r\n 'RejectedAppealRejected',\r\n ];\r\n\r\n const whiteList = [\r\n 'Approved',\r\n 'ApprovedLimited',\r\n 'ApprovedLimitedAppealRejected',\r\n '-',\r\n ];\r\n const inWhiteList = _.contains(whiteList, EditorialStatus);\r\n const isErrorStatus = _.contains(errorStatusList, EditorialStatus);\r\n const isWarningStatus = !inWhiteList && !isErrorStatus;\r\n\r\n const hasRejectReasonWhitelist = [\r\n 'Approved',\r\n '-',\r\n ];\r\n\r\n const showRejectPopup = !_.contains(hasRejectReasonWhitelist, EditorialStatus);\r\n const shouldEditorialCategoriesPopup = getViolationsFromCategoryFAIDMapping(EditorialCategories).length > 0;\r\n\r\n return template({\r\n Id: value.Id,\r\n isErrorStatus,\r\n isWarningStatus,\r\n showRejectPopup: showRejectPopup || shouldEditorialCategoriesPopup,\r\n DeliveryStatus: EditorialStatus,\r\n i18n: this.i18n,\r\n isForVNext: this.isForVNext,\r\n shouldShowSensitiveContentWarning: shouldEditorialCategoriesPopup,\r\n shouldShowPopUpStyleInVnext: showRejectPopup,\r\n });\r\n }\r\n}\r\n","import { ColumnsConfigBuilder } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport {\r\n ColumnImpressions, ColumnClicks, ColumnCTR, ColumnSpend, ColumnConversionsCredit, ColumnAdvertiserReportedRevenue,\r\n ColumnVideoCompletionRate, ColumnVideoViews, ColumnVideoViewsAt25Percent, ColumnVideoViewsAt50Percent, ColumnVideoViewsAt75Percent, ColumnCompletedVideoViews\r\n} from '@bingads-webui-campaign/campaignui-common-columns';\r\n\r\nimport { ColumnAsset } from './asset';\r\nimport { ColumnAssetType } from './asset-type';\r\nimport { ColumnStatus } from './status';\r\nimport { ColumnPinnedField } from './pinned-field';\r\nimport { ColumnAssetSource } from './asset-source';\r\nimport { ColumnAssetMMA } from './asset-mma';\r\nimport { ColumnAssetId } from './asset-id';\r\nimport { ColumnPolicyStatus } from './policy-status';\r\n\r\nexport function getColumnsConfig(options) {\r\n const { adType, adSubType } = options.scope.values;\r\n const builder = new ColumnsConfigBuilder();\r\n builder.addCategory('Attributes', category => category.addColumns([\r\n ColumnStatus,\r\n ...adType === 'ResponsiveSearch' ? [ColumnAsset] : [ColumnAssetMMA],\r\n ColumnAssetId,\r\n ColumnAssetType,\r\n ColumnAssetSource,\r\n ...adType === 'ResponsiveSearch' ? [ColumnPinnedField] : [],\r\n ...(options.AssetBasedEditorialForRSA && adType === 'ResponsiveSearch') || (options.AssetBasedEditorialForAIM && adSubType === 'native') ? [ColumnPolicyStatus] : [],\r\n ColumnImpressions,\r\n ColumnClicks,\r\n ColumnCTR,\r\n ColumnSpend,\r\n ...options.SearchAssetConversionColumn ? [ColumnConversionsCredit, ColumnAdvertiserReportedRevenue] : [],\r\n ...options.ShowVideoMetrics && adType === 'Responsive' ? [ColumnVideoViews, ColumnVideoCompletionRate, ColumnVideoViewsAt25Percent, ColumnVideoViewsAt50Percent, ColumnVideoViewsAt75Percent, ColumnCompletedVideoViews] : [],\r\n ]))\r\n .setLockedColumns([\r\n ColumnStatus,\r\n ...adType === 'ResponsiveSearch' ? [ColumnAsset] : [ColumnAssetMMA],\r\n ColumnAssetId,\r\n ColumnAssetType,\r\n ColumnAssetSource,\r\n ...adType === 'ResponsiveSearch' ? [ColumnPinnedField] : [],\r\n ...options.AssetBasedEditorial && (adType === 'ResponsiveSearch' || adSubType === 'native') ? [ColumnPolicyStatus] : [],\r\n ColumnImpressions,\r\n ColumnClicks,\r\n ColumnCTR,\r\n ColumnSpend,\r\n ...options.SearchAssetConversionColumn ? [ColumnConversionsCredit, ColumnAdvertiserReportedRevenue] : [],\r\n ...options.ShowVideoMetrics && adType === 'Responsive' ? [ColumnVideoViews, ColumnVideoCompletionRate, ColumnVideoViewsAt25Percent, ColumnVideoViewsAt50Percent, ColumnVideoViewsAt75Percent, ColumnCompletedVideoViews] : [],\r\n ])\r\n .setSelectedColumns([\r\n ColumnStatus,\r\n ...adType === 'ResponsiveSearch' ? [ColumnAsset] : [ColumnAssetMMA],\r\n ColumnAssetId,\r\n ColumnAssetType,\r\n ColumnAssetSource,\r\n ...adType === 'ResponsiveSearch' ? [ColumnPinnedField] : [],\r\n ...options.AssetBasedEditorial && (adType === 'ResponsiveSearch' || adSubType === 'native') ? [ColumnPolicyStatus] : [],\r\n ColumnImpressions,\r\n ColumnClicks,\r\n ColumnCTR,\r\n ColumnSpend,\r\n ...options.SearchAssetConversionColumn ? [ColumnConversionsCredit, ColumnAdvertiserReportedRevenue] : [],\r\n ...options.ShowVideoMetrics && adType === 'Responsive' ? [ColumnVideoViews, ColumnVideoCompletionRate, ColumnVideoViewsAt25Percent, ColumnVideoViewsAt50Percent, ColumnVideoViewsAt75Percent, ColumnCompletedVideoViews] : [],\r\n ]);\r\n return builder.getColumnsConfig(options);\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { getGridName } from '@bingads-webui-campaign/inline-download-grids-metadata';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { validateOrder, handleShowRejectionReasonEnter, handleShowRejectionReasonLeave } from '@bingads-webui-campaign/summary-grid-helper';\r\nimport { getColumnsConfig } from './columns/index';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/responsive-search-ad');\r\nconst stateManager = globalContext.require('StateManager/CampaignStateManager');\r\nconst preferenceService = globalContext.requireDefault('component/preference/service/index');\r\nconst config = globalContext.require('component/config/index');\r\nconst pageContext = globalContext.require('PageContext');\r\n\r\nexport function getConfig({\r\n dataSource,\r\n scope,\r\n view,\r\n filterService,\r\n preferenceConfig,\r\n router,\r\n isForVNext,\r\n viewport,\r\n customHeaderOffset,\r\n serverContext,\r\n}) {\r\n const tableName = i18n.getString('RSA_Assets');\r\n const permissions = pageContext.Permissions;\r\n const { campaignType } = scope.values;\r\n\r\n const events = {\r\n 'click .delivery_status_with_reject_reasons': _.debounce(view.showRejectionReason.bind(view), 50),\r\n 'mouseenter .delivery_status_with_reject_reasons': _.partial(handleShowRejectionReasonEnter, view, view.showRejectionReason),\r\n 'mouseleave .delivery_status_with_reject_reasons': _.partial(handleShowRejectionReasonLeave, null, _.noop),\r\n 'mouseleave .grid-column-Delivery': _.debounce(view.hideRejectionPopup.bind(view), 50),\r\n };\r\n\r\n const gridConfig = {\r\n name: getGridName('Assets'),\r\n legacyGridName: 'AssetsGrid',\r\n tableClasses: ['table', 'table-bordered'],\r\n tableAttributes: { 'aria-label': tableName },\r\n dataSource,\r\n selection: false,\r\n filterService,\r\n rows: {\r\n headRows: ['column-header-rows'],\r\n },\r\n columns: getColumnsConfig({\r\n i18n,\r\n scope,\r\n view,\r\n router,\r\n isForVNext,\r\n ShowVideoMetrics: permissions.dynamic && permissions.dynamic.AudienceAssetReport && campaignType === 'Audience',\r\n SearchAssetConversionColumn: permissions.dynamic && permissions.dynamic.SearchAssetConversionColumn,\r\n AssetBasedEditorialForRSA: permissions.dynamic && permissions.dynamic.AssetBasedEditorialForRSA,\r\n AssetBasedEditorialForAIM: permissions.dynamic && permissions.dynamic.AssetBasedEditorialForAIM,\r\n serverContext,\r\n permissions,\r\n }),\r\n scrolling: {\r\n header: {\r\n type: 'sticky',\r\n offset: customHeaderOffset || (() => $('nav.navbar-default.navbar-fixed-top').height()),\r\n attributes: { 'aria-label': i18n.getString('{{tableName}} table header', { tableName }) },\r\n },\r\n virtualized: true,\r\n },\r\n stateManager,\r\n preferenceService,\r\n config,\r\n events,\r\n };\r\n\r\n validateOrder(preferenceConfig, gridConfig.columns);\r\n\r\n if (viewport) {\r\n gridConfig.scrolling.viewport = viewport;\r\n }\r\n\r\n return gridConfig;\r\n}\r\n","import Backbone from 'backbone';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\nimport { fetchAd } from '@bingads-webui-campaign/asset-inline-edit';\r\n\r\nconst edm = globalContext.requireDefault('component/edm-campaign/index');\r\nconst jsData = globalContext.require('component/js-data-campaign/index');\r\n\r\nexport const showAdStrengthPlugin = definePlugin => definePlugin('showAdStrength', [\r\n 'config',\r\n 'toolbar',\r\n], (config, toolbar) => {\r\n const {\r\n buttonId = 'button-show-ad-strength',\r\n initShowStatus = true,\r\n i18n,\r\n scope,\r\n } = config.plugins.showAdStrength;\r\n\r\n const toolbarEditor = toolbar.gridToolbarGroup.toolbarWithItem(buttonId);\r\n let showAdStrength = initShowStatus;\r\n let adItem = null;\r\n\r\n const toggleAdStrength = () => {\r\n showAdStrength = !showAdStrength;\r\n };\r\n\r\n const updateToolbar = () => {\r\n toolbarEditor.update({\r\n id: buttonId,\r\n iconLeftGlyphName: showAdStrength ? 'ba-Hide3' : 'ba-View',\r\n text: showAdStrength ? i18n.getString('Asset_Hide_Ad_Strength') : i18n.getString('Asset_Show_Ad_Strength'),\r\n onClick: () => {\r\n toggleAdStrength();\r\n updateToolbar();\r\n },\r\n });\r\n };\r\n\r\n const refreshEvent = _.extend({}, Backbone.Events);\r\n\r\n const refreshAdItem = () => {\r\n fetchAd({\r\n edm,\r\n jsData,\r\n scope: scope.values,\r\n }).then((ad) => {\r\n // eslint-disable-next-line prefer-destructuring\r\n adItem = ad[0];\r\n refreshEvent.trigger('adItemUpdate');\r\n });\r\n };\r\n\r\n updateToolbar();\r\n\r\n if (scope && (scope.values.adType === 'ResponsiveSearch' || scope.values.adSubType === 'native')) {\r\n refreshAdItem();\r\n }\r\n\r\n return {\r\n getShowAdStrength: () => showAdStrength,\r\n refreshAdItem,\r\n getAdItem: () => adItem,\r\n refreshEvent,\r\n };\r\n});\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nimport { a11yPlugin } from '@bingads-webui/projection-grid-a11y';\r\nimport { dateFilterPlugin } from '@bingads-webui-campaign/projection-grid-date-filter';\r\nimport { inlineDownloadWithoutFilterstateAndSegmentPlugin } from '@bingads-webui-campaign/projection-grid-inline-download';\r\nimport { paginationPlugin } from '@bingads-webui/projection-grid-pagination';\r\nimport { performanceLogPlugin, perfMarkerPlugin } from '@bingads-webui-campaign/pgrid-performance-log';\r\nimport { uiBlockerPlugin } from '@bingads-webui/projection-grid-uiblocker';\r\nimport { editablePlugin } from '@bingads-webui-campaign/projection-grid-editable';\r\nimport { showAdStrengthPlugin } from './show-ad-strength';\r\n\r\nconst appConfig = globalContext.require('component/config/index');\r\nconst appState = globalContext.require('component/state/index');\r\nconst edm = globalContext.requireDefault('component/edm-campaign/index');\r\nconst logger = globalContext.require('module/service/instrumentation/index');\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/responsive-search-ad');\r\nconst s$i18n = globalContext.require('$/schema-i18n!campaign');\r\nconst s$AssetLink = globalContext.require('$/schema!campaign/AssetLink');\r\nconst { DownloadView } = globalContext.require('campaignui/feature/griddownload/view/adapter');\r\n\r\nexport function getPlugins({\r\n addDateChangeListener,\r\n p$daterange,\r\n perfMarker,\r\n scope,\r\n isForVNext,\r\n}) {\r\n const ReportEmailRule = appState.get('$ReportEmailRule');\r\n appState.unset('$ReportEmailRule');\r\n\r\n return _.compact([{\r\n // For accurate grid init latency, PerfMarkerPlugin should be the first plugin to load.\r\n plugin: perfMarkerPlugin,\r\n config: { appConfig, marker: perfMarker },\r\n }, {\r\n plugin: a11yPlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: dateFilterPlugin,\r\n config: {\r\n state: appState,\r\n isOdataActionSource: true,\r\n edm,\r\n addDateChangeListener,\r\n p$daterange,\r\n comparisonColumns: [],\r\n },\r\n }, {\r\n plugin: inlineDownloadWithoutFilterstateAndSegmentPlugin,\r\n config: {\r\n isAvailable: true,\r\n DownloadView,\r\n p$daterange,\r\n schema: s$AssetLink,\r\n gridId: 'RSAAssetsGrid',\r\n i18n,\r\n s$i18n,\r\n ReportEmailRule,\r\n processReportRule: ReportRule => _.defaults({\r\n Selection: _.defaults({\r\n AdId: Number(scope.adId),\r\n }, ReportRule.Selection),\r\n }, ReportRule),\r\n },\r\n }, {\r\n plugin: performanceLogPlugin,\r\n config: { appConfig, logger },\r\n }, {\r\n plugin: paginationPlugin,\r\n config: {\r\n availablePageSizes: [20, 50, 100, 200],\r\n enableRandomPage: false,\r\n pageNumberLabelText: isForVNext ? '' : i18n.getString('Grid_Page_Number_Label_Text'),\r\n pageSizeText: i18n.getString('Grid_ShowRows'),\r\n totalPageCountText: i18n.getString('Grid_PageOf'),\r\n resetPageNumberOnSort: true,\r\n },\r\n }, {\r\n plugin: uiBlockerPlugin,\r\n config: { el: $(isForVNext ? '.assets-page' : '#child-page') },\r\n }, {\r\n plugin: editablePlugin,\r\n config: { i18n },\r\n }, {\r\n plugin: showAdStrengthPlugin,\r\n config: {\r\n i18n,\r\n scope,\r\n },\r\n }]);\r\n}\r\n","import { uncheckedInjectionContext as globalContext } from '@bingads-webui-campaign/injection-context';\r\n\r\nimport { AssetsGrid } from './assets-grid';\r\nimport { getConfig } from './grid-config';\r\nimport { getPlugins } from './plugins';\r\nimport { setUpErrorHandling } from './error-handler';\r\n\r\nconst i18n = globalContext.require('@bingads-webui/i18n-amd-loader!campaignui/feature/responsive-search-ad');\r\n\r\nexport function createAssetsGrid({\r\n dataSource,\r\n filterService,\r\n getAdditionalPlugins,\r\n preferenceConfig,\r\n router,\r\n scope,\r\n addDateChangeListener,\r\n p$daterange,\r\n viewport,\r\n perfMarker,\r\n customHeaderOffset,\r\n isForVNext = false,\r\n serverContext,\r\n}) {\r\n return new AssetsGrid({\r\n isForVNext,\r\n filterService,\r\n getGridConfig: view => getConfig({\r\n dataSource,\r\n scope,\r\n view,\r\n filterService,\r\n preferenceConfig,\r\n router,\r\n viewport,\r\n customHeaderOffset,\r\n isForVNext,\r\n serverContext,\r\n }),\r\n getPlugins: view => getPlugins({\r\n view,\r\n filterService,\r\n scope,\r\n addDateChangeListener,\r\n p$daterange,\r\n router,\r\n perfMarker,\r\n isForVNext,\r\n }).concat(getAdditionalPlugins(view)),\r\n router,\r\n scope,\r\n setupDataSourceErrorHandling: view => setUpErrorHandling({\r\n gridView: view,\r\n dataSource,\r\n i18n,\r\n }),\r\n preferenceConfig,\r\n });\r\n}\r\n","import { any, bind } from 'underscore';\r\n\r\nfunction onAfterFindAll({ i18n, router }, data = {}) {\r\n if (data.status === 400 &&\r\n any(data.errors, error => error.Code === 'AdIdInvalid')) {\r\n window.App.views.alertCenter.toastWarning(i18n.getString('RSA_Invalid_Ad'));\r\n\r\n // fall back to ads page on ad group level\r\n router.navigateToRoute('adgroup_ad', {\r\n campaign_id: '$current',\r\n adgroup_id: '$current',\r\n });\r\n } else if (any(data.errors, err => err.Code === 'TooMuchDataToDownload')) {\r\n this.showTooMuchDataError = true;\r\n }\r\n return data;\r\n}\r\n\r\nexport function setUpErrorHandling({\r\n gridView,\r\n dataSource,\r\n i18n,\r\n}) {\r\n const view = gridView;\r\n view.showTooMuchDataError = false;\r\n view.tooMuchDataErrorText = i18n.getString('Grid_Experiment_TooMuchDataError_CmpLvl');\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n dataSource.options.afterFindAll = bind(onAfterFindAll, view);\r\n}\r\n\r\n","export const CellItemHeight = {\r\n Large: 'Large',\r\n Small: 'Small',\r\n};\r\n\r\nexport const ViewItem = {\r\n Monthly: 'Monthly',\r\n Daily: 'Daily',\r\n};\r\n\r\nexport const ViewItemTLString = {\r\n [ViewItem.Monthly]: _TL_('Monthly view'),\r\n [ViewItem.Daily]: _TL_('Daily view'),\r\n};\r\n\r\nexport const InsertionOrderReportColumns = {\r\n [ViewItem.Monthly]: {\r\n add: ['IOReportMonth'],\r\n remove: ['Date'],\r\n sort: 'IOReportMonth',\r\n },\r\n [ViewItem.Daily]: {\r\n add: ['Date'],\r\n remove: ['IOReportMonth'],\r\n sort: 'Date',\r\n },\r\n};\r\n\r\nexport const MaxInsertionOrderLimit = 100;\r\n\r\nexport const InsertionOrderSearchFields = {\r\n FriendlyName: 'FriendlyName',\r\n SeriesName: 'SeriesName',\r\n};\r\n\r\nexport const InsertionOrderFieldKeys = {\r\n [InsertionOrderSearchFields.FriendlyName]: _TL_('Insertion order name'),\r\n [InsertionOrderSearchFields.SeriesName]: _TL_('Series name'),\r\n};\r\n\r\nexport const MismatchedReasonCode = {\r\n AdjustmentMismatch: 'Adjustment mismatch',\r\n};\r\n\r\nexport const ChangeTypeEnum = {\r\n Spend: 'Spend',\r\n SystemAdjustment: 'System adjustment',\r\n BudgetChange: 'Budget change',\r\n};\r\n\r\nexport const InsertionOrderChangeTypeField = {\r\n [ChangeTypeEnum.Spend]: 'SpendTypeValue',\r\n [ChangeTypeEnum.SystemAdjustment]: 'AdjustmentTypeValue',\r\n [ChangeTypeEnum.BudgetChange]: 'BudgetChangedTypeValue',\r\n};\r\n\r\nexport const InsertionOrderChangeAmountField = {\r\n [ChangeTypeEnum.Spend]: 'SpendAmountValue',\r\n [ChangeTypeEnum.SystemAdjustment]: 'AdjustmentAmountValue',\r\n [ChangeTypeEnum.BudgetChange]: 'BudgetChangedAmountValue',\r\n};\r\n\r\nexport const InsertionOrderColumns = {\r\n InsertionOrderId: 'InsertionOrderId',\r\n};\r\n\r\nexport const ChangeTypeEnumValue = {\r\n [ChangeTypeEnum.Spend]: \"Enum.ChangeType'1'\",\r\n [ChangeTypeEnum.SystemAdjustment]: \"Enum.ChangeType'2'\",\r\n [ChangeTypeEnum.BudgetChange]: \"Enum.ChangeType'3'\",\r\n};\r\n","import _ from 'underscore';\r\nimport { InsertionOrderUtils } from '@bingads-webui-clientcenter/entity-utils';\r\nimport { InsertionOrderSearchFields, InsertionOrderFieldKeys, MismatchedReasonCode } from './constants';\r\n\r\nconst {\r\n isUnlimitedIOBudget,\r\n formatUnlimitedIOBudgetInGrid,\r\n formatEndlessIOEndDateInGrid,\r\n} = InsertionOrderUtils;\r\n\r\nexport function formatCurrency({\r\n i18n, value, currencyCode, options,\r\n}) {\r\n return i18n.formatCurrency(value, currencyCode, options);\r\n}\r\n\r\nexport function parseDecimal({ i18n, value }) {\r\n return _.isString(value) ? i18n.parseDecimal(value) : value;\r\n}\r\n\r\nexport function formatDecimalToFixed({ i18n, value }) {\r\n const parsedValue = parseDecimal({ i18n, value });\r\n return _.isNumber(parsedValue) ? i18n.formatDecimalToFixed(parsedValue) : parsedValue;\r\n}\r\n\r\nexport function getMismatchedInfoString({ i18n, mismatchedReason, mismatchedAmountString }) {\r\n switch (mismatchedReason) {\r\n case MismatchedReasonCode.AdjustmentMismatch:\r\n return i18n.getString(\r\n _TL_('This amount of {{mismatchedAmount}} doesn’t match the IO Report, as no active IO could be found to support this adjustment.'),\r\n { mismatchedAmount: mismatchedAmountString },\r\n );\r\n default:\r\n return '';\r\n }\r\n}\r\n\r\nexport function formatInsertionOrderLabel({\r\n i18n,\r\n orderName,\r\n seriesName,\r\n startDate,\r\n endDate,\r\n budget,\r\n}) {\r\n let formattedName = '';\r\n if (!_.isEmpty(orderName)) {\r\n formattedName = `${orderName}, `;\r\n } else if (!_.isEmpty(seriesName)) {\r\n formattedName = `${seriesName}, `;\r\n }\r\n // Follow the formatter in insertion order page\r\n const formattedBudget = formatUnlimitedIOBudgetInGrid({ i18n, spendCapAmountValue: budget, unlimitedStringKey: _TL_('Unlimited') });\r\n const formattedEndDate = formatEndlessIOEndDateInGrid({ i18n, endDateValue: endDate && i18n.parseDate(endDate), noEndDateStringKey: _TL_('No End Date') });\r\n return `${formattedName}${startDate} - ${formattedEndDate}, ${formattedBudget}`;\r\n}\r\n\r\nexport function getSelectorButtonDescription({ i18n, selectedInsertionOrders }) {\r\n if (_.isEmpty(selectedInsertionOrders)) {\r\n return i18n.getString(_TL_('All insertion orders (IOs)'));\r\n }\r\n if (selectedInsertionOrders.length === 1) {\r\n return selectedInsertionOrders[0].name;\r\n }\r\n return i18n.getString(_TL_('Multiple insertion orders'));\r\n}\r\n\r\nexport function getSearchBarPlaceholder({ i18n, searchField }) {\r\n switch (searchField) {\r\n case InsertionOrderSearchFields.FriendlyName:\r\n return i18n.getString(_TL_('Search insertion order name'));\r\n case InsertionOrderSearchFields.SeriesName:\r\n return i18n.getString(_TL_('Search series name'));\r\n default:\r\n return i18n.getString(_TL_('Search insertion order name, series name'));\r\n }\r\n}\r\n\r\nexport function getSearchFieldOptions() {\r\n return _.keys(InsertionOrderSearchFields).map(key => ({\r\n key,\r\n value: InsertionOrderSearchFields[key],\r\n labelKey: InsertionOrderFieldKeys[key],\r\n }));\r\n}\r\n\r\nexport function getBudgetChangeString({ i18n, rawValue, amountValue, useEmptyString = false }) {\r\n if (isUnlimitedIOBudget(Number(rawValue))) {\r\n return useEmptyString ? '--' : i18n.getString(_TL_('Unlimited'));\r\n }\r\n return amountValue;\r\n}\r\n","export const getBillingDocumentCellStyles = () => ({\r\n BillingDocumentCell: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n BillingDocumentNumberGroup: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n MismatchInformation: {\r\n marginLeft: 5,\r\n color: '#424242',\r\n fontSize: 14,\r\n },\r\n});\r\n","import { CellItemHeight } from '../constants';\r\n\r\nexport const getAmountCellStyles = () => ({\r\n '@global': {\r\n '& .ChangeAmount.ms-DetailsRow-cell': {\r\n padding: 0,\r\n },\r\n },\r\n AmountCell: {\r\n width: '100%',\r\n },\r\n AmountItem: {\r\n width: '100%',\r\n paddingTop: 11,\r\n paddingBottom: 11,\r\n paddingLeft: 12,\r\n paddingRight: 8,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n BorderBottomLine: {\r\n borderBottom: '1px solid rgb(243, 242, 241)',\r\n },\r\n Description: {\r\n color: '#605E5C',\r\n fontSize: 11,\r\n width: '100%',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n },\r\n [`AmountItem-${CellItemHeight.Large}`]: {\r\n height: 62,\r\n },\r\n [`AmountItem-${CellItemHeight.Small}`]: {\r\n height: 44,\r\n },\r\n GreenColor: {\r\n color: '#107C10',\r\n },\r\n});\r\n","import { CellItemHeight } from '../constants';\r\n\r\nexport const getChangeTypeCellStyles = () => ({\r\n '@global': {\r\n '& .ChangeType.ms-DetailsRow-cell': {\r\n padding: 0,\r\n },\r\n },\r\n ChangeTypeCell: {\r\n width: '100%',\r\n },\r\n ChangeTypeItem: {\r\n width: '100%',\r\n paddingTop: 11,\r\n paddingBottom: 11,\r\n paddingLeft: 12,\r\n placeContent: 'center',\r\n },\r\n BorderBottomLine: {\r\n borderBottom: '1px solid rgb(243, 242, 241)',\r\n },\r\n [`ChangeTypeItem-${CellItemHeight.Large}`]: {\r\n height: 62,\r\n },\r\n [`ChangeTypeItem-${CellItemHeight.Small}`]: {\r\n height: 44,\r\n },\r\n});\r\n","export const getAmountTotalCellStyles = () => ({\r\n AmountTotalCell: {\r\n width: '100%',\r\n },\r\n AmountTotalCellWithPadding: {\r\n paddingTop: 11,\r\n paddingBottom: 11,\r\n paddingLeft: 12,\r\n paddingRight: 8,\r\n },\r\n AmountTotalItem: {\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n fontWeight: 600,\r\n },\r\n GreenColor: {\r\n color: '#107C10',\r\n },\r\n});\r\n","export const getInsertionOrderSelectorStyle = () => ({\r\n MultipleInsertionOrderSelector: {\r\n padding: 10,\r\n width: 870,\r\n border: 0,\r\n borderRadius: 2,\r\n boxShadow: '0 3.2px 7.2px 0 rgba(0,0,0,.132), 0 0.6px 1.8px 0 rgba(0,0,0,.108)',\r\n backgroundColor: '#fff',\r\n },\r\n\r\n SelectorButton: {\r\n flex: '0 0 auto',\r\n border: 'none',\r\n height: 56,\r\n fontWeight: 'unset !important',\r\n paddingLeft: 8,\r\n paddingRight: 8,\r\n paddingTop: 4,\r\n },\r\n ChevronDownIcon: {\r\n height: 20,\r\n fontSize: '12px !important',\r\n top: '1px !important',\r\n },\r\n ButtonDescription: {\r\n verticalAlign: 'text-bottom',\r\n marginRight: 4,\r\n maxWidth: 200,\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n display: 'inline-block',\r\n },\r\n});\r\n","export const getInsertionOrderDetailsCellStyles = () => ({\r\n InsertionOrderDetailsButton: {\r\n width: '100%',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n display: 'inline-block',\r\n },\r\n});\r\n","import React, { useMemo, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport _ from 'underscore';\r\nimport URI from 'urijs';\r\nimport { useCtrLogger } from '@bingads-webui-campaign/reports-v4-telemetry';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { getRoutePathById, siteMapPropType, withSiteMap, processor } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { TooltipHost, TooltipDelay, DirectionalHint, Link as LinkButton } from '@fluentui/react';\r\nimport { formatCurrency, getMismatchedInfoString, parseDecimal } from '../utils';\r\nimport { getBillingDocumentCellStyles } from '../styles';\r\n\r\nexport function BillingDocumentCellBase({\r\n i18n,\r\n siteMap,\r\n billingDocumentNumbers,\r\n mismatchedAmount,\r\n mismatchedReason,\r\n currencyCode,\r\n}) {\r\n const classes = useDefaultStyles(getBillingDocumentCellStyles);\r\n const { scope: { values: { cid, aid, uid } } } = useContext(ScopeContext);\r\n const ctrLogger = useCtrLogger('ReportsV4PreviewReport');\r\n\r\n const mismatchedAmountNumber = parseDecimal({ i18n, value: mismatchedAmount });\r\n const mismatchedAmountString = formatCurrency({ i18n, value: mismatchedAmountNumber, currencyCode });\r\n const mismatchedInfoString = getMismatchedInfoString({ i18n, mismatchedReason, mismatchedAmountString });\r\n const showMismatchIcon = useMemo(() => !_.isEmpty(billingDocumentNumbers) && !_.isEmpty(mismatchedInfoString), [billingDocumentNumbers, mismatchedInfoString]);\r\n\r\n const bilingDocumentLink = ({ bdNumber }) => {\r\n const pathname = getRoutePathById(siteMap, 'transactionBillingDocuments');\r\n const searchParams = {\r\n aid,\r\n cid,\r\n uid,\r\n prefilter: `[{\"Field\":\"SAPDocumentNumber\",\"Operator\":2,\"Values\":\"${bdNumber}\"}]`,\r\n };\r\n\r\n const link = new URI(pathname).addSearch(searchParams).toString();\r\n return link;\r\n };\r\n\r\n const onClickLink = ({ bdNumber }) => {\r\n ctrLogger.click({ target: 'billingDocumentNumber', extraData: { reportType: 'InsertionOrderReport', documentNumber: bdNumber } });\r\n return true;\r\n };\r\n\r\n const onHoverMismatchIcon = () => {\r\n ctrLogger.click({ target: 'mismatchIcon', extraData: { reportType: 'InsertionOrderReport', mismatchedAmountNumber } });\r\n };\r\n\r\n const tooltipProps = useMemo(() => ({\r\n onRenderContent: () => (\r\n {text},\r\n }}\r\n template={mismatchedInfoString}\r\n />\r\n ),\r\n }), [mismatchedInfoString]);\r\n\r\n return (\r\n
\r\n
\r\n {billingDocumentNumbers &&\r\n _.map(billingDocumentNumbers, billingDocumentNumber => (\r\n onClickLink({ bdNumber: billingDocumentNumber })}\r\n >\r\n {billingDocumentNumber}\r\n \r\n ))}\r\n
\r\n {showMismatchIcon &&\r\n \r\n \r\n }\r\n
\r\n );\r\n}\r\n\r\nBillingDocumentCellBase.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n siteMap: siteMapPropType.isRequired,\r\n billingDocumentNumbers: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\r\n mismatchedAmount: PropTypes.string,\r\n mismatchedReason: PropTypes.string,\r\n currencyCode: PropTypes.string,\r\n};\r\n\r\nBillingDocumentCellBase.defaultProps = {\r\n billingDocumentNumbers: [],\r\n mismatchedAmount: null,\r\n mismatchedReason: null,\r\n currencyCode: null,\r\n};\r\n\r\nexport const BillingDocumentCell = withSiteMap(\r\n BillingDocumentCellBase,\r\n [processor.processPermissions, processor.processPath]\r\n);\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classname from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getAmountCellStyles } from '../styles';\r\nimport { CellItemHeight } from '../constants';\r\nimport { getBudgetChangeString } from '../utils';\r\n\r\nfunction AmountCellItem({\r\n value, description, className, hasBorderBottomLine, itemHeight, hasGreenColor,\r\n}) {\r\n const classes = useDefaultStyles(getAmountCellStyles);\r\n return value ? (\r\n
\r\n {value}\r\n {description && {description}}\r\n
\r\n ) : null;\r\n}\r\n\r\nAmountCellItem.propTypes = {\r\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n description: PropTypes.string,\r\n className: PropTypes.string,\r\n hasBorderBottomLine: PropTypes.bool,\r\n itemHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n hasGreenColor: PropTypes.bool,\r\n};\r\nAmountCellItem.defaultProps = {\r\n value: null,\r\n description: null,\r\n className: null,\r\n hasBorderBottomLine: false,\r\n itemHeight: null,\r\n hasGreenColor: false,\r\n};\r\n\r\n// At least one of the three values is not null: spendAmount, adjustmentAmount, budgetChangeAmount\r\nexport function AmountCell({\r\n i18n,\r\n spendAmount,\r\n adjustmentAmount,\r\n budgetChangeAmount,\r\n withBudgetChangeDescription,\r\n budgetChangeOldValue,\r\n budgetChangeNewValue,\r\n spendRawValue,\r\n adjustmentRawValue,\r\n budgetChangeRawValue,\r\n budgetChangeOldValueRawValue,\r\n budgetChangeNewValueRawValue,\r\n}) {\r\n const classes = useDefaultStyles(getAmountCellStyles);\r\n const hasSpendUnderLine = useMemo(() => !!adjustmentAmount || !!budgetChangeAmount, [adjustmentAmount, budgetChangeAmount]);\r\n const hasAdjustmentUnderLine = useMemo(() => !!budgetChangeAmount, [budgetChangeAmount]);\r\n\r\n const budgetChangeDescription = withBudgetChangeDescription\r\n ? i18n.getString(\r\n _TL_('Budget change from {{budgetChangeOldValue}} to {{budgetChangeNewValue}}'),\r\n {\r\n budgetChangeOldValue: getBudgetChangeString({ i18n, rawValue: budgetChangeOldValueRawValue, amountValue: budgetChangeOldValue }),\r\n budgetChangeNewValue: getBudgetChangeString({ i18n, rawValue: budgetChangeNewValueRawValue, amountValue: budgetChangeNewValue }),\r\n }\r\n )\r\n : null;\r\n\r\n return (\r\n
\r\n 0}\r\n />\r\n 0}\r\n />\r\n 0}\r\n />\r\n
\r\n );\r\n}\r\n\r\nAmountCell.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n spendAmount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n adjustmentAmount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n budgetChangeAmount: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n withBudgetChangeDescription: PropTypes.bool,\r\n budgetChangeOldValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n budgetChangeNewValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n spendRawValue: PropTypes.string,\r\n adjustmentRawValue: PropTypes.string,\r\n budgetChangeRawValue: PropTypes.string,\r\n budgetChangeOldValueRawValue: PropTypes.string,\r\n budgetChangeNewValueRawValue: PropTypes.string,\r\n};\r\n\r\nAmountCell.defaultProps = {\r\n spendAmount: null,\r\n adjustmentAmount: null,\r\n budgetChangeAmount: null,\r\n withBudgetChangeDescription: false,\r\n budgetChangeOldValue: null,\r\n budgetChangeNewValue: null,\r\n spendRawValue: null,\r\n adjustmentRawValue: null,\r\n budgetChangeRawValue: null,\r\n budgetChangeOldValueRawValue: null,\r\n budgetChangeNewValueRawValue: null,\r\n};\r\n","import React, { useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classname from 'classnames';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getChangeTypeCellStyles } from '../styles';\r\nimport { CellItemHeight } from '../constants';\r\n\r\nfunction ChangeTypeCellItem({\r\n value, className, hasBorderBottomLine, itemHeight,\r\n}) {\r\n const classes = useDefaultStyles(getChangeTypeCellStyles);\r\n return (\r\n
\r\n {value}\r\n
\r\n );\r\n}\r\n\r\nChangeTypeCellItem.propTypes = {\r\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n className: PropTypes.string,\r\n hasBorderBottomLine: PropTypes.bool,\r\n itemHeight: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\r\n};\r\nChangeTypeCellItem.defaultProps = {\r\n value: null,\r\n className: null,\r\n hasBorderBottomLine: false,\r\n itemHeight: null,\r\n};\r\n\r\n// At least one of the three values is not null: spendAmount, adjustmentAmount, budgetChangeAmount\r\nexport function ChangeTypeCell({\r\n spend,\r\n adjustment,\r\n budgetChange,\r\n withBudgetChangeDescription,\r\n}) {\r\n const classes = useDefaultStyles(getChangeTypeCellStyles);\r\n const hasSpendUnderLine = useMemo(() => !!adjustment || !!budgetChange, [adjustment, budgetChange]);\r\n const hasAdjustmentUnderLine = useMemo(() => !!budgetChange, [budgetChange]);\r\n\r\n return (\r\n
\r\n {!!spend && }\r\n {!!adjustment && }\r\n {!!budgetChange && }\r\n
\r\n );\r\n}\r\n\r\nChangeTypeCell.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n spend: PropTypes.string,\r\n adjustment: PropTypes.string,\r\n budgetChange: PropTypes.string,\r\n withBudgetChangeDescription: PropTypes.bool,\r\n};\r\n\r\nChangeTypeCell.defaultProps = {\r\n spend: null,\r\n adjustment: null,\r\n budgetChange: null,\r\n withBudgetChangeDescription: false,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classname from 'classnames';\r\nimport _ from 'underscore';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getAmountTotalCellStyles } from '../styles';\r\n\r\nfunction AmountTotalCellItem({\r\n amountType, amountValue, className,\r\n}) {\r\n const classes = useDefaultStyles(getAmountTotalCellStyles);\r\n const hasGreenColor = _.isString(amountValue) && amountValue[0] === '+';\r\n return (\r\n
\r\n {amountType}\r\n {amountValue}\r\n
\r\n );\r\n}\r\n\r\nAmountTotalCellItem.propTypes = {\r\n amountType: PropTypes.string.isRequired,\r\n amountValue: PropTypes.string.isRequired,\r\n className: PropTypes.string,\r\n};\r\nAmountTotalCellItem.defaultProps = {\r\n className: '',\r\n};\r\n\r\nexport function AmountTotalCell({\r\n i18n,\r\n totalSpendAmount,\r\n totalAdjustmentAmount,\r\n totalBudgetChangeAmount,\r\n withPadding,\r\n}) {\r\n const classes = useDefaultStyles(getAmountTotalCellStyles);\r\n\r\n return (\r\n
\r\n {totalSpendAmount && }\r\n {totalAdjustmentAmount && }\r\n {totalBudgetChangeAmount && }\r\n
\r\n );\r\n}\r\n\r\nAmountTotalCell.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n totalSpendAmount: PropTypes.string,\r\n totalAdjustmentAmount: PropTypes.string,\r\n totalBudgetChangeAmount: PropTypes.string,\r\n withPadding: PropTypes.bool,\r\n};\r\n\r\nAmountTotalCell.defaultProps = {\r\n totalSpendAmount: null,\r\n totalAdjustmentAmount: null,\r\n totalBudgetChangeAmount: null,\r\n withPadding: false,\r\n};\r\n","import { useMemo, useContext } from 'react';\r\nimport _ from 'underscore';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useJsData } from '@bingads-webui-cc-react/js-data-rest';\r\nimport { usePerfMarkerLifecycle } from '@bingads-webui-react/hoc-with-perf-marker';\r\nimport { formatInsertionOrderLabel } from '../utils';\r\nimport { MaxInsertionOrderLimit } from '../constants';\r\n\r\nexport const useInsertionOrderData = ({\r\n i18n,\r\n searchTerm,\r\n queryField,\r\n extraPredicate,\r\n}) => {\r\n const {\r\n scope: { values: { cid, aid, uid } },\r\n } = useContext(ScopeContext);\r\n const searchPredicate = !_.isEmpty(searchTerm) ? `{\"Field\":\"${queryField}\",\"Operator\":2,\"Values\":\"${searchTerm}\"}` : '';\r\n const { data, loading } = useJsData(jsData => jsData.InsertionOrdersGridData.findAll({\r\n cid,\r\n aid,\r\n uid,\r\n limit: MaxInsertionOrderLimit,\r\n offset: 0,\r\n $predicate: `[${[searchPredicate, extraPredicate].filter(p => !_.isEmpty(p)).join(',')}]`,\r\n }), [searchTerm, cid, aid, uid]);\r\n\r\n usePerfMarkerLifecycle(!loading);\r\n\r\n const { value, total } = (data && data.raw) || {};\r\n\r\n const insertionOrderItems = useMemo(() => {\r\n if (value) {\r\n return _.map(value, item => ({\r\n id: item.InsertionOrderId,\r\n name: formatInsertionOrderLabel({\r\n i18n,\r\n orderName: item.InsertionOrderName,\r\n seriesName: item.SeriesName,\r\n startDate: item.StartDateText,\r\n endDate: item.EndDateText,\r\n budget: item.SpendCapAmount,\r\n }),\r\n selected: false,\r\n disabled: false,\r\n }));\r\n }\r\n return value;\r\n }, [i18n, value]);\r\n\r\n return {\r\n insertionOrderItems: insertionOrderItems || [],\r\n total,\r\n loading,\r\n };\r\n};\r\n","import React, { useContext, useMemo, useState, useCallback, useEffect } from 'react';\r\nimport classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { TransferSelector } from '@bingads-webui-react/transfer-selector';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Callout } from '@fluentui/react';\r\nimport { MaxInsertionOrderLimit } from '../constants';\r\nimport { useInsertionOrderData } from '../hooks/use-insertion-order-data';\r\nimport { getInsertionOrderSelectorStyle } from '../styles';\r\nimport { getSearchBarPlaceholder, getSearchFieldOptions } from '../utils';\r\n\r\nexport function InsertionOrderSelectorCallout({\r\n target,\r\n initialSelectedItems,\r\n onApply: onApplyProps,\r\n onDismiss,\r\n}) {\r\n const classes = useDefaultStyles(getInsertionOrderSelectorStyle);\r\n const i18n = useContext(I18nContext);\r\n\r\n const [selectedInsertionOrderItems, setSelectedInsertionOrderItems] = useState(initialSelectedItems);\r\n const [queryText, setQueryText] = useState('');\r\n const [searchTerm, setSearchTerm] = useState('');\r\n const [queryField, setQueryField] = useState(null);\r\n const [shouldAddAll, setShouldAddAll] = useState(true);\r\n\r\n const handleQueryChange = (newValue) => {\r\n setQueryText(newValue);\r\n };\r\n const handleClearSearch = () => {\r\n setQueryText('');\r\n };\r\n const onSearch = ({ searchText, searchField }) => {\r\n setShouldAddAll(false);\r\n setSearchTerm(searchText);\r\n setQueryField(searchField);\r\n };\r\n const searchProps = useMemo(() => {\r\n const placeholder = getSearchBarPlaceholder({ i18n, searchField: queryField });\r\n return {\r\n showSearchBar: true,\r\n onSearch,\r\n placeholder,\r\n queryText,\r\n handleQueryChange,\r\n handleClearSearch,\r\n showSearchFieldSelect: true,\r\n searchFieldOptions: getSearchFieldOptions(),\r\n };\r\n }, [i18n, queryField, queryText]);\r\n\r\n const { insertionOrderItems, total, loading } = useInsertionOrderData({\r\n i18n,\r\n searchTerm,\r\n queryField,\r\n });\r\n\r\n const onAddAll = useCallback(() => {\r\n const newSelected = _.map(insertionOrderItems, item => ({ ...item, selected: true }));\r\n setSelectedInsertionOrderItems(newSelected.toReversed());\r\n }, [insertionOrderItems]);\r\n\r\n useEffect(() => {\r\n if (shouldAddAll && _.isEmpty(initialSelectedItems) && !_.isEmpty(insertionOrderItems)) {\r\n onAddAll();\r\n }\r\n }, [initialSelectedItems, insertionOrderItems, onAddAll, shouldAddAll]);\r\n\r\n const onRemoveAll = () => {\r\n setSelectedInsertionOrderItems([]);\r\n };\r\n const onAdd = (selected) => {\r\n const newSelected = [selected, ...selectedInsertionOrderItems];\r\n setSelectedInsertionOrderItems(newSelected);\r\n };\r\n const onRemove = (selected) => {\r\n const newSelected = _.filter(selectedInsertionOrderItems, item => item.id !== selected.id);\r\n setSelectedInsertionOrderItems(newSelected);\r\n };\r\n\r\n const onApply = () => {\r\n onApplyProps(selectedInsertionOrderItems);\r\n };\r\n\r\n return (\r\n \r\n MaxInsertionOrderLimit}\r\n isLoadingItems={loading}\r\n />\r\n \r\n );\r\n}\r\n\r\nInsertionOrderSelectorCallout.propTypes = {\r\n target: PropTypes.string.isRequired,\r\n onApply: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n initialSelectedItems: PropTypes.arrayOf(PropTypes.shape({})),\r\n};\r\n\r\nInsertionOrderSelectorCallout.defaultProps = {\r\n initialSelectedItems: [],\r\n};\r\n","import React, { useContext, useMemo, useState } from 'react';\r\nimport classname from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { useCtrLogger } from '@bingads-webui-campaign/reports-v4-telemetry';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Button, Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getInsertionOrderSelectorStyle } from '../styles';\r\nimport { getSelectorButtonDescription } from '../utils';\r\nimport { InsertionOrderSelectorCallout } from './insertion-order-selector-callout';\r\n\r\nexport function InsertionOrderSelector({\r\n selectedInsertionOrders,\r\n updateSelectedInsertionOrder,\r\n}) {\r\n const [isCalloutVisible, setIsCalloutVisible] = useState(false);\r\n const classes = useDefaultStyles(getInsertionOrderSelectorStyle);\r\n const i18n = useContext(I18nContext);\r\n const ctrLogger = useCtrLogger('ReportsV4PreviewReport');\r\n const buttonDescription = useMemo(() => getSelectorButtonDescription({ i18n, selectedInsertionOrders }), [selectedInsertionOrders, i18n]);\r\n\r\n const handleApply = (selected) => {\r\n setIsCalloutVisible(!isCalloutVisible);\r\n updateSelectedInsertionOrder(selected);\r\n };\r\n\r\n const onSelectorButtonClick = () => {\r\n ctrLogger.click({ target: 'insertionOrderSelectorButton', extraData: { reportType: 'InsertionOrderReport', oldCalloutVisible: isCalloutVisible, newCalloutVisible: !isCalloutVisible } });\r\n setIsCalloutVisible(!isCalloutVisible);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {buttonDescription}\r\n \r\n \r\n \r\n {isCalloutVisible &&\r\n { setIsCalloutVisible(false); }}\r\n />\r\n }\r\n \r\n );\r\n}\r\n\r\nInsertionOrderSelector.propTypes = {\r\n selectedInsertionOrders: PropTypes.arrayOf(PropTypes.shape({})),\r\n updateSelectedInsertionOrder: PropTypes.func,\r\n};\r\n\r\nInsertionOrderSelector.defaultProps = {\r\n selectedInsertionOrders: [],\r\n updateSelectedInsertionOrder: _.noop,\r\n};\r\n","import React, { useContext, useMemo } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport classnames from 'classnames';\r\nimport URI from 'urijs';\r\nimport { useCtrLogger } from '@bingads-webui-campaign/reports-v4-telemetry';\r\nimport { getRoutePathById, siteMapPropType, withSiteMap, processor } from '@bingads-webui-campaign-react/with-site-map';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { Link as LinkButton } from '@fluentui/react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getInsertionOrderDetailsCellStyles } from '../styles';\r\n\r\nexport function InsertionOrderDetailsBase({\r\n siteMap,\r\n insertionOrderDetailValue,\r\n insertionOrderId,\r\n accountId,\r\n}) {\r\n const classes = useDefaultStyles(getInsertionOrderDetailsCellStyles);\r\n const { scope: { values: { cid, aid, uid } } } = useContext(ScopeContext);\r\n const ctrLogger = useCtrLogger('ReportsV4PreviewReport');\r\n\r\n const ioHistoryLink = useMemo(() => {\r\n const pathname = getRoutePathById(siteMap, 'ioViewHistory');\r\n const searchParams = {\r\n aid,\r\n cid,\r\n uid,\r\n orderId: insertionOrderId,\r\n accountId,\r\n };\r\n\r\n const link = new URI(pathname).addSearch(searchParams).toString();\r\n return link;\r\n }, [cid, aid, uid, insertionOrderId, accountId]);\r\n\r\n const onClickLink = () => {\r\n ctrLogger.click({ target: 'insertionOrderDetail', extraData: { reportType: 'insertionOrderReport', insertionOrderId, insertionOrderDetailValue } });\r\n return true;\r\n }\r\n\r\n return (\r\n
\r\n \r\n {insertionOrderDetailValue}\r\n \r\n
\r\n );\r\n}\r\n\r\nInsertionOrderDetailsBase.propTypes = {\r\n siteMap: siteMapPropType.isRequired,\r\n insertionOrderDetailValue: PropTypes.string.isRequired,\r\n insertionOrderId: PropTypes.oneOfType([PropTypes.number, PropTypes.string]).isRequired,\r\n};\r\n\r\nInsertionOrderDetailsBase.defaultProps = {\r\n};\r\n\r\nexport const InsertionOrderDetailsCell = withSiteMap(\r\n InsertionOrderDetailsBase,\r\n [processor.processPermissions, processor.processPath]\r\n);\r\n","import { isFunction, object } from 'underscore';\r\nimport React, { Fragment } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { localize, FilterBarIngoreClickOutsideClassName } from '@bingads-webui/filter-commons';\r\nimport { flattenEntitySchema, buildNameToPropertyMapping } from '@bingads-webui/filter-schema';\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { FilterBar } from '@bingads-webui/filter-bar-react';\r\nimport { PredicateListReadonly } from '@bingads-webui/predicate-list-readonly-react';\r\nimport { setTrimmedFilterDataOptionsDefaultSearchInsightsReport } from '../../reports-v4-report-preview/src/helpers/dynamic-filter-options-helper';\r\n\r\nconst getStyles = () => ({\r\n predicateList: {\r\n maxWidth: '398px',\r\n '& .predicates': {\r\n minWidth: 'initial',\r\n },\r\n '& .add-filter-button': {\r\n margin: 0,\r\n },\r\n '& .iconba': {\r\n fontSize: '14px !important',\r\n },\r\n },\r\n});\r\n\r\nclass FilterViewManagerUnthemed extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.initializeEntitySchema(props);\r\n\r\n this.maximumPredicateLimit = Number.MAX_SAFE_INTEGER;\r\n\r\n this.state = {\r\n showFilterBar: false,\r\n selectableFilter: null,\r\n openedPredicateIndex: null,\r\n savedFilterNames: [],\r\n };\r\n\r\n if (props.searchbox) {\r\n this.setupSearchboxFilterOnToolbar();\r\n }\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.entitySchema !== this.props.entitySchema) {\r\n this.initializeEntitySchema(this.props);\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n onEditableFilterUpdate = (query, source = 'regular-filter') => {\r\n this.props.setEditableFilter(query, source);\r\n this.setState({\r\n openedPredicateIndex: null,\r\n });\r\n };\r\n\r\n onReset = () => {\r\n this.props.setEditableFilter({}, 'reset-filter');\r\n this.setState({\r\n selectableFilter: null,\r\n openedPredicateIndex: null,\r\n });\r\n this.hideFilterBar();\r\n if (isFunction(this.props.updateWaterfallFilter)) {\r\n this.props.updateWaterfallFilter(null);\r\n }\r\n };\r\n\r\n setupSearchboxFilterOnToolbar = () => {\r\n const id = 'search-box-filter';\r\n const searchBoxItem = {\r\n id,\r\n type: 'search-box',\r\n placeholder: this.props.searchbox.placeholder,\r\n handleChange: (value) => {\r\n if (value) {\r\n const query = object(\r\n [this.props.searchbox.searchProperty],\r\n [object([this.props.searchbox.searchOperator || '$contains'], [value])]\r\n );\r\n this.onEditableFilterUpdate(query, id);\r\n }\r\n },\r\n };\r\n this.props.updateToolbar(searchBoxItem);\r\n };\r\n\r\n setupPredicateListOnToolbar = (filterEntity) => {\r\n const predicateListView = (\r\n {\r\n this.setState({\r\n openedPredicateIndex,\r\n showFilterBar: true,\r\n });\r\n this.props.resetToolbarVisibility({\r\n forceHideToolbar: true,\r\n });\r\n }}\r\n onSelectableFilterUpdate={this.onSelectableFilterUpdate}\r\n hideAddFilterButton={this.props.hideAddFilterButton}\r\n getPredicateIconClassName={this.props.getPredicateIconClassName}\r\n />);\r\n const newItem = {\r\n id: 'predicate-list',\r\n type: 'custom',\r\n content: predicateListView,\r\n classes: this.props.classes.predicateList,\r\n };\r\n this.props.updateToolbar(newItem);\r\n };\r\n\r\n initializeEntitySchema = (props) => {\r\n this.entitySchema = localize(\r\n flattenEntitySchema(props.entitySchema),\r\n props.schemaI18n,\r\n props.legacyI18n\r\n );\r\n\r\n const newEntitySchema = setTrimmedFilterDataOptionsDefaultSearchInsightsReport(props.editableFilter, this.entitySchema);\r\n\r\n this.odataOptions = {\r\n fieldMap: buildNameToPropertyMapping(newEntitySchema),\r\n };\r\n };\r\n\r\n createFilterEntity(query, name, id) {\r\n return new FilterEntity(\r\n query,\r\n {\r\n entitySchema: this.entitySchema,\r\n odata: this.odataOptions,\r\n },\r\n name,\r\n id\r\n );\r\n }\r\n\r\n hideFilterBar = () => {\r\n this.setState({\r\n showFilterBar: false,\r\n });\r\n this.props.resetToolbarVisibility({\r\n forceHideToolbar: false,\r\n });\r\n };\r\n\r\n render() {\r\n const filterEntity = this.createFilterEntity(this.props.editableFilter);\r\n if (this.state.showFilterBar) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n this.setupPredicateListOnToolbar(filterEntity);\r\n return null;\r\n }\r\n}\r\n\r\nFilterViewManagerUnthemed.propTypes = {\r\n schemaI18n: PropTypes.shape({\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }),\r\n }).isRequired,\r\n editableFilter: PropTypes.shape({\r\n }).isRequired,\r\n entitySchema: PropTypes.shape({\r\n }).isRequired,\r\n legacyI18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n updateToolbar: PropTypes.func.isRequired,\r\n resetToolbarVisibility: PropTypes.func.isRequired,\r\n searchbox: PropTypes.shape({\r\n searchProperty: PropTypes.string,\r\n searchOperator: PropTypes.string,\r\n placeholder: PropTypes.string,\r\n }),\r\n selector: PropTypes.arrayOf(PropTypes.shape({\r\n property: PropTypes.string,\r\n items: PropTypes.arrayOf(PropTypes.shape({\r\n text: PropTypes.string,\r\n value: PropTypes.arrayOf(PropTypes.string),\r\n })),\r\n removable: PropTypes.bool,\r\n defaultValue: PropTypes.arrayOf(PropTypes.string),\r\n })),\r\n updateWaterfallFilter: PropTypes.func,\r\n classes: PropTypes.shape({\r\n predicateList: PropTypes.string.isRequired,\r\n }).isRequired,\r\n isPoPEnabled: PropTypes.bool,\r\n readOnlyProperties: PropTypes.arrayOf(PropTypes.string),\r\n disallowDuplicateFilters: PropTypes.bool,\r\n hideSaveFilterButton: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\r\n disabledSaveFilterButtonWithReason: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\r\n hideAddFilterButton: PropTypes.bool,\r\n instrumentation: PropTypes.shape({\r\n writeRawLog: PropTypes.func,\r\n }),\r\n setEditableFilter: PropTypes.func.isRequired,\r\n getPredicateIconClassName: PropTypes.func,\r\n};\r\n\r\nFilterViewManagerUnthemed.defaultProps = {\r\n selector: [],\r\n searchbox: undefined,\r\n updateWaterfallFilter: null,\r\n isPoPEnabled: false,\r\n readOnlyProperties: [],\r\n hideSaveFilterButton: false,\r\n disabledSaveFilterButtonWithReason: '',\r\n hideAddFilterButton: false,\r\n instrumentation: null,\r\n disallowDuplicateFilters: false,\r\n getPredicateIconClassName: undefined,\r\n};\r\n\r\nexport const FilterViewManager =\r\n withInstrumentation(withDefaultStyles(FilterViewManagerUnthemed, getStyles));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ContentFooter } from '@bingads-webui-campaign-react/content-footer';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst reportShellStyle = () => ({\r\n contentFooter: {\r\n display: 'flex',\r\n flexDirection: 'column-reverse',\r\n width: '100%',\r\n position: 'static',\r\n marginTop: 'auto',\r\n },\r\n});\r\n\r\nfunction UnStyledReportsV4Footer(props) {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nUnStyledReportsV4Footer.propTypes = {\r\n classes: PropTypes.shape({\r\n contentFooter: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nexport const ReportsV4Footer = withDefaultStyles(UnStyledReportsV4Footer, reportShellStyle);\r\n","import _ from 'underscore';\r\nimport { reportType, dateRangePreset } from '@bingads-webui-campaign/reports-v4-strings';\r\n\r\nfunction mapKeyValue(object, fn) {\r\n return _.chain(object)\r\n .pairs()\r\n .map(fn)\r\n .object()\r\n .value();\r\n}\r\n\r\n\r\nconst frequencyType = {\r\n None: _TL_('None'),\r\n Daily: _TL_('Daily'),\r\n Weekly: _TL_('Weekly'),\r\n Monthly: _TL_('Monthly'),\r\n Other: _TL_('Other'),\r\n};\r\n\r\nexport default ({ i18n }) => ({\r\n name: 'ReportV4MyReport',\r\n type: 'object',\r\n properties: {\r\n Name: {\r\n type: 'string',\r\n title: i18n.getString(_TL_('Report Name')),\r\n filterable: true,\r\n customColumn: true,\r\n },\r\n ReportType: {\r\n type: 'string',\r\n title: i18n.getString(_TL_('Report base')),\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n customColumn: true,\r\n enum: Object.keys(reportType),\r\n localized: mapKeyValue(reportType, ([key, value]) => [\r\n `Enum.ReportType'${key}'`,\r\n i18n.getString(value),\r\n ]),\r\n },\r\n Frequency: {\r\n type: 'string',\r\n title: i18n.getString(_TL_('Schedule frequency')),\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n customColumn: true,\r\n enum: Object.keys(frequencyType),\r\n localized: mapKeyValue(frequencyType, ([key, value]) => [\r\n `Enum.Frequency'${key}'`,\r\n i18n.getString(value),\r\n ]),\r\n },\r\n DateRangePreset: {\r\n type: 'string',\r\n title: i18n.getString(_TL_('Date range')),\r\n chooseType: 'checkbox',\r\n filterable: true,\r\n customColumn: true,\r\n enum: Object.keys(dateRangePreset),\r\n localized: mapKeyValue(dateRangePreset, ([key, value]) => [\r\n `Enum.DateRangePreset'${key}'`,\r\n i18n.getString(value),\r\n ]),\r\n },\r\n // remove filters of these tow columns for there exists bugs when using `equal` to filter\r\n // LastAccessedAt: {\r\n // type: 'datetime',\r\n // title: i18n.getString(_TL_('Last accessed')),\r\n // filterable: true,\r\n // customColumn: true,\r\n // },\r\n // CreatedAt: {\r\n // type: 'datetime',\r\n // title: i18n.getString(_TL_('Created on')),\r\n // filterable: true,\r\n // customColumn: true,\r\n // },\r\n },\r\n});\r\n","import { getCommonFilterConfig } from '@bingads-webui-campaign/common-grid-config';\r\nimport { FilterPreferenceService } from '@bingads-webui-campaign-react/merchant-shared';\r\nimport { sessionStore } from '@bingads-webui/js-data-storage';\r\nimport myReportsSchema from './schema';\r\n\r\nconst schemaI18n = {\r\n property: (type, property) => property,\r\n value: (type, property, value) => value,\r\n};\r\n\r\nexport function getFilterConfig({\r\n i18n,\r\n}) {\r\n const filterConfig = getCommonFilterConfig({\r\n preferenceService: {},\r\n featureName: 'myReportsGrid',\r\n entitySchema: myReportsSchema({ i18n }),\r\n i18n,\r\n legacyGlobalI18n: i18n,\r\n sessionStore,\r\n preferenceStoreFactory: () => new FilterPreferenceService(),\r\n schemaI18nCampaign: schemaI18n,\r\n dataContextManager: {},\r\n jsdata: {},\r\n updatePilot: false,\r\n enableCampaignWaterfall: false,\r\n editor: {},\r\n searchbox: {\r\n placeholder: i18n.getString(_TL_('Report name')),\r\n searchProperty: 'Name',\r\n searchOperator: '$contains',\r\n ignoreCase: true,\r\n },\r\n });\r\n\r\n return filterConfig;\r\n}\r\n","import _ from 'underscore';\r\nimport { getRoutePathById } from '@bingads-webui-campaign-react/with-site-map';\r\n/* global Map */\r\n\r\nconst toolbarItemsWithoutSelection = ({\r\n i18n, permissions, scope, siteMap,\r\n}) => ([\r\n ...(permissions && permissions.CustomReportBuilder ? [\r\n ['button-create', {\r\n id: 'button-create',\r\n type: 'button',\r\n classes: ['btn-primary'],\r\n iconLeftGlyphName: 'ba-Add',\r\n text: i18n.getString(_TL_('Create report')),\r\n onClick: () => {\r\n scope.save(getRoutePathById(siteMap, 'reporting-build-custom-report'));\r\n },\r\n }],\r\n ] : []),\r\n ['predicate-list', {\r\n id: 'predicate-list',\r\n type: 'custom',\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['search-box-filter', {\r\n id: 'search-box-filter',\r\n type: 'search-box',\r\n placeholder: i18n.getString(_TL_('Report Name')),\r\n }],\r\n]);\r\n\r\n\r\nconst toolbarItemWithSelect = ({\r\n i18n, type, selectedItems, reportDuplicate, reportDownload, reportDelete,\r\n}) => ([\r\n ['selection-widget', {\r\n id: 'selection-widget',\r\n type: 'selection-widget',\r\n }],\r\n ['button-duplicate', {\r\n id: 'button-duplicate',\r\n type: 'button',\r\n classes: ['btn-link'],\r\n iconLeftGlyphName: 'ba-Copy',\r\n text: i18n.getString(_TL_('Duplicate')),\r\n onClick: () => {\r\n reportDuplicate();\r\n },\r\n isHide: selectedItems.length > 1,\r\n }],\r\n ['button-download', {\r\n id: 'button-download',\r\n type: 'button',\r\n classes: ['btn-link'],\r\n iconLeftGlyphName: 'ba-Download',\r\n text: i18n.getString(_TL_('Download')),\r\n onClick: () => {\r\n reportDownload();\r\n },\r\n isHide: selectedItems.length > 1,\r\n }],\r\n ['button-delete', {\r\n id: 'button-delete',\r\n type: 'button',\r\n classes: ['btn-link'],\r\n iconLeftGlyphName: 'ba-Delete',\r\n text: i18n.getString(_TL_('Delete')),\r\n onClick: () => {\r\n reportDelete();\r\n },\r\n isHide: type === 'Shared',\r\n }],\r\n ['expander', {\r\n type: 'expander',\r\n }],\r\n ['button-clear-selection', {\r\n id: 'button-clear-selection',\r\n type: 'button-clear-selection',\r\n }],\r\n]);\r\n\r\nexport function getMyReportsGridToolbarConfig({\r\n i18n, type, selectedItems, permissions, scope, siteMap, reportDuplicate, reportDownload, reportDelete,\r\n}) {\r\n const toolbarUnselectedConfig = new Map();\r\n toolbarItemsWithoutSelection({\r\n i18n, permissions, scope, siteMap,\r\n }).forEach(([key, value]) => {\r\n toolbarUnselectedConfig.set(key, value);\r\n });\r\n\r\n const toolbarSelectedConfig = new Map();\r\n toolbarItemWithSelect({\r\n i18n, type, selectedItems, reportDuplicate, reportDownload, reportDelete,\r\n }).forEach(([key, value]) => {\r\n if (!value.isHide) {\r\n toolbarSelectedConfig.set(key, _.omit(value, 'isHide'));\r\n }\r\n });\r\n\r\n return {\r\n toolbarUnselectedConfig,\r\n toolbarSelectedConfig,\r\n };\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const isReportTemplateType = type => _.includes([\r\n 'ReportUITemplate',\r\n 'ReportUITemplateTest',\r\n 'ReportUICustomerTemplate',\r\n 'ReportUICustomerTemplateTest',\r\n 'ReportUIAccountTemplate',\r\n 'ReportUIAccountTemplateTest',\r\n 'ReportUIUserTemplate',\r\n 'ReportUIUserTemplateTest',\r\n], type);\r\n","import React, { useState, useContext, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Spinner } from '@fluentui/react/lib/Spinner';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useReportDataSource } from '@bingads-webui-campaign/reports-v4-data-source';\r\nimport { TextField } from '@fluentui/react/lib/TextField';\r\nimport { Callout, mergeStyleSets } from '@fluentui/react';\r\nimport { DefaultButton, PrimaryButton } from '@fluentui/react/lib/Button';\r\nimport { isReportTemplateType } from '../shared';\r\n\r\nconst styles = mergeStyleSets({\r\n callout: {\r\n padding: '24px 16px',\r\n background: '#fff',\r\n },\r\n name: {\r\n marginBottom: 16,\r\n },\r\n actions: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n spinner: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n zIndex: '3',\r\n background: 'rgba(255, 255, 255, .6)',\r\n },\r\n});\r\n\r\nfunction InlineEditName(props) {\r\n const {\r\n target, item, onDismiss, onActionSuccess, notifyErrorPipe,\r\n } = props;\r\n const [name, setName] = useState(item.Name);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState('');\r\n const i18n = useContext(I18nContext);\r\n const reportApi = useReportDataSource();\r\n const isReportTemplate = isReportTemplateType(item.Type);\r\n\r\n useEffect(() => {\r\n if (name.trim() === '') {\r\n setError(i18n.getString(_TL_('Required field')));\r\n return;\r\n }\r\n if (name.length > 85) {\r\n setError(i18n.getString(_TL_('Field should not exceed 85 characters')));\r\n return;\r\n }\r\n setError('');\r\n }, [i18n, name]);\r\n\r\n async function saveName() {\r\n if (error) {\r\n return;\r\n }\r\n if (name === item.Name) {\r\n onDismiss();\r\n return;\r\n }\r\n setLoading(true);\r\n try {\r\n const originTaskItem = await reportApi.getTaskItem(item.Id);\r\n const taskItemToSave = {\r\n ...originTaskItem,\r\n Name: name,\r\n };\r\n await reportApi.saveReport(taskItemToSave, { isEmailRule: !isReportTemplate });\r\n onDismiss();\r\n onActionSuccess();\r\n } catch (e) {\r\n notifyErrorPipe(e);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n return (\r\n \r\n setName(v)} />\r\n
\r\n \r\n \r\n
\r\n {loading && }\r\n \r\n );\r\n}\r\n\r\nInlineEditName.propTypes = {\r\n item: PropTypes.shape({}).isRequired,\r\n target: PropTypes.shape({}).isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onActionSuccess: PropTypes.func.isRequired,\r\n notifyErrorPipe: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default InlineEditName;\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport { Link } from '@bingads-webui-campaign/reports-v4-history';\r\nimport { isReportTemplateType } from '../actions/shared';\r\nimport InlineEditName from '../actions/inline-edit/name';\r\n\r\nexport default ({\r\n i18n, ctrLogger, inlineDownloadDuplicate, handleInlineEditSuccess, notifyErrorPipe, permissions,\r\n}) => ({\r\n key: 'report-name',\r\n name: i18n.getString(_TL_('Report name')),\r\n fieldName: 'Name',\r\n minWidth: 210,\r\n maxWidth: 350,\r\n isRowHeader: true,\r\n isResizable: true,\r\n sortable: true,\r\n sortAscendingAriaLabel: 'Sorted A to Z',\r\n sortDescendingAriaLabel: 'Sorted Z to A',\r\n onRender: (item) => {\r\n function onClickReportName(e) {\r\n if (isReportTemplateType(item.Type)) {\r\n ctrLogger.click({\r\n target: 'SavedReport',\r\n extraData: _.pick(item, 'Id', 'ReportType'),\r\n });\r\n } else {\r\n e.preventDefault();\r\n ctrLogger.click({\r\n target: 'SavedInlineDownloadReport',\r\n extraData: _.pick(item, 'Id', 'Entity'),\r\n });\r\n inlineDownloadDuplicate(item);\r\n }\r\n }\r\n return (\r\n \r\n {item.Name}\r\n \r\n );\r\n },\r\n data: 'string',\r\n inlineEdit: true,\r\n onRenderInlineEdit: (e, item, hanelDismiss, cell) => (\r\n hanelDismiss()}\r\n onActionSuccess={() => handleInlineEditSuccess()}\r\n notifyErrorPipe={notifyErrorPipe}\r\n />\r\n ),\r\n});\r\n","import { reportType } from '@bingads-webui-campaign/reports-v4-strings';\r\n\r\nexport default ({ i18n }) => ({\r\n key: 'report-base',\r\n name: i18n.getString(_TL_('Report base')),\r\n fieldName: 'ReportType',\r\n minWidth: 100,\r\n maxWidth: 250,\r\n isResizable: true,\r\n sortable: true,\r\n data: 'number',\r\n onRender: item => (reportType[item.ReportType] ? i18n.getString(reportType[item.ReportType]) : item.ReportType),\r\n});\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport React, { useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { Spinner } from '@fluentui/react/lib/Spinner';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport { useReportDataSource } from '@bingads-webui-campaign/reports-v4-data-source';\r\nimport { Callout, mergeStyleSets } from '@fluentui/react';\r\nimport { DefaultButton, PrimaryButton } from '@fluentui/react/lib/Button';\r\nimport { FormGroup } from '@bingads-webui-campaign/inline-download-reports-grid';\r\nimport { InlineDownloadEmailFrequencyEditor } from '@bingads-webui-campaign/inline-download-email-frequency-editor';\r\nimport loadUsers from '@bingads-webui-campaign-legacy/inline-download-reports/load-users';\r\nimport { FrequencyEditPanel } from '@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor';\r\nimport { isReportTemplateType } from '../shared';\r\n\r\nconst styles = mergeStyleSets({\r\n callout: {\r\n padding: '24px 16px',\r\n background: '#fff',\r\n '& .ms-Callout-main': {\r\n overflow: 'visible',\r\n maxHeight: 'initial !important',\r\n },\r\n },\r\n spinner: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n zIndex: '3',\r\n background: 'rgba(255, 255, 255, .6)',\r\n },\r\n editor: {\r\n '& .inline-download-cron-editor': {\r\n display: 'flex',\r\n whiteSpace: 'pre',\r\n alignItems: 'center',\r\n\r\n '& .dropdown-menu': {\r\n overflow: 'auto',\r\n maxHeight: 360,\r\n display: 'none',\r\n },\r\n '& .open .dropdown-menu': {\r\n display: 'block',\r\n },\r\n '& > *': {\r\n marginRight: 4,\r\n },\r\n },\r\n },\r\n cancelBtn: {\r\n marginLeft: 8,\r\n },\r\n});\r\n\r\n\r\nfunction EmailReportEditor({\r\n item, legacyI18n, saveFrequency, onDismiss,\r\n}) {\r\n const { scope } = useContext(ScopeContext);\r\n const { aid, uid } = scope.values;\r\n const allUsersType = aid ? 'Account' : 'Customer';\r\n const i18n = useContext(I18nContext);\r\n\r\n const property = ['NotificationDeliveryOption', 'Cron', 'StartTime', 'EndTime'];\r\n const initEmailModel = _.pick(item, ...property);\r\n const [emailModel, setEmailModel] = useState(initEmailModel);\r\n return (\r\n
\r\n { setEmailModel(data); }}\r\n FormGroup={FormGroup}\r\n loadUsers={() => loadUsers({ allUsersType })}\r\n />\r\n
\r\n saveFrequency(emailModel)} text={i18n.getString(_TL_('Save'))} />\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nEmailReportEditor.propTypes = {\r\n item: PropTypes.shape({}).isRequired,\r\n legacyI18n: PropTypes.shape({}).isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n saveFrequency: PropTypes.func.isRequired,\r\n};\r\n\r\nfunction InlineFrequency(props) {\r\n const {\r\n target, item, onDismiss, onActionSuccess, notifyErrorPipe,\r\n } = props;\r\n const [loading, setLoading] = useState(false);\r\n const isReportTemplate = isReportTemplateType(item.Type);\r\n const i18n = useContext(I18nContext);\r\n const reportApi = useReportDataSource();\r\n\r\n async function saveFrequency(settings) {\r\n setLoading(true);\r\n try {\r\n const originTaskItem = await reportApi.getTaskItem(item.Id);\r\n await reportApi.patchTaskItem({ ...originTaskItem, ...settings }, { isEmailRule: !isReportTemplate });\r\n onDismiss();\r\n onActionSuccess();\r\n } catch (e) {\r\n notifyErrorPipe(e);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n function handleDismiss(e) {\r\n const calendarContainer = $('.k-animation-container .k-calendar-container');\r\n if (calendarContainer.find(e.target).length > 0) {\r\n return;\r\n }\r\n props.onDismiss();\r\n }\r\n\r\n function renderReportTemplate() {\r\n const {\r\n Cron,\r\n AttachFileToEmail,\r\n EmailRecipients,\r\n StartTime,\r\n EndTime,\r\n Format,\r\n } = item;\r\n return ();\r\n }\r\n\r\n function renderEmail() {\r\n return ();\r\n }\r\n\r\n return (\r\n \r\n {isReportTemplate ? renderReportTemplate() : renderEmail()}\r\n {loading && }\r\n \r\n );\r\n}\r\n\r\nInlineFrequency.propTypes = {\r\n item: PropTypes.shape({}).isRequired,\r\n target: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n legacyI18n: PropTypes.shape({}).isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onActionSuccess: PropTypes.func.isRequired,\r\n notifyErrorPipe: PropTypes.func.isRequired,\r\n};\r\n\r\nfunction areEqual(prevProps, nextProps) {\r\n return nextProps.item !== prevProps.item;\r\n}\r\n\r\nexport default React.memo(InlineFrequency, areEqual);\r\n","import React from 'react';\r\nimport { InlineDownloadCronI18n } from '@bingads-webui-campaign/inline-download-cron-i18n';\r\nimport InlineFrequency from '../actions/inline-edit/frequency';\r\n\r\nexport default ({\r\n i18n, legacyI18n, handleInlineEditSuccess, notifyErrorPipe,\r\n}) => ({\r\n key: 'scheduled-frequency',\r\n name: i18n.getString(_TL_('Scheduled frequency')),\r\n fieldName: 'Cron',\r\n minWidth: 200,\r\n maxWidth: 250,\r\n isResizable: true,\r\n sortable: true,\r\n data: 'string',\r\n inlineEdit: true,\r\n onRender: (item) => {\r\n const cronI18n = new InlineDownloadCronI18n({ i18n: legacyI18n });\r\n const { Cron } = item;\r\n return cronI18n.formatCron(Cron);\r\n },\r\n onRenderInlineEdit: (e, item, hanelDismiss, cell) => (\r\n hanelDismiss()}\r\n onActionSuccess={() => handleInlineEditSuccess()}\r\n notifyErrorPipe={notifyErrorPipe}\r\n />\r\n ),\r\n});\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport React, { useState, useContext, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Spinner } from '@fluentui/react/lib/Spinner';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useReportDataSource } from '@bingads-webui-campaign/reports-v4-data-source';\r\nimport { Callout, mergeStyleSets } from '@fluentui/react';\r\nimport { DefaultButton, PrimaryButton } from '@fluentui/react/lib/Button';\r\nimport { DateRangeEditor, DurableDropdown } from '@bingads-webui-campaign/inline-download-date-range-editor';\r\nimport { DateRangeFormat } from '@bingads-webui-campaign/date-range-utilities';\r\nimport { TimeRangeSelector, Warning, getToday, getDataObject, getApiObject } from '@bingads-webui-campaign/report-create';\r\nimport { schema as reportSchemas } from '@bingads-webui-campaign/reports-v4-schema';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\nimport { isReportTemplateType } from '../shared';\r\n\r\nconst styles = mergeStyleSets({\r\n callout: {\r\n padding: '24px 16px',\r\n background: '#fff',\r\n '& .ms-Callout-main': {\r\n position: 'initial',\r\n overflow: 'visible',\r\n },\r\n },\r\n actions: {\r\n marginTop: 16,\r\n },\r\n spinner: {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n width: '100%',\r\n height: '100%',\r\n zIndex: '3',\r\n background: 'rgba(255, 255, 255, .6)',\r\n },\r\n editor: {\r\n '& ul': {\r\n padding: 0,\r\n '& li': {\r\n listStyle: 'none',\r\n '& a[role=button]': {\r\n padding: '6px 10px',\r\n color: '#000',\r\n display: 'flex',\r\n alignItems: 'center',\r\n textDecoration: 'none',\r\n ':hover': {\r\n backgroundColor: '#f3f2f1',\r\n },\r\n '& .glyphicon-ok': {\r\n display: 'none',\r\n },\r\n '& .kendo-date-picker': {\r\n minWidth: 100,\r\n marginLeft: 5,\r\n marginRight: 5,\r\n },\r\n },\r\n '& a[role=button].selected': {\r\n backgroundColor: '#0078d4',\r\n color: '#fff',\r\n },\r\n },\r\n },\r\n },\r\n cancelBtn: {\r\n marginLeft: 8,\r\n },\r\n});\r\n\r\nfunction InlineEditDateRange(props) {\r\n const {\r\n target, item, legacyI18n, onDismiss, onActionSuccess, notifyErrorPipe,\r\n } = props;\r\n const [loading, setLoading] = useState(false);\r\n const i18n = useContext(I18nContext);\r\n const reportApi = useReportDataSource();\r\n const isReportTemplate = isReportTemplateType(item.Type);\r\n\r\n // report template\r\n const reportTemplateModel = getDataObject(item, { preview: true }).general;\r\n const [reportTemplateDataRange, setReportTemplateDataRange] = useState(reportTemplateModel.timeRange);\r\n const [reportTemplateWarnings, setReportTemplateWarnings] = useState({});\r\n\r\n // email rule\r\n const emailRuleModel = get(item, 'Selection.DateRange');\r\n const dateRangeFormat = new DateRangeFormat({ i18n: legacyI18n });\r\n const [emailDateRange, setEmailDateRange] = useState(emailRuleModel);\r\n const dropdownRef = useRef({});\r\n const updateEmailRuleDateRange = (data) => {\r\n setEmailDateRange(data);\r\n if (data.DateRangePreset) { // A date range other than Custom is selected\r\n dropdownRef.current.setState({ expanded: false });\r\n }\r\n };\r\n\r\n async function saveDateRange() {\r\n setLoading(true);\r\n try {\r\n const originTaskItem = await reportApi.getTaskItem(item.Id);\r\n let newTaskItem = {};\r\n if (isReportTemplate) {\r\n const updates = _.pick(getApiObject({\r\n general: {\r\n timeRange: reportTemplateDataRange,\r\n },\r\n }, { preview: true }), 'ReportTime');\r\n newTaskItem = { ...originTaskItem, ...updates };\r\n } else {\r\n const { ...taskItemToSave } = originTaskItem;\r\n taskItemToSave.Selection.DateRange = emailDateRange;\r\n newTaskItem = taskItemToSave;\r\n }\r\n await reportApi.patchTaskItem(newTaskItem, { isEmailRule: !isReportTemplate });\r\n onDismiss();\r\n onActionSuccess();\r\n } catch (e) {\r\n notifyErrorPipe(e);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }\r\n\r\n function handleDismiss(e) {\r\n const calendarContainer = $('.k-animation-container .k-calendar-container');\r\n if (calendarContainer.find(e.target).length > 0) {\r\n return;\r\n }\r\n props.onDismiss();\r\n }\r\n\r\n function renderReportTemplate() {\r\n const reportType = item.ReportType;\r\n const reportSchema = reportSchemas[reportType];\r\n\r\n return (\r\n \r\n setReportTemplateDataRange(val)}\r\n i18n={i18n}\r\n reportSchema={reportSchema}\r\n setWarning={val => setReportTemplateWarnings({ ...reportTemplateWarnings, timeRange: val })}\r\n timeGrain={reportTemplateModel.timeGrain}\r\n timeZone={reportTemplateModel.timeZone}\r\n today={getToday(i18n, reportTemplateModel.timeZone)}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n function renderEmailRule() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {isReportTemplate ? renderReportTemplate() : renderEmailRule()}\r\n
\r\n \r\n \r\n
\r\n {loading && }\r\n \r\n );\r\n}\r\n\r\nInlineEditDateRange.propTypes = {\r\n item: PropTypes.shape({}).isRequired,\r\n target: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n legacyI18n: PropTypes.shape({}).isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n onActionSuccess: PropTypes.func.isRequired,\r\n notifyErrorPipe: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default InlineEditDateRange;\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport { util } from '@bingads-webui-campaign/report-shared';\r\nimport InlineEditDateRange from '../actions/inline-edit/date-range';\r\n\r\nfunction getDateRange({ item, i18n }) {\r\n const dataRange = _.get(item, ['ReportTime']) || _.get(item, ['Selection', 'DateRange']);\r\n return util.formatDateRange(i18n, dataRange, item.ReportTimeZone);\r\n}\r\n\r\nexport default ({\r\n i18n, handleInlineEditSuccess, legacyI18n, notifyErrorPipe,\r\n}) => ({\r\n key: 'date-range',\r\n name: i18n.getString(_TL_('Date range')),\r\n fieldName: 'ReportTime/DateRangePreset',\r\n minWidth: 250,\r\n maxWidth: 300,\r\n isResizable: true,\r\n sortable: true,\r\n data: 'number',\r\n onRender: item => getDateRange({ item, i18n }),\r\n inlineEdit: true,\r\n onRenderInlineEdit: (e, item, hanelDismiss, cell, selector) => (\r\n hanelDismiss()}\r\n onActionSuccess={() => handleInlineEditSuccess()}\r\n notifyErrorPipe={notifyErrorPipe}\r\n />\r\n ),\r\n});\r\n","export default ({ i18n }) => ({\r\n key: 'created-by',\r\n name: i18n.getString(_TL_('Created by')),\r\n fieldName: 'CreatedBy/Name',\r\n minWidth: 70,\r\n maxWidth: 90,\r\n isResizable: true,\r\n sortable: true,\r\n data: 'number',\r\n onRender: item => (item.CreatedBy && item.CreatedBy.Name) || '-',\r\n});\r\n","import React from 'react';\r\n\r\nexport default ({ i18n }) => ({\r\n key: 'shared',\r\n name: i18n.getString(_TL_('Shared')),\r\n fieldName: 'Type',\r\n minWidth: 70,\r\n maxWidth: 90,\r\n isResizable: true,\r\n sortable: true,\r\n data: 'number',\r\n onRender: (item) => {\r\n const { Type } = item;\r\n return {i18n.getString(Type === 'ReportUITemplate' ? _TL_('No') : _TL_('Yes'))};\r\n },\r\n});\r\n","import { util } from '@bingads-webui-campaign/report-shared';\r\nimport { fromLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\n\r\nexport default ({ i18n, serverContext }) => ({\r\n key: 'last-accessed',\r\n name: i18n.getString(_TL_('Last accessed')),\r\n fieldName: 'LastAccessedAt',\r\n minWidth: 200,\r\n maxWidth: 250,\r\n isResizable: true,\r\n sortable: true,\r\n data: 'number',\r\n onRender: item => util.reformatDate(i18n, item.LastAccessedAt, fromLegacyTimeZone(serverContext.CurrentAccount.TimeZone), 'yMdhmsv'),\r\n});\r\n","import { util } from '@bingads-webui-campaign/report-shared';\r\nimport { fromLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\n\r\nexport default ({ i18n, serverContext }) => ({\r\n key: 'created-on',\r\n name: i18n.getString(_TL_('Created on')),\r\n fieldName: 'CreatedAt',\r\n minWidth: 200,\r\n maxWidth: 250,\r\n isResizable: true,\r\n sortable: true,\r\n data: 'number',\r\n onRender: item => util.reformatDate(i18n, item.CreatedAt, fromLegacyTimeZone(serverContext.CurrentAccount.TimeZone), 'yMdhmsv'),\r\n});\r\n","import { errorCodeToErrorMessageMapping } from '@bingads-webui-campaign/reports-v4-data-source';\r\nimport { ErrorHandlePipeFactory } from '@bingads-webui-campaign/react-hook-use-fetch';\r\nimport reportNameColumn from './report-name-column';\r\nimport reportBaseColumn from './report-base-column';\r\nimport scheduledFrequencyColumn from './scheduled-frequency-column';\r\nimport dateRangeColumn from './date-range-column';\r\nimport createByColumn from './createde-by-column';\r\nimport sharedColumn from './shared-column';\r\nimport lastAccessedColumn from './last-accessed-column';\r\nimport createdOnColumn from './created-on-column';\r\n\r\n\r\nexport function buildColumns({\r\n i18n, legacyI18n, serverContext, ctrLogger, inlineDownloadDuplicate, handleInlineEditSuccess, type, permissions,\r\n}) {\r\n const notifyErrorPipe = ErrorHandlePipeFactory.createNotifyErrorHandlerPipe(i18n, errorCodeToErrorMessageMapping);\r\n return [\r\n reportNameColumn({\r\n i18n, ctrLogger, inlineDownloadDuplicate, handleInlineEditSuccess, notifyErrorPipe, permissions,\r\n }),\r\n reportBaseColumn({ i18n }),\r\n scheduledFrequencyColumn({\r\n i18n, legacyI18n, handleInlineEditSuccess, notifyErrorPipe,\r\n }),\r\n dateRangeColumn({\r\n i18n, legacyI18n, handleInlineEditSuccess, notifyErrorPipe,\r\n }),\r\n ...(type === 'Shared' ? [createByColumn({ i18n })] : []),\r\n sharedColumn({ i18n }),\r\n lastAccessedColumn({ i18n, serverContext }),\r\n createdOnColumn({ i18n, serverContext }),\r\n ];\r\n}\r\n","import { transformReportAggregationItself } from '@bingads-webui-campaign/reports-v4-schema';\r\n\r\nexport const isDeprecatedDimensionReport = (entityType) => {\r\n const dimensionReportsEntity = [\r\n 'AgeAndGender ',\r\n 'CallForwardingDetail',\r\n 'PublisherWebsite',\r\n 'SearchTerms',\r\n 'ShoppingBrand',\r\n 'ShoppingCategory',\r\n 'ShoppingItemId',\r\n 'ShoppingProductType',\r\n 'ShoppingStoreId',\r\n ];\r\n\r\n return dimensionReportsEntity.includes(entityType);\r\n};\r\n\r\nexport function transformTaskItem(oldTaskItem) {\r\n // if is task item is in new schema, just return it\r\n if (oldTaskItem.IsPreview) {\r\n return oldTaskItem;\r\n }\r\n\r\n const newTaskITem = transformReportAggregationItself(oldTaskItem);\r\n return newTaskITem;\r\n}\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { SelectionMode, Selection } from '@fluentui/react/lib/DetailsList';\r\nimport { CampaignShimmeredDetailsList } from '@bingads-webui-grid/campaign-details-list';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-campaign-react/shell-ui-common';\r\nimport { withReportDataSource } from '@bingads-webui-campaign/reports-v4-data-source';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withRouter } from '@bingads-webui-campaign-react/router';\r\nimport { ToolbarContainer } from '@bingads-webui-campaign-react/toolbar-container';\r\nimport { getToolbarEditor } from '@bingads-webui-campaign-react/toolbar-plugin';\r\nimport { FilterViewManager } from '@bingads-webui-campaign/reports-v4-filter-view-manager';\r\nimport { SchemaI18n } from '@bingads-webui-universal/schema-i18n';\r\nimport { legacyKeys, util } from '@bingads-webui-campaign/report-shared';\r\nimport { buildLegacyI18n } from '@bingads-webui-campaign-react/smart-i18n';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { convertDateRangePresetToRangeId, convertComparisonDateRangeOptionToComparedKey } from '@bingads-webui-campaign/date-range-utilities';\r\nimport { WaterfallFilterType } from '@bingads-webui-campaign/filter-storage';\r\nimport { withScope, QueryParam, $current } from '@bingads-webui-react/scope-service';\r\nimport { withGlobalFilter } from '@bingads-webui-campaign-react/global-filter-context';\r\nimport { withServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { ReportsV4Footer } from '@bingads-webui-campaign/reports-v4-footer';\r\nimport { withCtrLogger } from '@bingads-webui-campaign/reports-v4-telemetry';\r\nimport { withIframeDownload } from '@bingads-webui/download-service';\r\nimport { withDFMCache } from '@bingads-webui/dfm-cache';\r\nimport { withSiteMap } from '@bingads-webui-campaign-react/with-site-map';\r\n\r\nimport { getFilterConfig } from './toolbar/filter-config';\r\nimport { getMyReportsGridToolbarConfig } from './toolbar/toolbar-config';\r\nimport { buildColumns } from './columns';\r\nimport bulkEditActionsFactory from './actions/bulk-edit';\r\nimport { isDeprecatedDimensionReport, transformTaskItem } from './helper';\r\n/* global Map */\r\n\r\nconst { convertDateTimeStringToCivilDate, dummyDate } = util;\r\n\r\nclass MyReportsGrid extends React.PureComponent {\r\n constructor(props) {\r\n super(props);\r\n\r\n const { toolbarUnselectedConfig, toolbarSelectedConfig } = this.getToolBarConfig([]);\r\n\r\n this.gridSelection = new Selection({\r\n onSelectionChanged: () => {\r\n this.onSelectedItemUpdated(this.gridSelection.getSelection());\r\n },\r\n });\r\n\r\n const {\r\n i18n, serverContext, ctrLogger, type,\r\n } = this.props;\r\n\r\n this.legacyI18n = buildLegacyI18n(i18n, legacyKeys);\r\n this.initBulkActions();\r\n const {\r\n inlineDownloadDuplicate,\r\n } = this;\r\n this.state = {\r\n columns: buildColumns({\r\n i18n,\r\n legacyI18n: this.legacyI18n,\r\n serverContext,\r\n ctrLogger,\r\n inlineDownloadDuplicate,\r\n handleInlineEditSuccess: () => this.fetchData(),\r\n type,\r\n permissions: this.props.serverContext.DynamicPermissions,\r\n }),\r\n items: null,\r\n forceHideToolbar: false,\r\n toolbarUnselectedConfig: new Map(toolbarUnselectedConfig),\r\n toolbarSelectedConfig: new Map(toolbarSelectedConfig),\r\n selectedItems: [],\r\n sort: '',\r\n filter: {},\r\n fetching: false,\r\n pageNumber: 1,\r\n pageSize: 20,\r\n total: 1,\r\n sortedColumn: {},\r\n blocking: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData(1, true);\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (prevState.columns !== this.state.columns) {\r\n this.fetchData();\r\n }\r\n }\r\n\r\n onClearSelection = () => {\r\n this.gridSelection.setAllSelected(false);\r\n };\r\n\r\n onPageChange = (page) => {\r\n this.fetchData(page);\r\n };\r\n\r\n onPageSizeChange = (pageSize) => {\r\n this.setState({ pageSize }, () => {\r\n this.fetchData();\r\n });\r\n };\r\n\r\n onSelectedItemUpdated(selectedItems) {\r\n const { toolbarSelectedConfig } = this.getToolBarConfig(selectedItems);\r\n this.setState({\r\n selectedItems,\r\n toolbarSelectedConfig,\r\n });\r\n }\r\n\r\n getToolBarConfig = selectedItems =>\r\n getMyReportsGridToolbarConfig({\r\n i18n: this.props.i18n,\r\n type: this.props.type,\r\n selectedItems,\r\n permissions: this.props.serverContext.DynamicPermissions,\r\n scope: this.props.scope,\r\n siteMap: this.props.siteMap,\r\n reportDuplicate: this.reportDuplicate,\r\n reportDownload: this.reportDownload,\r\n reportDelete: this.reportDelete,\r\n });\r\n\r\n initBulkActions() {\r\n const {\r\n i18n,\r\n scope,\r\n serverContext: {\r\n CurrentUser: {\r\n CultureDateTimeFormat: {\r\n ShortDatePattern,\r\n },\r\n LocaleID,\r\n },\r\n },\r\n serverContext,\r\n iframeDownload,\r\n updateWaterfallFilter,\r\n } = this.props;\r\n\r\n const { legacyI18n } = this;\r\n\r\n function getUrlSearch(params = {}) {\r\n const mergedParams = _.omit({\r\n uid: $current,\r\n cid: $current,\r\n aid: scope.values.aid,\r\n ...params,\r\n }, value => !value);\r\n const mergedScope = scope.getMerged(mergedParams);\r\n\r\n if (params.entity === 'Hotel') {\r\n delete mergedScope.campaignId;\r\n delete mergedScope.adGroupId;\r\n }\r\n\r\n if (isDeprecatedDimensionReport(params.entity)) {\r\n mergedScope.isDrprecated = true;\r\n }\r\n\r\n return `?${scope.stringify(mergedScope)}`;\r\n }\r\n\r\n function convertSelectionDateRangeToDateFilter({\r\n DateRange,\r\n ComparisonDateRange,\r\n }) {\r\n const startDate = convertDateTimeStringToCivilDate(DateRange.StartDate);\r\n const endDate = convertDateTimeStringToCivilDate(DateRange.EndDate);\r\n const basic = {\r\n RangeStartDate: i18n.formatCivilDate(startDate || dummyDate, { raw: ShortDatePattern }),\r\n RangeEndDate: i18n.formatCivilDate(endDate || dummyDate, { raw: ShortDatePattern }),\r\n RangeId: convertDateRangePresetToRangeId(DateRange.DateRangePreset),\r\n Rangelcid: LocaleID,\r\n };\r\n\r\n let compared = null;\r\n if (ComparisonDateRange) {\r\n const comparedStartDate = convertDateTimeStringToCivilDate(ComparisonDateRange.StartDate);\r\n const comparedEndDate = convertDateTimeStringToCivilDate(ComparisonDateRange.EndDate);\r\n compared = {\r\n formattedStart: i18n.formatCivilDate(comparedStartDate || dummyDate, { raw: ShortDatePattern }),\r\n formattedEnd: i18n.formatCivilDate(comparedEndDate || dummyDate, { raw: ShortDatePattern }),\r\n key: convertComparisonDateRangeOptionToComparedKey(ComparisonDateRange.ComparisonDateRangeOption),\r\n };\r\n }\r\n\r\n return {\r\n ...basic,\r\n compared,\r\n };\r\n }\r\n\r\n function restoreDateFilter(dateFilter) {\r\n updateWaterfallFilter({\r\n filterType: WaterfallFilterType.DateFilter,\r\n filter: dateFilter,\r\n });\r\n }\r\n\r\n this.bulkEditActions = bulkEditActionsFactory({\r\n i18n,\r\n onActionSuccess: () => this.fetchData(),\r\n resetSelection: () => this.gridSelection.setAllSelected(false),\r\n legacyI18n,\r\n scopeHistoryPush: scope.history.push,\r\n getUrlSearch,\r\n convertSelectionDateRangeToDateFilter,\r\n restoreDateFilter,\r\n serverContext,\r\n iframeDownload,\r\n history: this.props.history,\r\n rerunReport: this.props.rerunReportAndWaitForComplete,\r\n deleteReports: this.props.deleteReports,\r\n });\r\n }\r\n\r\n inlineDownloadDuplicate = (reportItem) => {\r\n this.bulkEditActions.duplicate([reportItem]);\r\n };\r\n\r\n logToolbarAction(actionName) {\r\n const { ctrLogger } = this.props;\r\n ctrLogger.click({\r\n target: actionName,\r\n extraData: this.state.selectedItems.map(item => _.pick(item, 'Id', 'Type', 'ReportType', 'Entity')),\r\n });\r\n }\r\n\r\n reportDuplicate = () => {\r\n this.logToolbarAction('Duplicate');\r\n this.bulkEditActions.duplicate(this.state.selectedItems);\r\n };\r\n\r\n reportDownload = () => {\r\n this.logToolbarAction('Download');\r\n this.bulkEditActions.download(this.state.selectedItems);\r\n };\r\n\r\n reportDelete = () => {\r\n this.logToolbarAction('Delete');\r\n this.setState({ blocking: true });\r\n this.bulkEditActions.del(this.state.selectedItems).finally(() => {\r\n this.setState({ blocking: false });\r\n });\r\n };\r\n\r\n resetToolbarVisibility = ({ forceHideToolbar }) => {\r\n this.setState({ forceHideToolbar });\r\n };\r\n\r\n sortAndFetch(column) {\r\n this.setState({\r\n sort: `${column.fieldName} ${column.isSortedDescending ? 'desc' : 'asc'}`,\r\n sortedColumn: column,\r\n }, () => {\r\n this.fetchData();\r\n });\r\n }\r\n\r\n fetchData(page = 1, enableDFM = false) {\r\n if (this.state.fetching) {\r\n return;\r\n }\r\n const { type, perfMarker } = this.props;\r\n if (this.state.items) {\r\n this.actionPerfMarker = perfMarker.createChild('My_Reports_Action');\r\n }\r\n this.setState({\r\n items: null,\r\n fetching: true,\r\n });\r\n const {\r\n filter, sort, pageSize,\r\n } = this.state;\r\n\r\n perfMarker.willFetchData();\r\n if (this.actionPerfMarker) {\r\n this.actionPerfMarker.willFetchData();\r\n }\r\n\r\n const getMyReports = _.partial(this.props.getMyReports, {\r\n type,\r\n sort,\r\n filter: Object.keys(filter).length > 0 ? (filter.$and || [filter]) : [],\r\n top: pageSize,\r\n skip: (page - 1) * pageSize,\r\n });\r\n const getCustomizedReportsDFM = enableDFM ?\r\n withDFMCache(getMyReports, `get${type}ReportsDFM`, this) : getMyReports;\r\n\r\n getCustomizedReportsDFM()\r\n .then((json) => {\r\n const originItems = json.value;\r\n const finalItems = originItems.map(transformTaskItem);\r\n perfMarker.willRender();\r\n if (this.actionPerfMarker) {\r\n this.actionPerfMarker.willRender();\r\n }\r\n this.setState({\r\n items: finalItems,\r\n fetching: false,\r\n pageNumber: page,\r\n });\r\n this.setState({\r\n total: json['@odata.count'],\r\n });\r\n this.props.updateCount(json['@odata.count']);\r\n }).catch(() => {\r\n this.setState({\r\n items: [],\r\n fetching: false,\r\n });\r\n });\r\n }\r\n\r\n renderFilterViewManager() {\r\n const { i18n } = this.props;\r\n const { toolbarSelectedConfig, toolbarUnselectedConfig } = this.state;\r\n\r\n const toolbarEditor = getToolbarEditor({\r\n toolbarConfig: {\r\n toolbarSelectedConfig,\r\n toolbarUnselectedConfig,\r\n },\r\n });\r\n\r\n const filterConfig = getFilterConfig({ i18n });\r\n\r\n return (\r\n
\r\n {\r\n this.setState({ filter: query }, () => {\r\n this.fetchData();\r\n });\r\n const { ctrLogger } = this.props;\r\n ctrLogger.click({\r\n target: source,\r\n extraData: query,\r\n });\r\n }}\r\n />\r\n
\r\n );\r\n }\r\n\r\n renderToolbarContainer() {\r\n const { i18n } = this.props;\r\n\r\n const selectionCount = this.state.selectedItems ? this.state.selectedItems.length : 0;\r\n const showToolbarSelected = selectionCount > 0;\r\n const showToolbarUnselected = !showToolbarSelected;\r\n return (\r\n \r\n );\r\n }\r\n\r\n render() {\r\n const {\r\n classes, i18n, type, perfMarker,\r\n } = this.props;\r\n\r\n const {\r\n pageNumber, pageSize, total, filter, sortedColumn, blocking, items, columns,\r\n } = this.state;\r\n\r\n const { onPageChange, onPageSizeChange } = this;\r\n const placeholderWithFilter = i18n.getString(_TL_('There are no reports based on your filtered search.'));\r\n const placeholderWithoutFilter = (\r\n \r\n {i18n.getString(_TL_('There are no saved custom reports. '))}\r\n \r\n \r\n );\r\n const toolbar = (\r\n \r\n {this.renderToolbarContainer()}\r\n {this.renderFilterViewManager()}\r\n \r\n );\r\n return (\r\n }>\r\n
\r\n \r\n this.sortAndFetch(column)}\r\n sortedColumn={sortedColumn}\r\n placeholder={filter.length > 0 ? placeholderWithFilter : placeholderWithoutFilter}\r\n freezingColumnCount={1}\r\n didUpdate={(prev) => {\r\n if (prev.enableShimmer && items) {\r\n perfMarker.done();\r\n if (this.actionPerfMarker) {\r\n this.actionPerfMarker.done();\r\n }\r\n }\r\n }}\r\n pager={{\r\n pageNumber,\r\n pageSize,\r\n total,\r\n onPageChange,\r\n onPageSizeChange,\r\n }}\r\n />\r\n \r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nMyReportsGrid.propTypes = {\r\n classes: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n getMyReports: PropTypes.func.isRequired,\r\n rerunReportAndWaitForComplete: PropTypes.func.isRequired,\r\n deleteReports: PropTypes.func.isRequired,\r\n type: PropTypes.string.isRequired,\r\n updateCount: PropTypes.func.isRequired,\r\n scope: PropTypes.instanceOf(QueryParam).isRequired,\r\n updateWaterfallFilter: PropTypes.func.isRequired,\r\n serverContext: PropTypes.shape({}).isRequired,\r\n iframeDownload: PropTypes.func.isRequired,\r\n history: PropTypes.shape({}).isRequired,\r\n ctrLogger: PropTypes.shape({}).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n\r\nMyReportsGrid.defaultProps = {\r\n};\r\n\r\nconst wrappers = [\r\n withI18nConsumer,\r\n withReportDataSource,\r\n withScope,\r\n withServerContext,\r\n withSiteMap,\r\n withGlobalFilter,\r\n withRouter,\r\n withIframeDownload,\r\n _.partial(withCtrLogger, _, 'ReportsV4MyReports'),\r\n];\r\n\r\nconst Wrapped = _.compose(...wrappers)(MyReportsGrid);\r\n\r\nexport { Wrapped as MyReportsGrid };\r\n","import _ from 'underscore';\r\nimport { deprecatedReports } from '@bingads-webui-campaign/reports-v4-schema';\r\nimport { showError, getDeprecatedMessage } from '@bingads-webui-campaign/report-shared';\r\nimport createSimilarReportEmailRule from '@bingads-webui-campaign-legacy/inline-download-reports/create-similar';\r\nimport { downloadReportEmailRule, deleteReportEmailRules } from '@bingads-webui-campaign-legacy/griddownload/view/loader';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { isReportTemplateType } from './shared';\r\n\r\nexport default ({\r\n i18n,\r\n onActionSuccess,\r\n resetSelection,\r\n legacyI18n,\r\n scopeHistoryPush,\r\n getUrlSearch,\r\n convertSelectionDateRangeToDateFilter,\r\n restoreDateFilter,\r\n serverContext,\r\n iframeDownload,\r\n history,\r\n rerunReport,\r\n deleteReports,\r\n}) => ({\r\n duplicate: (selectedItems) => {\r\n const taskItem = selectedItems[0];\r\n const {\r\n ReportType,\r\n Id,\r\n Type,\r\n } = taskItem;\r\n\r\n if (isReportTemplateType(Type)) {\r\n if (deprecatedReports[ReportType]) {\r\n showError(getDeprecatedMessage(ReportType, i18n));\r\n } else {\r\n history.push({\r\n pathname: `/campaign/vnext/reports-v4/edit/${Id}`,\r\n search: location.search + (Type === 'ReportUITemplate' ? '&type=ReportUITemplate' : ''),\r\n });\r\n }\r\n } else {\r\n createSimilarReportEmailRule(Id, {\r\n isForNewUI: true,\r\n scopeHistoryPush,\r\n getUrlSearch,\r\n i18n: legacyI18n,\r\n convertSelectionDateRangeToDateFilter,\r\n restoreDateFilter,\r\n serverContext,\r\n });\r\n }\r\n },\r\n\r\n download: async (selectedItems) => {\r\n const taskItem = selectedItems[0];\r\n const {\r\n ReportType,\r\n Type,\r\n } = taskItem;\r\n\r\n resetSelection();\r\n if (isReportTemplateType(Type)) {\r\n if (deprecatedReports[ReportType]) {\r\n showError(getDeprecatedMessage(ReportType, i18n));\r\n } else {\r\n notificationApi.showInfo(i18n.getString(_TL_('We are creating your report and it will be downloaded shortly.')), {\r\n autoDismissTime: 5000,\r\n });\r\n try {\r\n const res = await rerunReport(taskItem);\r\n iframeDownload(res.ResultId);\r\n } catch (error) {\r\n notificationApi.showWarning(i18n.getString(_TL_('We\\'ve encountered an error. Please try again or contact support.')), {\r\n autoDismissTime: 5000,\r\n });\r\n }\r\n }\r\n } else {\r\n downloadReportEmailRule(taskItem).catch((err) => {\r\n showError(err.message);\r\n });\r\n }\r\n },\r\n\r\n del: (selectedItems) => {\r\n // eslint-disable-next-line\r\n if (confirm(i18n.getString(_TL_('Are you sure you want to delete the selected items?')))) {\r\n const {\r\n reportTemplates,\r\n inlineDownloadReports,\r\n } = _.groupBy(selectedItems, ({ Type }) => (isReportTemplateType(Type) ? 'reportTemplates' : 'inlineDownloadReports'));\r\n\r\n const deleteReportTemplates = !_.isEmpty(reportTemplates) && deleteReports(reportTemplates);\r\n\r\n const deleteInlineDownloadReports = !_.isEmpty(inlineDownloadReports) && deleteReportEmailRules(inlineDownloadReports);\r\n\r\n resetSelection();\r\n return Promise.all([deleteReportTemplates, deleteInlineDownloadReports])\r\n .then(() => {\r\n onActionSuccess();\r\n return null;\r\n })\r\n .catch((err) => {\r\n showError(err.message || JSON.stringify(err.errors[0]));\r\n });\r\n }\r\n\r\n return Promise.resolve();\r\n },\r\n});\r\n\r\n","import { gridPopUpEditorStyle, uiblockerStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { ComponentSettings } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nconst { datePickerStyle } = ComponentSettings;\r\nexport default (_, { palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '@global': {\r\n ...uiblockerStyle({ palette }),\r\n ...gridPopUpEditorStyle({ palette }),\r\n ...datePickerStyle({ palette, iconFontFamily }),\r\n },\r\n myReportsContainer: {\r\n overflowY: 'auto',\r\n flex: 1,\r\n '& .tab-header': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n },\r\n },\r\n myReportsGrid: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n '& .campaign-details-list-container': {\r\n padding: '0 0 0 32px', // There should be no white space at right\r\n },\r\n '& .toolbar-container': {\r\n background: '#fff',\r\n '& .container-fluid': {\r\n paddingLeft: 8,\r\n },\r\n },\r\n '& .report-name-link': {\r\n whiteSpace: 'pre-wrap',\r\n wordBreak: 'break-all',\r\n },\r\n },\r\n});\r\n","import _ from 'underscore';\r\nimport React, { useContext, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useConstructor } from '@bingads-webui-campaign/hooks';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { useReportsHistory } from '@bingads-webui-campaign/reports-v4-history';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Pivot, PivotItem } from '@fluentui/react';\r\nimport { useReportDataSource } from '@bingads-webui-campaign/reports-v4-data-source';\r\nimport { SummaryBar, Divider } from '@bingads-webui-campaign/reports-v4-summary-bar';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { MyReportsGrid } from './grid';\r\nimport getStyles from './style/index';\r\n\r\nconst pivotStyle = {\r\n root: {\r\n paddingLeft: 32,\r\n background: '#fff',\r\n width: '100%',\r\n },\r\n // Fix bug 4007317: When page size is 200, grid has white space issue - some grid rows not rendered\r\n // Use inline style instead of JSS to ensure style is present in componentDidMount\r\n itemContainer: {\r\n flex: 1,\r\n overflow: 'auto',\r\n '& .tab-content': {\r\n height: '100%',\r\n },\r\n },\r\n};\r\nfunction MyReportsPage(props) {\r\n const { classes, type, perfMarker } = props;\r\n const history = useReportsHistory();\r\n function changeRoute(item) {\r\n history.push(`/campaign/vnext/reports-v4/my-reports/${item.props.itemKey}`);\r\n }\r\n\r\n const [counts, setCounts] = useState([0, 0]);\r\n const i18n = useContext(I18nContext);\r\n const reportsApiProps = useReportDataSource();\r\n const serverContext = useContext(ServerContext);\r\n const [myReportsPerfMarker] = useConstructor(() => {\r\n const marker = perfMarker.createChild('My_Reports');\r\n marker.willInit();\r\n return marker;\r\n });\r\n useEffect(() => {\r\n reportsApiProps.getMyReportsCounts().then((res) => {\r\n setCounts(res);\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n {i18n.getString(_TL_('My reports'))}\r\n \r\n
\r\n \r\n \r\n setCounts([count, counts[1]])} perfMarker={myReportsPerfMarker} />\r\n \r\n {!serverContext.Permissions.IsInternalUser &&\r\n \r\n setCounts([counts[0], count])} perfMarker={myReportsPerfMarker} />\r\n \r\n }\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nMyReportsPage.propTypes = {\r\n classes: PropTypes.shape({}).isRequired,\r\n type: PropTypes.string.isRequired,\r\n history: PropTypes.shape({}).isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n\r\nMyReportsPage.defaultProps = {\r\n};\r\n\r\nconst wrappers = [\r\n _.partial(withDefaultStyles, _, getStyles),\r\n];\r\n\r\nconst Wrapped = _.compose(...wrappers)(MyReportsPage);\r\n\r\nexport { Wrapped as MyReports };\r\n\r\n","import _ from 'underscore';\r\n\r\nexport const savedTaskItemTypes = {\r\n Template: 'ReportUITemplate',\r\n CustomerTemplate: 'ReportUICustomerTemplate',\r\n AccountTemplate: 'ReportUIAccountTemplate',\r\n};\r\n\r\nconst sharedTemplateTypes = [\r\n savedTaskItemTypes.CustomerTemplate,\r\n savedTaskItemTypes.AccountTemplate,\r\n];\r\n\r\nexport const isValidSaveType =\r\n taskItemType =>\r\n _.chain(savedTaskItemTypes).values(savedTaskItemTypes).contains(taskItemType).value();\r\n\r\nexport const getSaveType = ({\r\n IsReportsMergeEnabled, IsInternalUser, accountScope, taskItem,\r\n}) => {\r\n const taskItemType = _.result(taskItem, 'Type', 'invalid-type');\r\n const isSavedTaskItemType = isValidSaveType(taskItemType);\r\n if (isSavedTaskItemType) {\r\n return taskItemType;\r\n } else if (IsReportsMergeEnabled && !IsInternalUser) {\r\n return accountScope ? savedTaskItemTypes.AccountTemplate : savedTaskItemTypes.CustomerTemplate;\r\n }\r\n return savedTaskItemTypes.Template;\r\n};\r\n\r\nexport function isSharedTemplateType(type) {\r\n return _.contains(sharedTemplateTypes, type);\r\n}\r\n\r\nexport const ScopeFilterLevel = {\r\n None: 'None',\r\n User: 'User',\r\n Customer: 'Customer',\r\n Account: 'Account',\r\n Campaign: 'Campaign',\r\n};\r\n\r\nexport function getScopeFilterLevel(mtScopeFilterLevel) {\r\n const mtEnum = _.result(mtScopeFilterLevel, 'enum', []);\r\n\r\n if (_.contains(mtEnum, ScopeFilterLevel.Campaign)) {\r\n return ScopeFilterLevel.Campaign;\r\n } else if (_.contains(mtEnum, ScopeFilterLevel.Account)) {\r\n return ScopeFilterLevel.Account;\r\n } else if (_.contains(mtEnum, ScopeFilterLevel.Customer)) {\r\n return ScopeFilterLevel.Customer;\r\n } else if (_.contains(mtEnum, ScopeFilterLevel.User)) {\r\n return ScopeFilterLevel.User;\r\n }\r\n\r\n return ScopeFilterLevel.None;\r\n}\r\n\r\nexport function getScopeSelectorText({\r\n i18n, scopeSelectorInfo, reportSchema, history,\r\n}) {\r\n const ALL_ACCOUNT_TEXT = i18n.getString(_TL_('All accounts'));\r\n const MULTIPLE_ACCOUNTS_OR_CAMPAIGNS_TEXT = i18n.getString(_TL_('Multiple accounts or campaigns'));\r\n const MULTIPLE_ACCOUNTS_TEXT = i18n.getString(_TL_('Multiple accounts'));\r\n const MULTIPLE_MANAGER_ACCOUNTS_TEXT = i18n.getString(_TL_('Multiple manager accounts'));\r\n const USER_ID_EQUALS_TEXT = userIdText => i18n.getString(_TL_('User id equals ')) + userIdText.toString();\r\n const EMPTY_STRING = '';\r\n\r\n const scopeFilterLevelOfCurrentReport = getScopeFilterLevel(reportSchema.ScopeFilterLevel);\r\n\r\n const { aid, cid } = history.query;\r\n // If there is aid, it is account scope, otherwise it is customer scope.\r\n // NOTE: `customer` contains `accounts`, which contains `campaigns`\r\n const isCurrentAccountScope = !!aid;\r\n\r\n const isNothingSelected =\r\n (scopeSelectorInfo.CustomerScopes ? scopeSelectorInfo.CustomerScopes.length : 0) === 0 &&\r\n (scopeSelectorInfo.AccountIds ? scopeSelectorInfo.AccountIds.length : 0) === 0 &&\r\n (scopeSelectorInfo.CampaignReportScopes ? scopeSelectorInfo.CampaignReportScopes.length : 0) === 0 &&\r\n (scopeSelectorInfo.UserScopes ? scopeSelectorInfo.UserScopes.length : 0) === 0;\r\n\r\n if (isNothingSelected) {\r\n return ALL_ACCOUNT_TEXT;\r\n }\r\n\r\n const sourceArray = isCurrentAccountScope ? scopeSelectorInfo.AccountIds : scopeSelectorInfo.CustomerScopes;\r\n const targetArray = isCurrentAccountScope ? [aid] : [cid];\r\n if (_.isEqual(sourceArray, targetArray)) {\r\n return ALL_ACCOUNT_TEXT;\r\n }\r\n\r\n switch (scopeFilterLevelOfCurrentReport) {\r\n case ScopeFilterLevel.Customer:\r\n return MULTIPLE_MANAGER_ACCOUNTS_TEXT;\r\n case ScopeFilterLevel.Campaign:\r\n return MULTIPLE_ACCOUNTS_OR_CAMPAIGNS_TEXT;\r\n case ScopeFilterLevel.Account:\r\n return MULTIPLE_ACCOUNTS_TEXT;\r\n case ScopeFilterLevel.User:\r\n return USER_ID_EQUALS_TEXT(scopeSelectorInfo.UserScopes.join(', '));\r\n case ScopeFilterLevel.None:\r\n return EMPTY_STRING;\r\n default:\r\n throw new Error('unhandled ScopeFilterLevel');\r\n }\r\n}\r\n\r\nexport function getDefaultMultiAccountSelectorInfo(reportSchema, history) {\r\n const { aid, cid, uid } = history.query;\r\n // If there is aid, it is account scope, otherwise it is customer scope.\r\n const isCurrentAccountScope = !!aid;\r\n const scopeFilterLevelOfCurrentReport = getScopeFilterLevel(reportSchema.ScopeFilterLevel);\r\n // Reference this link to understand the logic:\r\n // https://microsoft.sharepoint.com/teams/BingAds/_layouts/OneNote.aspx?id=%2Fteams%2FBingAds%2FShared%20Documents%2FTeams%2FWeb%20UI%2FWiki%2FWebUI_SharedNotes&wd=target%28Reporting%2FReport%20revamp.one%7C2822FA52-2B1C-4F9D-83D9-DCB27E072A4C%2FAccount%20campaign%20selector%20behavior%7C6564DB0E-4BAE-481F-B36F-A4EE742ACE82%2F%29\r\n\r\n let CustomerScopes = [];\r\n let AccountIds = [];\r\n const CampaignReportScopes = [];\r\n let UserScopes = [];\r\n\r\n switch (scopeFilterLevelOfCurrentReport) {\r\n case ScopeFilterLevel.Customer:\r\n CustomerScopes = [cid];\r\n break;\r\n case ScopeFilterLevel.Campaign:\r\n case ScopeFilterLevel.Account:\r\n CustomerScopes = isCurrentAccountScope ? [] : [cid];\r\n AccountIds = isCurrentAccountScope ? [aid] : [];\r\n break;\r\n case ScopeFilterLevel.User:\r\n UserScopes = [uid];\r\n break;\r\n case ScopeFilterLevel.None:\r\n // Fix bug https://msasg.visualstudio.com/Bing_Ads/_workitems/edit/4063939\r\n // CustomerId is required in current MT implementation. MT resolves CustomerId to all accounts that belong to the customer, and load data from DB shards the accounts belong to. But MT does not filter data by the CustomerId.\r\n // The current behavior is strange, but MT does not get time to fix. From UI side we have to add current customer id to run through the request.\r\n CustomerScopes = [cid];\r\n break;\r\n default:\r\n throw new Error('unhandled ScopeFilterLevel');\r\n }\r\n\r\n return {\r\n CustomerScopes,\r\n AccountIds,\r\n CampaignReportScopes,\r\n UserScopes,\r\n };\r\n}\r\n\r\nexport function shouldShowUserScopeInput(mtScopeFilterLevel) {\r\n return getScopeFilterLevel(mtScopeFilterLevel) === ScopeFilterLevel.User;\r\n}\r\n\r\nexport function shouldShowSelector(mtScopeFilterLevel, scope) {\r\n const scopeFilterLevel = getScopeFilterLevel(mtScopeFilterLevel);\r\n const { aid } = scope.values;\r\n if (scopeFilterLevel === ScopeFilterLevel.Account && aid) {\r\n // In this situation, should always return current account ID.\r\n return false;\r\n }\r\n\r\n return _.contains([\r\n ScopeFilterLevel.Customer,\r\n ScopeFilterLevel.Account,\r\n ScopeFilterLevel.Campaign,\r\n ], scopeFilterLevel);\r\n}\r\n\r\nexport function getUserIdFromScopeSelector(scopeSelector) {\r\n const { UserScopes } = scopeSelector;\r\n const userId = (UserScopes && UserScopes[0]) || undefined;\r\n return userId;\r\n}\r\n\r\nexport function convertUserIdToScopeSelector(userScope) {\r\n return { UserScopes: Number.isNaN(userScope) ? [] : [userScope] };\r\n}\r\n","export function isTotalRow(rowItem) {\r\n return rowItem && rowItem.RowType === 'Total';\r\n}\r\n\r\nexport function isNormalRow(rowItem) {\r\n return rowItem && rowItem.RowType === 'Normal';\r\n}\r\n\r\nexport function isAggregatedOthersRow(rowItem) {\r\n return rowItem.RowType === 'AggregatedOthers';\r\n}\r\n","import _ from 'underscore';\r\nimport {\r\n ChangeTypeEnum,\r\n ChangeTypeEnumValue,\r\n InsertionOrderChangeAmountField,\r\n InsertionOrderChangeTypeField,\r\n InsertionOrderColumns,\r\n InsertionOrderReportColumns,\r\n MismatchedReasonCode,\r\n ViewItem,\r\n} from '@bingads-webui-campaign/reports-v4-component';\r\nimport { isTotalRow } from './row-helper';\r\n\r\nexport function isInsertionOrderReport({ reportType, permissions }) {\r\n return _.get(permissions, ['dynamic', 'InsertionOrderReport'], false) && _.isString(reportType) && (reportType.toLowerCase() === 'insertionorderreport');\r\n}\r\n\r\nexport function isInsertionOrderReportTeachingBubbleEnabled({ reportType, permissions, isCreatePage }) {\r\n return isInsertionOrderReport({ reportType, permissions })\r\n && isCreatePage\r\n && _.get(permissions, ['dynamic', 'InsertionOrderReportTeachingBubble'], false);\r\n}\r\n\r\nexport function getColumnsByView({ defaultColumns, viewType }) {\r\n switch (viewType) {\r\n case ViewItem.Monthly:\r\n case ViewItem.Daily:\r\n return _.chain(InsertionOrderReportColumns[viewType].add)\r\n .union(defaultColumns)\r\n .filter(column => !InsertionOrderReportColumns[viewType].remove.includes(column))\r\n .value();\r\n default:\r\n return defaultColumns;\r\n }\r\n}\r\n\r\nexport function getSortedColumnByView({ viewType }) {\r\n switch (viewType) {\r\n case ViewItem.Monthly:\r\n case ViewItem.Daily:\r\n return InsertionOrderReportColumns[viewType].sort;\r\n default:\r\n return [];\r\n }\r\n}\r\n\r\nexport function getRejectedColumnsByView({\r\n reportType, restrictedColumnSets, permissions, viewType, isCustomerScope,\r\n}) {\r\n if (!isInsertionOrderReport({ reportType, permissions })) {\r\n return new Set();\r\n }\r\n\r\n const rejectedColumns = new Set();\r\n\r\n restrictedColumnSets.forEach(({ columns, isAllowed }) => {\r\n if (!isAllowed(permissions, isCustomerScope)) {\r\n columns.forEach(column => rejectedColumns.add(column));\r\n }\r\n });\r\n\r\n switch (viewType) {\r\n case ViewItem.Monthly:\r\n case ViewItem.Daily:\r\n InsertionOrderReportColumns[viewType].remove.forEach(column => rejectedColumns.add(column));\r\n break;\r\n default:\r\n }\r\n return rejectedColumns;\r\n}\r\n\r\nexport function getColumnChooserSelectedKey({\r\n reportType, permissions, columns, rejectedColumns,\r\n}) {\r\n const selectedKeys = columns || [];\r\n return isInsertionOrderReport({ reportType, permissions })\r\n ? _.filter(selectedKeys, c => !rejectedColumns.has(c))\r\n : selectedKeys;\r\n}\r\n\r\nexport function isInsertionOrderMonthlyView({\r\n reportType, permissions, viewType, columns,\r\n}) {\r\n return isInsertionOrderReport({ reportType, permissions }) &&\r\n (viewType === ViewItem.Monthly || (_.isArray(columns) && _.contains(columns, 'IOReportMonth')));\r\n}\r\n\r\nexport function addInsertionOrderIdFilter({ oldFilter, insertionOrderIds }) {\r\n if (_.isEmpty(insertionOrderIds)) {\r\n return oldFilter;\r\n }\r\n const filterBesidesAnd = [];\r\n _.chain(oldFilter).omit('$and').forEach((val, key) => { filterBesidesAnd.push({ [key]: val }); });\r\n return {\r\n ...oldFilter,\r\n $and: _.union(oldFilter.$and, filterBesidesAnd, [{ InsertionOrderId: { $in: insertionOrderIds } }]),\r\n };\r\n}\r\n\r\nexport function removeInsertionOrderIdFilter({ isInsertionOrderReportEnabled, oldFilter }) {\r\n if (isInsertionOrderReportEnabled && !_.isEmpty(oldFilter)) {\r\n if (_.has(oldFilter, InsertionOrderColumns.InsertionOrderId)) {\r\n return _.omit(oldFilter, InsertionOrderColumns.InsertionOrderId);\r\n }\r\n const filterAnd = _.get(oldFilter, '$and');\r\n if (!_.isEmpty(filterAnd)) {\r\n return {\r\n ...oldFilter,\r\n $and: _.reject(filterAnd, filter => _.has(filter, InsertionOrderColumns.InsertionOrderId)),\r\n };\r\n }\r\n }\r\n return oldFilter;\r\n}\r\n\r\nfunction isRowWithBudgetChangeDescription(row) {\r\n const budgetChangeOldValue = _.get(row, ['BudgetChangeOldValue', 'RawValue'], undefined);\r\n const budgetChangeNewValue = _.get(row, ['BudgetChangeNewValue', 'RawValue'], undefined);\r\n return budgetChangeOldValue && budgetChangeNewValue && (Number(budgetChangeOldValue) !== 0 || Number(budgetChangeNewValue) !== 0);\r\n}\r\n\r\nexport function aggragatorInsertionOrderReportData({ rowDefinitions, reportParam, permissions }) {\r\n if (!isInsertionOrderReport({ reportType: reportParam.reportType, permissions })) {\r\n return rowDefinitions;\r\n }\r\n\r\n const [totalRows, normalRows] = _.partition(rowDefinitions, isTotalRow);\r\n // For daily view:\r\n // add WithBudgetChangeDescription, SpendAmountValue, AdjustmentAmountValue, BudgetChangedAmountValue to each row\r\n if (!isInsertionOrderMonthlyView({ reportType: reportParam.reportType, permissions, columns: reportParam.columns })) {\r\n const normalizedChangeAmountRows = _.map(normalRows, (row) => {\r\n const WithBudgetChangeDescription = isRowWithBudgetChangeDescription(row);\r\n const changeType = _.get(row, ['ChangeType', 'Value']);\r\n if (InsertionOrderChangeAmountField[changeType]) {\r\n return {\r\n ...row,\r\n WithBudgetChangeDescription,\r\n [InsertionOrderChangeAmountField[changeType]]: _.get(row, 'ChangeAmount'),\r\n };\r\n }\r\n return { ...row, WithBudgetChangeDescription };\r\n });\r\n return [normalizedChangeAmountRows, totalRows].flat();\r\n }\r\n\r\n // For monthly view, aggregated others according to IOReportMonth and InsertionOrderDetails\r\n const rowsGroupByMonthIODetails = _.groupBy(normalRows, row => `${_.get(row, ['IOReportMonth', 'Value'])}-${_.get(row, ['AccountNumber', 'Value'])}-${_.get(row, ['InsertionOrderId', 'Value'])}`);\r\n const monthlyViewData = _.mapObject(rowsGroupByMonthIODetails, (rowsItem) => {\r\n const budgetChangeItem = _.find(rowsItem, item => _.get(item, ['ChangeType', 'Value']) === ChangeTypeEnum.BudgetChange);\r\n const WithBudgetChangeDescription = isRowWithBudgetChangeDescription(budgetChangeItem);\r\n\r\n // BudgetChangeItem does not have BillingDocumentNumber\r\n const withBdItem = _.find(rowsItem, item => _.get(item, ['ChangeType', 'Value']) === ChangeTypeEnum.Spend || _.get(item, ['ChangeType', 'Value']) === ChangeTypeEnum.SystemAdjustment);\r\n let bdValues = {};\r\n if (withBdItem) {\r\n bdValues = _.pick(withBdItem, 'BillingDocumentNumber', 'BDAmount', 'MismatchedAmount', 'MismatchedReason');\r\n }\r\n const row = {\r\n ...rowsItem[0],\r\n ...budgetChangeItem, // To get correct BudgetChangeOldValue and BudgetChangeNewValue\r\n WithBudgetChangeDescription,\r\n ...bdValues, // To get correct BillingDocumentNumber, BDAmount, MismatchedAmount and MismatchedReason\r\n };\r\n\r\n rowsItem.forEach((item) => {\r\n const changeType = _.get(item, ['ChangeType', 'Value']);\r\n if (InsertionOrderChangeAmountField[changeType]) {\r\n row[InsertionOrderChangeTypeField[changeType]] = changeType;\r\n row[InsertionOrderChangeAmountField[changeType]] = _.get(item, 'ChangeAmount');\r\n }\r\n });\r\n return row;\r\n });\r\n return [_.values(monthlyViewData), totalRows].flat();\r\n}\r\n\r\nexport function getMismatchIconCount({ items, reportParam, permissions }) {\r\n if (!isInsertionOrderReport({ reportType: reportParam.reportType, permissions })) {\r\n return -1;\r\n }\r\n const itemsWithMismatchReason = _.filter(items, item => _.contains(_.values(MismatchedReasonCode), _.get(item, ['MismatchedReason', 'Value'])));\r\n return itemsWithMismatchReason.length;\r\n}\r\n\r\nexport function getInsertionOrderSelectorValue({\r\n reportType, permissions, allFilters, ioidFromUrl,\r\n}) {\r\n if (!isInsertionOrderReport({ reportType, permissions })) {\r\n return [];\r\n }\r\n\r\n // Use insertionOrderIdFromFilter in saved report (reportAction='edit') and no other filters.\r\n const insertionOrderIdFromFilter = _.get(allFilters, InsertionOrderColumns.InsertionOrderId)\r\n ? _.chain(allFilters)\r\n .get(InsertionOrderColumns.InsertionOrderId)\r\n .values().first()\r\n .value()\r\n : null;\r\n\r\n // Use insertionOrderIdFilterFromAnd in saved report (reportAction='edit') and has other filters, such as ChangeAmount > 100.\r\n const insertionOrderIdFilterFromAnd = _.get(allFilters, '$and')\r\n ? _.chain(allFilters)\r\n .get('$and')\r\n .find(filter => _.has(filter, InsertionOrderColumns.InsertionOrderId))\r\n .values()\r\n .first()\r\n .values()\r\n .first()\r\n .value()\r\n : null;\r\n\r\n // Use insertionOrderIdFromUrl in default report (reportAction='create') and the url is from the click of RemainingIOBudget cell in Insertion order grid.\r\n const insertionOrderIdFromUrl = ioidFromUrl ? [ioidFromUrl] : null;\r\n\r\n const rawValue = insertionOrderIdFromFilter || insertionOrderIdFilterFromAnd || insertionOrderIdFromUrl || [];\r\n return _.isArray(rawValue) ? _.map(rawValue, ioId => Number(ioId)) : [rawValue];\r\n}\r\n\r\nexport function getInitialInsertionOrderSelectorItems({ allInsertionOrders, insertionOrderIds }) {\r\n if (_.isEmpty(allInsertionOrders) || _.isEmpty(insertionOrderIds)) {\r\n return [];\r\n }\r\n return _.filter(allInsertionOrders, io => _.contains(insertionOrderIds, io.id));\r\n}\r\n\r\nexport function shouldDisplayTotalAmount({ filters, changeType }) {\r\n let changeTypeFilterArray = [];\r\n if (!_.isEmpty(filters)) {\r\n if (_.has(filters, 'ChangeType')) {\r\n changeTypeFilterArray = filters.ChangeType.$in;\r\n } else if (!_.isEmpty(filters.$and)) {\r\n changeTypeFilterArray = _.chain(filters.$and).find(item => _.has(item, 'ChangeType')).get('$in').value();\r\n }\r\n }\r\n // If changeTypeFilterArray is empty, return true;\r\n // If changeTypeFilterArray has value, and it contains the queried changeType, return true;\r\n // If changeTypeFilterArray has value, and it does not contain the queried changeType, return false.\r\n return _.isEmpty(changeTypeFilterArray) || _.contains(changeTypeFilterArray, ChangeTypeEnumValue[changeType]);\r\n}\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { getBudgetChangeString } from '@bingads-webui-campaign/reports-v4-component';\r\nimport { aggragatorInsertionOrderReportData, getMismatchIconCount, isInsertionOrderMonthlyView, isInsertionOrderReport } from './insertion-order-helper';\r\nimport { isAggregatedOthersRow, isNormalRow, isTotalRow } from './row-helper';\r\n\r\n/**\r\n * Uses canvas.measureText to compute and return the width of the given text of given font in pixels.\r\n *\r\n * @param {string} text The text to be rendered.\r\n * @param {string} font The css font descriptor that text is to be rendered with (e.g. \"bold 14px verdana\").\r\n * @returns {string} the width of the text in specific font.\r\n * @see https://stackoverflow.com/questions/118241/calculate-text-width-with-javascript/21015393#21015393\r\n */\r\nfunction getTextWidth(text, font) {\r\n // re-use canvas object for better performance\r\n const canvas = getTextWidth.canvas || (getTextWidth.canvas = document.createElement('canvas'));\r\n const context = canvas.getContext('2d');\r\n context.font = font;\r\n const metrics = context.measureText(text);\r\n return metrics.width;\r\n}\r\n\r\n// This is well known.\r\n// Cannot get the value by element, because this happens before rendering.\r\nfunction getCanvasFont() {\r\n const fontWeight = '600';\r\n const fontSize = '14px';\r\n const fontFamily = 'Segoe UI';\r\n\r\n return `${fontWeight} ${fontSize} ${fontFamily}`;\r\n}\r\n\r\n/**\r\n * default value used in fluent-ui\r\n * reference https://github.com/microsoft/fluentui/blob/31345de30d356731eeb0ac1e658a2652f8f00aa7/packages/react/src/components/DetailsList/DetailsList.base.tsx\r\n */\r\nconst MIN_COLUMN_WIDTH = 120;\r\nconst MIN_FIRST_COLUMN_WIDTH = 140;\r\n\r\nconst conditionOperatorMap = {\r\n Between: (value, value1, value2) => value >= value1 && value <= value2,\r\n GreaterThan: (value, value1) => value > value1,\r\n GreaterThanEqual: (value, value1) => value >= value1,\r\n Equals: (value, value1) => Number(value) === Number(value1),\r\n DoesNotEqual: (value, value1) => Number(value) !== Number(value1),\r\n LessThan: (value, value1) => value < value1,\r\n LessThanEqual: (value, value1) => value <= value1,\r\n};\r\n\r\nfunction getItemValue(item, key, isDisplay = true) {\r\n if (_.isObject(item[key])) {\r\n return isDisplay ? item[key].Value : item[key].RawValue;\r\n }\r\n return item[key];\r\n}\r\n\r\nexport function buildColumns(columnNames, reportSchemaColumns, conditionalFormats, i18n, customizeRenderParams) {\r\n // It seems `headerType` is useless, but we still keep it for future.\r\n function buildColumnBase(columnKey, columnOptions, index) {\r\n const columnOption = columnOptions[columnKey];\r\n const translatedName = i18n.getString(columnOption.name);\r\n const textWidth = getTextWidth(translatedName, getCanvasFont());\r\n const helpIconWidth = 23; // the icon is 22px width, add additional 1px for rounding.\r\n const headerWidth = textWidth + helpIconWidth;\r\n const defaultWidth = index ? MIN_COLUMN_WIDTH : MIN_FIRST_COLUMN_WIDTH;\r\n const finalMinWidth = Math.max(headerWidth, defaultWidth);\r\n\r\n return {\r\n key: columnKey,\r\n className: columnKey,\r\n minWidth: columnOption.width || finalMinWidth,\r\n maxWidth: 300,\r\n isResizable: true,\r\n index,\r\n name: translatedName,\r\n fieldName: columnKey,\r\n helpTopic: columnOption.helpTopic,\r\n type: columnOption.type,\r\n sortable: columnOption.sortable,\r\n };\r\n }\r\n\r\n function bindOnRenderHeader(column) {\r\n const onRenderHeader = columnProps => (\r\n
\r\n \r\n {columnProps && columnProps.column.name}\r\n \r\n {columnProps.column.helpTopic && }\r\n
\r\n );\r\n\r\n return {\r\n ...column,\r\n onRenderHeader,\r\n };\r\n }\r\n\r\n function getConditionalFormatColor(value, conditions) {\r\n if (!conditions) {\r\n return 'initial';\r\n }\r\n let colorPicked = 'initial';\r\n conditions.forEach((condition) => {\r\n const conditionResult = conditionOperatorMap[condition.operator](value, condition.value, condition.value2);\r\n if (conditionResult) {\r\n colorPicked = colorPicked === 'initial' ? condition.color : colorPicked;\r\n }\r\n });\r\n return colorPicked;\r\n }\r\n\r\n function bindOnRenderRows(column) {\r\n const onRender = (item) => {\r\n const { reportParam, permissions, bindOnRenderRows: customizeBindOnRenderRows } = customizeRenderParams;\r\n let customizeRowNode = null;\r\n if (customizeRenderParams && !_.isEmpty(customizeRenderParams.bindOnRenderRows)) {\r\n // eslint-disable-next-line consistent-return\r\n customizeRowNode = _.chain(customizeBindOnRenderRows)\r\n .map(customizeRowFunction => customizeRowFunction({\r\n i18n,\r\n item,\r\n column,\r\n reportType: reportParam.reportType,\r\n permissions,\r\n viewType: reportParam.insertionOrderViewType,\r\n isAccountScope: customizeRenderParams.isAccountScope,\r\n filters: reportParam.filters,\r\n }))\r\n .compact(_.identity)\r\n .first()\r\n .value();\r\n }\r\n if (customizeRowNode) {\r\n return customizeRowNode;\r\n }\r\n\r\n const isOtherURLsCell = (item.key === 'Other URLs') && column.index === 0;\r\n if (isOtherURLsCell) {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n const isTotalCell = (item.RowType === 'Total' || item.RowType === 'AggregatedOthers') && column.index === 0;\r\n if (isTotalCell) {\r\n return item.key;\r\n }\r\n\r\n if (column.key === 'SearchCategory') {\r\n if (item.isParent) {\r\n return (\r\n
\r\n
\r\n {getItemValue(item, column.key)}\r\n
\r\n\r\n {!item.isCollapsed &&\r\n
\r\n item.toggleIsSearchReportModalOpen()}\r\n >\r\n {i18n.getString(_TL_('View details'))}\r\n \r\n
\r\n }\r\n
\r\n );\r\n }\r\n if (item.SearchTermDetailsStr) {\r\n return (\r\n
\r\n
\r\n {i18n.getString(_TL_('Search Terms'))}\r\n
\r\n
\r\n {item.SearchTermDetailsStr}\r\n
\r\n
\r\n );\r\n }\r\n if (_.some(columns, c => c.key === 'SearchQuery')) {\r\n return (<>{getItemValue(item, column.key)});\r\n }\r\n return (\r\n
\r\n
\r\n {i18n.getString(_TL_('Loading.....'))}\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (column.key === 'LabelName') {\r\n const labelNameData = item[column.key];\r\n if (labelNameData) {\r\n const { Value, Color } = labelNameData;\r\n const colorCode = Number(Color).toString(16).padStart(6, '0');\r\n\r\n return (\r\n
\r\n \r\n {Value}\r\n
\r\n );\r\n }\r\n\r\n return '';\r\n }\r\n\r\n return (<>{getItemValue(item, column.key)});\r\n };\r\n return { ...column, onRender };\r\n }\r\n\r\n function bindColumnConditionalFormat(column, conditionalFormat) {\r\n const onRender = (item) => {\r\n const { reportParam, permissions } = customizeRenderParams;\r\n const color = item.RowType === 'Total' ? 'initial' : getConditionalFormatColor(getItemValue(item, column.key, false), conditionalFormat);\r\n let itemDisplayValue = getItemValue(item, column.key, true);\r\n if (isInsertionOrderReport({ reportType: reportParam.reportType, permissions })) {\r\n if (isNormalRow(item) && column.key === 'RemainingIOBudget') {\r\n itemDisplayValue = getBudgetChangeString({\r\n i18n,\r\n rawValue: getItemValue(item, column.key, false),\r\n amountValue: getItemValue(item, column.key, true),\r\n useEmptyString: false,\r\n });\r\n }\r\n if (column.key === 'RemainingIOBudget' && isTotalRow(item)) {\r\n itemDisplayValue = ''; // Hide value of total remaining IO budget\r\n }\r\n }\r\n return (
{itemDisplayValue}
);\r\n };\r\n return { ...column, onRender };\r\n }\r\n\r\n if (!columnNames) {\r\n return [];\r\n }\r\n\r\n const columnOptions = reportSchemaColumns.categories\r\n .flatMap(category => category.options)\r\n .reduce((acc, current) => {\r\n acc[current.key] = current;\r\n return acc;\r\n }, {});\r\n\r\n const restrictedDisplayCols = [];\r\n if (reportSchemaColumns.displayRestricted) {\r\n reportSchemaColumns.displayRestricted.forEach(({ columns, isAllowed }) => {\r\n if (!isAllowed()) {\r\n columns.forEach(column => restrictedDisplayCols.push(column));\r\n }\r\n });\r\n }\r\n\r\n const columns = columnNames\r\n .filter(c => !restrictedDisplayCols.includes(c))\r\n .map((column, index) => buildColumnBase(column, columnOptions, index))\r\n .map(bindOnRenderHeader)\r\n .map(bindOnRenderRows);\r\n\r\n if (conditionalFormats) {\r\n const conditionalFormatsKey = Object.keys(conditionalFormats);\r\n if (conditionalFormatsKey.length > 0) {\r\n const conditionFormattedColumn = columns.map((column) => {\r\n if (conditionalFormatsKey.includes(column.key)) {\r\n return bindColumnConditionalFormat(column, conditionalFormats[column.key]);\r\n }\r\n return column;\r\n });\r\n return conditionFormattedColumn;\r\n }\r\n }\r\n\r\n return columns;\r\n}\r\n\r\nfunction buildRows(rowDefinitions, i18n, totalCount, reportParam, permissions, ctrLogger) {\r\n const baseRowDefinitions = aggragatorInsertionOrderReportData({ rowDefinitions, reportParam, permissions });\r\n const mismatchIconCount = getMismatchIconCount({ items: baseRowDefinitions, reportParam, permissions });\r\n if (mismatchIconCount > -1) {\r\n ctrLogger.click({ target: 'mismatchIconCount', extraData: { reportType: 'InsertionOrderReport', mismatchIconCount } });\r\n }\r\n return baseRowDefinitions.map((rowDefinition, index) => {\r\n if (isTotalRow(rowDefinition) || isAggregatedOthersRow(rowDefinition)) {\r\n const rowNumber = isInsertionOrderMonthlyView({ reportType: reportParam.reportType, permissions, viewType: reportParam.insertionOrderViewType }) ? baseRowDefinitions.length - 1 : totalCount;\r\n return { ...rowDefinition, key: i18n.getString(_TL_('Overall total - {{number}} row(s)'), { number: rowNumber }) };\r\n }\r\n return { ...rowDefinition, key: index };\r\n });\r\n}\r\n\r\nexport function extractGridItemsFromReportDataResponseBody(reportDataResponseBody, i18n, reportParam, permissions, ctrLogger) {\r\n if (reportDataResponseBody && reportDataResponseBody.value && Array.isArray(reportDataResponseBody.value)) {\r\n if (reportDataResponseBody.value.length > 0) {\r\n // Old API\r\n if (reportDataResponseBody.value[0].RowId === -1) {\r\n const [, ...columnRowDefinitions] = reportDataResponseBody.value;\r\n return buildRows(columnRowDefinitions, i18n, reportDataResponseBody['@odata.count'], reportParam, permissions, ctrLogger);\r\n }\r\n\r\n // New API\r\n return buildRows(reportDataResponseBody.value, i18n, reportDataResponseBody['@odata.count'], reportParam, permissions, ctrLogger);\r\n }\r\n return [];\r\n }\r\n return undefined;\r\n}\r\n\r\nexport function hasDifferentTimeColumns(oldColumns, newColumns, reportSchema) {\r\n const { categories } = reportSchema.Columns;\r\n const timeCategory = _.find(categories, item => item.type === 'TimeColumns');\r\n if (!timeCategory) {\r\n return false;\r\n }\r\n const allTimeColumns = (timeCategory.options || []).map(item => item.key);\r\n const oldTimeColumn = _.intersection(allTimeColumns, oldColumns);\r\n const newTimeColumn = _.intersection(allTimeColumns, newColumns);\r\n return !_.isEqual(oldTimeColumn, newTimeColumn);\r\n}\r\n","import { mergeStyles, mergeStyleSets } from '@fluentui/react';\r\nimport { helpbuttonStyle, convertToLocalStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst ICON_BLUE = '#0078d4';\r\n\r\nconst iconBaseClass = mergeStyles({\r\n height: 16,\r\n width: 16,\r\n});\r\n\r\nexport const iconClassNames = mergeStyleSets({\r\n blue: [{ color: ICON_BLUE }, iconBaseClass],\r\n});\r\n\r\n\r\nexport const blackColorClassName = mergeStyles({\r\n color: 'black',\r\n});\r\n\r\nexport const boldClassName = mergeStyles({\r\n fontWeight: 'bolder',\r\n maxWidth: 1000,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n});\r\n\r\nexport const stackItemCenterStyle = {\r\n root: {\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n display: 'flex',\r\n },\r\n};\r\n\r\nconst reduceScopeContainer = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flex: 1,\r\n '& .reduce-scope-hint': {\r\n padding: '15px 32px',\r\n borderTop: '1px solid #F3F2F1',\r\n '& .title': {\r\n fontSize: 20,\r\n height: 28,\r\n lineHeight: '28px',\r\n color: '#323130',\r\n fontWeight: 'bold',\r\n },\r\n '& .desc': {\r\n marginTop: 14,\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n color: '#605E5C',\r\n },\r\n },\r\n '& .reduce-scope-main': {\r\n '& .selectors': {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n marginLeft: 32,\r\n padding: '8px 0 47px 0',\r\n width: 815,\r\n borderTop: '1px solid #F3F2F1',\r\n '& .title': {\r\n fontSize: 14,\r\n lineHeight: '20px',\r\n color: '#323130',\r\n fontWeight: 'bold',\r\n },\r\n '& .date-range-select': {\r\n '& .ms-ChoiceField-wrapper label': {\r\n padding: 0,\r\n },\r\n },\r\n },\r\n '& .button-group': {\r\n padding: '20px 32px',\r\n borderTop: '1px solid #F3F2F1',\r\n '& button': {\r\n marginRight: 12,\r\n },\r\n },\r\n },\r\n};\r\n\r\nconst rightPanelWidth = 560;\r\n\r\nexport const getStyles = ({ palette = {} }) => ({\r\n reportPreviewContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n '& .user-filter-level-impl': {\r\n '& .body': {\r\n margin: '0',\r\n '& .help-info': {\r\n marginLeft: 32,\r\n '& .subtitle': {\r\n fontSize: '20px',\r\n },\r\n },\r\n '& .user-filter-level-input ': {\r\n padding: 0,\r\n '& .ms-TextField': {\r\n marginLeft: 32,\r\n },\r\n '& .ms-TextField-fieldGroup': {\r\n width: 300,\r\n },\r\n '& .actions': {\r\n marginTop: 0,\r\n marginLeft: 32,\r\n marginBottom: 10,\r\n },\r\n },\r\n },\r\n },\r\n '& .content-wrapper': {\r\n flex: 1,\r\n overflowY: 'auto',\r\n '& .main-view': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n minWidth: 900,\r\n '& #hotel-center-intelligence': {\r\n marginTop: 0,\r\n },\r\n '& .intelligence-feed-status-container': {\r\n marginTop: 15,\r\n },\r\n },\r\n '& .main-view.right-panel-expand': {\r\n marginRight: rightPanelWidth,\r\n },\r\n '& .right-panel-view': {\r\n borderLeft: 'thin solid #E1DFDD',\r\n backgroundColor: 'white',\r\n zIndex: 10,\r\n position: 'absolute',\r\n left: 'auto',\r\n top: '45px', // the height of sumamry bar\r\n bottom: 0,\r\n right: 0,\r\n width: rightPanelWidth,\r\n },\r\n },\r\n '& .dimension-banner': {\r\n '& b': {\r\n fontWeight: 'bold',\r\n },\r\n },\r\n '& .seperator-view': {\r\n padding: 0,\r\n height: 2,\r\n },\r\n '& .body': {\r\n flex: 1,\r\n overflowY: 'auto',\r\n display: 'flex',\r\n 'flex-direction': 'column',\r\n '& .padding-container': {\r\n padding: '0 0 0 32px', // There should be no white space at right\r\n '& .disclaimer-banner': {\r\n paddingLeft: 0,\r\n },\r\n },\r\n '& .ms-DetailsHeader': {\r\n overflowX: 'auto',\r\n overflowY: 'hidden',\r\n '-ms-overflow-style': 'none',\r\n scrollbarWidth: 'none',\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n },\r\n '& .ms-DetailsHeader .ms-DetailsHeader-cellName': {\r\n width: '100%',\r\n '& .grid-header-text': {\r\n wordBreak: 'break-word',\r\n overflow: 'hidden',\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n maxWidth: 'calc(100% - 22px)',\r\n textOverflow: 'ellipsis',\r\n },\r\n ...convertToLocalStyle(helpbuttonStyle({ palette })),\r\n },\r\n '& .ms-DetailsHeader-cell.freeze-column-cell.has-shadow .ms-DetailsHeader-collapseButton': {\r\n display: 'none',\r\n },\r\n '& .searchCategoryText': {\r\n fontWeight: 600,\r\n lineHeight: '22px',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n },\r\n '& .searchCategoryDetailButton': {\r\n color: '#0078D4',\r\n width: '100px',\r\n height: '16px',\r\n fontWeight: 400,\r\n lineHeight: '16px',\r\n border: 'none',\r\n background: 'transparent',\r\n textAlign: 'left',\r\n },\r\n '& .group-header-Chevron': {\r\n width: '36px',\r\n position: 'absolute',\r\n background: 'transparent',\r\n zIndex: 1,\r\n minWidth: '36px!important',\r\n },\r\n '& .ms-DetailsList-contentWrapper': {\r\n overflowX: 'auto',\r\n '-ms-overflow-style': 'none',\r\n scrollbarWidth: 'none',\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n },\r\n '& .report-preview-grid .conditional-formatting-cell': {\r\n padding: '12px 8px 12px 12px',\r\n margin: '-11px -8px -11px -12px',\r\n height: 'calc(100% + 21px)',\r\n placeContent: 'center',\r\n },\r\n '& #column-chooser-wrapper': {\r\n marginBottom: 20,\r\n '& .column-chooser': {\r\n '& .panel': {\r\n marginTop: 25,\r\n },\r\n },\r\n },\r\n },\r\n '& .toolbar-container': {\r\n '& .container-fluid': {\r\n paddingLeft: 0,\r\n },\r\n },\r\n '& .reduce-scope-banner': {\r\n position: 'fixed',\r\n left: '50%',\r\n transform: 'translateX(-50%)',\r\n bottom: 70,\r\n background: '#EFF6FC',\r\n boxShadow: '0px 3px 7px rgba(0, 0, 0, 0.1)',\r\n height: 48,\r\n lineHeight: '48px',\r\n padding: '0 14px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n zIndex: 9,\r\n '& >span': {\r\n margin: '0 16px 0 8px',\r\n },\r\n },\r\n },\r\n reportPreviewPoorCollapseRow: {\r\n '& .body .ms-List-page:last-of-type .ms-List-cell:last-of-type .ms-DetailsRow-cell': {\r\n borderRight: 'none',\r\n },\r\n '& .body .ms-List-page:last-of-type .ms-List-cell:last-of-type .freeze-columns-group': {\r\n boxShadow: 'none',\r\n '& .urlButton': {\r\n verticalAlign: 'middle',\r\n background: 'none',\r\n border: 'none',\r\n padding: '0',\r\n color: ICON_BLUE,\r\n cursor: 'pointer',\r\n '&:hover': {\r\n color: '#004578',\r\n },\r\n },\r\n ...convertToLocalStyle(helpbuttonStyle({ palette })),\r\n },\r\n },\r\n reportPreviewHeader: {\r\n marginTop: 13,\r\n marginBottom: 16,\r\n marginLeft: 32,\r\n marginRight: 6, // Fix bug 4037507: Column chooser icon style issue\r\n // minWidth: '776px',\r\n '& .name-container': {\r\n height: '44px',\r\n },\r\n '& .report-header-name-editor': {\r\n overflow: 'hidden',\r\n },\r\n '& .name-editor-container': {\r\n height: '44px',\r\n },\r\n '& .name-editor-buttons': {\r\n height: '44px',\r\n minWidth: '132px',\r\n },\r\n '& .name': {\r\n fontSize: '26px',\r\n fontWeight: 600,\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .report-header-timezone-selector': {\r\n flexShrink: 0,\r\n },\r\n },\r\n reportPreviewCalloutContainer: {\r\n '& .ms-Callout-container': {\r\n display: 'contents',\r\n },\r\n },\r\n reportPreviewCallout: {\r\n zIndex: '11',\r\n padding: '16px 16px',\r\n background: '#fff',\r\n },\r\n reportPreviewCalloutTitle: {\r\n fontWeight: 600,\r\n },\r\n reportPreviewNameInput: {\r\n margin: '8px 0 16px 0',\r\n minWidth: 258,\r\n },\r\n reportPreviewNameEditActions: {\r\n display: 'flex',\r\n },\r\n icons: {\r\n padding: 22, // Fix bug 4037507: Column chooser icon style issue\r\n },\r\n noDataplaceHolder: {\r\n color: '#605e5c',\r\n padding: '3px 0 20px 8px',\r\n fontSize: '26px',\r\n lineHeight: '36px',\r\n },\r\n reduceScopeContainer,\r\n insertionOrderReport: {\r\n '& .ms-DetailsRow-cell': {\r\n placeContent: 'center',\r\n }\r\n }\r\n});\r\n","interface TimeTravelCallback {\r\n (state: State): void\r\n}\r\n\r\n/**\r\n * The API imitates windows.History with some differences:\r\n * 1. No related event. Imitate event 'onpopstate' through callback, there are 2 related method: `registerTimeTravelCallback` and `unregisterTimeTravelCallback`\r\n * 2. Strict type. The type of the parameter is restricted to generic parameter `State`\r\n * 3. Function signature changed. `pushState` only have the first parameter, which says, it would not try to change the url\r\n * 4. Throw error when out of range. If `go` to a non-existent state, an error will be thrown(windows.History ignores it)\r\n * 5. External public property/method. `currentIndex` must be exported to let user know whether undo/redo is valid or not, in fact\r\n * we export two friendly property isBackValid/isForwardValid to help rather than `currentIndex`.\r\n */\r\nexport class TimeTravel {\r\n private historyStates: State[] = [];\r\n\r\n private currentIndex = -1;\r\n\r\n get length() {\r\n return this.historyStates.length;\r\n }\r\n\r\n get isBackValid() {\r\n return this.currentIndex > 0;\r\n }\r\n\r\n get isForwardValid() {\r\n return this.currentIndex < this.length - 1;\r\n }\r\n\r\n private getHistoryState(historyIndex: number) {\r\n if (historyIndex < 0 || historyIndex >= this.length) {\r\n throw new Error('Could not achieve the state out of index!');\r\n }\r\n return this.historyStates[historyIndex];\r\n }\r\n\r\n private timeTravelCallbacks: TimeTravelCallback[] = [];\r\n\r\n registerTimeTravelCallback(callback: TimeTravelCallback) {\r\n this.timeTravelCallbacks.push(callback);\r\n }\r\n\r\n unregisterTimeTravelCallback(callback: TimeTravelCallback) {\r\n this.timeTravelCallbacks = this.timeTravelCallbacks.filter(timeTravelCallback => timeTravelCallback !== callback);\r\n }\r\n\r\n private callTimeTravelCallBack(state: State) {\r\n this.timeTravelCallbacks.forEach((timeTravelCallback) => { timeTravelCallback(state) });\r\n }\r\n\r\n go(delta: number) {\r\n const targetHistoryIndex = this.currentIndex + delta;\r\n this.currentIndex = targetHistoryIndex;\r\n const targetHistoryState = this.getHistoryState(targetHistoryIndex);\r\n this.callTimeTravelCallBack(targetHistoryState);\r\n }\r\n\r\n back() {\r\n this.go(-1);\r\n }\r\n\r\n forward() {\r\n this.go(1);\r\n }\r\n\r\n pushState(state: State) {\r\n this.historyStates.splice(this.currentIndex + 1);\r\n this.historyStates.push(state);\r\n this.currentIndex += 1;\r\n }\r\n\r\n replaceState(state: State) {\r\n this.historyStates[this.currentIndex] = state;\r\n }\r\n}\r\n","\r\nexport function apiToUiDateRange({ ReportTime }) {\r\n return ReportTime.DateRangePreset ?\r\n { key: ReportTime.DateRangePreset } :\r\n { key: 'Custom', start: ReportTime.StartDate, end: ReportTime.EndDate };\r\n}\r\n\r\nexport function uiToApiDateRange(dateRange) {\r\n return dateRange.key === 'Custom' ?\r\n { StartDate: dateRange.start, EndDate: dateRange.end } :\r\n { DateRangePreset: dateRange.key };\r\n}\r\n","import _ from 'underscore';\r\nimport { trim } from 'underscore.string';\r\nimport { InsertionOrderColumns } from '@bingads-webui-campaign/reports-v4-component';\r\nimport { addInsertionOrderIdFilter } from '../../helpers/insertion-order-helper';\r\n\r\n\r\nconst operatorToApi = {\r\n $eq: 'Equals',\r\n $neq: 'DoesNotEqual',\r\n $gt: 'GreaterThan',\r\n $gte: 'GreaterThanEqual',\r\n $in: 'Equals',\r\n $lt: 'LessThan',\r\n $lte: 'LessThanEqual',\r\n $contains: 'Contains',\r\n $containsany: 'Contains',\r\n $doesnotcontain: 'DoesNotContain',\r\n $startswith: 'BeginsWith',\r\n $endswith: 'EndsWith',\r\n};\r\n\r\nconst operatorFromApi = {\r\n Equals: '$eq',\r\n DoesNotEqual: '$neq',\r\n GreaterThan: '$gt',\r\n GreaterThanEqual: '$gte',\r\n LessThan: '$lt',\r\n LessThanEqual: '$lte',\r\n Contains: '$contains',\r\n DoesNotContain: '$doesnotcontain',\r\n BeginsWith: '$startswith',\r\n EndsWith: '$endswith',\r\n};\r\n\r\nfunction batchToString(arr) {\r\n return _.map(arr, x => String(x));\r\n}\r\n\r\nfunction apiToUiFormat(apiFilter, filterSchema) {\r\n const {\r\n Filter: {\r\n Expressions: [\r\n Expression,\r\n ],\r\n },\r\n } = apiFilter;\r\n const propertyName = Expression.PropertyName;\r\n const propertySchema = filterSchema[propertyName];\r\n const propertyValuesApi = Expression.Values;\r\n const operatorApi = Expression.Operator;\r\n let propertyValueUi;\r\n let operatorUi;\r\n\r\n if (propertyName === InsertionOrderColumns.InsertionOrderId) {\r\n propertyValueUi = propertyValuesApi;\r\n operatorUi = operatorFromApi[operatorApi];\r\n } else if (propertySchema.enum) {\r\n propertyValueUi = propertyValuesApi.map(enumValue => `Enum.${propertyName}'${enumValue}'`);\r\n operatorUi = '$in';\r\n } else if (propertySchema.type === 'string') {\r\n propertyValueUi = propertyValuesApi.join(',');\r\n operatorUi = operatorFromApi[operatorApi];\r\n } else if (['integer', 'percent', 'float'].includes(propertySchema.type)) {\r\n propertyValueUi = Number(propertyValuesApi[0]);\r\n operatorUi = operatorFromApi[operatorApi];\r\n }\r\n\r\n return {\r\n [propertyName]: {\r\n [operatorUi]: propertyValueUi,\r\n },\r\n };\r\n}\r\n\r\n\r\nfunction uiToApiFormat(uiFilter, filterSchema) {\r\n const propertyName = _.keys(uiFilter)[0];\r\n const propertySchema = filterSchema[propertyName];\r\n const propertyValueObject = uiFilter[propertyName];\r\n const operatorUi = _.keys(propertyValueObject)[0];\r\n let propertyValueUi = [];\r\n if (propertyName === InsertionOrderColumns.InsertionOrderId) {\r\n propertyValueUi = propertyValueObject[operatorUi];\r\n } else if (propertySchema.enum) {\r\n propertyValueUi = propertyValueObject[operatorUi].map((str) => {\r\n const start = str.indexOf('\\'');\r\n const end = str.length;\r\n return str.substr(start + 1, end - start - 2);\r\n });\r\n } else if (propertySchema.type === 'string') {\r\n propertyValueUi = propertyValueObject[operatorUi].split(',').map(x => trim(x));\r\n } else if (['integer', 'percent', 'float'].includes(propertySchema.type)) {\r\n propertyValueUi = [propertyValueObject[operatorUi]];\r\n }\r\n\r\n const result = {\r\n Filter: {\r\n LogicalOperator: 'OR',\r\n Expressions: [\r\n {\r\n '@odata.type': '#Model.Predicate',\r\n PropertyName: propertyName,\r\n Operator: operatorToApi[operatorUi],\r\n Values: batchToString(propertyValueUi),\r\n },\r\n ],\r\n },\r\n };\r\n\r\n return result;\r\n}\r\n\r\nexport function uiToApiFilter(uiFilters, entitySchema, insertionOrderSelectorValue) {\r\n const filterSchema = entitySchema.Filters.properties;\r\n const uiFiltersArray = addInsertionOrderIdFilter({ oldFilter: uiFilters, insertionOrderIds: insertionOrderSelectorValue });\r\n if (!uiFiltersArray || _.isEmpty(uiFiltersArray)) return [];\r\n let apiFilters = [];\r\n if (uiFiltersArray.$and) {\r\n apiFilters = _.map(uiFiltersArray.$and, uiFilter => uiToApiFormat(uiFilter, filterSchema));\r\n } else {\r\n apiFilters = [uiToApiFormat(uiFiltersArray, filterSchema)];\r\n }\r\n return apiFilters;\r\n}\r\n\r\nexport function apiToUiFilter(taskItem, entitySchema) {\r\n const apiFilters = taskItem.Filters;\r\n const filterSchema = entitySchema.Filters.properties;\r\n if (!apiFilters || _.isEmpty(apiFilters)) return {};\r\n let uiFilters = apiToUiFormat(apiFilters[0], filterSchema);\r\n if (apiFilters.length > 1) {\r\n uiFilters = { $and: [] };\r\n uiFilters.$and = apiFilters.map(apiFilter => apiToUiFormat(apiFilter, filterSchema));\r\n }\r\n return uiFilters;\r\n}\r\n","function getColumnType(reportSchema) {\r\n const metricCategory = reportSchema.Columns.categories.find(item => item.type === 'MetricColumns');\r\n if (!metricCategory) {\r\n return {};\r\n }\r\n const columnType = {};\r\n metricCategory.options.forEach((item) => { columnType[item.key] = item.type; });\r\n return columnType;\r\n}\r\n\r\nfunction handleValue(value, type) {\r\n let result = null;\r\n if (value || value === 0 || value === '0') {\r\n result = type === 'Percent' ? Number((value * 100).toFixed(2)) : value;\r\n }\r\n return result;\r\n}\r\n\r\nexport function apiToUiFormats(conditionalFormatsList, entitySchema) {\r\n const columnType = getColumnType(entitySchema);\r\n const conditionalFormats = {};\r\n conditionalFormatsList.forEach((item) => {\r\n if (!conditionalFormats[item.ColumnName]) {\r\n conditionalFormats[item.ColumnName] = [];\r\n }\r\n conditionalFormats[item.ColumnName].push({\r\n operator: item.Type,\r\n value: handleValue(Number(item.Value), columnType[item.ColumnName]),\r\n value2: handleValue(Number(item.Value2), columnType[item.ColumnName]),\r\n color: item.FillColor,\r\n });\r\n });\r\n return conditionalFormats;\r\n}\r\n\r\nexport function uiToApiFormats(conditionalFormats, reportSchema) {\r\n const columnType = getColumnType(reportSchema);\r\n const columnNameSet = Object.keys(conditionalFormats);\r\n const conditionalFormatsList = [];\r\n columnNameSet.forEach((key) => {\r\n conditionalFormats[key].forEach((condition) => {\r\n const format = {\r\n FillColor: condition.color,\r\n ColumnName: key,\r\n Value: columnType[key] === 'Percent' ? condition.value / 100 : condition.value,\r\n Type: condition.operator,\r\n };\r\n if (condition.operator === 'Between') {\r\n format.Value2 = columnType[key] === 'Percent' ? condition.value2 / 100 : condition.value2;\r\n }\r\n conditionalFormatsList.push(format);\r\n });\r\n });\r\n return conditionalFormatsList;\r\n}\r\n\r\n","\r\nimport _ from 'underscore';\r\nimport { transformReportAggregationItself } from '@bingads-webui-campaign/reports-v4-schema';\r\n\r\nconst partialConversionsColumns = [\r\n 'AllConversions',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'AllConversionRate',\r\n 'LowQualityConversions',\r\n 'CostPerConversion',\r\n 'ViewThroughCostPerConversion',\r\n 'ViewThroughConversionRate',\r\n 'AllCostPerConversion',\r\n];\r\n\r\nfunction getCorrespondColumnsByReportAggregationEnum(reportAggregationEnum) {\r\n let columnKeys;\r\n switch (reportAggregationEnum) {\r\n case 'Summary':\r\n columnKeys = [];\r\n break;\r\n case 'Hourly':\r\n columnKeys = ['GregorianDate', 'HourOfDay'];\r\n break;\r\n case 'Daily':\r\n columnKeys = ['GregorianDate'];\r\n break;\r\n case 'Weekly':\r\n columnKeys = ['Week'];\r\n break;\r\n case 'Monthly':\r\n columnKeys = ['Month'];\r\n break;\r\n case 'Yearly':\r\n columnKeys = ['Year'];\r\n break;\r\n case 'HourOfDay':\r\n columnKeys = ['HourOfDay'];\r\n break;\r\n case 'DayOfWeek':\r\n columnKeys = ['DayOfWeek'];\r\n break;\r\n case 'WeeklyStartingMonday':\r\n columnKeys = ['WeekStartingMonday'];\r\n break;\r\n default:\r\n break;\r\n }\r\n return columnKeys;\r\n}\r\n\r\n/**\r\n * In old data, user save aggregation in property `ReportAggregation`,\r\n * but in the new schema, this is a column selected by column chooser.\r\n * We need to transform the property to a selected column.\r\n * @param {any} oldTaskItem old back-end data model\r\n * @returns {any} new back-end data model\r\n */\r\nfunction transformReportAggregation(oldTaskItem) {\r\n if (!oldTaskItem.ReportAggregation) {\r\n return undefined;\r\n }\r\n const reportAggregationEnum = oldTaskItem.ReportAggregation;\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { ReportAggregation, ...newTaskItem } = { ...oldTaskItem };\r\n const newColumnKeys = getCorrespondColumnsByReportAggregationEnum(reportAggregationEnum);\r\n if (!newColumnKeys) {\r\n return newTaskItem;\r\n }\r\n // Billing statement and invoice billing have no 'TimePeriod' but 'Month' in legacy columns, so add _.uniq to remove duplicate columns\r\n newTaskItem.ReportColumns = _.uniq([...newColumnKeys, ...newTaskItem.ReportColumns]);\r\n return newTaskItem;\r\n}\r\n\r\nfunction removeDeprecatedColumns(oldTaskItem) {\r\n return {\r\n ...oldTaskItem,\r\n ReportColumns: oldTaskItem.ReportColumns.filter(column => column !== 'TimePeriod'), // key is \"TimePeriod\", column name is 'Unit of time'\r\n };\r\n}\r\n\r\nfunction updatePartialConversions(oldTaskItem) {\r\n return {\r\n ...oldTaskItem,\r\n Filters: oldTaskItem.Filters.map((item) => {\r\n let expression = item.Filter.Expressions[0];\r\n if (partialConversionsColumns.includes(expression.PropertyName)) {\r\n expression = {\r\n ...expression,\r\n PropertyName: `${expression.PropertyName}Qualified`,\r\n };\r\n }\r\n return {\r\n ...item,\r\n Filter: {\r\n ...item.Filter,\r\n Expressions: [expression],\r\n },\r\n };\r\n }),\r\n ReportColumns: oldTaskItem.ReportColumns\r\n .map((column) => {\r\n if (partialConversionsColumns.includes(column)) {\r\n return `${column}Qualified`;\r\n }\r\n return column;\r\n }),\r\n ConditionalFormats: oldTaskItem.ConditionalFormats.map((condition) => {\r\n if (partialConversionsColumns.includes(condition.ColumnName)) {\r\n return { ...condition, ColumnName: `${condition.ColumnName}Qualified` };\r\n }\r\n return condition;\r\n }),\r\n };\r\n}\r\n\r\nexport function convertOldTaskItem(taskItem, permissions) {\r\n if (!taskItem) {\r\n throw new Error('taskItem is undefined');\r\n }\r\n let newTaskItem = taskItem;\r\n if (permissions.dynamic.PartialConversions) {\r\n newTaskItem = updatePartialConversions(newTaskItem);\r\n }\r\n // if is task item is in new schema, just return it\r\n if (taskItem.IsPreview) {\r\n return newTaskItem;\r\n }\r\n newTaskItem = transformReportAggregation(newTaskItem);\r\n newTaskItem = transformReportAggregationItself(newTaskItem);\r\n newTaskItem = removeDeprecatedColumns(newTaskItem);\r\n return newTaskItem;\r\n}\r\n","import { toLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { getCanonicalCategoriesAndColumns } from '@bingads-webui-campaign/reports-v4-column-chooser';\r\nimport { ViewItem } from '@bingads-webui-campaign/reports-v4-component';\r\nimport { uiToApiDateRange, apiToUiDateRange } from './convert-date-range';\r\nimport { uiToApiFilter, apiToUiFilter } from './convert-filter';\r\nimport { uiToApiFormats, apiToUiFormats } from './convert-conditional-formats';\r\nimport { uiToApiReportOptions, apiToUiReportOptions } from './convert-report-options';\r\nimport { convertOldTaskItem } from './convert-old-task-item';\r\nimport { getInsertionOrderSelectorValue, isInsertionOrderMonthlyView, isInsertionOrderReport, removeInsertionOrderIdFilter } from '../../helpers/insertion-order-helper';\r\n\r\nexport function toUi({\r\n rawTaskItem, entitySchema, permissions, history,\r\n}) {\r\n const { query: { ioid } } = history;\r\n const taskItem = convertOldTaskItem(rawTaskItem, permissions);\r\n const { columns } = getCanonicalCategoriesAndColumns({\r\n columns: taskItem.ReportColumns,\r\n reportSchema: entitySchema,\r\n permissions,\r\n history,\r\n });\r\n const allFilters = entitySchema ? apiToUiFilter(taskItem, entitySchema) : {};\r\n const isInsertionOrderReportEnabled = isInsertionOrderReport({ reportType: taskItem.ReportType, permissions });\r\n\r\n return {\r\n reportName: taskItem.Name,\r\n reportType: taskItem.ReportType,\r\n dateRange: apiToUiDateRange(taskItem),\r\n filters: removeInsertionOrderIdFilter({ isInsertionOrderReportEnabled, oldFilter: allFilters }),\r\n sortedColumn: (taskItem.ReportSorts && taskItem.ReportSorts.length > 0) ? {\r\n key: taskItem.ReportSorts[0].ReportColumn,\r\n isSortedDescending: taskItem.ReportSorts[0].SortDirection === 'DESCENDING',\r\n } : {},\r\n conditionalFormats: taskItem.ConditionalFormats ? apiToUiFormats(taskItem.ConditionalFormats, entitySchema) : {},\r\n columns,\r\n scopeSelector: {\r\n AccountIds: taskItem.AccountIds,\r\n CampaignReportScopes: taskItem.CampaignReportScopes,\r\n CustomerScopes: taskItem.CustomerScopes,\r\n UserScopes: taskItem.UserScopes,\r\n },\r\n timeZone: taskItem.ReportTimeZone,\r\n schedule: {\r\n AttachFileToEmail: taskItem.AttachFileToEmail,\r\n EmailRecipients: taskItem.EmailRecipients,\r\n Cron: taskItem.Cron,\r\n StartTime: taskItem.StartTime,\r\n EndTime: taskItem.EndTime,\r\n },\r\n // For legacy report, disallow \"Save\", only allow \"Save as\" new report.\r\n isLegacyReport: !taskItem.IsPreview,\r\n Id: taskItem.Id,\r\n Type: taskItem.Type,\r\n ReportOptions: apiToUiReportOptions(taskItem.ReportOptions),\r\n ReportAggregation: taskItem.ReportAggregation,\r\n MaxRowCount: taskItem.MaxRowCount,\r\n LCID: taskItem.LCID,\r\n Format: taskItem.Format,\r\n insertionOrderViewType: isInsertionOrderMonthlyView({ reportType: taskItem.ReportType, permissions, columns }) ? ViewItem.Monthly : ViewItem.Daily,\r\n insertionOrderSelectorValue: getInsertionOrderSelectorValue({\r\n reportType: taskItem.ReportType,\r\n permissions,\r\n allFilters,\r\n ioidFromUrl: ioid,\r\n }),\r\n };\r\n}\r\n\r\n\r\nexport function toApi(reportParam, reportSchema, options = { hasPagination: false, hasSort: false }) {\r\n const {\r\n dateRange,\r\n filters,\r\n scopeSelector,\r\n schedule,\r\n sortedColumn,\r\n insertionOrderSelectorValue,\r\n } = reportParam;\r\n\r\n const res = {\r\n AccountIds: scopeSelector.AccountIds,\r\n CampaignReportScopes: scopeSelector.CampaignReportScopes,\r\n CustomerScopes: scopeSelector.CustomerScopes,\r\n UserScopes: scopeSelector.UserScopes,\r\n CustomerId: reportParam.customerId,\r\n AttachFileToEmail: schedule.AttachFileToEmail,\r\n EmailRecipients: schedule.EmailRecipients,\r\n Cron: schedule.Cron,\r\n StartTime: schedule.StartTime,\r\n EndTime: schedule.EndTime,\r\n Filters: uiToApiFilter(filters, reportSchema, insertionOrderSelectorValue),\r\n Format: reportParam.Format || 'Xlsx',\r\n ClientApplicationType: reportParam.ClientApplicationType || undefined,\r\n LastRunReportTime: reportParam.LastRunReportTime || null,\r\n Id: reportParam.Id,\r\n IsDVS: reportParam.IsDVS || false,\r\n // MT use IsPreview to determine whether to go through old flow or new flow.\r\n // Old flow does not support Quarter column, partial week, etc. So new UI must use new flow.\r\n IsPreview: true,\r\n SchemaName: reportSchema.SchemaName,\r\n LCID: reportParam.LCID,\r\n MaxRowCount: reportParam.MaxRowCount || 0,\r\n Name: reportParam.reportName,\r\n RenderType: reportParam.RenderType || 'Table',\r\n ReportAggregation: reportParam.ReportAggregation || 'Summary',\r\n ReportColumns: reportParam.columns,\r\n ReportTime: uiToApiDateRange(dateRange),\r\n ReportTimeZone: reportParam.timeZone || 'PacificTimeUSCanadaTijuana',\r\n ReportOptions: uiToApiReportOptions(reportParam.ReportOptions),\r\n ReportType: reportParam.reportType,\r\n TimeZoneId: toLegacyTimeZone(reportParam.timeZone) || 71,\r\n Type: reportParam.Type,\r\n UserId: reportParam.userId,\r\n ConditionalFormats: reportParam.conditionalFormats ? uiToApiFormats(reportParam.conditionalFormats, reportSchema) : [],\r\n ReportSorts: sortedColumn.key ? [{ ReportColumn: sortedColumn.key, SortDirection: sortedColumn.isSortedDescending ? 'DESCENDING' : 'ASCENDING' }] : [],\r\n ...(reportParam.CollapsedRow && { CollapsedRow: reportParam.CollapsedRow }),\r\n };\r\n if (options.hasPagination) {\r\n res.GridPagination = reportParam.GridPagination || { RequestedPage: 1, RowsPerPage: 20 };\r\n }\r\n Object.keys(res).forEach((key) => {\r\n if (res[key] === null || res[key] === undefined) {\r\n delete res[key];\r\n }\r\n });\r\n\r\n return {\r\n ReportData: {\r\n '@odata.type': '#Model.ReportDataTaskItem',\r\n ...res,\r\n },\r\n };\r\n}\r\n\r\n","\r\nexport function uiToApiReportOptions(uiReportOptions) {\r\n return uiReportOptions.join(',');\r\n}\r\n\r\nexport function apiToUiReportOptions(apiReportOptions) {\r\n return apiReportOptions ?\r\n apiReportOptions.split(',').map(option => option.trim()) :\r\n [];\r\n}\r\n","\r\n\r\nconst defaultTimeRange = {\r\n Hourly: 'LastMonth',\r\n HourOfDay: 'LastMonth',\r\n Daily: 'LastMonth',\r\n DayOfWeek: 'LastMonth',\r\n Weekly: 'LastMonth',\r\n Monthly: 'LastMonth',\r\n Yearly: 'ThisYear',\r\n Summary: 'LastMonth',\r\n AllTime: 'AllTime',\r\n};\r\n\r\nexport const getDefaultTimeRange = (timeGrain, reportSchema, isAllTime) => {\r\n if (isAllTime) {\r\n return defaultTimeRange.AllTime;\r\n }\r\n return reportSchema.TimeRanges ? reportSchema.TimeRanges[timeGrain][0] : defaultTimeRange[timeGrain];\r\n};\r\n","import { CivilDate } from 'tc39-proposal-temporal';\r\nimport { toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\n\r\nexport function getToday(i18n, timeZone) {\r\n const today = i18n.getToday({ timeZone: toIANATimeZone(timeZone) });\r\n const civilDate = new CivilDate(today.year, today.month, today.day);\r\n\r\n return civilDate;\r\n}\r\n","\r\nexport const dataLengths = {\r\n '14d': '14d',\r\n '30d': '30d',\r\n '1m': '1m',\r\n '90d': '90d',\r\n '2m': '2m',\r\n '6m': '6m',\r\n '12m': '12m',\r\n '24m': '24m',\r\n '36m': '36m',\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport { dataLengths } from './data-persistance-enum';\r\n\r\n/**\r\n * Get Minimum Supported Day\r\n * @param {object} reportSchema - The report object model\r\n * @param {string} timeGrain - current timeGrain\r\n * @param {CivilDate} today today as a civildate\r\n * @param {warningMessage} warningMessage - optional parameter to get message instead of day\r\n * @returns {CivilDate} - a civilDateTime of minmium support\r\n */\r\nexport const getMinimumSupported = (reportSchema, timeGrain, today, warningMessage) => {\r\n const dataRetentionMap = reportSchema.DataRetention;\r\n const dataRetention = dataRetentionMap[timeGrain];\r\n\r\n switch (dataRetention) {\r\n case dataLengths['14d']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 14 days.') :\r\n today.plus({ days: -15 });\r\n case dataLengths['30d']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 30 days.') :\r\n today.plus({ days: -30 });\r\n case dataLengths['1m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 1 month.') :\r\n today.plus({ months: -1 });\r\n case dataLengths['90d']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 90 days.') :\r\n today.plus({ days: -90 });\r\n case dataLengths['2m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 2 months.') :\r\n today.plus({ months: -2 });\r\n case dataLengths['6m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 6 months.') :\r\n today.plus({ months: -6 });\r\n case dataLengths['12m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 12 months.') :\r\n today.plus({ months: -12 });\r\n case dataLengths['24m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 24 months.') :\r\n today.plus({ months: -24 });\r\n case dataLengths['36m']:\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 36 months.') :\r\n today.plus({ months: -36 });\r\n default:\r\n _.defer(() => { throw new RangeError(`getMinimumSupported - dataRetention: ${dataRetention} timeGrain: ${timeGrain} not found on switch statement`); });\r\n return warningMessage ?\r\n _TL_('Based on the unit of time that you selected, this report will only contain data up to last 36 months.') :\r\n today.plus({ months: -36 });\r\n }\r\n};\r\n\r\n/**\r\n * Get Minimum Supported Day\r\n * @param {object} reportSchema - The report object model\r\n * @param {string} timeGrain - current timeGrain\r\n * @param {CivilDate} today today as a civildate\r\n * @returns {CivilDate} - a civilDateTime of minmium support\r\n */\r\nexport const getMinimumSupportedDay =\r\n (reportSchema, timeGrain, today) => getMinimumSupported(reportSchema, timeGrain, today, false);\r\n\r\n/**\r\n * Get Minimum Supported warningMessage\r\n * @param {object} reportSchema - The report object model\r\n * @param {string} timeGrain - current timeGrain\r\n * @param {CivilDate} today today as a civildate\r\n * @returns {CivilDate} - a civilDateTime of minmium support\r\n */\r\nexport const getMinimumSupportedWarning =\r\n (reportSchema, timeGrain, today) => getMinimumSupported(reportSchema, timeGrain, today, true);\r\n","import _ from 'underscore';\r\n\r\nexport const timeGrainRangeOptions = {\r\n Hourly: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'Custom',\r\n ],\r\n HourOfDay: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'Custom',\r\n ],\r\n Daily: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n DayOfWeek: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n Weekly: [\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n WeeklyStartingMonday: [\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n Monthly: [\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n Yearly: [\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n Summary: [\r\n 'Today',\r\n 'Yesterday',\r\n 'LastSevenDays',\r\n 'LastFourteenDays',\r\n 'LastThirtyDays',\r\n 'ThisWeekFromSun',\r\n 'ThisWeekFromMon',\r\n 'LastWeekStartingSun',\r\n 'LastWeekStartingMon',\r\n 'LastFourWeeksStartingSun',\r\n 'LastFourWeeksStartingMon',\r\n 'ThisMonth',\r\n 'LastMonth',\r\n 'LastThreeMonths',\r\n 'LastSixMonths',\r\n 'ThisYear',\r\n 'LastYear',\r\n 'AllTime',\r\n 'Custom',\r\n ],\r\n};\r\n\r\nexport const dataRetentionBlackList = {\r\n '36m': {\r\n Summary: [],\r\n Daily: [],\r\n Weekly: [],\r\n Monthly: [],\r\n Yearly: [],\r\n DayOfWeek: [],\r\n WeeklyStartingMonday: [],\r\n },\r\n '6m': {\r\n Hourly: [],\r\n HourOfDay: [],\r\n Summary: ['LastYear'],\r\n Daily: ['LastYear'],\r\n Weekly: ['LastYear'],\r\n Monthly: ['LastYear'],\r\n Yearly: [],\r\n WeeklyStartingMonday: ['LastYear'],\r\n },\r\n '12m': {\r\n Hourly: [],\r\n HourOfDay: [],\r\n Summary: ['LastYear'],\r\n Daily: ['LastYear'],\r\n Weekly: ['LastYear'],\r\n Monthly: ['LastYear'],\r\n Yearly: ['LastYear'],\r\n WeeklyStartingMonday: ['LastYear'],\r\n },\r\n '24m': {\r\n Daily: [],\r\n },\r\n '1m': {\r\n Hourly: ['LastSixMonths'],\r\n HourOfDay: ['LastSixMonths'],\r\n },\r\n '14d': {\r\n Hourly: ['LastSixMonths'],\r\n HourOfDay: ['LastSixMonths'],\r\n },\r\n '2m': {\r\n Hourly: ['LastSixMonths'],\r\n HourOfDay: ['LastThreeMonths'],\r\n },\r\n '90d': {\r\n Summary: [],\r\n Daily: [],\r\n Weekly: [],\r\n Monthly: [],\r\n Yearly: [],\r\n DayOfWeek: [],\r\n WeeklyStartingMonday: [],\r\n },\r\n '30d': {\r\n Hourly: [],\r\n HourOfDay: [],\r\n Summary: ['LastSixMonths', 'LastThreeMonths'],\r\n Daily: ['LastSixMonths', 'LastThreeMonths'],\r\n Weekly: ['LastSixMonths', 'LastThreeMonths'],\r\n Monthly: ['LastSixMonths', 'LastThreeMonths'],\r\n Yearly: [],\r\n WeeklyStartingMonday: ['LastSixMonths', 'LastThreeMonths'],\r\n },\r\n};\r\n\r\nexport const getAllowedRanges = (timeGrain, reportSchema) => {\r\n const reportDateRetention = reportSchema.DataRetention[timeGrain] || Object.values(reportSchema.DataRetention)[0];\r\n const blackList = dataRetentionBlackList[reportDateRetention][timeGrain];\r\n return reportSchema.TimeRanges ?\r\n reportSchema.TimeRanges[timeGrain] :\r\n _.difference(timeGrainRangeOptions[timeGrain], blackList);\r\n};\r\n","import _ from 'underscore';\r\nimport {\r\n getCivilDateDayOfWeek,\r\n getCivilDateMonthStart,\r\n} from '@bingads-webui-universal/temporal-utitlities';\r\nimport { dateRangePreset } from '@bingads-webui-campaign/reports-v4-strings';\r\nimport { getAllowedRanges } from './time-grain-range-options';\r\n\r\n/**\r\n * getTimeRanges\r\n * @param {CivilDate} minSupportDay minimumSupportedDay\r\n * @param {CivilDate} today today as a civildate\r\n * @param {string} i18n i18n module\r\n * @returns {array} - array of date ranges formated for picker\r\n */\r\nexport const getTimeRanges = (minSupportDay, today, i18n) => {\r\n const daysAwayFromMonday = getCivilDateDayOfWeek(today) ? getCivilDateDayOfWeek(today) - 1 : 6;\r\n\r\n const yesterday = today.plus({ days: -1 });\r\n const sevenDaysAgo = today.plus({ days: -7 });\r\n const fourteenDaysAgo = today.plus({ days: -14 });\r\n const thirtyDaysAgo = today.plus({ days: -30 });\r\n const thisSunday = today.plus({ days: -getCivilDateDayOfWeek(today) });\r\n const thisMonday = today.plus({ days: -daysAwayFromMonday });\r\n const thisMonthFirstDay = getCivilDateMonthStart(today);\r\n const lastMonthlastDay = thisMonthFirstDay.plus({ days: -1 });\r\n const lastMonthFirstDay = getCivilDateMonthStart(lastMonthlastDay);\r\n const lastTwoMonthlastDay = lastMonthFirstDay.plus({ days: -1 });\r\n const lastTwoMonthFirstDay = getCivilDateMonthStart(lastTwoMonthlastDay);\r\n const firstDayOfYear = today.with({ day: 1, month: 1 });\r\n\r\n const rawRanges = [\r\n {\r\n /* Custom Time Range must have Id = 4 */\r\n rangeId: 4, key: 'Custom', range: { start: undefined, end: undefined },\r\n },\r\n {\r\n rangeId: 1, key: 'Today', range: { start: today, end: today },\r\n },\r\n {\r\n rangeId: 2, key: 'Yesterday', range: { start: yesterday, end: yesterday },\r\n },\r\n {\r\n rangeId: 3, key: 'LastSevenDays', range: { start: sevenDaysAgo, end: yesterday },\r\n },\r\n {\r\n rangeId: 0, key: 'LastFourteenDays', range: { start: fourteenDaysAgo, end: yesterday },\r\n },\r\n {\r\n rangeId: 5, key: 'LastThirtyDays', range: { start: thirtyDaysAgo, end: yesterday },\r\n },\r\n {\r\n rangeId: 6, key: 'ThisWeekFromSun', range: { start: thisSunday, end: today },\r\n },\r\n {\r\n rangeId: 7, key: 'ThisWeekFromMon', range: { start: thisMonday, end: today },\r\n },\r\n {\r\n rangeId: 8, key: 'LastWeekStartingSun', range: { start: thisSunday.plus({ days: -7 }), end: thisSunday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 9, key: 'LastWeekStartingMon', range: { start: thisMonday.plus({ days: -7 }), end: thisMonday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 10, key: 'LastFourWeeksStartingSun', range: { start: thisSunday.plus({ days: -28 }), end: thisSunday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 11, key: 'LastFourWeeksStartingMon', range: { start: thisMonday.plus({ days: -28 }), end: thisMonday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 23, key: 'LastSixWeeksStartingSun', range: { start: thisSunday.plus({ days: -42 }), end: thisSunday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 22, key: 'LastSixWeeksStartingMon', range: { start: thisMonday.plus({ days: -42 }), end: thisMonday.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 12, key: 'ThisMonth', range: { start: thisMonthFirstDay, end: today },\r\n },\r\n {\r\n rangeId: 13, key: 'LastMonth', range: { start: lastMonthFirstDay, end: lastMonthlastDay },\r\n },\r\n {\r\n rangeId: 20, key: 'LastTwoMonths', range: { start: lastTwoMonthFirstDay, end: lastMonthlastDay },\r\n },\r\n {\r\n rangeId: 14, key: 'LastThreeMonths', range: { start: lastMonthFirstDay.plus({ months: -2 }), end: lastMonthlastDay },\r\n },\r\n {\r\n rangeId: 15, key: 'LastSixMonths', range: { start: lastMonthFirstDay.plus({ months: -5 }), end: lastMonthlastDay },\r\n },\r\n {\r\n rangeId: 16, key: 'ThisYear', range: { start: firstDayOfYear, end: today },\r\n },\r\n {\r\n rangeId: 17, key: 'LastYear', range: { start: today.with({ day: 1, month: 1, year: today.year - 1 }), end: firstDayOfYear.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 21, key: 'LastTwoYears', range: { start: today.with({ day: 1, month: 1, year: today.year - 2 }), end: firstDayOfYear.plus({ days: -1 }) },\r\n },\r\n {\r\n rangeId: 18, key: 'AllTime', range: { start: minSupportDay, end: today },\r\n },\r\n ];\r\n const localizedRanges = _.map(rawRanges, (range) => {\r\n const englishString = dateRangePreset[range.key];\r\n const localizedString = i18n.getString(englishString);\r\n\r\n return {\r\n ...range,\r\n text: localizedString,\r\n };\r\n });\r\n\r\n return localizedRanges;\r\n};\r\n\r\n/**\r\n * getFilteredTimeRanges\r\n * @param {string} timeGrain timeGrain Value\r\n * @param {CivilDate} today today as a civildate\r\n * @param {CivilDate} minSupportedDay minSupportedDay as a civildate\r\n * @param {object} reportSchema schema for the report *\r\n * @param {string} i18n i18n module\r\n * @returns {array} - array of date ranges formated for picker\r\n * filtered by timeGrain\r\n */\r\nexport const getFilteredTimeRanges = (timeGrain, today, minSupportedDay, reportSchema, i18n) => {\r\n const specificRanges = getTimeRanges(minSupportedDay, today, i18n);\r\n const rangeOptions = getAllowedRanges(timeGrain, reportSchema);\r\n const supportedOptions =\r\n _.object(rangeOptions, rangeOptions);\r\n return _.filter(specificRanges, node => _.has(supportedOptions, node.key));\r\n};\r\n","import { CivilDate } from 'tc39-proposal-temporal';\r\n\r\n/**\r\n * isCivilDateGreaterThanEqual\r\n * @param {CivilDate} value - value\r\n * @param {CivilDate} date2 - date to compare against\r\n * @returns {bool} - is value > param\r\n */\r\nexport function isCivilDateGreaterThanEqual(value, date2) {\r\n const newDate1 = new Date(value.year, value.month - 1, value.day);\r\n const newDate2 = new Date(date2.year, date2.month - 1, date2.day);\r\n return !!(newDate1 >= newDate2);\r\n}\r\n\r\n/**\r\n * isCivilDateGreaterThan\r\n * @param {CivilDate} value - value\r\n * @param {CivilDate} date2 - date to compare against\r\n * @returns {bool} - is value > param\r\n */\r\nexport function isCivilDateGreaterThan(value, date2) {\r\n const newDate1 = new Date(value.year, value.month - 1, value.day);\r\n const newDate2 = new Date(date2.year, date2.month - 1, date2.day);\r\n return !!(newDate1 > newDate2);\r\n}\r\n\r\nconst regex = /(\\d*)-(\\d*)-(\\d*)/;\r\nexport function getCivilDateFromString(value) {\r\n const temp = regex.exec(value);\r\n return new CivilDate(temp[1], temp[2], temp[3]);\r\n}\r\n\r\nexport function trimDate(value, today) {\r\n return isCivilDateGreaterThan(value, today) ?\r\n today :\r\n value;\r\n}\r\n","import _ from 'underscore';\r\nimport { getDefaultTimeRange } from './default-time-ranges';\r\nimport { getAllowedRanges } from './time-grain-range-options';\r\n\r\n// if `prevTimeRange` is not allowed in new options, return default new one\r\n// Otherwise return `prevTimeRange`\r\nexport function tryGetUpdatedTimeRange({\r\n newTimeGrain, prevTimeGrain, prevTimeRange, reportSchema,\r\n}) {\r\n let newTimeRange = prevTimeRange;\r\n if (newTimeGrain !== prevTimeGrain) {\r\n const prevTimeRangeKey = prevTimeRange.key;\r\n const allowedRanges = getAllowedRanges(newTimeGrain, reportSchema);\r\n if (!_.contains(allowedRanges, prevTimeRangeKey)) {\r\n const defaultTimeRange = getDefaultTimeRange(newTimeGrain, reportSchema);\r\n newTimeRange = {\r\n key: defaultTimeRange || allowedRanges[0],\r\n };\r\n }\r\n }\r\n // TODO: How do we change timezone?\r\n return newTimeRange;\r\n}\r\n","\r\nexport function getStyle() {\r\n return {\r\n reportDatePicker: {\r\n '& .compared-date-range-picker': {\r\n display: 'block',\r\n },\r\n },\r\n };\r\n}\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { ComparedDateRangePicker } from '@bingads-webui-react/compared-date-range-picker';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport {\r\n getToday,\r\n getMinimumSupportedDay,\r\n getCivilDateFromString,\r\n getMinimumSupportedWarning,\r\n getFilteredTimeRanges,\r\n isCivilDateGreaterThanEqual\r\n} from './date-picker-utils';\r\nimport { getStyle } from './date-picker-style';\r\n\r\nfunction DatePickerBase({\r\n reportSchema,\r\n dateRange,\r\n onChange, setWarning,\r\n timeZone,\r\n timeGrain,\r\n getFilteredRanges,\r\n getMinimumDay,\r\n getMinimumWarning,\r\n}) {\r\n const classes = useDefaultStyles(getStyle);\r\n\r\n const i18n = useContext(I18nContext);\r\n const serverContext = useContext(ServerContext);\r\n\r\n const dateFormat = putil.get(serverContext, 'CurrentUser.CultureDateTimeFormat.ShortDatePattern');\r\n\r\n const ianaTimeZone = toIANATimeZone(timeZone);\r\n\r\n const today = getToday(i18n, timeZone);\r\n const minSupportedDay = getMinimumDay(reportSchema, timeGrain, today);\r\n const specificRanges = getFilteredRanges(timeGrain, today, minSupportedDay, reportSchema, i18n);\r\n const selectedTimeRange = dateRange.key;\r\n let startDate;\r\n let endDate;\r\n let selectedRangeId = 4;\r\n\r\n const allowedTimeRanges = {};\r\n specificRanges.forEach((node) => { allowedTimeRanges[node.key] = node; });\r\n\r\n if (selectedTimeRange !== 'Custom') {\r\n startDate = allowedTimeRanges[selectedTimeRange].range.start;\r\n endDate = allowedTimeRanges[selectedTimeRange].range.end;\r\n selectedRangeId = allowedTimeRanges[selectedTimeRange].rangeId;\r\n } else {\r\n startDate = getCivilDateFromString(dateRange.start);\r\n endDate = getCivilDateFromString(dateRange.end);\r\n }\r\n\r\n const onPickDateRanges = (result) => {\r\n const { rangeType, selectedRange } = result;\r\n if (isCivilDateGreaterThanEqual(minSupportedDay, selectedRange.start)) {\r\n const warningMessage = i18n.getString(getMinimumWarning(reportSchema, timeGrain, today));\r\n setWarning(warningMessage);\r\n } else {\r\n setWarning(undefined);\r\n }\r\n if (rangeType.key === 'Custom') {\r\n onChange({\r\n key: rangeType.key,\r\n start: selectedRange.start.toString(),\r\n end: selectedRange.end.toString(),\r\n });\r\n } else {\r\n onChange({\r\n key: rangeType.key,\r\n start: undefined,\r\n end: undefined,\r\n });\r\n }\r\n };\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nDatePickerBase.propTypes = {\r\n dateRange: PropTypes.shape({\r\n key: PropTypes.string.isRequired,\r\n start: PropTypes.string,\r\n end: PropTypes.string,\r\n }).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n setWarning: PropTypes.func.isRequired,\r\n timeGrain: PropTypes.string.isRequired,\r\n timeZone: PropTypes.string.isRequired,\r\n today: PropTypes.shape({\r\n day: PropTypes.number.isRequired,\r\n month: PropTypes.number.isRequired,\r\n year: PropTypes.number.isRequired,\r\n }).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n reportSchema: PropTypes.shape({}).isRequired,\r\n getFilteredRanges: PropTypes.func,\r\n getMinimumDay: PropTypes.func,\r\n getMinimumWarning: PropTypes.func,\r\n};\r\n\r\nDatePickerBase.defaultProps = {\r\n getFilteredRanges: getFilteredTimeRanges,\r\n getMinimumDay: getMinimumSupportedDay,\r\n getMinimumWarning: getMinimumSupportedWarning,\r\n};\r\n\r\nexport const DatePicker = DatePickerBase;\r\n","const defaultSortingColumns = {\r\n PublisherUsagePerformanceReport: 'Impressions',\r\n AccountPerformanceReport: 'Clicks',\r\n CampaignPerformanceReport: 'Clicks',\r\n AdGroupPerformanceReport: 'Clicks',\r\n AdPerformanceReport: 'Clicks',\r\n KeywordPerformanceReport: 'Clicks',\r\n SearchQueryPerformanceReport: 'Clicks',\r\n DestinationURLPerformanceReport: 'Clicks',\r\n AudiencePerformanceReport: 'Clicks',\r\n FeedItemPerformanceReport: 'Clicks',\r\n InsertionOrderReport: 'IOReportMonth',\r\n};\r\n\r\nexport const getDefaultSortingColumn = (reportType) => {\r\n // report does not have a default sorting column\r\n if (!reportType || !defaultSortingColumns[reportType]) {\r\n return {};\r\n }\r\n\r\n return {\r\n key: defaultSortingColumns[reportType],\r\n isSortedDescending: true,\r\n };\r\n};\r\n","import { fromLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { findSelectedNode } from '@bingads-webui-react/with-site-map';\r\nimport { getCanonicalCategoriesAndColumns } from '@bingads-webui-campaign/reports-v4-column-chooser';\r\nimport { ViewItem } from '@bingads-webui-campaign/reports-v4-component';\r\nimport { getDefaultTimeRange } from '../date-picker';\r\nimport { getDefaultMultiAccountSelectorInfo } from '../../helpers/account-selector-helper';\r\nimport { getDefaultSortingColumn } from '../../helpers/default-sorting-column-helper';\r\nimport { getDefaultFilters } from '../../helpers/default-filter-helper';\r\nimport { getInsertionOrderSelectorValue, isInsertionOrderReport } from '../../helpers/insertion-order-helper';\r\n\r\nfunction getDefaultTaskItemType({ accountId, isInternalUser }) {\r\n const regularTaskItemType = accountId ?\r\n 'ReportUIAccountTemplate' :\r\n 'ReportUICustomerTemplate';\r\n const finalTaskItemType = isInternalUser ?\r\n 'ReportUITemplate' :\r\n regularTaskItemType;\r\n\r\n return finalTaskItemType;\r\n}\r\n\r\nfunction getDefaultGridPagination({ reportType, permissions }) {\r\n return { RequestedPage: 1, RowsPerPage: isInsertionOrderReport({ reportType, permissions }) ? 200 : 20 };\r\n}\r\n\r\nfunction getDefaultInsertionOrderViewType({ reportType, permissions }) {\r\n return isInsertionOrderReport({ reportType, permissions }) ? ViewItem.Monthly : undefined;\r\n}\r\n\r\nexport const emptySchedule = {\r\n AttachFileToEmail: false,\r\n EmailRecipients: [],\r\n Cron: '',\r\n StartTime: undefined,\r\n EndTime: undefined,\r\n};\r\n\r\nexport const getDefaultReportParam = ({\r\n reportSchema, siteMap, history, serverContext, i18n, permissions,\r\n}) => {\r\n const {\r\n uid: userIdFromUrl,\r\n cid: customerId,\r\n aid: accountId,\r\n ioid: ioidFromUrl,\r\n } = history.query;\r\n\r\n const userIdFromServer = serverContext.CurrentUser.Id;\r\n const userId = Number.isInteger(userIdFromUrl) ?\r\n userIdFromUrl :\r\n userIdFromServer;\r\n\r\n const accountTimeZone = serverContext.CurrentAccount.TimeZone;\r\n const isInternalUser = serverContext.Permissions.IsInternalUser;\r\n\r\n const renderType = 'Table';\r\n\r\n const selectedNode = findSelectedNode(siteMap);\r\n\r\n const { columns } = getCanonicalCategoriesAndColumns({\r\n columns: [],\r\n reportSchema,\r\n permissions,\r\n history,\r\n });\r\n const isAllTime = !!(isInsertionOrderReport({ reportType: reportSchema.ReportType, permissions }) && ioidFromUrl);\r\n\r\n const reportParam = {\r\n reportName: i18n.getString(selectedNode.name),\r\n reportType: reportSchema.ReportType,\r\n userId,\r\n customerId,\r\n dateRange: {\r\n key: getDefaultTimeRange(reportSchema.ReportAggregation.default, reportSchema, isAllTime),\r\n },\r\n filters: getDefaultFilters(reportSchema.ReportType),\r\n sortedColumn: getDefaultSortingColumn(reportSchema.ReportType),\r\n timeZone: accountId && accountTimeZone ?\r\n fromLegacyTimeZone(accountTimeZone) :\r\n 'PacificTimeUSCanadaTijuana',\r\n Type: getDefaultTaskItemType({ accountId, isInternalUser }),\r\n columns,\r\n scopeSelector: getDefaultMultiAccountSelectorInfo(reportSchema, history),\r\n schedule: {\r\n AttachFileToEmail: false,\r\n EmailRecipients: [],\r\n Cron: '',\r\n StartTime: undefined,\r\n EndTime: undefined,\r\n },\r\n ClientApplicationType: 'ReportingUI',\r\n Format: 'Xlsx',\r\n IsDVS: false,\r\n LCID: serverContext.Omniture.Lcid,\r\n MaxRowCount: 0, // TODO: what's this?\r\n RenderType: renderType,\r\n ReportAggregation: reportSchema.ReportAggregation.default,\r\n ReportOptions: [\r\n 'IncludeColumnHeaders',\r\n 'IncludeReportFooter',\r\n 'IncludeReportHeader',\r\n ],\r\n GridPagination: getDefaultGridPagination({ reportType: reportSchema.ReportType, permissions }),\r\n insertionOrderViewType: getDefaultInsertionOrderViewType({ reportType: reportSchema.ReportType, permissions }),\r\n insertionOrderSelectorValue: getInsertionOrderSelectorValue({ reportType: reportSchema.ReportType, permissions, ioidFromUrl }),\r\n };\r\n return reportParam;\r\n}\r\n","export const getDefaultFilters = (reportType) => {\r\n if (!reportType || reportType !== 'SearchVerticalCategoryInsightsReport') {\r\n return {};\r\n }\r\n\r\n return {\r\n $and: [\r\n {\r\n CountryCode: {\r\n $in: [\"Enum.CountryCode'US'\"],\r\n },\r\n },\r\n {\r\n L1Vertical: {\r\n $in: [\"Enum.L1Vertical'TravelTourism'\"],\r\n },\r\n },\r\n ],\r\n };\r\n};\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Link } from '@bingads-webui-campaign-react/router';\r\nimport { GlobalErrorView } from '@bingads-webui-react/app-global-error-view';\r\n\r\nexport function ErrorView(props) {\r\n const i18n = useContext(I18nContext);\r\n const { taskState } = props;\r\n\r\n const errorDescriptionMap = {\r\n fail: i18n.getString(_TL_(\"We've encountered an error. Please try again or contact support.\")),\r\n invalidId: i18n.getString(_TL_('The report does not exist or does not belong to current user, manager account or account.')),\r\n deprecate: i18n.getString(_TL_('This report type has been deprecated and is no longer available.')),\r\n };\r\n\r\n return (\r\n {i18n.getString(_TL_('Back to custom reports'))},\r\n ]\r\n }\r\n />\r\n );\r\n}\r\n\r\nErrorView.propTypes = {\r\n taskState: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport {\r\n BillingDocumentCell,\r\n AmountCell,\r\n ChangeTypeCell,\r\n AmountTotalCell,\r\n InsertionOrderDetailsCell,\r\n getBudgetChangeString,\r\n ChangeTypeEnum,\r\n} from '@bingads-webui-campaign/reports-v4-component';\r\nimport { isInsertionOrderMonthlyView, isInsertionOrderReport, shouldDisplayTotalAmount } from './insertion-order-helper';\r\nimport { isNormalRow, isTotalRow } from './row-helper';\r\n\r\nexport function bindOnRenderRowsForInsertionOrderReport({\r\n i18n, item, column, reportType, permissions, viewType, isAccountScope, filters,\r\n}) {\r\n if (!isInsertionOrderReport({ reportType, permissions })) {\r\n return null;\r\n }\r\n\r\n const isMonthlyView = isInsertionOrderMonthlyView({ reportType, permissions, viewType });\r\n const isNormal = isNormalRow(item);\r\n\r\n if (isMonthlyView && isNormal && column.key === 'ChangeType') {\r\n const {\r\n SpendTypeValue, AdjustmentTypeValue, BudgetChangedTypeValue,\r\n WithBudgetChangeDescription,\r\n } = item;\r\n return (\r\n \r\n );\r\n }\r\n if (isNormal && column.key === 'ChangeAmount') {\r\n const {\r\n SpendAmountValue, AdjustmentAmountValue, BudgetChangedAmountValue,\r\n BudgetChangeOldValue, BudgetChangeNewValue, WithBudgetChangeDescription,\r\n } = item;\r\n return (\r\n \r\n );\r\n }\r\n if (isNormal && column.key === 'BillingDocumentNumber') {\r\n const {\r\n BillingDocumentNumber, MismatchedAmount, MismatchedReason, CurrencyCode,\r\n } = item;\r\n return (\r\n \r\n );\r\n }\r\n if (isNormal && column.key === 'InsertionOrderDetails') {\r\n const {\r\n InsertionOrderDetails, InsertionOrderId, AccountId,\r\n } = item;\r\n return (\r\n \r\n );\r\n }\r\n if (column.key === 'ChangeAmount' && isTotalRow(item)) {\r\n if (!isAccountScope) {\r\n return (
); // In customer level, the currency code is not same, so hide the total amount\r\n }\r\n const {\r\n SpendAmount, AdjustmentAmount, BudgetChangedAmount,\r\n } = item;\r\n return (\r\n \r\n );\r\n }\r\n if (isNormal && column.key === 'RemainingIOBudget') {\r\n const { RemainingIOBudget } = item;\r\n if (!RemainingIOBudget) {\r\n return (
);\r\n }\r\n const remainingIOBudgetString = getBudgetChangeString({\r\n i18n,\r\n rawValue: RemainingIOBudget.RawValue,\r\n amountValue: RemainingIOBudget.Value,\r\n useEmptyString: false,\r\n });\r\n return ({remainingIOBudgetString});\r\n }\r\n if (column.key === 'RemainingIOBudget' && isTotalRow(item)) {\r\n return (
);\r\n }\r\n return null;\r\n}\r\n","import { useState } from 'react';\r\n\r\nexport function useWarnings() {\r\n const [warnings, setWarnings] = useState({});\r\n\r\n function patchWarnings(key, value) {\r\n setWarnings({\r\n ...warnings,\r\n [key]: value,\r\n });\r\n }\r\n\r\n return [warnings, patchWarnings];\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, Callout, TextField, DirectionalHint, DefaultButton, PrimaryButton, IconButton } from '@fluentui/react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { iconClassNames, getStyles } from '../../style/index';\r\n\r\nfunction valiadate(name) {\r\n if (name.trim() === '') {\r\n return _TL_('Required field');\r\n }\r\n if (name.length > 85) {\r\n return _TL_('Field should not exceed 85 characters');\r\n }\r\n return '';\r\n}\r\n\r\nexport function NameEditor(props) {\r\n const {\r\n value, reportAction, i18n, onNameChange, onSave, onSaveAs, isDirty, isLegacyReport, shouldHideThisFunctionality,\r\n } = props;\r\n const [editName, setEditName] = useState(value || '');\r\n const classes = useDefaultStyles(getStyles);\r\n const editIcon = { iconName: 'Edit' };\r\n const saveIcon = { iconName: 'Save' };\r\n const saveAsIcon = { iconName: 'SaveAs' };\r\n\r\n const [editNamePromptVisibleStatus, updateEditNamePromptVisible] = useState(0);// status be like: 0: none display 1:in edit status 2:in save status\r\n\r\n useEffect(() => {\r\n // It takes time to load reportParams, so the default value of editname is set to an empty string. Later on reportParams loaded, we need to sync to editName, otherwise validation will fail due to editName empty.\r\n setEditName(value);\r\n }, [value]);\r\n\r\n function showEditNamePrompt() {\r\n updateEditNamePromptVisible(1);\r\n }\r\n\r\n function showSaveNamePrompt() {\r\n updateEditNamePromptVisible(2);\r\n }\r\n\r\n function closeNameEditPrompt() {\r\n updateEditNamePromptVisible(0);\r\n }\r\n\r\n function handleSubmit() {\r\n if (valiadate(editName)) {\r\n return;\r\n }\r\n if (editNamePromptVisibleStatus === 1) {\r\n onNameChange(editName);\r\n } else {\r\n onSaveAs(editName);\r\n }\r\n closeNameEditPrompt();\r\n }\r\n\r\n function onClickSave() {\r\n onSave();\r\n }\r\n\r\n const error = i18n.getString(valiadate(editName));\r\n\r\n return (\r\n \r\n {value &&\r\n \r\n {value}\r\n { !shouldHideThisFunctionality &&\r\n
\r\n \r\n {reportAction === 'edit' &&\r\n }\r\n \r\n
}\r\n {editNamePromptVisibleStatus &&\r\n
\r\n \r\n \r\n {editNamePromptVisibleStatus === 1 ? i18n.getString(_TL_('Rename this report:')) : i18n.getString(_TL_('Save as customized report'))}\r\n \r\n setEditName(v)}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n
}\r\n
\r\n );\r\n}\r\n\r\n\r\nNameEditor.propTypes = {\r\n value: PropTypes.string.isRequired,\r\n reportAction: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({}).isRequired,\r\n onNameChange: PropTypes.func.isRequired,\r\n onSave: PropTypes.func.isRequired,\r\n onSaveAs: PropTypes.func.isRequired,\r\n isDirty: PropTypes.bool.isRequired,\r\n isLegacyReport: PropTypes.bool.isRequired,\r\n};\r\n","\r\nimport React, { useEffect, useState, useRef } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Dialog, DialogType, DialogFooter, PrimaryButton, DefaultButton } from '@fluentui/react';\r\nimport { useReportsHistory } from '@bingads-webui-campaign/reports-v4-history';\r\n\r\nfunction NavigateDialog(props) {\r\n const {\r\n i18n, dialogContentProps, disableNavigateDialog,\r\n disableNavigateDialogOnce, setDisableNavigateDialogOnce,\r\n } = props;\r\n const history = useReportsHistory();\r\n const [isDialogVisible, setDialogVisible] = useState(false);\r\n const [navigateParam, setNavigateParam] = useState({});\r\n const unblockRef = useRef();\r\n\r\n function onCheckedNavigate() {\r\n unblockRef.current(); // Unblock immediately. Do not use setDisableNavigateDialogOnce(true) because it does not rerender immediately.\r\n setDialogVisible(false);\r\n history[navigateParam.action.toLowerCase()](navigateParam.location);\r\n }\r\n\r\n // Block in-page navigation\r\n useEffect(() => {\r\n const unblock = history.block((location, action) => {\r\n if (disableNavigateDialogOnce) {\r\n setDisableNavigateDialogOnce(false);\r\n return true; // allow navigation\r\n }\r\n\r\n if (disableNavigateDialog) {\r\n return true; // allow navigation\r\n }\r\n\r\n // history package v4 not support retry so we cannot judge whether user is clicking back or forward button of browser. So only block PUSH action to avoid this bug\r\n // upgrade to v5 will fix this bug, and also support block on window.beforeUnload event\r\n if (action === 'POP') {\r\n return true; // allow navigation\r\n }\r\n\r\n setDialogVisible(true);\r\n setNavigateParam({ location, action });\r\n return false; // block navigation\r\n });\r\n\r\n unblockRef.current = unblock;\r\n\r\n return unblock;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [disableNavigateDialog, disableNavigateDialogOnce]);\r\n\r\n // Block page reload or tab close through clicking on browser's buttons\r\n useEffect(() => {\r\n function promptBeforeUnload(event) {\r\n if (disableNavigateDialog || disableNavigateDialogOnce) {\r\n return;\r\n }\r\n\r\n // Cancel the event.\r\n event.preventDefault();\r\n // Chrome (and legacy IE) requires returnValue to be set.\r\n event.returnValue = ''; // eslint-disable-line no-param-reassign\r\n }\r\n\r\n window.addEventListener('beforeunload', promptBeforeUnload);\r\n\r\n return () => {\r\n window.removeEventListener('beforeunload', promptBeforeUnload);\r\n };\r\n }, [disableNavigateDialog, disableNavigateDialogOnce]);\r\n\r\n return (\r\n
\r\n \r\n );\r\n}\r\n\r\nMultipleAccountSelector.propTypes = {\r\n onSelectedChange: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n getDefaultSelected: PropTypes.func.isRequired,\r\n reportSchema: PropTypes.shape({}).isRequired,\r\n searchHistorySelectorOptions: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n};\r\n\r\nexport { MultipleAccountSelector };\r\n","import React, { useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { TextField, Text, Stack, DefaultButton, Separator } from '@fluentui/react';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getAccountSelectorStyle } from './styles';\r\n\r\nconst errorTextStyle = { root: { color: 'red' } };\r\n\r\nconst ErrorDescription = (props) => {\r\n const { description } = props;\r\n return (\r\n \r\n {description}\r\n \r\n );\r\n};\r\n\r\nErrorDescription.propTypes = {\r\n description: PropTypes.string,\r\n};\r\n\r\nErrorDescription.defaultProps = {\r\n description: '',\r\n};\r\n\r\nfunction isUserIdValid(userId) {\r\n const isNumberic = !isNaN(userId);\r\n const isNotEmptyString = userId !== '';\r\n return isNumberic && isNotEmptyString;\r\n}\r\n\r\nfunction getUserIdErrorDescription(userId, i18n) {\r\n // string `userId` is not numeric\r\n if (isNaN(userId)) {\r\n return i18n.getString(_TL_('Field requires numeric value'));\r\n }\r\n if (userId === '') {\r\n return i18n.getString(_TL_('Required field'));\r\n }\r\n return '';\r\n}\r\n\r\nfunction UserScopeInput(props) {\r\n const {\r\n userId,\r\n onApplyClick: onApply,\r\n onCancelClick: onCancel,\r\n isSeparatorBeforeButtons,\r\n applyText,\r\n className,\r\n } = props;\r\n const [currentUserIdString, setCurrentUserIdString] = useState(userId && userId.toString());\r\n\r\n const i18n = useContext(I18nContext);\r\n const isValueValid = isUserIdValid(currentUserIdString);\r\n const descriptionText = getUserIdErrorDescription(currentUserIdString, i18n);\r\n\r\n const classes = useDefaultStyles(getAccountSelectorStyle);\r\n\r\n function onApplyClick() {\r\n if (!isUserIdValid(currentUserIdString)) {\r\n throw new Error('when click save, current user ID must be valid(numeric).');\r\n }\r\n onApply(parseInt(currentUserIdString, 10));\r\n }\r\n\r\n function onCancelClick() {\r\n onCancel();\r\n }\r\n\r\n function onUserIDTextChange(event, newValue) {\r\n setCurrentUserIdString(newValue);\r\n }\r\n\r\n return (\r\n
\r\n \r\n {isSeparatorBeforeButtons && }\r\n \r\n {\r\n onApply && \r\n }\r\n {\r\n onCancel && \r\n }\r\n \r\n
\r\n );\r\n}\r\n\r\nUserScopeInput.propTypes = {\r\n userId: PropTypes.number.isRequired,\r\n onApplyClick: PropTypes.func.isRequired,\r\n onCancelClick: PropTypes.func.isRequired,\r\n isSeparatorBeforeButtons: PropTypes.bool.isRequired,\r\n applyText: PropTypes.string.isRequired,\r\n className: PropTypes.string,\r\n};\r\n\r\nUserScopeInput.defaultProps = {\r\n className: '',\r\n};\r\n\r\nexport { UserScopeInput };\r\n","import React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { Callout } from '@fluentui/react';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { useReportsHistory } from '@bingads-webui-campaign/reports-v4-history';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { MultipleAccountSelector } from './multiple-account-selector';\r\nimport { UserScopeInput } from './user-scope-input';\r\nimport { getUserIdFromScopeSelector, convertUserIdToScopeSelector, shouldShowSelector, shouldShowUserScopeInput, getDefaultMultiAccountSelectorInfo } from '../../helpers/account-selector-helper';\r\nimport { getAccountSelectorStyle } from './styles';\r\n\r\nexport function AccountSelectorCallout(props) {\r\n const {\r\n getSelectedScope, reportSchema, target, onApply, onDismiss, searchHistorySelectorOptions: searchHistorySelectorOptionsFromProps,\r\n } = props;\r\n const classes = useDefaultStyles(getAccountSelectorStyle);\r\n const { scope } = useContext(ScopeContext);\r\n const i18n = useContext(I18nContext);\r\n const history = useReportsHistory();\r\n\r\n function onAccountSelectedChange(selected, additionalInfo) {\r\n let newSelected = { ...selected };\r\n if (shouldShowUserScopeInput(reportSchema.ScopeFilterLevel)) {\r\n delete newSelected.allSelected;\r\n } else {\r\n // Not scope input condition\r\n // set to default value(which should be all selected) if not select anything\r\n // eslint-disable-next-line no-lonely-if\r\n if (newSelected.CustomerScopes.length === 0 &&\r\n newSelected.AccountIds.length === 0 &&\r\n newSelected.CampaignReportScopes.length === 0) {\r\n newSelected = getDefaultMultiAccountSelectorInfo(reportSchema, history);\r\n }\r\n }\r\n onApply(newSelected, additionalInfo);\r\n }\r\n\r\n function onUserScopeInputChange(newUserScope) {\r\n const newAccountSelectedInfo = convertUserIdToScopeSelector(newUserScope);\r\n onAccountSelectedChange(newAccountSelectedInfo);\r\n }\r\n\r\n const isMultipleAccountSelectorShown = shouldShowSelector(reportSchema.ScopeFilterLevel, scope);\r\n const isUserScopeInputShown = shouldShowUserScopeInput(reportSchema.ScopeFilterLevel);\r\n\r\n return (\r\n \r\n {isMultipleAccountSelectorShown &&\r\n \r\n }\r\n {isUserScopeInputShown &&\r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nAccountSelectorCallout.propTypes = {\r\n target: PropTypes.string.isRequired,\r\n getSelectedScope: PropTypes.func.isRequired,\r\n reportSchema: PropTypes.shape({}).isRequired,\r\n onApply: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n searchHistorySelectorOptions: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n};\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Button } from '@bingads-webui-react/primitive';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { AccountSelectorCallout } from './account-selector-callout';\r\nimport { getAccountSelectorStyle } from './styles';\r\n\r\nexport function AccountSelector(props) {\r\n const {\r\n updateSearchHistorySelectorOptions,\r\n updateSelected,\r\n getSelectedScope,\r\n description,\r\n reportSchema,\r\n searchHistorySelectorOptions: searchHistorySelectorOptionsFromProps,\r\n } = props;\r\n const [isCalloutVisible, setIsCalloutVisible] = useState(false);\r\n const classes = useDefaultStyles(getAccountSelectorStyle);\r\n\r\n function toggleIsCalloutVisiable() {\r\n setIsCalloutVisible(!isCalloutVisible);\r\n }\r\n\r\n function handleApply(selected, additionalInfo) {\r\n toggleIsCalloutVisiable();\r\n updateSelected(selected);\r\n updateSearchHistorySelectorOptions(additionalInfo.searchHistorySelectorOptions);\r\n }\r\n\r\n function onAccountSelectorButtonClick() {\r\n toggleIsCalloutVisiable();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n {isCalloutVisible &&\r\n { setIsCalloutVisible(false); }}\r\n searchHistorySelectorOptions={searchHistorySelectorOptionsFromProps}\r\n />\r\n }\r\n \r\n );\r\n}\r\n\r\nAccountSelector.propTypes = {\r\n updateSearchHistorySelectorOptions: PropTypes.func.isRequired,\r\n updateSelected: PropTypes.func.isRequired,\r\n getSelectedScope: PropTypes.func.isRequired,\r\n description: PropTypes.string.isRequired,\r\n reportSchema: PropTypes.shape({}).isRequired,\r\n searchHistorySelectorOptions: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport React, { useContext, useState } from 'react';\r\nimport { SelectionMode } from '@fluentui/react';\r\nimport { InsertionOrderSelector } from '@bingads-webui-campaign/reports-v4-component';\r\nimport { RestrictionColumnSets } from '@bingads-webui-campaign/reports-v4-schema';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { ToolbarContainer } from '@bingads-webui-campaign-react/toolbar-container';\r\nimport { ConditionalFormatWrapper } from '@bingads-webui-campaign/conditional-formatting';\r\nimport { CampaignShimmeredDetailsList } from '@bingads-webui-grid/campaign-details-list';\r\nimport { useReportsHistory } from '@bingads-webui-campaign/reports-v4-history';\r\nimport { getToolbarEditor } from '@bingads-webui-campaign-react/toolbar-plugin';\r\nimport { getDefaultReportsGridToolbarConfig } from './toolbar-config';\r\nimport { FilterViewManagerWrapper } from './filter';\r\nimport { AccountSelector } from './account-selector';\r\nimport { getScopeSelectorText } from '../helpers/account-selector-helper';\r\n\r\nconst { ConditionalFormattingRestrictionSets } = RestrictionColumnSets;\r\n\r\nconst ReportGrid = (props) => {\r\n const {\r\n columns, items, reportSchema, onFilterChange, filters, onAccountSelectorChange, accountSelectorInfo, pager,\r\n onPageChange, onPageSizeChange, onDownload, onSort, conditionalFormats, onConditionalFormatsChange, sortedColumn,\r\n searchHistorySelectorOptions, onSearchHistorySelectorOptionsChange, perfMarker, actionPerfMarker, shouldHideThisFunctionality,\r\n onViewItemChange, selectedViewItem, onInsertionOrderSelectorChange, insertionSelectorInfo, hidePagination, groups, groupProps,\r\n isSearchInsightReportGridModal,\r\n } = props;\r\n\r\n const i18n = useContext(I18nContext);\r\n const { scope } = useContext(ScopeContext);\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const [forceHideToolbar, setForceHideToolbar] = useState(false);\r\n const history = useReportsHistory();\r\n const showGroupGrid = !columns.some(column => column.key === 'SearchQuery') && isSearchInsightReportGridModal;\r\n const isAccountScope = scope.location.search.indexOf('aid') >= 0;\r\n\r\n // eslint-disable-next-line no-undef\r\n const toolbarConfig = getDefaultReportsGridToolbarConfig({\r\n reportSchema,\r\n onDownload,\r\n scope,\r\n i18n,\r\n permissions,\r\n onViewItemChange,\r\n selectedViewItem,\r\n });\r\n\r\n const resetToolbarVisibility = ({ forceHideToolbar: forceHideToolbarPara }) => {\r\n setForceHideToolbar(forceHideToolbarPara);\r\n };\r\n\r\n const toolbarEditor = getToolbarEditor({\r\n toolbarConfig: {\r\n toolbarSelectedConfig: toolbarConfig,\r\n toolbarUnselectedConfig: toolbarConfig,\r\n },\r\n updateToolbar: undefined,\r\n overrideWith: undefined,\r\n });\r\n\r\n toolbarEditor.update({\r\n id: 'account-selector-toolbar-item',\r\n content: {\r\n onAccountSelectorChange(selected);\r\n }}\r\n searchHistorySelectorOptions={searchHistorySelectorOptions}\r\n updateSearchHistorySelectorOptions={(newSearchHistorySelectorOptions) => {\r\n onSearchHistorySelectorOptionsChange(newSearchHistorySelectorOptions);\r\n }}\r\n getSelectedScope={() => accountSelectorInfo}\r\n description={getScopeSelectorText({\r\n i18n, history, reportSchema, scopeSelectorInfo: accountSelectorInfo,\r\n })}\r\n reportSchema={reportSchema}\r\n />,\r\n });\r\n\r\n toolbarEditor.update({\r\n id: 'insertion-order-selector-toolbar-item',\r\n content: {\r\n onInsertionOrderSelectorChange(selected);\r\n }}\r\n selectedInsertionOrders={insertionSelectorInfo}\r\n />,\r\n });\r\n\r\n function ToolbarContainerWrapper() {\r\n return (\r\n { }}\r\n selectionCount={10}\r\n />\r\n );\r\n }\r\n\r\n function getSelectedStatisticsColumns() {\r\n if (!columns.length || !reportSchema) return [];\r\n const restrictedColumns = ConditionalFormattingRestrictionSets[reportSchema.ReportType] || [];\r\n const statisticsCategories = reportSchema.Columns && reportSchema.Columns.categories ? reportSchema.Columns.categories.find(item => item.type === 'MetricColumns') : {};\r\n if (!statisticsCategories || !statisticsCategories.options) return [];\r\n const statisticsCategoriesOptions = statisticsCategories.options;\r\n const StatisticsSet = {};\r\n statisticsCategoriesOptions.forEach((entry) => {\r\n StatisticsSet[entry.key] = entry.type;\r\n });\r\n const selectedStatisticsColumns = [];\r\n columns.forEach((item) => {\r\n if (StatisticsSet[item.className] && !_.contains(restrictedColumns, item.className)) {\r\n selectedStatisticsColumns.push({ type: StatisticsSet[item.className], ...item });\r\n }\r\n });\r\n\r\n return selectedStatisticsColumns;\r\n }\r\n\r\n const toolbar = (\r\n \r\n {ToolbarContainerWrapper()}\r\n {!shouldHideThisFunctionality &&\r\n }\r\n \r\n \r\n );\r\n\r\n const searchCategoryGrid = (\r\n onSort(column)}\r\n sortedColumn={sortedColumn}\r\n freezingColumnCount={1}\r\n didUpdate={(prev) => {\r\n if (prev.enableShimmer && items) {\r\n perfMarker.done();\r\n if (actionPerfMarker) {\r\n actionPerfMarker.done();\r\n }\r\n }\r\n }}\r\n pager={!hidePagination && {\r\n ...pager,\r\n onPageChange,\r\n onPageSizeChange,\r\n }}\r\n isSortedDescendingByDefault={false}\r\n isGridScrollable\r\n groups={groups}\r\n groupProps={groupProps}\r\n />\r\n );\r\n\r\n const commonReportGrid = (\r\n onSort(column)}\r\n sortedColumn={sortedColumn}\r\n freezingColumnCount={1}\r\n didUpdate={(prev) => {\r\n if (prev.enableShimmer && items) {\r\n perfMarker.done();\r\n if (actionPerfMarker) {\r\n actionPerfMarker.done();\r\n }\r\n }\r\n }}\r\n pager={!hidePagination && {\r\n ...pager,\r\n onPageChange,\r\n onPageSizeChange,\r\n }}\r\n isSortedDescendingByDefault={false}\r\n isGridScrollable\r\n />\r\n );\r\n\r\n return (\r\n \r\n
\r\n {showGroupGrid && searchCategoryGrid}\r\n {!showGroupGrid && commonReportGrid}\r\n
\r\n
\r\n );\r\n};\r\n\r\nReportGrid.propTypes = {\r\n columns: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n sortedColumn: PropTypes.shape({}).isRequired,\r\n items: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n reportSchema: PropTypes.shape({\r\n Columns: PropTypes.arrayOf(PropTypes.shape({\r\n categories: PropTypes.arrayOf(PropTypes.shape({})),\r\n })),\r\n ReportType: PropTypes.string,\r\n }).isRequired,\r\n onFilterChange: PropTypes.func.isRequired,\r\n filters: PropTypes.shape({}).isRequired,\r\n conditionalFormats: PropTypes.shape({}).isRequired,\r\n onAccountSelectorChange: PropTypes.func.isRequired,\r\n searchHistorySelectorOptions: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\r\n onSearchHistorySelectorOptionsChange: PropTypes.func.isRequired,\r\n accountSelectorInfo: PropTypes.shape({}).isRequired,\r\n pager: PropTypes.shape({}).isRequired,\r\n onPageChange: PropTypes.func.isRequired,\r\n onPageSizeChange: PropTypes.func.isRequired,\r\n onDownload: PropTypes.func.isRequired,\r\n onSort: PropTypes.func.isRequired,\r\n onConditionalFormatsChange: PropTypes.func.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n actionPerfMarker: perfMarkerPropTypes.isRequired,\r\n shouldHideThisFunctionality: PropTypes.bool.isRequired,\r\n onViewItemChange: PropTypes.func,\r\n selectedViewItem: PropTypes.string,\r\n onInsertionOrderSelectorChange: PropTypes.func,\r\n insertionSelectorInfo: PropTypes.arrayOf(PropTypes.shape({})),\r\n hidePagination: PropTypes.bool,\r\n groups: PropTypes.arrayOf(PropTypes.shape({})),\r\n groupProps: PropTypes.shape({}),\r\n isSearchInsightReportGridModal: PropTypes.bool,\r\n};\r\n\r\nReportGrid.defaultProps = {\r\n onViewItemChange: _.noop,\r\n selectedViewItem: undefined,\r\n onInsertionOrderSelectorChange: _.noop,\r\n insertionSelectorInfo: [],\r\n hidePagination: false,\r\n groups: undefined,\r\n groupProps: undefined,\r\n isSearchInsightReportGridModal: false,\r\n};\r\n\r\nexport { ReportGrid };\r\n","import { getTheme, mergeStyleSets, FontWeights } from '@fluentui/react';\r\nimport { helpbuttonStyle, convertToLocalStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst theme = getTheme();\r\nexport const contentStyles = mergeStyleSets({\r\n container: {\r\n display: 'flex',\r\n flexFlow: 'column nowrap',\r\n alignItems: 'stretch',\r\n borderRadius: '8px',\r\n maxHeight: '54vh',\r\n maxWidth: '54vw',\r\n },\r\n header: [\r\n theme.fonts.xLargePlus,\r\n {\r\n flex: '1 1 auto',\r\n color: theme.palette.neutralPrimary,\r\n display: 'flex',\r\n alignItems: 'center',\r\n fontWeight: FontWeights.semibold,\r\n padding: '12px 12px 14px 24px',\r\n },\r\n ],\r\n heading: {\r\n color: theme.palette.neutralPrimary,\r\n fontWeight: FontWeights.semibold,\r\n fontSize: 'inherit',\r\n margin: '0',\r\n },\r\n body: {\r\n flex: '4 4 auto',\r\n padding: '0 24px 24px 24px',\r\n overflowY: 'hidden',\r\n '&& .ms-DetailsHeader': {\r\n overflowX: 'auto',\r\n overflowY: 'hidden',\r\n '-ms-overflow-style': 'none',\r\n scrollbarWidth: 'none',\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n '& .ms-DetailsHeader-cellName': {\r\n ...convertToLocalStyle(helpbuttonStyle({})),\r\n },\r\n },\r\n '&& .ms-DetailsList-contentWrapper': {\r\n overflowX: 'auto',\r\n '-ms-overflow-style': 'none',\r\n scrollbarWidth: 'none',\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n },\r\n '&& .scroll-bar-child:first-child': {\r\n position: 'inherit',\r\n },\r\n selectors: {\r\n p: { margin: '14px 0' },\r\n 'p:first-child': { marginTop: 0 },\r\n 'p:last-child': { marginBottom: 0 },\r\n },\r\n '& .conditional-formatting-cell': {\r\n padding: '12px 8px 12px 12px', margin: '-11px -8px -11px -12px',\r\n },\r\n },\r\n noDataplaceHolder: {\r\n color: '#605e5c',\r\n padding: '3px 0 20px 30px',\r\n fontSize: '26px',\r\n lineHeight: '36px',\r\n },\r\n});\r\n\r\nexport const iconButtonStyles = {\r\n root: {\r\n color: theme.palette.neutralPrimary,\r\n marginLeft: 'auto',\r\n marginTop: '4px',\r\n marginRight: '2px',\r\n },\r\n rootHovered: {\r\n color: theme.palette.neutralDark,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { Modal, IconButton, SelectionMode } from '@fluentui/react';\r\nimport { CampaignShimmeredDetailsList } from '@bingads-webui-grid/campaign-details-list';\r\n\r\nimport { iconButtonStyles, contentStyles } from './report-grid-modal-style';\r\n\r\nexport const ReportGridModal = (props) => {\r\n const {\r\n isReportModalOpen, hideModal, i18n, items, columns, onSort, sortedColumn, pager, onPageChange, onPageSizeChange, isLoadedAndNoDataFound\r\n } = props;\r\n\r\n function renderPlaceholderModal() {\r\n return (\r\n
\r\n {i18n.getString(_TL_('No URLs match selected criteria.'))}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n
\r\n

\r\n {i18n.getString(_TL_('Other URLs'))}\r\n

\r\n \r\n
\r\n
\r\n onSort(column)}\r\n sortedColumn={sortedColumn}\r\n freezingColumnCount={1}\r\n pager={{\r\n ...pager,\r\n onPageChange,\r\n onPageSizeChange,\r\n }}\r\n isSortedDescendingByDefault={false}\r\n isGridScrollable\r\n />\r\n
\r\n {isLoadedAndNoDataFound && renderPlaceholderModal()}\r\n \r\n );\r\n};\r\n","// eslint-disable-next-line\r\nimport _bingads_webui_static_legacy_utils_date from '@bingads-webui-static-legacy/utils/date';\r\n// eslint-disable-next-line\r\nconst { dateUtil } = _bingads_webui_static_legacy_utils_date;\r\n\r\nconst frequency = {\r\n DAILY: 0,\r\n WEEKLY: 1,\r\n MONTHLY: 2,\r\n ONCE: 3,\r\n HOURLY: 4,\r\n};\r\n\r\nexport function getFrequency(Cron, cronFormatter) {\r\n const i18n = window.globalLegacyI18n.get('module/extension/requirejs/i18n!global');\r\n let ret = '';\r\n const model = cronFormatter.parse(Cron);\r\n if (model) {\r\n const hourString = i18n.getString(`DailyOptions_${model.hour}`);\r\n let date;\r\n switch (model.frequency) {\r\n case frequency.ONCE:\r\n ret = i18n.getString('Frequency_WeeklyTemplate').replace('{0}', i18n.getString('FrequencyGrain_Once'));\r\n date = new Date(model.year, model.month - 1, model.dayOfMonth, 0, 0, 0, 0);\r\n ret = ret.replace('{1}', dateUtil.format(date));\r\n ret = ret.replace('{2}', hourString);\r\n break;\r\n case frequency.MONTHLY:\r\n ret = i18n.getString('Frequency_MonthlyTemplate').replace('{0}', i18n.getString('FrequencyGrain_Monthly'));\r\n ret = ret.replace('{1}', model.dayOfMonth);\r\n ret = ret.replace('{2}', hourString);\r\n break;\r\n case frequency.WEEKLY:\r\n ret = i18n.getString('Frequency_WeeklyTemplate').replace('{0}', i18n.getString('FrequencyGrain_Weekly'));\r\n ret = ret.replace('{1}', i18n.getString(`WeeklyOptions_${model.dayOfWeek}`));\r\n ret = ret.replace('{2}', hourString);\r\n break;\r\n case frequency.DAILY:\r\n ret = i18n.getString('Frequency_DailyTemplate').replace('{0}', i18n.getString('FrequencyGrain_Daily'));\r\n ret = ret.replace('{1}', hourString);\r\n break;\r\n case frequency.HOURLY:\r\n ret = i18n.getString('FrequencyGrain_Hourly');\r\n break;\r\n default:\r\n throw new Error();\r\n }\r\n }\r\n // if (rule.TimeZoneId > 0) {\r\n // ret += '
';\r\n // ret += i18n.getString(`TimeZoneId_${rule.TimeZoneId}`);\r\n // }\r\n // if (rule.Selection && rule.Selection.DateRange && rule.Selection.DateRange.DateRangePreset) {\r\n // ret += '

';\r\n // ret += i18n.getString('DataDateRange_Template').replace('{0}', i18n.getString(`DataDateRangeOptions_${rule.Selection.DateRange.DateRangePreset}`).toLowerCase());\r\n // }\r\n return ret;\r\n}\r\n","/* eslint-disable react/prop-types */\r\nimport React, { useContext } from 'react';\r\nimport { Stack, mergeStyles } from '@fluentui/react';\r\nimport { ScheduleFrequencyIconEditor } from '@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { CronFormatter } from '@bingads-webui/cron-formatter';\r\nimport { LegacyI18n } from '@bingads-webui-campaign/report-shared';\r\nimport { getFrequency } from './cronConverter';\r\nimport { isReportShared as getIsReportShared } from '../../helpers/is-report-shared';\r\n\r\nconst triviaClassName = mergeStyles({\r\n paddingLeft: '8px',\r\n paddingRight: '8px',\r\n});\r\n\r\nconst schedulerTextClassName = mergeStyles({\r\n marginRight: 4,\r\n});\r\n\r\nconst labelClassName = mergeStyles({\r\n color: '#605E5C',\r\n fontSize: '12px',\r\n});\r\n\r\n\r\nexport function Trivia(props) {\r\n const {\r\n onSchedulerSaveClick,\r\n schedulerOptions,\r\n typeOfReport,\r\n } = props;\r\n const i18n = useContext(I18nContext);\r\n const legacyI18n = useContext(LegacyI18n);\r\n const cronFormatter = new CronFormatter({ i18n: legacyI18n });\r\n\r\n const displayFrequency = (() => {\r\n if (schedulerOptions.Cron && schedulerOptions.Cron !== '') {\r\n return getFrequency(schedulerOptions.Cron, cronFormatter);\r\n }\r\n return i18n.getString(_TL_('None'));\r\n })();\r\n\r\n const isReportShared = getIsReportShared(typeOfReport);\r\n\r\n return (\r\n \r\n
\r\n
\r\n {i18n.getString(_TL_('Scheduling frequency'))}\r\n
\r\n {displayFrequency}\r\n \r\n
\r\n
\r\n
\r\n {i18n.getString(_TL_('Shared'))}\r\n
\r\n \r\n {\r\n isReportShared ?\r\n i18n.getString(_TL_('Yes')) :\r\n i18n.getString(_TL_('No'))\r\n }\r\n \r\n
\r\n
\r\n );\r\n}\r\n","export function isReportShared(taskType) {\r\n // handle normal user\r\n switch (taskType) {\r\n case 'ReportUITemplate':\r\n case 'ReportUITemplateTest':\r\n return false;\r\n case 'ReportUICustomerTemplate':\r\n case 'ReportUICustomerTemplateTest':\r\n case 'ReportUIAccountTemplate':\r\n case 'ReportUIAccountTemplateTest':\r\n case 'ReportUIUserTemplate':\r\n case 'ReportUIUserTemplateTest':\r\n return true;\r\n default:\r\n throw new Error(`isReportShared: unhandled report type ${taskType}`);\r\n }\r\n}\r\n","/* eslint-disable react/prop-types */\r\nimport React, { useContext } from 'react';\r\nimport { Link } from '@bingads-webui-campaign-react/router';\r\nimport { Divider, SummaryBar } from '@bingads-webui-campaign/reports-v4-summary-bar';\r\nimport IWindow from '@bingads-webui-clientcenter/window-interface';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { FontIcon, IconButton, Stack, TooltipHost } from '@fluentui/react';\r\nimport { blackColorClassName, boldClassName, stackItemCenterStyle } from '../../style';\r\nimport { Trivia } from './trivia';\r\n\r\nexport function ReportsV4SummaryBar(props) {\r\n const {\r\n onSchedulerSaveClick,\r\n schedulerOptions,\r\n reportName,\r\n typeOfReport,\r\n timeTravelOptions,\r\n forceRefreshData,\r\n shouldHideThisFunctionality,\r\n } = props;\r\n\r\n const i18n = useContext(I18nContext);\r\n const refreshText = i18n.getString(_TL_('Refresh'));\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {!shouldHideThisFunctionality &&\r\n }\r\n \r\n {!shouldHideThisFunctionality &&\r\n }\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport function ReportsV4SummaryBarWithOnlyName(props) {\r\n const {\r\n reportName,\r\n } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst myReportsPageHref = '/campaign/vnext/reports-v4/my-reports/customized';\r\nconst defaultReportsPageHref = '/campaign/vnext/reports-v4/default-reports';\r\n\r\nconst homePageHref = '/campaign/vnext/reporting/home';\r\nconst templatePageHref = '/campaign/vnext/reporting/templates';\r\n\r\nexport function BreadcrumbContainer(props) {\r\n const { reportName } = props;\r\n const [, reportAction] = IWindow.location.pathname.match(/\\/(edit|create)/);\r\n const i18n = useContext(I18nContext);\r\n const permissions = useContext(PermissionsContext);\r\n const isNewLandingPage = permissions.dynamic.CustomReports;\r\n\r\n let parentLevel;\r\n let parentHref;\r\n switch (reportAction) {\r\n case 'edit':\r\n parentLevel = isNewLandingPage ? i18n.getString(_TL_('Home')) : i18n.getString('My reports');\r\n parentHref = isNewLandingPage ? homePageHref : `${myReportsPageHref}`;\r\n break;\r\n case 'create':\r\n parentLevel = isNewLandingPage ? i18n.getString(_TL_('Templates')) : i18n.getString('Default reports');\r\n parentHref = isNewLandingPage ? templatePageHref : `${defaultReportsPageHref}`;\r\n break;\r\n default:\r\n throw new Error();\r\n }\r\n\r\n const itemsWithHeading = [\r\n { text: parentLevel, key: 'level-1', href: parentHref },\r\n { text: reportName || 'loading...', key: 'level-2', isCurrentItem: true },\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {itemsWithHeading[0].text}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {itemsWithHeading[1].text}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\n\r\nfunction TimeTravelButtonGroups(props) {\r\n const {\r\n className,\r\n isRedoEnabled, isUndoEnabled,\r\n onRedoClick, onUndoClick,\r\n isResetEnabled,\r\n onResetClick,\r\n } = props;\r\n const i18n = useContext(I18nContext);\r\n\r\n const undoText = i18n.getString(_TL_('Undo'));\r\n const redoText = i18n.getString(_TL_('Redo'));\r\n const resetText = i18n.getString(_TL_('Reset'));\r\n\r\n const calloutProps = { gapSpace: 0 };\r\n const hostStyles = { root: { display: 'inline-block' } };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\n\r\nconst getTimeZoneSelectorStyle = () => ({\r\n reportTimeZoneSelector: { maxWidth: 285 },\r\n});\r\n\r\n\r\nexport const TimeZoneSelector = React.memo(({\r\n timeZoneValue, onChange, i18n, options, id, disabled, ariaLabelledByID,\r\n}) => {\r\n const optionsJsx = _.keys(options).map(key =>\r\n (\r\n \r\n ));\r\n const classes = useDefaultStyles(getTimeZoneSelectorStyle);\r\n\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n});\r\n\r\nTimeZoneSelector.propTypes = {\r\n onChange: PropTypes.func.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n options: PropTypes.objectOf(PropTypes.string.isRequired).isRequired,\r\n id: PropTypes.string.isRequired,\r\n timeZoneValue: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool,\r\n ariaLabelledByID: PropTypes.string,\r\n};\r\n\r\nTimeZoneSelector.defaultProps = {\r\n disabled: false,\r\n ariaLabelledByID: '',\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { Alert } from '@bingads-webui-react/primitive';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nfunction getStyle() {\r\n return {\r\n warning: {\r\n maxWidth: '994px',\r\n \"& div[variant='warning']\": {\r\n 'margin-top': '10px',\r\n 'background-color': '#feeda275',\r\n 'border-color': '#feeda275',\r\n },\r\n },\r\n };\r\n}\r\n\r\n// eslint-disable-next-line\r\nWarning.propTypes = {\r\n messages: PropTypes.objectOf(PropTypes.string).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nfunction Warning({ messages, classes }) {\r\n const compactMessages = _.compact(messages);\r\n\r\n const alerts = _.map(compactMessages, msg => (\r\n \r\n {msg}\r\n \r\n ));\r\n\r\n\r\n return (\r\n
\r\n {alerts}\r\n
\r\n );\r\n}\r\n\r\nconst Wrapped = withDefaultStyles(Warning, getStyle);\r\nexport { Wrapped as Warning };\r\n","import { getTheme, mergeStyleSets, FontWeights } from '@fluentui/react';\r\nimport { helpbuttonStyle, convertToLocalStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst theme = getTheme();\r\nexport const contentStyles = mergeStyleSets({\r\n container: {\r\n display: 'flex',\r\n flexFlow: 'column nowrap',\r\n alignItems: 'stretch',\r\n borderRadius: '8px',\r\n maxHeight: '54vh',\r\n maxWidth: '54vw',\r\n },\r\n header: [\r\n theme.fonts.xLargePlus,\r\n {\r\n flex: '1 1 auto',\r\n color: theme.palette.neutralPrimary,\r\n display: 'flex',\r\n alignItems: 'center',\r\n fontWeight: FontWeights.semibold,\r\n padding: '12px 12px 14px 24px',\r\n },\r\n ],\r\n heading: {\r\n color: theme.palette.neutralPrimary,\r\n fontWeight: FontWeights.semibold,\r\n fontSize: 'inherit',\r\n margin: '0',\r\n },\r\n body: {\r\n flex: '4 4 auto',\r\n padding: '0 24px 24px 24px',\r\n overflowY: 'hidden',\r\n '&& .ms-DetailsHeader': {\r\n overflowX: 'auto',\r\n overflowY: 'hidden',\r\n '-ms-overflow-style': 'none',\r\n scrollbarWidth: 'none',\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n '& .ms-DetailsHeader-cellName': {\r\n ...convertToLocalStyle(helpbuttonStyle({})),\r\n },\r\n },\r\n '&& .ms-DetailsList-contentWrapper': {\r\n overflowX: 'auto',\r\n '-ms-overflow-style': 'none',\r\n scrollbarWidth: 'none',\r\n '&::-webkit-scrollbar': {\r\n display: 'none',\r\n },\r\n },\r\n '&& .scroll-bar-child:first-child': {\r\n position: 'inherit',\r\n },\r\n selectors: {\r\n p: { margin: '14px 0' },\r\n 'p:first-child': { marginTop: 0 },\r\n 'p:last-child': { marginBottom: 0 },\r\n },\r\n '& .conditional-formatting-cell': {\r\n padding: '12px 8px 12px 12px', margin: '-11px -8px -11px -12px',\r\n },\r\n },\r\n noDataplaceHolder: {\r\n color: '#605e5c',\r\n padding: '3px 0 20px 30px',\r\n fontSize: '26px',\r\n lineHeight: '36px',\r\n },\r\n});\r\n\r\nexport const iconButtonStyles = {\r\n root: {\r\n color: theme.palette.neutralPrimary,\r\n marginLeft: 'auto',\r\n marginTop: '4px',\r\n marginRight: '2px',\r\n },\r\n rootHovered: {\r\n color: theme.palette.neutralDark,\r\n },\r\n};\r\n","import React from 'react';\r\nimport { CampaignShimmeredDetailsList } from '@bingads-webui-grid/campaign-details-list';\r\nimport { SelectionMode, Panel, PanelType } from '@fluentui/react';\r\n\r\nimport { iconButtonStyles, contentStyles } from './report-grid-modal-style';\r\n\r\nexport const SidePanelReportGrid = (props) => {\r\n const {\r\n isSearchInsightReportOpen, hideSidePanel, i18n, items, columns, onSort, sortedColumn, pager, onPageChange, onPageSizeChange, isLoadedAndNoDataFound, searchCategoryTitle\r\n } = props;\r\n\r\n function renderSidePanelReportGrid() {\r\n return (\r\n
\r\n {i18n.getString(_TL_('No Search Term match selected criteria.'))}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n \r\n
\r\n\r\n
\r\n {i18n.getString(_TL_('Search Terms of {{searchCategoryTitle}}'), { searchCategoryTitle })}\r\n
\r\n column.key !== 'SearchCategory')}\r\n selectionMode={SelectionMode.none}\r\n enableShimmer={!items}\r\n onSort={column => onSort(column)}\r\n sortedColumn={sortedColumn}\r\n freezingColumnCount={1}\r\n pager={{\r\n ...pager,\r\n onPageChange,\r\n onPageSizeChange,\r\n }}\r\n isSortedDescendingByDefault={false}\r\n isGridScrollable\r\n />\r\n
\r\n {isLoadedAndNoDataFound && renderSidePanelReportGrid()}\r\n \r\n );\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport function getSearchTermDetails(reportModalDataItems, i18n, modalTotalCount) {\r\n let detailStr = _.map(reportModalDataItems.slice(0, 20), value => value.SearchQuery && value.SearchQuery.Value).join(', ');\r\n detailStr = detailStr.replace(/,\\s*$/, \"\");\r\n if (modalTotalCount > 20) {\r\n detailStr = i18n.getString(_TL_('{{detailStr}} + more'), { detailStr });\r\n }\r\n return detailStr;\r\n}\r\n\r\nexport function addSearchCategoryFilter(oldFilter, searchCategory) {\r\n const filterBesidesAnd = [];\r\n _.chain(oldFilter).omit('$and').forEach((val, key) => { filterBesidesAnd.push({ [key]: val }); });\r\n return {\r\n $and: _.union(oldFilter.$and, filterBesidesAnd, [{ SearchCategory: { $eq: searchCategory } }]),\r\n };\r\n}\r\n\r\nexport function showTermItem(group, setReportModalParam, reportParam) {\r\n setReportModalParam({\r\n ...reportParam,\r\n GridPagination: {\r\n RequestedPage: 1,\r\n RowsPerPage: 20,\r\n },\r\n columns: _.union(['SearchQuery'], reportParam.columns),\r\n SearchCategory: group.SearchCategory.Value,\r\n ParentIndex: group.key,\r\n filters: addSearchCategoryFilter(reportParam.filters, group.SearchCategory.Value),\r\n });\r\n}\r\n\r\nexport function getGroupProps(renderGroupHeader, onToggleCollapse) {\r\n return {\r\n showEmptyGroups: true,\r\n onRenderHeader: renderGroupHeader,\r\n onToggleCollapseAll: () => _.noop,\r\n isAllGroupsCollapsed: true,\r\n headerProps: { onToggleCollapse },\r\n isCollapsedGroupSelectVisible: false,\r\n };\r\n}\r\n","/* eslint-disable react/prop-types */\r\nimport React, { useContext, useEffect, useState } from 'react';\r\nimport _ from 'underscore';\r\nimport classNames from 'classnames';\r\nimport { DisclaimerBanner, LearnMoreLink } from '@bingads-webui-campaign-react/help';\r\nimport { ReportsV4ColumnChooser, convertColumnsToOldUIReportAggregation, filterCategories, getRejectedColumns } from '@bingads-webui-campaign/reports-v4-column-chooser';\r\nimport { ViewItem, useInsertionOrderData } from '@bingads-webui-campaign/reports-v4-component';\r\nimport { ReportsV4Footer } from '@bingads-webui-campaign/reports-v4-footer';\r\nimport { useReportsHistory } from '@bingads-webui-campaign/reports-v4-history';\r\nimport { defaultSchedule } from '@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { timeZones } from '@bingads-webui/timezone-details';\r\nimport { MessageBar, Separator, Stack, DetailsRow, IconButton, GroupHeader } from '@fluentui/react';\r\n\r\nimport { buildColumns } from '../helpers/grid-helper';\r\nimport { getColumnChooserSelectedKey, getColumnsByView, getInitialInsertionOrderSelectorItems, getRejectedColumnsByView, getSortedColumnByView, isInsertionOrderMonthlyView, isInsertionOrderReport } from '../helpers/insertion-order-helper';\r\nimport { bindOnRenderRowsForInsertionOrderReport } from '../helpers/insertion-order-column-helper';\r\nimport { useWarnings } from '../helpers/use-warnings';\r\nimport { iconClassNames } from '../style';\r\nimport { collapsedRowApiFormat } from './converters/convert-collapsed-rows';\r\nimport { DatePicker } from './date-picker';\r\nimport { tryGetUpdatedTimeRange } from './date-picker/date-picker-utils';\r\nimport { NameEditor } from './name-editor';\r\nimport { NavigateDialog } from './navigate-dialog';\r\nimport { ReportGrid } from './report-grid';\r\nimport { ReportGridModal } from './report-grid-modal/index';\r\nimport { ReportsV4SummaryBar } from './summary-bar';\r\nimport { TimeZoneSelector } from './timezone-selector/timezone-selector';\r\nimport { Warning } from './warning';\r\nimport { SidePanelReportGrid } from './side-panel-report-grid-modal';\r\nimport { getSearchTermDetails, showTermItem, getGroupProps } from '../helpers/search-category-helper';\r\n\r\nexport function getDetailListColumns(reportParam, reportSchema, i18n, permissions, isAccountScope) {\r\n if (!reportParam || !reportSchema) {\r\n return [];\r\n }\r\n const customizeRenderParams = {\r\n reportParam,\r\n permissions,\r\n bindOnRenderRows: [bindOnRenderRowsForInsertionOrderReport],\r\n isAccountScope,\r\n };\r\n const newColumns = buildColumns(reportParam.columns, reportSchema.Columns, reportParam.conditionalFormats, i18n, customizeRenderParams);\r\n return newColumns;\r\n}\r\n\r\nexport function PreviewPageImplForCommon(props) {\r\n const {\r\n classes,\r\n reportAction,\r\n reportId,\r\n reportSchema,\r\n reportParam,\r\n setReportParam,\r\n savedReportParam,\r\n reportDataItems,\r\n reportModalParam,\r\n setReportModalParam,\r\n reportModalDataItems,\r\n modalTotalCount,\r\n totalCount,\r\n onSave,\r\n onSaveAs,\r\n onDownload,\r\n timeTravelHistory,\r\n perfMarker,\r\n actionPerfMarker,\r\n ctrLogger,\r\n placeHolderError,\r\n forceRefreshData,\r\n categoryGroup,\r\n setCategoryGroup,\r\n parentIndex,\r\n } = props;\r\n\r\n if (!reportSchema) {\r\n throw new Error('Missing reportSchema!');\r\n }\r\n\r\n if (!reportParam) {\r\n throw new Error('Missing reportParam!');\r\n }\r\n\r\n const { scope } = useContext(ScopeContext);\r\n const i18n = useContext(I18nContext);\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const [warnings, patchWarnings] = useWarnings();\r\n const history = useReportsHistory();\r\n const { query } = history;\r\n const { insertionOrderItems } = useInsertionOrderData({\r\n i18n,\r\n extraPredicate: reportParam.insertionOrderSelectorValue ? `{\"Field\":\"InsertionOrderId\",\"Operator\":3,\"Values\":\"${reportParam.insertionOrderSelectorValue.join(',')}\"}` : undefined,\r\n });\r\n\r\n const [disableNavigateDialogOnce, setDisableNavigateDialogOnce] = useState(false);\r\n const [searchHistorySelectorOptions, setSearchHistorySelectorOptions] = useState([]);\r\n const [dimensionBannerVisible, setDimensionBannerVisible] = useState(query.isDrprecated === 'true');\r\n const [selectedInsertionOrderViewItem, setSelectedInsertionOrderViewItem] = useState(reportParam.insertionOrderViewType || ViewItem.Monthly);\r\n const [insertionOrderSelected, setInsertionOrderSelected] = useState([]);\r\n const [, setDetailStr] = useState('');\r\n\r\n const isInsertionOrderReportEnabled = isInsertionOrderReport({ reportType: reportSchema.ReportType, permissions });\r\n\r\n if (query.isDrprecated || query.ioid || query.entrypoint) {\r\n if (isInsertionOrderReportEnabled) {\r\n ctrLogger.click({ reportType: reportSchema.ReportType, target: 'entrypoint', extraData: { entrypoint: query.entrypoint, ioid: query.ioid } });\r\n }\r\n delete query.isDrprecated;\r\n delete query.ioid;\r\n delete query.entrypoint;\r\n const search = new URLSearchParams(query);\r\n window.history.replaceState(null, null, `${window.location.pathname}?${search}`);\r\n }\r\n\r\n const isGenreReport = permissions.dynamic.GenreTargets && reportSchema.ReportType === 'GenrePerformanceReport';\r\n\r\n useEffect(() => {\r\n if (isInsertionOrderReportEnabled\r\n && !_.isEmpty(insertionOrderItems)\r\n && _.isEmpty(insertionOrderSelected)) {\r\n const initialInsertionOrderSelected = getInitialInsertionOrderSelectorItems({\r\n allInsertionOrders: insertionOrderItems,\r\n insertionOrderIds: reportParam.insertionOrderSelectorValue,\r\n });\r\n if (!_.isEmpty(initialInsertionOrderSelected)) {\r\n setInsertionOrderSelected(insertionOrderItems);\r\n }\r\n }\r\n }, [insertionOrderItems, reportParam.insertionOrderSelectorValue, reportSchema.ReportType, permissions, reportAction, insertionOrderSelected, isInsertionOrderReportEnabled]);\r\n\r\n useEffect(() => {\r\n const unlisten = history.listen((location) => {\r\n // location is an object like window.location\r\n if (!location.pathname.includes('reports-v4') && !reportDataItems) {\r\n ctrLogger.click({ target: 'LeavePageBeforeLoaded', extraData: { reportParam } });\r\n unlisten();\r\n }\r\n });\r\n window.addEventListener('beforeunload', () => {\r\n if (!reportDataItems) {\r\n ctrLogger.click({ target: 'LeavePageBeforeLoaded', extraData: { reportParam } });\r\n }\r\n });\r\n return unlisten;\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [reportDataItems, reportParam]);\r\n\r\n // #region column-chooser\r\n const [isColumnChooserOpened, setIsColumnChooserOpened] = useState(false);\r\n function toggleIsColumnChooserOpened() {\r\n setIsColumnChooserOpened(isOpened => !isOpened);\r\n }\r\n\r\n function onColumnChooserSaveClick(columns) {\r\n toggleIsColumnChooserOpened();\r\n // Not only update columns, but all things calcuated based on columns\r\n // Update TimeGrain:\r\n const newTimeRange = tryGetUpdatedTimeRange({\r\n newTimeGrain: convertColumnsToOldUIReportAggregation(columns),\r\n prevTimeGrain: convertColumnsToOldUIReportAggregation(reportParam.columns),\r\n prevTimeRange: reportParam.dateRange,\r\n reportSchema,\r\n });\r\n\r\n const isAccountScope = scope.location.search.indexOf('aid') >= 0;\r\n const restrictedColumnSet = getRejectedColumnsByView({\r\n reportType: reportSchema.ReportType,\r\n restrictedColumnSets: reportSchema.Columns.displayRestricted,\r\n permissions,\r\n viewType: undefined, // No need to add Date column of another view type\r\n isCustomerScope: !isAccountScope,\r\n });\r\n const newColumns = [...columns];\r\n restrictedColumnSet.forEach((c) => {\r\n if (!_.include(columns, c)) {\r\n newColumns.push(c);\r\n }\r\n });\r\n\r\n const newConditionalFormats = _.pick(reportParam.conditionalFormats, newColumns);\r\n const addedColumns = _.difference(newColumns, reportParam.columns);\r\n const removedColumns = _.difference(reportParam.columns, newColumns);\r\n const totalColumnChanges = addedColumns.length + removedColumns.length;\r\n\r\n setReportParam({\r\n ...reportParam, columns: newColumns, conditionalFormats: newConditionalFormats, dateRange: newTimeRange,\r\n });\r\n ctrLogger.click({\r\n target: 'ColumnChooser',\r\n extraData: {\r\n columns: newColumns, removedColumns, addedColumns, totalColumnChanges,\r\n },\r\n });\r\n }\r\n\r\n function onColumnChooserCancelClick() {\r\n toggleIsColumnChooserOpened();\r\n }\r\n\r\n function renderColumnChooer() {\r\n let { categories } = reportSchema.Columns;\r\n const isAccountScope = scope.location.search.indexOf('aid') >= 0;\r\n\r\n const rejectedColumns = getRejectedColumns(reportSchema.Columns.piloted, permissions, !isAccountScope, true);\r\n const customizeRejectedColumns = getRejectedColumnsByView({\r\n reportType: reportSchema.ReportType,\r\n restrictedColumnSets: reportSchema.Columns.displayRestricted,\r\n permissions,\r\n viewType: selectedInsertionOrderViewItem,\r\n isCustomerScope: !isAccountScope,\r\n });\r\n customizeRejectedColumns.forEach(column => rejectedColumns.add(column));\r\n categories = filterCategories(categories, { rejectedColumns });\r\n\r\n // This is a classic example of over engineering, premature optimization and lack of static type.\r\n const aggregationExclusion = {};\r\n categories.forEach((categorty) => {\r\n categorty.options.forEach(option =>\r\n option.forbiddenTimeGrains && option.forbiddenTimeGrains.forEach((timeAggregation) => {\r\n if (!aggregationExclusion[timeAggregation]) {\r\n aggregationExclusion[timeAggregation] = [];\r\n }\r\n aggregationExclusion[timeAggregation].push(option.key);\r\n }));\r\n });\r\n\r\n const selectedKeys = getColumnChooserSelectedKey({\r\n reportType: reportSchema.ReportType,\r\n permissions,\r\n columns: reportParam.columns,\r\n rejectedColumns,\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n // #endregion column-chooser\r\n\r\n // #region report-modal\r\n const [isReportModalOpen, setIsReportModalOpen] = useState(false);\r\n const [isSearchInsightReportOpen, setisSearchInsightReportOpen] = useState(false);\r\n const isSearchInsightReportGridModal = permissions && permissions.dynamic && permissions.dynamic.SearchInsightPerformanceReport && (reportSchema.ReportType === 'SearchInsightPerformanceReport');\r\n\r\n // Add an additional condition once ui can know if there is collapsed data from MT\r\n const hasReportGridModal = permissions && permissions.dynamic && permissions.dynamic.CollapsedRow && (reportSchema.ReportType === 'PublisherUsagePerformanceReport');\r\n\r\n function toggleIsReportModalOpen() {\r\n setIsReportModalOpen(isOpened => !isOpened);\r\n }\r\n\r\n useEffect(() => {\r\n function triggerReportModalDataFetch() {\r\n setReportModalParam({\r\n ...reportParam,\r\n GridPagination: {\r\n RequestedPage: 1,\r\n RowsPerPage: 20,\r\n },\r\n CollapsedRow: collapsedRowApiFormat(isReportModalOpen),\r\n });\r\n }\r\n\r\n function addOtherURLsRow() {\r\n const hasOtherUrlsRow = reportDataItems && reportDataItems.length > 0 && reportDataItems[reportDataItems.length - 1].key === 'Other URLs';\r\n if (hasReportGridModal && reportDataItems && !hasOtherUrlsRow) {\r\n reportDataItems.push({\r\n RowId: 0,\r\n key: 'Other URLs',\r\n toggleIsReportModalOpen,\r\n });\r\n }\r\n }\r\n\r\n if (hasReportGridModal) {\r\n addOtherURLsRow();\r\n if (isReportModalOpen) {\r\n triggerReportModalDataFetch();\r\n }\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isReportModalOpen, reportDataItems, reportParam]);\r\n // #endregion report-modal\r\n\r\n function toggleIsSearchReportModalOpen() {\r\n setisSearchInsightReportOpen(isOpened => !isOpened);\r\n }\r\n\r\n function onToggleCollapse(group) {\r\n showTermItem(group, setReportModalParam, reportParam);\r\n\r\n if (categoryGroup && categoryGroup.length > 0) {\r\n categoryGroup.forEach((item) => {\r\n if (item.key !== group.key) {\r\n // eslint-disable-next-line no-param-reassign\r\n item.isCollapsed = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (isSearchInsightReportGridModal && modalTotalCount === 0 && reportModalDataItems &&\r\n reportModalDataItems.length === 0 && !_.isEmpty(reportDataItems) && parentIndex >= 0) {\r\n reportDataItems[parentIndex].SearchTermDetailsStr = 'No data';\r\n setDetailStr('No data');\r\n }\r\n }, ([isSearchInsightReportGridModal, parentIndex, reportModalDataItems]));\r\n\r\n useEffect(() => {\r\n if (isSearchInsightReportGridModal && !_.isEmpty(reportDataItems) && !_.isEmpty(reportModalDataItems)\r\n ) {\r\n const searchCategory = _.first(reportModalDataItems).SearchCategory.Value;\r\n const details = getSearchTermDetails(reportModalDataItems, i18n, modalTotalCount);\r\n reportDataItems.forEach((item) => {\r\n if (item.RowType &&\r\n item.RowType === 'Normal' &&\r\n item.SearchCategory &&\r\n item.SearchCategory.Value === searchCategory) {\r\n // eslint-disable-next-line no-param-reassign\r\n item.SearchTermDetailsStr = details;\r\n }\r\n });\r\n setDetailStr(details);\r\n }\r\n }, ([isSearchInsightReportGridModal, reportModalDataItems]));\r\n\r\n\r\n useEffect(() => {\r\n function buildSearchTermRow() {\r\n const groups = [];\r\n reportDataItems.forEach((item, index) => {\r\n if (item.RowType && item.RowType === 'Normal') {\r\n groups.push({\r\n ...item, startIndex: index, count: 1, level: 0, isCollapsed: true, isParent: true, toggleIsSearchReportModalOpen,\r\n });\r\n }\r\n });\r\n setCategoryGroup(groups);\r\n }\r\n if (isSearchInsightReportGridModal && reportDataItems && reportDataItems.length > 0) {\r\n buildSearchTermRow();\r\n }\r\n }, ([isSearchInsightReportGridModal, reportDataItems, reportParam]));\r\n\r\n const isAccountScope = scope.location.search.indexOf('aid') >= 0;\r\n\r\n const isDirty = (() => {\r\n // if user does not do any changes, `savedReportParam` should be `undefined` and no need to reset.\r\n if (!savedReportParam) {\r\n return false;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { GridPagination, ...filteredSavedReportParam } = savedReportParam;\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const { GridPagination: savedGridPagination, ...filteredReportParam } = reportParam;\r\n return JSON.stringify(filteredSavedReportParam) !== JSON.stringify(filteredReportParam);\r\n })();\r\n\r\n function onUndoClick() {\r\n timeTravelHistory.back();\r\n ctrLogger.click({ target: 'Undo' });\r\n }\r\n\r\n function onRedoClick() {\r\n timeTravelHistory.forward();\r\n ctrLogger.click({ target: 'Redo' });\r\n }\r\n\r\n function onResetClick() {\r\n setReportParam(savedReportParam);\r\n ctrLogger.click({ target: 'Reset' });\r\n }\r\n\r\n async function onSchedulerSaveClick(schedule) {\r\n ctrLogger.click({ target: 'Scheduling', extraData: { reportType: reportParam.reportType, ...schedule } });\r\n const newReportParam = { ...reportParam, Format: schedule.Format, schedule };\r\n if (reportAction === 'edit') {\r\n setReportParam(newReportParam);\r\n await onSave(newReportParam);\r\n } else {\r\n setDisableNavigateDialogOnce(true);\r\n await onSaveAs(newReportParam);\r\n }\r\n }\r\n\r\n function onNameChange(reportName) {\r\n setReportParam({ ...reportParam, reportName });\r\n ctrLogger.click({ target: 'InlineEditName', extraData: { reportType: reportParam.reportType, reportName } });\r\n }\r\n\r\n function onClickSave(...args) {\r\n onSave(...args);\r\n ctrLogger.click({ target: 'Save', extraData: { reportType: reportParam.reportType } });\r\n }\r\n\r\n function onClickSaveAs(reportName) {\r\n setDisableNavigateDialogOnce(true);\r\n onSaveAs({ ...reportParam, reportName });\r\n ctrLogger.click({ target: 'SaveAs', extraData: { reportType: reportParam.reportType, reportName } });\r\n if (isInsertionOrderReportEnabled) {\r\n ctrLogger.click({ target: 'InsertionOrderViewType-SaveAs', extraData: { reportType: reportParam.reportType, viewType: reportParam.insertionOrderViewType } });\r\n }\r\n }\r\n\r\n function onTimeZoneChange({ timeZone }) {\r\n setReportParam({ ...reportParam, timeZone });\r\n ctrLogger.click({ target: 'TimeZoneSelector', extraData: { reportType: reportParam.reportType, timeZone } });\r\n }\r\n\r\n function onDatePickerChange(dateRange) {\r\n setReportParam({ ...reportParam, dateRange });\r\n ctrLogger.click({ target: 'DatePicker', extraData: { reportType: reportParam.reportType, dateRange } });\r\n }\r\n\r\n function onAccountSelectorChange(scopeSelector) {\r\n setReportParam({ ...reportParam, scopeSelector });\r\n ctrLogger.click({ target: 'ScopeSelector', extraData: { reportType: reportParam.reportType, scopeSelector } });\r\n }\r\n\r\n function onFilterChange({ filters }) {\r\n setReportParam({ ...reportParam, filters });\r\n ctrLogger.click({ target: 'Filter', extraData: { reportType: reportParam.reportType, filters } });\r\n }\r\n\r\n function onConditionalFormatsChange(conditionalFormats) {\r\n setReportParam({ ...reportParam, conditionalFormats });\r\n ctrLogger.click({ target: 'ConditionalFormatting', extraData: { reportType: reportParam.reportType, conditionalFormats } });\r\n }\r\n\r\n function onPageChange(pageNumber) {\r\n setReportParam({\r\n ...reportParam,\r\n GridPagination: {\r\n RequestedPage: pageNumber,\r\n RowsPerPage: reportParam.GridPagination.RowsPerPage,\r\n },\r\n });\r\n ctrLogger.click({ target: 'PageNumber', extraData: { reportType: reportParam.reportType, pageNumber } });\r\n }\r\n\r\n function onPageSizeChange(pageSize) {\r\n setReportParam({\r\n ...reportParam,\r\n GridPagination: {\r\n RequestedPage: 1,\r\n RowsPerPage: pageSize,\r\n },\r\n });\r\n ctrLogger.click({ target: 'PageSize', extraData: { reportType: reportParam.reportType, pageSize } });\r\n }\r\n\r\n function onSort(column) {\r\n setReportParam({\r\n ...reportParam,\r\n sortedColumn: column,\r\n });\r\n ctrLogger.click({ target: 'Sort', extraData: { reportType: reportParam.reportType, sortedColumn: column } });\r\n }\r\n\r\n function onModalPageChange(pageNumber) {\r\n setReportModalParam({\r\n ...reportModalParam,\r\n GridPagination: {\r\n RequestedPage: pageNumber,\r\n RowsPerPage: reportModalParam.GridPagination.RowsPerPage,\r\n },\r\n });\r\n ctrLogger.click({ target: 'ModalPageNumber', extraData: { pageNumber } });\r\n }\r\n\r\n function onModalPageSizeChange(pageSize) {\r\n setReportModalParam({\r\n ...reportModalParam,\r\n GridPagination: {\r\n RequestedPage: 1,\r\n RowsPerPage: pageSize,\r\n },\r\n });\r\n ctrLogger.click({ target: 'ModalPageSize', extraData: { pageSize } });\r\n }\r\n\r\n function onModalSort(column) {\r\n // reset the page number to 1 when sorting\r\n setReportModalParam({\r\n ...reportModalParam,\r\n GridPagination: { RequestedPage: 1, RowsPerPage: reportModalParam.GridPagination.RowsPerPage },\r\n sortedColumn: column,\r\n });\r\n ctrLogger.click({ target: 'ModalSort', extraData: { sortedColumn: column } });\r\n }\r\n\r\n function onClickDownload(format) {\r\n onDownload(format, isDirty);\r\n ctrLogger.click({ target: 'Download', extraData: { reportType: reportParam.reportType, format } });\r\n }\r\n\r\n function onColumnChooserOpen() {\r\n toggleIsColumnChooserOpened();\r\n ctrLogger.click({ target: 'ColumnChooserOpened' });\r\n }\r\n\r\n const onInsertionOrderViewItemChange = (viewItem) => {\r\n const oldViewItem = selectedInsertionOrderViewItem;\r\n setSelectedInsertionOrderViewItem(viewItem);\r\n const newColumns = getColumnsByView({ defaultColumns: reportParam.columns, viewType: viewItem });\r\n const newGridPagination = {\r\n RequestedPage: 1,\r\n RowsPerPage: viewItem === ViewItem.Monthly ? 200 : 20,\r\n };\r\n const newSortedColumn = {\r\n key: getSortedColumnByView({ viewType: viewItem }),\r\n isSortedDescending: true,\r\n };\r\n setReportParam({\r\n ...reportParam,\r\n insertionOrderViewType: viewItem,\r\n columns: newColumns,\r\n GridPagination: newGridPagination,\r\n sortedColumn: newSortedColumn,\r\n skipResetPagination: true, // When insertion order view item changes, sortedColumn changes but we don't want to reset pagination.\r\n });\r\n ctrLogger.click({ target: 'InsertionOrderViewItemChange', extraData: { reportType: reportParam.reportType, viewItem, oldViewItem } });\r\n };\r\n\r\n const onInsertionOrderSelectorChange = (selectedInsertionOrders) => {\r\n setInsertionOrderSelected(selectedInsertionOrders);\r\n const insertionOrderIds = _.map(selectedInsertionOrders, item => item.id);\r\n setReportParam({\r\n ...reportParam,\r\n insertionOrderSelectorValue: insertionOrderIds,\r\n });\r\n ctrLogger.click({ target: 'InsertionOrderSelector', extraData: { reportType: reportParam.reportType, insertionOrderIds } });\r\n };\r\n\r\n function renderHeader() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isAccountScope && \r\n }\r\n \r\n {!isGenreReport &&\r\n \r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n function renderDeprecatedReportBanner() {\r\n if (!dimensionBannerVisible) {\r\n return null;\r\n }\r\n return (\r\n setDimensionBannerVisible(false)} dismissButtonAriaLabel=\"Close\">\r\n {i18n.getString(_TL_(\"Don't see your dimensions reports? \"))}\r\n {i18n.getString(_TL_('We’ve enhanced the visual experience for dimension reports. Your saved dimension report now redirects to the corresponding default report.'))}\r\n \r\n );\r\n }\r\n\r\n function renderPlaceholder() {\r\n return (\r\n
\r\n {placeHolderError ? i18n.getString(placeHolderError) : i18n.getString(_TL_(\"We ran this report, but we didn't find any data to show that matches your criteria.\"))}\r\n
\r\n );\r\n }\r\n\r\n function getDesclaimerBannerText(reportType) {\r\n switch (reportType) {\r\n case 'ConversionModelCompareReport':\r\n return i18n.getString(_TL_('Not all metrics are in real time. Data from the last 96 hours might not be included. Also, data prior to December 6th 2022 is not available for this report'));\r\n default:\r\n // if text is empty, the component will use default text, which is good for most report.\r\n return '';\r\n }\r\n }\r\n\r\n function renderGroupHeader(props1) {\r\n return (\r\n
\r\n \r\n \r\n
);\r\n }\r\n\r\n function renderBody() {\r\n // const isLoading = false;\r\n const isLoadedAndNoDataFound = reportDataItems && (reportDataItems.length === 0 || (reportDataItems.length === 1 && reportDataItems[0].key === 'Other URLs'));\r\n const hideGridPagination = isInsertionOrderMonthlyView({\r\n reportType: reportSchema.ReportType,\r\n permissions,\r\n viewType: selectedInsertionOrderViewItem,\r\n });\r\n const GridPagination = reportParam.GridPagination || {};\r\n const gridPaginationInfo = {\r\n pageNumber: GridPagination.RequestedPage || 1,\r\n pageSize: GridPagination.RowsPerPage || 20,\r\n total: totalCount,\r\n };\r\n\r\n const desclaimerBannerText = getDesclaimerBannerText(reportSchema.ReportType);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {(isLoadedAndNoDataFound || placeHolderError) && renderPlaceholder()}\r\n \r\n \r\n {reportSchema.ReportType === 'SearchQueryPerformanceReport' &&\r\n <>\r\n
\r\n \r\n \r\n }\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n\r\n function renderReportGridModal() {\r\n const GridPagination = reportModalParam ? reportModalParam.GridPagination : {};\r\n const sortedColumn = reportModalParam ? reportModalParam.sortedColumn : {};\r\n\r\n const gridPaginationInfo = {\r\n pageNumber: GridPagination.RequestedPage || 1,\r\n pageSize: GridPagination.RowsPerPage || 20,\r\n total: modalTotalCount,\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n function renderSideReportGridModal() {\r\n const GridPagination = reportModalParam ? reportModalParam.GridPagination : {};\r\n const sortedColumn = reportModalParam ? reportModalParam.sortedColumn : {};\r\n const searchCategoryTitle = reportModalParam ? reportModalParam.SearchCategory : '';\r\n\r\n const gridPaginationInfo = {\r\n pageNumber: GridPagination.RequestedPage || 1,\r\n pageSize: GridPagination.RowsPerPage || 20,\r\n total: modalTotalCount,\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n {renderHeader()}\r\n {renderDeprecatedReportBanner()}\r\n {!dimensionBannerVisible && }\r\n {renderBody()}\r\n \r\n
\r\n {\r\n hasReportGridModal && renderReportGridModal()\r\n }\r\n {isSearchInsightReportGridModal && renderSideReportGridModal()}\r\n {\r\n isColumnChooserOpened &&\r\n
\r\n {renderColumnChooer()}\r\n
\r\n }\r\n
\r\n
\r\n );\r\n}\r\n\r\n","/* eslint-disable react/prop-types */\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Separator, Stack } from '@fluentui/react';\r\nimport React, { useContext } from 'react';\r\nimport { timeZones } from '@bingads-webui/timezone-details';\r\nimport { DisclaimerBanner } from '@bingads-webui-campaign-react/help';\r\nimport { getUserIdFromScopeSelector } from '../helpers/account-selector-helper';\r\nimport { ReportsV4SummaryBarWithOnlyName } from './summary-bar';\r\nimport { getStyles } from '../style';\r\nimport { UserScopeInput } from './account-selector/user-scope-input';\r\n\r\n\r\nexport function PreviewPageImplForUserScopeFilterLevel({\r\n onApplyClick,\r\n reportParam,\r\n}) {\r\n const i18n = useContext(I18nContext);\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n {reportParam && reportParam.reportName}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {i18n.getString(_TL_('Please enter a user ID to continue'))}\r\n \r\n
\r\n {i18n.getString(_TL_('What it is: The ID Microsoft Advertising associates with the different users that can view or edit the campaign'))}\r\n
\r\n
\r\n \r\n \r\n {reportParam && }\r\n
\r\n
\r\n );\r\n}\r\n","import { convertColumnsToOldUIReportAggregation } from '@bingads-webui-campaign/reports-v4-column-chooser';\r\nimport { shouldShowSelector, shouldShowUserScopeInput } from '../../helpers/account-selector-helper';\r\nimport { getToday, getFilteredTimeRanges, getMinimumSupportedDay } from '../date-picker/date-picker-utils';\r\n\r\nexport const getDatePickerOptions = ({ reportParam, reportSchema, i18n }) => {\r\n const timeGrain = convertColumnsToOldUIReportAggregation(reportParam.columns);\r\n const { timeZone } = reportParam;\r\n const today = getToday(i18n, timeZone);\r\n const minSupportedDay = getMinimumSupportedDay(reportSchema, timeGrain, today);\r\n return getFilteredTimeRanges(timeGrain, today, minSupportedDay, reportSchema, i18n).filter(item => item.key !== 'Custom');\r\n};\r\n\r\nexport const shouldShowAccountSelect = ({ reportSchema, scope }) => {\r\n const isMultipleAccountSelectorShown = shouldShowSelector(reportSchema.ScopeFilterLevel, scope);\r\n const isUserScopeInputShown = shouldShowUserScopeInput(reportSchema.ScopeFilterLevel);\r\n return isMultipleAccountSelectorShown || isUserScopeInputShown;\r\n};\r\n","import React, { useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { DefaultButton, PrimaryButton, IconButton, ChoiceGroup } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { DisclaimerBanner } from '@bingads-webui-campaign-react/help';\r\nimport { SummaryBar, Divider } from '@bingads-webui-campaign/reports-v4-summary-bar';\r\nimport { ReportsV4Footer } from '@bingads-webui-campaign/reports-v4-footer';\r\nimport { useReportsHistory } from '@bingads-webui-campaign/reports-v4-history';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { timeZones } from '@bingads-webui/timezone-details';\r\nimport { AccountSelectorCallout } from '../account-selector/account-selector-callout';\r\nimport { getScopeSelectorText } from '../../helpers/account-selector-helper';\r\nimport { BreadcrumbContainer } from '../summary-bar';\r\nimport { getDatePickerOptions, shouldShowAccountSelect } from './helper';\r\n\r\nexport function ReduceScopeView(props) {\r\n const {\r\n reportParam, reportSchema, onApply, onDismiss, classes, ctrLogger,\r\n } = props;\r\n const { reportName, scopeSelector } = reportParam;\r\n const i18n = useContext(I18nContext);\r\n const history = useReportsHistory();\r\n const { scope } = useContext(ScopeContext);\r\n\r\n const [dateRange, setDateRange] = useState('ThisMonth');\r\n const [scopes, setScopes] = useState(scopeSelector || {});\r\n const [showAccountSelectorCallout, setShowAccountSelectorCallout] = useState(false);\r\n\r\n function renderSummaryBar() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n function renderName() {\r\n return (\r\n
\r\n

{reportName}

\r\n
\r\n );\r\n }\r\n\r\n function handleApply() {\r\n const params = {\r\n dateRange: {\r\n key: dateRange,\r\n },\r\n scopes,\r\n };\r\n ctrLogger.click({ target: 'ReduceScopePageApply', extraData: { params } });\r\n onApply(params);\r\n }\r\n\r\n function handleDismiss() {\r\n ctrLogger.click({ target: 'ReduceScopePageDismiss' });\r\n onDismiss();\r\n }\r\n\r\n function renderStaticText() {\r\n return (\r\n
\r\n

{i18n.getString(_TL_('Report scope reductor'))}

\r\n

{i18n.getString(_TL_('Update default settings of report to reduce load time'))}

\r\n
\r\n );\r\n }\r\n\r\n function renderDateRangeSelector() {\r\n const options = getDatePickerOptions({ reportParam, reportSchema, i18n });\r\n if (options.length < 2) {\r\n return null;\r\n }\r\n return (\r\n
\r\n
{i18n.getString(_TL_('Date range'))}
\r\n { setDateRange(option.key); }} required />\r\n
\r\n );\r\n }\r\n\r\n function renderAccountScopeSelector() {\r\n if (!shouldShowAccountSelect({ reportSchema, scope })) {\r\n return null;\r\n }\r\n const selectedAccountCount = getScopeSelectorText({\r\n i18n, scopeSelectorInfo: scopes, reportSchema, history,\r\n });\r\n return (\r\n
\r\n
{i18n.getString(_TL_('Select a subset of accounts/campaigns'))}
\r\n

\r\n {selectedAccountCount}\r\n setShowAccountSelectorCallout(true)}\r\n />\r\n

\r\n {showAccountSelectorCallout && scopes}\r\n reportSchema={reportSchema}\r\n onApply={(selected) => {\r\n setShowAccountSelectorCallout(false);\r\n setScopes(selected);\r\n }}\r\n onDismiss={() => setShowAccountSelectorCallout(false)}\r\n />}\r\n
\r\n );\r\n }\r\n\r\n function renderMain() {\r\n return (\r\n
\r\n
\r\n {renderDateRangeSelector()}\r\n {renderAccountScopeSelector()}\r\n
\r\n
\r\n \r\n \r\n
\r\n {reportParam && }\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n {renderSummaryBar()}\r\n {renderName()}\r\n {renderStaticText()}\r\n {renderMain()}\r\n \r\n
\r\n );\r\n}\r\n\r\nReduceScopeView.propTypes = {\r\n reportParam: PropTypes.shape({}).isRequired,\r\n reportSchema: PropTypes.shape({}).isRequired,\r\n classes: PropTypes.shape({}).isRequired,\r\n onApply: PropTypes.func.isRequired,\r\n onDismiss: PropTypes.func.isRequired,\r\n ctrLogger: PropTypes.shape({}).isRequired,\r\n};\r\n","import _ from 'underscore';\r\nimport { useContext, useEffect, useState } from 'react';\r\nimport { useDidUpdate } from '@bingads-webui-campaign/hooks';\r\nimport { schema, deprecatedReports } from '@bingads-webui-campaign/reports-v4-schema';\r\nimport IWindow from '@bingads-webui-clientcenter/window-interface';\r\nimport { findSelectedNode } from '@bingads-webui-react/with-site-map';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\nimport { useReportsHistory } from '@bingads-webui-campaign/reports-v4-history';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { useReportDataSource } from '@bingads-webui-campaign/reports-v4-data-source';\r\n\r\nimport { toUi } from './converters';\r\nimport { getDefaultReportParam } from './converters/default-value';\r\n\r\nexport const getUrlParam = () => {\r\n if (IWindow.location.pathname.match(/\\/create$/)) {\r\n return { reportAction: 'create', reportId: '', reportType: '' };\r\n }\r\n // TODO: another way is findSelectedNode(siteMap).apiKey, but it seems a bit strange.\r\n const [, reportAction, reportIdOrType] = IWindow.location.pathname.match(/\\/(edit|create)\\/(.*)/);\r\n let reportId;\r\n let reportType;\r\n switch (reportAction) {\r\n case 'edit':\r\n reportId = reportIdOrType;\r\n break;\r\n case 'create':\r\n reportType = reportIdOrType;\r\n break;\r\n default:\r\n throw new Error(`unknown reportAction ${reportAction}`);\r\n }\r\n return { reportAction, reportId, reportType };\r\n};\r\n\r\nexport const getInitialReportParam = ({\r\n reportSchema, siteMap, taskItem, history, serverContext, i18n, permissions,\r\n}) => {\r\n if (reportSchema) {\r\n const reportParam = getDefaultReportParam({\r\n reportSchema, siteMap, history, serverContext, i18n, permissions,\r\n });\r\n\r\n if (taskItem) {\r\n _.extend(reportParam, toUi({\r\n rawTaskItem: taskItem, entitySchema: reportSchema, permissions, history,\r\n }));\r\n }\r\n\r\n return reportParam;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const getInitialReportSchema = ({\r\n reportAction, siteMap, taskItem,\r\n}) => {\r\n if (reportAction === 'create') {\r\n const selectedNode = findSelectedNode(siteMap);\r\n const reportType = selectedNode.apiKey;\r\n const reportSchema = schema[reportType];\r\n\r\n if (!reportSchema) {\r\n throw new Error(`reportSchema not found for ${reportType}`);\r\n }\r\n\r\n return reportSchema;\r\n } else if (reportAction === 'edit') {\r\n return taskItem ?\r\n schema[taskItem.ReportType] :\r\n undefined;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const useReportSchemaReportParam = ({\r\n siteMap,\r\n i18n,\r\n reportAction,\r\n reportId,\r\n reportType,\r\n retrieveSchema = getInitialReportSchema,\r\n}) => {\r\n const history = useReportsHistory();\r\n const serverContext = useContext(ServerContext);\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const [reportSchema, setReportSchema] = useState(retrieveSchema({ reportAction, siteMap, taskItem: undefined }));\r\n\r\n const [reportParam, setReportParam] = useState(getInitialReportParam({\r\n reportSchema, siteMap, history, serverContext, taskItem: undefined, i18n, permissions,\r\n }));\r\n\r\n const [reportModalParam, setReportModalParam] = useState(getInitialReportParam({\r\n reportSchema, siteMap, history, serverContext, taskItem: undefined, i18n, permissions,\r\n }));\r\n\r\n const [taskState, setTaskState] = useState();\r\n\r\n\r\n useDidUpdate(() => {\r\n // reset state on prop change, i.e. in main menu, click on another recent report.\r\n const initialReportSchema = retrieveSchema({ reportAction, siteMap, taskItem: undefined });\r\n const initialReportParam = getInitialReportParam({\r\n reportSchema: initialReportSchema, siteMap, history, serverContext, taskItem: undefined, i18n, permissions,\r\n });\r\n setReportSchema(initialReportSchema);\r\n setReportParam(initialReportParam);\r\n }, [reportAction, reportId, reportType]);\r\n\r\n const { getTaskItem } = useReportDataSource();\r\n\r\n useEffect(() => {\r\n if (reportAction === 'edit' && reportId) {\r\n getTaskItem(reportId).then((taskItem) => {\r\n const { ReportType } = taskItem;\r\n if (deprecatedReports[ReportType]) {\r\n setTaskState('deprecate');\r\n return;\r\n }\r\n\r\n setTaskState('success');\r\n const initialReportSchema = retrieveSchema({ reportAction, siteMap, taskItem });\r\n const initialReportParam = getInitialReportParam({\r\n reportSchema: initialReportSchema, siteMap, history, serverContext, taskItem, i18n, permissions,\r\n });\r\n setReportSchema(initialReportSchema);\r\n setReportParam(initialReportParam);\r\n }).catch((res) => {\r\n if (res.value && res.value[0].Code === 'InvalidId') {\r\n setTaskState('invalidId');\r\n return;\r\n }\r\n\r\n setTaskState('fail');\r\n });\r\n }\r\n if (reportAction === 'create') {\r\n setTaskState('success');\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [reportAction, reportId, reportType]);\r\n\r\n\r\n return {\r\n taskState,\r\n reportSchema,\r\n reportParam,\r\n setReportParam,\r\n reportModalParam,\r\n setReportModalParam,\r\n };\r\n};\r\n","import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { BubbleRenderer as InsertionOrderReportBubbleRender } from '@bingads-webui-campaign-react/reports-v4-insertion-order-teaching-bubble-config';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport { useConstructor } from '@bingads-webui-campaign/hooks';\r\nimport { notificationApi } from '@bingads-webui-campaign/notification-center';\r\nimport { ErrorHandlePipeFactory } from '@bingads-webui-campaign/react-hook-use-fetch';\r\nimport { errorCodeToErrorMessageMapping, useReportDataSource } from '@bingads-webui-campaign/reports-v4-data-source';\r\nimport { useReportsHistory } from '@bingads-webui-campaign/reports-v4-history';\r\nimport { useCtrLogger } from '@bingads-webui-campaign/reports-v4-telemetry';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { ProgressiveLoadingBlock } from '@bingads-webui-react/ui-next-placeholder';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withReportsV4SiteMap, withCustomReportsSiteMap } from '@bingads-webui-react/with-site-map';\r\nimport { getDFMCache, withDFMCache } from '@bingads-webui/dfm-cache';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { DefaultButton, Icon } from '@fluentui/react';\r\nimport { PermissionsContext } from '@bingads-webui-react/hoc-with-permissions';\r\n\r\nimport { convertUserIdToScopeSelector, shouldShowUserScopeInput } from '../helpers/account-selector-helper';\r\nimport { extractGridItemsFromReportDataResponseBody, hasDifferentTimeColumns } from '../helpers/grid-helper';\r\nimport { isInsertionOrderReportTeachingBubbleEnabled } from '../helpers/insertion-order-helper';\r\nimport { getStyles } from '../style';\r\nimport { TimeTravel } from './TimeTravel';\r\nimport { toApi } from './converters';\r\nimport { collapsedRowApiFormat } from './converters/convert-collapsed-rows';\r\nimport { emptySchedule } from './converters/default-value';\r\nimport { ErrorView } from './error-view';\r\nimport { PreviewPageImplForCommon } from './preview-page-for-common';\r\nimport { PreviewPageImplForUserScopeFilterLevel } from './preview-page-for-user-scope';\r\nimport { ReduceScopeView } from './reduce-scope';\r\nimport { getDatePickerOptions, shouldShowAccountSelect } from './reduce-scope/helper';\r\nimport { getUrlParam, useReportSchemaReportParam } from './utils';\r\n\r\n\r\nexport function ReportPreviewBase({\r\n siteMap, perfMarker,\r\n}) {\r\n const i18n = useContext(I18nContext);\r\n const { scope } = useContext(ScopeContext);\r\n const history = useReportsHistory();\r\n const { reportAction, reportId, reportType } = getUrlParam();\r\n const perfLoggerSuffix = reportId ? 'Edit' : `Default_${reportType}`;\r\n const [previewReportPerfMarker] = useConstructor(() => {\r\n const marker = perfMarker.createChild(`Preview_Report_${perfLoggerSuffix}`);\r\n marker.willInit();\r\n return marker;\r\n });\r\n\r\n const {\r\n taskState, reportSchema, reportParam, setReportParam: setReportParamImpl, reportModalParam, setReportModalParam,\r\n } = useReportSchemaReportParam({\r\n siteMap, i18n, reportAction, reportId, reportType,\r\n });\r\n\r\n const {\r\n previewReport, saveReport, saveAsNewReport, downloadReport, refreshRecentReportsDataSource,\r\n } = useReportDataSource();\r\n\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n const serverContext = useContext(ServerContext);\r\n const permissions = useContext(PermissionsContext);\r\n\r\n const [reportModalDataItems, setReportModalDataItems] = useState(undefined);\r\n const [modalTotalCount, setModalTotalCount] = useState(0);\r\n const [categoryGroup, setCategoryGroup] = useState([]);\r\n const [parentIndex, setParentIndex] = useState(undefined);\r\n\r\n const [reportDataItems, setReportDataItems] = useState(undefined);\r\n const [totalCount, setTotalCount] = useState(0);\r\n const [placeHolderError, setPlaceHolderError] = useState(undefined);\r\n\r\n const [timeTravelHistory, setTimeTravelHistory] = useState(new TimeTravel());\r\n const [isHistoryInitialized, setIsHistoryInitialized] = useState(false);\r\n const [showReduceScopeBanner, setShowReduceScopeBanner] = useState(false);\r\n const [showReduceScopePage, setShowReduceScopePage] = useState(false);\r\n\r\n // `savedReportParam` is used to implement \"Reset\"\r\n const [savedReportParam, setSavedReportParam] = useState(undefined);\r\n const previewCallRef = useRef();\r\n\r\n const [dataRefreshId, setDataRefreshId] = useState(0);\r\n const forceRefreshData = () => {\r\n setDataRefreshId(dataRefreshId + 1);\r\n };\r\n\r\n const actionPerfMarker = useRef();\r\n const ctrLogger = useCtrLogger('ReportsV4PreviewReport');\r\n\r\n const isCreatePage = reportAction === 'create';\r\n\r\n function setReportParam(newReportParam) {\r\n // store old state\r\n if (!isHistoryInitialized) {\r\n timeTravelHistory.pushState(reportParam);\r\n setIsHistoryInitialized(true);\r\n setSavedReportParam(reportParam);\r\n }\r\n const finalParams = _.extend({}, newReportParam);\r\n if (reportParam !== newReportParam) {\r\n // reset pagination if some params change\r\n const resetPaginationConditions = {\r\n timeZone: (a, b) => a !== b,\r\n dateRange: (a, b) => a !== b,\r\n scopeSelector: (a, b) => a !== b,\r\n filters: (a, b) => a !== b,\r\n sortedColumn: (a, b) => a !== b,\r\n columns: hasDifferentTimeColumns,\r\n };\r\n\r\n Object.keys(resetPaginationConditions).some((condition) => {\r\n if (resetPaginationConditions[condition](reportParam[condition], newReportParam[condition], reportSchema) && !_.get(newReportParam, 'skipResetPagination', false)) {\r\n finalParams.GridPagination = { RequestedPage: 1, RowsPerPage: reportParam.GridPagination.RowsPerPage };\r\n return true;\r\n }\r\n return false;\r\n });\r\n\r\n // reset sort if current sorted column is removed. If new sorted column can be found in new columns, use it.\r\n if (reportParam.columns !== newReportParam.columns && !newReportParam.columns.includes(newReportParam.sortedColumn.key) && !newReportParam.columns.includes(reportParam.sortedColumn.key)) {\r\n finalParams.sortedColumn = {};\r\n }\r\n }\r\n timeTravelHistory.pushState(finalParams);\r\n setReportParamImpl(finalParams);\r\n }\r\n\r\n // when user chooses another report, reset time travel history\r\n useEffect(() => {\r\n setIsHistoryInitialized(false);\r\n setTimeTravelHistory(new TimeTravel());\r\n setSavedReportParam();\r\n }, [reportAction, reportId, reportType]);\r\n\r\n // enable time travel history callback\r\n useEffect(\r\n () => {\r\n const timeTravelCallback = (storedReportParamState) => {\r\n // restore stored state\r\n setReportParamImpl(storedReportParamState);\r\n };\r\n timeTravelHistory.registerTimeTravelCallback(timeTravelCallback);\r\n return () => {\r\n timeTravelHistory.unregisterTimeTravelCallback(timeTravelCallback);\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n },\r\n [timeTravelHistory, setReportParamImpl]\r\n );\r\n\r\n const notifyErrorPipe = ErrorHandlePipeFactory.createNotifyErrorHandlerPipe(i18n, errorCodeToErrorMessageMapping);\r\n\r\n async function onSave(newReportParam) {\r\n const reportParamToSave = newReportParam || reportParam;\r\n const patchParm = toApi(reportParamToSave, reportSchema).ReportData;\r\n try {\r\n await saveReport(patchParm);\r\n setSavedReportParam(reportParamToSave);\r\n notificationApi.showInfo(i18n.getString(_TL_('Report saved.')), {\r\n autoDismissTime: 5000,\r\n });\r\n } catch (e) {\r\n notifyErrorPipe(e);\r\n throw e;\r\n }\r\n }\r\n\r\n async function onSaveAs(newReportParam) {\r\n try {\r\n const { Id: newTaskItemId } = await saveAsNewReport(toApi(newReportParam, reportSchema));\r\n history.push(`/campaign/vnext/reports-v4/edit/${newTaskItemId}`);\r\n } catch (e) {\r\n notifyErrorPipe(e);\r\n throw e;\r\n }\r\n }\r\n\r\n async function onDownload(format, isDirty) {\r\n const { aid } = history.query;\r\n const { CurrentCustomer, CurrentAccount } = serverContext;\r\n const customerOrAccountName = aid ? CurrentAccount.Name : CurrentCustomer.Name;\r\n const reportName = (!isDirty && isCreatePage) ?\r\n `${reportParam.reportName} ${i18n.formatDate(new Date(), { timeZone: null, skeleton: 'yMd' })} ${customerOrAccountName}`\r\n : reportParam.reportName;\r\n const payload = toApi({\r\n ...reportParam,\r\n reportName,\r\n Format: format,\r\n Type: 'ReportUI', // One time report, do not show in saved reports\r\n ReportOptions: _.union(reportParam.ReportOptions, ['IncludeTotalRows']),\r\n schedule: emptySchedule, // fix bug 4178997: can not download with a Cron\r\n }, reportSchema);\r\n notificationApi.showInfo(i18n.getString(_TL_('We are creating your report and it will be downloaded shortly.')), {\r\n autoDismissTime: 5000,\r\n });\r\n try {\r\n await downloadReport(payload);\r\n } catch (error) {\r\n notifyErrorPipe(error);\r\n }\r\n }\r\n\r\n const [isUserScopeFilterLevelPreviewPageInited, setIsUserScopeFilterLevelPreviewPageInited] = useState(false);\r\n const isUserScope = reportSchema && shouldShowUserScopeInput(reportSchema.ScopeFilterLevel);\r\n const shouldUserScopeFilterLevel = isCreatePage && isUserScope && !isUserScopeFilterLevelPreviewPageInited;\r\n\r\n function pickPreviewPageImpl() {\r\n function onApplyClick(newUserId) {\r\n const newScopeSelector = convertUserIdToScopeSelector(newUserId);\r\n setReportParam({ ...reportParam, scopeSelector: newScopeSelector });\r\n setIsUserScopeFilterLevelPreviewPageInited(true);\r\n }\r\n\r\n if (shouldUserScopeFilterLevel) {\r\n return ();\r\n }\r\n\r\n // In edit mode, when task item is still loading\r\n if (!reportSchema || !reportParam) {\r\n return ;\r\n }\r\n\r\n return ();\r\n }\r\n\r\n const shouldNotFetch = shouldUserScopeFilterLevel;\r\n const hasReportGridModal = serverContext && serverContext.Permissions && serverContext.Permissions.dynamic &&\r\n serverContext.Permissions.dynamic.CollapsedRow && reportSchema && reportSchema.ReportType === 'PublisherUsagePerformanceReport';\r\n const hasSearchInsightReportGridModal = permissions && permissions.dynamic && permissions.dynamic.SearchInsightPerformanceReport && reportSchema && (reportSchema.ReportType === 'SearchInsightPerformanceReport');\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n async function fetchAndUpdateData() {\r\n if (reportDataItems) {\r\n actionPerfMarker.current = perfMarker.createChild(`Preview_Report_${perfLoggerSuffix}_Action`);\r\n }\r\n setReportDataItems(undefined); // show shimmer when loading the state\r\n setPlaceHolderError(undefined);\r\n setReportModalDataItems(undefined);\r\n setCategoryGroup([]);\r\n setParentIndex(undefined);\r\n if (reportParam) {\r\n previewReportPerfMarker.willFetchData();\r\n if (actionPerfMarker.current) {\r\n actionPerfMarker.current.willFetchData();\r\n }\r\n\r\n const payload = toApi({\r\n ...reportParam,\r\n ...(hasReportGridModal && { CollapsedRow: collapsedRowApiFormat(false) }),\r\n ReportOptions: _.union(reportParam.ReportOptions, ['IncludeTotalRows']),\r\n }, reportSchema, { hasPagination: true });\r\n let reduceScopeTimer = null;\r\n try {\r\n reduceScopeTimer = setTimeout(() => {\r\n const datePickerOptions = getDatePickerOptions({ reportParam, reportSchema, i18n });\r\n const shouldShowAccountSelector = shouldShowAccountSelect({ reportSchema, scope });\r\n if (datePickerOptions.length > 1 && shouldShowAccountSelector) {\r\n setShowReduceScopeBanner(true);\r\n ctrLogger.click({ target: 'ReduceScopeBannerShow', extraData: { reportParam } });\r\n }\r\n setTimeout(() => {\r\n setShowReduceScopeBanner(false);\r\n }, 60 * 1000);\r\n }, 60 * 1000);\r\n\r\n let previewCall;\r\n let dfmCacheResult;\r\n if (dataRefreshId === 0) { // first load\r\n const dfmCacheKey = `getRecentReports${reportAction}${reportId || reportType}DFM`;\r\n dfmCacheResult = getDFMCache(dfmCacheKey);\r\n previewCall = withDFMCache(_.partial(previewReport, payload), dfmCacheKey, this);\r\n } else {\r\n previewCall = _.partial(previewReport, payload);\r\n }\r\n previewCallRef.current = previewCall;\r\n const responseBody = await previewCall();\r\n\r\n clearTimeout(reduceScopeTimer);\r\n setShowReduceScopeBanner(false);\r\n if (!responseBody.isException) {\r\n const newItems = extractGridItemsFromReportDataResponseBody(responseBody, i18n, reportParam, serverContext.Permissions, ctrLogger);\r\n if (isMounted) {\r\n previewReportPerfMarker.willRender();\r\n if (actionPerfMarker.current) {\r\n actionPerfMarker.current.willRender();\r\n }\r\n setTotalCount(responseBody['@odata.count']);\r\n setReportDataItems(newItems);\r\n }\r\n } else {\r\n setTotalCount(0);\r\n setReportDataItems([]);\r\n }\r\n if (dfmCacheResult) {\r\n refreshRecentReportsDataSource();\r\n }\r\n } catch (e) {\r\n // the request might be send by JQuery(by DFM) or fetch, when it's jquery, read the JSON response body.\r\n const errorResponseBody = e.responseJSON ? e.responseJSON : e;\r\n setTotalCount(0);\r\n if (errorResponseBody['@odata.context'] && errorResponseBody['@odata.context'].includes('Model.AdsApiError') && errorResponseBody.value[0].Code === 'DatabaseTimeout') {\r\n ctrLogger.click({ target: 'DatabaseTimeout', extraData: { reportParam } });\r\n setPlaceHolderError(_TL_('This report has more data than we can show here. To view the whole report, you can download it.'));\r\n }\r\n setReportDataItems([]);\r\n clearTimeout(reduceScopeTimer);\r\n notifyErrorPipe(errorResponseBody);\r\n }\r\n }\r\n }\r\n if (!shouldNotFetch) {\r\n fetchAndUpdateData();\r\n }\r\n return function cleanUp() {\r\n isMounted = false;\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [reportParam, shouldNotFetch, dataRefreshId]);\r\n\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n async function fetchAndUpdateData() {\r\n if ((hasReportGridModal && reportModalParam && reportModalParam.CollapsedRow && reportModalParam.CollapsedRow.ExpandCollapsedRows) ||\r\n (hasSearchInsightReportGridModal && reportModalParam && reportModalParam.SearchCategory)) {\r\n const payload = toApi({\r\n ...reportModalParam,\r\n ReportOptions: _.union(reportModalParam.ReportOptions, ['IncludeTotalRows']),\r\n }, reportSchema, { hasPagination: true });\r\n try {\r\n const previewCall = _.partial(previewReport, payload);\r\n previewCallRef.current = previewCall;\r\n const responseBody = await previewCall();\r\n\r\n if (!responseBody.isException) {\r\n const newItems = extractGridItemsFromReportDataResponseBody(responseBody, i18n, reportParam, serverContext.Permissions, ctrLogger);\r\n if (isMounted) {\r\n setModalTotalCount(responseBody['@odata.count']);\r\n setReportModalDataItems(newItems);\r\n setParentIndex(reportModalParam.ParentIndex);\r\n }\r\n } else {\r\n setModalTotalCount(0);\r\n setReportModalDataItems([]);\r\n }\r\n } catch (e) {\r\n // the request might be send by JQuery(by DFM) or fetch, when it's jquery, read the JSON response body.\r\n const errorResponseBody = e.responseJSON ? e.responseJSON : e;\r\n setModalTotalCount(0);\r\n if (errorResponseBody['@odata.context'] && errorResponseBody['@odata.context'].includes('Model.AdsApiError') && errorResponseBody.value[0].Code === 'DatabaseTimeout') {\r\n ctrLogger.click({ target: 'DatabaseTimeout', extraData: { reportModalParam } });\r\n setPlaceHolderError(_TL_('This report has more data than we can show here. To view the whole report, you can download it.'));\r\n }\r\n setReportModalDataItems([]);\r\n notifyErrorPipe(errorResponseBody);\r\n }\r\n }\r\n }\r\n if (!shouldNotFetch) {\r\n fetchAndUpdateData();\r\n }\r\n return function cleanUp() {\r\n isMounted = false;\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [reportModalParam, shouldNotFetch]);\r\n\r\n const reduceScopeBanner = (\r\n
\r\n \r\n {i18n.getString(_TL_('Report loading slow. Pause report and change scope?'))}\r\n {\r\n setShowReduceScopePage(true);\r\n setShowReduceScopeBanner(false);\r\n if (previewCallRef.current) {\r\n if (previewCallRef.current.cancel) {\r\n previewCallRef.current.cancel();\r\n }\r\n setTotalCount(0);\r\n setReportDataItems([]);\r\n }\r\n ctrLogger.click({ target: 'ReduceScopeBannerClick', extraData: { reportParam }, parentTarget: 'ReduceScopeBannerShow' });\r\n }}\r\n />\r\n
\r\n );\r\n\r\n const renderNormalView = () => (\r\n \r\n {taskState === 'success' && pickPreviewPageImpl()}\r\n {(taskState === 'invalidId' || taskState === 'fail' || taskState === 'deprecate') && }\r\n {showReduceScopeBanner && reduceScopeBanner}\r\n \r\n );\r\n\r\n const renderReduceScopeView = () => (\r\n {\r\n setReportParam({\r\n ...reportParam,\r\n dateRange,\r\n scopeSelector: scopes,\r\n });\r\n setShowReduceScopePage(false);\r\n }}\r\n onDismiss={() => {\r\n setShowReduceScopePage(false);\r\n }}\r\n />\r\n );\r\n\r\n return (\r\n
\r\n {showReduceScopePage ? renderReduceScopeView() : renderNormalView()}\r\n {isInsertionOrderReportTeachingBubbleEnabled({ reportType, permissions: serverContext.Permissions, isCreatePage }) &&\r\n }\r\n
\r\n );\r\n}\r\n\r\nReportPreviewBase.propTypes = {\r\n siteMap: PropTypes.arrayOf(PropTypes.shape({\r\n id: PropTypes.string,\r\n })).isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n\r\nconst ReportPreviewWrapped = withReportsV4SiteMap(ReportPreviewBase);\r\nconst CustomReportPreviewWrapped = withCustomReportsSiteMap(ReportPreviewBase);\r\n\r\nexport { ReportPreviewWrapped as ReportPreview };\r\nexport { CustomReportPreviewWrapped as CustomReportPreview };\r\n\r\n","import React, { useContext, lazy } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Separator, Stack } from '@fluentui/react';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\n// import { StyledMatchReportPage, StyledFeedStatusPage } from '@bingads-webui-campaign-react/hotel-center-page';\r\nimport { ReportsV4SummaryBarWithOnlyName } from './summary-bar';\r\nimport { getStyles } from '../style';\r\n\r\nconst StyledMatchReport = lazy(async () => {\r\n const { StyledMatchReportPage } = await import(/* webpackChunkName: \"styled-match-report-page\" */'@bingads-webui-campaign-react/hotel-center-page');\r\n return { default: StyledMatchReportPage };\r\n});\r\nconst StyledFeedStatus = lazy(async () => {\r\n const { StyledFeedStatusPage } = await import(/* webpackChunkName: \"styled-feed-status-report-page\" */'@bingads-webui-campaign-react/hotel-center-page');\r\n return { default: StyledFeedStatusPage };\r\n});\r\n\r\nexport function PreviewPageImplForLegacy(props) {\r\n const i18n = useContext(I18nContext);\r\n const { perfMarker } = props;\r\n const reportName = i18n.getString(props.reportName);\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n function renderHeader() {\r\n return (\r\n \r\n \r\n \r\n {reportName}\r\n \r\n \r\n \r\n );\r\n }\r\n const renderBody = () => {\r\n switch (props.reportName) {\r\n case 'Matching':\r\n return ;\r\n case 'Price feed status':\r\n return ;\r\n default:\r\n return null;\r\n }\r\n };\r\n return (\r\n
\r\n \r\n \r\n
\r\n
\r\n {renderHeader()}\r\n \r\n {renderBody()}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nPreviewPageImplForLegacy.propTypes = {\r\n reportName: PropTypes.string.isRequired,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n};\r\n","// Get selected Vertical IDs based on the filter type (L1Vertical or L2Vertical)\r\n// Parameters:\r\n// - data: the filter data object containing L1Vertical, L2Vertical, or L3Vertical selections\r\n// - verticalType: the key used to identify vertical type ('L1Vertical', 'L2Vertical', etc.)\r\nconst getSelectedVerticalIds = (data, verticalType) => {\r\n try {\r\n // Check if data for the specified verticalType exists and is in array format\r\n if (data && data[verticalType] && Array.isArray(data[verticalType].$in)) {\r\n return data[verticalType].$in.map(id => id.match(new RegExp(`Enum.${verticalType}'(.*)'`))[1]);\r\n }\r\n\r\n // Handle case where the data uses a $and condition (multiple filters)\r\n if (data && Array.isArray(data.$and)) {\r\n return data.$and\r\n .filter(f => f[verticalType] && Array.isArray(f[verticalType].$in))\r\n .flatMap(f => f[verticalType].$in)\r\n .map(id => id.match(new RegExp(`Enum.${verticalType}'(.*)'`))[1]);\r\n }\r\n } catch (error) {\r\n console.error(`Error in getting selected vertical IDs for ${verticalType}:`, error);\r\n }\r\n\r\n return []; // Return empty array if no valid data found\r\n};\r\n\r\n// Filter vertical IDs based on the selected verticals\r\n// Parameters:\r\n// - entitySchema: the schema of the entity containing vertical options\r\n// - reportSchemaFilters: the schema filters for the report\r\n// - selectedIds: array of selected vertical IDs (L1 or L2)\r\n// - verticalKey: the key used to identify the vertical (e.g., 'L2Vertical' or 'L3Vertical')\r\nconst filterVerticalIds = (entitySchema, reportSchemaFilters, selectedIds, verticalKey) => {\r\n try {\r\n // Ensure necessary properties are present in the entitySchema and reportSchemaFilters\r\n if (\r\n entitySchema &&\r\n entitySchema.properties &&\r\n entitySchema.properties[verticalKey] &&\r\n Array.isArray(entitySchema.properties[verticalKey].enum) &&\r\n selectedIds.length > 0\r\n ) {\r\n // Filter the enum values based on the selected IDs\r\n return reportSchemaFilters.properties[verticalKey].enum.filter(id =>\r\n selectedIds.some(selectedId => id.startsWith(`${selectedId}/`)));\r\n }\r\n } catch (error) {\r\n console.error(`Error filtering vertical IDs for ${verticalKey}:`, error);\r\n }\r\n\r\n // Return original enum if no selected IDs or if an error occurs\r\n return reportSchemaFilters.properties[verticalKey].enum;\r\n};\r\n\r\n// Dynamically set and trim filter options for L2 and L3 verticals based on selected L1 vertical\r\n// Parameters:\r\n// - filterData: the current filter data object\r\n// - reportSchemaFilters: schema filters for the report\r\n// - entitySchema: the current entity schema being updated\r\n// - setEntitySchema: function to update the entity schema\r\nexport const setTrimmedFilterDataOptionsSearchInsightsReport = (filterData, reportSchemaFilters, entitySchema, setEntitySchema) => {\r\n try {\r\n // Get selected L1 and L2 vertical IDs from the filter data\r\n const selectedL1VerticalIds = getSelectedVerticalIds(filterData, 'L1Vertical');\r\n const selectedL2VerticalIds = getSelectedVerticalIds(filterData, 'L2Vertical');\r\n\r\n // Create a deep copy of the entity schema to modify\r\n let updatedEntitySchema = { ...entitySchema, properties: { ...entitySchema.properties } };\r\n\r\n // If no L1Vertical is selected, set L2Vertical and L3Vertical to the full list of options\r\n if (selectedL1VerticalIds.length === 0) {\r\n updatedEntitySchema = { ...entitySchema, properties: { ...entitySchema.properties } };\r\n if (reportSchemaFilters.properties.L2Vertical && Array.isArray(reportSchemaFilters.properties.L2Vertical.enum)) {\r\n updatedEntitySchema.properties.L2Vertical.enum = [...reportSchemaFilters.properties.L2Vertical.enum];\r\n }\r\n if (reportSchemaFilters.properties.L3Vertical && Array.isArray(reportSchemaFilters.properties.L3Vertical.enum)) {\r\n updatedEntitySchema.properties.L3Vertical.enum = [...reportSchemaFilters.properties.L3Vertical.enum];\r\n }\r\n } else {\r\n // Trim L2Vertical options based on the selected L1Vertical IDs\r\n const trimmedL2Options = filterVerticalIds(entitySchema, reportSchemaFilters, selectedL1VerticalIds, 'L2Vertical');\r\n updatedEntitySchema.properties.L2Vertical.enum = trimmedL2Options;\r\n\r\n // Trim L3Vertical options based on the selected L2Vertical IDs\r\n const trimmedL3Options = filterVerticalIds(entitySchema, reportSchemaFilters, selectedL2VerticalIds, 'L3Vertical');\r\n updatedEntitySchema.properties.L3Vertical.enum = trimmedL3Options;\r\n }\r\n\r\n // Update the entity schema with the new trimmed options\r\n setEntitySchema(updatedEntitySchema);\r\n } catch (error) {\r\n console.error('Error setting trimmed filter data options:', error);\r\n setEntitySchema(entitySchema); // Keep the entity schema unchanged in case of error\r\n }\r\n};\r\n\r\n// Set the default L2Vertical options based on selected L1Vertical and update entity schema\r\n// Parameters:\r\n// - filterData: the current filter data object\r\n// - entitySchema: the current entity schema being updated\r\nexport const setTrimmedFilterDataOptionsDefaultSearchInsightsReport = (filterData, entitySchema) => {\r\n try {\r\n // Get selected L1 vertical IDs from the filter data\r\n const selectedL1VerticalIds = getSelectedVerticalIds(filterData, 'L1Vertical');\r\n\r\n let trimmedL2Options;\r\n\r\n // If L2Vertical enum exists and there are selected L1 vertical IDs, filter L2 options\r\n if (\r\n entitySchema &&\r\n entitySchema.properties &&\r\n entitySchema.properties.L2Vertical &&\r\n Array.isArray(entitySchema.properties.L2Vertical.enum) &&\r\n selectedL1VerticalIds.length > 0\r\n ) {\r\n trimmedL2Options = entitySchema.properties.L2Vertical.enum.filter((l2VerticalId) => {\r\n const cleanedL2VerticalId = l2VerticalId.replace(\"Enum.L2Vertical'\", '').replace(\"'\", '');\r\n return selectedL1VerticalIds.some(l1VerticalId => cleanedL2VerticalId.startsWith(`${l1VerticalId}/`));\r\n });\r\n }\r\n\r\n // Create a deep copy of the entity schema and update with the trimmed L2 options\r\n const updatedEntitySchema = { ...entitySchema, properties: { ...entitySchema.properties } };\r\n if (updatedEntitySchema.properties.L2Vertical && trimmedL2Options) {\r\n updatedEntitySchema.properties.L2Vertical.enum = trimmedL2Options;\r\n }\r\n\r\n return updatedEntitySchema;\r\n } catch (error) {\r\n console.error('Error setting default trimmed filter data options:', error);\r\n return entitySchema; // Return original entitySchema if error occurs\r\n }\r\n};\r\n","/**\r\n * This function returns an API format object for collapsed rows.\r\n * A false value for isModalOpened would be assigned for the main grid,\r\n * and a true value for the modal grid.\r\n *\r\n * @param {boolean} isModalOpened - Indicates whether the modal is opened or not.\r\n * @returns {object} - The API format object for collapsed rows.\r\n */\r\nexport function collapsedRowApiFormat(isModalOpened) {\r\n const result = {\r\n ExpandCollapsedRows: isModalOpened,\r\n CollapseCondition: {\r\n Filter: {\r\n LogicalOperator: 'OR',\r\n Expressions: [\r\n {\r\n '@odata.type': '#Model.Predicate',\r\n PropertyName: 'Spend',\r\n Operator: 'Equals',\r\n Values: [\r\n '0',\r\n ],\r\n },\r\n ],\r\n },\r\n },\r\n };\r\n\r\n return result;\r\n}\r\n","\r\nexport const callOutStyles = {\r\n calloutMain: {\r\n padding: '24px 16px',\r\n overflow: 'inherit', // not hide date picker\r\n },\r\n};\r\n","const NEUTRAL_SECONDARY = '#605e5c';\r\n\r\nexport const getStyles = () => ({\r\n 'reports-v4-email-picker': {\r\n '& .checkbox input[type=\"checkbox\"]': {\r\n float: 'left',\r\n },\r\n '& .checkbox > label :nth-child(n+3)': {\r\n marginLeft: '8px',\r\n },\r\n '& .email-notification-delivery-option-editor__search-box': {\r\n marginBottom: '5px',\r\n },\r\n '& .email-notification-delivery-option-editor__user-list': {\r\n border: `1px solid ${NEUTRAL_SECONDARY}`,\r\n padding: '10px',\r\n overflowY: 'auto',\r\n maxHeight: '300px',\r\n },\r\n },\r\n});\r\n","import PropTypes from 'prop-types';\r\nimport React from 'react';\r\n\r\nexport default function Spin({\r\n i18n,\r\n}) {\r\n return {i18n.getString(_TL_('Loading...'))};\r\n}\r\n\r\nSpin.propTypes = {\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n};\r\n","/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-shadow */\r\nimport classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useEffect, useState } from 'react';\r\nimport _ from 'underscore';\r\nimport { CheckboxGroup } from '@bingads-webui-react/checkbox';\r\nimport { ReactTemplate } from '@bingads-webui-react/react-template';\r\nimport { SearchBox } from '@bingads-webui-react/search-box-control';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from './styles';\r\nimport Spin from './spin';\r\n\r\nconst LOADING = 'Loading';\r\nconst SUCCEEDED = 'Succeeded';\r\nconst FAILED = 'Failed';\r\n\r\nexport const EmailPicker = (props) => {\r\n const {\r\n isScheduleEnabled,\r\n i18n,\r\n currentUserEmail,\r\n emails: selectedEmails,\r\n onChange: onChangeSelectedEmails,\r\n loadEmails,\r\n className,\r\n } = props;\r\n\r\n const [availableEmails, setAvailableEmails] = useState([]);\r\n const [searchString, setSearchString] = useState('');\r\n const [loadEmailsStatus, setLoadEmailsStatus] = useState(LOADING);\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n useEffect(() => {\r\n // load emails\r\n loadEmails()\r\n .then((emails) => {\r\n const userEmails = _.uniq(emails);\r\n // Legacy saved reports may have emails not belong to loaded users\r\n const allEmails = _.union([currentUserEmail], userEmails, selectedEmails);\r\n\r\n setAvailableEmails(allEmails);\r\n\r\n setLoadEmailsStatus(SUCCEEDED);\r\n })\r\n .catch(() => {\r\n setLoadEmailsStatus(FAILED);\r\n });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const onSearch = (query) => {\r\n setSearchString(query);\r\n };\r\n\r\n const renderEmail = (email) => {\r\n if (email === currentUserEmail) {\r\n return (\r\n {i18n.getString(_TL_('me'))},\r\n }}\r\n template={i18n.getString(_TL_('{{email}} ({{me}})'))}\r\n />\r\n );\r\n }\r\n\r\n // TODO\r\n // emailaddress@domain.com (readonly)\r\n // https://msasg.visualstudio.com/DefaultCollection/Bing_Ads/_git/AdsAppUI?path=%2Fprivate%2FUI%2FCommon%2FMicrosoft.ClientCenter.Repository%2FProxy%2FClientCenterProxyEnums.cs&version=GBmaster&_a=contents&line=215&lineStyle=plain&lineEnd=240&lineStartColumn=1&lineEndColumn=6\r\n\r\n return email;\r\n };\r\n\r\n\r\n const renderEmailList = () => {\r\n const filteredEmails = availableEmails.filter(email => email.includes(searchString)).sort();\r\n\r\n switch (loadEmailsStatus) {\r\n case LOADING:\r\n return ;\r\n case SUCCEEDED:\r\n return (\r\n filteredEmails.length ?\r\n email}\r\n onChange={emails => onChangeSelectedEmails(emails)}\r\n /> :\r\n i18n.getString(_TL_('There are no results available based on your filtered search. Please revise your search.'))\r\n );\r\n case FAILED:\r\n return (\r\n
\r\n {i18n.getString(_TL_('Failed to load users'))}\r\n
\r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n const searchBoxElement = (\r\n );\r\n\r\n return (\r\n
\r\n
\r\n {searchBoxElement}\r\n
\r\n
\r\n {renderEmailList()}\r\n
\r\n
\r\n );\r\n};\r\n\r\nEmailPicker.propTypes = {\r\n isScheduleEnabled: PropTypes.bool.isRequired,\r\n emails: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n currentUserEmail: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func,\r\n }).isRequired,\r\n loadEmails: PropTypes.func.isRequired,\r\n className: PropTypes.string,\r\n};\r\n\r\nEmailPicker.defaultProps = {\r\n className: '',\r\n};\r\n","import loadEmails from '@bingads-webui-campaign-legacy/inline-download-reports/load-emails';\r\nimport { ScopeContext } from '@bingads-webui-react/scope-service';\r\nimport { ServerContext } from '@bingads-webui-campaign-react/server-context';\r\nimport React, { useContext } from 'react';\r\nimport { EmailPicker } from './src/editor';\r\n\r\nconst Wrapper = (props) => {\r\n const { scope } = useContext(ScopeContext);\r\n const serverContext = useContext(ServerContext);\r\n\r\n const currentUserEmail = serverContext.CurrentUser.Email;\r\n const allUsersType = scope.values.aid ? 'Account' : 'Customer';\r\n\r\n return (\r\n loadEmails({ allUsersType })}\r\n />\r\n );\r\n};\r\n\r\nexport { Wrapper as EmailPicker };\r\n","\r\nexport function inputTitleStyle(components, core) {\r\n return {\r\n position: 'absolute',\r\n top: '-30px',\r\n color: `${core.palette.neutralPrimary}`,\r\n fontWeight: '500',\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { RadioGroup, Select } from '@bingads-webui-react/primitive';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport _ from 'underscore';\r\nimport { DAILY, WEEKLY, MONTHLY } from './consts';\r\nimport { inputTitleStyle } from './styles/input-title-style';\r\n\r\nclass Frequency extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const { i18n } = props;\r\n this.radioValues = [DAILY, WEEKLY, MONTHLY];\r\n this.getRadioId = (_item, index) => ['daily', 'weekly', 'monthly'][index];\r\n this.radioOptions = (_item, index) =>\r\n [\r\n i18n.getString(_TL_('Daily')),\r\n i18n.getString(_TL_('Weekly')),\r\n i18n.getString(_TL_('Monthly')),\r\n ][index];\r\n }\r\n\r\n render() {\r\n const {\r\n isScheduleEnabled, i18n, CronModel, changeFrequency, cronFormatter, changeHour, classes,\r\n } = this.props;\r\n const optionFactory = (selectorName, optionObj, useIndex = true) =>\r\n _.values(optionObj).map((value, index) => (\r\n \r\n ));\r\n\r\n return (\r\n \r\n
\r\n
{i18n.getString(_TL_('Frequency'))}
\r\n
\r\n CronModel.frequency}\r\n renderItem={this.radioOptions}\r\n onChange={frequency => changeFrequency({\r\n frequency,\r\n dayOfWeek: frequency === WEEKLY ? '0' : '*',\r\n dayOfMonth: frequency === MONTHLY ? '1' : '*',\r\n })}\r\n checked={CronModel.frequency}\r\n name=\"frequencyRadio\"\r\n />\r\n
\r\n {\r\n CronModel.frequency === WEEKLY ?\r\n
\r\n
{i18n.getString(_TL_('Every'))}
\r\n changeFrequency({\r\n frequency: WEEKLY,\r\n dayOfWeek: e.target.value,\r\n dayOfMonth: '*',\r\n })}\r\n aria-labelledby=\"everyLabel\"\r\n >\r\n {optionFactory('weekly', cronFormatter.getDaysOfWeek())}\r\n \r\n
: ''\r\n }\r\n {\r\n CronModel.frequency === MONTHLY ?\r\n
\r\n
{i18n.getString(_TL_('On day'))}
\r\n changeFrequency({\r\n frequency: MONTHLY,\r\n dayOfWeek: '*',\r\n dayOfMonth: e.target.value,\r\n })}\r\n aria-labelledby=\"onDayLabel\"\r\n >\r\n {optionFactory('monthly', _.omit(cronFormatter.getDaysOfMonth(), '29', '30', '31'), false)}\r\n \r\n
{i18n.getString(_TL_('of every month'))}
\r\n
: ''\r\n }\r\n
\r\n
\r\n
{i18n.getString(_TL_('At'))}
\r\n changeHour(e.target.value)}\r\n aria-labelledby=\"atLabel\"\r\n >\r\n {optionFactory('hour', cronFormatter.getHoursOfDay())}\r\n \r\n
\r\n
);\r\n }\r\n}\r\n\r\nFrequency.propTypes = {\r\n isScheduleEnabled: PropTypes.bool.isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n CronModel: PropTypes.shape({\r\n frequency: PropTypes.number,\r\n }).isRequired,\r\n changeFrequency: PropTypes.func.isRequired,\r\n changeHour: PropTypes.func.isRequired,\r\n cronFormatter: PropTypes.shape({\r\n getDaysOfWeek: PropTypes.func,\r\n }).isRequired,\r\n};\r\n\r\nconst StyledFrequency = withDefaultStyles(Frequency, (components, core) => ({\r\n frequencyContainer: {\r\n alignItems: 'center',\r\n display: 'flex',\r\n '& .title': {\r\n alignSelf: 'top',\r\n },\r\n '& img': {\r\n marginRight: '15px',\r\n },\r\n '& > div:first-child': {\r\n top: '-26px',\r\n },\r\n },\r\n frequencyTitle: inputTitleStyle(components, core),\r\n hourContainer: {\r\n display: 'flex',\r\n },\r\n radioContainer: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n marginRight: '20px',\r\n },\r\n frequencySelect: {\r\n display: 'flex',\r\n '& div': {\r\n flexShrink: 0,\r\n paddingRight: '5px',\r\n alignSelf: 'center',\r\n },\r\n '& > div:first-child': {\r\n top: '8px',\r\n },\r\n },\r\n}));\r\n\r\nexport { StyledFrequency as Frequency };\r\n","export const DAILY = 0;\r\nexport const WEEKLY = 1;\r\nexport const MONTHLY = 2;\r\n","import $ from 'jquery';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { SingleMonthCalendar } from '@bingads-webui-react/single-month-calendar';\r\nimport { Input } from '@bingads-webui-react/primitive-validation';\r\nimport { keyCode } from '@bingads-webui/keycode';\r\nimport { getCivilDateToday } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { inputTitleStyle } from './styles/input-title-style';\r\n\r\nclass StartEndDate extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n startNavigatedDate: '',\r\n endNavigatedDate: '',\r\n startSelectedDate: '',\r\n endSelectedDate: '',\r\n isShowStartDatePicker: false,\r\n isShowEndDatePicker: false,\r\n selectedRanges: [],\r\n };\r\n this.startDateInputRef = React.createRef();\r\n this.endDateInputRef = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n this.startDateInputRef.addEventListener('mousedown', this.handelShowHideSingleDatePicker);\r\n this.endDateInputRef.addEventListener('mousedown', this.handelShowHideSingleDatePicker);\r\n this.onValidate();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.startDateInputRef.removeEventListener('mousedown', this.handelShowHideSingleDatePicker);\r\n this.endDateInputRef.removeEventListener('mousedown', this.handelShowHideSingleDatePicker);\r\n }\r\n\r\n static getDerivedStateFromProps(props) {\r\n const startDate = new Date(props.startDate);\r\n const startSelectedDate = new CivilDate(\r\n startDate.getUTCFullYear(),\r\n startDate.getUTCMonth() + 1,\r\n startDate.getUTCDate()\r\n );\r\n const endDate = new Date(props.endDate);\r\n const endSelectedDate = new CivilDate(\r\n endDate.getUTCFullYear(),\r\n endDate.getUTCMonth() + 1,\r\n endDate.getUTCDate()\r\n );\r\n return {\r\n startSelectedDate,\r\n startNavigatedDate: startSelectedDate,\r\n endSelectedDate,\r\n endNavigatedDate: endSelectedDate,\r\n selectedRanges: [{\r\n start: startSelectedDate,\r\n end: endSelectedDate,\r\n }],\r\n };\r\n }\r\n\r\n onSelectDate = (date) => {\r\n if (this.state.isShowStartDatePicker) {\r\n this.setState({\r\n startSelectedDate: date,\r\n isShowStartDatePicker: false,\r\n }, this.onValidate);\r\n this.props.changeStartEndDate({\r\n StartTime: date.toString(),\r\n });\r\n } else if (this.state.isShowEndDatePicker) {\r\n this.setState({\r\n endSelectedDate: date,\r\n isShowEndDatePicker: false,\r\n }, this.onValidate);\r\n this.props.changeStartEndDate({\r\n EndTime: date.toString(),\r\n });\r\n }\r\n }\r\n\r\n onValidate = () => {\r\n const today = new Date();\r\n const start = this.state.startSelectedDate;\r\n const end = this.state.endSelectedDate;\r\n\r\n if (start > end) {\r\n this.setState({\r\n errMessage: _TL_('The start date for the scheduled report cannot be later than the end date.'),\r\n });\r\n } else if (today > new Date(end.year, end.month - 1, end.day)) {\r\n this.setState({\r\n errMessage: _TL_('The end date for a scheduled report must be greater than the current date.'),\r\n });\r\n } else {\r\n this.setState({\r\n errMessage: false,\r\n });\r\n }\r\n }\r\n\r\n onKeyDown = (event) => {\r\n if (event.keyCode === keyCode.Enter) {\r\n this.handelShowHideSingleDatePicker(event);\r\n }\r\n }\r\n\r\n setWrapperRef = (node) => {\r\n this.wrapperRef = node;\r\n }\r\n\r\n handelShowHideSingleDatePicker = (event) => {\r\n if (event.target === $('#startDateInput')[0]) {\r\n this.setState({\r\n isShowStartDatePicker: !this.state.isShowStartDatePicker,\r\n isShowEndDatePicker: false,\r\n });\r\n } else if (event.target === $('#endDateInput')[0]) {\r\n this.setState({\r\n isShowStartDatePicker: false,\r\n isShowEndDatePicker: !this.state.isShowEndDatePicker,\r\n });\r\n } else if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {\r\n this.setState({\r\n isShowStartDatePicker: false,\r\n isShowEndDatePicker: false,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, classes, isScheduleEnabled,\r\n } = this.props;\r\n const minDate = getCivilDateToday().plus({ days: -1 });\r\n const maxDate = getCivilDateToday().plus({ years: 2 });\r\n\r\n return (\r\n
\r\n
\r\n
{i18n.getString(_TL_('Start Date'))}
\r\n
\r\n { this.startDateInputRef = ref; }}\r\n />\r\n {\r\n this.state.isShowStartDatePicker &&\r\n
\r\n this.onSelectDate(date)}\r\n i18n={i18n}\r\n isMonthPickerEnabled\r\n />\r\n
\r\n }\r\n
\r\n
\r\n
\r\n
{i18n.getString(_TL_('End Date'))}
\r\n
\r\n { this.endDateInputRef = ref; }}\r\n />\r\n {\r\n this.state.isShowEndDatePicker &&\r\n
\r\n \r\n
\r\n }\r\n
\r\n
\r\n {\r\n this.state.errMessage ?\r\n

\r\n {i18n.getString(this.state.errMessage)}\r\n

: ''\r\n }\r\n
\r\n );\r\n }\r\n}\r\n\r\nStartEndDate.propTypes = {\r\n isScheduleEnabled: PropTypes.bool.isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n changeStartEndDate: PropTypes.func.isRequired,\r\n};\r\n\r\nconst StyledStartEndDate = withDefaultStyles(StartEndDate, (components, core) => ({\r\n calenderWrapper: {\r\n position: 'relative',\r\n },\r\n startEndDateLabel: inputTitleStyle(components, core),\r\n startEndDate: {\r\n '& input[readonly][disabled]': {\r\n backgroundColor: '#f3f2f1',\r\n },\r\n display: 'flex',\r\n paddingTop: '0px',\r\n '& > div': {\r\n float: 'left',\r\n display: 'flex',\r\n width: '135px',\r\n },\r\n '& #startDatePicker': {\r\n marginRight: '10px',\r\n },\r\n },\r\n errorMsg: {\r\n color: '#D90026',\r\n position: 'absolute',\r\n top: '50px',\r\n },\r\n}));\r\n\r\nexport { StyledStartEndDate as StartEndDate };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { i18nMap } from '@bingads-webui-campaign/report-shared';\r\nimport _ from 'underscore';\r\n\r\nfunction isReportTemplateType(type) {\r\n return _.includes([\r\n 'ReportUITemplate',\r\n 'ReportUICustomerTemplate',\r\n 'ReportUIAccountTemplate',\r\n 'ReportUIUserTemplate',\r\n ], type);\r\n}\r\n\r\nclass FileFormatSelector extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n const { Template } = props;\r\n this.fileFormat = undefined;\r\n if (isReportTemplateType(Template)) {\r\n this.fileFormat = i18nMap.FileFormatForReporting;\r\n } else {\r\n this.fileFormat = i18nMap.FileFormatForInlineDownload;\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n isScheduleEnabled, i18n, changeFileFormat, classes, fileFormat,\r\n } = this.props;\r\n\r\n const optionFactory = (selectorName, optionObj, useIndex = true) =>\r\n Object.entries(optionObj).map(([key, value], index) => (\r\n \r\n ));\r\n\r\n const optionsJSX = optionFactory('FileFormat', this.fileFormat, false);\r\n\r\n return (\r\n \r\n
\r\n
{i18n.getString(_TL_('Format'))}
\r\n changeFileFormat(e.target.value)}\r\n aria-labelledby=\"fileFormatLabel\"\r\n >\r\n {optionsJSX}\r\n \r\n
\r\n
);\r\n }\r\n}\r\n\r\nFileFormatSelector.propTypes = {\r\n isScheduleEnabled: PropTypes.bool.isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n changeFileFormat: PropTypes.func.isRequired,\r\n fileFormat: PropTypes.string.isRequired,\r\n Template: PropTypes.string.isRequired,\r\n};\r\n\r\nconst StyledFileFormatSelector = withDefaultStyles(FileFormatSelector, () => ({\r\n fileFormatContainer: {\r\n display: 'flex',\r\n flexFlow: 'column',\r\n '& .title': {\r\n alignSelf: 'top',\r\n },\r\n '& > div:first-child': {\r\n top: '-26px',\r\n },\r\n },\r\n fileFormatTitle: {\r\n marginTop: 8,\r\n marginBottom: 5,\r\n },\r\n}));\r\n\r\nexport { StyledFileFormatSelector as FileFormatSelector };\r\n","import React, { Component } from 'react';\r\nimport _ from 'underscore';\r\nimport { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { EmailPicker } from '@bingads-webui-campaign/reports-v4-email-picker';\r\nimport PropTypes from 'prop-types';\r\nimport { Checkbox } from '@bingads-webui-react/primitive';\r\nimport { Frequency } from './frequency';\r\nimport { StartEndDate } from './start-end-date';\r\nimport { FileFormatSelector } from './FileFormatSelector';\r\n\r\nclass ReportSchedule extends Component {\r\n onUpdateEmailRecipients = (newEmailRecipients) => {\r\n this.props.setSchedule({ EmailRecipients: newEmailRecipients });\r\n };\r\n\r\n changeHour = (hour) => {\r\n const Cron = this.props.cronFormatter.toCronString(_.defaults({ hour }, this.CronModel));\r\n this.props.setSchedule({ Cron });\r\n };\r\n\r\n changeStartEndDate = (date) => {\r\n this.props.setSchedule(date);\r\n };\r\n\r\n changeFileFormat = (fileFormat) => {\r\n this.props.setSchedule({ Format: fileFormat });\r\n };\r\n\r\n changeFrequency = ({ frequency, dayOfWeek, dayOfMonth }) => {\r\n const Cron = this.props.cronFormatter.toCronString({\r\n frequency,\r\n dayOfWeek,\r\n dayOfMonth,\r\n hour: this.CronModel.hour,\r\n });\r\n this.props.setSchedule({ Cron });\r\n };\r\n\r\n render() {\r\n const {\r\n isScheduleEnabled,\r\n i18n, cronFormatter, classes,\r\n StartDate, EndDate, setSchedule,\r\n AttachFileToEmail, Cron,\r\n EmailRecipients, Template, FileFormat,\r\n } = this.props;\r\n\r\n this.CronModel = cronFormatter.parse(Cron);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
{i18n.getString(_TL_('Send report to'))}
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n setSchedule({ AttachFileToEmail: val.target.checked })}\r\n checked={AttachFileToEmail}\r\n >\r\n {i18n.getString(_TL_('Include report as an email attachment'))}\r\n {\r\n AttachFileToEmail &&\r\n
\r\n {i18n.getString(_TL_('Reports larger than 4MB will not be included as email attachments.'))}\r\n
\r\n }\r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\n/* eslint-disable react/no-typos */\r\nReportSchedule.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n isScheduleEnabled: PropTypes.bool.isRequired,\r\n Cron: PropTypes.string.isRequired,\r\n EmailRecipients: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n StartDate: PropTypes.string.isRequired,\r\n EndDate: PropTypes.string.isRequired,\r\n setSchedule: PropTypes.func.isRequired,\r\n cronFormatter: PropTypes.object.isRequired, // eslint-disable-line\r\n AttachFileToEmail: PropTypes.bool.isRequired,\r\n Template: PropTypes.string.isRequired,\r\n FileFormat: PropTypes.string.isRequired,\r\n};\r\n\r\nfunction getStyle(components, { palette }) {\r\n return {\r\n reportSchedule: {\r\n paddingTop: '40px',\r\n paddingLeft: '0',\r\n maxWidth: 'none',\r\n '& select': {\r\n minWidth: 0,\r\n display: 'inline-block',\r\n marginRight: '5px',\r\n width: '135px',\r\n },\r\n },\r\n scheduleTime: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& > div': {\r\n position: 'relative',\r\n },\r\n '& > div:not(:last-child)': {\r\n marginRight: '10px',\r\n },\r\n },\r\n fileFormat: {\r\n\r\n },\r\n emailTextArea: {\r\n width: '500px',\r\n marginTop: '22px',\r\n '& > div:first-child': {\r\n top: '-8px',\r\n position: 'relative',\r\n },\r\n '& .error': {\r\n color: '#A80000',\r\n },\r\n '& textarea': {\r\n maxWidth: '100%',\r\n },\r\n },\r\n emailTitle: {\r\n position: 'absolute',\r\n top: '-24px',\r\n color: `${palette.neutralPrimary}`,\r\n fontWeight: '500',\r\n },\r\n attachmentTooLarge: {\r\n paddingTop: '2px',\r\n color: '#999',\r\n font: 'normal 10px arial !important',\r\n },\r\n includeAttachment: {\r\n marginTop: '8px',\r\n marginBottom: '8px',\r\n },\r\n };\r\n}\r\n\r\nconst Wrapped = withDefaultStyles(withPerfMarker(ReportSchedule, { name: 'reporting-schedule' }), getStyle);\r\n\r\nexport { Wrapped as ReportSchedule };\r\n\r\n","import React, { useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { PrimaryButton, DefaultButton, Toggle, Stack } from '@fluentui/react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { getCivilDateToday } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { CronFormatter } from '@bingads-webui/cron-formatter';\r\nimport { LegacyI18n } from '@bingads-webui-campaign/report-shared';\r\nimport { ReportSchedule } from './scheduler';\r\nimport { defaultSchedule } from '../';\r\n// Feel free to export more functions if you need\r\n// like dismissCallback, iconClickCallback, cancelCallback ...\r\nfunction FrequencyEditPanel(props) {\r\n const {\r\n data,\r\n onSave,\r\n onCancel,\r\n } = props;\r\n\r\n const defaultInitSchedule = {\r\n isScheduleEnabled: false,\r\n AttachFileToEmail: false,\r\n EmailRecipients: [],\r\n Cron: '0 12 * * 0 *',\r\n StartTime: getCivilDateToday().toString(),\r\n EndTime: getCivilDateToday().plus({ months: 3 }).toString(),\r\n FileFormat: 'Xlsx',\r\n };\r\n\r\n const [isScheduleEnabled, setIsScheduleEnabled] = useState((typeof data.Cron === 'string' && data.Cron !== '') || defaultInitSchedule.isScheduleEnabled);\r\n\r\n const initSchedule = {\r\n AttachFileToEmail: data.AttachFileToEmail || defaultInitSchedule.AttachFileToEmail,\r\n EmailRecipients: data.EmailRecipients || defaultInitSchedule.EmailRecipients,\r\n Cron: (data.Cron === null || data.Cron === undefined || data.Cron === '') ? defaultInitSchedule.Cron : data.Cron,\r\n StartTime: data.StartTime || defaultInitSchedule.StartTime,\r\n EndTime: data.EndTime || defaultInitSchedule.EndTime,\r\n Format: data.FileFormat || defaultInitSchedule.FileFormat,\r\n };\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n const [settings, setSettings] = useState(initSchedule);\r\n\r\n const legacyI18n = useContext(LegacyI18n);\r\n const cronFormatter = new CronFormatter({ i18n: legacyI18n });\r\n\r\n function setScheduleHanlder(newData) {\r\n setSettings(cur => ({ ...cur, ...newData }));\r\n }\r\n\r\n function changeIsScheduleEnabled(event, checked) {\r\n setIsScheduleEnabled(checked);\r\n }\r\n\r\n function onSaveClick() {\r\n const newSettings = isScheduleEnabled ? settings : defaultSchedule;\r\n onSave(newSettings);\r\n }\r\n\r\n function onCancelClick() {\r\n onCancel();\r\n }\r\n\r\n const scheduleThisReportText = i18n.getString(_TL_('Schedule this report'));\r\n\r\n const isSaveButtonEnabled = !isScheduleEnabled || (settings.EmailRecipients && settings.EmailRecipients.length > 0);\r\n\r\n return (\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nFrequencyEditPanel.propTypes = {\r\n onSave: PropTypes.func.isRequired,\r\n onCancel: PropTypes.func.isRequired,\r\n data: PropTypes.shape({\r\n AttachFileToEmail: PropTypes.bool.isRequired,\r\n EmailRecipients: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n Cron: PropTypes.string.isRequired,\r\n StartDate: PropTypes.string.isRequired,\r\n EndDate: PropTypes.string.isRequired,\r\n Format: PropTypes.string.isRequired,\r\n Template: PropTypes.string.isRequired, // readonly, and not part of setting\r\n }).isRequired,\r\n};\r\n\r\nexport { FrequencyEditPanel };\r\n","import React, { useState, useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Callout, IconButton, DirectionalHint } from '@fluentui/react';\r\nimport { callOutStyles } from './styles';\r\nimport { FrequencyEditPanel } from './frequency-edit-panel';\r\n\r\n// Feel free to export more functions if you need\r\n// like dismissCallback, iconClickCallback, cancelCallback ...\r\nfunction ScheduleFrequencyIconEditor(props) {\r\n const {\r\n className,\r\n onSchedulerSaveClick,\r\n data,\r\n calloutProps,\r\n } = props;\r\n\r\n\r\n const [isCalloutVisible, setIsCalloutVisible] = useState(false);\r\n\r\n const i18n = useContext(I18nContext);\r\n\r\n function toggleIsCalloutVisible() {\r\n setIsCalloutVisible(pre => !pre);\r\n }\r\n\r\n function onSchedulerDismiss() {\r\n toggleIsCalloutVisible();\r\n }\r\n\r\n function onSchedulerIconClicked() {\r\n toggleIsCalloutVisible();\r\n }\r\n\r\n async function onSaveClick(settings) {\r\n try {\r\n await onSchedulerSaveClick(settings);\r\n toggleIsCalloutVisible();\r\n } catch (e) {\r\n // pass eslint\r\n }\r\n }\r\n\r\n function onCancelClick() {\r\n toggleIsCalloutVisible();\r\n }\r\n\r\n return (\r\n \r\n \r\n {isCalloutVisible &&\r\n \r\n \r\n \r\n }\r\n \r\n );\r\n}\r\n\r\nScheduleFrequencyIconEditor.propTypes = {\r\n className: PropTypes.string,\r\n onSchedulerSaveClick: PropTypes.func.isRequired,\r\n data: PropTypes.shape({\r\n isScheduleEnabled: PropTypes.bool.isRequired,\r\n AttachFileToEmail: PropTypes.bool.isRequired,\r\n EmailRecipients: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n Cron: PropTypes.string.isRequired,\r\n StartDate: PropTypes.string.isRequired,\r\n EndDate: PropTypes.string.isRequired,\r\n Template: PropTypes.string.isRequired,\r\n FileFormat: PropTypes.string.isRequired,\r\n }).isRequired,\r\n calloutProps: PropTypes.shape({}),\r\n};\r\n\r\nScheduleFrequencyIconEditor.defaultProps = {\r\n className: '',\r\n calloutProps: {},\r\n};\r\n\r\nexport { ScheduleFrequencyIconEditor };\r\n","import { ScheduleFrequencyIconEditor, } from './src';\r\nimport { FrequencyEditPanel } from './src/frequency-edit-panel';\r\n\r\nexport { ScheduleFrequencyIconEditor, FrequencyEditPanel };\r\nexport const defaultSchedule = {\r\n AttachFileToEmail: false,\r\n EmailRecipients: [],\r\n Cron: '',\r\n StartTime: null,\r\n EndTime: null,\r\n};\r\n","export const ConditionalFormattingRestrictionSets = {\r\n InsertionOrderReport: [\r\n 'ChangeAmount',\r\n ],\r\n};\r\n","import { adExtension } from './ad-extension';\r\nimport { advancedInsights } from './advanced-insights';\r\nimport { billing } from './billing';\r\nimport { changeHistory } from './change-history';\r\nimport { dsa } from './dsa';\r\nimport { performance } from './performance';\r\nimport { product } from './product';\r\nimport { targeting } from './targeting';\r\nimport { labels } from './labels';\r\nimport { hotel } from './hotel';\r\nimport { appAds } from './app';\r\nimport { assets } from './assets';\r\nimport { marketplaceInsights } from './marketplace-insights';\r\n\r\nexport const elevatedColumnsMap = {\r\n ...performance,\r\n ...adExtension,\r\n ...advancedInsights,\r\n ...billing,\r\n ...changeHistory,\r\n ...dsa,\r\n ...product,\r\n ...targeting,\r\n ...labels,\r\n ...hotel,\r\n ...appAds,\r\n ...assets,\r\n ...marketplaceInsights,\r\n};\r\n","export const VideoMetricColumns = [\r\n 'VideoViews',\r\n 'ViewThroughRate',\r\n 'AverageCPV',\r\n 'TotalWatchTimeInMS',\r\n 'AverageWatchTimePerImpression',\r\n 'AverageWatchTimePerVideoView',\r\n 'VideoViewsAt25Percent',\r\n 'VideoViewsAt50Percent',\r\n 'VideoViewsAt75Percent',\r\n 'CompletedVideoViews',\r\n 'VideoCompletionRate',\r\n];\r\n\r\nexport const performance = {\r\n AccountPerformanceReport: {\r\n default: [\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'Impressions',\r\n ],\r\n linechartDefault: [\r\n 'AccountName',\r\n ],\r\n barchartDefault: [\r\n 'AccountName',\r\n ],\r\n },\r\n CampaignPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdDistribution',\r\n 'QualityScore',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'Impressions',\r\n ],\r\n linechartDefault: [\r\n 'CampaignName',\r\n ],\r\n barchartDefault: [\r\n 'CampaignName',\r\n ],\r\n },\r\n AdGroupPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdGroupId',\r\n 'AdDistribution',\r\n 'QualityScore',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'Impressions',\r\n 'AdGroupId',\r\n ],\r\n linechartDefault: [\r\n 'AdGroupName',\r\n ],\r\n barchartDefault: [\r\n 'AdGroupName',\r\n ],\r\n },\r\n AdPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdId',\r\n 'AdType',\r\n 'AdTitle',\r\n 'TitlePart1',\r\n 'TitlePart2',\r\n 'TitlePart3',\r\n 'AdDescription',\r\n 'AdDescription2',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n ],\r\n linechartDefault: [\r\n 'AdId',\r\n ],\r\n barchartDefault: [\r\n 'AdId',\r\n ],\r\n },\r\n KeywordPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'KeywordId',\r\n 'Keyword',\r\n 'BidMatchType',\r\n 'AdDistribution',\r\n 'CurrentMaxCpc',\r\n 'QualityScore',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n ],\r\n linechartDefault: [\r\n 'Keyword',\r\n ],\r\n barchartDefault: [\r\n 'Keyword',\r\n ],\r\n },\r\n NegativeKeywordConflictReport: {\r\n mandatory: [\r\n 'AccountName',\r\n 'Keyword',\r\n 'NegativeKeyword',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupId',\r\n 'Keyword',\r\n 'NegativeKeyword',\r\n 'ConflictLevel',\r\n ],\r\n },\r\n ShareOfVoiceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Language',\r\n 'KeywordId',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'ImpressionSharePercent',\r\n 'ImpressionLostToBudgetPercent',\r\n 'ImpressionLostToRankAggPercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'KeywordId',\r\n 'ImpressionSharePercent',\r\n ],\r\n linechartDefault: [\r\n 'AdGroupName',\r\n ],\r\n barchartDefault: [\r\n 'AdGroupName',\r\n ],\r\n },\r\n SearchQueryPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'SearchQuery',\r\n 'KeywordId',\r\n 'Keyword',\r\n 'AdId',\r\n 'BidMatchType',\r\n 'DeliveredMatchType',\r\n 'Language',\r\n 'Network',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'SearchQuery',\r\n ],\r\n linechartDefault: [\r\n 'SearchQuery',\r\n ],\r\n barchartDefault: [\r\n 'SearchQuery',\r\n ],\r\n },\r\n DestinationURLPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'DestinationUrl',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'DestinationUrl',\r\n ],\r\n linechartDefault: [\r\n 'DestinationUrl',\r\n ],\r\n barchartDefault: [\r\n 'DestinationUrl',\r\n ],\r\n },\r\n PublisherUsagePerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AssetGroupName',\r\n 'PublisherUrl',\r\n 'ViewThroughConversions',\r\n 'ConversionsQualified',\r\n 'ViewThroughCostPerConversionQualified',\r\n 'CostPerConversionQualified',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'PublisherUrl',\r\n ],\r\n },\r\n AdDynamicTextPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'AdGroupName',\r\n 'AdType',\r\n 'AdTitle',\r\n 'TitlePart1',\r\n 'TitlePart2',\r\n 'TitlePart3',\r\n 'DestinationUrl',\r\n 'Param1',\r\n 'Param2',\r\n 'Param3',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'AdTitle',\r\n 'DestinationUrl',\r\n 'Param1',\r\n 'Param2',\r\n 'Param3',\r\n ],\r\n },\r\n AudiencePerformanceReport: {\r\n mandatory: [\r\n 'AudienceId',\r\n 'AccountId',\r\n ],\r\n default: [\r\n 'AudienceId',\r\n 'AudienceName',\r\n 'AudienceType',\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'AccountId',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AssociationStatus',\r\n 'BidAdjustment',\r\n 'TargetingSetting',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Spend',\r\n ],\r\n },\r\n GoalsAndFunnelsReport: {\r\n mandatory: [\r\n 'Goal',\r\n ],\r\n default: [\r\n 'Goal',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Assists',\r\n 'AllConversions',\r\n 'AllRevenue',\r\n ],\r\n },\r\n ConversionPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Spend',\r\n 'Assists',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'Revenue',\r\n 'ReturnOnAdSpend',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n ],\r\n },\r\n UserLocationPerformanceReport: {\r\n mandatory: [\r\n 'AccountName',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdDistribution',\r\n 'Country',\r\n 'State',\r\n 'MetroArea',\r\n 'City',\r\n 'County',\r\n 'PostalCode',\r\n 'LocationId',\r\n 'QueryIntentCountry',\r\n 'QueryIntentState',\r\n 'QueryIntentDMA',\r\n 'QueryIntentCity',\r\n 'QueryIntentCounty',\r\n 'QueryIntentPostalCode',\r\n 'QueryIntentLocationId',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n },\r\n FeedItemPerformanceReport: {\r\n mandatory: [\r\n 'FeedItemId',\r\n ],\r\n default: [\r\n 'FeedItemId',\r\n 'AccountId',\r\n 'AccountName',\r\n 'AccountNumber',\r\n 'CampaignId',\r\n 'CampaignName',\r\n 'AdGroupId',\r\n 'AdId',\r\n 'FeedId',\r\n 'Impressions',\r\n 'Clicks',\r\n 'Spend',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Conversions',\r\n 'Revenue',\r\n 'ConversionRate',\r\n 'ReturnOnAdSpend',\r\n ],\r\n },\r\n ConversionModelCompareReport: {\r\n mandatory: [\r\n 'CampaignName',\r\n ],\r\n default: [\r\n 'Goal',\r\n 'LCAFullConversionCredit', // All conv. (LCA)\r\n 'DDAFullConversionCredit', // All conv. (DDA)\r\n 'ChangeInConversionCreditPct', // % Change in All conv.\r\n 'LCAFullAdvertiserReportedRevenue', // All conv. revenue (LCA)\r\n 'DDAFullAdvertiserReportedRevenue', // All conv. revenue (DDA)\r\n 'ChangeInAdvertiserReportedRevenuePct', // % Change in All conv. revenue\r\n 'LCAFullViewThroughConversion', // View-through conv. (LCA)\r\n 'DDAFullViewThroughConversion', // View-through conv. (DDA)\r\n 'ChangeInFullViewThroughConversionPct', // % Change in View-through conv.\r\n 'LCAFullViewAdvertiserReportedRevenue', // View-through conv. revenue (LCA)\r\n 'DDAFullViewAdvertiserReportedRevenue', // View-through conv. revenue (DDA)\r\n 'ChangeInFullViewAdvertiserReportedRevenuePct', // % Change in View-through conv. revenue\r\n ],\r\n },\r\n MSXAccountPerformanceReport: {\r\n mandatory: [\r\n 'CampaignName',\r\n ],\r\n default: [\r\n 'GregorianDate',\r\n 'msxPublisher',\r\n 'msxDeliveredMarket',\r\n 'msxDevice',\r\n 'msxPageType',\r\n 'msxPlacementId',\r\n 'msxServedRevenue',\r\n 'msxServedImpressions',\r\n 'msxViewedImpressions',\r\n 'msxAdClicks',\r\n ],\r\n },\r\n SearchInsightPerformanceReport: {\r\n default: [\r\n 'SearchCategory',\r\n 'Impressions',\r\n 'Clicks',\r\n 'Conversions',\r\n 'Revenue',\r\n 'CTR',\r\n 'ConversionRate',\r\n 'SearchVolume',\r\n ],\r\n mandatory: [\r\n 'SearchCategory',\r\n ],\r\n linechartDefault: [\r\n 'SearchCategory',\r\n ],\r\n barchartDefault: [\r\n 'SearchCategory',\r\n ],\r\n },\r\n CombinationPerformanceReport: {\r\n mandatory: [],\r\n default: [\r\n 'CustomerId',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n 'AccountId',\r\n 'CampaignName',\r\n 'CampaignId',\r\n 'CampaignType',\r\n 'AdGroupId',\r\n 'AdGroupName',\r\n 'AssetGroupId',\r\n 'AssetGroupName',\r\n 'AdId',\r\n 'AdType',\r\n 'Headline1',\r\n 'Headline2',\r\n 'Headline3',\r\n 'CombinationLongHeadline',\r\n 'Description1',\r\n 'Description2',\r\n 'Image',\r\n 'Logo',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Spend',\r\n 'Conversions',\r\n ],\r\n },\r\n\r\n};\r\n\r\n","export const adExtension = {\r\n AdExtensionByKeywordReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Keyword',\r\n 'AdExtensionType',\r\n 'ClickType',\r\n 'Impressions',\r\n 'Clicks',\r\n 'TotalClicks',\r\n 'CTR',\r\n 'Conversions',\r\n 'AverageCPC',\r\n 'ConversionRate',\r\n 'Spend',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'AdExtensionType',\r\n 'Keyword',\r\n ],\r\n },\r\n AdExtensionByAdReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdType',\r\n 'AdTitle',\r\n 'TitlePart1',\r\n 'TitlePart2',\r\n 'TitlePart3',\r\n 'AdExtensionType',\r\n 'ClickType',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Conversions',\r\n 'AverageCPC',\r\n 'ConversionRate',\r\n 'Spend',\r\n 'CostPerConversion',\r\n ],\r\n mandatory: [\r\n 'AdExtensionType',\r\n ],\r\n },\r\n AdExtensionDetailReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdExtensionType',\r\n 'AdExtensionTypeId',\r\n 'AdExtensionId',\r\n 'AdExtensionPropertyValue',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Conversions',\r\n 'CostPerConversion',\r\n 'ConversionRate',\r\n 'Spend',\r\n 'AverageCPC',\r\n ],\r\n mandatory: [\r\n 'AdExtensionType',\r\n 'AdExtensionTypeId',\r\n 'AdExtensionId',\r\n 'AdExtensionPropertyValue',\r\n ],\r\n },\r\n CallDetailReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'StartTime',\r\n 'EndTime',\r\n 'Duration',\r\n ],\r\n mandatory: [\r\n 'StartTime',\r\n 'EndTime',\r\n ],\r\n },\r\n};\r\n","export const advancedInsights = {\r\n 'AccountPerformanceReport-SixWeeks': {\r\n mandatory: [\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n ],\r\n default: [\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n ],\r\n },\r\n 'AccountPerformanceReport-TwoMonths': {\r\n mandatory: [\r\n 'CustomerName',\r\n 'AccountName',\r\n 'CustomerId',\r\n 'AccountNumber',\r\n ],\r\n default: [\r\n 'CustomerName',\r\n 'AccountName',\r\n 'CustomerId',\r\n 'AccountNumber',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'Conversions',\r\n ],\r\n },\r\n 'AccountPerformanceReport-TwoYears': {\r\n mandatory: [\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n ],\r\n default: [\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'Conversions',\r\n ],\r\n },\r\n 'AccountPerformanceReport-ShareOfVoice': {\r\n mandatory: [\r\n 'Keyword',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Language',\r\n 'ImpressionSharePercent',\r\n 'BidMatchType',\r\n ],\r\n default: [\r\n 'Keyword',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Language',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'ImpressionSharePercent',\r\n 'ImpressionLostToBudgetPercent',\r\n 'ImpressionLostToRankAggPercent',\r\n 'BidMatchType',\r\n ],\r\n },\r\n};\r\n","export const billing = {\r\n BudgetSummaryReport: {\r\n mandatory: [\r\n 'Date',\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'CurrencyCode',\r\n 'MonthlyBudget',\r\n 'DailySpend',\r\n 'MonthToDateSpend',\r\n ],\r\n default: [\r\n 'Date',\r\n 'AccountNumber',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'CurrencyCode',\r\n 'ProductName',\r\n 'MonthlyBudget',\r\n 'DailySpend',\r\n 'MonthToDateSpend',\r\n ],\r\n },\r\n CustomerInvoiceReport: {\r\n default: [\r\n 'CustomerName',\r\n 'PricingMethod',\r\n 'SalesHouse',\r\n 'SoldToCountry',\r\n 'SoldToCustomerName',\r\n 'CurrencyCode',\r\n 'BilledAmount',\r\n 'BilledAmountUSD',\r\n 'BillToCountry',\r\n 'BillToCustomerNumber',\r\n 'BillToCustomerName',\r\n 'Clicks',\r\n 'DocumentNumber',\r\n 'DocumentType',\r\n 'NetRevenue',\r\n 'NetRevenueUSD',\r\n ],\r\n mandatory: [\r\n 'Month',\r\n 'Clicks',\r\n ],\r\n },\r\n BillingStatementReport: {\r\n default: [\r\n 'CustomerName',\r\n 'AccountNumber',\r\n 'CampaignName',\r\n 'BillToCountry',\r\n 'BillToCustomerNumber',\r\n 'SoldToCustomerNumber',\r\n 'BillToCustomerName',\r\n 'DocumentNumber',\r\n 'DocumentType',\r\n 'BillingType',\r\n 'NetAmountDue',\r\n ],\r\n mandatory: [\r\n 'Month',\r\n 'CustomerName',\r\n 'AccountNumber',\r\n 'BillToCountry',\r\n 'BillToCustomerName',\r\n 'DocumentNumber',\r\n 'DocumentType',\r\n 'NetAmountDue',\r\n ],\r\n },\r\n InsertionOrderReport: {\r\n default: [\r\n 'IOReportMonth',\r\n 'AccountName',\r\n 'AccountNumber',\r\n 'BillToCustomerName',\r\n 'BillToCustomerNumber',\r\n 'InsertionOrderDetails',\r\n 'ChangeType',\r\n 'ChangeAmount',\r\n 'RemainingIOBudget',\r\n 'CurrencyCode',\r\n 'BillingDocumentNumber',\r\n 'InsertionOrderId',\r\n 'AccountId',\r\n 'BDAmount',\r\n 'MismatchedAmount',\r\n 'MismatchedReason',\r\n 'BudgetChangedAmount',\r\n 'SpendAmount',\r\n 'AdjustmentAmount',\r\n 'BudgetChangeOldValue',\r\n 'BudgetChangeNewValue',\r\n ],\r\n mandatory: [\r\n 'ChangeType',\r\n 'ChangeAmount',\r\n 'InsertionOrderDetails',\r\n ],\r\n },\r\n};\r\n","export const changeHistory = {\r\n SearchCampaignChangeHistoryReport: {\r\n mandatory: [\r\n 'DateTime',\r\n ],\r\n default: [\r\n 'DateTime',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'ChangedBy',\r\n 'EntityName',\r\n 'AttributeChanged',\r\n 'ItemChanged',\r\n 'HowChanged',\r\n 'OldValue',\r\n 'NewValue',\r\n ],\r\n },\r\n UserRoleChangeHistoryReport: {\r\n default: [\r\n 'CustomerName',\r\n 'AccountName',\r\n 'ChangeMadeBy',\r\n 'ChangeMadeTo',\r\n 'AttributeChanged',\r\n 'HowChanged',\r\n 'OldValue',\r\n 'NewValue',\r\n 'DateTime',\r\n ],\r\n mandatory: [\r\n 'DateTime',\r\n ],\r\n },\r\n FraudChangeHistoryReport: {\r\n mandatory: [\r\n 'UserId',\r\n 'AccountId',\r\n 'AccountName',\r\n 'CustomerId',\r\n 'CustomerName',\r\n 'ChangeTotalCount',\r\n ],\r\n default: [\r\n 'UserId',\r\n 'AccountId',\r\n 'AccountName',\r\n 'CustomerId',\r\n 'CustomerName',\r\n 'ChangeTotalCount',\r\n ],\r\n },\r\n};\r\n\r\n","export const dsa = {\r\n DSAAutoTargetPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'DynamicAdTarget',\r\n 'Language',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Spend',\r\n ],\r\n mandatory: [\r\n 'DynamicAdTarget',\r\n ],\r\n },\r\n DSACategoryPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'Category1',\r\n 'Category2',\r\n 'Category0',\r\n 'Language',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Spend',\r\n ],\r\n mandatory: [\r\n 'Category1',\r\n 'Category2',\r\n 'Category0',\r\n ],\r\n },\r\n DSASearchQueryPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'SearchQuery',\r\n 'DynamicAdTarget',\r\n 'Language',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Spend',\r\n ],\r\n mandatory: [\r\n 'SearchQuery',\r\n ],\r\n },\r\n};\r\n\r\n","export const product = {\r\n ProductPartitionPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n 'PartitionType',\r\n 'CurrentMaxCpc',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Spend',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'AssetGroupName',\r\n ],\r\n mandatory: [\r\n 'ProductGroup',\r\n 'PartitionType',\r\n ],\r\n },\r\n ProductPartitionUnitPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n 'CurrentMaxCpc',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'AssetGroupName',\r\n ],\r\n mandatory: [\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n ],\r\n },\r\n ProductDimensionPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'MerchantProductId',\r\n 'Title',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AverageCPM',\r\n 'Spend',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'AssetGroupName',\r\n ],\r\n mandatory: [\r\n ],\r\n },\r\n ProductSearchQueryPerformanceReport: {\r\n mandatory: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'SearchQuery',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'SearchQuery',\r\n 'MerchantProductId',\r\n 'Title',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n 'PartitionType',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Spend',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'AssetGroupName',\r\n ],\r\n },\r\n ProductMatchCountReport: {\r\n mandatory: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'ProductGroup',\r\n 'MatchedProductsAtProductGroup',\r\n 'AssetGroupName',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n 'PartitionType',\r\n 'MatchedProductsAtCampaign',\r\n 'MatchedProductsAtAdGroup',\r\n 'MatchedProductsAtProductGroup',\r\n ],\r\n },\r\n ProductNegativeKeywordConflictReport: {\r\n mandatory: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'NegativeKeyword',\r\n 'AssetGroupName',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdGroupCriterionId',\r\n 'MerchantProductId',\r\n 'NegativeKeyword',\r\n 'ConflictLevel',\r\n ],\r\n },\r\n};\r\n\r\n","export const targeting = {\r\n AgeGenderAudienceReport: {\r\n mandatory: [\r\n 'AgeGroup',\r\n 'Gender',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'AdDistribution',\r\n 'AgeGroup',\r\n 'Gender',\r\n 'Impressions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Clicks',\r\n 'Conversions',\r\n 'Spend',\r\n ],\r\n },\r\n ProfessionalDemographicsAudienceReport: {\r\n mandatory: [\r\n 'AccountName',\r\n 'CompanyName',\r\n 'IndustryName',\r\n 'JobFunctionName',\r\n ],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'CompanyName',\r\n 'IndustryName',\r\n 'JobFunctionName',\r\n 'AdDistribution',\r\n 'Impressions',\r\n 'Clicks',\r\n 'Conversions',\r\n 'Spend',\r\n 'AveragePosition',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n },\r\n UserLocationPerformanceReport: {\r\n mandatory: [],\r\n default: [\r\n 'AccountName',\r\n 'Country',\r\n 'State',\r\n 'MetroArea',\r\n 'City',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'Conversions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'AssetGroupName',\r\n ],\r\n },\r\n GeographicPerformanceReport: {\r\n mandatory: [],\r\n default: [\r\n 'AccountName',\r\n 'Country',\r\n 'State',\r\n 'MetroArea',\r\n 'City',\r\n 'LocationType',\r\n 'MostSpecificLocation',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'Conversions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'AssetGroupName',\r\n ],\r\n },\r\n GenrePerformanceReport: {\r\n mandatory: [],\r\n default: [\r\n 'AccountName',\r\n 'AccountId',\r\n 'AccountNumber',\r\n 'CampaignName',\r\n 'CampaignId',\r\n 'AdGroupName',\r\n 'AdGroupId',\r\n 'Genre',\r\n 'Impressions',\r\n 'Spend',\r\n 'AverageCPM',\r\n 'AverageCPV',\r\n 'VideoViewsAt25Percent',\r\n 'VideoViewsAt50Percent',\r\n 'VideoViewsAt75Percent',\r\n 'CompletedVideoViews',\r\n 'VideoCompletionRate',\r\n ],\r\n },\r\n};\r\n","export const labels = {\r\n LabelAccountReport: {\r\n default: [\r\n 'LabelName',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n mandatory: [\r\n 'Impressions',\r\n ],\r\n },\r\n LabelCampaignReport: {\r\n default: [\r\n 'LabelName',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n mandatory: [\r\n 'Impressions',\r\n ],\r\n },\r\n LabelAdGroupReport: {\r\n default: [\r\n 'LabelName',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n mandatory: [\r\n 'Impressions',\r\n ],\r\n },\r\n LabelKeywordReport: {\r\n default: [\r\n 'LabelName',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n mandatory: [\r\n 'Impressions',\r\n ],\r\n },\r\n LabelAdReport: {\r\n default: [\r\n 'LabelName',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n mandatory: [\r\n 'Impressions',\r\n ],\r\n },\r\n};\r\n","export const hotel = {\r\n HotelDimensionPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'CampaignHotelId',\r\n 'AdvertiserHotelId',\r\n 'HotelName',\r\n 'Country',\r\n 'City',\r\n 'State',\r\n 'Brand',\r\n 'StarRating',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'Revenue',\r\n ],\r\n mandatory: [\r\n 'Impressions',\r\n ],\r\n linechartDefault: [\r\n ],\r\n barchartDefault: [\r\n ],\r\n },\r\n HotelGroupPerformanceReport: {\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'HotelGroup',\r\n 'PartitionType',\r\n 'CampaignHotelId',\r\n 'AdvertiserHotelId',\r\n 'HotelName',\r\n 'Country',\r\n 'City',\r\n 'State',\r\n 'Brand',\r\n 'StarRating',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'AverageCPC',\r\n 'Spend',\r\n 'Revenue',\r\n ],\r\n mandatory: [\r\n 'Impressions',\r\n ],\r\n linechartDefault: [\r\n ],\r\n barchartDefault: [\r\n ],\r\n },\r\n};\r\n\r\n","export const appAds = {\r\n AppsPerformanceReport: {\r\n mandatory: [],\r\n default: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'CampaignId',\r\n 'AssetGroupName',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Spend',\r\n 'Downloads',\r\n 'PostClickDownloadRate',\r\n 'CostPerDownload',\r\n 'AppInstalls',\r\n 'PostClickInstallRate',\r\n 'CPI',\r\n 'Purchases',\r\n 'PostInstallPurchaseRate',\r\n 'CPP',\r\n 'Subscriptions',\r\n 'PostInstallSubscriptionRate',\r\n 'CPS',\r\n 'Revenue',\r\n 'ReturnOnAdSpend',\r\n 'RevenuePerDownload',\r\n 'RevenuePerAppInstall',\r\n ],\r\n },\r\n};\r\n\r\n","export const assets = {\r\n AssetPerformanceReport: {\r\n mandatory: [],\r\n default: [\r\n 'AccountName',\r\n 'AccountId',\r\n 'CampaignName',\r\n 'CampaignId',\r\n 'AssetId',\r\n 'AssetContent',\r\n 'AssetType',\r\n 'AssetSource',\r\n 'Impressions',\r\n 'Clicks',\r\n 'CTR',\r\n 'Spend',\r\n 'VideoViews',\r\n 'VideoViewsAt25Percent',\r\n 'VideoViewsAt50Percent',\r\n 'VideoViewsAt75Percent',\r\n 'VideoCompletionRate',\r\n 'CompletedVideoViews',\r\n ],\r\n },\r\n};\r\n\r\n","export const marketplaceInsights = {\r\n SearchVerticalCategoryInsightsReport: {\r\n mandatory: [],\r\n default: [\r\n 'L1Vertical',\r\n 'L2Vertical',\r\n 'L3Vertical',\r\n 'Country',\r\n 'SearchesIndexed',\r\n 'ClicksIndexed',\r\n 'WeekStartingMonday',\r\n 'WoWSearches',\r\n 'WoWClicks',\r\n 'MoMSearches',\r\n 'MoMClicks',\r\n 'YoYLast1WeekSearches',\r\n 'YoYLast1WeekClicks',\r\n 'YoYLast4WeeksSearches',\r\n 'YoYLast4WeeksClicks',\r\n 'SearchesPeekWeek',\r\n 'ClicksPeekWeek',\r\n ],\r\n },\r\n SearchVerticalCategoryClickShareReport: {\r\n mandatory: [],\r\n default: [\r\n 'AccountName',\r\n 'L1Vertical',\r\n 'L2Vertical',\r\n 'L3Vertical',\r\n 'Country',\r\n 'WeekStartingMonday',\r\n 'MarketplaceClickCoverage',\r\n 'ProportionOfSpend',\r\n ],\r\n },\r\n};\r\n","import { VideoMetricColumns } from '../elevated-columns/performance';\r\n\r\nexport const restrictionSets = {\r\n AllConversions: {\r\n isAllowed: () => true,\r\n columns: [\r\n 'AllConversions',\r\n 'AllConversionRate',\r\n 'AllCostPerConversion',\r\n 'AllReturnOnAdSpend',\r\n 'AllRevenuePerConversion',\r\n 'AllRevenue',\r\n 'EstimatedAllConversions',\r\n 'EstimatedAllConversionRate',\r\n ],\r\n },\r\n AIM: {\r\n isAllowed: permissions => permissions.IsAIMCampaignEnabled,\r\n columns: [\r\n 'Headline',\r\n 'LongHeadline',\r\n 'BusinessName',\r\n 'AudienceImpressionSharePercent',\r\n 'AudienceImpressionLostToRankPercent',\r\n 'AudienceImpressionLostToBudgetPercent',\r\n 'RelativeCTR',\r\n ],\r\n },\r\n GoalCategory: {\r\n isAllowed: () => true,\r\n columns: ['GoalCategory'],\r\n },\r\n GoalType: {\r\n isAllowed: permissions =>\r\n permissions.IsInStoreTransactionAttributionSupported,\r\n columns: ['GoalType'],\r\n },\r\n AdGroupType: {\r\n isAllowed: permissions =>\r\n permissions.IsDSAMixedModeCampaignEnabled,\r\n columns: ['AdGroupType', 'AdGroupTypePreview'],\r\n },\r\n ViewConversions: {\r\n isAllowed: permissions => permissions.IsViewThroughConversionEnabled,\r\n columns: [\r\n 'ViewThroughConversions',\r\n 'FullViewConversions',\r\n ],\r\n },\r\n ViewThroughConversionsRevenue: {\r\n isAllowed: permissions => permissions.IsViewThroughConversionsRevenueEnabled,\r\n columns: [\r\n 'ViewThroughConversionRate',\r\n 'ViewThroughRevenue',\r\n 'ViewThroughCostPerConversion',\r\n 'ViewThroughReturnOnAdSpend',\r\n ],\r\n },\r\n ConversionValueRuleMetrics: {\r\n isAllowed: permissions => permissions.dynamic.ConvValueRules,\r\n columns: [\r\n 'RevenueAdjustment',\r\n 'AllRevenueAdjustment',\r\n ],\r\n },\r\n ConversionValueRuleViewThroughMetrics: {\r\n isAllowed: permissions => permissions.dynamic.ConvValueRules,\r\n columns: [\r\n 'ViewThroughRevenueAdjustment',\r\n ],\r\n },\r\n AvgPositionDeprecationPhase1: {\r\n isAllowed: permissions => permissions.IsAvgPositionDeprecationPhase1Enabled,\r\n columns: [\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n },\r\n AvgPositionDeprecationPhase2: {\r\n isAllowed: permissions => !permissions.IsAvgPositionDeprecationPhase2Enabled,\r\n columns: [\r\n 'AveragePosition',\r\n ],\r\n },\r\n VideoMetrics: {\r\n isAllowed: permssions => permssions.IsVideoAdsPerfMetricsEnabled,\r\n columns: VideoMetricColumns,\r\n },\r\n VideoMetricsV2: {\r\n isAllowed: permissions => permissions.dynamic.IsVideoAdsPerfMetricsV2Enabled,\r\n columns: ['VideoStarts', 'VideoSkips', 'CPCV'],\r\n },\r\n AdScenarioType:\r\n {\r\n isAllowed: permssions => permssions.IsVerticalAdsReportingPhase1Enabled,\r\n columns: [\r\n 'AdScenarioType',\r\n ],\r\n },\r\n NeighborhoodLocationType: {\r\n isAllowed: () => true,\r\n columns: [\r\n 'Neighborhood',\r\n 'QueryIntentNeighborhood',\r\n ],\r\n },\r\n Conversions: {\r\n isAllowed: permissions => !permissions.dynamic.PartialConversions,\r\n columns: [\r\n 'AllConversions',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'AllConversionRate',\r\n 'LowQualityConversions',\r\n 'CostPerConversion',\r\n 'ViewThroughCostPerConversion',\r\n 'ViewThroughConversionRate',\r\n 'AllCostPerConversion',\r\n ],\r\n },\r\n ConversionsQualified: {\r\n isAllowed: permissions => permissions.dynamic.PartialConversions,\r\n columns: [\r\n 'AllConversionsQualified',\r\n 'ConversionsQualified',\r\n 'ConversionRateQualified',\r\n 'AllConversionRateQualified',\r\n 'LowQualityConversionsQualified',\r\n 'CostPerConversionQualified',\r\n 'ViewThroughCostPerConversionQualified',\r\n 'ViewThroughConversionRateQualified',\r\n 'AllCostPerConversionQualified',\r\n ],\r\n },\r\n Description: {\r\n isAllowed: permssions => permssions.IsDSADynamicDescriptionPhase1Enabled,\r\n columns: [\r\n 'Description',\r\n ],\r\n },\r\n AdId: {\r\n isAllowed: () => true,\r\n columns: [\r\n 'AdId',\r\n ],\r\n },\r\n UCMReportBudgetColumns: {\r\n isAllowed: () => false,\r\n columns: [\r\n 'IncrementalBudgetAmount',\r\n 'DailyBudgetAmount',\r\n 'BudgetId',\r\n ],\r\n },\r\n CPSReporting: {\r\n isAllowed: permissions => !permissions.dynamic.CPSReporting,\r\n columns: [\r\n 'RevenuePerSale',\r\n ],\r\n },\r\n PerformanceMax: {\r\n isAllowed: permissions => permissions.dynamic.PerformanceMaxCampaigns && permissions.dynamic.PerformanceMaxCampaignsPhaseTwoReporting,\r\n columns: [\r\n 'AssetGroupId',\r\n 'AssetGroupName',\r\n 'AssetGroupStatus',\r\n 'CampaignType',\r\n ],\r\n },\r\n ReachAndFreq: {\r\n isAllowed: permissions => permissions.dynamic.ReachAndFrequency,\r\n columns: [\r\n 'AverageImpressionFrequencyPerUser',\r\n 'AverageImpressionFrequencyPerUser7Day',\r\n 'Reach',\r\n ],\r\n },\r\n ReachAndFreq7Day: {\r\n isAllowed: permissions => permissions.dynamic.ReachAndFrequency7Day,\r\n columns: [\r\n 'AverageImpressionFrequencyPerUser7Day',\r\n ],\r\n },\r\n AdStrength: {\r\n isAllowed: () => true,\r\n columns: [\r\n 'AdStrength',\r\n 'AdStrengthActionItems',\r\n ],\r\n },\r\n BoostPlacement: {\r\n isAllowed: permissions => permissions.IsAmplifyEnabled && permissions.dynamic.BoostPlacementReporting,\r\n columns: [\r\n 'PlacementName',\r\n ],\r\n },\r\n NewCustomerAcquisitionGoal: {\r\n isAllowed: permissions => permissions.dynamic.NewCustomerAcquisition,\r\n columns: [\r\n 'NewCustomerConversions',\r\n 'NewCustomerRevenue',\r\n 'NewCustomerConversionRate',\r\n 'NewCustomerReturnOnAdSpend',\r\n 'NewCustomerCPA',\r\n ],\r\n },\r\n InsertionOrderAccountLevel: {\r\n // Only show these columns for 2 scenarios: 1. for customer level. 2. for column chooser\r\n isAllowed: (permissions, isCustomerScope, isColumnChooserRenderer) => permissions.dynamic.InsertionOrderReport && (isCustomerScope || isColumnChooserRenderer),\r\n columns: [\r\n 'BillToCustomerName',\r\n 'BillToCustomerNumber',\r\n ],\r\n },\r\n InsertionOrderFilter: {\r\n isAllowed: () => false, // Disable columns in filter by default\r\n columns: [\r\n 'AccountId',\r\n 'InsertionOrderId',\r\n 'BDAmount',\r\n 'MismatchedAmount',\r\n 'MismatchedReason',\r\n 'AdjustmentCouponAmount',\r\n 'SpendCouponAmount',\r\n 'BudgetChangedAmount',\r\n 'SpendAmount',\r\n 'AdjustmentAmount',\r\n 'BudgetChangeOldValue',\r\n 'BudgetChangeNewValue',\r\n ],\r\n },\r\n InsertionOrderDisplay: {\r\n isAllowed: () => false, // Hide columns in grid by default\r\n columns: [\r\n 'AccountId',\r\n 'InsertionOrderId',\r\n 'BDAmount',\r\n 'MismatchedAmount',\r\n 'MismatchedReason',\r\n 'AdjustmentCouponAmount',\r\n 'SpendCouponAmount',\r\n 'BudgetChangedAmount',\r\n 'SpendAmount',\r\n 'AdjustmentAmount',\r\n 'BudgetChangeOldValue',\r\n 'BudgetChangeNewValue',\r\n ],\r\n },\r\n};\r\n","export const defaultSets = {\r\n AvgPositionDeprecationPhase1: {\r\n isAllowed: permssions => permssions.IsAvgPositionDeprecationPhase1Enabled,\r\n columns: [\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n ],\r\n },\r\n AvgPositionDeprecationPhase2: {\r\n isAllowed: permssions => !permssions.IsAvgPositionDeprecationPhase2Enabled,\r\n columns: [\r\n 'AveragePosition',\r\n ],\r\n },\r\n IsManualCpmEnabled: {\r\n isAllowed: permssions => permssions.IsManualCpmEnabled,\r\n columns: [\r\n 'AverageCPM',\r\n ],\r\n },\r\n};\r\n","/* eslint-disable max-len */\r\nimport { restrictionSets } from './restriction-sets';\r\nimport { defaultSets } from './default-sets';\r\n\r\nconst {\r\n AIM,\r\n AllConversions,\r\n GoalType,\r\n GoalCategory,\r\n ViewConversions,\r\n ViewThroughConversionsRevenue,\r\n ConversionValueRuleMetrics,\r\n ConversionValueRuleViewThroughMetrics,\r\n AdGroupType,\r\n AvgPositionDeprecationPhase1,\r\n AvgPositionDeprecationPhase2,\r\n VideoMetrics,\r\n VideoMetricsV2,\r\n Description,\r\n AdScenarioType,\r\n NeighborhoodLocationType,\r\n Conversions,\r\n ConversionsQualified,\r\n AdId,\r\n UCMReportBudgetColumns,\r\n CPSReporting,\r\n PerformanceMax,\r\n NewCustomerAcquisitionGoal,\r\n ReachAndFreq,\r\n ReachAndFreq7Day,\r\n AdStrength,\r\n BoostPlacement,\r\n InsertionOrderAccountLevel,\r\n InsertionOrderFilter,\r\n InsertionOrderDisplay,\r\n} = restrictionSets;\r\n\r\nconst {\r\n AvgPositionDeprecationPhase1: defaultWhenAvgPosDeprP1Enabled,\r\n AvgPositionDeprecationPhase2: defaultWhenAvgPosDeprP2Enabled,\r\n IsManualCpmEnabled: defaultWhenManualCpmEnabled,\r\n} = defaultSets;\r\n\r\nexport const restrictedColumnsByReport = {\r\n AccountPerformanceReport: [BoostPlacement, AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics, AdScenarioType, Conversions, ConversionsQualified, CPSReporting, NewCustomerAcquisitionGoal],\r\n AdDynamicTextPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n AdExtensionByAdReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified, ConversionValueRuleMetrics],\r\n AdExtensionByKeywordReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified, ConversionValueRuleMetrics],\r\n AdExtensionDetailReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified, ConversionValueRuleMetrics],\r\n AdGroupPerformanceReport: [BoostPlacement, AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AdGroupType, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, CPSReporting, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics, VideoMetricsV2, ReachAndFreq, ReachAndFreq7Day],\r\n AdPerformanceReport: [BoostPlacement, AIM, AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics, AdScenarioType, Conversions, ConversionsQualified, AdStrength, ReachAndFreq, ReachAndFreq7Day],\r\n AgeGenderAudienceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n AudiencePerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, Conversions, ConversionsQualified, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n BillingStatementReport: [],\r\n BudgetSummaryReport: [],\r\n InsertionOrderReport: [InsertionOrderAccountLevel],\r\n CallDetailReport: [],\r\n CampaignPerformanceReport: [BoostPlacement, AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, UCMReportBudgetColumns, CPSReporting, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics, ReachAndFreq, ReachAndFreq7Day, NewCustomerAcquisitionGoal],\r\n ConversionPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n DestinationURLPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n DSAAutoTargetPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, AdId, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n DSACategoryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n DSASearchQueryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Description, Conversions, ConversionsQualified, ConversionValueRuleMetrics],\r\n GeographicPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, NeighborhoodLocationType, Conversions, ConversionsQualified, PerformanceMax, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics, VideoMetricsV2],\r\n // AllConversions pilot is omitted from goals as this report has no other conversions\r\n GoalsAndFunnelsReport: [GoalType, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified],\r\n KeywordPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, AdScenarioType, Conversions, ConversionsQualified, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n NegativeKeywordConflictReport: [],\r\n ProductDimensionPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, Conversions, ConversionsQualified, CPSReporting, PerformanceMax, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n ProductMatchCountReport: [PerformanceMax],\r\n ProductNegativeKeywordConflictReport: [PerformanceMax],\r\n ProductPartitionPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, PerformanceMax, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n ProductPartitionUnitPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, Conversions, ConversionsQualified, PerformanceMax, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n ProductSearchQueryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, PerformanceMax, ConversionValueRuleMetrics],\r\n ProfessionalDemographicsAudienceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n PublisherUsagePerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, Conversions, ConversionsQualified, PerformanceMax, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics, VideoMetricsV2],\r\n SearchCampaignChangeHistoryReport: [],\r\n SearchQueryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, AdScenarioType, Conversions, ConversionsQualified, ConversionValueRuleMetrics],\r\n ShareOfVoiceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, defaultWhenManualCpmEnabled, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n UserLocationPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, NeighborhoodLocationType, Conversions, ConversionsQualified, PerformanceMax, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics, VideoMetricsV2],\r\n 'AccountPerformanceReport-SixWeeks': [AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n 'AccountPerformanceReport-TwoMonths': [AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n 'AccountPerformanceReport-TwoYears': [AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n 'AccountPerformanceReport-ShareOfVoice': [AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n LabelAdReport: [Conversions, ConversionsQualified, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n LabelCampaignReport: [Conversions, ConversionsQualified, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n LabelAdGroupReport: [Conversions, ConversionsQualified, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n LabelKeywordReport: [Conversions, ConversionsQualified, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n LabelAccountReport: [Conversions, ConversionsQualified, VideoMetricsV2, ConversionValueRuleMetrics, ConversionValueRuleViewThroughMetrics],\r\n FeedItemPerformanceReport: [Conversions, ConversionsQualified, ConversionValueRuleMetrics],\r\n};\r\n\r\nexport const defaultColumnsByReport = {\r\n AccountPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n AdDynamicTextPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n AdGroupPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n AdPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n AgeGenderAudienceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n AudiencePerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n CampaignPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n DestinationURLPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n DSAAutoTargetPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n DSACategoryPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n DSASearchQueryPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n GeographicPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n KeywordPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n ProductDimensionPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n ProductPartitionPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n ProductPartitionUnitPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n ProductSearchQueryPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n ProfessionalDemographicsAudienceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n PublisherUsagePerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n SearchQueryPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled],\r\n ShareOfVoiceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n UserLocationPerformanceReport: [defaultWhenAvgPosDeprP1Enabled, defaultWhenAvgPosDeprP2Enabled, defaultWhenManualCpmEnabled],\r\n 'AccountPerformanceReport-SixWeeks': [defaultWhenAvgPosDeprP2Enabled],\r\n 'AccountPerformanceReport-TwoMonths': [defaultWhenAvgPosDeprP2Enabled],\r\n 'AccountPerformanceReport-TwoYears': [defaultWhenAvgPosDeprP2Enabled],\r\n 'AccountPerformanceReport-ShareOfVoice': [defaultWhenAvgPosDeprP2Enabled],\r\n};\r\n\r\nexport const restrictedFilterColumnsByReport = {\r\n InsertionOrderReport: [InsertionOrderFilter],\r\n};\r\n\r\nexport const restrictedDisplayColumnsByReport = {\r\n InsertionOrderReport: [InsertionOrderDisplay],\r\n};\r\n","export const helpLinkIds = {\r\n // AbsoluteTopImpressionRatePercent\r\n AbsoluteTopImpressionRatePercent: 'pop_BA_Reporting_Clarity_AbsoluteTopImpressionRate',\r\n // AbsoluteTopImpressionShareLostToBudgetPercent\r\n AbsoluteTopImpressionShareLostToBudgetPercent: 'pop_BA_Reporting_Clarity_AbsoluteTopISLosttoBudget',\r\n // AbsoluteTopImpressionShareLostToRankPercent\r\n AbsoluteTopImpressionShareLostToRankPercent: 'pop_BA_Reporting_Clarity_AbsoluteTopISLosttoRank',\r\n // AbsoluteTopImpressionSharePercent\r\n AbsoluteTopImpressionSharePercent: 'pop_BA_Reporting_ProductAds_AbsoluteTopImpShare',\r\n // AccountId\r\n AccountId: 'pop_BA_Reporting_Clarity_AccountID',\r\n // AccountName\r\n AccountName: 'pop_BA_Reporting_Clarity_Account',\r\n // AccountNumber\r\n AccountNumber: 'pop_BA_Reporting_Clarity_AccountNumber',\r\n // AccountStatus\r\n AccountStatus: 'pop_BA_Reporting_Clarity_AccountStatus',\r\n // AdDescription\r\n AdDescription: 'pop_BA_Reporting_Clarity_AdDescription',\r\n // AdDescription2\r\n AdDescription2: 'pop_BA_Reporting_Clarity_AdDescription2',\r\n // AdDistribution\r\n AdDistribution: 'pop_BA_NewCampaignCreate_Distribute',\r\n // AdExtensionId\r\n AdExtensionId: 'pop_BA_Reporting_Clarity_AdExtID',\r\n // AdExtensionPropertyValue\r\n AdExtensionPropertyValue: 'Page_Reporting_Clarity_AdExtensionDisplayName',\r\n // AdExtensionType\r\n AdExtensionType: 'Page_Reporting_Clarity_AdExtensionTypeName',\r\n // AdExtensionTypeId\r\n AdExtensionTypeId: 'pop_BA_Reporting_Clarity_AdExtensionTypeID',\r\n // AdExtensionVersion\r\n AdExtensionVersion: 'pop_BA_Reporting_Clarity_AdExtVersion',\r\n // AdvertiserHotelId\r\n AdvertiserHotelId: 'pop_BA_Reporting_Clarity_AdvertiserHotelId',\r\n // AdGroupCriterionId\r\n AdGroupCriterionId: 'pop_BA_Reporting_Clarity_ProdTargetID',\r\n // AdGroupId\r\n AdGroupId: 'pop_BA_Reporting_Clarity_AdGroupID',\r\n // AdGroupLabels\r\n AdGroupLabels: 'pop_BA_Reporting_Clarity_AdGroupLabels',\r\n // AdGroupName\r\n AdGroupName: 'pop_BA_Reporting_Clarity_AdGroup',\r\n // AdGroupStatus\r\n AdGroupStatus: 'pop_BA_Reporting_Clarity_AdGroupStatus',\r\n // AdGroupType\r\n AdGroupType: 'pop_BA_DSA_AdGroupType',\r\n AdGroupTypePreview: 'pop_BA_DSA_AdGroupType',\r\n // AdId\r\n AdId: 'pop_BA_CampaignGrids_AdID',\r\n // AdLabels\r\n AdLabels: 'pop_BA_Reporting_Clarity_AdLabels',\r\n // AdRelevance\r\n AdRelevance: 'pop_BA_Reporting_Clarity_AdRelevance',\r\n // AdScenarioType\r\n AdScenarioType: 'pop_BA_Reporting_Clarity_VerticalAdType',\r\n // AdStatus\r\n AdStatus: 'pop_BA_Reporting_Clarity_AdStatus',\r\n // AdStrength\r\n AdStrength: 'pop_BA_Reporting_AdStrength',\r\n // AdStrengthActionItems\r\n AdStrengthActionItems: 'pop_BA_Reporting_AdStrengthSuggestions',\r\n // AdTitle\r\n AdTitle: 'pop_BA_Reporting_Clarity_AdTitle',\r\n // AdType\r\n AdType: 'pop_BA_CampaignGrids_AdType',\r\n // AgeGroup\r\n AgeGroup: 'pop_BA_Reporting_Clarity_AgeGroup',\r\n // AgencyName\r\n AgencyName: 'pop_BA_Reporting_Clarity_Agency',\r\n // AllConversionRate\r\n AllConversionRate: 'pop_BA_CampaignGrids_AllConvRate',\r\n AllConversionRateQualified: 'pop_BA_CampaignGrids_AllConvRate',\r\n // AllConversions\r\n AllConversions: 'pop_BA_CampaignGrids_AllConv',\r\n AllConversionsQualified: 'pop_BA_CampaignGrids_AllConv',\r\n // AllCostPerConversion\r\n AllCostPerConversion: 'pop_BA_CampaignGrids_AllConvCPA',\r\n AllCostPerConversionQualified: 'pop_BA_CampaignGrids_AllConvCPA',\r\n // AllReturnOnAdSpend\r\n AllReturnOnAdSpend: 'pop_BA_CampaignGrids_AllConvROAS',\r\n // AllRevenue\r\n AllRevenue: 'pop_BA_CampaignGrids_AllConvRevenue',\r\n // AllRevenuePerConversion\r\n AllRevenuePerConversion: 'pop_BA_Reporting_Clarity_AllRevenueConversion',\r\n // AreaCode\r\n AreaCode: 'pop_BA_Reporting_Clarity_AreaCode',\r\n // AssistedClicks\r\n AssistedClicks: 'pop_BA_Reporting_CoopClicks',\r\n // AssistedConversions\r\n AssistedConversions: 'pop_BA_Reporting_CoopConv',\r\n // AssistedImpressions\r\n AssistedImpressions: 'pop_BA_Reporting_CoopImpr',\r\n // Assists\r\n Assists: 'Page_Reporting_Clarity_Assists',\r\n // AssociationId\r\n AssociationId: 'pop_BA_Reporting_Clarity_AssociationID',\r\n // AssociationLevel\r\n AssociationLevel: 'pop_BA_Reporting_Clarity_Level',\r\n // AssociationStatus\r\n AssociationStatus: 'pop_BA_AudienceStatus',\r\n // AttributeChanged\r\n AttributeChanged: 'pop_BA_Reporting_Clarity_AttributeChange',\r\n // AudienceId\r\n AudienceId: 'pop_BA_Reporting_Clarity_AudienceID',\r\n AudienceImpressionSharePercent: 'pop_BA_Reporting_Clarity_AudienceNetwork_ImpressionShare',\r\n AudienceImpressionLostToRankPercent: 'pop_BA_Reporting_Clarity_AudienceNetwork_ImpressionShare_LostRank',\r\n AudienceImpressionLostToBudgetPercent: 'pop_BA_Reporting_Clarity_AudienceNetwork_ImpressionShare_LostBudget',\r\n // AudienceName\r\n AudienceName: 'pop_BA_Reporting_Clarity_AudienceName',\r\n // AudienceType\r\n AudienceType: 'pop_BA_AudienceCategory',\r\n // AverageCPC\r\n AverageCPC: 'pop_BA_CampaignGrids_AvgCPC',\r\n // AverageCPM\r\n AverageCPM: 'Page_Reporting_Clarity_AverageCPM',\r\n // AverageCpp\r\n AverageCpp: 'pop_BA_CampaignGrids_AvgCPP',\r\n // Average impression frequency\r\n AverageImpressionFrequencyPerUser: 'pop_BA_Avg_Impr_Freq',\r\n AverageImpressionFrequencyPerUser7Day: 'pop_BA_Avg_Impr_Freq_Days',\r\n // AveragePosition\r\n AveragePosition: 'pop_BA_CampaignGrids_AvgPosition',\r\n // AvgBookedABW\r\n AvgBookedABW: 'pop_BA_Reporting_Clarity_AvgBookedABW',\r\n // AvgBookedNights\r\n AvgBookedNights: 'pop_BA_Reporting_Clarity_AvgBookedNights',\r\n BaseCampaignId: 'Pop_BA_Reporting_Clarity_BaseCampaignID',\r\n // BenchmarkBid\r\n BenchmarkBid: 'pop_BA_Reporting_Clarity_BenchmarkBid',\r\n // BenchmarkCtr\r\n BenchmarkCtr: 'pop_BA_Reporting_Clarity_BenchmarkCTR',\r\n // BidAdjustment\r\n BidAdjustment: 'pop_BA_AudienceBidAdj',\r\n // BidMatchType\r\n BidMatchType: 'Page_Reporting_Clarity_BidMatchType',\r\n // BidStrategyType\r\n BidStrategyType: 'pop_BA_Reporting_Clarity_BidStrategy',\r\n // BilledAmount\r\n BilledAmount: 'pop_BA_Reporting_Clarity_BillAmount',\r\n BilledAmountUSD: 'pop_BA_Reporting_Clarity_BillAmountUSD',\r\n // BillingType\r\n BillingType: 'pop_BA_Reporting_Clarity_BillingType',\r\n // BillToCustomerName\r\n BillToCustomerName: 'pop_BA_Reporting_Clarity_BillToName',\r\n // BillToCustomerNumber\r\n BillToCustomerNumber: 'pop_BA_AccountsGrid_BillTo',\r\n // BillToCountry\r\n BillToCountry: 'pop_BA_Reporting_Clarity_BillToCountry',\r\n // BookedABW\r\n BookedABW: 'pop_BA_Reporting_Clarity_BookedABW',\r\n // BookedLengthOfStay\r\n BookedLengthOfStay: 'pop_BA_Reporting_Clarity_BookedLengthOfStay',\r\n // Brand\r\n Brand: 'pop_BA_Reporting_Clarity_Brand',\r\n // BudgetAssociationStatus\r\n BudgetAssociationStatus: 'pop_BA_Reporting_Clarity_BudgetAssociation',\r\n // BudgetName\r\n BudgetName: 'pop_BA_Reporting_Clarity_Budget',\r\n // BudgetStatus\r\n BudgetStatus: 'pop_BA_Reporting_Clarity_BudgetStatus',\r\n // BusinessName\r\n BusinessName: 'pop_BA_Reporting_Clarity_BusinessName',\r\n // CPA\r\n CPA: 'Page_Reporting_Clarity_CPA',\r\n // CTR\r\n CTR: 'pop_BA_CampaignGrids_CTR',\r\n // CampaignHotelId\r\n CampaignHotelId: 'pop_BA_Reporting_Clarity_CampaignHotelId',\r\n // CampaignId\r\n CampaignId: 'pop_BA_Reporting_Clarity_CampaignID',\r\n // CampaignLabels\r\n CampaignLabels: 'pop_BA_Reporting_Clarity_CampaignLabels',\r\n // CampaignName\r\n CampaignName: 'pop_BA_Reporting_Clarity_Campaign',\r\n // CampaignStatus\r\n CampaignStatus: 'pop_BA_Reporting_Clarity_CampaignStatus',\r\n // CampaignType\r\n CampaignType: 'pop_BA_Reporting_Clarity_CampaignType',\r\n // Category\r\n Category: 'pop_BA_Reporting_Clarity_Category',\r\n // Category0\r\n Category0: 'pop_BA_Reporting_Clarity_DSA_TopLevelCategory',\r\n // Category1\r\n Category1: 'pop_BA_Reporting_Clarity_DSA_FirstLevelCategory',\r\n // Category2\r\n Category2: 'pop_BA_Reporting_Clarity_DSA_SecondLevelCategory',\r\n // CategoryList\r\n CategoryList: 'pop_BA_Reporting_Clarity_DSA_CategoryList',\r\n // ChangeMadeBy\r\n ChangeMadeBy: 'pop_BA_Reporting_Clarity_ChangedBy',\r\n // ChangeMadeTo\r\n ChangeMadeTo: 'pop_BA_Reporting_Clarity_User',\r\n ChangeTotalCount: null,\r\n // ChangedBy\r\n ChangedBy: 'pop_BA_Reporting_Clarity_ChangedBy',\r\n // CheckInDate\r\n CheckInDate: 'pop_BA_Reporting_Clarity_CheckInDate',\r\n // City\r\n City: 'pop_BA_Reporting_Clarity_CityLocation',\r\n // ClickCalls\r\n ClickCalls: 'pop_BA_CampaignGrids_ClickCalls',\r\n // ClickSharePercent\r\n ClickSharePercent: 'pop_BA_Reporting_Clarity_ClickShare',\r\n // ClickType\r\n ClickType: 'pop_BA_Reporting_Clarity_ClickType',\r\n // ClickTypeId\r\n ClickTypeId: 'pop_BA_Reporting_product_ads_click_type',\r\n // Clicks\r\n Clicks: 'pop_BA_CampaignGrids_Clicks',\r\n // CombinationLongHeadline\r\n CombinationLongHeadline: 'pop_BA_Reporting_Clarity_LongHeadline',\r\n // CompanyName\r\n CompanyName: 'pop_BA_Reporting_Clarity_CompanyName',\r\n // Condition\r\n Condition: 'pop_BA_Reporting_Clarity_Condition',\r\n // ConflictLevel\r\n ConflictLevel: 'pop_BA_Reporting_Clarity_ConflictLevel',\r\n // ConflictType\r\n ConflictType: 'pop_BA_Reporting_Clarity_ConflictType',\r\n // ConversionRate\r\n ConversionRate: 'pop_BA_CampaignGrids_ConvRate',\r\n ConversionRateQualified: 'pop_BA_CampaignGrids_ConvRate',\r\n // Conversions\r\n Conversions: 'pop_BA_CampaignGrids_Conv',\r\n ConversionsQualified: 'pop_BA_CampaignGrids_Conv',\r\n // CostPerAssist\r\n CostPerAssist: 'pop_BA_Reporting_Clarity_CostPerAssist',\r\n // CostPerConversion\r\n CostPerConversion: 'Page_Reporting_Clarity_CPA',\r\n CostPerConversionQualified: 'Page_Reporting_Clarity_CPA',\r\n // Country\r\n Country: 'pop_BA_Reporting_Clarity_CountryRegion',\r\n // Feed Label\r\n FeedLabel: 'pop_BA_BMC_FeedLabel',\r\n // CountryOfSale\r\n CountryOfSale: 'pop_BA_Reporting_Clarity_ProductCountryofSale',\r\n // CountryName\r\n CountryName: 'pop_BA_Reporting_Clarity_CountryName',\r\n // County\r\n County: 'pop_BA_Reporting_Clarity_CountyLocation',\r\n // CurrencyCode\r\n CurrencyCode: 'Page_Accounts_Details_Currency',\r\n // CurrentMaxCpc\r\n CurrentMaxCpc: 'pop_BA_Reporting_Clarity_MaxCPC',\r\n // CustomLabel0\r\n CustomLabel0: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomLabel1\r\n CustomLabel1: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomLabel2\r\n CustomLabel2: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomLabel3\r\n CustomLabel3: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomLabel4\r\n CustomLabel4: 'pop_BA_Reporting_Clarity_CustomLabel',\r\n // CustomParameters\r\n CustomParameters: 'pop_BA_Reporting_Clarity_CustomParameters',\r\n // CustomerId\r\n CustomerId: 'pop_BA_Reporting_Clarity_Customer',\r\n // CustomerName\r\n CustomerName: 'pop_BA_Reporting_Clarity_CustomerName',\r\n // DailySpend\r\n DailySpend: 'pop_BA_Reporting_Clarity_SpendDaily',\r\n // Date\r\n Date: 'pop_BA_Reporting_Clarity_Date',\r\n // DateTime\r\n DateTime: 'pop_BA_Reporting_Clarity_Date',\r\n // DateType\r\n DateType: 'pop_BA_Reporting_Clarity_DateType',\r\n // DayOfWeek\r\n DayOfWeek: 'pop_BA_Reporting_Clarity_DayOfWeek',\r\n // DeliveredMatchType\r\n DeliveredMatchType: 'Page_Reporting_Clarity_DeliveredMatchType',\r\n // Description1\r\n Description1: 'pop_BA_RSA_Combo_Description',\r\n // Description2\r\n Description2: 'pop_BA_RSA_Combo_Description',\r\n // DestinationUrl\r\n DestinationUrl: 'pop_BA_CampaignGrids_DestinationURL',\r\n // DeviceOS\r\n DeviceOS: 'pop_BA_Reporting_Clarity_DeviceOS',\r\n // DeviceType\r\n DeviceType: 'pop_BA_Reporting_Clarity_DeviceType',\r\n // DisplayUrl\r\n DisplayUrl: 'pop_BA_Reporting_Clarity_DisplayURL',\r\n // DocumentNumber\r\n DocumentNumber: 'pop_BA_Reporting_Clarity_DocumentNum',\r\n // DocumentType\r\n DocumentType: 'pop_BA_Reporting_Clarity_DocumentType',\r\n // Duration\r\n Duration: 'pop_BA_Reporting_Clarity_Duration',\r\n // DynamicAdTarget\r\n DynamicAdTarget: 'pop_BA_Reporting_Clarity_DSA_AutoTarget',\r\n // DynamicAdTargetId\r\n DynamicAdTargetId: 'pop_BA_Reporting_Clarity_DSA_AutoTargetId',\r\n // DynamicAdTargetStatus\r\n DynamicAdTargetStatus: 'pop_BA_Reporting_Clarity_DSA_AutoTargetStatus',\r\n // EligibleImpressions\r\n EligibleImpressions: 'pop_BA_Reporting_Clarity_EligibleImpressions',\r\n // ExcludeZeroClicks\r\n ExcludeZeroClicks: null,\r\n // EndTime\r\n EndTime: 'pop_BA_Reporting_Clarity_CallEndTime',\r\n // EntityId\r\n EntityId: 'pop_BA_Reporting_Clarity_EntityID',\r\n // EntityName\r\n EntityName: 'pop_BA_Reporting_Clarity_EntityName',\r\n // ExactMatchImpressionSharePercent\r\n ExactMatchImpressionSharePercent: 'Page_Reporting_Clarity_ExactMatchImpressionShare',\r\n // ExpectedCtr\r\n ExpectedCtr: 'Page_Reporting_Clarity_KeywordRelevance',\r\n // ExtendedCost\r\n ExtendedCost: 'pop_BA_Reporting_Clarity_ExtendedCost',\r\n // FeedUrl\r\n FeedUrl: 'pop_BA_Reporting_Clarity_DSA_FeedURL',\r\n // FinalAppUrl\r\n FinalAppUrl: 'pop_BA_Reporting_Clarity_FinalAppURL',\r\n // FinalMobileUrl\r\n FinalMobileUrl: 'pop_BA_Reporting_Clarity_FinalMobileURL',\r\n // FinalUrl\r\n FinalUrl: 'pop_BA_Reporting_Clarity_FinalURL',\r\n // FinalUrlSuffix\r\n FinalUrlSuffix: 'pop_BA_NewAdCreate_FinalURLSuffix',\r\n // FirstPageBid\r\n FirstPageBid: 'pop_BA_CampaignGrids_FirstPage',\r\n // FullViewConversions\r\n FullViewConversions: 'pop_BA_Reporting_Clarity_ViewThrough',\r\n // Gender\r\n Gender: 'pop_BA_Reporting_Clarity_Gender',\r\n // Goal\r\n Goal: 'pop_BA_Reporting_Clarity_Goal',\r\n // GoalCategory\r\n GoalCategory: 'pop_BA_Reporting_Clarity_GoalCategory',\r\n // GoalId\r\n GoalId: 'pop_BA_Reporting_Clarity_GoalID',\r\n // GoalType\r\n GoalType: 'pop_BA_Reporting_Clarity_GoalType',\r\n // GregorianDate\r\n GregorianDate: 'pop_BA_Reporting_Clarity_Date',\r\n // GrossReturnOnAdSpend\r\n GrossReturnOnAdSpend: 'pop_BA_Reporting_Clarity_GrossReturnOnAdSpend',\r\n GTIN: 'pop_BA_DimensionGrid_GTIN',\r\n // Headline\r\n Headline: 'pop_BA_Reporting_Clarity_DSA_Headline',\r\n // Headline1\r\n Headline1: 'pop_BA_RSA_Combo_Headline',\r\n // Headline2\r\n Headline2: 'pop_BA_RSA_Combo_Headline',\r\n // Headline3\r\n Headline3: 'pop_BA_RSA_Combo_Headline',\r\n // Description\r\n Description: 'pop_BA_Reporting_Clarity_DSA_Description',\r\n // HistoricalAdRelevance\r\n HistoricalAdRelevance: 'pop_BA_Reporting_Clarity_HistoricAdRelevance',\r\n // HistoricalExpectedCtr\r\n HistoricalExpectedCtr: 'pop_BA_Reporting_Clarity_HistoricCTR',\r\n // HistoricalLandingPageExperience\r\n HistoricalLandingPageExperience: 'pop_BA_Reporting_Clarity_HistoricLandingPage',\r\n // HistoricalQualityScore\r\n HistoricalQualityScore: 'pop_BA_Reporting_Clarity_HistoricQS',\r\n // HotelGroup\r\n HotelGroup: 'pop_BA_Reporting_Clarity_HotelGroup',\r\n // HotelGroupNodeId\r\n HotelGroupNodeId: 'pop_BA_Reporting_Clarity_HotelGroupNodeId',\r\n // HotelName\r\n HotelName: 'pop_BA_Reporting_Clarity_HotelName',\r\n // HourOfDay\r\n HourOfDay: 'pop_BA_Reporting_Clarity_HourOfDay',\r\n // HowChanged\r\n HowChanged: 'pop_BA_Reporting_Clarity_HowChanged',\r\n // Image\r\n Image: 'pop_BA_Reporting_Combination_Image',\r\n // ImpressionLostToAdRelevancePercent\r\n ImpressionLostToAdRelevancePercent: 'pop_BA_Reporting_Clarity_ImpShrLostRev',\r\n // ImpressionLostToBidPercent\r\n ImpressionLostToBidPercent: 'pop_BA_Reporting_Clarity_ImpShrLostBid',\r\n // ImpressionLostToBudgetPercent\r\n ImpressionLostToBudgetPercent: 'pop_BA_Reporting_Clarity_ImpShrLostBudget',\r\n // ImpressionLostToExpectedCtrPercent\r\n ImpressionLostToExpectedCtrPercent: 'pop_BA_Reporting_Clarity_ImpShrLostClickThru',\r\n // ImpressionLostToRankAggPercent\r\n ImpressionLostToRankAggPercent: 'pop_BA_Reporting_Clarity_ImpShrLostRank',\r\n // ImpressionLostToRankPercent\r\n ImpressionLostToRankPercent: 'pop_BA_Reporting_Clarity_ImpShrLostRank',\r\n // ImpressionShare\r\n ImpressionShare: 'pop_BA_Reporting_Clarity_ImpressionShare',\r\n // ImpressionSharePercent\r\n ImpressionSharePercent: 'Page_Reporting_Clarity_ImpressionShare',\r\n // Impressions\r\n Impressions: 'pop_BA_CampaignGrids_Impr',\r\n // IndustryName\r\n IndustryName: 'pop_BA_Reporting_Clarity_IndustryName',\r\n // ItemChanged\r\n ItemChanged: 'pop_BA_Reporting_Clarity_EntityType',\r\n // JobFunctionName\r\n JobFunctionName: 'pop_BA_Reporting_Clarity_JobFunctionName',\r\n // Keyword\r\n Keyword: 'pop_BA_Reporting_Clarity_Keyword',\r\n // KeywordId\r\n KeywordId: 'pop_BA_Reporting_Clarity_KeywordID',\r\n // KeywordLabels\r\n KeywordLabels: 'pop_BA_Reporting_Clarity_KeywordLabels',\r\n // KeywordStatus\r\n KeywordStatus: 'pop_BA_Reporting_Clarity_KeywordStatus',\r\n // LandingPageExperience\r\n LandingPageExperience: 'Page_Reporting_Clarity_LandingPageUserExperience',\r\n // LandingPageTitle\r\n LandingPageTitle: 'pop_BA_Reporting_Clarity_DSA_LandingPageTitle',\r\n // Language\r\n Language: 'pop_BA_Reporting_Clarity_Language',\r\n // LocalStoreCode\r\n LocalStoreCode: 'pop_BA_Reporting_Local_Store_Code',\r\n // LocationId\r\n LocationId: 'pop_BA_Reporting_Clarity_LocationIdPhysicalLocation',\r\n // LocationType\r\n LocationType: 'pop_BA_Reporting_Clarity_LocationType',\r\n // Logo\r\n Logo: 'pop_BA_Reporting_Combination_Logo',\r\n // LongHeadline\r\n LongHeadline: 'pop_BA_Reporting_Clarity_LongHeadline',\r\n // LowQualityClicks\r\n LowQualityClicks: 'pop_BA_Reporting_Clarity_LowQualityClicks',\r\n // LowQualityClicksPercent\r\n LowQualityClicksPercent: 'pop_BA_Reporting_Clarity_LowQualityClickRate',\r\n // LowQualityConversionRate\r\n LowQualityConversionRate: 'pop_BA_Reporting_Clarity_LowQualityClickConvRate',\r\n // LowQualityConversions\r\n LowQualityConversions: 'pop_BA_Reporting_Clarity_LowQualityClickConv',\r\n LowQualityConversionsQualified: 'pop_BA_Reporting_Clarity_LowQualityClickConv',\r\n // LowQualityGeneralClicks\r\n LowQualityGeneralClicks: 'pop_BA_Reporting_Clarity_LowQualityGeneralClicks',\r\n // LowQualityImpressions\r\n LowQualityImpressions: 'pop_BA_Reporting_Clarity_LowQualityImp',\r\n // LowQualityImpressionsPercent\r\n LowQualityImpressionsPercent: 'pop_BA_Reporting_Clarity_LowQualityImpRate',\r\n // LowQualitySophisticatedClicks\r\n LowQualitySophisticatedClicks: 'pop_BA_Reporting_Clarity_LowQualitySophisticatedClicks',\r\n // Mainline1Bid\r\n Mainline1Bid: 'pop_BA_CampaignGrids_TopPage',\r\n // MainlineBid\r\n MainlineBid: 'pop_BA_CampaignGrids_TopPage',\r\n // ManualCalls\r\n ManualCalls: 'pop_BA_CampaignGrids_ManualCalls',\r\n // MatchedProductsAtAdGroup\r\n MatchedProductsAtAdGroup: 'pop_BA_BSC_ProductTargeted',\r\n // MatchedProductsAtCampaign\r\n MatchedProductsAtCampaign: 'pop_BA_BSC_ProductTargeted',\r\n // MatchedProductsAtProductGroup\r\n MatchedProductsAtProductGroup: 'pop_BA_BSC_ProductTargeted',\r\n // MerchantProductId\r\n MerchantProductId: 'pop_BA_Reporting_Clarity_MerchantProductID',\r\n // MetroArea\r\n MetroArea: 'pop_BA_Reporting_Clarity_MetroPhysical',\r\n // MissedImpressions\r\n MissedImpressions: 'pop_BA_Reporting_Clarity_MissedImpressions',\r\n // MissedImpressionsNoBid\r\n MissedImpressionsNoBid: 'pop_BA_Reporting_Clarity_MissedImpressionsNoBid',\r\n // MissedImpressionsNoTax\r\n MissedImpressionsNoTax: 'pop_BA_Reporting_Clarity_MissedImpressionsNoTax',\r\n // MissedImpressionsOther\r\n MissedImpressionsOther: 'pop_BA_Reporting_Clarity_MissedImpressionsOther',\r\n // MissedImpressionsSpendingCapReached\r\n MissedImpressionsSpendingCapReached: 'pop_BA_Reporting_Clarity_MissedImpressionsSpendingCapReached',\r\n // Month\r\n Month: 'pop_BA_Reporting_Clarity_Month',\r\n // MonthToDateSpend\r\n MonthToDateSpend: 'pop_BA_Reporting_Clarity_SpendMonthly',\r\n // MonthlyBudget\r\n MonthlyBudget: 'pop_BA_Reporting_Clarity_MonthlyBudget',\r\n // MostSpecificLocation\r\n MostSpecificLocation: 'pop_BA_Reporting_Clarity_MostSpecific',\r\n MPN: 'pop_BA_DimensionGrid_MPN',\r\n // NegativeKeyword\r\n NegativeKeyword: 'pop_BA_Reporting_Clarity_NegativeKeyword',\r\n // NegativeKeyWordList\r\n NegativeKeywordList: 'pop_BA_CampaignGrids_NegKWInList',\r\n // NegativeKeywordId\r\n NegativeKeywordId: 'pop_BA_Reporting_Clarity_NegKeywordID',\r\n // NegativeKeywordListId\r\n NegativeKeywordListId: 'pop_BA_Reporting_Clarity_NegKeywordListID',\r\n // NegativeKeywordMatchType\r\n NegativeKeywordMatchType: 'pop_BA_Reporting_Clarity_NegativeKeywordMatchID',\r\n Neighborhood: 'pop_BA_Reporting_Clarity_NeighborhoodLocation',\r\n // NetAmountDue\r\n NetAmountDue: 'pop_BA_Reporting_Clarity_NetDue',\r\n // NetReturnOnAdSpend\r\n NetReturnOnAdSpend: 'pop_BA_Reporting_Clarity_NetReturnOnAdSpend',\r\n // NetRevenue\r\n NetRevenue: 'pop_BA_Reporting_Clarity_NetRevenue',\r\n // NetRevenueUSD\r\n NetRevenueUSD: 'pop_BA_Reporting_Clarity_NetRevenueUSD',\r\n // Network\r\n Network: 'Page_Reporting_Clarity_Network',\r\n // NewValue\r\n NewValue: 'pop_BA_Reporting_Clarity_NewValue',\r\n // OfferLanguage\r\n OfferLanguage: 'pop_BA_Reporting_Clarity_ProductOfferLanguage',\r\n // OldValue\r\n OldValue: 'pop_BA_Reporting_Clarity_OldValue',\r\n // Param1\r\n Param1: 'pop_BA_Reporting_Clarity_Param1',\r\n // Param2\r\n Param2: 'pop_BA_Reporting_Clarity_Param2',\r\n // Param3\r\n Param3: 'pop_BA_Reporting_Clarity_Param3',\r\n // PartitionType\r\n PartitionType: 'pop_BA_Reporting_Clarity_ProductPartitionType',\r\n // PartnerImpressions\r\n PartnerImpressions: 'pop_BA_Reporting_Clarity_PartnerImpressions',\r\n // Path1\r\n Path1: 'pop_BA_Reporting_Clarity_Path1',\r\n // Path2\r\n Path2: 'pop_BA_Reporting_Clarity_Path2',\r\n // PhoneCalls\r\n PhoneCalls: 'pop_BA_Reporting_Clarity_PhoneCalls',\r\n // PhoneImpressions\r\n PhoneImpressions: 'pop_BA_CampaignGrids_PhoneImpr',\r\n // PostalCode\r\n PostalCode: 'pop_BA_Reporting_Clarity_ZipCode',\r\n // Price\r\n Price: 'pop_BA_Reporting_Clarity_Price',\r\n // Pricing Method\r\n PricingMethod: 'pop_BA_Reporting_Clarity_PricingMethod',\r\n // ProductBought\r\n ProductBought: 'pop_BA_Reporting_Clarity_ProductBought',\r\n ProductBoughtTitle: 'pop_BA_DimensionGrid_ProductBoughtTitle',\r\n // ProductCategory1\r\n ProductCategory1: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductCategory2\r\n ProductCategory2: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductCategory3\r\n ProductCategory3: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductCategory4\r\n ProductCategory4: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductCategory5\r\n ProductCategory5: 'pop_BA_Reporting_Clarity_Category',\r\n // ProductGroup\r\n ProductGroup: 'pop_BA_Reporting_Clarity_ProductGroup',\r\n // ProductName\r\n ProductName: 'pop_BA_Reporting_Clarity_ProductName',\r\n // ProductType1\r\n ProductType1: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProductType2\r\n ProductType2: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProductType3\r\n ProductType3: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProductType4\r\n ProductType4: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProductType5\r\n ProductType5: 'pop_BA_Reporting_Clarity_ProductType',\r\n // ProximityTargetLocation\r\n ProximityTargetLocation: 'pop_BA_Reporting_Clarity_Proximity',\r\n // Ptr\r\n Ptr: 'pop_BA_CampaignGrids_PTR',\r\n // PublisherUrl\r\n PublisherUrl: 'pop_BA_Reporting_Clarity_WebsitePubURL',\r\n // QualityImpact\r\n QualityImpact: 'Page_Reporting_Clarity_QualityImpact',\r\n // QualityScore\r\n QualityScore: 'Page_Reporting_Clarity_QualityScore',\r\n // QuantityBought\r\n QuantityBought: 'pop_BA_Reporting_Clarity_QuantityBought',\r\n // Quarter\r\n Quarter: 'Pop_BA_DimensionGrid_Quarter',\r\n // QueryIntentCity\r\n QueryIntentCity: 'pop_BA_Reporting_Clarity_CitySearchFor',\r\n // QueryIntentCountry\r\n QueryIntentCountry: 'pop_BA_Reporting_Clarity_CountrySearchFor',\r\n // QueryIntentCounty\r\n QueryIntentCounty: 'pop_BA_Reporting_Clarity_CountySearchFor',\r\n // QueryIntentDMA\r\n QueryIntentDMA: 'pop_BA_Reporting_Clarity_MetroSearchFor',\r\n // QueryIntentLocationId\r\n QueryIntentLocationId: 'pop_BA_Reporting_Clarity_LocationIdSearchFor',\r\n QueryIntentNeighborhood: 'pop_BA_Reporting_Clarity_NeighborhoodSearchFor',\r\n // QueryIntentPostalCode\r\n QueryIntentPostalCode: 'pop_BA_Reporting_Clarity_ZipCodeSearchFor',\r\n // QueryIntentState\r\n QueryIntentState: 'pop_BA_Reporting_Clarity_StateSearchFor',\r\n // Radius\r\n Radius: 'pop_BA_Reporting_Clarity_Radius',\r\n // Unique Reach\r\n Reach: 'pop_BA_Unique_Reach',\r\n RelativeCTR: 'pop_BA_Reporting_Clarity_RelativeCTR',\r\n // ReturnOnAdSpend\r\n ReturnOnAdSpend: 'pop_BA_CampaignGrids_ReturnAdSpend',\r\n // ReturnOnAdSpendCPS\r\n ReturnOnAdSpendCPS: 'pop_BA_CampaignGrids_ReturnAdSpend',\r\n // Revenue\r\n Revenue: 'pop_BA_CampaignGrids_Revenue',\r\n // RevenueCPS\r\n RevenueCPS: 'pop_BA_CampaignGrids_Revenue',\r\n // RevenuePerAssist\r\n RevenuePerAssist: 'pop_BA_Reporting_Clarity_RevenueAssist',\r\n // RevenuePerConversion\r\n RevenuePerConversion: 'pop_BA_Reporting_Clarity_RevenueConversion',\r\n // Sales house\r\n SalesHouse: 'pop_BA_Reporting_Clarity_SalesHouse',\r\n // SearchQuery\r\n SearchQuery: 'pop_BA_Reporting_Clarity_SearchTerm',\r\n // SellerName\r\n SellerName: 'pop_BA_Reporting_Clarity_SellerName',\r\n // SoldToCustomerName\r\n SoldToCustomerName: 'pop_BA_Reporting_Clarity_SoldToName',\r\n // SoldToCustomerNumber\r\n SoldToCustomerNumber: 'pop_BA_Reporting_Clarity_SoldToNumber',\r\n // SoldToCountry\r\n SoldToCountry: 'pop_BA_Reporting_Clarity_SoldToCountry',\r\n // Spend\r\n Spend: 'pop_BA_CampaignGrids_Spend',\r\n // StarRating\r\n StarRating: 'pop_BA_Reporting_Clarity_StarRating',\r\n // StartTime\r\n StartTime: 'pop_BA_Reporting_Clarity_CallStartTime',\r\n // State\r\n State: 'pop_BA_Reporting_Clarity_StatePhysical',\r\n // Status\r\n Status: 'pop_BA_Reporting_Clarity_AdGroupStatus',\r\n // TargetingSetting\r\n TargetingSetting: 'pop_BA_AudienceTarget',\r\n // TimePeriod\r\n TimePeriod: 'pop_BA_Reporting_Clarity_Date',\r\n // StoreId\r\n StoreId: 'pop_BA_Reporting_Store_ID',\r\n // TimePeriod-DayOfWeek\r\n 'TimePeriod-DayOfWeek': 'pop_BA_Reporting_Clarity_DayOfWeek',\r\n // TimePeriod-HourOfDay\r\n 'TimePeriod-HourOfDay': 'pop_BA_Reporting_Clarity_HourOfDay',\r\n // Title\r\n Title: 'pop_BA_Reporting_Clarity_Title',\r\n // TitlePart1\r\n TitlePart1: 'pop_BA_Reporting_Clarity_AdTitle1',\r\n // TitlePart2\r\n TitlePart2: 'pop_BA_Reporting_Clarity_AdTitle2',\r\n // TitlePart3\r\n TitlePart3: 'pop_BA_Reporting_Clarity_AdTitle3',\r\n // Tool\r\n Tool: 'pop_BA_Reporting_Clarity_Tool',\r\n // TopImpressionRatePercent\r\n TopImpressionRatePercent: 'pop_BA_Reporting_Clarity_TopImpressionRate',\r\n // TopImpressionShareLostToBudgetPercent\r\n TopImpressionShareLostToBudgetPercent: 'pop_BA_Reporting_Clarity_TopImpressionLosttoBudget',\r\n // TopImpressionShareLostToRankPercent\r\n TopImpressionShareLostToRankPercent: 'pop_BA_Reporting_Clarity_TopImpressionLosttoRank',\r\n // TopImpressionSharePercent\r\n TopImpressionSharePercent: 'pop_BA_Reporting_Clarity_TopImpressionShare',\r\n // TopVsOther\r\n TopVsOther: 'Page_Reporting_Clarity_TopVsOther',\r\n // TotalClicks\r\n TotalClicks: 'pop_BA_Reporting_Clarity_AdExtTotalClicks',\r\n // TotalClicksOnAdElements\r\n TotalClicksOnAdElements: 'pop_BA_Reporting_Ad_Element_Total_Clicks',\r\n // TrackingTemplate\r\n TrackingTemplate: 'pop_BA_Reporting_Clarity_TrackingTemplate',\r\n // UserId\r\n UserId: 'pop_BA_Reporting_Clarity_UserID',\r\n // WebsiteCoverage\r\n WebsiteCoverage: 'pop_BA_Reporting_Clarity_DSA_WebsiteCoverage',\r\n // Week\r\n Week: 'pop_BA_Reporting_Clarity_Week',\r\n // WeekStartingMonday\r\n WeekStartingMonday: 'pop_BA_Reporting_Clarity_WeekStartingMonday',\r\n // ViewThroughConversions\r\n ViewThroughConversions: 'pop_BA_Reporting_Clarity_ViewThrough',\r\n // ViewThroughConversionsRevenue\r\n ViewThroughRevenue: 'pop_BA_Reporting_Clarity_ViewThroughConvRevenue',\r\n // ViewThroughConversionsCPA\r\n ViewThroughCostPerConversion: 'pop_BA_Reporting_Clarity_ViewThroughConvCPA',\r\n ViewThroughCostPerConversionQualified: 'pop_BA_Reporting_Clarity_ViewThroughConvCPA',\r\n // ViewThroughConversionsReturnOnAdSpend\r\n ViewThroughReturnOnAdSpend: 'pop_BA_Reporting_Clarity_ViewThroughConvReturnOnAdSpend',\r\n // ViewThroughConversionsRate\r\n ViewThroughConversionRate: 'pop_BA_Reporting_Clarity_ViewThroughConvRate',\r\n ViewThroughConversionRateQualified: 'pop_BA_Reporting_Clarity_ViewThroughConvRate',\r\n // Year\r\n Year: 'pop_BA_Reporting_Clarity_Year',\r\n /** Video metrics */\r\n VideoViews: 'pop_BA_VideoAds_VideoViews',\r\n ViewThroughRate: 'pop_BA_VideoAds_ViewThroughRate',\r\n AverageCPV: 'pop_BA_VideoAds_AverageCPV',\r\n TotalWatchTimeInMS: 'Page_CampaignGrids_TotalWatchTimeInMS',\r\n AverageWatchTimePerImpression: 'pop_BA_VideoAds_AverageWatchTimePerImpression',\r\n AverageWatchTimePerVideoView: 'pop_BA_VideoAds_AverageWatchTimePerVideoView',\r\n VideoViewsAt25Percent: 'pop_BA_VideoAds_VideoViewsAt25Percent',\r\n VideoViewsAt50Percent: 'pop_BA_VideoAds_VideoViewsAt50Percent',\r\n VideoViewsAt75Percent: 'pop_BA_VideoAds_VideoViewsAt75Percent',\r\n CompletedVideoViews: 'pop_BA_VideoAds_CompletedVideoViews',\r\n VideoCompletionRate: 'Page_CampaignGrids_VideoCompletionRate',\r\n\r\n ChangeInAdvertiserReportedRevenuePct: 'pop_BA_Reporting_Clarity_AllConvChangeRevenue', // '% Change in All conv. revenue'\r\n ChangeInAllConvRatePct: 'pop_BA_Reporting_Clarity_AllConvChangeRate', // '% Change in All conv. rate'\r\n ChangeInConversionCreditPct: '% Change in All conv.', // pop_BA_Reporting_Clarity_AllConvChange\r\n ChangeInCPAPct: 'pop_BA_Reporting_Clarity_AllConvChangeCpa', // '% Change in CPA'\r\n ChangeInFullViewAdvertiserReportedRevenuePct: 'pop_BA_Reporting_Clarity_AllConv_ViewThroughConvRevenue', // '% Change in View-through conv. revenue'\r\n ChangeInFullViewThroughConversionPct: 'pop_BA_Reporting_Clarity_AllConvChange_ViewThrough', // '% Change in View-through conv.'\r\n ChangeInROASPct: 'pop_BA_Reporting_Clarity_AllConvChangAdSpend', // '% Change in Return on ad spend'\r\n ChangeInViewThroughRatePct: 'pop_BA_Reporting_Clarity_AllConvChangeRate', // '% Change in View-through conv. rate'\r\n ChangeInVTCCPAPct: 'pop_BA_Reporting_Clarity_AllConvChange_ViewThroughCpa', // '% Change in View-through conv. CPA'\r\n ChangeInVTCROASPct: 'pop_BA_Reporting_Clarity_AllConvChange_ViewT_ROAS', // '% Change in View-through conv. return on ad spend'\r\n DDAAllConvRate: 'pop_BA_Reporting_Clarity_AllConvRateDda', // 'All conv. rate (DDA)'\r\n DDACPA: 'pop_BA_Reporting_Clarity_AllConvCPA_Dda', // 'CPA (DDA)'\r\n DDAFullAdvertiserReportedRevenue: 'pop_BA_Reporting_Clarity_AllConvRevenueDda', // 'All conv. revenue (DDA)'\r\n DDAFullConversionCredit: 'pop_BA_Reporting_Clarity_AllConvDda', // 'All conv. (DDA)',\r\n DDAFullViewAdvertiserReportedRevenue: 'pop_BA_Reporting_Clarity_ViewThroughRevenueDda', // 'View-through conv. revenue (DDA)'\r\n DDAFullViewThroughConversion: 'pop_BA_Reporting_Clarity_ViewThrough_Dda', // 'View-through conv. (DDA)'\r\n DDAROAS: 'pop_BA_Reporting_Clarity_AllConvROAS_Dda', // 'Return on ad spend (DDA)'\r\n DDAViewThroughRate: 'pop_BA_Reporting_Clarity_ViewThroughConvRateDda', // 'View-through conv. rate (DDA)'\r\n DDAVTCCPA: 'pop_BA_Reporting_Clarity_ViewThroughConvCpa_Dda', // 'View-through conv. CPA (DDA)'\r\n DDAVTCROAS: 'pop_BA_Reporting_Clarity_ViewTConv_ROAS_Dda', // 'View through conv. return on ad spend (DDA)'\r\n LCAAllConvRate: 'pop_BA_Reporting_Clarity_AllConvRateLca', // 'All conv. rate (LCA)'\r\n LCACPA: 'pop_BA_Reporting_Clarity_AllConvCPA_Lca', // 'CPA (LCA)'\r\n LCAFullAdvertiserReportedRevenue: 'pop_BA_Reporting_Clarity_AllConvRevenueLca', // 'All conv. revenue (LCA)'\r\n LCAFullConversionCredit: 'pop_BA_Reporting_Clarity_AllConvLca ', // 'All conv. (LCA)',\r\n LCAFullViewAdvertiserReportedRevenue: 'pop_BA_Reporting_Clarity_ViewThroughRevenueLca', // 'View-through conv. revenue (LCA)'\r\n LCAFullViewThroughConversion: 'pop_BA_Reporting_Clarity_ViewThrough_Lca', // 'View-through conv. (LCA)'\r\n LCAROAS: 'pop_BA_Reporting_Clarity_AllConvROAS_LCA', // 'Return on ad spend (LCA)'\r\n LCAViewThroughRate: 'pop_BA_Reporting_Clarity_ViewThroughConvRateLca', // 'View-through conv. rate (LCA)'\r\n LCAVTCCPA: 'pop_BA_Reporting_Clarity_ViewThroughConvCpa_Lca', // 'View-through conv. CPA (LCA)'\r\n LCAVTCROAS: 'pop_BA_Reporting_Clarity_ViewTConv_ROAS_Lca', // 'View-through conv. return on ad spend (LCA)'\r\n IsMainConversionGoal: 'pop_BA_Reporting_Clarity_IncludedInConv', // 'Include in converions'\r\n Installs: 'pop_BA_StoreAds_Install',\r\n CostPerInstall: 'pop_BA_StoreAds_CostPerInstall',\r\n RevenuePerInstall: 'pop_BA_StoreAds_RevenuePerInstall',\r\n Sales: 'pop_BA_StoreAds_Sales',\r\n CostPerSale: 'pop_BA_StoreAds_CostPerSale',\r\n RevenuePerSale: 'pop_BA_StoreAds_RevenuePerSale',\r\n\r\n AssetGroupId: 'pop_BA_Reporting_AssetGroupID',\r\n AssetGroupName: 'pop_BA_Reporting_AssetGroup',\r\n AssetGroupStatus: 'pop_BA_Reporting_AssetGroup_Status',\r\n\r\n // App ads camapign reporting metrics\r\n Downloads: 'pop_BA_AppAds_Downloads',\r\n PostClickDownloadRate: 'pop_BA_AppAds_DownloadRate',\r\n CostPerDownload: 'pop_BA_AppAds_CostPerDownload',\r\n AppInstalls: 'pop_BA_AppAds_Installs',\r\n PostClickInstallRate: 'pop_BA_AppAds_InstallRate',\r\n CPI: 'pop_BA_AppAds_CostPerInstall',\r\n Purchases: 'pop_BA_AppAds_InAppPurchase',\r\n PostInstallPurchaseRate: 'pop_BA_AppAds_PostInstallPurchase',\r\n CPP: 'pop_BA_AppAds_CostPerInAppPurchase',\r\n Subscriptions: 'pop_BA_AppAds_InAppSubscription',\r\n PostInstallSubscriptionRate: 'pop_BA_AppAds_PostInstallSubscription',\r\n CPS: 'pop_BA_AppAds_CostPerInAppSubscription',\r\n RevenuePerDownload: 'pop_BA_AppAds_RevenuePerDownload',\r\n RevenuePerAppInstall: 'pop_BA_AppAds_RevenuePerInstall',\r\n\r\n // Insertion order report metrics\r\n ChangeAmount: 'pop_BA_Accounts_IO_IOReportsAmount',\r\n ChangeType: 'pop_BA_Accounts_IO_IOReportsChangeType',\r\n RemainingIOBudget: 'pop_BA_AccountsGrid_BudgetRem',\r\n InsertionOrderDetails: 'pop_BA_Accounts_IO_IOReportsDetails',\r\n BillingDocumentNumber: 'pop_BA_Accounts_IO_IOReportsBillingDoc',\r\n\r\n // Asset reporting metrics\r\n AssetId: 'pop_BA_AssetID',\r\n AssetContent: 'pop_BA_AssetContent',\r\n AssetType: 'pop_BA_Asset_type',\r\n AssetSource: 'pop_BA_AssetSource',\r\n\r\n // Search term insight reporting metrics\r\n SearchCategory: 'pop_BA_SearchCategory',\r\n SearchVolume: 'pop_BA_SearchVolume',\r\n\r\n /** Marketplace insights metrics */\r\n L1Vertical: 'Pop_BA_Reporting_L1Vertical',\r\n L2Vertical: 'Pop_BA_Reporting_L2Vertical',\r\n L3Vertical: 'Pop_BA_Reporting_L3Vertical',\r\n SearchesIndexed: 'pop_BA_Reporting_Searches',\r\n ClicksIndexed: 'pop_BA_AssetLibraryPerformance_Clicks',\r\n WoWSearches: 'Pop_BA_Reporting_WoWSearches',\r\n WoWClicks: 'Pop_BA_Reporting_WoWClicks',\r\n MoMSearches: 'Pop_BA_Reporting_MoMSearches',\r\n MoMClicks: 'Pop_BA_Reporting_MoMClicks',\r\n YoYLast1WeekSearches: 'Pop_BA_Reporting_YoYSearches',\r\n YoYLast1WeekClicks: 'Pop_BA_Reporting_YoYClicks',\r\n YoYLast4WeeksSearches: 'Pop_BA_Reporting_YoYLFWSearches',\r\n YoYLast4WeeksClicks: 'Pop_BA_Reporting_YoYLFWClicks',\r\n SearchesPeekWeek: 'Pop_BA_Reporting_PeakWeeklySearches',\r\n ClicksPeekWeek: 'Pop_BA_Reporting_PeakWeeklyClicks',\r\n MarketplaceClickCoverage: 'Pop_BA_Reporting_ClicksharePercentage',\r\n ProportionOfSpend: 'Pop_BA_Reporting_ProportionSpend',\r\n\r\n // New Customer Acqusition Goal\r\n NewCustomerConversions: 'pop_BA_PMAX_NewCustomerConv',\r\n NewCustomerRevenue: 'pop_BA_PMAX_NewCustomerConvValue',\r\n NewCustomerConversionRate: 'pop_BA_PMAX_NewCustomerConvRate',\r\n NewCustomerReturnOnAdSpend: 'pop_BA_PMAX_NewCustomerConROAS',\r\n NewCustomerCPA: 'pop_BA_PMAX_NewCustomerConCPA',\r\n};\r\n\r\nexport const helpLinkIdsByReportType = {\r\n GenrePerformanceReport: {\r\n CampaignName: 'pop_BA_VideoAds_Reporting_CampaignAdGroup',\r\n CampaignId: 'pop_BA_VideoAds_Reporting_CampaignAdGroup',\r\n AdGroupName: 'pop_BA_VideoAds_Reporting_CampaignAdGroup',\r\n AdGroupId: 'pop_BA_VideoAds_Reporting_CampaignAdGroup',\r\n Genre: 'pop_BA_VideoAds_Reporting_Genre',\r\n Impressions: 'pop_BA_VideoAds_Reporting_Impressions',\r\n VideoViewsAt25Percent: 'pop_BA_Columns_VideoViews25',\r\n VideoViewsAt50Percent: 'pop_BA_Columns_VideoViews50',\r\n VideoViewsAt75Percent: 'pop_BA_Columns_VideoViews75',\r\n CompletedVideoViews: 'pop_BA_CampaignGrids_CompletedVideoViews',\r\n AverageCPM: 'pop_BA_VideoAds_Reporting_CPM',\r\n AverageCPV: 'pop_BA_VideoAds_Reporting_CPCV',\r\n Spend: 'pop_BA_VideoAds_Reporting_TotalSpend',\r\n VideoCompletionRate: 'pop_BA_CampaignGrids_VideoCompletionRate',\r\n },\r\n};\r\n","// This error message will be displayed when 'MandateColumnSet' from report interface was violated.\r\nexport const missingMandatoryColumnErrors = {\r\n ProductDimensionPerformanceReport: _TL_('You must select at least one attribute and performance statistic in order for the report to run. Examples of attributes are Brand or Merchant product ID. Examples of performance statistics are Clicks or Impressions.'),\r\n HotelDimensionPerformanceReport: _TL_('You must select at least one attribute and performance statistic in order for the report to run.'),\r\n};\r\n","import _ from 'underscore';\r\n\r\nconst enumBlackList = {\r\n LanguageCode: ['NO'],\r\n};\r\n\r\nexport function processFilters(fields, ColumnsSchema) {\r\n return _.mapObject(fields, (rawField, rawKey) => {\r\n const field = {\r\n ...rawField,\r\n filterable: true,\r\n };\r\n\r\n if (ColumnsSchema && ColumnsSchema[rawKey]) {\r\n field.displayType = ColumnsSchema[rawKey].DisplayType;\r\n }\r\n\r\n if (enumBlackList[rawKey]) {\r\n field.enum = _.difference(field.enum, enumBlackList[rawKey]);\r\n }\r\n\r\n return field;\r\n });\r\n}\r\n","import _ from 'underscore';\r\nimport { getCustomizedOption } from './columns/customize-option';\r\n\r\nfunction processCategory(\r\n columns, mandatoryColumns, aggregationRestrictions,\r\n columnNames, helpLinkIds\r\n) {\r\n return _.map(columns, (value, key) => {\r\n const node = {\r\n // value (type info) is not used by column chooser, but we need it for report data grid\r\n key,\r\n name: _.result(columnNames, key, key),\r\n type: _.result(value, 'DisplayType', ''),\r\n sortable: _.has(value, 'Sortable') ? value.Sortable : true,\r\n };\r\n\r\n if (aggregationRestrictions[key]) {\r\n node.forbiddenTimeGrains = aggregationRestrictions[key];\r\n }\r\n if (mandatoryColumns[key]) {\r\n node.selectOption = 'mandatory';\r\n }\r\n if (_.has(helpLinkIds, key)) {\r\n node.helpTopic = helpLinkIds[key];\r\n }\r\n const customizedOption = getCustomizedOption({ columnKey: key });\r\n\r\n return { ...node, ...customizedOption };\r\n });\r\n}\r\n\r\nexport function processColumns(\r\n categories, mandatoryColumns,\r\n aggregationRestrictions = {}, columnNames = {}, helpLinkIds = {}\r\n) {\r\n return _.map(categories, (category, key) => ({\r\n name: _.result(columnNames, key, key),\r\n type: key,\r\n options: processCategory(\r\n category, mandatoryColumns, aggregationRestrictions,\r\n columnNames, helpLinkIds\r\n ),\r\n }));\r\n}\r\n","export function getCustomizedOption({ columnKey }) {\r\n switch (columnKey) {\r\n case 'ChangeAmount':\r\n return {\r\n width: 200,\r\n };\r\n case 'InsertionOrderDetails':\r\n return {\r\n width: 300,\r\n };\r\n default:\r\n return null;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { processSharedFields } from './shared-field-processor';\r\nimport { processFilters } from './filter-processor';\r\nimport { processColumns } from './column-processor';\r\nimport { getAggregationRestrictions } from './columns/get-aggregation-restrictions';\r\nimport { preprocessReportSchemaForTimeColumns } from './polyFillReportSchema';\r\n\r\nexport function processSchema(\r\n entitySchema, sharedSchema,\r\n elevatedColumns, pilotRestrictionSets, pilotDefaultSets,\r\n columnNames, helpLinkIds = {}, timeRangeOverride, missingMandatoryColumnError, restrictedFilterColumnsSets, displayRestrictedSets\r\n) {\r\n const rawSchema = entitySchema.properties;\r\n // pass-through fields\r\n const reportSchema = _.pick(rawSchema, 'ReportAggregation', 'ExclusionSets', 'ScopeFilterLevel', 'MandateColumnSet', 'Priority');\r\n reportSchema.SchemaName = rawSchema.SchemaName;\r\n reportSchema.ReportType = entitySchema.name;\r\n\r\n if (reportSchema.MandateColumnSet) {\r\n reportSchema.MissingMandatoryColumnError = missingMandatoryColumnError;\r\n }\r\n\r\n const supportedAggregations = reportSchema.ReportAggregation.enum;\r\n reportSchema.ReportAggregation.default = _.contains(supportedAggregations, 'Summary') ? 'Summary' : supportedAggregations[0];\r\n reportSchema.DataRetention =\r\n _.object(\r\n supportedAggregations,\r\n _.map(supportedAggregations, value => (value === 'Hourly' || value === 'HourOfDay' ? rawSchema.DataRetention.Hourly : rawSchema.DataRetention.Daily))\r\n );\r\n\r\n if (timeRangeOverride) {\r\n reportSchema.TimeRanges = timeRangeOverride;\r\n }\r\n\r\n // filter fields\r\n const filterFields = rawSchema.Filters.properties;\r\n const flatternedFilters = processSharedFields(filterFields, sharedSchema.filters);\r\n const processedFilter = processFilters(flatternedFilters, rawSchema.DimensionColumns);\r\n _.extend(reportSchema, {\r\n Filters: {\r\n type: rawSchema.Filters.type,\r\n properties: processedFilter,\r\n piloted: pilotRestrictionSets,\r\n restrictedFilterColumns: restrictedFilterColumnsSets,\r\n },\r\n });\r\n\r\n // column chooser fields\r\n const validCategories = ['TimeColumns', 'DimensionColumns', 'MetricColumns'];\r\n const columnGroups = _.pick(rawSchema, (node, key) =>\r\n _.contains(validCategories, key) && !_.isEmpty(node));\r\n const {\r\n default: defaultColumns,\r\n linechartDefault,\r\n barchartDefault,\r\n mandatory: mandatoryColumns,\r\n } = elevatedColumns;\r\n // For those have mandatory columns more than 4(so far account report and destinationUrl report),\r\n // we don't show chart, because they have more than one row\r\n const RenderTypes = ['Table']\r\n .concat(linechartDefault && mandatoryColumns.length < 4 ? ['Linechart'] : [])\r\n .concat(barchartDefault && mandatoryColumns.length < 4 ? ['Barchart'] : []);\r\n\r\n let allMandatoryColumnsMap = {};\r\n\r\n if (rawSchema.SchemaName !== 'UIUnifiedPreview') {\r\n const allMondatoryColumns = _.union(rawSchema.RequiredColumns, mandatoryColumns);\r\n allMandatoryColumnsMap = _.object(allMondatoryColumns, allMondatoryColumns);\r\n }\r\n\r\n const aggregationRestrictions = getAggregationRestrictions(rawSchema);\r\n\r\n const processedColumns =\r\n processColumns(\r\n columnGroups, allMandatoryColumnsMap, aggregationRestrictions,\r\n columnNames, helpLinkIds\r\n );\r\n _.extend(reportSchema, {\r\n RenderTypes,\r\n Columns: {\r\n categories: processedColumns,\r\n default: defaultColumns,\r\n linechartDefault,\r\n barchartDefault,\r\n piloted: pilotRestrictionSets,\r\n pilotDefault: pilotDefaultSets,\r\n displayRestricted: displayRestrictedSets,\r\n },\r\n });\r\n preprocessReportSchemaForTimeColumns(reportSchema);\r\n\r\n return reportSchema;\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function processSharedFields(fields, shared) {\r\n return _.mapObject(fields, (field) => {\r\n const fieldSchema = field.$schema || '';\r\n const sharedSchema = _.result(shared, fieldSchema.replace('shared/filters/', ''));\r\n\r\n return sharedSchema;\r\n });\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport const getAggregationRestrictions = (rawSchema) => {\r\n const output = {};\r\n if (!rawSchema.AggregationExclusion) {\r\n return output;\r\n }\r\n _.forEach(rawSchema.AggregationExclusion, (node, timeGrain) => {\r\n if (_.isArray(node)) {\r\n _.forEach(node, (columnKey) => {\r\n if (!output[columnKey]) {\r\n output[columnKey] = [];\r\n }\r\n output[columnKey].push(timeGrain);\r\n });\r\n }\r\n });\r\n return output;\r\n};\r\n\r\n","function preprocessTimeColumnsExclusionSets(schema) {\r\n const { ExclusionSets } = schema;\r\n // skip if it has been polyfilled\r\n if (!('DimensionColumns_TimeCategory' in ExclusionSets)) {\r\n ExclusionSets.DimensionColumns_TimeCategory = ['Week'];\r\n ExclusionSets.MetricColumns_TimeCategory = ['WeekStartingMonday'];\r\n }\r\n}\r\n\r\nexport function preprocessReportSchemaForTimeColumns(reportSchema) {\r\n preprocessTimeColumnsExclusionSets(reportSchema);\r\n}\r\n","export const timeRangeOverride = {\r\n 'AccountPerformanceReport-SixWeeks':\r\n {\r\n Weekly: ['LastSixWeeksStartingSun', 'Custom'],\r\n WeeklyStartingMonday: ['LastSixWeeksStartingMon', 'Custom'],\r\n },\r\n 'AccountPerformanceReport-TwoMonths': {\r\n Monthly: ['LastTwoMonths', 'Custom'],\r\n },\r\n 'AccountPerformanceReport-TwoYears': {\r\n Monthly: ['LastTwoYears', 'Custom'],\r\n },\r\n};\r\n","/* eslint-disable camelcase */\r\nimport _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nimport {\r\n Shared,\r\n Columns,\r\n AccountPerformanceReportUIPreviewV1,\r\n CampaignPerformanceReportUIPreviewV1,\r\n AdGroupPerformanceReportUIPreviewV1,\r\n SearchQueryPerformanceReportUIPreviewV1,\r\n KeywordPerformanceReportUIPreviewV1,\r\n AccountPerformanceReport_ShareOfVoiceUIPreviewV1,\r\n AccountPerformanceReport_SixWeeksUIPreviewV1,\r\n AccountPerformanceReport_TwoMonthsUIPreviewV1,\r\n AccountPerformanceReport_TwoYearsUIPreviewV1,\r\n AdDynamicTextPerformanceReportUIPreviewV1,\r\n AdExtensionByAdReportUIPreviewV1,\r\n AdExtensionByKeywordReportUIPreviewV1,\r\n AdExtensionDetailReportUIPreviewV1,\r\n AdPerformanceReportUIPreviewV1,\r\n AgeGenderAudienceReportUIPreviewV1,\r\n AudiencePerformanceReportUIPreviewV1,\r\n CallDetailReportUIPreviewV1,\r\n ConversionPerformanceReportUIPreviewV1,\r\n DestinationURLPerformanceReportUIPreviewV1,\r\n DSAAutoTargetPerformanceReportUIPreviewV1,\r\n DSACategoryPerformanceReportUIPreviewV1,\r\n DSASearchQueryPerformanceReportUIPreviewV1,\r\n FraudChangeHistoryReportUIPreviewV1,\r\n GeographicPerformanceReportUIPreviewV1,\r\n GoalsAndFunnelsReportUIPreviewV1,\r\n NegativeKeywordConflictReportUIPreviewV1,\r\n ProductDimensionPerformanceReportUIPreviewV1,\r\n ProductMatchCountReportUIPreviewV1,\r\n ProductNegativeKeywordConflictReportUIPreviewV1,\r\n ProductPartitionPerformanceReportUIPreviewV1,\r\n ProductPartitionUnitPerformanceReportUIPreviewV1,\r\n ProductSearchQueryPerformanceReportUIPreviewV1,\r\n ProfessionalDemographicsAudienceReportUIPreviewV1,\r\n PublisherUsagePerformanceReportUIPreviewV1,\r\n SearchCampaignChangeHistoryReportUIPreviewV1,\r\n ShareOfVoiceReportUIPreviewV1,\r\n UserLocationPerformanceReportUIPreviewV1,\r\n UserRoleChangeHistoryReportUIPreviewV1,\r\n LabelCampaignReportUIPreviewV1,\r\n LabelAdGroupReportUIPreviewV1,\r\n LabelAccountReportUIPreviewV1,\r\n LabelKeywordReportUIPreviewV1,\r\n LabelAdReportUIPreviewV1,\r\n BudgetSummaryReportUIPreviewV1,\r\n BillingStatementReportUIPreviewV1,\r\n InsertionOrderReportUIPreviewV1,\r\n CustomerInvoiceReportUIPreviewV1,\r\n HotelDimensionPerformanceReportUIPreviewV1,\r\n HotelGroupPerformanceReportUIPreviewV1,\r\n FeedItemPerformanceReportUIPreviewV1,\r\n ConversionModelCompareReportUIPreviewV1,\r\n MSXAccountPerformanceReportUIPreviewV1,\r\n GenrePerformanceReportUIPreviewV1,\r\n AppsPerformanceReportUIPreviewV1,\r\n AssetPerformanceReportUIPreviewV1,\r\n SearchInsightPerformanceReportUIPreviewV1,\r\n SearchVerticalCategoryClickShareReportUIPreviewV1,\r\n SearchVerticalCategoryInsightsReportUIPreviewV1,\r\n CombinationPerformanceReportUIPreviewV1,\r\n} from '@bingads-webui/report-ui-interface-preview';\r\nimport { i18nMap } from '@bingads-webui-campaign/report-shared';\r\nimport { elevatedColumnsMap } from './columns/elevated-columns';\r\nimport { restrictedColumnsByReport, defaultColumnsByReport, restrictedFilterColumnsByReport, restrictedDisplayColumnsByReport } from './columns/piloted-columns';\r\nimport { helpLinkIds, helpLinkIdsByReportType } from './columns/help-link-ids';\r\nimport { missingMandatoryColumnErrors } from './columns/missing-mandatory-column-error';\r\nimport { processSchema } from './schema-processor';\r\nimport { timeRangeOverride } from './overrides/time-range-override';\r\n\r\nconst dynamicPermissions = _.result(config.get('permissions'), 'dynamic', {});\r\nconst { IsRenameHotelToLodgingEnabled, CPSReporting } = dynamicPermissions;\r\n\r\nif (IsRenameHotelToLodgingEnabled) {\r\n i18nMap.ColumnName.AdvertiserHotelId = _TL_('Advertiser property ID');\r\n i18nMap.ColumnName.CampaignHotelId = _TL_('Campaign property ID');\r\n i18nMap.ColumnName.HotelGroup = _TL_('Property group');\r\n i18nMap.ColumnName.HotelGroupNodeId = _TL_('Property group node id');\r\n i18nMap.ColumnName.SourceHotelId = _TL_('Source property ID');\r\n i18nMap.ColumnName.HotelName = _TL_('Property name');\r\n helpLinkIds.CampaignHotelId = 'pop_BA_Reporting_Clarity_CampaignPropertyId';\r\n helpLinkIds.AdvertiserHotelId = 'pop_BA_Reporting_Clarity_AdvertiserPropertyId';\r\n helpLinkIds.HotelGroup = 'pop_BA_Reporting_Clarity_PropertyGroup';\r\n helpLinkIds.HotelGroupNodeId = 'pop_BA_Reporting_Clarity_PropertyGroupNodeId';\r\n}\r\n\r\n/* istanbul ignore if */\r\nif (CPSReporting) {\r\n i18nMap.ColumnName.CostPerSale = _TL_('Avg. CPS');\r\n i18nMap.ColumnName.Sales = _TL_('Sales Count');\r\n}\r\n\r\nconst process = _.memoize(\r\n rawSchema =>\r\n processSchema(\r\n rawSchema,\r\n Shared,\r\n elevatedColumnsMap[rawSchema.name],\r\n restrictedColumnsByReport[rawSchema.name] || [],\r\n defaultColumnsByReport[rawSchema.name] || [],\r\n i18nMap.ColumnName,\r\n { ...helpLinkIds, ...helpLinkIdsByReportType[rawSchema.name] },\r\n timeRangeOverride[rawSchema.name],\r\n missingMandatoryColumnErrors[rawSchema.name],\r\n restrictedFilterColumnsByReport[rawSchema.name] || [],\r\n restrictedDisplayColumnsByReport[rawSchema.name] || []\r\n ),\r\n reportSchema => reportSchema.name\r\n);\r\n\r\n/* eslint-disable max-len */\r\nexport const AccountPerformanceReport = () => process(AccountPerformanceReportUIPreviewV1);\r\nexport const AccountPerformanceReport_SixWeeks = () => process(AccountPerformanceReport_SixWeeksUIPreviewV1);\r\nexport const AccountPerformanceReport_TwoMonths = () => process(AccountPerformanceReport_TwoMonthsUIPreviewV1);\r\nexport const AccountPerformanceReport_TwoYears = () => process(AccountPerformanceReport_TwoYearsUIPreviewV1);\r\nexport const AccountPerformanceReport_ShareOfVoice = () => process(AccountPerformanceReport_ShareOfVoiceUIPreviewV1);\r\nexport const AdDynamicTextPerformanceReport = () => process(AdDynamicTextPerformanceReportUIPreviewV1);\r\nexport const AdExtensionByAdReport = () => process(AdExtensionByAdReportUIPreviewV1);\r\nexport const AdExtensionByKeywordReport = () => process(AdExtensionByKeywordReportUIPreviewV1);\r\nexport const AdExtensionDetailReport = () => process(AdExtensionDetailReportUIPreviewV1);\r\nexport const AdGroupPerformanceReport = () => process(AdGroupPerformanceReportUIPreviewV1);\r\nexport const AdPerformanceReport = () => process(AdPerformanceReportUIPreviewV1);\r\nexport const AgeGenderAudienceReport = () => process(AgeGenderAudienceReportUIPreviewV1);\r\nexport const AppsPerformanceReport = () => process(AppsPerformanceReportUIPreviewV1);\r\nexport const AssetPerformanceReport = () => process(AssetPerformanceReportUIPreviewV1);\r\nexport const AudiencePerformanceReport = () => process(AudiencePerformanceReportUIPreviewV1);\r\nexport const CallDetailReport = () => process(CallDetailReportUIPreviewV1);\r\nexport const CampaignPerformanceReport = () => process(CampaignPerformanceReportUIPreviewV1);\r\nexport const CombinationPerformanceReport = () => process(CombinationPerformanceReportUIPreviewV1);\r\nexport const ConversionPerformanceReport = () => process(ConversionPerformanceReportUIPreviewV1);\r\nexport const ConversionModelCompareReport = () => process(ConversionModelCompareReportUIPreviewV1);\r\nexport const MSXAccountPerformanceReport = () => process(MSXAccountPerformanceReportUIPreviewV1);\r\nexport const DSAAutoTargetPerformanceReport = () => process(DSAAutoTargetPerformanceReportUIPreviewV1);\r\nexport const DSACategoryPerformanceReport = () => process(DSACategoryPerformanceReportUIPreviewV1);\r\nexport const DSASearchQueryPerformanceReport = () => process(DSASearchQueryPerformanceReportUIPreviewV1);\r\nexport const DestinationURLPerformanceReport = () => process(DestinationURLPerformanceReportUIPreviewV1);\r\nexport const FraudChangeHistoryReport = () => process(FraudChangeHistoryReportUIPreviewV1);\r\nexport const GeographicPerformanceReport = () => process(GeographicPerformanceReportUIPreviewV1);\r\nexport const GoalsAndFunnelsReport = () => process(GoalsAndFunnelsReportUIPreviewV1);\r\nexport const KeywordPerformanceReport = () => process(KeywordPerformanceReportUIPreviewV1);\r\nexport const NegativeKeywordConflictReport = () => process(NegativeKeywordConflictReportUIPreviewV1);\r\nexport const ProductDimensionPerformanceReport = () => process(ProductDimensionPerformanceReportUIPreviewV1);\r\nexport const ProductMatchCountReport = () => process(ProductMatchCountReportUIPreviewV1);\r\nexport const ProductNegativeKeywordConflictReport = () => process(ProductNegativeKeywordConflictReportUIPreviewV1);\r\nexport const ProductPartitionPerformanceReport = () => process(ProductPartitionPerformanceReportUIPreviewV1);\r\nexport const ProductPartitionUnitPerformanceReport = () => process(ProductPartitionUnitPerformanceReportUIPreviewV1);\r\nexport const ProductSearchQueryPerformanceReport = () => process(ProductSearchQueryPerformanceReportUIPreviewV1);\r\nexport const ProfessionalDemographicsAudienceReport = () => process(ProfessionalDemographicsAudienceReportUIPreviewV1);\r\nexport const PublisherUsagePerformanceReport = () => process(PublisherUsagePerformanceReportUIPreviewV1);\r\nexport const SearchCampaignChangeHistoryReport = () => process(SearchCampaignChangeHistoryReportUIPreviewV1);\r\nexport const SearchQueryPerformanceReport = () => process(SearchQueryPerformanceReportUIPreviewV1);\r\nexport const ShareOfVoiceReport = () => process(ShareOfVoiceReportUIPreviewV1);\r\nexport const UserLocationPerformanceReport = () => process(UserLocationPerformanceReportUIPreviewV1);\r\nexport const UserRoleChangeHistoryReport = () => process(UserRoleChangeHistoryReportUIPreviewV1);\r\nexport const LabelCampaignReport = () => process(LabelCampaignReportUIPreviewV1);\r\nexport const LabelAdGroupReport = () => process(LabelAdGroupReportUIPreviewV1);\r\nexport const LabelAccountReport = () => process(LabelAccountReportUIPreviewV1);\r\nexport const LabelKeywordReport = () => process(LabelKeywordReportUIPreviewV1);\r\nexport const LabelAdReport = () => process(LabelAdReportUIPreviewV1);\r\nexport const BudgetSummaryReport = () => process(BudgetSummaryReportUIPreviewV1);\r\nexport const BillingStatementReport = () => process(BillingStatementReportUIPreviewV1);\r\nexport const InsertionOrderReport = () => process(InsertionOrderReportUIPreviewV1);\r\nexport const CustomerInvoiceReport = () => process(CustomerInvoiceReportUIPreviewV1);\r\nexport const HotelDimensionPerformanceReport = () => process(HotelDimensionPerformanceReportUIPreviewV1);\r\nexport const HotelGroupPerformanceReport = () => process(HotelGroupPerformanceReportUIPreviewV1);\r\nexport const FeedItemPerformanceReport = () => process(FeedItemPerformanceReportUIPreviewV1);\r\nexport const GenrePerformanceReport = () => process(GenrePerformanceReportUIPreviewV1);\r\nexport const SearchInsightPerformanceReport = () => process(SearchInsightPerformanceReportUIPreviewV1);\r\nexport const SearchVerticalCategoryInsightsReport = () => process(SearchVerticalCategoryInsightsReportUIPreviewV1);\r\nexport const SearchVerticalCategoryClickShareReport = () => process(SearchVerticalCategoryClickShareReportUIPreviewV1);\r\n\r\nexport const schema = {};\r\nObject.defineProperties(schema, {\r\n AccountPerformanceReport: { get: AccountPerformanceReport, enumerable: true },\r\n 'AccountPerformanceReport-SixWeeks': { get: AccountPerformanceReport_SixWeeks, enumerable: true },\r\n 'AccountPerformanceReport-TwoMonths': { get: AccountPerformanceReport_TwoMonths, enumerable: true },\r\n 'AccountPerformanceReport-TwoYears': { get: AccountPerformanceReport_TwoYears, enumerable: true },\r\n 'AccountPerformanceReport-ShareOfVoice': { get: AccountPerformanceReport_ShareOfVoice, enumerable: true },\r\n AdDynamicTextPerformanceReport: { get: AdDynamicTextPerformanceReport, enumerable: true },\r\n AdExtensionByAdReport: { get: AdExtensionByAdReport, enumerable: true },\r\n AdExtensionByKeywordReport: { get: AdExtensionByKeywordReport, enumerable: true },\r\n AdExtensionDetailReport: { get: AdExtensionDetailReport, enumerable: true },\r\n AdGroupPerformanceReport: { get: AdGroupPerformanceReport, enumerable: true },\r\n AdPerformanceReport: { get: AdPerformanceReport, enumerable: true },\r\n AgeGenderAudienceReport: { get: AgeGenderAudienceReport, enumerable: true },\r\n AppsPerformanceReport: { get: AppsPerformanceReport, enumerable: true },\r\n AssetPerformanceReport: { get: AssetPerformanceReport, enumerable: true },\r\n AudiencePerformanceReport: { get: AudiencePerformanceReport, enumerable: true },\r\n CallDetailReport: { get: CallDetailReport, enumerable: true },\r\n CampaignPerformanceReport: { get: CampaignPerformanceReport, enumerable: true },\r\n CombinationPerformanceReport: { get: CombinationPerformanceReport, enumerable: true },\r\n ConversionPerformanceReport: { get: ConversionPerformanceReport, enumerable: true },\r\n ConversionModelCompareReport: { get: ConversionModelCompareReport, enumerable: true },\r\n MSXAccountPerformanceReport: { get: MSXAccountPerformanceReport, enumerable: true },\r\n DSAAutoTargetPerformanceReport: { get: DSAAutoTargetPerformanceReport, enumerable: true },\r\n DSACategoryPerformanceReport: { get: DSACategoryPerformanceReport, enumerable: true },\r\n DSASearchQueryPerformanceReport: { get: DSASearchQueryPerformanceReport, enumerable: true },\r\n DestinationURLPerformanceReport: { get: DestinationURLPerformanceReport, enumerable: true },\r\n FraudChangeHistoryReport: { get: FraudChangeHistoryReport, enumerable: true },\r\n GeographicPerformanceReport: { get: GeographicPerformanceReport, enumerable: true },\r\n GoalsAndFunnelsReport: { get: GoalsAndFunnelsReport, enumerable: true },\r\n KeywordPerformanceReport: { get: KeywordPerformanceReport, enumerable: true },\r\n NegativeKeywordConflictReport: { get: NegativeKeywordConflictReport, enumerable: true },\r\n ProductDimensionPerformanceReport: { get: ProductDimensionPerformanceReport, enumerable: true },\r\n ProductMatchCountReport: { get: ProductMatchCountReport, enumerable: true },\r\n ProductNegativeKeywordConflictReport: { get: ProductNegativeKeywordConflictReport, enumerable: true },\r\n ProductPartitionPerformanceReport: { get: ProductPartitionPerformanceReport, enumerable: true },\r\n ProductPartitionUnitPerformanceReport: { get: ProductPartitionUnitPerformanceReport, enumerable: true },\r\n ProductSearchQueryPerformanceReport: { get: ProductSearchQueryPerformanceReport, enumerable: true },\r\n ProfessionalDemographicsAudienceReport: { get: ProfessionalDemographicsAudienceReport, enumerable: true },\r\n PublisherUsagePerformanceReport: { get: PublisherUsagePerformanceReport, enumerable: true },\r\n SearchCampaignChangeHistoryReport: { get: SearchCampaignChangeHistoryReport, enumerable: true },\r\n SearchQueryPerformanceReport: { get: SearchQueryPerformanceReport, enumerable: true },\r\n ShareOfVoiceReport: { get: ShareOfVoiceReport, enumerable: true },\r\n UserLocationPerformanceReport: { get: UserLocationPerformanceReport, enumerable: true },\r\n UserRoleChangeHistoryReport: { get: UserRoleChangeHistoryReport, enumerable: true },\r\n LabelCampaignReport: { get: LabelCampaignReport, enumerable: true },\r\n LabelAdGroupReport: { get: LabelAdGroupReport, enumerable: true },\r\n LabelAccountReport: { get: LabelAccountReport, enumerable: true },\r\n LabelKeywordReport: { get: LabelKeywordReport, enumerable: true },\r\n LabelAdReport: { get: LabelAdReport, enumerable: true },\r\n BudgetSummaryReport: { get: BudgetSummaryReport, enumerable: true },\r\n BillingStatementReport: { get: BillingStatementReport, enumerable: true },\r\n InsertionOrderReport: { get: InsertionOrderReport, enumerable: true },\r\n CustomerInvoiceReport: { get: CustomerInvoiceReport, enumerable: true },\r\n HotelDimensionPerformanceReport: { get: HotelDimensionPerformanceReport, enumerable: true },\r\n HotelGroupPerformanceReport: { get: HotelGroupPerformanceReport, enumerable: true },\r\n FeedItemPerformanceReport: { get: FeedItemPerformanceReport, enumerable: true },\r\n GenrePerformanceReport: { get: GenrePerformanceReport, enumerable: true },\r\n SearchInsightPerformanceReport: { get: SearchInsightPerformanceReport, enumerable: true },\r\n SearchVerticalCategoryInsightsReport: { get: SearchVerticalCategoryInsightsReport, enumerable: true },\r\n SearchVerticalCategoryClickShareReport: { get: SearchVerticalCategoryClickShareReport, enumerable: true },\r\n ColumnConfig: { value: Columns.columns },\r\n});\r\n","/* eslint-disable camelcase */\r\nimport _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\nimport { i18nMap } from '@bingads-webui-campaign/report-shared';\r\nimport {\r\n Shared,\r\n Columns,\r\n AccountPerformanceReportUIUnifiedPreview,\r\n AccountPerformanceReport_ShareOfVoiceUIUnifiedPreview,\r\n AdGroupPerformanceReportUIUnifiedPreview,\r\n AdPerformanceReportUIUnifiedPreview,\r\n CampaignPerformanceReportUIUnifiedPreview,\r\n DestinationURLPerformanceReportUIUnifiedPreview,\r\n GeographicPerformanceReportUIUnifiedPreview,\r\n KeywordPerformanceReportUIUnifiedPreview,\r\n LabelAccountReportUIUnifiedPreview,\r\n LabelAdGroupReportUIUnifiedPreview,\r\n LabelAdReportUIUnifiedPreview,\r\n LabelCampaignReportUIUnifiedPreview,\r\n LabelKeywordReportUIUnifiedPreview,\r\n ProductDimensionPerformanceReportUIUnifiedPreview,\r\n ProductPartitionPerformanceReportUIUnifiedPreview,\r\n ProductPartitionUnitPerformanceReportUIUnifiedPreview,\r\n PublisherUsagePerformanceReportUIUnifiedPreview,\r\n ShareOfVoiceReportUIUnifiedPreview,\r\n UserLocationPerformanceReportUIUnifiedPreview,\r\n} from '@bingads-webui/report-ui-interface-unified-preview';\r\nimport { elevatedColumnsMap } from './columns/elevated-columns';\r\nimport { restrictedColumnsByReport, defaultColumnsByReport, restrictedFilterColumnsByReport, restrictedDisplayColumnsByReport } from './columns/piloted-columns';\r\nimport { helpLinkIds, helpLinkIdsByReportType } from './columns/help-link-ids';\r\nimport { missingMandatoryColumnErrors } from './columns/missing-mandatory-column-error';\r\nimport { processSchema } from './schema-processor';\r\nimport { timeRangeOverride } from './overrides/time-range-override';\r\n\r\nconst dynamicPermissions = _.result(config.get('permissions'), 'dynamic', {});\r\nconst { IsRenameHotelToLodgingEnabled, CPSReporting } = dynamicPermissions;\r\n\r\nif (IsRenameHotelToLodgingEnabled) {\r\n i18nMap.ColumnName.AdvertiserHotelId = _TL_('Advertiser property ID');\r\n i18nMap.ColumnName.CampaignHotelId = _TL_('Campaign property ID');\r\n i18nMap.ColumnName.HotelGroup = _TL_('Property group');\r\n i18nMap.ColumnName.HotelGroupNodeId = _TL_('Property group node id');\r\n i18nMap.ColumnName.SourceHotelId = _TL_('Source property ID');\r\n i18nMap.ColumnName.HotelName = _TL_('Property name');\r\n helpLinkIds.CampaignHotelId = 'pop_BA_Reporting_Clarity_CampaignPropertyId';\r\n helpLinkIds.AdvertiserHotelId = 'pop_BA_Reporting_Clarity_AdvertiserPropertyId';\r\n helpLinkIds.HotelGroup = 'pop_BA_Reporting_Clarity_PropertyGroup';\r\n helpLinkIds.HotelGroupNodeId = 'pop_BA_Reporting_Clarity_PropertyGroupNodeId';\r\n}\r\n\r\n/* istanbul ignore if */\r\nif (CPSReporting) {\r\n i18nMap.ColumnName.CostPerSale = _TL_('Avg. CPS');\r\n i18nMap.ColumnName.Sales = _TL_('Sales Count');\r\n}\r\n\r\nconst process = _.memoize(\r\n rawSchema =>\r\n processSchema(\r\n rawSchema,\r\n Shared,\r\n elevatedColumnsMap[rawSchema.name],\r\n restrictedColumnsByReport[rawSchema.name] || [],\r\n defaultColumnsByReport[rawSchema.name] || [],\r\n i18nMap.ColumnName,\r\n { ...helpLinkIds, ...helpLinkIdsByReportType[rawSchema.name] },\r\n timeRangeOverride[rawSchema.name],\r\n missingMandatoryColumnErrors[rawSchema.name],\r\n restrictedFilterColumnsByReport[rawSchema.name] || [],\r\n restrictedDisplayColumnsByReport[rawSchema.name] || []\r\n ),\r\n reportSchema => reportSchema.name\r\n);\r\n\r\n/* eslint-disable max-len */\r\nconst AccountPerformanceReport = () => process(AccountPerformanceReportUIUnifiedPreview);\r\nconst AccountPerformanceReport_ShareOfVoice = () => process(AccountPerformanceReport_ShareOfVoiceUIUnifiedPreview);\r\nconst AdGroupPerformanceReport = () => process(AdGroupPerformanceReportUIUnifiedPreview);\r\nconst AdPerformanceReport = () => process(AdPerformanceReportUIUnifiedPreview);\r\nconst CampaignPerformanceReport = () => process(CampaignPerformanceReportUIUnifiedPreview);\r\nconst DestinationURLPerformanceReport = () => process(DestinationURLPerformanceReportUIUnifiedPreview);\r\nconst GeographicPerformanceReport = () => process(GeographicPerformanceReportUIUnifiedPreview);\r\nconst KeywordPerformanceReport = () => process(KeywordPerformanceReportUIUnifiedPreview);\r\nconst ProductDimensionPerformanceReport = () => process(ProductDimensionPerformanceReportUIUnifiedPreview);\r\nconst ProductPartitionPerformanceReport = () => process(ProductPartitionPerformanceReportUIUnifiedPreview);\r\nconst ProductPartitionUnitPerformanceReport = () => process(ProductPartitionUnitPerformanceReportUIUnifiedPreview);\r\nconst PublisherUsagePerformanceReport = () => process(PublisherUsagePerformanceReportUIUnifiedPreview);\r\nconst ShareOfVoiceReport = () => process(ShareOfVoiceReportUIUnifiedPreview);\r\nconst UserLocationPerformanceReport = () => process(UserLocationPerformanceReportUIUnifiedPreview);\r\nconst LabelCampaignReport = () => process(LabelCampaignReportUIUnifiedPreview);\r\nconst LabelAdGroupReport = () => process(LabelAdGroupReportUIUnifiedPreview);\r\nconst LabelAccountReport = () => process(LabelAccountReportUIUnifiedPreview);\r\nconst LabelKeywordReport = () => process(LabelKeywordReportUIUnifiedPreview);\r\nconst LabelAdReport = () => process(LabelAdReportUIUnifiedPreview);\r\n\r\nexport const unifiedSchema = {};\r\nObject.defineProperties(unifiedSchema, {\r\n AccountPerformanceReport: { get: AccountPerformanceReport, enumerable: true },\r\n 'AccountPerformanceReport-ShareOfVoice': { get: AccountPerformanceReport_ShareOfVoice, enumerable: true },\r\n AdGroupPerformanceReport: { get: AdGroupPerformanceReport, enumerable: true },\r\n AdPerformanceReport: { get: AdPerformanceReport, enumerable: true },\r\n CampaignPerformanceReport: { get: CampaignPerformanceReport, enumerable: true },\r\n DestinationURLPerformanceReport: { get: DestinationURLPerformanceReport, enumerable: true },\r\n GeographicPerformanceReport: { get: GeographicPerformanceReport, enumerable: true },\r\n KeywordPerformanceReport: { get: KeywordPerformanceReport, enumerable: true },\r\n ProductDimensionPerformanceReport: { get: ProductDimensionPerformanceReport, enumerable: true },\r\n ProductPartitionPerformanceReport: { get: ProductPartitionPerformanceReport, enumerable: true },\r\n ProductPartitionUnitPerformanceReport: { get: ProductPartitionUnitPerformanceReport, enumerable: true },\r\n PublisherUsagePerformanceReport: { get: PublisherUsagePerformanceReport, enumerable: true },\r\n ShareOfVoiceReport: { get: ShareOfVoiceReport, enumerable: true },\r\n UserLocationPerformanceReport: { get: UserLocationPerformanceReport, enumerable: true },\r\n LabelCampaignReport: { get: LabelCampaignReport, enumerable: true },\r\n LabelAdGroupReport: { get: LabelAdGroupReport, enumerable: true },\r\n LabelAccountReport: { get: LabelAccountReport, enumerable: true },\r\n LabelKeywordReport: { get: LabelKeywordReport, enumerable: true },\r\n LabelAdReport: { get: LabelAdReport, enumerable: true },\r\n ColumnConfig: { value: Columns.columns },\r\n});\r\n","export const deprecatedReports = {\r\n AgeGenderDemographicReport: true,\r\n 's:prdct:target:actv:sum': true,\r\n 's:traffic:sum': true,\r\n 's:segmentation:sum': true,\r\n 's:pla:offer:perf': true,\r\n};\r\n\r\n","/**\r\n * In some rare case, the only `reportAggregation` option is changed in the new schema(for example, `SearchCampaignChangeHistoryReport`,\r\n * which is changed from `Daily`(old) to `Summary`(new)), however, we still use it in some situation(like date-range-inline-editor)\r\n *\r\n * This means we have to transfrom data immediately when get it to avoid any possiable errors.\r\n *\r\n * @param {any} oldTaskItem old back-end data model\r\n * @returns {any} new back-end data model\r\n */\r\nexport function transformReportAggregationItself(oldTaskItem) {\r\n // handle the ReportType explictly rather than by some rules, to make it more easier to understand\r\n\r\n // manually compare package '@bingads-webui/report-ui-interface-preview' and '@bingads-webui/report-ui-interface'\r\n // to get the result\r\n const newTaskItem = { ...oldTaskItem };\r\n if (oldTaskItem.ReportType === 'BudgetSummaryReport'\r\n || oldTaskItem.ReportType === 'SearchCampaignChangeHistoryReport'\r\n || oldTaskItem.ReportType === 'UserRoleChangeHistoryReport') {\r\n newTaskItem.ReportAggregation = 'Summary';\r\n }\r\n return newTaskItem;\r\n}\r\n","\r\n// AdsAppsMT/private/Campaign/MT/Source/BingAds.Api/BingAds.Api.Model/DateRange/DateRangePreset.cs\r\nexport const dateRangePreset = {\r\n Custom: _TL_('Custom'),\r\n Today: _TL_('Today'),\r\n Yesterday: _TL_('Yesterday'),\r\n LastSevenDays: _TL_('Last 7 days'),\r\n LastFourteenDays: _TL_('Last 14 days'),\r\n LastThirtyDays: _TL_('Last 30 days'),\r\n ThisWeekFromSun: _TL_('This week (Sun-Today)'),\r\n ThisWeekFromMon: _TL_('This week (Mon-Today)'),\r\n LastWeekStartingSun: _TL_('Last week (Sun-Sat)'),\r\n LastWeekStartingMon: _TL_('Last week (Mon-Sun)'),\r\n LastFourWeeksStartingSun: _TL_('Last 4 weeks (Sun-Sat)'),\r\n LastFourWeeksStartingMon: _TL_('Last 4 weeks (Mon-Sun)'),\r\n LastSixWeeksStartingSun: _TL_('Last 6 weeks (Sun-Sat)'),\r\n LastSixWeeksStartingMon: _TL_('Last 6 weeks (Mon-Sun)'),\r\n ThisMonth: _TL_('This month'),\r\n LastMonth: _TL_('Last month'),\r\n LastTwoMonths: _TL_('Last 2 months'),\r\n LastThreeMonths: _TL_('Last 3 months'),\r\n LastSixMonths: _TL_('Last 6 months'),\r\n ThisYear: _TL_('This year'),\r\n LastYear: _TL_('Last year'),\r\n LastTwoYears: _TL_('Last 2 years'),\r\n AllTime: _TL_('All time'),\r\n};\r\n","import _ from 'underscore';\r\nimport config from '@bingads-webui-component-legacy/config/index';\r\n\r\nconst dynamicPermissions = _.result(config.get('permissions'), 'dynamic', {});\r\nconst { IsRenameHotelToLodgingEnabled } = dynamicPermissions;\r\n\r\nexport const reportType = {\r\n AccountPerformanceReport: _TL_('Account'),\r\n 'AccountPerformanceReport-SixWeeks': _TL_('Account - 6 weeks'),\r\n 'AccountPerformanceReport-TwoMonths': _TL_('Account - 2 months (MoM)'),\r\n 'AccountPerformanceReport-TwoYears': _TL_('Account - 2 years (YoY)'),\r\n 'AccountPerformanceReport-ShareOfVoice': _TL_('Account - Share of voice'),\r\n AdDynamicTextPerformanceReport: _TL_('Ad dynamic text'),\r\n AdExtensionByAdReport: _TL_('Ad extension by ad'),\r\n AdExtensionByKeywordReport: _TL_('Ad extension by keyword'),\r\n AdExtensionDetailReport: _TL_('Ad extension details'),\r\n AdGroupPerformanceReport: _TL_('Ad group'),\r\n AdPerformanceReport: _TL_('Ad'),\r\n AgeGenderAudienceReport: _TL_('Age and gender'),\r\n AudiencePerformanceReport: _TL_('Audiences'),\r\n BudgetSummaryReport: _TL_('Budget'),\r\n BillingStatementReport: _TL_('Billing statement'),\r\n CallDetailReport: _TL_('Call forwarding detail'),\r\n CampaignPerformanceReport: _TL_('Campaign'),\r\n ConversionPerformanceReport: _TL_('Conversions'),\r\n CustomerInvoiceReport: _TL_('Manager account invoice billing'),\r\n DestinationURLPerformanceReport: _TL_('Destination URL'),\r\n DSAAutoTargetPerformanceReport: _TL_('Dynamic search ad auto target'),\r\n DSACategoryPerformanceReport: _TL_('Dynamic search ad category'),\r\n DSASearchQueryPerformanceReport: _TL_('Dynamic search ad search term'),\r\n FraudChangeHistoryReport: _TL_('Fraud change history by user'),\r\n LabelAccountReport: _TL_('Labels - Account'),\r\n LabelAdReport: _TL_('Labels - Ad'),\r\n LabelAdGroupReport: _TL_('Labels - Ad group'),\r\n LabelCampaignReport: _TL_('Labels - Campaign'),\r\n LabelKeywordReport: _TL_('Labels - Keyword'),\r\n FeedItemPerformanceReport: _TL_('Feed item'),\r\n GeographicPerformanceReport: _TL_('Geographic'),\r\n GoalsAndFunnelsReport: _TL_('Goals'),\r\n HotelDimensionPerformanceReport: IsRenameHotelToLodgingEnabled ? _TL_('Property dimension') : _TL_('Hotel dimension'),\r\n HotelGroupPerformanceReport: IsRenameHotelToLodgingEnabled ? _TL_('Property group') : _TL_('Hotel group'),\r\n KeywordPerformanceReport: _TL_('Keyword'),\r\n NegativeKeywordConflictReport: _TL_('Negative keyword conflicts'),\r\n ProductDimensionPerformanceReport: _TL_('Product dimension'),\r\n ProductMatchCountReport: _TL_('Product match count'),\r\n ProductNegativeKeywordConflictReport: _TL_('Product negative keyword conflicts'),\r\n ProductPartitionPerformanceReport: _TL_('Product partition'),\r\n ProductPartitionUnitPerformanceReport: _TL_('Product partition unit'),\r\n ProductSearchQueryPerformanceReport: _TL_('Product search term'),\r\n ProfessionalDemographicsAudienceReport: _TL_('Professional demographics'),\r\n PublisherUsagePerformanceReport: _TL_('Website URL (publisher)'),\r\n SearchCampaignChangeHistoryReport: _TL_('Change history'),\r\n SearchQueryPerformanceReport: _TL_('Search term'),\r\n ShareOfVoiceReport: _TL_('Share of voice'),\r\n UserRoleChangeHistoryReport: _TL_('User role change history'),\r\n UserLocationPerformanceReport: _TL_('User location'),\r\n Other: _TL_('Other'),\r\n};\r\n","\r\nexport const getStyles = () => ({\r\n 'back-button': {\r\n color: '#106ebe',\r\n height: '100%',\r\n },\r\n 'reports-v4-summary-bar': {\r\n flexShrink: 0,\r\n alignItems: 'center',\r\n right: '0px',\r\n height: '45px',\r\n zIndex: '150',\r\n borderBottom: 'solid 1px #e1dfdd',\r\n background: '#f3f2f1',\r\n },\r\n});\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack } from '@fluentui/react/lib/Stack';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { getStyles } from './styles';\r\n\r\n\r\nfunction SummaryBar(props) {\r\n const { children, className } = props;\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nSummaryBar.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n className: PropTypes.string,\r\n};\r\n\r\nSummaryBar.defaultProps = {\r\n className: '',\r\n};\r\n\r\nexport { SummaryBar };\r\n","\r\nimport React from 'react';\r\nimport { mergeStyles } from '@fluentui/react';\r\n\r\nconst summaryBarDividerClassName = mergeStyles({\r\n flex: '0 1 auto',\r\n height: '32px',\r\n minWidth: '1px',\r\n alignSelf: 'center',\r\n background: '#e1dfdd',\r\n});\r\n\r\n\r\nfunction Divider() {\r\n return (
);\r\n}\r\n\r\nexport { Divider };\r\n","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (imageUrl) {pug_html = pug_html + \"\\u003Cimg\" + (pug.attr(\"src\", imageUrl, true, true)+\" align=\\\"left\\\" alt=\\\"\\\" width=\\\"114\\\"\") + \"\\u003E\";}.call(this,\"imageUrl\" in locals_for_with?locals_for_with.imageUrl:typeof imageUrl!==\"undefined\"?imageUrl:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (DeliveryStatus, i18n, isErrorStatus, isWarningStatus, shouldShowPopUpStyleInVnext, shouldShowSensitiveContentWarning, showRejectPopup) {var statusTypeClass = isErrorStatus ? 'status-error' : (isWarningStatus ? 'status-warning' : 'status-info')\nvar localizedText = DeliveryStatus === '-' ? '-' : i18n.getString('Label_DeliveryStatus_' + DeliveryStatus)\nif (shouldShowSensitiveContentWarning) {\npug_html = pug_html + \"\\u003Cdiv class=\\\"delivery\\\"\\u003E\\u003Cdiv class=\\\"dashedBottomLine\\\"\\u003E\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"editorial-category-delivery-info\",`${shouldShowPopUpStyleInVnext ? 'trigger-popup' : ''}`], [false,true]), false, true)) + \"\\u003E\";\nif (isErrorStatus) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status-icon iconba iconba-ErrorBadge\\\"\"+pug.attr(\"title\", i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+pug.attr(\"aria-label\", i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+\" role=\\\"img\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse\nif ((isWarningStatus)) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status-icon iconba iconba-Warning\\\"\"+pug.attr(\"title\", i18n.getString('DeliveryStatusIcon_Tooltip_Warning'), true, true)+pug.attr(\"aria-label\", i18n.getString('DeliveryStatusIcon_Tooltip_Warning'), true, true)+\" role=\\\"img\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nif (showRejectPopup) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status-column\",\"clickable\",`${statusTypeClass} delivery_status_with_reject_reasons`], [false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = localizedText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status-column\",statusTypeClass], [false,true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = localizedText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\\u003Cdiv class=\\\"sensitive-contents-text\\\"\\u003E\\u003Cspan class=\\\"delivery_status_with_reject_reasons_editorial_category\\\"\\u003E\" + (pug.escape(null == (pug_interp = i18n.getString('Label_DeliveryStatus_Sensitive_Content')) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cdiv\" + (pug.attr(\"class\", pug.classes([\"delivery-info\",`${shouldShowPopUpStyleInVnext ? 'trigger-popup' : ''}`], [false,true]), false, true)) + \"\\u003E\";\nif (isErrorStatus) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status-icon iconba iconba-ErrorBadge\\\"\"+pug.attr(\"title\", i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+pug.attr(\"aria-label\", i18n.getString('DeliveryStatusIcon_Tooltip_Error'), true, true)+\" role=\\\"img\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse\nif (isWarningStatus) {\npug_html = pug_html + \"\\u003Cspan\" + (\" class=\\\"status-icon iconba iconba-Warning\\\"\"+pug.attr(\"title\", i18n.getString('DeliveryStatusIcon_Tooltip_Warning'), true, true)+pug.attr(\"aria-label\", i18n.getString('DeliveryStatusIcon_Tooltip_Warning'), true, true)+\" role=\\\"img\\\"\") + \"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nif (showRejectPopup) {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status-column\",\"clickable\",`${statusTypeClass} delivery_status_with_reject_reasons`], [false,false,true]), false, true)+\" tabindex=\\\"0\\\" role=\\\"button\\\"\") + \"\\u003E\" + (pug.escape(null == (pug_interp = localizedText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan\" + (pug.attr(\"class\", pug.classes([\"status-column\",statusTypeClass], [false,true]), false, true)) + \"\\u003E\" + (pug.escape(null == (pug_interp = localizedText) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\";\n}}.call(this,\"DeliveryStatus\" in locals_for_with?locals_for_with.DeliveryStatus:typeof DeliveryStatus!==\"undefined\"?DeliveryStatus:undefined,\"i18n\" in locals_for_with?locals_for_with.i18n:typeof i18n!==\"undefined\"?i18n:undefined,\"isErrorStatus\" in locals_for_with?locals_for_with.isErrorStatus:typeof isErrorStatus!==\"undefined\"?isErrorStatus:undefined,\"isWarningStatus\" in locals_for_with?locals_for_with.isWarningStatus:typeof isWarningStatus!==\"undefined\"?isWarningStatus:undefined,\"shouldShowPopUpStyleInVnext\" in locals_for_with?locals_for_with.shouldShowPopUpStyleInVnext:typeof shouldShowPopUpStyleInVnext!==\"undefined\"?shouldShowPopUpStyleInVnext:undefined,\"shouldShowSensitiveContentWarning\" in locals_for_with?locals_for_with.shouldShowSensitiveContentWarning:typeof shouldShowSensitiveContentWarning!==\"undefined\"?shouldShowSensitiveContentWarning:undefined,\"showRejectPopup\" in locals_for_with?locals_for_with.showRejectPopup:typeof showRejectPopup!==\"undefined\"?showRejectPopup:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;pug_html = pug_html + \"\\u003Cdiv\\u003E\\u003C\\u002Fdiv\\u003E\";;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (label, status) {pug_html = pug_html + \"\\u003Cdiv class=\\\"grid-cell\\\"\\u003E\\u003Cdiv\" + (\" class=\\\"statusicondisplay\\\"\"+pug.attr(\"aria-label\", label, true, true)+\" role=\\\"img\\\"\") + \"\\u003E\";\nswitch (status){\ncase 'Active':\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusEnabled_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n break;\ncase 'Deleted':\npug_html = pug_html + \"\\u003Cdiv class=\\\"statusDeleted_icon\\\"\\u003E\\u003C\\u002Fdiv\\u003E\";\n break;\n}\npug_html = pug_html + \"\\u003C\\u002Fdiv\\u003E\\u003C\\u002Fdiv\\u003E\";}.call(this,\"label\" in locals_for_with?locals_for_with.label:typeof label!==\"undefined\"?label:undefined,\"status\" in locals_for_with?locals_for_with.status:typeof status!==\"undefined\"?status:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (text) {pug_html = pug_html + \"\\u003Cspan class=\\\"grid-cell-text\\\"\\u003E\" + (pug.escape(null == (pug_interp = text) ? \"\" : pug_interp)) + \"\\u003C\\u002Fspan\\u003E\";}.call(this,\"text\" in locals_for_with?locals_for_with.text:typeof text!==\"undefined\"?text:undefined));;return pug_html;};\nmodule.exports = template;","var pug = require(\"!../../../../../node_modules/.pnpm/pug@2.0.4/node_modules/pug-runtime/index.js\");\n\nfunction template(locals) {var pug_html = \"\", pug_mixins = {}, pug_interp;;var locals_for_with = (locals || {});(function (imageUrl, isVerticalVideo) {pug_html = pug_html + \"\\u003Cimg\" + (pug.attr(\"src\", imageUrl, true, true)+\" align=\\\"left\\\" alt=\\\"\\\" width=\\\"114\\\"\") + \"\\u003E\";\nif ((isVerticalVideo)) {\npug_html = pug_html + \"\\u003Cspan class=\\\"glyphicon glyphicon-play\\\" style=\\\"position: relative; top: 90px; left: -66px; width: 0px; font-size: 24px;display: inline-block;color: white;\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}\nelse {\npug_html = pug_html + \"\\u003Cspan class=\\\"glyphicon glyphicon-play\\\" style=\\\"position: relative; top: 24px; left: -66px; width: 0px; font-size: 24px;display: inline-block;color: white;\\\"\\u003E\\u003C\\u002Fspan\\u003E\";\n}}.call(this,\"imageUrl\" in locals_for_with?locals_for_with.imageUrl:typeof imageUrl!==\"undefined\"?imageUrl:undefined,\"isVerticalVideo\" in locals_for_with?locals_for_with.isVerticalVideo:typeof isVerticalVideo!==\"undefined\"?isVerticalVideo:undefined));;return pug_html;};\nmodule.exports = template;","export enum ItemState {\r\n unknown = 'unknown',\r\n lock = 'lock',\r\n optional = 'optional',\r\n mandatory = 'mandatory',\r\n}\r\n\r\n\r\nexport interface Rule {\r\n predicate: (paras: T) => [boolean, Context];\r\n keys: Set;\r\n}\r\n\r\ninterface ExclusionRuleParameters {\r\n selectedKeys: Set;\r\n}\r\n\r\ninterface ExclusionRuleContext {\r\n triggerColumnKeys: string[];\r\n}\r\n\r\n/**\r\n * As long as `predicate` is true, all column whose key is in `exclusionKeys` will be locked.\r\n */\r\nexport type ExclusionRule = Rule;\r\n\r\nexport enum ItemKind {\r\n candidate = 'candidate',\r\n selected = 'selected',\r\n}\r\n\r\ninterface ItemBase {\r\n /**\r\n * a unique key for the item\r\n */\r\n key: string;\r\n /**\r\n * hunman-readable, translated name\r\n */\r\n friendlyName: string;\r\n state: ItemState;\r\n kind: ItemKind;\r\n}\r\n\r\nexport interface CandidateItem extends ItemBase {\r\n helpTopic?: string;\r\n isSelected: boolean;\r\n kind: ItemKind.candidate;\r\n}\r\n\r\nexport interface LockedCandidateItem extends CandidateItem {\r\n state: ItemState.lock;\r\n /**\r\n * translated text\r\n */\r\n // eslint-disable-next-line no-undef\r\n lockReason: string | JSX.Element;\r\n}\r\n\r\nexport function isLockedCandidateItem(item: ItemBase): item is LockedCandidateItem {\r\n return (item.kind === ItemKind.candidate && item.state === ItemState.lock);\r\n}\r\n\r\nexport interface SelectedItem extends ItemBase {\r\n kind: ItemKind.selected;\r\n}\r\n\r\nexport type Item = CandidateItem | SelectedItem;\r\n\r\nexport type DraggingSelectedItemData = SelectedItem & {\r\n /**\r\n * origional index of dragging item in the original list\r\n */\r\n index: number;\r\n /**\r\n * current index of dragging item in the original list\r\n */\r\n hoverIndex?: number;\r\n}\r\n\r\n/**\r\n * Group data and some extra info that describes the state of a group of UI.\r\n * This is a little unclear, but it is more easier to use a flatten structure rather than deep properties.\r\n */\r\nexport interface GroupDescriptor {\r\n key: string;\r\n items: CandidateItem[];\r\n name: string;\r\n isCollapsed: boolean;\r\n}\r\n\r\nexport interface CategoryDescriptor {\r\n key: string;\r\n headerName: string;\r\n groups: GroupDescriptor[];\r\n}\r\n","/* eslint-disable react/jsx-filename-extension */\r\nimport { assertNever, } from '@fluentui/react';\r\nimport React, { FC } from 'react';\r\n\r\nexport enum IconName {\r\n Empty = \"Empty\",\r\n /**\r\n * six points, 3*2 matrix\r\n */\r\n GripperDotsVertical = \"GripperDotsVertical\",\r\n /**\r\n * `=`\r\n */\r\n GripperBarHorizontal = \"GripperBarHorizontal\",\r\n}\r\n\r\ninterface IconProps {\r\n name: string;\r\n}\r\n\r\nconst Icon: FC = (props) => {\r\n const { name } = props;\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport interface ItemRowProps {\r\n text: string;\r\n iconName: IconName;\r\n isOperationEnabled: boolean;\r\n operationText: string;\r\n onOperationTrigger?: (data?: T) => void;\r\n data?: T;\r\n // eslint-disable-next-line react/no-unused-prop-types\r\n index: number;\r\n rootRef?: React.Ref;\r\n className?: string;\r\n}\r\n\r\nexport const ItemRow = (props: ItemRowProps) => {\r\n const {\r\n rootRef,\r\n data,\r\n className,\r\n iconName,\r\n isOperationEnabled,\r\n onOperationTrigger,\r\n operationText,\r\n text,\r\n } = props;\r\n\r\n const onKeyDown: React.KeyboardEventHandler = (event) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n isOperationEnabled && onOperationTrigger?.(data);\r\n }\r\n }\r\n\r\n return (\r\n // `tabindex` is not controlled by row itself, but `GroupedList`(in fact, `FocusZone`, which asks for \"data-is-focusable\")\r\n // This is a quirk of Fluent-ui\r\n
\r\n \r\n \r\n {text}\r\n \r\n \r\n { isOperationEnabled && onOperationTrigger?.(data) }}\r\n onKeyDown={onKeyDown}\r\n >\r\n {operationText}\r\n \r\n \r\n
\r\n );\r\n\r\n\r\n // eslint-disable-next-line consistent-return, @typescript-eslint/no-shadow\r\n function getClassNameByIconName(iconName: IconName) {\r\n switch (iconName) {\r\n case IconName.GripperBarHorizontal:\r\n return \"GripperBarHorizontal\";\r\n case IconName.GripperDotsVertical:\r\n return \"GripperDotsVertical\";\r\n case IconName.Empty:\r\n return \"\";\r\n default:\r\n assertNever(iconName);\r\n }\r\n }\r\n}\r\n","/* eslint-disable react/jsx-filename-extension */\r\nimport React, { useRef, useEffect } from 'react';\r\nimport { getEmptyImage } from 'react-dnd-html5-backend';\r\nimport { useDrag, useDrop, XYCoord, } from 'react-dnd'\r\nimport { SelectedItem, ItemKind, DraggingSelectedItemData } from './types';\r\nimport { ItemRow, ItemRowProps } from './ItemRow';\r\n\r\nexport interface SelectedItemRowDragHoverCallback {\r\n (draggingItemData: DraggingSelectedItemData, clientOffset: XYCoord): void;\r\n}\r\n\r\nexport interface SelectedItemRowDropCallback {\r\n (draggingItemData: DraggingSelectedItemData): void;\r\n}\r\n\r\nexport interface SelectedItemRowProps extends ItemRowProps {\r\n draggingHoverCallback?: SelectedItemRowDragHoverCallback;\r\n dropCallback?:SelectedItemRowDropCallback;\r\n}\r\n\r\nexport const SelectedItemRow = (props: SelectedItemRowProps) => {\r\n const {\r\n data,\r\n index,\r\n draggingHoverCallback,\r\n dropCallback,\r\n } = props;\r\n if (data === undefined) {\r\n throw new Error('data is necessary for dragging');\r\n }\r\n\r\n const dragObject: DraggingSelectedItemData = {\r\n ...data, index,\r\n }\r\n\r\n const [{ isDragging, }, dragRef, preview] = useDrag({\r\n type: ItemKind.selected,\r\n item: dragObject,\r\n collect: monitor => ({\r\n isDragging: monitor.isDragging(),\r\n }),\r\n });\r\n useEffect(() => {\r\n preview(getEmptyImage());\r\n }, []);\r\n\r\n const [, dropRef] = useDrop({\r\n accept: ItemKind.selected,\r\n hover: (draggingItemData, monitor) => {\r\n draggingHoverCallback?.(draggingItemData, monitor.getClientOffset());\r\n },\r\n drop: (draggingItemData) => {\r\n dropCallback?.(draggingItemData);\r\n }\r\n });\r\n\r\n const ref = useRef(null);\r\n dropRef(dragRef(ref));\r\n return (\r\n \r\n );\r\n}\r\n","export const removeTextKey = _TL_('Remove');\r\n","import { IStackTokens } from '@fluentui/react';\r\n\r\nexport const edgeDistance = 16;\r\n\r\nexport const itemAlignmentStackTokensGap: IStackTokens = {\r\n childrenGap: 15,\r\n};\r\n\r\nexport const itemAlignmentsStackPadding: IStackTokens = {\r\n padding: edgeDistance,\r\n};\r\n\r\nexport const itemAlignmentsStackTokens: IStackTokens = {\r\n ...itemAlignmentStackTokensGap,\r\n ...itemAlignmentsStackPadding,\r\n};\r\n\r\n","import { GroupedList, SelectionMode, assertNever, FocusZoneTabbableElements, Stack, } from '@fluentui/react';\r\nimport React, { FC, useContext } from \"react\";\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { SelectedItem, ItemState } from \"./types\";\r\nimport { SelectedItemRow, SelectedItemRowDragHoverCallback, SelectedItemRowDropCallback } from './SelectedItemRow';\r\nimport { IconName } from './ItemRow';\r\nimport { removeTextKey } from './utils/text';\r\nimport { itemAlignmentStackTokensGap } from './utils/style';\r\n\r\nexport interface SelectedColumnsProps {\r\n headerName: string;\r\n selectedItems: SelectedItem[];\r\n onItemOperationClick: (selectedItem?: SelectedItem) => void;\r\n onSelectedItemsChange: (newItems: SelectedItem[]) => void;\r\n onRemoveAllClick: () => void;\r\n}\r\n\r\nexport const SelectedColumns: FC = (props) => {\r\n const { selectedItems, headerName, onItemOperationClick, onSelectedItemsChange, onRemoveAllClick, } = props;\r\n\r\n const i18n: any = useContext(I18nContext);\r\n const removeAllText: string = i18n.getString(_TL_('Remove all'));\r\n\r\n const onDraggingHover: SelectedItemRowDragHoverCallback = (draggingItemData, clientOffset) => {\r\n console.log(`draggingItem:${draggingItemData.friendlyName}`);\r\n const containerElement = document.querySelector('.selected-items-list .ms-GroupedList-group');\r\n const selectedColumnItemElements = containerElement.querySelectorAll('.item-row');\r\n const dragIndex = draggingItemData.index;\r\n const draggedElement = selectedColumnItemElements[dragIndex];\r\n // assume all items have same height\r\n const itemHeight = draggedElement.getBoundingClientRect().height;\r\n const containerTop = containerElement.getBoundingClientRect().top;\r\n const clientYOffset = clientOffset.y;\r\n let hoverElementIndex = Math.floor((clientYOffset - containerTop) / itemHeight);\r\n hoverElementIndex = hoverElementIndex < 0 ? 0 : hoverElementIndex;\r\n hoverElementIndex = hoverElementIndex > selectedColumnItemElements.length - 1 ? selectedColumnItemElements.length - 1 : hoverElementIndex;\r\n // eslint-disable-next-line no-param-reassign\r\n draggingItemData.hoverIndex = hoverElementIndex;\r\n const transformUp1Style = getTransfromStyleString(-1, itemHeight);\r\n const transformDown1Style = getTransfromStyleString(1, itemHeight);\r\n const draggedElementTransformStyle = getTransfromStyleString(hoverElementIndex - dragIndex, itemHeight);\r\n const lowerBound = Math.min(hoverElementIndex, dragIndex);\r\n const upperBound = Math.max(hoverElementIndex, dragIndex);\r\n for (let i = 0; i < selectedColumnItemElements.length; i += 1) {\r\n const currentElement = selectedColumnItemElements[i] as HTMLElement;\r\n currentElement.style.transition = 'all 0.2s ease-out 0s';\r\n switch (true) {\r\n case i < lowerBound:\r\n case i > upperBound:\r\n currentElement.style.transform = null;\r\n break;\r\n case i === dragIndex:\r\n currentElement.style.transform = draggedElementTransformStyle;\r\n break;\r\n default:\r\n if (lowerBound === hoverElementIndex) { currentElement.style.transform = transformDown1Style; } else { currentElement.style.transform = transformUp1Style; }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n const onDrop: SelectedItemRowDropCallback = (draggingItemData) => {\r\n const containerElement = document.querySelector('.selected-items-list .ms-GroupedList-group');\r\n const selectedColumnItemElements = containerElement.querySelectorAll('.item-row');\r\n selectedColumnItemElements.forEach((element) => {\r\n // eslint-disable-next-line no-param-reassign\r\n (element as HTMLElement).style.transform = null;\r\n // eslint-disable-next-line no-param-reassign\r\n (element as HTMLElement).style.transition = null;\r\n });\r\n\r\n const newItems = [...selectedItems];\r\n const [draggingItem] = newItems.splice(draggingItemData.index, 1);\r\n newItems.splice(draggingItemData.hoverIndex, 0, draggingItem);\r\n onSelectedItemsChange(newItems);\r\n // focus on droped element\r\n setTimeout(() => {\r\n const dropIndex = draggingItemData.hoverIndex;\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n const containerElement = document.querySelector('.selected-items-list .ms-GroupedList-group');\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n const selectedColumnItemElements = containerElement.querySelectorAll('.item-row');\r\n (selectedColumnItemElements[dropIndex] as HTMLElement).focus();\r\n }, 0);\r\n }\r\n\r\n return (\r\n
\r\n
{headerName}
\r\n \r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions, jsx-a11y/no-noninteractive-tabindex */}\r\n \r\n {removeAllText}\r\n \r\n \r\n false}\r\n focusZoneProps={{\r\n handleTabKey: FocusZoneTabbableElements.all,\r\n preventFocusRestoration: true,\r\n }}\r\n />\r\n
\r\n );\r\n\r\n function onRenderSelectedCell(nestingDepth?: number, item?: SelectedItem, itemIndex?: number): React.ReactNode {\r\n if (!item) {\r\n throw new Error(\"unknown item\");\r\n }\r\n if (itemIndex === undefined) {\r\n throw new Error(\"unknown itemIndex, find the reason rather than just use it.\");\r\n }\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nfunction getTransfromStyleString(offset: number | undefined, height: number): string {\r\n return offset === undefined ? \"\" : `translate(0px, ${offset * height}px)`;\r\n}\r\n\r\nexport function getStaticPropsOfSelectedItemRowByItem(item: SelectedItem, i18n, texts: { removeTextKey: string }) {\r\n return {\r\n index: -1,\r\n text: item.friendlyName ?? '',\r\n iconName: IconName.Empty,\r\n isOperationEnabled: getIsOperationEnabledForSelectedItem(item),\r\n operationText: getOperationTextForSelectedItem(item, i18n.getString(texts.removeTextKey)),\r\n }\r\n}\r\n\r\nfunction getOperationTextForSelectedItem(item: SelectedItem, removeText) {\r\n return item.state === ItemState.optional ? removeText : '';\r\n}\r\n\r\n// eslint-disable-next-line consistent-return\r\nfunction getIsOperationEnabledForSelectedItem(item: SelectedItem) {\r\n switch (item.state) {\r\n case ItemState.mandatory:\r\n case ItemState.lock:\r\n case ItemState.unknown:\r\n return false;\r\n case ItemState.optional:\r\n return true;\r\n default:\r\n assertNever(item.state);\r\n }\r\n}","/* eslint-disable react/jsx-filename-extension */\r\nimport React, { FC, useContext, CSSProperties } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { useDragLayer, XYCoord, } from 'react-dnd';\r\nimport { Item, ItemKind, } from './types';\r\nimport { getStaticPropsOfSelectedItemRowByItem } from './SelectedColumns';\r\nimport { removeTextKey } from './utils/text';\r\nimport { ItemRow } from './ItemRow';\r\n\r\ninterface DragLayerContainerProps {\r\n currentOffset: XYCoord | null,\r\n}\r\n\r\nconst layerStyles: CSSProperties = {\r\n position: 'fixed',\r\n pointerEvents: 'none',\r\n zIndex: 100,\r\n left: 0,\r\n top: 0,\r\n width: '100%',\r\n height: '100%',\r\n};\r\n\r\nconst DragLayerItemContainer: FC = (props) => {\r\n const { children, currentOffset } = props;\r\n if (!currentOffset) { return null; }\r\n const { x, y } = currentOffset;\r\n return (
\r\n {children}\r\n
);\r\n};\r\n\r\ninterface DragLayerProps { }\r\nexport const DragLayerPreview: FC = () => {\r\n const { item, isDragging, currentOffset } = useDragLayer(monitor => ({\r\n item: monitor.getItem() as Item,\r\n isDragging: monitor.isDragging(),\r\n currentOffset: monitor.getSourceClientOffset(),\r\n }));\r\n const i18n = useContext(I18nContext) as any;\r\n if (!isDragging) { return null; }\r\n\r\n switch (item.kind) {\r\n case ItemKind.selected:\r\n return (\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n};\r\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\r\n/* eslint-disable jsx-a11y/no-static-element-interactions */\r\n/* eslint-disable jsx-a11y/click-events-have-key-events */\r\n/* eslint-disable react/jsx-filename-extension */\r\nimport { Stack, SearchBox, Pivot, PivotItem, GroupedList, assertNever, GroupHeader, IGroup, SelectionMode, FocusZoneTabbableElements, IGroupHeaderProps, TooltipHost } from '@fluentui/react';\r\nimport React, { FC, useContext, useState, } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { CategoryDescriptor, CandidateItem, ItemState, isLockedCandidateItem } from './types';\r\nimport { IconName, ItemRow } from './ItemRow';\r\nimport { itemAlignmentStackTokensGap } from './utils/style';\r\n\r\ninterface AvailableColumnsProps {\r\n headerName: string;\r\n categories: CategoryDescriptor[];\r\n onAddItems: (newSelectedKeys: CandidateItem[]) => void;\r\n onItemOperationClick: (item?: CandidateItem) => void;\r\n onExpandAllClick: () => void;\r\n onCollapseAllClick: () => void;\r\n onToggleCollapse: (triggerGroup: IGroup) => void;\r\n}\r\n\r\nexport const AvailableColumns: FC = (props) => {\r\n const { headerName, categories, onItemOperationClick, onCollapseAllClick, onExpandAllClick, onToggleCollapse, onAddItems } = props;\r\n const [searchKey, setSearchkey] = useState(undefined);\r\n\r\n const i18n: any = useContext(I18nContext);\r\n const columnNameText: string = i18n.getString(_TL_('Column name'));\r\n const expandAllText: string = i18n.getString(_TL_('Expand all'));\r\n const collapseAllText: string = i18n.getString(_TL_('Collapse all'));\r\n const addAllText: string = i18n.getString(_TL_('Add all'));\r\n const addText: string = i18n.getString(_TL_('Add'));\r\n const addedText: string = i18n.getString(_TL_('Added'));\r\n\r\n const filteredCategories = categories.map(category => filterCategory(category, searchKey));\r\n\r\n return (\r\n
\r\n
{headerName}
\r\n \r\n \r\n {expandAllText}\r\n \r\n \r\n {collapseAllText}\r\n \r\n \r\n {addAllText}\r\n \r\n \r\n \r\n \r\n {filteredCategories.map((category) => {\r\n const itemCountsOfAllCategory = category.groups.reduce((pre, cur) => pre + cur.items.length, 0);\r\n return (\r\n \r\n {category.groups.map((group) => {\r\n const groupOfGroupedList: IGroup = {\r\n count: group.items.length,\r\n key: group.key,\r\n name: group.name,\r\n startIndex: 0,\r\n isCollapsed: !!group.isCollapsed,\r\n\r\n };\r\n // We use many simple `GroupedList`s rather than a complex `GroupedList`.\r\n return ();\r\n })}\r\n \r\n );\r\n })}\r\n \r\n
\r\n );\r\n\r\n function filterCategory(category: CategoryDescriptor, searchString?: string): CategoryDescriptor {\r\n if (!searchString) {\r\n return category;\r\n }\r\n const newGroups = category.groups.map(group => ({\r\n ...group,\r\n items: group.items.filter(item =>\r\n item.friendlyName.toLowerCase().includes(searchString.toLowerCase())),\r\n }));\r\n return {\r\n ...category,\r\n groups: newGroups,\r\n }\r\n }\r\n\r\n function onSearchValueChange(event?: React.ChangeEvent, newValue?: string) {\r\n setSearchkey(newValue);\r\n }\r\n\r\n function onRenderCandidateCell(nestingDepth?: number, item?: CandidateItem, itemIndex?: number): React.ReactNode {\r\n if (!item) {\r\n throw new Error(\"unknown item\");\r\n }\r\n if (itemIndex === undefined) {\r\n throw new Error(\"unknown itemIndex, find the reason rather than just use it.\");\r\n }\r\n const isMandatory = item.state === ItemState.mandatory;\r\n\r\n const row = (\r\n );\r\n // eslint-disable-next-line no-undef\r\n let message: string | JSX.Element | undefined;\r\n\r\n if (isLockedCandidateItem(item)) {\r\n message = item.lockReason;\r\n }\r\n\r\n return withTooltip(row, message);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-shadow\r\n function getOperationText(item: CandidateItem) {\r\n return item.isSelected ? addedText : addText;\r\n }\r\n\r\n // eslint-disable-next-line no-undef, @typescript-eslint/no-shadow\r\n function withTooltip(element: JSX.Element, message?: string | JSX.Element) {\r\n if (!message) { return element; }\r\n\r\n return (\r\n \r\n {element}\r\n \r\n )\r\n }\r\n }\r\n\r\n function getIsOperationEnabled(item: CandidateItem) {\r\n switch (item.state) {\r\n case ItemState.mandatory:\r\n case ItemState.lock:\r\n case ItemState.unknown:\r\n return false;\r\n case ItemState.optional:\r\n return !item.isSelected;\r\n default:\r\n return assertNever(item.state);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line no-undef, @typescript-eslint/no-shadow\r\n function onRenderCandidateGroupHeader(props?: IGroupHeaderProps): JSX.Element {\r\n return (
\r\n \r\n onAddGroupAllClick(props.group.key)} data-testId=\"group-add-all-button\">\r\n {addAllText}\r\n \r\n
)\r\n }\r\n\r\n function onAddAllClick() {\r\n const itmesToAdd: CandidateItem[] = []\r\n categories.forEach((category) => {\r\n category.groups.forEach((group) => {\r\n group.items.forEach((item) => {\r\n // Could not use only `getIsOperationEnabled` to limit candidate items, because \"onAddItems\" callback might remove some selected columns.\r\n itmesToAdd.push(item)\r\n })\r\n })\r\n })\r\n onAddItems(itmesToAdd)\r\n }\r\n\r\n function onAddGroupAllClick(groupKey) {\r\n const itmesToAdd: CandidateItem[] = []\r\n categories.forEach((category) => {\r\n category.groups.forEach((group) => {\r\n if (group.key === groupKey) {\r\n group.items.forEach((item) => {\r\n if (getIsOperationEnabled(item)) {\r\n itmesToAdd.push(item)\r\n }\r\n })\r\n }\r\n })\r\n })\r\n onAddItems(itmesToAdd)\r\n }\r\n}\r\n","/* eslint-disable react/jsx-filename-extension */\r\nimport { Stack, IGroup, } from '@fluentui/react';\r\nimport React, { FC, useContext, } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { CategoryDescriptor, ItemState, SelectedItem, CandidateItem } from './types';\r\nimport { DragLayerPreview } from './DragLayerPreview';\r\nimport { SelectedColumns } from './SelectedColumns';\r\nimport { itemAlignmentsStackPadding } from './utils/style';\r\nimport { AvailableColumns } from './AvailableColumns';\r\n\r\ninterface ColumnChooserProps {\r\n className?: string;\r\n selectedItems: SelectedItem[];\r\n categories: CategoryDescriptor[];\r\n onAddItems: (newSelectedKeys: CandidateItem[]) => void;\r\n onSelectedKeysChange: (newSelectedKeys: string[]) => void;\r\n onCollapseAllClick: () => void;\r\n onExpandAllClick: () => void;\r\n onToggleCollapse: (triggerGroup: IGroup) => void;\r\n}\r\n\r\nconst ColumnChooser: FC = (props) => {\r\n const {\r\n className = '',\r\n categories,\r\n selectedItems,\r\n onSelectedKeysChange,\r\n onAddItems,\r\n onCollapseAllClick,\r\n onExpandAllClick,\r\n onToggleCollapse,\r\n } = props;\r\n const i18n: any = useContext(I18nContext);\r\n const availableColumnsSring = i18n.getString(_TL_('Available Columns'));\r\n const selectedColumnsString = i18n.getString(_TL_('Selected Columns'));\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {\r\n if (chosenItem === undefined) {\r\n throw new Error();\r\n }\r\n const newSelectedItemKeys = [...selectedItems.map(item => item.key), chosenItem.key];\r\n onSelectedKeysChange(newSelectedItemKeys);\r\n }}\r\n onAddItems={(items) => {\r\n onAddItems(items);\r\n }}\r\n />\r\n \r\n \r\n
\r\n \r\n \r\n {\r\n const newSelectedItemKeys = selectedItems\r\n .filter(item => item.key !== chosenItem?.key)\r\n .map(item => item.key);\r\n onSelectedKeysChange(newSelectedItemKeys);\r\n }}\r\n onSelectedItemsChange={(newItems) => {\r\n const newItemkeys = newItems.map(item => item.key);\r\n onSelectedKeysChange(newItemkeys);\r\n }}\r\n onRemoveAllClick={() => {\r\n const newItemkeys = selectedItems\r\n .filter(item => item.state === ItemState.mandatory)\r\n .map(item => item.key);\r\n onSelectedKeysChange(newItemkeys);\r\n }}\r\n />\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport { ColumnChooser };\r\n","export function intersection(arr: string[], selectedKeys: Set) {\r\n return arr.filter(s => selectedKeys.has(s));\r\n}\r\n","// Well, this is not the correct way\r\n// Just note that this should be a theme used by all code rather than hard code.\r\nexport const theme = {\r\n enableTextColor: '#0078d4',\r\n enableTextHoverColor: '#004578',\r\n hoverBackgroundColor: '#EDEBE9',\r\n};\r\n","enum ReportAggregation {\r\n Summary = 'Summary',\r\n Hourly = 'Hourly',\r\n Daily = 'Daily',\r\n Weekly = 'Weekly',\r\n Monthly = 'Monthly',\r\n Yearly = 'Yearly',\r\n HourOfDay = 'HourOfDay',\r\n DayOfWeek = 'DayOfWeek',\r\n WeeklyStartingMonday = 'WeeklyStartingMonday',\r\n}\r\n\r\nenum ReportAggregationColumn {\r\n GregorianDate = 'GregorianDate',\r\n Week = 'Week',\r\n Month = 'Month',\r\n Year = 'Year',\r\n HourOfDay = 'HourOfDay',\r\n DayOfWeek = 'DayOfWeek',\r\n Quarter = 'Quarter',\r\n WeekStartingMonday = 'WeekStartingMonday',\r\n}\r\n\r\nexport interface PilotSet {\r\n isAllowed: (permissions: any, isCustomerScope: boolean, isColumnChooserRenderer: boolean) => boolean;\r\n columns: string[];\r\n}\r\n\r\nexport enum SelectOption {\r\n mandatory = 'mandatory',\r\n}\r\n\r\nexport type TimeAggregationEnum = string;\r\n\r\nexport interface Option {\r\n key: string;\r\n name: string;\r\n type: string;\r\n helpTopic?: string;\r\n forbiddenTimeGrains?: TimeAggregationEnum[];\r\n selectOption?: SelectOption;\r\n}\r\n\r\nexport interface CategoryDataModel {\r\n name: string;\r\n type: string;\r\n options: Option[];\r\n}\r\n\r\nexport const mapOfReportAggregationEnumAndColumn = {\r\n Summary: undefined,\r\n Hourly: undefined,\r\n Daily: 'GregorianDate',\r\n Weekly: 'Week',\r\n Monthly: 'Month',\r\n Yearly: 'Year',\r\n HourOfDay: 'HourOfDay',\r\n DayOfWeek: 'DayOfWeek',\r\n WeeklyStartingMonday: 'WeekStartingMonday',\r\n};\r\n\r\n/**\r\n * ATTENTION! This is not a bijection.\r\n * This behavior is guessed by myself: If user chooses more detaied option, the returned value is more detailed\r\n * which means if `Year` and `Date` is both selected, the equivalent report aggregation is `Daily` rather than `Yearly`\r\n */\r\nexport function convertColumnsToOldUIReportAggregation(columns: Set | string[]) {\r\n if (Array.isArray(columns)) {\r\n // eslint-disable-next-line no-param-reassign\r\n columns = new Set(columns);\r\n }\r\n switch (true) {\r\n case columns.has(ReportAggregationColumn.HourOfDay) && columns.has(ReportAggregationColumn.GregorianDate):\r\n return ReportAggregation.Hourly;\r\n case columns.has(ReportAggregationColumn.HourOfDay):\r\n return ReportAggregation.HourOfDay;\r\n case columns.has(ReportAggregationColumn.GregorianDate):\r\n return ReportAggregation.Daily;\r\n case columns.has(ReportAggregationColumn.DayOfWeek):\r\n return ReportAggregation.DayOfWeek;\r\n case columns.has(ReportAggregationColumn.Week):\r\n return ReportAggregation.Weekly;\r\n case columns.has(ReportAggregationColumn.WeekStartingMonday):\r\n return ReportAggregation.WeeklyStartingMonday;\r\n case columns.has(ReportAggregationColumn.Month):\r\n return ReportAggregation.Monthly;\r\n case columns.has(ReportAggregationColumn.Year):\r\n return ReportAggregation.Yearly;\r\n default:\r\n return ReportAggregation.Summary;\r\n }\r\n}\r\n\r\n/**\r\n * @param columns the columns selected by the user\r\n * @returns ATTENTION: the report aggregation is used internal by MT rather than used in the old UI.\r\n */\r\nexport function convertColumnsToReportAggregation(columns: Set | string[]) {\r\n if (Array.isArray(columns)) {\r\n // eslint-disable-next-line no-param-reassign\r\n columns = new Set(columns);\r\n }\r\n let reportAggregation: ReportAggregation = ReportAggregation.Summary;\r\n if (columns.has(ReportAggregationColumn.HourOfDay)) {\r\n if (hasDateTypeColumns(columns) || columns.has(ReportAggregationColumn.HourOfDay)) {\r\n reportAggregation = ReportAggregation.Hourly;\r\n } else {\r\n reportAggregation = ReportAggregation.HourOfDay;\r\n }\r\n } else if (columns.has(ReportAggregationColumn.DayOfWeek)) {\r\n if (hasDateTypeColumns(columns)) {\r\n reportAggregation = ReportAggregation.Daily;\r\n } else {\r\n reportAggregation = ReportAggregation.DayOfWeek;\r\n }\r\n } else if (hasDateTypeColumns(columns)) {\r\n reportAggregation = ReportAggregation.Daily;\r\n }\r\n return reportAggregation;\r\n}\r\n\r\nfunction hasDateTypeColumns(reportColumns: Set) {\r\n return reportColumns.has(ReportAggregationColumn.GregorianDate)\r\n || reportColumns.has(ReportAggregationColumn.Week)\r\n || reportColumns.has(ReportAggregationColumn.WeekStartingMonday)\r\n || reportColumns.has(ReportAggregationColumn.Month)\r\n || reportColumns.has(ReportAggregationColumn.Quarter)\r\n || reportColumns.has(ReportAggregationColumn.Year);\r\n}\r\n\r\n// Some columns could not be seen by user who does not have permissions.\r\nexport function getRejectedColumns(pilotSets: PilotSet[], permissions: any, isCustomerScope: boolean = false, isColumnChooserRenderer: boolean = false) {\r\n const rejectedColumns = new Set();\r\n pilotSets.forEach(({ columns, isAllowed }) => {\r\n if (!isAllowed(permissions, isCustomerScope, isColumnChooserRenderer)) {\r\n columns.forEach(column => rejectedColumns.add(column));\r\n }\r\n });\r\n return rejectedColumns;\r\n}\r\n\r\nfunction isAvailableByTimeGrain(timeGrain: TimeAggregationEnum, option: Option) {\r\n return !(option.forbiddenTimeGrains && option.forbiddenTimeGrains.includes(timeGrain));\r\n}\r\n\r\nfunction filterCategoriesByTimeGrain(categories: CategoryDataModel[], timeGrain: TimeAggregationEnum) {\r\n return categories.map(category => ({\r\n ...category,\r\n options: category.options.filter(option => isAvailableByTimeGrain(timeGrain, option)),\r\n }));\r\n}\r\n\r\nfunction filterCategoriesByRejectedColumns(categories: CategoryDataModel[], rejectedColumns: Set) {\r\n return categories.map(category => ({\r\n ...category,\r\n options: category.options.filter(option => !rejectedColumns.has(option.key)),\r\n }));\r\n}\r\n\r\nexport function filterCategories(categories: CategoryDataModel[], by: { rejectedColumns?: Set, timeGrain?: TimeAggregationEnum }) {\r\n let res = categories;\r\n if (by.timeGrain) {\r\n res = filterCategoriesByTimeGrain(categories, by.timeGrain);\r\n }\r\n if (by.rejectedColumns) {\r\n res = filterCategoriesByRejectedColumns(res, by.rejectedColumns);\r\n }\r\n return res;\r\n}\r\n\r\nexport function getAvaliableColumnSet(categories: CategoryDataModel[]) {\r\n const avaliableColumnSet = new Set();\r\n categories.forEach((category) => {\r\n category.options.forEach(option => avaliableColumnSet.add(option.key));\r\n });\r\n return avaliableColumnSet;\r\n}\r\n\r\nexport function filterColumnByAvaliableColumns(columns: string[], avaliableColumnSet: Set) {\r\n return columns.filter(column => avaliableColumnSet.has(column));\r\n}\r\n\r\nexport function addMandatoryToSelectedByCategories(columns: string[], categories: CategoryDataModel[]) {\r\n const selectedSet = new Set(columns);\r\n const newSelected = [...columns];\r\n\r\n categories.forEach(category => category.options.forEach((option) => {\r\n if (option && option.selectOption === SelectOption.mandatory && !selectedSet.has(option.key)) {\r\n newSelected.unshift(option.key);\r\n }\r\n }));\r\n return newSelected;\r\n}\r\n\r\nexport function addMandatoryToSelectedByMandateColumnSet(columns: string[], MandateColumnSet: string[][], avaliableColumns: Set) {\r\n const columnSet = new Set(columns);\r\n const newColumns = [...columns];\r\n MandateColumnSet.forEach((mandateColumns) => {\r\n const isMandatoryColumnAllMissing = !mandateColumns.some(column => columnSet.has(column));\r\n if (isMandatoryColumnAllMissing) {\r\n const firstAvaliableColumn = mandateColumns.find(column => avaliableColumns.has(column));\r\n // TODO: should we throw an error if `firstAvaliableColumn` is not found?\r\n if (firstAvaliableColumn) {\r\n newColumns.push(firstAvaliableColumn);\r\n }\r\n }\r\n });\r\n return newColumns;\r\n}\r\n\r\n/**\r\n * If report does not support \"summary\" report aggregation, it must select one time column\r\n */\r\nexport function addDefaultTimeColumn(columns: string[], allowedReportAggregationEnums: string[]) {\r\n const newSelected = [...columns];\r\n const allowedReportAggregationColumnSet = new Set(allowedReportAggregationEnums.map(reportAggregationEnum => mapOfReportAggregationEnumAndColumn[reportAggregationEnum]));\r\n if (!allowedReportAggregationEnums.includes('Summary')) {\r\n if (!newSelected.some(column => allowedReportAggregationColumnSet.has(column))) {\r\n const defaultAggregationEnum = allowedReportAggregationEnums[0];\r\n newSelected.push(mapOfReportAggregationEnumAndColumn[defaultAggregationEnum]);\r\n }\r\n }\r\n return newSelected;\r\n}\r\n\r\nexport function getCanonicalCategoriesAndColumns({\r\n columns, reportSchema, permissions, history,\r\n}) {\r\n let canonicalColumns;\r\n if (columns.length === 0) {\r\n canonicalColumns = reportSchema.Columns.default;\r\n } else {\r\n canonicalColumns = columns;\r\n }\r\n\r\n const { aid: accountId } = history.query;\r\n\r\n const rejectedColumns = getRejectedColumns(reportSchema.Columns.piloted, permissions, !(accountId > 0));\r\n const defaultRejectedColumns = getRejectedColumns(reportSchema.Columns.pilotDefault, permissions);\r\n\r\n canonicalColumns = addMandatoryToSelectedByCategories(canonicalColumns, reportSchema.Columns.categories);\r\n canonicalColumns = addDefaultTimeColumn(canonicalColumns, reportSchema.ReportAggregation.enum);\r\n const equivalentReportAggregation = convertColumnsToReportAggregation(new Set(canonicalColumns));\r\n const categories = filterCategories(reportSchema.Columns.categories, { rejectedColumns, timeGrain: equivalentReportAggregation });\r\n const avaliableColumns = getAvaliableColumnSet(categories);\r\n canonicalColumns = addMandatoryToSelectedByMandateColumnSet(canonicalColumns, reportSchema.MandateColumnSet ?? [], avaliableColumns);\r\n canonicalColumns = filterColumnByAvaliableColumns(canonicalColumns, avaliableColumns);\r\n\r\n if (columns.length === 0) {\r\n canonicalColumns = canonicalColumns.filter(column => !defaultRejectedColumns.has(column));\r\n }\r\n\r\n return { categories, columns: canonicalColumns };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-shadow */\r\n/* eslint-disable react/jsx-filename-extension */\r\n/* eslint-disable no-shadow */\r\n/* eslint-disable no-use-before-define */\r\nimport React, { FC, useContext, useMemo, useState, useEffect, useRef } from 'react';\r\nimport { I18nContext } from '@bingads-webui-react/i18n-context';\r\nimport { Separator, mergeStyles, IStyle, PrimaryButton, DefaultButton, IGroup } from '@fluentui/react';\r\nimport { ColumnChooser } from './src/index';\r\nimport { ExclusionRule, CategoryDescriptor, CandidateItem, SelectedItem, ItemState, ItemKind, isLockedCandidateItem } from './src/types';\r\nimport { intersection } from './src/utils/exclusionRuleHelper';\r\nimport { theme } from './theme';\r\nimport { edgeDistance } from './src/utils/style';\r\nimport { convertColumnsToReportAggregation, filterCategories, SelectOption, Option, CategoryDataModel, } from './helper';\r\n\r\n// TODO: Something should be done in the future:\r\n// 1. log\r\n// 2. for selected columns, use Up/Down/Space to move\r\n\r\nconst columnChooserStyle: IStyle = {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n fontFamily: 'Segoe UI',\r\n height: '100%',\r\n '.reports-v4-column-chooser-header': {\r\n marginTop: edgeDistance,\r\n marginLeft: edgeDistance,\r\n fontWeight: 'bold',\r\n fontSize: 18,\r\n lineHeight: 24,\r\n },\r\n '.reports-v4-column-chooser-tip': {\r\n marginLeft: edgeDistance,\r\n color: 'grey',\r\n },\r\n '.reports-v4-column-chooser': {\r\n flexGrow: 1,\r\n // ridiculous, but works(ocupy all remaining space of its parent elemnt,\r\n // no matter how high its children are), 8000 is a big enough value.\r\n height: 'calc(100% - 8000px)',\r\n '.column-lists': {\r\n height: '100%',\r\n },\r\n '.list-wrapper': {\r\n borderWidth: 1,\r\n borderColor: 'black',\r\n borderStyle: 'solid',\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '.list-header': {\r\n padding: 5,\r\n fontWeight: 'bold',\r\n },\r\n '.action-group': {\r\n marginTop: 5,\r\n marginLeft: 5,\r\n marginBottom: 5,\r\n },\r\n '.ms-SearchBox': {\r\n marginLeft: 5,\r\n marginRight: 5,\r\n },\r\n '.wrapped-group-header': {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n ':hover': {\r\n background: 'rgb(243, 242, 241)',\r\n '.group-operation': {\r\n display: 'inline',\r\n },\r\n },\r\n '.ms-GroupHeader': {\r\n overflow: 'hidden',\r\n },\r\n '.group-operation': {\r\n display: 'none',\r\n color: 'rgb(0, 120, 212)',\r\n cursor: 'pointer',\r\n paddingRight: 8,\r\n fontSize: 14,\r\n flexShrink: 0,\r\n ':hover': {\r\n color: 'rgb(0, 69, 120)',\r\n },\r\n },\r\n },\r\n '.ms-GroupHeader-expand': {\r\n flexShrink: 0,\r\n },\r\n '.ms-GroupHeader-title': {\r\n overflow: 'hidden',\r\n },\r\n },\r\n '.categories-wrapper': {\r\n flexGrow: 1,\r\n // ridiculous, but works(ocupy all remaining space of its parent elemnt,\r\n // no matter how high its children are), 8000 is a big enough value.\r\n height: 'calc(100% - 8000px)',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '[role=tabpanel]': {\r\n flexGrow: 1,\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n },\r\n },\r\n '.selected-items-list': {\r\n flexGrow: 1,\r\n // ridiculous, but works(ocupy all remaining space of its parent elemnt,\r\n // no matter how high its children are), 8000 is a big enough value.\r\n height: 'calc(100% - 8000px)',\r\n overflowY: 'auto',\r\n overflowX: 'hidden',\r\n },\r\n '.item-row': {\r\n paddingRight: 8,\r\n // reference https://stackoverflow.com/questions/8468066/child-inside-parent-with-min-height-100-not-inheriting-height\r\n minHeight: 'inherit',\r\n display: 'flex',\r\n fontSize: 14,\r\n '.text-cell': {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n '.cell': {\r\n paddingTop: 9,\r\n paddingLeft: 10,\r\n },\r\n '.operation-cell': {\r\n marginLeft: 'auto',\r\n },\r\n ':hover, :focus, :focus-within': {\r\n backgroundColor: theme.hoverBackgroundColor,\r\n '.iconba-GripperBarHorizontal': {\r\n ':after': {\r\n color: 'black',\r\n content: '\"\\\\F090\\\\F08E\"',\r\n position: 'absolute',\r\n fontSize: '16px',\r\n marginTop: '-6px',\r\n letterSpacing: '1px',\r\n marginLeft: '-18px',\r\n writingMode: 'vertical-lr',\r\n },\r\n },\r\n '.operation': {\r\n display: 'flex',\r\n },\r\n },\r\n '.icon-container': {\r\n margin: 9,\r\n width: 20,\r\n height: 20,\r\n flexShrink: 0,\r\n '.iconba': {\r\n top: 0,\r\n color: '#0078D4',\r\n fontSize: 20,\r\n },\r\n },\r\n },\r\n '.item-row.dragging': {\r\n opacity: 0.5,\r\n },\r\n '.item-list': {\r\n '.operation': {\r\n display: 'none',\r\n },\r\n },\r\n '.operation.disabled': {\r\n cursor: 'not-allowed',\r\n },\r\n '.operation.enabled': {\r\n color: theme.enableTextColor,\r\n cursor: 'pointer',\r\n ':hover, :focus': {\r\n color: theme.enableTextHoverColor,\r\n },\r\n },\r\n },\r\n '.reports-v4-column-chooser-error-messages': {\r\n marginLeft: edgeDistance,\r\n marginRight: edgeDistance,\r\n color: '#A80000',\r\n },\r\n '.button-group': {\r\n marginLeft: edgeDistance,\r\n marginBottom: edgeDistance,\r\n '.cancel-button': {\r\n marginLeft: edgeDistance / 2,\r\n },\r\n },\r\n};\r\n\r\nconst columnChooserStyleClassName = mergeStyles(columnChooserStyle);\r\n\r\nexport function extractExclusionRulesFromExclusionSets(exclusionSets: any): ExclusionRule[] {\r\n const rules: ExclusionRule[] = [];\r\n // TODO: should we check whether they are always paris? what should we do if there is not pair?\r\n const dimensionExclusionSetKeys = Object.keys(exclusionSets).filter(key => key.startsWith('Dimension'));\r\n dimensionExclusionSetKeys.forEach((key) => {\r\n const correspondKey = getCorrespondKey(key);\r\n const set = exclusionSets[key];\r\n const correspondSet = exclusionSets[correspondKey];\r\n const exclusionRule: ExclusionRule = {\r\n keys: new Set(set),\r\n predicate: ({ selectedKeys }) => {\r\n const triggerColumnKeys = intersection(correspondSet, selectedKeys);\r\n return [triggerColumnKeys.length !== 0, { triggerColumnKeys }];\r\n },\r\n };\r\n const correspondExclusionRule: ExclusionRule = {\r\n keys: new Set(correspondSet),\r\n predicate: ({ selectedKeys }) => {\r\n const triggerColumnKeys = intersection(set, selectedKeys);\r\n return [triggerColumnKeys.length !== 0, { triggerColumnKeys }];\r\n },\r\n };\r\n rules.push(exclusionRule, correspondExclusionRule);\r\n });\r\n\r\n return rules;\r\n\r\n function getCorrespondKey(key: string) {\r\n if (key.startsWith('Dimension')) {\r\n return key.replace('Dimension', 'Metric');\r\n } else if (key.startsWith('Metric')) {\r\n return key.replace('Metric', 'Dimension');\r\n }\r\n throw new Error('unknwon exclusion set name format');\r\n }\r\n}\r\n\r\ninterface AggregationExclusion {\r\n [reportAggregation: string]: string[];\r\n}\r\n\r\n/**\r\n * why a column is excluded\r\n *\r\n * key is the \"locked\" column, value is the columns that make it \"locked\".\r\n */\r\ntype ConlicktColumnMap = Map;\r\n\r\nexport function executeExcludeRules(selectedKeys: Set, rules: ExclusionRule[]) {\r\n const res = new Set();\r\n const conflictColumnMap: ConlicktColumnMap = new Map();\r\n rules.forEach((rule) => {\r\n const [predicateValue, context] = rule.predicate({ selectedKeys });\r\n if (predicateValue) {\r\n rule.keys.forEach((key) => {\r\n res.add(key);\r\n\r\n if (!conflictColumnMap.has(key)) {\r\n conflictColumnMap.set(key, []);\r\n }\r\n\r\n const conflictColumns = conflictColumnMap.get(key);\r\n context.triggerColumnKeys.forEach((c) => {\r\n if (!conflictColumns?.includes(c)) {\r\n conflictColumns?.push(c);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n return conflictColumnMap;\r\n}\r\n\r\nexport function getMandatoryItemKeys(categories: CategoryDataModel[]) {\r\n const res: string[] = [];\r\n categories.forEach(category =>\r\n category.options.forEach((option) => {\r\n if (option.selectOption === SelectOption.mandatory) {\r\n res.push(option.key);\r\n }\r\n }));\r\n return res;\r\n}\r\n\r\n/**\r\n * Note that the parameter is not clean, even insane\r\n * We choose to pass the raw data as small as possiable , rather than exactly what the component need\r\n * for the requirement is changing frequently\r\n * This should be improved in the future if possiable.\r\n */\r\ninterface ReportsV4ColumnChooserProps {\r\n categories: CategoryDataModel[];\r\n exclusionSets: any;\r\n AggregationExclusion: AggregationExclusion | undefined;\r\n selectedKeys: string[];\r\n MandateColumnSet: any;\r\n MissingMandatoryColumnError: any;\r\n onSaveClick: (selectedKeys: string[]) => void;\r\n onCancelClick: (selectedKeys: string[]) => void;\r\n isTimeColumnMandatory: boolean;\r\n // onSelectedKeysChange?: (selectedKeys: string[]) => void;\r\n}\r\n\r\nexport function buildCandidateItem(\r\n option: Option,\r\n conflictColumnMap: ConlicktColumnMap,\r\n selectedKeysSet: Set,\r\n i18n: any,\r\n keyNameMap: Record\r\n): CandidateItem {\r\n const candidateItem: CandidateItem = {\r\n key: option.key,\r\n friendlyName: option.name,\r\n helpTopic: option.helpTopic,\r\n state: getItemStateOfOption(option, conflictColumnMap),\r\n kind: ItemKind.candidate,\r\n isSelected: selectedKeysSet.has(option.key),\r\n };\r\n\r\n if (isLockedCandidateItem(candidateItem)) {\r\n const conflictColumnsFriendlyName = conflictColumnMap.get(option.key)!.map(c => keyNameMap[c]);\r\n candidateItem.lockReason = getLockReasonElement(option.name, conflictColumnsFriendlyName);\r\n }\r\n\r\n return candidateItem;\r\n\r\n function getItemStateOfOption(option: Option, conflictColumnMap: ConlicktColumnMap): ItemState {\r\n switch (true) {\r\n case option.selectOption === SelectOption.mandatory:\r\n return ItemState.mandatory;\r\n case conflictColumnMap.has(option.key):\r\n return ItemState.lock;\r\n default:\r\n return ItemState.optional;\r\n }\r\n }\r\n\r\n function getLockReasonElement(lockColumnFriendlyName: string, conflictColumnsFriendlyName: string[]) {\r\n const oneColumnTemplate = _TL_('This field is not compatible with [{{firstColumnName}}]');\r\n const twoColumnTemplate = _TL_('This field is not compatible with [{{firstColumnName}}] and [{{secondColumnName}}]');\r\n const threeAndMoreColumnTemplate = _TL_('This field is not compatible with [{{firstColumnName}}], [{{secondColumnName}}] and {{remainCount}} more filed(s).');\r\n const message = (() => {\r\n const { length } = conflictColumnsFriendlyName;\r\n // length must larger than 0\r\n if (length <= 0) { throw new Error('length must be positive'); }\r\n if (length === 1) {\r\n return i18n.getString(oneColumnTemplate, { firstColumnName: conflictColumnsFriendlyName[0] });\r\n } else if (length === 2) {\r\n return i18n.getString(twoColumnTemplate, {\r\n firstColumnName: conflictColumnsFriendlyName[0],\r\n secondColumnName: conflictColumnsFriendlyName[1],\r\n });\r\n }\r\n return i18n.getString(threeAndMoreColumnTemplate, {\r\n firstColumnName: conflictColumnsFriendlyName[0],\r\n secondColumnName: conflictColumnsFriendlyName[1],\r\n remainCount: (length - 2).toString(),\r\n });\r\n })();\r\n\r\n return (\r\n
\r\n
\r\n {lockColumnFriendlyName}\r\n
\r\n
\r\n {message}\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport function extractKeyNameObejct(categories: CategoryDataModel[]) {\r\n const res: Record = {};\r\n categories.forEach((category) => {\r\n category.options.forEach((option) => {\r\n res[option.key] = option.name;\r\n });\r\n });\r\n return res;\r\n}\r\n\r\nconst TimeColumnsCategoryKey = 'TimeColumns';\r\nconst DimensionColumnsCategoryKey = 'DimensionColumns';\r\nconst MetricColumnsCategoryKey = 'MetricColumns';\r\n\r\nconst atLeastOneCategory = new Set([\r\n DimensionColumnsCategoryKey,\r\n MetricColumnsCategoryKey,\r\n]);\r\n\r\nconst atLeastOneErrorMessageMap = {\r\n [TimeColumnsCategoryKey]: _TL_('At least one Time column must be selected.'),\r\n [DimensionColumnsCategoryKey]: _TL_('At least one Attribute column must be selected.'),\r\n [MetricColumnsCategoryKey]: _TL_('At least one Performance Statistics column must be selected.'),\r\n};\r\n\r\nfunction checkValid({\r\n MandateColumnSet = [], isTimeColumnMandatory,\r\n MissingMandatoryColumnError, categories, selected,\r\n}: {\r\n categories: CategoryDataModel[],\r\n isTimeColumnMandatory: boolean,\r\n i18n: any,\r\n [foo: string]: any,\r\n }) {\r\n const selectedSet = new Set(selected);\r\n\r\n const errorMessages: string[] = [];\r\n\r\n categories.forEach((category) => {\r\n const isCurrentCategoryMustBeSelectedOneColumn = atLeastOneCategory.has(category.type)\r\n || (category.type === TimeColumnsCategoryKey && isTimeColumnMandatory);\r\n if (isCurrentCategoryMustBeSelectedOneColumn) {\r\n if (!category.options.some(option => selectedSet.has(option.key))) {\r\n errorMessages.push(atLeastOneErrorMessageMap[category.type]);\r\n }\r\n }\r\n });\r\n\r\n let isMandatoryColumnMissing = false;\r\n MandateColumnSet.forEach((mandateColumns) => {\r\n if (!mandateColumns.some(column => selectedSet.has(column))) {\r\n isMandatoryColumnMissing = true;\r\n }\r\n });\r\n\r\n if (isMandatoryColumnMissing) {\r\n errorMessages.push(MissingMandatoryColumnError);\r\n }\r\n\r\n return errorMessages;\r\n}\r\n\r\nexport function buildSelectedItem(selectedItemKey: string, mandatoryKeys: string[], keyNameMap: Record): SelectedItem {\r\n return {\r\n key: selectedItemKey,\r\n friendlyName: keyNameMap[selectedItemKey],\r\n state: mandatoryKeys.includes(selectedItemKey) ? ItemState.mandatory : ItemState.optional,\r\n kind: ItemKind.selected,\r\n };\r\n}\r\n\r\n// mandatoryKeys is usually pretty small, no need to convert to `Set`\r\nexport function buildSelectedItems(selectedItemKeys: string[], mandatoryKeys: string[], keyNameMap: Record): SelectedItem[] {\r\n return selectedItemKeys.map(selectedItemKey => buildSelectedItem(selectedItemKey, mandatoryKeys, keyNameMap));\r\n}\r\n\r\nexport const ReportsV4ColumnChooser: FC = (props) => {\r\n const {\r\n exclusionSets, categories, selectedKeys, onCancelClick, onSaveClick,\r\n MandateColumnSet, MissingMandatoryColumnError, isTimeColumnMandatory,\r\n AggregationExclusion = {},\r\n } = props;\r\n\r\n const [, forceRefresh] = useState(0);\r\n const i18n: any = useContext(I18nContext);\r\n const headerNameText: string = i18n.getString(_TL_('Modify columns'));\r\n const tipText: string = i18n.getString(_TL_('Select Add to customize the report columns. Then, drag and drop the columns to rearrange them into the order you want to view them in. You can also modify columns using the arrow keys.'));\r\n\r\n const translatedCategories: ReportsV4ColumnChooserProps['categories'] = useMemo(() => categories.map(category => ({\r\n ...category,\r\n name: i18n.getString(category.name),\r\n options: category.options.map(option => ({\r\n ...option,\r\n name: i18n.getString(option.name),\r\n })),\r\n })), [categories, i18n]);\r\n\r\n const mandatoryKeys = useMemo(() => getMandatoryItemKeys(translatedCategories), [translatedCategories]);\r\n\r\n const [currentSelectedKeys, setCurrentSelectedKeys] = useState(selectedKeys);\r\n useEffect(() => {\r\n setCurrentSelectedKeys(selectedKeys);\r\n }, [selectedKeys]);\r\n\r\n // for performance, convert the array to set\r\n const selectedKeysSet = new Set(currentSelectedKeys);\r\n\r\n // Seems this is pretty useless, `exclusionRule` should be much more better if it is a parameter.\r\n const exclusionRules = useMemo(() => [\r\n ...extractExclusionRulesFromExclusionSets(exclusionSets),\r\n ], [exclusionSets]);\r\n\r\n // this is so weird, ideally, we want to import i18nMap from \"@bingads-webui-campaign/report-shared\", but it need jquery, why?\r\n const keyNameMap = useMemo(() => extractKeyNameObejct(translatedCategories), [translatedCategories]);\r\n\r\n const conflictColumnMap = executeExcludeRules(selectedKeysSet, exclusionRules);\r\n\r\n const selectedItems = buildSelectedItems(currentSelectedKeys, mandatoryKeys, keyNameMap);\r\n\r\n const hiddenCandidateColumnKeys = new Set(AggregationExclusion[convertColumnsToReportAggregation(selectedKeysSet)]);\r\n\r\n const equivalentReportAggregation = convertColumnsToReportAggregation(selectedKeysSet);\r\n const categoriesfilteredCategories = filterCategories(translatedCategories, { timeGrain: equivalentReportAggregation });\r\n\r\n const categoryDescriptorOfStatic = fromDataModel(categoriesfilteredCategories, conflictColumnMap, selectedKeysSet, hiddenCandidateColumnKeys);\r\n const lastcategoryDescriptorOfStatic = useRef();\r\n mergeWithLastTimeData(categoryDescriptorOfStatic, lastcategoryDescriptorOfStatic.current);\r\n\r\n useEffect(() => {\r\n lastcategoryDescriptorOfStatic.current = categoryDescriptorOfStatic;\r\n });\r\n\r\n function mergeWithLastTimeData(category: CategoryDescriptor, lastCategory: CategoryDescriptor | undefined) {\r\n if (category.key === lastCategory?.key) {\r\n const groupLength = category.groups.length;\r\n for (let index = 0; index < groupLength; index++) {\r\n // eslint-disable-next-line no-param-reassign\r\n category.groups[index].isCollapsed = lastCategory.groups[index].isCollapsed;\r\n }\r\n }\r\n }\r\n\r\n function fromDataModel(\r\n categories: CategoryDataModel[],\r\n conflictColumnMap: ConlicktColumnMap,\r\n selectedKeySet: Set,\r\n hiddenCandidateColumnKeys: Set\r\n ): CategoryDescriptor {\r\n return {\r\n headerName: i18n.getString(_TL_('All')),\r\n key: 'All',\r\n groups: categories.map(group => ({\r\n key: group.type,\r\n name: group.name,\r\n items: group.options.map(option =>\r\n buildCandidateItem(option, conflictColumnMap, selectedKeySet, i18n, keyNameMap))\r\n .filter(item => !hiddenCandidateColumnKeys.has(item.key)),\r\n isCollapsed: false,\r\n })),\r\n };\r\n }\r\n\r\n function onCollapseAllClick() {\r\n if (lastcategoryDescriptorOfStatic.current) {\r\n lastcategoryDescriptorOfStatic.current.groups.forEach((group) => {\r\n // eslint-disable-next-line no-param-reassign\r\n group.isCollapsed = true;\r\n });\r\n }\r\n forceRefresh(1);\r\n }\r\n\r\n function onExpandAllClick() {\r\n if (lastcategoryDescriptorOfStatic.current) {\r\n lastcategoryDescriptorOfStatic.current.groups.forEach((group) => {\r\n // eslint-disable-next-line no-param-reassign\r\n group.isCollapsed = false;\r\n });\r\n }\r\n forceRefresh(2);\r\n }\r\n\r\n function onToggleCollapse(triggerGroup: IGroup) {\r\n if (lastcategoryDescriptorOfStatic.current) {\r\n lastcategoryDescriptorOfStatic.current.groups.forEach((group) => {\r\n if (triggerGroup.key === group.key) {\r\n // eslint-disable-next-line no-param-reassign\r\n group.isCollapsed = !triggerGroup.isCollapsed;\r\n }\r\n });\r\n }\r\n forceRefresh((prev) => {\r\n // always force to update\r\n let next = 0;\r\n while (true) {\r\n // 1 - 10 is reserved.\r\n if (next > 10 && next !== prev) break;\r\n next = Math.floor(Math.random() * 100);\r\n }\r\n return next;\r\n });\r\n }\r\n\r\n const errorMessages = checkValid({\r\n categories: translatedCategories,\r\n i18n,\r\n MandateColumnSet,\r\n isTimeColumnMandatory,\r\n MissingMandatoryColumnError,\r\n selected: currentSelectedKeys,\r\n });\r\n\r\n return (\r\n
\r\n
{headerNameText}
\r\n
{tipText}
\r\n {\r\n const equivalentReportAggregation = convertColumnsToReportAggregation(new Set(newKeys));\r\n const hiddenCandidateColumns = new Set(AggregationExclusion[equivalentReportAggregation] ?? []);\r\n // eslint-disable-next-line no-param-reassign\r\n newKeys = newKeys.filter(key => !hiddenCandidateColumns.has(key));\r\n setCurrentSelectedKeys(newKeys);\r\n }}\r\n onAddItems={(items) => {\r\n // Note: items might includes selected columns, for example, it includes all columns when click \"Add All\"\r\n let selectedKeys = selectedItems.map(item => item.key);\r\n let lastSelectedKeys;\r\n let loopCount = 0;\r\n // After selecting some time column in reports-v4 column chooser, some selected columns will be removed. Then some \"locked\" columns now will\r\n // be unlocked. So we need a loop to try to get a stable state.\r\n do {\r\n loopCount++;\r\n if (loopCount > 50) {\r\n throw new Error('We might trap into infinate loop, please check reports-column-chooser.');\r\n }\r\n lastSelectedKeys = [...selectedKeys];\r\n // eslint-disable-next-line no-loop-func\r\n items.forEach((item) => {\r\n const newSet = new Set(selectedKeys);\r\n if (newSet.has(item.key)) {\r\n return;\r\n }\r\n newSet.add(item.key);\r\n const conflictColumnMap = executeExcludeRules(newSet, exclusionRules);\r\n const equivalentReportAggregation = convertColumnsToReportAggregation(newSet);\r\n const hiddenCandidateColumns = new Set(AggregationExclusion[equivalentReportAggregation] ?? []);\r\n if (!conflictColumnMap.has(item.key)) {\r\n selectedKeys = [...selectedKeys, item.key].filter(key => !hiddenCandidateColumns.has(key));\r\n }\r\n });\r\n }\r\n while (selectedKeys.length !== lastSelectedKeys.length);\r\n\r\n setCurrentSelectedKeys(selectedKeys);\r\n }}\r\n selectedItems={selectedItems}\r\n />\r\n
\r\n {\r\n errorMessages.map(errorMessage =>\r\n (
{i18n.getString(errorMessage)}
))\r\n }\r\n
\r\n \r\n
\r\n { onSaveClick?.(currentSelectedKeys); }} text={i18n.getString(_TL_('Save'))} />\r\n { onCancelClick?.(currentSelectedKeys); }} text={i18n.getString(_TL_('Cancel'))} />\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport * from './helper';\r\n"],"names":["pkg","getAssetsGridFactory","arguments","length","undefined","globalContext","define","odata","require","locationI18n","commonI18n","errI18n","editorialRejection","getReasonTemplates","_ref2","item","i18n","permissions","scope","Promise","resolve","_ref","post","Entities","JSON","stringify","_defineProperty","Asset","Id","AssetType","fetchRejectionReasons","then","data","_","Reasons","getString","options","reasons","entity","ENTITY","ASSET","deliveryStatus","EditorialStatus","isAppealable","IsAppealable","hideParentLevel","reasonTemplates","getEditorialTemplates","pageContext","handleSortChange","AppealAggregator","requireDefault","AssetsGrid","_DeterministicWrapper","_classCallCheck","_callSuper","_inherits","_createClass","key","value","_this","router","filterService","preferenceConfig","getGridConfig","getPlugins","setupDataSourceErrorHandling","_ref$isForVNext","isForVNext","this","gridConfig","Permissions","isInitialGrid","rejectionPopupContainerSelector","popoverId","appealAggregator","RequestExceptionCallBack","assetsGrid","container","grid","controller","submit","menuToFollow","openBulkEditor","bulkEditor","RequestExceptionCallBackFromPopup","trigger","$","hide","appealView","overrideWith","render","on","remove","pgridFactory","plugins","gridView","changes","name","updateGridQuery","getCombinedFilter","dynamic","AudienceAssetReport","_isOk","columns","config","patch","videoItems","items","includes","filter","col","popupView","registerCountryListEvent","$el","event","_this2","keyOfElement","target","itemWithKey","_ref3","showRejectionReasons","deliveryStatusDetails","getCustomTemplate","useCustomTemplate","view","afterRender","popup","addEditorialHandler","isEditorialCategoryEnabled","isForAdsPageOnly","e","relatedTarget","closest","concat","_this3","refreshSource","initializeCombinedFilterPromise","_superPropGet","get","DeterministicWrapperView","fetchAd","edm","jsData","adId","params","query","entitySet","currentAccount","Ads","$call","gridDataParameters","toJSON","$count","$top","$expand","$filter","$select","Ad","findAll","cacheResponse","processAssets","ad","updated","fieldName","fieldNameMap","result","pick","Object","values","map","IdString","Text","instrumentationSchema","scenario","activity","ColumnAsset","_CampaignuiBaseColumn","serverContext","title","adType","property","sortable","type","enableEdit","AssetSource","UiDisplayStatus","bodyClasses","helpId","helpAriaLabel","template","text","_ref4","newPosition","itemToSchemaMap","schemaToItemMap","newSchema","cloneDeep","ResponsiveSearchAd","AssociationType","properties","required","TimeZone","CurrentAccount","instrumentation","addScenario","logScenario","assetGrid","create","activityLogger","inlineEditRSAAsset","initializeAdCustomizer","deps","timeZone","showAdCustomizers","edmCampaign","jsDataCampaign","jsdata","InlineEditableColumnPrompt","position","schema","customValidators","isValid","getCharCountExcludingAdCustomizers","field","maxLength","message","maxlength","saveModel","editorView","_scope$values","campaignId","adGroupId","callScope","Campaigns","$withKey","AdGroups","commonParams","Campaign","AdGroup","Type","defaults","AdStrengthInAssetTopGrid","showAdStrength","refreshAdItem","trace","refresh","catch","response","errors","getODataErrors","setErrors","finally","withUiBlock","TextInlineEditRSA","Headlines","Descriptions","Headline","Description","CampaignuiBaseColumn","ColumnAssetType","ResponsiveSearch","Responsive","DynamicSearch","DynamicResponsive","schemaI18n","SchemaI18n","associationType","enum","ColumnStatus","headerTemplate","status","label","cellTemplate","ColumnPinnedField","PinnedField","ColumnAssetSource","mapVal","ColumnAssetMMA","imageTemplate","imageUrl","ImageUrl","isVertical","Height","Width","videoTemplate","ThumbnailUrl","isVerticalVideo","ResponsiveAd","inlineEditMMAAsset","countdownI18nDummy","TextInlineEditMMA","ResponsiveAdHeadlines","ResponsiveAdDescriptions","ResponsiveAdLongHeadlines","LongHeadline","ColumnAssetId","ColumnPolicyStatus","EditorialCategories","inWhiteList","isErrorStatus","isWarningStatus","showRejectPopup","shouldEditorialCategoriesPopup","getViolationsFromCategoryFAIDMapping","DeliveryStatus","shouldShowSensitiveContentWarning","shouldShowPopUpStyleInVnext","getColumnsConfig","_options$scope$values","adSubType","builder","ColumnsConfigBuilder","addCategory","category","addColumns","_toConsumableArray","AssetBasedEditorialForRSA","AssetBasedEditorialForAIM","ColumnImpressions","ColumnClicks","ColumnCTR","ColumnSpend","SearchAssetConversionColumn","ColumnConversionsCredit","ColumnAdvertiserReportedRevenue","ShowVideoMetrics","ColumnVideoViews","ColumnVideoCompletionRate","ColumnVideoViewsAt25Percent","ColumnVideoViewsAt50Percent","ColumnVideoViewsAt75Percent","ColumnCompletedVideoViews","setLockedColumns","AssetBasedEditorial","setSelectedColumns","stateManager","preferenceService","showAdStrengthPlugin","definePlugin","toolbar","_config$plugins$showA","_config$plugins$showA2","buttonId","_config$plugins$showA3","initShowStatus","toolbarEditor","gridToolbarGroup","toolbarWithItem","adItem","updateToolbar","update","id","iconLeftGlyphName","onClick","refreshEvent","Backbone","getShowAdStrength","getAdItem","appConfig","appState","logger","s$i18n","s$AssetLink","DownloadView","createAssetsGrid","dataSource","getAdditionalPlugins","addDateChangeListener","p$daterange","viewport","perfMarker","customHeaderOffset","tableName","campaignType","events","showRejectionReason","bind","handleShowRejectionReasonEnter","handleShowRejectionReasonLeave","hideRejectionPopup","getGridName","legacyGridName","tableClasses","tableAttributes","selection","rows","headRows","scrolling","header","offset","height","attributes","virtualized","validateOrder","getConfig","ReportEmailRule","unset","plugin","perfMarkerPlugin","marker","a11yPlugin","dateFilterPlugin","state","isOdataActionSource","comparisonColumns","inlineDownloadWithoutFilterstateAndSegmentPlugin","isAvailable","gridId","processReportRule","ReportRule","Selection","AdId","Number","performanceLogPlugin","paginationPlugin","availablePageSizes","enableRandomPage","pageNumberLabelText","pageSizeText","totalPageCountText","resetPageNumberOnSort","uiBlockerPlugin","el","editablePlugin","setUpErrorHandling","onAfterFindAll","any","error","Code","window","App","views","alertCenter","toastWarning","navigateToRoute","campaign_id","adgroup_id","err","showTooMuchDataError","tooMuchDataErrorText","afterFindAll","CellItemHeight","Large","Small","ViewItem","Monthly","Daily","ViewItemTLString","_TL_","InsertionOrderReportColumns","add","sort","MaxInsertionOrderLimit","InsertionOrderSearchFields","FriendlyName","SeriesName","InsertionOrderFieldKeys","MismatchedReasonCode","AdjustmentMismatch","ChangeTypeEnum","Spend","SystemAdjustment","BudgetChange","InsertionOrderChangeTypeField","InsertionOrderChangeAmountField","InsertionOrderColumns","InsertionOrderId","ChangeTypeEnumValue","isUnlimitedIOBudget","InsertionOrderUtils","formatUnlimitedIOBudgetInGrid","formatEndlessIOEndDateInGrid","parseDecimal","formatInsertionOrderLabel","_ref5","orderName","seriesName","startDate","endDate","budget","formattedName","formattedBudget","spendCapAmountValue","unlimitedStringKey","formattedEndDate","endDateValue","parseDate","noEndDateStringKey","getBudgetChangeString","_ref8","rawValue","amountValue","_ref8$useEmptyString","useEmptyString","getBillingDocumentCellStyles","BillingDocumentCell","display","flexDirection","alignItems","BillingDocumentNumberGroup","MismatchInformation","marginLeft","color","fontSize","getAmountCellStyles","padding","AmountCell","width","AmountItem","paddingTop","paddingBottom","paddingLeft","paddingRight","BorderBottomLine","borderBottom","textOverflow","overflow","getChangeTypeCellStyles","ChangeTypeCell","ChangeTypeItem","placeContent","getAmountTotalCellStyles","AmountTotalCell","AmountTotalCellWithPadding","AmountTotalItem","justifyContent","fontWeight","GreenColor","getInsertionOrderSelectorStyle","MultipleInsertionOrderSelector","border","borderRadius","boxShadow","backgroundColor","SelectorButton","flex","ChevronDownIcon","top","ButtonDescription","verticalAlign","marginRight","maxWidth","getInsertionOrderDetailsCellStyles","InsertionOrderDetailsButton","BillingDocumentCellBase","siteMap","billingDocumentNumbers","mismatchedAmount","mismatchedReason","currencyCode","classes","useDefaultStyles","_useContext$scope$val","useContext","ScopeContext","cid","aid","uid","ctrLogger","useCtrLogger","mismatchedAmountNumber","mismatchedAmountString","formatCurrency","mismatchedInfoString","getMismatchedInfoString","showMismatchIcon","useMemo","bilingDocumentLink","bdNumber","pathname","getRoutePathById","searchParams","prefilter","URI","addSearch","toString","tooltipProps","onRenderContent","_jsx","ReactTemplate","model","bold","children","_jsxs","className","classnames","billingDocumentNumber","LinkButton","href","click","extraData","reportType","documentNumber","onClickLink","TooltipHost","delay","TooltipDelay","zero","join","directionalHint","DirectionalHint","rightCenter","Glyphicon","glyph","onMouseEnter","defaultProps","withSiteMap","processor","processPermissions","processPath","AmountCellItem","description","hasBorderBottomLine","itemHeight","hasGreenColor","classname","spendAmount","adjustmentAmount","budgetChangeAmount","withBudgetChangeDescription","budgetChangeOldValue","budgetChangeNewValue","spendRawValue","adjustmentRawValue","budgetChangeRawValue","budgetChangeOldValueRawValue","budgetChangeNewValueRawValue","hasSpendUnderLine","hasAdjustmentUnderLine","budgetChangeDescription","ChangeTypeCellItem","spend","adjustment","budgetChange","AmountTotalCellItem","amountType","totalSpendAmount","totalAdjustmentAmount","totalBudgetChangeAmount","withPadding","useInsertionOrderData","searchTerm","queryField","extraPredicate","searchPredicate","_useJsData","useJsData","InsertionOrdersGridData","limit","$predicate","p","loading","usePerfMarkerLifecycle","raw","total","insertionOrderItems","InsertionOrderName","StartDateText","EndDateText","SpendCapAmount","selected","disabled","InsertionOrderSelectorCallout","initialSelectedItems","onApplyProps","onApply","onDismiss","I18nContext","_useState","useState","_useState2","_slicedToArray","selectedInsertionOrderItems","setSelectedInsertionOrderItems","_useState3","_useState4","queryText","setQueryText","_useState5","_useState6","setSearchTerm","_useState7","_useState8","setQueryField","_useState9","_useState10","shouldAddAll","setShouldAddAll","handleQueryChange","newValue","handleClearSearch","onSearch","searchText","searchField","searchProps","placeholder","_ref7","getSearchBarPlaceholder","showSearchBar","showSearchFieldSelect","searchFieldOptions","labelKey","_useInsertionOrderDat","onAddAll","useCallback","newSelected","_objectSpread","toReversed","useEffect","Callout","isBeakVisible","TransferSelector","allItems","selectedItems","onRemoveAll","onRemove","onAdd","onDismissCallback","isBeyondAccountLimit","isLoadingItems","InsertionOrderSelector","selectedInsertionOrders","updateSelectedInsertionOrder","isCalloutVisible","setIsCalloutVisible","buttonDescription","_ref6","getSelectorButtonDescription","React","Button","oldCalloutVisible","newCalloutVisible","InsertionOrderDetailsBase","insertionOrderDetailValue","insertionOrderId","accountId","ioHistoryLink","orderId","InsertionOrderDetailsCell","FilterViewManagerUnthemed","_React$PureComponent","props","onEditableFilterUpdate","source","setEditableFilter","setState","openedPredicateIndex","onReset","selectableFilter","hideFilterBar","isFunction","updateWaterfallFilter","setupSearchboxFilterOnToolbar","searchBoxItem","searchbox","handleChange","object","searchProperty","searchOperator","setupPredicateListOnToolbar","filterEntity","newItem","content","PredicateListReadonly","selector","entitySchema","editableFilter","maximumPredicateLimit","onClickPredicate","showFilterBar","resetToolbarVisibility","forceHideToolbar","onSelectableFilterUpdate","hideAddFilterButton","getPredicateIconClassName","predicateList","initializeEntitySchema","localize","flattenEntitySchema","legacyI18n","newEntitySchema","setTrimmedFilterDataOptionsDefaultSearchInsightsReport","odataOptions","fieldMap","buildNameToPropertyMapping","MAX_SAFE_INTEGER","savedFilterNames","prevProps","forceUpdate","FilterEntity","createFilterEntity","Fragment","FilterBar","readOnlyProperties","disallowDuplicateFilters","onSaveFilter","savedFilters","onDeleteFilters","outsideClickIgnoreClass","FilterBarIngoreClickOutsideClassName","onApplySavedFilter","isPoPEnabled","hideSaveFilterButton","disabledSaveFilterButtonWithReason","FilterViewManager","withInstrumentation","withDefaultStyles","minWidth","margin","ReportsV4Footer","contentFooter","ContentFooter","marginTop","mapKeyValue","fn","pairs","frequencyType","None","Weekly","Other","Name","filterable","customColumn","ReportType","chooseType","keys","localized","Frequency","DateRangePreset","dateRangePreset","getMyReportsGridToolbarConfig","reportDuplicate","reportDownload","reportDelete","toolbarUnselectedConfig","Map","CustomReportBuilder","save","toolbarItemsWithoutSelection","forEach","set","toolbarSelectedConfig","isHide","toolbarItemWithSelect","isReportTemplateType","styles","mergeStyleSets","callout","background","marginBottom","actions","spinner","left","zIndex","onActionSuccess","notifyErrorPipe","setName","setLoading","setError","reportApi","useReportDataSource","isReportTemplate","_saveName","_asyncToGenerator","_regeneratorRuntime","mark","_callee","originTaskItem","taskItemToSave","wrap","_context","prev","next","abrupt","getTaskItem","sent","saveReport","isEmailRule","t0","finish","stop","apply","trim","coverTarget","setInitialFocus","doNotLayer","preventDismissOnScroll","TextField","defaultValue","errorMessage","onChange","v","PrimaryButton","DefaultButton","Spinner","labelPosition","inlineDownloadDuplicate","handleInlineEditSuccess","isRowHeader","isResizable","sortAscendingAriaLabel","sortDescendingAriaLabel","onRender","Link","preventDefault","to","inlineEdit","onRenderInlineEdit","hanelDismiss","cell","InlineEditName","maxHeight","editor","whiteSpace","cancelBtn","EmailReportEditor","saveFrequency","allUsersType","initEmailModel","emailModel","setEmailModel","InlineDownloadEmailFrequencyEditor","currentUserId","FormGroup","loadUsers","InlineFrequency","_x","_saveFrequency","settings","patchTaskItem","handleDismiss","find","directionalHintFixed","Cron","AttachFileToEmail","EmailRecipients","StartTime","EndTime","Format","FrequencyEditPanel","onSave","onCancel","Template","FileFormat","renderReportTemplate","areEqual","nextProps","cronI18n","InlineDownloadCronI18n","formatCron","listStyle","textDecoration","reportTemplateModel","getDataObject","preview","general","timeRange","reportTemplateDataRange","setReportTemplateDataRange","reportTemplateWarnings","setReportTemplateWarnings","emailRuleModel","dateRangeFormat","DateRangeFormat","emailDateRange","setEmailDateRange","dropdownRef","useRef","updateEmailRuleDateRange","current","expanded","_saveDateRange","newTaskItem","updates","getApiObject","assign","_objectDestructuringEmpty","DateRange","document","querySelector","getBoundingClientRect","reportSchema","reportSchemas","TimeRangeSelector","validationProps","alwaysShowError","val","setWarning","timeGrain","today","getToday","Warning","messages","DurableDropdown","containerClass","button","format","ref","DateRangeEditor","dataRange","util","formatDateRange","ReportTimeZone","getDateRange","InlineEditDateRange","CreatedBy","reformatDate","LastAccessedAt","fromLegacyTimeZone","CreatedAt","buildColumns","ErrorHandlePipeFactory","createNotifyErrorHandlerPipe","errorCodeToErrorMessageMapping","reportNameColumn","reportBaseColumn","scheduledFrequencyColumn","dateRangeColumn","createByColumn","sharedColumn","lastAccessedColumn","createdOnColumn","transformTaskItem","oldTaskItem","IsPreview","transformReportAggregationItself","convertDateTimeStringToCivilDate","dummyDate","MyReportsGrid","onClearSelection","gridSelection","setAllSelected","onPageChange","page","fetchData","onPageSizeChange","pageSize","getToolBarConfig","DynamicPermissions","reportItem","bulkEditActions","duplicate","logToolbarAction","download","blocking","del","_this$getToolBarConfi","onSelectionChanged","onSelectedItemUpdated","getSelection","_this$props","buildLegacyI18n","legacyKeys","initBulkActions","fetching","pageNumber","sortedColumn","prevState","_this$props2","_this$props2$serverCo","CurrentUser","ShortDatePattern","CultureDateTimeFormat","LocaleID","iframeDownload","resetSelection","scopeHistoryPush","getUrlSearch","convertSelectionDateRangeToDateFilter","restoreDateFilter","history","rerunReport","deleteReports","taskItem","deprecatedReports","showError","getDeprecatedMessage","push","search","location","createSimilarReportEmailRule","isForNewUI","_download","res","notificationApi","showInfo","autoDismissTime","ResultId","showWarning","downloadReportEmailRule","confirm","_$groupBy","reportTemplates","inlineDownloadReports","deleteReportTemplates","deleteInlineDownloadReports","deleteReportEmailRules","all","bulkEditActionsFactory","entityType","mergedParams","$current","mergedScope","getMerged","isDrprecated","ComparisonDateRange","StartDate","EndDate","basic","RangeStartDate","formatCivilDate","RangeEndDate","RangeId","convertDateRangePresetToRangeId","Rangelcid","compared","comparedStartDate","comparedEndDate","formattedStart","formattedEnd","convertComparisonDateRangeOptionToComparedKey","ComparisonDateRangeOption","dateFilter","filterType","WaterfallFilterType","DateFilter","rerunReportAndWaitForComplete","actionName","column","_this4","isSortedDescending","_this5","enableDFM","_this$props3","actionPerfMarker","createChild","_this$state","willFetchData","getMyReports","$and","skip","withDFMCache","json","finalItems","willRender","updateCount","_this6","_this$state2","getToolbarEditor","toolbarConfig","filterConfig","getCommonFilterConfig","featureName","myReportsSchema","legacyGlobalI18n","sessionStore","preferenceStoreFactory","FilterPreferenceService","schemaI18nCampaign","dataContextManager","updatePilot","enableCampaignWaterfall","ignoreCase","getFilterConfig","selectionCount","showToolbarSelected","showToolbarUnselected","ToolbarContainer","onClear","_this7","_this$props4","_this$state3","placeholderWithFilter","placeholderWithoutFilter","LearnMoreLink","isUnderlineLink","linkType","topic","linkText","renderToolbarContainer","renderFilterViewManager","fallback","ProgressiveLoadingBlock","myReportsGrid","UiBlocker","loadingText","blockUiContainer","blockerIndicator","CampaignShimmeredDetailsList","stickyHeader","enableShimmer","selectionMode","SelectionMode","multiple","single","onSort","sortAndFetch","freezingColumnCount","didUpdate","done","pager","wrappers","withI18nConsumer","withReportDataSource","withScope","withServerContext","withGlobalFilter","withRouter","withIframeDownload","withCtrLogger","Wrapped","datePickerStyle","ComponentSettings","pivotStyle","root","itemContainer","MyReportsPage","useReportsHistory","counts","setCounts","reportsApiProps","ServerContext","_useConstructor","useConstructor","willInit","myReportsPerfMarker","getMyReportsCounts","SummaryBar","Divider","style","myReportsContainer","Pivot","selectedKey","onLinkClick","itemKey","PivotItem","headerText","count","IsInternalUser","_ref$palette","palette","_ref$iconFontFamily","iconFontFamily","uiblockerStyle","gridPopUpEditorStyle","overflowY","wordBreak","ScopeFilterLevel","User","Customer","Account","getScopeFilterLevel","mtScopeFilterLevel","mtEnum","getScopeSelectorText","scopeSelectorInfo","ALL_ACCOUNT_TEXT","MULTIPLE_ACCOUNTS_OR_CAMPAIGNS_TEXT","MULTIPLE_ACCOUNTS_TEXT","MULTIPLE_MANAGER_ACCOUNTS_TEXT","scopeFilterLevelOfCurrentReport","_history$query","isCurrentAccountScope","CustomerScopes","AccountIds","CampaignReportScopes","UserScopes","userIdText","sourceArray","targetArray","Error","getDefaultMultiAccountSelectorInfo","_history$query2","shouldShowUserScopeInput","shouldShowSelector","scopeFilterLevel","getUserIdFromScopeSelector","scopeSelector","convertUserIdToScopeSelector","userScope","isNaN","isTotalRow","rowItem","RowType","isNormalRow","isInsertionOrderReport","toLowerCase","isInsertionOrderReportTeachingBubbleEnabled","isCreatePage","getColumnsByView","defaultColumns","viewType","union","getSortedColumnByView","getRejectedColumnsByView","restrictedColumnSets","isCustomerScope","Set","rejectedColumns","isAllowed","isInsertionOrderMonthlyView","removeInsertionOrderIdFilter","_ref10","isInsertionOrderReportEnabled","oldFilter","filterAnd","isRowWithBudgetChangeDescription","row","getInsertionOrderSelectorValue","_ref13","allFilters","ioidFromUrl","insertionOrderIdFromFilter","first","insertionOrderIdFilterFromAnd","ioId","getInitialInsertionOrderSelectorItems","_ref14","allInsertionOrders","insertionOrderIds","io","shouldDisplayTotalAmount","_ref15","filters","changeType","changeTypeFilterArray","ChangeType","$in","getTextWidth","font","context","canvas","createElement","getContext","measureText","MIN_COLUMN_WIDTH","MIN_FIRST_COLUMN_WIDTH","conditionOperatorMap","Between","value1","value2","GreaterThan","GreaterThanEqual","Equals","DoesNotEqual","LessThan","LessThanEqual","getItemValue","isDisplay","Value","RawValue","columnNames","reportSchemaColumns","conditionalFormats","customizeRenderParams","bindColumnConditionalFormat","conditionalFormat","reportParam","conditions","colorPicked","condition","operator","getConditionalFormatColor","itemDisplayValue","slice","columnOptions","categories","flatMap","reduce","acc","restrictedDisplayCols","displayRestricted","c","index","columnKey","columnOption","translatedName","headerWidth","defaultWidth","finalMinWidth","Math","max","helpTopic","buildColumnBase","onRenderHeader","columnProps","HelpIcon","customizeBindOnRenderRows","bindOnRenderRows","customizeRowNode","customizeRowFunction","insertionOrderViewType","isAccountScope","compact","toggleIsReportModalOpen","isParent","isCollapsed","toggleIsSearchReportModalOpen","SearchTermDetailsStr","_Fragment","labelNameData","Color","colorCode","padStart","conditionalFormatsKey","buildRows","rowDefinitions","totalCount","baseRowDefinitions","_ref11","_$partition","_$partition2","totalRows","normalRows","WithBudgetChangeDescription","flat","rowsGroupByMonthIODetails","monthlyViewData","rowsItem","budgetChangeItem","withBdItem","bdValues","aggragatorInsertionOrderReportData","mismatchIconCount","_ref12","getMismatchIconCount","rowDefinition","rowNumber","number","extractGridItemsFromReportDataResponseBody","reportDataResponseBody","Array","isArray","RowId","_toArray","hasDifferentTimeColumns","oldColumns","newColumns","Columns","timeCategory","allTimeColumns","oldTimeColumn","newTimeColumn","ICON_BLUE","iconBaseClass","mergeStyles","iconClassNames","blue","blackColorClassName","boldClassName","stackItemCenterStyle","reduceScopeContainer","borderTop","lineHeight","getStyles","reportPreviewContainer","borderLeft","bottom","right","overflowX","scrollbarWidth","convertToLocalStyle","helpbuttonStyle","textAlign","transform","reportPreviewPoorCollapseRow","borderRight","cursor","reportPreviewHeader","flexShrink","reportPreviewCalloutContainer","reportPreviewCallout","reportPreviewCalloutTitle","reportPreviewNameInput","reportPreviewNameEditActions","icons","noDataplaceHolder","insertionOrderReport","TimeTravel","historyStates","currentIndex","timeTravelCallbacks","isBackValid","isForwardValid","getHistoryState","historyIndex","registerTimeTravelCallback","callback","unregisterTimeTravelCallback","timeTravelCallback","callTimeTravelCallBack","go","delta","targetHistoryIndex","targetHistoryState","back","forward","pushState","splice","replaceState","apiToUiDateRange","ReportTime","start","end","uiToApiDateRange","dateRange","operatorToApi","$eq","$neq","$gt","$gte","$lt","$lte","$contains","$containsany","$doesnotcontain","$startswith","$endswith","operatorFromApi","Contains","DoesNotContain","BeginsWith","EndsWith","apiToUiFormat","apiFilter","filterSchema","propertyValueUi","operatorUi","Expression","Filter","Expressions","propertyName","PropertyName","propertySchema","propertyValuesApi","Values","operatorApi","Operator","enumValue","uiToApiFormat","uiFilter","arr","propertyValueObject","str","indexOf","substr","split","x","LogicalOperator","String","uiToApiFilter","uiFilters","insertionOrderSelectorValue","Filters","uiFiltersArray","_ref9","filterBesidesAnd","omit","addInsertionOrderIdFilter","getColumnType","metricCategory","columnType","handleValue","toFixed","apiToUiFormats","conditionalFormatsList","ColumnName","Value2","FillColor","uiToApiFormats","columnNameSet","partialConversionsColumns","convertOldTaskItem","PartialConversions","expression","ReportColumns","ConditionalFormats","ReportAggregation","reportAggregationEnum","_oldTaskItem","_objectWithoutProperties","_excluded","newColumnKeys","columnKeys","getCorrespondColumnsByReportAggregationEnum","transformReportAggregation","removeDeprecatedColumns","toUi","apiReportOptions","rawTaskItem","ioid","getCanonicalCategoriesAndColumns","apiFilters","apiToUiFilter","reportName","ReportSorts","ReportColumn","SortDirection","schedule","isLegacyReport","ReportOptions","option","MaxRowCount","LCID","toApi","uiReportOptions","hasPagination","hasSort","CustomerId","customerId","ClientApplicationType","LastRunReportTime","IsDVS","SchemaName","RenderType","TimeZoneId","toLegacyTimeZone","UserId","userId","CollapsedRow","GridPagination","RequestedPage","RowsPerPage","ReportData","defaultTimeRange","Hourly","HourOfDay","DayOfWeek","Yearly","Summary","AllTime","getDefaultTimeRange","isAllTime","TimeRanges","toIANATimeZone","CivilDate","year","month","day","dataLengths","getMinimumSupported","warningMessage","dataRetention","DataRetention","plus","days","months","RangeError","getMinimumSupportedDay","timeGrainRangeOptions","WeeklyStartingMonday","dataRetentionBlackList","getAllowedRanges","reportDateRetention","blackList","getFilteredTimeRanges","minSupportedDay","specificRanges","minSupportDay","daysAwayFromMonday","getCivilDateDayOfWeek","yesterday","sevenDaysAgo","fourteenDaysAgo","thirtyDaysAgo","thisSunday","thisMonday","thisMonthFirstDay","getCivilDateMonthStart","lastMonthlastDay","lastMonthFirstDay","lastTwoMonthlastDay","lastTwoMonthFirstDay","firstDayOfYear","with","rawRanges","rangeId","range","englishString","localizedString","getTimeRanges","rangeOptions","supportedOptions","node","regex","getCivilDateFromString","temp","exec","tryGetUpdatedTimeRange","newTimeGrain","prevTimeGrain","prevTimeRange","newTimeRange","prevTimeRangeKey","allowedRanges","getStyle","reportDatePicker","DatePickerBase","getFilteredRanges","getMinimumDay","getMinimumWarning","dateFormat","putil","ianaTimeZone","selectedTimeRange","selectedRangeId","allowedTimeRanges","ComparedDateRangePicker","disableCompare","displayType","selectedRange","onPickDateRanges","date2","rangeType","Date","minDate","maxDate","DatePicker","defaultSortingColumns","PublisherUsagePerformanceReport","AccountPerformanceReport","CampaignPerformanceReport","AdGroupPerformanceReport","AdPerformanceReport","KeywordPerformanceReport","SearchQueryPerformanceReport","DestinationURLPerformanceReport","AudiencePerformanceReport","FeedItemPerformanceReport","InsertionOrderReport","getDefaultSortingColumn","getDefaultTaskItemType","isInternalUser","emptySchedule","getDefaultReportParam","userIdFromUrl","userIdFromServer","isInteger","accountTimeZone","selectedNode","findSelectedNode","default","CountryCode","L1Vertical","Omniture","Lcid","ErrorView","taskState","errorDescriptionMap","fail","invalidId","deprecate","GlobalErrorView","bindOnRenderRowsForInsertionOrderReport","isMonthlyView","isNormal","SpendTypeValue","AdjustmentTypeValue","BudgetChangedTypeValue","SpendAmountValue","AdjustmentAmountValue","BudgetChangedAmountValue","BudgetChangeOldValue","BudgetChangeNewValue","BillingDocumentNumber","MismatchedAmount","MismatchedReason","CurrencyCode","InsertionOrderDetails","AccountId","SpendAmount","AdjustmentAmount","BudgetChangedAmount","RemainingIOBudget","remainingIOBudgetString","useWarnings","warnings","setWarnings","valiadate","NameEditor","reportAction","onNameChange","onSaveAs","isDirty","shouldHideThisFunctionality","editName","setEditName","editNamePromptVisibleStatus","updateEditNamePromptVisible","closeNameEditPrompt","Stack","horizontal","tokens","childrenGap","IconButton","iconProps","iconName","ariaLabel","checked","gapSpace","bottomLeftEdge","gap","NavigateDialog","dialogContentProps","disableNavigateDialog","disableNavigateDialogOnce","setDisableNavigateDialogOnce","isDialogVisible","setDialogVisible","navigateParam","setNavigateParam","unblockRef","unblock","block","action","promptBeforeUnload","returnValue","addEventListener","removeEventListener","Dialog","hidden","DialogType","normal","subText","DialogFooter","getDefaultReportsGridToolbarConfig","onDownload","onViewItemChange","selectedViewItem","_ref$selectedViewItem","isSelectorShown","isFilterShown","isViewSelectorShown","isInsertionOrderSelectorShown","_isValid","useFluentIcon","shouldFocusOnContainer","menu","dynamicPermissions","IsRenameHotelToLodgingEnabled","CPSReporting","i18nFilterTitleMap","AbsoluteTopImpressionRatePercent","AbsoluteTopImpressionShareLostToBudgetPercent","AbsoluteTopImpressionShareLostToRankPercent","AbsoluteTopImpressionSharePercent","AccountName","AccountNumber","AccountStatus","AdDescription","AdDescription2","AdDistribution","AdExtensionId","AdExtensionPropertyValue","AdExtensionType","AdExtensionTypeId","AdExtensionVersion","AdGroupCriterionId","AdGroupId","AdGroupLabels","AdGroupName","AdGroupStatus","AdGroupTypePreview","AdGroupType","AdjustmentCouponAmount","AdLabels","AdRelevance","AdRelevanceCampaign","AdRelevanceAdGroup","AdRelevanceKeyword","AdScenarioType","AdStatus","AdStrength","AdStrengthActionItems","AdTitle","AdType","AdvancedBookingWindow","AdvertiserHotelId","AgencyName","AgeGroup","AllConversionRate","AllConversionRateQualified","AllConversions","AllConversionsQualified","AllCostPerConversion","AllCostPerConversionQualified","AllReturnOnAdSpend","AllRevenue","AllRevenuePerConversion","AreaCode","AssistedClicks","AssistedConversions","AssistedImpressions","Assists","AssociationId","AssociationLevel","AssociationStatus","AttributeChanged","AudienceId","AudienceImpressionLostToBudgetPercent","AudienceImpressionLostToRankPercent","AudienceImpressionSharePercent","AudienceName","AudienceType","AverageCPC","AverageCPM","AverageCPV","AverageCpp","AveragePosition","AverageWatchTimePerImpression","AverageWatchTimePerVideoView","AvgBookedABW","AvgBookedNights","BaseCampaignId","BDAmount","BenchmarkBid","BenchmarkBidProduct","BenchmarkCtr","BenchmarkCtrProduct","BidAdjustment","BidMatchType","BidStrategyType","BilledAmount","BilledAmountUSD","BillingType","BillToCountry","BillToCustomerNumber","BillToCustomerName","BookedABW","BookedLengthOfStay","Brand","BudgetAssociationStatus","BudgetName","BudgetStatus","BusinessName","CTR","CampaignHotelId","CampaignId","CampaignLabels","CampaignName","CampaignStatus","CampaignType","Category","Category0","Category1","Category2","CategoryList","ChangeAmount","ChangeMadeBy","ChangeMadeTo","ChangeTotalCount","ChangedBy","CheckInDate","CheckInDateDayOfWeek","City","ClickCalls","ClickSharePercent","ClickType","ClickTypeId","Clicks","CompanyName","CompletedVideoViews","Condition","ConflictLevel","ConflictType","ConversionRate","ConversionRateQualified","Conversions","ConversionsQualified","CostPerAssist","CostPerConversion","CostPerConversionQualified","CountryOfSale","FeedLabel","CountryName","County","CurrentMaxCpc","CustomLabel0","CustomLabel1","CustomLabel2","CustomLabel3","CustomLabel4","CustomLabel0Product","CustomLabel1Product","CustomLabel2Product","CustomLabel3Product","CustomLabel4Product","CustomParameters","CustomParametersCampaign","CustomParametersAdGroup","CustomParametersKeyword","CustomParametersAd","CustomParametersProduct","CustomerName","DailySpend","DateTime","DateType","DeliveredMatchType","DestinationUrl","DestinationUrlAd","DestinationUrlKeyword","DestinationUrlProduct","DeviceOS","DeviceType","DisplayUrl","DocumentNumber","DocumentType","Duration","DynamicAdTarget","DynamicAdTargetId","DynamicAdTargetStatus","EligibleImpressions","EntityId","EntityName","ExactMatchImpressionSharePercent","ExpectedCtr","ExpectedCtrKeyword","ExpectedCtrCampaign","ExpectedCtrAdGroup","ExtendedCost","FeedUrl","FinalAppUrl","FinalMobileUrl","FinalUrl","FinalUrlSuffix","FinalUrlSuffixCampaign","FinalUrlSuffixAdGroup","FinalUrlSuffixKeyword","FinalUrlSuffixAd","FirstPageBid","GTIN","Gender","Goal","GoalCategory","GoalIds","GoalType","GregorianDate","GrossReturnOnAdSpend","Genre","HistoricalAdRelevance","HistoricalAdRelevanceAdGroup","HistoricalAdRelevanceCampaign","HistoricalAdRelevanceKeyword","HistoricalExpectedCtr","HistoricalExpectedCtrAdGroup","HistoricalExpectedCtrCampaign","HistoricalExpectedCtrKeyword","HistoricalLandingPageExperience","HistoricalLandingPageExperienceAdGroup","HistoricalLandingPageExperienceCampaign","HistoricalLandingPageExperienceKeyword","HistoricalQualityScore","HistoricalQualityScoreAdGroup","HistoricalQualityScoreCampaign","HistoricalQualityScoreKeyword","HotelGroup","HotelGroupNodeId","HotelName","HowChanged","ImpressionLostToAdRelevancePercent","ImpressionLostToBidPercent","ImpressionLostToBudgetPercent","ImpressionLostToExpectedCtrPercent","ImpressionLostToRankAggPercent","ImpressionLostToRankPercent","ImpressionShare","ImpressionSharePercent","Impressions","IndustryName","IOReportMonth","ItemChanged","JobFunctionName","KeywordId","KeywordLabels","KeywordStatus","Keywords","LabelName","LabelNameAccount","LabelNameCampaign","LabelNameAdGroup","LabelNameAd","LabelNameKeyword","LabelColor","LandingPageExperience","LandingPageExperienceAdGroup","LandingPageExperienceCampaign","LandingPageExperienceKeyword","LandingPageTitle","LanguageCode","LengthOfStay","LocalStoreCode","LocationId","LocationType","LowQualityClicks","LowQualityClicksPercent","LowQualityConversionRate","LowQualityConversions","LowQualityConversionsQualified","LowQualityGeneralClicks","LowQualityImpressions","LowQualityImpressionsPercent","LowQualitySophisticatedClicks","MPN","Mainline1Bid","MainlineBid","ManualCalls","MatchedProductsAtAdGroup","MatchedProductsAtCampaign","MatchedProductsAtProductGroup","MerchantProductId","MetroArea","MissedImpressions","MissedImpressionsNoBid","MissedImpressionsInsufficientBid","MissedImpressionsSpendingCapReached","MissedImpressionsNoTax","MissedImpressionsOther","Month","MonthlyBudget","MonthToDateSpend","MostSpecificLocation","NegativeKeyword","NegativeKeywordId","NegativeKeywordList","NegativeKeywordListId","NegativeKeywordMatchType","Neighborhood","NetReturnOnAdSpend","NetRevenue","NetRevenueUSD","NetAmountDue","Network","NewValue","OfferLanguage","OldValue","Param1","Param2","Param3","PartitionType","PartnerImpressions","Path1","Path2","PhoneCalls","PhoneImpressions","PlacementName","PostalCode","Price","PricingMethod","ProductBought","ProductBoughtTitle","ProductCategory1","ProductCategory2","ProductCategory3","ProductCategory4","ProductCategory5","ProductGroup","ProductName","ProductType1","ProductType2","ProductType3","ProductType4","ProductType5","ProximityTargetLocation","Ptr","PublisherUrl","QualityImpact","QualityScore","QualityScoreAdGroup","QualityScoreCampaign","QualityScoreKeyword","QuantityBought","Quarter","QueryIntentCity","QueryIntentCountry","QueryIntentCounty","QueryIntentDMA","QueryIntentLocationId","QueryIntentNeighborhood","QueryIntentPostalCode","QueryIntentState","Radius","RelativeCTR","ReturnOnAdSpend","ReturnOnAdSpendCPS","Revenue","RevenueCPS","RevenuePerAssist","RevenuePerConversion","SalesHouse","SearchQueries","SellerName","SoldToCountry","SoldToCustomerName","SoldToCustomerNumber","SourceHotelId","SpendCouponAmount","StarRating","State","Status","StoreId","TargetingSetting","TimePeriod","Title","TitlePart1","TitlePart2","TitlePart3","Tool","TopImpressionRatePercent","TopImpressionShareLostToBudgetPercent","TopImpressionShareLostToRankPercent","TopImpressionSharePercent","TopVsOther","TotalClicks","TotalClicksOnAdElements","TotalWatchTimeInMS","TrackingTemplate","TrackingTemplateCampaign","TrackingTemplateAdGroup","TrackingTemplateKeyword","TrackingTemplateAd","TrackingTemplateProduct","VideoCompletionRate","VideoViews","VideoViewsAt25Percent","VideoViewsAt50Percent","VideoViewsAt75Percent","ViewThroughConversionRate","ViewThroughConversionRateQualified","ViewThroughConversions","ViewThroughCostPerConversion","ViewThroughCostPerConversionQualified","ViewThroughRate","ViewThroughReturnOnAdSpend","ViewThroughRevenue","WebsiteCoverage","Week","WeekStartingMonday","Year","OrderId","FeedId","FeedItemId","IncrementalBudgetAmount","DailyBudgetAmount","BudgetId","ChangeInAdvertiserReportedRevenuePct","ChangeInAllConvRatePct","ChangeInConversionCreditPct","ChangeInCPAPct","ChangeInFullViewAdvertiserReportedRevenuePct","ChangeInFullViewThroughConversionPct","ChangeInROASPct","ChangeInViewThroughRatePct","ChangeInVTCCPAPct","ChangeInVTCROASPct","DDAAllConvRate","DDACPA","DDAFullAdvertiserReportedRevenue","DDAFullConversionCredit","DDAFullViewAdvertiserReportedRevenue","DDAFullViewThroughConversion","DDAROAS","DDAViewThroughRate","DDAVTCCPA","DDAVTCROAS","LCAAllConvRate","LCACPA","LCAFullAdvertiserReportedRevenue","LCAFullConversionCredit","LCAFullViewAdvertiserReportedRevenue","LCAFullViewThroughConversion","LCAROAS","LCAViewThroughRate","LCAVTCCPA","LCAVTCROAS","IsMainConversionGoal","Sales","CostPerSale","RevenuePerSale","msxAdClicks","msxDeliveredCountry","msxDeliveredMarket","msxDevice","msxPageType","msxPlacementId","msxProvider","msxPublisher","msxRegion","msxServedImpressions","msxServedRevenue","msxViewedImpressions","Installs","CostPerInstall","RevenuePerInstall","AssetGroupId","AssetGroupName","AssetGroupStatus","AssetId","AssetContent","UserCountry","SiteType","ClickShare","RevenueAdjustment","AllRevenueAdjustment","ViewThroughRevenueAdjustment","VideoStarts","VideoSkips","CPCV","CollectionId","AverageImpressionFrequencyPerUser","AverageImpressionFrequencyPerUser7Day","Reach","Downloads","PostClickDownloadRate","CostPerDownload","AppInstalls","PostClickInstallRate","CPI","Purchases","PostInstallPurchaseRate","CPP","Subscriptions","PostInstallSubscriptionRate","CPS","RevenuePerDownload","RevenuePerAppInstall","SearchCategory","SearchVolume","L2Vertical","L3Vertical","Country","SearchesIndexed","ClicksIndexed","WoWSearches","WoWClicks","MoMSearches","MoMClicks","YoYLast1WeekSearches","YoYLast1WeekClicks","YoYLast4WeeksSearches","YoYLast4WeeksClicks","SearchesPeekWeek","ClicksPeekWeek","MarketplaceClickCoverage","ProportionOfSpend","Headline1","Headline2","Headline3","Description1","Description2","Image","Logo","CombinationLongHeadline","NewCustomerConversions","NewCustomerRevenue","NewCustomerConversionRate","NewCustomerCPA","NewCustomerReturnOnAdSpend","metrics","prefix","localizeTitle","getUpperDescription","propertyKey","getPropertyPath","processProperty","rawProperty","rawKey","columnName","IsAdsGlobalizationPhase1Enabled","IsAdsGlobalizationPhase2Enabled","localizationMap","tuples","i18nMap","FilterEnum","enumToColumnEnum","localizeEnumValues","IsMultiMediaAdsEnabled","sortBy","operators","customParameters","lowerDescription","upperDescription","pattern","skipLocalization","isPercentValue","filterSchemaProcessor","piloted","restrictedFilterColumns","reject","FilterViewManagerWrapper","onFilterChange","setEntitySchema","filterData","setTrimmedFilterDataOptionsSearchInsightsReport","removeAppliedFilter","fontFamily","getMasStyle","multipleAccountSelector","fontStyle","speak","fontVariant","textTransform","WebkitFontSmoothing","MozOsxFontSmoothing","float","getAccountSelectorStyle","gridCustomStyles","getColumnSolidBorderStyle","topGridPanelCustomStyles","paginationStyle","extend","wordWrap","accountSelectorPopover","userInputScope","customToolbarItem","downloadIcon","themeDarkAlt","MultipleAccountSelector","getDefaultSelected","onSelectedChange","searchHistorySelectorOptionsFromProps","searchHistorySelectorOptions","_serverContext$Permis","IsCustomerHierarchyEnabled","IsReportingUINewDesignEnabled","defaultSelected","setSelected","setSearchHistorySelectorOptions","loaded","setLoaded","getI18NString","featurePilots","RawSelector","odataURI","ServicesEndpoints","CampaignAPI","ccBaseUrl","ClientCenterUIAPI","ccToken","Token","addtionalInfo","finishedLoading","isReportingUIPhaseNext","forceAccountScope","isInternalReport","hideRadioButtons","allSelected","isCreateSimilar","errorTextStyle","ErrorDescription","variant","isUserIdValid","UserScopeInput","onApplyClick","onCancelClick","isSeparatorBeforeButtons","applyText","currentUserIdString","setCurrentUserIdString","isValueValid","descriptionText","getUserIdErrorDescription","onRenderDescription","Separator","primary","parseInt","AccountSelectorCallout","getSelectedScope","onAccountSelectedChange","additionalInfo","isMultipleAccountSelectorShown","isUserScopeInputShown","newUserScope","AccountSelector","updateSearchHistorySelectorOptions","updateSelected","toggleIsCalloutVisiable","ConditionalFormattingRestrictionSets","RestrictionColumnSets","ReportGrid","onAccountSelectorChange","accountSelectorInfo","onConditionalFormatsChange","onSearchHistorySelectorOptionsChange","onInsertionOrderSelectorChange","insertionSelectorInfo","hidePagination","groups","groupProps","isSearchInsightReportGridModal","PermissionsContext","setForceHideToolbar","showGroupGrid","some","forceHideToolbarPara","newSearchHistorySelectorOptions","ConditionalFormatWrapper","conditionalFormatSchema","restrictedColumns","statisticsCategories","statisticsCategoriesOptions","StatisticsSet","entry","selectedStatisticsColumns","getSelectedStatisticsColumns","searchCategoryGrid","none","isSortedDescendingByDefault","isGridScrollable","commonReportGrid","theme","getTheme","contentStyles","flexFlow","fonts","xLargePlus","neutralPrimary","FontWeights","semibold","heading","body","selectors","iconButtonStyles","rootHovered","neutralDark","ReportGridModal","isReportModalOpen","hideModal","isLoadedAndNoDataFound","Modal","isOpen","isModeless","containerClassName","dateUtil","_bingads_webui_static_legacy_utils_date","frequency","triviaClassName","schedulerTextClassName","labelClassName","Trivia","onSchedulerSaveClick","schedulerOptions","typeOfReport","LegacyI18n","cronFormatter","CronFormatter","displayFrequency","globalLegacyI18n","ret","parse","date","hourString","hour","replace","dayOfMonth","dayOfWeek","getFrequency","isReportShared","taskType","getIsReportShared","ScheduleFrequencyIconEditor","calloutProps","ReportsV4SummaryBar","timeTravelOptions","forceRefreshData","refreshText","BreadcrumbContainer","TimeTravelButtonGroups","isRedoEnabled","onRedoClick","isUndoEnabled","onUndoClick","isResetEnabled","onResetClick","ReportsV4SummaryBarWithOnlyName","myReportsPageHref","defaultReportsPageHref","homePageHref","templatePageHref","parentLevel","parentHref","_IWindow$location$pat","IWindow","match","isNewLandingPage","CustomReports","itemsWithHeading","isCurrentItem","Item","FontIcon","undoText","redoText","resetText","hostStyles","getTimeZoneSelectorStyle","reportTimeZoneSelector","TimeZoneSelector","timeZoneValue","ariaLabelledByID","optionsJsx","Select","compactMessages","alerts","msg","Alert","warning","SidePanelReportGrid","isSearchInsightReportOpen","hideSidePanel","searchCategoryTitle","Panel","closeButtonAriaLabel","PanelType","medium","getSearchTermDetails","reportModalDataItems","modalTotalCount","detailStr","SearchQuery","addSearchCategoryFilter","searchCategory","showTermItem","group","setReportModalParam","ParentIndex","getGroupProps","renderGroupHeader","onToggleCollapse","showEmptyGroups","onToggleCollapseAll","isAllGroupsCollapsed","headerProps","isCollapsedGroupSelectVisible","getDetailListColumns","PreviewPageImplForCommon","reportId","setReportParam","savedReportParam","reportDataItems","reportModalParam","timeTravelHistory","placeHolderError","categoryGroup","setCategoryGroup","parentIndex","_useWarnings","_useWarnings2","patchWarnings","dimensionBannerVisible","setDimensionBannerVisible","selectedInsertionOrderViewItem","setSelectedInsertionOrderViewItem","insertionOrderSelected","setInsertionOrderSelected","_useState11","setDetailStr","entrypoint","URLSearchParams","isGenreReport","GenreTargets","initialInsertionOrderSelected","unlisten","listen","_useState13","_useState14","isColumnChooserOpened","setIsColumnChooserOpened","toggleIsColumnChooserOpened","isOpened","onColumnChooserSaveClick","convertColumnsToOldUIReportAggregation","restrictedColumnSet","newConditionalFormats","addedColumns","removedColumns","totalColumnChanges","onColumnChooserCancelClick","_useState15","_useState16","setIsReportModalOpen","_useState17","_useState18","setisSearchInsightReportOpen","SearchInsightPerformanceReport","hasReportGridModal","hasOtherUrlsRow","addOtherURLsRow","collapsedRowApiFormat","details","startIndex","level","buildSearchTermRow","filteredSavedReportParam","filteredReportParam","_excluded2","_onSchedulerSaveClick","newReportParam","onClickSave","onClickSaveAs","onTimeZoneChange","onDatePickerChange","onModalPageChange","onModalPageSizeChange","onModalSort","onClickDownload","onColumnChooserOpen","onInsertionOrderViewItemChange","viewItem","oldViewItem","newGridPagination","newSortedColumn","skipResetPagination","props1","GroupHeader","indentWidth","headerCount","DetailsRow","role","itemIndex","defaultSchedule","horizontalAlign","align","timeZones","MessageBar","dismissButtonAriaLabel","hideGridPagination","gridPaginationInfo","desclaimerBannerText","classNames","DisclaimerBanner","timezone","noLink","renderBody","renderReportGridModal","renderSideReportGridModal","getRejectedColumns","filterCategories","aggregationExclusion","categorty","forbiddenTimeGrains","timeAggregation","selectedKeys","has","getColumnChooserSelectedKey","ReportsV4ColumnChooser","AggregationExclusion","isTimeColumnMandatory","MandateColumnSet","MissingMandatoryColumnError","exclusionSets","ExclusionSets","onSaveClick","renderColumnChooer","PreviewPageImplForUserScopeFilterLevel","getDatePickerOptions","shouldShowAccountSelect","ReduceScopeView","setDateRange","scopes","setScopes","showAccountSelectorCallout","setShowAccountSelectorCallout","handleApply","renderDateRangeSelector","ChoiceGroup","defaultSelectedKey","renderAccountScopeSelector","selectedAccountCount","getUrlParam","_IWindow$location$pat2","reportIdOrType","getInitialReportParam","getInitialReportSchema","apiKey","ReportPreviewBase","_getUrlParam","perfLoggerSuffix","previewReportPerfMarker","_useReportSchemaRepor","_ref3$retrieveSchema","retrieveSchema","setReportSchema","setTaskState","useDidUpdate","initialReportSchema","initialReportParam","useReportSchemaReportParam","setReportParamImpl","_useReportDataSource","previewReport","saveAsNewReport","downloadReport","refreshRecentReportsDataSource","setReportModalDataItems","setModalTotalCount","setParentIndex","setReportDataItems","_useState12","setTotalCount","setPlaceHolderError","setTimeTravelHistory","isHistoryInitialized","setIsHistoryInitialized","_useState19","_useState20","showReduceScopeBanner","setShowReduceScopeBanner","_useState21","_useState22","showReduceScopePage","setShowReduceScopePage","_useState23","_useState24","setSavedReportParam","previewCallRef","_useState25","_useState26","dataRefreshId","setDataRefreshId","finalParams","resetPaginationConditions","a","b","storedReportParamState","_onSave","_callee3","reportParamToSave","patchParm","_context3","_x2","_onSaveAs","_callee4","_yield$saveAsNewRepor","newTaskItemId","_context4","_x3","_x4","_onDownload","_callee5","CurrentCustomer","customerOrAccountName","payload","_context5","formatDate","skeleton","_useState27","_useState28","isUserScopeFilterLevelPreviewPageInited","setIsUserScopeFilterLevelPreviewPageInited","isUserScope","shouldUserScopeFilterLevel","shouldNotFetch","hasSearchInsightReportGridModal","isMounted","_fetchAndUpdateData","reduceScopeTimer","previewCall","dfmCacheResult","dfmCacheKey","responseBody","newItems","errorResponseBody","setTimeout","datePickerOptions","shouldShowAccountSelector","getDFMCache","clearTimeout","isException","responseJSON","fetchAndUpdateData","_fetchAndUpdateData2","_callee2","_context2","ExpandCollapsedRows","reduceScopeBanner","Icon","cancel","parentTarget","newUserId","newScopeSelector","InsertionOrderReportBubbleRender","ReportPreviewWrapped","withReportsV4SiteMap","CustomReportPreviewWrapped","withCustomReportsSiteMap","StyledMatchReport","lazy","_yield$import","StyledMatchReportPage","StyledFeedStatus","_yield$import2","StyledFeedStatusPage","PreviewPageImplForLegacy","getSelectedVerticalIds","verticalType","RegExp","f","console","filterVerticalIds","reportSchemaFilters","selectedIds","verticalKey","selectedId","startsWith","selectedL1VerticalIds","selectedL2VerticalIds","updatedEntitySchema","trimmedL2Options","trimmedL3Options","l2VerticalId","cleanedL2VerticalId","l1VerticalId","isModalOpened","CollapseCondition","callOutStyles","calloutMain","Spin","LOADING","SUCCEEDED","FAILED","EmailPicker","isScheduleEnabled","currentUserEmail","selectedEmails","emails","onChangeSelectedEmails","loadEmails","availableEmails","setAvailableEmails","searchString","setSearchString","loadEmailsStatus","setLoadEmailsStatus","userEmails","allEmails","renderEmail","email","me","searchBoxElement","SearchBox","isDisabled","onQueryChange","filteredEmails","CheckboxGroup","renderItem","getItemId","renderEmailList","Wrapper","Email","inputTitleStyle","components","core","_React$Component","radioValues","getRadioId","_item","radioOptions","CronModel","changeFrequency","changeHour","optionFactory","selectorName","optionObj","useIndex","frequencyContainer","frequencyTitle","radioContainer","RadioGroup","frequencySelect","getDaysOfWeek","getDaysOfMonth","hourContainer","getHoursOfDay","StyledFrequency","alignSelf","StartEndDate","onSelectDate","isShowStartDatePicker","startSelectedDate","onValidate","changeStartEndDate","isShowEndDatePicker","endSelectedDate","errMessage","onKeyDown","keyCode","Enter","handelShowHideSingleDatePicker","setWrapperRef","wrapperRef","contains","startNavigatedDate","endNavigatedDate","selectedRanges","startDateInputRef","endDateInputRef","getCivilDateToday","years","startEndDate","startEndDateLabel","Input","readOnly","inputRef","calenderWrapper","SingleMonthCalendar","defaultNavigatedDate","defaultSelectedDate","navigatedDate","selectedDate","isMonthPickerEnabled","errorMsg","getUTCFullYear","getUTCMonth","getUTCDate","StyledStartEndDate","FileFormatSelector","fileFormat","FileFormatForReporting","FileFormatForInlineDownload","changeFileFormat","optionsJSX","entries","fileFormatContainer","fileFormatTitle","StyledFileFormatSelector","ReportSchedule","_Component","_len","args","_key","onUpdateEmailRecipients","newEmailRecipients","setSchedule","toCronString","reportSchedule","scheduleTime","changeDefaultFrequency","emailTextArea","emailTitle","includeAttachment","Checkbox","attachmentTooLarge","Component","withPerfMarker","defaultInitSchedule","setIsScheduleEnabled","initSchedule","setSettings","scheduleThisReportText","isSaveButtonEnabled","Toggle","onText","offText","newData","cur","toggleIsCalloutVisible","pre","_onSaveClick","bottomAutoEdge","elevatedColumnsMap","mandatory","linechartDefault","barchartDefault","NegativeKeywordConflictReport","ShareOfVoiceReport","AdDynamicTextPerformanceReport","GoalsAndFunnelsReport","ConversionPerformanceReport","UserLocationPerformanceReport","ConversionModelCompareReport","MSXAccountPerformanceReport","CombinationPerformanceReport","AdExtensionByKeywordReport","AdExtensionByAdReport","AdExtensionDetailReport","CallDetailReport","BudgetSummaryReport","CustomerInvoiceReport","BillingStatementReport","SearchCampaignChangeHistoryReport","UserRoleChangeHistoryReport","FraudChangeHistoryReport","DSAAutoTargetPerformanceReport","DSACategoryPerformanceReport","DSASearchQueryPerformanceReport","ProductPartitionPerformanceReport","ProductPartitionUnitPerformanceReport","ProductDimensionPerformanceReport","ProductSearchQueryPerformanceReport","ProductMatchCountReport","ProductNegativeKeywordConflictReport","AgeGenderAudienceReport","ProfessionalDemographicsAudienceReport","GeographicPerformanceReport","GenrePerformanceReport","LabelAccountReport","LabelCampaignReport","LabelAdGroupReport","LabelKeywordReport","LabelAdReport","HotelDimensionPerformanceReport","HotelGroupPerformanceReport","AppsPerformanceReport","AssetPerformanceReport","SearchVerticalCategoryInsightsReport","SearchVerticalCategoryClickShareReport","restrictionSets","AIM","IsAIMCampaignEnabled","IsInStoreTransactionAttributionSupported","IsDSAMixedModeCampaignEnabled","ViewConversions","IsViewThroughConversionEnabled","ViewThroughConversionsRevenue","IsViewThroughConversionsRevenueEnabled","ConversionValueRuleMetrics","ConvValueRules","ConversionValueRuleViewThroughMetrics","AvgPositionDeprecationPhase1","IsAvgPositionDeprecationPhase1Enabled","AvgPositionDeprecationPhase2","IsAvgPositionDeprecationPhase2Enabled","VideoMetrics","permssions","IsVideoAdsPerfMetricsEnabled","VideoMetricsV2","IsVideoAdsPerfMetricsV2Enabled","IsVerticalAdsReportingPhase1Enabled","NeighborhoodLocationType","IsDSADynamicDescriptionPhase1Enabled","UCMReportBudgetColumns","PerformanceMax","PerformanceMaxCampaigns","PerformanceMaxCampaignsPhaseTwoReporting","ReachAndFreq","ReachAndFrequency","ReachAndFreq7Day","ReachAndFrequency7Day","BoostPlacement","IsAmplifyEnabled","BoostPlacementReporting","NewCustomerAcquisitionGoal","NewCustomerAcquisition","InsertionOrderAccountLevel","isColumnChooserRenderer","InsertionOrderFilter","InsertionOrderDisplay","defaultSets","IsManualCpmEnabled","restrictedColumnsByReport","defaultColumnsByReport","restrictedFilterColumnsByReport","restrictedDisplayColumnsByReport","helpLinkIds","CPA","ExcludeZeroClicks","FullViewConversions","GoalId","Keyword","Language","helpLinkIdsByReportType","missingMandatoryColumnErrors","enumBlackList","processCategory","mandatoryColumns","aggregationRestrictions","Sortable","selectOption","customizedOption","getCustomizedOption","processSchema","sharedSchema","elevatedColumns","pilotRestrictionSets","pilotDefaultSets","timeRangeOverride","missingMandatoryColumnError","restrictedFilterColumnsSets","displayRestrictedSets","rawSchema","supportedAggregations","fields","shared","filterFields","processedFilter","ColumnsSchema","rawField","DisplayType","processFilters","fieldSchema","$schema","DimensionColumns","validCategories","columnGroups","RenderTypes","allMandatoryColumnsMap","allMondatoryColumns","RequiredColumns","output","getAggregationRestrictions","processedColumns","processColumns","pilotDefault","DimensionColumns_TimeCategory","MetricColumns_TimeCategory","preprocessTimeColumnsExclusionSets","preprocessReportSchemaForTimeColumns","process","Shared","defineProperties","AccountPerformanceReportUIPreviewV1","enumerable","AccountPerformanceReport_SixWeeksUIPreviewV1","AccountPerformanceReport_TwoMonthsUIPreviewV1","AccountPerformanceReport_TwoYearsUIPreviewV1","AccountPerformanceReport_ShareOfVoiceUIPreviewV1","AdDynamicTextPerformanceReportUIPreviewV1","AdExtensionByAdReportUIPreviewV1","AdExtensionByKeywordReportUIPreviewV1","AdExtensionDetailReportUIPreviewV1","AdGroupPerformanceReportUIPreviewV1","AdPerformanceReportUIPreviewV1","AgeGenderAudienceReportUIPreviewV1","AppsPerformanceReportUIPreviewV1","AssetPerformanceReportUIPreviewV1","AudiencePerformanceReportUIPreviewV1","CallDetailReportUIPreviewV1","CampaignPerformanceReportUIPreviewV1","CombinationPerformanceReportUIPreviewV1","ConversionPerformanceReportUIPreviewV1","ConversionModelCompareReportUIPreviewV1","MSXAccountPerformanceReportUIPreviewV1","DSAAutoTargetPerformanceReportUIPreviewV1","DSACategoryPerformanceReportUIPreviewV1","DSASearchQueryPerformanceReportUIPreviewV1","DestinationURLPerformanceReportUIPreviewV1","FraudChangeHistoryReportUIPreviewV1","GeographicPerformanceReportUIPreviewV1","GoalsAndFunnelsReportUIPreviewV1","KeywordPerformanceReportUIPreviewV1","NegativeKeywordConflictReportUIPreviewV1","ProductDimensionPerformanceReportUIPreviewV1","ProductMatchCountReportUIPreviewV1","ProductNegativeKeywordConflictReportUIPreviewV1","ProductPartitionPerformanceReportUIPreviewV1","ProductPartitionUnitPerformanceReportUIPreviewV1","ProductSearchQueryPerformanceReportUIPreviewV1","ProfessionalDemographicsAudienceReportUIPreviewV1","PublisherUsagePerformanceReportUIPreviewV1","SearchCampaignChangeHistoryReportUIPreviewV1","SearchQueryPerformanceReportUIPreviewV1","ShareOfVoiceReportUIPreviewV1","UserLocationPerformanceReportUIPreviewV1","UserRoleChangeHistoryReportUIPreviewV1","LabelCampaignReportUIPreviewV1","LabelAdGroupReportUIPreviewV1","LabelAccountReportUIPreviewV1","LabelKeywordReportUIPreviewV1","LabelAdReportUIPreviewV1","BudgetSummaryReportUIPreviewV1","BillingStatementReportUIPreviewV1","InsertionOrderReportUIPreviewV1","CustomerInvoiceReportUIPreviewV1","HotelDimensionPerformanceReportUIPreviewV1","HotelGroupPerformanceReportUIPreviewV1","FeedItemPerformanceReportUIPreviewV1","GenrePerformanceReportUIPreviewV1","SearchInsightPerformanceReportUIPreviewV1","SearchVerticalCategoryInsightsReportUIPreviewV1","SearchVerticalCategoryClickShareReportUIPreviewV1","ColumnConfig","unifiedSchema","AccountPerformanceReportUIUnifiedPreview","AccountPerformanceReport_ShareOfVoiceUIUnifiedPreview","AdGroupPerformanceReportUIUnifiedPreview","AdPerformanceReportUIUnifiedPreview","CampaignPerformanceReportUIUnifiedPreview","DestinationURLPerformanceReportUIUnifiedPreview","GeographicPerformanceReportUIUnifiedPreview","KeywordPerformanceReportUIUnifiedPreview","ProductDimensionPerformanceReportUIUnifiedPreview","ProductPartitionPerformanceReportUIUnifiedPreview","ProductPartitionUnitPerformanceReportUIUnifiedPreview","PublisherUsagePerformanceReportUIUnifiedPreview","ShareOfVoiceReportUIUnifiedPreview","UserLocationPerformanceReportUIUnifiedPreview","LabelCampaignReportUIUnifiedPreview","LabelAdGroupReportUIUnifiedPreview","LabelAccountReportUIUnifiedPreview","LabelKeywordReportUIUnifiedPreview","LabelAdReportUIUnifiedPreview","AgeGenderDemographicReport","Custom","Today","Yesterday","LastSevenDays","LastFourteenDays","LastThirtyDays","ThisWeekFromSun","ThisWeekFromMon","LastWeekStartingSun","LastWeekStartingMon","LastFourWeeksStartingSun","LastFourWeeksStartingMon","LastSixWeeksStartingSun","LastSixWeeksStartingMon","ThisMonth","LastMonth","LastTwoMonths","LastThreeMonths","LastSixMonths","ThisYear","LastYear","LastTwoYears","summaryBarDividerClassName","pug","module","exports","locals","pug_html","locals_for_with","attr","call","pug_interp","statusTypeClass","localizedText","escape","ItemState","ItemKind","isLockedCandidateItem","kind","candidate","lock","IconName","ItemRow","rootRef","isOperationEnabled","onOperationTrigger","operationText","tabIndex","GripperBarHorizontal","GripperDotsVertical","Empty","assertNever","getClassNameByIconName","SelectedItemRow","draggingHoverCallback","dropCallback","dragObject","isDragging","dragRef","useDrag","collect","monitor","getEmptyImage","dropRef","useDrop","accept","hover","draggingItemData","getClientOffset","drop","removeTextKey","edgeDistance","itemAlignmentStackTokensGap","itemAlignmentsStackPadding","SelectedColumns","headerName","onItemOperationClick","onSelectedItemsChange","onRemoveAllClick","removeAllText","onDraggingHover","clientOffset","log","friendlyName","containerElement","selectedColumnItemElements","querySelectorAll","dragIndex","containerTop","clientYOffset","y","hoverElementIndex","floor","hoverIndex","transformUp1Style","getTransfromStyleString","transformDown1Style","draggedElementTransformStyle","lowerBound","min","upperBound","i","currentElement","transition","onDrop","element","draggingItem","dropIndex","focus","GroupedList","onRenderCell","nestingDepth","getStaticPropsOfSelectedItemRowByItem","onShouldVirtualize","focusZoneProps","handleTabKey","preventFocusRestoration","texts","getIsOperationEnabledForSelectedItem","getOperationTextForSelectedItem","removeText","optional","unknown","layerStyles","pointerEvents","DragLayerItemContainer","currentOffset","DragLayerPreview","useDragLayer","getItem","getSourceClientOffset","AvailableColumns","onCollapseAllClick","onExpandAllClick","onAddItems","searchKey","setSearchkey","columnNameText","expandAllText","collapseAllText","addAllText","addText","addedText","filteredCategories","newGroups","filterCategory","itmesToAdd","itemCountsOfAllCategory","groupOfGroupedList","onGroupHeaderClick","onRenderCandidateGroupHeader","onRenderCandidateCell","isMandatory","getIsOperationEnabled","isSelected","getOperationText","lockReason","withTooltip","groupKey","onAddGroupAllClick","ColumnChooser","onSelectedKeysChange","availableColumnsSring","selectedColumnsString","chosenItem","newSelectedItemKeys","newItemkeys","intersection","s","ReportAggregationColumn","SelectOption","mapOfReportAggregationEnumAndColumn","convertColumnsToReportAggregation","reportAggregation","hasDateTypeColumns","reportColumns","pilotSets","by","isAvailableByTimeGrain","filterCategoriesByTimeGrain","filterCategoriesByRejectedColumns","getAvaliableColumnSet","avaliableColumnSet","filterColumnByAvaliableColumns","addMandatoryToSelectedByCategories","selectedSet","unshift","addMandatoryToSelectedByMandateColumnSet","avaliableColumns","columnSet","mandateColumns","firstAvaliableColumn","addDefaultTimeColumn","allowedReportAggregationEnums","allowedReportAggregationColumnSet","defaultAggregationEnum","canonicalColumns","defaultRejectedColumns","equivalentReportAggregation","columnChooserStyle","flexGrow","borderWidth","borderColor","borderStyle","minHeight","letterSpacing","writingMode","opacity","columnChooserStyleClassName","extractExclusionRulesFromExclusionSets","rules","correspondKey","getCorrespondKey","correspondSet","exclusionRule","predicate","triggerColumnKeys","correspondExclusionRule","executeExcludeRules","conflictColumnMap","rule","predicateValue","conflictColumns","getMandatoryItemKeys","buildCandidateItem","selectedKeysSet","keyNameMap","candidateItem","getItemStateOfOption","conflictColumnsFriendlyName","lockColumnFriendlyName","oneColumnTemplate","twoColumnTemplate","threeAndMoreColumnTemplate","firstColumnName","secondColumnName","remainCount","getLockReasonElement","extractKeyNameObejct","TimeColumnsCategoryKey","DimensionColumnsCategoryKey","MetricColumnsCategoryKey","atLeastOneCategory","atLeastOneErrorMessageMap","buildSelectedItem","selectedItemKey","mandatoryKeys","forceRefresh","headerNameText","tipText","translatedCategories","currentSelectedKeys","setCurrentSelectedKeys","exclusionRules","selectedItemKeys","buildSelectedItems","hiddenCandidateColumnKeys","categoryDescriptorOfStatic","selectedKeySet","fromDataModel","lastcategoryDescriptorOfStatic","lastCategory","groupLength","mergeWithLastTimeData","errorMessages","isMandatoryColumnMissing","checkValid","triggerGroup","random","newKeys","hiddenCandidateColumns","lastSelectedKeys","loopCount","newSet"],"sourceRoot":""}