This commit is contained in:
2023-03-20 16:20:33 +00:00
parent 514c3ac3f6
commit 8c7d6421f5
2288 changed files with 712 additions and 73769 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
{"version":3,"file":"datalistbuilder.template.js","sourceRoot":"","sources":["datalistbuilder.template.ts"],"names":[],"mappings":"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"}
@@ -1,130 +0,0 @@
var Unibase;(function(n){let t;(function(n){let t;(function(n){let t;(function(n){class t{loadDocTypeTemplate(){return`<li class="dd-item dd3-item" id="liDoctype_{{DocTypeId}}">
<div class="blockelem create-flowy noselect">
<input type="hidden" name="blockelemtypeid" class="blockelemtypeId" value="{{DocTypeId}}">
<input type="hidden" name="blockelemtypename" class="blockelemtypename" value="{{DocTypeName}}">
<input type="hidden" name="blockelemtablename" class="blockelemtablename" value="{{DocTypeTableName}}">
<div class="grabme" style="margin-top:-5px;"><img src="libs/flowy/assets/grabme.svg"></div>
<div class="blockin">
<div class="blocktext" style="margin-left:-5px;">
<p class="blocktitle text-sun">{{DocTypeName}}</p>
</div>
</div>
</div>
</li>`}loadDataSourceProvidersTemplate(){return`<div class="col-sm-3">
<div class="card text-center"><a href="javascript:;" onclick="Unibase.DataSources.DataLists.DatalistBuilder.Instance().getDataSources({{DataSourceProviderId}},'{{DataSourceProviderName}}')">
<div class="card-body text-center">
<div class="avatar rounder-cornor"><i class="fa fa-cloud-download fa-4x"></i></div>
<div class="mt-2"> {{DataSourceProviderName}}</div>
</div></a>
</div>
</div>`}loadDataSourceTemplate(){return`<div class="col-sm-3">
<div class="card text-center"><a href="javascript:;" onclick="Unibase.DataSources.DataLists.DatalistBuilder.Instance().editDataSource({{DataSourceId}},{{DataSourceProviderId}})">
<div class="card-body text-center">
<div class="avatar rounder-cornor"><i class="fa fa-database fa-4x"></i></div>
<div class="mt-2">{{DataSourceName}}</div>
</div></a>
</div>
</div>`}loadAddDataSourceTemplate(n){return`<div class="card"><div class="card-header"><p class="h5" id="addDataSource_title">Add Data Source</p></div>
<div class="card-body row" id="div_addDataSource_${n}">
<input type="hidden" id="datasource_DataSourceId">
<div class="form-group col-md-4"><label>User Id</label><input type="text" class="form-control" placeholder="User Id"id="datasource_UserId"></div>
<div class="form-group col-md-4"><label>Password</label><input type="text" class="form-control" placeholder="Password" id="datasource_Password"></div>
<div class="form-group col-md-4"><label>DataSourceName</label><input type="text" class="form-control" placeholder="DataSourceName" id="datasource_DataSourceName"></div>
<div class="form-group col-md-4"><label>UserDeviceId</label><input type="text" class="form-control" placeholder="UserDeviceId" id="datasource_UserDeviceId"></div>
<div class="form-group col-md-4"><label>Data Source Provider</label>
<select class="form-control" id="select_datasourceproviders"></select>
</div>
</div>
<div class="card-footer"><button id="btn-addsource-close" class="btn-addsource-close btn btn-secondary btn-sm mr-auto">Close</button><button id="btn-settings-save" class="btn-datasource-save btn btn-primary btn-sm" onclick="Unibase.DataSources.DataLists.DatalistBuilder.Instance().saveDataSource(${n})">Save</button></div>
</div>`}loadDocPropertyTemplate(){return`<input type="hidden" id="doc_tablename" value="{{PropTableName}}"><li class="list-group-item li_docproperty" id="liDocProperty_{{DocPropertyId}}">
<div id="div_docproperty" class="custom-control custom-checkbox"><input type="checkbox" class="chk_DocPropertyId custom-control-input" id="chk_DocPropertyId_{{DocPropertyId}}" value="{{DocPropertyId}}" onchange="DatalistBuilder.Instance().removeDocProperty({{DocPropertyId}})"> <label id="spn_DocpropertyName" class="custom-control-label" for="chk_DocPropertyId_{{DocPropertyId}}">{{DocPropertyName}}</label></div></li>`}loadJoinDoctypesTemplate(n,t,i,r){return` <li class="list-group-item" id="li_join_${r}">
<div class="row">
<div class="col-sm-3"><div id="docproperty_${n}"><p class="font-14"><strong>${t}</strong></p><input type="hidden" id="hf_leftdoctablename_${r}" value="${i}">
<select id="select_docproperties_${n}_${r}"class="form-control">{{Options}}</select>
</div></div>
<div class="col-sm-2"><div id="jointype"><p class="font-14"><strong>Join Type</strong></p>
<select id="select_joins_${r}"class="form-control">
<option value="1" data-name="Inner" >Inner</option>
<option value="2" data-name="LeftOuter" >LeftOuter</option>
<option value="3" data-name="RightOuter" >RightOuter</option>
<option value="4" data-name="FullOuter" >FullOuter</option>
<option value="5" data-name="Cross" >Cross</option>
<option value="6" data-name="Self" >Self</option>
</select>
</div></div>
<div class="col-sm-3"><div id="doctypes_{{DoctypeId}}_${r}"><p class="font-14"><strong>Select DocType</strong></p><input type="hidden" id="hf_rightDoctype_${r}"><input type="hidden" id="hf_rightDoctypeName_${r}"><input type="hidden" id="hf_rightDocTableName_${r}">
<select id="select_doctypes_${r}"class="form-control" onchange="javascript:Unibase.DataSources.DataLists.DatalistBuilder.Instance().getDocPropertiesByDoctypeId(${r})"></select>
</div></div>
<div class="col-sm-3"><div id="doctypeproperty_${r}" class="hidden"><p class="font-14 font-bold" id="selected_doctype_${r}"></p>
<select id="select_docproperty_${r}"class="form-control"></select>
</div></div>
<button class="btn btn-icon btn-primary mt-10" id="btn_addJoins" onclick="javascript:Unibase.DataSources.DataLists.DatalistBuilder.Instance().addJoin(${n},'${t}','${i}',${r})"><i class="fa fa-plus"></i></button>
</div></li>`}addJoinTemplate(){return`<tr class="join-rows"><td width="45%"><input type="hidden" id="leftdoctypeid" value={{LeftDocTypeId}} data-table={{LeftDocTableName}}><span id="td_leftdoctypename">{{LeftDocTypeName}}</span></td>
<td width="50%"><input type="hidden" id="leftdocpropid" value={{LeftDocPropertyId}} ><span id="td_leftdocpropname">{{LeftDocPropertyName}}</span></td>
<td width="45%"><input type="hidden" id="rightdoctypeid" value={{RightDocTypeId}} data-table={{RightDocTableName}} /><span id="td_rightdoctypename">{{RightDocTypeName}}</span></td>
<td width="50%"><input type="hidden" id="rightdocpropid" value={{RightDocPropertyId}} ><span id="td_rightdocpropname">{{RightDocPropertyName}}</span></td>
<td width="50%"><input type="hidden" id="doctype_joinid" value={{JoinId}} ><span id="td_jointype">{{JoinName}}</span></td>
<td width="50%"><a href="javasrcipt:;" class="btn_joindelete"><i class="fa fa-trash text-danger"></i></a></td>
</tr>`}loadJoinDocPropertiesTemplate(){return`<option value="{{DocPropertyId}}">{{DocPropertyName}}<option>`}loadDoctypesDropdownTemplate(){return`<option value="{{DocTypeId}}" data-table="{{DocTableName}}">{{DocTypeName}}<option>`}loadDataSourceProviderDropdownTemplate(){return`<option value="{{DataSourceProviderId}}">{{DataSourceProviderName}}<option>`}loadDataSourceProviders(){return`<div class="card" style="position: initial;height:-webkit-fill-available;"><div class="card-header"><p class="h5">Data Source Providers</div>
<div class="card-body row" id="div_datasourceproviders">
<div id="div_datasourceproviders" class="accordion"></div>
</div>
<div class="card-footer"><button id="btn-data-source-close" class="btn-datasource-close btn btn-secondary btn-sm mr-auto">Close</button></div>
</div>`}loadCustomFilterTemplate(){return`<section id="custom-filter-section" class="modal-content">
<div class="modal-header pa-10" id="reportrolesetting_header">
<strong class="modal-title biz-highlight-bg-color">Custom Filter</strong>
</div>
<div data-simplebar class="simple-scroll-bar modal-body bg-charcoal-light-5">
<div id="divCustomFilter_ErrorMessage"></div>
<div class="sub-report-block" id="cutomfilter_modal">
<div class="customfilter-block card" data-select2-id="24">
<div data-select2-id="23">
<header class="custom-filter-head">
<h6 class="required">
Custom Filters
</h6>
<div class="div_CustomFilter pull-right"><a id="btnAddCustomFilter" onclick="Unibase.Platform.DataSources.Components.CustomFilters.Instance().loadCustomFilterSection()"; class="btn btn-primary text-white"><span class="mr-2">Add</span></a></div>
</button>
</header>
<div class="custom-filters pa-10"></div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer pa-10" id="customfilter_footer">
<button type="button" class="btn btn-sm btn-light mr-auto" id="btn-customfilter-close">Cancel</button>
<button type="button" class="btn btn-sm btn-primary" id="btn-customfilter-add">Save</button>
</div>
</section>`}loadCustomFilterCardTemplate(n){return`<div id="div_CustomFilterSection_`+n+`">
<div class="card custom-filter-`+n+` py-10">
<input type="hidden" name="index" class="hf_index" value="${n}">
<div class="row mx-0">
<div class="col-sm-6" id="div_filtername">
<div class="floating-label-form-group">
<label for="lbl" id="lbl_filtername" class="lbl_txt">Filter Name<span
class="text-danger">*</span></label>
<input type="text" id="txt_filtername_`+n+`"
class="type-control form-control type-control value-control required floating-label-control txt_name"
placeholder="Filter Name *" data-placeholder="Filter Name" data-label="Filter Name *"
data-regularexp="" data-validatemsg="">
</div>
</div>
<div class="col-auto align-self-end div_iswhere"><div class="form-group d-flex align-items-center mb-0">
<input type="checkbox" class="mr-10" onclick="Unibase.Platform.DataSources.Components.CustomFilters.Instance().isWhere(`+n+`)" id="cf_iswhere_checkbox_${n}"><label for="cf_iswhere_checkbox_${n}" class="mb-0">IsWhere</label>
</div></div>
<div class="col-auto align-self-end div_autodate"><div class="form-group d-flex align-items-center mb-0">
<input type="checkbox" class="mr-10" onclick="" id="cf_autodata_checkbox_${n}" checked="true"><label for="cf_autodata_checkbox_${n}" class="mb-0">Auto Data</label>
</div></div>
<div class="col-auto align-self-end div_isrulevalue"><div class="form-group d-flex align-items-center mb-0">
<input type="checkbox" class="mr-10" onclick="" id="cf_isrulevalue_checkbox_${n}" checked="true"><label for="cf_isrulevalue_checkbox_${n}" class="mb-0">IsRuleValue</label>
</div></div>
<div class="col-sm-12 mt-15" id="div_expression_${n}"><div id="expression_builder_${n}" class="d-block"></div></div>
</div>
<a id="RemoveCustomFilter_`+n+`" class="position-absolute r-0 t-0 px-2 py-1"
onclick="Unibase.Platform.DataSources.Components.CustomFilters.Instance().removeCustomFilter(`+n+`)"
style="cursor:pointer"><i class="fa fa-times"></i></a>
</div>
</div>`}static Instance(){return this._instance===undefined&&(this._instance=new n.DatalistBuilder),this._instance}}n.DatalistBuilder=t})(t=n.Templates||(n.Templates={}))})(t=n.DataSources||(n.DataSources={}))})(t=n.Platform||(n.Platform={}))})(Unibase||(Unibase={}));
@@ -1 +0,0 @@
{"version":3,"file":"datalisthiddenfields.js","sourceRoot":"","sources":["datalisthiddenfields.ts"],"names":[],"mappings":"AACA,IAAU,OAAO,CAwBhB;AAxBD,WAAU,OAAO;IACb,IAAiB,WAAW,CAsB3B;IAtBD,WAAiB,WAAW;QACxB,IAAiB,SAAS,CAoBzB;QApBD,WAAiB,SAAS;YACxB,MAAc,2BAA2B;gBAQnC;gBAEA,CAAC;gBAGD,MAAM,CAAC,QAAQ;oBACX,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;wBAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,2BAA2B,EAAE,CAAC;oBACvD,OAAO,IAAI,CAAC,SAAS,CAAC;gBAC1B,CAAC;aACJ;YAlBW,qCAA2B,8BAkBtC,CAAA;QACL,CAAC,EApBgB,SAAS,GAAT,qBAAS,KAAT,qBAAS,QAoBzB;IACL,CAAC,EAtBgB,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAsB3B;AACL,CAAC,EAxBS,OAAO,KAAP,OAAO,QAwBhB"}
@@ -1 +0,0 @@
var Unibase;(function(n){let t;(function(n){let t;(function(n){class t{constructor(){}static Instance(){return this._instance===undefined&&(this._instance=new t),this._instance}}n.datalistbuilderhiddenfields=t})(t=n.DataLists||(n.DataLists={}))})(t=n.DataSources||(n.DataSources={}))})(Unibase||(Unibase={}));
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
var __awaiter=this&&this.__awaiter||function(n,t,i,r){function u(n){return n instanceof i?n:new i(function(t){t(n)})}return new(i||(i=Promise))(function(i,f){function o(n){try{e(r.next(n))}catch(t){f(t)}}function s(n){try{e(r["throw"](n))}catch(t){f(t)}}function e(n){n.done?i(n.value):u(n.value).then(o,s)}e((r=r.apply(n,t||[])).next())})},Unibase;(function(n){let t;(function(t){let i;(function(i){let r;(function(i){class r extends t.Core.BaseComponent{constructor(){super();this.QueryBuilder_Columns=[];this.QueryBuilder_Filters=[];this.queryBuilderString="";this._reportmanager=t.Analytics.Managers.ReportManager.Instance()}cssFiles(){return[]}jsFiles(){return["platform/analytics/managers/reportmanager.js"]}html(){return'<div id="QueryBuilder" class="bg-white hidden"><\/div>'}load(){var n=this;n.loadQueryBuilderDiv(null)}loadReportColumns(n){return __awaiter(this,void 0,void 0,function*(){var t=this;if(n)return yield t._reportmanager.getColumns(n).then(function(n){t.QueryBuilder_Columns=n.result})})}loadDoctypeColumns(t){return __awaiter(this,void 0,void 0,function*(){var i=this;if(t)return yield n.Platform.DataSources.Managers.DocTypeManager.Instance().getDocProperties(t).then(function(n){i.QueryBuilder_Columns=n.result})})}loadQueryBuilderDiv(n){var t=this,i;$("#QueryBuilder").html(`<div id="builder"></div><div id="result" class="mt-20"></div>`);i=t.ReportId;$("#DatalistColumns_Search").val("");t.loadReportColumns(i).then(function(){var i;let r;for(r=$("#builder"),i=0;i<t.QueryBuilder_Columns.length;i++){let r=t.QueryBuilder_Columns[i],n=r.DataType,u=[],f="text",e="text";n==1||n==2?n="string":n==3||n==4?n="integer":n==5?n="double":n==6?n="date":n==7?n="datetime":n==9?(n="string",u=["true","false"],f="radio",e="text"):n="string";t.QueryBuilder_Filters.push({id:r.ReportColumnId,label:r.ReportColumnName,field:r.ReportColumnName,type:n,size:30,unique:!0,input:f,plugin:e,values:u})}if(r.queryBuilder({filters:t.QueryBuilder_Filters}),n!=""&&n!=null&&(t.queryBuilderString=n),t.queryBuilderString!=""&&t.queryBuilderString!=null){t.queryBuilderString=t.queryBuilderString.replace(/ILIKE/g,"LIKE");r.queryBuilder("setRulesFromSQL",t.queryBuilderString);let n=r.queryBuilder("getSQL","named(@)").params;i=0;$.each(n,function(n,t){let r=$("[id^='builder_rule_']")[i].id;t=t.toString().replace(/%/g,"");$("#"+r+" [name='"+r+"_value_0']").append("<option selected='selected'>"+t+"<\/option>");i++})}$(".parse-json").on("click",function(){t.queryBuilderString=r.queryBuilder("getSQL",!1,!0).sql.replace(/\n/g," ").replace(/LIKE/g,"ILIKE")});$("#btn-reset").on("click",function(){t.queryBuilderString="";r.queryBuilder("reset")});$("#builder_group_0").addClass("col-sm-12 mt-20")})}loadQueryBuilderDivByDoctypeId(n){return __awaiter(this,void 0,void 0,function*(){var t=this,i;return $("#QueryBuilder").html(`<div id="builder"></div><div id="result" class="mt-20"></div>`),i=t.DoctypeId,$("#DatalistColumns_Search").val(""),yield t.loadDoctypeColumns(i).then(function(){var i;let r;for(r=$("#builder"),i=0;i<t.QueryBuilder_Columns.length;i++){let r=t.QueryBuilder_Columns[i],n=r.DataTypeId,u=[],f="text",e="text";n==1||n==2?n="string":n==3||n==4?n="integer":n==5?n="double":n==6?n="date":n==7?n="datetime":n==9?(n="string",u=["true","false"],f="radio",e="text"):n="string";t.QueryBuilder_Filters.push({id:r.DocPropertyId,label:r.DocPropertyName,field:r.DocPropertyName,type:n,size:30,unique:!0,input:f,plugin:e,values:u})}if(r.queryBuilder({filters:t.QueryBuilder_Filters}),n!=""&&n!=null&&(t.queryBuilderString=n),t.queryBuilderString!=""&&t.queryBuilderString!=null){t.queryBuilderString=t.queryBuilderString.replace(/ILIKE/g,"LIKE");r.queryBuilder("setRulesFromSQL",t.queryBuilderString);let n=r.queryBuilder("getSQL","named(@)").params;i=0;$.each(n,function(n,t){let r=$("[id^='builder_rule_']")[i].id;t=t.toString().replace(/%/g,"");$("#"+r+" [name='"+r+"_value_0']").append("<option selected='selected'>"+t+"<\/option>");i++})}$(".parse-json").on("click",function(){t.queryBuilderString=r.queryBuilder("getSQL",!1,!0).sql.replace(/\n/g," ").replace(/LIKE/g,"ILIKE")});$("#btn-reset").on("click",function(){t.queryBuilderString="";r.queryBuilder("reset")});$("#builder_group_0").addClass("col-sm-12 mt-20")})})}static Instance(){return this._instance===undefined&&(this._instance=new n.Platform.DataSources.Components.QueryBuilder),this._instance}}i.QueryBuilder=r})(r=i.Components||(i.Components={}))})(i=t.DataSources||(t.DataSources={}))})(t=n.Platform||(n.Platform={}))})(Unibase||(Unibase={}));