{"version":3,"file":"static/js/application.async.non-landing~95ab4420.956771aa.chunk.js","mappings":"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EACLtS,uGACAqS,EAAMI,KAAK,CAAEE,QAAS,IAC1B,KAAKR,GACH,OAAOG,EACLtS,wGACAqS,EAAMI,KAAK,CAAEE,QAAS,KAC1B,KAAKR,GACH,OAAOG,EACLtS,wGACAqS,EAAMI,KAAK,CAAEE,QAAS,KAC1B,QAEE,OADA5R,IAAAA,OAAQ,WAAQ,MAAM,IAAI6R,WAAW,wCAADzH,OAAyCoH,EAAa,gBAAApH,OAAe5E,EAAS,kCAAmC,IAC9I+L,EACLtS,wGACAqS,EAAMI,KAAK,CAAEE,QAAS,KAE9B,E,aC5CaE,GAAwB,CACnCrB,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,UAEFC,MAAO,CACL,QACA,YACA,gBACA,mBACA,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFC,UAAW,CACT,QACA,YACA,gBACA,mBACA,iBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFC,OAAQ,CACN,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFkB,qBAAsB,CACpB,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFjB,QAAS,CACP,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFC,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,WAISgB,GAAyB,CACpC,MAAO,CACLhB,QAAS,GACTL,MAAO,GACPE,OAAQ,GACRC,QA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NhC2oB,GA9NM9C,GAAAA,GACG+C,sBAAwB,CAC7BC,SAAU,CACR,CACE/wB,KAAM,eACNjF,MAAO,yBACPi2B,SAAU,CACR,CACEhxB,KAAM,UACNjF,MAAO,eATbgzB,GAgBGM,qBAAuB,SAACJ,GAE7B,OADAA,EAAgBgD,YAAYlD,GAAkB+C,uBACvC7C,EAAgBrD,aAAa2D,QACtC,EA6NFR,GAAkB1lB,aAAe,CAC/BmnB,UAAW,KACXnpB,YAAa,KACbuoB,WAAY,KACZ9nB,cAAUvJ,EACV2wB,SAAU,eACV0B,gBAAiBsB,EAAAA,IAGnB,IAAMhf,GAAO,CACXtX,IAAAA,QAAUyO,EAAAA,kBAAmBzO,IAAG6uB,IAChCrhB,EAAAA,GACA+J,EAAAA,GACAgf,EAAAA,GACAC,EAAAA,oBACAC,EAAAA,GACAhf,EAAAA,iBACAnC,EAAAA,IAGIohB,GAAsB12B,IAAAA,QAAS4X,MAAT5X,IAAasX,GAAbtX,CAAmBmzB,G,8ICvRlCwD,EAAqB,CAChC,aACA,kBACA,aACA,qBACA,gCACA,+BACA,wBACA,wBACA,wBACA,sBACA,uBAGWC,EAAc,CACzBC,yBAA0B,CACxBvF,QAAQ,CACN,aACA,gBACA,cACA,iBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAAmBlnB,OAChBusB,GAELG,UAAW,CACT,aACA,gBACA,cACA,eAEFnG,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJmG,0BAA2B,CACzBzF,QAAQ,CACN,aACA,cACA,eACA,iBACA,eACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAAmBlnB,OAChBusB,GAELG,UAAW,CACT,aACA,eAEFnG,iBAAkB,CAChB,gBAEFC,gBAAiB,CACf,iBAGJoG,yBAA0B,CACxB1F,QAAQ,CACN,aACA,cACA,eACA,cACA,YACA,iBACA,eACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAAmBlnB,OAChBusB,GAELG,UAAW,CACT,aACA,cACA,aAEFnG,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJqG,oBAAqB,CACnB3F,QAAQ,CACN,aACA,cACA,eACA,cACA,OACA,SACA,UACA,aACA,aACA,aACA,gBACA,iBACA,iBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAAmBlnB,OAChBusB,GAELG,UAAW,CACT,cAEFnG,iBAAkB,CAChB,QAEFC,gBAAiB,CACf,SAGJsG,yBAA0B,CACxB5F,QAAS,CACP,aACA,cACA,eACA,cACA,YACA,UACA,eACA,iBACA,gBACA,eACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,cAEFnG,iBAAkB,CAChB,WAEFC,gBAAiB,CACf,YAGJuG,8BAA+B,CAC7BL,UAAW,CACT,cACA,UACA,mBAEFxF,QAAS,CACP,cACA,eACA,YACA,UACA,kBACA,kBAGJ8F,mBAAoB,CAClB9F,QAAS,CACP,aACA,cACA,eACA,cACA,WACA,YACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,yBACA,gCACA,iCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,aACA,YACA,0BAEFnG,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJyG,6BAA8B,CAC5B/F,QAAS,CACP,aACA,cACA,eACA,cACA,cACA,YACA,UACA,OACA,eACA,qBACA,WACA,UACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,aACA,eAEFnG,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJ0G,gCAAiC,CAC/BhG,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,iBACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,aACA,cACA,eACA,kBAEFnG,iBAAkB,CAChB,kBAEFC,gBAAiB,CACf,mBAGJ2G,gCAAiC,CAC/BjG,QAAS,CACP,aACA,cACA,eACA,cACA,eACA,iBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,aACA,cACA,eACA,iBAGJU,+BAAgC,CAC9BlG,QAAS,CACP,aACA,cACA,cACA,SACA,UACA,aACA,aACA,aACA,iBACA,SACA,SACA,SACA,iBACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,aACA,UACA,iBACA,SACA,SACA,WAGJW,0BAA2B,CACzBX,UAAW,CACT,aACA,aACA,aAEFxF,QAAS,CACP,aACA,aACA,eACA,eACA,gBACA,cACA,YACA,eACA,cACA,oBACA,gBACA,mBACA,2BACA,mCACA,cACA,SACA,MACA,UAGJoG,sBAAuB,CACrBZ,UAAW,CACT,aACA,QAEFxF,QAAS,CACP,aACA,OACA,cACA,eACA,cACA,UACA,iBACA,eAGJqG,4BAA6B,CAC3BrG,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,cACA,SACA,MACA,QACA,UACA,cACA,iBACA,UACA,kBACA,qBAEFwF,UAAW,CACT,eAGJc,8BAA+B,CAC7Bd,UAAW,CACT,aACA,eAEFxF,QAAS,CACP,aACA,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,uBC9cOuG,EACX73B,IAAAA,OACE,CAAC,EACD42B,ECbuB,CACzBkB,2BAA4B,CAC1BxG,QAAS,CACP,aACA,cACA,eACA,cACA,UACA,kBACA,YACA,cACA,SACA,cACA,MACA,cACA,aACA,iBACA,QACA,qBAEFwF,UAAW,CACT,aACA,kBACA,YAGJiB,sBAAuB,CACrBzG,QAAS,CACP,aACA,cACA,eACA,cACA,SACA,UACA,aACA,aACA,aACA,kBACA,YACA,cACA,SACA,MACA,cACA,aACA,iBACA,QACA,qBAEFwF,UAAW,CACT,aACA,oBAGJkB,wBAAyB,CACvB1G,QAAS,CACP,aACA,cACA,eACA,cACA,kBACA,oBACA,gBACA,2BACA,cACA,SACA,MACA,cACA,oBACA,iBACA,QACA,cAEFwF,UAAW,CACT,aACA,kBACA,oBACA,gBACA,6BAGJmB,iBAAkB,CAChB3G,QAAS,CACP,aACA,cACA,eACA,cACA,YACA,UACA,YAEFwF,UAAW,CACT,aACA,YACA,aC7F0B,CAC9B,oCAAqC,CACnCA,UAAW,CACT,aACA,eACA,cACA,iBAEFxF,QAAS,CACP,aACA,eACA,cACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,cACA,iBACA,sBAGJ,qCAAsC,CACpCwF,UAAW,CACT,aACA,eACA,cACA,aACA,iBAEFxF,QAAS,CACP,aACA,eACA,cACA,aACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,gBAGJ,oCAAqC,CACnCwF,UAAW,CACT,aACA,eACA,cACA,iBAEFxF,QAAS,CACP,aACA,eACA,cACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,gBAGJ,wCAAyC,CACvCwF,UAAW,CACT,aACA,UACA,cACA,eACA,cACA,WACA,yBACA,gBAEFxF,QAAS,CACP,aACA,UACA,cACA,eACA,cACA,WACA,cACA,SACA,MACA,aACA,QACA,kBACA,yBACA,gCACA,iCACA,kBC/FiB,CACrB4G,oBAAqB,CACnBpB,UAAW,CACT,OACA,gBACA,cACA,eACA,eACA,gBACA,aACA,oBAEFxF,QAAS,CACP,OACA,gBACA,cACA,eACA,eACA,cACA,gBACA,aACA,qBAGJ6G,sBAAuB,CACrB7G,QAAS,CACP,QACA,eACA,eACA,gBACA,aACA,gBACA,qBACA,eACA,eACA,kBACA,gBACA,uBACA,qBACA,qBACA,SACA,iBACA,eACA,aACA,iBAEFwF,UAAW,CACT,WAGJsB,uBAAwB,CACtB9G,QAAS,CACP,QACA,eACA,gBACA,eACA,gBACA,uBACA,uBACA,qBACA,iBACA,eACA,cACA,gBAEFwF,UAAW,CACT,eACA,gBACA,gBACA,qBACA,iBACA,eACA,kBCxEuB,CAC3BuB,kCAAmC,CACjCvB,UAAW,CACT,YAEFxF,QAAS,CACP,WACA,eACA,cACA,YACA,aACA,mBACA,cACA,aACA,WACA,aAGJgH,4BAA6B,CAC3BhH,QAAS,CACP,eACA,cACA,eACA,eACA,mBACA,aACA,WACA,WACA,YAEFwF,UAAW,CACT,aAGJyB,yBAA0B,CACxBzB,UAAW,CACT,SACA,YACA,cACA,aACA,eACA,oBAEFxF,QAAS,CACP,SACA,YACA,cACA,aACA,eACA,sBCjDa,CACjBkH,+BAAgC,CAC9BlH,QAAS,CACP,aACA,cACA,aACA,kBACA,eACA,SACA,cACA,iBACA,oBACA,MACA,kBACA,cACA,2BACA,mCACA,cACA,WACA,SAEFwF,UAAW,CACT,aACA,oBAGJ2B,6BAA8B,CAC5BnH,QAAS,CACP,aACA,cACA,aACA,kBACA,SACA,eACA,cACA,iBACA,oBACA,MACA,YACA,YACA,YACA,cACA,2BACA,mCACA,WACA,cACA,SAEFwF,UAAW,CACT,aACA,YACA,YACA,cAGJ4B,gCAAiC,CAC/BpH,QAAS,CACP,aACA,cACA,aACA,kBACA,SACA,eACA,cACA,iBACA,oBACA,MACA,cACA,2BACA,mCACA,WACA,cACA,cACA,SAEFwF,UAAW,CACT,aACA,iBC7EiB,CACrB6B,kCAAmC,CACjCrH,QAAS,CACP,aACA,cACA,eACA,cACA,qBACA,eACA,gBACA,gBACA,cACA,SACA,MACA,aACA,mCACA,QACA,cACA,iBACA,qBAEFwF,UAAW,CACT,aACA,eACA,kBAGJ8B,sCAAuC,CACrCtH,QAAS,CACP,aACA,cACA,eACA,cACA,qBACA,eACA,gBACA,cACA,SACA,MACA,aACA,aACA,QACA,oCAEFwF,UAAW,CACT,aACA,qBACA,iBAGJ+B,kCAAmC,CACjCvH,QAAS,CACP,aACA,cACA,eACA,cACA,oBACA,QACA,cACA,SACA,MACA,aACA,aACA,QACA,cACA,iBACA,oBACA,oCAEFwF,UAAW,CACT,eAGJgC,oCAAqC,CACnChC,UAAW,CACT,aACA,cACA,eACA,eAEFxF,QAAS,CACP,aACA,cACA,eACA,cACA,oBACA,QACA,qBACA,eACA,gBACA,cACA,SACA,MACA,aACA,mCACA,QACA,cACA,iBACA,sBAGJyH,wBAAyB,CACvBjC,UAAW,CACT,cACA,eACA,eACA,iCAEFxF,QAAS,CACP,cACA,eACA,qBACA,eACA,gBACA,4BACA,2BACA,kCAGJ0H,qCAAsC,CACpClC,UAAW,CACT,cACA,eACA,cACA,mBAEFxF,QAAS,CACP,cACA,eACA,cACA,qBACA,oBACA,kBACA,mBCrImB,CACvB2H,wBAAyB,CACvBnC,UAAW,CACT,aACA,cACA,cACA,WACA,UAEFxF,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,WACA,SACA,cACA,2BACA,mCACA,SACA,cACA,UAGJ4H,uCAAwC,CACtCpC,UAAW,CACT,aACA,cACA,cACA,cACA,eACA,mBAEFxF,QAAS,CACP,aACA,cACA,eACA,cACA,cACA,eACA,kBACA,iBACA,cACA,SACA,cACA,QACA,kBACA,2BACA,qCAGJsG,8BAA+B,CAC7Bd,UAAW,CACT,aACA,eAEFxF,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,UACA,QACA,YACA,OACA,SACA,aACA,aACA,qBACA,mBACA,iBACA,kBACA,oBACA,wBACA,wBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,sBAGJ6H,4BAA6B,CAC3BrC,UAAW,CACT,aACA,eAEFxF,QAAS,CACP,aACA,cACA,eACA,cACA,iBACA,UACA,QACA,YACA,OACA,SACA,aACA,aACA,eACA,uBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,wBCxHO8H,EAAkB,CAC7Br4B,eAAgB,CACd2tB,UAAW,WAAF,OAAQ,CAAI,EACrBC,QAAS,CACP,iBACA,oBACA,uBACA,qBACA,0BACA,aACA,0BACA,+BAGJ0K,IAAK,CACH3K,UAAW,SAAAna,GAAW,OAAIA,EAAY+kB,o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,iBAAkBt1D,oBAClBu1D,aAAcv1D,gBACdw1D,oBAAqBx1D,wBACrBy1D,YAAaz1D,eACb01D,iBAAkB11D,oBAClB21D,qBAAsB31D,0BACtB41D,qBAAsB51D,0BACtB61D,kBAAmB71D,sBACnB81D,uBAAwB91D,2BAExB+1D,eAAgB/1D,kBAChBg2D,aAAch2D,gBAGdi2D,QAASj2D,WACTk2D,aAAcl2D,gBACdm2D,UAAWn2D,aACXo2D,YAAap2D,eAGbq2D,WAAYr2D,cACZs2D,WAAYt2D,cACZu2D,WAAYv2D,cACZw2D,gBAAiBx2D,WACjBy2D,cAAez2D,SACf02D,YAAa12D,gCACb22D,UAAW32D,8BACX42D,YAAa52D,kCACb62D,UAAW72D,gCACX82D,qBAAsB92D,6CACtB+2D,mBAAoB/2D,2CACpBg3D,sBAAuBh3D,+CACvBi3D,oBAAqBj3D,6CACrBk3D,iBAAkBl3D,uBAClBm3D,eAAgBn3D,qBAChBo3D,yBAA0Bp3D,6BAC1Bq3D,kBAAmBr3D,sBACnBs3D,UAAWt3D,YACXu3D,UAAWv3D,YACXw3D,UAAWx3D,YACXy3D,aAAcz3D,eACd03D,aAAc13D,eACd23D,MAAO33D,QACP43D,KAAM53D,OACN63D,wBAAyB73D,iBH33BzBmoB,YIZyB,CACzBqV,cAAex9B,iBACf29B,eAAgB39B,kBAChBq+B,cAAer+B,kBACfu+B,YAAav+B,eACbw+B,SAAUx+B,YACV0+B,OAAQ1+B,UACR0gC,aAAc1gC,kBACd2gC,gBAAiB3gC,oBACjB4hC,eAAgB5hC,kBAChB2iC,OAAQ3iC,SACR83D,YAAa93D,oBACbikC,mBAAoBjkC,wBACpBmkC,SAAUnkC,YACVokC,WAAYpkC,cACZ2kC,sBAAuB3kC,qBACvBglC,YAAahlC,8BACbklC,QAASllC,WACTstB,QAASttB,UACTmmC,WAAYnmC,cACZ6mC,YAAa7mC,cACb+3D,SAAU/3D,WACVknC,cAAelnC,iBACfmnC,sBAAuBnnC,0BACvBwvC,aAAcxvC,WACdyrC,aAAczrC,gBACdg4D,cAAeh4D,cACfktC,OAAQltC,mBJdRupB,WImBw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A,2BACA,2BACA,YACA,YACA,kBACA,gBACA,UAEFC,MAAO,CACL,QACA,YACA,gBACA,mBACA,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFC,UAAW,CACT,QACA,YACA,gBACA,mBACA,iBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFC,OAAQ,CACN,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFkB,qBAAsB,CACpB,iBACA,kBACA,kBACA,sBACA,sBACA,2BACA,2BACA,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFjB,QAAS,CACP,YACA,YACA,kBACA,gBACA,WACA,WACA,UACA,UAEFC,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,WAISgB,GAAyB,CACpC,MAAO,CACLhB,QAAS,GACTL,MAAO,GACPE,OAAQ,GACRC,QAAS,GACTC,OAAQ,GACRH,UAAW,GACXmB,qBAAsB,IAExB,KAAM,CACJtB,OAAQ,GACRC,UAAW,GACXM,QAAS,CAAC,YACVL,MAAO,CAAC,YACRE,OAAQ,CAAC,YACTC,QAAS,CAAC,YACVC,OAAQ,GACRgB,qBAAsB,CAAC,aAEzB,MAAO,CACLtB,OAAQ,GACRC,UAAW,GACXM,QAAS,CAAC,YACVL,MAAO,CAAC,YACRE,OAAQ,CAAC,YACTC,QAAS,CAAC,YACVC,OAAQ,CAAC,YACTgB,qBAAsB,CAAC,aAEzB,MAAO,CACLpB,MAAO,IAET,KAAM,CACJF,OAAQ,CAAC,iBACTC,UAAW,CAAC,kBAEd,MAAO,CACLD,OAAQ,CAAC,iBACTC,UAAW,CAAC,kBAEd,KAAM,CACJD,OAAQ,CAAC,iBACTC,UAAW,CAAC,oBAEd,MAAO,CACLM,QAAS,GACTL,MAAO,GACPE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A,EAAAA,EAAAA,GAAA,GCAJ,CACzBmnB,yBAA0B,CACxBvF,QAAS,CACP,gBACA,cACA,iBACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,gBACA,cACA,eAEFnG,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJmG,0BAA2B,CACzBzF,QAAS,CACP,cACA,eACA,iBACA,eACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,eAEFnG,iBAAkB,CAChB,gBAEFC,gBAAiB,CACf,iBAGJoG,yBAA0B,CACxB1F,QAAS,CACP,cACA,eACA,cACA,YACA,iBACA,eACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,cACA,aAEFnG,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJqG,oBAAqB,CACnB3F,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,qBAEFwF,UAAW,GAEXnG,iBAAkB,CAChB,QAEFC,gBAAiB,CACf,SAGJsG,yBAA0B,CACxB5F,QAAS,CACP,cACA,eACA,cACA,YACA,UACA,eACA,iBACA,gBACA,eACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,GAEXnG,iBAAkB,CAChB,WAEFC,gBAAiB,CACf,YAGJuG,8BAA+B,CAC7BL,UAAW,CACT,cACA,UACA,mBAEFxF,QAAS,CACP,cACA,eACA,YACA,UACA,kBACA,kBAGJ8F,mBAAoB,CAClB9F,QAAS,CACP,cACA,eACA,cACA,WACA,YACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,2BACA,mCACA,yBACA,gCACA,iCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,YACA,0BAEFnG,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJyG,6BAA8B,CAC5B/F,QAAS,CACP,cACA,eACA,cACA,cACA,YACA,UACA,OACA,eACA,qBACA,WACA,UACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,eAEFnG,iBAAkB,CAChB,eAEFC,gBAAiB,CACf,gBAGJ0G,gCAAiC,CAC/BhG,QAAS,CACP,cACA,eACA,cACA,iBACA,iBACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,kBAEFnG,iBAAkB,CAChB,kBAEFC,gBAAiB,CACf,mBAGJ2G,gCAAiC,CAC/BjG,QAAS,CACP,cACA,eACA,cACA,iBACA,eACA,yBACA,uBACA,wCACA,6BACA,cACA,SACA,MACA,aACA,aACA,QACA,kBACA,cACA,iBACA,qBAEFwF,UAAW,CACT,iBAGJU,+BAAgC,CAC9BlG,QAAS,CACP,cACA,cACA,SACA,UACA,aACA,aACA,aACA,iBACA,SACA,SACA,SACA,iBACA,cACA,SACA,MACA,aACA,QACA,kBACA,2BACA,mCACA,cACA,iBACA,qBAEFwF,UAAW,CACT,UACA,iBACA,SACA,SACA,WAGJW,0BAA2B,CACzBX,UAAW,CACT,aACA,aAEFxF,QAAS,CACP,aACA,eACA,eACA,gBACA,cACA,YACA,eACA,cACA,oBACA,gBACA,mBACA,2BACA,mCACA,cACA,SACA,MACA,UAGJoG,sBAAuB,CACrBZ,UAAW,CACT,QAEFxF,QAAS,CACP,OACA,cACA,eACA,cACA,UACA,iBACA,eAGJqG,4BAA6B,CAC3BrG,QAAS,CACP,cACA,eACA,cACA,iBACA,cACA,SACA,MACA,QACA,UACA,cACA,iBACA,UACA,kBACA,qBAEFwF,UAAW,IAGbc,8BAA+B,CAC7Bd,UAAW,CACT,eAEFxF,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,sBAGJi0B,0BAA2B,CACzBzuB,UAAW,CACT,cAEFxF,QAAS,CACP,aACA,YACA,cACA,gBACA,aACA,eACA,YACA,OACA,SACA,cACA,SACA,QACA,MACA,aACA,cACA,UACA,iBACA,oBAGJwzF,6BAA8B,CAC5BhuF,UAAW,CACT,gBAEFxF,QAAS,CACP,OACA,0BACA,0BACA,8BACA,mCACA,mCACA,uCACA,+BACA,+BACA,uCACA,uCACA,uCACA,iDAGJyzF,4BAA6B,CAC3BjuF,UAAW,CACT,gBAEFxF,QAAS,CACP,gBACA,eACA,qBACA,YACA,cACA,iBACA,mBACA,uBACA,uBACA,gBAGJyiF,+BAAgC,CAC9BziF,QAAS,CACP,iBACA,cACA,SACA,cACA,UACA,MACA,iBACA,gBAEFwF,UAAW,CACT,kBAEFnG,iBAAkB,CAChB,kBAEFC,gBAAiB,CACf,mBAGJo0F,6BAA8B,CAC5BluF,UAAW,GACXxF,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,CACzBwG,2BAA4B,CAC1BxG,QAAS,CACP,cACA,eACA,cACA,UACA,kBACA,YACA,cACA,SACA,cACA,MACA,cACA,aACA,iBACA,QACA,qBAEFwF,UAAW,CACT,kBACA,YAGJiB,sBAAuB,CACrBzG,QAAS,CACP,cACA,eACA,cACA,SACA,UACA,aACA,aACA,aACA,kBACA,YACA,cACA,SACA,MACA,cACA,aACA,iBACA,QACA,qBAEFwF,UAAW,CACT,oBAGJkB,wBAAyB,CACvB1G,QAAS,CACP,cACA,eACA,cACA,kBACA,oBACA,gBACA,2BACA,cACA,SACA,MACA,cACA,oBACA,iBACA,QACA,cAEFwF,UAAW,CACT,kBACA,oBACA,gBACA,6BAGJmB,iBAAkB,CAChB3G,QAAS,CACP,cACA,eACA,cACA,YACA,UACA,YAEFwF,UAAW,CACT,YACA,cCrF0B,CAC9B,oCAAqC,CACnCA,UAAW,CACT,eACA,cACA,iBAEFxF,QAAS,CACP,eACA,cACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,cACA,iBACA,sBAGJ,qCAAsC,CACpCwF,UAAW,CACT,eACA,cACA,aACA,iBAEFxF,QAAS,CACP,eACA,cACA,aACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,gBAGJ,oCAAqC,CACnCwF,UAAW,CACT,eACA,cACA,iBAEFxF,QAAS,CACP,eACA,cACA,gBACA,cACA,SACA,MACA,aACA,QACA,kBACA,gBAGJ,wCAAyC,CACvCwF,UAAW,CACT,UACA,cACA,eACA,cACA,WACA,yBACA,gBAEFxF,QAAS,CACP,UACA,cACA,eACA,cACA,WACA,cACA,SACA,MACA,aACA,QACA,kBACA,yBACA,gCACA,iCACA,mBCvFiB,CACrB4G,oBAAqB,CACnBpB,UAAW,CACT,OACA,gBACA,cACA,eACA,eACA,gBACA,aACA,oBAEFxF,QAAS,CACP,OACA,gBACA,cACA,eACA,eACA,cACA,gBACA,aACA,qBAGJ6G,sBAAuB,CACrB7G,QAAS,CACP,eACA,gBACA,aACA,gBACA,qBACA,eACA,eACA,kBACA,gBACA,uBACA,qBACA,SACA,iBACA,eACA,aACA,iBAEFwF,UAAW,CACT,QACA,WAGJsB,uBAAwB,CACtB9G,QAAS,CACP,eACA,gBACA,eACA,gBACA,uBACA,uBACA,qBACA,iBACA,eACA,cACA,gBAEFwF,UAAW,CACT,QACA,eACA,gBACA,gBACA,qBACA,iBACA,eACA,iBAGJunE,qBAAsB,CACpB/sE,QAAS,CACP,gBACA,cACA,gBACA,qBACA,uBACA,wBACA,aACA,eACA,oBACA,eACA,wBACA,mBACA,YACA,WACA,mBACA,mBACA,sBACA,cACA,mBACA,uBACA,wBAEFwF,UAAW,CACT,aACA,eACA,4BCpGuB,CAC3BuB,kCAAmC,CACjCvB,UAAW,CACT,YAEFxF,QAAS,CACP,WACA,eACA,cACA,YACA,aACA,mBACA,cACA,aACA,WACA,aAGJgH,4BAA6B,CAC3BhH,QAAS,CACP,eACA,cACA,eACA,eACA,mBACA,aACA,WACA,WACA,YAEFwF,UAAW,CACT,aAGJyB,yBAA0B,CACxBzB,UAAW,CACT,SACA,YACA,cACA,aACA,eACA,oBAEFxF,QAAS,CACP,SACA,YACA,cACA,aACA,eACA,uBCjDa,CACjBkH,+BAAgC,CAC9BlH,QAAS,CACP,cACA,eACA,cACA,kBACA,WACA,cACA,SACA,MACA,aACA,kBACA,cACA,iBACA,oBACA,2BACA,mCACA,SAEFwF,UAAW,CACT,oBAGJ2B,6BAA8B,CAC5BnH,QAAS,CACP,cACA,eACA,cACA,YACA,YACA,YACA,WACA,cACA,SACA,MACA,aACA,kBACA,cACA,iBACA,oBACA,2BACA,mCACA,SAEFwF,UAAW,CACT,YACA,YACA,cAGJ4B,gCAAiC,CAC/BpH,QAAS,CACP,cACA,eACA,cACA,cACA,kBACA,WACA,cACA,SACA,MACA,aACA,kBACA,cACA,iBACA,oBACA,2BACA,mCACA,SAEFwF,UAAW,CACT,kBCxEiB,CACrB6B,kCAAmC,CACjCrH,QAAS,CACP,cACA,eACA,cACA,qBACA,eACA,gBACA,gBACA,cACA,SACA,MACA,aACA,mCACA,QACA,cACA,iBACA,oBACA,kBAEFwF,UAAW,CACT,eACA,kBAGJ8B,sCAAuC,CACrCtH,QAAS,CACP,cACA,eACA,cACA,qBACA,eACA,gBACA,cACA,SACA,MACA,aACA,aACA,QACA,mCACA,kBAEFwF,UAAW,CACT,qBACA,iBAGJ+B,kCAAmC,CACjCvH,QAAS,CACP,cACA,eACA,cACA,oBACA,QACA,cACA,SACA,MACA,aACA,aACA,QACA,cACA,iBACA,oBACA,mCACA,kBAEFwF,UAAW,IAGbgC,oCAAqC,CACnChC,UAAW,CACT,cACA,eACA,eAEFxF,QAAS,CACP,cACA,eACA,cACA,oBACA,QACA,qBACA,eACA,gBACA,cACA,SACA,MACA,aACA,mCACA,QACA,cACA,iBACA,oBACA,mBAGJyH,wBAAyB,CACvBjC,UAAW,CACT,cACA,eACA,eACA,gCACA,kBAEFxF,QAAS,CACP,cACA,eACA,qBACA,eACA,gBACA,4BACA,2BACA,kCAGJ0H,qCAAsC,CACpClC,UAAW,CACT,cACA,eACA,cACA,kBACA,kBAEFxF,QAAS,CACP,cACA,eACA,cACA,qBACA,oBACA,kBACA,oBCnImB,CACvB2H,wBAAyB,CACvBnC,UAAW,CACT,WACA,UAEFxF,QAAS,CACP,cACA,eACA,cACA,iBACA,WACA,SACA,cACA,2BACA,mCACA,SACA,cACA,UAGJ4H,uCAAwC,CACtCpC,UAAW,CACT,cACA,cACA,eACA,mBAEFxF,QAAS,CACP,cACA,eACA,cACA,cACA,eACA,kBACA,iBACA,cACA,SACA,cACA,QACA,kBACA,2BACA,qCAGJsG,8BAA+B,CAC7Bd,UAAW,GACXxF,QAAS,CACP,cACA,UACA,QACA,YACA,OACA,cACA,SACA,MACA,aACA,QACA,cACA,2BACA,mCACA,mBAGJ6H,4BAA6B,CAC3BrC,UAAW,GACXxF,QAAS,CACP,cACA,UACA,QACA,YACA,OACA,eACA,uBACA,cACA,SACA,MACA,aACA,QACA,cACA,2BACA,mCACA,mBAGJ2zF,uBAAwB,CACtBnuF,UAAW,GACXxF,QAAS,CACP,cACA,YACA,gBACA,eACA,aACA,cACA,YACA,QACA,cACA,QACA,aACA,aACA,wBACA,wBACA,wBACA,sBACA,0BCxGgB,CACpB4zF,mBAAoB,CAClB5zF,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFwF,UAAW,CACT,gBAGJquF,oBAAqB,CACnB7zF,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFwF,UAAW,CACT,gBAGJsuF,mBAAoB,CAClB9zF,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFwF,UAAW,CACT,gBAGJuuF,mBAAoB,CAClB/zF,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFwF,UAAW,CACT,gBAGJwuF,cAAe,CACbh0F,QAAS,CACP,YACA,cACA,SACA,MACA,2BACA,oCAEFwF,UAAW,CACT,kBC/De,CACnByuF,gCAAiC,CAC/Bj0F,QAAS,CACP,cACA,eACA,cACA,kBACA,oBACA,YACA,UACA,OACA,QACA,QACA,aACA,cACA,SACA,MACA,aACA,QACA,WAEFwF,UAAW,CACT,eAEFnG,iBAAkB,GAElBC,gBAAiB,IAGnB40F,4BAA6B,CAC3Bl0F,QAAS,CACP,cACA,eACA,cACA,aACA,gBACA,kBACA,oBACA,YACA,UACA,OACA,QACA,QACA,aACA,cACA,SACA,MACA,aACA,QACA,WAEFwF,UAAW,CACT,eAEFnG,iBAAkB,GAElBC,gBAAiB,MCxDC,CACpB60F,sBAAuB,CACrB3uF,UAAW,GACXxF,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,CACpBo0F,uBAAwB,CACtB5uF,UAAW,GACXxF,QAAS,CACP,cACA,YACA,eACA,aACA,UACA,eACA,YACA,cACA,cACA,SACA,MACA,QACA,aACA,wBACA,wBACA,wBACA,sBACA,0BCrB6B,CACjCq0F,qCAAsC,CACpC7uF,UAAW,GACXxF,QAAS,CACP,aACA,aACA,aACA,UACA,kBACA,gBACA,qBACA,cACA,YACA,cACA,YACA,uBACA,qBACA,wBACA,sBACA,mBACA,mBAGJs0F,uCAAwC,CACtC9uF,UAAW,GACXxF,QAAS,CACP,cACA,aACA,aACA,aACA,UACA,qBACA,2BACA,wBC/BO8H,EAAkB,CAC7Br4B,eAAgB,CACd2tB,UAAW,WAAF,OAAQ,CAAI,EACrBC,QAAS,CACP,iBACA,oBACA,uBACA,qBACA,0BACA,aACA,0BACA,+BAGJ0K,IAAK,CACH3K,UAAW,SAAAna,GAAW,OAAIA,EAAY+kB,oBAAoB,EAC1D3K,QAAS,CACP,WACA,eACA,eACA,iCACA,sCACA,wCACA,gBAGJ4K,aAAc,CACZ7K,UAAW,WAAF,OAAQ,CAAI,EACrBC,QAAS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","sources":["../../../node_modules/@bingads-webui-campaign/report-create/src/config/index.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/shared/formatter/get-report-options.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/shared/formatter/map-filter.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/shared/formatter/map.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/shared/formatter/format.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/run-download-save/run.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/run-download-save/update.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/run-download-save/util.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/run-download-save/index.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/shared/grid-item.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/shared/grid.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/warning.js","../../../node_modules/@bingads-webui-campaign/report-create/src/config/time-ranges/default-time-ranges.js","../../../node_modules/@bingads-webui-campaign/report-create/src/config/time-ranges/data-persistance-enum.js","../../../node_modules/@bingads-webui-campaign/report-create/src/config/time-ranges/get-minimum-supported-day.js","../../../node_modules/@bingads-webui-campaign/report-create/src/config/time-ranges/time-grain-range-options.js","../../../node_modules/@bingads-webui-campaign/report-create/src/config/time-ranges/util.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/root/title.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/root/description.js","../../../node_modules/@bingads-webui-campaign/report-create/src/components/shared/generic-selector.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/root/index.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/general/account-campaign-selector/account-campaign-selector.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/general/time-grain-selector.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/general/time-range/time-range-selector.js","../../../node_modules/@bingads-webui-campaign/report-create/src/config/time-ranges/time-ranges.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/general/time-range/time-range-style.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/general/account-campaign-selector/scope-filter-level.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/general/time-range/time-range-helper.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/general/index.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/general/account-campaign-selector/validator.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/column/index.js","../../../node_modules/@bingads-webui-campaign/report-create/src/style/input-title-style.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/settings/frequency.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/settings/consts.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/settings/start-end-date.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/settings/email-text-area.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/settings/report-schedule.js","../../../node_modules/@bingads-webui-campaign/report-create/src/style/radio-checkbox-style.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/settings/index.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/filter/consts.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/filter/filter-schema-processor.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/filter/filter-old.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/filter/filter-util.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/filter/filter-new.js","../../../node_modules/@bingads-webui-campaign/report-create/src/sections/filter/index.js","../../../node_modules/@bingads-webui-campaign/report-create/src/pilot.js","../../../node_modules/@bingads-webui-campaign/report-create/src/style/index.js","../../../node_modules/@bingads-webui-campaign/report-create/src/create-report.js","../../../node_modules/@bingads-webui-campaign/report-create/src/index.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/elevated-columns/performance.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/elevated-columns/index.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/elevated-columns/ad-extension.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/elevated-columns/advanced-insights.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/elevated-columns/billing.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/elevated-columns/change-history.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/elevated-columns/dsa.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/elevated-columns/product.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/elevated-columns/targeting.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/piloted-columns/restriction-sets.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/piloted-columns/default-sets.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/piloted-columns/index.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/help-link-ids.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/missing-mandatory-column-error.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/filter-processor.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/column-processor.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/schema-processor.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/shared-field-processor.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/columns/get-aggregation-restrictions.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/overrides/time-range-override.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/report-schema.js","../../../node_modules/@bingads-webui-campaign/report-schema/src/deprecated-reports.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/legacy-i18n/i18n/keys.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/legacy-i18n/i18n/column-chooser.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/legacy-i18n/i18n/filter.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/legacy-i18n/i18n/cron-format.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/legacy-i18n/i18n/date-range.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/legacy-i18n/i18n/inline-download.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/legacy-i18n/i18n/inline-edit.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/legacy-i18n/legacy-i18n.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/legacy-i18n/with-legacy-i18n.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/identity-provider/identity-provider.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/identity-provider/with-identity-context.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/js-data-light/js-data-odata-adaptor.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/js-data-light/index.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/js-data-light/js-data-odata.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/mode-updater/modes.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/odata-abstraction/js-data-light-with-scope-path.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/odata-abstraction/get-scope-path.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/odata-abstraction/history-queries.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/navigator/index.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/util/model-help/custom-reports.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/util/model-help/history-reports.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/logger/index.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/i18n-map/report-type.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/i18n-map/file-format.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/i18n-map/get-deprecated-message.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/i18n-map/error-messages.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/i18n-map/index.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/i18n-map/date-range-preset.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/i18n-map/report-aggregation.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/i18n-map/column-name.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/i18n-map/filter-enum.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/util/date.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/util/index.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/general/keydown.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/util/get-customer-id.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/util/is-report-running.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/util/should-refresh-poller.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/util/get-merge-filter.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/odata-abstraction/custom-report-queries.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/odata-abstraction/details-queries.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/odata-abstraction/create-report-queries.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/general/constants.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/general/help.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/general/create-error-message.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/permission-provider/permission-provider.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/permission-provider/with-permission-context.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/alert-center/index.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/general/error-displayer.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/general/default-error-view.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-repository/report-repository.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-repository/with-repository-context.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-list-data-factory.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/reports.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/performance.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/extensions.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/product-ads.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/change-history.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/targeting.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/billing-and-budget.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/advanced-insights.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-categories/dynamic-search.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list/report-list.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/report-list-service.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/report-list-service/with-report-list-context.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/services-endpoints/index.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/mode-updater/mode-updater.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/index.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/reporting-contexts/legacy-deps/index.js","../../../node_modules/@bingads-webui-campaign/report-shared/src/theme/index.js","../../../node_modules/@bingads-webui-campaign/report-vnext-theme/src/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/constants.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/utils.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/styles/billing-document-cell.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/styles/amount-cell.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/styles/change-type-cell.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/styles/amount-total-cell.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/styles/insertion-order-selector.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/styles/insertion-order-details.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/controls/billing-document-cell.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/controls/amount-cell.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/controls/change-type-cell.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/controls/amount-total-cell.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/hooks/use-insertion-order-data.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/controls/insertion-order-selector-callout.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/controls/insertion-order-selector.js","../../../node_modules/@bingads-webui-campaign/reports-v4-component/src/controls/insertion-order-details.js","../../../node_modules/@bingads-webui-campaign/reports-v4-filter-view-manager/src/filter-view-manager.js","../../../node_modules/@bingads-webui-campaign/reports-v4-footer/src/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/toolbar/schema.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/toolbar/filter-config.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/toolbar/toolbar-config.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/actions/shared.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/actions/inline-edit/name.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/columns/report-name-column.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/columns/report-base-column.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/actions/inline-edit/frequency.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/columns/scheduled-frequency-column.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/actions/inline-edit/date-range.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/columns/date-range-column.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/columns/createde-by-column.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/columns/shared-column.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/columns/last-accessed-column.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/columns/created-on-column.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/columns/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/helper/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/grid.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/actions/bulk-edit.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/style/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-my-reports/src/my-reports.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/account-selector-helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/row-helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/insertion-order-helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/grid-helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/style/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/TimeTravel/index.ts","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/converters/convert-date-range.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/converters/convert-filter.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/converters/convert-conditional-formats.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/converters/convert-old-task-item.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/converters/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/converters/convert-report-options.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/default-time-ranges.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/get-today.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/data-persistance-enum.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/get-minimum-supported-day.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/time-grain-range-options.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/time-ranges.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/util.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker-utils/update-time-range.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker-style.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/date-picker/date-picker.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/default-sorting-column-helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/converters/default-value.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/default-filter-helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/error-view.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/insertion-order-column-helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/use-warnings.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/name-editor/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/navigate-dialog/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/toolbar-config.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/filter/strings.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/filter/filter-schema-processor.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/filter/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/account-selector/styles.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/account-selector/multiple-account-selector.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/account-selector/user-scope-input.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/account-selector/account-selector-callout.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/account-selector/account-selector-button.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/report-grid.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/report-grid-modal/report-grid-modal-style.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/report-grid-modal/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/summary-bar/cronConverter.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/summary-bar/trivia.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/is-report-shared.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/summary-bar/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/timezone-selector/timezone-selector.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/warning.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/side-panel-report-grid-modal/report-grid-modal-style.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/side-panel-report-grid-modal/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/search-category-helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/preview-page-for-common.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/preview-page-for-user-scope.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/reduce-scope/helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/reduce-scope/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/utils.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/preview-page-for-legacy.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/helpers/dynamic-filter-options-helper.js","../../../node_modules/@bingads-webui-campaign/reports-v4-report-preview/src/report-preview/converters/convert-collapsed-rows.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/src/styles.js","../../../node_modules/@bingads-webui-campaign/reports-v4-email-picker/src/styles.js","../../../node_modules/@bingads-webui-campaign/reports-v4-email-picker/src/spin.js","../../../node_modules/@bingads-webui-campaign/reports-v4-email-picker/src/editor.js","../../../node_modules/@bingads-webui-campaign/reports-v4-email-picker/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/src/scheduler/styles/input-title-style.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/src/scheduler/frequency.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/src/scheduler/consts.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/src/scheduler/start-end-date.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/src/scheduler/FileFormatSelector.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/src/scheduler/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/src/frequency-edit-panel.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/src/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schedule-frequency-icon-editor/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/restriction-column-sets.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/performance.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/ad-extension.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/advanced-insights.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/billing.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/change-history.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/dsa.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/product.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/targeting.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/labels.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/hotel.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/app.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/assets.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/elevated-columns/marketplace-insights.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/piloted-columns/restriction-sets.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/piloted-columns/default-sets.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/piloted-columns/index.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/help-link-ids.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/missing-mandatory-column-error.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/filter-processor.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/column-processor.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/customize-option.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/schema-processor.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/shared-field-processor.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/columns/get-aggregation-restrictions.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/polyFillReportSchema.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/overrides/time-range-override.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/report-schema.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/unified-report-schema.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/deprecated-reports.js","../../../node_modules/@bingads-webui-campaign/reports-v4-schema/src/old-schema-converter.js","../../../node_modules/@bingads-webui-campaign/reports-v4-strings/src/date-range-preset.js","../../../node_modules/@bingads-webui-campaign/reports-v4-strings/src/report-type.js","../../../node_modules/@bingads-webui-campaign/reports-v4-summary-bar/src/styles.js","../../../node_modules/@bingads-webui-campaign/reports-v4-summary-bar/src/summary-bar.js","../../../node_modules/@bingads-webui-campaign/reports-v4-summary-bar/src/divider.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/index.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/show-rejection-reasons.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/assets-grid.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/asset.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/asset-type.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/status.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/pinned-field.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/asset-source.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/asset-mma.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/asset-id.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/policy-status.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/index.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/grid-config.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/show-ad-strength.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/plugins.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/assets-gridview-factory.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/error-handler.js","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/image.pug","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/policy-status.pug","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/status-header.pug","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/status.pug","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/text.pug","../../../node_modules/@bingads-webui-campaign/responsive-search-ad-assets-grid/src/columns/video.pug","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/types.ts","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/ItemRow.tsx","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/SelectedItemRow.tsx","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/utils/text.ts","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/utils/style.ts","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/SelectedColumns.tsx","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/DragLayerPreview.tsx","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/AvailableColumns.tsx","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/index.tsx","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/src/utils/exclusionRuleHelper.ts","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/theme.ts","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/helper.ts","../../../node_modules/@bingads-webui-campaign/reports-v4-column-chooser/index.tsx"],"sourcesContent":["import _ from 'underscore';\r\nimport { i18nMap } from '@bingads-webui-campaign/report-shared';\r\n\r\nexport const sectionType = {\r\n GENERAL: 'general', COLUMN: 'column', FILTER: 'filter', SETTING: 'setting', ROOT: 'root',\r\n};\r\n\r\nexport const renderTypes = {\r\n Table: _TL_('Table'),\r\n Linechart: _TL_('Line chart'),\r\n Barchart: _TL_('Bar chart'),\r\n};\r\n\r\nexport const timeGrains = i18nMap.ReportAggregation;\r\n\r\nexport const fileFormats = i18nMap.FileFormatForReporting;\r\n\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 const partialConversionsColumns = {\r\n AllConversions: 'AllConversionsQualified',\r\n Conversions: 'ConversionsQualified',\r\n ConversionRate: 'ConversionRateQualified',\r\n AllConversionRate: 'AllConversionRateQualified',\r\n LowQualityConversions: 'LowQualityConversionsQualified',\r\n CostPerConversion: 'CostPerConversionQualified',\r\n ViewThroughCostPerConversion: 'ViewThroughCostPerConversionQualified',\r\n ViewThroughConversionRate: 'ViewThroughConversionRateQualified',\r\n AllCostPerConversion: 'AllCostPerConversionQualified',\r\n};\r\n\r\nexport function getPartialConversionsQualifiedColumns(columns) {\r\n const newColumns = columns.map(column => partialConversionsColumns[column] || column);\r\n return newColumns;\r\n}\r\n","export const getReportOptions = (includeTotalRow) => {\r\n let options = 'IncludeColumnHeaders,IncludeReportFooter,IncludeReportHeader';\r\n if (includeTotalRow) {\r\n options += ',IncludeTotalRows';\r\n }\r\n return options;\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport { trim } from 'underscore.string';\r\nimport { Shared as sharedSchema } from '@bingads-webui/report-ui-interface';\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 = _.object(_.values(operatorToApi), _.keys(operatorToApi));\r\n\r\nfunction batchToString(arr) {\r\n return _.map(arr, x => String(x));\r\n}\r\n\r\nfunction toApi(predicates, filterSchema = sharedSchema.filters, valueHandledByCaller = false) {\r\n const filters = _.map(predicates, (predicate) => {\r\n const propertyName = _.keys(predicate)[0];\r\n const propertySchema = filterSchema[propertyName];\r\n const propertyValueObject = predicate[propertyName];\r\n const operatorUi = _.keys(propertyValueObject)[0];\r\n const propertyValueUi = propertyValueObject[operatorUi];\r\n\r\n let operatorApi;\r\n let propertyValuesApi;\r\n\r\n if (valueHandledByCaller) {\r\n operatorApi = operatorToApi[operatorUi];\r\n propertyValuesApi = propertyValueUi;\r\n } else if (propertySchema.enum) {\r\n propertyValuesApi = [...propertyValueUi];\r\n operatorApi = 'Equals';\r\n } else if (propertySchema.type === 'string') {\r\n propertyValuesApi = propertyValueUi.split(',').map(x => trim(x));\r\n operatorApi = 'Equals';\r\n } else if (propertySchema.type === 'integer') {\r\n propertyValuesApi = [propertyValueUi];\r\n operatorApi = operatorToApi[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: operatorApi,\r\n Values: valueHandledByCaller ? propertyValuesApi : batchToString(propertyValuesApi),\r\n },\r\n ],\r\n },\r\n };\r\n\r\n return result;\r\n });\r\n\r\n return filters;\r\n}\r\n\r\nfunction fromApi(Filters, filterSchema = sharedSchema.filters) {\r\n const predicates = _.map(Filters, ({\r\n Filter: {\r\n Expressions: [\r\n Expression,\r\n ],\r\n },\r\n }) => {\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\r\n let propertyValueUi;\r\n let operatorUi;\r\n\r\n if (propertySchema.enum) {\r\n propertyValueUi = [...propertyValuesApi];\r\n operatorUi = '$in';\r\n } else if (propertySchema.type === 'string') {\r\n propertyValueUi = propertyValuesApi.join(',');\r\n operatorUi = '$eq';\r\n } else if (propertySchema.type === 'integer') {\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 return predicates;\r\n}\r\n\r\nexport const convertPredicatesToFilters = toApi;\r\nexport const convertFiltersToPredicates = fromApi;\r\n\r\nexport default {\r\n toApi,\r\n fromApi,\r\n};\r\n","import _ from 'underscore';\r\nimport { Shared as sharedSchema } from '@bingads-webui/report-ui-interface-preview';\r\nimport { sectionType } from '../../../config';\r\nimport { getReportOptions } from './get-report-options';\r\nimport filterConvertor from './map-filter';\r\n\r\nconst {\r\n GENERAL, COLUMN, FILTER, SETTING, ROOT,\r\n} = sectionType;\r\n\r\nconst dataToApi = {\r\n [ROOT]: {\r\n name: { key: 'Name' },\r\n type: { key: 'ReportType' },\r\n schemaName: { key: 'SchemaName' },\r\n renderType: { key: 'RenderType' },\r\n },\r\n\r\n [GENERAL]: {\r\n timeGrain: { key: 'ReportAggregation' },\r\n timeRange: {\r\n key: 'ReportTime',\r\n to: val => (val.key === 'Custom' ? { StartDate: val.start, EndDate: val.end } : { DateRangePreset: val.key }),\r\n from: val => (!val.DateRangePreset ? { key: 'Custom', start: val.StartDate, end: val.EndDate } : { key: val.DateRangePreset }),\r\n },\r\n timeZone: { key: 'ReportTimeZone' },\r\n format: {\r\n key: 'Format',\r\n to: val => val,\r\n from: (val) => {\r\n switch (val) {\r\n case 'Csv':\r\n return 'Csvzip';\r\n case 'Tsv':\r\n return 'TsvZip';\r\n default:\r\n return val;\r\n }\r\n },\r\n },\r\n accountCampaignSelector: {\r\n keys: ['AccountIds', 'CampaignReportScopes', 'CustomerScopes'],\r\n },\r\n userScopes: {\r\n key: 'UserScopes',\r\n to: val => (!_.isNull(val) ? [val] : []),\r\n from: val => val[0],\r\n },\r\n },\r\n\r\n [COLUMN]: {\r\n selected: { key: 'ReportColumns' },\r\n },\r\n\r\n [FILTER]: {\r\n predicates: {\r\n key: 'Filters',\r\n to: filterConvertor.toApi,\r\n from: filterConvertor.fromApi,\r\n },\r\n },\r\n\r\n [SETTING]: {\r\n includeTotalRow: {\r\n key: 'ReportOptions',\r\n to: val => getReportOptions(val),\r\n from: val => val.indexOf('IncludeTotalRow') !== -1,\r\n },\r\n EmailRecipients: {\r\n key: 'EmailRecipients',\r\n to: val => (val ? _.compact(_.map(val.split(/[,|;]/), v => v.trim())) : []),\r\n from: val => val.join(','),\r\n },\r\n scheduleThisReport: {\r\n key: 'Cron',\r\n from: val => val !== '',\r\n },\r\n type: {\r\n key: 'Type',\r\n },\r\n AttachFileToEmail: { key: 'AttachFileToEmail' },\r\n Cron: { key: 'Cron' },\r\n StartDate: { key: 'StartTime' },\r\n EndDate: { key: 'EndTime' },\r\n },\r\n\r\n};\r\n\r\nexport const getApiObject = (data, options = { preview: false }) => {\r\n const output = {};\r\n _.each(dataToApi, (sectionNode, section) => {\r\n _.each(sectionNode, (node, property) => {\r\n if (_.has(data[section], property)) {\r\n let val = data[section][property];\r\n val = node.to ? node.to(val, options.preview ? sharedSchema.filters : undefined) : val;\r\n\r\n if (node.key) {\r\n if (_.isObject(output[node.key])) {\r\n _.extend(output[node.key], val);\r\n } else {\r\n output[node.key] = val;\r\n }\r\n } else if (node.keys) {\r\n _.each(node.keys, (nodeKey) => {\r\n output[nodeKey] = val[nodeKey];\r\n });\r\n } else {\r\n throw new Error('One of node.key or node.keys must be specified!');\r\n }\r\n }\r\n });\r\n });\r\n return output;\r\n};\r\n\r\nexport const getDataObject = (apiObject, options = { preview: false }) => {\r\n const output = {};\r\n _.each(dataToApi, (sectionNode, section) => {\r\n _.each(sectionNode, (node, property) => {\r\n if (node.key) {\r\n if (_.has(apiObject, node.key)) {\r\n if (!_.isObject(output[section])) {\r\n output[section] = {};\r\n }\r\n const val = apiObject[node.key];\r\n output[section][property] = node.from ? node.from(val, options.preview ? sharedSchema.filters : undefined) : val;\r\n }\r\n } else if (node.keys) {\r\n _.each(node.keys, (nodeKey) => {\r\n if (_.has(apiObject, nodeKey)) {\r\n if (!_.isObject(output[section])) {\r\n output[section] = {};\r\n }\r\n if (!_.has(output[section], property)) {\r\n output[section][property] = {};\r\n }\r\n output[section][property][nodeKey] = apiObject[nodeKey];\r\n }\r\n });\r\n } else {\r\n throw new Error('One of node.key or node.keys must be specified!');\r\n }\r\n });\r\n });\r\n return output;\r\n};\r\n\r\n","import _ from 'underscore';\r\nimport { toLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { getApiObject } from './map';\r\nimport { sectionType } from '../../../config';\r\n\r\nconst {\r\n GENERAL,\r\n} = sectionType;\r\n\r\nexport function format(data, identityDetails) {\r\n const {\r\n user, customer, lcid,\r\n } = identityDetails;\r\n\r\n const defaultData = {\r\n '@odata.type': '#Model.ReportDataTaskItem',\r\n ClientApplicationType: 'ReportingUI',\r\n UserId: user.Id,\r\n CustomerId: customer.Id,\r\n LCID: lcid,\r\n MaxRowCount: 0, // 0<= means don't shim mt response\r\n IsDVS: false,\r\n\r\n // General - Account-Campaign-Selector\r\n AccountIds: [],\r\n UserScopes: [],\r\n CustomerScopes: [],\r\n CampaignReportScopes: null,\r\n AdGroupReportScopes: null,\r\n\r\n // Filters\r\n Filters: null,\r\n\r\n // Setting\r\n AttachFileToEmail: false,\r\n EmailRecipients: [],\r\n // if cron not def it must be empty string\r\n Cron: '',\r\n StartTime: null,\r\n EndTime: null,\r\n TimeZoneId: toLegacyTimeZone(data[GENERAL].timeZone),\r\n };\r\n\r\n const formattedData = _.defaults(getApiObject(data), defaultData);\r\n\r\n const omitible = [];\r\n _.each(formattedData, (val, key) => {\r\n if (_.isNull(val)) {\r\n omitible.push(key);\r\n }\r\n });\r\n return _.omit(formattedData, omitible);\r\n}\r\n","import _ from 'underscore';\r\nimport { format } from '../shared/formatter/format';\r\n\r\nexport const getRunPayload = (data, identityDetails, onFailedValidation) => {\r\n let valid = true;\r\n _.each(data, (sectionData, section) => {\r\n if (_.has(sectionData, 'isValid') && sectionData.isValid !== true) {\r\n valid = false;\r\n onFailedValidation(section);\r\n }\r\n });\r\n if (!valid) { return false; }\r\n\r\n const formattedPackage = format(data, identityDetails);\r\n return { ReportData: formattedPackage };\r\n};\r\n","import _ from 'underscore';\r\nimport { format } from '../shared/formatter/format';\r\n\r\nexport const getUpdatePayload = (data, identityDetails, onFailedValidation) => {\r\n let valid = true;\r\n _.each(data, (sectionData, section) => {\r\n if (_.has(sectionData, 'isValid') && sectionData.isValid !== true) {\r\n valid = false;\r\n onFailedValidation(section);\r\n }\r\n });\r\n if (!valid) { return false; }\r\n\r\n const formattedPackage = format(data, identityDetails);\r\n return formattedPackage;\r\n};\r\n","import { modeEnum } from '@bingads-webui-campaign/report-shared';\r\nimport { sectionType } from '../../config';\r\n\r\nconst {\r\n SETTING,\r\n} = sectionType;\r\n\r\nexport const getReportType = data => data[SETTING].type;\r\n\r\n\r\nexport const getOdataOptions = reportType =>\r\n (reportType === 'ReportUITemplate' ?\r\n { mode: modeEnum.PRIVATE } :\r\n { mode: modeEnum.SHARED });\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 { noop } from 'underscore';\r\nimport { Button } from '@bingads-webui-react/primitive';\r\nimport { navigator, withRepositoryContext } from '@bingads-webui-campaign/report-shared';\r\nimport { getRunPayload } from './run';\r\nimport { getUpdatePayload } from './update';\r\nimport { getReportType, getOdataOptions } from './util';\r\n\r\nclass ActionCenter extends React.Component {\r\n runReport = (data, identityDetails, onFailedValidation, download = false) => {\r\n const { createReport, queueDownload } = this.props.repository;\r\n const payload = getRunPayload(data, identityDetails, onFailedValidation);\r\n if (!payload) { return; }\r\n const reportType = getReportType(data);\r\n\r\n this.props.setBlocker(true);\r\n createReport(payload, getOdataOptions(reportType))\r\n .then((response) => {\r\n const executionId = response.TaskItemExecutions[0].Id;\r\n navigator.goto(`/v2/pollreport/${executionId}`, { type: reportType });\r\n if (download) {\r\n queueDownload(executionId);\r\n }\r\n return response;\r\n })\r\n .catch(noop)\r\n .finally(() => {\r\n this.props.setBlocker(false);\r\n });\r\n }\r\n\r\n saveReport = (data, identityDetails, onFailedValidation) => {\r\n const { updateReport } = this.props.repository;\r\n const { updateId } = this.props;\r\n const payload = getUpdatePayload(data, identityDetails, onFailedValidation);\r\n if (!payload) { return; }\r\n\r\n updateReport(payload, updateId)\r\n .then((response) => {\r\n navigator.goto('/customreports', { carryForward: true });\r\n return response;\r\n })\r\n .catch(noop)\r\n .finally(() => {\r\n this.props.setBlocker(false);\r\n });\r\n }\r\n\r\n saveReportAndRun = (data, identityDetails, onFailedValidation, download = false) => {\r\n const { updateReportAndRun, queueDownload } = this.props.repository;\r\n const { updateId } = this.props;\r\n const payload = getUpdatePayload(data, identityDetails, onFailedValidation);\r\n if (!payload) { return; }\r\n\r\n this.props.setBlocker(true);\r\n updateReportAndRun(payload, updateId)\r\n .then((response) => {\r\n const executionId = response.TaskItemExecutions[0].Id;\r\n navigator.goto(`/v2/pollreport/${executionId}`, { carryForward: true });\r\n if (download) {\r\n queueDownload(executionId);\r\n }\r\n return response;\r\n })\r\n .catch(noop)\r\n .finally(() => {\r\n this.props.setBlocker(false);\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n updateId, i18n, identityDetails, data, onFailedValidation,\r\n } = this.props;\r\n\r\n if (updateId) {\r\n return (\r\n
\r\n this.saveReportAndRun(data, identityDetails, onFailedValidation)}\r\n >\r\n {i18n.getString(_TL_('Save and run'))}\r\n \r\n this.saveReport(data, identityDetails, onFailedValidation)}\r\n >\r\n {i18n.getString(_TL_('Save'))}\r\n \r\n this.saveReportAndRun(data, identityDetails, onFailedValidation, true)}\r\n >\r\n {i18n.getString(_TL_('Download'))}\r\n \r\n
\r\n );\r\n }\r\n\r\n\r\n return (\r\n
\r\n this.runReport(data, identityDetails, onFailedValidation)}\r\n >\r\n {i18n.getString(_TL_('Run'))}\r\n \r\n this.runReport(data, identityDetails, onFailedValidation, true)}\r\n >\r\n {i18n.getString(_TL_('Download'))}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst Wrapped = withRepositoryContext(ActionCenter);\r\nexport { Wrapped as ActionCenter };\r\n\r\nActionCenter.propTypes = {\r\n data: PropTypes.object.isRequired, // eslint-disable-line\r\n i18n: ReportingProps.i18n.isRequired,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n onFailedValidation: PropTypes.func.isRequired,\r\n repository: PropTypes.shape({\r\n createReport: PropTypes.func.isRequired,\r\n updateReport: PropTypes.func.isRequired,\r\n updateReportAndRun: PropTypes.func.isRequired,\r\n queueDownload: PropTypes.func.isRequired,\r\n }).isRequired,\r\n setBlocker: PropTypes.func.isRequired,\r\n updateId: ReportingProps.updateId,\r\n};\r\n\r\nActionCenter.defaultProps = {\r\n updateId: undefined,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\n\r\nconst getStyle = function (components, core) {\r\n const baseStyle = {\r\n textRight: { textAlign: 'right' },\r\n centerAlignTitle: {\r\n display: 'inline-block',\r\n verticalAlign: 'top',\r\n width: '200px',\r\n paddingRight: '12px',\r\n paddingTop: '5px',\r\n },\r\n content: {\r\n width: '360px',\r\n display: 'inline-block',\r\n },\r\n title:\r\n {\r\n fontFamily: 'Arial',\r\n fontWeight: 'bold',\r\n fontSize: '12px',\r\n color: '#666666',\r\n },\r\n row: {\r\n marginTop: '2px',\r\n marginBottom: '9px',\r\n },\r\n };\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n /* istanbul ignore next */\r\n return {\r\n ...baseStyle,\r\n centerAlignTitle: _.extend(baseStyle.centerAlignTitle, {\r\n paddingTop: '0px',\r\n display: 'block',\r\n }),\r\n textRight: _.extend(baseStyle.textRight, {\r\n textAlign: 'left',\r\n }),\r\n content: _.extend(baseStyle.content, {\r\n maxWidth: '465px',\r\n width: '100%',\r\n }),\r\n title: _.extend(baseStyle.title, {\r\n paddingTop: '0',\r\n paddingBottom: '7px',\r\n fontFamily: 'inherit',\r\n fontSize: '14px',\r\n color: `${core.palette.neutralPrimary}`,\r\n fontWeight: '500',\r\n '& .helpbutton': _.extend(helpbuttonStyle(core)['.helpbutton'], {\r\n color: `${core.palette.themePrimary}`,\r\n }),\r\n '& .helpbutton::before': helpbuttonStyle(core)['.helpbutton::before'],\r\n }),\r\n row: _.extend(baseStyle.row, {\r\n marginTop: '30px',\r\n marginBottom: '0',\r\n }),\r\n };\r\n};\r\n\r\n\r\nfunction GridItem({\r\n children, title, titleId, helpLinkId, classes, isGroup,\r\n}) {\r\n return (\r\n
\r\n \r\n
\r\n {title}\r\n {helpLinkId && }\r\n
\r\n
\r\n \r\n {children}\r\n \r\n );\r\n}\r\nconst Wrapped = withDefaultStyles(GridItem, getStyle);\r\nexport { Wrapped as GridItem };\r\n\r\nGridItem.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n title: PropTypes.string.isRequired,\r\n titleId: PropTypes.string,\r\n helpLinkId: PropTypes.string,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n isGroup: PropTypes.bool,\r\n};\r\nGridItem.defaultProps = {\r\n titleId: undefined,\r\n helpLinkId: undefined,\r\n isGroup: false,\r\n};\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport function Grid({ children }) {\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n}\r\nGrid.propTypes = {\r\n children: PropTypes.node.isRequired,\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","\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};\r\n\r\nexport const getDefaultTimeRange = (timeGrain, reportSchema) => (\r\n reportSchema.TimeRanges ?\r\n reportSchema.TimeRanges[timeGrain][0] :\r\n defaultTimeRange[timeGrain]);\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['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['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['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 '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 '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 '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};\r\n\r\nexport const getAllowedRanges = (timeGrain, reportSchema) => {\r\n const blackList = dataRetentionBlackList[reportSchema.DataRetention[timeGrain]][timeGrain];\r\n return reportSchema.TimeRanges ?\r\n reportSchema.TimeRanges[timeGrain] :\r\n _.difference(timeGrainRangeOptions[timeGrain], blackList);\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 React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\n\r\nconst titleMap = {\r\n true: _TL_('Update {{type}} report'),\r\n false: _TL_('Create {{type}} report'),\r\n};\r\n\r\nexport function Title(props) {\r\n const { i18n, type, isUpdateReport } = props;\r\n\r\n return (\r\n \r\n {i18n.getString(titleMap[isUpdateReport], { type })}\r\n \r\n );\r\n}\r\n\r\n\r\nTitle.propTypes = {\r\n type: PropTypes.string.isRequired,\r\n // eslint-disable-next-line react/no-typos\r\n i18n: ReportingProps.i18n.isRequired,\r\n isUpdateReport: PropTypes.bool.isRequired,\r\n};\r\n","import React from 'react';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\n\r\nexport function Description(props) {\r\n const { description, i18n } = props;\r\n\r\n if (_.isObject(description)) {\r\n return (\r\n \r\n
\r\n {i18n.getString(_TL_('What it shows: '))}{description.what}\r\n
\r\n
\r\n {i18n.getString(_TL_('Why run it: '))}{description.why}\r\n
\r\n {\r\n _.has(description, 'note') &&\r\n (\r\n
\r\n {i18n.getString(_TL_('Note: '))}{description.note}\r\n
\r\n )\r\n }\r\n\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n {description}\r\n
\r\n );\r\n}\r\n\r\nDescription.propTypes = {\r\n // eslint-disable-next-line react/no-typos\r\n i18n: ReportingProps.i18n.isRequired,\r\n // eslint-disable-next-line react/no-typos\r\n description: ReportingProps.reportDescription.isRequired,\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 _ from 'underscore';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\nimport { withValidation } from '@bingads-webui-react/validation';\r\n\r\n\r\nconst GenericSelector = React.memo(({\r\n value, onChange, i18n, options, id, disabled, ariaLabelledByID,\r\n}) => {\r\n const optionsJsx = _.keys(options).map(key =>\r\n (\r\n \r\n ));\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nGenericSelector.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 value: PropTypes.string.isRequired,\r\n disabled: PropTypes.bool,\r\n ariaLabelledByID: PropTypes.string,\r\n};\r\n\r\nGenericSelector.defaultProps = {\r\n disabled: false,\r\n ariaLabelledByID: '',\r\n};\r\n\r\nconst Wrapped = withValidation(GenericSelector);\r\nexport { Wrapped as GenericSelector };\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { Input, ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { withPermissionContext } from '@bingads-webui-campaign/report-shared';\r\nimport { Grid, GridItem } from '../../components';\r\nimport { Title } from './title';\r\nimport { Description } from './description';\r\nimport { GenericSelector } from '../../components/shared/generic-selector';\r\n\r\nclass RootSection extends Component {\r\n static validationSchema = {\r\n name: 'CreateReport - Root Section Schema',\r\n type: 'object',\r\n properties: {\r\n name: {\r\n type: 'string',\r\n // minLength: 2, -- not supported\r\n required: true,\r\n maxLength: 200,\r\n },\r\n renderType: {\r\n type: 'string',\r\n },\r\n },\r\n }\r\n\r\n onValidate = (result) => {\r\n const data = _.extend(result.data, { isValid: result.isValid });\r\n this.props.setData(data);\r\n }\r\n\r\n render() {\r\n const {\r\n getValidationItemProps, reportDefinition, i18n, data, classes, permissions, renderTypes,\r\n isUpdateReport,\r\n } = this.props;\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 permissions.IsReportingUIReportChartsEnabled &&\r\n _.keys(renderTypes).length > 1 && (\r\n \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\nRootSection.propTypes = {\r\n getValidationItemProps: PropTypes.func.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n reportDefinition: ReportingProps.reportDefinition.isRequired,\r\n data: PropTypes.object.isRequired, // eslint-disable-line\r\n setData: PropTypes.func.isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string.isRequired).isRequired,\r\n permissions: ReportingProps.permissions.isRequired,\r\n renderTypes: PropTypes.objectOf(PropTypes.string.isRequired).isRequired,\r\n isUpdateReport: PropTypes.bool.isRequired,\r\n};\r\n\r\nconst Wrapped = withPermissionContext(RootSection);\r\nexport { Wrapped as RootSection };\r\n","import _ from 'underscore';\r\nimport React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { AdapterFactory, withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withIdentityContext, withPermissionContext, withServicesEndpointsConsumer } from '@bingads-webui-campaign/report-shared';\r\nimport { AccountCampaignSelector as RawSelector } from '@bingads-webui-campaign/account-campaign-selector';\r\nimport { ScopeFilterLevel, getScopeFilterLevel } from '../../../config';\r\n\r\nclass AccountCampaignSelector extends Component {\r\n shouldComponentUpdate() {\r\n // Fully uncontrolled component\r\n return false;\r\n }\r\n\r\n render() {\r\n const {\r\n permissions: {\r\n IsReportingUINewDesignEnabled,\r\n IsReportingUIPhaseNext,\r\n },\r\n servicesEndpoints: {\r\n CampaignAPI: odataURI,\r\n ClientCenterUIAPI: ccBaseUrl,\r\n Token: ccToken,\r\n },\r\n identityDetails: {\r\n customer: {\r\n Id: customerId,\r\n },\r\n user: {\r\n Id: userId,\r\n },\r\n account: {\r\n Id: accountId,\r\n } = {},\r\n },\r\n i18n,\r\n value,\r\n onChange,\r\n classes,\r\n reportSchema,\r\n isInternalUser,\r\n finishedLoading,\r\n } = this.props;\r\n\r\n const isCreateSimilar = !_.isEmpty(value);\r\n const defaultSelected = _.isEmpty(value) ? undefined : value;\r\n const scopeFilterLevel = getScopeFilterLevel(reportSchema.ScopeFilterLevel);\r\n\r\n if ((scopeFilterLevel === ScopeFilterLevel.Account) &&\r\n IsReportingUIPhaseNext && accountId) {\r\n return (\r\n
\r\n {i18n.getString(_TL_('Current account'))}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nAccountCampaignSelector.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n value: PropTypes.object.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n permissions: ReportingProps.permissions.isRequired,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n servicesEndpoints: ReportingProps.servicesEndpoints.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n isInternalUser: PropTypes.bool.isRequired,\r\n finishedLoading: PropTypes.func.isRequired,\r\n};\r\n\r\nconst hocs = [\r\n withIdentityContext,\r\n withPermissionContext,\r\n withServicesEndpointsConsumer,\r\n withI18nConsumer,\r\n withError,\r\n _.partial(withValidation, _, AdapterFactory({})),\r\n];\r\n\r\nconst Wrapped = _.compose(...hocs)(AccountCampaignSelector);\r\n\r\nexport { Wrapped as AccountCampaignSelector };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { Select } from '@bingads-webui-react/primitive';\r\nimport { withValidation } from '@bingads-webui-react/validation';\r\nimport { timeGrains } from '../../config';\r\n\r\nconst TimeGrainSelector = React.memo(({\r\n value, onChange, i18n,\r\n reportSchema: {\r\n ReportAggregation:\r\n { enum: schemaTimeGrains },\r\n },\r\n renderType,\r\n ariaLabelledBy,\r\n}) => {\r\n const id = 'timeGrain';\r\n let allowedTimeGrains = _.intersection(_.keys(timeGrains), schemaTimeGrains);\r\n\r\n // Linechart doesn't allow 'Summary' as an option\r\n if (renderType === 'Linechart') {\r\n allowedTimeGrains = _.without(allowedTimeGrains, 'Summary');\r\n }\r\n\r\n const options = _.map(allowedTimeGrains).map(key =>\r\n (\r\n \r\n ));\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nTimeGrainSelector.propTypes = {\r\n value: PropTypes.string.isRequired,\r\n onChange: PropTypes.func.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n renderType: PropTypes.string.isRequired,\r\n ariaLabelledBy: PropTypes.string,\r\n};\r\n\r\nTimeGrainSelector.defaultProps = {\r\n ariaLabelledBy: undefined,\r\n};\r\n\r\nconst Wrapped = withValidation(TimeGrainSelector);\r\nexport { Wrapped as TimeGrainSelector };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { toIANATimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { ComparedDateRangePicker } from '@bingads-webui-react/compared-date-range-picker';\r\nimport { AdapterFactory, withValidation } from '@bingads-webui-react/validation';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withIdentityContext } from '@bingads-webui-campaign/report-shared';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { getMinimumSupportedDay,\r\n getCivilDateFromString,\r\n getMinimumSupportedWarning,\r\n getFilteredTimeRanges,\r\n isCivilDateGreaterThanEqual } from '../../../config/time-ranges/index';\r\nimport { getStyle } from './time-range-style';\r\n\r\n// eslint-disable-next-line\r\nTimeRangeSelectorBase.propTypes = {\r\n value: 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: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema,\r\n getFilteredRanges: PropTypes.func,\r\n getMinimumDay: PropTypes.func,\r\n getMinimumWarning: PropTypes.func,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n};\r\n\r\nfunction TimeRangeSelectorBase({\r\n value, classes, onChange, getFilteredRanges, getMinimumDay, getMinimumWarning,\r\n i18n, reportSchema, setWarning, timeGrain, timeZone, today, identityDetails,\r\n}) {\r\n const dateFormat = putil.get(identityDetails, 'user.CultureDateTimeFormat.ShortDatePattern');\r\n const ianaTimeZone = toIANATimeZone(timeZone);\r\n const minSupportedDay = getMinimumDay(reportSchema, timeGrain, today);\r\n const specificRanges = getFilteredRanges(timeGrain, today, minSupportedDay, reportSchema, i18n);\r\n const selectedTimeRange = value.key;\r\n let startDate;\r\n let endDate;\r\n let selectedRangeId = 4;\r\n\r\n const allowedTimeRanges = {};\r\n _.each(specificRanges, (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(value.start);\r\n endDate = getCivilDateFromString(value.end);\r\n }\r\n\r\n const onPickDateRanges = (result) => {\r\n const { rangeType, selectedRange } = result;\r\n\r\n // If the event payload is invalid, ignore.\r\n if (!rangeType || !selectedRange) {\r\n return;\r\n }\r\n\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\nTimeRangeSelectorBase.defaultProps = {\r\n reportSchema: {},\r\n getFilteredRanges: getFilteredTimeRanges,\r\n getMinimumDay: getMinimumSupportedDay,\r\n getMinimumWarning: getMinimumSupportedWarning,\r\n};\r\n\r\nfunction areEqual(prevProps, nextProps) {\r\n return prevProps.timeGrain === nextProps.timeGrain &&\r\n prevProps.timeZone === nextProps.timeZone;\r\n}\r\n\r\nconst TimeRangeSelectorWithMemo = React.memo(TimeRangeSelectorBase, areEqual);\r\nconst TimeRangeSelectorWithValidation =\r\n withValidation(TimeRangeSelectorWithMemo, AdapterFactory({}));\r\nconst TimeRangeSelectorWithIdentityContext = withIdentityContext(TimeRangeSelectorWithValidation);\r\nconst TimeRangeSelectorWithStyle =\r\n withDefaultStyles(TimeRangeSelectorWithIdentityContext, getStyle);\r\n\r\nexport { TimeRangeSelectorWithMemo as TimeRangeSelectorBase };\r\nexport { TimeRangeSelectorWithStyle as TimeRangeSelector };\r\n","import _ from 'underscore';\r\nimport {\r\n getCivilDateDayOfWeek,\r\n getCivilDateMonthStart,\r\n} from '@bingads-webui-universal/temporal-utitlities';\r\nimport { i18nMap } from '@bingads-webui-campaign/report-shared';\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 = i18nMap.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","\r\nexport function getStyle() {\r\n return {\r\n timeRangeSelector: {\r\n '& .compared-date-range-picker .compared-date-range-picker-input': {\r\n float: 'none!important',\r\n },\r\n '& .compared-date-range-picker-dialog': {\r\n top: 'auto!important',\r\n right: 'auto!important',\r\n left: 'auto!important',\r\n 'webkit-animation': 'none',\r\n animation: 'none',\r\n },\r\n },\r\n };\r\n}\r\n","import _ from 'underscore';\r\nimport { ScopeFilterLevel, getScopeFilterLevel } from '../../../config';\r\n\r\nexport function shouldShowUserScopeInput(mtScopeFilterLevel) {\r\n return getScopeFilterLevel(mtScopeFilterLevel) === ScopeFilterLevel.User;\r\n}\r\n\r\nexport function shouldShowSelector(mtScopeFilterLevel) {\r\n return _.contains([\r\n ScopeFilterLevel.Customer,\r\n ScopeFilterLevel.Account,\r\n ScopeFilterLevel.Campaign,\r\n ], getScopeFilterLevel(mtScopeFilterLevel));\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","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { Input, ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { timeZones } from '@bingads-webui/timezone-details';\r\nimport { AccountCampaignSelector, accountCampaignValidator } from './account-campaign-selector/';\r\nimport { GridItem, Grid } from '../../components';\r\nimport { GenericSelector } from '../../components/shared/generic-selector';\r\nimport { TimeGrainSelector } from './time-grain-selector';\r\nimport { TimeRangeSelector } from './time-range/time-range-selector';\r\nimport { fileFormats } from '../../config';\r\nimport { getDefaultTimeRange, getCivilDateFromString, getAllowedRanges, trimDate } from '../../config/time-ranges';\r\nimport { shouldShowUserScopeInput, shouldShowSelector } from './account-campaign-selector/scope-filter-level';\r\nimport { getToday } from './time-range/time-range-helper';\r\n\r\n\r\nclass GeneralSection extends Component {\r\n static validationSchema = {\r\n name: 'CreateReport - General Section Schema',\r\n type: 'object',\r\n properties: {\r\n accountCampaignSelector: {\r\n type: 'any',\r\n },\r\n userScopes: {\r\n type: 'number',\r\n required: true,\r\n },\r\n format: {\r\n type: 'string',\r\n },\r\n timeGrain: {\r\n type: 'string',\r\n },\r\n timeRange: {\r\n type: 'any',\r\n },\r\n timeZone: {\r\n type: 'string',\r\n },\r\n },\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n const { i18n } = props;\r\n this.setToday(props.data.timeZone);\r\n this.radioValues = [true, false];\r\n this.getRadioId = (item, index) => ['all', 'specific'][index];\r\n this.radioOptions = (item, index) =>\r\n [i18n.getString(_TL_('All accounts and campaigns')), i18n.getString(_TL_('Specific accounts and campaigns'))][index];\r\n }\r\n\r\n onValidate = (result) => {\r\n const data = _.extend(result.data, { isValid: result.isValid });\r\n if (data.timeGrain && data.timeGrain !== this.props.data.timeGrain) {\r\n const currentRange = this.props.data.timeRange.key;\r\n const allowedRanges = getAllowedRanges(data.timeGrain, this.props.reportSchema);\r\n if (!_.contains(allowedRanges, currentRange)) {\r\n data.timeRange = {\r\n key: getDefaultTimeRange(data.timeGrain, this.props.reportSchema),\r\n start: undefined,\r\n end: undefined,\r\n };\r\n }\r\n }\r\n if (data.timeZone && data.timeZone !== this.props.data.timeZone) {\r\n this.setToday(data.timeZone);\r\n const currentRange = this.props.data.timeRange;\r\n if (currentRange.key === 'Custom') {\r\n const startDate = getCivilDateFromString(currentRange.start);\r\n const endDate = getCivilDateFromString(currentRange.end);\r\n data.timeRange = {\r\n key: currentRange.key,\r\n start: trimDate(startDate, this.today).toString(),\r\n end: trimDate(endDate, this.today).toString(),\r\n };\r\n }\r\n }\r\n this.props.setData(data);\r\n }\r\n\r\n setToday = (timeZone) => {\r\n this.today = getToday(this.props.i18n, timeZone);\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n getValidationItemProps,\r\n i18n,\r\n data,\r\n reportSchema,\r\n setWarning,\r\n renderType,\r\n isInternalUser,\r\n disableTimeZoneSelector,\r\n accountCampaignSelectorLoaded,\r\n } = this.props;\r\n\r\n return (\r\n \r\n
\r\n \r\n {\r\n renderType !== 'Barchart' && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n setWarning('timeRange', val)}\r\n timeGrain={data.timeGrain}\r\n timeZone={data.timeZone}\r\n today={this.today}\r\n />\r\n \r\n {\r\n disableTimeZoneSelector ?\r\n null :\r\n \r\n \r\n \r\n }\r\n {\r\n renderType === 'Table' && (\r\n \r\n \r\n \r\n )\r\n }\r\n {\r\n shouldShowUserScopeInput(reportSchema.ScopeFilterLevel) ?\r\n \r\n \r\n : null\r\n }\r\n {\r\n shouldShowSelector(reportSchema.ScopeFilterLevel) ?\r\n \r\n accountCampaignValidator(val, i18n) }}\r\n value={data.accountCampaignSelector}\r\n finishedLoading={accountCampaignSelectorLoaded}\r\n />\r\n : null\r\n }\r\n \r\n
\r\n
);\r\n }\r\n}\r\n\r\n/* eslint-disable react/no-typos */\r\nGeneralSection.propTypes = {\r\n isInternalUser: PropTypes.bool.isRequired,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n getValidationItemProps: PropTypes.func.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n data: PropTypes.object.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n setWarning: PropTypes.func.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n renderType: PropTypes.string.isRequired,\r\n disableTimeZoneSelector: PropTypes.bool,\r\n accountCampaignSelectorLoaded: PropTypes.func.isRequired,\r\n};\r\n\r\nGeneralSection.defaultProps = {\r\n disableTimeZoneSelector: false,\r\n};\r\n\r\nexport { GeneralSection };\r\n","import _ from 'underscore';\r\n\r\nexport const accountCampaignValidator = ({\r\n allSelected, AccountIds, CustomerScopes, CampaignReportScopes,\r\n}, i18n) => {\r\n /* istanbul ignore next */\r\n if (allSelected === undefined && (!AccountIds && !CustomerScopes && !CampaignReportScopes)) {\r\n return [i18n.getString(_TL_('Please wait for the data to load...'))];\r\n } else if (allSelected === false) {\r\n const selectedItems = [].concat(AccountIds, CustomerScopes, CampaignReportScopes);\r\n if (_.isEmpty(selectedItems)) {\r\n return [i18n.getString(_TL_('Select at least one account or campagin'))];\r\n }\r\n }\r\n return [];\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 { ReportColumnChooser } from '@bingads-webui-campaign/report-column-chooser';\r\n\r\nexport const ColumnSection =\r\n ({\r\n data,\r\n reportSchema,\r\n setData,\r\n timeGrain,\r\n renderType,\r\n }) =>\r\n (\r\n );\r\n\r\n\r\n/* eslint-disable react/no-typos */\r\nColumnSection.propTypes = {\r\n data: PropTypes.object.isRequired, // eslint-disable-line\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n timeGrain: PropTypes.string.isRequired,\r\n renderType: PropTypes.string.isRequired,\r\n};\r\n","\r\nexport function inputTitleStyle(components, core) {\r\n return core.isUIVnext ?\r\n {\r\n position: 'absolute',\r\n top: '-24px',\r\n color: `${core.palette.neutralPrimary}`,\r\n fontWeight: '500',\r\n } :\r\n {\r\n alignSelf: 'center',\r\n width: '100px',\r\n textAlign: 'right',\r\n paddingRight: '20px',\r\n fontWeight: 'bold',\r\n fontSize: '12px',\r\n color: '#666666',\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 '../../style/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 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\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 !== DAILY ?
: ''\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 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 const baseStyle = {\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 },\r\n frequencyTitle: inputTitleStyle(components, core),\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 },\r\n hourContainer: {\r\n display: 'flex',\r\n },\r\n radioContainer: {\r\n width: '100px',\r\n },\r\n };\r\n\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n\r\n return {\r\n ...baseStyle,\r\n frequencyContainer: {\r\n ...baseStyle.frequencyContainer,\r\n '& > div:first-child': {\r\n top: '-50px',\r\n },\r\n },\r\n frequencySelect: {\r\n ...baseStyle.frequencySelect,\r\n '& > div:first-child': {\r\n top: '8px',\r\n },\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 { getCivilDateToday } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { keyCode } from '@bingads-webui/keycode';\r\nimport './style.less';\r\nimport { inputTitleStyle } from '../../style/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 }\r\n\r\n componentDidMount() {\r\n document.addEventListener('mousedown', this.handelShowHideSingleDatePicker);\r\n this.onValidate();\r\n }\r\n\r\n componentWillUnmount() {\r\n document.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 StartDate: 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 EndDate: 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,\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 \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 \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 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 const baseStyle = {\r\n startEndDate: {\r\n paddingTop: '10px',\r\n '& > div': {\r\n float: 'left',\r\n width: '50%',\r\n display: 'flex',\r\n },\r\n '& input[readonly]': {\r\n backgroundColor: '#fff',\r\n },\r\n },\r\n calenderWrapper: {\r\n position: 'relative',\r\n },\r\n errorMsg: {\r\n color: '#D90026',\r\n paddingLeft: '53px',\r\n overflow: 'hidden',\r\n },\r\n startEndDateLabel: inputTitleStyle(components, core),\r\n };\r\n\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n\r\n return {\r\n ...baseStyle,\r\n startEndDate: {\r\n ...baseStyle.startEndDate,\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: '43px',\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\n\r\nexport { StyledStartEndDate as StartEndDate };\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { withValidation, withError } from '@bingads-webui-react/validation';\r\nimport { TextArea } from '@bingads-webui-react/primitive';\r\n\r\nexport const getValidator = i18n => (val) => {\r\n if (!_.isString(val) || val.trim() === '') {\r\n return [i18n.getString(_TL_('Invalid E-mail format'))];\r\n } else if (val.length > 1024) {\r\n return [i18n.getString(_TL_('Email Limit Exceeded. You may input up to 10 e-mail addresses.'))];\r\n }\r\n const regex = /^([^\\s@,;]+@[\\w\\-.]+\\.[A-Za-z]+)$/i;\r\n const delimiter = ',';\r\n const emailList = val.replace(new RegExp(',|;', 'g'), delimiter);\r\n const emails = _.compact(_.map(emailList.split(','), v => v.trim()));\r\n if (emails.length > 10) {\r\n return [i18n.getString(_TL_('Email Limit Exceeded. You may input up to 10 e-mail addresses.'))];\r\n }\r\n\r\n const offendingEmail =\r\n _.find(emails, (email) => {\r\n if (!regex.test(email)) {\r\n return email;\r\n }\r\n return false;\r\n });\r\n if (offendingEmail) {\r\n return [i18n.getString(_TL_('Invalid E-mail format: ')) + offendingEmail];\r\n }\r\n return [];\r\n};\r\n\r\n\r\nconst validationSchema = {\r\n name: 'Email Schema',\r\n type: 'object',\r\n properties: {\r\n email: {\r\n type: 'string',\r\n required: true,\r\n maxLength: 1024,\r\n },\r\n },\r\n};\r\nconst ValidatedTextArea = withError(withValidation(TextArea));\r\nconst EmailTextArea = React.memo((props) => {\r\n const {\r\n i18n, onValidate, forceValidate, value, ariaLabelledBy,\r\n } = props;\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nEmailTextArea.propTypes = {\r\n value: PropTypes.string.isRequired,\r\n forceValidate: PropTypes.bool.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n onValidate: PropTypes.func.isRequired,\r\n ariaLabelledBy: PropTypes.string,\r\n};\r\nEmailTextArea.defaultProps = {\r\n ariaLabelledBy: undefined,\r\n};\r\n\r\nexport { EmailTextArea };\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 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 { EmailTextArea } from './email-text-area';\r\n\r\nclass ReportSchedule extends Component {\r\n constructor(props) {\r\n super(props);\r\n const { i18n } = props;\r\n this.text = {\r\n includeReport: i18n.getString(_TL_('Include report as an email attachment')),\r\n };\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 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 render() {\r\n const {\r\n i18n, cronFormatter, classes,\r\n StartDate, EndDate, setSchedule,\r\n EmailRecipients, AttachFileToEmail, Cron,\r\n onValidateEmail, forceValidate,\r\n } = this.props;\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
{i18n.getString(_TL_('Send report to'))}
\r\n \r\n {i18n.getString(_TL_('Separate multiple email addresses with commas or semicolons. Maximum 1024 character limit.'))}\r\n
\r\n setSchedule({ AttachFileToEmail: val.target.checked })}\r\n checked={AttachFileToEmail}\r\n >\r\n {this.text.includeReport}\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/* eslint-disable react/no-typos */\r\nReportSchedule.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n forceValidate: PropTypes.bool.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n Cron: PropTypes.string.isRequired,\r\n EmailRecipients: 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 onValidateEmail: PropTypes.func.isRequired,\r\n};\r\n\r\nfunction getStyle(components, {\r\n palette,\r\n isUIVnext,\r\n}) {\r\n const baseStyle = {\r\n reportSchedule: {\r\n paddingLeft: '40px',\r\n maxWidth: '600px',\r\n\r\n '& select': {\r\n minWidth: 0,\r\n display: 'inline-block',\r\n marginRight: '5px',\r\n width: 'auto',\r\n },\r\n },\r\n emailTitle: {\r\n clear: 'both',\r\n paddingTop: '10px',\r\n },\r\n emailTextAreaSub: {\r\n color: `${palette.neutralSecondary}`,\r\n font: 'normal 10px arial !important',\r\n },\r\n attachmentTooLarge: {\r\n paddingTop: '2px',\r\n color: '#999',\r\n font: 'normal 10px arial !important',\r\n },\r\n };\r\n\r\n if (!isUIVnext) {\r\n return baseStyle;\r\n }\r\n\r\n return {\r\n ...baseStyle,\r\n reportSchedule: {\r\n ...baseStyle.reportSchedule,\r\n paddingLeft: '0',\r\n paddingTop: '75px',\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: '43px',\r\n },\r\n },\r\n emailTextArea: {\r\n width: '500px',\r\n marginTop: '34px',\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 };\r\n}\r\n\r\nconst Wrapped = withDefaultStyles(withPerfMarker(ReportSchedule, { name: 'reporting-schedule' }), getStyle);\r\n\r\nexport { Wrapped as ReportSchedule };\r\n","\r\nexport function radioAndCheckboxStyle(component, core) {\r\n return {\r\n '& .radio, & .checkbox': {\r\n paddingLeft: 0,\r\n '& > label': {\r\n paddingLeft: 0,\r\n '& > input': {\r\n position: 'static',\r\n marginLeft: 0,\r\n marginRight: 5,\r\n marginTop: core.isUIVnext ? -2 : 0,\r\n },\r\n },\r\n },\r\n };\r\n}\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { helpbuttonStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { getCivilDateToday } from '@bingads-webui-universal/temporal-utitlities';\r\nimport { Checkbox } from '@bingads-webui-react/primitive';\r\nimport { HelpIcon } from '@bingads-webui-campaign-react/help';\r\nimport { CronFormatter } from '@bingads-webui/cron-formatter';\r\nimport { withPermissionContext, withIdentityContext } from '@bingads-webui-campaign/report-shared';\r\nimport { ReportSchedule } from './report-schedule';\r\nimport { radioAndCheckboxStyle } from '../../style/radio-checkbox-style';\r\nimport { isValidSaveType, isSharedTemplateType, savedTaskItemTypes } from '../../config';\r\n\r\nclass SettingSection extends Component {\r\n constructor(props) {\r\n super(props);\r\n const { i18n, legacyI18n } = props;\r\n this.text = {\r\n saveAs: i18n.getString(_TL_('Save as custom report')),\r\n schdule: i18n.getString(_TL_('Schedule this report')),\r\n totalRow: i18n.getString(_TL_('Include total row')),\r\n visibleToExternalUsers: i18n.getString(_TL_('Disclose this report')),\r\n };\r\n this.defaultSchedule = {\r\n AttachFileToEmail: false,\r\n EmailRecipients: '',\r\n Cron: '',\r\n StartDate: null,\r\n EndDate: null,\r\n };\r\n this.initSchedule = {\r\n AttachFileToEmail: false,\r\n EmailRecipients: '',\r\n Cron: '0 12 * * 0 *',\r\n StartDate: getCivilDateToday().toString(),\r\n EndDate: getCivilDateToday().plus({ months: 3 }).toString(),\r\n };\r\n this.cronFormatter = new CronFormatter({ i18n: legacyI18n });\r\n\r\n // setdata with empty to trigger validation loop\r\n this.setData({});\r\n }\r\n\r\n onChange = (changedSettings) => {\r\n const { ...settings } = this.props.data;\r\n let value;\r\n if (changedSettings.scheduleThisReport === true) {\r\n value = _.extend(settings, changedSettings, { type: this.props.saveType });\r\n } else if (changedSettings.type === 'ReportUI') {\r\n value = _.extend(settings, changedSettings, { scheduleThisReport: false });\r\n } else {\r\n value = _.extend(settings, changedSettings);\r\n }\r\n // reset schedule to empty or init\r\n if (value.scheduleThisReport === false) {\r\n value = _.extend(value, this.defaultSchedule);\r\n } else if (value.Cron === '') {\r\n value = _.extend(value, this.initSchedule);\r\n }\r\n this.setData(value);\r\n }\r\n\r\n onValidateEmail = (result) => {\r\n this.isEmailValid = result.isValid;\r\n this.setData({\r\n EmailRecipients: result.data.email,\r\n });\r\n };\r\n\r\n onChangeVisibleToExternalUsers = (e) => {\r\n const isChecked = e.target.checked;\r\n const {\r\n identityDetails: {\r\n account: {\r\n Id: accountId,\r\n } = {},\r\n },\r\n } = this.props;\r\n\r\n let newType;\r\n\r\n if (isChecked) {\r\n newType = accountId ?\r\n savedTaskItemTypes.AccountTemplate :\r\n savedTaskItemTypes.CustomerTemplate;\r\n } else {\r\n newType = savedTaskItemTypes.Template;\r\n }\r\n\r\n this.onChange({ type: newType });\r\n }\r\n\r\n setData = (data) => {\r\n const newSettings = _.defaults(data, this.props.data);\r\n const today = new Date();\r\n this.props.setData(_.extend(newSettings, {\r\n isValid: !newSettings.scheduleThisReport ||\r\n (\r\n this.isEmailValid &&\r\n new Date(newSettings.StartDate) <= new Date(newSettings.EndDate) &&\r\n today <= new Date(newSettings.EndDate)\r\n ),\r\n }));\r\n }\r\n\r\n render() {\r\n const {\r\n data: settings, isUpdateReport, i18n, classes,\r\n forceValidate, showIncludeTotalRow, disableIncludeTotalRow, saveType,\r\n hasTopMargin, permissions: { IsReportsMergeEnabled, IsInternalUser },\r\n } = this.props;\r\n\r\n return (\r\n
\r\n {\r\n !isUpdateReport &&\r\n this.onChange({ type: val.target.checked ? saveType : 'ReportUI' })}\r\n checked={isValidSaveType(settings.type)}\r\n >\r\n {this.text.saveAs}\r\n \r\n \r\n }\r\n {\r\n !isUpdateReport &&\r\n IsReportsMergeEnabled && IsInternalUser && isValidSaveType(settings.type) &&\r\n \r\n {this.text.visibleToExternalUsers}\r\n \r\n \r\n }\r\n this.onChange({ scheduleThisReport: val.target.checked })}\r\n checked={settings.scheduleThisReport}\r\n >\r\n {this.text.schdule}\r\n \r\n \r\n {\r\n settings.scheduleThisReport &&\r\n \r\n }\r\n {\r\n showIncludeTotalRow &&\r\n this.onChange({ includeTotalRow: val.target.checked })}\r\n checked={settings.includeTotalRow}\r\n className={disableIncludeTotalRow ? classes.disabledCheckbox : ''}\r\n >\r\n {this.text.totalRow}\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\nSettingSection.propTypes = {\r\n showIncludeTotalRow: PropTypes.bool,\r\n disableIncludeTotalRow: PropTypes.bool,\r\n forceValidate: PropTypes.bool,\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n data: PropTypes.object.isRequired, // eslint-disable-line\r\n setData: PropTypes.func.isRequired,\r\n isUpdateReport: PropTypes.bool.isRequired,\r\n saveType: PropTypes.string.isRequired,\r\n hasTopMargin: PropTypes.bool,\r\n permissions: PropTypes.shape({}).isRequired,\r\n identityDetails: PropTypes.shape({}).isRequired,\r\n};\r\n\r\nSettingSection.defaultProps = {\r\n showIncludeTotalRow: true,\r\n disableIncludeTotalRow: false,\r\n forceValidate: false,\r\n hasTopMargin: true,\r\n};\r\n\r\nfunction getStyle(components, core) {\r\n const baseStyle = {\r\n reportSetting: {\r\n ...radioAndCheckboxStyle(components, core),\r\n },\r\n disabledCheckbox: {\r\n background: 'none',\r\n width: 'auto',\r\n height: 'auto',\r\n float: 'none',\r\n marginLeft: 'auto',\r\n '& label': {\r\n color: '#808080',\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n };\r\n\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n\r\n return {\r\n ...baseStyle,\r\n reportSetting: {\r\n ...baseStyle.reportSetting,\r\n '& .helpbutton': {\r\n ...helpbuttonStyle(core)['.helpbutton'],\r\n color: `${core.palette.themePrimary}`,\r\n },\r\n '& .helpbutton::before': helpbuttonStyle(core)['.helpbutton::before'],\r\n },\r\n };\r\n}\r\n\r\nconst Wrapped = withIdentityContext(withPermissionContext(withPerfMarker(withDefaultStyles(SettingSection, getStyle), { name: 'reporting-setting' })));\r\n\r\nexport { Wrapped as SettingSection };\r\n","export const categories = [\r\n {\r\n metrics: [\r\n 'Clicks',\r\n ],\r\n prefix: 'PerformanceMetrics/',\r\n },\r\n];\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { i18nMap, logUnmappedFilter } from '@bingads-webui-campaign/report-shared';\r\nimport { Shared as reportSchema } from '@bingads-webui/report-ui-interface';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { categories } from './consts';\r\n\r\nconst maxCheckboxValues = 7;\r\n\r\nfunction localizeEnumValues(i18n, property, propertyKey) {\r\n const tuples = _.map(property.enum, (enumValue) => {\r\n const englishString = i18nMap.FilterEnum[propertyKey] ?\r\n i18nMap.FilterEnum[propertyKey][enumValue] :\r\n putil.get(reportSchema, `columns.${property.columnName}.enum.${property.enumToColumnEnum[enumValue]}`);\r\n const localizedString = englishString ? i18n.getString(englishString) : String(enumValue);\r\n\r\n return [enumValue, localizedString];\r\n });\r\n return _.object(tuples);\r\n}\r\n\r\nexport function localizeTitle(i18n, key) {\r\n const englishString = i18nMap.FilterTitle[key];\r\n let localizedString;\r\n if (englishString) {\r\n localizedString = i18n.getString(englishString);\r\n } else {\r\n localizedString = String(key);\r\n logUnmappedFilter(key);\r\n }\r\n\r\n return localizedString;\r\n}\r\n\r\nexport function getUpperDescription(i18n, propertyKey) {\r\n const propertyName = localizeTitle(i18n, propertyKey);\r\n return i18n.getString(_TL_('Type {{propertyName}} (separate with commas):'), { propertyName });\r\n}\r\n\r\nfunction getPropertyPath(key) {\r\n const category = _.find(categories, ({ metrics }) => _.contains(metrics, key));\r\n const prefix = _.result(category, 'prefix', '');\r\n\r\n return `${prefix}${key}`;\r\n}\r\n\r\nexport function processProperty(\r\n rawProperty, rawKey, i18n,\r\n isUIVnext, permissions\r\n) {\r\n const property = {\r\n ...rawProperty,\r\n title: localizeTitle(i18n, rawKey),\r\n property: isUIVnext ? getPropertyPath(rawKey) : undefined,\r\n };\r\n\r\n if (property.enum) {\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase1Enabled) {\r\n property.enum = _.without(property.enum, 'Greek', 'Polish', 'Bulgarian', 'Croatian', 'Czech', 'Estonian', 'Hungarian', 'Latvian', 'Lithuanian', 'Maltese', 'Romanian', 'Slovak', 'Slovenian');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase2Enabled) {\r\n property.enum = _.without(property.enum, 'Turkish', 'Serbian', 'Bosnian', 'Albanian', 'Macedonian', 'Icelandic');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase6Enabled) {\r\n property.enum = _.without(property.enum, 'Hebrew', 'Russian');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase2JapanEnabled) {\r\n property.enum = _.without(property.enum, 'Japanese');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase9Enabled) {\r\n property.enum = _.without(property.enum, 'Hindi', 'Malay', 'Thai', 'Indonesian', 'Tagalog', 'SimplifiedChinese');\r\n }\r\n if (property.columnName === 'Language' && !permissions.IsAdsGlobalizationPhase9VIEnabled) {\r\n property.enum = _.without(property.enum, 'Vietnamese');\r\n }\r\n if (property.columnName === 'Language' && permissions.IsDomesticSimplifiedChineseEnabled) {\r\n property.enum = ['SimplifiedChinese'];\r\n }\r\n const localizationMap = localizeEnumValues(i18n, property, rawKey);\r\n if (property.columnName === 'AdType' && permissions.IsMultiMediaAdsEnabled) {\r\n // When enable IsMultiMediaAdsEnabled, show text as \"Responsive ad / Multimedia ad\"\r\n localizationMap.ResponsiveAd = i18n.getString(_TL_('Responsive ad / Multimedia ad'));\r\n }\r\n\r\n property.enum = _.chain(property.enum)\r\n .sortBy(property.type === 'integer' ? _.identity : _.propertyOf(localizationMap))\r\n // CheckboxEditor requires enum value to be string\r\n // @bingads-webui/predicate-list-react/src/predicate-value-editors/checkbox-editor.js\r\n // checked: PropTypes.arrayOf(PropTypes.string)\r\n .map(v => String(v))\r\n .value();\r\n // keys in property.localized must have the same order with property.enum\r\n property.localized = _.chain(property.enum)\r\n .map(enumValue => [enumValue, localizationMap[enumValue]])\r\n .object()\r\n .value();\r\n\r\n if (property.enum.length > maxCheckboxValues) {\r\n // Enforce using selector\r\n // @bingads-webui/predicate-list/src/predicate-creator.es line 12\r\n property.type = 'id';\r\n property.name = property.title;\r\n property.addtionalParams = {\r\n dataSource: {\r\n get(dummy, query) {\r\n let result = [...property.enum];\r\n\r\n if (_.isString(query)) {\r\n const queryLowerCase = query.toLowerCase();\r\n\r\n result = _.filter(result, (enumValue) => {\r\n const enumLowerCase = property.localized[enumValue].toLowerCase();\r\n\r\n return enumLowerCase.includes(queryLowerCase);\r\n });\r\n }\r\n\r\n result = _.map(result, enumValue => ({\r\n Id: enumValue,\r\n Name: property.localized[enumValue],\r\n }));\r\n\r\n return result;\r\n },\r\n itemsDisplayLimit: Number.MAX_SAFE_INTEGER,\r\n },\r\n selectorOptions: {\r\n keyMap: {\r\n Selector_Filter_Placeholder: () => `${i18n.getString(_TL_('Select'))} ${property.title}`,\r\n },\r\n },\r\n };\r\n if (isUIVnext) {\r\n // name must be identical to key, see\r\n // @bingads-webui/predicate-list-react/src/predicate-value-editors/selector-editor.js\r\n // line 102\r\n // @bingads-webui/predicate-list/src/viewmodel/predicate.es line 18\r\n property.name = rawKey;\r\n // bypass default value\r\n // @bingads-webui/viewmodel-schema/src/default-value.es\r\n property.nullable = true;\r\n // Stub for hummanrized-predicate\r\n // @bingads-webui/humanized-predicate/src/humanized-predicate.js\r\n property.addtionalParams.dataSource.getByIds = (ids) => {\r\n const result = _.map(ids, id => ({\r\n Id: id,\r\n Name: id,\r\n }));\r\n\r\n return Promise.resolve(result);\r\n };\r\n }\r\n } else {\r\n property.chooseType = 'checkbox';\r\n // Enforce filter-i18n to consume property.localized\r\n // @bingads-webui/filter-i18n/src/index.es line 91\r\n property.type = 'string';\r\n }\r\n } else if (property.type === 'string') {\r\n property.chooseType = 'textarea';\r\n property.operators = ['eq'];\r\n property.maxLength = 1024;\r\n property.customParameters = {\r\n lowerDescription: i18n.getString(_TL_('Maximum 1024 character limit')),\r\n upperDescription: getUpperDescription(i18n, rawKey),\r\n };\r\n } else if (property.type === 'integer') {\r\n property.minimum = 0;\r\n property.required = true;\r\n } else {\r\n // filter definition is invalid, omit\r\n return null;\r\n }\r\n\r\n return property;\r\n}\r\n\r\nexport function filterSchemaProcessor(\r\n filterSchema, i18n,\r\n isUIVnext, permissions\r\n) {\r\n const properties = _.chain(filterSchema.properties)\r\n .pairs()\r\n .map(([key, property]) => [key, processProperty(\r\n property,\r\n key, i18n, isUIVnext, permissions\r\n )])\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n .reject(([key, property]) => !property)\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n .sortBy(([key, property]) => property.title)\r\n .object()\r\n .value();\r\n\r\n return {\r\n ...filterSchema,\r\n name: 'ReportingUI',\r\n properties,\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport 'bootstrap/js/dropdown';\r\nimport { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { PredicateList } from '@bingads-webui/predicate-list';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { filterSchemaProcessor } from './filter-schema-processor';\r\n\r\nexport class FilterComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n i18n, legacyI18n, reportSchema, data,\r\n permissions,\r\n } = props;\r\n\r\n const filterSchema = filterSchemaProcessor(\r\n reportSchema.Filters,\r\n i18n, false, permissions\r\n );\r\n this.predicateList = new PredicateList({\r\n entitySchema: filterSchema,\r\n i18n: legacyI18n,\r\n maxConditionCount: Number.MAX_SAFE_INTEGER,\r\n onPredicateChange: this.onPredicateChange,\r\n });\r\n\r\n if (data && data.predicates) {\r\n this.predicateList.setPredicates(data.predicates);\r\n }\r\n\r\n this.predicateList.render();\r\n }\r\n\r\n shouldComponentUpdate(nextProps) {\r\n if (!this.props.showValidationErrors && nextProps.showValidationErrors) {\r\n this.predicateList.showValidationErrors();\r\n }\r\n // Nothing to update\r\n return false;\r\n }\r\n\r\n onPredicateChange = (currData) => {\r\n const whiteList = ['isValid', 'predicates', 'predicateCount'];\r\n const {\r\n data: prevData,\r\n setData,\r\n } = this.props;\r\n const prevDataPick = _.pick(prevData, whiteList);\r\n const currDataPick = _.pick(currData, whiteList);\r\n\r\n // Allow no filter\r\n if (currDataPick.predicateCount === 0) {\r\n currDataPick.isValid = true;\r\n }\r\n\r\n if (!_.isEqual(prevDataPick, currDataPick)) {\r\n setData(currDataPick);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
);\r\n }\r\n}\r\n\r\n\r\nFilterComponent.propTypes = {\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n data: PropTypes.objectOf(PropTypes.any),\r\n showValidationErrors: PropTypes.bool.isRequired,\r\n permissions: PropTypes.shape({}),\r\n};\r\n\r\nFilterComponent.defaultProps = {\r\n data: null,\r\n permissions: {\r\n IsAdsGlobalizationPhase1Enabled: false,\r\n },\r\n};\r\n\r\nconst wrapped = withPerfMarker(FilterComponent, { name: 'reporting-filter' });\r\nexport { wrapped as Filter };\r\n","import _ from 'underscore';\r\n\r\nfunction isPlainObject(value) {\r\n return _.isObject(value) && !_.isArray(value);\r\n}\r\n\r\nexport function queryToPredicates(query) {\r\n if (!isPlainObject(query) || _.isEmpty(query)) {\r\n return [];\r\n }\r\n if (query.$and) {\r\n return query.$and;\r\n }\r\n return [query];\r\n}\r\n\r\nexport function predicatesToQuery(predicates) {\r\n if (!_.isArray(predicates) || _.isEmpty(predicates)) {\r\n return {};\r\n }\r\n if (predicates.length === 1) {\r\n return predicates[0];\r\n }\r\n return {\r\n $and: predicates,\r\n };\r\n}\r\n\r\nexport function validateGoalIdFilter(filter) {\r\n const { predicates } = filter;\r\n if (_.isArray(predicates) && predicates.length > 0) {\r\n const goalIdPredicate = _.find(predicates, predicate => _.has(predicate, 'GoalIds'));\r\n if (_.isObject(goalIdPredicate)) {\r\n const regex = /^\\d+(,\\d+)*$/;\r\n return regex.test(goalIdPredicate.GoalIds.$eq);\r\n }\r\n return true;\r\n }\r\n return true;\r\n}\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport 'bootstrap/js/dropdown';\r\nimport { Button, Glyphicon } from '@bingads-webui-react/primitive';\r\nimport { withPerfMarker } from '@bingads-webui/performance-marker-react-wrapper';\r\nimport { PredicateList } from '@bingads-webui/predicate-list-react';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\nimport { filterSchemaProcessor } from './filter-schema-processor';\r\nimport { queryToPredicates, predicatesToQuery } from './filter-util';\r\n\r\nexport class FilterComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const {\r\n i18n, reportSchema,\r\n permissions,\r\n } = props;\r\n\r\n this.filterSchema = filterSchemaProcessor(\r\n reportSchema.Filters,\r\n i18n, true, permissions\r\n );\r\n this.editableFilter = new FilterEntity({}, {\r\n entitySchema: this.filterSchema,\r\n });\r\n }\r\n\r\n onQueryChange = (query) => {\r\n const {\r\n data: prevData,\r\n setData,\r\n } = this.props;\r\n const currData = {\r\n predicates: queryToPredicates(query),\r\n };\r\n\r\n if (!_.isEqual(prevData, currData)) {\r\n setData(currData);\r\n }\r\n }\r\n\r\n onQueryReset = () => {\r\n this.onQueryChange(null);\r\n }\r\n\r\n render() {\r\n const {\r\n classes,\r\n i18n,\r\n data: {\r\n predicates,\r\n },\r\n } = this.props;\r\n\r\n const query = predicatesToQuery(predicates);\r\n this.editableFilter.updateQuery(query);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {this.props.i18n.getString(_TL_('Reset'))}\r\n \r\n
);\r\n }\r\n}\r\n\r\n\r\nFilterComponent.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n data: PropTypes.objectOf(PropTypes.any),\r\n permissions: PropTypes.shape({}),\r\n};\r\n\r\nFilterComponent.defaultProps = {\r\n data: null,\r\n permissions: {\r\n IsAdsGlobalizationPhase1Enabled: false,\r\n },\r\n};\r\n\r\nconst wrapped = withPerfMarker(FilterComponent, { name: 'reporting-filter' });\r\nexport { wrapped as Filter };\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport 'bootstrap/js/dropdown';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { withPermissionContext } from '@bingads-webui-campaign/report-shared';\r\nimport { Filter as FilterOld } from './filter-old';\r\nimport { Filter as FilterNew } from './filter-new';\r\nimport { validateGoalIdFilter } from './filter-util';\r\n\r\nfunction FilterSection(props) {\r\n const {\r\n classes,\r\n data,\r\n i18n,\r\n reportSchema,\r\n permissions,\r\n showValidationErrors,\r\n } = props;\r\n const hasFilters = _.size(reportSchema.Filters.properties) > 0;\r\n const Filter = permissions.IsReportingUIPhaseNext ? FilterNew : FilterOld;\r\n const { setData: originalSetData } = props;\r\n\r\n const wrappedSetData = (oldData) => {\r\n let newData = oldData;\r\n if (!validateGoalIdFilter(newData)) {\r\n newData = _.defaults({ isValid: false }, newData);\r\n }\r\n originalSetData(newData);\r\n };\r\n\r\n return hasFilters ?\r\n \r\n \r\n {\r\n showValidationErrors && !validateGoalIdFilter(data) &&\r\n
\r\n {i18n.getString(_TL_('Goal ID filter only allows comma separated integer values.'))}\r\n
\r\n }\r\n
\r\n :\r\n i18n.getString(_TL_('There are no filters defined for this report.'));\r\n}\r\n\r\nFilterSection.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n setData: PropTypes.func.isRequired,\r\n data: PropTypes.objectOf(PropTypes.any),\r\n showValidationErrors: PropTypes.bool.isRequired,\r\n permissions: ReportingProps.permissions.isRequired,\r\n};\r\n\r\nFilterSection.defaultProps = {\r\n data: null,\r\n};\r\n\r\nconst Wrapped = withPermissionContext(FilterSection);\r\n\r\nexport { Wrapped as FilterSection };\r\n","import _ from 'underscore';\r\n\r\nfunction getRejectedColumns(permissions, pilotSets) {\r\n let rejectedColumns = [];\r\n _.forEach(pilotSets, ({ isAllowed, columns }) => {\r\n if (!isAllowed(permissions)) {\r\n rejectedColumns = _.union(rejectedColumns, columns);\r\n }\r\n });\r\n\r\n return rejectedColumns;\r\n}\r\n\r\nexport const filterDefaultColumnByPilot = (permissions, defaultColumn, pilotSets) => {\r\n const rejectedColumns = getRejectedColumns(permissions, pilotSets);\r\n\r\n const filtered = _.difference(defaultColumn, rejectedColumns);\r\n return filtered;\r\n};\r\n","import _ from 'underscore';\r\nimport { predicateValueEditorStyle, uiblockerStyle, underlineLinkStyle } from '@bingads-webui-campaign-react/common-styles';\r\nimport { radioAndCheckboxStyle } from './radio-checkbox-style';\r\n\r\n/* istanbul ignore file */\r\nexport const getStyle = function (components, core) {\r\n const baseStyle = {\r\n createReportContainer: {\r\n '& .blocker-indicator': {\r\n position: 'absolute',\r\n },\r\n },\r\n container: {\r\n width: '100%',\r\n marginTop: '16px',\r\n marginBottom: '10px',\r\n paddingLeft: '24px',\r\n position: 'relative',\r\n '& div.error': {\r\n color: '#A80000',\r\n },\r\n },\r\n title: {\r\n fontFamily: 'Arial',\r\n fontSize: '20px',\r\n color: '#333333',\r\n marginBottom: '10px',\r\n },\r\n description:\r\n {\r\n margin: '15px 10px',\r\n },\r\n actions: {\r\n marginTop: '22px',\r\n marginLeft: '7px',\r\n },\r\n sla: {\r\n marginTop: '20px',\r\n fontSize: '10px',\r\n color: '#666666',\r\n },\r\n customizationContent: {\r\n width: '994px',\r\n minWidth: '994px',\r\n },\r\n blocker: {\r\n height: '100%',\r\n },\r\n paddingTop5: {\r\n paddingTop: '5px',\r\n },\r\n accountCampaignSelector: {\r\n '& > div > .row': {\r\n marginLeft: '0',\r\n marginRight: '0',\r\n '& > .col-sm-4': {\r\n padding: '0',\r\n width: '100%',\r\n },\r\n },\r\n ...radioAndCheckboxStyle(components, core),\r\n },\r\n positionRelative: {\r\n position: 'relative',\r\n },\r\n goalIdErrorMsg: {\r\n color: '#D90026',\r\n marginTop: '10px',\r\n },\r\n timeRangeSelector: {\r\n },\r\n };\r\n if (!core.isUIVnext) {\r\n return baseStyle;\r\n }\r\n const blockStyle = uiblockerStyle({ palette: core.palette });\r\n return {\r\n ...baseStyle,\r\n createReportContainer: {\r\n '& .blocker-global': _.extend(blockStyle['.blocker-global'], blockStyle['.blocker-global, .blocker-local'], blockStyle['.blocker, .blocker-global, .blocker-local']),\r\n },\r\n container: _.extend(baseStyle.container, {\r\n marginTop: '14px',\r\n marginBottom: '18px',\r\n paddingLeft: '32px',\r\n }),\r\n title: _.extend(baseStyle.title, {\r\n fontSize: '26px',\r\n fontFamily: 'inherit',\r\n fontWeight: '500',\r\n color: '#333333',\r\n paddingBottom: '10px',\r\n borderBottom: `1px solid ${core.palette.neutralLighter};`,\r\n }),\r\n description: _.extend(baseStyle.description, {\r\n marginTop: '8px',\r\n marginLeft: '0px',\r\n '& b': {\r\n fontWeight: '500',\r\n },\r\n }),\r\n customizationContent: _.extend(baseStyle.customizationContent, {\r\n width: '1302px',\r\n minWidth: '1302px',\r\n paddingLeft: '0 !important',\r\n }),\r\n generalSetting: {\r\n width: '435px',\r\n '& .compared-date-range-picker-input button': {\r\n width: '435px',\r\n },\r\n '& .single-row': {\r\n position: 'static',\r\n },\r\n },\r\n filterContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n '& > .predicate-list': {\r\n paddingLeft: 0,\r\n },\r\n '& .add-filter-button': {\r\n background: 'transparent',\r\n marginLeft: 0,\r\n '&:focus': {\r\n background: 'transparent',\r\n },\r\n '&:focus:after': {\r\n border: 0,\r\n },\r\n },\r\n '& .filter-bar-button': {\r\n height: '56px',\r\n border: 0,\r\n '&:focus:after': {\r\n border: 0,\r\n },\r\n '& .iconba': {\r\n color: core.palette.themePrimary,\r\n },\r\n },\r\n '& .btn:focus': {\r\n outline: '1px solid',\r\n },\r\n '& .selector-placeholder.labels-selector': (() => {\r\n const selectorStyle = predicateValueEditorStyle.selector({ palette: core.palette });\r\n // Fix bug 3279977\r\n if (_.result(selectorStyle, ['& .search-box-v2', '& .search-box__input.form-control', 'width'])) {\r\n delete selectorStyle['& .search-box-v2']['& .search-box__input.form-control'].width;\r\n }\r\n return selectorStyle;\r\n })(),\r\n },\r\n actions: {\r\n marginTop: '60px',\r\n '& button + button': {\r\n marginLeft: '12px',\r\n },\r\n },\r\n sla: {\r\n marginTop: '20px',\r\n fontSize: '12px',\r\n color: `${core.palette.neutralPrimary}`,\r\n ...underlineLinkStyle({ palette: core.palette, elementLocator: 'a.HelpTopic' }),\r\n '& a.HelpTopic:focus': {\r\n border: 0,\r\n },\r\n },\r\n };\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { ValidationGroup } from '@bingads-webui-react/primitive-validation';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { UiBlocker } from '@bingads-webui-react/ui-blocker';\r\nimport { Panel } from '@bingads-webui-campaign/report-controls';\r\nimport { HelpLink, withPermissionContext } from '@bingads-webui-campaign/report-shared';\r\nimport { fromLegacyTimeZone } from '@bingads-webui-universal/time-zone-converter';\r\nimport { ActionCenter, Warning } from './components';\r\nimport { sectionType, renderTypes as allRenderTypes, ScopeFilterLevel, getScopeFilterLevel } from './config';\r\nimport { getDefaultTimeRange } from './config/time-ranges';\r\nimport { RootSection, GeneralSection, ColumnSection, FilterSection, SettingSection } from './sections';\r\nimport { filterDefaultColumnByPilot } from './pilot';\r\nimport { getStyle } from './style';\r\n\r\nconst {\r\n GENERAL, COLUMN, FILTER, SETTING, ROOT,\r\n} = sectionType;\r\n\r\nclass CreateReport extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const panelStatus = {\r\n [GENERAL]: true,\r\n [COLUMN]: false,\r\n [FILTER]: false,\r\n [SETTING]: false,\r\n };\r\n const {\r\n i18n,\r\n reportDefinition,\r\n reportSchema,\r\n identityDetails: {\r\n customer,\r\n account: {\r\n Id: accountId,\r\n Name: accountName,\r\n TimeZone: accountTimeZone,\r\n } = {},\r\n },\r\n savedReportData,\r\n saveType,\r\n permissions: {\r\n IsReportingUIPhaseNext,\r\n IsReportsMergeEnabled,\r\n },\r\n } = props;\r\n\r\n this.defaultColumns = filterDefaultColumnByPilot(\r\n props.permissions,\r\n props.reportSchema.Columns.default,\r\n props.reportSchema.Columns.pilotDefault\r\n );\r\n\r\n const customerOrAccountName = IsReportingUIPhaseNext && accountId && accountName ?\r\n accountName :\r\n customer.Name;\r\n const defaultData = {\r\n [ROOT]: {\r\n name: `${reportDefinition.name} ${i18n.formatDate(new Date(), { timeZone: null, skeleton: 'yMd' })} ${customerOrAccountName}`,\r\n type: reportDefinition.apiKey,\r\n schemaName: reportSchema.SchemaName,\r\n renderType: 'Table',\r\n },\r\n [GENERAL]: {\r\n timeGrain: reportSchema.ReportAggregation.default,\r\n timeRange: {\r\n key: getDefaultTimeRange(reportSchema.ReportAggregation.default, reportSchema),\r\n },\r\n timeZone: IsReportingUIPhaseNext && accountId && accountTimeZone ?\r\n fromLegacyTimeZone(accountTimeZone) :\r\n 'PacificTimeUSCanadaTijuana',\r\n format: 'Xlsx',\r\n accountCampaignSelector: {\r\n CustomerScopes:\r\n getScopeFilterLevel(reportSchema.ScopeFilterLevel) === ScopeFilterLevel.None ?\r\n [customer.Id] : null,\r\n AccountIds:\r\n (getScopeFilterLevel(reportSchema.ScopeFilterLevel) === ScopeFilterLevel.Account) &&\r\n IsReportingUIPhaseNext && accountId ?\r\n [accountId] : null,\r\n },\r\n userScopes: null,\r\n },\r\n [COLUMN]: {\r\n selected: this.defaultColumns,\r\n },\r\n [FILTER]: {\r\n isValid: true,\r\n },\r\n [SETTING]: {\r\n type: IsReportsMergeEnabled ?\r\n saveType :\r\n 'ReportUI',\r\n scheduleThisReport: false,\r\n includeTotalRow: false,\r\n AttachFileToEmail: false,\r\n EmailRecipients: '',\r\n // if cron not def it must be empty string\r\n Cron: '',\r\n StartDate: null,\r\n EndDate: null,\r\n },\r\n };\r\n\r\n this.state = {\r\n blocking: false,\r\n panelStatus,\r\n showValidationErrors: false,\r\n data: savedReportData ?\r\n _.mapObject(savedReportData, (value, key) => _.defaults(value, defaultData[key])) :\r\n defaultData,\r\n warnings: {},\r\n renderTypes: _.pick(allRenderTypes, reportSchema.RenderTypes),\r\n };\r\n\r\n this.accountSelectorPerfMarker = this.props.creationPerfMarker.createChild('accountCampaignSelector');\r\n this.accountSelectorPerfMarker.willInit();\r\n }\r\n\r\n componentDidMount() {\r\n this.props.creationPerfMarker.done();\r\n }\r\n\r\n onPanelClick = (val) => {\r\n const panelStatus = { ...this.state.panelStatus };\r\n panelStatus[val] = !panelStatus[val];\r\n this.setState({ panelStatus });\r\n }\r\n\r\n onFailedValidation = (section) => {\r\n const { ...panelStatus } = this.state.panelStatus;\r\n panelStatus[section] = true;\r\n this.setState({ panelStatus, showValidationErrors: true });\r\n };\r\n\r\n setSection = (section, newData) => {\r\n const { ...data } = this.state.data;\r\n data[section] = _.defaults(newData, this.state.data[section]);\r\n this.setState({\r\n data,\r\n });\r\n }\r\n\r\n setWarning = (key, value) => {\r\n const { ...warnings } = this.state.warnings;\r\n warnings[key] = value;\r\n this.setState({\r\n warnings,\r\n });\r\n }\r\n\r\n setBlocker = (shoudBlock) => {\r\n this.setState({ blocking: shoudBlock });\r\n }\r\n\r\n setFilterSection = (data) => {\r\n this.setSection(FILTER, data);\r\n }\r\n\r\n setGeneralSection = (newData) => {\r\n const { ...data } = this.state.data;\r\n data[GENERAL] = _.defaults(newData, this.state.data[GENERAL]);\r\n if (data[GENERAL].format !== 'Xlsx') {\r\n data[SETTING] = _.defaults({ includeTotalRow: false }, this.state.data[SETTING]);\r\n }\r\n this.setState({\r\n data,\r\n });\r\n }\r\n\r\n setRootSection = (newData) => {\r\n const { ...data } = this.state.data;\r\n data[ROOT] = _.defaults(newData, this.state.data[ROOT]);\r\n\r\n if (newData.renderType && newData.renderType !== this.state.data[ROOT].renderType) {\r\n if (data[ROOT].renderType === 'Linechart') {\r\n data[GENERAL] = _.defaults({ timeGrain: 'Daily' }, this.state.data[GENERAL]);\r\n data[COLUMN] = _.defaults(\r\n { selected: this.props.reportSchema.Columns.linechartDefault },\r\n this.state.data[COLUMN]\r\n );\r\n } else if (data[ROOT].renderType === 'Barchart') {\r\n data[GENERAL] = _.defaults({ timeGrain: 'Summary' }, this.state.data[GENERAL]);\r\n data[COLUMN] = _.defaults(\r\n { selected: this.props.reportSchema.Columns.barchartDefault },\r\n this.state.data[COLUMN]\r\n );\r\n } else {\r\n data[COLUMN] = _.defaults(\r\n { selected: this.defaultColumns },\r\n this.state.data[COLUMN]\r\n );\r\n }\r\n }\r\n\r\n this.setState({\r\n data,\r\n });\r\n }\r\n\r\n render() {\r\n const {\r\n i18n, reportDefinition, updateId, reportSchema,\r\n legacyI18n, classes, identityDetails, saveType,\r\n permissions: {\r\n IsInternalUser,\r\n IsReportingUIPhaseNext,\r\n },\r\n } = this.props;\r\n const {\r\n account: {\r\n Id: accountId,\r\n TimeZone: accountTimeZone,\r\n } = {},\r\n } = identityDetails;\r\n const { panelStatus, renderTypes } = this.state;\r\n const getValidationItemProps = field =>\r\n ({ field, alwaysShowError: this.state.showValidationErrors });\r\n const disableTimeZoneSelector = IsReportingUIPhaseNext && accountId && accountTimeZone;\r\n\r\n return (\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n this.onPanelClick(GENERAL)} isUIVnext={IsReportingUIPhaseNext}>\r\n { this.accountSelectorPerfMarker.done(); }}\r\n />\r\n \r\n this.onPanelClick(COLUMN)} isUIVnext={IsReportingUIPhaseNext}>\r\n this.setSection(COLUMN, data)}\r\n timeGrain={this.state.data[GENERAL].timeGrain}\r\n renderType={this.state.data[ROOT].renderType}\r\n />\r\n \r\n this.onPanelClick(FILTER)} isUIVnext={IsReportingUIPhaseNext}>\r\n \r\n \r\n this.onPanelClick(SETTING)} isUIVnext={IsReportingUIPhaseNext}>\r\n this.setSection(SETTING, data)}\r\n forceValidate={this.state.showValidationErrors}\r\n disableIncludeTotalRow={\r\n !_.some(reportSchema.Columns.categories, category => category.type === 'MetricColumns') ||\r\n this.state.data[GENERAL].format !== 'Xlsx'\r\n }\r\n />\r\n \r\n
\r\n \r\n
\r\n {\r\n \r\n }\r\n
\r\n
\r\n {i18n.getString(_TL_('Not all metrics are in real time. Clicks and impressions in the last 1 hour, UET conversions in the last 2 hours, and Non-UET conversions (App Install, Offline Conversions) in the last 5 hours might not be included.'))}\r\n
\r\n \r\n
\r\n {\r\n reportDefinition.helpId &&\r\n
\r\n }\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst CreateReportStyled = withPermissionContext(withDefaultStyles(CreateReport, getStyle));\r\nexport { CreateReportStyled as CreateReport };\r\n\r\n\r\n/* eslint-disable react/no-typos */\r\nCreateReport.propTypes = {\r\n classes: PropTypes.objectOf(PropTypes.string).isRequired,\r\n reportDefinition: ReportingProps.reportDefinition.isRequired,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n // logger: ReportingProps.logger.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n // eslint-disable-next-line react/forbid-prop-types\r\n updateId: ReportingProps.updateId,\r\n reportSchema: ReportingProps.reportSchema.isRequired,\r\n savedReportData: PropTypes.objectOf(PropTypes.any),\r\n permissions: ReportingProps.permissions.isRequired,\r\n creationPerfMarker: perfMarkerPropTypes.isRequired,\r\n saveType: PropTypes.string.isRequired,\r\n};\r\n\r\nCreateReport.defaultProps = {\r\n updateId: undefined,\r\n savedReportData: null,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport { perfMarkerPropTypes } from '@bingads-webui/performance-marker';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { Loading } from '@bingads-webui-campaign/report-controls';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { withReportListContext, withRepositoryContext, withLegacyI18n, withIdentityContext, withPermissionContext, getErrorMessage, DefaultErrorView, navigator } from '@bingads-webui-campaign/report-shared';\r\nimport { deprecatedReports, schema } from '@bingads-webui-campaign/report-schema';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\nimport { withLastPromise, get } from '@bingads-webui-universal/primitive-utilities';\r\nimport { CreateReport } from './create-report';\r\nimport { getSaveType, isValidSaveType, getPartialConversionsQualifiedColumns } from './config';\r\nimport { getDataObject } from './components/shared/formatter/map';\r\nimport { getStyle } from './style';\r\n\r\n\r\nclass CreateReportIndex extends React.PureComponent {\r\n static instrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'CreateReport',\r\n value: 'reporting/CreateReport',\r\n activity: [\r\n {\r\n name: 'general',\r\n value: 'general',\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n\r\n static setupInstrumentation = (instrumentation) => {\r\n instrumentation.addScenario(CreateReportIndex.instrumentationSchema);\r\n return instrumentation.CreateReport.create();\r\n }\r\n\r\n static shouldReloadTaskItem(currentProps, previousProps) {\r\n const keys = ['executionId', 'templateId'];\r\n const currentPropsPick = _.pick(currentProps, keys);\r\n const previousPropsPick = _.pick(previousProps, keys);\r\n\r\n if (!_.isEqual(currentPropsPick, previousPropsPick)) {\r\n return currentPropsPick;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n static getDerivedStateFromProps(props, state) {\r\n const derivedState = CreateReportIndex.shouldReloadTaskItem(props, state);\r\n if (derivedState) {\r\n // Store propsPick in state so we can compare when props change.\r\n // Clear out previously-loaded data (so we don't render stale stuff).\r\n // https://reactjs.org/blog/2018/03/27/update-on-async-rendering.html#fetching-external-data-when-props-change\r\n return {\r\n ...derivedState,\r\n taskItem: null,\r\n };\r\n }\r\n\r\n return null;\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n const { instrumentation, viewName, perfMarker } = this.props;\r\n this.logger = CreateReportIndex.setupInstrumentation(instrumentation).general.create();\r\n this.creationPerfMarker = perfMarker.createChild(viewName);\r\n this.creationPerfMarker.willInit();\r\n }\r\n\r\n state = {\r\n taskItem: null,\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchTaskItem();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (CreateReportIndex.shouldReloadTaskItem(this.props, prevProps)) {\r\n this.fetchTaskItem();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.fetchTaskItemRequest) {\r\n this.fetchTaskItemRequest.cancel();\r\n }\r\n }\r\n\r\n fetchTaskItem() {\r\n const { repository, executionId, templateId } = this.props;\r\n this.creationPerfMarker.willFetchData();\r\n\r\n if (executionId) {\r\n this.fetchTaskItemRequest = withLastPromise({\r\n promiseFactory: () => repository.getDetailsByExecutionId(executionId),\r\n finish: ({\r\n TaskItem: taskItem,\r\n } = {}) => {\r\n this.fetchTaskItemRequest = null;\r\n this.setState({ taskItem, errorCode: null });\r\n },\r\n fail: (error) => {\r\n const errorCode = get(error, 'body.value[0].Code');\r\n this.setState({ taskItem: null, errorCode });\r\n },\r\n })();\r\n } else if (templateId) {\r\n this.fetchTaskItemRequest = withLastPromise({\r\n promiseFactory: () => repository.getDetailsByTaskItemId(templateId),\r\n finish: (taskItem) => {\r\n this.fetchTaskItemRequest = null;\r\n this.setState({ taskItem, errorCode: null });\r\n },\r\n fail: (error) => {\r\n const errorCode = get(error, 'body.value[0].Code');\r\n this.setState({ taskItem: null, errorCode });\r\n },\r\n })();\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n reportKey, executionId, templateId,\r\n i18n, reportList: { reports }, updateId, legacyI18n, identityDetails,\r\n permissions: { IsReportsMergeEnabled, IsInternalUser, IsReportingUIPhaseNext },\r\n GlobalErrorView,\r\n } = this.props;\r\n const {\r\n account: {\r\n Id: accountId,\r\n } = {},\r\n } = identityDetails;\r\n\r\n if (!reportKey && !executionId && !templateId) {\r\n throw new Error('At least one of reportKey, executionId or templateId is required!');\r\n }\r\n\r\n if (executionId || templateId) {\r\n const { taskItem, errorCode } = this.state;\r\n\r\n if (taskItem) {\r\n const { ReportType: reportType } = taskItem;\r\n if (deprecatedReports[reportType]) {\r\n return (\r\n
\r\n {i18n.getString(_TL_('This report type has been deprecated and is no longer available'))}\r\n
);\r\n }\r\n const reportSchema = schema[reportType];\r\n const reportDefinition = _.find(reports, ({ apiKey }) => apiKey === reportType);\r\n const savedReportData = getDataObject(taskItem);\r\n const saveType = getSaveType({\r\n IsReportsMergeEnabled,\r\n IsInternalUser,\r\n accountScope: !!accountId,\r\n taskItem,\r\n });\r\n\r\n // In new UI, we should always check 'Save as custom report' option,\r\n // even if it's create similar from a report instance.\r\n if (IsReportingUIPhaseNext && !isValidSaveType(savedReportData.setting.type)) {\r\n savedReportData.setting.type = saveType;\r\n }\r\n\r\n if (this.props.permissions.dynamic.PartialConversions) {\r\n savedReportData.column.selected =\r\n getPartialConversionsQualifiedColumns(savedReportData.column.selected);\r\n }\r\n\r\n this.creationPerfMarker.willRender();\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (errorCode) {\r\n return (\r\n
\r\n {i18n.getString(_TL_('Back to custom reports'))},\r\n ]}\r\n />\r\n
\r\n );\r\n }\r\n\r\n return ;\r\n }\r\n\r\n const reportDefinition = reports[reportKey];\r\n const { apiKey } = reportDefinition;\r\n const reportSchema = schema[apiKey];\r\n const saveType =\r\n getSaveType({ IsReportsMergeEnabled, IsInternalUser, accountScope: !!accountId });\r\n this.creationPerfMarker.willRender();\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\n\r\n/* eslint-disable react/no-typos */\r\nCreateReportIndex.propTypes = {\r\n reportKey: PropTypes.string,\r\n executionId: PropTypes.string,\r\n templateId: PropTypes.string,\r\n instrumentation: ReportingProps.instrumentation.isRequired,\r\n permissions: ReportingProps.permissions.isRequired,\r\n i18n: ReportingProps.i18n.isRequired,\r\n legacyI18n: ReportingProps.i18n.isRequired,\r\n reportList: ReportingProps.reportList.isRequired,\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n repository: ReportingProps.repository.isRequired,\r\n updateId: PropTypes.string,\r\n perfMarker: perfMarkerPropTypes.isRequired,\r\n viewName: PropTypes.string,\r\n GlobalErrorView: PropTypes.elementType,\r\n};\r\n\r\nCreateReportIndex.defaultProps = {\r\n reportKey: null,\r\n executionId: null,\r\n templateId: null,\r\n updateId: undefined,\r\n viewName: 'createReport',\r\n GlobalErrorView: DefaultErrorView,\r\n};\r\n\r\nconst hocs = [\r\n _.partial(withDefaultStyles, _, getStyle),\r\n withRepositoryContext,\r\n withIdentityContext,\r\n withReportListContext,\r\n withInstrumentation,\r\n withLegacyI18n,\r\n withI18nConsumer,\r\n withPermissionContext,\r\n];\r\n\r\nconst WrappedCreateReport = _.compose(...hocs)(CreateReportIndex);\r\n\r\nexport { WrappedCreateReport as CreateReport };\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 'TimePeriod',\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 ...VideoMetricColumns,\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\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 'TimePeriod',\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 ...VideoMetricColumns,\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\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 'TimePeriod',\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 ...VideoMetricColumns,\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\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 'TimePeriod',\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 ...VideoMetricColumns,\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\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 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'AdGroupName',\r\n 'PublisherUrl',\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 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'PublisherUrl',\r\n ],\r\n },\r\n AdDynamicTextPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\r\n 'AudienceId',\r\n 'AccountId',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\r\n 'Goal',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\r\n ],\r\n },\r\n UserLocationPerformanceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n ],\r\n default: [\r\n 'TimePeriod',\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};\r\n\r\n","import _ from 'underscore';\r\nimport { 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\n\r\nexport const elevatedColumnsMap =\r\n _.extend(\r\n {},\r\n performance, adExtension, advancedInsights, billing, changeHistory, dsa, product, targeting\r\n );\r\n\r\n","export const adExtension = {\r\n AdExtensionByKeywordReport: {\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\r\n 'AdExtensionType',\r\n 'Keyword',\r\n ],\r\n },\r\n AdExtensionByAdReport: {\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\r\n 'AdExtensionType',\r\n ],\r\n },\r\n AdExtensionDetailReport: {\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\r\n 'AdExtensionType',\r\n 'AdExtensionTypeId',\r\n 'AdExtensionId',\r\n 'AdExtensionPropertyValue',\r\n ],\r\n },\r\n CallDetailReport: {\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'CustomerId',\r\n 'AccountNumber',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\r\n 'CustomerName',\r\n 'AccountName',\r\n 'AccountNumber',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\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 'TimePeriod',\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 'Month',\r\n 'CustomerName',\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 'BillToCustomerName',\r\n 'Clicks',\r\n 'DocumentNumber',\r\n 'DocumentType',\r\n 'NetRevenue',\r\n 'NetRevenueUSD',\r\n ],\r\n mandatory: [\r\n 'Clicks',\r\n ],\r\n },\r\n BillingStatementReport: {\r\n default: [\r\n 'Month',\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 '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};\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 'TimePeriod',\r\n 'AccountName',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'CampaignName',\r\n 'Clicks',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'CTR',\r\n 'DynamicAdTarget',\r\n 'Impressions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'AdGroupName',\r\n 'Language',\r\n 'Spend',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'DynamicAdTarget',\r\n ],\r\n },\r\n DSACategoryPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'Clicks',\r\n 'CampaignName',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'CTR',\r\n 'Category1',\r\n 'Category2',\r\n 'Category0',\r\n 'Impressions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Language',\r\n 'AdGroupName',\r\n 'Spend',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'Category1',\r\n 'Category2',\r\n 'Category0',\r\n ],\r\n },\r\n DSASearchQueryPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'AverageCPC',\r\n 'AveragePosition',\r\n 'Clicks',\r\n 'CampaignName',\r\n 'Conversions',\r\n 'ConversionRate',\r\n 'CostPerConversion',\r\n 'CTR',\r\n 'Impressions',\r\n 'TopImpressionRatePercent',\r\n 'AbsoluteTopImpressionRatePercent',\r\n 'Language',\r\n 'AdGroupName',\r\n 'SearchQuery',\r\n 'Spend',\r\n ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'SearchQuery',\r\n ],\r\n },\r\n};\r\n\r\n","export const product = {\r\n ProductPartitionPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\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 ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'ProductGroup',\r\n 'PartitionType',\r\n ],\r\n },\r\n ProductPartitionUnitPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\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 ],\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AdGroupCriterionId',\r\n 'ProductGroup',\r\n ],\r\n },\r\n ProductDimensionPerformanceReport: {\r\n default: [\r\n 'TimePeriod',\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 ],\r\n mandatory: [\r\n 'TimePeriod',\r\n ],\r\n },\r\n ProductSearchQueryPerformanceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n 'CampaignName',\r\n 'SearchQuery',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 ],\r\n },\r\n ProductMatchCountReport: {\r\n mandatory: [\r\n 'AccountName',\r\n 'CampaignName',\r\n 'ProductGroup',\r\n 'MatchedProductsAtProductGroup',\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 ],\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 'TimePeriod',\r\n 'AccountName',\r\n 'AdGroupName',\r\n 'AgeGroup',\r\n 'Gender',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\r\n 'AccountName',\r\n 'AdGroupName',\r\n 'CompanyName',\r\n 'IndustryName',\r\n 'JobFunctionName',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 'TimePeriod',\r\n 'AccountName',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 '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 },\r\n GeographicPerformanceReport: {\r\n mandatory: [\r\n 'TimePeriod',\r\n 'AccountName',\r\n ],\r\n default: [\r\n 'TimePeriod',\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 'LocationType',\r\n 'MostSpecificLocation',\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 },\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'],\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 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};\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 AdGroupType,\r\n AvgPositionDeprecationPhase1,\r\n AvgPositionDeprecationPhase2,\r\n VideoMetrics,\r\n Description,\r\n AdScenarioType,\r\n NeighborhoodLocationType,\r\n Conversions,\r\n ConversionsQualified,\r\n AdId,\r\n PerformanceMax,\r\n ReachAndFreq,\r\n ReachAndFreq7Day,\r\n AdStrength,\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: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified],\r\n AdDynamicTextPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n AdExtensionByAdReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified],\r\n AdExtensionByKeywordReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified],\r\n AdExtensionDetailReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, Conversions, ConversionsQualified],\r\n AdGroupPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AdGroupType, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, ReachAndFreq, ReachAndFreq7Day],\r\n AdPerformanceReport: [AIM, AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, AdStrength, ReachAndFreq, ReachAndFreq7Day],\r\n AgeGenderAudienceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified],\r\n AudiencePerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, Conversions, ConversionsQualified],\r\n BillingStatementReport: [],\r\n BudgetSummaryReport: [],\r\n CallDetailReport: [],\r\n CampaignPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified, ReachAndFreq, ReachAndFreq7Day],\r\n ConversionPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n DestinationURLPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n DSAAutoTargetPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, AdId],\r\n DSACategoryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n DSASearchQueryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Description, Conversions, ConversionsQualified],\r\n GeographicPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, NeighborhoodLocationType, Conversions, ConversionsQualified],\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],\r\n NegativeKeywordConflictReport: [],\r\n ProductDimensionPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, Conversions, ConversionsQualified, PerformanceMax],\r\n ProductMatchCountReport: [PerformanceMax],\r\n ProductNegativeKeywordConflictReport: [PerformanceMax],\r\n ProductPartitionPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, PerformanceMax],\r\n ProductPartitionUnitPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, Conversions, ConversionsQualified, PerformanceMax],\r\n ProductSearchQueryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified, PerformanceMax],\r\n ProfessionalDemographicsAudienceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, VideoMetrics, AdScenarioType, Conversions, ConversionsQualified],\r\n PublisherUsagePerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, Conversions, ConversionsQualified],\r\n SearchCampaignChangeHistoryReport: [],\r\n SearchQueryPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, AdScenarioType, Conversions, ConversionsQualified],\r\n ShareOfVoiceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, defaultWhenManualCpmEnabled, AvgPositionDeprecationPhase2, Conversions, ConversionsQualified],\r\n UserLocationPerformanceReport: [AllConversions, ViewConversions, ViewThroughConversionsRevenue, GoalCategory, AvgPositionDeprecationPhase1, AvgPositionDeprecationPhase2, defaultWhenManualCpmEnabled, VideoMetrics, AdScenarioType, NeighborhoodLocationType, Conversions, ConversionsQualified],\r\n 'AccountPerformanceReport-SixWeeks': [AvgPositionDeprecationPhase2],\r\n 'AccountPerformanceReport-TwoMonths': [AvgPositionDeprecationPhase2],\r\n 'AccountPerformanceReport-TwoYears': [AvgPositionDeprecationPhase2],\r\n 'AccountPerformanceReport-ShareOfVoice': [AvgPositionDeprecationPhase2],\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","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 // 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 // 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 // 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 // AveragePosition\r\n AveragePosition: 'pop_BA_CampaignGrids_AvgPosition',\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 // 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 // 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 // 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 // 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 // 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 // CountryOfSale\r\n CountryOfSale: 'pop_BA_Reporting_Clarity_ProductCountryofSale',\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 // DayOfWeek\r\n DayOfWeek: 'pop_BA_Reporting_Clarity_DayOfWeek',\r\n // DeliveredMatchType\r\n DeliveredMatchType: 'Page_Reporting_Clarity_DeliveredMatchType',\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 // 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 GTIN: 'pop_BA_DimensionGrid_GTIN',\r\n // Headline\r\n Headline: 'pop_BA_Reporting_Clarity_DSA_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 // HourOfDay\r\n HourOfDay: 'pop_BA_Reporting_Clarity_HourOfDay',\r\n // HowChanged\r\n HowChanged: 'pop_BA_Reporting_Clarity_HowChanged',\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 // 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 // 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 // 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 // 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 // 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 RelativeCTR: 'pop_BA_Reporting_Clarity_RelativeCTR',\r\n // ReturnOnAdSpend\r\n ReturnOnAdSpend: 'pop_BA_CampaignGrids_ReturnAdSpend',\r\n // Revenue\r\n Revenue: '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 // 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: 'pop_BA_VideoAds_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};\r\n","import _ from 'underscore';\r\n\r\nconst enumBlackList = {\r\n LanguageCode: ['NO'],\r\n};\r\n\r\nexport function processFilters(fields) {\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 (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\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 };\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\r\n return node;\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","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\n\r\nexport function processSchema(\r\n entitySchema, sharedSchema,\r\n elevatedColumns, pilotRestrictionSets, pilotDefaultSets,\r\n columnNames, helpLinkIds = {}, timeRangeOverride, missingMandatoryColumnError\r\n) {\r\n const rawSchema = entitySchema.properties;\r\n // pass-through fields\r\n const reportSchema = _.pick(rawSchema, 'ReportAggregation', 'ExclusionSets', 'ScopeFilterLevel', 'MandateColumnSet');\r\n reportSchema.SchemaName = rawSchema.SchemaName;\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);\r\n _.extend(reportSchema, {\r\n Filters: {\r\n type: rawSchema.Filters.type,\r\n properties: processedFilter,\r\n },\r\n });\r\n\r\n // column chooser fields\r\n const validCategories = ['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 const mandatoryColumnsMap = _.object(mandatoryColumns, mandatoryColumns);\r\n const schemaMandatory = rawSchema.RequiredColumns || [];\r\n const dif = _.difference(schemaMandatory, mandatoryColumns);\r\n if (!_.isEmpty(dif)) {\r\n throw new Error(`Mandatory column not defined for ${entitySchema.name} ${JSON.stringify(dif)}`);\r\n }\r\n const aggregationRestrictions = getAggregationRestrictions(rawSchema);\r\n\r\n const processedColumns =\r\n processColumns(\r\n columnGroups, mandatoryColumnsMap, 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 },\r\n });\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","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 {\r\n Shared,\r\n AccountPerformanceReportUIV1,\r\n AccountPerformanceReport_SixWeeksUIV1,\r\n AccountPerformanceReport_TwoMonthsUIV1,\r\n AccountPerformanceReport_TwoYearsUIV1,\r\n AccountPerformanceReport_ShareOfVoiceUIV1,\r\n AdDynamicTextPerformanceReportUIV1,\r\n AdExtensionByAdReportUIV1,\r\n AdExtensionByKeywordReportUIV1,\r\n AdExtensionDetailReportUIV1,\r\n AdGroupPerformanceReportUIV1,\r\n AdPerformanceReportUIV1,\r\n AgeGenderAudienceReportUIV1,\r\n AudiencePerformanceReportUIV1,\r\n BillingStatementReportUIV1,\r\n BudgetSummaryReportUIV1,\r\n CallDetailReportUIV1,\r\n CampaignPerformanceReportUIV1,\r\n ConversionPerformanceReportUIV1,\r\n CustomerInvoiceReportUIV1,\r\n DSAAutoTargetPerformanceReportUIV1,\r\n DSACategoryPerformanceReportUIV1,\r\n DSASearchQueryPerformanceReportUIV1,\r\n DestinationURLPerformanceReportUIV1,\r\n FraudChangeHistoryReportUIV1,\r\n GeographicPerformanceReportUIV1,\r\n GoalsAndFunnelsReportUIV1,\r\n KeywordPerformanceReportUIV1,\r\n NegativeKeywordConflictReportUIV1,\r\n ProductDimensionPerformanceReportUIV1,\r\n ProductMatchCountReportUIV1,\r\n ProductNegativeKeywordConflictReportUIV1,\r\n ProductPartitionPerformanceReportUIV1,\r\n ProductPartitionUnitPerformanceReportUIV1,\r\n ProductSearchQueryPerformanceReportUIV1,\r\n ProfessionalDemographicsAudienceReportUIV1,\r\n PublisherUsagePerformanceReportUIV1,\r\n SearchCampaignChangeHistoryReportUIV1,\r\n SearchQueryPerformanceReportUIV1,\r\n ShareOfVoiceReportUIV1,\r\n UserLocationPerformanceReportUIV1,\r\n UserRoleChangeHistoryReportUIV1\r\n} from '@bingads-webui/report-ui-interface';\r\nimport { i18nMap } from '@bingads-webui-campaign/report-shared';\r\nimport { elevatedColumnsMap } from './columns/elevated-columns';\r\nimport { restrictedColumnsByReport, defaultColumnsByReport } from './columns/piloted-columns';\r\nimport { helpLinkIds } 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 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,\r\n timeRangeOverride[rawSchema.name],\r\n missingMandatoryColumnErrors[rawSchema.name]\r\n ),\r\n reportSchema => reportSchema.name\r\n);\r\n\r\n/* eslint-disable max-len */\r\nexport const AccountPerformanceReport = () => process(AccountPerformanceReportUIV1);\r\nexport const AccountPerformanceReport_SixWeeks = () => process(AccountPerformanceReport_SixWeeksUIV1);\r\nexport const AccountPerformanceReport_TwoMonths = () => process(AccountPerformanceReport_TwoMonthsUIV1);\r\nexport const AccountPerformanceReport_TwoYears = () => process(AccountPerformanceReport_TwoYearsUIV1);\r\nexport const AccountPerformanceReport_ShareOfVoice = () => process(AccountPerformanceReport_ShareOfVoiceUIV1);\r\nexport const AdDynamicTextPerformanceReport = () => process(AdDynamicTextPerformanceReportUIV1);\r\nexport const AdExtensionByAdReport = () => process(AdExtensionByAdReportUIV1);\r\nexport const AdExtensionByKeywordReport = () => process(AdExtensionByKeywordReportUIV1);\r\nexport const AdExtensionDetailReport = () => process(AdExtensionDetailReportUIV1);\r\nexport const AdGroupPerformanceReport = () => process(AdGroupPerformanceReportUIV1);\r\nexport const AdPerformanceReport = () => process(AdPerformanceReportUIV1);\r\nexport const AgeGenderAudienceReport = () => process(AgeGenderAudienceReportUIV1);\r\nexport const AudiencePerformanceReport = () => process(AudiencePerformanceReportUIV1);\r\nexport const BillingStatementReport = () => process(BillingStatementReportUIV1);\r\nexport const BudgetSummaryReport = () => process(BudgetSummaryReportUIV1);\r\nexport const CallDetailReport = () => process(CallDetailReportUIV1);\r\nexport const CampaignPerformanceReport = () => process(CampaignPerformanceReportUIV1);\r\nexport const ConversionPerformanceReport = () => process(ConversionPerformanceReportUIV1);\r\nexport const CustomerInvoiceReport = () => process(CustomerInvoiceReportUIV1);\r\nexport const DSAAutoTargetPerformanceReport = () => process(DSAAutoTargetPerformanceReportUIV1);\r\nexport const DSACategoryPerformanceReport = () => process(DSACategoryPerformanceReportUIV1);\r\nexport const DSASearchQueryPerformanceReport = () => process(DSASearchQueryPerformanceReportUIV1);\r\nexport const DestinationURLPerformanceReport = () => process(DestinationURLPerformanceReportUIV1);\r\nexport const FraudChangeHistoryReport = () => process(FraudChangeHistoryReportUIV1);\r\nexport const GeographicPerformanceReport = () => process(GeographicPerformanceReportUIV1);\r\nexport const GoalsAndFunnelsReport = () => process(GoalsAndFunnelsReportUIV1);\r\nexport const KeywordPerformanceReport = () => process(KeywordPerformanceReportUIV1);\r\nexport const NegativeKeywordConflictReport = () => process(NegativeKeywordConflictReportUIV1);\r\nexport const ProductDimensionPerformanceReport = () => process(ProductDimensionPerformanceReportUIV1);\r\nexport const ProductMatchCountReport = () => process(ProductMatchCountReportUIV1);\r\nexport const ProductNegativeKeywordConflictReport = () => process(ProductNegativeKeywordConflictReportUIV1);\r\nexport const ProductPartitionPerformanceReport = () => process(ProductPartitionPerformanceReportUIV1);\r\nexport const ProductPartitionUnitPerformanceReport = () => process(ProductPartitionUnitPerformanceReportUIV1);\r\nexport const ProductSearchQueryPerformanceReport = () => process(ProductSearchQueryPerformanceReportUIV1);\r\nexport const ProfessionalDemographicsAudienceReport = () => process(ProfessionalDemographicsAudienceReportUIV1);\r\nexport const PublisherUsagePerformanceReport = () => process(PublisherUsagePerformanceReportUIV1);\r\nexport const SearchCampaignChangeHistoryReport = () => process(SearchCampaignChangeHistoryReportUIV1);\r\nexport const SearchQueryPerformanceReport = () => process(SearchQueryPerformanceReportUIV1);\r\nexport const ShareOfVoiceReport = () => process(ShareOfVoiceReportUIV1);\r\nexport const UserLocationPerformanceReport = () => process(UserLocationPerformanceReportUIV1);\r\nexport const UserRoleChangeHistoryReport = () => process(UserRoleChangeHistoryReportUIV1);\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 AudiencePerformanceReport: { get: AudiencePerformanceReport, enumerable: true },\r\n BillingStatementReport: { get: BillingStatementReport, enumerable: true },\r\n BudgetSummaryReport: { get: BudgetSummaryReport, enumerable: true },\r\n CallDetailReport: { get: CallDetailReport, enumerable: true },\r\n CampaignPerformanceReport: { get: CampaignPerformanceReport, enumerable: true },\r\n ConversionPerformanceReport: { get: ConversionPerformanceReport, enumerable: true },\r\n CustomerInvoiceReport: { get: CustomerInvoiceReport, 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});\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","import { validationLocalization } from '@bingads-webui-campaign-react/smart-i18n';\r\nimport { columnChooser } from './column-chooser';\r\nimport { filter } from './filter';\r\nimport { CronFormat } from './cron-format';\r\nimport { dateRange } from './date-range';\r\nimport { inlineDownload } from './inline-download';\r\nimport { inlineEdit } from './inline-edit';\r\n\r\nexport const legacyKeys = [\r\n validationLocalization, columnChooser, filter, CronFormat, dateRange, inlineDownload, inlineEdit];\r\n","export const columnChooser = {\r\n ColumnChooser_Header: _TL_('Modify columns'),\r\n ColumnChooser_SubHeader: _TL_(''),\r\n ColumnChooser_AvailableColumnsHeader: _TL_('Available columns'),\r\n ColumnChooser_SelectedColumnsHeader: _TL_('Selected columns (drag and drop to reorder)'),\r\n ColumnChooser_SelectedColumnsHeader_TopHalf: _TL_('Selected rows'),\r\n ColumnChooser_SelectedColumnsHeader_BottomHalf: _TL_('Selected columns'),\r\n ColumnChooser_SaveColumnDescription: _TL_('Save this set of columns'),\r\n ColumnChooser_Apply: _TL_('Apply'),\r\n ColumnChooser_Cancel: _TL_(''),\r\n ColumnChooser_Add: _TL_('Add'),\r\n ColumnChooser_Added: _TL_('Added'),\r\n ColumnChooser_Remove: _TL_('Remove'),\r\n ColumnChooser_AddAllInList: _TL_('Add all columns'),\r\n ColumnChooser_RemoveAllInList: _TL_('Remove all columns'),\r\n ColumnChooser_RemoveAllSelected: _TL_('Remove all selected columns'),\r\n ColumnChooser_NoSearchResult: _TL_('No results found'),\r\n ColumnChooser_Disabled: _TL_('Add'),\r\n ColumnChooser_Search_Column: _TL_('Search column'),\r\n ColumnChooser_AddColumn: _TL_('Add Column {{columnName}}'),\r\n ColumnChooser_RemoveColumn: _TL_('Remove Column {{columnName}}'),\r\n ColumnChooser_LiftColumn: _TL_('You have lifted the {{columnName}} column in position {{positionFrom}}.'),\r\n ColumnChooser_MoveColumn: _TL_('You have moved the {{columnName}} column from position {{positionFrom}} to position {{positionTo}}.'),\r\n ColumnChooser_DropColumn: _TL_('You have dropped the {{columnName}} column. You have moved the {{columnName}} column from position {{positionFrom}} to position {{positionTo}}.'),\r\n ColumnChooser_RemovedColumns: _TL_('You have removed the {{columnNames}} columns.'),\r\n ColumnChooser_RemovedColumn: _TL_('You have removed the {{columnNames}} column.'),\r\n ColumnChooser_AddedColumns: _TL_('You have added the {{columnNames}} columns.'),\r\n ColumnChooser_AddedColumn: _TL_('You have added the {{columnNames}} column.'),\r\n};\r\n\r\n","export const filter = {\r\n Filter_Operator_IN: _TL_('either of'),\r\n Filter_Operator_EQ: _TL_('equals'),\r\n Filter_Operator_NEQ: _TL_('does not equal'),\r\n Filter_Operator_Contains: _TL_('contains'),\r\n Filter_Operator_Not_Contains: _TL_('does not contain'),\r\n Filter_Operator_StartsWith: _TL_('begins with'),\r\n Filter_Operator_EndsWith: _TL_('ends with'),\r\n Filter_Operator_LT: _TL_('less than'),\r\n Filter_Operator_GT: _TL_('greater than'),\r\n Filter_Operator_LTE: _TL_('less than or equals'),\r\n Filter_Operator_GTE: _TL_('greater than or equals'),\r\n Filter_Validation_EnumSelectionRequired: _TL_('Select at least one option'),\r\n Filter_Validation_Common_Required: _TL_('Required field'),\r\n Filter_Validation_Common_Number: _TL_('Only numeric values allowed'),\r\n Filter_Validation_Common_Number_Range: _TL_('Numeric value out of allowed range'),\r\n Filter_Validation_Common_Integer: _TL_('Only integer values allowed'),\r\n Filter_Validation_Common_Date: _TL_('Incorrect date format'),\r\n Filter_Validation_Common_Id_Count: _TL_('Only {{maxCount}} items allowed'),\r\n Filter_Cannot_Have_Duplicate: _TL_('Cannot filter by duplicate property'),\r\n Filter_Remove: _TL_('Remove'),\r\n Filter_PredicateList_New: _TL_('Add another'),\r\n Performance: _TL_('Performance'),\r\n Filter_Key_AriaLabel: _TL_('What to filter'),\r\n Filter_Operator_AriaLabel: _TL_('How to filter'),\r\n Filter_Value_AriaLabel: _TL_('What to filter on'),\r\n SelectEntityOrEntities: _TL_('Select {0}', { comment: '{0} is placeholder for name' }),\r\n SelectedEntityOrEntities: _TL_(' selected {0}', { comment: '{0} is placeholder for name' }),\r\n Selector_LoadingText: _TL_('Loading...'),\r\n Selector_Check_All: _TL_('All'),\r\n Filter_Selector_MoreThanLimit: _TL_('Showing only the first {0} {1}. Narrow your search to find the right set of {1}', { comment: '{0} is the max number of items that can be displayed. {1} is the name of the entity in plural form, eg. campaigns, ads, labels etc.' }),\r\n NoEntityOrEntities: _TL_('No {0}', { comment: '{0} is placeholder for name' }),\r\n 'Select all': _TL_('Select all'),\r\n 'Deselect all': _TL_('Deselect all'),\r\n 'Select this row': _TL_('Select this row'),\r\n 'Deselect this row': _TL_('Deselect this row'),\r\n};\r\n","export const CronFormat = {\r\n CronFormatter_Frequency_MonthlyTemplate: _TL_('Runs {{frequency}} on day {{dayOfMonth}} at {{hour}}'),\r\n CronFormatter_Frequency_WeeklyTemplate: _TL_('Runs {{frequency}} on {{dayOfWeek}} at {{hour}}'),\r\n CronFormatter_Frequency_DailyTemplate: _TL_('Runs {{frequency}} at {{hour}}'),\r\n CronFormatter_FrequencyGrain_Runs_Daily: _TL_('daily'),\r\n CronFormatter_FrequencyGrain_Runs_Monthly: _TL_('monthly'),\r\n CronFormatter_FrequencyGrain_Runs_Weekly: _TL_('weekly'),\r\n CronFormatter_FrequencyGrain_DropdownMenu_None: _TL_('None'),\r\n CronFormatter_FrequencyGrain_DropdownMenu_Daily: _TL_('Daily'),\r\n CronFormatter_FrequencyGrain_DropdownMenu_Monthly: _TL_('Monthly'),\r\n CronFormatter_FrequencyGrain_DropdownMenu_Weekly: _TL_('Weekly'),\r\n};\r\n","export const dateRange = {\r\n DateFilter_Option_Custom: _TL_('Custom'),\r\n DateFilter_Option_CustomTime: _TL_('Time'),\r\n DateFilter_Option_Today: _TL_('Today'),\r\n DateFilter_Option_Yesterday: _TL_('Yesterday'),\r\n DateFilter_Option_ThisWeekSunday: _TL_('This week (Sun - Today)'),\r\n DateFilter_Option_ThisWeekMonday: _TL_('This week (Mon - Today)'),\r\n DateFilter_Option_Last7days: _TL_('Last 7 days'),\r\n DateFilter_Option_LastWeekSunday: _TL_('Last week (Sun - Sat)'),\r\n DateFilter_Option_LastWeekMonday: _TL_('Last week (Mon - Sun)'),\r\n DateFilter_Option_Last14Days: _TL_('Last 14 days'),\r\n DateFilter_Option_ThisMonth: _TL_('This month'),\r\n DateFilter_Option_LastMonth: _TL_('Last month'),\r\n DateFilter_Option_Last30Days: _TL_('Last 30 days'),\r\n DateFilter_Option_Last3Months: _TL_('Last 3 months'),\r\n DateFilter_Option_Last6Months: _TL_('Last 6 months'),\r\n DateFilter_Option_TwelveMonthsToDate: _TL_('Rolling year'),\r\n DateFilter_Option_ThisYear: _TL_('This year'),\r\n DateFilter_Option_LastYear: _TL_('Last year'),\r\n DateFilter_Option_AllTime: _TL_('Entire time'),\r\n DateFilter_Option_PreviousPeriod: _TL_('Previous period'),\r\n DateFilter_Option_SamePeriodLastYear: _TL_('Same period last year'),\r\n DateFilter_Option_CustomPeriod: _TL_('Custom'),\r\n};\r\n","export const inlineDownload = {\r\n InlineDownloadReports_Column_EmailFrequency: _TL_('How often'),\r\n InlineDownloadReports_EmailAndScheduling_Frequency_None: _TL_('One time'),\r\n InlineDownloadReports_EmailAndScheduling_Frequency_Daily_Template: _TL_('at {{hour}}'),\r\n InlineDownloadReports_EmailAndScheduling_Frequency_Weekly_Template: _TL_('on {{dayOfWeek}} at {{hour}}'),\r\n InlineDownloadReports_EmailAndScheduling_Frequency_Monthly_Template: _TL_('on day {{dayOfMonth}} of every month at {{hour}}'),\r\n InlineDownloadReports_Action_UnsubscribeMe_Failed_NotSubscribed: _TL_('You didn\\'t subscribe to report \"{{report}}\"'),\r\n InlineDownloadReports_Action_UnsubscribeMe_Failed: _TL_('Failed to unsubscribe from report \"{{report}}\"'),\r\n InlineDownloadReports_Action_UnsubscribeMe_Succeeded: _TL_('You have unsubscribed from report \"{{report}}\"'),\r\n};\r\n","export const inlineEdit = {\r\n Grid_Edit_Cell: _TL_('Edit cell of column {{columnName}} and row {{rowIndex}}'),\r\n Grid_EditButtonText: _TL_('Edit'),\r\n Save: _TL_('Save'),\r\n Cancel: _TL_('Cancel'),\r\n Loading: _TL_('Loading...'),\r\n Schema_ReportEmailRule_Property_Cron: _TL_('Frequency'),\r\n Schema_ReportEmailRule_Property_StartTime: _TL_('Start date'),\r\n Schema_ReportEmailRule_Property_EndTime: _TL_('End date'),\r\n InlineDownloadReports_EmailAndScheduling_SendReportTo: _TL_('Send report to'),\r\n InlineDownloadReports_SearchUsers: _TL_('Search users'),\r\n InlineDownloadReports_EmailAndScheduling_Email_Me: _TL_('me'),\r\n InlineDownloadReports_EmailAndScheduling_Email_Template_Me: _TL_('{{email}} ({{me}})'),\r\n InlineDownloadReports_EmailAndScheduling_User: _TL_('{{email}} {{firstName}} {{lastName}}'),\r\n InlineDownloadReports_EmailAndScheduling_FailedToLoadUsers: _TL_('Failed to load users'),\r\n InlineDownloadReports_EmailAndScheduling_AllUsers: _TL_('All users with access to view reports'),\r\n 'Click to learn more about {{item}}': _TL_('Click to learn more about {{item}}'),\r\n SimpleForm_Button_Save: _TL_('Save'),\r\n SimpleForm_Button_Cancel: _TL_('Cancel'),\r\n KoSchema_String_RemainingCharactersText: _TL_('{{count}} characters remaining'),\r\n KoSchema_String_ExceededCharactersText: _TL_('Exceeded by {{count}} characters'),\r\n /* Start: date range column */\r\n Custom: _TL_('Custom'),\r\n Schema_Enum_DateRangePreset_AllTime: _TL_('Entire time'),\r\n Schema_Enum_DateRangePreset_LastBusinessWeek: _TL_('Last business week'),\r\n Schema_Enum_DateRangePreset_LastFourteenDays: _TL_('Last 14 days'),\r\n Schema_Enum_DateRangePreset_LastMonth: _TL_('Last month'),\r\n Schema_Enum_DateRangePreset_LastSevenDays: _TL_('Last 7 days'),\r\n Schema_Enum_DateRangePreset_LastSixMonth: _TL_('Last six month'),\r\n Schema_Enum_DateRangePreset_LastThirtyDays: _TL_('Last 30 days'),\r\n Schema_Enum_DateRangePreset_LastThreeMonth: _TL_('Last three month'),\r\n Schema_Enum_DateRangePreset_LastWeekStartingMon: _TL_('Last week (Mon - Sun)'),\r\n Schema_Enum_DateRangePreset_LastWeekStartingSun: _TL_('Last week (Sun - Sat)'),\r\n Schema_Enum_DateRangePreset_LastYear: _TL_('Last year'),\r\n Schema_Enum_DateRangePreset_ThisMonth: _TL_('This month'),\r\n Schema_Enum_DateRangePreset_ThisWeekFromMon: _TL_('This week (Mon - Today)'),\r\n Schema_Enum_DateRangePreset_ThisWeekFromSun: _TL_('This week (Sun - Today)'),\r\n Schema_Enum_DateRangePreset_ThisYear: _TL_('This year'),\r\n Schema_Enum_DateRangePreset_Today: _TL_('Today'),\r\n Schema_Enum_DateRangePreset_Yesterday: _TL_('Yesterday'),\r\n /* End: date range column */\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { buildLegacyI18n } from '@bingads-webui-campaign-react/smart-i18n';\r\nimport { legacyKeys } from './i18n/keys';\r\n\r\nexport const LegacyI18n = React.createContext('');\r\n\r\nclass LeagacyI18nProvider extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const context = buildLegacyI18n(props.i18n, legacyKeys);\r\n this.state = {\r\n context,\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n );\r\n }\r\n}\r\n\r\nLeagacyI18nProvider.propTypes = {\r\n /**\r\n * Localization module\r\n */\r\n i18n: PropTypes.shape({ getString: PropTypes.func }).isRequired,\r\n children: PropTypes.node.isRequired,\r\n};\r\n\r\nconst Wrapped = withI18nConsumer(LeagacyI18nProvider);\r\n\r\nexport { Wrapped as LeagacyI18nProvider };\r\n","import React from 'react';\r\nimport { LegacyI18n } from './legacy-i18n';\r\n\r\nexport const withLegacyI18n = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const Identity = React.createContext('');\r\n\r\nexport function IdentityProvider({ serverContext, children }) {\r\n const identityDetails = {\r\n user: serverContext.CurrentUser,\r\n // customer id should come from url, discuss with Raymond\r\n customer: serverContext.CurrentCustomer,\r\n account: serverContext.CurrentAccount,\r\n lcid: serverContext.CultureLcid,\r\n };\r\n return (\r\n \r\n {children}\r\n );\r\n}\r\n\r\nIdentityProvider.propTypes = {\r\n /**\r\n * Content rendered in the body\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n // eslint-disable-next-line react/forbid-prop-types\r\n serverContext: PropTypes.object.isRequired,\r\n\r\n};\r\n\r\n","import React from 'react';\r\nimport { Identity } from './identity-provider';\r\n\r\nexport const withIdentityContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\nimport { odata } from '@bingads-webui/http-util';\r\nimport * as url from '@bingads-webui/url-util';\r\nimport { get } from '@bingads-webui-universal/primitive-utilities';\r\nimport { odataQuery, odataUri, odataCast } from '@bingads-webui/odata-converter';\r\n\r\nfunction sendBatchRequest(definition, params, options) {\r\n const reqs = _.map(params, (param) => {\r\n const id = param.Id;\r\n const uri = odataUri.convert({ definition, options, id });\r\n\r\n return {\r\n type: options.action,\r\n url: uri,\r\n data: param,\r\n };\r\n });\r\n\r\n return odata.batch({ reqs, path: options.path }).then((response) => {\r\n if (_.isFunction(options.processResponse)) {\r\n options.processResponse(response);\r\n }\r\n return response;\r\n });\r\n}\r\n\r\nfunction getCommonOptions({\r\n ajaxOptions = {},\r\n urlParameters,\r\n host,\r\n path,\r\n headers,\r\n successCallback,\r\n state,\r\n oDataToken,\r\n} = {}) {\r\n const options = _.defaults({}, ajaxOptions);\r\n if (_.isObject(urlParameters)) {\r\n options.urlParameters = urlParameters;\r\n }\r\n if (host) {\r\n options.host = host;\r\n }\r\n if (path) {\r\n options.path = path;\r\n }\r\n if (oDataToken) {\r\n options.oDataToken = oDataToken;\r\n }\r\n if (headers) {\r\n options.headers = headers;\r\n }\r\n // [lizho] Remove this after related OData APIs are refactored.\r\n // This callback is to get response header for product offer/product group related OData APIs.\r\n if (_.isFunction(successCallback)) {\r\n options.success = successCallback\r\n }\r\n // \r\n if (state) {\r\n options.params = _.clone(state.attributes);\r\n }\r\n return options;\r\n}\r\n\r\nexport class ODataBaseAdapter {\r\n // All of the methods shown here must return a promise\r\n\r\n // \"definition\" is a resource defintion that would\r\n // be returned by DS#defineResource\r\n\r\n // \"options\" would be the options argument that\r\n // was passed into the DS method that is calling\r\n // the adapter method\r\n constructor(options = {}) {\r\n this.options = options;\r\n }\r\n\r\n convertQuery(queryParameters) {\r\n return odataQuery.convert(queryParameters);\r\n }\r\n\r\n create(definition, attrs, options) {\r\n _.extendOwn(options, this.options);\r\n let data = odataCast.data({ data: attrs, definition, options });\r\n let urlParameters = '';\r\n\r\n // Below if block is for the calls being made without EDM models\r\n // This enables making \"POST\" calls with query parameters without edm.\r\n if (attrs.queryParams) {\r\n urlParameters = this.convertQuery(attrs.queryParams);\r\n data = _.omit(data, 'queryParams');\r\n }\r\n\r\n // Must resolve the promise with the created item\r\n // NOTICE: added ajaxOptions here.\r\n return odata\r\n .post(odataUri.convert({ definition, options }), _.defaults({ data, urlParameters }, getCommonOptions(options)));\r\n }\r\n\r\n find(definition, id, options) {\r\n _.extendOwn(options, this.options);\r\n let params = {};\r\n let queryParameters = options.queryParameters;\r\n\r\n if (_.isObject(queryParameters)) {\r\n params = { data: _.omit(this.convertQuery(queryParameters), '$top', '$count') };\r\n }\r\n\r\n params.path = options.path;\r\n\r\n // Must resolve the promise with the found item\r\n return odata.get(odataUri.convert({ definition, options, id, isFinding: true }), _.defaults(params, getCommonOptions(options)));\r\n }\r\n\r\n findAll(definition, params, options = {}) {\r\n // Must resolve the promise with the found items\r\n _.extendOwn(options, this.options);\r\n const filterOptions = options.filterOptions;\r\n\r\n // params.entitySet is flavored. options.entitySet is only surported for backward support.\r\n const queryEntitySet = get(params, 'query.entitySet');\r\n const entitySet = options.edmRootResourceIdentifier && queryEntitySet ?\r\n options.edmRootResourceIdentifier.identifyEntitySet(queryEntitySet) :\r\n get(options, 'entitySet');\r\n\r\n let request;\r\n\r\n if (entitySet && options.edm && get(entitySet, 'navigation.source.type') instanceof options.edm.types.ActionType) {\r\n request = odata\r\n .post(\r\n url.queryify(odataUri.convert({ definition, options, isFinding: true, entitySet }), this.convertQuery(_.extend({ filterOptions }, params)), options.ajaxOptions.customParameterizationFunc),\r\n _.defaults({ data: entitySet.navigation.parameters }, getCommonOptions(options))\r\n );\r\n\r\n options.cacheResponse = false;\r\n } else {\r\n request = odata\r\n .get(\r\n odataUri.convert({ definition, options, isFinding: true, entitySet }),\r\n _.defaults({ data: this.convertQuery(_.extend({ filterOptions }, params)) }, getCommonOptions(options))\r\n );\r\n }\r\n\r\n return request.then((res) => {\r\n const addPropertyTotalCount = (obj) => Object.defineProperty(obj, 'totalCount', {\r\n value: res['@odata.count'],\r\n enumerable: false,\r\n });\r\n\r\n const addPropertyRaw = (obj) => Object.defineProperty(obj, 'raw', {\r\n value: res,\r\n enumerable: false,\r\n });\r\n\r\n const queryId = _.uniqueId('query-');\r\n\r\n // if OData results is just an array of string, make it an object then assign the object to value.\r\n if (_.isString(_.first(res.value))) {\r\n res.value = _.map(res.value, item => ({id : _.uniqueId('item-'), value: item}));\r\n }\r\n\r\n // JSData requires ID for every resource\r\n // Some calls to OData server won't return items with ID, or return items with an empty string as id\r\n // We add ID here to fit JSData requirement before JSData inject happens\r\n _.each(res.value, (item, index) => {\r\n if (!_.has(item, definition.idAttribute) || item[definition.idAttribute] === '') {\r\n item[definition.idAttribute] = `${queryId}-${index}`;\r\n }\r\n });\r\n\r\n const addProperties = _.compose(addPropertyTotalCount, addPropertyRaw);\r\n\r\n if (options.cacheResponse) {\r\n options.afterInject = _.compose(\r\n options.afterInject || _.identity,\r\n (innerOptions, injected) => addProperties(injected)\r\n );\r\n } else {\r\n // if odata response payload is not wrapped in value property,\r\n // move the contents under res.value\r\n res.value = _.has(res, 'value') ? res.value : res;\r\n addProperties(res.value);\r\n }\r\n\r\n return res.value;\r\n }, (res) => {\r\n //in case of error, it returns statusText for caller\r\n return {\r\n responseText: res.responseText,\r\n status: res.status,\r\n statusText: res.statusText,\r\n errors: res.errors,\r\n raw: res.body,\r\n };\r\n });\r\n }\r\n\r\n update(definition, id, attrs, options) {\r\n _.extendOwn(options, this.options);\r\n const data = odataCast.data({ data: attrs, definition, options });\r\n\r\n return odata\r\n .patch(\r\n odataUri.convert({ definition, options, id }),\r\n // NOTICE: modified to replace app state/config\r\n _.defaults({ data }, getCommonOptions(options))\r\n );\r\n }\r\n updateAll(definition, attrs, params, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n // Must resolve the promise with the updated items\r\n return sendBatchRequest(definition, params.reqs, options);\r\n }\r\n\r\n destroy(definition, id, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n // Must return a promise\r\n return odata\r\n .delete(odataUri.convert({ definition, options, id }), getCommonOptions(options))\r\n .then(_.property('value'));\r\n }\r\n\r\n destroyAll(definition, params, options) {\r\n _.extendOwn(options, this.options);\r\n\r\n return sendBatchRequest(definition, params.reqs, options);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ODataAdapter } from './js-data-odata';\r\n\r\nfunction defaultGetODataURLWithKey(odataURL) {\r\n return ({ key }) => `${odataURL}(${key})`;\r\n}\r\n\r\nlet ajaxOptions;\r\n\r\nexport function initJsDataLight({\r\n host,\r\n path,\r\n oDataToken,\r\n loginType,\r\n sessionId,\r\n error,\r\n}) {\r\n ajaxOptions = {\r\n host,\r\n path,\r\n oDataToken,\r\n loginType,\r\n sessionId,\r\n error,\r\n };\r\n}\r\n\r\nexport class JsDataLight {\r\n constructor({\r\n entityName,\r\n idAttribute,\r\n odataURL,\r\n getODataURLWithKey,\r\n }) {\r\n if (!ajaxOptions) {\r\n throw new Error('JsDataLight is not initialized');\r\n }\r\n\r\n this.odataAdapter = new ODataAdapter();\r\n\r\n this.odataURL = odataURL;\r\n this.getODataURLWithKey = getODataURLWithKey || defaultGetODataURLWithKey(odataURL);\r\n\r\n this.entity = {\r\n class: entityName,\r\n name: entityName,\r\n endpoint: entityName,\r\n // Used by js-data-odata-base-adapter\r\n // Refer: AdsAppUISharedComponents/private/client-data/packages/\r\n // js-data-odata-base-adapter/src/index.es\r\n idAttribute,\r\n };\r\n // Used by grid data source\r\n // Refer: AdsAppUISharedComponents/private/client-projection-grid/packages/\r\n // projection-grid/src/data-source/js-data.js\r\n this.idAttribute = idAttribute;\r\n\r\n this.options = _.defaults({ ajaxOptions }, {\r\n // This is some stub code which is required by the js-data-odata module.\r\n edm: {\r\n types: {\r\n ActionType: class ActionType { },\r\n },\r\n },\r\n });\r\n }\r\n\r\n getOptions(options) {\r\n const entitySet = {\r\n odataURL: this.odataURL,\r\n\r\n // This is another stub code which is required by the js-data-odata module.\r\n navigation: {\r\n source: {\r\n type: {\r\n\r\n },\r\n },\r\n },\r\n\r\n $withKey: key => ({\r\n odataURL: this.getODataURLWithKey({ key }),\r\n }),\r\n };\r\n\r\n const finalOptions = _.defaults({}, options, { entitySet }, this.options);\r\n\r\n return finalOptions;\r\n }\r\n\r\n create(data, options) {\r\n return this.odataAdapter.create(this.entity, data, this.getOptions(options));\r\n }\r\n\r\n update(id, data, options) {\r\n return this.odataAdapter.update(this.entity, id, data, this.getOptions(options));\r\n }\r\n\r\n find(id, options) {\r\n return this.odataAdapter.find(this.entity, id, this.getOptions(options));\r\n }\r\n\r\n findAll(params, { afterFindAll, ...options } = {}) {\r\n return this.odataAdapter\r\n .findAll(this.entity, params, this.getOptions(options))\r\n .then(data => (_.isFunction(afterFindAll) ? afterFindAll(this.entity, data) : data))\r\n .then((data) => {\r\n if (_.isArray(data)) {\r\n return data;\r\n }\r\n\r\n throw data;\r\n });\r\n }\r\n}\r\n","/* eslint-disable */\r\nimport _ from 'underscore';\r\n\r\nimport { FilterEntity } from '@bingads-webui/filter-entity';\r\nimport { ODataBaseAdapter } from './js-data-odata-adaptor';\r\nimport { odataQuery } from '@bingads-webui/odata-converter';\r\n\r\nexport class ODataAdapter extends ODataBaseAdapter {\r\n convertQuery(queryParameters) {\r\n const { filterOptions = {}, where = {} } = queryParameters;\r\n const ret = odataQuery.convert(queryParameters);\r\n const { '*': { contains: search } = {} } = where;\r\n\r\n if (!_.isString(where) || _.isEmpty(where)) {\r\n const restWhere = _.omit(where, '*');\r\n\r\n if (!_.isEmpty(restWhere)) {\r\n const $filter = new FilterEntity(restWhere, filterOptions).odataV4();\r\n if (!_.isEmpty($filter)) {\r\n ret.$filter = $filter;\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n","export const modeEnum = {\r\n PRIVATE: 'PRIVATE',\r\n SHARED: 'SHARED',\r\n};\r\n","import { JsDataLight } from '../js-data-light';\r\nimport { getScopePath } from './get-scope-path';\r\nimport { modeEnum } from '../reporting-contexts/mode-updater/modes';\r\n\r\nlet cid;\r\nlet pcid;\r\nlet aid;\r\nlet mode = modeEnum.PRIVATE;\r\n\r\nexport class JsDataLightWithScopePath extends JsDataLight {\r\n static init(options) {\r\n ({\r\n cid,\r\n aid,\r\n pcid,\r\n } = options);\r\n }\r\n\r\n static updateMode(newMode) {\r\n mode = newMode;\r\n }\r\n\r\n constructor({\r\n odataURL, ...options\r\n }) {\r\n const currentMode = options.mode || mode;\r\n const scopePath = getScopePath({\r\n cid, aid, pcid, mode: currentMode,\r\n });\r\n super({\r\n ...options,\r\n odataURL: `${scopePath}${odataURL}`,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { modeEnum } from '../reporting-contexts/mode-updater/modes';\r\n\r\nexport function getScopePath({\r\n cid,\r\n aid,\r\n pcid,\r\n mode,\r\n}) {\r\n if (!_.contains(_.values(modeEnum), mode)) {\r\n throw new RangeError(`Error mode ${mode}`, ' is not supported');\r\n }\r\n let customerId;\r\n switch (mode) {\r\n case modeEnum.PRIVATE:\r\n customerId = pcid;\r\n break;\r\n case modeEnum.SHARED:\r\n default:\r\n customerId = cid;\r\n }\r\n\r\n let scopePath = `/Customers(${customerId})`;\r\n\r\n if (aid) {\r\n scopePath += `/Accounts(${aid})`;\r\n }\r\n\r\n return scopePath;\r\n}\r\n","import { JsDataLightWithScopePath } from './js-data-light-with-scope-path';\r\n\r\nexport const historyQueries = {\r\n /**\r\n * getRecentHistory: returns the most recent n reports from odata\r\n * @param {string|integer} cid customer id\r\n * @param {integer} limit max reports\r\n * @returns {promise} resolves to odata response\r\n */\r\n getRecent({ limit }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItemExecutions',\r\n });\r\n\r\n const params = {\r\n limit,\r\n query: {\r\n $filter: 'TaskItem/Type eq Enum.TaskItemType\\'ReportUI\\'',\r\n },\r\n };\r\n\r\n return entity.findAll(params);\r\n },\r\n\r\n run({ taskItemIds }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItems/RerunReports',\r\n });\r\n const payload = {\r\n ReportIds: taskItemIds,\r\n };\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n download({ executionId }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: `/TaskItemExecutions(${executionId})/Default.PollReportDataTaskItemExecution`,\r\n });\r\n\r\n return entity.find();\r\n },\r\n\r\n delete({ taskItemIds }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItems/DeleteReports',\r\n });\r\n const payload = {\r\n ReportIds: taskItemIds,\r\n };\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n gridDataSource() {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItemExecutions',\r\n });\r\n\r\n return {\r\n type: 'jsdata',\r\n entity,\r\n primaryKey: 'Id',\r\n query: {\r\n $filter: 'TaskItem/Type eq Enum.TaskItemType\\'ReportUI\\'',\r\n },\r\n };\r\n },\r\n};\r\n","import PropTypes from 'prop-types';\r\nimport { withRouter } from 'react-router-dom';\r\nimport _ from 'underscore';\r\nimport { parse, stringify } from 'query-string';\r\n\r\nlet reactRouterHistory = { location: { search: window.location.search } };\r\nlet routePrefix = '/Reporting';\r\n\r\nexport const navigator = {\r\n init(options) {\r\n ({\r\n history: reactRouterHistory,\r\n routePrefix,\r\n } = options);\r\n },\r\n\r\n resolve(path, { type, carryForward } = {}) {\r\n let qs = parse(reactRouterHistory.location.search);\r\n if (_.isString(type)) {\r\n qs.type = type;\r\n } else if (!carryForward) {\r\n qs = _.omit(qs, 'type');\r\n }\r\n return `${routePrefix}${path}?${stringify(qs)}`;\r\n },\r\n\r\n goto(path, options = {}) {\r\n const uri = navigator.resolve(path, options);\r\n\r\n reactRouterHistory.push(uri);\r\n },\r\n\r\n replaceTo(path, options = {}) {\r\n const uri = navigator.resolve(path, options);\r\n\r\n reactRouterHistory.replace(uri);\r\n },\r\n};\r\n\r\nexport const NavigatorMaintenance = withRouter((props) => {\r\n navigator.init(props);\r\n return false;\r\n});\r\n\r\nNavigatorMaintenance.propTypes = {\r\n routePrefix: PropTypes.string.isRequired,\r\n};\r\n\r\n","import { navigator } from '../../navigator';\r\n\r\nexport const customReports = {\r\n /**\r\n * getUrl\r\n * @param {string|number} id execution id\r\n * @returns {string} custom report url\r\n */\r\n getUrl(id) {\r\n return navigator.resolve(`/updatetemplate/${id}`);\r\n },\r\n\r\n /**\r\n * getId\r\n * @param {object} report customReport object\r\n * @returns {string} id\r\n */\r\n getId(report) {\r\n return report.Id;\r\n },\r\n\r\n};\r\n","import { navigator } from '../../navigator';\r\n\r\nexport const historyReports = {\r\n\r\n /**\r\n * @param {string|number} id execution id\r\n * @param {boolean} isRunning bolean indicating if report is running\r\n * @returns {string} history report url\r\n */\r\n getUrl(id, isRunning) {\r\n return isRunning ?\r\n navigator.resolve(`/v2/pollreport/${id}`) :\r\n navigator.resolve(`/history/${id}`);\r\n },\r\n\r\n /**\r\n * @param {object} report history report object\r\n * @returns {string} id\r\n */\r\n getId(report) {\r\n return report.Id;\r\n },\r\n};\r\n\r\n","import _ from 'underscore';\r\n\r\nlet logger;\r\nconst loggedEnums = [];\r\nconst loggedFilters = [];\r\n\r\nexport const initLogger = _.once((instrumentation) => {\r\n const instrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'LogUnmappedEnum',\r\n // The value of clienterr.Sn\r\n value: 'Log unmapped enum values',\r\n activity: [\r\n {\r\n name: 'LogUnmappedEnum',\r\n // The value of clienterr.An\r\n value: 'Log unmapped enum values',\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n\r\n instrumentation.addScenario(instrumentationSchema);\r\n const scenario = instrumentation.LogUnmappedEnum.create();\r\n const activity = scenario.LogUnmappedEnum.create();\r\n\r\n logger = activity;\r\n});\r\n\r\n\r\nexport function logUnmappedEnum({\r\n columnName,\r\n value,\r\n}) {\r\n const uniqueId = `${columnName}-${value}`;\r\n\r\n if (_.contains(loggedEnums, uniqueId)) {\r\n return false;\r\n }\r\n\r\n logger.error(`Missing enum localization map for column: ${columnName}, value: ${value}`);\r\n loggedEnums.push(uniqueId);\r\n\r\n return true;\r\n}\r\n\r\nexport function logUnmappedFilter(filterName) {\r\n if (_.contains(loggedFilters, filterName)) {\r\n return false;\r\n }\r\n\r\n logger.error(`Missing localization map for filter: ${filterName}`);\r\n loggedFilters.push(filterName);\r\n\r\n return true;\r\n}\r\n","export 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 AgeGenderDemographicReport: _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 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 GeographicPerformanceReport: _TL_('Geographic'),\r\n GoalsAndFunnelsReport: _TL_('Goals'),\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 FeedItemPerformanceReport: _TL_('Feed item'),\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport const FileFormat = {\r\n Csv: _TL_('.csv'),\r\n Csvzip: _TL_('.zip (.csv)'),\r\n Tsv: _TL_('.tsv'),\r\n TsvZip: _TL_('.zip (.tsv)'),\r\n Xlsx: _TL_('.xlsx'),\r\n};\r\n\r\nexport const FileFormatForReporting = _.pick(FileFormat, 'Csvzip', 'TsvZip', 'Xlsx');\r\n\r\nexport const FileFormatForInlineDownload = _.pick(FileFormat, 'Csv', 'Tsv', 'Xlsx', 'Csvzip');\r\n","import _ from 'underscore';\r\nimport { ReportType } from './report-type';\r\n\r\nconst messages = {\r\n generalUnavalible: i18n => i18n.getString(_TL_('This report type has been deprecated and is no longer available to run')),\r\n runUnavalible: (i18n, reportType) => i18n.getString(_TL_('{{repotType}} reports have been deprecated and are no longer available to run.'), reportType),\r\n AgeGenderDemographicReport: i18n => `${i18n.getString(_TL_('The age and gender report has been deprecated and replaced with an updated version. Please create a new age and gender report and try running it again.'))} ${i18n.getString('Learn more')}`,\r\n};\r\n\r\nexport const getDeprecatedMessage = (reportType, i18n, isRunReport) => {\r\n if (_.has(messages, reportType)) {\r\n return messages[reportType](i18n);\r\n }\r\n\r\n return isRunReport ?\r\n messages.runUnavalible(i18n, i18n.getString(_.result(ReportType, reportType, reportType))) :\r\n messages.generalUnavalible(i18n);\r\n};\r\n\r\n","import _ from 'underscore';\r\n\r\nconst i18nMap = {\r\n InvalidId: _TL_('The report does not exist or does not belong to current user, manager account or account.'),\r\n InvalidEmail: _TL_('Invalid email address'),\r\n TaskSchedulingInvalid: _TL_('Invalid schedule time'),\r\n TaskThrottlingLimitReached: _TL_('You have reached the maximum allowed number of running reports. Please wait for the reports to finish and try again later.'),\r\n RequiredColumnsNotSelected: _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};\r\n\r\nexport const getErrorMessage = (errorCode, errMsg) => _.result(\r\n i18nMap,\r\n errorCode,\r\n errMsg || _TL_(\"Something went wrong, and we couldn't finish this task. Please refresh and try this operation again or contact support.\")\r\n);\r\n","import { DateRangePreset } from './date-range-preset';\r\nimport { ReportAggregation } from './report-aggregation';\r\nimport { ReportType } from './report-type';\r\nimport { ColumnName } from './column-name';\r\nimport { FilterTitle, FilterEnum } from './filter-enum';\r\nimport { FileFormat, FileFormatForReporting, FileFormatForInlineDownload } from './file-format';\r\n\r\nexport const i18nMap = {\r\n DateRangePreset,\r\n ReportAggregation,\r\n ReportType,\r\n ColumnName,\r\n FilterTitle,\r\n FilterEnum,\r\n FileFormat,\r\n FileFormatForReporting,\r\n FileFormatForInlineDownload,\r\n};\r\n\r\nexport { getDeprecatedMessage } from './get-deprecated-message';\r\nexport { getErrorMessage } from './error-messages';\r\n\r\nexport function safeGetString(i18n, map, key) {\r\n const englishString = map[key];\r\n\r\n if (!englishString) {\r\n // TODO: log error to kusto\r\n return key;\r\n }\r\n\r\n return i18n.getString(englishString);\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","/**\r\n * CampaignManagement.MT.Entity.ReportData.ReportAggregation\r\n * AdsAppsMT\\private\\Campaign\\MT\\Source\\Interface\\Internal\\Entity\\ReportData\\ReportAggregation.cs\r\n *\r\n * !!! Keep this order for create report page -> Show (unit of time)\r\n * !!! Do not reorder them\r\n */\r\nexport const ReportAggregation = {\r\n Hourly: _TL_('Hour'),\r\n HourOfDay: _TL_('Hour of day'),\r\n Daily: _TL_('Day'),\r\n DayOfWeek: _TL_('Day of week'),\r\n Weekly: _TL_('Week'),\r\n WeeklyStartingMonday: _TL_('Week Mon-Sun'),\r\n Monthly: _TL_('Month'),\r\n Yearly: _TL_('Year'),\r\n Summary: _TL_('Summary'),\r\n};\r\n","export const ColumnName = {\r\n // absolute:top:imprate\r\n AbsoluteTopImpressionRatePercent: _TL_('Absolute top impression rate'),\r\n // absolute:top:imp:lost:budget:pct\r\n AbsoluteTopImpressionShareLostToBudgetPercent: _TL_('Absolute top impression share lost to budget'),\r\n // absolute:top:imp:lost:rank:pct\r\n AbsoluteTopImpressionShareLostToRankPercent: _TL_('Absolute top impression share lost to rank'),\r\n // absolute:top:impshare:BSC\r\n AbsoluteTopImpressionSharePercent: _TL_('Absolute top impression share'),\r\n // acct:id\r\n AccountId: _TL_('Account ID'),\r\n // acct:name\r\n AccountName: _TL_('Account'),\r\n // acct:num\r\n AccountNumber: _TL_('Account number'),\r\n // acct:status:name\r\n AccountStatus: _TL_('Account status'),\r\n // ad:desc\r\n AdDescription: _TL_('Ad description'),\r\n // ad:desc2\r\n AdDescription2: _TL_('Ad description 2'),\r\n // med:name\r\n AdDistribution: _TL_('Ad distribution'),\r\n AdvertiserHotelId: _TL_('Advertiser hotel ID'),\r\n // ad:ext:id\r\n AdExtensionId: _TL_('Ad extension ID'),\r\n // ad:ext:prop:value\r\n AdExtensionPropertyValue: _TL_('Ad extension property value'),\r\n // ad:ext:type:name\r\n AdExtensionType: _TL_('Ad extension type name'),\r\n // ad:ext:type:id\r\n AdExtensionTypeId: _TL_('Ad extension type ID'),\r\n // ad:ext:vrsn\r\n AdExtensionVersion: _TL_('Ad extension version'),\r\n // order:item:id\r\n AdGroupCriterionId: _TL_('Product group ID/Listing group ID'),\r\n // ord:id\r\n AdGroupId: _TL_('Ad group ID'),\r\n // ord:labels\r\n AdGroupLabels: _TL_('Ad group labels'),\r\n // ord:name\r\n AdGroupName: _TL_('Ad group'),\r\n // ad:group:status:name\r\n AdGroupStatus: _TL_('Ad group status'),\r\n // ad group:ad group type\r\n AdGroupType: _TL_('Ad group type'),\r\n AdGroupTypePreview: _TL_('Ad group type'),\r\n // ad:id\r\n AdId: _TL_('Ad ID'),\r\n // ad:labels\r\n AdLabels: _TL_('Ad labels'),\r\n // landing:page:relevance\r\n AdRelevance: _TL_('Ad relevance'),\r\n AdRelevanceCampaign: _TL_('Ad relevance (campaign)'),\r\n AdRelevanceAdGroup: _TL_('Ad relevance (Ad Group)'),\r\n AdRelevanceKeyword: _TL_('Ad relevance (Keyword)'),\r\n // ad:status\r\n AdStatus: _TL_('Ad status'),\r\n AdStrength: _TL_('Ad strength'),\r\n AdStrengthActionItems: _TL_('Ad strength action items'),\r\n // ad:scenario type\r\n AdScenarioType: _TL_('Vertical ad type'),\r\n // ad:ttl\r\n AdTitle: _TL_('Ad title'),\r\n // ad:type:name\r\n AdType: _TL_('Ad type'),\r\n AdvancedBookingWindow: _TL_('Advanced booking window'),\r\n // age:bucket:desc\r\n AgeGroup: _TL_('Age group'),\r\n // AgencyName\r\n AgencyName: _TL_('Agency'),\r\n // cnv:rate:all\r\n AllConversionRate: _TL_('All Conversion rate'),\r\n AllConversionRateQualified: _TL_('All Conversion rate'),\r\n // cnv:all\r\n AllConversions: _TL_('All Conversions'),\r\n AllConversionsQualified: _TL_('All conversions'),\r\n // cost:per:cnv:all\r\n AllCostPerConversion: _TL_('All CPA'),\r\n AllCostPerConversionQualified: _TL_('All CPA'),\r\n // roas:all\r\n AllReturnOnAdSpend: _TL_('All Return on ad spend'),\r\n // goal:adv:reported:rev\r\n AllRevenue: _TL_('All Revenue'),\r\n // rev:per:cnv:all\r\n AllRevenuePerConversion: _TL_('All Revenue per conversion'),\r\n // call:area:code\r\n AreaCode: _TL_('Area code'),\r\n // coop:click:Cnt\r\n AssistedClicks: _TL_('Assisted clicks'),\r\n // coop:conversion:Cnt\r\n AssistedConversions: _TL_('Assisted conversions'),\r\n // coop:imp:Cnt\r\n AssistedImpressions: _TL_('Assisted impressions'),\r\n // assists\r\n Assists: _TL_('Assists'),\r\n // association:id\r\n AssociationId: _TL_('Association ID'),\r\n AssociationLevel: _TL_('Association level'),\r\n // audience:status\r\n AssociationStatus: _TL_('Association status'),\r\n // change:attribute\r\n AttributeChanged: _TL_('Attribute changed'),\r\n // audience:id\r\n AudienceId: _TL_('Audience ID'),\r\n AudienceImpressionSharePercent: _TL_('Audience impression share'),\r\n AudienceImpressionLostToRankPercent: _TL_('Audience impression share lost to rank'),\r\n AudienceImpressionLostToBudgetPercent: _TL_('Audience impression share lost to budget'),\r\n // audience:name\r\n AudienceName: _TL_('Audience name'),\r\n // audience:type\r\n AudienceType: _TL_('Category'),\r\n AvgBookedABW: _TL_('Average booked ABW'),\r\n AvgBookedNights: _TL_('Average booked nights'),\r\n // avg:cpc\r\n AverageCPC: _TL_('Avg. CPC'),\r\n // avg:cpm\r\n AverageCPM: _TL_('Avg. CPM'),\r\n // avg:cpp\r\n AverageCpp: _TL_('Avg. CPP'),\r\n // avg:pos\r\n AveragePosition: _TL_('Avg. position'),\r\n BaseCampaignId: _TL_('Base campaign ID'),\r\n // benchmark:bid\r\n BenchmarkBid: _TL_('Benchmark bid'),\r\n BenchmarkBidProduct: _TL_('Benchmark bid (product)'),\r\n // benchmark:ctr\r\n BenchmarkCtr: _TL_('Benchmark CTR'),\r\n BenchmarkCtrProduct: _TL_('Benchmark CTR (product)'),\r\n // bid:adj\r\n BidAdjustment: _TL_('Bid adjustment'),\r\n // bidded:match:type:desc\r\n BidMatchType: _TL_('Bid match type'),\r\n // f:bid:strategy:type\r\n BidStrategyType: _TL_('Bid strategy type'),\r\n // BilledAmount\r\n BilledAmount: _TL_('Billed amount'),\r\n BilledAmountUSD: _TL_('Billed amount - USD'),\r\n // BillingType\r\n BillingType: _TL_('Billing type'),\r\n // BillToCountry\r\n BillToCountry: _TL_('Bill-to country/region'),\r\n // bill:to:cust:name\r\n BillToCustomerName: _TL_('Bill-to customer'),\r\n // bill:to:cust:num\r\n BillToCustomerNumber: _TL_('Bill-to customer number'),\r\n BookedABW: _TL_('Booked ABW'),\r\n BookedLengthOfStay: _TL_('Booked length of stay'),\r\n // product:brand\r\n Brand: _TL_('Brand'),\r\n // bdgt:association\r\n BudgetAssociationStatus: _TL_('Budget association status'),\r\n // bdgt:name\r\n BudgetName: _TL_('Budget name'),\r\n // bdgt:status:name\r\n BudgetStatus: _TL_('Budget status'),\r\n // business:name\r\n BusinessName: _TL_('Business name'),\r\n // cost:per:cnv\r\n CPA: _TL_('CPA'),\r\n // ctr\r\n CTR: _TL_('CTR'),\r\n // call:status:name\r\n CallStatus: _TL_('Call status'),\r\n // call:type:name\r\n CallTypeName: _TL_('Call type'),\r\n CampaignHotelId: _TL_('Campaign hotel ID'),\r\n // cmp:id\r\n CampaignId: _TL_('Campaign ID'),\r\n // cmp:labels\r\n CampaignLabels: _TL_('Campaign labels'),\r\n // cmp:name\r\n CampaignName: _TL_('Campaign'),\r\n // campaign:status:name\r\n CampaignStatus: _TL_('Campaign status'),\r\n // cmp:type:name\r\n CampaignType: _TL_('Campaign type'),\r\n Category: _TL_('Category'),\r\n // dsa:category:top\r\n Category0: _TL_('Top level category'),\r\n // dsa:category:first\r\n Category1: _TL_('First level category'),\r\n // dsa:category:second\r\n Category2: _TL_('Second level category'),\r\n // dsa:category:lst\r\n CategoryList: _TL_('Category list'),\r\n // change:made:by\r\n ChangedBy: _TL_('Changed by'),\r\n // Change made by\r\n ChangeMadeBy: _TL_('Changed by'),\r\n // ChangeMadeTo\r\n ChangeMadeTo: _TL_('Change made to'),\r\n // Change total count\r\n ChangeTotalCount: _TL_('Change history total counts'),\r\n CheckInDate: _TL_('Check in date'),\r\n CheckInDateDayOfWeek: _TL_('Check in day of week'),\r\n // city\r\n City: _TL_('City (physical location)'),\r\n // calls:click\r\n ClickCalls: _TL_('Click calls'),\r\n // click:share:percent:BSC\r\n ClickSharePercent: _TL_('Click share'),\r\n // click:BSCtype\r\n ClickType: _TL_('Click type'),\r\n // click:type:BSCid\r\n ClickTypeId: _TL_('Click type ID'),\r\n // clicks\r\n Clicks: _TL_('Clicks'),\r\n // tgt:cmpy:name\r\n CompanyName: _TL_('Company name'),\r\n // product:condition\r\n Condition: _TL_('Condition'),\r\n // conflict:lvl:name\r\n ConflictLevel: _TL_('Conflict level'),\r\n // neg:kywd:conflict:type\r\n ConflictType: _TL_('Conflict type'),\r\n // cnv:rate\r\n ConversionRate: _TL_('Conversion rate'),\r\n ConversionRateQualified: _TL_('Conversion rate'),\r\n // cnv\r\n Conversions: _TL_('Conversions'),\r\n ConversionsQualified: _TL_('Conversions'),\r\n // cost:per:assist\r\n CostPerAssist: _TL_('Cost per assist'),\r\n // cost:per:cnv\r\n CostPerConversion: _TL_('CPA'),\r\n CostPerConversionQualified: _TL_('CPA'),\r\n // f:country\r\n Country: _TL_('Country/region (physical location)'),\r\n // FeedLabel\r\n FeedLabel: _TL_('Feed label'),\r\n // countryofsale:name\r\n CountryOfSale: _TL_('Country/Region of sale'),\r\n // CountryName\r\n CountryName: _TL_('Country name'),\r\n // county\r\n County: _TL_('County (physical location)'),\r\n // cncy:code\r\n CurrencyCode: _TL_('Currency'),\r\n // max:cpc\r\n CurrentMaxCpc: _TL_('Current maximum CPC'),\r\n // product:label0\r\n CustomLabel0: _TL_('Custom label 0'),\r\n // product:label1\r\n CustomLabel1: _TL_('Custom label 1'),\r\n // product:label2\r\n CustomLabel2: _TL_('Custom label 2'),\r\n // product:label3\r\n CustomLabel3: _TL_('Custom label 3'),\r\n // product:label4\r\n CustomLabel4: _TL_('Custom label 4'),\r\n CustomLabel0Product: _TL_('Custom label 0(Product)'),\r\n CustomLabel1Product: _TL_('Custom label 1(Product)'),\r\n CustomLabel2Product: _TL_('Custom label 2(Product)'),\r\n CustomLabel3Product: _TL_('Custom label 3(Product)'),\r\n CustomLabel4Product: _TL_('Custom label 4(Product)'),\r\n // custom:param\r\n CustomParameters: _TL_('Custom parameters'),\r\n CustomParametersCampaign: _TL_('Custom parameters(Campaign)'),\r\n CustomParametersAdGroup: _TL_('Custom parameters(Ad Group)'),\r\n CustomParametersKeyword: _TL_('Custom parameters(Keyword)'),\r\n CustomParametersAd: _TL_('Custom parameters(Ad)'),\r\n CustomParametersProduct: _TL_('Custom parameters(Product)'),\r\n // cust:id\r\n CustomerId: _TL_('Manager account'),\r\n // cust:name\r\n CustomerName: _TL_('Manager account name'),\r\n // day:spend:amt\r\n DailySpend: _TL_('Daily spend'),\r\n // date\r\n Date: _TL_('Date'),\r\n // date:time\r\n DateTime: _TL_('Date'),\r\n DateType: _TL_('Date type'),\r\n // day:of:week\r\n DayOfWeek: _TL_('Day of week'),\r\n // quarter\r\n Quarter: _TL_('Quarter'),\r\n // delivered:match:type:desc\r\n DeliveredMatchType: _TL_('Delivered match type'),\r\n // dest:url\r\n DestinationUrl: _TL_('Destination URL'),\r\n DestinationUrlAd: _TL_('Destination URL(Ad)'),\r\n DestinationUrlKeyword: _TL_('Destination URL(Keyword)'),\r\n DestinationUrlProduct: _TL_('Destination URL(Product)'),\r\n // device:os:name\r\n DeviceOS: _TL_('Device OS'),\r\n // device:type:name\r\n DeviceType: _TL_('Device type'),\r\n // disp:url\r\n DisplayUrl: _TL_('Display URL'),\r\n // doc:num\r\n DocumentNumber: _TL_('Document number'),\r\n // doc:type\r\n DocumentType: _TL_('Document type'),\r\n // call:duration\r\n Duration: _TL_('Duration (sec)'),\r\n // dsa:at\r\n DynamicAdTarget: _TL_('Dynamic ad target'),\r\n // dsa:at:id\r\n DynamicAdTargetId: _TL_('Dynamic ad target ID'),\r\n // dsa:at:status:name\r\n DynamicAdTargetStatus: _TL_('Dynamic ad target status'),\r\n EligibleImpressions: _TL_('Eligible impressions'),\r\n // end:time\r\n EndTime: _TL_('End time'),\r\n // change:entity:value:id\r\n EntityId: _TL_('Entity ID'),\r\n // change:entity:value\r\n EntityName: _TL_('Entity name'),\r\n // est:click:pct\r\n EstimatedClickPercent: _TL_('Estimated click rate'),\r\n // est:click\r\n EstimatedClicks: _TL_('Estimated clicks'),\r\n // est:cnv:rate\r\n EstimatedConversionRate: _TL_('Estimated conversion rate'),\r\n // est:cnv\r\n EstimatedConversions: _TL_('Estimated conversions'),\r\n // est:ctr\r\n EstimatedCtr: _TL_('Estimated CTR'),\r\n // est:imp:pct\r\n EstimatedImpressionPercent: _TL_('Estimated impression rate'),\r\n // est:imp\r\n EstimatedImpressions: _TL_('Estimated impressions'),\r\n // em:imp:share:pct\r\n ExactMatchImpressionSharePercent: _TL_('Exact match impression share'),\r\n // excl:zero:clicks\r\n ExcludeZeroClicks: _TL_('Exclude zero clicks'),\r\n // keyword:relevance\r\n ExpectedCtr: _TL_('Expected click-through rate'),\r\n ExpectedCtrKeyword: _TL_('Expected click-through rate(Keyword)'),\r\n ExpectedCtrCampaign: _TL_('Expected click-through rate(Campaign)'),\r\n ExpectedCtrAdGroup: _TL_('Expected click-through rate(Ad Group)'),\r\n // extended:cost\r\n ExtendedCost: _TL_('Extended cost'),\r\n FeedId: _TL_('Feed Id'),\r\n FeedItemId: _TL_('Feed Item Id'),\r\n // dsa:feed:url\r\n FeedUrl: _TL_('Feed URL'),\r\n // final:app:url\r\n FinalAppUrl: _TL_('App URL'),\r\n // final:mob:url\r\n FinalMobileUrl: _TL_('Mobile URL'),\r\n // final:url\r\n FinalUrl: _TL_('Final URL'),\r\n // final:url:suf\r\n FinalUrlSuffix: _TL_('Final URL suffix'),\r\n FinalUrlSuffixCampaign: _TL_('Final URL suffix(Campaign)'),\r\n FinalUrlSuffixAdGroup: _TL_('Final URL suffix(Ad Group)'),\r\n FinalUrlSuffixKeyword: _TL_('Final URL suffix(Keyword)'),\r\n FinalUrlSuffixAd: _TL_('Final URL suffix(Ad)'),\r\n // sb:bid\r\n FirstPageBid: _TL_('Est. first page bid'),\r\n // FullViewConversions\r\n FullViewConversions: _TL_('View-through conversions'),\r\n // ViewThroughConversions\r\n ViewThroughConversions: _TL_('View-through conversions'),\r\n // ViewThroughConversionsRevenue\r\n ViewThroughRevenue: _TL_('View-through conversions revenue'),\r\n // ViewThroughConversionsCPA\r\n ViewThroughCostPerConversion: _TL_('View-through conversions CPA'),\r\n ViewThroughCostPerConversionQualified: _TL_('View-through conversions CPA'),\r\n // ViewThroughConversionsReturnOnAdSpend\r\n ViewThroughReturnOnAdSpend: _TL_('View-through conversions return on ad spend'),\r\n // ViewThroughConversionsRate\r\n ViewThroughConversionRate: _TL_('View-through conversions rate'),\r\n ViewThroughConversionRateQualified: _TL_('View-through conversions rate'),\r\n // gender:name\r\n Gender: _TL_('Gender'),\r\n // goal:name\r\n Goal: _TL_('Goal'),\r\n // goal:category\r\n GoalCategory: _TL_('Goal category'),\r\n // goal:type\r\n GoalType: _TL_('Goal type'),\r\n // goal:id\r\n GoalId: _TL_('Goal Id'),\r\n // gregorian:date\r\n GregorianDate: _TL_('Date'),\r\n GrossReturnOnAdSpend: _TL_('Gross return on ad spend'),\r\n GTIN: _TL_('GTIN'),\r\n // Xnadr Video Campaign\r\n Genre: _TL_('Genre'),\r\n // dsa:ad:ttl\r\n Headline: _TL_('Headline'),\r\n // dsa:description\r\n Description: _TL_('Description'),\r\n // his:landing:page:relevance\r\n HistoricalAdRelevance: _TL_('Historic ad relevance'),\r\n HistoricalAdRelevanceAdGroup: _TL_('Historical ad relevance(Ad Group)'),\r\n HistoricalAdRelevanceCampaign: _TL_('Historical ad relevance(Campaign)'),\r\n HistoricalAdRelevanceKeyword: _TL_('Historical ad relevance(Keyword)'),\r\n // his:keyword:relevance\r\n HistoricalExpectedCtr: _TL_('Historic expected click-through rate'),\r\n HistoricalExpectedCtrAdGroup: _TL_('Historical expected CTR(Ad Group)'),\r\n HistoricalExpectedCtrCampaign: _TL_('Historical expected CTR(Campaign)'),\r\n HistoricalExpectedCtrKeyword: _TL_('Historical expected CTR(Keyword)'),\r\n // his:landing:page:user:exp\r\n HistoricalLandingPageExperience: _TL_('Historic landing page experience'),\r\n HistoricalLandingPageExperienceAdGroup: _TL_('Historical landing page experience(Ad Group)'),\r\n HistoricalLandingPageExperienceCampaign: _TL_('Historical landing page experience(Campaign)'),\r\n HistoricalLandingPageExperienceKeyword: _TL_('Historical landing page experience(Keyword)'),\r\n // his:quality:score\r\n HistoricalQualityScore: _TL_('Historic quality score'),\r\n HistoricalQualityScoreAdGroup: _TL_('Historical quality score(Ad Group)'),\r\n HistoricalQualityScoreCampaign: _TL_('Historical quality score(Campaign)'),\r\n HistoricalQualityScoreKeyword: _TL_('Historical quality score(Keyword)'),\r\n HotelGroup: _TL_('Hotel group'),\r\n HotelGroupNodeId: _TL_('Hotel group node id'),\r\n HotelName: _TL_('Hotel name'),\r\n // hour:of:day\r\n HourOfDay: _TL_('Hour of day'),\r\n // t:hourly\r\n Hourly: _TL_('Hourly'),\r\n // change:type\r\n HowChanged: _TL_('How changed'),\r\n // imp:lost:lndg:page:relv:pct\r\n ImpressionLostToAdRelevancePercent: _TL_('Impression share lost to ad relevance'),\r\n // imp:lost:min:bid:pct\r\n ImpressionLostToBidPercent: _TL_('Impression share lost to bid'),\r\n // imp:lost:budget:pct\r\n ImpressionLostToBudgetPercent: _TL_('Impression share lost to budget'),\r\n // imp:lost:rank:agg:pct\r\n ImpressionLostToRankAggPercent: _TL_('Impression share lost to rank'),\r\n // imp:lost:rank:pct\r\n ImpressionLostToRankPercent: _TL_('Impression share lost to rank'),\r\n // imp:lost:relevance:pct\r\n ImpressionLostToRelevancePercent: _TL_('Impression share lost to relevance (%)'),\r\n ImpressionShare: _TL_('Impression share'),\r\n // imp:share:pct\r\n ImpressionSharePercent: _TL_('Impression share'),\r\n // imp\r\n Impressions: _TL_('Impressions'),\r\n // tgt:ind:name\r\n IndustryName: _TL_('Industry name'),\r\n // change:entity\r\n ItemChanged: _TL_('Entity type'),\r\n // tgt:jf:name\r\n JobFunctionName: _TL_('Job function name'),\r\n // kywd\r\n Keyword: _TL_('Keyword'),\r\n // ord:item:id\r\n KeywordId: _TL_('Keyword ID'),\r\n // kywd:labels\r\n KeywordLabels: _TL_('Keyword labels'),\r\n // kywd:status:name\r\n KeywordStatus: _TL_('Keyword status'),\r\n LabelName: _TL_('Label'),\r\n LabelNameAccount: _TL_('Label(Account)'),\r\n LabelNameCampaign: _TL_('Label(Campaign)'),\r\n LabelNameAdGroup: _TL_('Label(Ad Group)'),\r\n LabelNameAd: _TL_('Label(Ad)'),\r\n LabelNameKeyword: _TL_('Label(Keyword)'),\r\n LabelColor: _TL_('Label color'),\r\n // landing:page:user:exp\r\n LandingPageExperience: _TL_('Landing page experience'),\r\n LandingPageExperienceAdGroup: _TL_('Landing page experience(Ad Group)'),\r\n LandingPageExperienceCampaign: _TL_('Landing page experience(Campaign)'),\r\n LandingPageExperienceKeyword: _TL_('Landing page experience(Keyword)'),\r\n // dsa:landing:page:ttl\r\n LandingPageTitle: _TL_('Landing page title'),\r\n // language:name\r\n Language: _TL_('Language'),\r\n LengthOfStay: _TL_('Length of stay'),\r\n // Local:Store:Code\r\n LocalStoreCode: _TL_('Local store code'),\r\n // location:id\r\n LocationId: _TL_('Location ID (physical location)'),\r\n // location:type\r\n LocationType: _TL_('Location type'),\r\n // ad:long\r\n LongHeadline: _TL_('Long headline'),\r\n // inv:clicks\r\n LowQualityClicks: _TL_('Low-quality clicks (not charged)'),\r\n // inv:clicks:pct\r\n LowQualityClicksPercent: _TL_('Low-quality click rate'),\r\n // inv:cnv:rate\r\n LowQualityConversionRate: _TL_('Low-quality click conversion rate'),\r\n // inv:cnv\r\n LowQualityConversions: _TL_('Low-quality click conversions'),\r\n LowQualityConversionsQualified: _TL_('Low-quality click conversions'),\r\n // inv:clicks:gnl\r\n LowQualityGeneralClicks: _TL_('Low-quality clicks - general (not charged)'),\r\n // inv:imp\r\n LowQualityImpressions: _TL_('Low-quality impressions'),\r\n // inv:imp:pct\r\n LowQualityImpressionsPercent: _TL_('Low-quality impression rate'),\r\n // inv:clicks:sptd\r\n LowQualitySophisticatedClicks: _TL_('Low-quality clicks - sophisticated (not charged)'),\r\n // ml1:bid\r\n Mainline1Bid: _TL_('Est. best position bid'),\r\n // ml:bid\r\n MainlineBid: _TL_('Est. mainline bid'),\r\n // calls:manual\r\n ManualCalls: _TL_('Manual calls'),\r\n // order:match:cnt\r\n MatchedProductsAtAdGroup: _TL_('Matched products at ad group/asset group'),\r\n // campaign:match:cnt\r\n MatchedProductsAtCampaign: _TL_('Matched products at campaign'),\r\n // productgrp:match:cnt\r\n MatchedProductsAtProductGroup: _TL_('Matched products at product group/listing group'),\r\n // merchant:product:id\r\n MerchantProductId: _TL_('Merchant product ID'),\r\n // metro:area:name\r\n MetroArea: _TL_('Metro area (physical location)'),\r\n MissedImpressions: _TL_('Missed impressions'),\r\n MissedImpressionsNoBid: _TL_('Missed impressions no bid'),\r\n MissedImpressionsInsufficientBid: _TL_('Missed impressions insufficient bid'),\r\n MissedImpressionsSpendingCapReached: _TL_('Missed impressions spending cap reached'),\r\n MissedImpressionsNoTax: _TL_('Missed impressions no tax'),\r\n MissedImpressionsOther: _TL_('Missed impressions other'),\r\n // month:start:date\r\n Month: _TL_('Month'),\r\n // mtd:spend:amt\r\n MonthToDateSpend: _TL_('Month-to-date spend'),\r\n // month:budget:amt\r\n MonthlyBudget: _TL_('Monthly budget'),\r\n // most:specific:location\r\n MostSpecificLocation: _TL_('Most specific location'),\r\n MPN: _TL_('MPN'),\r\n // neg:keyword\r\n NegativeKeyword: _TL_('Negative keyword'),\r\n // neg:kywd:id\r\n NegativeKeywordId: _TL_('Negative keyword ID'),\r\n // neg:kywd:list:name\r\n NegativeKeywordList: _TL_('Negative keyword list'),\r\n // neg:kywd:list:id\r\n NegativeKeywordListId: _TL_('Negative keyword list ID'),\r\n // neg:kywd:match:type:desc\r\n NegativeKeywordMatchType: _TL_('Negative keyword match type'),\r\n Neighborhood: _TL_('Neighborhood (physical location)'),\r\n // NetAmountDue\r\n NetAmountDue: _TL_('Net due'),\r\n NetReturnOnAdSpend: _TL_('Net return on ad spend'),\r\n // net:rev\r\n NetRevenue: _TL_('Net revenue'),\r\n // net:rev:usd\r\n NetRevenueUSD: _TL_('Net revenue (USD)'),\r\n // network\r\n Network: _TL_('Network'),\r\n // change:new:value\r\n NewValue: _TL_('New value'),\r\n // productofferlanguage:name\r\n OfferLanguage: _TL_('Product offer language'),\r\n // change:old:value\r\n OldValue: _TL_('Old value'),\r\n OrderId: _TL_('Order Id'),\r\n // param1\r\n Param1: _TL_('Param 1'),\r\n // param2\r\n Param2: _TL_('Param 2'),\r\n // param3\r\n Param3: _TL_('Param 3'),\r\n // product:partition:type\r\n PartitionType: _TL_('Product partition type'),\r\n PartnerImpressions: _TL_('Partner impressions'),\r\n // ad:path1\r\n Path1: _TL_('Path 1'),\r\n // ad:path2\r\n Path2: _TL_('Path 2'),\r\n // ttl:calls\r\n PhoneCalls: _TL_('Phone calls'),\r\n // phone:imp\r\n PhoneImpressions: _TL_('Phone impr.'),\r\n // postal:code:api\r\n PostalCode: _TL_('Postal code (physical location)'),\r\n // product:price\r\n Price: _TL_('Price'),\r\n // \"PricingMethod\":\r\n PricingMethod: _TL_('Pricing method'),\r\n // ProductBought\r\n ProductBought: _TL_('Product bought'),\r\n ProductBoughtTitle: _TL_('Product bought title'),\r\n // product:cat1\r\n ProductCategory1: _TL_('Category(1st level)'),\r\n // product:cat2\r\n ProductCategory2: _TL_('Category(2nd level)'),\r\n // product:cat3\r\n ProductCategory3: _TL_('Category(3rd level)'),\r\n // product:cat4\r\n ProductCategory4: _TL_('Category(4th level)'),\r\n // product:cat5\r\n ProductCategory5: _TL_('Category(5th level)'),\r\n // product:group\r\n ProductGroup: _TL_('Product group/Listing group'),\r\n // prdct:name\r\n ProductName: _TL_('Product name'),\r\n // product:type1\r\n ProductType1: _TL_('Product type(1st level)'),\r\n // product:type2\r\n ProductType2: _TL_('Product type(2nd level)'),\r\n // product:type3\r\n ProductType3: _TL_('Product type(3rd level)'),\r\n // product:type4\r\n ProductType4: _TL_('Product type(4th level)'),\r\n // product:type5\r\n ProductType5: _TL_('Product type(5th level)'),\r\n // location\r\n ProximityTargetLocation: _TL_('Proximity target locations'),\r\n // ptr\r\n Ptr: _TL_('PTR'),\r\n // pub:url\r\n PublisherUrl: _TL_('Website URL'),\r\n // quality:impact\r\n QualityImpact: _TL_('Quality impact'),\r\n // quality:score\r\n QualityScore: _TL_('Quality score'),\r\n QualityScoreAdGroup: _TL_('Quality score(Ad Group)'),\r\n QualityScoreCampaign: _TL_('Quality score(Campaign)'),\r\n QualityScoreKeyword: _TL_('Quality score(Keyword)'),\r\n // QuantityBought\r\n QuantityBought: _TL_('Quantity bought'),\r\n // query:intent:city\r\n QueryIntentCity: _TL_('City (searching for)'),\r\n // query:intent:country\r\n QueryIntentCountry: _TL_('Country/region (searching for)'),\r\n // query:intent:county\r\n QueryIntentCounty: _TL_('County (searching for)'),\r\n // query:intent:dma\r\n QueryIntentDMA: _TL_('Metro area (searching for)'),\r\n // query:intent:location:id\r\n QueryIntentLocationId: _TL_('Location ID (searching for)'),\r\n QueryIntentNeighborhood: _TL_('Neighborhood (searching for)'),\r\n // query:intent:postal:code:api\r\n QueryIntentPostalCode: _TL_('Postal code (searching for)'),\r\n // query:intent:state\r\n QueryIntentState: _TL_('State/province (searching for)'),\r\n // radius\r\n Radius: _TL_('Radius (miles)'),\r\n RelativeCTR: _TL_('Relative CTR'),\r\n // roas\r\n ReturnOnAdSpend: _TL_('Return on ad spend'),\r\n ReturnOnAdSpendCPS: _TL_('Return on ad spend (CPS)'),\r\n // adv:reported:rev\r\n Revenue: _TL_('Revenue'),\r\n RevenueCPS: _TL_('Revenue (CPS)'),\r\n // rev:per:assist\r\n RevenuePerAssist: _TL_('Revenue per assist'),\r\n // rev:per:cnv\r\n RevenuePerConversion: _TL_('Revenue per conversion'),\r\n // Sales house\r\n SalesHouse: _TL_('Sales House'),\r\n // search:query\r\n SearchQuery: _TL_('Search term'),\r\n // seller:name\r\n SellerName: _TL_('Seller name'),\r\n // SoldToCustomerName\r\n SoldToCustomerName: _TL_('Sold-to name'),\r\n // sold:to:cust:num\r\n SoldToCustomerNumber: _TL_('Sold-to customer number'),\r\n // Sold to country\r\n SoldToCountry: _TL_('Sold-to country/region'),\r\n SourceHotelId: _TL_('Source hotel ID'),\r\n // total:cost\r\n Spend: _TL_('Spend'),\r\n StarRating: _TL_('Star rating '),\r\n // start:time\r\n StartTime: _TL_('Start time'),\r\n // sub:geog:name\r\n State: _TL_('State/province (physical location)'),\r\n // ord:status:name\r\n Status: _TL_('Ad group status'),\r\n // product:provider:id\r\n StoreId: _TL_('Store id'),\r\n // audience:target:setting\r\n TargetingSetting: _TL_('Targeting setting'),\r\n // gregorian:date\r\n TimePeriod: _TL_('Unit of time'),\r\n // t:day\r\n 'TimePeriod-Daily': _TL_('Day'),\r\n // day:of:week\r\n 'TimePeriod-DayOfWeek': _TL_('Day of week'),\r\n // hour:of:day\r\n 'TimePeriod-HourOfDay': _TL_('Hour of day'),\r\n // t:hourly\r\n 'TimePeriod-Hourly': _TL_('Hourly'),\r\n // t:month\r\n 'TimePeriod-Monthly': _TL_('Month'),\r\n // t:week\r\n 'TimePeriod-Weekly': _TL_('Weekly'),\r\n // t:week:mon TODO: finalize the string\r\n 'TimePeriod-WeeklyStartingMonday': _TL_('Weekly (Mon - Sun)', { locked: true }),\r\n // t:year\r\n 'TimePeriod-Yearly': _TL_('Year'),\r\n // product:title\r\n Title: _TL_('Title'),\r\n // ad:ttl1\r\n TitlePart1: _TL_('Title Part 1'),\r\n // ad:ttl2\r\n TitlePart2: _TL_('Title Part 2'),\r\n // ad:ttl3\r\n TitlePart3: _TL_('Title Part 3'),\r\n // tools:name\r\n Tool: _TL_('Tool'),\r\n // top:imprate\r\n TopImpressionRatePercent: _TL_('Top impression rate'),\r\n // top:imp:lost:budget:pct\r\n TopImpressionShareLostToBudgetPercent: _TL_('Top impression share lost to budget'),\r\n // imp:lost:low:ad:quality:pct\r\n ImpressionLostToExpectedCtrPercent: _TL_('Impression share lost to expected CTR'),\r\n // top:imp:lost:rank:pct\r\n TopImpressionShareLostToRankPercent: _TL_('Top impression share lost to rank'),\r\n // top:impshare\r\n TopImpressionSharePercent: _TL_('Top impression share'),\r\n // top:vs:other\r\n TopVsOther: _TL_('Top vs. other'),\r\n // ad:ext:total:clicks\r\n TotalClicks: _TL_('Ad extension total clicks'),\r\n // click:type:Clickcnt\r\n TotalClicksOnAdElements: _TL_('Total clicks on ad elements'),\r\n // tracking:tmplt\r\n TrackingTemplate: _TL_('Tracking template'),\r\n TrackingTemplateCampaign: _TL_('Tracking template(Campaign)'),\r\n TrackingTemplateAdGroup: _TL_('Tracking template(Ad Group)'),\r\n TrackingTemplateKeyword: _TL_('Tracking template(Keyword)'),\r\n TrackingTemplateAd: _TL_('Tracking template(Ad)'),\r\n TrackingTemplateProduct: _TL_('Tracking template(Product)'),\r\n // user id\r\n UserId: _TL_('User id'),\r\n // website:cov\r\n WebsiteCoverage: _TL_('Website coverage'),\r\n // week:start:date\r\n Week: _TL_('Week (Sun - Sat)'),\r\n // week:start:date:mon\r\n WeekStartingMonday: _TL_('Week (Mon - Sun)'),\r\n // year:num\r\n Year: _TL_('Year'),\r\n\r\n /** Custom */\r\n DimensionColumns: _TL_('Attributes'),\r\n MetricColumns: _TL_('Performance Statistics'),\r\n TimeColumns: _TL_('Time'),\r\n\r\n /** Video metrics */\r\n VideoViews: _TL_('Video views'),\r\n ViewThroughRate: _TL_('View through rate'),\r\n AverageCPV: _TL_('Avg. CPV'),\r\n TotalWatchTimeInMS: _TL_('Total watch time in msec'),\r\n AverageWatchTimePerImpression: _TL_('Avg. watch time per impression'),\r\n AverageWatchTimePerVideoView: _TL_('Avg. watch time per video view'),\r\n VideoViewsAt25Percent: _TL_('Video views at 25 percent'),\r\n VideoViewsAt50Percent: _TL_('Video views at 50 percent'),\r\n VideoViewsAt75Percent: _TL_('Video views at 75 percent'),\r\n CompletedVideoViews: _TL_('Completed video views'),\r\n VideoCompletionRate: _TL_('Video completion rate'),\r\n\r\n ChangeInAdvertiserReportedRevenuePct: _TL_('% Change in All conv. revenue'),\r\n ChangeInAllConvRatePct: _TL_('% Change in All conv. rate'),\r\n ChangeInConversionCreditPct: _TL_('% Change in All conv.'),\r\n ChangeInCPAPct: _TL_('% Change in CPA'),\r\n ChangeInFullViewAdvertiserReportedRevenuePct: _TL_('% Change in View-through conv. revenue'),\r\n ChangeInFullViewThroughConversionPct: _TL_('% Change in View-through conv.'),\r\n ChangeInROASPct: _TL_('% Change in Return on ad spend'),\r\n ChangeInViewThroughRatePct: _TL_('% Change in View-through conv. rate'),\r\n ChangeInVTCCPAPct: _TL_('% Change in View-through conv. CPA'),\r\n ChangeInVTCROASPct: _TL_('% Change in View-through conv. return on ad spend'),\r\n DDAAllConvRate: _TL_('All conv. rate (DDA'),\r\n DDACPA: _TL_('CPA (DDA)'),\r\n DDAFullAdvertiserReportedRevenue: _TL_('All conv. revenue (DDA)'),\r\n DDAFullConversionCredit: _TL_('All conv. (DDA)'),\r\n DDAFullViewAdvertiserReportedRevenue: _TL_('View-through conv. revenue (DDA)'),\r\n DDAFullViewThroughConversion: _TL_('View-through conv. (DDA)'),\r\n DDAROAS: _TL_('Return on ad spend (DDA)'),\r\n DDAViewThroughRate: _TL_('View-through conv. rate (DDA)'),\r\n DDAVTCCPA: _TL_('View-through conv. CPA (DDA)'),\r\n DDAVTCROAS: _TL_('View through conv. return on ad spend (DDA)'),\r\n LCAAllConvRate: _TL_('All conv. rate (LCA)'),\r\n LCACPA: _TL_('CPA (LCA)'),\r\n LCAFullAdvertiserReportedRevenue: _TL_('All conv. revenue (LCA)'),\r\n LCAFullConversionCredit: _TL_('All conv. (LCA)'),\r\n LCAFullViewAdvertiserReportedRevenue: _TL_('View-through conv. revenue (LCA)'),\r\n LCAFullViewThroughConversion: _TL_('View-through conv. (LCA)'),\r\n LCAROAS: _TL_('Return on ad spend (LCA)'),\r\n LCAViewThroughRate: _TL_('View-through conv. rate (LCA)'),\r\n LCAVTCCPA: _TL_('View-through conv. CPA (LCA)'),\r\n LCAVTCROAS: _TL_('View-through conv. return on ad spend (LCA)'),\r\n IsMainConversionGoal: _TL_('Include in converions'),\r\n\r\n Sales: _TL_('Sales'),\r\n CostPerSale: _TL_('Cost per sale'),\r\n RevenuePerSale: _TL_('Revenue per sale'),\r\n\r\n msxAdClicks: _TL_('Clicks'),\r\n msxDeliveredCountry: _TL_('Delivered country'),\r\n msxDeliveredMarket: _TL_('Delivered market'),\r\n msxDevice: _TL_('Device'),\r\n msxPageType: _TL_('Page type'),\r\n msxPlacementId: _TL_('PlacementId'),\r\n msxProvider: _TL_('Provider'),\r\n msxPublisher: _TL_('Publisher'),\r\n msxRegion: _TL_('Region'),\r\n msxServedImpressions: _TL_('Served impressions'),\r\n msxServedRevenue: _TL_('Served revenue'),\r\n msxViewedImpressions: _TL_('Viewed impressions'),\r\n\r\n Installs: _TL_('Installs (charged)-legacy'),\r\n CostPerInstall: _TL_('Cost per install-legacy'),\r\n RevenuePerInstall: _TL_('Revenue per install-legacy'),\r\n\r\n AssetGroupId: _TL_('Asset group ID'),\r\n AssetGroupName: _TL_('Asset group'),\r\n AssetGroupStatus: _TL_('Asset group status'),\r\n\r\n UserCountry: _TL_('User country'),\r\n SiteType: _TL_('Site type'),\r\n\r\n ClickShare: _TL_('Click share'),\r\n\r\n // Conversion value rule adjustment columns\r\n RevenueAdjustment: _TL_('Revenue adj.'),\r\n AllRevenueAdjustment: _TL_('All revenue adj.'),\r\n ViewThroughRevenueAdjustment: _TL_('View-through revenue adj.'),\r\n\r\n // Video ad metrics\r\n VideoStarts: _TL_('Video starts'),\r\n VideoSkips: _TL_('Video skips'),\r\n CPCV: _TL_('CPCV'),\r\n\r\n CollectionId: _TL_('Collection ID'), // Temporary to fix translation-test.js, find owner for name.\r\n\r\n AverageImpressionFrequencyPerUser: _TL_('Avg. Impression Frequency per User'),\r\n AverageImpressionFrequencyPerUser7Day: _TL_('Avg. Impression Frequency per User (7 days)'),\r\n Reach: _TL_('Unique Reach'),\r\n\r\n // App ads camapign columns\r\n Downloads: _TL_('Downloads'),\r\n PostClickDownloadRate: _TL_('Post-click download rate'),\r\n CostPerDownload: _TL_('Cost per Download'),\r\n AppInstalls: _TL_('Install'),\r\n PostClickInstallRate: _TL_('Post-click install rate'),\r\n CPI: _TL_('CPI'),\r\n Purchases: _TL_('In-app purchases'),\r\n PostInstallPurchaseRate: _TL_('Post-install purchase rate'),\r\n CPP: _TL_('Cost per in-app purchase'),\r\n Subscriptions: _TL_('In-app subscriptions'),\r\n PostInstallSubscriptionRate: _TL_('Post-install subscription rate'),\r\n CPS: _TL_('Cost per in-app subscription'),\r\n RevenuePerDownload: _TL_('Revenue per Download'),\r\n RevenuePerAppInstall: _TL_('Revenue per Install'),\r\n NewCustomerConversions: _TL_('New customer conversions'),\r\n NewCustomerRevenue: _TL_('New customer revenue'),\r\n NewCustomerConversionRate: _TL_('New customer conversion rate'),\r\n NewCustomerCPA: _TL_('New customer CPA'),\r\n NewCustomerReturnOnAdSpend: _TL_('New customer return on ad spend'),\r\n\r\n // Boost placement name\r\n PlacementName: _TL_('Placement name'),\r\n // Insertion order report columns\r\n IOReportMonth: _TL_('Month'),\r\n ChangeType: _TL_('Change type'),\r\n ChangeAmount: _TL_('Amount'),\r\n RemainingIOBudget: _TL_('Remaining IO budget'),\r\n InsertionOrderDetails: _TL_('IO details'),\r\n BillingDocumentNumber: _TL_('Billing document'),\r\n\r\n // Data columns, don't show in the grid\r\n MismatchedReason: _TL_('Mismatched reason'),\r\n InsertionOrderId: _TL_('Insertion order ID'),\r\n BDAmount: _TL_('Billing document amount'),\r\n MismatchedAmount: _TL_('Mismatched amount'),\r\n CouponAmount: _TL_('Coupon amount'),\r\n BudgetChangedAmount: _TL_('Budget changed amount'),\r\n SpendAmount: _TL_('Spend amount'),\r\n AdjustmentAmount: _TL_('Adjustment amount'),\r\n BudgetChangeOldValue: _TL_('Budget change old value'),\r\n BudgetChangeNewValue: _TL_('Budget change new value'),\r\n SpendCouponAmount: _TL_('Spend coupon amount'),\r\n AdjustmentCouponAmount: _TL_('Adjustment coupon amount'),\r\n\r\n SearchCategory: _TL_('Search Category'),\r\n SearchVolume: _TL_('Search Volume'),\r\n\r\n // Asset report columns\r\n AssetId: _TL_('Asset ID'),\r\n AssetContent: _TL_('Asset content'),\r\n AssetType: _TL_('Asset type'),\r\n AssetSource: _TL_('Asset source'),\r\n\r\n // Marketplace insights report columns\r\n L1Vertical: _TL_('L1 vertical'),\r\n L2Vertical: _TL_('L2 vertical'),\r\n L3Vertical: _TL_('L3 vertical'),\r\n SearchesIndexed: _TL_('Searches'),\r\n ClicksIndexed: _TL_('Clicks'),\r\n WoWSearches: _TL_('Week over week (WoW) searches'),\r\n WoWClicks: _TL_('Week over week (WoW) clicks'),\r\n MoMSearches: _TL_('Month over month (MoM) searches'),\r\n MoMClicks: _TL_('Month over month (MoM) clicks'),\r\n YoYLast1WeekSearches: _TL_('Year over year (YoY) current week searches'),\r\n YoYLast1WeekClicks: _TL_('Year over year (YoY) current week clicks'),\r\n YoYLast4WeeksSearches: _TL_('Year over year (YoY) last four week searches'),\r\n YoYLast4WeeksClicks: _TL_('Year over year (YoY) last four week clicks'),\r\n SearchesPeekWeek: _TL_('Peak searches (week)'),\r\n ClicksPeekWeek: _TL_('Peak clicks (week)'),\r\n MarketplaceClickCoverage: _TL_('Marketplace click coverage'),\r\n ProportionOfSpend: _TL_('Proportion Of Spend'),\r\n Headline1: _TL_('Headline1'),\r\n Headline2: _TL_('Headline2'),\r\n Headline3: _TL_('Headline3'),\r\n Description1: _TL_('Description1'),\r\n Description2: _TL_('Description2'),\r\n Image: _TL_('Image'),\r\n Logo: _TL_('Logo'),\r\n CombinationLongHeadline: _TL_('Long headline'),\r\n};\r\n","export const FilterTitle = {\r\n AccountStatus: _TL_('Account status'),\r\n AdDistribution: _TL_('Ad distribution'),\r\n AdGroupStatus: _TL_('Ad group status'),\r\n AdRelevance: _TL_('Ad relevance'),\r\n AdStatus: _TL_('Ad status'),\r\n AdType: _TL_('Ad type'),\r\n BidMatchType: _TL_('Bid match types'),\r\n BidStrategyType: _TL_('Bid strategy type'),\r\n CampaignStatus: _TL_('Campaign status'),\r\n Clicks: _TL_('Clicks'),\r\n CountryCode: _TL_('Countries/regions'),\r\n DeliveredMatchType: _TL_('Delivered match types'),\r\n DeviceOS: _TL_('Device OS'),\r\n DeviceType: _TL_('Device type'),\r\n DynamicAdTargetStatus: _TL_('Auto target status'),\r\n ExpectedCtr: _TL_('Expected click-through rate'),\r\n FeedUrl: _TL_('Feed URL'),\r\n GoalIds: _TL_('Goal ID'),\r\n HowChanged: _TL_('How changed'),\r\n ItemChanged: _TL_('Entity type'),\r\n Keywords: _TL_('Keywords'),\r\n KeywordStatus: _TL_('Keyword status'),\r\n LandingPageExperience: _TL_('Landing page experience'),\r\n LanguageCode: _TL_('Language'),\r\n QualityScore: _TL_('Quality score'),\r\n SearchQueries: _TL_('Search term'),\r\n Status: _TL_('Ad group status'),\r\n};\r\n\r\n// !!! Notice: Put strings below only if you want to override the mapping defined in\r\n// @bingads-webui/report-ui-interface/src/Shared.js\r\nexport const FilterEnum = {\r\n AdRelevance: {\r\n 1: _TL_('Below Average - 1'),\r\n 2: _TL_('Average - 2'),\r\n 3: _TL_('Above Average - 3'),\r\n },\r\n ExpectedCtr: {\r\n 1: _TL_('Below Average - 1'),\r\n 2: _TL_('Average - 2'),\r\n 3: _TL_('Above Average - 3'),\r\n },\r\n LandingPageExperience: {\r\n 1: _TL_('Below Average - 1'),\r\n 2: _TL_('Average - 2'),\r\n 3: _TL_('Above Average - 3'),\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport { toIANATimeZone, getUTCOffsetWithoutDST } from '@bingads-webui-universal/time-zone-converter';\r\nimport { CivilDate } from 'tc39-proposal-temporal';\r\nimport { i18nMap } from '../i18n-map';\r\nimport { logUnmappedEnum } from '../logger';\r\n\r\nexport function getUTCOffsetWithDST(i18n, dateStr, timeZone) {\r\n if (_.isString(dateStr)) {\r\n const date = new Date(dateStr);\r\n const formatter = i18n.dateFormatter({\r\n raw: 'ZZZZ',\r\n timeZone: toIANATimeZone(timeZone) || 'UTC',\r\n });\r\n\r\n return formatter(date);\r\n }\r\n\r\n return '';\r\n}\r\n\r\nexport function reformatDate(i18n, dateStr, timeZone, skeleton = 'yMdhms') {\r\n if (_.isString(dateStr)) {\r\n const date = new Date(dateStr);\r\n const formatter = i18n.dateFormatter({\r\n skeleton,\r\n timeZone: toIANATimeZone(timeZone) || 'UTC',\r\n });\r\n\r\n return formatter(date).replace(',', '');\r\n }\r\n\r\n return dateStr;\r\n}\r\n\r\nexport function reformatMediumDate(i18n, dateStr, timeZone) {\r\n return reformatDate(i18n, dateStr, timeZone, 'yMdhm');\r\n}\r\n\r\nexport function reformatShortDate(i18n, dateStr, timeZone) {\r\n return reformatDate(i18n, dateStr, timeZone, 'yMd');\r\n}\r\n\r\nexport const dummyDate = new CivilDate(2020, 1, 1);\r\n\r\nexport function convertDateTimeStringToCivilDate(dateTimeString) {\r\n if (_.isString(dateTimeString)) {\r\n const match = /(\\d{4})-(\\d{2})-(\\d{2})/.exec(dateTimeString);\r\n\r\n if (match) {\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\r\n const [dummy, year, month, day] = match;\r\n return new CivilDate(year, month, day);\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport function formatDateRange(\r\n i18n,\r\n ReportTime,\r\n ReportTimeZone,\r\n appendActualRange,\r\n showTimeZone = true\r\n) {\r\n if (!ReportTime) {\r\n return ' ';\r\n }\r\n\r\n const {\r\n DateRangePreset,\r\n StartDate,\r\n EndDate,\r\n } = ReportTime;\r\n\r\n const fragments = [];\r\n\r\n if (DateRangePreset) {\r\n const englishString = i18nMap.DateRangePreset[DateRangePreset];\r\n let localizedString;\r\n if (englishString) {\r\n localizedString = i18n.getString(englishString);\r\n } else {\r\n localizedString = DateRangePreset;\r\n logUnmappedEnum({ columnName: 'DateRangePreset', value: DateRangePreset });\r\n }\r\n\r\n fragments.push(localizedString);\r\n\r\n if (appendActualRange) {\r\n const startDate = reformatShortDate(i18n, StartDate, 'UTC');\r\n const endDate = reformatShortDate(i18n, EndDate, 'UTC');\r\n\r\n fragments.push(`(${startDate} - ${endDate})`);\r\n }\r\n } else {\r\n const startDate = i18n.formatCivilDate(convertDateTimeStringToCivilDate(StartDate), { skeleton: 'yMd' });\r\n const endDate = i18n.formatCivilDate(convertDateTimeStringToCivilDate(EndDate), { skeleton: 'yMd' });\r\n\r\n fragments.push(`${startDate} - ${endDate}`);\r\n\r\n if (showTimeZone) {\r\n const offset = ReportTimeZone ? getUTCOffsetWithoutDST(ReportTimeZone) : '';\r\n\r\n fragments.push(`(GMT${offset})`);\r\n }\r\n }\r\n\r\n return fragments.join(' ');\r\n}\r\n","import { getCustomerId, getUserId } from './get-customer-id';\r\nimport { customReports, historyReports } from './model-help';\r\nimport { isReportRunning } from './is-report-running';\r\nimport { shouldRefresh } from './should-refresh-poller';\r\nimport { getUTCOffsetWithDST, reformatDate, reformatMediumDate, reformatShortDate, formatDateRange, convertDateTimeStringToCivilDate, dummyDate } from './date';\r\nimport { getMergeFilter } from './get-merge-filter';\r\n\r\nexport const util = {\r\n getCustomerId,\r\n getUserId,\r\n customReports,\r\n historyReports,\r\n isReportRunning,\r\n shouldRefresh,\r\n getMergeFilter,\r\n getUTCOffsetWithDST,\r\n reformatDate,\r\n reformatMediumDate,\r\n reformatShortDate,\r\n formatDateRange,\r\n convertDateTimeStringToCivilDate,\r\n dummyDate,\r\n};\r\n","import { keyCode as KEY_CODES } from '@bingads-webui/keycode';\r\n\r\nexport const wrapKeyDownEvent = availablekeys => handler => ({ keyCode }, ...params) => {\r\n if (keyCode in availablekeys) {\r\n handler(...params);\r\n }\r\n};\r\n\r\nconst submitEvent = wrapKeyDownEvent({ [KEY_CODES.Enter]: null });\r\n\r\nexport const keyDown = {\r\n submitEvent,\r\n};\r\n","\r\n\r\nexport const getCustomerId = (url) => {\r\n const regex = /cid=(\\d+)/gi;\r\n const value = regex.exec(url);\r\n\r\n return value ? parseInt(value[1], 10) : 0;\r\n};\r\n\r\nexport const getUserId = (url) => {\r\n const regex = /uid=(\\d+)/gi;\r\n const value = regex.exec(url);\r\n\r\n return value ? parseInt(value[1], 10) : 0;\r\n};\r\n\r\n","/**\r\n * isReportRunning: given a report returns if it is still executing\r\n * @param {object} report odata report object\r\n * @returns {boolean} whether or not the report is executing\r\n */\r\nexport const isReportRunning = (report) => {\r\n const { Status } = report;\r\n return Status === 'PendingExecution' || Status === 'InProgress';\r\n};\r\n\r\n","/**\r\n * @param {promise|undefined} promise a bluebird promise\r\n * @returns {boolean} whether the promise is fullfilled or undefined\r\n */\r\nexport function shouldRefresh(promise) {\r\n const empty = !promise;\r\n const fullfilled = !!promise && promise.isFulfilled();\r\n return empty || fullfilled;\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function getMergeFilter({ accountScope, userId }) {\r\n let $filter = accountScope ?\r\n 'Type eq Enum.TaskItemType\\'ReportUIAccountTemplate\\' or Type eq Enum.TaskItemType\\'ReportUITemplate\\'or Type eq Enum.TaskItemType\\'ReportAccountEmail\\'' :\r\n 'Type eq Enum.TaskItemType\\'ReportUICustomerTemplate\\' or Type eq Enum.TaskItemType\\'ReportUITemplate\\' or Type eq Enum.TaskItemType\\'Email\\'';\r\n\r\n if (_.isNumber(userId)) {\r\n $filter = `(${$filter}) and CreatedBy/Id eq ${userId}`;\r\n }\r\n\r\n return $filter;\r\n}\r\n","import { JsDataLightWithScopePath } from './js-data-light-with-scope-path';\r\nimport { util } from '../util';\r\n\r\nexport const customReportQueries = {\r\n /**\r\n * getRecentCustomReports: returns the most recent n custom reports from odata\r\n * @param {integer} limit max reports\r\n * @returns {promise} resolves to odata response\r\n */\r\n getRecent({ limit }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n });\r\n\r\n const params = {\r\n limit,\r\n query: {\r\n $filter: 'Type eq Enum.TaskItemType\\'ReportUITemplate\\'',\r\n },\r\n };\r\n\r\n return entity.findAll(params);\r\n },\r\n\r\n run({ templateIds, options }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems/RerunReports',\r\n ...options,\r\n });\r\n const payload = {\r\n ReportIds: templateIds,\r\n };\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n delete({ templateIds, options }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems/DeleteReports',\r\n ...options,\r\n });\r\n const payload = {\r\n ReportIds: templateIds,\r\n };\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n gridDataSource() {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n });\r\n\r\n return {\r\n type: 'jsdata',\r\n entity,\r\n primaryKey: 'Id',\r\n query: {\r\n $filter: 'Type eq Enum.TaskItemType\\'ReportUITemplate\\'',\r\n },\r\n };\r\n },\r\n\r\n gridMergeDataSource(accountScope = false, createdByUserId = null) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n });\r\n const $filter = util.getMergeFilter({ accountScope, userId: createdByUserId });\r\n\r\n return {\r\n type: 'jsdata',\r\n entity,\r\n primaryKey: 'Id',\r\n query: {\r\n $filter,\r\n },\r\n };\r\n },\r\n};\r\n","import { ClientCenterCustomerService } from '@bingads-webui/clientcenter-customer-service';\r\nimport { JsDataLightWithScopePath } from './js-data-light-with-scope-path';\r\n\r\nexport const detailsQueries = {\r\n getByTaskItemId({ taskItemId, mode }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItem',\r\n odataURL: `/TaskItems(${taskItemId})`,\r\n mode,\r\n });\r\n\r\n return entity.find();\r\n },\r\n\r\n getByExecutionId({ executionId, expandTaskItem }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: '/TaskItemExecutions',\r\n });\r\n\r\n if (expandTaskItem) {\r\n return entity.find(executionId, {\r\n queryParameters: {\r\n expand: ['TaskItem'],\r\n },\r\n });\r\n }\r\n return entity.find(executionId);\r\n },\r\n\r\n pollReport({ executionId }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItemExecution',\r\n odataURL: `/TaskItemExecutions(${executionId})/Default.PollReportDataTaskItemExecution`,\r\n });\r\n return entity.find();\r\n },\r\n\r\n gridDataSource({ executionId, lcid }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'ReportData',\r\n idAttribute: 'RowId',\r\n odataURL: `/TaskItemExecutions(${executionId})/Default.ReportData()`,\r\n });\r\n\r\n const query = {\r\n $filter: 'TaskItem/Type eq Enum.TaskItemType\\'ReportUI\\'',\r\n };\r\n\r\n if (lcid) {\r\n query.lcid = lcid;\r\n }\r\n\r\n return {\r\n type: 'jsdata',\r\n entity,\r\n query,\r\n };\r\n },\r\n\r\n getCustomerHierarchy({ cid, uid, ccBaseUrl }) {\r\n const customerService = new ClientCenterCustomerService({ ccBaseUrl });\r\n return customerService.getCustomerHierarchy({\r\n cid,\r\n uid,\r\n returnOnlyDirectlyLinkedEntities: false,\r\n }).then(({ customerHierarchyEntities }) => customerHierarchyEntities[0]);\r\n },\r\n};\r\n","import _ from 'underscore';\r\nimport { JsDataLightWithScopePath } from './js-data-light-with-scope-path';\r\nimport { modeEnum } from '../reporting-contexts/mode-updater/modes';\r\n\r\nconst isNewUI = () => window.location.pathname.includes('vnext');\r\n\r\nexport const createReportQueries = {\r\n create({ payload }) {\r\n let mode;\r\n\r\n if (isNewUI()) {\r\n mode = _.result(payload.ReportData, 'Type') === 'ReportUITemplate' ?\r\n modeEnum.PRIVATE : modeEnum.SHARED;\r\n } else {\r\n mode = modeEnum.PRIVATE;\r\n }\r\n\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems/SubmitReportDataTaskItem?$expand=TaskItemExecutions',\r\n mode,\r\n });\r\n\r\n return entity.create(payload);\r\n },\r\n\r\n update({ taskItemId, payload }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n mode: payload.Type === 'ReportUITemplate' ?\r\n modeEnum.PRIVATE : null,\r\n });\r\n return entity.update(taskItemId, payload, { urlParameters: { runNow: 'false' } });\r\n },\r\n\r\n updateAndRun({ taskItemId, payload }) {\r\n const entity = new JsDataLightWithScopePath({\r\n entityName: 'TaskItems',\r\n odataURL: '/TaskItems',\r\n });\r\n return entity.update(taskItemId, payload, { urlParameters: { runNow: 'true', $expand: 'TaskItemExecutions' } });\r\n },\r\n};\r\n","export const constants = {\r\n QUERY_LIMIT: 20,\r\n POLL_INTERVAL: 5990,\r\n};\r\n","/* eslint-disable jsx-a11y/anchor-is-valid */\r\n/* eslint-disable no-script-url */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport function HelpLink({ label, query }) {\r\n return e.preventDefault()} query={query}>{label};\r\n}\r\n\r\nHelpLink.propTypes = {\r\n label: PropTypes.string.isRequired,\r\n query: PropTypes.string.isRequired,\r\n};\r\n\r\n","import _ from 'underscore';\r\n\r\nexport function serializeError(error) {\r\n if (_.isString(error)) {\r\n return `${error}`;\r\n }\r\n if (_.isObject(error)) {\r\n const errorStack = error.stack ? error.stack : '';\r\n return `${error.message}\\n ${errorStack}`.trim();\r\n }\r\n // If some other object, log it as is\r\n try {\r\n return `${error.toString()}`;\r\n } catch (e) {\r\n return 'Error could not be serialized';\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const Permission = React.createContext('');\r\n\r\nexport function PermissionProvider(props) {\r\n return (\r\n \r\n {props.children}\r\n );\r\n}\r\n\r\nPermissionProvider.propTypes = {\r\n /**\r\n * Content rendered in the body\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n\r\n};\r\n\r\n","import React from 'react';\r\nimport { Permission } from './permission-provider';\r\n\r\nexport const withPermissionContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { AlertCenter } from '@bingads-webui/alert-center';\r\nimport { show as showBanner } from '@bingads-webui-react/floating-banner';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { BackboneInstanceWrapper } from '@bingads-webui-react/backbone-instance-wrapper';\r\nimport { withPermissionContext } from '../reporting-contexts/permission-provider';\r\n\r\n\r\n// Backbone version of ReportAlertCenter\r\nclass ReportAlertCenterBackbone extends AlertCenter {\r\n showError(message) {\r\n this.show({\r\n message,\r\n level: 'Error',\r\n hasIcon: true,\r\n dismissible: true,\r\n });\r\n }\r\n}\r\n\r\nfunction showTryNewUIMessage(url, message) {\r\n showBanner({\r\n customCssClass: 'alert__try-ui-next',\r\n message: `${message}`,\r\n level: 'Info',\r\n });\r\n}\r\n\r\nconst getInstance = _.once(() => {\r\n const instance = new ReportAlertCenterBackbone();\r\n instance.render();\r\n return instance;\r\n});\r\n\r\nconst showInitialMessage = _.once((url, message) =>\r\n showTryNewUIMessage(url, message));\r\n\r\n// React version of ReportAlertCenter\r\nclass ReportAlertCenter extends React.PureComponent {\r\n componentDidMount() {\r\n const { uiNextLink, i18n, permissions } = this.props;\r\n if (permissions.IsNewUIPhaseTwoEnabled) {\r\n const message = i18n.getString(_TL_('Try the new Microsoft Advertising'));\r\n showInitialMessage(uiNextLink, message);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nReportAlertCenter.propTypes = {\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n uiNextLink: PropTypes.string.isRequired,\r\n i18n: PropTypes.shape({\r\n getString: PropTypes.func.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nconst Wrapped = withPermissionContext(withI18nConsumer(ReportAlertCenter));\r\nexport { Wrapped as ReportAlertCenter };\r\n\r\n// Alert API\r\nexport function alert() {\r\n return getInstance();\r\n}\r\n","import _ from 'underscore';\r\nimport { alert } from '../alert-center';\r\n\r\n// eslint-disable-next-line no-underscore-dangle\r\nlet _showError = (message) => {\r\n alert().showError(message);\r\n};\r\n\r\nexport const initializeErrorDisplayer = (displayError) => {\r\n if (_.isFunction(displayError)) {\r\n _showError = displayError;\r\n }\r\n};\r\n\r\nexport const showError = (message) => {\r\n _showError(message);\r\n};\r\n\r\n","/* eslint-disable react/no-array-index-key */\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\n\r\nexport function DefaultErrorView({ description, title }) {\r\n return (\r\n
\r\n

{title}

\r\n { description.map((txt, index) =>
{_.isFunction(txt) ? txt() : txt}
)}\r\n
\r\n );\r\n}\r\n\r\n\r\nDefaultErrorView.propTypes = {\r\n description:\r\n PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.string])).isRequired,\r\n title: PropTypes.string.isRequired,\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ReportingProps from '@bingads-webui-campaign-react/props-reporting';\r\nimport _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withInstrumentation } from '@bingads-webui-react/hoc-with-instrumentation';\r\nimport { iframeDownload } from '@bingads-webui/download-service';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { createReportQueries, customReportQueries, historyQueries, detailsQueries, JsDataLightWithScopePath } from '../../odata-abstraction';\r\nimport { util } from '../../util';\r\nimport { serializeError } from '../../general';\r\nimport { getErrorMessage } from '../../i18n-map';\r\nimport { showError } from '../../general/error-displayer';\r\nimport { withIdentityContext } from '../../identity-provider';\r\nimport { withPermissionContext } from '../../reporting-contexts/permission-provider';\r\nimport { modeEnum } from '../mode-updater/modes';\r\n\r\nconst { isReportRunning } = util;\r\nexport const RepositoryContext = React.createContext('');\r\nexport const RepositoryDataContext = React.createContext('');\r\n\r\nexport class ReportRepositoryComponent extends Component {\r\n static instrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'ReportRepository',\r\n value: 'reporting/ReportRepository',\r\n activity: [\r\n {\r\n name: 'general',\r\n value: 'fetching',\r\n },\r\n ],\r\n },\r\n ],\r\n }\r\n\r\n static setupInstrumentation = (instrumentation) => {\r\n instrumentation.addScenario(ReportRepositoryComponent.instrumentationSchema);\r\n return instrumentation.ReportRepository.create();\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.logger =\r\n ReportRepositoryComponent.setupInstrumentation(props.instrumentation).general.create();\r\n this.state = {\r\n historyExpansion: 0,\r\n historyData: props.prefetchedData.History.value,\r\n customData: props.prefetchedData.CustomReports.value,\r\n };\r\n this.uid = props.identityDetails.user.Id;\r\n this.lcid = props.identityDetails.user.Locale;\r\n this.aid = _.result(props.identityDetails.account, 'Id');\r\n this.reportsToDownload = {};\r\n this.historyExpansionInstance = 0;\r\n JsDataLightWithScopePath.init({\r\n pcid: props.identityDetails.user.ParentCustomerId,\r\n cid: props.identityDetails.customer.Id,\r\n aid: props.permissions.IsReportingUIPhaseNext ? this.aid : undefined,\r\n });\r\n }\r\n\r\n getDetailsByTaskItemId =\r\n (taskItemId, mode) => detailsQueries.getByTaskItemId({ taskItemId, mode })\r\n .catch(this.catchException);\r\n\r\n getDetailsByExecutionId =\r\n (executionId, expandTaskItem = true) =>\r\n detailsQueries.getByExecutionId({ executionId, expandTaskItem })\r\n .then((response) => {\r\n this.resolveDownload(response);\r\n return response;\r\n })\r\n .catch(this.catchException);\r\n\r\n catchException = (err) => {\r\n const errorCode = putil.get(err, 'body.value[0].Code');\r\n const errMsg = putil.get(err, 'body.value[0].Message');\r\n const errorMessage = getErrorMessage(errorCode, errMsg);\r\n const localizedMessage = this.props.i18n.getString(errorMessage);\r\n\r\n showError(localizedMessage);\r\n\r\n throw err;\r\n }\r\n\r\n detailsGridDataSource =\r\n executionId => detailsQueries.gridDataSource({ executionId, lcid: this.lcid })\r\n\r\n customReportGridDataSource =\r\n () => {\r\n const { IsReportsMergeEnabled, IsInternalUser } = this.props.permissions;\r\n\r\n return IsReportsMergeEnabled ?\r\n customReportQueries.gridMergeDataSource(!!this.aid, IsInternalUser && this.uid) :\r\n customReportQueries.gridDataSource();\r\n }\r\n\r\n historyGridDataSource =\r\n () => historyQueries.gridDataSource()\r\n\r\n checkAndUpdateHistory = (response) => {\r\n let allReportsFinished = true;\r\n if (_.isArray(response)) {\r\n _.forEach(response, (report) => {\r\n this.resolveDownload(report);\r\n allReportsFinished = !isReportRunning(report) && allReportsFinished;\r\n });\r\n if (!_.isEqual(response, this.state.historyData)) {\r\n try {\r\n this.setState({\r\n historyData: response,\r\n });\r\n } catch (error) {\r\n this.logger.error(`encounted an error refreshing historyData: ${serializeError(error)}`);\r\n }\r\n }\r\n return allReportsFinished;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n resolveDownload = (report) => {\r\n if (\r\n isReportRunning(report) ||\r\n !_.has(this.reportsToDownload, report.Id)\r\n ) {\r\n return;\r\n } else if (report.Status !== 'Completed') {\r\n // placeholder for\r\n // showing floating banner error on download failed\r\n return;\r\n }\r\n this.rdsDownloadReport(report.Id);\r\n this.reportsToDownload = _.omit(this.reportsToDownload, report.Id);\r\n }\r\n\r\n queueDownload = (reportId) => {\r\n this.reportsToDownload[reportId] = true;\r\n }\r\n\r\n pollReport = executionId =>\r\n detailsQueries.pollReport({ executionId })\r\n .then((response) => {\r\n this.resolveDownload(response);\r\n return response;\r\n })\r\n .catch(this.catchException)\r\n\r\n createReport = payload => createReportQueries.create({ payload }).catch(this.catchException)\r\n\r\n updateReport = (payload, taskItemId) =>\r\n createReportQueries.update({ taskItemId, payload }).catch(this.catchException)\r\n\r\n updateReportAndRun = (payload, taskItemId) =>\r\n createReportQueries.updateAndRun({ taskItemId, payload }).catch(this.catchException)\r\n\r\n // rds run report\r\n rdsRunReport = taskItemIds =>\r\n historyQueries.run({ taskItemIds }).catch(this.catchException)\r\n\r\n rdsRunReportTemplate = (templateIds, options = {}) =>\r\n customReportQueries.run({ templateIds, options }).catch(this.catchException)\r\n\r\n rdsDeleteReport = taskItemIds =>\r\n historyQueries.delete({ taskItemIds }).catch(this.catchException)\r\n\r\n rdsDeleteReportTemplate = (templateIds, options = {}) =>\r\n customReportQueries.delete({ templateIds, options })\r\n .catch(this.catchException)\r\n\r\n rdsDownloadReport = executionId =>\r\n historyQueries.download({ executionId })\r\n .then((response) => {\r\n const { ResultId } = response;\r\n if (ResultId) {\r\n iframeDownload(ResultId);\r\n }\r\n return response;\r\n })\r\n .catch(this.catchException)\r\n\r\n inlineEditReport = (partialTaskItem, mapper) => {\r\n const mode = partialTaskItem.Type === 'ReportUITemplate' ? modeEnum.PRIVATE : modeEnum.SHARED;\r\n return this.getDetailsByTaskItemId(partialTaskItem.Id, mode)\r\n .then(fullTaskItem => this.updateReport(mapper(fullTaskItem), partialTaskItem.Id))\r\n .catch(this.catchException);\r\n }\r\n\r\n unsubscribeMe = (taskItem) => {\r\n // Unsubscribe for report templates\r\n const userEmail = this.props.identityDetails.user.Email;\r\n\r\n if (!_.contains(taskItem.EmailRecipients, userEmail)) {\r\n showError(this.props.i18n.getString(_TL_('You didn\\'t subscribe to report \"{{report}}\"'), { report: taskItem.Name }));\r\n return Promise.reject();\r\n }\r\n\r\n return this.inlineEditReport(taskItem, ({\r\n EmailRecipients,\r\n ...others\r\n }) => {\r\n if (_.isEqual(EmailRecipients, [userEmail])) {\r\n return {\r\n ...others,\r\n EmailRecipients: [],\r\n AttachFileToEmail: false, // Fix issue \"AttachFileToEmail used without EmailRecipients\"\r\n };\r\n }\r\n return ({\r\n ...others,\r\n EmailRecipients: _.difference(EmailRecipients, [userEmail]),\r\n });\r\n });\r\n }\r\n\r\n baseContext = {\r\n pollReport: this.pollReport,\r\n rdsRunReport: this.rdsRunReport,\r\n rdsRunSingleReport: this.rdsRunSingleReport,\r\n rdsDeleteReport: this.rdsDeleteReport,\r\n rdsDeleteReportTemplate: this.rdsDeleteReportTemplate,\r\n rdsRunReportTemplate: this.rdsRunReportTemplate,\r\n createReport: this.createReport,\r\n rdsDownloadReport: this.rdsDownloadReport,\r\n getDetailsByTaskItemId: this.getDetailsByTaskItemId,\r\n getDetailsByExecutionId: this.getDetailsByExecutionId,\r\n detailsGridDataSource: this.detailsGridDataSource,\r\n getAllAccountIds: this.getAllAccountIds,\r\n customReportGridDataSource: this.customReportGridDataSource,\r\n historyGridDataSource: this.historyGridDataSource,\r\n queueDownload: this.queueDownload,\r\n updateReport: this.updateReport,\r\n updateReportAndRun: this.updateReportAndRun,\r\n inlineEditReport: this.inlineEditReport,\r\n unsubscribeMe: this.unsubscribeMe,\r\n }\r\n\r\n render() {\r\n const dataContext =\r\n _.defaults(\r\n { ...this.baseContext },\r\n {\r\n historyData: this.state.historyData,\r\n historyExpansion: this.state.historyExpansion,\r\n customData: this.state.customData,\r\n }\r\n );\r\n return (\r\n \r\n \r\n {this.props.children}\r\n \r\n );\r\n }\r\n}\r\n\r\nReportRepositoryComponent.propTypes = {\r\n /**\r\n * Content rendered in the body\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Localization module\r\n */\r\n i18n: ReportingProps.i18n.isRequired,\r\n\r\n /**\r\n * instrumentation object\r\n */\r\n // eslint-disable-next-line react/forbid-prop-types\r\n instrumentation: PropTypes.object.isRequired,\r\n\r\n /**\r\n * Customer id\r\n */\r\n identityDetails: ReportingProps.identityDetails.isRequired,\r\n\r\n\r\n permissions: ReportingProps.permissions.isRequired,\r\n\r\n /**\r\n * odata serverside calls\r\n */\r\n prefetchedData: PropTypes.shape({\r\n History: PropTypes.shape({\r\n value: PropTypes.array,\r\n }),\r\n CustomReports: PropTypes.shape({\r\n value: PropTypes.array,\r\n }),\r\n }),\r\n};\r\n\r\nReportRepositoryComponent.defaultProps = {\r\n prefetchedData: {\r\n History: {\r\n value: [],\r\n },\r\n CustomReports: {\r\n value: [],\r\n },\r\n },\r\n};\r\n\r\nconst hocs = [\r\n withI18nConsumer,\r\n withIdentityContext,\r\n withInstrumentation,\r\n withPermissionContext,\r\n];\r\n\r\nexport const ReportRepository = _.compose(...hocs)(ReportRepositoryComponent);\r\n","import React from 'react';\r\nimport { RepositoryContext, RepositoryDataContext } from './report-repository';\r\n\r\nexport const withRepositoryContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n\r\nexport const withRepositoryDataContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","import _ from 'underscore';\r\n\r\nexport class ReportListDataFactory {\r\n constructor(initialReportsTree, permissions, providedLogger, cid, uid) {\r\n this.log = providedLogger;\r\n this.reportsTree = initialReportsTree;\r\n this.permissions = permissions;\r\n this.cid = cid;\r\n this.uid = uid;\r\n this.validCatergoryIds = {};\r\n this.validCreateReportIds = {};\r\n\r\n if (!_.isObject(permissions)) {\r\n this.log.Error('PathDataFactory:constructor - Permissions is null');\r\n this.permissions = {};\r\n }\r\n if (!_.isNumber(cid)) {\r\n throw new TypeError('PathDataFactory:constructor - CID is NAN');\r\n } else if (cid < 0) {\r\n throw new RangeError('PathDataFactory:constructor - CID is less than 0');\r\n }\r\n\r\n if (!_.isNumber(uid)) {\r\n throw new TypeError('PathDataFactory:constructor - UID is NAN');\r\n } else if (uid < 0) {\r\n throw new RangeError('PathDataFactory:constructor - UID is less than 0');\r\n }\r\n\r\n this.filterReports();\r\n this.populateCategoryIds();\r\n this.populateCreateReportIds();\r\n }\r\n\r\n isAllowed(node) {\r\n const { permissions } = this;\r\n if (node.isAllowed &&\r\n !node.isAllowed(permissions)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n fetchData() {\r\n return {\r\n reportsTree: this.reportsTree,\r\n validCategoryIds: this.validCatergoryIds,\r\n validCreateReportIds: this.validCreateReportIds,\r\n };\r\n }\r\n\r\n // TODO: scsuarez- impement filter logic in reports structure\r\n filterReports() {\r\n let runnableReports = this.reportsTree.children;\r\n\r\n // filter report by permission\r\n _.each(runnableReports, (reportCategory, index) => {\r\n if (runnableReports[index].children) {\r\n runnableReports[index].children =\r\n _.filter(reportCategory.children, report => this.isAllowed(report));\r\n }\r\n });\r\n\r\n // filter ReportCategories by permission and omit empty categories\r\n runnableReports =\r\n _.filter(runnableReports, (reportCategory) => {\r\n if (!this.isAllowed(reportCategory)) {\r\n return false;\r\n }\r\n if (!reportCategory.children || reportCategory.children.length === 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n this.reportsTree.children = runnableReports;\r\n }\r\n\r\n populateCategoryIds() {\r\n this.validCatergoryIds = {};\r\n const runnableReports = this.reportsTree.children;\r\n\r\n _.each(runnableReports, (category) => {\r\n const { id } = category;\r\n this.validCatergoryIds[id.toLowerCase()] = true;\r\n });\r\n }\r\n\r\n populateCreateReportIds() {\r\n this.validCreateReportIds = {};\r\n const runnableReports = this.reportsTree.children;\r\n\r\n _.each(runnableReports, (category) => {\r\n const reports = category.children;\r\n _.each(reports, (report) => {\r\n const { id } = report;\r\n this.validCreateReportIds[id.toLowerCase()] = true;\r\n });\r\n });\r\n }\r\n}\r\n\r\n","import _ from 'underscore';\r\nimport { performance } from './report-categories/performance';\r\nimport { extensions } from './report-categories/extensions';\r\nimport { billingAndBudget } from './report-categories/billing-and-budget';\r\nimport { changeHistory } from './report-categories/change-history';\r\nimport { dynamicSearch } from './report-categories/dynamic-search';\r\nimport { productAds } from './report-categories/product-ads';\r\nimport { targeting } from './report-categories/targeting';\r\nimport { advancedInsights } from './report-categories/advanced-insights';\r\n\r\nexport const rootNode = {\r\n children: [\r\n performance,\r\n extensions,\r\n productAds,\r\n changeHistory,\r\n targeting,\r\n billingAndBudget,\r\n advancedInsights,\r\n dynamicSearch,\r\n ],\r\n name: _TL_('Standard reports'),\r\n path: 0,\r\n id: 'welcome',\r\n title: _TL_('These are a collection of standard reports that we’ve created for you. Click each to create a new report.'),\r\n state: {\r\n expanded: true,\r\n },\r\n};\r\n\r\nfunction cloneNodes(node) {\r\n const output = _.clone(node);\r\n _.forEach(output, (value, key) => {\r\n if (key !== 'children' && _.isObject(value) && !_.isFunction(value)) {\r\n output[key] = _.clone(value);\r\n }\r\n });\r\n output.children = _.map(node.children, childNode => cloneNodes(childNode));\r\n return output;\r\n}\r\n\r\nfunction localizeNodes(node, i18n) {\r\n const output = node;\r\n if (output.name) {\r\n output.name = i18n.getString(output.name);\r\n }\r\n if (output.title) {\r\n output.title = i18n.getString(output.title);\r\n }\r\n if (output.description) {\r\n output.description = _.isObject(output.description) ?\r\n _.mapObject(output.description, value => i18n.getString(value)) :\r\n i18n.getString(output.description);\r\n }\r\n output.children = _.map(node.children, childNode => localizeNodes(childNode, i18n));\r\n return output;\r\n}\r\n\r\nfunction getLinkFromEnumeration(node, routePrefix, queryParams) {\r\n switch (parseInt(node.path, 10)) {\r\n case 0: return (`${routePrefix}/v2/welcome${queryParams}`);\r\n case 1: return (`${routePrefix}/category/${node.id}${queryParams}`);\r\n case 2: return (`${routePrefix}/create/${node.id}${queryParams}`);\r\n default: /* do nothing */\r\n }\r\n _.defer(() => { throw new Error(`unsupported node type: ${node.path}`); });\r\n return node.path;\r\n}\r\n\r\nfunction resolveNodePaths(node, routePrefix, queryParams = '') {\r\n if (node.children) {\r\n _.each(node.children, (child) => {\r\n resolveNodePaths(child, routePrefix, queryParams);\r\n });\r\n }\r\n // eslint-disable-next-line no-param-reassign\r\n node.path = getLinkFromEnumeration(node, routePrefix, queryParams);\r\n return node;\r\n}\r\n\r\nexport const reportsTree = {\r\n get: (i18n, routePrefix, uid, cid) => {\r\n const queryParams = `?cid=${cid}&uid=${uid}`;\r\n // localize nodes will also clone the tree\r\n let output = cloneNodes(rootNode);\r\n output = localizeNodes(output, i18n);\r\n return resolveNodePaths(output, routePrefix, queryParams);\r\n },\r\n};\r\n\r\n/* istanbul ignore next */\r\nfunction formatForUINext(node, scope, campaignTypes) {\r\n const output = {};\r\n output.id = node.id;\r\n output.name = node.name;\r\n if (node.children) {\r\n output.fixedRoute = node.path;\r\n }\r\n output.route = node.path;\r\n output.campaignTypes = campaignTypes;\r\n output.scope = scope;\r\n if (node.isAllowed) { output.checkPermission = node.isAllowed; }\r\n if (node.searchAlias) { output.searchAlias = node.searchAlias; }\r\n output.available = () => true;\r\n output.children =\r\n _.map(node.children, childNode => formatForUINext(childNode, scope, campaignTypes));\r\n return output;\r\n}\r\n\r\n/* istanbul ignore next */\r\nexport function getReportingNextTree(routePrefix, scope, campaignTypes) {\r\n let output = cloneNodes(rootNode);\r\n output = resolveNodePaths(output, routePrefix);\r\n return formatForUINext(output, scope, campaignTypes).children;\r\n}\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const performance = {\r\n children: [\r\n {\r\n title: _TL_('Understand account performance and identify trends.'),\r\n name: ReportType.AccountPerformanceReport,\r\n searchAlias: _TL_('Account report'),\r\n path: 2,\r\n id: 'accountreport',\r\n apiKey: 'AccountPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, impression share (%), clicks, spend, and average cost-per-click for individual accounts. This data can be sorted by individual accounts, currency, bid match type, and delivered match type. '),\r\n why: _TL_('To observe long-term account performance and trends.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See a snapshot of your account, and if there’s anything to flag.'),\r\n name: ReportType.CampaignPerformanceReport,\r\n searchAlias: _TL_('Campaign report'),\r\n path: 2,\r\n id: 'campaignreport',\r\n apiKey: 'CampaignPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, impression share (%), clicks, spend, and average cost-per-click for each campaign or account. This data can be sorted by campaign, campaign status, and quality score. '),\r\n why: _TL_('To view high-level performance statistics and quality attributes for each campaign or account. This is also a quick way to flag any major campaign or account problems.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See if your ad group is meeting your preset goals.'),\r\n name: ReportType.AdGroupPerformanceReport,\r\n searchAlias: _TL_('Ad group report'),\r\n path: 2,\r\n id: 'adgroupreport',\r\n apiKey: 'AdGroupPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, impression share (%), clicks, spend, and average cost-per-click of your ad groups. This data can be sorted by ad group, ad group status, language, and network.'),\r\n why: _TL_('To more broadly compare delivery performance statistics by ad group, campaign, or account attributes rather than at the keyword level.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See which ads are leading to clicks and conversions.'),\r\n name: ReportType.AdPerformanceReport,\r\n searchAlias: _TL_('Ad report'),\r\n path: 2,\r\n id: 'adreport',\r\n apiKey: 'AdPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad. This data can be sorted by ad ID, ad status, ad title, display URL, and destination URL. '),\r\n why: _TL_('To help you determine which ads lead to clicks and conversions, and which are not performing. Having underperforming ads in your account can pull down the quality of your campaigns.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See which keywords are leading to clicks.'),\r\n name: ReportType.KeywordPerformanceReport,\r\n searchAlias: _TL_('Keyword report'),\r\n path: 2,\r\n id: 'keywordreport',\r\n apiKey: 'KeywordPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, click-through rate, quality score, bid, cost-per-click, position, and conversions for each individual keyword within your campaign. '),\r\n why: _TL_('To find out which keywords are triggering your ads and getting clicks. You can also identify keywords that aren’t performing well to determine if you want to delete them.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See a set of keyword and negative keyword pairs that are blocking your bids from participating in the auction.'),\r\n name: ReportType.NegativeKeywordConflictReport,\r\n searchAlias: _TL_('Negative keyword conflicts report'),\r\n path: 2,\r\n id: 'negativekeywordconflictreport',\r\n helpId: 'reporting_NkwConflicts',\r\n apiKey: 'NegativeKeywordConflictReport',\r\n description: {\r\n what: _TL_('Negative keywords that conflict with some of your keywords, and block your ad from showing.'),\r\n why: _TL_('This report tells you which keywords and negative keywords are in conflict, and whether the conflict is at the campaign or ad group level. Use this list to figure out which negative keywords to delete.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See which search terms are causing your ads to display.'),\r\n name: ReportType.SearchQueryPerformanceReport,\r\n searchAlias: _TL_('Search term report'),\r\n path: 2,\r\n id: 'searchtermreport',\r\n helpId: 'reporting_SearchTerm',\r\n apiKey: 'SearchQueryPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, click-through rate, and average position for search terms that have triggered your ads.'),\r\n why: _TL_('To see what your audience is searching for when your ads are shown. You can use this information to make informed additions, removals, or edits to both your keyword and negative keyword lists.'),\r\n note: _TL_('If you select one or more shopping campaigns, you need to remove the Keyword column before you run this report.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See estimated impressions you might be losing.'),\r\n name: ReportType.ShareOfVoiceReport,\r\n searchAlias: _TL_('Share of voice report'),\r\n path: 2,\r\n id: 'shareofvoicereport',\r\n helpId: 'reporting_SOV',\r\n apiKey: 'ShareOfVoiceReport',\r\n description: {\r\n what: _TL_('The number of times your ad is shown as a percentage of the total available impressions in the marketplace. Along with the impression share you are losing because of insufficient budget, low ad ranking or other reasons. The data is available at the account, campaign, ad group, and keyword levels.'),\r\n why: _TL_('To view the percentage of impression share (%) you have in the marketplace, find out if you are missing opportunities based on your current campaign settings, and make changes to improve impression share. '),\r\n },\r\n },\r\n {\r\n title: _TL_('See how your landing pages are performing.'),\r\n name: ReportType.DestinationURLPerformanceReport,\r\n searchAlias: _TL_('Destination URL report'),\r\n path: 2,\r\n id: 'desturlreport',\r\n apiKey: 'DestinationURLPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for your landing pages. This data can be sorted by destination URL, account, campaign, and ad group. Note that only the first URL in the list (ad, keyword or criterion) is reported. '),\r\n why: _TL_('To identify landing pages that met audience expectations, resulting in high click or conversion ratios.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See performance data for both search and content websites where your ads appear.'),\r\n name: ReportType.PublisherUsagePerformanceReport,\r\n searchAlias: _TL_('Website URL (publisher) report'),\r\n path: 2,\r\n id: 'weburlreport',\r\n apiKey: 'PublisherUsagePerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and conversions for websites on the Yahoo Microsoft Advertising Network and syndicated search partner networks. This data can be sorted by website URL, account, campaign, and ad group.'),\r\n why: _TL_('To see if any website URLs aren’t performing well enough for your campaign or ad group target settings. For example, if ad impressions at those URLs yield a low click-through-rate, then you might decide to exclude those websites from your campaign.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See which ad text strings are doing well.'),\r\n name: ReportType.AdDynamicTextPerformanceReport,\r\n searchAlias: _TL_('Ad dynamic text report'),\r\n path: 2,\r\n id: 'addynamictextreport',\r\n apiKey: 'AdDynamicTextPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click of your dynamic text strings. This data can be sorted by ad title, destination URL, param1, param2, and param3.'),\r\n why: _TL_('To identify which dynamic text strings are performing well and which strings you should consider changing.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See how the ad groups that are associated with remarketing lists are performing.'),\r\n name: ReportType.AudiencePerformanceReport,\r\n searchAlias: _TL_('Audiences report'),\r\n path: 2,\r\n id: 'audiencesreport',\r\n apiKey: 'AudiencePerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, and conversions for your remarketing lists. '),\r\n why: _TL_('To evaluate performance of remarketing campaigns.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See data on how people behave on your website.'),\r\n name: ReportType.GoalsAndFunnelsReport,\r\n searchAlias: _TL_('Goals report'),\r\n path: 2,\r\n id: 'goalsreport',\r\n helpId: 'reporting_CampaignAnalytics',\r\n apiKey: 'GoalsAndFunnelsReport',\r\n description: {\r\n what: _TL_('The conversion data by goal name. This data can be sorted by account, ad group, campaign, keyword, and goal.'),\r\n why: _TL_('To understand which campaigns and keywords are leading users to complete a specific type of conversion action.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See conversion data for your campaigns during a specific time period.'),\r\n name: ReportType.ConversionPerformanceReport,\r\n searchAlias: _TL_('Conversions report'),\r\n path: 2,\r\n id: 'conversionsreport',\r\n helpId: 'reporting_CampaignAnalytics',\r\n apiKey: 'ConversionPerformanceReport',\r\n description: {\r\n what: _TL_('The conversion data which includes conversion counts, assists, revenue, CostPerAssist, and Return on ad spend with other performance data, such as impressions, clicks and spend for your campaigns. This data can be sorted by account, ad group, campaign, keyword, and device type.'),\r\n why: _TL_('To understand which campaigns and keywords are leading customers to complete conversion actions.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('Performance reports give you a closer look at how your campaigns are performing, including details like CTR and impressions.'),\r\n name: _TL_('Performance'),\r\n path: 1,\r\n id: 'performance',\r\n state: {\r\n expanded: true,\r\n },\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const extensions = {\r\n children: [\r\n {\r\n title: _TL_('See how your extensions perform for your keywords.'),\r\n name: ReportType.AdExtensionByKeywordReport,\r\n searchAlias: _TL_('Ad extension by keyword report'),\r\n path: 2,\r\n id: 'extensionkeywordreport',\r\n helpId: 'reporting_AdExtension',\r\n apiKey: 'AdExtensionByKeywordReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, and spend of various click types for each keyword when served with different ad extensions. Click types are the different parts of the ad that you can click on.'),\r\n why: _TL_('To understand how different click types are performing for each keyword when different ad extensions are shown in the ad.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See how your extensions perform for your ads.'),\r\n name: ReportType.AdExtensionByAdReport,\r\n searchAlias: _TL_('Ad extension by ad report'),\r\n path: 2,\r\n id: 'extensionadreport',\r\n helpId: 'reporting_AdExtension',\r\n apiKey: 'AdExtensionByAdReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, and spend of various click types for each ad when served with different ad extensions. Click types are the different parts of the ad that you can click on.'),\r\n why: _TL_('To understand how different click types are performing for each ad when the ad is served with different ad extensions.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See how engaging your ad extension items are.'),\r\n name: ReportType.AdExtensionDetailReport,\r\n searchAlias: _TL_('Ad extension details report'),\r\n path: 2,\r\n id: 'adextensiondetailreport',\r\n helpId: 'reporting_AdExtension',\r\n apiKey: 'AdExtensionDetailReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, and spend of various ad extension properties for each ad group when served with different ad extensions.'),\r\n why: _TL_('To understand how different ad extension properties are performing when different ad extensions are shown in the ad.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See duration and phone spend details for each forwarded call.'),\r\n name: ReportType.CallDetailReport,\r\n searchAlias: _TL_('Call forwarding detail report'),\r\n path: 2,\r\n id: 'callforwarddetailreport',\r\n helpId: 'reporting_AdExtension',\r\n apiKey: 'CallDetailReport',\r\n isAllowed: permissions => !!permissions.IsCallMeteringAllowed,\r\n description: {\r\n what: _TL_('The time and duration of each phone call that originated from a call extension for accounts, campaigns, or ad groups.'),\r\n why: _TL_('To understand how the accounts, campaigns, or ad groups are performing with call extensions.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('Ad extension reports give you a closer look at how each ad extension is performing based on click type for ads and keywords and ad extension properties for ad groups.'),\r\n name: _TL_('Ad extensions'),\r\n path: 1,\r\n id: 'extensions',\r\n};\r\n\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const productAds = {\r\n children: [\r\n {\r\n title: _TL_('See the performance of your Product Groups in Shopping campaigns '),\r\n name: ReportType.ProductPartitionPerformanceReport,\r\n searchAlias: _TL_('Product partition report'),\r\n path: 2,\r\n id: 'productpartitionreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductPartitionPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsEnhancedShoppingCampaignAllowed,\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, average cost-per-click and conversion for each product group in your Shopping campaigns. '),\r\n why: _TL_(' To see the performance data for the product groups in your shopping campaigns and to optimize your campaigns accordingly .'),\r\n },\r\n },\r\n {\r\n title: _TL_('See product partition unit data of your Product Groups in Shopping campaigns'),\r\n name: ReportType.ProductPartitionUnitPerformanceReport,\r\n searchAlias: _TL_('Product partition unit report'),\r\n path: 2,\r\n id: 'productpartitionunitreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductPartitionUnitPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, average cost-per-click, and conversions for each product group in your Shopping campaigns. Depending on the report time and columns you choose, the report may include more than one row per product group. '),\r\n why: _TL_(' To see product partition unit data of your Product Groups in Shopping campaigns.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See the performance of your Products in Shopping campaigns '),\r\n name: ReportType.ProductDimensionPerformanceReport,\r\n searchAlias: _TL_('Product dimension report'),\r\n path: 2,\r\n id: 'productdimensionreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductDimensionPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsEnhancedShoppingCampaignAllowed,\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, average cost-per-click and conversion for each product in your catalog [ each line item in Microsoft Merchant Center catalog ] '),\r\n why: _TL_('To figure out which of your products are triggering ads and getting most clicks and optimize the ones not performing so well. '),\r\n },\r\n },\r\n {\r\n title: _TL_('See which search terms are causing your ads to display.'),\r\n name: ReportType.ProductSearchQueryPerformanceReport,\r\n searchAlias: _TL_('Product search term report'),\r\n path: 2,\r\n id: 'productsearchtermreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductSearchQueryPerformanceReport',\r\n description: {\r\n what: _TL_('Impressions, clicks, and other metrics for search terms that have triggered your Product ads. Data from Smart Shopping campaigns is not included in this report.'),\r\n why: _TL_('To see what your audience is searching for when your Product ads are shown.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See how products are distributed acrocss given product tree.'),\r\n name: ReportType.ProductMatchCountReport,\r\n searchAlias: _TL_('Product match count report'),\r\n path: 2,\r\n id: 'productmatchcountreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductMatchCountReport',\r\n description: {\r\n what: _TL_('The number of products that are matched and targeted at the Campaign, Ad Group, and Product Group level.'),\r\n why: _TL_('To see if you are covering and bidding across your Microsoft shopping campaigns inventory. Note that this only provides the matched data for your current product group within active campaigns, and you cannot obtain historical views.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See a set of negative keyword pairs that are blocking your products from participating in the auction.'),\r\n name: ReportType.ProductNegativeKeywordConflictReport,\r\n searchAlias: _TL_('Product negative keyword conflicts report'),\r\n path: 2,\r\n id: 'productnegativekeywordreport',\r\n helpId: 'reporting_ProductAds',\r\n apiKey: 'ProductNegativeKeywordConflictReport',\r\n description: {\r\n what: _TL_('Shopping negative keywords that conflict with some of your products, and block your ad from showing.'),\r\n why: _TL_('This report tells you which products and negative keywords are in conflict, and whether the conflict is at the campaign or ad group level. Use this list to figure out which negative keywords to delete.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('Product ad reports give you a closer look at how your Bing Shopping campaigns are performing based on product partition and product offer data.'),\r\n name: _TL_('Product ads'),\r\n path: 1,\r\n id: 'productads',\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const changeHistory = {\r\n children: [\r\n {\r\n title: _TL_('See a list of changes that have been made to your campaigns.'),\r\n name: ReportType.SearchCampaignChangeHistoryReport,\r\n searchAlias: _TL_('Change history report'),\r\n path: 2,\r\n id: 'changehistoryreport',\r\n helpId: 'reporting_ChangeHistory',\r\n apiKey: 'SearchCampaignChangeHistoryReport',\r\n description: {\r\n what: _TL_('The changes to keyword bids or landing pages, creation of new campaigns, or addition of new budgets.'),\r\n why: _TL_('To discover when changes to an account were made, as well as which user made the changes.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See what changes have been made to individual user profiles in your accounts.'),\r\n name: ReportType.UserRoleChangeHistoryReport,\r\n searchAlias: _TL_('User role change history report'),\r\n path: 2,\r\n id: 'userrolechangehistoryreport',\r\n apiKey: 'UserRoleChangeHistoryReport',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See what changes have been made to individual user profiles in your accounts.'),\r\n },\r\n {\r\n title: _TL_('See a list of changes, filtered by user, that shows potentially fraudulent activity.'),\r\n name: ReportType.FraudChangeHistoryReport,\r\n searchAlias: _TL_('Fraud change history report'),\r\n path: 2,\r\n id: 'fraudchangehistoryreport',\r\n apiKey: 'FraudChangeHistoryReport',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See a list of changes, filtered by user, that shows potentially fraudulent activity.'),\r\n },\r\n ],\r\n title: _TL_('See the changes that have been made to your campaigns and users within an account, over a period you specify.'),\r\n name: _TL_('Change history'),\r\n path: 1,\r\n id: 'changehistory',\r\n};\r\n\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const targeting = {\r\n children: [\r\n {\r\n title: _TL_('See total impressions and clicks for each campaign or ad group, organized by gender and age group.'),\r\n name: ReportType.AgeGenderAudienceReport,\r\n searchAlias: _TL_('Age and gender report'),\r\n path: 2,\r\n id: 'ageandgenderreport',\r\n apiKey: 'AgeGenderAudienceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad group, organized by gender and age group.'),\r\n why: _TL_('To discover how your campaigns and ad groups are resonating with different age groups and genders.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See total impressions and clicks for each campaign or ad group, organized by company, industry, and job function.'),\r\n name: ReportType.ProfessionalDemographicsAudienceReport,\r\n searchAlias: _TL_('Professional demographics report'),\r\n path: 2,\r\n id: 'professionaldemographicsreport',\r\n apiKey: 'ProfessionalDemographicsAudienceReport',\r\n isAllowed: permissions =>\r\n !!permissions.IsLinkedInTargetingEnabled ||\r\n !!permissions.IsAIMCampaignEnabled,\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad group, organized by company, industry, and job function. Please note that this report only reflects your Audience Campaign data.'),\r\n why: _TL_('To discover how your campaigns and ad groups are resonating with different companies, industries, and job functions.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See total impressions and clicks for each ad group, organized by the locations where your ads were shown.'),\r\n name: ReportType.UserLocationPerformanceReport,\r\n searchAlias: _TL_('User location report'),\r\n path: 2,\r\n id: 'userlocationreport',\r\n helpId: 'reporting_GEONew',\r\n apiKey: 'UserLocationPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad group, organized by city, country, metro area, radius, state, and account.'),\r\n why: _TL_('To see where your traffic is coming from broken out by the physical location and the location people are searching for. You can then validate whether your location targeting strategy is successful, and identify opportunities to improve.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See total impressions and clicks for each ad group, organized by the locations where your ads were shown.'),\r\n name: ReportType.GeographicPerformanceReport,\r\n searchAlias: _TL_('Geographic report'),\r\n path: 2,\r\n id: 'geographicreport',\r\n helpId: 'reporting_GEONew',\r\n apiKey: 'GeographicPerformanceReport',\r\n description: {\r\n what: _TL_('The impressions, clicks, spend, and average cost-per-click for each ad group, organized into columns that show the location used to serve ads.'),\r\n why: _TL_('To see where your traffic is coming from: the physical location of the people searching for your ad or the locations people are searching for. You can then validate whether your location targeting strategy is successful and identify opportunities to improve.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('See how your campaigns are doing among the people and places who are seeing your ads.'),\r\n name: _TL_('Targeting'),\r\n path: 1,\r\n id: 'targeting',\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const billingAndBudget = {\r\n children: [\r\n {\r\n title: _TL_('See how you’ve spent your budget over a specific date range.'),\r\n name: ReportType.BudgetSummaryReport,\r\n searchAlias: _TL_('Budget report'),\r\n path: 2,\r\n id: 'budgetreport',\r\n apiKey: 'BudgetSummaryReport',\r\n description: {\r\n what: _TL_('The monthly budget and daily spend organized by accounts and campaigns.'),\r\n why: _TL_('To help control and manage your advertising spend for a particular month.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See your detailed billing history.'),\r\n name: ReportType.CustomerInvoiceReport,\r\n searchAlias: _TL_('Manager account invoice billing report'),\r\n path: 2,\r\n id: 'customerinvoicereport',\r\n apiKey: 'CustomerInvoiceReport',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See your detailed billing history.'),\r\n },\r\n {\r\n title: _TL_('See your most recent billing statement.'),\r\n name: ReportType.BillingStatementReport,\r\n searchAlias: _TL_('Billing statement report'),\r\n path: 2,\r\n id: 'billingstatementreport',\r\n apiKey: 'BillingStatementReport',\r\n description: {\r\n what: _TL_('Billing documents, including invoices and credit memos.'),\r\n why: _TL_('To view an overall summary of your billing information.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('See how you are spending your budget, and your most recent billing statement.'),\r\n name: _TL_('Billing and budget'),\r\n path: 1,\r\n id: 'billingandbudget',\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const advancedInsights = {\r\n children: [\r\n {\r\n title: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n name: ReportType['AccountPerformanceReport-SixWeeks'],\r\n searchAlias: _TL_('Account - 6 weeks report'),\r\n path: 2,\r\n id: 'sixweekaccountactivityreport',\r\n apiKey: 'AccountPerformanceReport-SixWeeks',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n },\r\n {\r\n title: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n name: ReportType['AccountPerformanceReport-TwoMonths'],\r\n searchAlias: _TL_('Account - 2 months (MoM) report'),\r\n path: 2,\r\n id: 'twomonthaccountactivityreport',\r\n apiKey: 'AccountPerformanceReport-TwoMonths',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n },\r\n {\r\n title: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n name: ReportType['AccountPerformanceReport-TwoYears'],\r\n searchAlias: _TL_('Account - 2 years (YoY) report'),\r\n path: 2,\r\n id: 'twoyearaccountactivityreport',\r\n apiKey: 'AccountPerformanceReport-TwoYears',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: _TL_('See how individual accounts are performing with excel charts and graphs'),\r\n },\r\n {\r\n title: _TL_('See estimated impressions you might be losing.'),\r\n name: ReportType['AccountPerformanceReport-ShareOfVoice'],\r\n searchAlias: _TL_('Account - Share of voice report'),\r\n path: 2,\r\n id: 'advancedinsightsshareofvoicereport',\r\n apiKey: 'AccountPerformanceReport-ShareOfVoice',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n description: {\r\n what: _TL_('The impressions, impression share (%), impression share lost to budget (%), and impression share lost to bid. This data can be sorted by keyword, keyword ID, landing page experience, and quality score.'),\r\n why: _TL_('To view impression share (%) of successful bids for each keyword, and identify opportunities to increase impression share.'),\r\n },\r\n },\r\n ],\r\n title: _TL_('Find advanced insights into how your advertisers are performing'),\r\n name: _TL_('Advanced insights'),\r\n path: 1,\r\n id: 'advancedinsights',\r\n isAllowed: permissions => !!permissions.IsInternalUser,\r\n};\r\n","import { ReportType } from '../../../../i18n-map/report-type';\r\n\r\nexport const dynamicSearch = {\r\n children: [\r\n {\r\n title: _TL_('See the clicks, impressions, and other performance metrics of each of your dynamic ad targets.'),\r\n name: ReportType.DSAAutoTargetPerformanceReport,\r\n searchAlias: _TL_('Dynamic search ad auto target report'),\r\n path: 2,\r\n id: 'dsadautotargetreport',\r\n helpId: 'reporting_DynamicSearchAds',\r\n apiKey: 'DSAAutoTargetPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsDynamicSearchAdsV1Enabled,\r\n description: {\r\n what: _TL_('The clicks, impressions, and other performance metrics of each of your dynamic ad targets.'),\r\n why: _TL_('To understand how your dynamic ad targets are performing and where bid adjustments may be useful.'),\r\n },\r\n },\r\n {\r\n title: _TL_('See the clicks, impressions, and other performance generated from your website.'),\r\n name: ReportType.DSACategoryPerformanceReport,\r\n searchAlias: _TL_('Dynamic search ad category report'),\r\n path: 2,\r\n id: 'dsadcategoryreport',\r\n helpId: 'reporting_DynamicSearchAds',\r\n apiKey: 'DSACategoryPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsDynamicSearchAdsV1Enabled,\r\n description: {\r\n what: _TL_('The clicks, impressions, and other performance generated from your website.'),\r\n why: _TL_('To check the performance of your existing category targets or to find new categories worth targeting. '),\r\n },\r\n },\r\n {\r\n title: _TL_('See search terms that triggered your dynamic search ads and their corresponding headlines, final URLs, and associated performance metrics.'),\r\n name: ReportType.DSASearchQueryPerformanceReport,\r\n searchAlias: _TL_('Dynamic search ad search term report'),\r\n path: 2,\r\n id: 'dsadsearchtermreport',\r\n helpId: 'reporting_DynamicSearchAds',\r\n apiKey: 'DSASearchQueryPerformanceReport',\r\n isAllowed: permissions => !!permissions.IsDynamicSearchAdsV1Enabled,\r\n description: {\r\n what: _TL_('Search terms that triggered your dynamic search ads and their corresponding headlines, final URLs, and associated performance metrics.'),\r\n why: _TL_(\"To see how your ads perform against search terms. The data can help you find negative keywords (so that you're not spending money targeting the wrong customer), as well as the right keywords that create conversions. \"),\r\n },\r\n },\r\n ],\r\n title: _TL_('Dynamic search ads reports allow you to see a holistic view of your campaigns’ dynamic ad target, category, and search term performance.'),\r\n name: _TL_('Dynamic search ads'),\r\n path: 1,\r\n id: 'dynamicsearch',\r\n isAllowed: permissions => !!permissions.IsDynamicSearchAdsV1Enabled,\r\n};\r\n","import _ from 'underscore';\r\nimport { ReportListDataFactory } from './report-list-data-factory';\r\nimport { reportsTree } from './reports';\r\n\r\nexport class ReportList {\r\n constructor(permissions, log, cid, uid, i18n, routePrefix) {\r\n if (!_.isObject(log)) {\r\n throw new Error('PathProvider: log provided is not an Object');\r\n }\r\n\r\n this.log = log;\r\n this.isValidCategoryId = this.isValidCategoryId.bind(this);\r\n this.isValidCreateReportId = this.isValidCreateReportId.bind(this);\r\n\r\n if (ReportList.reportListData != null) { return; }\r\n const dataFactory = new ReportListDataFactory(\r\n reportsTree.get(i18n, routePrefix, uid, cid),\r\n permissions,\r\n log,\r\n cid,\r\n uid,\r\n routePrefix\r\n );\r\n ReportList.reportListData = dataFactory.fetchData();\r\n }\r\n\r\n static reportListData\r\n\r\n isValidCreateReportId(id) {\r\n if (!_.isString(id)) {\r\n this.log\r\n .Error(`PathProvider:isValidCreateReportId - supplied id to isValidCreateReportId is a ${typeof id}`);\r\n return false;\r\n }\r\n\r\n const { reportListData } = ReportList;\r\n const lowerCaseId = id.toLowerCase();\r\n return !!reportListData.validCreateReportIds[lowerCaseId];\r\n }\r\n\r\n isValidCategoryId(id) {\r\n if (!_.isString(id)) {\r\n this.log\r\n .Error(`PathProvider:isValidCategoryId - supplied id to isValidCategoryId is a ${typeof id}`);\r\n return false;\r\n }\r\n\r\n const { reportListData } = ReportList;\r\n const lowerCaseId = id.toLowerCase();\r\n return !!reportListData.validCategoryIds[lowerCaseId];\r\n }\r\n\r\n\r\n getUsersReportsTree() {\r\n const { reportListData } = ReportList;\r\n return reportListData.reportsTree;\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withI18nConsumer } from '@bingads-webui-react/i18n-context';\r\nimport { withPermissionContext } from '../permission-provider';\r\nimport { ReportList } from './report-list/report-list';\r\n\r\n\r\nexport const ReportListContext = React.createContext('');\r\n\r\nexport class ReportListServiceBase extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n const reportList = new ReportList(\r\n this.props.permissions,\r\n {},\r\n this.props.cid,\r\n this.props.uid,\r\n this.props.i18n,\r\n this.props.routePrefix\r\n );\r\n const reportsTree = reportList.getUsersReportsTree();\r\n const reports = {};\r\n _.each(\r\n reportsTree.children,\r\n (child) => {\r\n _.each(\r\n child.children,\r\n (leaf) => {\r\n reports[leaf.id] = leaf;\r\n }\r\n );\r\n }\r\n );\r\n this.state = {\r\n context: {\r\n /**\r\n * reportsTree is the graph of reports and categories\r\n * reports is the list of reports keyed by id\r\n */\r\n reportsTree,\r\n reports,\r\n isValidCreateReportId: id => reportList.isValidCreateReportId(id),\r\n isValidCategoryId: id => reportList.isValidCategoryId(id),\r\n },\r\n };\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.children}\r\n );\r\n }\r\n}\r\n\r\nReportListServiceBase.propTypes = {\r\n /**\r\n * Content rendered in the body\r\n */\r\n children: PropTypes.node.isRequired,\r\n\r\n /**\r\n * Localization module\r\n */\r\n i18n: PropTypes.shape({ getString: PropTypes.func }).isRequired,\r\n\r\n /**\r\n * Customer Id\r\n */\r\n cid: PropTypes.number.isRequired,\r\n\r\n /**\r\n * User Id\r\n */\r\n uid: PropTypes.number.isRequired,\r\n\r\n /**\r\n * Permissions\r\n */\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n\r\n routePrefix: PropTypes.string.isRequired,\r\n};\r\n\r\nconst ReportListServiceWithI18n = withI18nConsumer(ReportListServiceBase);\r\nexport const ReportListService = withPermissionContext(ReportListServiceWithI18n);\r\n\r\n","import React from 'react';\r\nimport { ReportListContext } from './report-list-service';\r\n\r\nexport const withReportListContext = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","import React from 'react';\r\n\r\nconst ServicesEndpointsContext = React.createContext('');\r\n\r\nexport const ServicesEndpointsProvider = ServicesEndpointsContext.Provider;\r\n\r\nexport function withServicesEndpointsConsumer(AReactComponent) {\r\n return function ComponentWithServicesEndpoints(props) {\r\n return (\r\n \r\n {\r\n value => \r\n }\r\n \r\n );\r\n };\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport _ from 'underscore';\r\nimport { withScope } from '@bingads-webui-react/scope-service';\r\nimport { JsDataLightWithScopePath } from '../../odata-abstraction/js-data-light-with-scope-path';\r\nimport { withPermissionContext } from '../permission-provider';\r\nimport { modeEnum } from './modes';\r\n\r\nexport const Mode = React.createContext(modeEnum.PRIVATE);\r\n\r\nfunction ModeUpdater({ scope, permissions }) {\r\n const type = _.chain(scope).result('values').result('type', '').value();\r\n const { IsReportsMergeEnabled } = permissions;\r\n\r\n let mode = IsReportsMergeEnabled ?\r\n modeEnum.SHARED :\r\n modeEnum.PRIVATE;\r\n\r\n if (type.toLowerCase() === 'reportuitemplate') {\r\n mode = modeEnum.PRIVATE;\r\n }\r\n\r\n JsDataLightWithScopePath.updateMode(mode);\r\n\r\n return false;\r\n}\r\n\r\nModeUpdater.propTypes = {\r\n scope: PropTypes.shape({}).isRequired,\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n};\r\n\r\n\r\nconst Wrapped = withPermissionContext(withScope(ModeUpdater));\r\nexport { Wrapped as ModeUpdater };\r\n\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { ReportRepository } from './report-repository';\r\nimport { PermissionProvider } from './permission-provider';\r\nimport { ReportListService } from './report-list-service';\r\nimport { ServicesEndpointsProvider } from './services-endpoints';\r\nimport { ModeUpdater } from './mode-updater';\r\n\r\nexport const ContextProviders = props => (\r\n \r\n \r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n \r\n );\r\n\r\n\r\nContextProviders.propTypes = {\r\n\r\n permissions:\r\n PropTypes.shape({}).isRequired,\r\n\r\n servicesEndpoints: PropTypes.objectOf(PropTypes.string).isRequired,\r\n\r\n children: PropTypes.node.isRequired,\r\n\r\n cid: PropTypes.number.isRequired,\r\n\r\n uid: PropTypes.number.isRequired,\r\n\r\n prefetchedData: PropTypes.shape({\r\n History: PropTypes.shape({\r\n value: PropTypes.array,\r\n }),\r\n CustomReports: PropTypes.shape({\r\n value: PropTypes.array,\r\n }),\r\n }),\r\n\r\n routePrefix: PropTypes.string.isRequired,\r\n};\r\n\r\nContextProviders.defaultProps = {\r\n prefetchedData: {\r\n History: {\r\n value: [],\r\n },\r\n CustomReports: {\r\n value: [],\r\n },\r\n },\r\n};\r\n","\r\nimport React from 'react';\r\n\r\nexport const LegacyDepsContext = React.createContext('');\r\n\r\n\r\nexport const withLegacyDeps = AReactComponent => (props => (\r\n \r\n {\r\n context => \r\n }\r\n ));\r\n","export const theme = {\r\n components: {\r\n blockUi: {\r\n reactBlockUi: {\r\n minHeight: 'unset',\r\n },\r\n },\r\n },\r\n core: {\r\n color: {\r\n light: {\r\n white: '#ffffff',\r\n gray10: '#f7f9f8',\r\n gray20: '#f9f9f9',\r\n gray30: '#f5f5f5',\r\n gray40: '#f4f4f4',\r\n gray50: '#ececec',\r\n gray60: '#dddddd',\r\n gray70: '#cccccc',\r\n },\r\n },\r\n palette: {\r\n neutralPrimary: '#323130',\r\n neutralSecondary: '#605e5c',\r\n },\r\n },\r\n};\r\n\r\n","import { ThemeFluent, ComponentSettings } from '@bingads-webui-theme-2018/theme-fluent';\r\nimport { theme as reportingTheme } from '@bingads-webui-campaign/report-shared';\r\nimport { merge } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nexport const reportVnextTheme = {\r\n core: merge(\r\n { isUIVnext: true },\r\n ThemeFluent,\r\n reportingTheme.core\r\n ),\r\n components: merge(\r\n {},\r\n ComponentSettings,\r\n reportingTheme.components\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 new 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 blackList = dataRetentionBlackList[reportSchema.DataRetention[timeGrain]][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","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","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","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","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","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":["sectionType","renderTypes","Table","_TL_","Linechart","Barchart","timeGrains","i18nMap","ReportAggregation","fileFormats","FileFormatForReporting","savedTaskItemTypes","Template","CustomerTemplate","AccountTemplate","sharedTemplateTypes","isValidSaveType","taskItemType","_","values","contains","value","getSaveType","_ref","IsReportsMergeEnabled","IsInternalUser","accountScope","taskItem","ScopeFilterLevel","getScopeFilterLevel","mtScopeFilterLevel","mtEnum","partialConversionsColumns","AllConversions","Conversions","ConversionRate","AllConversionRate","LowQualityConversions","CostPerConversion","ViewThroughCostPerConversion","ViewThroughConversionRate","AllCostPerConversion","operatorToApi","$eq","$neq","$gt","$gte","$in","$lt","$lte","$contains","$containsany","$doesnotcontain","$startswith","$endswith","operatorFromApi","toApi","predicates","filterSchema","arguments","length","undefined","sharedSchema","filters","valueHandledByCaller","predicate","operatorApi","propertyValuesApi","arr","propertyName","propertySchema","propertyValueObject","operatorUi","propertyValueUi","enum","_toConsumableArray","type","split","map","x","trim","Filter","LogicalOperator","Expressions","PropertyName","Operator","Values","String","fromApi","Filters","Expression","_slicedToArray","join","Number","_defineProperty","convertPredicatesToFilters","GENERAL","COLUMN","FILTER","SETTING","ROOT","dataToApi","name","key","schemaName","renderType","timeGrain","timeRange","to","val","StartDate","start","EndDate","end","DateRangePreset","from","timeZone","format","accountCampaignSelector","keys","userScopes","selected","filterConvertor","includeTotalRow","options","getReportOptions","indexOf","EmailRecipients","v","scheduleThisReport","AttachFileToEmail","Cron","getApiObject","data","preview","output","sectionNode","section","node","property","Error","nodeKey","getDataObject","apiObject","identityDetails","user","customer","lcid","defaultData","ClientApplicationType","UserId","Id","CustomerId","LCID","MaxRowCount","IsDVS","AccountIds","UserScopes","CustomerScopes","CampaignReportScopes","AdGroupReportScopes","StartTime","EndTime","TimeZoneId","toLegacyTimeZone","formattedData","omitible","push","getUpdatePayload","onFailedValidation","valid","sectionData","isValid","ActionCenter","_React$Component","_this","_classCallCheck","_len","args","Array","_key","_callSuper","concat","runReport","download","_this$props$repositor","props","repository","createReport","queueDownload","payload","ReportData","getRunPayload","reportType","getReportType","setBlocker","mode","modeEnum","PRIVATE","SHARED","getOdataOptions","then","response","executionId","TaskItemExecutions","navigator","goto","catch","noop","finally","saveReport","updateReport","updateId","carryForward","saveReportAndRun","_this$props$repositor2","updateReportAndRun","_inherits","_createClass","_this2","_this$props","this","i18n","_jsxs","children","_jsx","Button","btnStyle","id","onClick","getString","variant","React","Wrapped","withRepositoryContext","defaultProps","GridItem","title","titleId","helpLinkId","classes","isGroup","className","row","role","md","centerAlignTitle","textRight","HelpIcon","topic","content","withDefaultStyles","components","core","baseStyle","textAlign","display","verticalAlign","width","paddingRight","paddingTop","fontFamily","fontWeight","fontSize","color","marginTop","marginBottom","isUIVnext","_objectSpread","maxWidth","paddingBottom","palette","neutralPrimary","helpbuttonStyle","themePrimary","Grid","messages","compactMessages","alerts","msg","Alert","warning","defaultTimeRange","Hourly","HourOfDay","Daily","DayOfWeek","Weekly","Monthly","Yearly","Summary","getDefaultTimeRange","reportSchema","TimeRanges","dataLengths","getMinimumSupported","today","warningMessage","dataRetention","DataRetention","plus","days","months","RangeError","timeGrainRangeOptions","WeeklyStartingMonday","dataRetentionBlackList","getAllowedRanges","blackList","regex","getCivilDateFromString","temp","exec","CivilDate","trimDate","date2","Date","year","month","day","isCivilDateGreaterThan","titleMap","true","false","Title","isUpdateReport","Description","description","what","why","note","GenericSelector","onChange","disabled","ariaLabelledByID","optionsJsx","Select","withValidation","RootSection","_Component","onValidate","result","setData","getValidationItemProps","reportDefinition","permissions","ValidationGroup","validationProps","schema","validationSchema","toLocaleLowerCase","customizationContent","style","paddingLeft","Input","IsReportingUIReportChartsEnabled","Component","properties","required","maxLength","withPermissionContext","AccountCampaignSelector","_this$props$permissio","IsReportingUINewDesignEnabled","IsReportingUIPhaseNext","_this$props$servicesE","servicesEndpoints","odataURI","CampaignAPI","ccBaseUrl","ClientCenterUIAPI","ccToken","Token","_this$props$identityD","customerId","userId","_this$props$identityD2","account","accountId","isInternalUser","finishedLoading","isCreateSimilar","defaultSelected","scopeFilterLevel","paddingTop5","RawSelector","isReportingUIPhaseNext","featurePilots","allSelected","onSelectedChange","forceAccountScope","isInternalReport","hocs","withIdentityContext","withServicesEndpointsConsumer","withI18nConsumer","withError","AdapterFactory","apply","TimeGrainSelector","schemaTimeGrains","ariaLabelledBy","allowedTimeGrains","TimeRangeSelectorBase","startDate","endDate","getFilteredRanges","getMinimumDay","getMinimumWarning","setWarning","dateFormat","putil","ianaTimeZone","toIANATimeZone","minSupportedDay","specificRanges","selectedTimeRange","selectedRangeId","allowedTimeRanges","range","rangeId","timeRangeSelector","ComparedDateRangePicker","disableCompare","displayType","relativeDropdown","selectedRange","onPickDateRanges","rangeType","isCivilDateGreaterThanEqual","toString","minDate","maxDate","areEqual","prevProps","nextProps","minSupportDay","daysAwayFromMonday","getCivilDateDayOfWeek","yesterday","sevenDaysAgo","fourteenDaysAgo","thirtyDaysAgo","thisSunday","thisMonday","thisMonthFirstDay","getCivilDateMonthStart","lastMonthlastDay","lastMonthFirstDay","lastTwoMonthlastDay","lastTwoMonthFirstDay","firstDayOfYear","with","rawRanges","englishString","localizedString","text","getTimeRanges","rangeOptions","supportedOptions","TimeRangeSelectorWithMemo","TimeRangeSelectorWithValidation","TimeRangeSelectorWithIdentityContext","TimeRangeSelectorWithStyle","float","top","right","left","animation","shouldShowSelector","getToday","GeneralSection","currentRange","allowedRanges","setToday","radioValues","getRadioId","item","index","radioOptions","disableTimeZoneSelector","accountCampaignSelectorLoaded","generalSetting","TimeRangeSelector","timeZones","topAlignTitle","validator","selectedItems","accountCampaignValidator","ColumnSection","ReportColumnChooser","currentActive","errorMessages","inputTitleStyle","position","alignSelf","Frequency","_item","CronModel","changeFrequency","cronFormatter","changeHour","optionFactory","selectorName","optionObj","useIndex","frequencyContainer","frequencyTitle","radioContainer","RadioGroup","items","getItemId","getItemValue","frequency","renderItem","dayOfWeek","dayOfMonth","checked","frequencySelect","e","target","getDaysOfWeek","getDaysOfMonth","hourContainer","hour","getHoursOfDay","StyledFrequency","alignItems","marginRight","flexShrink","StartEndDate","onSelectDate","date","state","isShowStartDatePicker","setState","startSelectedDate","changeStartEndDate","isShowEndDatePicker","endSelectedDate","errMessage","onKeyDown","event","keyCode","Enter","handelShowHideSingleDatePicker","setWrapperRef","wrapperRef","$","startNavigatedDate","endNavigatedDate","selectedRanges","document","addEventListener","removeEventListener","getCivilDateToday","years","startEndDate","startEndDateLabel","readOnly","formatCivilDate","skeleton","calenderWrapper","ref","SingleMonthCalendar","defaultNavigatedDate","defaultSelectedDate","navigatedDate","selectedDate","isMonthPickerEnabled","errorMsg","getUTCFullYear","getUTCMonth","getUTCDate","StyledStartEndDate","backgroundColor","overflow","getValidator","emailList","replace","RegExp","emails","offendingEmail","email","test","ValidatedTextArea","TextArea","EmailTextArea","forceValidate","field","alwaysShowError","ReportSchedule","toCronString","setSchedule","includeReport","onValidateEmail","parse","reportSchedule","scheduleTime","changeDefaultFrequency","emailTextArea","emailTitle","emailTextAreaSub","Checkbox","attachmentTooLarge","withPerfMarker","_ref2","minWidth","clear","neutralSecondary","font","radioAndCheckboxStyle","component","marginLeft","SettingSection","changedSettings","settings","Object","assign","_objectDestructuringEmpty","saveType","defaultSchedule","initSchedule","isEmailValid","onChangeVisibleToExternalUsers","newType","isChecked","newSettings","legacyI18n","saveAs","schdule","totalRow","visibleToExternalUsers","CronFormatter","showIncludeTotalRow","disableIncludeTotalRow","hasTopMargin","reportSetting","disabledCheckbox","background","height","cursor","categories","metrics","prefix","localizeTitle","FilterTitle","logUnmappedFilter","getUpperDescription","propertyKey","getPropertyPath","category","processProperty","rawProperty","rawKey","columnName","IsAdsGlobalizationPhase1Enabled","IsAdsGlobalizationPhase2Enabled","IsAdsGlobalizationPhase6Enabled","IsAdsGlobalizationPhase2JapanEnabled","IsAdsGlobalizationPhase9Enabled","IsAdsGlobalizationPhase9VIEnabled","IsDomesticSimplifiedChineseEnabled","localizationMap","tuples","enumValue","FilterEnum","enumToColumnEnum","localizeEnumValues","IsMultiMediaAdsEnabled","ResponsiveAd","sortBy","localized","object","addtionalParams","dataSource","get","dummy","query","queryLowerCase","toLowerCase","includes","Name","itemsDisplayLimit","MAX_SAFE_INTEGER","selectorOptions","keyMap","Selector_Filter_Placeholder","nullable","getByIds","ids","Promise","chooseType","operators","customParameters","lowerDescription","upperDescription","minimum","filterSchemaProcessor","pairs","_ref3","reject","_ref4","_ref5","_ref6","_ref7","FilterComponent","onPredicateChange","currData","whiteList","prevData","prevDataPick","currDataPick","predicateCount","predicateList","PredicateList","entitySchema","maxConditionCount","setPredicates","render","showValidationErrors","BackboneInstanceWrapper","instance","wrapped","queryToPredicates","$and","validateGoalIdFilter","filter","goalIdPredicate","GoalIds","onQueryChange","onQueryReset","editableFilter","FilterEntity","_this$props2","predicatesToQuery","updateQuery","positionRelative","filterContainer","onApplySavedFilter","onDeleteFilters","selector","selectableFilter","isPoPEnabled","onEditableFilterUpdate","onSelectableFilterUpdate","popoverContainer","maximumPredicateLimit","disallowDuplicateFilters","tabIndex","Glyphicon","glyph","FilterSection","hasFilters","FilterNew","FilterOld","originalSetData","oldData","newData","goalIdErrorMsg","filterDefaultColumnByPilot","defaultColumn","pilotSets","rejectedColumns","isAllowed","columns","getRejectedColumns","getStyle","createReportContainer","container","margin","actions","sla","blocker","padding","blockStyle","uiblockerStyle","borderBottom","neutralLighter","justifyContent","border","outline","selectorStyle","predicateValueEditorStyle","underlineLinkStyle","elementLocator","CreateReport","onPanelClick","panelStatus","setSection","warnings","shoudBlock","blocking","setFilterSection","setGeneralSection","setRootSection","Columns","linechartDefault","barchartDefault","defaultColumns","_props$identityDetail","_props$identityDetail2","_props$identityDetail3","accountName","accountTimeZone","TimeZone","savedReportData","_props$permissions","default","pilotDefault","customerOrAccountName","formatDate","apiKey","SchemaName","fromLegacyTimeZone","allRenderTypes","RenderTypes","accountSelectorPerfMarker","creationPerfMarker","createChild","willInit","done","_identityDetails$acco","_identityDetails$acco2","_this$state","UiBlocker","loadingText","blockUiContainer","blockerIndicator","Panel","label","expanded","Warning","HelpLink","helpId","railviewid","CreateReportStyled","CreateReportIndex","_React$PureComponent","instrumentation","viewName","perfMarker","logger","setupInstrumentation","general","create","fetchTaskItem","shouldReloadTaskItem","fetchTaskItemRequest","cancel","templateId","willFetchData","withLastPromise","promiseFactory","getDetailsByExecutionId","finish","TaskItem","errorCode","fail","error","getDetailsByTaskItemId","_this$props3","reportKey","reports","reportList","_this$props3$permissi","GlobalErrorView","ReportType","deprecatedReports","setting","dynamic","PartialConversions","column","willRender","getErrorMessage","NavLink","resolve","Loading","currentProps","previousProps","currentPropsPick","previousPropsPick","derivedState","_CreateReportIndex","instrumentationSchema","scenario","activity","addScenario","DefaultErrorView","withReportListContext","withInstrumentation","withLegacyI18n","WrappedCreateReport","VideoMetricColumns","performance","AccountPerformanceReport","mandatory","CampaignPerformanceReport","AdGroupPerformanceReport","AdPerformanceReport","KeywordPerformanceReport","NegativeKeywordConflictReport","ShareOfVoiceReport","SearchQueryPerformanceReport","DestinationURLPerformanceReport","PublisherUsagePerformanceReport","AdDynamicTextPerformanceReport","AudiencePerformanceReport","GoalsAndFunnelsReport","ConversionPerformanceReport","UserLocationPerformanceReport","elevatedColumnsMap","AdExtensionByKeywordReport","AdExtensionByAdReport","AdExtensionDetailReport","CallDetailReport","BudgetSummaryReport","CustomerInvoiceReport","BillingStatementReport","SearchCampaignChangeHistoryReport","UserRoleChangeHistoryReport","FraudChangeHistoryReport","DSAAutoTargetPerformanceReport","DSACategoryPerformanceReport","DSASearchQueryPerformanceReport","ProductPartitionPerformanceReport","ProductPartitionUnitPerformanceReport","ProductDimensionPerformanceReport","ProductSearchQueryPerformanceReport","ProductMatchCountReport","ProductNegativeKeywordConflictReport","AgeGenderAudienceReport","ProfessionalDemographicsAudienceReport","GeographicPerformanceReport","restrictionSets","AIM","IsAIMCampaignEnabled","GoalCategory","GoalType","IsInStoreTransactionAttributionSupported","AdGroupType","IsDSAMixedModeCampaignEnabled","ViewConversions","IsViewThroughConversionEnabled","ViewThroughConversionsRevenue","IsViewThroughConversionsRevenueEnabled","ConversionValueRuleMetrics","ConvValueRules","ConversionValueRuleViewThroughMetrics","AvgPositionDeprecationPhase1","IsAvgPositionDeprecationPhase1Enabled","AvgPositionDeprecationPhase2","IsAvgPositionDeprecationPhase2Enabled","VideoMetrics","permssions","IsVideoAdsPerfMetricsEnabled","VideoMetricsV2","IsVideoAdsPerfMetricsV2Enabled","AdScenarioType","IsVerticalAdsReportingPhase1Enabled","NeighborhoodLocationType","ConversionsQualified","IsDSADynamicDescriptionPhase1Enabled","AdId","PerformanceMax","PerformanceMaxCampaigns","PerformanceMaxCampaignsPhaseTwoReporting","ReachAndFreq","ReachAndFrequency","ReachAndFreq7Day","ReachAndFrequency7Day","AdStrength","BoostPlacement","IsAmplifyEnabled","BoostPlacementReporting","defaultSets","IsManualCpmEnabled","restrictedColumnsByReport","defaultColumnsByReport","helpLinkIds","AbsoluteTopImpressionRatePercent","AbsoluteTopImpressionShareLostToBudgetPercent","AbsoluteTopImpressionShareLostToRankPercent","AbsoluteTopImpressionSharePercent","AccountId","AccountName","AccountNumber","AccountStatus","AdDescription","AdDescription2","AdDistribution","AdExtensionId","AdExtensionPropertyValue","AdExtensionType","AdExtensionTypeId","AdExtensionVersion","AdGroupCriterionId","AdGroupId","AdGroupLabels","AdGroupName","AdGroupStatus","AdLabels","AdRelevance","AdStatus","AdTitle","AdType","AgeGroup","AgencyName","AllConversionRateQualified","AllConversionsQualified","AllCostPerConversionQualified","AllReturnOnAdSpend","AllRevenue","AllRevenuePerConversion","AreaCode","AssistedClicks","AssistedConversions","AssistedImpressions","Assists","AssociationId","AssociationLevel","AssociationStatus","AttributeChanged","AudienceId","AudienceImpressionSharePercent","AudienceImpressionLostToRankPercent","AudienceImpressionLostToBudgetPercent","AudienceName","AudienceType","AverageCPC","AverageCPM","AverageCpp","AveragePosition","BaseCampaignId","BenchmarkBid","BenchmarkCtr","BidAdjustment","BidMatchType","BidStrategyType","BilledAmount","BilledAmountUSD","BillingType","BillToCustomerName","BillToCustomerNumber","BillToCountry","Brand","BudgetAssociationStatus","BudgetName","BudgetStatus","BusinessName","CPA","CTR","CampaignId","CampaignLabels","CampaignName","CampaignStatus","CampaignType","Category0","Category1","Category2","CategoryList","ChangeMadeBy","ChangeMadeTo","ChangeTotalCount","ChangedBy","City","ClickCalls","ClickSharePercent","ClickType","ClickTypeId","Clicks","CompanyName","Condition","ConflictLevel","ConflictType","ConversionRateQualified","CostPerAssist","CostPerConversionQualified","Country","CountryOfSale","County","CurrencyCode","CurrentMaxCpc","CustomLabel0","CustomLabel1","CustomLabel2","CustomLabel3","CustomLabel4","CustomParameters","CustomerName","DailySpend","DateTime","DeliveredMatchType","DestinationUrl","DeviceOS","DeviceType","DisplayUrl","DocumentNumber","DocumentType","Duration","DynamicAdTarget","DynamicAdTargetId","DynamicAdTargetStatus","ExcludeZeroClicks","EntityId","EntityName","ExactMatchImpressionSharePercent","ExpectedCtr","ExtendedCost","FeedUrl","FinalAppUrl","FinalMobileUrl","FinalUrl","FinalUrlSuffix","FirstPageBid","FullViewConversions","Gender","Goal","GoalId","GregorianDate","GTIN","Headline","HistoricalAdRelevance","HistoricalExpectedCtr","HistoricalLandingPageExperience","HistoricalQualityScore","HowChanged","ImpressionLostToAdRelevancePercent","ImpressionLostToBidPercent","ImpressionLostToBudgetPercent","ImpressionLostToExpectedCtrPercent","ImpressionLostToRankAggPercent","ImpressionLostToRankPercent","ImpressionSharePercent","Impressions","IndustryName","ItemChanged","JobFunctionName","Keyword","KeywordId","KeywordLabels","KeywordStatus","LandingPageExperience","LandingPageTitle","Language","LocalStoreCode","LocationId","LocationType","LongHeadline","LowQualityClicks","LowQualityClicksPercent","LowQualityConversionRate","LowQualityConversionsQualified","LowQualityGeneralClicks","LowQualityImpressions","LowQualityImpressionsPercent","LowQualitySophisticatedClicks","Mainline1Bid","MainlineBid","ManualCalls","MatchedProductsAtAdGroup","MatchedProductsAtCampaign","MatchedProductsAtProductGroup","MerchantProductId","MetroArea","Month","MonthToDateSpend","MonthlyBudget","MostSpecificLocation","MPN","NegativeKeyword","NegativeKeywordList","NegativeKeywordId","NegativeKeywordListId","NegativeKeywordMatchType","Neighborhood","NetAmountDue","NetRevenue","NetRevenueUSD","Network","NewValue","OfferLanguage","OldValue","Param1","Param2","Param3","PartitionType","Path1","Path2","PhoneCalls","PhoneImpressions","PostalCode","Price","PricingMethod","ProductBought","ProductBoughtTitle","ProductCategory1","ProductCategory2","ProductCategory3","ProductCategory4","ProductCategory5","ProductGroup","ProductName","ProductType1","ProductType2","ProductType3","ProductType4","ProductType5","ProximityTargetLocation","Ptr","PublisherUrl","QualityImpact","QualityScore","QuantityBought","Quarter","QueryIntentCity","QueryIntentCountry","QueryIntentCounty","QueryIntentDMA","QueryIntentLocationId","QueryIntentNeighborhood","QueryIntentPostalCode","QueryIntentState","Radius","RelativeCTR","ReturnOnAdSpend","Revenue","RevenuePerAssist","RevenuePerConversion","SalesHouse","SearchQuery","SellerName","SoldToCustomerName","SoldToCustomerNumber","SoldToCountry","Spend","State","Status","TargetingSetting","TimePeriod","StoreId","TitlePart1","TitlePart2","TitlePart3","Tool","TopImpressionRatePercent","TopImpressionShareLostToBudgetPercent","TopImpressionShareLostToRankPercent","TopImpressionSharePercent","TopVsOther","TotalClicks","TotalClicksOnAdElements","TrackingTemplate","WebsiteCoverage","Week","WeekStartingMonday","ViewThroughConversions","ViewThroughRevenue","ViewThroughCostPerConversionQualified","ViewThroughReturnOnAdSpend","ViewThroughConversionRateQualified","Year","VideoViews","ViewThroughRate","AverageCPV","TotalWatchTimeInMS","AverageWatchTimePerImpression","AverageWatchTimePerVideoView","VideoViewsAt25Percent","VideoViewsAt50Percent","VideoViewsAt75Percent","CompletedVideoViews","VideoCompletionRate","missingMandatoryColumnErrors","enumBlackList","LanguageCode","processCategory","mandatoryColumns","aggregationRestrictions","columnNames","forbiddenTimeGrains","selectOption","helpTopic","processSchema","elevatedColumns","pilotRestrictionSets","pilotDefaultSets","timeRangeOverride","missingMandatoryColumnError","rawSchema","MandateColumnSet","MissingMandatoryColumnError","supportedAggregations","fields","shared","filterFields","processedFilter","rawField","filterable","processFilters","fieldSchema","$schema","validCategories","columnGroups","mandatoryColumnsMap","schemaMandatory","RequiredColumns","dif","JSON","stringify","AggregationExclusion","columnKey","getAggregationRestrictions","processedColumns","processColumns","piloted","process","Shared","ColumnName","defineProperties","AccountPerformanceReportUIV1","enumerable","AccountPerformanceReport_SixWeeksUIV1","AccountPerformanceReport_TwoMonthsUIV1","AccountPerformanceReport_TwoYearsUIV1","AccountPerformanceReport_ShareOfVoiceUIV1","AdDynamicTextPerformanceReportUIV1","AdExtensionByAdReportUIV1","AdExtensionByKeywordReportUIV1","AdExtensionDetailReportUIV1","AdGroupPerformanceReportUIV1","AdPerformanceReportUIV1","AgeGenderAudienceReportUIV1","AudiencePerformanceReportUIV1","BillingStatementReportUIV1","BudgetSummaryReportUIV1","CallDetailReportUIV1","CampaignPerformanceReportUIV1","ConversionPerformanceReportUIV1","CustomerInvoiceReportUIV1","DSAAutoTargetPerformanceReportUIV1","DSACategoryPerformanceReportUIV1","DSASearchQueryPerformanceReportUIV1","DestinationURLPerformanceReportUIV1","FraudChangeHistoryReportUIV1","GeographicPerformanceReportUIV1","GoalsAndFunnelsReportUIV1","KeywordPerformanceReportUIV1","NegativeKeywordConflictReportUIV1","ProductDimensionPerformanceReportUIV1","ProductMatchCountReportUIV1","ProductNegativeKeywordConflictReportUIV1","ProductPartitionPerformanceReportUIV1","ProductPartitionUnitPerformanceReportUIV1","ProductSearchQueryPerformanceReportUIV1","ProfessionalDemographicsAudienceReportUIV1","PublisherUsagePerformanceReportUIV1","SearchCampaignChangeHistoryReportUIV1","SearchQueryPerformanceReportUIV1","ShareOfVoiceReportUIV1","UserLocationPerformanceReportUIV1","UserRoleChangeHistoryReportUIV1","AgeGenderDemographicReport","legacyKeys","validationLocalization","ColumnChooser_Header","ColumnChooser_SubHeader","ColumnChooser_AvailableColumnsHeader","ColumnChooser_SelectedColumnsHeader","ColumnChooser_SelectedColumnsHeader_TopHalf","ColumnChooser_SelectedColumnsHeader_BottomHalf","ColumnChooser_SaveColumnDescription","ColumnChooser_Apply","ColumnChooser_Cancel","ColumnChooser_Add","ColumnChooser_Added","ColumnChooser_Remove","ColumnChooser_AddAllInList","ColumnChooser_RemoveAllInList","ColumnChooser_RemoveAllSelected","ColumnChooser_NoSearchResult","ColumnChooser_Disabled","ColumnChooser_Search_Column","ColumnChooser_AddColumn","ColumnChooser_RemoveColumn","ColumnChooser_LiftColumn","ColumnChooser_MoveColumn","ColumnChooser_DropColumn","ColumnChooser_RemovedColumns","ColumnChooser_RemovedColumn","ColumnChooser_AddedColumns","ColumnChooser_AddedColumn","Filter_Operator_IN","Filter_Operator_EQ","Filter_Operator_NEQ","Filter_Operator_Contains","Filter_Operator_Not_Contains","Filter_Operator_StartsWith","Filter_Operator_EndsWith","Filter_Operator_LT","Filter_Operator_GT","Filter_Operator_LTE","Filter_Operator_GTE","Filter_Validation_EnumSelectionRequired","Filter_Validation_Common_Required","Filter_Validation_Common_Number","Filter_Validation_Common_Number_Range","Filter_Validation_Common_Integer","Filter_Validation_Common_Date","Filter_Validation_Common_Id_Count","Filter_Cannot_Have_Duplicate","Filter_Remove","Filter_PredicateList_New","Performance","Filter_Key_AriaLabel","Filter_Operator_AriaLabel","Filter_Value_AriaLabel","SelectEntityOrEntities","SelectedEntityOrEntities","Selector_LoadingText","Selector_Check_All","Filter_Selector_MoreThanLimit","NoEntityOrEntities","CronFormatter_Frequency_MonthlyTemplate","CronFormatter_Frequency_WeeklyTemplate","CronFormatter_Frequency_DailyTemplate","CronFormatter_FrequencyGrain_Runs_Daily","CronFormatter_FrequencyGrain_Runs_Monthly","CronFormatter_FrequencyGrain_Runs_Weekly","CronFormatter_FrequencyGrain_DropdownMenu_None","CronFormatter_FrequencyGrain_DropdownMenu_Daily","CronFormatter_FrequencyGrain_DropdownMenu_Monthly","CronFormatter_FrequencyGrain_DropdownMenu_Weekly","DateFilter_Option_Custom","DateFilter_Option_CustomTime","DateFilter_Option_Today","DateFilter_Option_Yesterday","DateFilter_Option_ThisWeekSunday","DateFilter_Option_ThisWeekMonday","DateFilter_Option_Last7days","DateFilter_Option_LastWeekSunday","DateFilter_Option_LastWeekMonday","DateFilter_Option_Last14Days","DateFilter_Option_ThisMonth","DateFilter_Option_LastMonth","DateFilter_Option_Last30Days","DateFilter_Option_Last3Months","DateFilter_Option_Last6Months","DateFilter_Option_TwelveMonthsToDate","DateFilter_Option_ThisYear","DateFilter_Option_LastYear","DateFilter_Option_AllTime","DateFilter_Option_PreviousPeriod","DateFilter_Option_SamePeriodLastYear","DateFilter_Option_CustomPeriod","InlineDownloadReports_Column_EmailFrequency","InlineDownloadReports_EmailAndScheduling_Frequency_None","InlineDownloadReports_EmailAndScheduling_Frequency_Daily_Template","InlineDownloadReports_EmailAndScheduling_Frequency_Weekly_Template","InlineDownloadReports_EmailAndScheduling_Frequency_Monthly_Template","InlineDownloadReports_Action_UnsubscribeMe_Failed_NotSubscribed","InlineDownloadReports_Action_UnsubscribeMe_Failed","InlineDownloadReports_Action_UnsubscribeMe_Succeeded","Grid_Edit_Cell","Grid_EditButtonText","Save","Cancel","Schema_ReportEmailRule_Property_Cron","Schema_ReportEmailRule_Property_StartTime","Schema_ReportEmailRule_Property_EndTime","InlineDownloadReports_EmailAndScheduling_SendReportTo","InlineDownloadReports_SearchUsers","InlineDownloadReports_EmailAndScheduling_Email_Me","InlineDownloadReports_EmailAndScheduling_Email_Template_Me","InlineDownloadReports_EmailAndScheduling_User","InlineDownloadReports_EmailAndScheduling_FailedToLoadUsers","InlineDownloadReports_EmailAndScheduling_AllUsers","SimpleForm_Button_Save","SimpleForm_Button_Cancel","KoSchema_String_RemainingCharactersText","KoSchema_String_ExceededCharactersText","Custom","Schema_Enum_DateRangePreset_AllTime","Schema_Enum_DateRangePreset_LastBusinessWeek","Schema_Enum_DateRangePreset_LastFourteenDays","Schema_Enum_DateRangePreset_LastMonth","Schema_Enum_DateRangePreset_LastSevenDays","Schema_Enum_DateRangePreset_LastSixMonth","Schema_Enum_DateRangePreset_LastThirtyDays","Schema_Enum_DateRangePreset_LastThreeMonth","Schema_Enum_DateRangePreset_LastWeekStartingMon","Schema_Enum_DateRangePreset_LastWeekStartingSun","Schema_Enum_DateRangePreset_LastYear","Schema_Enum_DateRangePreset_ThisMonth","Schema_Enum_DateRangePreset_ThisWeekFromMon","Schema_Enum_DateRangePreset_ThisWeekFromSun","Schema_Enum_DateRangePreset_ThisYear","Schema_Enum_DateRangePreset_Today","Schema_Enum_DateRangePreset_Yesterday","LegacyI18n","LeagacyI18nProvider","context","buildLegacyI18n","Provider","AReactComponent","Consumer","Identity","IdentityProvider","serverContext","CurrentUser","CurrentCustomer","CurrentAccount","CultureLcid","sendBatchRequest","definition","params","reqs","param","uri","odataUri","convert","action","url","odata","batch","path","processResponse","getCommonOptions","_ref$ajaxOptions","ajaxOptions","urlParameters","host","headers","successCallback","oDataToken","success","attributes","ODataBaseAdapter","queryParameters","odataQuery","attrs","odataCast","queryParams","convertQuery","post","isFinding","request","filterOptions","queryEntitySet","entitySet","edmRootResourceIdentifier","identifyEntitySet","edm","types","ActionType","customParameterizationFunc","navigation","parameters","cacheResponse","res","queryId","idAttribute","addProperties","obj","defineProperty","afterInject","innerOptions","injected","responseText","status","statusText","errors","raw","body","patch","delete","ODataAdapter","_ODataBaseAdapter","_queryParameters$filt","_queryParameters$wher","where","ret","_where$","restWhere","$filter","odataV4","initJsDataLight","loginType","sessionId","JsDataLight","entityName","odataURL","getODataURLWithKey","odataAdapter","defaultGetODataURLWithKey","entity","class","endpoint","source","$withKey","getOptions","update","find","afterFindAll","_objectWithoutProperties","_excluded","findAll","cid","pcid","aid","JsDataLightWithScopePath","_JsDataLight","currentMode","scopePath","getScopePath","newMode","historyQueries","ReportIds","taskItemIds","primaryKey","reactRouterHistory","location","search","window","routePrefix","init","history","qs","replaceTo","NavigatorMaintenance","withRouter","propTypes","PropTypes","isRequired","customReports","getUrl","getId","report","historyReports","isRunning","DestinationUrlPerformanceReport","FeedItemPerformanceReport","FileFormat","Csv","Csvzip","Tsv","TsvZip","Xlsx","FileFormatForInlineDownload","generalUnavalible","runUnavalible","getDeprecatedMessage","isRunReport","InvalidId","InvalidEmail","TaskSchedulingInvalid","TaskThrottlingLimitReached","RequiredColumnsNotSelected","errMsg","Today","Yesterday","LastSevenDays","LastFourteenDays","LastThirtyDays","ThisWeekFromSun","ThisWeekFromMon","LastWeekStartingSun","LastWeekStartingMon","LastFourWeeksStartingSun","LastFourWeeksStartingMon","LastSixWeeksStartingSun","LastSixWeeksStartingMon","ThisMonth","LastMonth","LastTwoMonths","LastThreeMonths","LastSixMonths","ThisYear","LastYear","LastTwoYears","AllTime","AdvertiserHotelId","AdGroupTypePreview","AdRelevanceCampaign","AdRelevanceAdGroup","AdRelevanceKeyword","AdStrengthActionItems","AdvancedBookingWindow","AvgBookedABW","AvgBookedNights","BenchmarkBidProduct","BenchmarkCtrProduct","BookedABW","BookedLengthOfStay","CallStatus","CallTypeName","CampaignHotelId","Category","CheckInDate","CheckInDateDayOfWeek","FeedLabel","CountryName","CustomLabel0Product","CustomLabel1Product","CustomLabel2Product","CustomLabel3Product","CustomLabel4Product","CustomParametersCampaign","CustomParametersAdGroup","CustomParametersKeyword","CustomParametersAd","CustomParametersProduct","DateType","DestinationUrlAd","DestinationUrlKeyword","DestinationUrlProduct","EligibleImpressions","EstimatedClickPercent","EstimatedClicks","EstimatedConversionRate","EstimatedConversions","EstimatedCtr","EstimatedImpressionPercent","EstimatedImpressions","ExpectedCtrKeyword","ExpectedCtrCampaign","ExpectedCtrAdGroup","FeedId","FeedItemId","FinalUrlSuffixCampaign","FinalUrlSuffixAdGroup","FinalUrlSuffixKeyword","FinalUrlSuffixAd","GrossReturnOnAdSpend","Genre","HistoricalAdRelevanceAdGroup","HistoricalAdRelevanceCampaign","HistoricalAdRelevanceKeyword","HistoricalExpectedCtrAdGroup","HistoricalExpectedCtrCampaign","HistoricalExpectedCtrKeyword","HistoricalLandingPageExperienceAdGroup","HistoricalLandingPageExperienceCampaign","HistoricalLandingPageExperienceKeyword","HistoricalQualityScoreAdGroup","HistoricalQualityScoreCampaign","HistoricalQualityScoreKeyword","HotelGroup","HotelGroupNodeId","HotelName","ImpressionLostToRelevancePercent","ImpressionShare","LabelName","LabelNameAccount","LabelNameCampaign","LabelNameAdGroup","LabelNameAd","LabelNameKeyword","LabelColor","LandingPageExperienceAdGroup","LandingPageExperienceCampaign","LandingPageExperienceKeyword","LengthOfStay","MissedImpressions","MissedImpressionsNoBid","MissedImpressionsInsufficientBid","MissedImpressionsSpendingCapReached","MissedImpressionsNoTax","MissedImpressionsOther","NetReturnOnAdSpend","OrderId","PartnerImpressions","QualityScoreAdGroup","QualityScoreCampaign","QualityScoreKeyword","ReturnOnAdSpendCPS","RevenueCPS","SourceHotelId","StarRating","TrackingTemplateCampaign","TrackingTemplateAdGroup","TrackingTemplateKeyword","TrackingTemplateAd","TrackingTemplateProduct","DimensionColumns","MetricColumns","TimeColumns","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","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","NewCustomerConversions","NewCustomerRevenue","NewCustomerConversionRate","NewCustomerCPA","NewCustomerReturnOnAdSpend","PlacementName","IOReportMonth","ChangeType","ChangeAmount","RemainingIOBudget","InsertionOrderDetails","BillingDocumentNumber","MismatchedReason","InsertionOrderId","BDAmount","MismatchedAmount","CouponAmount","BudgetChangedAmount","SpendAmount","AdjustmentAmount","BudgetChangeOldValue","BudgetChangeNewValue","SpendCouponAmount","AdjustmentCouponAmount","SearchCategory","SearchVolume","AssetId","AssetContent","AssetType","AssetSource","L1Vertical","L2Vertical","L3Vertical","SearchesIndexed","ClicksIndexed","WoWSearches","WoWClicks","MoMSearches","MoMClicks","YoYLast1WeekSearches","YoYLast1WeekClicks","YoYLast4WeeksSearches","YoYLast4WeeksClicks","SearchesPeekWeek","ClicksPeekWeek","MarketplaceClickCoverage","ProportionOfSpend","Headline1","Headline2","Headline3","Description1","Description2","Image","Logo","CombinationLongHeadline","CountryCode","Keywords","SearchQueries","safeGetString","loggedEnums","loggedFilters","initLogger","LogUnmappedEnum","filterName","reformatDate","dateStr","dateFormatter","formatter","reformatShortDate","convertDateTimeStringToCivilDate","dateTimeString","match","_match","availablekeys","util","getCustomerId","parseInt","getUserId","isReportRunning","shouldRefresh","promise","empty","fullfilled","isFulfilled","getMergeFilter","getUTCOffsetWithDST","reformatMediumDate","formatDateRange","ReportTime","ReportTimeZone","appendActualRange","showTimeZone","fragments","uniqueId","logUnmappedEnum","offset","getUTCOffsetWithoutDST","dummyDate","customReportQueries","templateIds","createdByUserId","detailsQueries","taskItemId","expandTaskItem","expand","createReportQueries","pathname","Type","runNow","$expand","submitEvent","KEY_CODES","handler","keyDown","constants","QUERY_LIMIT","POLL_INTERVAL","href","preventDefault","serializeError","errorStack","stack","message","Permission","PermissionProvider","ReportAlertCenterBackbone","_AlertCenter","show","level","hasIcon","dismissible","AlertCenter","getInstance","showInitialMessage","showBanner","customCssClass","showTryNewUIMessage","ReportAlertCenter","uiNextLink","IsNewUIPhaseTwoEnabled","alert","_showError","showError","initializeErrorDisplayer","displayError","txt","RepositoryContext","RepositoryDataContext","ReportRepositoryComponent","catchException","resolveDownload","err","errorMessage","localizedMessage","detailsGridDataSource","customReportGridDataSource","uid","historyGridDataSource","checkAndUpdateHistory","allReportsFinished","historyData","reportsToDownload","rdsDownloadReport","reportId","pollReport","rdsRunReport","rdsRunReportTemplate","rdsDeleteReport","rdsDeleteReportTemplate","ResultId","iframeDownload","inlineEditReport","partialTaskItem","mapper","fullTaskItem","unsubscribeMe","userEmail","Email","others","baseContext","rdsRunSingleReport","getAllAccountIds","historyExpansion","prefetchedData","History","customData","CustomReports","Locale","historyExpansionInstance","ParentCustomerId","dataContext","_ReportRepositoryComponent","ReportRepository","withRepositoryDataContext","ReportListDataFactory","initialReportsTree","providedLogger","log","reportsTree","validCatergoryIds","validCreateReportIds","TypeError","filterReports","populateCategoryIds","populateCreateReportIds","validCategoryIds","runnableReports","reportCategory","_this3","rootNode","searchAlias","IsCallMeteringAllowed","IsEnhancedShoppingCampaignAllowed","IsLinkedInTargetingEnabled","IsDynamicSearchAdsV1Enabled","cloneNodes","childNode","localizeNodes","resolveNodePaths","child","getLinkFromEnumeration","ReportList","isValidCategoryId","bind","isValidCreateReportId","reportListData","dataFactory","fetchData","lowerCaseId","ReportListContext","ReportListServiceBase","getUsersReportsTree","leaf","ReportListServiceWithI18n","ReportListService","ServicesEndpointsContext","ServicesEndpointsProvider","ModeUpdater","scope","updateMode","withScope","ContextProviders","LegacyDepsContext","withLegacyDeps","legacyDeps","theme","blockUi","reactBlockUi","minHeight","light","white","gray10","gray20","gray30","gray40","gray50","gray60","gray70","reportVnextTheme","merge","ThemeFluent","reportingTheme","ComponentSettings","CellItemHeight","Large","Small","ViewItem","ViewItemTLString","InsertionOrderReportColumns","add","remove","sort","MaxInsertionOrderLimit","InsertionOrderSearchFields","FriendlyName","SeriesName","InsertionOrderFieldKeys","MismatchedReasonCode","AdjustmentMismatch","ChangeTypeEnum","SystemAdjustment","BudgetChange","InsertionOrderChangeTypeField","InsertionOrderChangeAmountField","InsertionOrderColumns","ChangeTypeEnumValue","isUnlimitedIOBudget","InsertionOrderUtils","formatUnlimitedIOBudgetInGrid","formatEndlessIOEndDateInGrid","parseDecimal","formatInsertionOrderLabel","orderName","seriesName","budget","formattedName","formattedBudget","spendCapAmountValue","unlimitedStringKey","formattedEndDate","endDateValue","parseDate","noEndDateStringKey","getBudgetChangeString","_ref8","rawValue","amountValue","_ref8$useEmptyString","useEmptyString","getBillingDocumentCellStyles","BillingDocumentCell","flexDirection","BillingDocumentNumberGroup","MismatchInformation","getAmountCellStyles","AmountCell","AmountItem","BorderBottomLine","textOverflow","getChangeTypeCellStyles","ChangeTypeCell","ChangeTypeItem","placeContent","getAmountTotalCellStyles","AmountTotalCell","AmountTotalCellWithPadding","AmountTotalItem","GreenColor","getInsertionOrderSelectorStyle","MultipleInsertionOrderSelector","borderRadius","boxShadow","SelectorButton","flex","ChevronDownIcon","ButtonDescription","getInsertionOrderDetailsCellStyles","InsertionOrderDetailsButton","BillingDocumentCellBase","siteMap","billingDocumentNumbers","mismatchedAmount","mismatchedReason","currencyCode","useDefaultStyles","_useContext$scope$val","useContext","ScopeContext","ctrLogger","useCtrLogger","mismatchedAmountNumber","mismatchedAmountString","formatCurrency","mismatchedInfoString","getMismatchedInfoString","showMismatchIcon","useMemo","bilingDocumentLink","bdNumber","getRoutePathById","searchParams","prefilter","URI","addSearch","tooltipProps","onRenderContent","ReactTemplate","model","bold","template","classnames","billingDocumentNumber","LinkButton","click","extraData","documentNumber","onClickLink","TooltipHost","delay","TooltipDelay","zero","directionalHint","DirectionalHint","rightCenter","onMouseEnter","withSiteMap","processor","processPermissions","processPath","AmountCellItem","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","jsData","InsertionOrdersGridData","limit","$predicate","p","loading","usePerfMarkerLifecycle","total","insertionOrderItems","InsertionOrderName","StartDateText","EndDateText","SpendCapAmount","InsertionOrderSelectorCallout","initialSelectedItems","onApplyProps","onApply","onDismiss","I18nContext","_useState","useState","_useState2","selectedInsertionOrderItems","setSelectedInsertionOrderItems","_useState3","_useState4","queryText","setQueryText","_useState5","_useState6","setSearchTerm","_useState7","_useState8","setQueryField","_useState9","_useState10","shouldAddAll","setShouldAddAll","handleQueryChange","newValue","handleClearSearch","onSearch","searchText","searchField","searchProps","placeholder","getSearchBarPlaceholder","showSearchBar","showSearchFieldSelect","searchFieldOptions","labelKey","_useInsertionOrderDat","onAddAll","useCallback","newSelected","toReversed","useEffect","Callout","isBeakVisible","TransferSelector","allItems","onRemoveAll","onRemove","onAdd","onDismissCallback","isBeyondAccountLimit","isLoadingItems","InsertionOrderSelector","selectedInsertionOrders","updateSelectedInsertionOrder","isCalloutVisible","setIsCalloutVisible","buttonDescription","getSelectorButtonDescription","oldCalloutVisible","newCalloutVisible","InsertionOrderDetailsBase","insertionOrderDetailValue","insertionOrderId","ioHistoryLink","orderId","InsertionOrderDetailsCell","FilterViewManagerUnthemed","setEditableFilter","openedPredicateIndex","onReset","hideFilterBar","isFunction","updateWaterfallFilter","setupSearchboxFilterOnToolbar","searchBoxItem","searchbox","handleChange","searchProperty","searchOperator","updateToolbar","setupPredicateListOnToolbar","filterEntity","newItem","PredicateListReadonly","onClickPredicate","showFilterBar","resetToolbarVisibility","forceHideToolbar","hideAddFilterButton","getPredicateIconClassName","initializeEntitySchema","localize","flattenEntitySchema","schemaI18n","newEntitySchema","setTrimmedFilterDataOptionsDefaultSearchInsightsReport","odataOptions","fieldMap","buildNameToPropertyMapping","savedFilterNames","forceUpdate","createFilterEntity","Fragment","FilterBar","readOnlyProperties","onSaveFilter","savedFilters","outsideClickIgnoreClass","FilterBarIngoreClickOutsideClassName","hideSaveFilterButton","disabledSaveFilterButtonWithReason","FilterViewManager","ReportsV4Footer","contentFooter","ContentFooter","mapKeyValue","fn","frequencyType","None","Other","customColumn","dateRangePreset","getMyReportsGridToolbarConfig","reportDuplicate","reportDownload","reportDelete","toolbarUnselectedConfig","Map","CustomReportBuilder","iconLeftGlyphName","save","toolbarItemsWithoutSelection","forEach","set","toolbarSelectedConfig","isHide","toolbarItemWithSelect","isReportTemplateType","styles","mergeStyleSets","callout","spinner","zIndex","onActionSuccess","notifyErrorPipe","setName","setLoading","setError","reportApi","useReportDataSource","isReportTemplate","_saveName","_asyncToGenerator","_regeneratorRuntime","mark","_callee","originTaskItem","taskItemToSave","wrap","_context","prev","next","abrupt","getTaskItem","sent","isEmailRule","t0","stop","coverTarget","setInitialFocus","doNotLayer","preventDismissOnScroll","TextField","defaultValue","PrimaryButton","DefaultButton","Spinner","labelPosition","inlineDownloadDuplicate","handleInlineEditSuccess","fieldName","isRowHeader","isResizable","sortable","sortAscendingAriaLabel","sortDescendingAriaLabel","onRender","Link","inlineEdit","onRenderInlineEdit","hanelDismiss","cell","InlineEditName","maxHeight","editor","whiteSpace","cancelBtn","EmailReportEditor","saveFrequency","_scope$values","allUsersType","initEmailModel","emailModel","setEmailModel","InlineDownloadEmailFrequencyEditor","currentUserId","s$i18n","SchemaI18n","FormGroup","loadUsers","InlineFrequency","_x","_saveFrequency","patchTaskItem","handleDismiss","directionalHintFixed","Format","FrequencyEditPanel","onSave","onCancel","renderReportTemplate","cronI18n","InlineDownloadCronI18n","formatCron","listStyle","textDecoration","reportTemplateModel","reportTemplateDataRange","setReportTemplateDataRange","reportTemplateWarnings","setReportTemplateWarnings","emailRuleModel","dateRangeFormat","DateRangeFormat","emailDateRange","setEmailDateRange","dropdownRef","useRef","updateEmailRuleDateRange","current","_saveDateRange","newTaskItem","updates","Selection","DateRange","querySelector","getBoundingClientRect","reportSchemas","DurableDropdown","containerClass","button","DateRangeEditor","dataRange","getDateRange","InlineEditDateRange","CreatedBy","LastAccessedAt","CreatedAt","buildColumns","ErrorHandlePipeFactory","createNotifyErrorHandlerPipe","errorCodeToErrorMessageMapping","reportNameColumn","reportBaseColumn","scheduledFrequencyColumn","dateRangeColumn","createByColumn","sharedColumn","lastAccessedColumn","createdOnColumn","transformTaskItem","oldTaskItem","IsPreview","transformReportAggregationItself","MyReportsGrid","onClearSelection","gridSelection","setAllSelected","onPageChange","page","onPageSizeChange","pageSize","getToolBarConfig","DynamicPermissions","reportItem","bulkEditActions","duplicate","logToolbarAction","del","_this$getToolBarConfi","onSelectionChanged","onSelectedItemUpdated","getSelection","initBulkActions","fetching","pageNumber","sortedColumn","prevState","_this$props2$serverCo","ShortDatePattern","CultureDateTimeFormat","LocaleID","resetSelection","scopeHistoryPush","getUrlSearch","convertSelectionDateRangeToDateFilter","restoreDateFilter","rerunReport","deleteReports","createSimilarReportEmailRule","isForNewUI","_download","notificationApi","showInfo","autoDismissTime","showWarning","downloadReportEmailRule","confirm","_$groupBy","reportTemplates","inlineDownloadReports","deleteReportTemplates","deleteInlineDownloadReports","deleteReportEmailRules","all","bulkEditActionsFactory","entityType","mergedParams","$current","mergedScope","getMerged","campaignId","adGroupId","isDrprecated","ComparisonDateRange","basic","RangeStartDate","RangeEndDate","RangeId","convertDateRangePresetToRangeId","Rangelcid","compared","comparedStartDate","comparedEndDate","formattedStart","formattedEnd","convertComparisonDateRangeOptionToComparedKey","ComparisonDateRangeOption","dateFilter","filterType","WaterfallFilterType","DateFilter","rerunReportAndWaitForComplete","actionName","_this4","isSortedDescending","_this5","enableDFM","actionPerfMarker","getMyReports","skip","withDFMCache","json","finalItems","updateCount","_this6","_this$state2","toolbarEditor","getToolbarEditor","toolbarConfig","filterConfig","getCommonFilterConfig","preferenceService","featureName","myReportsSchema","legacyGlobalI18n","sessionStore","preferenceStoreFactory","FilterPreferenceService","schemaI18nCampaign","dataContextManager","jsdata","updatePilot","enableCampaignWaterfall","ignoreCase","getFilterConfig","selectionCount","showToolbarSelected","showToolbarUnselected","ToolbarContainer","onClear","_this7","_this$props4","_this$state3","placeholderWithFilter","placeholderWithoutFilter","LearnMoreLink","isUnderlineLink","linkType","linkText","toolbar","renderToolbarContainer","renderFilterViewManager","fallback","ProgressiveLoadingBlock","myReportsGrid","CampaignShimmeredDetailsList","stickyHeader","enableShimmer","selectionMode","SelectionMode","multiple","single","selection","onSort","sortAndFetch","freezingColumnCount","didUpdate","pager","wrappers","withReportDataSource","withServerContext","withGlobalFilter","withIframeDownload","withCtrLogger","datePickerStyle","pivotStyle","root","itemContainer","MyReportsPage","useReportsHistory","counts","setCounts","reportsApiProps","ServerContext","_useConstructor","useConstructor","marker","myReportsPerfMarker","getMyReportsCounts","SummaryBar","Divider","myReportsContainer","Pivot","selectedKey","onLinkClick","itemKey","PivotItem","headerText","count","Permissions","_ref$palette","_ref$iconFontFamily","iconFontFamily","gridPopUpEditorStyle","overflowY","wordBreak","User","Customer","Account","Campaign","getScopeSelectorText","scopeSelectorInfo","ALL_ACCOUNT_TEXT","MULTIPLE_ACCOUNTS_OR_CAMPAIGNS_TEXT","MULTIPLE_ACCOUNTS_TEXT","MULTIPLE_MANAGER_ACCOUNTS_TEXT","scopeFilterLevelOfCurrentReport","_history$query","isCurrentAccountScope","userIdText","sourceArray","targetArray","getDefaultMultiAccountSelectorInfo","_history$query2","shouldShowUserScopeInput","getUserIdFromScopeSelector","scopeSelector","convertUserIdToScopeSelector","userScope","isNaN","isTotalRow","rowItem","RowType","isNormalRow","isInsertionOrderReport","isInsertionOrderReportTeachingBubbleEnabled","isCreatePage","getColumnsByView","viewType","union","getSortedColumnByView","getRejectedColumnsByView","restrictedColumnSets","isCustomerScope","Set","isInsertionOrderMonthlyView","removeInsertionOrderIdFilter","_ref10","isInsertionOrderReportEnabled","oldFilter","filterAnd","isRowWithBudgetChangeDescription","getInsertionOrderSelectorValue","_ref13","allFilters","ioidFromUrl","insertionOrderIdFromFilter","first","insertionOrderIdFilterFromAnd","ioId","getInitialInsertionOrderSelectorItems","_ref14","allInsertionOrders","insertionOrderIds","io","shouldDisplayTotalAmount","_ref15","changeType","changeTypeFilterArray","getTextWidth","canvas","createElement","getContext","measureText","MIN_COLUMN_WIDTH","MIN_FIRST_COLUMN_WIDTH","conditionOperatorMap","Between","value1","value2","GreaterThan","GreaterThanEqual","Equals","DoesNotEqual","LessThan","LessThanEqual","isDisplay","Value","RawValue","reportSchemaColumns","conditionalFormats","customizeRenderParams","bindColumnConditionalFormat","conditionalFormat","reportParam","conditions","colorPicked","condition","operator","getConditionalFormatColor","itemDisplayValue","slice","columnOptions","flatMap","reduce","acc","restrictedDisplayCols","displayRestricted","c","columnOption","translatedName","headerWidth","defaultWidth","finalMinWidth","Math","max","buildColumnBase","onRenderHeader","columnProps","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","isArray","RowId","_toArray","hasDifferentTimeColumns","oldColumns","newColumns","timeCategory","allTimeColumns","oldTimeColumn","newTimeColumn","ICON_BLUE","iconBaseClass","mergeStyles","iconClassNames","blue","blackColorClassName","boldClassName","stackItemCenterStyle","reduceScopeContainer","borderTop","lineHeight","getStyles","reportPreviewContainer","borderLeft","bottom","overflowX","scrollbarWidth","convertToLocalStyle","transform","reportPreviewPoorCollapseRow","borderRight","reportPreviewHeader","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","uiToApiDateRange","dateRange","Contains","DoesNotContain","BeginsWith","EndsWith","apiToUiFormat","apiFilter","uiToApiFormat","uiFilter","str","substr","uiToApiFilter","uiFilters","insertionOrderSelectorValue","uiFiltersArray","_ref9","filterBesidesAnd","omit","addInsertionOrderIdFilter","getColumnType","metricCategory","columnType","handleValue","toFixed","apiToUiFormats","conditionalFormatsList","Value2","FillColor","uiToApiFormats","columnNameSet","convertOldTaskItem","expression","ReportColumns","ConditionalFormats","reportAggregationEnum","_oldTaskItem","newColumnKeys","columnKeys","getCorrespondColumnsByReportAggregationEnum","transformReportAggregation","removeDeprecatedColumns","toUi","apiReportOptions","rawTaskItem","ioid","getCanonicalCategoriesAndColumns","apiFilters","apiToUiFilter","reportName","ReportSorts","ReportColumn","SortDirection","schedule","isLegacyReport","ReportOptions","option","uiReportOptions","hasPagination","hasSort","LastRunReportTime","RenderType","CollapsedRow","GridPagination","RequestedPage","RowsPerPage","isAllTime","getMinimumSupportedDay","getFilteredTimeRanges","tryGetUpdatedTimeRange","newTimeGrain","prevTimeGrain","prevTimeRange","newTimeRange","prevTimeRangeKey","reportDatePicker","DatePickerBase","DatePicker","defaultSortingColumns","InsertionOrderReport","getDefaultSortingColumn","getDefaultTaskItemType","emptySchedule","getDefaultReportParam","userIdFromUrl","userIdFromServer","isInteger","selectedNode","findSelectedNode","Omniture","Lcid","ErrorView","taskState","errorDescriptionMap","invalidId","deprecate","bindOnRenderRowsForInsertionOrderReport","isMonthlyView","isNormal","SpendTypeValue","AdjustmentTypeValue","BudgetChangedTypeValue","SpendAmountValue","AdjustmentAmountValue","BudgetChangedAmountValue","remainingIOBudgetString","useWarnings","setWarnings","valiadate","NameEditor","reportAction","onNameChange","onSaveAs","isDirty","shouldHideThisFunctionality","editName","setEditName","editNamePromptVisibleStatus","updateEditNamePromptVisible","closeNameEditPrompt","Stack","horizontal","tokens","childrenGap","IconButton","iconProps","iconName","ariaLabel","gapSpace","bottomLeftEdge","gap","NavigateDialog","dialogContentProps","disableNavigateDialog","disableNavigateDialogOnce","setDisableNavigateDialogOnce","isDialogVisible","setDialogVisible","navigateParam","setNavigateParam","unblockRef","unblock","block","promptBeforeUnload","returnValue","Dialog","hidden","DialogType","normal","subText","DialogFooter","getDefaultReportsGridToolbarConfig","onDownload","onViewItemChange","selectedViewItem","_ref$selectedViewItem","isSelectorShown","isFilterShown","isViewSelectorShown","isInsertionOrderSelectorShown","_isValid","useFluentIcon","shouldFocusOnContainer","menu","dynamicPermissions","config","IsRenameHotelToLodgingEnabled","CPSReporting","i18nFilterTitleMap","IncrementalBudgetAmount","DailyBudgetAmount","BudgetId","pattern","skipLocalization","isPercentValue","restrictedFilterColumns","FilterViewManagerWrapper","onFilterChange","setEntitySchema","filterData","setTrimmedFilterDataOptionsSearchInsightsReport","removeAppliedFilter","getMasStyle","multipleAccountSelector","fontStyle","speak","fontVariant","textTransform","WebkitFontSmoothing","MozOsxFontSmoothing","getAccountSelectorStyle","gridCustomStyles","getColumnSolidBorderStyle","topGridPanelCustomStyles","paginationStyle","extend","wordWrap","accountSelectorPopover","userInputScope","customToolbarItem","downloadIcon","themeDarkAlt","MultipleAccountSelector","getDefaultSelected","searchHistorySelectorOptionsFromProps","searchHistorySelectorOptions","_serverContext$Permis","IsCustomerHierarchyEnabled","setSelected","setSearchHistorySelectorOptions","loaded","setLoaded","getI18NString","ServicesEndpoints","addtionalInfo","hideRadioButtons","errorTextStyle","ErrorDescription","Text","isUserIdValid","UserScopeInput","onApplyClick","onCancelClick","isSeparatorBeforeButtons","applyText","currentUserIdString","setCurrentUserIdString","isValueValid","descriptionText","getUserIdErrorDescription","onRenderDescription","Separator","primary","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","overrideWith","newSearchHistorySelectorOptions","ConditionalFormatWrapper","conditionalFormatSchema","restrictedColumns","statisticsCategories","statisticsCategoriesOptions","StatisticsSet","entry","selectedStatisticsColumns","getSelectedStatisticsColumns","searchCategoryGrid","none","isSortedDescendingByDefault","isGridScrollable","commonReportGrid","getTheme","contentStyles","flexFlow","header","fonts","xLargePlus","FontWeights","semibold","heading","selectors","iconButtonStyles","rootHovered","neutralDark","ReportGridModal","isReportModalOpen","hideModal","isLoadedAndNoDataFound","Modal","isOpen","isModeless","containerClassName","dateUtil","_bingads_webui_static_legacy_utils_date","triviaClassName","schedulerTextClassName","labelClassName","Trivia","onSchedulerSaveClick","schedulerOptions","typeOfReport","displayFrequency","globalLegacyI18n","hourString","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","isNewLandingPage","itemsWithHeading","isCurrentItem","Item","FontIcon","undoText","redoText","resetText","hostStyles","getTimeZoneSelectorStyle","reportTimeZoneSelector","TimeZoneSelector","timeZoneValue","SidePanelReportGrid","isSearchInsightReportOpen","hideSidePanel","searchCategoryTitle","closeButtonAriaLabel","PanelType","medium","getSearchTermDetails","reportModalDataItems","modalTotalCount","detailStr","addSearchCategoryFilter","searchCategory","showTermItem","group","setReportModalParam","ParentIndex","getGroupProps","renderGroupHeader","onToggleCollapse","showEmptyGroups","onToggleCollapseAll","isAllGroupsCollapsed","headerProps","isCollapsedGroupSelectVisible","getDetailListColumns","PreviewPageImplForCommon","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","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","itemIndex","horizontalAlign","align","MessageBar","dismissButtonAriaLabel","hideGridPagination","gridPaginationInfo","desclaimerBannerText","classNames","DisclaimerBanner","timezone","noLink","renderBody","renderReportGridModal","renderSideReportGridModal","filterCategories","aggregationExclusion","categorty","timeAggregation","selectedKeys","has","getColumnChooserSelectedKey","ReportsV4ColumnChooser","isTimeColumnMandatory","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","ReportPreviewBase","_getUrlParam","perfLoggerSuffix","previewReportPerfMarker","_useReportSchemaRepor","_ref3$retrieveSchema","retrieveSchema","setReportSchema","setTaskState","useDidUpdate","initialReportSchema","initialReportParam","Code","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","_context5","_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","parentTarget","newUserId","newScopeSelector","InsertionOrderReportBubbleRender","ReportPreviewWrapped","withReportsV4SiteMap","CustomReportPreviewWrapped","withCustomReportsSiteMap","StyledMatchReport","lazy","_yield$import","StyledMatchReportPage","StyledFeedStatus","_yield$import2","StyledFeedStatusPage","PreviewPageImplForLegacy","getSelectedVerticalIds","verticalType","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","onChangeSelectedEmails","loadEmails","availableEmails","setAvailableEmails","searchString","setSearchString","loadEmailsStatus","setLoadEmailsStatus","userEmails","allEmails","renderEmail","me","searchBoxElement","SearchBox","isDisabled","filteredEmails","CheckboxGroup","renderEmailList","Wrapper","startDateInputRef","endDateInputRef","inputRef","FileFormatSelector","fileFormat","changeFileFormat","optionsJSX","entries","fileFormatContainer","fileFormatTitle","StyledFileFormatSelector","onUpdateEmailRecipients","newEmailRecipients","includeAttachment","defaultInitSchedule","setIsScheduleEnabled","setSettings","scheduleThisReportText","isSaveButtonEnabled","Toggle","onText","offText","cur","toggleIsCalloutVisible","pre","_onSaveClick","bottomAutoEdge","ConversionModelCompareReport","MSXAccountPerformanceReport","CombinationPerformanceReport","GenrePerformanceReport","LabelAccountReport","LabelCampaignReport","LabelAdGroupReport","LabelKeywordReport","LabelAdReport","HotelDimensionPerformanceReport","HotelGroupPerformanceReport","AppsPerformanceReport","AssetPerformanceReport","SearchVerticalCategoryInsightsReport","SearchVerticalCategoryClickShareReport","UCMReportBudgetColumns","NewCustomerAcquisitionGoal","NewCustomerAcquisition","InsertionOrderAccountLevel","isColumnChooserRenderer","InsertionOrderFilter","InsertionOrderDisplay","restrictedFilterColumnsByReport","restrictedDisplayColumnsByReport","helpLinkIdsByReportType","Sortable","customizedOption","getCustomizedOption","restrictedFilterColumnsSets","displayRestrictedSets","ColumnsSchema","DisplayType","allMandatoryColumnsMap","allMondatoryColumns","DimensionColumns_TimeCategory","MetricColumns_TimeCategory","preprocessTimeColumnsExclusionSets","preprocessReportSchemaForTimeColumns","AccountPerformanceReportUIPreviewV1","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","summaryBarDividerClassName","pkg","getAssetsGridFactory","globalContext","define","require","locationI18n","commonI18n","errI18n","editorialRejection","getReasonTemplates","Entities","Asset","fetchRejectionReasons","Reasons","reasons","ENTITY","ASSET","deliveryStatus","EditorialStatus","isAppealable","IsAppealable","hideParentLevel","reasonTemplates","getEditorialTemplates","pageContext","handleSortChange","AppealAggregator","requireDefault","AssetsGrid","_DeterministicWrapper","router","filterService","preferenceConfig","getGridConfig","getPlugins","setupDataSourceErrorHandling","_ref$isForVNext","isForVNext","gridConfig","isInitialGrid","rejectionPopupContainerSelector","popoverId","appealAggregator","RequestExceptionCallBack","assetsGrid","grid","controller","submit","menuToFollow","openBulkEditor","bulkEditor","RequestExceptionCallBackFromPopup","trigger","hide","appealView","on","pgridFactory","plugins","gridView","changes","updateGridQuery","getCombinedFilter","AudienceAssetReport","_isOk","videoItems","col","popupView","registerCountryListEvent","$el","keyOfElement","itemWithKey","showRejectionReasons","deliveryStatusDetails","getCustomTemplate","useCustomTemplate","view","afterRender","popup","addEditorialHandler","isEditorialCategoryEnabled","isForAdsPageOnly","relatedTarget","closest","refreshSource","initializeCombinedFilterPromise","_superPropGet","DeterministicWrapperView","ColumnAsset","_CampaignuiBaseColumn","adType","enableEdit","UiDisplayStatus","bodyClasses","helpAriaLabel","newPosition","TextInlineEditRSA","itemToSchemaMap","Headlines","Descriptions","schemaToItemMap","CampaignuiBaseColumn","ColumnAssetType","ResponsiveSearch","Responsive","DynamicSearch","DynamicResponsive","AssociationType","associationType","ColumnStatus","headerTemplate","cellTemplate","ColumnPinnedField","PinnedField","ColumnAssetSource","mapVal","ColumnAssetMMA","imageTemplate","imageUrl","ImageUrl","isVertical","Height","Width","videoTemplate","ThumbnailUrl","isVerticalVideo","TextInlineEditMMA","ResponsiveAdHeadlines","ResponsiveAdDescriptions","ResponsiveAdLongHeadlines","ColumnAssetId","IdString","ColumnPolicyStatus","EditorialCategories","inWhiteList","isErrorStatus","isWarningStatus","showRejectPopup","shouldEditorialCategoriesPopup","getViolationsFromCategoryFAIDMapping","DeliveryStatus","shouldShowSensitiveContentWarning","shouldShowPopUpStyleInVnext","getColumnsConfig","_options$scope$values","adSubType","builder","ColumnsConfigBuilder","addCategory","addColumns","AssetBasedEditorialForRSA","AssetBasedEditorialForAIM","ColumnImpressions","ColumnClicks","ColumnCTR","ColumnSpend","SearchAssetConversionColumn","ColumnConversionsCredit","ColumnAdvertiserReportedRevenue","ShowVideoMetrics","ColumnVideoViews","ColumnVideoCompletionRate","ColumnVideoViewsAt25Percent","ColumnVideoViewsAt50Percent","ColumnVideoViewsAt75Percent","ColumnCompletedVideoViews","setLockedColumns","AssetBasedEditorial","setSelectedColumns","stateManager","showAdStrengthPlugin","definePlugin","_config$plugins$showA","showAdStrength","_config$plugins$showA2","buttonId","_config$plugins$showA3","initShowStatus","gridToolbarGroup","toolbarWithItem","adItem","refreshEvent","Backbone","refreshAdItem","fetchAd","ad","getShowAdStrength","getAdItem","appConfig","appState","s$AssetLink","DownloadView","createAssetsGrid","getAdditionalPlugins","addDateChangeListener","p$daterange","viewport","customHeaderOffset","tableName","campaignType","events","showRejectionReason","handleShowRejectionReasonEnter","handleShowRejectionReasonLeave","hideRejectionPopup","getGridName","legacyGridName","tableClasses","tableAttributes","rows","headRows","scrolling","virtualized","validateOrder","getConfig","ReportEmailRule","unset","plugin","perfMarkerPlugin","a11yPlugin","dateFilterPlugin","isOdataActionSource","comparisonColumns","inlineDownloadWithoutFilterstateAndSegmentPlugin","isAvailable","gridId","processReportRule","ReportRule","adId","performanceLogPlugin","paginationPlugin","availablePageSizes","enableRandomPage","pageNumberLabelText","pageSizeText","totalPageCountText","resetPageNumberOnSort","uiBlockerPlugin","el","editablePlugin","setUpErrorHandling","onAfterFindAll","any","App","views","alertCenter","toastWarning","navigateToRoute","campaign_id","adgroup_id","showTooMuchDataError","tooMuchDataErrorText","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","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","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","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","letterSpacing","writingMode","opacity","columnChooserStyleClassName","extractExclusionRulesFromExclusionSets","rules","correspondKey","getCorrespondKey","correspondSet","exclusionRule","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","isMandatoryColumnMissing","checkValid","triggerGroup","random","newKeys","hiddenCandidateColumns","lastSelectedKeys","loopCount","newSet"],"sourceRoot":""}