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 271KB

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