123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497 |
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- var Unibase;
- (function (Unibase) {
- let Platform;
- (function (Platform) {
- let Analytics;
- (function (Analytics) {
- let Components;
- (function (Components) {
- class DuplicateReport extends Platform.Core.BaseComponent {
- constructor() {
- super(...arguments);
- this.excludeRoles = [];
- this.includeRoles = [];
- this.viewAll = false;
- this.subReports = [];
- }
- ;
- cssFiles() {
- return [];
- }
- jsFiles() {
- return [];
- }
- html(id, containerid) {
- return `<div class="header bg-white">
- <strong> Duplicate Report<span class="reportname"></span></strong>
- <div class="" id="duplicate_errormsg"></div>
- <a class="btn btn-sm ml-auto"><i class="ti-help-alt" title="help" href="javascript:;" target="_blank"></i></a>
- </div>
- <div class="scrollable bg-light" id="div_duplicatereport">
- <div class="wrapper">
- <div id="Bizgaze_ValidationSummary" class="clear m-b-sm">
- </div>
- <div class="card">
- <div class="card-body">
- <div class="form-row mb-10">
- <div class="form-group col-sm 12">
- <label> Duplicate Report Name </label>
- <input type="text" class="form-control" id="txt_reportname" placeholder="Report Name">
- </div>
- </div>
- <div class="row">
- <div class="col-sm-12">
- <strong class="Report">Everyone can view this report?</strong>
- <label class="switch pull-right">
- <input id="chkIsViewable" data-group="Viewable" checked onchange="Unibase.Platform.Analytics.Components.DuplicateReport.Instance().changeViewAllPermission()" type="checkbox">
- <span></span>
- </label>
- </div>
- </div>
- <div class="row" id="divViewRoles" style="display:none">
- <div class="col-sm-12 m-b">
- <label> Included roles that can view this report</label>
- <input type="hidden" id="hfViewRoles" />
- <select id="txtIncludeViewRoles" style="width:100%" class="b-a" value="" multiple="multiple"></select>
- </div>
-
- </div>
-
- <div class="row">
- <div class="col-sm-12 mb-0">
- <label>Excluded roles that can view this report</label>
- <input type="hidden" id="hfViewRoles" />
- <select id="txtExcludeViewRoles" style="width:100%" class="b-a" value="" placeholder="select role" multiple="multiple"></select>
- </div>
-
- </div>
- </div>
- </div>
- <div class="card mt-2">
- <div class="card-header border-bottom">Select Columns</div>
- <div class="card-body">
- <div class="report_Columns_Duplicate_Fields">
- <div class="dsl-block-wrap dd-list droppable-area1 connected-sortable" id="selectedColumns">
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <footer class="bg-white footer" style="position:absolute; bottom:0px;width:100%;">
- <a href="javascript:;" class="btn btn-light btn-sm mr-auto" id="btn_Close">Close</a>
- <a href="javascript:;" class="btn btn-primary btn-sm " id="btn_Save">Save</a>
- </footer>`;
- }
- load(reportid, containerid, callback) {
- let instance = this;
- this.reportId = reportid;
- this.excludeRoles = [];
- this.includeRoles = [];
- this.viewAll = false;
- this._reportBuilder = Unibase.Platform.Analytics.Reports.ReportBuilder.Instance();
- this._reportManager = Unibase.Platform.Analytics.Managers.ReportManager.Instance();
- $("#chkIsViewable").prop('checked', false);
- $('#divViewRoles').show();
- this.getAllRoles();
- $("#" + containerid + " #btn_Close").click(function () {
- instance._reportBuilder.selectedColumns = [];
- $('#' + containerid).modal('hide');
- $('#' + containerid).remove();
- });
- $("#btn_Save").click((e) => {
- this.saveDuplicateReport();
- });
- let previewscontainerid = Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds[Unibase.Platform.Helpers.NavigationHelper.ModalContainerIds.length - 2];
- instance.getReportColumns(previewscontainerid, containerid);
- }
- getAllRoles() {
- Unibase.Platform.Permissions.Managers.PermissionManager.Instance().getRoles("").then((response) => {
- var widgetpermissions_AllRoles = response.result;
- this.bindSelect2();
- });
- }
- getReportColumns(previewscontainerid, containerid) {
- return __awaiter(this, void 0, void 0, function* () {
- let instance = this;
- let response = Components.ReportViewer.Instance().getReportViewerInstance(previewscontainerid);
- instance.reportInfo = response && response.reportResponse && response.reportResponse.result && response.reportResponse.result.ReportInfo;
- if (!instance.reportInfo) {
- let reportid = Number(Unibase.Themes.Providers.Detail_Settings.Instance().InputParameters.find(x => x.Key.endsWith("_reportid")).Value);
- yield this._reportManager.getFullReportInfo(reportid).then(response => {
- if (response.status == Unibase.Data.Status.Success) {
- if (!response.result)
- return MessageHelper.Instance().showError("Report data does not exists", "");
- instance.reportInfo = response.result;
- }
- else {
- return MessageHelper.Instance().showError(response.message, "");
- }
- });
- }
- instance._reportManager.getSubReports(instance.reportInfo.ReportId).then(function (response) {
- if (response.status == Unibase.Data.Status.Success && response.result && response.result.length) {
- response.result.map(x => { x.SubReportId = 0; x.ReportId = 0; });
- instance.subReports = response.result;
- }
- });
- instance.reportColumns = instance.reportInfo.ReportColumns;
- let html = '';
- for (let i = 0; i <= instance.reportColumns.length - 1; i++) {
- let data = instance.reportColumns[i];
- let columnname = data.DisplayText;
- let columnaliasname = data.AliasName;
- let reportcolumnid = data.ReportColumnId;
- let columnindex = data.ColumnIndex;
- let tablecolumname = data.ReportColumnName.replace(/\s/g, '');
- const visibleIconHtml = `<a href="javascript:;" class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover d-30 column-visible-icon" id="columnVisibleIcon_${reportcolumnid}" onclick="Unibase.Platform.Analytics.Components.DuplicateReport.Instance().showOrHideColumn('${columnaliasname}')">
- <span class="btn-icon-wrap">
- <i class="las ${data.Isvisible ? 'la-eye' : 'la-eye-slash'} font-18 eye-icon" ></i>
- </span>
- </a>`;
- tablecolumname = tablecolumname.replace(/\s/g, '');
- let htmlli = `<li class="list-group-item biz-highlight-bg-color ui_list_sorting ui-sortable-handle"
- data-ReportColumnId="${reportcolumnid}" id="dsl_column_${columnaliasname}"> <input type="hidden"
- id="hfStageid" class="ListColumnIndexInput" value=' ${columnindex}'>
- <div class="row align-items-center">
- <div class="col-sm-1"><span class="pull-left media-xs mr-30 align-items-center d-flex">
- <i class="fa fa-sort text-muted fa mr-10"></i><span class="ListColumnIndex"> ${columnindex}</span>
- </div>
- <div class="col-sm-9"><span class="block columnname" id="">${columnname}</span></div>
- <div class="col-sm-2 d-flex gap-10 justify-content-end">${visibleIconHtml}
- <a class="btn btn-icon btn-flush-biz-theme btn-rounded flush-soft-hover d-30 column-visible-icon"
- href="javascript:;" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
- <span class="btn-icon-wrap">
- <i class="fa fa-ellipsis-h ellipsis-hover-1 " aria-hidden="true"></i></span>
- </a>
- <div class="dropdown-menu z-index-10">
- <input type="textbox" id="txtAliasName_${columnname}" value="${columnname}"
- onchange="Unibase.Platform.Analytics.Components.DuplicateReport.Instance().changeDisplayText('${columnaliasname}')"
- class="mx-2 w-90" placeholder="displaytext">
- <a href="javascript:;" class="dropdown-item"
- onclick="Unibase.Platform.Analytics.Components.DuplicateReport.Instance().linkreport('${tablecolumname}')">Link
- Report</a>
- <a href="javascript:;" class="dropdown-item text-danger"
- onclick="Unibase.Platform.Analytics.Components.DuplicateReport.Instance().removeColumn('${columnaliasname}')">Remove
- Column</a>
- </div>
- </div>
- </li>`;
- html += htmlli;
- }
- $("#" + containerid).find("#selectedColumns").html(html);
- instance.sortSelectedColums(previewscontainerid, containerid);
- $('#selectedColumns').find(".btn-flush-biz-theme").click(function () {
- $(".list-group-item").removeClass("z-index-10");
- $(this).parents(".list-group-item").addClass("z-index-10");
- });
- $('#selectedColumns').find(".column-visible-icon").click(function () {
- const isVisible = $(this).find(".eye-icon").hasClass("la-eye");
- if (isVisible) {
- $(this).find(".eye-icon").removeClass("la-eye").addClass("la-eye-slash");
- }
- else {
- $(this).find(".eye-icon").removeClass("la-eye-slash").addClass("la-eye");
- }
- });
- });
- }
- updatestageindex() {
- var instance = this;
- $(".report_Columns_Duplicate_Fields #selectedColumns").find(".list-group-item").each(function (i, e) {
- $(this).find(".ListColumnIndex").html(`${i}`);
- $(this).find(".ListColumnIndexInput").val(`${i}`);
- });
- instance.updateIndexBasedOnSorting();
- }
- sortSelectedColums(previewscontainerid, containerid) {
- var instance = this;
- let list = $('#selectedColumns');
- if (!list)
- return;
- list.sortable({
- connectWith: "#selectedColumns",
- cursor: 'move',
- update: function (event, ui) {
- instance.updatestageindex();
- }
- });
- }
- updateIndexBasedOnSorting() {
- var instance = this;
- let ui_updated_array = [];
- $(".ui_list_sorting").each(function () {
- var ColumnIndex = $(this).find(".ListColumnIndexInput").val();
- var DisplayText = $(this).find(".columnname").text();
- var ReportColumnId = $(this).attr("data-ReportColumnId");
- ui_updated_array.push({ ReportColumnId, ColumnIndex, DisplayText });
- });
- ui_updated_array = ui_updated_array.reverse();
- function mapOrder(array, order, key) {
- array.sort(function (a, b) {
- var A = a[key], B = b[key];
- if (order.indexOf(A) > order.indexOf(B)) {
- return 1;
- }
- else {
- return -1;
- }
- });
- return array;
- }
- ;
- let ordered_array = mapOrder(instance.reportColumns, ui_updated_array, 'ReportColumnId');
- console.log(ordered_array.reverse());
- }
- bindSelect2() {
- var ViewRoleElementId = "txtIncludeViewRoles";
- var ExcludeRoleElementId = "txtExcludeViewRoles";
- var userinfo = Unibase.Platform.Membership.Infos.Identity.getCurrentUser();
- var url = _appsettings.server_url() + '/apis/v4/unibase/platform/roles/getroles';
- url = url + "/term/";
- url = url.replace('#', '');
- $("#" + ViewRoleElementId).select2({
- multiple: true,
- allowClear: false,
- data: [],
- placeholder: 'Select Role',
- ajax: {
- url: (request) => {
- var reqUrl = url;
- var term = request.term;
- if (term == undefined || term == "")
- reqUrl = reqUrl + term + "/authtoken/" + userinfo.sessionId;
- else
- reqUrl = reqUrl + term + "/authtoken/" + userinfo.sessionId;
- return reqUrl;
- },
- beforeSend: (xhr) => {
- if (userinfo !== undefined && userinfo !== null) {
- xhr.setRequestHeader("Authorization", "Basic " + userinfo.sessionId);
- xhr.setRequestHeader('geoposition', userinfo.latd + ':' + userinfo.lgId);
- }
- },
- delay: 250,
- dataType: 'json',
- processResults: function (data) {
- var selectData = [];
- var Data = JSON.parse(data.result);
- for (var i = 0; i < Data.length; i++) {
- selectData.push({
- id: Data[i].Value,
- text: Data[i].SelectText
- });
- }
- ;
- return { results: selectData };
- }
- },
- templateResult: function (item) { return item.text; },
- templateSelection: function (item) { return item.text; },
- });
- $("#" + ViewRoleElementId).val("").trigger('change');
- $('#txtIncludeViewRoles').on('select2:select', (e) => {
- let result = e.params.data;
- if (Number(result.id) != 0) {
- var roleId = result.id;
- this.addViewRole(this.reportId, roleId, true, false);
- }
- });
- $('#txtIncludeViewRoles').on('select2:unselect', (e) => {
- let result = e.params.data;
- var roleId = Number(result.id);
- if (roleId != 0) {
- let idx = this.includeRoles.findIndex(x => x.RoleId == roleId);
- if (idx != -1) {
- this.includeRoles.splice(idx, 1);
- let ids = this.excludeRoles.map(x => x.RoleId);
- $("#txtExcludeViewRoles").val(ids).trigger('change');
- }
- }
- });
- $("#" + ExcludeRoleElementId).select2({
- multiple: true,
- allowClear: false,
- data: [],
- placeholder: 'Select Role',
- ajax: {
- url: function (request) {
- var reqUrl = url;
- var term = request.term;
- if (term == undefined || term == "")
- reqUrl = reqUrl + term + "/authtoken/" + userinfo.sessionId;
- else
- reqUrl = reqUrl + term + "/authtoken/" + userinfo.sessionId;
- return reqUrl;
- },
- beforeSend: function (xhr) {
- if (userinfo !== undefined && userinfo !== null) {
- xhr.setRequestHeader("Authorization", "Basic " + userinfo.sessionId);
- xhr.setRequestHeader('geoposition', userinfo.latd + ':' + userinfo.lgId);
- }
- },
- delay: 250,
- dataType: 'json',
- processResults: function (data) {
- var selectData = [];
- var Data = JSON.parse(data.result);
- for (var i = 0; i < Data.length; i++) {
- selectData.push({
- id: Data[i].Value,
- text: Data[i].SelectText
- });
- }
- ;
- return { results: selectData };
- }
- },
- templateResult: function (item) { return item.text; },
- templateSelection: function (item) { return item.text; },
- });
- jQuery("#" + ExcludeRoleElementId).val("").trigger('change');
- $('.select2-search__field').css("width", "100%");
- $('#txtExcludeViewRoles').on('select2:select', (e) => {
- let result = e.params.data;
- if (Number(result.id) != 0) {
- var roleId = result.id;
- this.addViewRole(this.reportId, roleId, false, true);
- let includeRoleIdx = this.includeRoles.findIndex(x => x.RoleId == Number(roleId));
- if (includeRoleIdx != -1) {
- this.includeRoles.splice(includeRoleIdx, 1);
- let ids = this.includeRoles.map(x => x.RoleId);
- $("#txtIncludeViewRoles").val(ids).trigger('change');
- }
- }
- });
- $('#txtExcludeViewRoles').on('select2:unselect', (e) => {
- let result = e.params.data;
- var roleId = Number(result.id);
- if (roleId != 0) {
- let idx = this.excludeRoles.findIndex(x => x.RoleId == roleId);
- if (idx != -1) {
- this.excludeRoles.splice(idx, 1);
- }
- }
- });
- }
- changeViewAllPermission() {
- var viewable = $("#chkIsViewable").prop('checked');
- this.viewAll = viewable;
- if (viewable) {
- $('#divViewRoles').hide();
- }
- else
- $('#divViewRoles').show();
- }
- addViewRole(reportId, roleId, IsView, IsExclude) {
- let listOfRoles;
- if (IsView) {
- listOfRoles = this.includeRoles;
- }
- else {
- listOfRoles = this.excludeRoles;
- }
- let idx = listOfRoles.findIndex(x => x.RoleId == roleId);
- if (idx == -1) {
- let reqObj = new Unibase.Platform.Analytics.Requests.ReportRole();
- reqObj.ReportId = reportId;
- reqObj.RoleId = Number(roleId);
- reqObj.ViewReport = IsView;
- reqObj.ExcludeViewReport = IsExclude;
- listOfRoles.push(reqObj);
- }
- }
- removeReportRole(reportId, roleId, IsView, IsExclude) {
- let listOfRoles;
- if (IsView) {
- listOfRoles = this.includeRoles;
- }
- else {
- listOfRoles = this.excludeRoles;
- }
- let idx = listOfRoles.findIndex(x => x.RoleId == roleId);
- if (idx != -1) {
- listOfRoles.splice(idx, 1);
- }
- }
- saveDuplicateReport() {
- for (var i = 0; i < this.reportColumns.length; i++) {
- this._reportBuilder.reportColumns_Array(this.reportColumns[i]);
- }
- let model = new Analytics.Requests.DuplicateReport();
- model.ReportId = this.reportId;
- model.ReportName = $("#txt_reportname").val();
- model.ReportRoles = this.excludeRoles.concat(this.includeRoles);
- model.ViewAll = this.viewAll;
- model.ReportColumns = this.reportColumns;
- model.SubReports = this.subReports;
- Unibase.Platform.Analytics.Managers.ReportManager.Instance().duplicateReport(model).then((res) => {
- if (res.status == Unibase.Data.Status.Success) {
- MessageHelper.Instance().showSuccess("Report duplicate sucessfully created", "duplicate_errormsg");
- return $("#btn_Close").click();
- }
- else {
- return MessageHelper.Instance().showError(res.message, "duplicate_errormsg");
- }
- });
- }
- changeDisplayText(aliasName) {
- let column = this.getReportColumn(aliasName);
- if (column) {
- column.DisplayText = $("#txtAliasName_" + aliasName).val();
- }
- }
- showOrHideColumn(aliasName) {
- let column = this.getReportColumn(aliasName);
- if (column) {
- column.Isvisible = !column.Isvisible;
- }
- }
- removeColumn(aliasName) {
- var sortColumns = JSON.parse(this.reportInfo.SortColumns);
- var index = sortColumns.findIndex(x => x.Name == aliasName);
- if (index > -1) {
- return MessageHelper.Instance().showError("Current column is used as sort column in main report", "duplicate_errormsg");
- }
- let idx = this.getReportColumnIndex(aliasName);
- if (idx > -1) {
- this.reportColumns.splice(idx, 1);
- $("#dsl_column_" + aliasName).remove();
- this.updatestageindex();
- }
- }
- getReportColumnIndex(aliasName) {
- return this.reportColumns.findIndex(x => x.AliasName == aliasName);
- }
- getReportColumn(aliasName) {
- return this.reportColumns.find(x => x.AliasName == aliasName);
- }
- linkreport(aliasname) {
- this._reportBuilder.selectedColumns = this.reportInfo.ReportColumns;
- this._reportBuilder.res = this.reportInfo;
- let sr = Unibase.Platform.Analytics.Reports.SubReport.Instance();
- sr.isReportDuplicate = true;
- sr.linkreport(aliasname);
- }
- static Instance() {
- if (this.instance === undefined) {
- this.instance = new DuplicateReport();
- }
- return this.instance;
- }
- }
- Components.DuplicateReport = DuplicateReport;
- })(Components = Analytics.Components || (Analytics.Components = {}));
- })(Analytics = Platform.Analytics || (Platform.Analytics = {}));
- })(Platform = Unibase.Platform || (Unibase.Platform = {}));
- })(Unibase || (Unibase = {}));
|