Built files from Bizgaze WebServer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

reportbuilder.js 273KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. var Unibase;
  11. (function (Unibase) {
  12. let Platform;
  13. (function (Platform) {
  14. let Analytics;
  15. (function (Analytics) {
  16. let Reports;
  17. (function (Reports) {
  18. class ReportBuilder extends Platform.Core.BaseComponent {
  19. constructor() {
  20. super(...arguments);
  21. this.dateColumns = [];
  22. this.selectedColumns = [];
  23. this.ReportColumns = [];
  24. this.ChartColumns = [];
  25. this.datalistColumnsResponseData = [];
  26. this.identityColumnsResponseData = [];
  27. this.subreport_count = 1;
  28. this.dynamicFilters = [];
  29. this.reportname = null;
  30. this.cardviewerpage = 2;
  31. this.reportwidgetdata = null;
  32. this.toolTipTemplateArray = [];
  33. this.tableData = "";
  34. this.last_page = 2;
  35. this.whole_tableData = [];
  36. this.loadTableData = 0;
  37. this.tableData_Array = [];
  38. this.isduplicate = false;
  39. this.reportType = 1;
  40. this.duplicateColIndex = [];
  41. this.appliedFilter = 0;
  42. this.filtersArray = [];
  43. this.queryBuilderArray = [];
  44. this.tabulatorColumns = [];
  45. this.IsclickedSelect2Caret = false;
  46. this.Categories = [];
  47. this.groupBy_Category = [];
  48. this.TenureReport = [];
  49. this.reportViewer_scrolled = 0;
  50. this.subreportdata = [];
  51. this.columns_Data = [];
  52. this.dataTreeRowExpandedColumn = [];
  53. this.ViewerId = 0;
  54. this.ViewerTypeId = Unibase.Platform.Analytics.Reports.Enums.ViewerType.Table;
  55. this.QB_KeyUp = 0;
  56. this.EditableTitle = true;
  57. this.HeaderSort = false;
  58. this.QueryBuilder_Columns = [];
  59. this.DataListId = 0;
  60. this.Aggregations = ["count", "sum", "avg", "max", "min", "Month", "Year", "none"];
  61. this.DataSourceId = 0;
  62. this.IsPivotTree = false;
  63. this.Edit_BindData = false;
  64. this.IsNotification = false;
  65. this.SearchColumns = "";
  66. this.selectedCategoryColumnsArray = [];
  67. this.IsInternalReport = true;
  68. this.appConfigType = 0;
  69. this.parameterNumber = 1;
  70. this.parameterArray = [];
  71. this.isEdit = false;
  72. this.selectedOption = 1;
  73. this.index = 0;
  74. this.roleSettings = [];
  75. this.SortColumns = [];
  76. this.querybuilderCheckboxes = [];
  77. this.enableCount = false;
  78. this.enableGlobalDatepicker = false;
  79. this.reportGroupId = 0;
  80. this.paletteId = 0;
  81. this.isReportWidget = false;
  82. this.reportWidgetType = '';
  83. this.connectedAppsData = [];
  84. this.linkReportId = 0;
  85. this.viewAll = false;
  86. this.lastContainerId = "";
  87. this.enablePivotTableConfig = false;
  88. this.pinDynamicFilters = false;
  89. this.showDynamicFilters = false;
  90. this.legendTypeId = 0;
  91. this.isCharttoTable = false;
  92. }
  93. cssFiles() {
  94. var cssfiles = ['platform/analytics/components/reportbuilder/style.reportbuilder.css'];
  95. return cssfiles;
  96. }
  97. jsFiles() {
  98. var jsfiles = ["platform/bundle/index.reportbuilder.js"];
  99. return jsfiles;
  100. }
  101. html(id, containerid) {
  102. var instance = this;
  103. let html = `<div id="biz-wrapper" class="biz-wrapper biz-reportbuilder-wrap drawer-small drawer-right biz-drawer-push">
  104. <!-- Right Nav -->
  105. <div id="reportBuilderRightNav"></div>
  106. <!-- /Right Nav -->
  107. <!-- Main Content -->
  108. <div class="biz-pg-wrapper py-0">
  109. <div class="biz-pg-body">
  110. <div class="biz-bldr-wrap bldr__aside__left">
  111. <header class="bldr-head report-builder">
  112. <div id="div_ReportBuilderErrorMessage" class="form-error-message" style="margin-left:-5px; z-index:100;"></div>
  113. <div class="d-flex align-items-center">
  114. <input class="form-control w-180p report-name" id="txt_reportname" onchange="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().changeDisplayname()" value="New Report">
  115. <span class="badge badge-soft-primary ml-10" id="header_datalist_name">datalist 1</span>
  116. </div>
  117. <div class="bldr-options-wrap" id="top-nav-menu">
  118. <a class="btn btn-icon btn-flush-primary btn-rounded flush-soft-hover" id="btnRefresh" href="javascript:;" data-tooltip="true" data-placement="top" title="Refresh"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-sync"></i></span></span></a>
  119. <a class="btn btn-icon btn-flush-dark btn-rounded flush-soft-hover" id="RoleSettingIcon" href="javscript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().reportRoleSetting()"><span class="btn-icon-wrap" data-tooltip="true" title="Report RoleSetting"><span class="line-icon"><i class="las la-user-cog"></i></span></span></a>
  120. <a class="btn btn-icon btn-flush-dark btn-rounded flush-soft-hover hidden" id="headerLinkReportIcon" href="javscript:;" onclick="Unibase.Platform.Analytics.Components.LinkReport.Instance().linkreport()"><span class="btn-icon-wrap" data-tooltip="true" title="Link Report"><span class="line-icon"><i class="las la-link"></i></span></span></a>
  121. <a class="btn btn-icon btn-flush-dark btn-rounded flush-soft-hover" id="subreporticon" href="javscript:;" onclick="Unibase.Platform.Analytics.Reports.SubReport.Instance().linkreport()"><span class="btn-icon-wrap" data-tooltip="true" title="Sub Report"><span class="line-icon"><i class="las la-columns "></i></span></span></a>
  122. <div class="bl-report-title" id="bl-report-title">Report</div>
  123. <a class="btn btn-icon btn-flush-dark btn-rounded flush-soft-hover qry-builder-open" href="javascript:;" id="ReportFilter" data-tooltip="true" title="Info"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-code-branch"></i></span></span></a>
  124. <a class="btn btn-icon btn-flush-dark btn-rounded flush-soft-hover d-none hidden" href="javascript:;" id="chartPivotBtn" data-tooltip="true" title="Pivot"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-columns"></i></span></span></a>
  125. <div class="dropdown">
  126. <a class="btn btn-icon btn-flush-dark btn-rounded btn-mob flush-soft-hover dropdown-toggle no-caret" aria-expanded="false" data-toggle="dropdown" href="#"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-save"></i></span></span></a>
  127. <a class="btn btn-theme btn-web mx-10 h-100" href="javscript:;" id="saveAsModalBtn">Save report</a>
  128. </div>
  129. <a class="btn btn-icon btn-flush-dark btn-rounded btn-mob flush-soft-hover" href="#"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-times"></i></span></span></a>
  130. <a class="btn btn-outline-danger btn-web btn-reportbuilder-close" href="javascript:;" id="btn-report-builder-close">Discard</a>
  131. </div>
  132. </header>
  133. <div class="bldr-aside-left">
  134. <ul class="nav nav-light nav-tabs">
  135. <li class="nav-item">
  136. <a class="nav-link active" data-toggle="tab" href="#tab_outline">
  137. <span class="nav-link-text">Outline</span>
  138. </a>
  139. </li>
  140. <li class="nav-item">
  141. <a class="nav-link" data-toggle="tab" href="#tab_column">
  142. <span class="nav-link-text">Columns</span>
  143. </a>
  144. </li>
  145. </ul>
  146. <div data-simplebar class="simple-scroll-bar">
  147. <div class="tab-content">
  148. <div class="tab-pane fade show active" id="tab_outline">
  149. <div class="rightnav_body" id="DefaultLeftNav_body">
  150. </div>
  151. </div>
  152. <div class="tab-pane fade" id="tab_column">
  153. <div class="biz-adj-drawer-wrap">
  154. <button data-target="adj_drawer_1" class="btn btn-secondary btn-block btn-wth-icon icon-left adj-drawer-open mb-15"><span><span class="icon-label"><span class="line-icon"><i class="las la-plus"></i></span></span><span class="btn-text">Add Columns</span></span></button>
  155. <div id="adj_drawer_1" class="biz-adj-drawer">
  156. <header>
  157. <h6>Add Columns</h6>
  158. <span class="close btn-adj-drawer-close alldatalistcolumns_dlg_close_btn"></span>
  159. </header>
  160. <div class="drawer-body">
  161. <div class="form-search mb-20">
  162. <input class="form-control DatalistColumns_Search" placeholder="Search Columns" >
  163. </div>
  164. <div class="nicescroll-bar" id="allDatalistColumns">
  165. </div>
  166. </div>
  167. <footer class="justify-content-between">
  168. <a href="javascript:;" class="btn btn-light btn-adj-drawer-close mr-10 alldatalistcolumns_dlg_close_btn">Cancel</a>
  169. <a href="javascript:;" class="btn btn-theme btn-adj-drawer-close" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().appendExtraSelectedColumns()">Add Columns</a>
  170. </footer>
  171. </div>
  172. </div>
  173. <div class="flex-between-center mb-10">
  174. <span class="line-icon mr-2"><i class="las la-filter font-26"></i></span>
  175. <select class="custom-select form-control" id="filter-by">
  176. </select>
  177. </div>
  178. <div class="dsl-block-wrap dd-list droppable-area1 connected-sortable" id="selectedColumns">
  179. </div>
  180. <div class="dsl-block-wrap dd-list droppable-area1 connected-sortable" id="selectedColumns_hidden"></div>
  181. </div>
  182. </div>
  183. </div>
  184. </div>
  185. <div class="bldr-body">
  186. <header class="bldr-sec-head justify-content-end py-10 pl-10 h-50p">
  187. <div class="left-aside-togglable"></div>
  188. <a class="btn btn-icon btn-flush-theme flush-soft-hover h-35p w-35p drawer-toggle-link active right-aside-togglable" id="PivotIcon" href="#"><span
  189. class="btn-icon-wrap"><span class="line-icon"><i class="las la-border-all font-25"></i></span></span></a>
  190. </header>
  191. <div class="reportbuilder-main-wrap">
  192. <div id="chart-container" class="card chart-wrap hidden"></div>
  193. <div class="table-wrap">
  194. <div id="tabulatorReportbuilder" class="tabulator-reportbuilder table-bordered border-0 h-100"></div>
  195. </div>
  196. </div>
  197. <div class="qry-builder-container">
  198. <header>
  199. <h6>Conditional formating</h6>
  200. <button type="button" class="close" aria-label="Close">
  201. <span aria-hidden="true">&times;</span>
  202. </button>
  203. </header>
  204. <div id="QueryBuilder" class="bg-white"></div>
  205. <footer>
  206. <button type="button" class="btn btn-light mr-10" id="btn-reset-query">Reset</button>
  207. <button type="button" class="btn btn-theme w-150p" id="btn-apply-query">Apply</button>
  208. </footer>
  209. </div>
  210. </div>
  211. </div>
  212. <!-- Save as Modal -->
  213. <div class="modal" id="save_as_modal" tabindex="-1" role="dialog" aria-labelledby="save_as_modal" aria-hidden="true">
  214. <div class="modal-dialog" role="document">
  215. <div class="modal-content">
  216. <div id="divReport_ErrorMessage"></div>
  217. <div class="modal-header border-0">
  218. <h5 class="modal-title">Save report</h5>
  219. <button type="button" class="close">
  220. <span aria-hidden="true">&times;</span>
  221. </button>
  222. </div>
  223. <div class="modal-body h-100">
  224. <div class="form-group">
  225. <div class="form-label-group">
  226. <label for="userName">Select Folder<span class="text-danger " id="spnIsRequired_folder"> *</span></label>
  227. <a href="javascript:;" id="reportCreateFolder" class="link-theme font-14 font-weight-500">+ Create Group</a>
  228. </div>
  229. <select class="form-control custom-select mb-10" id="RptGroup_AutoComplete">
  230. <option selected>Select Group</option>
  231. </select>
  232. <input type="hidden" id="hfAutoComplete_ReportGroup" class="hfAutoCompleteId_ReportGroup value-control" data-isdynamic="true"/>
  233. </div>
  234. <div class="form-group">
  235. <input type="checkbox" class="chkInternalReport mt-1 mr-10" onclick="" id="internalreport_checkbox" checked="true"><label for="internalreport_checkbox" class="mb-0">IsInternalReport</label>
  236. </div>
  237. <div class="custom-control custom-radio radio-theme">
  238. <input type="radio" id="customRadio_v1" name="customRadioV1" class="custom-control-input" checked>
  239. <label class="custom-control-label" for="customRadio_v1">Visible to all users</label>
  240. </div>
  241. <div class="custom-control custom-radio radio-theme">
  242. <input type="radio" id="customRadio_v2" name="customRadioV1" class="custom-control-input">
  243. <label class="custom-control-label" for="customRadio_v2">Visible to only me</label>
  244. </div>
  245. </div>
  246. <div class="modal-footer justify-content-start">
  247. <button type="button" id="btn-reportbuilder-save" class="btn btn-theme w-150p">Save</button>
  248. </div>
  249. </div>
  250. </div>
  251. </div>
  252. <!-- /Save as Modal -->
  253. <!-- Link Report Modal -->
  254. <div id="linkReportModalDiv"></div>
  255. <!-- /Link Report Modal -->
  256. </div>
  257. </div>
  258. <div id="divSelectDataList"></div>
  259. </div>`;
  260. $(".biz-new-report").hide();
  261. return html;
  262. }
  263. load(id, containerid, callback) {
  264. Unibase.Platform.Helpers.FileCacheHelper.Instance().addCacheFiles(["platform/analytics/components/reportbuilder/reportfilter.js", "platform/analytics/requests/reportgroup.js", "platform/analytics/components/reportbuilder/reportgroup.js", "platform/analytics/components/reportbuilder/subreport.js", "platform/analytics/components/reportbuilder/columnformat.js", "platform/analytics/components/reportbuilder/reportrolesettings.js"]);
  265. let instance = this;
  266. instance.res = null;
  267. this.reportManager = Analytics.Managers.ReportManager.Instance();
  268. this._chartBuilder = Unibase.Platform.Analytics.Charts.ChartBuilder.Instance();
  269. this._reportViewer = Analytics.Components.ReportViewer.Instance();
  270. this._reportGroup = Reports.ReportGroup.Instance();
  271. this._reportBuilderTemplate = Reports.ReportBuilder_Template.Instance();
  272. this._columnFormat = Reports.ColumnFormat.Instance();
  273. this._pivot = Reports.Pivot.Instance();
  274. this.pivot = new PivotColumns();
  275. Unibase.Platform.Analytics.Reports.SubReport.Instance().isReportDuplicate = false;
  276. instance.dataTreeRowExpandedColumn = [];
  277. let reportid = id;
  278. instance.reportid = id;
  279. instance.containerId = containerid;
  280. $(".Datalist_Search").val("");
  281. $("#" + containerid).find(".report-builder-body").height($(window).outerHeight() - 100);
  282. $("#" + containerid).find("#tabulatorReportbuilder").addClass(containerid + "-table-canvas");
  283. $("#" + containerid).find("#chart-container").addClass(containerid + "-chart-canvas");
  284. $(".TableIcon").addClass("text-right").addClass("pull-right");
  285. $('#saveAsModalBtn').click(function (e) {
  286. return __awaiter(this, void 0, void 0, function* () {
  287. $('#save_as_modal').fadeIn().css('background-color', 'rgba(0, 0, 0, 0.5)');
  288. var isChecked = $("#internalreport_checkbox").prop('checked');
  289. if (isChecked) {
  290. let groupName = "InternalGroup";
  291. instance.reportManager.getReportGroupByName(groupName).then(yield function (grpresponse) {
  292. if (grpresponse.result != "") {
  293. $("#RptGroup_AutoComplete").append("<option selected value=" + grpresponse.result.ReportGroupId + ">InternalGroup</option>");
  294. $('#RptGroup_AutoComplete').attr('disabled', 'true');
  295. }
  296. });
  297. }
  298. });
  299. });
  300. $('#save_as_modal .close').click(function (e) {
  301. $('#save_as_modal').fadeOut().css('background-color', 'none');
  302. });
  303. $("#btn-reportbuilder-save").click(function () {
  304. if ($("#RptGroup_AutoComplete option:selected").val() == "Select Group")
  305. return MessageHelper.Instance().showError("Please select ReportGroup", 'divReport_ErrorMessage');
  306. $("#modalDataListItems .datalist-items, #modalDataListColumns").find(".active").removeClass("active");
  307. instance.saveReport(containerid, reportid);
  308. });
  309. instance._chartBuilder.loadTopIcons();
  310. instance.loadTableToggleButtons();
  311. instance.loadLeftNav();
  312. instance.loadReportGroups();
  313. instance.loadInstalledApps();
  314. instance.loadConnectedApps();
  315. instance.bindConnectedReportsSelect2("#connectedreports");
  316. if (reportid > 0) {
  317. instance.loadreportviewerdata(reportid);
  318. }
  319. else {
  320. instance.linkReportId = 0;
  321. instance.loadDataList_Modal();
  322. instance.loadDataLists();
  323. }
  324. instance.table = instance.initTable(containerid);
  325. if (callback !== null) {
  326. callback();
  327. instance.table.redraw(true);
  328. }
  329. $('#' + containerid).find("#btnRefresh").click(function () {
  330. return __awaiter(this, void 0, void 0, function* () {
  331. yield instance.load_data(instance.table);
  332. });
  333. });
  334. $('#reportBuilderModal').on('hidden.bs.modal', function () {
  335. $('#reportBuilderModal').remove();
  336. });
  337. $('.btn-reportbuilder-close').on('click', function () {
  338. instance.closeReportBuilder(containerid, reportid);
  339. });
  340. $("#DataListColumnsDiv").addClass("hidden");
  341. instance.loadAddedColumnFilter();
  342. $("#filter-by").select2({ minimumResultsForSearch: -1 });
  343. $('#filter-by').on('change', function (e) {
  344. instance.loadSelectedDataListColumns();
  345. });
  346. $("#reportCreateFolder").click(function () {
  347. instance.navigationHelper.popup(reportid, '', instance._reportGroup, null, Platform.Helpers.Size.Medium);
  348. });
  349. $("#notification_checkbox").click(function () {
  350. instance.isNotificationCheck();
  351. });
  352. $("#internalreport_checkbox").click(function () {
  353. return __awaiter(this, void 0, void 0, function* () {
  354. if ($('#internalreport_checkbox').prop('checked') == false) {
  355. instance.IsInternalReport = false;
  356. $("#RptGroup_AutoComplete").append("<option selected value=0>Select</option>");
  357. $('#RptGroup_AutoComplete').removeAttr('disabled');
  358. }
  359. else {
  360. instance.IsInternalReport = true;
  361. let groupName = "InternalGroup";
  362. instance.reportManager.getReportGroupByName(groupName).then(yield function (grpresponse) {
  363. if (grpresponse.result != "") {
  364. $("#RptGroup_AutoComplete").append("<option selected value=" + grpresponse.result.ReportGroupId + ">InternalGroup</option>");
  365. $('#RptGroup_AutoComplete').attr('disabled', 'true');
  366. }
  367. });
  368. }
  369. });
  370. });
  371. $("#count_checkbox").click(function () {
  372. if ($('#count_checkbox').prop('checked') == false) {
  373. instance.enableCount = false;
  374. $('#count_checkbox').prop('checked', false);
  375. }
  376. else {
  377. instance.enableCount = true;
  378. $('#count_checkbox').prop('checked', true);
  379. }
  380. });
  381. $("#enableglobaldatepicker_checkbox").click(function () {
  382. if ($('#enableglobaldatepicker_checkbox').prop('checked') == false) {
  383. instance.enableGlobalDatepicker = false;
  384. $('#enableglobaldatepicker_checkbox').prop('checked', false);
  385. }
  386. else {
  387. instance.enableGlobalDatepicker = true;
  388. $('#enableglobaldatepicker_checkbox').prop('checked', true);
  389. }
  390. });
  391. $('#btn-apply-query').on('click', function () {
  392. var qelement = $("#builder");
  393. var obj = qelement.queryBuilder('getRules');
  394. !obj && (obj = []);
  395. instance.queryBuilderJson = JSON.stringify(obj);
  396. instance.load_data(instance.table);
  397. $(".qry-builder-container").hide();
  398. });
  399. $(".alldatalistcolumns_dlg_close_btn").click(() => {
  400. let selectedColumns = $("#allDatalistColumns").find(".selected");
  401. if (selectedColumns.length) {
  402. for (var i = 0; i < selectedColumns.length; i++)
  403. $(selectedColumns[i]).removeClass("selected");
  404. }
  405. $(".DatalistColumns_Search").val("").trigger("keyup");
  406. });
  407. $("#divDatalistModal_ErrorMessage").empty();
  408. $('.biz-reportbuilder-wrap').click(function () {
  409. $('#tabulatorReportbuilder').find('.column-dp-menu.show').removeClass('show');
  410. });
  411. $("#showdatalistcolumns_checkbox").click((e) => {
  412. instance.showDynamicFilters = e.currentTarget.checked;
  413. instance._chartBuilder.loadDynamicFilterSelect(instance.showDynamicFilters);
  414. });
  415. $("#InstalledApp_AutoComplete").change(e => {
  416. });
  417. $('#DefaultLeftNav_body .reset-btn').click(e => {
  418. e.preventDefault();
  419. e.stopPropagation();
  420. });
  421. $("#RptGroup_AutoComplete").change(e => {
  422. let groupId = Number(e.target.value);
  423. instance.reportManager.getReportGroupById(groupId).then(res => {
  424. if (res.status == Unibase.Data.Status.Success) {
  425. instance.isInternalGroup = res.result.IsInternalGroup;
  426. instance.updateInternalReportCb(res.result.IsInternalGroup, instance.isInternalGroup);
  427. if (instance.isInternalGroup)
  428. instance.IsInternalReport = true;
  429. }
  430. });
  431. });
  432. }
  433. loadForm(FormId, Pk_Value, AppConfigurationId, Callback, ElementId) {
  434. this.init(0, null);
  435. }
  436. init(reportid, callback) {
  437. var instance = this;
  438. instance.reportid = reportid;
  439. instance.render(reportid, callback);
  440. }
  441. render(reportid, callback) {
  442. var instance = this;
  443. reportid = reportid;
  444. this.navigationHelper.popup(reportid, '', instance, null, Platform.Helpers.Size.ExtraLarge);
  445. }
  446. loadReportForm(iscreate) {
  447. var Pk_Value = 0;
  448. if (!iscreate) {
  449. Pk_Value = Unibase.Themes.Providers.DetailHelper.recordId;
  450. }
  451. this.init(Pk_Value, null);
  452. }
  453. initiateDataListSearch() {
  454. $('.Datalist_Search,.DatalistColumns_Search').on('keyup', function () {
  455. let ulClass = "";
  456. if ($(this).hasClass('Datalist_Search')) {
  457. ulClass = '.datalist-items';
  458. }
  459. else {
  460. ulClass = '.columns-list';
  461. }
  462. $(ulClass + ' li').each(function () {
  463. $(this).attr('data-search-term', $(this).text().replaceAll(" ", "_").toLowerCase());
  464. });
  465. let searchTerm = $(this).val().toString().toLowerCase();
  466. searchTerm.includes(" ") && (searchTerm = searchTerm.replaceAll(" ", "_"));
  467. if (searchTerm != "") {
  468. let count = 0;
  469. $(ulClass + ' li').each(function () {
  470. if ($(this).filter('[data-search-term *= ' + searchTerm + ']').length > 0 || searchTerm.length < 1) {
  471. $(this).show();
  472. count++;
  473. }
  474. else {
  475. $(this).hide();
  476. }
  477. });
  478. if (!count)
  479. return MessageHelper.Instance().showError("No results found", 'divDatalistModal_ErrorMessage');
  480. else if ($("#divDatalistModal_ErrorMessage").children().length)
  481. $("#divDatalistModal_ErrorMessage").empty();
  482. }
  483. else {
  484. $(ulClass + ' li').each(function () {
  485. $(this).show();
  486. });
  487. }
  488. });
  489. }
  490. loadDataList_Modal() {
  491. const instance = this;
  492. let reportBuilder_DataListModalHtml = `<div class="modal fade biz-new-report" id="reportBuilderModal" tabindex="-1" role="dialog" aria-labelledby="reportBuilderPopup" aria-hidden="true">
  493. <div class="modal-dialog modal-dialog-centered modal-lg" role="document">
  494. <div class="modal-content">
  495. <div id="divDatalistModal_ErrorMessage"></div>
  496. <div class="modal-header flex-column">
  497. <h5 class="mb-5">Create New Report</h5>
  498. <p>Choose datalist and columns to your report</p>
  499. </div>
  500. <div class="modal-body pa-0 h-400p">
  501. <div class="dataset-list-wrap">
  502. <div class="form-search">
  503. <input class="form-control Datalist_Search" placeholder="Search Datalist">
  504. </div>
  505. <div data-simplebar class="simple-scroll-bar" id="DataListsDropDownDiv">
  506. <div id="modalDataListItems">
  507. </div>
  508. </div>
  509. </div>
  510. <div class="columns-list-wrap">
  511. <div class="d-flex align-items-center">
  512. <button class="btn btn-icon btn-flush-dark btn-rounded flush-soft-hover close-columns-list" href="#"><span class="btn-icon-wrap" ><span class="feather-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-arrow-left"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg></span></span></button>
  513. <div class="form-search col">
  514. <input class="form-control DatalistColumns_Search" placeholder="Search Columns">
  515. </div>
  516. </div>
  517. <div data-simplebar class="simple-scroll-bar">
  518. <div id="modalDataListColumns">
  519. </div>
  520. </div>
  521. </div>
  522. </div>
  523. <div class="modal-footer justify-content-center">
  524. <a class="btn btn-light mr-10 btn-reportbuilder-close" href="javascript:;" data-dismiss="modal">cancel</a>
  525. <a class="btn btn-theme btn-reportbuilder-next" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().loadReportColumns()"> next </a>
  526. </div>
  527. </div>
  528. </div>
  529. </div>`;
  530. $("#_bizgaze_modal").append(reportBuilder_DataListModalHtml);
  531. $('#reportBuilderModal').modal({
  532. backdrop: 'static',
  533. keyboard: true,
  534. show: true
  535. });
  536. instance.initiateDataListSearch();
  537. }
  538. loadDataLists() {
  539. var instance = this;
  540. let dataListHtml = "";
  541. instance.reportManager.getDataLists().then(function (response) {
  542. dataListHtml += '<ul class="nav nav-vertical nav-tabs datalist-items">';
  543. for (var i = 0; i < response.length; i++) {
  544. let obj = response[i];
  545. dataListHtml += `<li class="nav-item">
  546. <a class="nav-link data-list-sel" data-toggle="tab"
  547. href="#tab_col_1" title="${obj.DataListName.trim()}" data-list-id="${obj.DataListId}" data-list-name="${obj.DataListName.trim().replaceAll(" ", "_")}" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().loadDataListColumns(${obj.DataListId},null,${false},${false},${obj.DataSourceId})">
  548. <span class="nav-link-text">${obj.DataListName.trim()}</span>
  549. </a>
  550. </li>`;
  551. }
  552. dataListHtml += '</ul>';
  553. $('#modalDataListItems').append(dataListHtml);
  554. if (!window.matchMedia('(max-width: 1200px)').matches) {
  555. $("#modalDataListItems ul li a:first").addClass("active").trigger('click');
  556. }
  557. });
  558. }
  559. loadDataListColumns(datalistid, term, search, IsForm, DataSourceId) {
  560. return __awaiter(this, void 0, void 0, function* () {
  561. $('#modalDataListColumns').html("");
  562. $("#reportBuilderModal").find(".DatalistColumns_Search").val("");
  563. var instance = this;
  564. instance.DataSourceId = DataSourceId;
  565. if (datalistid != 0) {
  566. var dataListColumnsHtml = "";
  567. yield instance.reportManager.getDataListColumns(datalistid, term, null).then(function (response) {
  568. if (response.status == Unibase.Data.Status.Success) {
  569. if (response.result != "") {
  570. var dc_res = JSON.parse(response.result);
  571. instance.datalistColumnsResponseData = [];
  572. if (dc_res.length > 0) {
  573. dataListColumnsHtml += `<div class="tab-content">
  574. <div class="tab-pane fade show active" id="tab_col_1">
  575. <ul class="columns-list multi-sel">`;
  576. for (var i = 0; i < dc_res.length; i++) {
  577. let obj = dc_res[i];
  578. let columnIcon = instance.getColumnIconByDataTypes(obj.DataTypeId);
  579. let dobj = { ColumnId: obj.ColumnId, DataType: obj.DataTypeId, ColumnName: obj.AliasName, DisplayText: obj.AliasName, AliasName: obj.AliasName, DlColumnName: obj.ColumnName, Isvisible: false, StaticFilterControlType: obj.StaticFilterControlTypeId };
  580. instance.datalistColumnsResponseData.push(dobj);
  581. dataListColumnsHtml += `<li>
  582. <a href="#">
  583. <span class="col-type-icon">
  584. <span class="line-icon">
  585. ${columnIcon}
  586. </span>
  587. </span>
  588. <span>
  589. <span class="col-name dataListModalColumn" data-column-datatype=${obj.DataTypeId} data-column-id='${obj.ColumnId}' data-column-dlcolumnname='${obj.ColumnName}'>${obj.AliasName}</span>
  590. </span>
  591. </a>
  592. </li>`;
  593. }
  594. dataListColumnsHtml += `</ul></div>`;
  595. $('#modalDataListColumns').html(dataListColumnsHtml);
  596. instance.QueryBuilder_Columns = instance.datalistColumnsResponseData;
  597. }
  598. else {
  599. $('#modalDataListColumns').html("");
  600. }
  601. }
  602. else {
  603. return MessageHelper.Instance().showError("DataListColumns does'nt exist", "divDatalistModal_ErrorMessage");
  604. }
  605. }
  606. else {
  607. return MessageHelper.Instance().showError(response.message, "divDatalistModal_ErrorMessage");
  608. }
  609. });
  610. }
  611. });
  612. }
  613. _selectedColumns(selCol) {
  614. var instance = this;
  615. let colFormat;
  616. if (selCol.DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime && selCol.ColumnFormat)
  617. colFormat = selCol.ColumnFormat;
  618. else if (selCol.DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime && !(selCol.ColumnFormat))
  619. colFormat = "Default";
  620. instance.selectedColumns.push({
  621. ReportColumnId: (selCol.ReportColumnId) ? selCol.ReportColumnId : 0,
  622. ColumnId: selCol.ColumnId,
  623. ColumnName: selCol.ColumnName,
  624. AliasName: selCol.AliasName && selCol.AliasName.toLowerCase(),
  625. DataListColumnName: selCol.DataListColumnName,
  626. DlColumnName: selCol.DlColumnName,
  627. DisplayText: (selCol.DisplayText) ? selCol.DisplayText : selCol.AliasName,
  628. DataType: selCol.DataType,
  629. DataTypeString: selCol.DataTypeString,
  630. GroupBy: (selCol.GroupBy) ? selCol.GroupBy : false,
  631. Isvisible: (selCol.Isvisible) ? selCol.Isvisible : false,
  632. Aggregation: !isNaN(selCol.Aggregation) ? selCol.Aggregation : Reports.Enums.AggregationType.none,
  633. SortOrder: (selCol.SortOrder) ? selCol.SortOrder : "none",
  634. SortIndex: (selCol.SortIndex) ? selCol.SortIndex : 0,
  635. IsFilterable: false,
  636. IsPrimaryKey: (selCol.IsPrimaryKey) ? selCol.IsPrimaryKey : false,
  637. IsContactColumn: (selCol.IsContactColumn) ? selCol.IsContactColumn : false,
  638. ColumnIndex: instance.selectedColumns.length,
  639. IsDragged: (selCol.IsDragged) ? selCol.IsDragged : false,
  640. GroupByCategory: (selCol.GroupByCategory) ? selCol.GroupByCategory : false,
  641. ColumnFormat: (colFormat) ? colFormat : "",
  642. DistinctOn: (selCol.DistinctOn) ? selCol.DistinctOn : false,
  643. IsPivotColumn: selCol.IsPivotColumn,
  644. IsPivotAggrColumn: selCol.IsPivotAggrColumn,
  645. IsPivotTableCol: (selCol.IsPivotTableCol) ? selCol.IsPivotTableCol : false,
  646. IsDownload: (selCol.IsDownload) ? selCol.IsDownload : false,
  647. TableAggrTypeId: !isNaN(selCol.TableAggrTypeId) ? selCol.TableAggrTypeId : Reports.Enums.AggregationType.none,
  648. IsNumFormatting: (selCol.IsNumFormatting) ? selCol.IsNumFormatting : false,
  649. IsRowTotal: (selCol.IsRowTotal) ? selCol.IsRowTotal : false,
  650. IsImageUrl: (selCol.IsImageUrl) ? selCol.IsImageUrl : false,
  651. PivotTableAggrTypeId: (selCol.PivotTableAggrTypeId) ? selCol.PivotTableAggrTypeId : 0,
  652. });
  653. var Width = selCol.Width;
  654. if (Width != undefined) {
  655. let index = instance.getIndexByAliasName_selectedColumnsArray(selCol.AliasName);
  656. if (index != -1)
  657. instance.selectedColumns[index].Width = Width;
  658. }
  659. var ColumnName = selCol.ColumnName;
  660. let EditableTitle = true;
  661. let HeaderSort = false;
  662. if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Chart) {
  663. EditableTitle = false;
  664. HeaderSort = true;
  665. }
  666. instance.table.addColumn({ title: selCol.AliasName && selCol.AliasName.toLowerCase(), field: ColumnName && ColumnName.toLowerCase(), editableTitle: EditableTitle, headerSort: HeaderSort }, true, "LastColumn");
  667. instance.EditableTabulatorTitle();
  668. }
  669. loadReportColumns() {
  670. var instance = this;
  671. if ($('#modalDataListItems .nav-link.data-list-sel.active').length == 0)
  672. return MessageHelper.Instance().showError("Please select Datalist", 'divDatalistModal_ErrorMessage');
  673. if ($('#modalDataListColumns .columns-list li.selected').length == 0)
  674. return MessageHelper.Instance().showError("Please select Columns", 'divDatalistModal_ErrorMessage');
  675. instance.datalistColumnsResponseData = [];
  676. instance.DataListId = parseInt($('#modalDataListItems ul li a.active').attr('data-list-id'));
  677. const DataListName = $('#modalDataListItems ul li a.active').attr('data-list-name');
  678. var asb = 0;
  679. $('#datalist_name').val(DataListName);
  680. $('#header_datalist_name').html(DataListName);
  681. if (!isNaN(instance.DataListId)) {
  682. $('#modalDataListColumns ul.multi-sel li span.dataListModalColumn').each(function () {
  683. let _id = Number($(this).attr('data-column-id'));
  684. let _datatype = Number($(this).attr('data-column-datatype'));
  685. let _datatypeString = $(this).attr('data-column-datatype');
  686. let _dlcolumnname = $(this).attr('data-column-dlcolumnname');
  687. let _dlaliasname = $(this).text();
  688. let obj = { ColumnId: _id, DataType: _datatype, DataTypeString: _datatypeString, ColumnName: _dlaliasname, DisplayText: _dlaliasname, AliasName: _dlaliasname, DlColumnName: _dlcolumnname, Isvisible: false };
  689. instance.datalistColumnsResponseData.push(obj);
  690. });
  691. $('#modalDataListColumns ul.multi-sel li.selected span.dataListModalColumn').each(function () {
  692. let _id = Number($(this).attr('data-column-id'));
  693. let _datatype = Number($(this).attr('data-column-datatype'));
  694. let _datatypeString = $(this).attr('data-column-datatype');
  695. let _dlaliasname = $(this).text();
  696. let _dlcolumnname = $(this).attr('data-column-dlcolumnname');
  697. let obj = { ColumnId: _id, DataType: _datatype, DataTypeString: _datatypeString, ColumnName: _dlaliasname, AliasName: _dlaliasname, DlColumnName: _dlcolumnname, Isvisible: true, IsDownload: true };
  698. instance._selectedColumns(obj);
  699. });
  700. instance.loadSelectedDataListColumns();
  701. instance.loadAllDataListColumns();
  702. instance._chartBuilder.select2DataBinding("");
  703. $('#reportBuilderModal').modal('hide');
  704. $('.Datalist_Search').val("");
  705. $('.DatalistColumns_Search').val("");
  706. instance.load_data(instance.table);
  707. }
  708. ;
  709. }
  710. loadAllDataListColumns() {
  711. var instance = this;
  712. let allDatalistColumnsHtml = "";
  713. allDatalistColumnsHtml += '<ul class="columns-list multi-sel">';
  714. for (var i = 0; i < instance.datalistColumnsResponseData.length; i++) {
  715. var obj = instance.datalistColumnsResponseData[i];
  716. let columnIcon = instance.getColumnIconByDataTypes(obj.DataType);
  717. allDatalistColumnsHtml += `<li id="li_${obj.ColumnId}">
  718. <a href="#">
  719. <span class="col-type-icon">
  720. <span class="line-icon">${columnIcon}</span>
  721. </span>
  722. <span>
  723. <span class="col-name datalist_column" data-column-datatype=${obj.DataType} data-column-id='${obj.ColumnId}' data-column-dlcolumnname='${obj.DlColumnName}'>${obj.ColumnName}</span></span>
  724. </a>
  725. </li>`;
  726. }
  727. allDatalistColumnsHtml += '</ul>';
  728. $('#allDatalistColumns').html(allDatalistColumnsHtml);
  729. }
  730. loadSelectedDataListColumns() {
  731. let opt = Number($('#filter-by').val());
  732. let check = '';
  733. var hiddenColumnsHtml = '';
  734. if (opt == Unibase.Platform.Analytics.Enums.FilterType.allcolumns) {
  735. }
  736. else if (opt == Unibase.Platform.Analytics.Enums.FilterType.contactcolumns) {
  737. check = 'IsContactColumn';
  738. }
  739. else if (opt == Unibase.Platform.Analytics.Enums.FilterType.primarykeycolumns) {
  740. check = 'IsPrimaryKey';
  741. }
  742. var instance = this;
  743. let selectedColumnsHtml = "";
  744. $.each(instance.selectedColumns, function (index, value) {
  745. var { selectedColumnHtml, hiddenColumnHtml } = instance.getSelectedColumnHtml(value, index, check);
  746. selectedColumnsHtml += selectedColumnHtml;
  747. if (!check)
  748. hiddenColumnsHtml += hiddenColumnHtml;
  749. });
  750. $('#selectedColumns').html(selectedColumnsHtml);
  751. $('#selectedColumns_hidden').html(hiddenColumnsHtml);
  752. instance.sortSelectedColums();
  753. }
  754. getColumnHtml(AliasName, ColumnName, ColumnId, dnoneClass, Isvisible, isColumnVisible, DataType, DisplayText, isHiddenColumn) {
  755. var idValue = isHiddenColumn ? "_hidden" : "";
  756. const draggerClass = isHiddenColumn ? 'pl-40' : 'las la-braille dragger';
  757. return `<div class="dsl-block ${Isvisible ? '' : 'd-none'}" id="column_${AliasName}_block${idValue}" data-isvisible="${isColumnVisible}">
  758. <span>
  759. <i class="${draggerClass}"></i>
  760. <span class="dsl-block-name" data-column-id='${ColumnId}' data-report-columnname = '${ColumnName} ' data-report-aliasname ='${AliasName}' data-column-datatype='${DataType}'>${DisplayText}</span>
  761. </span>
  762. <span>
  763. <a class="btn btn-xs btn-icon btn-flush-dark btn-rounded flush-soft-hover text-secondary ${dnoneClass}" id="${AliasName}_EyeIcon${idValue}" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().showOrHideColumn_table('${ColumnId}','${AliasName}')" title="Show Column"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-eye-slash font-20"></i></span></span></a>
  764. </span>
  765. </div>`;
  766. }
  767. getSelectedColumnHtml(value, index, check) {
  768. var instance = this;
  769. var selectedColumnHtml = '', hiddenColumnHtml = '';
  770. let dnoneClass = 'd-none';
  771. let isColumnVisible = "true";
  772. if (!value.Isvisible) {
  773. dnoneClass = '';
  774. isColumnVisible = "false";
  775. }
  776. var colIndex = instance.getIndexByAliasName_selectedColumnsArray(value.AliasName);
  777. instance.selectedColumns[colIndex].ColumnIndex = index;
  778. if (check == '' && !value.IsPrimaryKey) {
  779. selectedColumnHtml += instance.getColumnHtml(value.AliasName, value.ColumnName, value.ColumnId, dnoneClass, value.Isvisible, isColumnVisible, value.DataType, value.DisplayText);
  780. }
  781. else if (check == "IsPrimaryKey" && value.IsPrimaryKey) {
  782. selectedColumnHtml += instance.getColumnHtml(value.AliasName, value.ColumnName, value.ColumnId, dnoneClass, value.Isvisible, isColumnVisible, value.DataType, value.ColumnName);
  783. }
  784. else if (check == '' && value.IsPrimaryKey) {
  785. selectedColumnHtml += instance.getColumnHtml(value.AliasName, value.ColumnName, value.ColumnId, dnoneClass, value.Isvisible, isColumnVisible, value.DataType, value.AliasName);
  786. }
  787. else if (check == 'IsContactColumn' && value.IsContactColumn) {
  788. selectedColumnHtml += `<div class="dsl-block ${value.Isvisible ? '' : 'd-none'}" id="column_${value.AliasName}_block" data-isvisible="${isColumnVisible}">
  789. <span>
  790. <i class="las la-braille dragger"></i>
  791. <span class="dsl-block-name" data-column-id='${value.ColumnId}' data-report-columnname = '${value.ColumnName}' data-report-aliasname ='${value.AliasName}' data-column-datatype='${value.DataType}'>${value.AliasName}</span>
  792. </span>
  793. <span>
  794. <a class="btn btn-xs btn-icon btn-flush-dark btn-rounded flush-soft-hover text-secondary ${dnoneClass}" id="${value.AliasName}_EyeIcon" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().showOrHideColumn_table('${value.ColumnId}','${value.AliasName}')" title="Show Column"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-eye-slash font-20"></i></span></span></a>
  795. </span>
  796. </div>`;
  797. }
  798. if (!value.Isvisible) {
  799. hiddenColumnHtml += instance.getColumnHtml(value.AliasName, value.ColumnName, value.ColumnId, dnoneClass, true, isColumnVisible, value.DataType, value.DisplayText, true);
  800. }
  801. return {
  802. selectedColumnHtml: selectedColumnHtml,
  803. hiddenColumnHtml: hiddenColumnHtml
  804. };
  805. }
  806. sortSelectedColums() {
  807. var instance = this;
  808. let list = $('#selectedColumns');
  809. if (!list)
  810. return;
  811. list.sortable({
  812. connectWith: "#selectedColumns",
  813. cursor: 'move',
  814. update: function (event, ui) {
  815. instance.updateSelectedColumnIndex();
  816. instance.load_data(instance.table);
  817. }
  818. });
  819. }
  820. appendExtraSelectedColumns() {
  821. var instance = this;
  822. let obj;
  823. let newColumnsHtml = "";
  824. if (instance.DataListId != 0) {
  825. let show = false;
  826. $('#allDatalistColumns ul.multi-sel li.selected span.datalist_column').each(function () {
  827. let _id = Number($(this).attr('data-column-id'));
  828. let _datatype = Number($(this).attr('data-column-datatype'));
  829. let _datatypeString = $(this).attr('data-column-datatype');
  830. let _name = $(this).text();
  831. let _dlcolumnname = $(this).attr('data-column-dlcolumnname');
  832. let opt = Number($('#filter-by').val());
  833. if (opt == Unibase.Platform.Analytics.Enums.FilterType.primarykeycolumns && _datatype != Unibase.Platform.Analytics.Reports.Enums.DataType.int32 && _datatype != Unibase.Platform.Analytics.Reports.Enums.DataType.int64) {
  834. return MessageHelper.Instance().showError("Please select integer data type column for selecting primary key", "div_ReportBuilderErrorMessage");
  835. }
  836. obj = { ColumnId: _id, DataType: _datatype, DataTypeString: _datatypeString, ColumnName: _name, AliasName: _name, DlColumnName: _dlcolumnname, Isvisible: true, IsDownload: true };
  837. var column = instance.selectedColumns.find(x => x.AliasName == _name) ? true : false;
  838. if (!column)
  839. instance._selectedColumns(obj);
  840. if (opt == Unibase.Platform.Analytics.Enums.FilterType.allcolumns) {
  841. if (column) {
  842. show = true;
  843. return instance.error(_name);
  844. }
  845. newColumnsHtml += instance.addDataListColumns_ColumnsTab(obj.ColumnId, obj.ColumnName, obj.AliasName, obj.DataType, _name);
  846. }
  847. else if (opt == Unibase.Platform.Analytics.Enums.FilterType.contactcolumns) {
  848. var contccol = instance.selectedColumns.find(x => x.AliasName == _name && x.IsContactColumn == true) ? true : false;
  849. if (contccol) {
  850. show = true;
  851. return instance.error(_name);
  852. }
  853. newColumnsHtml += instance.addDataListColumns_ColumnsTab(obj.ColumnId, obj.ColumnName, obj.AliasName, obj.DataType, _name);
  854. instance.IsContactColumn(_id, _name);
  855. }
  856. else if (opt == Unibase.Platform.Analytics.Enums.FilterType.primarykeycolumns) {
  857. var pkcol = instance.selectedColumns.find(x => x.ColumnName == _name && x.IsPrimaryKey == true) ? true : false;
  858. if (pkcol) {
  859. show = true;
  860. return MessageHelper.Instance().showError('Please remove existing pk_id column to add new primarykey column', 'div_ReportBuilderErrorMessage');
  861. }
  862. newColumnsHtml += instance.addDataListColumns_ColumnsTab(obj.ColumnId, obj.ColumnName, "pk_id", obj.DataType, _name);
  863. obj["AliasName"] = "pk_id";
  864. obj["IsPrimaryKey"] = true;
  865. instance._selectedColumns(obj);
  866. $("#txtAliasName_pk_id").val("pk_id");
  867. }
  868. });
  869. $("#selectedColumns").append(newColumnsHtml);
  870. instance.sortSelectedColums();
  871. instance.loadAllDataListColumns();
  872. instance._chartBuilder.select2DataBinding("");
  873. instance._chartBuilder.loadSearchSelect2();
  874. $(".DatalistColumns_Search").val("").trigger("keyup");
  875. this._pivot.loadPivotSelect2s();
  876. instance.load_data(instance.table);
  877. if (!show)
  878. $('#adj_drawer_1').hide();
  879. }
  880. ;
  881. }
  882. addDataListColumns_ColumnsTab(ColumnId, ColumnName, AliasName, DataType, name) {
  883. let newColumnsHtml = `<div class="dsl-block" id="column_${AliasName}_block">
  884. <span>
  885. <i class="las la-braille dragger"></i>
  886. <span class="dsl-block-name" data-column-id='${ColumnId}' data-report-columnname = '${ColumnName}' data-report-aliasname ='${AliasName}' data-column-datatype='${DataType}'>${ColumnName}</span>
  887. </span>
  888. <span>
  889. <a class="btn btn-xs btn-icon btn-flush-dark btn-rounded flush-soft-hover text-secondary d-none" id="${AliasName}_EyeIcon" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().showOrHideColumn_table('${ColumnId}','${AliasName}')" title="Show Column"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-eye-slash font-20"></i></span></span></a>
  890. </span>
  891. </div>`;
  892. return newColumnsHtml;
  893. }
  894. addDuplicateColumn(columnName) {
  895. var instance = this;
  896. let duplicateCol;
  897. let index = 0;
  898. if (instance.duplicateColIndex.length > 0) {
  899. let col = instance.duplicateColIndex[columnName];
  900. if (col) {
  901. index = col.index + 1;
  902. duplicateCol = columnName + "_" + index;
  903. delete instance.duplicateColIndex[columnName];
  904. instance.duplicateColIndex[columnName] = { ColName: columnName, AliasName: duplicateCol, index: index };
  905. }
  906. else {
  907. duplicateCol = columnName + "_" + index;
  908. instance.duplicateColIndex[columnName] = { ColName: columnName, AliasName: duplicateCol, index: index };
  909. instance.duplicateColIndex.length = instance.duplicateColIndex.length + 1;
  910. }
  911. }
  912. else {
  913. duplicateCol = columnName + "_" + index;
  914. instance.duplicateColIndex[columnName] = { ColName: columnName, AliasName: duplicateCol, index: index };
  915. instance.duplicateColIndex.length = instance.duplicateColIndex.length + 1;
  916. }
  917. return duplicateCol;
  918. }
  919. pivotData() {
  920. var instance = this;
  921. let sel_Col = instance.selectedColumns;
  922. instance.table.options.dataTree = true;
  923. for (var i = 0; i < sel_Col.length; i++) {
  924. if (instance.pivot.ColumnName == sel_Col[i].ColumnName) {
  925. let Col = [];
  926. let row = instance.pivot.PivotRows;
  927. for (var r = 0; r < row.length; r++) {
  928. Col.push({ title: row[r], field: row[r], visible: true, editableTitle: instance.EditableTitle, headerSort: instance.HeaderSort });
  929. }
  930. instance.tabulatorColumns = instance.tabulatorColumns.concat(Col);
  931. }
  932. else {
  933. if (sel_Col[i].Width != undefined) {
  934. instance.tabulatorColumns.push({ title: sel_Col[i].ColumnName, field: sel_Col[i].ColumnName, visible: sel_Col[i].Isvisible, editableTitle: instance.EditableTitle, headerSort: instance.HeaderSort, width: sel_Col[i].Width });
  935. }
  936. else {
  937. if (instance.pivot.AggColumnName != sel_Col[i].ColumnName) {
  938. instance.tabulatorColumns.push({ title: sel_Col[i].ColumnName, field: sel_Col[i].ColumnName, visible: sel_Col[i].Isvisible, editableTitle: instance.EditableTitle, headerSort: instance.HeaderSort });
  939. }
  940. }
  941. }
  942. }
  943. }
  944. findChildren(row, action) {
  945. var instance = this;
  946. if (action == "expand") {
  947. row.treeExpand();
  948. }
  949. else {
  950. row.treeCollapse();
  951. }
  952. ;
  953. var childRows = row.getTreeChildren();
  954. if (childRows.length > 0) {
  955. childRows.forEach(function (child) {
  956. if (child.getTreeChildren().length > 0) {
  957. instance.findChildren(child, action);
  958. }
  959. });
  960. }
  961. }
  962. getDistinctData(colId, colName, AggrFuncId) {
  963. return __awaiter(this, void 0, void 0, function* () {
  964. var instance = this;
  965. var cf_fromDate = btoa(Unibase.Platform.Helpers.NavigationHelper.commonFilter_FromDate);
  966. var cf_toDate = btoa(Unibase.Platform.Helpers.NavigationHelper.commonFilter_ToDate);
  967. yield Unibase.Platform.Analytics.Managers.ReportManager.Instance().getDistinctColumnData(instance.DataListId, colName, AggrFuncId, cf_fromDate, cf_toDate).then(function (response) {
  968. if (response != "") {
  969. instance.distinctColumnData = response;
  970. let PivotRows = [];
  971. instance.pivot.ColumnName = colName;
  972. for (var i = 0; i < instance.distinctColumnData.length; i++) {
  973. PivotRows.push(instance.distinctColumnData[i][colName]);
  974. }
  975. if ($("#PivotRows_Select2").is(":visible")) {
  976. $("#PivotRows_Select2").select2({
  977. placeholder: 'Select Pivot Rows',
  978. data: PivotRows,
  979. });
  980. }
  981. instance.pivot.PivotRows = PivotRows;
  982. }
  983. else {
  984. instance.pivot.PivotRows = [];
  985. }
  986. });
  987. });
  988. }
  989. timeIntervels(pivotCol) {
  990. var instance = this;
  991. var timeInterval = instance.TenureReport[pivotCol].TimeInterval.split(',');
  992. var tenure = [];
  993. for (var t = 0; t < timeInterval.length; t++) {
  994. var start = 0;
  995. if (t != timeInterval.length - 1) {
  996. if (t == 0) {
  997. start = Number(timeInterval[t]);
  998. }
  999. else {
  1000. start = Number(timeInterval[t]) + 1;
  1001. }
  1002. var end = timeInterval[t + 1];
  1003. tenure.push(start + "-" + end);
  1004. }
  1005. else {
  1006. tenure.push(">" + timeInterval[t]);
  1007. }
  1008. }
  1009. return tenure;
  1010. }
  1011. tenureData() {
  1012. var instance = this;
  1013. let sel_Col = instance.selectedColumns;
  1014. instance.tenureTimeIntervalCol = instance.pivot.ColumnName;
  1015. var tenure = instance.timeIntervels(instance.tenureTimeIntervalCol);
  1016. for (var i = 0; i < sel_Col.length; i++) {
  1017. if (instance.pivot.ColumnName == sel_Col[i].ColumnName) {
  1018. let Col = [];
  1019. for (var t = 0; t < tenure.length; t++) {
  1020. if (sel_Col[i].Width) {
  1021. Col.push({ title: tenure[t], field: tenure[t], visible: true, editableTitle: instance.EditableTitle, headerSort: instance.HeaderSort, width: sel_Col[i].Width });
  1022. }
  1023. else {
  1024. Col.push({ title: tenure[t], field: tenure[t], visible: true, editableTitle: instance.EditableTitle, headerSort: instance.HeaderSort });
  1025. }
  1026. }
  1027. instance.tabulatorColumns[sel_Col[i].ColumnIndex + 1] =
  1028. {
  1029. title: sel_Col[i].ColumnName,
  1030. columns: Col,
  1031. };
  1032. }
  1033. else {
  1034. if (instance.pivot.AggColumnName !== sel_Col[i].ColumnName) {
  1035. instance.tabulatorColumns[sel_Col[i].ColumnIndex + 1] =
  1036. { title: sel_Col[i].AliasName, field: sel_Col[i].ColumnName, visible: sel_Col[i].Isvisible, editableTitle: instance.EditableTitle, headerSort: instance.HeaderSort, width: sel_Col[i].Width };
  1037. }
  1038. }
  1039. }
  1040. }
  1041. initTable(containerid) {
  1042. var instance = this;
  1043. var autoNumFormatter = function (cell) {
  1044. var row = cell.getRow();
  1045. var rowIndex = row.getPosition(false);
  1046. return (rowIndex + 1);
  1047. };
  1048. let serviceurl = "apis/v4/unibase/platform/analytics/tabledata";
  1049. serviceurl = _appsettings.server_url() + (serviceurl.startsWith('/') ? serviceurl : ('/' + serviceurl));
  1050. instance.table = new Tabulator("." + containerid + "-table-canvas", {
  1051. columns: [
  1052. { title: "", formatter: autoNumFormatter, frozen: true, minWidth: 40, width: 40 },
  1053. { title: "LastColumn", field: "LastColumn", visible: false, headerSort: false }
  1054. ],
  1055. layout: "fitDataFill",
  1056. dataTree: true,
  1057. movableColumns: false,
  1058. dataTreeStartExpanded: instance._pivot.isDataTreeExpand,
  1059. dataTreeChildIndent: 15,
  1060. dataTreeRowExpanded: function (row, level) {
  1061. return __awaiter(this, void 0, void 0, function* () {
  1062. var array = [];
  1063. var _children = [];
  1064. if (instance.datatreeIndex_Width / 70 <= level) {
  1065. instance.datatreeIndex_Width = instance.datatreeIndex_Width + 70;
  1066. }
  1067. Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().tabulatorColumns[0].width = instance.datatreeIndex_Width;
  1068. Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().tabulatorColumns[0].minWidth = instance.datatreeIndex_Width;
  1069. if (instance.dataTreeRowExpandedColumn.length != 0) {
  1070. instance.table.setColumns(instance.tabulatorColumns);
  1071. instance.EditableTabulatorTitle();
  1072. $(".tabulator-frozen").css("width", instance.datatreeIndex_Width);
  1073. var Columns = instance.table.getColumns();
  1074. for (var c = 0; c < Columns.length; c++) {
  1075. var field = Columns[c].getField();
  1076. var width = Columns[c]["_column"].width;
  1077. $("#" + instance.containerId).find("[tabulator-field = '" + field + "']").css("width", width);
  1078. }
  1079. }
  1080. var parentcolName = instance.pivot.ParentColumnName;
  1081. var parentValue = row.getData()[parentcolName];
  1082. instance.dataTreeRowExpandedColumn = [];
  1083. instance.dataTreeRowExpandedColumn.push({ ColumnName: parentcolName, ColumnValue: parentValue, Level: level });
  1084. instance.pivot.ChildColumnValue = parentValue;
  1085. yield instance.load_data(instance.table);
  1086. setTimeout(function () {
  1087. instance.table.options.dataTree = true;
  1088. var tabledata = JSON.parse(instance.tableData);
  1089. var hasChild = tabledata.filter(x => x.haschild == true).forEach(c => c["_children"] = []);
  1090. row.getData()._children = tabledata;
  1091. return row.update(row.getData());
  1092. }, 1000);
  1093. });
  1094. },
  1095. rowClick: function (e, row) {
  1096. },
  1097. cellClick: function (e, cell) {
  1098. if ($(cell.getElement()).closest('.tabulator-footer').length === 0) {
  1099. var Interval = cell["_cell"].column.definition.title;
  1100. Unibase.Platform.Analytics.Reports.Tenure.Instance().tenureDetailsTable(Interval);
  1101. }
  1102. },
  1103. placeholder: "No data available",
  1104. columnResized: function (column) {
  1105. let col = column["_column"].field;
  1106. let width = column["_column"].width;
  1107. let index = instance.getIndexByAliasName_selectedColumnsArray(col);
  1108. instance.selectedColumns[index].Width = width;
  1109. },
  1110. scrollHorizontal: function () {
  1111. $('#tabulatorReportbuilder .tabulator-header').find('.column-dp-menu.show').removeClass('show');
  1112. },
  1113. dataLoading: function (data) {
  1114. if (data && data.length) {
  1115. instance.navigationHelper.showLoading();
  1116. }
  1117. },
  1118. dataLoaded: function () {
  1119. if (instance.tableData) {
  1120. instance.navigationHelper.hideLoading();
  1121. }
  1122. }
  1123. });
  1124. var height = $(".report-builder-body").height() - 40 + "px";
  1125. instance.table.setHeight(height);
  1126. $("#table-canvan").height(height);
  1127. return instance.table;
  1128. }
  1129. getReportData() {
  1130. var instance = this;
  1131. instance.ReportColumns = [];
  1132. if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Chart) {
  1133. instance._chartBuilder.pushPivotData();
  1134. }
  1135. if (instance.TenureReport.length != 0) {
  1136. instance.TenureReport;
  1137. }
  1138. var fromDate = "";
  1139. var toDate = "";
  1140. var cf_fromDate = Unibase.Platform.Helpers.NavigationHelper.commonFilter_FromDate;
  1141. var cf_toDate = Unibase.Platform.Helpers.NavigationHelper.commonFilter_ToDate;
  1142. if (cf_fromDate != null && cf_toDate != null) {
  1143. fromDate = cf_fromDate.toString();
  1144. toDate = cf_toDate.toString();
  1145. }
  1146. else {
  1147. fromDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().currentDate()), "YYYY/MM/DD");
  1148. toDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().currentDate()), "YYYY/MM/DD");
  1149. }
  1150. let repObj = new ReportObject();
  1151. repObj.DataListId = instance.DataListId;
  1152. repObj.StaticFilter = instance.queryBuilderJson;
  1153. repObj.SortColumns = instance.stringifyed_SortColumns;
  1154. repObj.Filter = null;
  1155. repObj.LinkSubReport = false;
  1156. repObj.PivotTypeId = instance._pivot.pivotTypeId;
  1157. repObj.IsPivotTree = instance.IsPivotTree;
  1158. repObj.TimeInterval = instance.Interval;
  1159. repObj.FromDate = fromDate;
  1160. repObj.ToDate = toDate;
  1161. repObj.IsTreeExpand = instance._pivot.isDataTreeExpand;
  1162. repObj.ReportTypeId = instance.reportType;
  1163. repObj.TopRecords = instance.topRecords;
  1164. if ($("#txt_totalrecords").val() != "") {
  1165. repObj.TopRecords = Number($("#txt_totalrecords").val());
  1166. }
  1167. if (instance.selectedColumns.length > 0) {
  1168. for (var i = 0; i < instance.selectedColumns.length; i++) {
  1169. var index = instance.selectedColumns.findIndex(x => x.ColumnIndex == i);
  1170. let col = new ReportColumn();
  1171. col.ColumnValue = Number(instance.selectedColumns[index]["ColumnId"]);
  1172. col.ReportColumnName = instance.selectedColumns[index]["ColumnName"];
  1173. col.AliasName = instance.selectedColumns[index]["AliasName"];
  1174. col.DisplayText = instance.selectedColumns[index]["DisplayText"];
  1175. col.DlColumnName = instance.selectedColumns[index]["DlColumnName"];
  1176. col.DataListColumnName = instance.selectedColumns[index]["DataListColumnName"];
  1177. col.ColumnIndex = instance.selectedColumns[index]["ColumnIndex"];
  1178. col.DataType = instance.selectedColumns[index]["DataType"];
  1179. col.AggrFuncId = instance.selectedColumns[index]["Aggregation"];
  1180. col.SortType = instance.selectedColumns[index]["SortOrder"];
  1181. col.SortIndex = instance.selectedColumns[index]["SortIndex"];
  1182. col.Isvisible = instance.selectedColumns[index]["Isvisible"];
  1183. col.GroupBy = instance.selectedColumns[index]["GroupBy"];
  1184. col.IsPrimaryKey = instance.selectedColumns[index]["IsPrimaryKey"];
  1185. col.PivotValueSelected = instance.pivot.PivotValue_Selected;
  1186. col.ColumnFormat = instance.selectedColumns[index]["ColumnFormat"];
  1187. col.YearComparisonType = instance.selectedColumns[index]["YearComparisonType"];
  1188. col.DistinctOn = instance.selectedColumns[index]["DistinctOn"];
  1189. col.IsPivotColumn = instance.selectedColumns[index]["IsPivotColumn"];
  1190. col.IsPivotAggrColumn = instance.selectedColumns[index]["IsPivotAggrColumn"];
  1191. col.IsPivotTableCol = instance.selectedColumns[index]["IsPivotTableCol"];
  1192. col.IsDownload = instance.selectedColumns[index]["IsDownload"];
  1193. col.TableAggrTypeId = instance.selectedColumns[index]["TableAggrTypeId"];
  1194. col.IsNumFormatting = instance.selectedColumns[index]["IsNumFormatting"];
  1195. col.IsRowTotal = instance.selectedColumns[index]["IsRowTotal"];
  1196. col.PivotTableAggrTypeId = instance.selectedColumns[index]["PivotTableAggrTypeId"];
  1197. if (col.ColumnFormat && col.ColumnFormat.toLowerCase() == "default") {
  1198. col.ColumnFormat = '';
  1199. }
  1200. instance.reportColumns_Array(col);
  1201. }
  1202. }
  1203. repObj.ReportColumns = instance.ReportColumns;
  1204. return repObj;
  1205. }
  1206. load_data(table) {
  1207. return __awaiter(this, void 0, void 0, function* () {
  1208. var instance = this;
  1209. var repObj = instance.getReportData();
  1210. yield instance.reportManager.getTableData(repObj).then(function (response) {
  1211. instance.navigationHelper.hideLoading();
  1212. if (response.status == Unibase.Data.Status.Success) {
  1213. if (response.result != "") {
  1214. var res = JSON.parse(response.result);
  1215. instance.tableData = res.Data;
  1216. if (instance.dataTreeRowExpandedColumn.length == 0) {
  1217. if (instance.tableData) {
  1218. instance.table.setData(instance.tableData);
  1219. }
  1220. instance.groupbyData();
  1221. if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Chart) {
  1222. if (instance.TenureReport.length == 0) {
  1223. if (res.Data != "") {
  1224. var data = JSON.parse(res.Data);
  1225. instance._chartBuilder.ChartData = data;
  1226. instance._chartBuilder.chart_dataSet();
  1227. }
  1228. }
  1229. }
  1230. }
  1231. else {
  1232. }
  1233. }
  1234. else {
  1235. MessageHelper.Instance().showError("No data found", "div_ReportBuilderErrorMessage");
  1236. return false;
  1237. }
  1238. }
  1239. else {
  1240. MessageHelper.Instance().showError(response.message, "div_ReportBuilderErrorMessage");
  1241. return false;
  1242. }
  1243. });
  1244. instance.loadTableData = 1;
  1245. });
  1246. }
  1247. groupbyData() {
  1248. var instance = this;
  1249. var groupBy_Category = [];
  1250. for (var i = 0; i < instance.selectedColumns.length; i++) {
  1251. var data = instance.selectedColumns[i];
  1252. if (data.GroupByCategory) {
  1253. if (jQuery.inArray(data.AliasName, groupBy_Category) == -1) {
  1254. groupBy_Category.push(data.AliasName);
  1255. }
  1256. }
  1257. }
  1258. if (instance.datatreeIndex_Width == undefined) {
  1259. instance.datatreeIndex_Width = 70;
  1260. }
  1261. var tableData = [];
  1262. if (instance.tableData != "") {
  1263. tableData = JSON.parse(instance.tableData);
  1264. }
  1265. else {
  1266. $(".tabulator-loader").remove();
  1267. }
  1268. let sel_Col = instance.selectedColumns;
  1269. var ScrollPosition = $(".tabulator-tableHolder").scrollTop();
  1270. var autoNumFormatter = function (cell) {
  1271. var row = cell.getRow();
  1272. var rowIndex = row.getPosition(false);
  1273. return (rowIndex + 1);
  1274. };
  1275. instance.tabulatorColumns = [];
  1276. if (sel_Col.length != 0) {
  1277. instance.tabulatorColumns.push({ title: "", formatter: autoNumFormatter, frozen: true, minWidth: 50, width: 60, hozAlign: 'right' });
  1278. let btmCal_noneArray = [];
  1279. let IsAggr = false;
  1280. var tableData;
  1281. if (instance._pivot.pivotTypeId == Unibase.Platform.Analytics.Reports.Enums.PivotType.Pivot) {
  1282. instance.pivotData();
  1283. }
  1284. else if (instance._pivot.pivotTypeId == Unibase.Platform.Analytics.Reports.Enums.PivotType.TimeInterval) {
  1285. instance.tenureData();
  1286. }
  1287. else if (instance._pivot.pivotTypeId == Unibase.Platform.Analytics.Reports.Enums.PivotType.PivotTreeView) {
  1288. instance.pivotData();
  1289. tableData.filter(x => x.haschild == true).forEach(c => c["_children"] = []);
  1290. }
  1291. else {
  1292. if (instance._pivot.pivotTypeId == Unibase.Platform.Analytics.Reports.Enums.PivotType.TreeView) {
  1293. tableData.filter(x => x.haschild == true).forEach(c => c["_children"] = []);
  1294. }
  1295. for (var i = 0; i < sel_Col.length; i++) {
  1296. let sCol = sel_Col[i];
  1297. let Aggr = sCol.TableAggrTypeId;
  1298. let AggrName = instance.getAggregationName(Aggr);
  1299. const colHozAlign = instance.getColHorizontalAlign(sCol);
  1300. if (instance.DataSourceId == 0 || instance.DataSourceId == Platform.DataSources.Enums.DataSource.Sql || instance.DataSourceId == Platform.DataSources.Enums.DataSource.MySql) {
  1301. instance.tabulatorColumns[sCol.ColumnIndex + 1] =
  1302. { title: sCol.DisplayText, field: sCol.AliasName.toLowerCase(), visible: sCol.Isvisible, editableTitle: instance.EditableTitle, headerSort: instance.HeaderSort, bottomCalc: AggrName, bottomCalcParams: { precision: 2 }, hozAlign: colHozAlign };
  1303. }
  1304. else {
  1305. instance.tabulatorColumns[sCol.ColumnIndex + 1] =
  1306. { title: sCol.AliasName, field: sCol.AliasName, visible: sCol.Isvisible, editableTitle: instance.EditableTitle, headerSort: instance.HeaderSort, bottomCalc: AggrName, bottomCalcParams: { precision: 2 }, hozAlign: colHozAlign };
  1307. }
  1308. if (sCol.Width == undefined) {
  1309. delete instance.tabulatorColumns[sCol.ColumnIndex + 1].width;
  1310. }
  1311. if (AggrName != "none") {
  1312. IsAggr = true;
  1313. }
  1314. else {
  1315. delete instance.tabulatorColumns[sCol.ColumnIndex + 1].bottomCalc;
  1316. btmCal_noneArray.push({ ColumnName: sCol.ColumnName });
  1317. }
  1318. }
  1319. }
  1320. instance.tabulatorColumns.push({ title: "LastColumn", field: "LastColumn", visible: false, headerSort: instance.HeaderSort });
  1321. instance.table.options.dataTree = false;
  1322. instance.table.setColumns(instance.tabulatorColumns);
  1323. if (instance.reportid != 0 && !instance.isCharttoTable) {
  1324. instance.getSubReports(instance.reportid);
  1325. }
  1326. if (instance.dataTreeRowExpandedColumn.length == 0) {
  1327. instance.table.options.dataTree = true;
  1328. instance.table.setData(tableData);
  1329. }
  1330. if (groupBy_Category.length == 0) {
  1331. instance.table.options.dataTree = false;
  1332. instance.table.setGroupBy("");
  1333. }
  1334. else {
  1335. instance.table.options.dataTree = false;
  1336. instance.table.setGroupBy(groupBy_Category);
  1337. }
  1338. for (i = 0; i < btmCal_noneArray.length; i++) {
  1339. $(".tabulator-calcs-holder").find("[tabulator-field='" + btmCal_noneArray[i].ColumnName + "']").text("");
  1340. }
  1341. if (IsAggr == false) {
  1342. $("#tabulatorReportbuilder .tabulator-footer").addClass("hidden");
  1343. }
  1344. else {
  1345. if (groupBy_Category.length == 0) {
  1346. $("#tabulatorReportbuilder .tabulator-footer").removeClass("hidden");
  1347. }
  1348. }
  1349. instance.EditableTabulatorTitle();
  1350. }
  1351. else {
  1352. instance.table.clearData();
  1353. }
  1354. $(".tabulator-tableHolder").scrollTop(ScrollPosition);
  1355. }
  1356. getColHorizontalAlign(col) {
  1357. let colHozAlign = '';
  1358. if (col.DataType == Reports.Enums.DataType.decimal || col.DataType == Reports.Enums.DataType.int32 || col.DataType == Reports.Enums.DataType.int64) {
  1359. colHozAlign = 'right';
  1360. }
  1361. else if (col.DataType == Reports.Enums.DataType.date || col.DataType == Reports.Enums.DataType.dateTime) {
  1362. colHozAlign = 'center';
  1363. }
  1364. else {
  1365. colHozAlign = 'left';
  1366. }
  1367. return colHozAlign;
  1368. }
  1369. getTreeViewData(reportresponse) {
  1370. var instance = this;
  1371. if (reportresponse.result.ReportJsonData.Result.Data != "") {
  1372. let parentrecords = [];
  1373. let reportjsondata = JSON.parse(reportresponse.result.ReportJsonData.Result.Data);
  1374. parentrecords = reportjsondata.filter(function (col) {
  1375. return col.parentid == reportresponse.result.ReportInfo.PivotValue;
  1376. });
  1377. if (parentrecords.length == 0) {
  1378. parentrecords = reportjsondata;
  1379. }
  1380. for (var p = 0; p < parentrecords.length; p++) {
  1381. let childrecords = _children(parentrecords[p].childid);
  1382. if (childrecords != undefined) {
  1383. parentrecords[p]["_children"] = [];
  1384. parentrecords[p]._children = childrecords;
  1385. }
  1386. }
  1387. function _children(childid) {
  1388. let childrecords = instance.gettreeChildRecords(reportjsondata, childid);
  1389. if (childrecords.length > 0) {
  1390. for (var c = 0; c < childrecords.length; c++) {
  1391. let subchilds = _children(childrecords[c].childid);
  1392. if (subchilds != undefined) {
  1393. childrecords[c]["_children"] = [];
  1394. childrecords[c]._children = subchilds;
  1395. }
  1396. }
  1397. return childrecords;
  1398. }
  1399. }
  1400. return parentrecords;
  1401. }
  1402. }
  1403. gettreeChildRecords(reportjsondata, childid) {
  1404. return reportjsondata.filter(function (col) {
  1405. return col.parentid == childid;
  1406. });
  1407. }
  1408. getSubReports(reportid) {
  1409. var instance = this;
  1410. instance.reportManager.getSubReports(reportid).then(function (response) {
  1411. if (response.status == Unibase.Data.Status.Success && response.result && response.result.length) {
  1412. var subreportdata = response.result;
  1413. instance.subreportdata = subreportdata;
  1414. if (subreportdata.length > 0) {
  1415. var subdata = subreportdata.find(s => s.RowClick == true);
  1416. if (subdata) {
  1417. var hideIcon = function (cell, formatterParams, onRendered) {
  1418. return "<i class='fa fa-eye'></i>";
  1419. };
  1420. instance.table.addColumn({ formatter: hideIcon, width: 5, title: "", headerSort: false }, true);
  1421. }
  1422. }
  1423. }
  1424. });
  1425. }
  1426. changeAliasName_table(columnId, aliasName) {
  1427. var instance = this;
  1428. let lowercase_ColumnName = aliasName;
  1429. if (instance.DataSourceId == 0 || instance.DataSourceId == Platform.DataSources.Enums.DataSource.Sql || instance.DataSourceId == Platform.DataSources.Enums.DataSource.MySql) {
  1430. lowercase_ColumnName = aliasName.toLowerCase();
  1431. }
  1432. let Index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  1433. let colName = instance.selectedColumns[Index].ColumnName;
  1434. let _aliasText = $("#txtAliasName_" + aliasName).val();
  1435. let changed_aliasText = _aliasText.trim().toLocaleLowerCase();
  1436. let sortHtml = "";
  1437. if (changed_aliasText != "") {
  1438. if (Index > -1) {
  1439. if (changed_aliasText.toLocaleLowerCase() == "pk_id") {
  1440. $("#txtAliasName_" + aliasName).val(colName);
  1441. return MessageHelper.Instance().showError('Can not change pk_id as aliasname', 'div_ReportBuilderErrorMessage');
  1442. }
  1443. if (changed_aliasText.indexOf(' ') >= 0) {
  1444. $("#txtAliasName_" + aliasName).val(colName);
  1445. return MessageHelper.Instance().showError('Please Remove Spaces Form "' + changed_aliasText + '"', 'div_ReportBuilderErrorMessage');
  1446. }
  1447. var sCols = instance.selectedColumns.find(s => s.AliasName == changed_aliasText) ? true : false;
  1448. if (sCols) {
  1449. $("#txtAliasName_" + aliasName).val(colName);
  1450. return instance.error(changed_aliasText);
  1451. }
  1452. $("#selectedColumns").find("#column_" + colName + "_block").attr("id", "column_" + _aliasText + "_block");
  1453. $("#column_" + colName + "_block").find(".dsl-block-name").attr("data-report-aliasname", changed_aliasText);
  1454. $("#" + aliasName + "_EyeIcon").attr("id", changed_aliasText + "_EyeIcon");
  1455. $("#" + changed_aliasText + "_EyeIcon").attr("onclick", "Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().showOrHideColumn_table(" + columnId + ",'" + changed_aliasText + "')");
  1456. $("#txtAliasName_" + aliasName).attr("onchange", "Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().changeAliasName_table(" + columnId + ",'" + changed_aliasText + "')");
  1457. $("#txtAliasName_" + aliasName).attr("id", "txtAliasName_" + changed_aliasText);
  1458. instance.selectedColumns[Index].AliasName = changed_aliasText;
  1459. if (instance.SearchColumns) {
  1460. let searchColumns = instance.SearchColumns.split('|');
  1461. let srchIdx = searchColumns.indexOf(aliasName);
  1462. if (srchIdx != -1) {
  1463. searchColumns[srchIdx] = changed_aliasText;
  1464. instance.SearchColumns = searchColumns.join("|");
  1465. }
  1466. }
  1467. this._chartBuilder.loadSortColumnsSelect2();
  1468. this._chartBuilder.loadDynamicFilterSelect(this.showDynamicFilters);
  1469. this._chartBuilder.loadSearchSelect2();
  1470. let sortIdx = this.SortColumns.findIndex(x => x.DisplayText == aliasName);
  1471. let dyfilIdx = this.dynamicFilters.findIndex(x => x.IsFilterableColumn == aliasName);
  1472. if (sortIdx != -1)
  1473. this.SortColumns[sortIdx].DisplayText = changed_aliasText;
  1474. if (dyfilIdx != -1)
  1475. this.dynamicFilters[dyfilIdx].IsFilterableColumn = changed_aliasText;
  1476. for (var i = 0; i < this.SortColumns.length; i++) {
  1477. let selCol = this.selectedColumns.find(x => x.AliasName == this.SortColumns[i].DisplayText);
  1478. if (selCol)
  1479. sortHtml += this._reportBuilderTemplate.loadSortSelect2Column(selCol.ColumnId, selCol.AliasName, selCol.DataType);
  1480. }
  1481. $("#sort_selected_columns").html(sortHtml);
  1482. this.stringifyed_SortColumns = this.getSortColumnsStringify();
  1483. $("#dynamic-list-group-wrapper").empty();
  1484. for (var i = 0; i < this.dynamicFilters.length; i++) {
  1485. let currentFilter = this.dynamicFilters[i];
  1486. let dyfilterHtml = "";
  1487. let selCol = this.selectedColumns.find(x => x.AliasName == currentFilter.IsFilterableColumn);
  1488. if (selCol)
  1489. dyfilterHtml += this._reportBuilderTemplate.loadDynamicFilterColumn(selCol.ColumnId, selCol.AliasName, selCol.DataType);
  1490. $("#dynamic-list-group-wrapper").append(dyfilterHtml);
  1491. if (selCol && selCol.DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  1492. $(".dynamic-filter-icon-" + parseInt(selCol.ColumnId)).addClass("hidden");
  1493. if (currentFilter.IsDefault)
  1494. $("#dynamicfilter-defaultdate_" + currentFilter.IsFilterableColumn).prop("checked", true);
  1495. else if (currentFilter.IsPartition)
  1496. $("#chk_ispartition_" + currentFilter.IsFilterableColumn).prop("checked", true);
  1497. }
  1498. }
  1499. instance.load_data(instance.table);
  1500. }
  1501. }
  1502. else {
  1503. $("[tabulator-field = '" + lowercase_ColumnName + "']").find(".tabulator-title-editor").val(colName);
  1504. }
  1505. }
  1506. changeDisplayText_table(columnId, aliasName) {
  1507. var instance = this;
  1508. let displayText = '';
  1509. let isPivotTable = false;
  1510. const containerEl = $('#tabulatorReportbuilder');
  1511. if (containerEl.find('.pvtUi').length !== 0) {
  1512. isPivotTable = true;
  1513. }
  1514. if (isPivotTable) {
  1515. displayText = containerEl.find(`#pvtDisplayTextInput_${aliasName}`).val().toString();
  1516. }
  1517. else {
  1518. displayText = $(`[tabulator-field='${aliasName}'] .tabulator-title-editor`).val().toString();
  1519. }
  1520. if (displayText) {
  1521. let sIndex = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  1522. if (sIndex > -1) {
  1523. instance.selectedColumns[sIndex].DisplayText = displayText;
  1524. if (isPivotTable) {
  1525. containerEl.find(`#pvtAxisLabel_${aliasName}`).contents().get(0).nodeValue = displayText;
  1526. }
  1527. else {
  1528. $(".tabulator-col-title").find("#DisplayText_" + aliasName).val(displayText);
  1529. $(".tabulator-col-title").find("#DisplayText_" + aliasName).focus();
  1530. }
  1531. $("#selectedColumns #column_" + aliasName + "_block").find(".dsl-block-name").text(displayText);
  1532. }
  1533. let xIdx = this._chartBuilder.xaxisColumns.findIndex(x => x.AliasName == aliasName);
  1534. if (xIdx > -1) {
  1535. this._chartBuilder.xaxisColumns[xIdx].DisplayText = displayText;
  1536. }
  1537. let yIdx = this._chartBuilder.yaxisColumns.findIndex(x => x.AliasName == aliasName);
  1538. if (yIdx > -1) {
  1539. this._chartBuilder.yaxisColumns[yIdx].DisplayText = displayText;
  1540. }
  1541. let cbcIdx = this._chartBuilder.chartBaseColumns.findIndex(x => x.AliasName == aliasName);
  1542. if (cbcIdx > -1) {
  1543. this._chartBuilder.chartBaseColumns[cbcIdx].DisplayText = displayText;
  1544. }
  1545. let cscIdx = this._chartBuilder.ChartSelectedColumns.findIndex(x => x.AliasName == aliasName);
  1546. if (cscIdx > -1) {
  1547. this._chartBuilder.ChartSelectedColumns[cscIdx].DisplayText = displayText;
  1548. }
  1549. }
  1550. }
  1551. showOrHideColumn_table(ColumnId, AliasName) {
  1552. var instance = this;
  1553. let Index = instance.getIndexByAliasName_selectedColumnsArray(AliasName);
  1554. let col = instance.selectedColumns[Index];
  1555. if (instance.selectedColumns[Index].Isvisible == true) {
  1556. instance.selectedColumns[Index].Isvisible = false;
  1557. var { hiddenColumnHtml } = instance.getSelectedColumnHtml(col, Index, '');
  1558. $("#selectedColumns_hidden").append(hiddenColumnHtml);
  1559. $('#column_' + AliasName + '_block').addClass("d-none").find('#ShowOrHideColumn').text("Show Column");
  1560. if (instance.selectedColumns[Index].DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime)
  1561. instance.selectedColumns[Index].ColumnFormat = "";
  1562. }
  1563. else {
  1564. $('#' + AliasName + '_EyeIcon').addClass('d-none');
  1565. instance.selectedColumns[Index].Isvisible = true;
  1566. $('#column_' + AliasName + '_block').removeClass("d-none").find('#ShowOrHideColumn').text("Hide Column");
  1567. $('#column_' + AliasName + '_block_hidden').remove();
  1568. if (instance.selectedColumns[Index].DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime)
  1569. instance.selectedColumns[Index].ColumnFormat = "Default";
  1570. }
  1571. instance.load_data(instance.table);
  1572. }
  1573. updateSelectedColumnIndex() {
  1574. const instance = this;
  1575. $('#selectedColumns .dsl-block').each(function (index, item) {
  1576. const itemName = $(item).attr('id').slice(7).replace('_block', '');
  1577. const colIndex = instance.selectedColumns.findIndex(x => x.AliasName == itemName);
  1578. if (colIndex > -1) {
  1579. instance.selectedColumns[colIndex].ColumnIndex = index;
  1580. }
  1581. });
  1582. }
  1583. isDistinct(columnId, aliasName) {
  1584. var instance = this;
  1585. let index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  1586. if (index > -1) {
  1587. if ($("#isDistinct_" + columnId).prop("checked") == true) {
  1588. instance.selectedColumns[index].DistinctOn = true;
  1589. }
  1590. else {
  1591. instance.selectedColumns[index].DistinctOn = false;
  1592. }
  1593. }
  1594. }
  1595. changeSortBy_table(columnId, aliasName, sortType) {
  1596. var instance = this;
  1597. if (sortType == 'Asc') {
  1598. instance.table.setSort(aliasName, "asc");
  1599. $("#dsl_column_" + aliasName + " .sort-icon").removeClass('la-sort-down');
  1600. $("#dsl_column_" + aliasName + " .sort-icon").addClass('la-sort-up');
  1601. }
  1602. else {
  1603. instance.table.setSort(aliasName, "desc");
  1604. $("#dsl_column_" + aliasName + " .sort-icon").addClass('la-sort-down');
  1605. $("#dsl_column_" + aliasName + " .sort-icon").removeClass('la-sort-up');
  1606. }
  1607. let index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  1608. instance.selectedColumns[index].SortOrder = sortType;
  1609. let sortcolindex = instance.getIndexByDisplayText_sortColumnsArray(aliasName);
  1610. if (instance.SortColumns.length != 0) {
  1611. instance.SortColumns[sortcolindex].SortOrder = sortType;
  1612. }
  1613. if (instance.stringifyed_SortColumns) {
  1614. let ss = JSON.parse(instance.stringifyed_SortColumns);
  1615. if (ss.length > 0) {
  1616. let sindex = ss.findIndex(s => s.Name == aliasName);
  1617. ss[sindex].Order = sortType;
  1618. }
  1619. instance.stringifyed_SortColumns = JSON.stringify(ss);
  1620. }
  1621. instance.load_data(instance.table);
  1622. if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Chart) {
  1623. var cindex = instance._chartBuilder.getIndexByDisplayText_ChartSelectedColumns(aliasName);
  1624. if (cindex > -1) {
  1625. instance._chartBuilder.ChartSelectedColumns[cindex].SortOrder = sortType;
  1626. instance._chartBuilder.ChartSelectedColumns[cindex].SortIndex = instance.SortColumns.length;
  1627. }
  1628. instance._chartBuilder.chartPreview(instance._chartBuilder.ChartTypeName, instance._chartBuilder.ChartTypeId);
  1629. }
  1630. }
  1631. changeAggregation_table(aliasName, aggrValue, type) {
  1632. var instance = this;
  1633. let Index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  1634. if (type == 1 || instance.reportType == Reports.Enums.ReportType.Chart)
  1635. instance.selectedColumns[Index].Aggregation = aggrValue;
  1636. else
  1637. instance.selectedColumns[Index].TableAggrTypeId = aggrValue;
  1638. if (instance.reportType == Analytics.Reports.Enums.ReportType.Chart) {
  1639. let CIndex = instance.getIndexByAliasName_chartSelectedColumnsArray(aliasName);
  1640. if (CIndex > -1)
  1641. instance._chartBuilder.ChartSelectedColumns[CIndex].Aggregation = aggrValue;
  1642. if (aggrValue == Unibase.Platform.Analytics.Reports.Enums.AggregationType.month || aggrValue == Unibase.Platform.Analytics.Reports.Enums.AggregationType.year) {
  1643. let colName = instance.selectedColumns[CIndex].ColumnName;
  1644. let colId = instance.selectedColumns[CIndex].ColumnValue;
  1645. }
  1646. instance.load_data(instance.table);
  1647. instance._chartBuilder.chartPreview(instance._chartBuilder.ChartTypeName, instance._chartBuilder.ChartTypeId);
  1648. }
  1649. else {
  1650. instance.load_data(instance.table);
  1651. }
  1652. }
  1653. changeColumnFormat_table(DisplayText, ColumnFormat) {
  1654. let format;
  1655. if (ColumnFormat == "Default")
  1656. format = "Default";
  1657. if (ColumnFormat == "No Format")
  1658. format = "No Format";
  1659. else if (ColumnFormat == Unibase.Platform.Analytics.Enums.DateFormat.hhmmss)
  1660. format = "hh:mi:ss";
  1661. else if (ColumnFormat == Unibase.Platform.Analytics.Enums.DateFormat.hhmmssAM)
  1662. format = "hh:mi:ss AM";
  1663. else if (ColumnFormat == Unibase.Platform.Analytics.Enums.DateFormat.ddmmyyyyhhmmss)
  1664. format = "dd/mm/yyyy hh:mi:ss";
  1665. else if (ColumnFormat == Unibase.Platform.Analytics.Enums.DateFormat.ddmmyyyyhhmm)
  1666. format = "dd/mm/yyyy hh:mi";
  1667. else if (ColumnFormat == Unibase.Platform.Analytics.Enums.DateFormat.ddmmyyyyhhmmssAM)
  1668. format = "dd/mm/yyyy hh:mi:ss AM";
  1669. else if (ColumnFormat == Unibase.Platform.Analytics.Enums.DateFormat.momddyyyyhhmmssAM)
  1670. format = "Mon dd, yyyy hh:mi:ss AM";
  1671. else
  1672. format = ColumnFormat;
  1673. var instance = this;
  1674. let Index = instance.getIndexByAliasName_selectedColumnsArray(DisplayText);
  1675. instance.selectedColumns[Index].ColumnFormat = format;
  1676. instance.load_data(instance.table);
  1677. }
  1678. changeColumnIndex_table(DisplayText) {
  1679. var instance = this;
  1680. let Index = instance.getIndexByAliasName_selectedColumnsArray(DisplayText);
  1681. let selCols = instance.selectedColumns;
  1682. let ColIndex = 0;
  1683. for (var i = 0; i < selCols.length; i++) {
  1684. if (selCols[i].ColumnIndex > ColIndex) {
  1685. ColIndex = selCols[i].ColumnIndex;
  1686. }
  1687. }
  1688. if (selCols.length == 1) {
  1689. ColIndex = 0;
  1690. }
  1691. else {
  1692. ColIndex = ColIndex + 1;
  1693. }
  1694. instance.selectedColumns[Index].ColumnIndex = ColIndex;
  1695. }
  1696. IsContactColumn(columnId, aliasName) {
  1697. var instance = this;
  1698. let selected_Index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  1699. let IsContactColumn = instance.selectedColumns[selected_Index].IsContactColumn;
  1700. instance.selectedColumns[selected_Index].IsContactColumn = !IsContactColumn;
  1701. }
  1702. IsFilterableColumn_table(columnId, aliasName, dataTypeId) {
  1703. var instance = this;
  1704. let selected_Index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  1705. if (dataTypeId == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  1706. $("#DropDown_IsFilterable_" + aliasName).removeClass("hidden");
  1707. selected_Index > -1 && (instance.selectedColumns[selected_Index].IsFilterable = true);
  1708. }
  1709. if (selected_Index == -1) {
  1710. Unibase.Platform.Analytics.Reports.DynamicFilter.Instance().dataListColumnName = aliasName;
  1711. selected_Index = this.datalistColumnsResponseData.findIndex(x => { return x.AliasName == aliasName; });
  1712. }
  1713. Unibase.Platform.Analytics.Components.ReportViewer.Instance().navigationHelper.popup(selected_Index, "", Unibase.Platform.Analytics.Reports.DynamicFilter.Instance(), null, Platform.Helpers.Size.Auto);
  1714. }
  1715. loadFormats(DataType, ColId, DisplayText) {
  1716. var instance = this;
  1717. var html = "";
  1718. if (instance._columnFormat.loadFormats(DataType).length > 0) {
  1719. var formats = instance._columnFormat.loadFormats(DataType);
  1720. for (var i = 0; i < formats.length; i++) {
  1721. html += `<a class="dropdown-item Format_` + DisplayText + `_` + formats[i].id + `" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().changeColumnFormat_table('` + DisplayText + `','` + formats[i].format + `')" id="Format_` + DisplayText + `_` + formats[i].id + `" onclick="" href="javascript: ; "><i class="ri-checkbox-blank-circle-line dropdown-icon" id="DropDown_ColumnFormat_` + DisplayText + `_` + formats[i].id + `" id="` + DisplayText.replace(" ", "") + `"></i><span class="text-uppercase">` + formats[i].format + `</span></a>`;
  1722. }
  1723. }
  1724. return html;
  1725. }
  1726. removeSelectedColumn_table(ColumnId, AliasName) {
  1727. var instance = this;
  1728. var isChartBaseColumn = false;
  1729. var cbcIndex = instance._chartBuilder.chartBaseColumns.findIndex(csc => csc.AliasName === AliasName);
  1730. let cscIdx = instance._chartBuilder.ChartSelectedColumns.findIndex(csc => csc.AliasName === AliasName);
  1731. var XIndex = instance._chartBuilder.xaxisColumns.findIndex(x => x.AliasName === AliasName);
  1732. var YIndex = instance._chartBuilder.yaxisColumns.findIndex(x => x.AliasName === AliasName);
  1733. var GIndex = instance._chartBuilder.groupColumns.findIndex(x => x.AliasName === AliasName);
  1734. var LCIndex = instance._chartBuilder.lineChartColumns.findIndex(csc => csc.AliasName === AliasName);
  1735. if (cbcIndex != -1) {
  1736. instance._chartBuilder.chartBaseColumns.splice(cbcIndex, 1);
  1737. isChartBaseColumn = true;
  1738. if (cscIdx != -1 && XIndex == -1 && YIndex == -1 && GIndex == -1 && LCIndex == -1) {
  1739. instance._chartBuilder.ChartSelectedColumns.splice(cscIdx, 1);
  1740. }
  1741. }
  1742. if (XIndex != -1 && !isChartBaseColumn) {
  1743. instance._chartBuilder.xaxisColumns.splice(XIndex, 1);
  1744. if (YIndex == -1 && GIndex == -1 && LCIndex == -1 && cbcIndex == -1 && cscIdx != -1)
  1745. instance._chartBuilder.ChartSelectedColumns.splice(cscIdx, 1);
  1746. }
  1747. if (YIndex != -1 && !isChartBaseColumn) {
  1748. instance._chartBuilder.yaxisColumns.splice(YIndex, 1);
  1749. if (XIndex == -1 && GIndex == -1 && LCIndex == -1 && cbcIndex == -1 && cscIdx != -1)
  1750. instance._chartBuilder.ChartSelectedColumns.splice(cscIdx, 1);
  1751. }
  1752. if (GIndex != -1 && !isChartBaseColumn) {
  1753. instance._chartBuilder.groupColumns.splice(GIndex, 1);
  1754. if (XIndex == -1 && YIndex == -1 && LCIndex == -1 && cbcIndex == -1 && cscIdx != -1)
  1755. instance._chartBuilder.ChartSelectedColumns.splice(cscIdx, 1);
  1756. }
  1757. if (LCIndex != -1 && !isChartBaseColumn) {
  1758. instance._chartBuilder.lineChartColumns.splice(LCIndex, 1);
  1759. if (XIndex == -1 && YIndex == -1 && GIndex == -1 && cbcIndex == -1 && cscIdx != -1)
  1760. instance._chartBuilder.ChartSelectedColumns.splice(cscIdx, 1);
  1761. }
  1762. if (LCIndex == -1 && GIndex == -1 && YIndex == -1 && XIndex == -1 && cbcIndex == -1 && cscIdx != -1) {
  1763. instance._chartBuilder.ChartSelectedColumns.splice(cscIdx, 1);
  1764. }
  1765. var SC_Index = instance.getIndexByAliasName_selectedColumnsArray(AliasName);
  1766. let isGroupByCategory = this.selectedColumns[SC_Index].GroupByCategory;
  1767. if (SC_Index != -1) {
  1768. let dyfil = this.dynamicFilters.find(x => x.IsFilterableColumn == AliasName);
  1769. let srtCol = this.SortColumns.find(x => x.DisplayText === AliasName);
  1770. if (dyfil)
  1771. return MessageHelper.Instance().showError("Please remove the dynamic filter associated with this column, before trying to remove the column", 'div_ReportBuilderErrorMessage');
  1772. if (instance.SearchColumns) {
  1773. let srchCol = instance.SearchColumns.split("|");
  1774. let srchIdx = srchCol.indexOf(AliasName);
  1775. if (srchIdx != -1)
  1776. return MessageHelper.Instance().showError(`${this.selectedColumns[SC_Index].AliasName} is used in search column, please remove from search columns and try again`, 'div_ReportBuilderErrorMessage');
  1777. }
  1778. if (srtCol && !isGroupByCategory && instance.reportType != Reports.Enums.ReportType.Chart)
  1779. return MessageHelper.Instance().showError(`${this.selectedColumns[SC_Index].AliasName} is used in sort column, please remove from sort column and try again`, 'div_ReportBuilderErrorMessage');
  1780. else if (instance.reportType == Reports.Enums.ReportType.Chart && srtCol)
  1781. return;
  1782. if (isGroupByCategory && event.target.closest("#categories_selected_columns")) {
  1783. this.selectedColumns[SC_Index].GroupByCategory = false;
  1784. $("#categories_selected_columns #dsl_column_" + AliasName).remove();
  1785. $("#sort_selected_columns #dsl_column_" + AliasName).remove();
  1786. this.removeAndUpdateStringfiedSortColumns(AliasName);
  1787. instance.load_data(instance.table);
  1788. return "";
  1789. }
  1790. }
  1791. if (!isChartBaseColumn) {
  1792. instance.selectedColumns.splice(SC_Index, 1);
  1793. instance.table.deleteColumn(AliasName);
  1794. instance.loadSelectedDataListColumns();
  1795. }
  1796. var GTableIndex = instance.groupBy_Category.findIndex(x => x.AliasName === AliasName);
  1797. if (GTableIndex != -1) {
  1798. instance.groupBy_Category.splice(GTableIndex, 1);
  1799. instance.setSelectOption('groupby_select');
  1800. instance.groupbyData();
  1801. }
  1802. instance.removeAndUpdateStringfiedSortColumns(AliasName);
  1803. instance._chartBuilder.enableOrDisableChartIcons();
  1804. var sindex = instance.SortColumns.findIndex(function (s) {
  1805. return AliasName == s.AliasName;
  1806. });
  1807. if (sindex > -1) {
  1808. instance.removeSelectedSortColumn_table(ColumnId, AliasName);
  1809. }
  1810. else {
  1811. instance.load_data(instance.table);
  1812. }
  1813. this._chartBuilder.loadSortColumnsSelect2();
  1814. this._chartBuilder.loadDynamicFilterSelect(instance.showDynamicFilters);
  1815. this._chartBuilder.loadSearchSelect2();
  1816. this._pivot.loadPivotSelect2s();
  1817. }
  1818. removeSelectedSortColumn_table(columnId, aliasName) {
  1819. var instance = this;
  1820. let sortIndex = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  1821. instance.selectedColumns[sortIndex].SortOrder = "none";
  1822. var index = instance.SortColumns.findIndex(function (s) {
  1823. return aliasName == s.DisplayText;
  1824. });
  1825. instance.SortColumns.splice(index, 1);
  1826. instance.stringifyed_SortColumns = "";
  1827. if (instance.SortColumns.length != 0) {
  1828. var _sort = [];
  1829. for (var i = 0; i < instance.SortColumns.length; i++) {
  1830. instance.SortColumns[i].SortIndex = i;
  1831. let s = instance.SortColumns[i];
  1832. _sort.push({ Name: s.DisplayText, Order: s.SortOrder });
  1833. }
  1834. instance.stringifyed_SortColumns = JSON.stringify(_sort);
  1835. }
  1836. instance.load_data(instance.table);
  1837. }
  1838. setSelectOption(selectId) {
  1839. $('#' + selectId).prop('selectedIndex', 0);
  1840. $('#' + selectId).select2({
  1841. allowClear: true
  1842. });
  1843. $('#select2-' + selectId + '-container .select2-selection__clear').hide();
  1844. }
  1845. loadInstalledApps() {
  1846. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/apps/InstalledAppAutocomplete';
  1847. AutoCompleteHelper.getHelper().Create("#InstalledApp_AutoComplete", "#hfAutoComplete_InstalledApp", url, null);
  1848. AutoCompleteHelper.getHelper().Create("#dependecyapps", "#hfAutoCompleteId_dependency", url, null);
  1849. }
  1850. loadConnectedApps() {
  1851. Unibase.Platform.Apps.Managers.AppManager.Instance().getInstalledApps().then((res) => {
  1852. this.connectedAppsData = [];
  1853. for (var i = 0; i < res.result.length; i++) {
  1854. this.connectedAppsData.push({ id: res.result[i].InstalledAppId, text: res.result[i].AppTitle });
  1855. }
  1856. $("#connectedapps").select2({
  1857. placeholder: 'Select connected apps',
  1858. data: this.connectedAppsData,
  1859. });
  1860. });
  1861. }
  1862. loadAddedColumnFilter() {
  1863. let dataOptions = [
  1864. { id: 1, text: "All added columns", selected: true },
  1865. { id: 2, text: "Contact columns" },
  1866. { id: 3, text: "PrimaryKey columns" }
  1867. ];
  1868. $("#filter-by").select2({
  1869. placeholder: 'Filter By',
  1870. data: dataOptions
  1871. });
  1872. }
  1873. loadTableToggleButtons() {
  1874. var instance = this;
  1875. $("#PivotIcon").click(function () {
  1876. var DataListId = instance.DataListId;
  1877. $("#DatalistColumns_Search").val("");
  1878. instance._pivot.load(0, null, null);
  1879. });
  1880. }
  1881. reportRoleSetting() {
  1882. var instance = this;
  1883. instance.navigationHelper.popup(0, '', Unibase.Platform.Analytics.Reports.ReportRoleSettings.Instance(), null, Platform.Helpers.Size.Medium);
  1884. }
  1885. EditableTabulatorTitle() {
  1886. var instance = this;
  1887. if (instance.EditableTitle == true) {
  1888. let sel_Col = instance.selectedColumns;
  1889. var len = sel_Col.length;
  1890. for (var i = 0; i < len; i++) {
  1891. let colId = sel_Col[i].ColumnId;
  1892. let aliasName = sel_Col[i].AliasName.replace(" ", "");
  1893. let colName = sel_Col[i].ColumnName;
  1894. let DataType = sel_Col[i].DataType;
  1895. let html = "";
  1896. if (DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime || Unibase.Platform.Analytics.Reports.Enums.DataType.decimal) {
  1897. html = `<div class="dropdown column-dropdown"><span class="dropdown-toggle no-caret pl-1 column-dpmenu-icon" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().tabulatorColumnMoreIcon_Click(` + colId + `,'` + aliasName + `',` + DataType + `,event)"><span class="tabulator-header-menu-button">&#8942;</span></span>
  1898. <ul class="dropdown-menu column-dp-menu dropdown-radio dropdown-menu_` + colId + ` open-left-side">
  1899. <li><h6 class="dropdown-header" href="javascript:;" >` + colName + `</h6></li><div class="dropdown-divider"></div>
  1900. <li class="dropdown-item"><input type="textbox" id="txtAliasName_` + aliasName + `" value="` + aliasName + `" onchange="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().changeAliasName_table(` + colId + `,'` + aliasName + `')" placeholder="displaytext"/></li>
  1901. <li id="dropdown_Aggregation_` + aliasName + `">
  1902. <div class="sub-dropdown-menu show-on-hover">
  1903. <a class="dropdown-item" href="javascript:;" onclick=""><span id="AggregateOperation"> Aggregation </span></a>
  1904. <div class="dropdown-menu dropdown-radio open-left-side"></div></div></li>
  1905. <li id="dropdown_Table_Aggregation_` + aliasName + `">
  1906. <div class="sub-dropdown-menu show-on-hover">
  1907. <a class="dropdown-item" href="javascript:;" onclick=""><span id="TableAggregateOperation"> Table Aggregation </span></a>
  1908. <div class="dropdown-menu dropdown-radio open-left-side"></div></div></li>
  1909. <li><a class="dropdown-item pr-0 hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().IsPrimaryKey(` + colId + `,'` + aliasName + `')"><span id="IsPrimaryKeyColumn hidden">IsPrimaryKey<i class="dropdown-icon fa fa-check pull-right hidden text-primary" id="DropDown_IsPrimaryKey_` + aliasName + `"></i></span> </a></li>
  1910. <li><a class="dropdown-item pr-0 hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().IsContactColumn(` + colId + `,'` + aliasName + `')"><span id="IsContactColumn" class="flex-center">IsContactColumn<i class="dropdown-icon fa fa-check pull-right hidden text-primary" id="DropDown_IsContactColumn_` + aliasName + `"></i></span></a></li>
  1911. <li id="ColumnFormat_` + aliasName + `"><div class="sub-dropdown-menu show-on-hover"><a class="dropdown-item" href="javascript:;" onclick=""><span id="ColumnFormat">Date Format </span></a><div class="dropdown-menu dropdown-radio open-left-side biz-custom-scrollbar h-350p " style=""></div></div></li><div class="dropdown-divider"></div><li><a class="dropdown-item" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.SubReport.Instance().linkreport('` + aliasName + `')">Link Report</a></li><div class="dropdown-divider"></div>
  1912. <li><a class="dropdown-item" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().showOrHideColumn_table(` + colId + `,'` + aliasName + `')"><span id="ShowOrHideColumn">Hide Column</span> </a></li>
  1913. <li><a class="dropdown-item flex-between-center" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isDistinct(` + colId + `,'` + aliasName + `')"><label class="distinct-label" for="isDistinct_${colId}">IsDistinct</label><input type="checkbox" class="pull-right" id="isDistinct_` + colId + `"></a></li>
  1914. <li><a class="dropdown-item flex-between-center" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isDownload(` + colId + `,'` + aliasName + `')"><label class="distinct-label" for="isDownload_${colId}">IsDownload</label><input type="checkbox" class="pull-right" id="isDownload_` + colId + `"></a></li>
  1915. <li><a class="dropdown-item flex-between-center isnumformatting hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isNumFormatting(` + colId + `,'` + aliasName + `')"><label class="distinct-label" for="isNumFormatting_${colId}">Number Formatting</label><input type="checkbox" class="pull-right" id="isNumFormatting_` + colId + `"></a></li>
  1916. <li><a class="dropdown-item flex-between-center isrowtotal hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isRowTotal(` + colId + `,'` + aliasName + `')"><label class="rowtotal-label" for="isRowTotal_${colId}">IsRowTotal</label><input type="checkbox" class="pull-right" id="isRowTotal_` + colId + `"></a></li>
  1917. <li><a class="dropdown-item flex-between-center isimageurl hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isImageUrl(` + colId + `,'` + aliasName + `')"><label class="rowtotal-label" for="isimageurl_${colId}">Is Image Url</label><input type="checkbox" class="pull-right" id="isimageurl_` + colId + `"></a></li>
  1918. <li><a class="dropdown-item link-danger" href="javascript:;" onclick=""><span id="RemoveSelectedColumn" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().removeSelectedColumn_table(` + colId + `,'` + aliasName + `')"> Remove Column </span></a></li></ul></div>`;
  1919. }
  1920. else {
  1921. html = `<div class="dropdown column-dropdown"><span class="dropdown-toggle no-caret pl-1 column-dpmenu-icon" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().tabulatorColumnMoreIcon_Click(` + colId + `,'` + aliasName + `',` + DataType + `,event)"><span class="tabulator-header-menu-button">&#8942;</span></span>
  1922. <ul class="dropdown-menu column-dp-menu dropdown-radio dropdown-menu-right dropdown-menu_` + colId + ` open-left-side"><li><h6 class="dropdown-header">` + colName + `</h6></li><div class="dropdown-divider"></div>
  1923. <li><input type="textbox" id="txtAliasName_` + aliasName + `" value="` + aliasName + `" onchange="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().changeAliasName_table(` + colId + `,'` + aliasName + `')" placeholder="displaytext"/></li>
  1924. <li id="dropdown_Aggregation_` + aliasName + `"><div class="sub-dropdown-menu show-on-hover"><a class="dropdown-item" href="javascript:;" onclick=""><span id="AggregateOperation"> Aggregation </span></a><div class="dropdown-menu dropdown-radio open-left-side"></div></div></li>
  1925. <li id="dropdown_Table_Aggregation_` + aliasName + `">
  1926. <div class="sub-dropdown-menu show-on-hover">
  1927. <a class="dropdown-item" href="javascript:;" onclick=""><span id="TableAggregateOperation"> Table Aggregation </span></a>
  1928. <div class="dropdown-menu dropdown-radio open-left-side"></div></div></li>
  1929. <li><a class="dropdown-item pr-0 hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().IsFilterableColumn_table(` + colId + `,'` + aliasName + `',` + DataType + `)"><span id="IsFilterableColumn">IsFilterable<i class="dropdown-icon fa fa-check pull-right hidden text-primary" id="DropDown_IsFilterable_` + aliasName + `"></i></span> </a></li>
  1930. <li><a class="dropdown-item pr-0" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().IsPrimaryKey(` + colId + `,'` + aliasName + `')"><span id="IsPrimaryKeyColumn">IsPrimaryKey<i class="dropdown-icon fa fa-check pull-right hidden text-primary" id="DropDown_IsPrimaryKey_` + aliasName + `"></i></span> </a></li>
  1931. <li><a class="dropdown-item pr-0 hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().IsContactColumn(` + colId + `,'` + aliasName + `')"><span id="IsContactColumn">IsContactColumn<i class="dropdown-icon fa fa-check pull-right text-primary" id="DropDown_IsContactColumn_` + aliasName + `"></i></span></a></li>
  1932. <div class="dropdown-divider"></div><li><a class="dropdown-item" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.SubReport.Instance().linkreport('` + aliasName + `')">Link Report</a></li><div class="dropdown-divider"></div>
  1933. <li><a class="dropdown-item" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().showOrHideColumn_table(` + colId + `,'` + aliasName + `')"><span id="ShowOrHideColumn">Hide Column</span> </a></li>
  1934. <li><a class="dropdown-item flex-between-center" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isDistinct(` + colId + `,'` + aliasName + `')"><label class="distinct-label" for="isDistinct_${colId}">IsDistinct</label><input type="checkbox" class="pull-right" id="isDistinct_` + colId + `"></a></li>
  1935. <li><a class="dropdown-item flex-between-center" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isDownload(` + colId + `,'` + aliasName + `')"><label class="distinct-label" for="isDownload_${colId}">IsDownload</label><input type="checkbox" class="pull-right" id="isDownload_` + colId + `"></a></li>
  1936. <li><a class="dropdown-item flex-between-center isnumformatting hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isNumFormatting(` + colId + `,'` + aliasName + `')"><label class="distinct-label" for="isNumFormatting_${colId}">Number Formatting</label><input type="checkbox" class="pull-right" id="isNumFormatting_` + colId + `"></a></li>
  1937. <li><a class="dropdown-item flex-between-center isrowtotal hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isRowTotal(` + colId + `,'` + aliasName + `')"><label class="rowtotal-label" for="isRowTotal_${colId}">IsRowTotal</label><input type="checkbox" class="pull-right" id="isRowTotal_` + colId + `"></a></li>
  1938. <li><a class="dropdown-item flex-between-center isimageurl hidden" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().isImageUrl(` + colId + `,'` + aliasName + `')"><label class="rowtotal-label" for="isimageurl_${colId}">Is Image Url</label><input type="checkbox" class="pull-right" id="isimageurl_` + colId + `"></a></li>
  1939. <li><a class="dropdown-item link-danger" href="javascript:;" onclick=""><span id="RemoveSelectedColumn" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().removeSelectedColumn_table(` + colId + `,'` + aliasName + `')"> Remove Column </span></a></li></ul></div>`;
  1940. }
  1941. if ($('#tabulatorReportbuilder .pvtUi').length !== 0) {
  1942. const pivotTableEl = $('#tabulatorReportbuilder .pvtUi');
  1943. const columnEl = pivotTableEl.find(`.pvtAttr:contains(${aliasName.toLocaleLowerCase()})`);
  1944. columnEl.find('.column-dropdown').remove();
  1945. columnEl.append(html);
  1946. columnEl.find('.dropdown-menu.open-left-side').removeClass('open-left-side').addClass('open-right-side');
  1947. if (sel_Col[i].Isvisible == false) {
  1948. columnEl.find("#ShowOrHideColumn").text("Show Column");
  1949. columnEl.find("#DropDown_Eye_EyeSlash").removeClass("fa-eye-slash").addClass("fa-eye");
  1950. }
  1951. }
  1952. else {
  1953. const tabulatorEl = $('#tabulatorReportbuilder');
  1954. tabulatorEl.find("[tabulator-field='" + aliasName.toLocaleLowerCase() + "']").find(".tabulator-col-title").prepend(html);
  1955. tabulatorEl.find("[tabulator-field='" + aliasName.toLocaleLowerCase() + "']").find(".tabulator-col-title").html(html).append(`<input class="tabulator-title-editor ml-0 w-95" value="` + sel_Col[i].DisplayText + `" id="DisplayText_` + sel_Col[i].DisplayText + `" onchange="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().changeDisplayText_table(` + colId + `,'` + aliasName + `','` + sel_Col[i].DisplayText + `')">`);
  1956. if (sel_Col[i].Isvisible == false) {
  1957. tabulatorEl.find("[tabulator-field='" + aliasName + "']").find("#ShowOrHideColumn").text("Show Column");
  1958. tabulatorEl.find("[tabulator-field='" + aliasName + "']").find("#DropDown_Eye_EyeSlash").removeClass("fa-eye-slash").addClass("fa-eye");
  1959. }
  1960. }
  1961. }
  1962. }
  1963. }
  1964. traverseRows(tbl, action) {
  1965. var instance = this;
  1966. var tblRows = tbl.getRows();
  1967. tblRows.forEach(function (row) {
  1968. if (row.getData()._children != undefined) {
  1969. instance.findChildren(row, action);
  1970. }
  1971. });
  1972. }
  1973. bindAggregations(aggregations, aggrval, aliasName, type, id) {
  1974. let html = "";
  1975. if (aggregations) {
  1976. for (var i = 0; i < aggregations.length; i++) {
  1977. let Aggregation = aggregations[i];
  1978. if (i == 0) {
  1979. aggrval = Aggregation.Value;
  1980. }
  1981. html += `<a class="dropdown-item Aggregation_` + aliasName + `" id="` + id + `_Aggr_` + aliasName + `_` + Aggregation.Value + `" onclick="javascript: Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().changeAggregation_table('` + aliasName + `', ` + Aggregation.Value + `,` + type + `); " href="javascript: "><span class="tabulator-header-menu-button"></span><i class="ri-checkbox-blank-circle-line dropdown-icon" id="DropDown_` + Aggregation.Value + `_` + aliasName + `"></i><span class="text-uppercase">` + Aggregation.AggrType + `</span></a>`;
  1982. }
  1983. $('#' + id).find(".dropdown-menu").html(html);
  1984. $("#dsl_column_" + aliasName).find('#' + id).find(".dropdown-menu").html(html);
  1985. }
  1986. return aggrval;
  1987. }
  1988. tabulatorColumnMoreIcon_Click(elementId, aliasName, dataTypeId, event) {
  1989. if (event) {
  1990. event.stopPropagation();
  1991. }
  1992. var instance = this;
  1993. let html = "";
  1994. var Aggr, tableaggr = 0;
  1995. var Sortby = "none";
  1996. var ColumnFormat = "";
  1997. let isDistinct = false;
  1998. let displayText = "";
  1999. let isDownload = false;
  2000. var aggregations = instance.getAggregationsByDataType(dataTypeId);
  2001. Aggr = instance.bindAggregations(aggregations, Aggr, aliasName, 1, "dropdown_Aggregation_" + aliasName);
  2002. tableaggr = instance.bindAggregations(aggregations, Aggr, aliasName, 2, "dropdown_Table_Aggregation_" + aliasName);
  2003. if (dataTypeId == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  2004. var formathtml = "";
  2005. formathtml = instance.loadFormats(dataTypeId, elementId, aliasName);
  2006. $('#ColumnFormat_' + aliasName).find(".dropdown-menu").html(formathtml);
  2007. $("#dsl_column_" + aliasName).find('#ColumnFormat_' + aliasName).find(".dropdown-menu").html(formathtml);
  2008. }
  2009. else {
  2010. $('#ColumnFormat_' + aliasName).remove();
  2011. $("#dsl_column_" + aliasName).find('#ColumnFormat_' + aliasName).remove();
  2012. }
  2013. let Index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  2014. let column = instance.selectedColumns[Index];
  2015. Aggr = column.Aggregation;
  2016. Sortby = column.SortOrder;
  2017. aliasName = column.AliasName;
  2018. ColumnFormat = column.ColumnFormat == "" ? "Default" : column.ColumnFormat;
  2019. isDistinct = column.DistinctOn;
  2020. isDownload = column.IsDownload;
  2021. displayText = column.DisplayText;
  2022. if (column.DataType == Reports.Enums.DataType.int32 || column.DataType == Reports.Enums.DataType.int64 || column.DataType == Reports.Enums.DataType.decimal) {
  2023. $(event.currentTarget).closest(".dropdown.column-dropdown").find(".isrowtotal").removeClass("hidden");
  2024. $(event.currentTarget).closest(".dropdown.column-dropdown").find(".isnumformatting").removeClass("hidden");
  2025. }
  2026. else if (column.DataType == Reports.Enums.DataType.string) {
  2027. $(event.currentTarget).closest(".dropdown.column-dropdown").find(".isimageurl").removeClass("hidden");
  2028. }
  2029. if (isDistinct)
  2030. $("#isDistinct_" + elementId).prop("checked", true);
  2031. else
  2032. $("#isDistinct_" + elementId).prop("checked", false);
  2033. if (isDownload)
  2034. $("#isDownload_" + elementId).prop("checked", true);
  2035. else
  2036. $("#isDownload_" + elementId).prop("checked", false);
  2037. if (column.IsNumFormatting)
  2038. $("#isNumFormatting_" + elementId).prop("checked", true);
  2039. else
  2040. $("#isNumFormatting_" + elementId).prop("checked", false);
  2041. if (column.IsImageUrl)
  2042. $("#isimageurl_" + elementId).prop("checked", true);
  2043. else
  2044. $("#isimageurl_" + elementId).prop("checked", false);
  2045. let grpby = $("#groupby_select").val();
  2046. if (jQuery.inArray(elementId.toString(), grpby) != -1) {
  2047. $('#dropdown_Aggregation_' + aliasName).find(".sub-dropdown-menu").removeClass("show-on-hover");
  2048. $('#dropdown_Aggregation_' + aliasName).find(".sub-dropdown-menu").find(".dropdown-item").css("cursor", "not-allowed");
  2049. }
  2050. else {
  2051. $('#dropdown_Aggregation_' + aliasName).find(".sub-dropdown-menu").addClass("show-on-hover");
  2052. $('#dropdown_Aggregation_' + aliasName).find(".sub-dropdown-menu").find(".dropdown-item").css("cursor", "pointer");
  2053. }
  2054. let IsFilterable = column.IsFilterable;
  2055. if (IsFilterable == true)
  2056. $("#DropDown_IsFilterable_" + aliasName).removeClass('hidden');
  2057. else
  2058. $("#DropDown_IsFilterable_" + aliasName).addClass('hidden');
  2059. let IsPrimaryKey = column.IsPrimaryKey;
  2060. if (IsPrimaryKey == true)
  2061. $("#DropDown_IsPrimaryKey_" + aliasName).removeClass('hidden');
  2062. else
  2063. $("#DropDown_IsPrimaryKey_" + aliasName).addClass('hidden');
  2064. let IsContactColumn = column.IsContactColumn;
  2065. if (IsContactColumn == true)
  2066. $("#DropDown_IsContactColumn_" + aliasName).removeClass('hidden');
  2067. else
  2068. $("#DropDown_IsContactColumn_" + aliasName).addClass('hidden');
  2069. let IsAggregation = column.Aggregation;
  2070. if (IsAggregation == Unibase.Platform.Analytics.Reports.Enums.AggregationType.none)
  2071. $("#dropdown_Aggregation_" + aliasName + "_Aggr_" + aliasName + "_" + IsAggregation).addClass("selected");
  2072. else
  2073. $("#dropdown_Aggregation_" + aliasName + "_Aggr_" + aliasName + "_" + IsAggregation).addClass("selected");
  2074. let tableAggrTypeId = column.TableAggrTypeId;
  2075. if (tableAggrTypeId == Unibase.Platform.Analytics.Reports.Enums.AggregationType.none)
  2076. $("#dropdown_Table_Aggregation_" + aliasName + "_Aggr_" + aliasName + "_" + tableAggrTypeId).addClass("selected");
  2077. else
  2078. $("#dropdown_Table_Aggregation_" + aliasName + "_Aggr_" + aliasName + "_" + tableAggrTypeId).addClass("selected");
  2079. let IsSortBy = column.SortOrder;
  2080. if (IsSortBy == "Asc") {
  2081. $("#SortOrder_" + elementId + "_Asc").addClass('selected');
  2082. $("#SortOrder_" + elementId + "_Desc").removeClass('selected');
  2083. }
  2084. else if (IsSortBy == "Desc") {
  2085. $("#SortOrder_" + elementId + "_Desc").addClass('selected');
  2086. $("#SortOrder_" + elementId + "_Asc").removeClass('selected');
  2087. }
  2088. else {
  2089. $("#SortOrder_" + elementId + "_Asc").addClass('selected');
  2090. }
  2091. let format = instance._columnFormat.loadFormats(dataTypeId).find(x => x.format == ColumnFormat);
  2092. if (format != undefined) {
  2093. $("#" + instance.containerId).find(".Format_" + aliasName + "_" + format.id).addClass("selected");
  2094. }
  2095. if ($('#tabulatorReportbuilder .pvtUi').length !== 0) {
  2096. $(`.column-dp-menu.show`).not(`.dropdown-menu_${elementId}`).removeClass('show');
  2097. $(`.column-dp-menu.dropdown-menu_${elementId}`).toggleClass('show');
  2098. return;
  2099. }
  2100. for (var i = 0; i == Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().table.columnManager.columns.length; i++) {
  2101. if (Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().table.columnManager.columns[i].definition.visible == true) {
  2102. $(".dropdown-menu_" + i).find(".dropdown-menu").removeClass("open-left-side");
  2103. $(".dropdown-menu_" + i).find(".dropdown-menu").addClass("open-right-side");
  2104. break;
  2105. }
  2106. }
  2107. $($(".table-wrap .tabulator-col:visible")[1]).find('ul.dropdown-menu .dropdown-menu').removeClass('open-left-side').addClass('open-right-side');
  2108. $($(".table-wrap .tabulator-col:visible")[2]).find('ul.dropdown-menu .dropdown-menu').removeClass('open-left-side').addClass('open-right-side');
  2109. if (event) {
  2110. instance.setColumnDpMenuPosition(event);
  2111. }
  2112. }
  2113. setColumnDpMenuPosition(event) {
  2114. event.stopPropagation();
  2115. const targetEl = $(event.currentTarget);
  2116. if (targetEl.siblings('.column-dp-menu').hasClass('show')) {
  2117. targetEl.siblings('.column-dp-menu').removeClass('show');
  2118. }
  2119. else {
  2120. $('#tabulatorReportbuilder .tabulator-header').find('.column-dp-menu.show').removeClass('show');
  2121. const elLeftPos = targetEl.offset().left - $('#tabulatorReportbuilder').offset().left;
  2122. const headerHeight = $('#tabulatorReportbuilder .tabulator-header').outerHeight(true);
  2123. targetEl.siblings('.column-dp-menu').css({ position: 'fixed', top: headerHeight, left: elLeftPos }).addClass('show').attr('onclick', 'event.stopPropagation();');
  2124. }
  2125. }
  2126. loadLeftNav() {
  2127. var instance = this;
  2128. let html = instance._reportBuilderTemplate.loadLeftNav();
  2129. $("#DefaultLeftNav_body").html(html);
  2130. }
  2131. loadSorting(elementId, displayText) {
  2132. var instance = this;
  2133. let Index = instance.getIndexByDisplayText_sortColumnsArray(displayText);
  2134. let IsSortBy = instance.SortColumns[Index].SortOrder;
  2135. if (IsSortBy == "Asc") {
  2136. $("#SortOrder_" + elementId + "_Asc").addClass('selected');
  2137. $("#SortOrder_" + elementId + "_Desc").removeClass('selected');
  2138. }
  2139. else if (IsSortBy == "Desc") {
  2140. $("#SortOrder_" + elementId + "_Desc").addClass('selected');
  2141. $("#SortOrder_" + elementId + "_Asc").removeClass('selected');
  2142. }
  2143. else {
  2144. $("#SortOrder_" + elementId + "_Asc").addClass('selected');
  2145. }
  2146. for (var i = 0; i < Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().table.columnManager.columns.length; i++) {
  2147. if (Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().table.columnManager.columns[i].definition.visible == true) {
  2148. $(".dropdown-menu_" + i).find(".dropdown-menu").removeClass("open-left-side");
  2149. $(".dropdown-menu_" + i).find(".dropdown-menu").addClass("open-right-side");
  2150. break;
  2151. }
  2152. }
  2153. }
  2154. clickedTableCaret(ElementId, DisplayText, DataType) {
  2155. var instance = this;
  2156. let html = "";
  2157. var Aggr = 0;
  2158. var Sortby = "none";
  2159. var ColumnFormat = "";
  2160. var Aggregation = instance.getAggregationsByDataType(DataType);
  2161. if (Aggregation) {
  2162. for (var i = 0; i < Aggregation.length; i++) {
  2163. if (i == 0) {
  2164. Aggr = Aggregation[i].Value;
  2165. }
  2166. html += `<a class="dropdown-item Aggregation_` + DisplayText + `" id="Aggr_` + DisplayText + `_` + Aggregation[i].Value + `" onclick="javascript: Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().changeAggregation_table('` + DisplayText + `', ` + Aggregation[i].Value + `); " href="javascript: "><span class="tabulator-header-menu-button"></span><i class="ri-checkbox-blank-circle-line dropdown-icon" id="DropDown_` + Aggregation[i].Value + `_` + DisplayText + `"></i><span class="text-uppercase">` + Aggregation[i].AggrType + `</span></a>`;
  2167. }
  2168. }
  2169. $('#dropdown_Aggregation_' + DisplayText).find(".dropdown-menu").html(html);
  2170. $("#dsl_column_" + DisplayText).find('#dropdown_Aggregation_' + DisplayText).find(".dropdown-menu").html(html);
  2171. if (DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  2172. var formathtml = "";
  2173. formathtml = instance.loadFormats(DataType, ElementId, DisplayText);
  2174. $('#ColumnFormat_' + DisplayText).find(".dropdown-menu").html(formathtml);
  2175. $("#dsl_column_" + DisplayText).find('#ColumnFormat_' + DisplayText).find(".dropdown-menu").html(formathtml);
  2176. }
  2177. else {
  2178. $('#ColumnFormat_' + DisplayText).remove();
  2179. $("#dsl_column_" + DisplayText).find('#ColumnFormat_' + DisplayText).remove();
  2180. }
  2181. let Index = instance.getIndexByAliasName_selectedColumnsArray(DisplayText);
  2182. Aggr = instance.selectedColumns[Index].Aggregation;
  2183. Sortby = instance.selectedColumns[Index].SortOrder;
  2184. DisplayText = instance.selectedColumns[Index].AliasName;
  2185. ColumnFormat = instance.selectedColumns[Index].ColumnFormat == "" ? "Default" : instance.selectedColumns[Index].ColumnFormat;
  2186. $("#DisplayText_" + DisplayText).val(DisplayText);
  2187. $("#DisplayText_" + DisplayText).focus();
  2188. let grpby = $("#groupby_select").val();
  2189. if (jQuery.inArray(ElementId.toString(), grpby) != -1) {
  2190. $('#dropdown_Aggregation_' + DisplayText).find(".sub-dropdown-menu").removeClass("show-on-hover");
  2191. $('#dropdown_Aggregation_' + DisplayText).find(".sub-dropdown-menu").find(".dropdown-item").css("cursor", "not-allowed");
  2192. }
  2193. else {
  2194. $('#dropdown_Aggregation_' + DisplayText).find(".sub-dropdown-menu").addClass("show-on-hover");
  2195. $('#dropdown_Aggregation_' + DisplayText).find(".sub-dropdown-menu").find(".dropdown-item").css("cursor", "pointer");
  2196. }
  2197. let IsFilterable = instance.selectedColumns[Index].IsFilterable;
  2198. if (IsFilterable == true)
  2199. $("#DropDown_IsFilterable_" + DisplayText).removeClass('hidden');
  2200. else
  2201. $("#DropDown_IsFilterable_" + DisplayText).addClass('hidden');
  2202. let IsPrimaryKey = instance.selectedColumns[Index].IsPrimaryKey;
  2203. if (IsPrimaryKey == true)
  2204. $("#DropDown_IsPrimaryKey_" + DisplayText).removeClass('hidden');
  2205. else
  2206. $("#DropDown_IsPrimaryKey_" + DisplayText).addClass('hidden');
  2207. let IsContactColumn = instance.selectedColumns[Index].IsContactColumn;
  2208. if (IsContactColumn == true)
  2209. $("#DropDown_IsContactColumn_" + DisplayText).removeClass('hidden');
  2210. else
  2211. $("#DropDown_IsContactColumn_" + DisplayText).addClass('hidden');
  2212. let IsAggregation = instance.selectedColumns[Index].Aggregation;
  2213. if (IsAggregation == Unibase.Platform.Analytics.Reports.Enums.AggregationType.none)
  2214. $("#Aggr_" + DisplayText + "_" + IsAggregation).addClass("selected");
  2215. else
  2216. $("#Aggr_" + DisplayText + "_" + IsAggregation).addClass("selected");
  2217. let IsSortBy = instance.selectedColumns[Index].SortOrder;
  2218. if (IsSortBy == "Asc") {
  2219. $("#SortOrder_" + ElementId + "_Asc").addClass('selected');
  2220. $("#SortOrder_" + ElementId + "_Desc").removeClass('selected');
  2221. }
  2222. else if (IsSortBy == "Desc") {
  2223. $("#SortOrder_" + ElementId + "_Desc").addClass('selected');
  2224. $("#SortOrder_" + ElementId + "_Asc").removeClass('selected');
  2225. }
  2226. else {
  2227. $("#SortOrder_" + ElementId + "_Asc").addClass('selected');
  2228. }
  2229. let format = instance._columnFormat.loadFormats(DataType).find(x => x.format == ColumnFormat);
  2230. if (format != undefined) {
  2231. $("#" + instance.containerId).find(".Format_" + DisplayText + "_" + format.id).addClass("selected");
  2232. }
  2233. for (i = 1; i <= Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().table.columnManager.columns.length; i++) {
  2234. if (Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().table.columnManager.columns[i].definition.visible == true) {
  2235. $(".dropdown-menu_" + i).find(".dropdown-menu").removeClass("open-left-side");
  2236. $(".dropdown-menu_" + i).find(".dropdown-menu").addClass("open-right-side");
  2237. break;
  2238. }
  2239. }
  2240. }
  2241. loadQueryBuilderDiv() {
  2242. var instance = this;
  2243. var fromDate = "";
  2244. var toDate = "";
  2245. var cf_fromDate = Unibase.Platform.Helpers.NavigationHelper.commonFilter_FromDate;
  2246. var cf_toDate = Unibase.Platform.Helpers.NavigationHelper.commonFilter_ToDate;
  2247. if (cf_fromDate != null && cf_toDate != null) {
  2248. fromDate = cf_fromDate.toString();
  2249. toDate = cf_toDate.toString();
  2250. }
  2251. else {
  2252. fromDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().currentDate()), "YYYY/MM/DD");
  2253. toDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().currentDate()), "YYYY/MM/DD");
  2254. }
  2255. if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Table) {
  2256. $("#Categories").removeClass("hidden");
  2257. }
  2258. else if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Chart) {
  2259. $("#Categories").addClass("hidden");
  2260. }
  2261. $("#QueryBuilder").html(`<div class="qry-builder-body"><div data-simplebar class="simple-scroll-bar"><div id="builder"></div></div></div>`);
  2262. var DataListId = instance.DataListId;
  2263. $("#DatalistColumns_Search").val("");
  2264. let qelem;
  2265. qelem = $('#builder');
  2266. instance.filtersArray = [];
  2267. qelem.on("afterAddRule.queryBuilder", (event, group) => {
  2268. this.addCheckbox();
  2269. });
  2270. for (var i = 0; i < instance.QueryBuilder_Columns.length; i++) {
  2271. let element = instance.QueryBuilder_Columns[i];
  2272. let dataType = "";
  2273. let IsInput = false;
  2274. let serviceurl = "apis/v4/unibase/platform/analytics/reportcolumndata";
  2275. serviceurl = _appsettings.server_url() + (serviceurl.startsWith('/') ? serviceurl : ('/' + serviceurl));
  2276. let dataTypeid = element.DataType;
  2277. let plugin_config = {
  2278. placeholder: "Select Options",
  2279. width: "auto",
  2280. unique: true,
  2281. allowClear: true,
  2282. tags: true,
  2283. ajax: {
  2284. url: serviceurl,
  2285. contentType: 'application/json',
  2286. dataType: 'json',
  2287. type: "POST",
  2288. traditional: true,
  2289. crossDomain: true,
  2290. async: true,
  2291. beforeSend: function (xhr) {
  2292. if (Unibase.Platform.Membership.Infos.Identity.getCurrentUser() !== undefined && Unibase.Platform.Membership.Infos.Identity.getCurrentUser() !== null) {
  2293. xhr.setRequestHeader('Authorization', 'Basic ' + Unibase.Platform.Membership.Infos.Identity.getCurrentUser().sessionId);
  2294. xhr.setRequestHeader('geoposition', Unibase.Platform.Membership.Infos.Identity.getCurrentUser().latd + ':' + Unibase.Platform.Membership.Infos.Identity.getCurrentUser().lgId);
  2295. }
  2296. },
  2297. data: function (params) {
  2298. let name = this[0].name.substring(0, this[0].name.indexOf("_value_"));
  2299. searchName = params.term;
  2300. var Qb_Col = instance.QueryBuilder_Columns.find(q => q.ColumnId == element.ColumnId);
  2301. let repObj = new ReportObject();
  2302. repObj.DataListId = instance.DataListId;
  2303. let Aggr = Reports.Enums.AggregationType.none;
  2304. if (params.hasOwnProperty("term") == true) {
  2305. repObj.StaticFilter = "CAST(" + element.ColumnName + " AS text) " + " ILIKE('%" + params.term + "%')";
  2306. if (instance.DataSourceId == Number(Platform.DataSources.Enums.DataSource.MongoDB)) {
  2307. repObj.StaticFilter = "{" + element.ColumnName + ":" + params.term + "}";
  2308. if (Analytics.Reports.Enums.DataType[element.DataType] == "string") {
  2309. repObj.StaticFilter = "{" + element.ColumnName + ":{$regex:'" + params.term + "'" + "}}";
  2310. }
  2311. }
  2312. }
  2313. repObj.TopRecords = 5;
  2314. repObj.Distinct = true;
  2315. let col = new ReportColumn();
  2316. col.ColumnValue = element.ColumnId;
  2317. col.ReportColumnName = element.ColumnName;
  2318. col.AliasName = element.ColumnName;
  2319. col.DlColumnName = (Qb_Col) ? Qb_Col.DlColumnName : null;
  2320. col.AggrFuncId = Aggr;
  2321. repObj.ReportColumns = [];
  2322. repObj.ReportColumns.push(col);
  2323. repObj.FromDate = fromDate;
  2324. repObj.ToDate = toDate;
  2325. return JSON.stringify(repObj);
  2326. },
  2327. processResults: function (data) {
  2328. var col = [];
  2329. var defaultid;
  2330. var id = searchName;
  2331. var autoCompleteId = $(".select2-container--open").parent().parent()[1].id;
  2332. console.log(autoCompleteId);
  2333. var identity = $("#" + autoCompleteId + "_checkbox").prop("checked");
  2334. if (identity) {
  2335. var identityinfo = Unibase.Platform.Membership.Infos.Identity.currentUser;
  2336. var keys = Object.keys(identityinfo);
  2337. for (let i = 0; i < keys.length; i++) {
  2338. col.push({ id: "Identity_" + keys[i], text: "Identity_" + keys[i] });
  2339. }
  2340. var settings = identityinfo.settings;
  2341. if (settings && settings.length != 0) {
  2342. for (var s = 0; s < settings.length; s++) {
  2343. col.push({ id: "Identity_" + settings[s].settingName, text: "Identity_" + settings[s].settingName });
  2344. }
  2345. }
  2346. console.log(col);
  2347. }
  2348. else {
  2349. if (JSON.parse(data.result).Data != "") {
  2350. defaultid = {
  2351. id: 0,
  2352. text: '------'
  2353. };
  2354. col.push(defaultid);
  2355. for (let i = 0; i < JSON.parse(JSON.parse(data.result).Data).length; i++) {
  2356. let jsondata = JSON.parse(JSON.parse(data.result).Data);
  2357. var col_text = jsondata[i][element.ColumnName];
  2358. if (col_text != null) {
  2359. var ids = {
  2360. id: jsondata[i][element.ColumnName],
  2361. text: col_text.toString()
  2362. };
  2363. col.push(ids);
  2364. }
  2365. }
  2366. }
  2367. else {
  2368. if (searchName == "") {
  2369. defaultid = {
  2370. id: 0,
  2371. text: '------'
  2372. };
  2373. }
  2374. else {
  2375. defaultid = {
  2376. id: id,
  2377. text: searchName
  2378. };
  2379. }
  2380. col.push(defaultid);
  2381. }
  2382. }
  2383. return {
  2384. results: col
  2385. };
  2386. }
  2387. },
  2388. };
  2389. let Values = [];
  2390. let Input = 'select';
  2391. let Plugin = 'select2';
  2392. if (dataTypeid == Unibase.Platform.Analytics.Reports.Enums.DataType.string) {
  2393. dataType = "string";
  2394. }
  2395. else if (dataTypeid == Unibase.Platform.Analytics.Reports.Enums.DataType.int32 || dataTypeid == Unibase.Platform.Analytics.Reports.Enums.DataType.int64) {
  2396. dataType = "integer";
  2397. }
  2398. else if (dataTypeid == Unibase.Platform.Analytics.Reports.Enums.DataType.decimal) {
  2399. dataType = "double";
  2400. }
  2401. else if (dataTypeid == Unibase.Platform.Analytics.Reports.Enums.DataType.boolean) {
  2402. dataType = "string";
  2403. Values = ["true", "false"];
  2404. Input = 'radio';
  2405. Plugin = '';
  2406. }
  2407. else if (dataTypeid == Unibase.Platform.Analytics.Reports.Enums.DataType.date || dataTypeid == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  2408. dataType = 'date';
  2409. IsInput = true;
  2410. }
  2411. if (element.StaticFilterControlType == Unibase.Platform.Analytics.Reports.Enums.StaicFilterControlType.Text) {
  2412. IsInput = true;
  2413. Input = 'text';
  2414. }
  2415. let searchName = "";
  2416. let filter = {};
  2417. if (dataTypeid == Unibase.Platform.Analytics.Reports.Enums.DataType.date || dataTypeid == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  2418. filter = {
  2419. id: element.ColumnName,
  2420. label: element.ColumnName,
  2421. field: element.ColumnName,
  2422. type: dataType,
  2423. validation: {
  2424. format: 'YYYY/MM/DD'
  2425. },
  2426. plugin: 'datepicker',
  2427. plugin_config: {
  2428. format: 'yyyy/mm/dd',
  2429. todayBtn: 'linked',
  2430. todayHighlight: true,
  2431. autoclose: true
  2432. }
  2433. };
  2434. }
  2435. else {
  2436. filter = {
  2437. id: element.ColumnName,
  2438. label: element.ColumnName,
  2439. field: element.ColumnName,
  2440. type: dataType,
  2441. size: 30,
  2442. unique: true,
  2443. input: Input,
  2444. plugin: !IsInput && Plugin,
  2445. plugin_config: !IsInput && plugin_config,
  2446. values: Values
  2447. };
  2448. }
  2449. instance.filtersArray.push(filter);
  2450. }
  2451. qelem.queryBuilder({
  2452. filters: instance.filtersArray
  2453. });
  2454. if (instance.queryBuilderJson && instance.queryBuilderJson != "[]") {
  2455. let qeleme = $('#builder');
  2456. let qb_json = JSON.parse(instance.queryBuilderJson);
  2457. let qb_rules = instance.changeFieldnametoId(qb_json.rules);
  2458. qeleme.queryBuilder('setRules', qb_rules);
  2459. var ruledata = JSON.parse(instance.queryBuilderJson);
  2460. var jsonarray = JSON.stringify(ruledata);
  2461. jsonarray = jsonarray.replace(/[{}\[\]']/g, '');
  2462. jsonarray = jsonarray.split(',"');
  2463. var finalarray = [];
  2464. for (var arrayvalue of jsonarray) {
  2465. if (arrayvalue.includes('value') == true) {
  2466. var value = arrayvalue.split(':');
  2467. if (value[1].includes('"') == true) {
  2468. value[1] = value[1].replace(/"/g, '');
  2469. }
  2470. finalarray.push(value[1]);
  2471. }
  2472. }
  2473. for (let k = 0; k < finalarray.length; k++) {
  2474. var id = $('[id*=select2-builder_rule_' + k + ']').attr('id');
  2475. $('#' + id).html('');
  2476. $('#' + id).css('width', $('#' + id).width() + 150);
  2477. $('#' + id).html('<span class="select2-selection__placeholder text-dark">' + finalarray[k] + '</span>');
  2478. if (finalarray[k] && finalarray[k].includes("Identity_")) {
  2479. let valueContainer = $('#' + id).closest(".rule-value-container").next();
  2480. valueContainer.children().first().removeClass("hidden");
  2481. valueContainer.find("input").prop("checked", true);
  2482. }
  2483. }
  2484. }
  2485. $('#btn-reset-query').on('click', function () {
  2486. instance.queryBuilderString = "";
  2487. instance.querybuilderCheckboxes = [];
  2488. instance.queryBuilderJson = "";
  2489. $(".qry-builder-container").hide();
  2490. instance.load_data(instance.table);
  2491. qelem.queryBuilder('reset');
  2492. instance.queryBuilderJson = "";
  2493. });
  2494. $('#builder').on('afterApplyRuleFlags.queryBuilder', function (e, rule) {
  2495. let selectValue = $("#" + rule.id).find(".rule-filter-container").children().first().val();
  2496. if (selectValue != -1 && selectValue) {
  2497. $("#" + rule.id).find(".rule-check-container").children().first().removeClass("hidden");
  2498. }
  2499. });
  2500. $('#builder-widgets').on('afterUpdateRuleValue.queryBuilder', function (e, rule) {
  2501. if (rule.filter.plugin === 'datepicker') {
  2502. rule.$el.find('.rule-value-container input').datepicker('update');
  2503. }
  2504. });
  2505. $('#builder').on('afterUpdateRuleOperator.queryBuilder', (e, rule) => {
  2506. if (rule.operator.type == "in")
  2507. rule.$el.find(".rule-value-container select").prop('multiple', true).attr('name', 'sub_type[]');
  2508. else
  2509. rule.$el.find(".rule-value-container select").prop('multiple', false).attr('name', 'sub_type');
  2510. });
  2511. }
  2512. addCheckbox() {
  2513. let instance = this;
  2514. let isChecked = '';
  2515. let checkboxId = $($('.rule-container')[$('.rule-container').length - 1]).attr('id') + '_checkbox';
  2516. console.log(instance.querybuilderCheckboxes);
  2517. for (let i = 0; i < instance.querybuilderCheckboxes.length; i++) {
  2518. if (checkboxId.replace('_checkbox', '') == instance.querybuilderCheckboxes[i]) {
  2519. isChecked = 'checked';
  2520. break;
  2521. }
  2522. }
  2523. $($('.rule-container')[$('.rule-container').length - 1]).append(`<div class="rule-check-container">
  2524. <div class="custom-control hidden custom-checkbox checkbox-teal">
  2525. <input type="checkbox" class="custom-control-input" id="${checkboxId}" ${isChecked}>
  2526. <label class="custom-control-label" for="${checkboxId}">Indentity</label>
  2527. </div>
  2528. </div>`);
  2529. $('#' + checkboxId).change(function () {
  2530. var id = $(this).attr('id').replace('_checkbox', '');
  2531. $("#" + id).find(".rule-value-container select").empty();
  2532. if ($(this).is(':checked')) {
  2533. instance.querybuilderCheckboxes.push(id);
  2534. }
  2535. else {
  2536. for (let i = 0; i < instance.querybuilderCheckboxes.length; i++) {
  2537. let checkbox_id = instance.querybuilderCheckboxes[i];
  2538. if (checkbox_id == id) {
  2539. instance.querybuilderCheckboxes.splice(i, 1);
  2540. break;
  2541. }
  2542. }
  2543. }
  2544. });
  2545. }
  2546. changeFieldnametoId(rules) {
  2547. var instance = this;
  2548. for (var r = 0; r < rules.length; r++) {
  2549. let rule = rules[r];
  2550. if (rule.rules)
  2551. rule.rules = instance.changeFieldnametoId(rule.rules);
  2552. rules[r].id = rule.field;
  2553. }
  2554. return rules;
  2555. }
  2556. toggleQueryBuilderDiv() {
  2557. $(".report-builder-body").toggleClass("hidden");
  2558. $("#QueryBuilder").toggleClass("hidden");
  2559. }
  2560. reportTypeChange(id) {
  2561. var instance = this;
  2562. if (id == "fa fa-bar-chart-o") {
  2563. instance.reportType = Unibase.Platform.Analytics.Reports.Enums.ReportType.Chart;
  2564. instance._chartBuilder.loadChartIcons();
  2565. if (instance.TenureReport.length != 0 && instance.reportid == 0) {
  2566. Unibase.Platform.Analytics.Reports.Tenure.Instance().CheckedTenure();
  2567. instance._chartBuilder.tenureChart('myChart', instance.reportid);
  2568. }
  2569. else {
  2570. if (instance.reportid != 0) {
  2571. instance._chartBuilder.select2DataBinding("");
  2572. }
  2573. instance._chartBuilder.select2DataBinding("ReportTypeChanged");
  2574. }
  2575. $('.report-builder-body').find('#table-canvan').height($(window).outerHeight() - $('.report-builder-body').find('#chart-container').height() - $(".modal-footer").height() - 100);
  2576. }
  2577. else {
  2578. instance.reportType = Unibase.Platform.Analytics.Reports.Enums.ReportType.Table;
  2579. }
  2580. $(".ChartIcons").toggleClass("hidden");
  2581. $("#ChartIcon_Default").toggleClass("hidden");
  2582. if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Chart) {
  2583. instance._chartBuilder.IsChartBuilder = true;
  2584. instance.EditableTitle = false, instance.HeaderSort = true;
  2585. $(".divselect2_GroupBy").removeClass("hidden");
  2586. $(".TableIcon").addClass("hidden");
  2587. $("#datalabel_div").removeClass("hidden");
  2588. $("#chart-container").removeClass("hidden");
  2589. $('.report-builder-body').find('#table-canvan').height($(window).outerHeight() - $('.report-builder-body').find('#chart-container').height() - $(".modal-footer").height() - 105);
  2590. if ($("#DataListsDiv").hasClass("hidden") && instance.TenureReport.length == 0) {
  2591. $("#XAxis").removeClass("hidden");
  2592. $("#YAxis").removeClass("hidden");
  2593. var x_val = $('#xaxis_select').val().toString();
  2594. var y_val = $('#yaxis_select').val().toString();
  2595. if (x_val.length == 0) {
  2596. $('#xaxis_select').val('').trigger('change');
  2597. }
  2598. if (y_val.length == 0) {
  2599. $('#yaxis_select').val('').trigger('change');
  2600. }
  2601. }
  2602. $("#ChartCanvasDiv").removeClass("hidden");
  2603. if ($("#txt_totalrecords").val() == "") {
  2604. $("#txt_totalrecords").val("5");
  2605. }
  2606. if (instance._chartBuilder.legendTitleTypeId == Unibase.Platform.Analytics.Enums.LegendTitleType.Column) {
  2607. $("#lagendtypecolumn").prop("checked", true);
  2608. }
  2609. else {
  2610. $("#lagendtypedata").prop("checked", true);
  2611. }
  2612. $("#showtooltipheader_checkbox").prop("checked", instance._chartBuilder.isTooltipHeader);
  2613. $("#isdatalabel").prop("checked", instance._chartBuilder.isDataLabel);
  2614. $("#label_length").val(instance._chartBuilder.tickLabelLength);
  2615. if (instance._chartBuilder.chartBaseValue)
  2616. $("#dataset_base_value").val(instance._chartBuilder.chartBaseValue);
  2617. }
  2618. else {
  2619. instance.isCharttoTable = true;
  2620. if ($("#DataListsDiv").hasClass("hidden")) {
  2621. $("#Categories").removeClass("hidden");
  2622. }
  2623. instance.EditableTitle = true, instance.HeaderSort = false;
  2624. instance._chartBuilder.select2DataBinding("");
  2625. if (instance.selectedColumns.length > 0) {
  2626. instance.load_data(instance.table);
  2627. }
  2628. $(".TableIcon").removeClass("hidden");
  2629. $("#datalabel_div").addClass("hidden");
  2630. $("#ExpandIcon, #CollapseIcon").addClass("hidden");
  2631. $("#chart-container").addClass("hidden");
  2632. var height = $(".report-builder-body").height() - 35 + "px";
  2633. instance.table.setHeight(height);
  2634. $("#table-canvan").height(height);
  2635. $(".bl-nav-right").addClass("hidden");
  2636. $("#bl-nav-right-default").removeClass("hidden");
  2637. $("#XAxis").addClass("hidden");
  2638. $("#YAxis").addClass("hidden");
  2639. $("#ChartCanvasDiv").addClass("hidden");
  2640. }
  2641. }
  2642. getAggregationName(AggrFuncId) {
  2643. var AggrName = Unibase.Platform.Analytics.Reports.Enums.AggregationType[AggrFuncId];
  2644. return AggrName;
  2645. }
  2646. getAggregationsByDataTypes(DataType) {
  2647. var aggrType = Unibase.Platform.Analytics.Reports.Enums.AggregationType;
  2648. var items = {
  2649. "String": [{ "Value": aggrType.none, "AggrType": "none" },
  2650. { "Value": aggrType.count, "AggrType": "count" }],
  2651. "DateTime": [{ "Value": aggrType.none, "AggrType": "none" },
  2652. { "Value": aggrType.count, "AggrType": "count" },
  2653. { "Value": aggrType.month, "AggrType": "month" },
  2654. { "Value": aggrType.year, "AggrType": "year" }],
  2655. "Int64": [{ "Value": aggrType.none, "AggrType": "none" },
  2656. { "Value": aggrType.count, "AggrType": "count" },
  2657. { "Value": aggrType.sum, "AggrType": "sum" },
  2658. { "Value": aggrType.avg, "AggrType": "avg" },
  2659. { "Value": aggrType.max, "AggrType": "max" },
  2660. { "Value": aggrType.min, "AggrType": "min" }],
  2661. "Int32": [{ "Value": aggrType.none, "AggrType": "none" },
  2662. { "Value": aggrType.count, "AggrType": "count" },
  2663. { "Value": aggrType.sum, "AggrType": "sum" },
  2664. { "Value": aggrType.avg, "AggrType": "avg" },
  2665. { "Value": aggrType.max, "AggrType": "max" },
  2666. { "Value": aggrType.min, "AggrType": "min" }],
  2667. "Decimal": [{ "Value": aggrType.none, "AggrType": "none" },
  2668. { "Value": aggrType.count, "AggrType": "count" },
  2669. { "Value": aggrType.sum, "AggrType": "sum" },
  2670. { "Value": aggrType.avg, "AggrType": "avg" },
  2671. { "Value": aggrType.max, "AggrType": "max" },
  2672. { "Value": aggrType.min, "AggrType": "min" }],
  2673. "Boolean": [{ "Value": aggrType.none, "AggrType": "none" },
  2674. { "Value": aggrType.count, "AggrType": "count" }],
  2675. "none": [
  2676. {}
  2677. ]
  2678. };
  2679. return items[DataType];
  2680. }
  2681. getAggregationsByDataType(DataType) {
  2682. var items = [];
  2683. var aggrType = Unibase.Platform.Analytics.Reports.Enums.AggregationType;
  2684. switch (DataType) {
  2685. case Unibase.Platform.Analytics.Reports.Enums.DataType.string:
  2686. items = [{ "Value": aggrType.none, "AggrType": "none" },
  2687. { "Value": aggrType.count, "AggrType": "count" }];
  2688. break;
  2689. case Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime:
  2690. items = [{ "Value": aggrType.none, "AggrType": "none" },
  2691. { "Value": aggrType.count, "AggrType": "count" },
  2692. { "Value": aggrType.month, "AggrType": "month" },
  2693. { "Value": aggrType.year, "AggrType": "year" }];
  2694. break;
  2695. case Unibase.Platform.Analytics.Reports.Enums.DataType.int64:
  2696. items = [{ "Value": aggrType.none, "AggrType": "none" },
  2697. { "Value": aggrType.count, "AggrType": "count" },
  2698. { "Value": aggrType.sum, "AggrType": "sum" },
  2699. { "Value": aggrType.avg, "AggrType": "avg" },
  2700. { "Value": aggrType.max, "AggrType": "max" },
  2701. { "Value": aggrType.min, "AggrType": "min" }];
  2702. break;
  2703. case Unibase.Platform.Analytics.Reports.Enums.DataType.int32:
  2704. items = [{ "Value": aggrType.none, "AggrType": "none" },
  2705. { "Value": aggrType.count, "AggrType": "count" },
  2706. { "Value": aggrType.sum, "AggrType": "sum" },
  2707. { "Value": aggrType.avg, "AggrType": "avg" },
  2708. { "Value": aggrType.max, "AggrType": "max" },
  2709. { "Value": aggrType.min, "AggrType": "min" }];
  2710. break;
  2711. case Unibase.Platform.Analytics.Reports.Enums.DataType.decimal:
  2712. items = [{ "Value": aggrType.none, "AggrType": "none" },
  2713. { "Value": aggrType.count, "AggrType": "count" },
  2714. { "Value": aggrType.sum, "AggrType": "sum" },
  2715. { "Value": aggrType.avg, "AggrType": "avg" },
  2716. { "Value": aggrType.max, "AggrType": "max" },
  2717. { "Value": aggrType.min, "AggrType": "min" }];
  2718. break;
  2719. case Unibase.Platform.Analytics.Reports.Enums.DataType.boolean:
  2720. items = [{ "Value": aggrType.none, "AggrType": "none" },
  2721. { "Value": aggrType.count, "AggrType": "count" }];
  2722. break;
  2723. case Unibase.Platform.Analytics.Reports.Enums.DataType.none:
  2724. [{}];
  2725. break;
  2726. }
  2727. return items;
  2728. }
  2729. getColumnIconByDataTypes(DataTypeId) {
  2730. let icon = "";
  2731. switch (DataTypeId) {
  2732. case Unibase.Platform.Analytics.Reports.Enums.DataType.string:
  2733. icon = `<i class="las la-text-width"></i>`;
  2734. break;
  2735. case Unibase.Platform.Analytics.Reports.Enums.DataType.int32:
  2736. case Unibase.Platform.Analytics.Reports.Enums.DataType.int64:
  2737. case Unibase.Platform.Analytics.Reports.Enums.DataType.decimal:
  2738. case Unibase.Platform.Analytics.Reports.Enums.DataType.boolean:
  2739. icon = `<i class="las la-hashtag"></i>`;
  2740. break;
  2741. case Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime:
  2742. icon = `<i class="las la-calendar-minus"></i>`;
  2743. break;
  2744. }
  2745. return icon;
  2746. }
  2747. dataType(type) {
  2748. var DataType;
  2749. switch (type) {
  2750. case "String":
  2751. DataType = Unibase.Platform.Analytics.Reports.Enums.DataType.string;
  2752. break;
  2753. case "Int32":
  2754. DataType = Unibase.Platform.Analytics.Reports.Enums.DataType.int32;
  2755. break;
  2756. case "Int64":
  2757. DataType = Unibase.Platform.Analytics.Reports.Enums.DataType.int64;
  2758. break;
  2759. case "DateTime":
  2760. DataType = Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime;
  2761. break;
  2762. case "Decimal":
  2763. DataType = Unibase.Platform.Analytics.Reports.Enums.DataType.decimal;
  2764. break;
  2765. case "Boolean":
  2766. DataType = Unibase.Platform.Analytics.Reports.Enums.DataType.boolean;
  2767. break;
  2768. }
  2769. return DataType;
  2770. }
  2771. _sortColumns() {
  2772. var instance = this;
  2773. let list = $('#sort_selected_columns');
  2774. if (!list)
  2775. return;
  2776. let itemName;
  2777. let endIndex;
  2778. list.sortable({
  2779. connectWith: "#sort_selected_columns",
  2780. cursor: 'move',
  2781. update: function (event, ui) {
  2782. $.each($('#sort_selected_columns .dsl-block'), function (index, item) {
  2783. let itemName = $(item).attr('id').slice(11);
  2784. let sindex = instance.SortColumns.findIndex(x => x.AliasName == itemName);
  2785. if (sindex > -1) {
  2786. instance.SortColumns[sindex].SortIndex = index;
  2787. }
  2788. let scolindex = instance.selectedColumns.findIndex(x => x.ColumnName == itemName);
  2789. if (scolindex > -1) {
  2790. instance.selectedColumns[scolindex].SortIndex = index;
  2791. }
  2792. });
  2793. instance.load_data(instance.reportid);
  2794. }
  2795. });
  2796. }
  2797. getIndexByColumnName_selectedColumnsArray(ColumnName) {
  2798. var instance = this;
  2799. return instance.selectedColumns.findIndex(x => x.ColumnName == ColumnName);
  2800. }
  2801. getIndexByAliasName_selectedColumnsArray(AliasName) {
  2802. var instance = this;
  2803. return instance.selectedColumns.findIndex(x => x.AliasName == AliasName);
  2804. }
  2805. getIndexByDisplayTextAndColumnName_selectedColumnsArray(AliasName, ColumnName) {
  2806. var instance = this;
  2807. return instance.selectedColumns.findIndex(x => x.AliasName == AliasName && x.ColumnName == ColumnName);
  2808. }
  2809. getColumnId_ByColumnName_datalistColumnsArray(ColumnName) {
  2810. var instance = this;
  2811. let Col = instance.datalistColumnsResponseData.find(x => x.ColumnName == ColumnName);
  2812. return Col.ColumnId;
  2813. }
  2814. getDlColumn_ByColumnId_datalistColumnsArray(ColumnId) {
  2815. var instance = this;
  2816. let Col = instance.datalistColumnsResponseData.find(x => x.ColumnId == ColumnId);
  2817. return Col.DlColumnName;
  2818. }
  2819. getIndexByDisplayText_sortColumnsArray(DisplayText) {
  2820. var instance = this;
  2821. return instance.SortColumns.findIndex(x => x.DisplayText == DisplayText);
  2822. }
  2823. getIndexByAliasName_DatalistColumnsArray(AliasName) {
  2824. return this.datalistColumnsResponseData.findIndex(x => x.AliasName == AliasName);
  2825. }
  2826. getIndexByAliasName_chartSelectedColumnsArray(AliasName) {
  2827. var instance = this;
  2828. return instance._chartBuilder.ChartSelectedColumns.findIndex(x => x.AliasName == AliasName);
  2829. }
  2830. loadReportGroups() {
  2831. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reportgroups_autocomplete';
  2832. AutoCompleteHelper.getHelper().Create("#RptGroup_AutoComplete", "#hfAutoComplete_ReportGroup", url, null);
  2833. }
  2834. getAvailableReportGroups(reportGroupsResponseData) {
  2835. var instance = this;
  2836. let html = "";
  2837. for (let i = 0; i < reportGroupsResponseData.length; i++) {
  2838. var template = instance._reportBuilderTemplate.loadDataListsTemplate();
  2839. var templateScript = Handlebars.compile(template);
  2840. var context = { "SelectText": reportGroupsResponseData[i].GroupName, "Value": reportGroupsResponseData[i].ReportGroupId };
  2841. html += templateScript(context);
  2842. }
  2843. if (reportGroupsResponseData.length == 0) {
  2844. var template = instance._reportBuilderTemplate.loadDataListsTemplate();
  2845. var templateScript = Handlebars.compile(template);
  2846. }
  2847. $("#RptGroup_AutoComplete").append(html);
  2848. }
  2849. reportColumns_Array(repCol) {
  2850. var instance = this;
  2851. let col = new ReportColumn();
  2852. col.ReportColumnId = instance.isduplicate == true ? 0 : repCol.ReportColumnId;
  2853. col.ColumnValue = (repCol.ColumnValue) ? repCol.ColumnValue : 0;
  2854. col.ReportColumnName = repCol.ReportColumnName;
  2855. col.DataListColumnName = repCol.DataListColumnName;
  2856. col.DlColumnName = repCol.DlColumnName;
  2857. col.DisplayText = (repCol.DisplayText) ? repCol.DisplayText : repCol.AliasName;
  2858. col.AliasName = (repCol.AliasName) ? repCol.AliasName : col.DisplayText;
  2859. col.DataType = (repCol.DataType) ? repCol.DataType : 0;
  2860. col.Isvisible = (repCol.Isvisible) ? repCol.Isvisible : false;
  2861. col.AggrFuncId = !isNaN(repCol.AggrFuncId) ? repCol.AggrFuncId : Reports.Enums.AggregationType.none,
  2862. col.SortType = (repCol.SortType) ? repCol.SortType : "none";
  2863. col.SortIndex = (repCol.SortIndex) ? repCol.SortIndex : 0;
  2864. col.GroupBy = (repCol.GroupBy) ? repCol.GroupBy : false;
  2865. col.IsPivotAggrColumn = (repCol.IsPivotAggrColumn) ? repCol.IsPivotAggrColumn : false;
  2866. col.IsPivotColumn = (repCol.IsPivotColumn) ? repCol.IsPivotColumn : false;
  2867. col.IsPivotRow = (repCol.IsPivotRow) ? repCol.IsPivotRow : false;
  2868. col.IsPivotRowSelected = (repCol.IsPivotRowSelected) ? repCol.IsPivotRowSelected : false;
  2869. col.IsPivotParentColumn = (repCol.IsPivotParentColumn) ? repCol.IsPivotParentColumn : false;
  2870. col.IsPivotChildColumn = (repCol.IsPivotChildColumn) ? repCol.IsPivotChildColumn : false;
  2871. col.PivotValue = 0;
  2872. col.PivotValueSelected = (instance.pivot && instance.pivot.PivotValue_Selected) ? repCol.PivotValueSelected : 0;
  2873. col.IsPivotRowSelected = (repCol.IsPivotRowSelected) ? repCol.IsPivotRowSelected : false;
  2874. col.PivotDateType = isNaN(repCol.PivotDateType) ? 0 : Number(repCol.PivotDateType);
  2875. col.TimeInterval = (repCol.TimeInterval) ? repCol.TimeInterval : "";
  2876. col.ColumnFormat = (repCol.ColumnFormat == "No Format" || !(repCol.ColumnFormat)) ? "" : repCol.ColumnFormat;
  2877. col.YearComparisonType = (repCol.YearComparisonType) ? repCol.YearComparisonType : 0;
  2878. col.WidthUnit = "px";
  2879. col.RoleId = "0";
  2880. col.IsFilterable = false;
  2881. col.IsPrimaryKey = (repCol.IsPrimaryKey) ? repCol.IsPrimaryKey : false;
  2882. col.IsContactColumn = (repCol.IsContactColumn) ? repCol.IsContactColumn : false;
  2883. col.GroupByCategory = (repCol.GroupByCategory) ? repCol.GroupByCategory : false;
  2884. col.IsTenureApplied = (repCol.IsTenureApplied) ? repCol.IsTenureApplied : false;
  2885. col.Width = (repCol.Width) ? repCol.Width : 0;
  2886. col.ColumnIndex = (repCol.ColumnIndex) ? repCol.ColumnIndex : 0;
  2887. col.DistinctOn = (repCol.DistinctOn) ? repCol.DistinctOn : false;
  2888. col.IsPivotTableCol = (repCol.IsPivotTableCol) ? repCol.IsPivotTableCol : false;
  2889. col.IsDownload = (repCol.IsDownload) ? repCol.IsDownload : false;
  2890. col.TableAggrTypeId = !isNaN(repCol.TableAggrTypeId) ? repCol.TableAggrTypeId : Reports.Enums.AggregationType.none;
  2891. col.IsNumFormatting = (repCol.IsNumFormatting) ? repCol.IsNumFormatting : false;
  2892. col.IsRowTotal = (repCol.IsRowTotal) ? repCol.IsRowTotal : false;
  2893. col.IsImageUrl = (repCol.IsImageUrl) ? repCol.IsImageUrl : false;
  2894. col.PivotTableAggrTypeId = (repCol.PivotTableAggrTypeId) ? repCol.PivotTableAggrTypeId : 0;
  2895. let PivotDateType = instance.pivot && instance.pivot.DateType ? instance.pivot.DateType : 0;
  2896. if (instance.pivot && instance.pivot.AggColumnName != "") {
  2897. if (instance.pivot.AggColumnName == col.ReportColumnName) {
  2898. col.AggrFuncId = Number(instance.pivot.AggFuncId);
  2899. col.IsPivotAggrColumn = true;
  2900. }
  2901. if (instance.pivot.ColumnName == col.ReportColumnName) {
  2902. col.IsPivotColumn = true;
  2903. var Tenure = instance.TenureReport[instance.pivot.ColumnName];
  2904. col.TimeInterval = Tenure != undefined ? Tenure.TimeInterval : "";
  2905. col.PivotDateType = Number(PivotDateType);
  2906. }
  2907. if (instance.pivot.ChildColumnName != "") {
  2908. if (instance.pivot.ChildColumnName == col.ReportColumnName) {
  2909. col.IsPivotChildColumn = true;
  2910. if (repCol.PivotValue == undefined) {
  2911. col.PivotValue = Number(instance.pivot.ChildColumnValue);
  2912. }
  2913. else {
  2914. col.PivotValue = Number(instance.pivot.PivotValue_Selected);
  2915. }
  2916. instance.IsPivotTree = true;
  2917. }
  2918. if (instance.pivot.ParentColumnName == col.ReportColumnName) {
  2919. col.IsPivotParentColumn = true;
  2920. }
  2921. }
  2922. }
  2923. if (repCol.TimeInterval != "") {
  2924. }
  2925. instance.ReportColumns.push(col);
  2926. }
  2927. groupByAggregation() {
  2928. var instance = this;
  2929. var isGrp = instance.selectedColumns.find(g => g.GroupBy == true);
  2930. if (isGrp) {
  2931. for (var i = 0; i < instance.selectedColumns.length; i++) {
  2932. var scol = instance.selectedColumns[i];
  2933. if (!scol.GroupBy && scol.Aggregation == Unibase.Platform.Analytics.Reports.Enums.AggregationType.none) {
  2934. let Index = instance.getIndexByColumnName_selectedColumnsArray(scol.AliasName);
  2935. var Col = instance.selectedColumns[Index];
  2936. Col.Aggregation = Unibase.Platform.Analytics.Reports.Enums.AggregationType.count;
  2937. }
  2938. }
  2939. }
  2940. }
  2941. saveReport(containerid, reportid) {
  2942. var instance = this;
  2943. this.navigationHelper.showLoading();
  2944. let rptGroupId = Number($("#RptGroup_AutoComplete").val());
  2945. if (rptGroupId == 0)
  2946. return MessageHelper.Instance().showError("Please select ReportGroup", 'divReport_ErrorMessage');
  2947. instance.ReportColumns = [];
  2948. var grpby = instance.selectedColumns.filter(x => x.GroupBy == true);
  2949. var agg = [];
  2950. var SortArry = [];
  2951. if (grpby.length > 0) {
  2952. agg = instance.selectedColumns.filter(x => x.Aggregation == Reports.Enums.AggregationType.none).filter(x => x.GroupBy == false);
  2953. }
  2954. if (agg.length > 0 && instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Table) {
  2955. var cols = "";
  2956. if (agg.length == 1) {
  2957. cols = " Column \"";
  2958. }
  2959. else {
  2960. cols = " Columns \"";
  2961. }
  2962. for (var a = 0; a < agg.length; a++) {
  2963. cols += " " + agg[a].ColumnName + ",";
  2964. }
  2965. cols = cols.substring(0, cols.length - 1) + " ";
  2966. alert("SAVE FAILED: " + cols + "\" must be added in groupby or need to give aggregation. For UI Groupby add in Categories instead of groupby");
  2967. return false;
  2968. }
  2969. else {
  2970. for (var i = 0; i < instance.selectedColumns.length; i++) {
  2971. let selectedColumn = instance.selectedColumns[i];
  2972. let Width = 0;
  2973. if (selectedColumn.Width != undefined) {
  2974. Width = selectedColumn.Width;
  2975. }
  2976. var Tenure = instance.TenureReport[selectedColumn.ColumnName];
  2977. let AggrFuncId = selectedColumn.Aggregation;
  2978. let col = new ReportColumn();
  2979. col.ReportColumnId = selectedColumn.ReportColumnId,
  2980. col.ReportColumnName = selectedColumn.ColumnName,
  2981. col.AliasName = selectedColumn.AliasName,
  2982. col.DisplayText = selectedColumn.DisplayText,
  2983. col.DlColumnName = selectedColumn.DlColumnName,
  2984. col.ColumnIndex = selectedColumn.ColumnIndex,
  2985. col.Width = Width,
  2986. col.ColumnValue = Number(selectedColumn.ColumnId),
  2987. col.DataType = selectedColumn.DataType,
  2988. col.IsFilterable = selectedColumn.IsFilterable,
  2989. col.IsPrimaryKey = selectedColumn.IsPrimaryKey,
  2990. col.IsContactColumn = selectedColumn.IsContactColumn,
  2991. col.Isvisible = selectedColumn.Isvisible,
  2992. col.GroupBy = selectedColumn.GroupBy,
  2993. col.SortType = selectedColumn.SortOrder,
  2994. col.SortIndex = selectedColumn.SortIndex,
  2995. col.AggrFuncId = AggrFuncId,
  2996. col.IsTenureApplied = Tenure != undefined ? true : false,
  2997. col.GroupByCategory = selectedColumn.GroupByCategory,
  2998. col.ColumnFormat = selectedColumn.ColumnFormat == "Default" ? "" : selectedColumn.ColumnFormat,
  2999. col.PivotValue = instance.pivot.PivotValue_Selected,
  3000. col.DistinctOn = selectedColumn.DistinctOn,
  3001. col.IsPivotTableCol = selectedColumn.IsPivotTableCol,
  3002. col.IsDownload = selectedColumn.IsDownload,
  3003. col.TableAggrTypeId = selectedColumn.TableAggrTypeId,
  3004. col.IsNumFormatting = selectedColumn.IsNumFormatting,
  3005. col.IsRowTotal = selectedColumn.IsRowTotal,
  3006. col.IsImageUrl = selectedColumn.IsImageUrl,
  3007. col.PivotTableAggrTypeId = selectedColumn.PivotTableAggrTypeId,
  3008. instance.reportColumns_Array(col);
  3009. }
  3010. let pivotRows = instance.pivot.PivotRows;
  3011. if (instance.SortColumns.length != 0) {
  3012. for (var i = 0; i < instance.SortColumns.length; i++) {
  3013. var col = instance.SortColumns.find(x => x.SortIndex == i);
  3014. if (col)
  3015. SortArry.push({ Name: col.DisplayText, Order: col.SortOrder });
  3016. }
  3017. }
  3018. if (SortArry.length == 0) {
  3019. if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Chart) {
  3020. instance.navigationHelper.hideLoading();
  3021. return MessageHelper.Instance().showError('Please Select SortColumn', 'div_ReportBuilderErrorMessage');
  3022. }
  3023. SortArry.push({ Name: instance.selectedColumns[0].AliasName, Order: "Desc" });
  3024. }
  3025. instance._chartBuilder.chartColumns();
  3026. if (instance.isduplicate == true) {
  3027. $("#txt_reportid").val(0);
  3028. if ($("#txt_reportname").val() == "") {
  3029. $("#errordiv").show();
  3030. $("#errordiv").html('<div id="Bizgaze-messageInfo" class="alert alert-danger " ><strong>Error! </strong>Mandatory fields are missing</div>');
  3031. $("#errordiv").css({ "height": "50px", "visibility": "hidden", "opacity": "0", "transition": "visibility 0s 6s,opacity 6s linear" });
  3032. setTimeout(function () {
  3033. $("#errordiv").removeAttr('style');
  3034. $("#errordiv").hide();
  3035. }, 6000);
  3036. return false;
  3037. }
  3038. }
  3039. var dependencyapps = $("#dependecyapps").val();
  3040. let ReportName = $("#txt_reportname").val().toString();
  3041. instance.reportname = String($("#txt_reportname").val());
  3042. var SearchColumns_Data = $("#searchcolumns").select2('data');
  3043. var SearchCols = "";
  3044. for (var i = 0; i < SearchColumns_Data.length; i++) {
  3045. SearchCols += SearchColumns_Data[i].text + "|";
  3046. }
  3047. let connectedAppsArray = $("#connectedapps").select2('data');
  3048. let connectedReportsArray = $("#connectedreports").select2('data').map(x => x.id);
  3049. let connectedApps = connectedAppsArray.map(x => x.id).join("|");
  3050. let connectedReports = connectedReportsArray.join("|");
  3051. let baseValue = $("#dataset_base_value").val();
  3052. if (instance.res && instance.res.UniqueId) {
  3053. if (connectedReportsArray.includes(instance.res.UniqueId)) {
  3054. instance.navigationHelper.hideLoading();
  3055. return MessageHelper.Instance().showError("Same report cannot be selected as connected report", 'divReport_ErrorMessage');
  3056. }
  3057. }
  3058. instance.updateDynamicFilterIndex();
  3059. var fromDate = "";
  3060. var toDate = "";
  3061. var cf_fromDate = Unibase.Platform.Helpers.NavigationHelper.commonFilter_FromDate;
  3062. var cf_toDate = Unibase.Platform.Helpers.NavigationHelper.commonFilter_ToDate;
  3063. if (cf_fromDate != null && cf_toDate != null) {
  3064. fromDate = cf_fromDate.toString();
  3065. toDate = cf_toDate.toString();
  3066. }
  3067. else {
  3068. fromDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().currentDate()), "YYYY/MM/DD");
  3069. toDate = Unibase.Platform.Helpers.DateTimeHelper.Instance().formatLocalDateformat(new Date(Unibase.Platform.Helpers.DateTimeHelper.Instance().currentDate()), "YYYY/MM/DD");
  3070. }
  3071. let uniqueId = instance.res && instance.res.UniqueId ? instance.res.UniqueId : "Bizgaze_Platform_Analytics_Reports_" + ReportName.replace(/\s/g, '');
  3072. if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Table && instance.isCharttoTable) {
  3073. instance.navigationHelper.hideLoading();
  3074. bootbox.confirm("Do you want to switch Chart to Table ?", function (result) {
  3075. if (result) {
  3076. instance.navigationHelper.showLoading();
  3077. instance.isCharttoTable = false;
  3078. instance.saveReport(containerid, reportid);
  3079. }
  3080. });
  3081. }
  3082. else {
  3083. let model = new Unibase.Platform.Analytics.Requests.Report();
  3084. model.SearchColumns = SearchCols;
  3085. model.SubReports = instance.subreportdata;
  3086. model.DependencyApps = dependencyapps.join('|');
  3087. model.DynamicFilters = instance.dynamicFilters;
  3088. model.ReportId = Number($("#txt_reportid").val());
  3089. model.ReportName = String($("#txt_reportname").val());
  3090. model.DisplayName = String($("#txt_displayname").val());
  3091. model.ReportTypeId = instance.reportType;
  3092. model.DataListId = instance.DataListId;
  3093. model.Description = '';
  3094. model.ReportGroupId = Number($("#RptGroup_AutoComplete").val());
  3095. model.ReportColumns = instance.ReportColumns;
  3096. model.ChartColumns = instance.ChartColumns;
  3097. model.RoleSettings = instance.roleSettings;
  3098. model.EditFilters = null;
  3099. model.StaticFilter = instance.queryBuilderJson;
  3100. model.SortColumns = JSON.stringify(SortArry);
  3101. model.TopRecords = Number($("#txt_totalrecords").val());
  3102. model.Parameters = String($("#txt_dynamicparameters").val()).trim();
  3103. model.ChartTypeId = instance._chartBuilder.ChartTypeId;
  3104. model.DateColumn = String($("#DateColumnDropDown").val());
  3105. model.UniqueId = uniqueId;
  3106. model.ViewerId = instance.ViewerId;
  3107. model.ViewerTypeId = instance.ViewerTypeId;
  3108. model.OnClick = String($("#txt_onclick").val());
  3109. model.InstalledAppId = isNaN(Number($("#InstalledApp_AutoComplete option:selected").val())) == true ? 0 : Number($("#InstalledApp_AutoComplete option:selected").val());
  3110. model.IsNotification = instance.IsNotification;
  3111. model.TableTypeId = Number($("#tableTypeSelect").val());
  3112. model.DisplayName = String($("#txt_displayname").val());
  3113. model.IsLegend = instance._chartBuilder.displayLegend;
  3114. model.LegendTypeId = isNaN(Number($("#legend-select").val())) == true ? 0 : Number($("#legend-select").val());
  3115. model.IsInternalReport = instance.IsInternalReport;
  3116. model.IsPivotTree = instance.IsPivotTree;
  3117. model.PivotValue = (instance.pivot.PivotValue_Selected) ? Number(instance.pivot.PivotValue_Selected) : 0;
  3118. model.IsEnableCount = instance.enableCount;
  3119. model.IsEnableGlobalDatepicker = instance.enableGlobalDatepicker;
  3120. model.PaletteId = instance.paletteId;
  3121. model.ColorAppliedTypeId = instance._chartBuilder.colorAppliedOn;
  3122. model.PivotTypeId = instance._pivot.pivotTypeId;
  3123. model.TimeInterval = instance.Interval;
  3124. model.ConnectedApps = connectedApps;
  3125. model.LinkReportId = instance.linkReportId;
  3126. model.IsTreeExpand = instance._pivot.isDataTreeExpand;
  3127. model.ReportIndex = 0;
  3128. model.ViewAll = instance.viewAll;
  3129. model.ConnectedReports = connectedReports;
  3130. model.LegendTitleTypeId = instance._chartBuilder.legendTitleTypeId;
  3131. model.ChartBaseValue = baseValue === undefined ? 0 : Number(baseValue);
  3132. model.FromDate = fromDate;
  3133. model.ToDate = toDate;
  3134. model.EnablePivotTableConfig = instance.enablePivotTableConfig;
  3135. model.Js = String($("#txt_js").val());
  3136. model.PinDynamicFilters = $('#pindynamicfilters_checkbox').is(":checked");
  3137. model.IsDataLabel = $("#isdatalabel").prop("checked");
  3138. model.IsTooltipHeader = $("#showtooltipheader_checkbox").prop("checked");
  3139. model.ShowDataListColsOnDynFil = instance.showDynamicFilters;
  3140. model.TickLabelLength = instance._chartBuilder.tickLabelLength;
  3141. instance.reportManager.saveReport(model).then(function (response) {
  3142. instance.navigationHelper.hideLoading();
  3143. if (response.status == Unibase.Data.Status.Error) {
  3144. MessageHelper.Instance().showError(response.message, 'divReport_ErrorMessage');
  3145. $('#save_as_modal #divReport_ErrorMessage #Bizgaze-messageInfo').addClass('btn mx-4 my-3');
  3146. $('#save_as_modal #divReport_ErrorMessage #Bizgaze-messageInfo').css('border-radius', '.25rem');
  3147. }
  3148. else {
  3149. MessageHelper.Instance().showSuccess(response.message, '');
  3150. $('#' + containerid).modal('hide');
  3151. $('#' + containerid).remove();
  3152. instance._chartBuilder.clearSelectedChartFields();
  3153. instance.clearSelectedTableFields();
  3154. instance.querybuilderCheckboxes = [];
  3155. var res = JSON.parse(response.result);
  3156. if (reportid != 0 && !instance.isReportWidget) {
  3157. const lastContainerId = instance.lastContainerId;
  3158. $(`#${lastContainerId}`).modal("hide");
  3159. $(`#${lastContainerId}`).remove();
  3160. if (lastContainerId.includes('_viewall') || lastContainerId.includes('_ViewAllByUniqueId_') || lastContainerId.includes('fullscreen') || lastContainerId.includes('_linkedreport_')) {
  3161. Unibase.Platform.Helpers.NavigationHelper.reportViewerInstance = Unibase.Platform.Helpers.NavigationHelper.reportViewerInstance.filter(instance => instance.childcontainerid !== lastContainerId);
  3162. instance._reportViewer.report_ViewAll(reportid, 0, lastContainerId, null);
  3163. if (lastContainerId.includes('fullscreen') && lastContainerId.includes('div_dashboardportletwidget')) {
  3164. const widgetContainerId = lastContainerId.replace('fullscreen_', '');
  3165. instance.reloadDashboardPortletWidget(widgetContainerId);
  3166. }
  3167. }
  3168. else {
  3169. instance._reportViewer.InstalledAppId = res.InstalledAppId;
  3170. instance.navigationHelper.popin(res.ReportId, "", instance._reportViewer, null);
  3171. }
  3172. }
  3173. else if (instance.isReportWidget) {
  3174. instance.reloadReportWidget(instance.reportWidgetType);
  3175. if (instance.reportWidgetType == 'portlet' && instance.lastContainerId) {
  3176. $("#" + instance.lastContainerId).modal("hide");
  3177. $("#" + instance.lastContainerId).remove();
  3178. instance._reportViewer.report_ViewAll(0, 0, 0, null);
  3179. }
  3180. }
  3181. }
  3182. });
  3183. }
  3184. }
  3185. }
  3186. reloadDashboardPortletWidget(widgetContainerId) {
  3187. const instance = this;
  3188. const containerId = widgetContainerId ? widgetContainerId : instance.lastContainerId;
  3189. const widgetItem = $(`#${containerId}`).closest('.dashboardwidget-item');
  3190. const widgetId = Number($(`#${containerId}`).closest('.dashboardwidget-item').find('#hf_widgetId').val());
  3191. const portletwidgetid = Number(widgetItem.find('#hf_portletwidgetId').val());
  3192. Unibase.Themes.Compact.Components.ReportWidgets.Default.Instance().getReportWidget(portletwidgetid, widgetId, containerId, [], [], false, 0, false);
  3193. }
  3194. reloadReportWidget(widgetType) {
  3195. const instance = this;
  3196. if (widgetType == 'dashboard') {
  3197. instance.reloadDashboardPortletWidget();
  3198. }
  3199. else if (widgetType == 'portlet') {
  3200. $('._bizgaze_detail_container:visible').find('#layout-detail-tabs .tab-item a.active').trigger('click');
  3201. }
  3202. }
  3203. clearSelectedTableFields() {
  3204. var instance = this;
  3205. instance.datalistColumnsResponseData = [];
  3206. instance.selectedColumns = [];
  3207. instance.ReportColumns = [];
  3208. instance.SortColumns = [];
  3209. instance.stringifyed_SortColumns = "";
  3210. instance.queryBuilderJson = "";
  3211. instance.reportGroupId = 0;
  3212. instance.reportType = 1;
  3213. instance.Categories = [];
  3214. instance.dynamicFilters = [];
  3215. instance.roleSettings = [];
  3216. instance.TenureReport = [];
  3217. instance.subreportdata = [];
  3218. instance.dataTreeRowExpandedColumn = [];
  3219. instance.Edit_BindData = false;
  3220. instance.isEdit = false;
  3221. instance._pivot.pivotTypeId = 0;
  3222. instance.IsInternalReport = true;
  3223. instance.isCharttoTable = false;
  3224. }
  3225. defaultReportGroup() {
  3226. var instance = this;
  3227. if (instance.IsInternalReport) {
  3228. let groupName = "InternalGroup";
  3229. instance.reportManager.getReportGroupByName(groupName).then(function (grpresponse) {
  3230. if (grpresponse.result == "") {
  3231. let model = new Unibase.Platform.Analytics.Reports.Requests.ReportGroup();
  3232. model.GroupName = groupName;
  3233. instance.reportManager.saveReportGroup(model).then(function (response) {
  3234. if (response.result != null) {
  3235. let res = JSON.parse(response.result);
  3236. instance.reportGroupId = res.ReportGroupId;
  3237. $("#RptGroup_AutoComplete").append("<option selected value=" + res.ReportGroupId + ">" + res.GroupName + "</option>");
  3238. }
  3239. });
  3240. }
  3241. else {
  3242. instance.reportGroupId = grpresponse.result.ReportGroupId;
  3243. $("#RptGroup_AutoComplete").append("<option selected value=" + grpresponse.result.ReportGroupId + ">" + grpresponse.result.GroupName + "</option>");
  3244. }
  3245. });
  3246. }
  3247. else {
  3248. $('#RptGroup_AutoComplete').removeAttr('disabled');
  3249. }
  3250. }
  3251. closeReportBuilder(containerid, reportid) {
  3252. var instance = this;
  3253. instance._chartBuilder.clearSelectedChartFields();
  3254. instance.clearSelectedTableFields();
  3255. $('#' + containerid).modal('hide');
  3256. $('#' + containerid).remove();
  3257. }
  3258. loadreportviewerdata(reportid) {
  3259. var instance = this;
  3260. instance.isEdit = true;
  3261. instance.loadDynmaicFilters(reportid);
  3262. instance.bindReportData(reportid);
  3263. }
  3264. loadDynmaicFilters(reportid) {
  3265. var instance = this;
  3266. instance.reportManager.getDynamicFilters(reportid).then(function (response) {
  3267. instance.dynamicFilters = [];
  3268. for (let i = 0; i < response.length; i++) {
  3269. var data = response.find(d => d.Index == i);
  3270. if (data != undefined) {
  3271. var model = new DynamicFilterModel();
  3272. model.DynamicFilterId = data.DynamicFilterId;
  3273. model.IsFilterableColumn = data.IsFilterableColumn.trim();
  3274. model.DataListId = Number(data.DatalistId);
  3275. model.DataListName = data.DataListName != null ? (data.DataListName).toString() : null;
  3276. model.ReportId = data.ReportId;
  3277. model.MappedColumn = data.MappedColumn;
  3278. model.TextColumn = data.TextColumn != null ? data.TextColumn : null;
  3279. model.ValueColumn = data.TextColumn != null ? data.ValueColumn : null;
  3280. model.Index = data.Index;
  3281. model.ControlTypeId = data.ControlTypeId;
  3282. model.DataType = data.DataType;
  3283. model.DisplayName = data.DisplayName;
  3284. model.IsPartition = data.IsPartition;
  3285. model.FontCaseTypeId = data.FontCaseTypeId;
  3286. model.IsDefault = data.IsDefault;
  3287. model.IsUnLimited = data.IsUnLimited;
  3288. model.IsRequired = data.IsRequired;
  3289. model.ParentColumn = data.ParentColumn;
  3290. model.ApplyFor = data.ApplyFor;
  3291. model.IsCustomFilter = data.IsCustomFilter;
  3292. model.ReplaceExistingDates = data.ReplaceExistingDates;
  3293. model.DateRangeTypeId = data.DateRangeTypeId;
  3294. instance.dynamicFilters.push(model);
  3295. Unibase.Platform.Analytics.Reports.DynamicFilter.Instance().dynamicFilters = instance.dynamicFilters;
  3296. let html = instance._reportBuilderTemplate.loadDynamicFilterColumn(Number(model.DynamicFilterId), model.IsFilterableColumn, '');
  3297. $("#dynamic-list-group-wrapper").append(html);
  3298. if (data.DataType == Unibase.Platform.Analytics.Reports.Enums.DataType.dateTime) {
  3299. }
  3300. if (data.IsPartition)
  3301. $("#chk_ispartition_" + data.IsFilterableColumn.trim()).prop("checked", true);
  3302. if (data.IsUnLimited)
  3303. $('#isunlimited_checkbox').prop('checked', true);
  3304. else
  3305. $('#isunlimited_checkbox').prop('checked', false);
  3306. Unibase.Platform.Analytics.Reports.DynamicFilter.Instance().sortDynamicFilter(model);
  3307. }
  3308. }
  3309. });
  3310. }
  3311. bindReportData(reportid) {
  3312. var instance = this;
  3313. var reportObj = {
  3314. ReportId: reportid,
  3315. IsEditReport: true
  3316. };
  3317. instance.reportManager.getReportInfo(reportObj).then(function (response) {
  3318. return __awaiter(this, void 0, void 0, function* () {
  3319. if (response.status == Unibase.Data.Status.Error) {
  3320. return MessageHelper.Instance().showError(response.message, 'div_ReportBuilderErrorMessage');
  3321. }
  3322. var res = response.result.ReportInfo;
  3323. instance.DataListId = res.DataListId;
  3324. instance.DataSourceId = res.DataSourceId;
  3325. instance.topRecords = res.TopRecords;
  3326. yield instance.loadDataListColumns(res.DataListId, null, false, false, instance.DataSourceId);
  3327. instance.initiateDataListSearch();
  3328. instance._chartBuilder.isDataLabel = response.result.ReportInfo.IsDataLabel;
  3329. instance.pinDynamicFilters = res.PinDynamicFilters;
  3330. if (res.appDependents != null) {
  3331. let dependecyapps = [];
  3332. if (res.appDependents.length) {
  3333. for (let i = 0; i < res.appDependents.length; i++) {
  3334. dependecyapps.push(res.appDependents[i].InstalledAppId);
  3335. }
  3336. $("#dependecyapps").val(dependecyapps).trigger("change");
  3337. }
  3338. }
  3339. $("#txt_reportid").val(res.ReportId);
  3340. if (instance.isduplicate != true) {
  3341. $("#txt_reportname").val(res.ReportName);
  3342. $("#txt_reportname").attr("disabled", "disabled");
  3343. }
  3344. if (res.SearchColumns != null) {
  3345. instance.SearchColumns = res.SearchColumns;
  3346. }
  3347. $("#header_datalist_name").text(res.DataListName);
  3348. $("#txt_totalrecords").val(res.TopRecords);
  3349. $("#txt_onclick").val(res.Onclick);
  3350. $("#txt_js").val(res.Js);
  3351. $("#pindynamicfilters_checkbox").prop("checked", res.PinDynamicFilters);
  3352. instance.togglePinDynamicFilters();
  3353. if (res.ShowDataListColsOnDynFil)
  3354. $("#showdatalistcolumns_checkbox").trigger("click");
  3355. if (res.Js) {
  3356. instance.Js = res.Js;
  3357. }
  3358. if (res.InstalledAppId != 0) {
  3359. $("#InstalledApp_AutoComplete").append(`<option value="` + res.InstalledAppId + `">` + res.AppTitle + `</option>`);
  3360. $("#InstalledApp_AutoComplete").val(res.InstalledAppId).trigger("change");
  3361. }
  3362. if (res.ConnectedApps) {
  3363. let connectApps = res.ConnectedApps.split("|");
  3364. $("#connectedapps").val(connectApps).trigger("change");
  3365. }
  3366. if (res.ConnectedReports) {
  3367. let connectedReports = res.ConnectedReports.split("|");
  3368. for (var i = 0; i < connectedReports.length; i++) {
  3369. yield Unibase.Platform.Analytics.Managers.ReportManager.Instance().getReportByUniqueIdEncoded(btoa(connectedReports[i])).then((res) => {
  3370. if (res.result && res.status == Unibase.Data.Status.Success) {
  3371. let option = new Option(res.result.ReportName, connectedReports[i], true);
  3372. $("#connectedreports").append(option);
  3373. }
  3374. });
  3375. }
  3376. ;
  3377. $("#connectedreports").val(connectedReports).trigger("change");
  3378. }
  3379. if (res.IsNotification) {
  3380. $(".chkNotification").attr("checked", "checked");
  3381. }
  3382. instance.Interval = res.TimeInterval;
  3383. instance.IsInternalReport = res.IsInternalReport;
  3384. $('#internalreport_checkbox').prop('checked', instance.IsInternalReport);
  3385. instance.isInternalGroup = res.IsInternalGroup;
  3386. if (instance.isInternalGroup) {
  3387. instance.updateInternalReportCb(true, true);
  3388. }
  3389. if (!res.IsEnableCount) {
  3390. instance.enableCount = false;
  3391. $('#count_checkbox').prop('checked', false);
  3392. }
  3393. else {
  3394. instance.enableCount = true;
  3395. $('#count_checkbox').prop('checked', true);
  3396. }
  3397. if (!res.IsEnableGlobalDatepicker) {
  3398. instance.enableGlobalDatepicker = false;
  3399. $('#enableglobaldatepicker_checkbox').prop('checked', false);
  3400. }
  3401. else {
  3402. instance.enableGlobalDatepicker = true;
  3403. $('#enableglobaldatepicker_checkbox').prop('checked', true);
  3404. }
  3405. Unibase.Platform.Analytics.Components.LinkReport.Instance().linkreportid = res.LinkReportId;
  3406. instance.reportGroupId = res.ReportGroupId;
  3407. $("#RptGroup_AutoComplete").append(`<option value="` + res.ReportGroupId + `">` + res.GroupName + `</option>`);
  3408. $("#RptGroup_AutoComplete").val(res.ReportGroupId);
  3409. $("#txt_displayname").val(res.DisplayName);
  3410. $("#tableTypeSelect").val(res.TableTypeId);
  3411. $('#chkPivotTableConfig_checkbox').prop('checked', res.EnablePivotTableConfig);
  3412. $('#chktreeexpand_checkbox').prop('checked', res.IsTreeExpand);
  3413. instance.enablePivotTableConfig = res.EnablePivotTableConfig;
  3414. instance._pivot.isDataTreeExpand = res.IsTreeExpand;
  3415. instance.IsPivotTree = res.IsPivotTree;
  3416. instance._pivot.pivotTypeId = res.PivotTypeId;
  3417. instance._pivot.intervals = res.TimeInterval;
  3418. instance._chartBuilder.displayLegend = res.IsLegend;
  3419. instance._chartBuilder.tickLabelLength = res.TickLabelLength;
  3420. instance._pivot.selectedpivotType(res.PivotTypeId);
  3421. if (res.StaticFilter != null) {
  3422. instance.queryBuilderJson = res.StaticFilter;
  3423. }
  3424. instance.ViewerTypeId = res.ViewerTypeId;
  3425. instance.ViewerId = res.ViewerId;
  3426. if (res.SortColumns != null) {
  3427. instance.stringifyed_SortColumns = res.SortColumns;
  3428. var sortCols = JSON.parse(res.SortColumns);
  3429. for (var sc = 0; sc < sortCols.length; sc++) {
  3430. let sortcol = sortCols[sc];
  3431. instance.SortColumns.push({ DisplayText: sortcol.Name, SortOrder: sortcol.Order, SortIndex: sc });
  3432. var rptCols;
  3433. if (res.DataSourceId == Number(Unibase.Platform.DataSources.Enums.DataSource.MongoDB)) {
  3434. rptCols = res.ReportColumns.find(s => s.AliasName.toLowerCase() == sortcol.Name.toLowerCase());
  3435. }
  3436. else {
  3437. rptCols = res.ReportColumns.find(s => s.AliasName.toLowerCase() == sortcol.Name);
  3438. }
  3439. var html = instance._reportBuilderTemplate.loadSortSelect2Column(rptCols.ColumnValue, rptCols.AliasName, rptCols.DataType);
  3440. $("#sort_selected_columns").append(html);
  3441. if (instance.SortColumns[0].SortOrder == "Desc") {
  3442. $("#dsl_column_" + sortcol.DisplayText + " .sort-icon").addClass('la-sort-down');
  3443. $("#dsl_column_" + sortcol.DisplayText + " .sort-icon").removeClass('la-sort-up');
  3444. }
  3445. else {
  3446. $("#dsl_column_" + sortcol.DisplayText + " .sort-icon").removeClass('la-sort-down');
  3447. $("#dsl_column_" + sortcol.DisplayText + " .sort-icon").addClass('la-sort-up');
  3448. }
  3449. instance.setSelectOption("sortColumns_select");
  3450. instance._sortColumns();
  3451. }
  3452. }
  3453. instance.roleSettings = res.RoleSettings ? res.RoleSettings : [];
  3454. if (!res.LegendTitleTypeId)
  3455. res.LegendTitleTypeId = Unibase.Platform.Analytics.Enums.LegendTitleType.Column;
  3456. instance.legendTypeId = res.LegendTypeId;
  3457. if (res.LegendTitleTypeId == Unibase.Platform.Analytics.Enums.LegendTitleType.Column) {
  3458. $("#lagendtypecolumn").prop("checked", true);
  3459. instance._chartBuilder.legendTitleTypeId = Unibase.Platform.Analytics.Enums.LegendTitleType.Column;
  3460. }
  3461. else {
  3462. $("#lagendtypedata").prop("checked", true);
  3463. instance._chartBuilder.legendTitleTypeId = Unibase.Platform.Analytics.Enums.LegendTitleType.Data;
  3464. }
  3465. instance._chartBuilder.chartBaseValue = res.ChartBaseValue;
  3466. instance.viewAll = res.ViewAll;
  3467. if (res.LinkReportId) {
  3468. instance.linkReportId = res.LinkReportId;
  3469. }
  3470. instance.res = res;
  3471. let id = "";
  3472. id = res.ReportTypeId == Unibase.Platform.Analytics.Reports.Enums.ReportType.Table ? 'fa fa-table' : 'fa fa-bar-chart-o';
  3473. instance.reportTypeChange(id);
  3474. if (res.ReportTypeId == Unibase.Platform.Analytics.Reports.Enums.ReportType.Table) {
  3475. yield instance.bindTableData(res.ReportColumns, reportid);
  3476. instance.reportType = res.ReportTypeId;
  3477. $("#no_of_records").closest(".card").first().addClass("hidden");
  3478. }
  3479. else {
  3480. instance._chartBuilder.ChartTypeId = res.ChartTypeId;
  3481. instance.reportType = res.ReportTypeId;
  3482. $("#ReportTypeChart").find('i').toggleClass('fa-table fa-bar-chart-o');
  3483. instance._reportBuilderTemplate.loadChartSideBar();
  3484. instance._chartBuilder.sortTooltipColumnsEvent();
  3485. instance._chartBuilder.loadReportTypeChart('fa fa-bar-chart-o');
  3486. $('#tabulatorReportbuilder').addClass('contains-chartview');
  3487. if (res.ColorAppliedTypeId == Unibase.Platform.Analytics.Enums.ColorType.column) {
  3488. $("#columnRadio").prop("checked", true);
  3489. instance._chartBuilder.colorAppliedOn = Unibase.Platform.Analytics.Enums.ColorType.column;
  3490. }
  3491. else {
  3492. $("#rowRadio").prop("checked", true);
  3493. instance._chartBuilder.colorAppliedOn = Unibase.Platform.Analytics.Enums.ColorType.row;
  3494. }
  3495. instance._chartBuilder.ChartSelectedColumns = res.ChartColumns;
  3496. instance._chartBuilder.bindChartColumns(res.ChartColumns);
  3497. instance._chartBuilder.prepareAndBindToolTipColumns(res.ChartColumns);
  3498. instance.paletteId = res.PaletteId;
  3499. const indexInstance = Unibase.Themes.Compact.Components.Index.Instance();
  3500. if (instance.paletteId !== 0 || indexInstance.currentTheme.paletteId) {
  3501. let paletteId = instance.paletteId;
  3502. if (!paletteId) {
  3503. instance._chartBuilder.paletteColors.push(...indexInstance.themePalette);
  3504. }
  3505. else {
  3506. instance._chartBuilder.getpaletteColors(paletteId, false);
  3507. }
  3508. }
  3509. $("#legend-select").val(res.LegendTypeId);
  3510. instance._chartBuilder.loadSelectedLegend(res.LegendTypeId, false);
  3511. instance.bindTableData(res.ReportColumns, reportid);
  3512. }
  3513. instance.loadAllDataListColumns();
  3514. instance.loadSelectedDataListColumns();
  3515. instance._chartBuilder.loadSearchSelect2();
  3516. instance._chartBuilder.loadSortColumnsSelect2();
  3517. instance._chartBuilder.loadDynamicFilterSelect(instance.showDynamicFilters);
  3518. instance._chartBuilder.loadCategoriesSelect2();
  3519. });
  3520. });
  3521. }
  3522. bindTableData(reportColumns, reportid) {
  3523. return __awaiter(this, void 0, void 0, function* () {
  3524. var instance = this;
  3525. if (reportColumns && reportColumns.length) {
  3526. reportColumns = reportColumns.sort((x, y) => x.ColumnIndex - y.ColumnIndex);
  3527. }
  3528. var data = reportColumns;
  3529. instance.pivot.ColumnName = "";
  3530. var pivotChildCol = data.filter(c => c.IsPivotChildColumn == true);
  3531. var pivotParentCol = data.filter(c => c.IsPivotParentColumn == true);
  3532. var groupby = [];
  3533. var categories = [];
  3534. var categories_text = [];
  3535. var searchcolumns = instance.SearchColumns.split('|');
  3536. for (var i = 0; i < data.length; i++) {
  3537. var selCol = new SelectedColumns();
  3538. selCol.ReportColumnId = data[i].ReportColumnId;
  3539. selCol.ColumnId = data[i].ColumnValue;
  3540. selCol.ColumnName = data[i].ReportColumnName;
  3541. selCol.AliasName = data[i].AliasName;
  3542. selCol.DataListColumnName = data[i].DataListColumnName;
  3543. selCol.DlColumnName = data[i].DlColumnName;
  3544. selCol.DataType = data[i].DataType;
  3545. selCol.GroupBy = data[i].GroupBy;
  3546. selCol.Aggregation = data[i].AggrFuncId;
  3547. selCol.SortOrder = data[i].SortType;
  3548. selCol.Isvisible = data[i].Isvisible;
  3549. selCol.SortIndex = data[i].SortIndex;
  3550. selCol.DisplayText = data[i].DisplayText;
  3551. selCol.IsFilterable = data[i].IsFilterable;
  3552. selCol.IsPrimaryKey = data[i].IsPrimaryKey;
  3553. selCol.IsContactColumn = data[i].IsContactColumn;
  3554. selCol.ColumnIndex = data[i].ColumnIndex;
  3555. selCol.GroupByCategory = data[i].GroupByCategory;
  3556. selCol.DistinctOn = data[i].DistinctOn;
  3557. selCol.IsPivotColumn = data[i].IsPivotColumn;
  3558. selCol.IsPivotAggrColumn = data[i].IsPivotAggrColumn;
  3559. selCol.IsPivotTableCol = data[i].IsPivotTableCol;
  3560. selCol.IsDownload = data[i].IsDownload;
  3561. selCol.TableAggrTypeId = data[i].TableAggrTypeId;
  3562. selCol.IsNumFormatting = data[i].IsNumFormatting;
  3563. selCol.IsRowTotal = data[i].IsRowTotal;
  3564. selCol.IsImageUrl = data[i].IsImageUrl;
  3565. selCol.PivotTableAggrTypeId = data[i].PivotTableAggrTypeId;
  3566. selCol.ColumnFormat = data[i].ColumnFormat;
  3567. if (data[i].Width != 0) {
  3568. selCol.Width = data[i].Width;
  3569. }
  3570. selCol.IsDragged = true;
  3571. if (data[i].GroupBy == true) {
  3572. groupby.push(data[i].ColumnValue);
  3573. }
  3574. if (data[i].GroupByCategory == true) {
  3575. categories.push(data[i].ColumnValue);
  3576. categories_text.push({ id: data[i].ColumnValue, text: data[i].ReportColumnName });
  3577. }
  3578. if (data[i].IsFilterable) {
  3579. $("#DropDown_IsFilterable_" + data[i].AliasName).removeClass('hidden');
  3580. }
  3581. else {
  3582. $("#DropDown_IsFilterable_" + data[i].AliasName).addClass('hidden');
  3583. }
  3584. if (data[i].IsPrimaryKey) {
  3585. $("#DropDown_IsPrimaryKey_" + data[i].AliasName).removeClass('hidden');
  3586. }
  3587. else {
  3588. $("#DropDown_IsPrimaryKey_" + data[i].AliasName).addClass('hidden');
  3589. }
  3590. if (data[i].IsContactColumn) {
  3591. $("#DropDown_IsContactColumn_" + data[i].AliasName).removeClass('hidden');
  3592. }
  3593. else {
  3594. $("#DropDown_IsContactColumn_" + data[i].AliasName).addClass('hidden');
  3595. }
  3596. instance._selectedColumns(selCol);
  3597. if (selCol.GroupByCategory) {
  3598. var html = instance._reportBuilderTemplate.loadSelect2Column(selCol.ColumnId, selCol.AliasName, selCol.DataType);
  3599. $("#categories_selected_columns").append(html);
  3600. instance.setSelectOption("categories_select");
  3601. }
  3602. if (data[i].TimeInterval != "" && data[i].TimeInterval != null) {
  3603. instance.TenureReport[data[i].ReportColumnName] = {
  3604. TimeInterval: data[i].TimeInterval
  3605. };
  3606. instance.TenureReport.length = instance.TenureReport.length + 1;
  3607. }
  3608. if (data[i].IsPivotColumn) {
  3609. instance.pivot.ColumnName = data[i].ReportColumnName;
  3610. yield instance.getDistinctData(0, data[i].ReportColumnName, data[i].PivotDateType);
  3611. }
  3612. if (data[i].IsPivotAggrColumn) {
  3613. instance.pivot.AggColumnName = data[i].ReportColumnName;
  3614. instance.pivot.AggFuncId = data[i].AggrFuncId;
  3615. }
  3616. if (data[i].PivotDateType != "") {
  3617. instance.pivot.DateType = data[i].PivotDateType;
  3618. }
  3619. if (data[i].IsPivotChildColumn) {
  3620. instance.pivot.ChildColumnName = pivotChildCol[0].ReportColumnName;
  3621. instance.pivot.ChildColumnValue = data[i].PivotValue;
  3622. instance.pivot.PivotValue_Selected = data[i].PivotValue;
  3623. instance.pivot.ParentColumnName = pivotParentCol[0].ReportColumnName;
  3624. }
  3625. }
  3626. instance.Categories = categories_text;
  3627. instance._chartBuilder.select2DataBinding("");
  3628. if (instance._pivot.pivotTypeId == Unibase.Platform.Analytics.Reports.Enums.PivotType.PivotTable) {
  3629. yield instance._pivot.loadPivotTable(instance.table);
  3630. instance.getSubReports(reportid);
  3631. instance.navigationHelper.hideLoading();
  3632. }
  3633. else {
  3634. yield instance.load_data(instance.table);
  3635. }
  3636. if (instance.TenureReport.length != 0) {
  3637. Unibase.Platform.Analytics.Reports.Tenure.Instance().CheckedTenure();
  3638. instance._chartBuilder.tenureChart('myChart', instance.reportid);
  3639. }
  3640. if (instance.reportType == Unibase.Platform.Analytics.Reports.Enums.ReportType.Chart) {
  3641. if (instance.pivot.ColumnName) {
  3642. instance._chartBuilder.chartType('myChart');
  3643. }
  3644. }
  3645. var SearchCols = [];
  3646. for (var s = 0; s < searchcolumns.length; s++) {
  3647. if (searchcolumns[s] != "") {
  3648. let SearchCol_Index = instance.datalistColumnsResponseData.findIndex(x => x.ColumnName == searchcolumns[s]);
  3649. if (SearchCol_Index != -1) {
  3650. var col = instance.datalistColumnsResponseData[SearchCol_Index].ColumnId;
  3651. SearchCols.push(col);
  3652. }
  3653. }
  3654. }
  3655. $("#searchcolumns").val(SearchCols).trigger("change");
  3656. });
  3657. }
  3658. addParameter() {
  3659. let parameterHtml = "";
  3660. let parameterDropdownHtml = "";
  3661. let elementNumber = this.parameterNumber;
  3662. parameterHtml += `<div class="custom-control custom-radio adj-drawer-open" data-target="para_${elementNumber}">
  3663. <input type="radio" id="customRadio${elementNumber}" name="customRadio" class="custom-control-input">
  3664. <label class="custom-control-label d-flex justify-content-between" for="customRadio${elementNumber}"> Parameter ${elementNumber} <a class="btn btn-xs btn-icon btn-flush-dark btn-rounded flush-soft-hover float-right" href="javascript:;" onclick="Unibase.Platform.Analytics.Reports.ReportBuilder.Instance().removeSelectParameter('para_${elementNumber}')"><span class="btn-icon-wrap"><span class="line-icon"><i class="las la-times font-16"></i></span></span></a></label>
  3665. </div>`;
  3666. $("#parameter-options").append(parameterHtml);
  3667. parameterDropdownHtml += `<div id="para_${elementNumber}" class="biz-mini-adj-drawer">
  3668. <header>
  3669. <h6>Parameter ${elementNumber}</h6>
  3670. <span class="close btn-mini-drawer-close"></span>
  3671. </header>
  3672. <div class="drawer-body">
  3673. <div class="nicescroll-bar">
  3674. <p>All option related to parameter will be listed here</p>
  3675. </div>
  3676. </div>
  3677. <footer>
  3678. <a href="#" class="btn btn-light btn-mini-drawer-close mr-10">clear</a>
  3679. <a href="#" class="btn btn-theme btn-mini-drawer-close">save</a>
  3680. </footer>
  3681. </div>`;
  3682. $("#parameter-dropdown").append(parameterDropdownHtml);
  3683. let para = `para_${elementNumber}`;
  3684. let obj = { paraId: para };
  3685. this.parameterArray.push(obj);
  3686. this.parameterNumber++;
  3687. }
  3688. removeSelectParameter(paraId) {
  3689. var instance = this;
  3690. for (var i = 0; i < instance.parameterArray.length; i++)
  3691. if (instance.parameterArray[i].paraId === paraId) {
  3692. instance.parameterArray.splice(i, 1);
  3693. $("#parameter-options").find('[data-target = ' + paraId + ']').remove();
  3694. $("#parameter-dropdown").find('#' + paraId).remove();
  3695. break;
  3696. }
  3697. }
  3698. error(name) {
  3699. return MessageHelper.Instance().showError('Column -"' + name + '" Already Exists. Please change display text and try again', 'div_ReportBuilderErrorMessage');
  3700. }
  3701. isNotificationCheck() {
  3702. var instance = this;
  3703. var tenantindex = instance.selectedColumns.findIndex(x => x.ColumnName == "tenantid");
  3704. var versionguidindex = instance.selectedColumns.findIndex(x => x.ColumnName == "versionguid");
  3705. if ($('#notification_checkbox').prop('checked') == true) {
  3706. if (tenantindex == -1) {
  3707. let tenantcol = instance.datalistColumnsResponseData.find(d => d.ColumnName == "tenantid");
  3708. if (tenantcol) {
  3709. tenantcol.Isvisible = true;
  3710. instance._selectedColumns(tenantcol);
  3711. }
  3712. else {
  3713. $('#notification_checkbox').prop('checked', false);
  3714. return MessageHelper.Instance().showError("tenantid Column doesn't exist", "div_ReportBuilderErrorMessage");
  3715. }
  3716. if (versionguidindex > -1)
  3717. instance.load_data(instance.table);
  3718. }
  3719. if (versionguidindex == -1) {
  3720. let versionguidcol = instance.datalistColumnsResponseData.find(d => d.ColumnName == "versionguid");
  3721. if (versionguidcol) {
  3722. versionguidcol.Isvisible = true;
  3723. instance._selectedColumns(versionguidcol);
  3724. }
  3725. else {
  3726. $('#notification_checkbox').prop('checked', false);
  3727. return MessageHelper.Instance().showError("versionguid Column doesn't exist", "div_ReportBuilderErrorMessage");
  3728. }
  3729. if (tenantindex > -1)
  3730. instance.load_data(instance.table);
  3731. }
  3732. instance.IsNotification = true;
  3733. }
  3734. else {
  3735. instance.IsNotification = false;
  3736. if (tenantindex > -1)
  3737. instance.selectedColumns.splice(tenantindex);
  3738. if (versionguidindex > -1)
  3739. instance.selectedColumns.splice(versionguidindex);
  3740. return instance.load_data(instance.table);
  3741. }
  3742. if (tenantindex == -1 && versionguidindex == -1 || tenantindex > -1 && versionguidindex > -1)
  3743. instance.load_data(instance.table);
  3744. }
  3745. getSelectedColumns_Select2_Data() {
  3746. let data = [{ id: "0", text: "- Select Columns -" }];
  3747. for (var i = 0; i < this.selectedColumns.length; i++) {
  3748. data.push({ id: this.selectedColumns[i].ColumnId, text: this.selectedColumns[i].AliasName });
  3749. }
  3750. return data;
  3751. }
  3752. getSelectedColumns_Select2_Data_AliasName_As_TextValue() {
  3753. let data = [{ id: "0", text: "- Select Columns -" }];
  3754. for (var i = 0; i < this.selectedColumns.length; i++) {
  3755. data.push({ id: this.selectedColumns[i].AliasName, text: this.selectedColumns[i].AliasName });
  3756. }
  3757. return data;
  3758. }
  3759. getSelect2DataForDynamicFiltersDatalistColumns() {
  3760. let data = [{ id: "0", text: "- Select Columns -" }];
  3761. for (var i = 0; i < this.datalistColumnsResponseData.length; i++) {
  3762. data.push({ id: this.datalistColumnsResponseData[i].ColumnId, text: this.datalistColumnsResponseData[i].AliasName });
  3763. }
  3764. return data;
  3765. }
  3766. bindSearchColumns() {
  3767. var searchcolumns = this.SearchColumns.split('|');
  3768. var SearchCols = [];
  3769. for (var s = 0; s < searchcolumns.length; s++) {
  3770. if (searchcolumns[s] != "") {
  3771. let SearchCol_Index = this.selectedColumns.findIndex(x => x.AliasName == searchcolumns[s]);
  3772. if (SearchCol_Index != -1) {
  3773. var col = this.selectedColumns[SearchCol_Index].ColumnId;
  3774. SearchCols.push(col);
  3775. }
  3776. }
  3777. }
  3778. $("#searchcolumns").val(searchcolumns).trigger("change");
  3779. }
  3780. changeDisplayname() {
  3781. $("#txt_displayname").val($("#txt_reportname").val());
  3782. }
  3783. getSortColumnsStringify() {
  3784. let SortArry = [];
  3785. for (var i = 0; i < this.SortColumns.length; i++) {
  3786. var col = this.SortColumns.find(x => x.SortIndex == i);
  3787. if (col)
  3788. SortArry.push({ Name: col.DisplayText, Order: col.SortOrder });
  3789. }
  3790. return SortArry.length ? JSON.stringify(SortArry) : "";
  3791. }
  3792. bindConnectedReportsSelect2(id) {
  3793. var url = _appsettings.server_url() + '/apis/v4/unibase/platform/analytics/reportsautocompletevalueasuniqueid';
  3794. AutoCompleteHelper.getHelper().Create(id, "hfReportAutoComplete", url, null);
  3795. }
  3796. removeAndUpdateStringfiedSortColumns(AliasName) {
  3797. let index = this.SortColumns.findIndex(i => i.DisplayText === AliasName);
  3798. if (index != -1) {
  3799. this.SortColumns.splice(index, 1);
  3800. let item = `#sort_selected_columns #dsl_column_${AliasName}`;
  3801. $(item).remove();
  3802. this.stringifyed_SortColumns = this.getSortColumnsStringify();
  3803. }
  3804. }
  3805. isDownload(columnId, aliasName) {
  3806. var instance = this;
  3807. let index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  3808. if (index > -1) {
  3809. if ($("#isDownload_" + columnId).prop("checked") == true) {
  3810. instance.selectedColumns[index].IsDownload = true;
  3811. }
  3812. else {
  3813. instance.selectedColumns[index].IsDownload = false;
  3814. }
  3815. }
  3816. }
  3817. isNumFormatting(columnId, aliasName) {
  3818. var instance = this;
  3819. let index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  3820. if (index > -1) {
  3821. if ($("#isNumFormatting_" + columnId).prop("checked") == true) {
  3822. instance.selectedColumns[index].IsNumFormatting = true;
  3823. }
  3824. else {
  3825. instance.selectedColumns[index].IsNumFormatting = false;
  3826. }
  3827. }
  3828. }
  3829. isRowTotal(columnId, aliasName) {
  3830. var instance = this;
  3831. let index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  3832. if (index > -1) {
  3833. if ($("#isRowTotal_" + columnId).prop("checked") == true) {
  3834. instance.selectedColumns[index].IsRowTotal = true;
  3835. }
  3836. else {
  3837. instance.selectedColumns[index].IsRowTotal = false;
  3838. }
  3839. }
  3840. }
  3841. isImageUrl(columnId, aliasName) {
  3842. var instance = this;
  3843. let index = instance.getIndexByAliasName_selectedColumnsArray(aliasName);
  3844. if (index > -1) {
  3845. if ($("#isimageurl_" + columnId).prop("checked") == true) {
  3846. instance.selectedColumns[index].IsImageUrl = true;
  3847. }
  3848. else {
  3849. instance.selectedColumns[index].IsImageUrl = false;
  3850. }
  3851. }
  3852. }
  3853. updateDynamicFilterIndex() {
  3854. $("#dynamic-list-group-wrapper").children().each((i, e) => {
  3855. let colAliasName = $(e).data("isfilterablecolumn");
  3856. if (colAliasName) {
  3857. let idx = this.dynamicFilters.findIndex(x => x.IsFilterableColumn == colAliasName);
  3858. if (idx != -1) {
  3859. this.dynamicFilters[idx].Index = i;
  3860. }
  3861. }
  3862. });
  3863. }
  3864. updateInternalReportCb(isInternalreport, disabled) {
  3865. $("#internalreport_checkbox").prop('checked', isInternalreport).attr("disabled", disabled);
  3866. }
  3867. togglePinDynamicFilters() {
  3868. const instance = this;
  3869. const filter = instance.dynamicFilters.find(x => x.IsRequired === true);
  3870. if (filter) {
  3871. $('#pindynamicfilters_checkbox').prop({ 'checked': true, 'disabled': true });
  3872. }
  3873. else if (!instance.pinDynamicFilters) {
  3874. $('#pindynamicfilters_checkbox').prop({ 'checked': false, 'disabled': false });
  3875. }
  3876. else {
  3877. $('#pindynamicfilters_checkbox').prop('disabled', false);
  3878. }
  3879. }
  3880. static Instance() {
  3881. if (this.rb_instance === undefined) {
  3882. this.rb_instance = new ReportBuilder();
  3883. }
  3884. return this.rb_instance;
  3885. }
  3886. }
  3887. Reports.ReportBuilder = ReportBuilder;
  3888. })(Reports = Analytics.Reports || (Analytics.Reports = {}));
  3889. })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
  3890. })(Platform = Unibase.Platform || (Unibase.Platform = {}));
  3891. })(Unibase || (Unibase = {}));