You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by pe...@apache.org on 2016/08/22 04:48:09 UTC
[16/16] falcon git commit: FALCON-2118 Proposal for new UI changes
FALCON-2118 Proposal for new UI changes
changes as described in FALCON-2118
Author: Venkat Ranganathan <ve...@hortonworks.com>
Reviewers: Peeyush <pe...@apache.org>
Closes #268 from vrangan/FALCON-2118
Project: http://git-wip-us.apache.org/repos/asf/falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/76dc2e18
Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/76dc2e18
Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/76dc2e18
Branch: refs/heads/0.10-refactored-ui
Commit: 76dc2e18322b64cea36dc64bbeae5c183c97e7fc
Parents: 01a303e
Author: Venkat Ranganathan <ve...@hortonworks.com>
Authored: Mon Aug 22 10:16:12 2016 +0530
Committer: peeyush b <pb...@hortonworks.com>
Committed: Mon Aug 22 10:16:12 2016 +0530
----------------------------------------------------------------------
falcon-ambari-view/Gruntfile.js | 55 +
falcon-ambari-view/README | 53 +
falcon-ambari-view/package.json | 38 +
falcon-ambari-view/pom.xml | 142 ++
.../src/build/findbugs-exclude.xml | 31 +
.../ambari/view/FalconProxyImpersonator.java | 346 +++++
.../src/main/lib/ambari-views-2.4.0.0.1019.jar | Bin 0 -> 27130 bytes
.../src/main/resources/WEB-INF/web.xml | 22 +
falcon-ambari-view/src/main/resources/view.xml | 39 +
.../view/FalconProxyImpersonatorTest.java | 59 +
falcon-ui/Gruntfile.js | 19 +-
falcon-ui/Installation-steps.txt | 6 +-
falcon-ui/app/css/bootstrap/less/dropdowns.less | 8 +-
falcon-ui/app/css/bootstrap/less/forms.less | 3 +-
.../app/css/bootstrap/less/pagination.less | 2 +-
.../bootstrap/less/responsive-utilities.less | 2 +-
falcon-ui/app/css/bootstrap/less/tables.less | 10 +-
falcon-ui/app/css/bootstrap/less/variables.less | 4 +-
falcon-ui/app/css/default-theme.less | 20 +
falcon-ui/app/css/fonts/entypo.less | 6 +-
falcon-ui/app/css/gray-theme.less | 20 +
.../app/css/img/32x32_create-entity-hover.png | Bin 0 -> 1342 bytes
falcon-ui/app/css/img/32x32_create-entity.png | Bin 0 -> 1337 bytes
falcon-ui/app/css/img/32x32_upload.png | Bin 0 -> 1425 bytes
falcon-ui/app/css/img/cloud.png | Bin 0 -> 2816 bytes
falcon-ui/app/css/img/falcon-logo.jpg | Bin 0 -> 13903 bytes
falcon-ui/app/css/img/falcon.png | Bin 4742 -> 0 bytes
falcon-ui/app/css/img/feed.png | Bin 0 -> 4135 bytes
.../app/css/img/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 335 bytes
.../app/css/img/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 207 bytes
.../app/css/img/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 262 bytes
.../app/css/img/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 262 bytes
.../app/css/img/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 332 bytes
.../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 280 bytes
.../app/css/img/ui-icons_222222_256x240.png | Bin 0 -> 6922 bytes
.../app/css/img/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes
.../app/css/img/ui-icons_454545_256x240.png | Bin 0 -> 6992 bytes
.../app/css/img/ui-icons_888888_256x240.png | Bin 0 -> 6999 bytes
.../app/css/img/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4549 bytes
falcon-ui/app/css/img/user.svg | 16 -
falcon-ui/app/css/jquery-ui.css | 1225 ++++++++++++++++++
falcon-ui/app/css/main.less | 6 +
falcon-ui/app/css/styles/autocomplete-tags.less | 20 +-
falcon-ui/app/css/styles/common.less | 399 +++---
falcon-ui/app/css/styles/dataset-form.less | 138 +-
falcon-ui/app/css/styles/datasource-form.less | 90 ++
falcon-ui/app/css/styles/default.less | 72 +
falcon-ui/app/css/styles/entities-list.less | 99 +-
falcon-ui/app/css/styles/feed-form.less | 40 +
falcon-ui/app/css/styles/form-pages.less | 515 +++++++-
falcon-ui/app/css/styles/gray.less | 65 +
falcon-ui/app/css/styles/lineage.less | 50 +
falcon-ui/app/css/styles/nav-header.less | 216 ++-
.../app/css/styles/ng-tags-input.bootstrap.less | 167 +++
falcon-ui/app/css/styles/ng-tags-input.less | 134 ++
falcon-ui/app/css/styles/popover.less | 6 +-
falcon-ui/app/css/styles/progress-bar.less | 42 +-
falcon-ui/app/css/styles/server-messages.less | 13 +
falcon-ui/app/css/styles/snapshot-form.less | 52 +
falcon-ui/app/css/styles/white.less | 65 +
falcon-ui/app/css/variables.less | 93 +-
falcon-ui/app/css/white-theme.less | 20 +
falcon-ui/app/html/authenticating.html | 2 +-
.../html/cluster/clusterFormGeneralStepTpl.html | 314 +++--
.../html/cluster/clusterFormSummaryStepTpl.html | 63 +-
falcon-ui/app/html/cluster/clusterFormTpl.html | 115 +-
falcon-ui/app/html/cluster/clusterSummary.html | 77 ++
.../html/dataset/datasetFormGeneralStepTpl.html | 1200 +++++++++--------
.../html/dataset/datasetFormSummaryStepTpl.html | 235 ++--
falcon-ui/app/html/dataset/datasetFormTpl.html | 50 +-
falcon-ui/app/html/dataset/datasetSummary.html | 209 +++
.../datasourceFormAdvancedStepTpl.html | 72 +
.../datasourceFormGeneralStepTpl.html | 355 +++++
.../datasourceFormSummaryStepTpl.html | 113 ++
.../app/html/datasource/datasourceFormTpl.html | 96 ++
.../app/html/datasource/datasourceSummary.html | 95 ++
.../app/html/directives/aclPermissions.html | 45 +
.../html/directives/dependenciesGraphDv.html | 5 +-
.../app/html/directives/entitiesListDv.html | 8 +-
.../html/directives/entitiesSearchListDv.html | 44 +-
.../html/directives/feedFormHdfsStorage.html | 139 ++
.../html/directives/feedFormHiveStorage.html | 132 ++
.../app/html/directives/instancesListDv.html | 52 +-
.../app/html/directives/lineageGraphDv.html | 8 +-
falcon-ui/app/html/directives/navDv.html | 272 +++-
.../app/html/directives/serverMessagesDv.html | 2 +-
.../app/html/directives/timeZoneSelectDv.html | 15 +-
falcon-ui/app/html/entityDetailsTpl.html | 87 +-
falcon-ui/app/html/entitySummary.html | 8 +-
falcon-ui/app/html/error.html | 37 +
.../app/html/feed/feedFormAdvancedStepTpl.html | 166 +++
.../html/feed/feedFormClusterDetailsTpl.html | 151 +++
.../html/feed/feedFormClusterPartitionsTpl.html | 44 +
.../app/html/feed/feedFormClustersStepTpl.html | 256 ++--
.../app/html/feed/feedFormDataSourceTpl.html | 148 +++
.../app/html/feed/feedFormGeneralStepTpl.html | 523 ++++++--
.../app/html/feed/feedFormLocationStepTpl.html | 50 +-
.../html/feed/feedFormPropertiesStepTpl.html | 243 ++--
.../app/html/feed/feedFormSummaryStepTpl.html | 231 ++--
falcon-ui/app/html/feed/feedFormTpl.html | 123 +-
falcon-ui/app/html/feed/feedSummary.html | 119 +-
falcon-ui/app/html/formsTpl.html | 2 +-
falcon-ui/app/html/instanceDetails.html | 26 +-
falcon-ui/app/html/mainTpl.html | 161 ++-
.../process/processFormAdvancedStepTpl.html | 183 +++
.../process/processFormClustersStepTpl.html | 117 +-
.../html/process/processFormGeneralStepTpl.html | 600 +++++++--
.../processFormInputsAndOutputsStepTpl.html | 87 +-
.../process/processFormPropertiesStepTpl.html | 87 +-
.../html/process/processFormSummaryStepTpl.html | 263 ++--
falcon-ui/app/html/process/processFormTpl.html | 123 +-
falcon-ui/app/html/process/processSummary.html | 43 +-
.../snapshot/snapshotFormAdvancedStepTpl.html | 194 +++
.../snapshot/snapshotFormGeneralStepTpl.html | 505 ++++++++
.../snapshot/snapshotFormSummaryStepTpl.html | 157 +++
.../app/html/snapshot/snapshotFormTpl.html | 50 +
.../app/html/snapshot/snapshotSummary.html | 133 ++
falcon-ui/app/index.html | 10 +-
falcon-ui/app/js/app.js | 269 +++-
.../js/controllers/cluster/cluster-module.js | 265 +++-
falcon-ui/app/js/controllers/controllers.js | 5 +-
.../app/js/controllers/dashboard-controller.js | 164 +--
.../controllers/dataset/dataset-controller.js | 530 ++------
.../datasource-advanced-controller.js | 34 +
...datasource-general-information-controller.js | 141 ++
.../controllers/datasource/datasource-module.js | 33 +
.../datasource/datasource-root-ctrl.js | 249 ++++
.../datasource/datasource-summary-controller.js | 39 +
.../app/js/controllers/entity/entity-details.js | 120 +-
.../app/js/controllers/entity/entity-module.js | 22 +-
.../js/controllers/entity/instance-details.js | 7 +-
.../feed/feed-advanced-controller.js | 34 +
.../feed/feed-clusters-controller.js | 135 +-
.../feed/feed-general-information-controller.js | 127 +-
.../feed/feed-location-controller.js | 13 -
.../app/js/controllers/feed/feed-root-ctrl.js | 224 +++-
.../controllers/feed/feed-summary-controller.js | 12 +-
.../app/js/controllers/header-controller.js | 47 +-
.../process/process-advanced-ctrl.js | 34 +
.../process/process-clusters-ctrl.js | 6 +-
.../process/process-general-information-ctrl.js | 141 +-
.../js/controllers/process/process-root-ctrl.js | 120 +-
.../controllers/process/process-summary-ctrl.js | 39 -
falcon-ui/app/js/controllers/root-controller.js | 157 ++-
.../controllers/snapshot/snapshot-controller.js | 262 ++++
falcon-ui/app/js/controllers/themeController.js | 31 +
falcon-ui/app/js/directives/acl-permissions.js | 103 ++
falcon-ui/app/js/directives/chart.js | 4 +-
falcon-ui/app/js/directives/check-name.js | 184 ++-
.../app/js/directives/dependencies-graph.js | 288 ++--
falcon-ui/app/js/directives/directives.js | 285 +++-
.../app/js/directives/entities-search-list.js | 86 +-
.../js/directives/feed-cluster-partitions.js | 119 ++
falcon-ui/app/js/directives/instances-list.js | 510 +++-----
.../app/js/directives/interface-endpoint.js | 85 ++
falcon-ui/app/js/directives/lineage-graph.js | 4 +-
falcon-ui/app/js/directives/ng-tags-input.js | 4 +-
falcon-ui/app/js/directives/server-messages.js | 45 +-
falcon-ui/app/js/directives/tooltip.js | 24 +-
.../app/js/directives/validation-message.js | 45 +-
falcon-ui/app/js/lib/angular-ngStorage.js | 161 +++
falcon-ui/app/js/lib/focusIf.min.js | 1 +
falcon-ui/app/js/lib/jquery-ui.min.js | 13 +
falcon-ui/app/js/lib/jquery.mask.min.js | 12 +
falcon-ui/app/js/lib/popover.js | 20 +-
falcon-ui/app/js/lib/xml2json.min.js | 1095 ++++++++--------
falcon-ui/app/js/services/common/date-helper.js | 266 +++-
falcon-ui/app/js/services/common/falcon-api.js | 75 +-
.../app/js/services/common/route-helper.js | 46 +
falcon-ui/app/js/services/common/server-api.js | 49 +-
.../app/js/services/common/tooltip-messages.js | 117 ++
.../js/services/common/validation-service.js | 120 +-
.../js/services/common/xml-to-json-service.js | 9 +
.../app/js/services/entity/entity-details.js | 64 +
.../app/js/services/entity/entity-factory.js | 272 +++-
.../app/js/services/entity/entity-model.js | 135 +-
.../app/js/services/entity/entity-scheduler.js | 122 ++
.../app/js/services/entity/entity-serializer.js | 555 +++++++-
.../services/extension/extension-serializer.js | 415 ++++++
falcon-ui/app/js/services/services.js | 16 +-
.../test/controllers/HeaderControllerSpec.js | 10 +-
.../controllers/cluster/cluster-moduleSpec.js | 42 +-
.../FeedGeneralInformationControllerSpec.js | 1 +
.../feed/FeedLocationControllerSpec.js | 3 +-
.../test/controllers/feed/FeedRootCtrlSpec.js | 32 +-
.../feed/FeedSummaryControllerSpec.js | 4 +-
.../process/ProcessClustersCtrlSpec.js | 8 +-
.../ProcessGeneralInformationCtrlSpec.js | 39 +-
.../controllers/process/ProcessRootCtrlSpec.js | 81 +-
.../process/ProcessSummaryCtrlSpec.js | 65 +-
falcon-ui/app/test/e2e/protractor.js | 20 +-
.../app/test/services/EntitySerializerSpec.js | 138 +-
.../app/test/services/ValdationServiceSpec.js | 2 +-
falcon-ui/express-data/mockData.js | 52 +-
falcon-ui/karma.conf.js | 18 -
falcon-ui/pom.xml | 29 +-
falcon-ui/server.js | 28 +-
pom.xml | 1 +
198 files changed, 17112 insertions(+), 5143 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/Gruntfile.js
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/Gruntfile.js b/falcon-ambari-view/Gruntfile.js
new file mode 100644
index 0000000..06ae4ea
--- /dev/null
+++ b/falcon-ambari-view/Gruntfile.js
@@ -0,0 +1,55 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+(function () {
+ "use strict";
+
+ module.exports = function (grunt) {
+
+ grunt.initConfig({
+
+ scp: {
+ options: {
+ host: 'sandbox.hortonworks.com',
+ username: 'root',
+ password: 'hadoop'
+ },
+
+ sandbox: {
+ files: [
+ {
+ cwd: 'target',
+ src: '*.jar',
+ filter: 'isFile',
+ // path on the server
+ dest: '/var/lib/ambari-server/resources/views'
+ }
+ ]
+ }
+ }
+
+ });
+
+ grunt.registerTask('deploy', [
+ 'scp'
+ ]);
+
+ grunt.loadNpmTasks('grunt-scp');
+
+ };
+
+}());
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/README
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/README b/falcon-ambari-view/README
new file mode 100644
index 0000000..07cb13b
--- /dev/null
+++ b/falcon-ambari-view/README
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+Falcon-Ambari-UI
+=========
+Web UI inside ambari for the Falcon-UI
+
+To clone the repository
+===============================
+- git clone https://github.com/hortonworks/falcon.git
+- git checkout dal
+
+
+Before starting
+===============
+NodeJs , npm, Grunt must be installed in the local pc.
+
+- From git root cd to /falcon-ui
+- npm install (this will install all the app related node modules)
+
+
+To deploy to the sandbox (v2-2)
+===============================
+- Deploy ambari view in order to generate falcon-ambari-view-0.7-incubating-SNAPSHOT.jar:
+ 1. cd falcon-ui
+ 2. grunt ambariview
+ 3. cd ..
+ 4. cd falcon-ambari-view
+ 5. mvn clean install
+ 6. falcon-ambari-view-0.7-incubating-SNAPSHOT.jar will be generated inside the taget directory
+
+- Upload falcon-ambari-view-0.7-incubating-SNAPSHOT.jar to /var/lib/ambari-server/resources/views/
+- Restart ambari server
+- Go to ambari admin -> Manage Ambari -> Falcon Ambari View -> Create Instance
+- Enter the API URL in the falcon.service.uri property
+
+Important!
+Security/Kerberos must be enabled, otherwise the services will ask for user.name param
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/package.json
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/package.json b/falcon-ambari-view/package.json
new file mode 100644
index 0000000..1aa99d4
--- /dev/null
+++ b/falcon-ambari-view/package.json
@@ -0,0 +1,38 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+{
+ "name": "falcon-ambari-view",
+ "version": "1.0.0",
+ "description": "UI to communicate with the ambari views",
+ "author": "Apache Foundation",
+ "license": "ISC",
+ "devDependencies": {
+ "grunt": "~0.4.4",
+ "grunt-concurrent": "^1.0.0",
+ "grunt-contrib-clean": "^0.6.0",
+ "grunt-contrib-concat": "^0.5.0",
+ "grunt-contrib-copy": "~0.5.0",
+ "grunt-contrib-csslint": "~0.2.0",
+ "grunt-contrib-jshint": "~0.10.0",
+ "grunt-contrib-less": "~0.11.0",
+ "grunt-contrib-uglify": "~0.4.0",
+ "grunt-contrib-watch": "~0.6.1",
+ "grunt-scp": "^0.1.7"
+ }
+}
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/pom.xml
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/pom.xml b/falcon-ambari-view/pom.xml
new file mode 100644
index 0000000..00176b5
--- /dev/null
+++ b/falcon-ambari-view/pom.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
+ license agreements. See the NOTICE file distributed with this work for additional
+ information regarding copyright ownership. The ASF licenses this file to
+ You under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of
+ the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
+ by applicable law or agreed to in writing, software distributed under the
+ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied. See the License for the specific
+ language governing permissions and limitations under the License. -->
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.falcon</groupId>
+ <artifactId>falcon-main</artifactId>
+ <version>0.10</version>
+ </parent>
+
+ <artifactId>falcon-ambari-view</artifactId>
+ <packaging>jar</packaging>
+ <name>Apache Falcon Ambari Views Integration</name>
+ <description>Apache Falcon UI Application</description>
+
+
+
+ <dependencies>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-client</artifactId>
+ <version>${jersey.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.jersey</groupId>
+ <artifactId>jersey-json</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <version>1</version>
+ </dependency>
+
+ <!-- Unit testing ====================================================== -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.11</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <version>1.9.0</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ <version>4.1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.ambari.contrib.views</groupId>
+ <artifactId>ambari-views</artifactId>
+ <version>2.4.0.0.1019</version>
+ <scope>system</scope>
+ <systemPath>${basedir}/src/main/lib/ambari-views-2.4.0.0.1019.jar</systemPath>
+ </dependency>
+ </dependencies>
+
+ <build>
+
+ <plugins>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.12</version>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>package.json</exclude>
+ <exclude>src/main/resources/ui/css/**</exclude>
+ <exclude>src/main/resources/ui/js/**</exclude>
+ <exclude>src/main/resources/ui/config/**</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/lib</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+
+ <resources>
+ <resource>
+ <directory>src/main/resources/ui/</directory>
+ <filtering>false</filtering>
+ </resource>
+ <resource>
+ <directory>src/main/resources/</directory>
+ <filtering>false</filtering>
+ <includes>
+ <include>view.xml</include>
+ </includes>
+ </resource>
+ <resource>
+ <targetPath>WEB-INF/lib</targetPath>
+ <filtering>false</filtering>
+ <directory>target/lib</directory>
+ </resource>
+ </resources>
+ </build>
+
+</project>
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/build/findbugs-exclude.xml
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/build/findbugs-exclude.xml b/falcon-ambari-view/src/build/findbugs-exclude.xml
new file mode 100644
index 0000000..d548c0e
--- /dev/null
+++ b/falcon-ambari-view/src/build/findbugs-exclude.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<FindBugsFilter>
+
+ <!--
+ Disable encoding as this might give an impression that Falcon code base is
+ "Internationalization" ready, but we haven't done anything consciously to guarantee that.
+ -->
+ <Match>
+ <Bug pattern="DM_DEFAULT_ENCODING" />
+ </Match>
+
+ <Match>
+ <Bug pattern="RV_RETURN_VALUE_IGNORED_NO_SIDE_EFFECT" />
+ </Match>
+</FindBugsFilter>
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/main/java/org/apache/falcon/ambari/view/FalconProxyImpersonator.java
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/main/java/org/apache/falcon/ambari/view/FalconProxyImpersonator.java b/falcon-ambari-view/src/main/java/org/apache/falcon/ambari/view/FalconProxyImpersonator.java
new file mode 100644
index 0000000..15b0997
--- /dev/null
+++ b/falcon-ambari-view/src/main/java/org/apache/falcon/ambari/view/FalconProxyImpersonator.java
@@ -0,0 +1,346 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.falcon.ambari.view;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+
+import com.google.inject.Singleton;
+
+import javax.inject.Inject;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.ambari.view.URLStreamProvider;
+import org.apache.ambari.view.ViewContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This is a class used to bridge the communication between the falcon-ui and
+ * the falcon API executing inside ambari.
+ */
+
+@Singleton
+public class FalconProxyImpersonator {
+ private static final Logger LOG = LoggerFactory
+ .getLogger(FalconProxyImpersonator.class);
+ private static final String GET_METHOD = "GET";
+ private static final String POST_METHOD = "POST";
+ private static final String DELETE_METHOD = "DELETE";
+
+ private static final String FALCON_ERROR = "<result><status>FAILED</status>";
+ private static final String[] FORCE_JSON_RESPONSE = { "/entities/list/", "admin/version", };
+
+ public static final String VIEW_KERBEROS_PRINCIPAL = "view.kerberos.principal";
+ public static final String VIEW_KERBEROS_PRINCIPAL_KEYTAB = "view.kerberos.principal.keytab";
+
+ private ViewContext viewContext;
+
+ /**
+ * Constructor to get the default viewcontext.
+ * @param viewContext
+ */
+ @Inject
+ public FalconProxyImpersonator(ViewContext viewContext) {
+ this.viewContext = viewContext;
+ }
+
+ /**
+ * Method to set the ambari user.
+ * @param headers
+ * @param ui
+ * @return
+ */
+ @GET
+ @Path("/")
+ public Response setUser(@Context HttpHeaders headers, @Context UriInfo ui) {
+ try {
+ String userName = viewContext.getUsername();
+ return Response.ok(userName).type(getResponseType(userName))
+ .build();
+ } catch (Exception ex) {
+ LOG.error(ex.getMessage(), ex);
+ return Response.status(Response.Status.BAD_REQUEST)
+ .entity(ex.toString()).build();
+ }
+ }
+
+ /**
+ * Method to attend all the GET calls.
+ * @param headers
+ * @param ui
+ * @return
+ */
+ @GET
+ @Path("/{path: .*}")
+ public Response getUsage(@Context HttpHeaders headers, @Context UriInfo ui) {
+ try {
+ String serviceURI = buildURI(ui);
+ return consumeService(headers, serviceURI, GET_METHOD, null);
+ } catch (Exception ex) {
+ LOG.error(ex.getMessage(), ex);
+ return Response.status(Response.Status.BAD_REQUEST)
+ .entity(ex.toString()).build();
+ }
+ }
+
+ /**
+ * Method to attend all the POST calls.
+ * @param xml
+ * @param headers
+ * @param ui
+ * @return
+ * @throws IOException
+ */
+ @POST
+ @Path("/{path: .*}")
+ public Response handlePost(String xml, @Context HttpHeaders headers,
+ @Context UriInfo ui) throws IOException {
+ try {
+ String serviceURI = buildURI(ui);
+ return consumeService(headers, serviceURI, POST_METHOD, xml);
+ } catch (Exception ex) {
+ LOG.error(ex.getMessage(), ex);
+ return Response.status(Response.Status.BAD_REQUEST)
+ .entity(ex.toString()).build();
+ }
+ }
+
+ /**
+ * Method to attend all the DELETE calls.
+ * @param headers
+ * @param ui
+ * @return
+ * @throws IOException
+ */
+ @DELETE
+ @Path("/{path: .*}")
+ public Response handleDelete(@Context HttpHeaders headers,
+ @Context UriInfo ui) throws IOException {
+ try {
+ String serviceURI = buildURI(ui);
+ return consumeService(headers, serviceURI, DELETE_METHOD, null);
+ } catch (Exception ex) {
+ LOG.error(ex.getMessage(), ex);
+ return Response.status(Response.Status.BAD_REQUEST)
+ .entity(ex.toString()).build();
+ }
+ }
+
+ /**
+ * Method set the parametters and cast them to a String.
+ * @param ui
+ * @return
+ */
+ private String buildURI(UriInfo ui) {
+ String serviceURI = getFalconURL();
+ serviceURI += getUIURI(ui);
+ StringBuilder urlBuilder = new StringBuilder(serviceURI);
+ MultivaluedMap<String, String> parameters = ui.getQueryParameters();
+ boolean firstEntry = true;
+ for (Map.Entry<String, List<String>> entry : parameters.entrySet()) {
+ if (firstEntry) {
+ urlBuilder.append("?");
+ } else {
+ urlBuilder.append("&");
+ }
+ boolean firstVal = true;
+ for (String val : entry.getValue()) {
+ urlBuilder.append(firstVal ? "" : "&").append(entry.getKey())
+ .append("=").append(val);
+ firstVal = false;
+ }
+ firstEntry = false;
+ }
+ return urlBuilder.toString();
+ }
+
+ private String getUIURI(UriInfo uriInfo) {
+ String uriPath = uriInfo.getAbsolutePath().getPath();
+ int index = uriPath.indexOf("proxy/") + 5;
+ return uriPath.substring(index);
+ }
+
+ /**
+ * Method to consume the API from the URLStreamProvider.
+ * @param headers
+ * @param urlToRead
+ * @param method
+ * @param xml
+ * @return
+ * @throws Exception
+ */
+ private Response consumeService(HttpHeaders headers, String urlToRead,
+ String method, String xml) throws Exception {
+ Response response;
+ URLStreamProvider streamProvider = viewContext.getURLStreamProvider();
+ Map<String, String> newHeaders = getHeaders(headers);
+ newHeaders.put("user.name", viewContext.getUsername());
+
+ if (checkForceJsonRepsonse(urlToRead, newHeaders)) {
+ newHeaders.put("Accept", MediaType.APPLICATION_JSON);
+ }
+ LOG.info(String.format("Falcon Url[%s]", urlToRead));
+ InputStream stream = null;
+ if (isSecurityEnabled()) {
+ stream = streamProvider.readAsCurrent(urlToRead, method, xml,
+ newHeaders);
+ } else {
+ stream = streamProvider
+ .readFrom(urlToRead, method, xml, newHeaders);
+ }
+
+ String sresponse = getStringFromInputStream(stream);
+
+ if (sresponse.contains(FALCON_ERROR)
+ || sresponse.contains(Response.Status.BAD_REQUEST.name())) {
+ response = Response.status(Response.Status.BAD_REQUEST)
+ .entity(sresponse).type(MediaType.TEXT_PLAIN).build();
+ } else {
+ return Response.status(Response.Status.OK).entity(sresponse)
+ .type(getResponseType(sresponse)).build();
+ }
+
+ return response;
+ }
+
+ private boolean isSecurityEnabled() {
+ return !"simple".equals(viewContext.getProperties().get(
+ "falcon.authentication.type"));
+ }
+
+ private String getFalconURL() {
+ String falconUri = "";
+ if (viewContext.getCluster() != null) {
+ String tlsEnabled = viewContext.getCluster().getConfigurationValue(
+ "falcon_startup.properties", "falcon.enableTLS");
+ String scheme = Boolean.parseBoolean(tlsEnabled) ? "https" : "http";
+ String falconHost = viewContext.getCluster()
+ .getHostsForServiceComponent("FALCON", "FALCON_SERVER")
+ .get(0);
+ String falconPort = viewContext.getCluster().getConfigurationValue(
+ "falcon-env", "falcon_port");
+ falconUri = scheme + "://" + falconHost + ":" + falconPort;
+
+ } else {
+ falconUri = viewContext.getProperties().get("falcon.service.uri");
+ }
+ LOG.info("Falcon URI==" + falconUri);
+ return falconUri;
+
+ }
+
+ /**
+ * Method to read the response and send it to the front.
+ * @param is
+ * @return
+ */
+ private String getStringFromInputStream(InputStream is) {
+
+ BufferedReader br = null;
+ StringBuilder sb = new StringBuilder();
+
+ String line;
+ try {
+ br = new BufferedReader(new InputStreamReader(is));
+ while ((line = br.readLine()) != null) {
+ sb.append(line);
+ }
+ } catch (IOException e) {
+ LOG.error(e.getMessage(), e);
+ } finally {
+ if (br != null) {
+ try {
+ br.close();
+ } catch (IOException e) {
+ LOG.error(e.getMessage(), e);
+ }
+ }
+ }
+ return sb.toString();
+ }
+
+ /**
+ * Method to cast the response type.
+ * @param response
+ * @return
+ */
+ private String getResponseType(String response) {
+ if (response.startsWith("{")) {
+ return MediaType.TEXT_PLAIN;
+ } else if (response.startsWith("<")) {
+ return MediaType.TEXT_XML;
+ } else {
+ return MediaType.TEXT_PLAIN;
+ }
+ }
+
+ private boolean checkForceJsonRepsonse(String urlToRead,
+ Map<String, String> headers) throws Exception {
+ for (int i = 0; i < FORCE_JSON_RESPONSE.length; i++) {
+ if (urlToRead.contains(FORCE_JSON_RESPONSE[i])) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private Map<String, String> getHeaders(HttpHeaders headers) {
+ MultivaluedMap<String, String> requestHeaders = headers
+ .getRequestHeaders();
+ Set<Entry<String, List<String>>> headerEntrySet = requestHeaders
+ .entrySet();
+ HashMap<String, String> headersMap = new HashMap<String, String>();
+ for (Entry<String, List<String>> headerEntry : headerEntrySet) {
+ String key = headerEntry.getKey();
+ List<String> values = headerEntry.getValue();
+ headersMap.put(key, strJoin(values, ","));
+ }
+ return headersMap;
+ }
+
+ // TODO use one of libraries.
+ private String strJoin(List<String> strings, String separator) {
+
+ StringBuilder stringBuilder = new StringBuilder();
+ for (int i = 0, il = strings.size(); i < il; i++) {
+ if (i > 0) {
+ stringBuilder.append(separator);
+ }
+ stringBuilder.append(strings.get(i));
+ }
+ return stringBuilder.toString();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/main/lib/ambari-views-2.4.0.0.1019.jar
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/main/lib/ambari-views-2.4.0.0.1019.jar b/falcon-ambari-view/src/main/lib/ambari-views-2.4.0.0.1019.jar
new file mode 100644
index 0000000..6865744
Binary files /dev/null and b/falcon-ambari-view/src/main/lib/ambari-views-2.4.0.0.1019.jar differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/main/resources/WEB-INF/web.xml
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/main/resources/WEB-INF/web.xml b/falcon-ambari-view/src/main/resources/WEB-INF/web.xml
new file mode 100644
index 0000000..aad4c20
--- /dev/null
+++ b/falcon-ambari-view/src/main/resources/WEB-INF/web.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. Kerberos, LDAP, Custom. Binary/Htt
+-->
+<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+ version="3.1">
+</web-app>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/main/resources/view.xml
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/main/resources/view.xml b/falcon-ambari-view/src/main/resources/view.xml
new file mode 100644
index 0000000..1a8d914
--- /dev/null
+++ b/falcon-ambari-view/src/main/resources/view.xml
@@ -0,0 +1,39 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<view>
+ <name>Falcon</name>
+ <label>Falcon View</label>
+ <version>1.1.0</version>
+ <build>${env.BUILD_NUMBER}</build>
+ <resource>
+ <name>proxy</name>
+ <service-class>org.apache.falcon.ambari.view.FalconProxyImpersonator</service-class>
+ </resource>
+ <parameter>
+ <name>falcon.service.uri</name>
+ <description>The URI to which the falcon services will route. Default: "http://sandbox.hortonworks.com:15000"</description>
+ <required>false</required>
+ <cluster-config>fake</cluster-config>
+ </parameter>
+ <parameter>
+ <name>falcon.authentication.type</name>
+ <description>Authentication Type(simple|kerberos)</description>
+ <required>false</required>
+ <default-value>simple</default-value>
+ <cluster-config>falcon_startup.properties/falcon.authentication.type</cluster-config>
+ </parameter>
+</view>
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ambari-view/src/test/java/org/apache/falcon/ambari/view/FalconProxyImpersonatorTest.java
----------------------------------------------------------------------
diff --git a/falcon-ambari-view/src/test/java/org/apache/falcon/ambari/view/FalconProxyImpersonatorTest.java b/falcon-ambari-view/src/test/java/org/apache/falcon/ambari/view/FalconProxyImpersonatorTest.java
new file mode 100644
index 0000000..e01fed5
--- /dev/null
+++ b/falcon-ambari-view/src/test/java/org/apache/falcon/ambari/view/FalconProxyImpersonatorTest.java
@@ -0,0 +1,59 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.falcon.ambari.view;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+
+import org.apache.ambari.view.ViewContext;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+/**
+ * This is a class used to test FalconProxyImpersonator to bridge the communication between the falcon-ui
+ * and the falcon API executing inside ambari.
+ */
+public class FalconProxyImpersonatorTest {
+
+ private ViewContext viewContext;
+ private HttpHeaders headers;
+ private UriInfo ui;
+
+ private FalconProxyImpersonator impersonator;
+
+ @Before
+ public void setUp() throws Exception {
+ viewContext = mock(ViewContext.class);
+ headers = mock(HttpHeaders.class);
+ ui = mock(UriInfo.class);
+ impersonator = new FalconProxyImpersonator(viewContext);
+ }
+
+ @Test
+ public void testSetUser(){
+ Mockito.when(viewContext.getUsername()).thenReturn("ambari-qa");
+ Response response = impersonator.setUser(headers, ui);
+ assertEquals(200, response.getStatus());
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/Gruntfile.js
----------------------------------------------------------------------
diff --git a/falcon-ui/Gruntfile.js b/falcon-ui/Gruntfile.js
index 112ad49..2ba3343 100644
--- a/falcon-ui/Gruntfile.js
+++ b/falcon-ui/Gruntfile.js
@@ -24,7 +24,7 @@
copy: {
resources: {
cwd: 'app',
- src: ['html/**/*.html', 'index.html', 'config/*'],
+ src: ['html/**/*.html', 'index.html', 'config/*', 'css/jquery-ui.css'],
dest: 'dist/',
expand: true
},
@@ -34,6 +34,12 @@
dest: 'dist/',
expand: true
},
+ webapp : {
+ cwd: 'dist',
+ src: ['**/*.*'],
+ dest: '../webapp/src/main/webapp/',
+ expand: true
+ },
ambariview : {
cwd: 'dist',
src: ['**/*.*'],
@@ -54,6 +60,7 @@
'app/js/lib/jquery-1.11.1.min.js',
'app/js/lib/angular.min.js',
'app/js/lib/angular-cookies.min.js',
+ 'app/js/lib/angular-ngStorage.js',
'app/js/lib/uirouter.min.js',
'app/js/lib/ui-bootstrap-tpls-0.11.0.min.js',
'app/js/lib/d3.min.js',
@@ -65,7 +72,10 @@
'app/js/lib/ng-tags-input.js',
'app/js/lib/popover.js',
'app/js/lib/ng-mask.min.js',
- 'app/js/lib/dagre.min.js'
+ 'app/js/lib/dagre.min.js',
+ 'app/js/lib/focusIf.min.js',
+ 'app/js/lib/jquery.mask.min.js',
+ 'app/js/lib/jquery-ui.min.js'
//'app/js/lib/bootstrap.notify.js'
],
dest: 'dist/js/vendor.min.js'
@@ -151,7 +161,10 @@
ieCompat: false
},
files: {
- 'dist/css/main.css': 'app/css/main.less'
+ 'dist/css/dark-theme.css': 'app/css/main.less',
+ 'dist/css/white-theme.css': 'app/css/white-theme.less',
+ 'dist/css/gray-theme.css': 'app/css/gray-theme.less',
+ 'dist/css/default-theme.css': 'app/css/default-theme.less'
}
}
},
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/Installation-steps.txt
----------------------------------------------------------------------
diff --git a/falcon-ui/Installation-steps.txt b/falcon-ui/Installation-steps.txt
index 3f9968d..d4d3fb5 100644
--- a/falcon-ui/Installation-steps.txt
+++ b/falcon-ui/Installation-steps.txt
@@ -44,4 +44,8 @@ Then navigate to localhost:15000
-------------------
- grunt dev
This will launch an express server with the falcon-ui to localhost:3000
-(You can test there all UI related behaviours and express will mock all falcon REST calls)
\ No newline at end of file
+(You can test there all UI related behaviours and express will mock all falcon REST calls)
+
+
+## Font/Icons
+http://web.archive.org/web/20140912210715/http://entypo.com/characters/
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/dropdowns.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/dropdowns.less b/falcon-ui/app/css/bootstrap/less/dropdowns.less
index 3eb7fc0..aed4d90 100644
--- a/falcon-ui/app/css/bootstrap/less/dropdowns.less
+++ b/falcon-ui/app/css/bootstrap/less/dropdowns.less
@@ -33,8 +33,8 @@
z-index: @zindex-dropdown;
display: none; // none by default, but block on "open" of the menu
float: left;
- min-width: 160px;
- padding: 5px 0;
+ min-width: 60px;
+ padding: 0px 0;
margin: 2px 0 0; // override default ul
list-style: none;
font-size: @font-size-base;
@@ -213,3 +213,7 @@
}
}
+.dropdown-submenu {
+ list-style: none;
+ padding: 0 0 0 10px;
+}
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/forms.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/forms.less b/falcon-ui/app/css/bootstrap/less/forms.less
index 2c5e9bf..6c4c6bb 100644
--- a/falcon-ui/app/css/bootstrap/less/forms.less
+++ b/falcon-ui/app/css/bootstrap/less/forms.less
@@ -51,8 +51,7 @@ input[type="search"] {
// Position radios and checkboxes better
input[type="radio"],
input[type="checkbox"] {
- margin: 4px 0 0;
- margin-top: 1px \9; // IE8-9
+ vertical-align: middle;
line-height: normal;
}
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/pagination.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/pagination.less b/falcon-ui/app/css/bootstrap/less/pagination.less
index b2856ae..9bcd05b 100644
--- a/falcon-ui/app/css/bootstrap/less/pagination.less
+++ b/falcon-ui/app/css/bootstrap/less/pagination.less
@@ -4,7 +4,7 @@
.pagination {
display: inline-block;
padding-left: 0;
- margin: @line-height-computed 0;
+ margin-bottom: -5px;
border-radius: @border-radius-base;
> li {
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/responsive-utilities.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/responsive-utilities.less b/falcon-ui/app/css/bootstrap/less/responsive-utilities.less
index b1db31d..1862e71 100644
--- a/falcon-ui/app/css/bootstrap/less/responsive-utilities.less
+++ b/falcon-ui/app/css/bootstrap/less/responsive-utilities.less
@@ -126,7 +126,7 @@
}
}
.visible-lg-inline-block {
- @media (min-width: @screen-lg-min) {
+ @media (min-width: @screen-xs-min) {
display: inline-block !important;
}
}
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/tables.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/tables.less b/falcon-ui/app/css/bootstrap/less/tables.less
index 2e1ef33..76b51de 100644
--- a/falcon-ui/app/css/bootstrap/less/tables.less
+++ b/falcon-ui/app/css/bootstrap/less/tables.less
@@ -26,7 +26,7 @@ th {
> td {
padding: @table-cell-padding;
line-height: @line-height-base;
- vertical-align: top;
+ vertical-align: middle;
border-top: 1px solid @table-border-color;
}
}
@@ -231,3 +231,11 @@ table {
}
}
}
+
+.evenRow {
+ background: #fff;
+}
+
+.oddRow {
+ background: #F9F9F9;
+}
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/bootstrap/less/variables.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/bootstrap/less/variables.less b/falcon-ui/app/css/bootstrap/less/variables.less
index 582f0f8..6298c5f 100644
--- a/falcon-ui/app/css/bootstrap/less/variables.less
+++ b/falcon-ui/app/css/bootstrap/less/variables.less
@@ -119,7 +119,7 @@
//## Customizes the `.table` component with basic values, each used across all table variations.
//** Padding for `<th>`s and `<td>`s.
-@table-cell-padding: 8px;
+@table-cell-padding: 5px;
//** Padding for cells in `.table-condensed`.
@table-condensed-cell-padding: 5px;
@@ -842,5 +842,3 @@
@dl-horizontal-offset: @component-offset-horizontal;
//** Horizontal line color.
@hr-border: @gray-lighter;
-
-
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/default-theme.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/default-theme.less b/falcon-ui/app/css/default-theme.less
new file mode 100644
index 0000000..e2e3117
--- /dev/null
+++ b/falcon-ui/app/css/default-theme.less
@@ -0,0 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Core variables and mixins
+@import "main.less";
+@import "styles/default.less";
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/fonts/entypo.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/fonts/entypo.less b/falcon-ui/app/css/fonts/entypo.less
index 3b90398..cd67f6a 100644
--- a/falcon-ui/app/css/fonts/entypo.less
+++ b/falcon-ui/app/css/fonts/entypo.less
@@ -46,6 +46,10 @@
line-height: 0;
}
+.entypo-align-sub {
+ vertical-align: sub;
+}
+
.entypo-social {
font-family: 'EntypoSocialRegular';
font-size: 2em;
@@ -1187,4 +1191,4 @@
.entypo-social.smashing:before {
content: '\F357';
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/gray-theme.less
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/gray-theme.less b/falcon-ui/app/css/gray-theme.less
new file mode 100644
index 0000000..5f6ec7e
--- /dev/null
+++ b/falcon-ui/app/css/gray-theme.less
@@ -0,0 +1,20 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+// Core variables and mixins
+@import "main.less";
+@import "styles/gray.less";
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/32x32_create-entity-hover.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/32x32_create-entity-hover.png b/falcon-ui/app/css/img/32x32_create-entity-hover.png
new file mode 100755
index 0000000..32361ae
Binary files /dev/null and b/falcon-ui/app/css/img/32x32_create-entity-hover.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/32x32_create-entity.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/32x32_create-entity.png b/falcon-ui/app/css/img/32x32_create-entity.png
new file mode 100755
index 0000000..30e6f65
Binary files /dev/null and b/falcon-ui/app/css/img/32x32_create-entity.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/32x32_upload.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/32x32_upload.png b/falcon-ui/app/css/img/32x32_upload.png
new file mode 100755
index 0000000..d18c2df
Binary files /dev/null and b/falcon-ui/app/css/img/32x32_upload.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/cloud.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/cloud.png b/falcon-ui/app/css/img/cloud.png
new file mode 100644
index 0000000..1cb0075
Binary files /dev/null and b/falcon-ui/app/css/img/cloud.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/falcon-logo.jpg
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/falcon-logo.jpg b/falcon-ui/app/css/img/falcon-logo.jpg
new file mode 100755
index 0000000..3eadaa6
Binary files /dev/null and b/falcon-ui/app/css/img/falcon-logo.jpg differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/falcon.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/falcon.png b/falcon-ui/app/css/img/falcon.png
deleted file mode 100644
index f0e6934..0000000
Binary files a/falcon-ui/app/css/img/falcon.png and /dev/null differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/feed.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/feed.png b/falcon-ui/app/css/img/feed.png
new file mode 100644
index 0000000..b6e9836
Binary files /dev/null and b/falcon-ui/app/css/img/feed.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_55_fbf9ee_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_55_fbf9ee_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_55_fbf9ee_1x400.png
new file mode 100644
index 0000000..f2811e5
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_55_fbf9ee_1x400.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_65_ffffff_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_65_ffffff_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_65_ffffff_1x400.png
new file mode 100644
index 0000000..c2c7126
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_65_ffffff_1x400.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_75_dadada_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_75_dadada_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_75_dadada_1x400.png
new file mode 100644
index 0000000..a1d1e14
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_75_dadada_1x400.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_75_e6e6e6_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_75_e6e6e6_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_75_e6e6e6_1x400.png
new file mode 100644
index 0000000..af8a90c
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_75_e6e6e6_1x400.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_glass_95_fef1ec_1x400.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_glass_95_fef1ec_1x400.png b/falcon-ui/app/css/img/ui-bg_glass_95_fef1ec_1x400.png
new file mode 100644
index 0000000..078e793
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_glass_95_fef1ec_1x400.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-bg_highlight-soft_75_cccccc_1x100.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-bg_highlight-soft_75_cccccc_1x100.png b/falcon-ui/app/css/img/ui-bg_highlight-soft_75_cccccc_1x100.png
new file mode 100644
index 0000000..88d1855
Binary files /dev/null and b/falcon-ui/app/css/img/ui-bg_highlight-soft_75_cccccc_1x100.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_222222_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_222222_256x240.png b/falcon-ui/app/css/img/ui-icons_222222_256x240.png
new file mode 100644
index 0000000..e9c8e16
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_222222_256x240.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_2e83ff_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_2e83ff_256x240.png b/falcon-ui/app/css/img/ui-icons_2e83ff_256x240.png
new file mode 100644
index 0000000..f2bf838
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_2e83ff_256x240.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_454545_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_454545_256x240.png b/falcon-ui/app/css/img/ui-icons_454545_256x240.png
new file mode 100644
index 0000000..d6169e8
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_454545_256x240.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_888888_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_888888_256x240.png b/falcon-ui/app/css/img/ui-icons_888888_256x240.png
new file mode 100644
index 0000000..d3e6e02
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_888888_256x240.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/ui-icons_cd0a0a_256x240.png
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/ui-icons_cd0a0a_256x240.png b/falcon-ui/app/css/img/ui-icons_cd0a0a_256x240.png
new file mode 100644
index 0000000..4937018
Binary files /dev/null and b/falcon-ui/app/css/img/ui-icons_cd0a0a_256x240.png differ
http://git-wip-us.apache.org/repos/asf/falcon/blob/76dc2e18/falcon-ui/app/css/img/user.svg
----------------------------------------------------------------------
diff --git a/falcon-ui/app/css/img/user.svg b/falcon-ui/app/css/img/user.svg
index fb534c2..60ac6c5 100644
--- a/falcon-ui/app/css/img/user.svg
+++ b/falcon-ui/app/css/img/user.svg
@@ -1,20 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
<!-- Generator: Adobe Illustrator 16.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="User" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"