From cb4d276a1c9b91a4d643ac437c30f44d81bcfbe5 Mon Sep 17 00:00:00 2001
From: Luca Pazzaglia
Date: Mon, 28 Oct 2013 11:58:34 +0100
Subject: [PATCH] Initial commit
---
.project | 11 +
LICENSE.txt | 356 ++
README.md | 10 +
build-res/subfloor-pkg.xml | 179 +
build-res/subfloor.xml | 1841 ++++++++++
build.properties | 10 +
build.xml | 98 +
cpk.xml | 28 +
dashboards/About.cdfde | 181 +
dashboards/About.wcdf | 2 +
dashboards/Datasources.cdfde | 597 ++++
dashboards/Datasources.wcdf | 2 +
dashboards/Datasources_tmp.cdfde | 981 ++++++
dashboards/Render.cdfde | 323 ++
dashboards/Render.wcdf | 2 +
dashboards/Sample.cda | 20 +
dashboards/Sample.cdfde | 912 +++++
dashboards/Sample.wcdf | 2 +
dashboards/Sample_tmp.cda | 20 +
dashboards/Sample_tmp.cdfde | 1500 ++++++++
endpoints/kettle/_createCdaDatasources.ktr | 314 ++
endpoints/kettle/createCdaDatasources.kjb | 122 +
endpoints/kettle/getPluginVersion.ktr | 180 +
endpoints/kettle/listCdaDatasources.ktr | 204 ++
ivy.xml | 32 +
ivysettings.xml | 25 +
lib/cpf-core-TRUNK-SNAPSHOT.jar | Bin 0 -> 69322 bytes
lib/cpf-pentaho-TRUNK-SNAPSHOT.jar | Bin 0 -> 110685 bytes
lib/cpk-core-TRUNK-SNAPSHOT.jar | Bin 0 -> 45636 bytes
lib/cpk-pentaho-TRUNK-SNAPSHOT.jar | Bin 0 -> 29158 bytes
lib/jackson-annotations-2.2.2.jar | Bin 0 -> 33491 bytes
lib/jackson-core-2.2.2.jar | Bin 0 -> 191738 bytes
lib/jackson-core-asl-1.9.12.jar | Bin 0 -> 232245 bytes
lib/jackson-databind-2.2.2.jar | Bin 0 -> 866104 bytes
lib/jackson-mapper-asl-1.9.12.jar | Bin 0 -> 780385 bytes
plugin.xml | 24 +
.../components/BTable/BTableComponent.js | 725 ++++
resources/components/BTable/component.xml | 311 ++
resources/components/BTable/lib/bt.olap.js | 176 +
resources/components/BTable/lib/bt.query.js | 1111 ++++++
resources/components/BTable/lib/bt.table.js | 3079 +++++++++++++++++
resources/components/BTable/lib/bt.utils.js | 247 ++
resources/components/BTable/lib/btable.css | 219 ++
.../lib/hynds/jquery.multiselect.filter.css | 3 +
.../lib/hynds/jquery.multiselect.filter.js | 174 +
.../lib/jQuery-contextMenu/images/cut.png | Bin 0 -> 648 bytes
.../lib/jQuery-contextMenu/images/door.png | Bin 0 -> 412 bytes
.../images/page_white_add.png | Bin 0 -> 442 bytes
.../images/page_white_copy.png | Bin 0 -> 309 bytes
.../images/page_white_delete.png | Bin 0 -> 536 bytes
.../images/page_white_edit.png | Bin 0 -> 618 bytes
.../images/page_white_paste.png | Bin 0 -> 620 bytes
.../jQuery-contextMenu/jquery.contextMenu.css | 142 +
.../jQuery-contextMenu/jquery.contextMenu.js | 1688 +++++++++
.../jQuery-contextMenu/jquery.ui.position.js | 497 +++
...l-wheels_analysis_steelwheels.mondrian.cda | 1 +
resources/styles/BTable.html | 111 +
resources/styles/cpk.html | 49 +
settings.xml | 12 +
static/custom/css/BTable.css | 83 +
static/custom/img/biztech.png | Bin 0 -> 14728 bytes
static/custom/img/btable.png | Bin 0 -> 5430 bytes
static/custom/img/icons/asc.png | Bin 0 -> 481 bytes
static/custom/img/icons/basc.png | Bin 0 -> 557 bytes
static/custom/img/icons/bdesc.png | Bin 0 -> 546 bytes
static/custom/img/icons/clear.png | Bin 0 -> 558 bytes
static/custom/img/icons/desc.png | Bin 0 -> 475 bytes
static/custom/img/icons/locked.png | Bin 0 -> 3169 bytes
static/custom/img/icons/unlocked.png | Bin 0 -> 3249 bytes
static/custom/js/BTable.js | 60 +
static/system/css/borderBox.css | 10 +
static/system/css/cpk.css | 272 ++
static/system/css/liquid.css | 196 ++
static/system/img/pluginLogo.png | Bin 0 -> 7174 bytes
static/system/js/cpk.js | 0
version.xml | 2 +
76 files changed, 17144 insertions(+)
create mode 100644 .project
create mode 100644 LICENSE.txt
create mode 100644 README.md
create mode 100644 build-res/subfloor-pkg.xml
create mode 100644 build-res/subfloor.xml
create mode 100644 build.properties
create mode 100644 build.xml
create mode 100644 cpk.xml
create mode 100644 dashboards/About.cdfde
create mode 100644 dashboards/About.wcdf
create mode 100644 dashboards/Datasources.cdfde
create mode 100644 dashboards/Datasources.wcdf
create mode 100644 dashboards/Datasources_tmp.cdfde
create mode 100644 dashboards/Render.cdfde
create mode 100644 dashboards/Render.wcdf
create mode 100644 dashboards/Sample.cda
create mode 100644 dashboards/Sample.cdfde
create mode 100644 dashboards/Sample.wcdf
create mode 100644 dashboards/Sample_tmp.cda
create mode 100644 dashboards/Sample_tmp.cdfde
create mode 100644 endpoints/kettle/_createCdaDatasources.ktr
create mode 100644 endpoints/kettle/createCdaDatasources.kjb
create mode 100644 endpoints/kettle/getPluginVersion.ktr
create mode 100644 endpoints/kettle/listCdaDatasources.ktr
create mode 100644 ivy.xml
create mode 100644 ivysettings.xml
create mode 100644 lib/cpf-core-TRUNK-SNAPSHOT.jar
create mode 100644 lib/cpf-pentaho-TRUNK-SNAPSHOT.jar
create mode 100644 lib/cpk-core-TRUNK-SNAPSHOT.jar
create mode 100644 lib/cpk-pentaho-TRUNK-SNAPSHOT.jar
create mode 100644 lib/jackson-annotations-2.2.2.jar
create mode 100644 lib/jackson-core-2.2.2.jar
create mode 100644 lib/jackson-core-asl-1.9.12.jar
create mode 100644 lib/jackson-databind-2.2.2.jar
create mode 100644 lib/jackson-mapper-asl-1.9.12.jar
create mode 100644 plugin.xml
create mode 100644 resources/components/BTable/BTableComponent.js
create mode 100644 resources/components/BTable/component.xml
create mode 100644 resources/components/BTable/lib/bt.olap.js
create mode 100644 resources/components/BTable/lib/bt.query.js
create mode 100644 resources/components/BTable/lib/bt.table.js
create mode 100644 resources/components/BTable/lib/bt.utils.js
create mode 100644 resources/components/BTable/lib/btable.css
create mode 100644 resources/components/BTable/lib/hynds/jquery.multiselect.filter.css
create mode 100644 resources/components/BTable/lib/hynds/jquery.multiselect.filter.js
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/images/cut.png
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/images/door.png
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/images/page_white_add.png
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/images/page_white_copy.png
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/images/page_white_delete.png
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/images/page_white_edit.png
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/images/page_white_paste.png
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/jquery.contextMenu.css
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/jquery.contextMenu.js
create mode 100644 resources/components/BTable/lib/jQuery-contextMenu/jquery.ui.position.js
create mode 100644 resources/datasources/SampleData_steel-wheels_analysis_steelwheels.mondrian.cda
create mode 100644 resources/styles/BTable.html
create mode 100644 resources/styles/cpk.html
create mode 100644 settings.xml
create mode 100644 static/custom/css/BTable.css
create mode 100644 static/custom/img/biztech.png
create mode 100644 static/custom/img/btable.png
create mode 100644 static/custom/img/icons/asc.png
create mode 100644 static/custom/img/icons/basc.png
create mode 100644 static/custom/img/icons/bdesc.png
create mode 100644 static/custom/img/icons/clear.png
create mode 100644 static/custom/img/icons/desc.png
create mode 100644 static/custom/img/icons/locked.png
create mode 100644 static/custom/img/icons/unlocked.png
create mode 100644 static/custom/js/BTable.js
create mode 100644 static/system/css/borderBox.css
create mode 100644 static/system/css/cpk.css
create mode 100644 static/system/css/liquid.css
create mode 100644 static/system/img/pluginLogo.png
create mode 100644 static/system/js/cpk.js
create mode 100644 version.xml
diff --git a/.project b/.project
new file mode 100644
index 0000000..a01f1f9
--- /dev/null
+++ b/.project
@@ -0,0 +1,11 @@
+
+
+ BTable
+
+
+
+
+
+
+
+
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..4b1e63e
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,356 @@
+
+Mozilla Public License, version 2.0
+
+1. Definitions
+
+1.1. “Contributor”
+
+ means each individual or legal entity that creates, contributes to the
+ creation of, or owns Covered Software.
+
+1.2. “Contributor Version”
+
+ means the combination of the Contributions of others (if any) used by a
+ Contributor and that particular Contributor’s Contribution.
+
+1.3. “Contribution”
+
+ means Covered Software of a particular Contributor.
+
+1.4. “Covered Software”
+
+ means Source Code Form to which the initial Contributor has attached the
+ notice in Exhibit A, the Executable Form of such Source Code Form, and
+ Modifications of such Source Code Form, in each case including portions
+ thereof.
+
+1.5. “Incompatible With Secondary Licenses”
+
+ means
+
+ a. that the initial Contributor has attached the notice described in
+ Exhibit B to the Covered Software; or
+
+ b. that the Covered Software was made available under the terms of version
+ 1.1 or earlier of the License, but not also under the terms of a
+ Secondary License.
+
+1.6. “Executable Form”
+
+ means any form of the work other than Source Code Form.
+
+1.7. “Larger Work”
+
+ means a work that combines Covered Software with other material, in a separate
+ file or files, that is not Covered Software.
+
+1.8. “License”
+
+ means this document.
+
+1.9. “Licensable”
+
+ means having the right to grant, to the maximum extent possible, whether at the
+ time of the initial grant or subsequently, any and all of the rights conveyed by
+ this License.
+
+1.10. “Modifications”
+
+ means any of the following:
+
+ a. any file in Source Code Form that results from an addition to, deletion
+ from, or modification of the contents of Covered Software; or
+
+ b. any new file in Source Code Form that contains any Covered Software.
+
+1.11. “Patent Claims” of a Contributor
+
+ means any patent claim(s), including without limitation, method, process,
+ and apparatus claims, in any patent Licensable by such Contributor that
+ would be infringed, but for the grant of the License, by the making,
+ using, selling, offering for sale, having made, import, or transfer of
+ either its Contributions or its Contributor Version.
+
+1.12. “Secondary License”
+
+ means either the GNU General Public License, Version 2.0, the GNU Lesser
+ General Public License, Version 2.1, the GNU Affero General Public
+ License, Version 3.0, or any later versions of those licenses.
+
+1.13. “Source Code Form”
+
+ means the form of the work preferred for making modifications.
+
+1.14. “You” (or “Your”)
+
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, “You” includes any entity that controls, is
+ controlled by, or is under common control with You. For purposes of this
+ definition, “control” means (a) the power, direct or indirect, to cause
+ the direction or management of such entity, whether by contract or
+ otherwise, or (b) ownership of more than fifty percent (50%) of the
+ outstanding shares or beneficial ownership of such entity.
+
+
+2. License Grants and Conditions
+
+2.1. Grants
+
+ Each Contributor hereby grants You a world-wide, royalty-free,
+ non-exclusive license:
+
+ a. under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or as
+ part of a Larger Work; and
+
+ b. under Patent Claims of such Contributor to make, use, sell, offer for
+ sale, have made, import, and otherwise transfer either its Contributions
+ or its Contributor Version.
+
+2.2. Effective Date
+
+ The licenses granted in Section 2.1 with respect to any Contribution become
+ effective for each Contribution on the date the Contributor first distributes
+ such Contribution.
+
+2.3. Limitations on Grant Scope
+
+ The licenses granted in this Section 2 are the only rights granted under this
+ License. No additional rights or licenses will be implied from the distribution
+ or licensing of Covered Software under this License. Notwithstanding Section
+ 2.1(b) above, no patent license is granted by a Contributor:
+
+ a. for any code that a Contributor has removed from Covered Software; or
+
+ b. for infringements caused by: (i) Your and any other third party’s
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+ c. under Patent Claims infringed by Covered Software in the absence of its
+ Contributions.
+
+ This License does not grant any rights in the trademarks, service marks, or
+ logos of any Contributor (except as may be necessary to comply with the
+ notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+ No Contributor makes additional grants as a result of Your choice to
+ distribute the Covered Software under a subsequent version of this License
+ (see Section 10.2) or under the terms of a Secondary License (if permitted
+ under the terms of Section 3.3).
+
+2.5. Representation
+
+ Each Contributor represents that the Contributor believes its Contributions
+ are its original creation(s) or it has sufficient rights to grant the
+ rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+ This License is not intended to limit any rights You have under applicable
+ copyright doctrines of fair use, fair dealing, or other equivalents.
+
+2.7. Conditions
+
+ Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
+ Section 2.1.
+
+
+3. Responsibilities
+
+3.1. Distribution of Source Form
+
+ All distribution of Covered Software in Source Code Form, including any
+ Modifications that You create or to which You contribute, must be under the
+ terms of this License. You must inform recipients that the Source Code Form
+ of the Covered Software is governed by the terms of this License, and how
+ they can obtain a copy of this License. You may not attempt to alter or
+ restrict the recipients’ rights in the Source Code Form.
+
+3.2. Distribution of Executable Form
+
+ If You distribute Covered Software in Executable Form then:
+
+ a. such Covered Software must also be made available in Source Code Form,
+ as described in Section 3.1, and You must inform recipients of the
+ Executable Form how they can obtain a copy of such Source Code Form by
+ reasonable means in a timely manner, at a charge no more than the cost
+ of distribution to the recipient; and
+
+ b. You may distribute such Executable Form under the terms of this License,
+ or sublicense it under different terms, provided that the license for
+ the Executable Form does not attempt to limit or alter the recipients’
+ rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+ You may create and distribute a Larger Work under terms of Your choice,
+ provided that You also comply with the requirements of this License for the
+ Covered Software. If the Larger Work is a combination of Covered Software
+ with a work governed by one or more Secondary Licenses, and the Covered
+ Software is not Incompatible With Secondary Licenses, this License permits
+ You to additionally distribute such Covered Software under the terms of
+ such Secondary License(s), so that the recipient of the Larger Work may, at
+ their option, further distribute the Covered Software under the terms of
+ either this License or such Secondary License(s).
+
+3.4. Notices
+
+ You may not remove or alter the substance of any license notices (including
+ copyright notices, patent notices, disclaimers of warranty, or limitations
+ of liability) contained within the Source Code Form of the Covered
+ Software, except that You may alter any license notices to the extent
+ required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+ You may choose to offer, and to charge a fee for, warranty, support,
+ indemnity or liability obligations to one or more recipients of Covered
+ Software. However, You may do so only on Your own behalf, and not on behalf
+ of any Contributor. You must make it absolutely clear that any such
+ warranty, support, indemnity, or liability obligation is offered by You
+ alone, and You hereby agree to indemnify every Contributor for any
+ liability incurred by such Contributor as a result of warranty, support,
+ indemnity or liability terms You offer. You may include additional
+ disclaimers of warranty and limitations of liability specific to any
+ jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+
+ If it is impossible for You to comply with any of the terms of this License
+ with respect to some or all of the Covered Software due to statute, judicial
+ order, or regulation then You must: (a) comply with the terms of this License
+ to the maximum extent possible; and (b) describe the limitations and the code
+ they affect. Such description must be placed in a text file included with all
+ distributions of the Covered Software under this License. Except to the
+ extent prohibited by statute or regulation, such description must be
+ sufficiently detailed for a recipient of ordinary skill to be able to
+ understand it.
+
+5. Termination
+
+5.1. The rights granted under this License will terminate automatically if You
+ fail to comply with any of its terms. However, if You become compliant,
+ then the rights granted under this License from a particular Contributor
+ are reinstated (a) provisionally, unless and until such Contributor
+ explicitly and finally terminates Your grants, and (b) on an ongoing basis,
+ if such Contributor fails to notify You of the non-compliance by some
+ reasonable means prior to 60 days after You have come back into compliance.
+ Moreover, Your grants from a particular Contributor are reinstated on an
+ ongoing basis if such Contributor notifies You of the non-compliance by
+ some reasonable means, this is the first time You have received notice of
+ non-compliance with this License from such Contributor, and You become
+ compliant prior to 30 days after Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+ infringement claim (excluding declaratory judgment actions, counter-claims,
+ and cross-claims) alleging that a Contributor Version directly or
+ indirectly infringes any patent, then the rights granted to You by any and
+ all Contributors for the Covered Software under Section 2.1 of this License
+ shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user
+ license agreements (excluding distributors and resellers) which have been
+ validly granted by You or Your distributors under this License prior to
+ termination shall survive termination.
+
+6. Disclaimer of Warranty
+
+ Covered Software is provided under this License on an “as is” basis, without
+ warranty of any kind, either expressed, implied, or statutory, including,
+ without limitation, warranties that the Covered Software is free of defects,
+ merchantable, fit for a particular purpose or non-infringing. The entire
+ risk as to the quality and performance of the Covered Software is with You.
+ Should any Covered Software prove defective in any respect, You (not any
+ Contributor) assume the cost of any necessary servicing, repair, or
+ correction. This disclaimer of warranty constitutes an essential part of this
+ License. No use of any Covered Software is authorized under this License
+ except under this disclaimer.
+
+7. Limitation of Liability
+
+ Under no circumstances and under no legal theory, whether tort (including
+ negligence), contract, or otherwise, shall any Contributor, or anyone who
+ distributes Covered Software as permitted above, be liable to You for any
+ direct, indirect, special, incidental, or consequential damages of any
+ character including, without limitation, damages for lost profits, loss of
+ goodwill, work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses, even if such party shall have been
+ informed of the possibility of such damages. This limitation of liability
+ shall not apply to liability for death or personal injury resulting from such
+ party’s negligence to the extent applicable law prohibits such limitation.
+ Some jurisdictions do not allow the exclusion or limitation of incidental or
+ consequential damages, so this exclusion and limitation may not apply to You.
+
+8. Litigation
+
+ Any litigation relating to this License may be brought only in the courts of
+ a jurisdiction where the defendant maintains its principal place of business
+ and such litigation shall be governed by laws of that jurisdiction, without
+ reference to its conflict-of-law provisions. Nothing in this Section shall
+ prevent a party’s ability to bring cross-claims or counter-claims.
+
+9. Miscellaneous
+
+ This License represents the complete agreement concerning the subject matter
+ hereof. If any provision of this License is held to be unenforceable, such
+ provision shall be reformed only to the extent necessary to make it
+ enforceable. Any law or regulation which provides that the language of a
+ contract shall be construed against the drafter shall not be used to construe
+ this License against a Contributor.
+
+
+10. Versions of the License
+
+10.1. New Versions
+
+ Mozilla Foundation is the license steward. Except as provided in Section
+ 10.3, no one other than the license steward has the right to modify or
+ publish new versions of this License. Each version will be given a
+ distinguishing version number.
+
+10.2. Effect of New Versions
+
+ You may distribute the Covered Software under the terms of the version of
+ the License under which You originally received the Covered Software, or
+ under the terms of any subsequent version published by the license
+ steward.
+
+10.3. Modified Versions
+
+ If you create software not governed by this License, and you want to
+ create a new license for such software, you may create and use a modified
+ version of this License if you rename the license and remove any
+ references to the name of the license steward (except to note that such
+ modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary Licenses
+ If You choose to distribute Source Code Form that is Incompatible With
+ Secondary Licenses under the terms of this version of the License, the
+ notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+
+ This Source Code Form is subject to the
+ terms of the Mozilla Public License, v.
+ 2.0. If a copy of the MPL was not
+ distributed with this file, You can
+ obtain one at
+ http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular file, then
+You may include the notice in a location (such as a LICENSE file in a relevant
+directory) where a recipient would be likely to look for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - “Incompatible With Secondary Licenses” Notice
+
+ This Source Code Form is “Incompatible
+ With Secondary Licenses”, as defined by
+ the Mozilla Public License, v. 2.0.
+
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..c7c0903
--- /dev/null
+++ b/README.md
@@ -0,0 +1,10 @@
+BTable
+======
+
+A drill-anywhere component for the Pentaho Community Dashboard Designer (CDE).
+
+Video tutorial and more on [www.biztech.it/btable](http://www.biztech.it/btable).
+
+BTable is released under the [Mozilla Public Licence (MPLv2)](http://www.mozilla.org/MPL/2.0/).
+
+This plugin has been made using [Sparkl](https://github.com/webdetails/sparkl).
diff --git a/build-res/subfloor-pkg.xml b/build-res/subfloor-pkg.xml
new file mode 100644
index 0000000..5e010ec
--- /dev/null
+++ b/build-res/subfloor-pkg.xml
@@ -0,0 +1,179 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build-res/subfloor.xml b/build-res/subfloor.xml
new file mode 100644
index 0000000..84f2fae
--- /dev/null
+++ b/build-res/subfloor.xml
@@ -0,0 +1,1841 @@
+
+
+
+
+
+
+-------------------------------------------------------------------------------
+ subfloor.xml provides tasks needed to perform a project build.
+ It is typically not used directly but imported by each project's build.xml
+ file. The build.xml file can override tasks when customization is required.
+
+MAIN TARGETS
+============
+ * clean / clean-all :
+ remove all artifacts of the build, clean-all adds the removal
+ of any library or jar dependencies downloaded as part of the build
+
+ * resolve :
+ download/refresh library or jar dependencies needed for the build (uses Apache IVY)
+
+ * compile :
+ run javac on the project's source
+
+ * jar :
+ creates a jar file
+
+ * dist :
+ creates all project distributables
+
+ * test :
+ runs JUnit tests from your project's test source
+
+SPECIAL TARGETS
+============
+ * publish-local :
+ builds a jar for your project and registers it with the local artifact repository isolated
+ to your machine at $HOME/.ivy2/local. Further executions of the the resolve target by this
+ or other projects will find your published jar.
+
+ * ivy-clean* :
+ this family of targets helps reset your IVY environment in the event that you are having
+ difficulty resolving dependencies
+
+TYPICAL TARGET SEQUENCE
+============
+ * clean-all resolve dist :
+ a good start to build all project distributables from scratch. Note that jar dependencies
+ will not be downloaded unless you explicitly run the resolve target. We made the resolution
+ and retrieval completely discretionary since there are many situations in which
+ you will not want to get or refresh dependencies, e.g. if you are offline with no Internet
+ access. In such case, you could just run "dist" if the set of jars you already have are
+ sufficient.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/build.properties b/build.properties
new file mode 100644
index 0000000..2222922
--- /dev/null
+++ b/build.properties
@@ -0,0 +1,10 @@
+project.revision=STABLE
+# Stage: TRUNK | STABLE | BETA | other branch
+project.stage=STABLE
+# Version: a numeric value or SNAPSHOT. SNAPSHOT is replaced by DSTAMP
+project.version=1.0
+ivy.artifact.id=BTable
+ivy.artifact.group=Biz Tech
+impl.title=BTable - A Drill-Anywhere Component For CDE
+testsrc.dir=test
+dependency.bi-platform.revision=4.8.0-stable
diff --git a/build.xml b/build.xml
new file mode 100644
index 0000000..b4b0521
--- /dev/null
+++ b/build.xml
@@ -0,0 +1,98 @@
+
+
+ This build file is used to create the BTable project
+ and works with the common_build.xml file.
+
+
+
+
+
+
+
+
+ distribution.version = ${distribution.version}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <version>
+ <branch>TRUNK</branch>
+ <version>${distribution.version}</version>
+ <name>Trunk</name>
+ <package_url>not defined</package_url>
+ <description>@PLUGIN_PACKAGE_DESCRIPTION</description>
+ <build_id>${sequential.build.id}</build_id>
+ </version>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cpk.xml b/cpk.xml
new file mode 100644
index 0000000..be1c526
--- /dev/null
+++ b/cpk.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+ BTable - A Drill-Anywhere Component For CDE
+ BTable
+ info@biztech.it
+ Massimo Bonometto, Luca Pazzaglia
+ Biz Tech
+ www.biztech.it
+ 2013-10-11
+ 1.0
+
+
diff --git a/dashboards/About.cdfde b/dashboards/About.cdfde
new file mode 100644
index 0000000..fd83635
--- /dev/null
+++ b/dashboards/About.cdfde
@@ -0,0 +1,181 @@
+{
+ "layout": {
+ "title": "About",
+ "rows": [
+ {
+ "id": "0272ca53-b773-3c47-221c-6adcef471d28",
+ "type": "LayoutResourceCode",
+ "typeDesc": "Resource",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "css",
+ "type": "Id"
+ },
+ {
+ "name": "resourceType",
+ "value": "Css",
+ "type": "Label"
+ },
+ {
+ "name": "resourceCode",
+ "value": ".container {\n margin-top: 18px;\n margin-bottom: 0px;\n margin-left: 19px;\n width: 900px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n}\n ",
+ "type": "Resource"
+ }
+ ]
+ },
+ {
+ "id": "00f303f9-b2ce-e836-a339-dc2ef7aeba67",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "fd2467eb-e6bc-811b-22c9-00f590b5396f",
+ "type": "LayoutColumn",
+ "typeDesc": "Column",
+ "parent": "00f303f9-b2ce-e836-a339-dc2ef7aeba67",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id"
+ },
+ {
+ "name": "columnSpan",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrepend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnAppend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrependTop",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnAppendBottom",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBigBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "c6437c24-ba57-3d27-b821-5706d9c26d5f",
+ "type": "LayoutHtml",
+ "typeDesc": "Html",
+ "parent": "fd2467eb-e6bc-811b-22c9-00f590b5396f",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id"
+ },
+ {
+ "name": "html",
+ "value": "\n BTable is a component for the Community Dashboard Designer (CDE) \n that extends the standard Table Component with OLAP functionalities and provides \n a new drill experience.\n
\n\n Dashboard users can easily interact with the table through a context menu that allows to:\n
\n add, change or remove dimensions \n add, change or remove measures \n create crosstables \n display grand totals and subtotals \n sort by dimensions or measures \n add additional filters to the table \n unlink the table from the dashboard context to stop listening to external parameters \n drill a cell or drill a row \n swap axis \n export data and also formatting to Excel \n \n Dashboard designers can build flexible and rich tables with little effort, \n indicating a Mondrian schema and a JNDI connection and writing the initial \n query in a more friendly manner.\n
\n\n To use BTable with your data, first you need to create CDA data sources for BTable. \n Click Data Sources in the top menu to create them importing Mondrian catalogs.\n
\n\n A BTable data source for Steel Wheels is provided with this plugin to run the \n sample dashboard. Check you have the same Mondrian schema location and JNDI in your system.\n
\n\n Documentation, video tutorials and more on \n www.biztech.it/btable .\n
\n\n For questions, suggestions and bugs reporting use \n Pentaho Forums .\n
\n\n Have fun with BTable!\n
",
+ "type": "Html"
+ },
+ {
+ "name": "fontSize",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "color",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ }
+ ]
+ },
+ "components": {
+ "rows": []
+ },
+ "datasources": {
+ "rows": []
+ },
+ "filename": "/system/BTable/dashboards/About.cdfde"
+}
\ No newline at end of file
diff --git a/dashboards/About.wcdf b/dashboards/About.wcdf
new file mode 100644
index 0000000..c3a2e73
--- /dev/null
+++ b/dashboards/About.wcdf
@@ -0,0 +1,2 @@
+
+About Biz Tech blueprint false
\ No newline at end of file
diff --git a/dashboards/Datasources.cdfde b/dashboards/Datasources.cdfde
new file mode 100644
index 0000000..c4176eb
--- /dev/null
+++ b/dashboards/Datasources.cdfde
@@ -0,0 +1,597 @@
+{
+ "layout": {
+ "title": "Datasources",
+ "rows": [
+ {
+ "id": "ff454d8f-0e5a-1c25-6a53-8a402cc3ad76",
+ "type": "LayoutResourceCode",
+ "typeDesc": "Resource",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "css",
+ "type": "Id"
+ },
+ {
+ "name": "resourceType",
+ "value": "Css",
+ "type": "Label"
+ },
+ {
+ "name": "resourceCode",
+ "value": ".container {\n margin-top: 18px;\n margin-bottom: 18px;\n margin-left: 22px;\n width: 904px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n}\n\n.buttonBox button {\n padding: 4px;\n background-color: #F6F7F8;\n border: 1px solid #C0C0C0;\n border-radius: 4px 4px 4px 4px;\n cursor: pointer;\n font-family: Arial, sans-serif;\n font-size: 12px;\n}\n\n.dataTables_wrapper {\n min-height: 0px;\n}\n\n.tableComponent th {\n background-color: #83BD4D;\n border-bottom: 1px solid #C0C0C0;\n \n}\n\n.tableComponent td {\n background-color: #FFFFFF;\n border-bottom: 1px solid #C0C0C0;\n}\n\n.tableComponent td.string {\n text-align: center;\n} ",
+ "type": "Resource"
+ }
+ ]
+ },
+ {
+ "id": "634c4d6b-d728-21dc-35e0-33667f20957a",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id"
+ },
+ {
+ "name": "height",
+ "value": "44",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "81dc2467-1d59-91a5-3bd0-29e0a1b37acd",
+ "type": "LayoutColumn",
+ "typeDesc": "Column",
+ "parent": "634c4d6b-d728-21dc-35e0-33667f20957a",
+ "properties": [
+ {
+ "name": "name",
+ "value": "buttonObj",
+ "type": "Id"
+ },
+ {
+ "name": "columnSpan",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrepend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnAppend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrependTop",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnAppendBottom",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBigBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "buttonBox",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "ae88420d-a370-dde3-0926-a7acfe5d3718",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "6099ee89-750d-a850-077b-fe86a1daedbd",
+ "type": "LayoutColumn",
+ "typeDesc": "Column",
+ "parent": "ae88420d-a370-dde3-0926-a7acfe5d3718",
+ "properties": [
+ {
+ "name": "name",
+ "value": "tableObj",
+ "type": "Id"
+ },
+ {
+ "name": "columnSpan",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrepend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnAppend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrependTop",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnAppendBottom",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBigBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ }
+ ]
+ },
+ "components": {
+ "rows": [
+ {
+ "id": "OTHERCOMPONENTS",
+ "name": "Others",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "Others",
+ "type": "Label"
+ }
+ ]
+ },
+ {
+ "id": "9fd04411-9806-423e-58fb-b8aada55f618",
+ "type": "ComponentsTable",
+ "typeDesc": "table Component",
+ "parent": "OTHERCOMPONENTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "datasourcesTable",
+ "type": "Id"
+ },
+ {
+ "name": "expandContainerObject",
+ "value": "",
+ "type": "String"
+ },
+ {
+ "name": "listeners",
+ "value": "[]",
+ "type": "Listeners"
+ },
+ {
+ "name": "oLanguage",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "parameters",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "colHeaders",
+ "value": "[]",
+ "type": "Array"
+ },
+ {
+ "name": "colTypes",
+ "value": "[]",
+ "type": "colTypesCustom"
+ },
+ {
+ "name": "colFormats",
+ "value": "[]",
+ "type": "Array"
+ },
+ {
+ "name": "colWidths",
+ "value": "[]",
+ "type": "Array"
+ },
+ {
+ "name": "colSortable",
+ "value": "[]",
+ "type": "Array"
+ },
+ {
+ "name": "expandParameters",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "paginate",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "filter",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "info",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "sort",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "displayLength",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "lengthChange",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "expandOnClick",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "colSearchable",
+ "value": "[]",
+ "type": "Array"
+ },
+ {
+ "name": "drawCallback",
+ "value": "function f() {\n if($(\"td.dataTables_empty\")) {\n $(\"td.dataTables_empty\").text(\"No data source found\");\n } \n}",
+ "type": "JavaScript"
+ },
+ {
+ "name": "dataSource",
+ "value": "listCdaDatasources",
+ "type": "Datasource"
+ },
+ {
+ "name": "sortBy",
+ "value": "[]",
+ "type": "SortByArray"
+ },
+ {
+ "name": "sDom",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "priority",
+ "value": 5,
+ "type": "Integer"
+ },
+ {
+ "name": "refreshPeriod",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "paginationType",
+ "value": "two_button",
+ "type": "PaginationType"
+ },
+ {
+ "name": "tableStyle",
+ "value": "classic",
+ "type": "TableStyle"
+ },
+ {
+ "name": "htmlObject",
+ "value": "${p:tableObj}",
+ "type": "HtmlObject"
+ },
+ {
+ "name": "paginateServerside",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "executeAtStart",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "preExecution",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postFetch",
+ "value": "function f(data) {\n if(_.isEmpty(data)) {\n data.metadata = [{\"colIndex\":0,\"colType\":\"String\",\"colName\":\"Catalog\"},{\"colIndex\":1,\"colType\":\"String\",\"colName\":\"Jndi\"}];\n }\n}",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postExecution",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "preChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "tooltip",
+ "value": "",
+ "type": "Html"
+ },
+ {
+ "name": "extraOptions",
+ "value": "[]",
+ "type": "OptionArray"
+ },
+ {
+ "name": "clickAction",
+ "value": "",
+ "type": "JavaScript"
+ }
+ ]
+ },
+ {
+ "id": "93011eba-c8aa-6a8d-0809-a16569124978",
+ "type": "ComponentsbuttonComponent",
+ "typeDesc": "Button Component",
+ "parent": "OTHERCOMPONENTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "importButton",
+ "type": "Id"
+ },
+ {
+ "name": "label",
+ "value": "Import from Mondrian Catalogs",
+ "type": "String"
+ },
+ {
+ "name": "listeners",
+ "value": "[]",
+ "type": "Listeners"
+ },
+ {
+ "name": "expression",
+ "value": "function f(){\n \n var successCallback = function (json){\n console.log(\"Success\");\n Dashboards.decrementRunningCalls();\n location.href = Dashboards.getWebAppPath() + \"/content/BTable/datasources\";\n }\n \n var errorCallback = function (json){\n Dashboards.decrementRunningCalls();\n alert(\"An error occurred while creating the data sources!\");\n }\n \n Dashboards.incrementRunningCalls();\n \n BTablePlugin.runEndpoint('BTable' , 'createCdaDatasources', {\n params: {},\n success: successCallback,\n error: errorCallback\n });\n \n}\n",
+ "type": "JavaScript"
+ },
+ {
+ "name": "priority",
+ "value": 5,
+ "type": "Integer"
+ },
+ {
+ "name": "refreshPeriod",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "buttonStyle",
+ "value": "classic",
+ "type": "TableStyle"
+ },
+ {
+ "name": "htmlObject",
+ "value": "${p:buttonObj}",
+ "type": "HtmlObject"
+ },
+ {
+ "name": "executeAtStart",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "preExecution",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postExecution",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "preChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "tooltip",
+ "value": "",
+ "type": "Html"
+ }
+ ]
+ }
+ ]
+ },
+ "datasources": {
+ "rows": [
+ {
+ "id": "BTABLE_CPKENDPOINTS",
+ "name": "BTABLE Endpoints",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "BTABLE Endpoints",
+ "type": "Label"
+ }
+ ]
+ },
+ {
+ "id": "00d58396-845f-b093-9abc-772a31edb487",
+ "type": "ComponentsBTable_createCdaDatasources_CPKENDPOINT",
+ "typeDesc": "createCdaDatasources Endpoint",
+ "parent": "BTABLE_CPKENDPOINTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "createCdaDatasources",
+ "type": "Id"
+ }
+ ],
+ "meta": "CPK",
+ "meta_pluginId": "BTable",
+ "meta_endpoint": "createCdaDatasources"
+ },
+ {
+ "id": "4dec1d48-1e9d-ef98-c5ef-4b8f0019be90",
+ "type": "ComponentsBTable_listCdaDatasources_CPKENDPOINT",
+ "typeDesc": "listCdaDatasources Endpoint",
+ "parent": "BTABLE_CPKENDPOINTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "listCdaDatasources",
+ "type": "Id"
+ }
+ ],
+ "meta": "CPK",
+ "meta_pluginId": "BTable",
+ "meta_endpoint": "listCdaDatasources"
+ }
+ ]
+ },
+ "filename": "/system/BTable/dashboards/Datasources.cdfde"
+}
\ No newline at end of file
diff --git a/dashboards/Datasources.wcdf b/dashboards/Datasources.wcdf
new file mode 100644
index 0000000..6665671
--- /dev/null
+++ b/dashboards/Datasources.wcdf
@@ -0,0 +1,2 @@
+
+BTable - Data Sources Biz Tech blueprint false
\ No newline at end of file
diff --git a/dashboards/Datasources_tmp.cdfde b/dashboards/Datasources_tmp.cdfde
new file mode 100644
index 0000000..546b15f
--- /dev/null
+++ b/dashboards/Datasources_tmp.cdfde
@@ -0,0 +1,981 @@
+{
+ "layout": {
+ "title": "Datasources",
+ "rows": [
+ {
+ "id": "ff454d8f-0e5a-1c25-6a53-8a402cc3ad76",
+ "type": "LayoutResourceCode",
+ "typeDesc": "Resource",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "css",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "resourceType",
+ "value": "Css",
+ "type": "Label",
+ "description": "Type",
+ "tooltip": "Resource Type to include",
+ "order": 19,
+ "classType": ""
+ },
+ {
+ "name": "resourceCode",
+ "value": ".container {\n margin-top: 18px;\n margin-bottom: 18px;\n margin-left: 22px;\n width: 904px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n}\n\n.buttonBox button {\n padding: 4px;\n background-color: #F6F7F8;\n border: 1px solid #C0C0C0;\n border-radius: 4px 4px 4px 4px;\n cursor: pointer;\n font-family: Arial, sans-serif;\n font-size: 12px;\n}\n\n.dataTables_wrapper {\n min-height: 0px;\n}\n\n.tableComponent th {\n background-color: #83BD4D;\n border-bottom: 1px solid #C0C0C0;\n \n}\n\n.tableComponent td {\n background-color: #FFFFFF;\n border-bottom: 1px solid #C0C0C0;\n}\n\n.tableComponent td.string {\n text-align: center;\n} ",
+ "type": "Resource",
+ "description": "Resource code",
+ "tooltip": "Resource code to include",
+ "order": 19,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "634c4d6b-d728-21dc-35e0-33667f20957a",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "height",
+ "value": "44",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners",
+ "description": "Corners",
+ "tooltip": "Corners type",
+ "order": 70,
+ "classType": ""
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign",
+ "description": "Text Align",
+ "tooltip": "Text Align",
+ "order": 75,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "81dc2467-1d59-91a5-3bd0-29e0a1b37acd",
+ "type": "LayoutColumn",
+ "typeDesc": "Column",
+ "parent": "634c4d6b-d728-21dc-35e0-33667f20957a",
+ "properties": [
+ {
+ "name": "name",
+ "value": "buttonObj",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "columnSpan",
+ "value": "",
+ "type": "Integer",
+ "description": "Span size",
+ "tooltip": "Column span size, numeric. The total must be 24",
+ "order": 30,
+ "classType": ""
+ },
+ {
+ "name": "columnPrepend",
+ "value": "",
+ "type": "Integer",
+ "description": "Prepend size",
+ "tooltip": "Prepend size - optional",
+ "order": 32,
+ "classType": ""
+ },
+ {
+ "name": "columnAppend",
+ "value": "",
+ "type": "Integer",
+ "description": "Append size",
+ "tooltip": "Append size - optional",
+ "order": 33,
+ "classType": ""
+ },
+ {
+ "name": "columnPrependTop",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Prepend gutter to top",
+ "tooltip": "Prepend space to the top of the element",
+ "order": 34,
+ "classType": ""
+ },
+ {
+ "name": "columnAppendBottom",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Prepend gutter to bottom",
+ "tooltip": "Prepend space to the bottom of the element",
+ "order": 35,
+ "classType": ""
+ },
+ {
+ "name": "columnBorder",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Right border",
+ "tooltip": "Generates a border between the columns",
+ "order": 36,
+ "classType": ""
+ },
+ {
+ "name": "columnBigBorder",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Big right border",
+ "tooltip": "Generates a border between the columns, ",
+ "order": 37,
+ "classType": ""
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners",
+ "description": "Corners",
+ "tooltip": "Corners type",
+ "order": 70,
+ "classType": ""
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign",
+ "description": "Text Align",
+ "tooltip": "Text Align",
+ "order": 75,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "buttonBox",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "ae88420d-a370-dde3-0926-a7acfe5d3718",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners",
+ "description": "Corners",
+ "tooltip": "Corners type",
+ "order": 70,
+ "classType": ""
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign",
+ "description": "Text Align",
+ "tooltip": "Text Align",
+ "order": 75,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "6099ee89-750d-a850-077b-fe86a1daedbd",
+ "type": "LayoutColumn",
+ "typeDesc": "Column",
+ "parent": "ae88420d-a370-dde3-0926-a7acfe5d3718",
+ "properties": [
+ {
+ "name": "name",
+ "value": "tableObj",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "columnSpan",
+ "value": "",
+ "type": "Integer",
+ "description": "Span size",
+ "tooltip": "Column span size, numeric. The total must be 24",
+ "order": 30,
+ "classType": ""
+ },
+ {
+ "name": "columnPrepend",
+ "value": "",
+ "type": "Integer",
+ "description": "Prepend size",
+ "tooltip": "Prepend size - optional",
+ "order": 32,
+ "classType": ""
+ },
+ {
+ "name": "columnAppend",
+ "value": "",
+ "type": "Integer",
+ "description": "Append size",
+ "tooltip": "Append size - optional",
+ "order": 33,
+ "classType": ""
+ },
+ {
+ "name": "columnPrependTop",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Prepend gutter to top",
+ "tooltip": "Prepend space to the top of the element",
+ "order": 34,
+ "classType": ""
+ },
+ {
+ "name": "columnAppendBottom",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Prepend gutter to bottom",
+ "tooltip": "Prepend space to the bottom of the element",
+ "order": 35,
+ "classType": ""
+ },
+ {
+ "name": "columnBorder",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Right border",
+ "tooltip": "Generates a border between the columns",
+ "order": 36,
+ "classType": ""
+ },
+ {
+ "name": "columnBigBorder",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Big right border",
+ "tooltip": "Generates a border between the columns, ",
+ "order": 37,
+ "classType": ""
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners",
+ "description": "Corners",
+ "tooltip": "Corners type",
+ "order": 70,
+ "classType": ""
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign",
+ "description": "Text Align",
+ "tooltip": "Text Align",
+ "order": 75,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ }
+ ]
+ },
+ "components": {
+ "rows": [
+ {
+ "id": "OTHERCOMPONENTS",
+ "name": "Others",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "Others",
+ "type": "Label",
+ "description": "Group",
+ "tooltip": "Group"
+ }
+ ]
+ },
+ {
+ "id": "9fd04411-9806-423e-58fb-b8aada55f618",
+ "type": "ComponentsTable",
+ "typeDesc": "table Component",
+ "parent": "OTHERCOMPONENTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "datasourcesTable",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "expandContainerObject",
+ "value": "",
+ "type": "String",
+ "description": "Expand container Object",
+ "tooltip": "Id for container object with expanded row contents",
+ "order": 1,
+ "classType": "advanced"
+ },
+ {
+ "name": "listeners",
+ "value": "[]",
+ "type": "Listeners",
+ "description": "Listeners",
+ "tooltip": "Parameters to listen to",
+ "order": 13,
+ "classType": ""
+ },
+ {
+ "name": "oLanguage",
+ "value": "",
+ "type": "JavaScript",
+ "description": "oLanguage",
+ "tooltip": "oLanguage",
+ "order": 17,
+ "classType": "advanced"
+ },
+ {
+ "name": "parameters",
+ "value": "[]",
+ "type": "ValuesArray",
+ "description": "Parameters",
+ "tooltip": " Parameters to pass to the component",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "colHeaders",
+ "value": "[]",
+ "type": "Array",
+ "description": "Column Headers",
+ "tooltip": "The table column header",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "colTypes",
+ "value": "[]",
+ "type": "colTypesCustom",
+ "description": "Column Types",
+ "tooltip": "The table column types",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "colFormats",
+ "value": "[]",
+ "type": "Array",
+ "description": "Column Formats",
+ "tooltip": "The table column formats",
+ "order": 40,
+ "classType": "advanced"
+ },
+ {
+ "name": "colWidths",
+ "value": "[]",
+ "type": "Array",
+ "description": "Column Widths",
+ "tooltip": "The table widths",
+ "order": 40,
+ "classType": "advanced"
+ },
+ {
+ "name": "colSortable",
+ "value": "[]",
+ "type": "Array",
+ "description": "Sortable Column",
+ "tooltip": "Is the column sortable? Example: [true,false]",
+ "order": 40,
+ "classType": "advanced"
+ },
+ {
+ "name": "expandParameters",
+ "value": "[]",
+ "type": "ValuesArray",
+ "description": "Expand Parameters",
+ "tooltip": " Expand Parameters - arg is column id, value is parameter name to change with column value",
+ "order": 40,
+ "classType": "advanced"
+ },
+ {
+ "name": "paginate",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Paginate",
+ "tooltip": "Paginate",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "filter",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Show Filter",
+ "tooltip": "Show option",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "info",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Info Filter",
+ "tooltip": "Info option",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "sort",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Sort Data",
+ "tooltip": "Sort Data",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "displayLength",
+ "value": "",
+ "type": "Integer",
+ "description": "Page Length",
+ "tooltip": "The page lengh",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "lengthChange",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Length Change",
+ "tooltip": "Allow user to change the displayed size?",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "expandOnClick",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Expand On Click",
+ "tooltip": "If true, expand row when clicked and show content from expandContainerObject",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "colSearchable",
+ "value": "[]",
+ "type": "Array",
+ "description": "Searchable Column",
+ "tooltip": "Array with the indexes of the columns to search",
+ "order": 42,
+ "classType": "advanced"
+ },
+ {
+ "name": "drawCallback",
+ "value": "function f() {\n if($(\"td.dataTables_empty\")) {\n $(\"td.dataTables_empty\").text(\"No data source found\");\n } \n}",
+ "type": "JavaScript",
+ "description": "Draw Function",
+ "tooltip": "Custom function to be executed when a page table is rendered",
+ "order": 42,
+ "classType": "advanced"
+ },
+ {
+ "name": "dataSource",
+ "value": "listCdaDatasources",
+ "type": "Datasource",
+ "description": "Datasource",
+ "tooltip": "DataSource to be used in this selector",
+ "order": 43,
+ "classType": ""
+ },
+ {
+ "name": "sortBy",
+ "value": "[]",
+ "type": "SortByArray",
+ "description": "Sort by",
+ "tooltip": "Choose the columns where the sorting will default. Example: [[0,asc],[1,desc]]",
+ "order": 43,
+ "classType": "advanced"
+ },
+ {
+ "name": "sDom",
+ "value": "",
+ "type": "JavaScript",
+ "description": "sDom control",
+ "tooltip": "Configuration of where the controls will be in the table",
+ "order": 43,
+ "classType": "advanced"
+ },
+ {
+ "name": "priority",
+ "value": 5,
+ "type": "Integer",
+ "description": "Priority",
+ "tooltip": "Priority for component execution component. Lower values have higher priority",
+ "order": 50,
+ "classType": "advanced"
+ },
+ {
+ "name": "refreshPeriod",
+ "value": "",
+ "type": "Integer",
+ "description": "Refresh Period",
+ "tooltip": "Time interval (in seconds) to refresh the component. If 0 or not set component won't refresh.",
+ "order": 50,
+ "classType": "advanced"
+ },
+ {
+ "name": "paginationType",
+ "value": "two_button",
+ "type": "PaginationType",
+ "description": "Pagination Type",
+ "tooltip": "Pagination Type",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "tableStyle",
+ "value": "classic",
+ "type": "TableStyle",
+ "description": "Style",
+ "tooltip": "Table style",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "htmlObject",
+ "value": "${p:tableObj}",
+ "type": "HtmlObject",
+ "description": "HtmlObject",
+ "tooltip": "HtmlObject to prompt",
+ "order": 90,
+ "classType": ""
+ },
+ {
+ "name": "paginateServerside",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Paginate server-side",
+ "tooltip": "Paginate server-side",
+ "order": 91,
+ "classType": "advanced"
+ },
+ {
+ "name": "executeAtStart",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Execute at start",
+ "tooltip": "Execute at start?",
+ "order": 91,
+ "classType": "advanced"
+ },
+ {
+ "name": "preExecution",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Pre Execution",
+ "tooltip": "Function to be executed before the component is updated",
+ "order": 92,
+ "classType": "advanced"
+ },
+ {
+ "name": "postFetch",
+ "value": "function f(data) {\n if(_.isEmpty(data)) {\n data.metadata = [{\"colIndex\":0,\"colType\":\"String\",\"colName\":\"Catalog\"},{\"colIndex\":1,\"colType\":\"String\",\"colName\":\"Jndi\"}];\n }\n}",
+ "type": "JavaScript",
+ "description": "Post Fetch",
+ "tooltip": "Code executed after this component's data is fetched from the server",
+ "order": 93,
+ "classType": "advanced"
+ },
+ {
+ "name": "postExecution",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Execution",
+ "tooltip": "Function to be executed after the component is updated",
+ "order": 93,
+ "classType": "advanced"
+ },
+ {
+ "name": "preChange",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Pre Change",
+ "tooltip": "Function to be executed before the component is changed. It's a function of the type function(value){return value}, and can be used for validation",
+ "order": 94,
+ "classType": "advanced"
+ },
+ {
+ "name": "postChange",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Change",
+ "tooltip": "Function to be executed after the component is changed. It's a function of the type function(value){...}",
+ "order": 95,
+ "classType": "advanced"
+ },
+ {
+ "name": "tooltip",
+ "value": "",
+ "type": "Html",
+ "description": "Tooltip",
+ "tooltip": "Tooltip to be displayed on component's mouse hover",
+ "order": 99,
+ "classType": "advanced"
+ },
+ {
+ "name": "extraOptions",
+ "value": "[]",
+ "type": "OptionArray",
+ "description": "Extra Options",
+ "tooltip": "Extra Options",
+ "order": 99,
+ "classType": "advanced"
+ },
+ {
+ "name": "clickAction",
+ "value": "",
+ "type": "JavaScript",
+ "description": "clickAction",
+ "tooltip": "A callback function that is called when the user clicks on a visual element.",
+ "order": 254,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "93011eba-c8aa-6a8d-0809-a16569124978",
+ "type": "ComponentsbuttonComponent",
+ "typeDesc": "Button Component",
+ "parent": "OTHERCOMPONENTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "importButton",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "label",
+ "value": "Import from Mondrian Catalogs",
+ "type": "String",
+ "description": "Label",
+ "tooltip": "Label to be used",
+ "order": 9,
+ "classType": ""
+ },
+ {
+ "name": "listeners",
+ "value": "[]",
+ "type": "Listeners",
+ "description": "Listeners",
+ "tooltip": "Parameters to listen to",
+ "order": 13,
+ "classType": ""
+ },
+ {
+ "name": "expression",
+ "value": "function f(){\n \n var successCallback = function (json){\n console.log(\"Success\");\n Dashboards.decrementRunningCalls();\n location.href = Dashboards.getWebAppPath() + \"/content/BTable/datasources\";\n }\n \n var errorCallback = function (json){\n Dashboards.decrementRunningCalls();\n alert(\"An error occurred while creating the data sources!\");\n }\n \n Dashboards.incrementRunningCalls();\n \n BTablePlugin.runEndpoint('BTable' , 'createCdaDatasources', {\n params: {},\n success: successCallback,\n error: errorCallback\n });\n \n}\n",
+ "type": "JavaScript",
+ "description": "Expression",
+ "tooltip": "Javascript expression to be evaluate.",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "priority",
+ "value": 5,
+ "type": "Integer",
+ "description": "Priority",
+ "tooltip": "Priority for component execution component. Lower values have higher priority",
+ "order": 50,
+ "classType": "advanced"
+ },
+ {
+ "name": "refreshPeriod",
+ "value": "",
+ "type": "Integer",
+ "description": "Refresh Period",
+ "tooltip": "Time interval (in seconds) to refresh the component. If 0 or not set component won't refresh.",
+ "order": 50,
+ "classType": "advanced"
+ },
+ {
+ "name": "buttonStyle",
+ "value": "classic",
+ "type": "TableStyle",
+ "description": "Style",
+ "tooltip": "Table style",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "htmlObject",
+ "value": "${p:buttonObj}",
+ "type": "HtmlObject",
+ "description": "HtmlObject",
+ "tooltip": "HtmlObject to prompt",
+ "order": 90,
+ "classType": ""
+ },
+ {
+ "name": "executeAtStart",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Execute at start",
+ "tooltip": "Execute at start?",
+ "order": 91,
+ "classType": "advanced"
+ },
+ {
+ "name": "preExecution",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Pre Execution",
+ "tooltip": "Function to be executed before the component is updated",
+ "order": 92,
+ "classType": "advanced"
+ },
+ {
+ "name": "postExecution",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Execution",
+ "tooltip": "Function to be executed after the component is updated",
+ "order": 93,
+ "classType": "advanced"
+ },
+ {
+ "name": "preChange",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Pre Change",
+ "tooltip": "Function to be executed before the component is changed. It's a function of the type function(value){return value}, and can be used for validation",
+ "order": 94,
+ "classType": "advanced"
+ },
+ {
+ "name": "postChange",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Change",
+ "tooltip": "Function to be executed after the component is changed. It's a function of the type function(value){...}",
+ "order": 95,
+ "classType": "advanced"
+ },
+ {
+ "name": "tooltip",
+ "value": "",
+ "type": "Html",
+ "description": "Tooltip",
+ "tooltip": "Tooltip to be displayed on component's mouse hover",
+ "order": 99,
+ "classType": "advanced"
+ }
+ ]
+ }
+ ]
+ },
+ "datasources": {
+ "rows": [
+ {
+ "id": "BTABLE_CPKENDPOINTS",
+ "name": "BTABLE Endpoints",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "BTABLE Endpoints",
+ "type": "Label",
+ "description": "Group",
+ "tooltip": "Group"
+ }
+ ]
+ },
+ {
+ "id": "00d58396-845f-b093-9abc-772a31edb487",
+ "type": "ComponentsBTable_createCdaDatasources_CPKENDPOINT",
+ "typeDesc": "createCdaDatasources Endpoint",
+ "parent": "BTABLE_CPKENDPOINTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "createCdaDatasources",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ }
+ ],
+ "meta": "CPK",
+ "meta_pluginId": "BTable",
+ "meta_endpoint": "createCdaDatasources"
+ },
+ {
+ "id": "4dec1d48-1e9d-ef98-c5ef-4b8f0019be90",
+ "type": "ComponentsBTable_listCdaDatasources_CPKENDPOINT",
+ "typeDesc": "listCdaDatasources Endpoint",
+ "parent": "BTABLE_CPKENDPOINTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "listCdaDatasources",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ }
+ ],
+ "meta": "CPK",
+ "meta_pluginId": "BTable",
+ "meta_endpoint": "listCdaDatasources"
+ }
+ ]
+ },
+ "filename": "/system/BTable/dashboards/Datasources_tmp.cdfde"
+}
\ No newline at end of file
diff --git a/dashboards/Render.cdfde b/dashboards/Render.cdfde
new file mode 100644
index 0000000..401020f
--- /dev/null
+++ b/dashboards/Render.cdfde
@@ -0,0 +1,323 @@
+{
+ "layout": {
+ "title": "Render",
+ "rows": [
+ {
+ "id": "9eee59a9-0cd1-049c-5042-9ad2db54949d",
+ "type": "LayoutResourceCode",
+ "typeDesc": "Resource",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "css",
+ "type": "Id"
+ },
+ {
+ "name": "resourceType",
+ "value": "Css",
+ "type": "Label"
+ },
+ {
+ "name": "resourceCode",
+ "value": ".container {\n margin-top: 20px;\n margin-bottom: 20px;\n margin-left: 30px;\n margin-right: 30px;\n} ",
+ "type": "Resource"
+ }
+ ]
+ },
+ {
+ "id": "3f42a171-31a3-4b7e-a08c-f8c51511e046",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "BTableHtmlObject",
+ "type": "Id"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ }
+ ]
+ },
+ "components": {
+ "rows": [
+ {
+ "id": "COMMUNITYCOMPONENTS",
+ "name": "Community Contributions",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "Community Contributions",
+ "type": "Label"
+ }
+ ]
+ },
+ {
+ "id": "e2bd5d67-b81b-34f8-a707-3048a7b7ee92",
+ "type": "ComponentsBTableComponent",
+ "typeDesc": "BTable (by Biz Tech)",
+ "parent": "COMMUNITYCOMPONENTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "BTable",
+ "type": "Id"
+ },
+ {
+ "name": "expandContainerObject",
+ "value": "",
+ "type": "String"
+ },
+ {
+ "name": "catalog",
+ "value": "",
+ "type": "MondrianCatalog"
+ },
+ {
+ "name": "jndi",
+ "value": "",
+ "type": "Jndi"
+ },
+ {
+ "name": "cube",
+ "value": "",
+ "type": "String"
+ },
+ {
+ "name": "dimensions",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "measures",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "pivotDimensions",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "filters",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "orderBy",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "measuresOnColumns",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "nonEmptyRows",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "nonEmptyColumns",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "grandTotal",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "subTotals",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "pivotGrandTotal",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "pivotSubTotals",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "showFilters",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "listeners",
+ "value": "[]",
+ "type": "Listeners"
+ },
+ {
+ "name": "oLanguage",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "expandParameters",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "paginate",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "filter",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "info",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "displayLength",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "lengthChange",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "expandOnClick",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "colSearchable",
+ "value": "[]",
+ "type": "Array"
+ },
+ {
+ "name": "drawCallback",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "sDom",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "priority",
+ "value": 5,
+ "type": "Integer"
+ },
+ {
+ "name": "refreshPeriod",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "paginationType",
+ "value": "two_button",
+ "type": "PaginationType"
+ },
+ {
+ "name": "tableStyle",
+ "value": "classic",
+ "type": "TableStyle"
+ },
+ {
+ "name": "htmlObject",
+ "value": "${p:BTableHtmlObject}",
+ "type": "HtmlObject"
+ },
+ {
+ "name": "paginateServerside",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "executeAtStart",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "preExecution",
+ "value": "function() {\n var urlQuery = getURLQuery();\n \n var btdefObj = JSON.parse(urlQuery.btdef);\n\n this.catalog = (btdefObj.catalog) ? btdefObj.catalog : \"\";\n this.jndi = (btdefObj.jndi) ? btdefObj.jndi : \"\";\n this.cube = (btdefObj.cube) ? btdefObj.cube : \"\";\n this.dimensions = (btdefObj.dimensions) ? btdefObj.dimensions : [];\n this.measures = (btdefObj.measures) ? btdefObj.measures : [];\n this.pivotDimensions = (btdefObj.pivotDimensions) ? btdefObj.pivotDimensions : [];\n this.filters = (btdefObj.filters) ? btdefObj.filters : [];\n this.measuresOnColumns = (btdefObj.hasOwnProperty('measuresOnColumns')) ? btdefObj.measuresOnColumns : true;\n this.nonEmptyRows = (btdefObj.hasOwnProperty('nonEmptyRows')) ? btdefObj.nonEmptyRows : true;\n this.nonEmptyColumns = (btdefObj.hasOwnProperty('nonEmptyColumns')) ? btdefObj.nonEmptyColumns : true;\n this.grandTotal = (btdefObj.hasOwnProperty('grandTotal')) ? btdefObj.grandTotal : false;\n this.subTotals = (btdefObj.hasOwnProperty('subTotals')) ? btdefObj.subTotals : false;\n\tthis.pivotGrandTotal = (btdefObj.hasOwnProperty('pivotGrandTotal')) ? btdefObj.pivotGrandTotal : false;\n\tthis.pivotSubTotals = (btdefObj.hasOwnProperty('pivotSubTotals')) ? btdefObj.pivotSubTotals : false;\n\tthis.totalsPosition = (btdefObj.hasOwnProperty('totalsPosition')) ? btdefObj.totalsPosition : \"bottom\";\n\tthis.hideSpans = (btdefObj.hasOwnProperty('hideSpans')) ? btdefObj.hideSpans : false;\n \n return true;\n}",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postFetch",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postExecution",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "preChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "tooltip",
+ "value": "",
+ "type": "Html"
+ },
+ {
+ "name": "extraOptions",
+ "value": "[]",
+ "type": "OptionArray"
+ },
+ {
+ "name": "clickAction",
+ "value": "",
+ "type": "JavaScript"
+ }
+ ]
+ }
+ ]
+ },
+ "datasources": {
+ "rows": []
+ },
+ "filename": "/system/BTable/dashboards/Render.cdfde"
+}
\ No newline at end of file
diff --git a/dashboards/Render.wcdf b/dashboards/Render.wcdf
new file mode 100644
index 0000000..84afcac
--- /dev/null
+++ b/dashboards/Render.wcdf
@@ -0,0 +1,2 @@
+
+BTable BTable Biz Tech blueprint false
\ No newline at end of file
diff --git a/dashboards/Sample.cda b/dashboards/Sample.cda
new file mode 100644
index 0000000..bd5b4fa
--- /dev/null
+++ b/dashboards/Sample.cda
@@ -0,0 +1,20 @@
+
+
+
+
+ steel-wheels/analysis/steelwheels.mondrian.xml
+ SampleData
+
+
+
+ compact
+
+
+ select
+ NON EMPTY {[Measures].[Sales]} ON COLUMNS,
+ NON EMPTY Order({[Markets].[All Markets].Children}, [Markets].CurrentMember.Name, ASC) ON ROWS
+from [SteelWheelsSales]
+
+
\ No newline at end of file
diff --git a/dashboards/Sample.cdfde b/dashboards/Sample.cdfde
new file mode 100644
index 0000000..f3b2def
--- /dev/null
+++ b/dashboards/Sample.cdfde
@@ -0,0 +1,912 @@
+{
+ "layout": {
+ "title": "Sample",
+ "rows": [
+ {
+ "id": "ec601d23-9173-87f5-3540-0ab79251d7d4",
+ "type": "LayoutResourceCode",
+ "typeDesc": "Resource",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "css",
+ "type": "Id"
+ },
+ {
+ "name": "resourceType",
+ "value": "Css",
+ "type": "Label"
+ },
+ {
+ "name": "resourceCode",
+ "value": ".container {\n margin-top: 12px;\n margin-bottom: 6px;\n margin-left: 12px;\n margin-right: 12px;\n width: 924px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n}\n\n#top {\n height: 36px;\n}\n\n.selector {\n padding-top: 2px;\n}\n\n.selector > span {\n display: inline-block;\n vertical-align: top;\n line-height: 28px;\n font-size: 13px;\n font-weight: bold;\n padding-left: 5px;\n padding-right: 3px;\n}\n\n.selector > div {\n vertical-align: top;\n display: inline-block;\n}\n\nselect {\n width: 100px;\n}\n\n.overflow {\n overflow: auto;\n padding-bottom: 6px;\n}\n ",
+ "type": "Resource"
+ }
+ ]
+ },
+ {
+ "id": "b428a9d7-baf8-feaf-a826-a8a98d0cbf37",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "top",
+ "type": "Id"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "82cf8216-0f8b-3e92-1f6c-c4baea85f79e",
+ "type": "LayoutColumn",
+ "typeDesc": "Column",
+ "parent": "b428a9d7-baf8-feaf-a826-a8a98d0cbf37",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id"
+ },
+ {
+ "name": "columnSpan",
+ "value": "8",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrepend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnAppend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrependTop",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnAppendBottom",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBigBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "height",
+ "value": "36",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "da114930-2277-0bd0-0cfa-c662bf5eeda1",
+ "type": "LayoutHtml",
+ "typeDesc": "Html",
+ "parent": "82cf8216-0f8b-3e92-1f6c-c4baea85f79e",
+ "properties": [
+ {
+ "name": "name",
+ "value": "title",
+ "type": "Id"
+ },
+ {
+ "name": "html",
+ "value": "Steel Wheels Sales ",
+ "type": "Html"
+ },
+ {
+ "name": "fontSize",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "color",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "8aded277-9512-5c03-ebf5-fcd10c5d9910",
+ "type": "LayoutColumn",
+ "typeDesc": "Column",
+ "parent": "b428a9d7-baf8-feaf-a826-a8a98d0cbf37",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id"
+ },
+ {
+ "name": "columnSpan",
+ "value": "8",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrepend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnAppend",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "columnPrependTop",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnAppendBottom",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "columnBigBorder",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "selector",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "c01d44a1-5eba-133b-85e3-520ccd78f31a",
+ "type": "LayoutHtml",
+ "typeDesc": "Html",
+ "parent": "8aded277-9512-5c03-ebf5-fcd10c5d9910",
+ "properties": [
+ {
+ "name": "name",
+ "value": "label",
+ "type": "Id"
+ },
+ {
+ "name": "html",
+ "value": "Market ",
+ "type": "Html"
+ },
+ {
+ "name": "fontSize",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "color",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "c0de0658-eb27-6907-da1f-773672cd0a21",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "8aded277-9512-5c03-ebf5-fcd10c5d9910",
+ "properties": [
+ {
+ "name": "name",
+ "value": "selectorObj",
+ "type": "Id"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "27ad70c2-2755-bc5b-7421-e365c2ea5224",
+ "type": "LayoutSpace",
+ "typeDesc": "Space",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "height",
+ "value": "1",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String"
+ }
+ ]
+ },
+ {
+ "id": "6097fe9c-997e-f80d-3a3c-3d0e3fb01cdb",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "btableObj",
+ "type": "Id"
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners"
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign"
+ },
+ {
+ "name": "cssClass",
+ "value": "overflow",
+ "type": "String"
+ }
+ ]
+ }
+ ]
+ },
+ "components": {
+ "rows": [
+ {
+ "id": "GENERIC",
+ "name": "Generic",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "Generic",
+ "type": "Label"
+ }
+ ]
+ },
+ {
+ "id": "a0490e8d-81a5-2445-3a8d-b93a9fca2d78",
+ "type": "ComponentsParameter",
+ "typeDesc": "Simple parameter",
+ "parent": "GENERIC",
+ "properties": [
+ {
+ "name": "name",
+ "value": "territory",
+ "type": "Id"
+ },
+ {
+ "name": "propertyValue",
+ "value": "EMEA",
+ "type": "String"
+ },
+ {
+ "name": "parameterViewRole",
+ "value": "unused",
+ "type": "parameterViewRoleCustom"
+ },
+ {
+ "name": "bookmarkable",
+ "value": "false",
+ "type": "Boolean"
+ }
+ ]
+ },
+ {
+ "id": "e40d7e41-1132-c3a6-700a-6ddfdd8466f4",
+ "type": "ComponentsJavascriptParameter",
+ "typeDesc": "Custom parameter",
+ "parent": "GENERIC",
+ "properties": [
+ {
+ "name": "name",
+ "value": "period",
+ "type": "Id"
+ },
+ {
+ "name": "javaScript",
+ "value": "[\"[Time].[2004].[QTR1].[Jan]\", \"[Time].[2004].[QTR2].[Jun]\"]",
+ "type": "JavaScript"
+ },
+ {
+ "name": "parameterViewRole",
+ "value": "unused",
+ "type": "parameterViewRoleCustom"
+ },
+ {
+ "name": "bookmarkable",
+ "value": "false",
+ "type": "Boolean"
+ }
+ ]
+ },
+ {
+ "id": "SELECTORS",
+ "name": "Selects",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "Selects",
+ "type": "Label"
+ }
+ ]
+ },
+ {
+ "id": "6212f3db-4353-58b8-90a4-7bb7ee22806e",
+ "type": "ComponentsSelect",
+ "typeDesc": "Select Component",
+ "parent": "SELECTORS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "territorySelector",
+ "type": "Id"
+ },
+ {
+ "name": "parameter",
+ "value": "${p:territory}",
+ "type": "Parameter"
+ },
+ {
+ "name": "listeners",
+ "value": "[]",
+ "type": "Listeners"
+ },
+ {
+ "name": "parameters",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "valueAsId",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "externalPlugin",
+ "value": "chosen",
+ "type": "String"
+ },
+ {
+ "name": "dataSource",
+ "value": "territoriesQuery",
+ "type": "Datasource"
+ },
+ {
+ "name": "valuesArray",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "priority",
+ "value": 5,
+ "type": "Integer"
+ },
+ {
+ "name": "refreshPeriod",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "htmlObject",
+ "value": "${p:selectorObj}",
+ "type": "HtmlObject"
+ },
+ {
+ "name": "executeAtStart",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "preExecution",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postFetch",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postExecution",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "preChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "tooltip",
+ "value": "",
+ "type": "Html"
+ },
+ {
+ "name": "extraOptions",
+ "value": "[]",
+ "type": "OptionArray"
+ }
+ ]
+ },
+ {
+ "id": "COMMUNITYCOMPONENTS",
+ "name": "Community Contributions",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "Community Contributions",
+ "type": "Label"
+ }
+ ]
+ },
+ {
+ "id": "a61bd324-4c55-6b99-f532-1efb2c398eb9",
+ "type": "ComponentsBTableComponent",
+ "typeDesc": "BTable (by Biz Tech)",
+ "parent": "COMMUNITYCOMPONENTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "btable",
+ "type": "Id"
+ },
+ {
+ "name": "expandContainerObject",
+ "value": "",
+ "type": "String"
+ },
+ {
+ "name": "catalog",
+ "value": "steel-wheels/analysis/steelwheels.mondrian.xml",
+ "type": "MondrianCatalog"
+ },
+ {
+ "name": "jndi",
+ "value": "SampleData",
+ "type": "Jndi"
+ },
+ {
+ "name": "cube",
+ "value": "SteelWheelsSales",
+ "type": "String"
+ },
+ {
+ "name": "dimensions",
+ "value": "[[\"[Product].[Line]\",\"\"]]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "measures",
+ "value": "[[\"[Measures].[Sales]\",\"\"]]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "pivotDimensions",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "filters",
+ "value": "[[\"[Markets].[Territory]\",\"include:territory\"],[\"[Order Status].[Type]\",\"exclude:[Cancelled]\"],[\"[Time].[Months]\",\"between_un:period\"]]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "orderBy",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "measuresOnColumns",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "nonEmptyRows",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "nonEmptyColumns",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "grandTotal",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "subTotals",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "pivotGrandTotal",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "pivotSubTotals",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "showFilters",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "listeners",
+ "value": "['${p:territory}']",
+ "type": "Listeners"
+ },
+ {
+ "name": "oLanguage",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "expandParameters",
+ "value": "[]",
+ "type": "ValuesArray"
+ },
+ {
+ "name": "paginate",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "filter",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "info",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "displayLength",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "lengthChange",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "expandOnClick",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "colSearchable",
+ "value": "[]",
+ "type": "Array"
+ },
+ {
+ "name": "drawCallback",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "sDom",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "priority",
+ "value": 5,
+ "type": "Integer"
+ },
+ {
+ "name": "refreshPeriod",
+ "value": "",
+ "type": "Integer"
+ },
+ {
+ "name": "paginationType",
+ "value": "two_button",
+ "type": "PaginationType"
+ },
+ {
+ "name": "tableStyle",
+ "value": "classic",
+ "type": "TableStyle"
+ },
+ {
+ "name": "htmlObject",
+ "value": "${p:btableObj}",
+ "type": "HtmlObject"
+ },
+ {
+ "name": "paginateServerside",
+ "value": "false",
+ "type": "Boolean"
+ },
+ {
+ "name": "executeAtStart",
+ "value": "true",
+ "type": "Boolean"
+ },
+ {
+ "name": "preExecution",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postFetch",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postExecution",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "preChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "postChange",
+ "value": "",
+ "type": "JavaScript"
+ },
+ {
+ "name": "tooltip",
+ "value": "",
+ "type": "Html"
+ },
+ {
+ "name": "extraOptions",
+ "value": "[]",
+ "type": "OptionArray"
+ },
+ {
+ "name": "clickAction",
+ "value": "",
+ "type": "JavaScript"
+ }
+ ]
+ }
+ ]
+ },
+ "datasources": {
+ "rows": [
+ {
+ "id": "MDX",
+ "name": "MDX Queries",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "MDX Queries",
+ "type": "Label"
+ }
+ ]
+ },
+ {
+ "id": "357acfbe-f8b4-2da3-ce21-7893378adee5",
+ "type": "Componentsmdx_mondrianJndi",
+ "typeDesc": "mdx over mondrianJndi",
+ "parent": "MDX",
+ "properties": [
+ {
+ "name": "name",
+ "value": "territoriesQuery",
+ "type": "Id"
+ },
+ {
+ "name": "access",
+ "value": "public",
+ "type": "Access"
+ },
+ {
+ "name": "jndi",
+ "value": "SampleData",
+ "type": "Jndi"
+ },
+ {
+ "name": "catalog",
+ "value": "steel-wheels/analysis/steelwheels.mondrian.xml",
+ "type": "MondrianCatalog"
+ },
+ {
+ "name": "query",
+ "value": "select \n NON EMPTY {[Measures].[Sales]} ON COLUMNS,\n NON EMPTY Order({[Markets].[All Markets].Children}, [Markets].CurrentMember.Name, ASC) ON ROWS\nfrom [SteelWheelsSales]",
+ "type": "SqlQuery"
+ },
+ {
+ "name": "parameters",
+ "value": "[]",
+ "type": "CdaParameters"
+ },
+ {
+ "name": "output",
+ "value": "[]",
+ "type": "IndexArray"
+ },
+ {
+ "name": "outputMode",
+ "value": "include",
+ "type": "OutputMode"
+ },
+ {
+ "name": "cdacolumns",
+ "value": "[]",
+ "type": "CdaColumnsArray"
+ },
+ {
+ "name": "cdacalculatedcolumns",
+ "value": "[]",
+ "type": "CdaCalculatedColumnsArray"
+ },
+ {
+ "name": "bandedMode",
+ "value": "compact",
+ "type": "BandedMode"
+ },
+ {
+ "name": "cacheDuration",
+ "value": 3600,
+ "type": "Integer"
+ },
+ {
+ "name": "cache",
+ "value": "true",
+ "type": "Boolean"
+ }
+ ],
+ "meta": "CDA",
+ "meta_conntype": "mondrian.jndi",
+ "meta_datype": "mdx"
+ }
+ ]
+ },
+ "filename": "/system/BTable/dashboards/Sample.cdfde"
+}
\ No newline at end of file
diff --git a/dashboards/Sample.wcdf b/dashboards/Sample.wcdf
new file mode 100644
index 0000000..d76dd17
--- /dev/null
+++ b/dashboards/Sample.wcdf
@@ -0,0 +1,2 @@
+
+BTable - Sample Biz Tech blueprint false
\ No newline at end of file
diff --git a/dashboards/Sample_tmp.cda b/dashboards/Sample_tmp.cda
new file mode 100644
index 0000000..bd5b4fa
--- /dev/null
+++ b/dashboards/Sample_tmp.cda
@@ -0,0 +1,20 @@
+
+
+
+
+ steel-wheels/analysis/steelwheels.mondrian.xml
+ SampleData
+
+
+
+ compact
+
+
+ select
+ NON EMPTY {[Measures].[Sales]} ON COLUMNS,
+ NON EMPTY Order({[Markets].[All Markets].Children}, [Markets].CurrentMember.Name, ASC) ON ROWS
+from [SteelWheelsSales]
+
+
\ No newline at end of file
diff --git a/dashboards/Sample_tmp.cdfde b/dashboards/Sample_tmp.cdfde
new file mode 100644
index 0000000..03a9476
--- /dev/null
+++ b/dashboards/Sample_tmp.cdfde
@@ -0,0 +1,1500 @@
+{
+ "layout": {
+ "title": "Sample",
+ "rows": [
+ {
+ "id": "ec601d23-9173-87f5-3540-0ab79251d7d4",
+ "type": "LayoutResourceCode",
+ "typeDesc": "Resource",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "css",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "resourceType",
+ "value": "Css",
+ "type": "Label",
+ "description": "Type",
+ "tooltip": "Resource Type to include",
+ "order": 19,
+ "classType": ""
+ },
+ {
+ "name": "resourceCode",
+ "value": ".container {\n margin-top: 12px;\n margin-bottom: 6px;\n margin-left: 12px;\n margin-right: 12px;\n width: 924px;\n font-family: Arial, sans-serif;\n font-size: 12px;\n}\n\n#top {\n height: 36px;\n}\n\n.selector {\n padding-top: 2px;\n}\n\n.selector > span {\n display: inline-block;\n vertical-align: top;\n line-height: 28px;\n font-size: 13px;\n font-weight: bold;\n padding-left: 5px;\n padding-right: 3px;\n}\n\n.selector > div {\n vertical-align: top;\n display: inline-block;\n}\n\nselect {\n width: 100px;\n}\n\n.overflow {\n overflow: auto;\n padding-bottom: 6px;\n}\n ",
+ "type": "Resource",
+ "description": "Resource code",
+ "tooltip": "Resource code to include",
+ "order": 19,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "b428a9d7-baf8-feaf-a826-a8a98d0cbf37",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "top",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners",
+ "description": "Corners",
+ "tooltip": "Corners type",
+ "order": 70,
+ "classType": ""
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign",
+ "description": "Text Align",
+ "tooltip": "Text Align",
+ "order": 75,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "82cf8216-0f8b-3e92-1f6c-c4baea85f79e",
+ "type": "LayoutColumn",
+ "typeDesc": "Column",
+ "parent": "b428a9d7-baf8-feaf-a826-a8a98d0cbf37",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "columnSpan",
+ "value": "8",
+ "type": "Integer",
+ "description": "Span size",
+ "tooltip": "Column span size, numeric. The total must be 24",
+ "order": 30,
+ "classType": ""
+ },
+ {
+ "name": "columnPrepend",
+ "value": "",
+ "type": "Integer",
+ "description": "Prepend size",
+ "tooltip": "Prepend size - optional",
+ "order": 32,
+ "classType": ""
+ },
+ {
+ "name": "columnAppend",
+ "value": "",
+ "type": "Integer",
+ "description": "Append size",
+ "tooltip": "Append size - optional",
+ "order": 33,
+ "classType": ""
+ },
+ {
+ "name": "columnPrependTop",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Prepend gutter to top",
+ "tooltip": "Prepend space to the top of the element",
+ "order": 34,
+ "classType": ""
+ },
+ {
+ "name": "columnAppendBottom",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Prepend gutter to bottom",
+ "tooltip": "Prepend space to the bottom of the element",
+ "order": 35,
+ "classType": ""
+ },
+ {
+ "name": "columnBorder",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Right border",
+ "tooltip": "Generates a border between the columns",
+ "order": 36,
+ "classType": ""
+ },
+ {
+ "name": "columnBigBorder",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Big right border",
+ "tooltip": "Generates a border between the columns, ",
+ "order": 37,
+ "classType": ""
+ },
+ {
+ "name": "height",
+ "value": "36",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners",
+ "description": "Corners",
+ "tooltip": "Corners type",
+ "order": 70,
+ "classType": ""
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign",
+ "description": "Text Align",
+ "tooltip": "Text Align",
+ "order": 75,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "da114930-2277-0bd0-0cfa-c662bf5eeda1",
+ "type": "LayoutHtml",
+ "typeDesc": "Html",
+ "parent": "82cf8216-0f8b-3e92-1f6c-c4baea85f79e",
+ "properties": [
+ {
+ "name": "name",
+ "value": "title",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "html",
+ "value": "Steel Wheels Sales ",
+ "type": "Html",
+ "description": "HTML",
+ "tooltip": "Html code to be added",
+ "order": 15,
+ "classType": ""
+ },
+ {
+ "name": "fontSize",
+ "value": "",
+ "type": "Integer",
+ "description": "Font Size",
+ "tooltip": "Font size, in pixels ",
+ "order": 49,
+ "classType": "advanced"
+ },
+ {
+ "name": "color",
+ "value": "",
+ "type": "Color",
+ "description": "Color",
+ "tooltip": "Element color",
+ "order": 55,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "8aded277-9512-5c03-ebf5-fcd10c5d9910",
+ "type": "LayoutColumn",
+ "typeDesc": "Column",
+ "parent": "b428a9d7-baf8-feaf-a826-a8a98d0cbf37",
+ "properties": [
+ {
+ "name": "name",
+ "value": "",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "columnSpan",
+ "value": "8",
+ "type": "Integer",
+ "description": "Span size",
+ "tooltip": "Column span size, numeric. The total must be 24",
+ "order": 30,
+ "classType": ""
+ },
+ {
+ "name": "columnPrepend",
+ "value": "",
+ "type": "Integer",
+ "description": "Prepend size",
+ "tooltip": "Prepend size - optional",
+ "order": 32,
+ "classType": ""
+ },
+ {
+ "name": "columnAppend",
+ "value": "",
+ "type": "Integer",
+ "description": "Append size",
+ "tooltip": "Append size - optional",
+ "order": 33,
+ "classType": ""
+ },
+ {
+ "name": "columnPrependTop",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Prepend gutter to top",
+ "tooltip": "Prepend space to the top of the element",
+ "order": 34,
+ "classType": ""
+ },
+ {
+ "name": "columnAppendBottom",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Prepend gutter to bottom",
+ "tooltip": "Prepend space to the bottom of the element",
+ "order": 35,
+ "classType": ""
+ },
+ {
+ "name": "columnBorder",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Right border",
+ "tooltip": "Generates a border between the columns",
+ "order": 36,
+ "classType": ""
+ },
+ {
+ "name": "columnBigBorder",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Big right border",
+ "tooltip": "Generates a border between the columns, ",
+ "order": 37,
+ "classType": ""
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners",
+ "description": "Corners",
+ "tooltip": "Corners type",
+ "order": 70,
+ "classType": ""
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign",
+ "description": "Text Align",
+ "tooltip": "Text Align",
+ "order": 75,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "selector",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "c01d44a1-5eba-133b-85e3-520ccd78f31a",
+ "type": "LayoutHtml",
+ "typeDesc": "Html",
+ "parent": "8aded277-9512-5c03-ebf5-fcd10c5d9910",
+ "properties": [
+ {
+ "name": "name",
+ "value": "label",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "html",
+ "value": "Market ",
+ "type": "Html",
+ "description": "HTML",
+ "tooltip": "Html code to be added",
+ "order": 15,
+ "classType": ""
+ },
+ {
+ "name": "fontSize",
+ "value": "",
+ "type": "Integer",
+ "description": "Font Size",
+ "tooltip": "Font size, in pixels ",
+ "order": 49,
+ "classType": "advanced"
+ },
+ {
+ "name": "color",
+ "value": "",
+ "type": "Color",
+ "description": "Color",
+ "tooltip": "Element color",
+ "order": 55,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "c0de0658-eb27-6907-da1f-773672cd0a21",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "8aded277-9512-5c03-ebf5-fcd10c5d9910",
+ "properties": [
+ {
+ "name": "name",
+ "value": "selectorObj",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners",
+ "description": "Corners",
+ "tooltip": "Corners type",
+ "order": 70,
+ "classType": ""
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign",
+ "description": "Text Align",
+ "tooltip": "Text Align",
+ "order": 75,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "27ad70c2-2755-bc5b-7421-e365c2ea5224",
+ "type": "LayoutSpace",
+ "typeDesc": "Space",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "height",
+ "value": "1",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "cssClass",
+ "value": "",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "6097fe9c-997e-f80d-3a3c-3d0e3fb01cdb",
+ "type": "LayoutRow",
+ "typeDesc": "Row",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "name",
+ "value": "btableObj",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "height",
+ "value": "",
+ "type": "Integer",
+ "description": "Height",
+ "tooltip": "Element height, in pixels ",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "backgroundColor",
+ "value": "",
+ "type": "Color",
+ "description": "BackgroundColor",
+ "tooltip": "Element background color",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "roundCorners",
+ "value": "",
+ "type": "RoundCorners",
+ "description": "Corners",
+ "tooltip": "Corners type",
+ "order": 70,
+ "classType": ""
+ },
+ {
+ "name": "textAlign",
+ "value": "",
+ "type": "TextAlign",
+ "description": "Text Align",
+ "tooltip": "Text Align",
+ "order": 75,
+ "classType": ""
+ },
+ {
+ "name": "cssClass",
+ "value": "overflow",
+ "type": "String",
+ "description": "Css Class",
+ "tooltip": "Css Class to be used when this element is rendered",
+ "order": 80,
+ "classType": ""
+ }
+ ]
+ }
+ ]
+ },
+ "components": {
+ "rows": [
+ {
+ "id": "GENERIC",
+ "name": "Generic",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "Generic",
+ "type": "Label",
+ "description": "Group",
+ "tooltip": "Group"
+ }
+ ]
+ },
+ {
+ "id": "a0490e8d-81a5-2445-3a8d-b93a9fca2d78",
+ "type": "ComponentsParameter",
+ "typeDesc": "Simple parameter",
+ "parent": "GENERIC",
+ "properties": [
+ {
+ "name": "name",
+ "value": "territory",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "propertyValue",
+ "value": "EMEA",
+ "type": "String",
+ "description": "Property value",
+ "tooltip": "Property value",
+ "order": 20,
+ "classType": ""
+ },
+ {
+ "name": "parameterViewRole",
+ "value": "unused",
+ "type": "parameterViewRoleCustom",
+ "description": "Role in View",
+ "tooltip": "How should this parameter be handled when saving a view?",
+ "order": 88,
+ "classType": "advanced"
+ },
+ {
+ "name": "bookmarkable",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Bookmarkable",
+ "tooltip": "Is this parameter persisted with bookmarks/links?",
+ "order": 91,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "e40d7e41-1132-c3a6-700a-6ddfdd8466f4",
+ "type": "ComponentsJavascriptParameter",
+ "typeDesc": "Custom parameter",
+ "parent": "GENERIC",
+ "properties": [
+ {
+ "name": "name",
+ "value": "period",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "javaScript",
+ "value": "[\"[Time].[2004].[QTR1].[Jan]\", \"[Time].[2004].[QTR2].[Jun]\"]",
+ "type": "JavaScript",
+ "description": "Javascript code ",
+ "tooltip": "JavaScript code to be included",
+ "order": 17,
+ "classType": ""
+ },
+ {
+ "name": "parameterViewRole",
+ "value": "unused",
+ "type": "parameterViewRoleCustom",
+ "description": "Role in View",
+ "tooltip": "How should this parameter be handled when saving a view?",
+ "order": 88,
+ "classType": "advanced"
+ },
+ {
+ "name": "bookmarkable",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Bookmarkable",
+ "tooltip": "Is this parameter persisted with bookmarks/links?",
+ "order": 91,
+ "classType": ""
+ }
+ ]
+ },
+ {
+ "id": "SELECTORS",
+ "name": "Selects",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "Selects",
+ "type": "Label",
+ "description": "Group",
+ "tooltip": "Group"
+ }
+ ]
+ },
+ {
+ "id": "6212f3db-4353-58b8-90a4-7bb7ee22806e",
+ "type": "ComponentsSelect",
+ "typeDesc": "Select Component",
+ "parent": "SELECTORS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "territorySelector",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "parameter",
+ "value": "${p:territory}",
+ "type": "Parameter",
+ "description": "Parameter",
+ "tooltip": "Parameter to prompt",
+ "order": 12,
+ "classType": ""
+ },
+ {
+ "name": "listeners",
+ "value": "[]",
+ "type": "Listeners",
+ "description": "Listeners",
+ "tooltip": "Parameters to listen to",
+ "order": 13,
+ "classType": ""
+ },
+ {
+ "name": "parameters",
+ "value": "[]",
+ "type": "ValuesArray",
+ "description": "Parameters",
+ "tooltip": " Parameters to pass to the component",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "valueAsId",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Value as id",
+ "tooltip": "If false, uses the first column of the dataset as id. If true, Use the value as the id",
+ "order": 41,
+ "classType": ""
+ },
+ {
+ "name": "externalPlugin",
+ "value": "chosen",
+ "type": "String",
+ "description": "jQuery Plugin",
+ "tooltip": "chosen: uses chosen.jquery.js to render select tags",
+ "order": 41,
+ "classType": ""
+ },
+ {
+ "name": "dataSource",
+ "value": "territoriesQuery",
+ "type": "Datasource",
+ "description": "Datasource",
+ "tooltip": "DataSource to be used in this selector",
+ "order": 43,
+ "classType": ""
+ },
+ {
+ "name": "valuesArray",
+ "value": "[]",
+ "type": "ValuesArray",
+ "description": "Values array",
+ "tooltip": "Array to be used ",
+ "order": 44,
+ "classType": ""
+ },
+ {
+ "name": "priority",
+ "value": 5,
+ "type": "Integer",
+ "description": "Priority",
+ "tooltip": "Priority for component execution component. Lower values have higher priority",
+ "order": 50,
+ "classType": "advanced"
+ },
+ {
+ "name": "refreshPeriod",
+ "value": "",
+ "type": "Integer",
+ "description": "Refresh Period",
+ "tooltip": "Time interval (in seconds) to refresh the component. If 0 or not set component won't refresh.",
+ "order": 50,
+ "classType": "advanced"
+ },
+ {
+ "name": "htmlObject",
+ "value": "${p:selectorObj}",
+ "type": "HtmlObject",
+ "description": "HtmlObject",
+ "tooltip": "HtmlObject to prompt",
+ "order": 90,
+ "classType": ""
+ },
+ {
+ "name": "executeAtStart",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Execute at start",
+ "tooltip": "Execute at start?",
+ "order": 91,
+ "classType": "advanced"
+ },
+ {
+ "name": "preExecution",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Pre Execution",
+ "tooltip": "Function to be executed before the component is updated",
+ "order": 92,
+ "classType": "advanced"
+ },
+ {
+ "name": "postFetch",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Fetch",
+ "tooltip": "Code executed after this component's data is fetched from the server",
+ "order": 93,
+ "classType": "advanced"
+ },
+ {
+ "name": "postExecution",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Execution",
+ "tooltip": "Function to be executed after the component is updated",
+ "order": 93,
+ "classType": "advanced"
+ },
+ {
+ "name": "preChange",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Pre Change",
+ "tooltip": "Function to be executed before the component is changed. It's a function of the type function(value){return value}, and can be used for validation",
+ "order": 94,
+ "classType": "advanced"
+ },
+ {
+ "name": "postChange",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Change",
+ "tooltip": "Function to be executed after the component is changed. It's a function of the type function(value){...}",
+ "order": 95,
+ "classType": "advanced"
+ },
+ {
+ "name": "tooltip",
+ "value": "",
+ "type": "Html",
+ "description": "Tooltip",
+ "tooltip": "Tooltip to be displayed on component's mouse hover",
+ "order": 99,
+ "classType": "advanced"
+ },
+ {
+ "name": "extraOptions",
+ "value": "[]",
+ "type": "OptionArray",
+ "description": "Extra Options",
+ "tooltip": "Extra Options",
+ "order": 99,
+ "classType": "advanced"
+ }
+ ]
+ },
+ {
+ "id": "COMMUNITYCOMPONENTS",
+ "name": "Community Contributions",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "Community Contributions",
+ "type": "Label",
+ "description": "Group",
+ "tooltip": "Group"
+ }
+ ]
+ },
+ {
+ "id": "a61bd324-4c55-6b99-f532-1efb2c398eb9",
+ "type": "ComponentsBTableComponent",
+ "typeDesc": "BTable (by Biz Tech)",
+ "parent": "COMMUNITYCOMPONENTS",
+ "properties": [
+ {
+ "name": "name",
+ "value": "btable",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "expandContainerObject",
+ "value": "",
+ "type": "String",
+ "description": "Expand container Object",
+ "tooltip": "Id for container object with expanded row contents",
+ "order": 1,
+ "classType": "advanced"
+ },
+ {
+ "name": "catalog",
+ "value": "steel-wheels/analysis/steelwheels.mondrian.xml",
+ "type": "MondrianCatalog",
+ "description": "Catalog",
+ "tooltip": "Catalog",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "jndi",
+ "value": "SampleData",
+ "type": "Jndi",
+ "description": "Jndi",
+ "tooltip": "Jndi",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "cube",
+ "value": "SteelWheelsSales",
+ "type": "String",
+ "description": "Cube",
+ "tooltip": "Cube",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "dimensions",
+ "value": "[[\"[Product].[Line]\",\"\"]]",
+ "type": "ValuesArray",
+ "description": "Dimensions",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "measures",
+ "value": "[[\"[Measures].[Sales]\",\"\"]]",
+ "type": "ValuesArray",
+ "description": "Measures",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "pivotDimensions",
+ "value": "[]",
+ "type": "ValuesArray",
+ "description": "Pivot Dimensions",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "filters",
+ "value": "[[\"[Markets].[Territory]\",\"include:territory\"],[\"[Order Status].[Type]\",\"exclude:[Cancelled]\"],[\"[Time].[Months]\",\"between_un:period\"]]",
+ "type": "ValuesArray",
+ "description": "Filters",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "orderBy",
+ "value": "[]",
+ "type": "ValuesArray",
+ "description": "Order By",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "measuresOnColumns",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Measures on Columns",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "nonEmptyRows",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Non Empty Rows",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "nonEmptyColumns",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Non Empty Columns",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "grandTotal",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Grand Total on Dimensions",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "subTotals",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Subtotals on Dimensions",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "pivotGrandTotal",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Grand Total on Pivot",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "pivotSubTotals",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Subtotals on Pivot",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "showFilters",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Show Applied Filters and Sorts",
+ "tooltip": "",
+ "order": 10,
+ "classType": ""
+ },
+ {
+ "name": "listeners",
+ "value": "['${p:territory}']",
+ "type": "Listeners",
+ "description": "Listeners",
+ "tooltip": "Parameters to listen to",
+ "order": 13,
+ "classType": ""
+ },
+ {
+ "name": "oLanguage",
+ "value": "",
+ "type": "JavaScript",
+ "description": "oLanguage",
+ "tooltip": "oLanguage",
+ "order": 17,
+ "classType": "advanced"
+ },
+ {
+ "name": "expandParameters",
+ "value": "[]",
+ "type": "ValuesArray",
+ "description": "Expand Parameters",
+ "tooltip": " Expand Parameters - arg is column id, value is parameter name to change with column value",
+ "order": 40,
+ "classType": "advanced"
+ },
+ {
+ "name": "paginate",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Paginate",
+ "tooltip": "Paginate",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "filter",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Show Filter",
+ "tooltip": "Show option",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "info",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Info Filter",
+ "tooltip": "Info option",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "displayLength",
+ "value": "",
+ "type": "Integer",
+ "description": "Page Length",
+ "tooltip": "The page lengh",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "lengthChange",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Length Change",
+ "tooltip": "Allow user to change the displayed size?",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "expandOnClick",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Expand On Click",
+ "tooltip": "If true, expand row when clicked and show content from expandContainerObject",
+ "order": 41,
+ "classType": "advanced"
+ },
+ {
+ "name": "colSearchable",
+ "value": "[]",
+ "type": "Array",
+ "description": "Searchable Column",
+ "tooltip": "Array with the indexes of the columns to search",
+ "order": 42,
+ "classType": "advanced"
+ },
+ {
+ "name": "drawCallback",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Draw Function",
+ "tooltip": "Custom function to be executed when a page table is rendered",
+ "order": 42,
+ "classType": "advanced"
+ },
+ {
+ "name": "sDom",
+ "value": "",
+ "type": "JavaScript",
+ "description": "sDom control",
+ "tooltip": "Configuration of where the controls will be in the table",
+ "order": 43,
+ "classType": "advanced"
+ },
+ {
+ "name": "priority",
+ "value": 5,
+ "type": "Integer",
+ "description": "Priority",
+ "tooltip": "Priority for component execution component. Lower values have higher priority",
+ "order": 50,
+ "classType": "advanced"
+ },
+ {
+ "name": "refreshPeriod",
+ "value": "",
+ "type": "Integer",
+ "description": "Refresh Period",
+ "tooltip": "Time interval (in seconds) to refresh the component. If 0 or not set component won't refresh.",
+ "order": 50,
+ "classType": "advanced"
+ },
+ {
+ "name": "paginationType",
+ "value": "two_button",
+ "type": "PaginationType",
+ "description": "Pagination Type",
+ "tooltip": "Pagination Type",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "tableStyle",
+ "value": "classic",
+ "type": "TableStyle",
+ "description": "Style",
+ "tooltip": "Table style",
+ "order": 56,
+ "classType": "advanced"
+ },
+ {
+ "name": "htmlObject",
+ "value": "${p:btableObj}",
+ "type": "HtmlObject",
+ "description": "HtmlObject",
+ "tooltip": "HtmlObject to prompt",
+ "order": 90,
+ "classType": ""
+ },
+ {
+ "name": "paginateServerside",
+ "value": "false",
+ "type": "Boolean",
+ "description": "Paginate server-side",
+ "tooltip": "Paginate server-side",
+ "order": 91,
+ "classType": "advanced"
+ },
+ {
+ "name": "executeAtStart",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Execute at start",
+ "tooltip": "Execute at start?",
+ "order": 91,
+ "classType": "advanced"
+ },
+ {
+ "name": "preExecution",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Pre Execution",
+ "tooltip": "Function to be executed before the component is updated",
+ "order": 92,
+ "classType": "advanced"
+ },
+ {
+ "name": "postFetch",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Fetch",
+ "tooltip": "Code executed after this component's data is fetched from the server",
+ "order": 93,
+ "classType": "advanced"
+ },
+ {
+ "name": "postExecution",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Execution",
+ "tooltip": "Function to be executed after the component is updated",
+ "order": 93,
+ "classType": "advanced"
+ },
+ {
+ "name": "preChange",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Pre Change",
+ "tooltip": "Function to be executed before the component is changed. It's a function of the type function(value){return value}, and can be used for validation",
+ "order": 94,
+ "classType": "advanced"
+ },
+ {
+ "name": "postChange",
+ "value": "",
+ "type": "JavaScript",
+ "description": "Post Change",
+ "tooltip": "Function to be executed after the component is changed. It's a function of the type function(value){...}",
+ "order": 95,
+ "classType": "advanced"
+ },
+ {
+ "name": "tooltip",
+ "value": "",
+ "type": "Html",
+ "description": "Tooltip",
+ "tooltip": "Tooltip to be displayed on component's mouse hover",
+ "order": 99,
+ "classType": "advanced"
+ },
+ {
+ "name": "extraOptions",
+ "value": "[]",
+ "type": "OptionArray",
+ "description": "Extra Options",
+ "tooltip": "Extra Options",
+ "order": 99,
+ "classType": "advanced"
+ },
+ {
+ "name": "clickAction",
+ "value": "",
+ "type": "JavaScript",
+ "description": "clickAction",
+ "tooltip": "A callback function that is called when the user clicks on a visual element.",
+ "order": 254,
+ "classType": ""
+ }
+ ]
+ }
+ ]
+ },
+ "datasources": {
+ "rows": [
+ {
+ "id": "MDX",
+ "name": "MDX Queries",
+ "type": "Label",
+ "typeDesc": "Group ",
+ "parent": "UnIqEiD",
+ "properties": [
+ {
+ "name": "Group",
+ "value": "MDX Queries",
+ "type": "Label",
+ "description": "Group",
+ "tooltip": "Group"
+ }
+ ]
+ },
+ {
+ "id": "357acfbe-f8b4-2da3-ce21-7893378adee5",
+ "type": "Componentsmdx_mondrianJndi",
+ "typeDesc": "mdx over mondrianJndi",
+ "parent": "MDX",
+ "properties": [
+ {
+ "name": "name",
+ "value": "territoriesQuery",
+ "type": "Id",
+ "description": "Name",
+ "tooltip": "Name",
+ "order": 5,
+ "classType": ""
+ },
+ {
+ "name": "access",
+ "value": "public",
+ "type": "Access",
+ "description": "Access Level",
+ "tooltip": "The Access Level (Scope) for this data access",
+ "order": 11,
+ "classType": ""
+ },
+ {
+ "name": "jndi",
+ "value": "SampleData",
+ "type": "Jndi",
+ "description": "Jndi",
+ "tooltip": "JNDI string for the desired connection",
+ "order": 21,
+ "classType": ""
+ },
+ {
+ "name": "catalog",
+ "value": "steel-wheels/analysis/steelwheels.mondrian.xml",
+ "type": "MondrianCatalog",
+ "description": "Mondrian schema",
+ "tooltip": "Mondrian schema location",
+ "order": 22,
+ "classType": ""
+ },
+ {
+ "name": "query",
+ "value": "select \n NON EMPTY {[Measures].[Sales]} ON COLUMNS,\n NON EMPTY Order({[Markets].[All Markets].Children}, [Markets].CurrentMember.Name, ASC) ON ROWS\nfrom [SteelWheelsSales]",
+ "type": "SqlQuery",
+ "description": "Query",
+ "tooltip": "Query to be executed in the selected datasource",
+ "order": 25,
+ "classType": ""
+ },
+ {
+ "name": "parameters",
+ "value": "[]",
+ "type": "CdaParameters",
+ "description": "Parameters",
+ "tooltip": "Parameters to be sent to the xaction",
+ "order": 28,
+ "classType": ""
+ },
+ {
+ "name": "output",
+ "value": "[]",
+ "type": "IndexArray",
+ "description": "Output Options",
+ "tooltip": "Output options for this data access",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "outputMode",
+ "value": "include",
+ "type": "OutputMode",
+ "description": "Output Mode",
+ "tooltip": "Whether the output columns refer to columns that should be Included or Excluded from the final output",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "cdacolumns",
+ "value": "[]",
+ "type": "CdaColumnsArray",
+ "description": "Columns",
+ "tooltip": "Column Configuration",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "cdacalculatedcolumns",
+ "value": "[]",
+ "type": "CdaCalculatedColumnsArray",
+ "description": "Calculated Columns",
+ "tooltip": "Calculated Columns",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "bandedMode",
+ "value": "compact",
+ "type": "BandedMode",
+ "description": "Banded Mode",
+ "tooltip": "Banded Mode",
+ "order": 40,
+ "classType": ""
+ },
+ {
+ "name": "cacheDuration",
+ "value": 3600,
+ "type": "Integer",
+ "description": "Cache Duration",
+ "tooltip": "Cache Duration, in seconds",
+ "order": 50,
+ "classType": ""
+ },
+ {
+ "name": "cache",
+ "value": "true",
+ "type": "Boolean",
+ "description": "Cache",
+ "tooltip": "Is this data access's output supposed to be cached?",
+ "order": 91,
+ "classType": ""
+ }
+ ],
+ "meta": "CDA",
+ "meta_conntype": "mondrian.jndi",
+ "meta_datype": "mdx"
+ }
+ ]
+ },
+ "filename": "/system/BTable/dashboards/Sample_tmp.cdfde"
+}
\ No newline at end of file
diff --git a/endpoints/kettle/_createCdaDatasources.ktr b/endpoints/kettle/_createCdaDatasources.ktr
new file mode 100644
index 0000000..69b4ff5
--- /dev/null
+++ b/endpoints/kettle/_createCdaDatasources.ktr
@@ -0,0 +1,314 @@
+
+
+
+ _createCdaDatasources
+ Create CDA datasources for BTable, reading catalogs in /system/olap/datasources.xml
+
+
+ Normal
+ 0
+ /
+
+
+ btable.datasources.dir
+ ${Internal.Transformation.Filename.Directory}/../../resources/datasources
+
+
+
+
+
+
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID TRANSNAME Y TRANSNAME STATUS Y STATUS LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS STARTDATE Y STARTDATE ENDDATE Y ENDDATE LOGDATE Y LOGDATE DEPDATE Y DEPDATE REPLAYDATE Y REPLAYDATE LOG_FIELD Y LOG_FIELD
+
+
+
+
+
+ID_BATCH Y ID_BATCH SEQ_NR Y SEQ_NR LOGDATE Y LOGDATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS INPUT_BUFFER_ROWS Y INPUT_BUFFER_ROWS OUTPUT_BUFFER_ROWS Y OUTPUT_BUFFER_ROWS
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE LOGGING_OBJECT_TYPE Y LOGGING_OBJECT_TYPE OBJECT_NAME Y OBJECT_NAME OBJECT_COPY Y OBJECT_COPY REPOSITORY_DIRECTORY Y REPOSITORY_DIRECTORY FILENAME Y FILENAME OBJECT_ID Y OBJECT_ID OBJECT_REVISION Y OBJECT_REVISION PARENT_CHANNEL_ID Y PARENT_CHANNEL_ID ROOT_CHANNEL_ID Y ROOT_CHANNEL_ID
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS LOG_FIELD N LOG_FIELD
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+
+
+
+
+ -
+ 2013/07/04 18:48:57.073
+ -
+ 2013/07/04 18:48:57.073
+
+
+
+
+ Get catalogs from datasources.xml Create CDA filename and XML for each datasource Y Create CDA filename and XML for each datasource Write CDA files Y
+
+ Create CDA filename and XML for each datasource
+ ScriptValueMod
+
+ Y
+ 1
+
+ none
+
+
+ N
+ 9
+ 0
+ Script 1
+ var Jndi = "";
+
+var properties = DataSourceInfo.split(";");
+for(i = 0; i < properties.length; i++) {
+ var parts = properties[i].split("=");
+ if(parts[0] == "DataSource")
+ Jndi = parts[1];
+}
+
+var Catalog = replace(Definition, "solution:", "");
+
+var Filename = getVariable("btable.datasources.dir", "") + "/" + Jndi + "_" + replace(replace(Catalog, "/", "_"), ".xml", "");
+
+var Xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><CDADescriptor><DataSources>" +
+"<Connection id=\"BTableQuery\" type=\"mondrian.jndi\">" +
+"<Catalog>" + Catalog + "</Catalog><Jndi>" + Jndi + "</Jndi></Connection></DataSources>" +
+"<DataAccess access=\"public\" cache=\"true\" cacheDuration=\"3600\" " +
+"connection=\"BTableQuery\" id=\"BTableQuery\" type=\"mdx\"><BandedMode>classic</BandedMode>" +
+"<Columns/><Parameters><Parameter default=\"\" name=\"mdxQuery\" type=\"String\"/></Parameters>" +
+"<Query>${mdxQuery}</Query></DataAccess></CDADescriptor>";
+
+
+
+ Jndi
+ Jndi
+ String
+ -1
+ -1
+ N
+ Catalog
+ Schema
+ String
+ -1
+ -1
+ N
+ Filename
+ Filename
+ String
+ -1
+ -1
+ N
+ Xml
+ Xml
+ String
+ -1
+ -1
+ N
+
+
+ 495
+ 155
+ Y
+
+
+
+
+ Get catalogs from datasources.xml
+ getXMLData
+
+ Y
+ 1
+
+ none
+
+
+ N
+
+ N
+ N
+ N
+ N
+ N
+ N
+ N
+ N
+ Y
+
+ UTF-8
+
+ ${Internal.Transformation.Filename.Directory}/../../../olap
+ datasources.xml
+
+ N
+ N
+
+
+
+ Catalog
+ @name
+ attribut
+ valueof
+ String
+
+
+
+
+ -1
+ -1
+ none
+ N
+
+
+ DataSourceInfo
+ DataSourceInfo
+ node
+ valueof
+ String
+
+
+
+
+ -1
+ -1
+ none
+ N
+
+
+ Definition
+ Definition
+ node
+ valueof
+ String
+
+
+
+
+ -1
+ -1
+ none
+ N
+
+
+ 0
+ /DataSources/DataSource/Catalogs/Catalog
+ N
+ N
+
+
+
+
+
+
+
+
+
+
+
+
+ 191
+ 155
+ Y
+
+
+
+
+ Write CDA files
+ TextFileOutput
+
+ Y
+ 1
+
+ none
+
+
+ ;
+
+ N
+ N
+
+
+ DOS
+ None
+
+
+ Y
+ Filename
+ Y
+
+ file
+ N
+ N
+ Y
+ cda
+ N
+ N
+ N
+ N
+ N
+ N
+
+ N
+ N
+ N
+ 0
+
+
+
+ Xml
+ String
+
+
+
+
+
+ none
+ -1
+ -1
+
+
+
+
+ 737
+ 155
+ Y
+
+
+
+
+
+
+
+ N
+
diff --git a/endpoints/kettle/createCdaDatasources.kjb b/endpoints/kettle/createCdaDatasources.kjb
new file mode 100644
index 0000000..5521308
--- /dev/null
+++ b/endpoints/kettle/createCdaDatasources.kjb
@@ -0,0 +1,122 @@
+
+
+ createCdaDatasources
+ Create CDA datasources for BTable, reading catalogs in /system/olap/datasources.xml
+
+
+ 0
+ /
+ -
+ 2013/07/04 18:48:22.641
+ -
+ 2013/07/04 18:48:22.641
+
+
+
+
+
+
+
+
+
+
+ID_JOB Y ID_JOB CHANNEL_ID Y CHANNEL_ID JOBNAME Y JOBNAME STATUS Y STATUS LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS STARTDATE Y STARTDATE ENDDATE Y ENDDATE LOGDATE Y LOGDATE DEPDATE Y DEPDATE REPLAYDATE Y REPLAYDATE LOG_FIELD Y LOG_FIELD
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE JOBNAME Y TRANSNAME JOBENTRYNAME Y STEPNAME LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS RESULT Y RESULT NR_RESULT_ROWS Y NR_RESULT_ROWS NR_RESULT_FILES Y NR_RESULT_FILES LOG_FIELD N LOG_FIELD COPY_NR N COPY_NR
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE LOGGING_OBJECT_TYPE Y LOGGING_OBJECT_TYPE OBJECT_NAME Y OBJECT_NAME OBJECT_COPY Y OBJECT_COPY REPOSITORY_DIRECTORY Y REPOSITORY_DIRECTORY FILENAME Y FILENAME OBJECT_ID Y OBJECT_ID OBJECT_REVISION Y OBJECT_REVISION PARENT_CHANNEL_ID Y PARENT_CHANNEL_ID ROOT_CHANNEL_ID Y ROOT_CHANNEL_ID
+ N
+
+
+
+ START
+
+ SPECIAL
+ Y
+ N
+ N
+ 0
+ 0
+ 60
+ 12
+ 0
+ 1
+ 1
+ N
+ Y
+ 0
+ 171
+ 137
+
+
+ Success
+
+ SUCCESS
+ N
+ Y
+ 0
+ 455
+ 137
+
+
+ _createCdaDatasources
+
+ TRANS
+ filename
+
+ ${Internal.Job.Filename.Directory}/_createCdaDatasources.ktr
+
+ N
+ N
+ N
+ N
+ N
+ N
+
+
+ N
+ N
+ Basic
+ N
+
+ N
+ Y
+ N
+ N
+ Y
+ N
+ Y
+ 0
+ 312
+ 137
+
+
+
+
+ START
+ _createCdaDatasources
+ 0
+ 0
+ Y
+ Y
+ Y
+
+
+ _createCdaDatasources
+ Success
+ 0
+ 0
+ Y
+ Y
+ N
+
+
+
+
+
diff --git a/endpoints/kettle/getPluginVersion.ktr b/endpoints/kettle/getPluginVersion.ktr
new file mode 100644
index 0000000..7daed4e
--- /dev/null
+++ b/endpoints/kettle/getPluginVersion.ktr
@@ -0,0 +1,180 @@
+
+
+
+ getPluginVersion
+ Get BTable plugin branch and version from version.xml
+
+
+ Normal
+ 0
+ /
+
+
+
+
+
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID TRANSNAME Y TRANSNAME STATUS Y STATUS LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS STARTDATE Y STARTDATE ENDDATE Y ENDDATE LOGDATE Y LOGDATE DEPDATE Y DEPDATE REPLAYDATE Y REPLAYDATE LOG_FIELD Y LOG_FIELD
+
+
+
+
+
+ID_BATCH Y ID_BATCH SEQ_NR Y SEQ_NR LOGDATE Y LOGDATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS INPUT_BUFFER_ROWS Y INPUT_BUFFER_ROWS OUTPUT_BUFFER_ROWS Y OUTPUT_BUFFER_ROWS
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE LOGGING_OBJECT_TYPE Y LOGGING_OBJECT_TYPE OBJECT_NAME Y OBJECT_NAME OBJECT_COPY Y OBJECT_COPY REPOSITORY_DIRECTORY Y REPOSITORY_DIRECTORY FILENAME Y FILENAME OBJECT_ID Y OBJECT_ID OBJECT_REVISION Y OBJECT_REVISION PARENT_CHANNEL_ID Y PARENT_CHANNEL_ID ROOT_CHANNEL_ID Y ROOT_CHANNEL_ID
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS LOG_FIELD N LOG_FIELD
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+
+
+
+
+ -
+ 2013/07/04 18:48:57.073
+ -
+ 2013/07/04 18:48:57.073
+
+
+
+
+ Get data from version.xml OUTPUT Y
+
+ Get data from version.xml
+ getXMLData
+
+ Y
+ 1
+
+ none
+
+
+ N
+
+ N
+ N
+ N
+ N
+ N
+ N
+ N
+ N
+ Y
+
+ UTF-8
+
+ ${Internal.Transformation.Filename.Directory}/../../version.xml
+
+
+ N
+ N
+
+
+
+ branch
+ branch
+ attribut
+ valueof
+ String
+
+
+
+
+ -1
+ -1
+ none
+ N
+
+
+ version
+ .
+ node
+ valueof
+ String
+
+
+
+
+ -1
+ -1
+ none
+ N
+
+
+ 0
+ /version
+ N
+ N
+
+
+
+
+
+
+
+
+
+
+
+
+ 137
+ 99
+ Y
+
+
+
+
+ OUTPUT
+ Dummy
+
+ Y
+ 1
+
+ none
+
+
+
+
+ 423
+ 99
+ Y
+
+
+
+
+
+
+
+ N
+
diff --git a/endpoints/kettle/listCdaDatasources.ktr b/endpoints/kettle/listCdaDatasources.ktr
new file mode 100644
index 0000000..ce3ccde
--- /dev/null
+++ b/endpoints/kettle/listCdaDatasources.ktr
@@ -0,0 +1,204 @@
+
+
+
+ listCdaDatasources
+ List CDA datasources for BTable
+
+
+ Normal
+ 0
+ /
+
+
+ btable.datasources.dir
+ ${Internal.Transformation.Filename.Directory}/../../resources/datasources
+
+
+
+
+
+
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID TRANSNAME Y TRANSNAME STATUS Y STATUS LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS STARTDATE Y STARTDATE ENDDATE Y ENDDATE LOGDATE Y LOGDATE DEPDATE Y DEPDATE REPLAYDATE Y REPLAYDATE LOG_FIELD Y LOG_FIELD
+
+
+
+
+
+ID_BATCH Y ID_BATCH SEQ_NR Y SEQ_NR LOGDATE Y LOGDATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS INPUT_BUFFER_ROWS Y INPUT_BUFFER_ROWS OUTPUT_BUFFER_ROWS Y OUTPUT_BUFFER_ROWS
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE LOGGING_OBJECT_TYPE Y LOGGING_OBJECT_TYPE OBJECT_NAME Y OBJECT_NAME OBJECT_COPY Y OBJECT_COPY REPOSITORY_DIRECTORY Y REPOSITORY_DIRECTORY FILENAME Y FILENAME OBJECT_ID Y OBJECT_ID OBJECT_REVISION Y OBJECT_REVISION PARENT_CHANNEL_ID Y PARENT_CHANNEL_ID ROOT_CHANNEL_ID Y ROOT_CHANNEL_ID
+
+
+
+
+ID_BATCH Y ID_BATCH CHANNEL_ID Y CHANNEL_ID LOG_DATE Y LOG_DATE TRANSNAME Y TRANSNAME STEPNAME Y STEPNAME STEP_COPY Y STEP_COPY LINES_READ Y LINES_READ LINES_WRITTEN Y LINES_WRITTEN LINES_UPDATED Y LINES_UPDATED LINES_INPUT Y LINES_INPUT LINES_OUTPUT Y LINES_OUTPUT LINES_REJECTED Y LINES_REJECTED ERRORS Y ERRORS LOG_FIELD N LOG_FIELD
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+
+
+
+
+ -
+ 2013/07/04 18:48:57.073
+ -
+ 2013/07/04 18:48:57.073
+
+
+
+
+ Read CDA files OUTPUT Y
+
+ OUTPUT
+ SortRows
+
+ Y
+ 1
+
+ none
+
+
+ %%java.io.tmpdir%%
+ out
+ 1000000
+
+ N
+
+ N
+
+
+ Catalog
+ Y
+ N
+
+
+ Jndi
+ Y
+ N
+
+
+
+
+ 392
+ 155
+ Y
+
+
+
+
+ Read CDA files
+ getXMLData
+
+ Y
+ 1
+
+ none
+
+
+ N
+
+ N
+ N
+ N
+ N
+ N
+ N
+ N
+ N
+ Y
+
+ UTF-8
+
+ ${btable.datasources.dir}
+ .*\.cda
+
+ N
+ N
+
+
+
+ Catalog
+ Connection/Catalog
+ node
+ valueof
+ String
+
+
+
+
+ -1
+ -1
+ none
+ N
+
+
+ Jndi
+ Connection/Jndi
+ node
+ valueof
+ String
+
+
+
+
+ -1
+ -1
+ none
+ N
+
+
+ 0
+ /CDADescriptor/DataSources
+ N
+ N
+
+
+
+
+
+
+
+
+
+
+
+
+ 190
+ 155
+ Y
+
+
+
+
+
+
+
+ N
+
diff --git a/ivy.xml b/ivy.xml
new file mode 100644
index 0000000..b2ca495
--- /dev/null
+++ b/ivy.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ivysettings.xml b/ivysettings.xml
new file mode 100644
index 0000000..0311e3a
--- /dev/null
+++ b/ivysettings.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/cpf-core-TRUNK-SNAPSHOT.jar b/lib/cpf-core-TRUNK-SNAPSHOT.jar
new file mode 100644
index 0000000000000000000000000000000000000000..b081a14b34c053acc321775bda30dc3f86d458e3
GIT binary patch
literal 69322
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