Commit c680f5b4e5b478d41335dafd81863fe0e934da40

Authored by Administrator
0 parents

first commit

Showing 101 changed files with 3035 additions and 0 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 101 files are displayed.

.editorconfig 0 → 100644
  1 +++ a/.editorconfig
  1 +# editorconfig.org
  2 +root = true
  3 +
  4 +[*]
  5 +indent_style = space
  6 +indent_size = 2
  7 +end_of_line = lf
  8 +charset = utf-8
  9 +trim_trailing_whitespace = true
  10 +insert_final_newline = true
  11 +
  12 +[*.md]
  13 +trim_trailing_whitespace = false
0 \ No newline at end of file 14 \ No newline at end of file
.gitignore 0 → 100644
  1 +++ a/.gitignore
  1 +# See http://help.github.com/ignore-files/ for more about ignoring files.
  2 +
  3 +# compiled output
  4 +/dist
  5 +/deploy
  6 +/tmp
  7 +
  8 +# dependencies
  9 +/node_modules
  10 +/bower_components
  11 +
  12 +# IDEs and editors
  13 +/.idea
  14 +/.vscode
  15 +
  16 +# misc
  17 +/.sass-cache
  18 +/connect.lock
  19 +/coverage/*
  20 +/libpeerconnection.log
  21 +npm-debug.log
  22 +testem.log
  23 +/typings
  24 +/.vagrant
  25 +
  26 +# e2e
  27 +/e2e/*.js
  28 +/e2e/*.map
  29 +
  30 +#System Files
  31 +.DS_Store
LICENSE 0 → 100644
  1 +++ a/LICENSE
  1 +The MIT License
  2 +
  3 +Copyright (c) 2016 by Teradata. All rights reserved. http://teradata.com
  4 +
  5 +Permission is hereby granted, free of charge, to any person obtaining a copy
  6 +of this software and associated documentation files (the "Software"), to deal
  7 +in the Software without restriction, including without limitation the rights
  8 +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  9 +copies of the Software, and to permit persons to whom the Software is
  10 +furnished to do so, subject to the following conditions:
  11 +
  12 +The above copyright notice and this permission notice shall be included in
  13 +all copies or substantial portions of the Software.
  14 +
  15 +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  16 +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  17 +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  18 +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  19 +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  20 +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  21 +THE SOFTWARE.
README.md 0 → 100644
  1 +++ a/README.md
  1 +# Covalent QuickStart
  2 +
  3 +Quickstart App with @covalent packages
  4 +
  5 +## Setup
  6 +
  7 +* Ensure you have Node 4.4+ and NPM 3+ installed.
  8 +* Install Angular CLI `npm i -g angular-cli@latest`
  9 +* Install Typescript 2.0 `npm i -g typescript`
  10 +* Install TSLint `npm install -g tslint`
  11 +* Install Protractor for e2e testing `npm install -g protractor`
  12 +* Install Node packages `npm i`
  13 +* Update Webdriver `webdriver-manager update` and `./node_modules/.bin/webdriver-manager update`
  14 +* Run local build `ng serve`
angular-cli.json 0 → 100644
  1 +++ a/angular-cli.json
  1 +{
  2 + "project": {
  3 + "version": "1.0.0-beta.26",
  4 + "name": "covalent-quickstart"
  5 + },
  6 + "apps": [{
  7 + "root": "src",
  8 + "outDir": "dist",
  9 + "assets": [
  10 + "assets",
  11 + "data",
  12 + "favicon.ico"
  13 + ],
  14 + "index": "index.html",
  15 + "main": "main.ts",
  16 + "test": "test.ts",
  17 + "tsconfig": "tsconfig.json",
  18 + "prefix": "app",
  19 + "mobile": false,
  20 + "styles": [
  21 + "styles.scss",
  22 + "theme.scss",
  23 + "../node_modules/@covalent/core/common/platform.css",
  24 + "../node_modules/@swimlane/ngx-charts/release/ngx-charts.css",
  25 + "../node_modules/ag-grid/dist/styles/ag-grid.css",
  26 + "../node_modules/ag-grid/dist/styles/theme-dark.css"
  27 + ],
  28 + "scripts": [
  29 + "../node_modules/hammerjs/hammer.min.js",
  30 + "../node_modules/showdown/dist/showdown.js"
  31 + ],
  32 + "environments": {
  33 + "source": "environments/environment.ts",
  34 + "dev": "environments/environment.ts",
  35 + "prod": "environments/environment.prod.ts"
  36 + }
  37 + }],
  38 + "addons": [],
  39 + "packages": [],
  40 + "e2e": {
  41 + "protractor": {
  42 + "config": "./protractor.conf.js"
  43 + }
  44 + },
  45 + "test": {
  46 + "karma": {
  47 + "config": "./karma.conf.js"
  48 + }
  49 + },
  50 + "defaults": {
  51 + "styleExt": "scss",
  52 + "prefixInterfaces": false,
  53 + "lazyRoutePrefix": "+"
  54 + }
  55 +}
0 \ No newline at end of file 56 \ No newline at end of file
e2e/dashboard.e2e.ts 0 → 100644
  1 +++ a/e2e/dashboard.e2e.ts
  1 +import { browser, element, by, $, protractor } from 'protractor/globals';
  2 +
  3 +describe('basic e2e test with loading', function(): void {
  4 + let EC = protractor.ExpectedConditions;
  5 + describe('home', function(): void {
  6 + browser.get('/');
  7 + it('should load home page', function(): void {
  8 + expect(browser.getTitle()).toBe('Covalent QuickStart');
  9 + // Waits for the element 'td-loading' to not be present on the dom.
  10 + browser.wait(EC.not(EC.presenceOf($('td-loading'))), 10000)
  11 + .then(() => {
  12 +
  13 + // checks if elements were rendered
  14 + expect(element(by.id('dashboard-favorites-card')).isPresent()).toBe(true);
  15 + });
  16 + });
  17 + });
  18 +});
e2e/tsconfig.json 0 → 100644
  1 +++ a/e2e/tsconfig.json
  1 +{
  2 + "compileOnSave": false,
  3 + "compilerOptions": {
  4 + "declaration": false,
  5 + "emitDecoratorMetadata": true,
  6 + "experimentalDecorators": true,
  7 + "module": "commonjs",
  8 + "moduleResolution": "node",
  9 + "outDir": "../dist/out-tsc-e2e",
  10 + "sourceMap": true,
  11 + "target": "es5",
  12 + "typeRoots": [
  13 + "../node_modules/@types"
  14 + ]
  15 + }
  16 +}
karma.conf.js 0 → 100644
  1 +++ a/karma.conf.js
  1 +// Karma configuration file, see link for more information
  2 +// https://karma-runner.github.io/0.13/config/configuration-file.html
  3 +
  4 +module.exports = function (config) {
  5 + var configuration = {
  6 + basePath: '.',
  7 + frameworks: ['jasmine', 'angular-cli'],
  8 + plugins: [
  9 + require('karma-jasmine'),
  10 + require('karma-chrome-launcher'),
  11 + require('karma-firefox-launcher'),
  12 + require('karma-remap-istanbul'),
  13 + require('angular-cli/plugins/karma')
  14 + ],
  15 + customLaunchers: {
  16 + // chrome setup for travis CI using chromium
  17 + Chrome_travis_ci: {
  18 + base: 'Chrome',
  19 + flags: ['--no-sandbox']
  20 + }
  21 + },
  22 + files: [
  23 + { pattern: './src/test.ts', watched: false }
  24 + ],
  25 + preprocessors: {
  26 + './src/test.ts': ['angular-cli']
  27 + },
  28 + remapIstanbulReporter: {
  29 + reports: {
  30 + html: 'coverage',
  31 + lcovonly: './coverage/coverage.lcov'
  32 + }
  33 + },
  34 + angularCli: {
  35 + config: './angular-cli.json',
  36 + environment: 'dev'
  37 + },
  38 + mime: {
  39 + 'text/x-typescript': ['ts','tsx']
  40 + },
  41 + reporters: ['progress', 'karma-remap-istanbul'],
  42 + port: 9876,
  43 + colors: true,
  44 + logLevel: config.LOG_INFO,
  45 + autoWatch: true,
  46 + browsers: ['Chrome'],
  47 + singleRun: false
  48 + };
  49 + if (process.env.TRAVIS) {
  50 + configuration.browsers = ['Chrome_travis_ci'];
  51 + }
  52 + config.set(configuration);
  53 +};
mock-api/datum/activity.txt 0 → 100644
  1 +++ a/mock-api/datum/activity.txt
  1 +updated account
  2 +made a deposit
  3 +changed refresh settings on their account
  4 +liked the latest announcements
  5 +sent a personal message
mock-api/datum/admin.txt 0 → 100644
  1 +++ a/mock-api/datum/admin.txt
  1 +1
  2 +1
  3 +0
  4 +0
  5 +0
  6 +0
  7 +0
  8 +0
  9 +0
  10 +0
mock-api/datum/boolean.txt 0 → 100644
  1 +++ a/mock-api/datum/boolean.txt
  1 +1
  2 +1
  3 +0
  4 +0
  5 +1
  6 +0
  7 +0
  8 +1
  9 +0
  10 +1
  11 +1
  12 +0
  13 +0
  14 +0
  15 +0
  16 +0
  17 +1
  18 +0
  19 +1
  20 +1
mock-api/datum/company.txt 0 → 100644
  1 +++ a/mock-api/datum/company.txt
  1 +teradata
  2 +gmail
  3 +yahoo
  4 +hotmail
  5 +outlook
  6 +msn
  7 +blue
mock-api/datum/createdtimestamp.txt 0 → 100644
  1 +++ a/mock-api/datum/createdtimestamp.txt
  1 +10/01/2015 11:05 AM
  2 +10/01/2015 11:05 AM
  3 +10/01/2015 11:06 AM
  4 +10/01/2015 11:06 AM
  5 +10/01/2015 11:07 AM
  6 +10/01/2015 11:07 AM
  7 +10/01/2015 11:07 AM
  8 +10/01/2015 11:07 AM
  9 +10/01/2015 11:08 AM
  10 +10/01/2015 11:08 AM
mock-api/datum/features.txt 0 → 100644
  1 +++ a/mock-api/datum/features.txt
  1 +Ingest
  2 +Containers
  3 +Deployment
  4 +Life Cycle
  5 +Statistics
  6 +Workloads
  7 +Analyzer
  8 +Apps
  9 +Workflows
  10 +Trend
  11 +Alerts
  12 +Loading
  13 +Movement
  14 +Orchestration
  15 +Availability
  16 +Data Warehouse
  17 +Data Lake
  18 +Server
  19 +Compute
  20 +Services
mock-api/datum/firstname.txt 0 → 100644
  1 +++ a/mock-api/datum/firstname.txt
  1 +Aaron
  2 +Benjamin
  3 +Carl
  4 +Olive
  5 +Edward
  6 +Alice
  7 +Beverly
  8 +Cheryl
  9 +Danielle
  10 +Elizabeth
mock-api/datum/icon.txt 0 → 100644
  1 +++ a/mock-api/datum/icon.txt
  1 +account_circle
  2 +account_balance_wallet
  3 +autorenew
  4 +thumb_up
  5 +message
mock-api/datum/itemtimestamp.txt 0 → 100644
  1 +++ a/mock-api/datum/itemtimestamp.txt
  1 +7/23/2016 12:05 AM
  2 +7/23/2016 12:05 AM
  3 +7/23/2016 12:05 AM
  4 +7/23/2016 12:05 AM
  5 +7/23/2016 12:05 AM
  6 +7/23/2016 12:05 AM
  7 +7/23/2016 12:05 AM
  8 +7/23/2016 12:05 AM
  9 +8/17/2016 12:05 AM
  10 +8/17/2016 12:05 AM
  11 +8/17/2016 12:05 AM
  12 +8/17/2016 12:05 AM
  13 +8/17/2016 12:05 AM
  14 +8/17/2016 12:05 AM
  15 +8/23/2016 12:07 AM
  16 +8/23/2016 12:07 AM
  17 +8/23/2016 12:07 AM
  18 +8/23/2016 12:07 AM
  19 +8/23/2016 12:07 AM
  20 +8/23/2016 12:07 AM
  21 +8/23/2016 12:09 AM
  22 +8/23/2016 12:09 AM
  23 +8/23/2016 12:09 AM
mock-api/datum/lastname.txt 0 → 100644
  1 +++ a/mock-api/datum/lastname.txt
  1 +Burke
  2 +Davidson
  3 +Kim
  4 +Park
  5 +Gonzales
  6 +Guerrero
  7 +Hopkins
  8 +Obrien
  9 +Payne
  10 +Stephens
mock-api/datum/modifiers.txt 0 → 100644
  1 +++ a/mock-api/datum/modifiers.txt
  1 +Streamers
  2 +Manager
  3 +Monitor
  4 +Availability
  5 +Status
mock-api/datum/uuid.txt 0 → 100644
  1 +++ a/mock-api/datum/uuid.txt
  1 +afd96ae7-fe58-4d7d-95ad-4bad518afaa8
  2 +94b8a4eb-7014-4de5-8c09-4b1cd0171535
  3 +be0f2f50-3df0-42b1-8530-3c4542c2c5cc
  4 +7a91f600-34cd-4400-b771-f7198b38ba94
  5 +bea0f0d9-61fb-46b2-ab1b-c0a647887206
  6 +29429c1f-31e9-4753-b57a-ab652642a9f2
  7 +bf916685-7846-47d9-bea7-f7fe7bd9917b
  8 +1832a1fc-a4b1-4b0b-8f1e-0db4c96396be
  9 +34a7361c-f0f2-47f6-9ea6-2fe821ef5459
  10 +3759fcaa-42b1-426d-9205-ca85a64d73e0
  11 +2acca72c-2b97-45a8-be6e-b010d460426b
  12 +d3b96c14-321c-42cb-a0ba-3142d84a5877
  13 +4be06cac-99bc-4c86-ba51-56f9d6507f26
  14 +42c3677f-2b93-4ffd-bf51-e161aacc7c56
  15 +30f49435-a131-490f-8090-dbae911789e9
  16 +a4530934-05ce-4811-9d82-fb782dfc20f4
  17 +2947a5e8-6843-4ce7-8c7e-70ac8979f248
  18 +cb0b76ac-d421-4f0b-bd70-c47ba65ed507
  19 +6dc2a966-f278-42f3-917a-e42b316c22ef
  20 +e6919a88-ef3e-461f-8fe8-deacf078af07
  21 +b3341881-fffd-4301-b53f-e03e113ee26b
  22 +1d611eff-5f42-44b7-bacb-671559c32e41
  23 +2f934de4-b4e8-4854-8a81-5d47389393d4
  24 +51af46a4-6f31-46b0-87d5-a9a06b67d45f
  25 +d6022b51-53f4-4842-a99c-825d0e423cd0
  26 +368d2386-b06b-4a3d-8871-32176bd46de0
  27 +5d12e6d7-24fe-4b50-b0f1-bb5428dcdda5
  28 +979a8bce-a05d-4e50-a576-d74f68a7a1cc
  29 +b40fe11b-978e-452d-97c4-da88192085fc
  30 +97f53684-9125-4bf4-8813-941b97bf4bb0
  31 +f59f190a-f095-4d48-b6e7-ad4d22c3bf09
  32 +6c760c34-3cc6-443c-89a9-607a221abe6e
  33 +c10064b9-6319-4e09-bf48-46f88a54ec84
  34 +d4173848-1aea-49f2-8949-1a93aedce311
  35 +55cc7e09-d588-49ae-9cea-74a18ad8170c
  36 +67d8ee98-85b1-44d2-b8a1-a01b568be22a
  37 +1c3f0909-beeb-4226-b635-b39c5192d3bc
  38 +088a329f-858b-49df-af73-321bf562d2a9
  39 +67b456d2-6a28-4738-8b79-3b0dcb8e766b
  40 +d049060d-3fcc-4405-a2e0-bb2f8ee457be
  41 +9df10508-2bc3-469e-b263-d70f0b864dad
  42 +b3922336-0d9a-4d2a-904d-4ca513c28507
  43 +0d94a03b-50b2-431f-a031-21309292c2a1
  44 +b52b230c-169b-4af4-b067-9e2fa77e0b94
  45 +46fbf0a5-5463-4fc9-a969-382137d9515e
  46 +cb575fc6-7643-4b53-a6af-0815eff219ae
  47 +cf9ae615-3ad6-4d59-8b58-1fabc8d35e6d
  48 +53e471b5-0df3-4d83-abb1-6955e90c0f0d
  49 +431d0a94-889d-475f-8643-68936270edd6
  50 +6ac012c5-6208-40e5-9880-0edaad22c4e3
  51 +d7514b6b-bc1f-4b1b-bd87-5aeb1ae8f642
  52 +c872ea65-c1ca-41a5-9967-a7d2db18fac7
  53 +91f15f76-8dee-44c7-aa93-0f23ca0f5789
  54 +c2c71407-7eeb-4420-b1ff-fb05aa8c25ff
  55 +cd689a0d-2ca9-4e5c-90a1-eb0dcc327f83
  56 +85bb1ed1-8931-43e2-a3da-0bd035878a18
  57 +60f5639b-11f8-40df-8cbb-7ab3f4ffb113
  58 +a48e4bb4-4ec6-481d-a802-e23f54db5054
  59 +b068c79e-7cf9-45f6-8335-77ab68f6c86e
  60 +dc9805c8-2ce1-4d21-b68e-861b0eb55ba1
  61 +a5b6d5a7-c2a4-4095-9a09-2b498ab94d4b
  62 +bfce7bf7-f350-4152-8eb2-02ff2b93daa4
  63 +5afe6e64-9d57-4bdb-aee9-11d4b16d3f9e
  64 +1bfcfa7e-de12-43c2-a37a-240dd99a8f1f
  65 +45cc37d4-89ac-4e24-b50a-0feb7df59c44
  66 +7a668e71-8823-4ae4-95ce-e16233d4b4c2
  67 +e06a30fa-1370-4673-b7d0-1d18c63d8ede
  68 +37404edd-61f6-4a86-a8dd-9b4b2077d176
  69 +e037efbd-ec95-4faf-84e0-628cbbcae98e
  70 +b37d84cf-7eb7-4069-b160-2f4a758fa423
  71 +fcd69850-94f8-4d91-ba2f-334ea0e7b443
  72 +507af92e-4c14-4a8a-afa6-d9b79d967da8
  73 +5fe94f89-f78d-45cd-b107-d7bd4e136ae3
  74 +a3d7fff5-0bfa-407f-91ee-04052449d3cb
  75 +407383f5-a3c8-472d-8923-0cea06db80e6
  76 +b48dd39e-bebf-4397-bdde-8a21f0284d16
  77 +e5e162a0-4794-41f2-8e01-575f51cceea9
  78 +b0e17177-14d4-4ad7-88d4-2ffdf8e61b62
  79 +8d21948c-776c-48f5-b38f-10aa0a926a3d
  80 +44abdb9d-e9cf-46a7-b611-d0e7222a21a6
  81 +3e12702e-7356-4838-b76c-8c4e30781d32
  82 +b7ea554b-d351-4988-9eaa-40f93374a7eb
  83 +ad0c4d06-9f1a-40a4-a37c-e5e5220c9c1c
  84 +8d020676-ed7e-4958-9490-fe8372dfbd9a
  85 +bbb78cfc-dcad-43ee-ae3b-6a8fb619d079
  86 +b3538d89-5079-4593-9892-e168dd48d294
  87 +dd2e9c4c-df2b-47f5-8cbe-3ebbcc5e10f5
  88 +cc7b7d97-ae42-4985-831b-944a9d5797c0
  89 +03c6192f-9934-4933-8632-702dc4d2be68
  90 +29c2aabf-61f3-40c9-bffe-deb502f3e365
  91 +e5d56aa0-e700-48fd-bb38-93eaa4ca46ad
  92 +14885bde-979d-40b4-8054-f209f7864299
  93 +b89ffb45-02db-49cf-95bb-d161aa63c228
  94 +05c4c9dd-08b5-4cee-b577-4e479f705717
  95 +47c18660-781c-482f-be31-5be6e865ddc8
  96 +427a13d9-a246-4911-87ec-1fe8c54892aa
  97 +21526022-b753-43c6-bb5b-a81afd907cfc
  98 +7ae51985-7156-4424-bfd5-7714415cd7b0
  99 +de87d1c2-78ce-45dc-ae1e-0e480f7674d7
  100 +fb4d8e06-88fc-4d35-b288-2394140e7167
  101 +0db7e170-0011-4306-a2a3-a00a1d376dfc
  102 +2d0ee417-1c51-4fe2-a7f7-4f302f6f6884
  103 +3a71fe0a-0622-4eae-8839-b8e85a494245
  104 +4a452718-5a23-4f0a-928d-154b16fcbcdc
  105 +3bafe52e-9a7f-4ca7-adbc-f511fb0bb7af
  106 +726e5278-8cf2-4b2e-91fd-88c4819a5e85
  107 +6badaf13-7269-4c3c-a362-924554a0caee
  108 +7fec0ab8-541e-44d7-8ed4-b17387e7ccef
  109 +5d9968d6-082e-4857-bce0-249bc3ef4b3f
  110 +6a149930-fb2e-4315-bd53-156f5739548b
  111 +ad3ac830-15b7-4ece-b1fb-0e8a643036ce
  112 +c4a4aad5-9957-438f-af00-bcacc693fa3b
  113 +a8a9afb1-ce77-41d6-9c6f-f66287b0558b
  114 +d5446a05-3c2c-417b-8b4d-519d93bb4d81
  115 +b03af126-f479-4501-a390-10394a885371
  116 +2bae9cf9-5dda-4d21-8dec-45479b48c296
  117 +f707ea79-d56d-46d5-b063-67cc2df87b53
  118 +d6ac2680-3868-4814-8998-dc6a08e96112
  119 +da440782-4703-44b4-abca-8e6611e9204f
  120 +30aa09ad-832a-476f-9201-e111f4eae1c5
  121 +b8378481-8a8d-4e97-945a-ff0a0293f4df
  122 +83c7200e-5883-41f4-81bb-7e3bd6f85e6c
  123 +4a9b0ec4-7530-4944-a836-5834910667f9
  124 +a70ce8bd-58ad-4d22-9ecd-69a1b3825718
  125 +e60e38b3-d4ed-4331-ab11-f1217a5ad5ab
  126 +781eed13-c362-48c3-bf7d-308fb7588eea
  127 +f8055118-c788-4327-b1ba-d999cc016a2f
  128 +d993b911-6c26-4586-9f00-b0ff164603fe
  129 +13d64c8e-d1c7-42d5-adb6-7ef6a822676e
  130 +41cd7e44-25e2-44ad-9624-74b380a070f0
  131 +4e0a68ce-3dca-4e3f-91dd-218b10900bf1
  132 +ba424283-d4ed-4670-8030-1bbfd3f26397
  133 +7fab8302-9908-4b3e-8c06-b21d4d0ba3cd
  134 +7d7cd4c5-41ef-444b-a641-5187a838cc93
  135 +269d7c9f-b0d0-471d-9a58-f3b787ab8895
  136 +2f3a0eb4-6b32-41c9-8e76-48abc1dd1488
  137 +eb3b3f2c-1b0d-4227-a2b1-d07beecb85d4
  138 +1b01da19-0186-446b-98a3-cbf65dda92ee
  139 +945b56ef-c86f-4fb7-bc52-66b66ebf09c5
  140 +12e1a829-4536-49bd-9979-e0e35860ad07
  141 +51ece058-b199-458e-8472-8d0a484dc4a2
  142 +dd28eb11-2778-403d-9425-7b270c0698b6
  143 +5faef1c0-f198-4d72-b22a-f27adb5e35e3
  144 +0c870484-f061-436b-889b-a758805d4f79
  145 +e30f4edd-3330-4c89-84d4-e2e0ad1f5a2f
  146 +8a843267-3b4d-4ec4-a020-44b30bd1babb
  147 +1899cb11-ee64-4db8-ae4b-1f0e30defb1c
  148 +11122d50-3fdc-4ed9-9a8b-844b7b86ed7b
  149 +e0d9b68a-56ff-4796-8a19-dd3663b13968
  150 +915f14c5-2cb3-49c9-a622-a80ba37f1384
  151 +fb3260a3-4b85-413d-85a6-0ef0ef645329
  152 +c630b9a6-3f68-438e-9c42-0cc9fe34738a
  153 +e91c9a70-8a18-4dc4-bee9-fd4168b6fe38
  154 +9a912a50-0b96-47dd-9298-8a82ad9603c2
  155 +44f3cb64-990e-417a-b243-c4c24da9e176
  156 +9a445e7e-0f7b-479b-a03a-735d776ae689
  157 +32222f12-c741-4fc8-b7d9-24731f7370a7
  158 +210e9d28-65da-4198-8a0f-a3ee7000cdcc
  159 +c38ed1eb-6b39-4d70-b6bb-a81c6cc8bd4f
  160 +e44d7ce3-8684-4ff9-b4cf-111e99d8c9c5
  161 +cba1016c-0510-4b49-9e06-05ed529a3852
  162 +9870c4bb-b2d5-447d-9a09-932575e7c000
  163 +a29246ff-8b44-410e-b0b5-6af4f21235d7
  164 +0f0d7ad0-fac8-45f5-bc8f-c46532e5058f
  165 +36de97a7-6f0d-45c4-afdb-fdf5f98ce3a0
  166 +397b1291-23b6-44de-be9e-c6a8c81189b8
  167 +2e257d24-2210-4685-ad83-e69375f85f1f
  168 +12269eab-62cc-419e-8e8d-70ce4547f9b0
  169 +985d5865-ea43-4204-9a12-608869c71a91
  170 +cfac6212-c7ed-445a-80dc-c9eb32ca446d
  171 +bff768e5-457b-4fee-a73b-29fe67c26c11
  172 +d6825f5c-d941-434a-ae08-e1c011645b28
  173 +35809df1-fd92-4f45-bc67-107bd6396840
  174 +2c883d1d-d142-4972-816b-cd802e2e8d32
  175 +98794878-6704-4e2a-b92c-7efd0a5ad1f7
  176 +37160f69-8fb1-420b-a986-e5a0bf364588
  177 +e10713b5-6679-464f-8dc2-b3cbc5aca57e
  178 +ff300382-af4d-4274-b120-74a6d14532c9
  179 +8387b4a2-15a1-431f-a62b-4095dc2590f2
  180 +3a7983a9-3bf2-42ce-9106-13ea4ef5b57d
  181 +fde2b650-5182-4477-926c-4bb37fe8aaa1
  182 +d3b9c91d-1f79-48d3-8eab-d6c666b4ce1d
  183 +dc131382-1c07-4cdc-95ce-7f3bbdf5722f
  184 +5517823d-a1e3-4599-ac89-cc561ac09b3a
  185 +5bd1d82b-2c4d-48aa-9d77-eb200434b9b8
  186 +72b9666c-827f-480c-bcd3-9a45fe0c392d
  187 +95b7a077-bfdd-4874-9b67-45784d810efd
  188 +537d5d85-a579-4be5-8f14-ba61d88c5abf
  189 +e255297e-1d45-4890-8dd3-be7a2880b7d2
  190 +ac72cd75-60aa-462b-a0e2-00e012f29742
  191 +7d25df42-bc84-4ace-a906-39d7750f89e7
  192 +beac52d9-e750-4ac8-8624-7f3267c25bbb
  193 +9e821db9-af1a-4e2f-93d2-bee75b9fff81
  194 +0969305a-cffc-4244-b687-c444cf9dc738
  195 +38bb0878-a734-4aea-ba3d-ad568faa3d75
  196 +3df0d493-b225-4e2a-b95b-35ae645f8f61
  197 +e4fdcdab-a88c-4a48-96cd-37c7a36d9f26
  198 +663c8aec-7844-457f-b01e-c6ba6de6f7f6
  199 +aeb9cd2c-6990-4e6f-89e9-d8145f40d570
  200 +c59069e4-5b8e-4cdd-9676-82f6db6936b7
mock-api/schemas/features.yaml 0 → 100644
  1 +++ a/mock-api/schemas/features.yaml
  1 +# this is a sample schema file for a feature object.
  2 +
  3 +---
  4 +initial_entries: 12
  5 +randomize: true
  6 +id: _uuid_
  7 +user: _firstname_ _lastname_
  8 +title: _features_ _modifiers_
  9 +icon: _icon_
  10 +created: _itemtimestamp_
  11 +modified: _itemtimestamp_
  12 +enabled: _boolean_
  13 +...
mock-api/schemas/items.yaml 0 → 100644
  1 +++ a/mock-api/schemas/items.yaml
  1 +# this is a sample schema file for a user object.
  2 +
  3 +---
  4 +initial_entries: 10
  5 +randomize: false
  6 +item_id: _uuid_
  7 +name: _firstname_ _lastname_
  8 +description: _activity_
  9 +icon: _icon_
  10 +created: _itemtimestamp_
  11 +...
mock-api/schemas/users.yaml 0 → 100644
  1 +++ a/mock-api/schemas/users.yaml
  1 +# this is a sample schema file for a user object.
  2 +
  3 +---
  4 +initial_entries: 5
  5 +randomize: false
  6 +displayName: _firstname_ _lastname_
  7 +id: _firstname_._lastname_
  8 +email: _firstname_._lastname_@_company_.com
  9 +created: _createdtimestamp_
  10 +lastAccess: _itemtimestamp_
  11 +siteAdmin: _admin_
  12 +...
package.json 0 → 100644
  1 +++ a/package.json
  1 +{
  2 + "name": "covalent-quickstart",
  3 + "version": "1.0.0-beta.1",
  4 + "private": true,
  5 + "description": "Quickstart App with @covalent packages",
  6 + "keywords": [
  7 + "angular",
  8 + "components",
  9 + "reusable"
  10 + ],
  11 + "scripts": {
  12 + "e2e": "protractor",
  13 + "e2e-test": "protractor ./protractor.conf.js",
  14 + "lint": "tslint -c ./tslint.json \"./src/**/*.ts\" -e \"./src/**/typings.d.ts\" -e \"./src/environments/**\"",
  15 + "reinstall": "rm -rf node_modules tmp deploy dist && npm i",
  16 + "postinstall": "webdriver-manager update",
  17 + "start-api": "cd mock-api && covalent-data &",
  18 + "stop-api": "pkill covalent-data",
  19 + "webdriver-update": "bash ./node_modules/.bin/webdriver-manager update",
  20 + "test": "ng test --code-coverage --single-run",
  21 + "ghpages-deploy": "ng build --base-href /covalent-quickstart/ --aot -prod && bash scripts/ghpages-deploy"
  22 + },
  23 + "engines": {
  24 + "node": ">4.4 < 7",
  25 + "npm": ">3"
  26 + },
  27 + "repository": {
  28 + "type": "git",
  29 + "url": "https://github.com/teradata/covalent-quickstart.git"
  30 + },
  31 + "license": "MIT",
  32 + "author": "Teradata UX",
  33 + "contributors": [
  34 + "Kyle Ledbetter <kyle.ledbetter@teradata.com>",
  35 + "Richa Vyas <richa.vyas@teradata.com>",
  36 + "Ed Morales <eduardo.morales@teradata.com>",
  37 + "Jason Weaver <jason.weaver@teradata.com>",
  38 + "Jeremy Smartt <jeremy.smartt@teradata.com>",
  39 + "Ilsun Park <ilsun.park@teradata.com>"
  40 + ],
  41 + "dependencies": {
  42 + "@angular/common": "2.4.5",
  43 + "@angular/compiler": "2.4.5",
  44 + "@angular/core": "2.4.5",
  45 + "@angular/forms": "2.4.5",
  46 + "@angular/http": "2.4.5",
  47 + "@angular/material": "2.0.0-beta.1",
  48 + "@angular/platform-browser": "2.4.5",
  49 + "@angular/platform-browser-dynamic": "2.4.5",
  50 + "@angular/platform-server": "2.4.5",
  51 + "@angular/router": "3.4.5",
  52 + "@covalent/core": "1.0.0-beta.1",
  53 + "@covalent/charts": "1.0.0-beta.1",
  54 + "@covalent/dynamic-forms": "1.0.0-beta.1",
  55 + "@covalent/highlight": "1.0.0-beta.1",
  56 + "@covalent/http": "1.0.0-beta.1",
  57 + "@covalent/markdown": "1.0.0-beta.1",
  58 + "@swimlane/ngx-charts": "^3.1.2",
  59 + "core-js": "^2.4.1",
  60 + "hammerjs": "^2.0.8",
  61 + "highlight.js": "9.9.0",
  62 + "rxjs": "^5.0.1",
  63 + "showdown": "1.6.0",
  64 + "zone.js": "^0.7.2",
  65 + "moment": "^2.17.1",
  66 + "d3": "^4.4.0",
  67 + "ag-grid": "7.2.x",
  68 + "ag-grid-ng2": "7.2.x"
  69 + },
  70 + "devDependencies": {
  71 + "@angular/compiler-cli": "2.4.5",
  72 + "@types/hammerjs": "2.0.30",
  73 + "@types/jasmine": "2.2.31",
  74 + "@types/node": "6.0.34",
  75 + "@types/selenium-webdriver": "2.53.36",
  76 + "angular-cli": "1.0.0-beta.26",
  77 + "codelyzer": "2.0.0-beta.4",
  78 + "ember-cli-inject-live-reload": "1.4.0",
  79 + "jasmine-core": "2.4.1",
  80 + "jasmine-spec-reporter": "2.5.0",
  81 + "karma": "1.2.0",
  82 + "karma-chrome-launcher": "2.0.0",
  83 + "karma-cli": "1.0.1",
  84 + "karma-jasmine": "1.0.2",
  85 + "karma-remap-istanbul": "0.2.1",
  86 + "karma-firefox-launcher": "1.0.0",
  87 + "karma-phantomjs-launcher": "1.0.1",
  88 + "node-sass": "3.8.0",
  89 + "phantomjs-prebuilt": "2.1.7",
  90 + "protractor": "4.0.5",
  91 + "sass-loader": "^4.0.2",
  92 + "ts-node": "1.2.1",
  93 + "tslint": "^4.3.1",
  94 + "typescript": "2.1.5"
  95 + },
  96 + "optionalDependencies": {
  97 + "@covalent/data": "0.4.0"
  98 + }
  99 +}
0 \ No newline at end of file 100 \ No newline at end of file
protractor.conf.js 0 → 100644
  1 +++ a/protractor.conf.js
  1 +// Protractor configuration file, see link for more information
  2 +// https://github.com/angular/protractor/blob/master/docs/referenceConf.js
  3 +
  4 +/*global jasmine */
  5 +var SpecReporter = require('jasmine-spec-reporter');
  6 +
  7 +exports.config = {
  8 + allScriptsTimeout: 11000,
  9 + specs: [
  10 + './e2e/**/*.e2e.ts'
  11 + ],
  12 + capabilities: {
  13 + 'browserName': 'chrome'
  14 + },
  15 + directConnect: true,
  16 + baseUrl: 'http://localhost:4200/',
  17 + framework: 'jasmine',
  18 + jasmineNodeOpts: {
  19 + showColors: true,
  20 + defaultTimeoutInterval: 30000,
  21 + print: function() {}
  22 + },
  23 + useAllAngular2AppRoots: true,
  24 + beforeLaunch: function() {
  25 + require('ts-node').register({
  26 + project: 'e2e'
  27 + });
  28 + },
  29 + onPrepare: function() {
  30 + jasmine.getEnv().addReporter(new SpecReporter());
  31 + }
  32 +};
scripts/ghpages-deploy 0 → 100644
  1 +++ a/scripts/ghpages-deploy
  1 +#!/bin/bash
  2 +echo 'Replace api endpoint with heroku'
  3 +
  4 +cat <<'EOF' >> api.config.ts
  5 +export const MOCK_API: string = "https://whispering-beyond-86495.herokuapp.com";
  6 +EOF
  7 +
  8 +mv src/config/api.config.ts api.config.ts.default
  9 +mv api.config.ts src/config/api.config.ts
  10 +
  11 +git branch -f gh-pages
  12 +git checkout gh-pages
  13 +echo 'Created and Checked out gh-pages branch'
  14 +
  15 +git reset --hard origin/develop
  16 +
  17 +cp -r dist/* .
  18 +echo 'Copied dist/ directory into root dir'
  19 +
  20 +echo 'Tracking files'
  21 +git add -A .
  22 +echo 'Commiting files'
  23 +git commit -a -m 'gh-pages update'
  24 +echo 'Pushing files into gh-pages branch'
  25 +git push origin gh-pages --force
src/app/app.component.html 0 → 100644
  1 +++ a/src/app/app.component.html
  1 +<router-outlet></router-outlet>
src/app/app.component.scss 0 → 100644
  1 +++ a/src/app/app.component.scss
  1 +/* :host /deep/ lets shadowdom style child elements */
  2 +:host /deep/ {
  3 + /**
  4 + * CSS Overrides for bug fixes
  5 + */
  6 +
  7 + /**
  8 + * END CSS Overrides for bug fixes
  9 + */
  10 +
  11 + /* Manage list custom styles */
  12 + .md-sort-item {
  13 + /deep/ {
  14 + .md-list-item {
  15 + padding: 0;
  16 + }
  17 + }
  18 + }
  19 + .md-sort-icon {
  20 + font-size: 15px;
  21 + margin-right: 10px;
  22 + }
  23 + .md-sort-header {
  24 + padding: 10px;
  25 + &:hover {
  26 + background-color: #EEEEEE;
  27 + cursor: pointer;
  28 + }
  29 + }
  30 +}
0 \ No newline at end of file 31 \ No newline at end of file
src/app/app.component.ts 0 → 100644
  1 +++ a/src/app/app.component.ts
  1 +import { Component } from '@angular/core';
  2 +import { DomSanitizer } from '@angular/platform-browser';
  3 +import { MdIconRegistry } from '@angular/material';
  4 +
  5 +@Component({
  6 + selector: 'qs-app',
  7 + templateUrl: './app.component.html',
  8 + styleUrls: ['./app.component.scss'],
  9 +})
  10 +export class AppComponent {
  11 +
  12 + constructor(private _iconRegistry: MdIconRegistry,
  13 + private _domSanitizer: DomSanitizer) {
  14 + this._iconRegistry.addSvgIconInNamespace('assets', 'teradata',
  15 + this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/teradata.svg'));
  16 + this._iconRegistry.addSvgIconInNamespace('assets', 'github',
  17 + this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/github.svg'));
  18 + this._iconRegistry.addSvgIconInNamespace('assets', 'covalent',
  19 + this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/covalent.svg'));
  20 + this._iconRegistry.addSvgIconInNamespace('assets', 'covalent-mark',
  21 + this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/covalent-mark.svg'));
  22 + this._iconRegistry.addSvgIconInNamespace('assets', 'teradata-ux',
  23 + this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/teradata-ux.svg'));
  24 + this._iconRegistry.addSvgIconInNamespace('assets', 'appcenter',
  25 + this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/appcenter.svg'));
  26 + this._iconRegistry.addSvgIconInNamespace('assets', 'listener',
  27 + this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/listener.svg'));
  28 + this._iconRegistry.addSvgIconInNamespace('assets', 'querygrid',
  29 + this._domSanitizer.bypassSecurityTrustResourceUrl('assets/icons/querygrid.svg'));
  30 + }
  31 +
  32 +}
src/app/app.module.ts 0 → 100644
  1 +++ a/src/app/app.module.ts
  1 +import { NgModule, Type } from '@angular/core';
  2 +import { BrowserModule, Title } from '@angular/platform-browser';
  3 +
  4 +import { CovalentCoreModule } from '@covalent/core';
  5 +import { CovalentHttpModule, IHttpInterceptor } from '@covalent/http';
  6 +import { CovalentHighlightModule } from '@covalent/highlight';
  7 +import { CovalentMarkdownModule } from '@covalent/markdown';
  8 +import { CovalentChartsModule } from '@covalent/charts';
  9 +
  10 +import { AppComponent } from './app.component';
  11 +import { MainComponent } from './main/main.component';
  12 +import { LoginComponent } from './login/login.component';
  13 +import { DataComponent } from './data/data.component';
  14 +import { TemplatesComponent } from './templates/templates.component';;
  15 +import { appRoutes, appRoutingProviders } from './app.routes';
  16 +import { AgGridModule } from 'ag-grid-ng2/main';
  17 +import { ChartComponent } from '../components/chart/chart.component';
  18 +
  19 +import { RequestInterceptor } from '../config/interceptors/request.interceptor';
  20 +
  21 +import { NgxChartsModule } from '@swimlane/ngx-charts';
  22 +
  23 +import { BusStopComponent } from './data/bus-stop/bus-stop.component';
  24 +import { EditorComponent } from '../helpers/editor.component';
  25 +import { RendererComponent } from '../helpers/renderer.component';
  26 +
  27 +// Services
  28 +import { BusStopCreateService } from '../services/bus-stop-create.service';
  29 +import { BooleanSelectListService } from '../services/boolean-select-list.service';
  30 +import { BusStopService } from '../services/bus-stop.service';
  31 +
  32 +const httpInterceptorProviders: Type<any>[] = [
  33 + RequestInterceptor,
  34 +];
  35 +
  36 +@NgModule({
  37 + declarations: [
  38 + AppComponent,
  39 + MainComponent,
  40 + DataComponent,
  41 + LoginComponent,
  42 + ChartComponent,
  43 + TemplatesComponent,
  44 + BusStopComponent,
  45 + EditorComponent,
  46 + RendererComponent,
  47 + ], // directives, components, and pipes owned by this NgModule
  48 + imports: [
  49 + BrowserModule,
  50 + AgGridModule.withComponents([
  51 + BusStopComponent,
  52 + EditorComponent,
  53 + RendererComponent,
  54 + ]),
  55 + CovalentCoreModule.forRoot(),
  56 + CovalentChartsModule.forRoot(),
  57 + CovalentHttpModule.forRoot({
  58 + interceptors: [{
  59 + interceptor: RequestInterceptor, paths: ['**'],
  60 + }],
  61 + }),
  62 + CovalentHighlightModule.forRoot(),
  63 + CovalentMarkdownModule.forRoot(),
  64 + appRoutes,
  65 + NgxChartsModule,
  66 + ], // modules needed to run this module
  67 + providers: [
  68 + appRoutingProviders,
  69 + httpInterceptorProviders,
  70 + Title,
  71 + BusStopCreateService,
  72 + BooleanSelectListService,
  73 + BusStopService
  74 + ], // additional providers needed for this module
  75 + entryComponents: [ ],
  76 + bootstrap: [ AppComponent ],
  77 +})
  78 +export class AppModule {}
src/app/app.routes.ts 0 → 100644
  1 +++ a/src/app/app.routes.ts
  1 +import { Routes, RouterModule } from '@angular/router';
  2 +
  3 +import { MainComponent } from './main/main.component';
  4 +import { DataComponent } from './data/data.component';
  5 +import { LoginComponent } from './login/login.component';
  6 +import { TemplatesComponent } from './templates/templates.component';
  7 +import { BusStopComponent } from './data/bus-stop/bus-stop.component';
  8 +
  9 +const routes: Routes = [
  10 + {path: 'login', component: LoginComponent},
  11 + {path: '', component: MainComponent, children: [
  12 + {path: '',component: TemplatesComponent},
  13 + {path: 'data', component: DataComponent, children: [
  14 + {path: 'bus-stop', component: BusStopComponent},
  15 + ]}
  16 + ]},
  17 +];
  18 +
  19 +export const appRoutingProviders: any[] = [
  20 +
  21 +];
  22 +
  23 +export const appRoutes: any = RouterModule.forRoot(routes, { useHash: false });
src/app/data/bus-stop/bus-stop.component.html 0 → 100644
  1 +++ a/src/app/data/bus-stop/bus-stop.component.html
  1 +<md-card tdMediaToggle="gt-xs" [mediaClasses]="['push']">
  2 + <div>
  3 + <h1>Rich Grid with Pure JavaScript</h1>
  4 + <div style="clear: both;"></div>
  5 + <div *ngIf="showGrid">
  6 + <button md-raised-button color="accent" (click)="addNewRow()" type="button">Добавить новое поле</button>
  7 + <button md-raised-button color="warn" (click)="deleteRows()" type="button">Удалить</button>
  8 + <div *ngIf="isLoading" class="">
  9 + ...Loading
  10 + </div>
  11 + <ag-grid-ng2 #agGrid style="width: 100%; height: 350px;" class="ag-dark" [gridOptions]="gridOptions" [columnDefs]="columnDefs" [rowData]="rowData" enableColResize enableSorting enableFilter groupHeaders suppressRowClickSelection toolPanelSuppressGroups
  12 + toolPanelSuppressValues debug rowHeight="22" rowSelection="multiple" (cellClicked)="onCellClicked($event)" (cellDoubleClicked)="onCellDoubleClicked($event)" (cellContextMenu)="onCellContextMenu($event)" (cellValueChanged)="onCellValueChanged($event)"
  13 + (cellFocused)="onCellFocused($event)" (rowSelected)="onRowSelected($event)" (selectionChanged)="onSelectionChanged()" (beforeFilterChanged)="onBeforeFilterChanged()" (afterFilterChanged)="onAfterFilterChanged()" (filterModified)="onFilterModified()"
  14 + (beforeSortChanged)="onBeforeSortChanged()" (afterSortChanged)="onAfterSortChanged()" (virtualRowRemoved)="onVirtualRowRemoved($event)" (rowClicked)="onRowClicked($event)">
  15 + </ag-grid-ng2>
  16 + </div>
  17 +
  18 + </div>
  19 +</md-card>
0 \ No newline at end of file 20 \ No newline at end of file
src/app/data/bus-stop/bus-stop.component.ts 0 → 100644
  1 +++ a/src/app/data/bus-stop/bus-stop.component.ts
  1 +import {Component, ViewEncapsulation} from "@angular/core";
  2 +import {GridOptions} from "ag-grid/main";
  3 +
  4 +import { BusStopService } from '../../../services/bus-stop.service';
  5 +import { BusStop } from '../../../models/bus-stop';
  6 +import { EditorComponent } from '../../../helpers/editor.component';
  7 +import { RendererComponent } from '../../../helpers/renderer.component';
  8 +import { BusStopCreateService } from '../../../services/bus-stop-create.service';
  9 +import { BooleanSelectListService } from '../../../services/boolean-select-list.service';
  10 +import { RegionSelectList } from '../../../models/region-select-list';
  11 +import { StateCommonSelectList } from '../../../models/state-common-select-list';
  12 +import { RoadSelectList } from '../../../models/road-select-list';
  13 +import { BooleanSelectList } from '../../../models/boolean-select-list';
  14 +import { SettlementSelectList } from '../../../models/settlement-select-list';
  15 +import { SurfaceTypeSelectList } from '../../../models/surface-type-select-list';
  16 +
  17 +
  18 +// only import this if you are using the ag-Grid-Enterprise
  19 +
  20 +@Component({
  21 + selector: 'rich-grid',
  22 + templateUrl: 'bus-stop.component.html',
  23 + styleUrls: ['bus-stop.scss'],
  24 + encapsulation: ViewEncapsulation.None
  25 +})
  26 +export class BusStopComponent {
  27 +
  28 + public showGrid: boolean;
  29 + public rowData: any[];
  30 + public rowCount: string;
  31 + public regions: RegionSelectList[];
  32 + public states: StateCommonSelectList[];
  33 + public surfaceTypes: SurfaceTypeSelectList[];
  34 + public settlements: SettlementSelectList[];
  35 + public roads: RoadSelectList[];
  36 + public boolean: BooleanSelectList[];
  37 + public isLoading: boolean = false;
  38 + public isBootstrapping: boolean = true;
  39 + public isSelected: boolean = true;
  40 + private columnDefs: any[];
  41 + private gridOptions: GridOptions;
  42 +
  43 + constructor(
  44 + protected service: BusStopService,
  45 + private dataService: BusStopCreateService,
  46 + private booleanService: BooleanSelectListService
  47 + ) {
  48 + this.gridOptions = <GridOptions>{};
  49 + this.gridOptions.enableSorting = true;
  50 + this.showGrid = true;
  51 + this.gridOptions.rowModelType = 'virtual';
  52 + this.booleanService.getModels().then((models) => this.boolean = models);
  53 + this.dataService.getModels().then(models => {
  54 + this.regions = models.regionSelectListDsM as RegionSelectList[];
  55 + this.states = models.stateCommonSelectListDsM as StateCommonSelectList[];
  56 + this.surfaceTypes = models.surfaceTypeSelectListDsM as SurfaceTypeSelectList[];
  57 + this.settlements = models.settlementSelectListDsM as SettlementSelectList[];
  58 + this.roads = models.roadSelectListDsM as RoadSelectList[];
  59 + }).then(() => {
  60 + this.createColumnDefs();
  61 + this.isBootstrapping = false;
  62 + });
  63 + this.service.getData().then((data) => {
  64 + if (data.length){
  65 + this.rowData = data;
  66 + } else {
  67 + this.rowData = [new BusStop];
  68 + }
  69 + }).then(() => {
  70 + this.gridOptions.api.setDatasource(this.setRowData(this.rowData));
  71 + this.gridOptions.api.refreshVirtualPageCache();
  72 + });
  73 + }
  74 + setRowData(allOfTheData) {
  75 + let dataSource = {
  76 + rowCount: null, // behave as infinite scroll
  77 + getRows: function (params) {
  78 + console.log('asking for ' + params.startRow + ' to ' + params.endRow);
  79 + // At this point in your code, you would call the server, using $http if in AngularJS.
  80 + // To make the demo look real, wait for 500ms before returning
  81 + // take a slice of the total rows
  82 + let rowsThisPage = allOfTheData.slice(params.startRow, params.endRow);
  83 + // if on or after the last page, work out the last row.
  84 + let lastRow = -1;
  85 + if (allOfTheData.length <= params.endRow) {
  86 + lastRow = allOfTheData.length;
  87 + }
  88 + // call the success callback
  89 + params.successCallback(rowsThisPage, lastRow);
  90 + }
  91 + };
  92 + return dataSource;
  93 +
  94 + }
  95 + onDeleteConfirm(event): void {
  96 + if (window.confirm('Вы уверены что хотите удалить??')) {
  97 + event.confirm.resolve();
  98 + } else {
  99 + event.confirm.reject();
  100 + }
  101 + }
  102 + public addNewRow() {
  103 + this.rowData.unshift(new BusStop());
  104 + this.gridOptions.api.setDatasource(this.setRowData(this.rowData));
  105 + this.gridOptions.api.refreshVirtualPageCache();
  106 + }
  107 +
  108 + private createColumnDefs() {
  109 + this.columnDefs = [
  110 + {
  111 + headerName: '#',
  112 + width: 30,
  113 + checkboxSelection: true,
  114 + suppressSorting: true,
  115 + suppressMenu: true,
  116 + pinned: true
  117 + },
  118 + {
  119 + headerName: 'ID',
  120 + field: 'busStopId',
  121 + },
  122 + {
  123 + headerName: 'Назва дороги',
  124 + field: 'roadId',
  125 + editable: true,
  126 + cellEditorFramework: EditorComponent,
  127 + cellRendererFramework: RendererComponent,
  128 + cellEditorParams: {
  129 + data: this.roads,
  130 + valueCol: 'roadId',
  131 + labelCol: 'name'
  132 + }
  133 + },
  134 + {
  135 + headerName: 'Область',
  136 + field: 'regionId',
  137 + editable: true,
  138 + cellEditorFramework: EditorComponent,
  139 + cellRendererFramework: RendererComponent,
  140 + cellEditorParams: {
  141 + data: this.regions,
  142 + valueCol: 'regionId',
  143 + labelCol: 'name'
  144 + }
  145 + },
  146 + {
  147 + headerName: 'Місцезнаходження, км+ справа',
  148 + field: 'locationRight',
  149 + editable: true,
  150 + },
  151 + {
  152 + headerName: 'Місцезнаходження, км+ зліва',
  153 + field: 'locationLeft',
  154 + editable: true,
  155 + },
  156 + {
  157 + headerName: 'Технічний стан',
  158 + field: 'stateCommonId',
  159 + editable: true,
  160 + cellEditorFramework: EditorComponent,
  161 + cellRendererFramework: RendererComponent,
  162 + cellEditorParams: {
  163 + data: this.states,
  164 + valueCol: 'stateCommonId',
  165 + labelCol: 'value'
  166 + }
  167 + },
  168 + {
  169 + headerName: 'Наявність туалету',
  170 + field: 'toiletAvailability',
  171 + editable: true,
  172 + cellEditorFramework: EditorComponent,
  173 + cellRendererFramework: RendererComponent,
  174 + cellEditorParams: {
  175 + data: this.boolean,
  176 + valueCol: 'value',
  177 + labelCol: 'label'
  178 + }
  179 + }
  180 + ];
  181 + }
  182 +
  183 + private onCellClicked($event) {
  184 + console.log('onCellClicked: ' + $event.rowIndex + ' ' + $event.colDef.field);
  185 + }
  186 +
  187 + private onCellValueChanged($event) {
  188 + if ($event.oldValue !== $event.newValue) {
  189 + let data = JSON.stringify($event.data);
  190 + let id = $event.data.busStopId;
  191 + let result = null;
  192 + if (id) {
  193 + this.isLoading = true;
  194 + result = this.service.update(id, data).then(() => this.isLoading = false);
  195 + } else {
  196 + // Protection of posting new row being already sent.
  197 + if (this.isLoading) {
  198 + return ;
  199 + }
  200 + this.isLoading = true;
  201 + result = this.service.create(data).then((busStop) => {
  202 + this.rowData[$event.node.rowIndex] = busStop;
  203 + this.gridOptions.api.setDatasource(this.setRowData(this.rowData));
  204 + this.gridOptions.api.refreshVirtualPageCache();
  205 + this.isLoading = false;
  206 + });
  207 + }
  208 + }
  209 + }
  210 +
  211 + private deleteRows() {
  212 + let rows = this.gridOptions.api.getSelectedNodes();
  213 + if (!rows.length) {
  214 + return ;
  215 + }
  216 + rows.forEach(element => {
  217 + let id = element.data.busStopId;
  218 + if (id) {
  219 + this.isLoading = true;
  220 + this.service.delete(id).then(() => this.isLoading = false);
  221 + }
  222 + });
  223 + // Sort in order to protect array from reindexing (remove rear elements first)
  224 + let sorted = rows.sort((a, b) => {
  225 + if (a > b) {
  226 + return -1;
  227 + } else {
  228 + return 1;
  229 + }
  230 + });
  231 + sorted.forEach(item => {
  232 + this.rowData.splice(item.rowIndex, 1);
  233 + });
  234 + this.gridOptions.api.setDatasource(this.setRowData(this.rowData));
  235 + this.gridOptions.api.refreshVirtualPageCache();
  236 + }
  237 +
  238 + private onCellDoubleClicked($event) {
  239 + console.log('onCellDoubleClicked: ' + $event.rowIndex + ' ' + $event.colDef.field);
  240 + }
  241 +
  242 + private onCellContextMenu($event) {
  243 + console.log('onCellContextMenu: ' + $event.rowIndex + ' ' + $event.colDef.field);
  244 + }
  245 +
  246 + private onCellFocused($event) {
  247 + console.log('onCellFocused: (' + $event.rowIndex + ',' + $event.colIndex + ')');
  248 + }
  249 +
  250 + private onRowSelected($event) {
  251 + // taking out, as when we 'select all', it prints to much to the console!!
  252 + // console.log('onRowSelected: ' + $event.node.data.name);
  253 + }
  254 +
  255 + private onSelectionChanged() {
  256 + console.log('selectionChanged');
  257 + }
  258 +
  259 + private onBeforeFilterChanged() {
  260 + console.log('beforeFilterChanged');
  261 + }
  262 +
  263 + private onAfterFilterChanged() {
  264 + console.log('afterFilterChanged');
  265 + }
  266 +
  267 + private onFilterModified() {
  268 + console.log('onFilterModified');
  269 + }
  270 +
  271 + private onBeforeSortChanged() {
  272 + console.log('onBeforeSortChanged');
  273 + }
  274 +
  275 + private onAfterSortChanged() {
  276 + console.log('onAfterSortChanged');
  277 + }
  278 +
  279 + private onVirtualRowRemoved($event) {
  280 + // because this event gets fired LOTS of times, we don't print it to the
  281 + // console. if you want to see it, just uncomment out this line
  282 + // console.log('onVirtualRowRemoved: ' + $event.rowIndex);
  283 + }
  284 +
  285 + private onRowClicked($event) {
  286 + console.log('onRowClicked: ' + $event.node.data.name);
  287 + }
  288 +
  289 + public onQuickFilterChanged($event) {
  290 + this.gridOptions.api.setQuickFilter($event.target.value);
  291 + }
  292 +
  293 + // here we use one generic event to handle all the column type events.
  294 + // the method just prints the event name
  295 + private onColumnEvent($event) {
  296 + console.log('onColumnEvent: ' + $event);
  297 + }
  298 +}
src/app/data/bus-stop/bus-stop.scss 0 → 100644
  1 +++ a/src/app/data/bus-stop/bus-stop.scss
  1 +.toolbar button {
  2 + margin: 2px;
  3 + padding: 0;
  4 +}
0 \ No newline at end of file 5 \ No newline at end of file
src/app/data/data.component.html 0 → 100644
  1 +++ a/src/app/data/data.component.html
  1 +<td-layout-nav logo="assets:covalent">
  2 + <div td-toolbar-content layout="row" layout-align="center center" flex>
  3 + <span>Quickstart</span>
  4 + <span flex></span>
  5 + <a md-icon-button mdTooltip="Docs" href="https://teradata.github.io/covalent/" target="_blank">
  6 + <md-icon>chrome_reader_mode</md-icon>
  7 + </a>
  8 + <a md-icon-button mdTooltip="Github" href="https://github.com/teradata/covalent" target="_blank">
  9 + <md-icon svgIcon="assets:github"></md-icon>
  10 + </a>
  11 + </div>
  12 + <td-layout-manage-list #manageList [opened]="media.registerQuery('gt-sm') | async" [mode]="(media.registerQuery('gt-sm') | async) ? 'side' : 'push'" [sidenavWidth]="(media.registerQuery('gt-xs') | async) ? '257px' : '100%'">
  13 + <md-toolbar td-sidenav-content>
  14 + <span>Відомості</span>
  15 + </md-toolbar>
  16 + <md-nav-list td-sidenav-content>
  17 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['/product']">
  18 + <md-icon md-list-icon>dashboard</md-icon>
  19 + Автомобільні дороги
  20 + </a>
  21 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['stats']">
  22 + <md-icon md-list-icon>insert_chart</md-icon>
  23 + Обслуговування
  24 + </a>
  25 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['features']">
  26 + <md-icon md-list-icon>star</md-icon>
  27 + Прив'язки населених пунктів
  28 + </a>
  29 + <a md-list-item (click)="!media.query('gt-sm') && manageList.close()" md-ripple class="block relative">
  30 + <md-icon md-list-icon>people</md-icon>
  31 + Інтенсивності
  32 + </a>
  33 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['/product']">
  34 + <md-icon md-list-icon>dashboard</md-icon>
  35 + Категорія доріг
  36 + </a>
  37 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['/product']">
  38 + <md-icon md-list-icon>dashboard</md-icon>
  39 + З'їзди
  40 + </a>
  41 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['/product']">
  42 + <md-icon md-list-icon>dashboard</md-icon>
  43 + Ширина проїзних частин
  44 + </a>
  45 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['/product']">
  46 + <md-icon md-list-icon>dashboard</md-icon>
  47 + Покриття доріг
  48 + </a>
  49 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['/product']">
  50 + <md-icon md-list-icon>dashboard</md-icon>
  51 + Об'єкти сервісу
  52 + </a>
  53 + <a md-list-item md-ripple class="block relative" (click)="!media.query('gt-sm') && manageList.close()" [routerLinkActive]="['active']" [routerLinkActiveOptions]="{exact:true}" [routerLink]="['bus-stop']">
  54 + <md-icon md-list-icon>dashboard</md-icon>
  55 + Автобусні зупинки
  56 + </a>
  57 + </md-nav-list>
  58 + <div td-toolbar-content layout="row" layout-align="start center" flex>
  59 + <span>{{title}}</span>
  60 + <span flex></span>
  61 + <button md-icon-button><md-icon class="md-24">view_module</md-icon></button>
  62 + <button md-icon-button><md-icon class="md-24">sort</md-icon></button>
  63 + <button md-icon-button><md-icon class="md-24">settings</md-icon></button>
  64 + <button md-icon-button><md-icon class="md-24">more_vert</md-icon></button>
  65 + </div>
  66 + <router-outlet></router-outlet>
  67 + </td-layout-manage-list>
  68 +</td-layout-nav>
0 \ No newline at end of file 69 \ No newline at end of file
src/app/data/data.component.scss 0 → 100644
  1 +++ a/src/app/data/data.component.scss
  1 +.md-fab-bottom-right {
  2 + position: fixed;
  3 + bottom: 10px;
  4 + right: 10px;
  5 +}
src/app/data/data.component.ts 0 → 100644
  1 +++ a/src/app/data/data.component.ts
  1 +import { Component, AfterViewInit } from '@angular/core';
  2 +
  3 +import { Title } from '@angular/platform-browser';
  4 +
  5 +import { TdMediaService } from '@covalent/core';
  6 +
  7 +@Component({
  8 + selector: 'qs-dashboard-product',
  9 + templateUrl: './data.component.html',
  10 + styleUrls: ['./data.component.scss'],
  11 +})
  12 +export class DataComponent implements AfterViewInit {
  13 +
  14 + title: string;
  15 + constructor(private _titleService: Title,
  16 + public media: TdMediaService) { }
  17 +
  18 + ngAfterViewInit(): void {
  19 + // broadcast to all listener observables when loading the page
  20 + this.media.broadcast();
  21 +
  22 + this._titleService.setTitle( 'Product Dashboard' );
  23 + this.title = this._titleService.getTitle();
  24 + }
  25 +}
src/app/environment.ts 0 → 100644
  1 +++ a/src/app/environment.ts
  1 +// The file for the current environment will overwrite this one during build
  2 +// Different environments can be found in config/environment.{dev|prod}.ts
  3 +// The build system defaults to the dev environment
  4 +
  5 +export const environment: any = {
  6 + production: false,
  7 +};
src/app/index.ts 0 → 100644
  1 +++ a/src/app/index.ts
  1 +export {environment} from './environment';
  2 +export {AppModule} from './app.module';
src/app/login/login.component.html 0 → 100644
  1 +++ a/src/app/login/login.component.html
  1 +<div layout="column" layout-fill>
  2 + <md-toolbar color="primary" class="md-whiteframe-z1">
  3 + <span>Login</span>
  4 + </md-toolbar>
  5 + <div class="md-content" layout-padding flex>
  6 + <div layout-gt-xs="row" layout-align-gt-xs="center start" class="margin">
  7 + <div flex-gt-xs="50">
  8 + <md-card tdMediaToggle="gt-xs" [mediaClasses]="['push-top-lg']">
  9 + <md-card-title><md-icon class="md-icon-logo" svgIcon="assets:covalent"></md-icon> Login</md-card-title>
  10 + <md-card-subtitle>sign in via your current corporate account</md-card-subtitle>
  11 + <md-divider></md-divider>
  12 + <md-card-content>
  13 + <form #loginForm="ngForm">
  14 + <div layout="row">
  15 + <md-input-container flex>
  16 + <input md-input #userElement #userControl="ngModel" placeholder="Username" type="text" maxlength="30" name="username" [(ngModel)]="username" required>
  17 + <span md-prefix><md-icon>person</md-icon></span>
  18 + <md-hint align="start">
  19 + <span [hidden]="!userControl.errors?.required || userControl.pristine" class="tc-red-600">Required</span>
  20 + </md-hint>
  21 + <md-hint align="end">{{userElement.value.length}} / 30</md-hint>
  22 + </md-input-container>
  23 + </div>
  24 + <div layout="row">
  25 + <md-input-container flex>
  26 + <input md-input #passElement #passControl="ngModel" placeholder="Password" type="password" name="password" [(ngModel)]="password" required>
  27 + <span md-prefix><md-icon>lock</md-icon></span>
  28 + <md-hint align="start">
  29 + <span [hidden]="!passControl.errors?.required || passControl.pristine" class="tc-red-600">Required</span>
  30 + </md-hint>
  31 + <md-hint align="end">Something hard to guess</md-hint>
  32 + </md-input-container>
  33 + </div>
  34 + </form>
  35 + </md-card-content>
  36 + <md-divider></md-divider>
  37 + <md-card-actions layout="row">
  38 + <button flex md-raised-button color="accent" [disabled]="!loginForm.form.valid" (click)="login()">Sign In</button>
  39 + </md-card-actions>
  40 + </md-card>
  41 + </div>
  42 + </div>
  43 + </div>
  44 +</div>
0 \ No newline at end of file 45 \ No newline at end of file
src/app/login/login.component.scss 0 → 100644
  1 +++ a/src/app/login/login.component.scss
  1 +:host /deep/ {
  2 + .md-input-prefix {
  3 + width: 44px;
  4 + text-align: center;
  5 + }
  6 + md-divider {
  7 + display: block;
  8 + border-top-style: solid;
  9 + border-top-width: 1px;
  10 + }
  11 +}
0 \ No newline at end of file 12 \ No newline at end of file
src/app/login/login.component.ts 0 → 100644
  1 +++ a/src/app/login/login.component.ts
  1 +import { Component } from '@angular/core';
  2 +import { Router } from '@angular/router';
  3 +
  4 +import { TdLoadingService } from '@covalent/core';
  5 +
  6 +@Component({
  7 + selector: 'qs-login',
  8 + templateUrl: './login.component.html',
  9 + styleUrls: ['./login.component.scss'],
  10 +})
  11 +export class LoginComponent {
  12 +
  13 + username: string;
  14 + password: string;
  15 +
  16 + constructor(private _router: Router,
  17 + private _loadingService: TdLoadingService) {}
  18 +
  19 + login(): void {
  20 + this._loadingService.register();
  21 + alert('Mock log in as ' + this.username);
  22 + setTimeout(() => {
  23 + this._router.navigate(['/']);
  24 + this._loadingService.resolve();
  25 + }, 2000);
  26 + }
  27 +}
src/app/main/main.component.html 0 → 100644
  1 +++ a/src/app/main/main.component.html
  1 +<td-layout #layout>
  2 + <td-navigation-drawer logo="assets:covalent" sidenavTitle="Quickstart" name="Firstname Lastname" email="firstname.lastname@company.com">
  3 + <md-nav-list>
  4 + <template let-item let-last="last" ngFor [ngForOf]="routes">
  5 + <a md-list-item [routerLink]="[item.route]" (click)="layout.close()"><md-icon>{{item.icon}}</md-icon>{{item.title}}</a>
  6 + </template>
  7 + </md-nav-list>
  8 + <md-nav-list td-navigation-drawer-menu>
  9 + <a md-list-item (click)="logout()"><md-icon>exit_to_app</md-icon>Sign out</a>
  10 + </md-nav-list>
  11 + </td-navigation-drawer>
  12 + <router-outlet></router-outlet>
  13 +</td-layout>
src/app/main/main.component.scss 0 → 100644
  1 +++ a/src/app/main/main.component.scss
src/app/main/main.component.ts 0 → 100644
  1 +++ a/src/app/main/main.component.ts
  1 +import { Component } from '@angular/core';
  2 +import { Router } from '@angular/router';
  3 +
  4 +@Component({
  5 + selector: 'qs-main',
  6 + templateUrl: './main.component.html',
  7 + styleUrls: ['./main.component.scss'],
  8 +})
  9 +export class MainComponent {
  10 +
  11 + routes: Object[] = [
  12 + {
  13 + title: 'Відомості',
  14 + route: '/data',
  15 + icon: 'view_quilt',
  16 + },
  17 + {
  18 + title: 'Список доріг',
  19 + route: '/',
  20 + icon: 'view_quilt',
  21 + },
  22 + {
  23 + title: 'Список паспортів доріг',
  24 + route: '/',
  25 + icon: 'view_quilt',
  26 + },
  27 + {
  28 + title: 'Редагування маршрутів',
  29 + route: '/',
  30 + icon: 'view_quilt',
  31 + },
  32 + ];
  33 +
  34 + constructor(private _router: Router) {}
  35 +
  36 + logout(): void {
  37 + this._router.navigate(['/login']);
  38 + }
  39 +}
src/app/templates/templates.component.html 0 → 100644
  1 +++ a/src/app/templates/templates.component.html
  1 +<td-layout-nav logo="assets:covalent" class="white-orange">
  2 + <div td-toolbar-content layout="row" layout-align="start center" flex>
  3 + <span hide-xs>App Templates</span>
  4 + <span flex ></span>
  5 + <button md-icon-button [mdMenuTriggerFor]="notificationsMenu">
  6 + <td-notification-count color="accent" [notifications]="4">
  7 + <md-icon>apps</md-icon>
  8 + </td-notification-count>
  9 + </button>
  10 + <md-menu #notificationsMenu="mdMenu">
  11 + <td-menu>
  12 + <div td-menu-header class="md-subhead">Templates</div>
  13 + <md-nav-list dense>
  14 + <a md-list-item [routerLink]="['/templates']">
  15 + <md-icon md-list-avatar>system_update_alt</md-icon>
  16 + <h4 md-line><span class="text-wrap">Landing Page</span></h4>
  17 + <p md-line>a landing page template</p>
  18 + </a>
  19 + <md-divider></md-divider>
  20 + <a md-list-item [routerLink]="['/templates/dashboard']">
  21 + <md-icon md-list-avatar>dashboard</md-icon>
  22 + <h4 md-line><span class="text-wrap">Dashboard</span></h4>
  23 + <p md-line>an ngx-charts dashboard template</p>
  24 + </a>
  25 + <md-divider></md-divider>
  26 + <a md-list-item [routerLink]="['/templates/email']">
  27 + <md-icon md-list-avatar>email</md-icon>
  28 + <h4 md-line><span class="text-wrap">Email App</span></h4>
  29 + <p md-line>an email app template</p>
  30 + </a>
  31 + <md-divider></md-divider>
  32 + <a md-list-item [routerLink]="['/templates/editor']">
  33 + <md-icon md-list-avatar>view_array</md-icon>
  34 + <h4 md-line><span class="text-wrap">IDE Editor</span></h4>
  35 + <p md-line>an IDE text editor app template</p>
  36 + </a>
  37 + </md-nav-list>
  38 + <a md-button color="accent" td-menu-footer href="https://github.com/Teradata/covalent-quickstart/tree/develop/src/app/templates" target="_blank">
  39 + View Code
  40 + </a>
  41 + </td-menu>
  42 + </md-menu>
  43 + <a md-icon-button mdTooltip="View this code" href="https://github.com/Teradata/covalent-quickstart/tree/develop/src/app/templates" target="_blank"><md-icon svgIcon="assets:github"></md-icon></a>
  44 + </div>
  45 + <md-toolbar color="primary" class="pad-none pull-top">
  46 + <nav md-tab-nav-bar class="pull-bottom">
  47 + <a md-tab-link
  48 + [routerLink]="['/templates']"
  49 + class="active">
  50 + Landing Page
  51 + </a>
  52 + <a md-tab-link
  53 + [routerLink]="['/templates/dashboard']">
  54 + Dashboard
  55 + </a>
  56 + <a md-tab-link
  57 + [routerLink]="['/templates/email']">
  58 + Email App
  59 + </a>
  60 + <a md-tab-link
  61 + [routerLink]="['/templates/editor']">
  62 + IDE Editor
  63 + </a>
  64 + </nav>
  65 + </md-toolbar>
  66 + <section class="bgc-blue-50">
  67 + <div layout-gt-xs="row">
  68 + <div flex class="pad" tdMediaToggle="gt-xs" [mediaClasses]="['pad-xl']">
  69 + <div class="push-top-xl" hide-xs></div>
  70 + <div tdMediaToggle="gt-sm" [mediaClasses]="['push-lg']">
  71 + <h1 class="md-display-1 tc-grey-800 push-top-xs push-bottom-sm">Awesome Landing Page Template</h1>
  72 + <p class="md-title tc-grey-600">Covalent isn't just for web application interfaces. You can easily build a reponsive landing pages just like this!</p>
  73 + <button md-raised-button color="accent" class="push-bottom md-button-lg">Get Started</button>
  74 + </div>
  75 + <div class="push-bottom-xl" hide-xs></div>
  76 + </div>
  77 + <div flex="55" class="bg-cover" style="background-image:url('https://assets.entrepreneur.com/static/1425479423-vince-vaughn-appearing-free-cheesy-stock-images-you-can-download-getty-3.jpg');background-size:cover;">
  78 + </div>
  79 + </div>
  80 + </section>
  81 +
  82 + <section class="bgc-light-blue-600 tc-light-blue-50" tdMediaToggle="gt-xs" [mediaClasses]="['pad-top-xl', 'pad-bottom-xl']">
  83 + <h2 class="md-headline text-upper text-center tc-grey-50 push-bottom">Covalent Templates</h2>
  84 + <div layout="row" layout-align-gt-xs="center center">
  85 + <div flex-gt-xs="80" layout="row" layout-wrap>
  86 + <div class="text-center" flex-xs="50" flex-gt-xs="25">
  87 + <md-icon class="tc-grey-50 md-display-2">system_update_alt</md-icon>
  88 + <div class="pad-bottom-md"> Landing Page Template</div>
  89 + </div>
  90 + <div class="text-center" flex-xs="50" flex-gt-xs="25">
  91 + <md-icon class="tc-grey-50 md-display-2 ">dashboard</md-icon>
  92 + <div class="pad-bottom-md">Dashboard Template</div>
  93 + </div>
  94 + <div class="text-center" flex-xs="50" flex-gt-xs="25">
  95 + <md-icon class="tc-grey-50 md-display-2">email</md-icon>
  96 + <div class="pad-bottom-md">Email App Template</div>
  97 + </div>
  98 + <div class="text-center" flex-xs="50" flex-gt-xs="25">
  99 + <md-icon class="tc-grey-50 md-display-2">view_array</md-icon>
  100 + <div class="pad-bottom-md">IDE Editor Template</div>
  101 + </div>
  102 + </div>
  103 + </div>
  104 + </section>
  105 +<!--Product Card code starts here-->
  106 + <section class="bgc-blue-grey-50" tdMediaToggle="gt-xs" [mediaClasses]="['pad-top-xl', 'pad-bottom-xl']">
  107 + <div layout-gt-xs="row" layout-align-gt-xs="center center">
  108 + <div layout-gt-sm="row" flex-gt-xs="75" layout-margin>
  109 + <div flex-gt-xs="25">
  110 + <md-card>
  111 + <md-toolbar color="accent" class="bgc-light-blue-500 push-bottom">
  112 + <span class="text-upper">Plan Name</span>
  113 + </md-toolbar>
  114 + <md-card-subtitle>Plan description goes here.</md-card-subtitle>
  115 + <md-divider></md-divider>
  116 + <md-list>
  117 + <h3 md-subheader>Features</h3>
  118 + <md-list-item>
  119 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  120 + <h4 md-line>Feature Name</h4>
  121 + </md-list-item>
  122 + <md-divider md-inset></md-divider>
  123 + <md-list-item>
  124 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  125 + <h4 md-line>Feature Name</h4>
  126 + </md-list-item>
  127 + <md-divider md-inset></md-divider>
  128 + <md-list-item>
  129 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  130 + <h4 md-line>Feature Name</h4>
  131 + </md-list-item>
  132 + <md-divider md-inset></md-divider>
  133 + <md-list-item>
  134 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  135 + <h4 md-line>Feature Name</h4>
  136 + </md-list-item>
  137 + </md-list>
  138 + </md-card>
  139 + </div>
  140 +
  141 + <div flex-gt-xs="25">
  142 + <md-card>
  143 + <md-toolbar color="accent" class="bgc-light-blue-800 push-bottom">
  144 + <span class="text-upper">Plan Name</span>
  145 + </md-toolbar>
  146 + <md-card-subtitle>Plan description goes here.</md-card-subtitle>
  147 + <md-divider></md-divider>
  148 + <md-list>
  149 + <h3 md-subheader>Features</h3>
  150 + <md-list-item>
  151 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  152 + <h4 md-line>Feature Name</h4>
  153 + </md-list-item>
  154 + <md-divider md-inset></md-divider>
  155 + <md-list-item>
  156 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  157 + <h4 md-line>Feature Name</h4>
  158 + </md-list-item>
  159 + <md-divider md-inset></md-divider>
  160 + <md-list-item>
  161 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  162 + <h4 md-line>Feature Name</h4>
  163 + </md-list-item>
  164 + <md-divider md-inset></md-divider>
  165 + <md-list-item>
  166 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  167 + <h4 md-line>Feature Name</h4>
  168 + </md-list-item>
  169 + </md-list>
  170 + </md-card>
  171 + </div>
  172 +
  173 + <div flex-gt-xs="25">
  174 + <md-card>
  175 + <md-toolbar color="accent" class="bgc-orange-700 push-bottom">
  176 + <span class="text-upper">Plan Name</span>
  177 + </md-toolbar>
  178 + <md-card-subtitle>Plan description goes here.</md-card-subtitle>
  179 + <md-divider></md-divider>
  180 + <md-list>
  181 + <h3 md-subheader>Features</h3>
  182 + <md-list-item>
  183 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  184 + <h4 md-line>Feature Name</h4>
  185 + </md-list-item>
  186 + <md-divider md-inset></md-divider>
  187 + <md-list-item>
  188 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  189 + <h4 md-line>Feature Name</h4>
  190 + </md-list-item>
  191 + <md-divider md-inset></md-divider>
  192 + <md-list-item>
  193 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  194 + <h4 md-line>Feature Name</h4>
  195 + </md-list-item>
  196 + <md-divider md-inset></md-divider>
  197 + <md-list-item>
  198 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  199 + <h4 md-line>Feature Name</h4>
  200 + </md-list-item>
  201 + </md-list>
  202 + </md-card>
  203 + </div>
  204 + <div flex-gt-xs="25">
  205 + <md-card>
  206 + <md-toolbar color="accent" class="bgc-deep-orange-700 push-bottom">
  207 + <span class="text-upper">Plan Name</span>
  208 + </md-toolbar>
  209 + <md-card-subtitle>Plan description goes here.</md-card-subtitle>
  210 + <md-divider></md-divider>
  211 + <md-list>
  212 + <h3 md-subheader>Features</h3>
  213 + <md-list-item>
  214 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  215 + <h4 md-line>Feature Name</h4>
  216 + </md-list-item>
  217 + <md-divider md-inset></md-divider>
  218 + <md-list-item>
  219 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  220 + <h4 md-line>Feature Name</h4>
  221 + </md-list-item>
  222 + <md-divider md-inset></md-divider>
  223 + <md-list-item>
  224 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  225 + <h4 md-line>Feature Name</h4>
  226 + </md-list-item>
  227 + <md-divider md-inset></md-divider>
  228 + <md-list-item>
  229 + <md-icon md-list-icon class="fill-grey-700">description</md-icon>
  230 + <h4 md-line>Feature Name</h4>
  231 + </md-list-item>
  232 + </md-list>
  233 + </md-card>
  234 + </div>
  235 + </div>
  236 + </div>
  237 + </section>
  238 + <section class="bgc-blue-600">
  239 + <div layout-gt-xs="row">
  240 + <div flex class="bg-cover" style="background-image:url('https://assets.entrepreneur.com/static/1425478689-vince-vaughn-appearing-free-cheesy-stock-images-you-can-download-getty-2.jpg');background-size:cover;">
  241 + </div>
  242 + <div flex class="pad" tdMediaToggle="gt-xs" [mediaClasses]="['pad-xxl']">
  243 + <div class="push-top-xxl" hide-xs></div>
  244 + <h3 class="md-display-1 tc-white push-top-xs push-bottom-sm">Contact Our Company</h3>
  245 + <p class="md-title tc-blue-50">Ready to make dive into Angular 2? Clone this repo and get started today!</p>
  246 + <button md-raised-button color="accent" class="push-bottom">Contact Us</button>
  247 + <div class="push-top-xxl" hide-xs></div>
  248 + </div>
  249 + </div>
  250 + </section>
  251 + <section class="bgc-blue-grey-800 tc-blue-grey-100">
  252 + <div layout-gt-xs="row" layout-align-gt-xs="center center">
  253 + <div layout-gt-sm="row" flex-gt-xs="75" layout-margin layout-padding>
  254 + <div flex>
  255 + <md-nav-list>
  256 + <h3 md-subheader class="text-upper tc-blue-grey-100">Menu Name</h3>
  257 + <md-list-item>
  258 + <p md-line md-caption class="md-body-2">List Item</p>
  259 + </md-list-item>
  260 + <md-list-item>
  261 + <p md-line >List item</p>
  262 + </md-list-item>
  263 + <md-list-item>
  264 + <p md-line >List item</p>
  265 + </md-list-item>
  266 + <md-list-item>
  267 + <p md-line >List item</p>
  268 + </md-list-item>
  269 + </md-nav-list>
  270 + </div>
  271 + <div flex>
  272 + <md-nav-list>
  273 + <h3 md-subheader class="text-upper tc-blue-grey-100">Menu Name</h3>
  274 + <md-list-item>
  275 + <p md-line >List item</p>
  276 + </md-list-item>
  277 + <md-list-item>
  278 + <p md-line >List item</p>
  279 + </md-list-item>
  280 + <md-list-item>
  281 + <p md-line >List item</p>
  282 + </md-list-item>
  283 + <md-list-item>
  284 + <p md-line >List item</p>
  285 + </md-list-item>
  286 + </md-nav-list>
  287 + </div>
  288 + <div flex>
  289 + <md-nav-list>
  290 + <h3 md-subheader class="text-upper tc-blue-grey-100">Menu Name</h3>
  291 + <md-list-item>
  292 + <p md-line>List item</p>
  293 + </md-list-item>
  294 + <md-list-item>
  295 + <p md-line>List item</p>
  296 + </md-list-item>
  297 + <md-list-item>
  298 + <p md-line>List item</p>
  299 + </md-list-item>
  300 + <md-list-item>
  301 + <p md-line>List item</p>
  302 + </md-list-item>
  303 + </md-nav-list>
  304 + </div>
  305 + <div flex-gt-xs="10">
  306 + </div>
  307 + <div flex layout="column" flex-gt-xs="30" layout-align="right right">
  308 + <md-icon push-right-xl svgIcon="assets:covalent" class="md-icon-logo"></md-icon>
  309 + <p class="text-sm">&copy; Copyright 2016 Company Name, Inc. All rights reserved.</p>
  310 + </div>
  311 + </div>
  312 + </div>
  313 + </section>
  314 +</td-layout-nav>
  315 +
  316 +<a md-fab color="accent" class="md-fab-position-bottom-right" style="bottom:20px;" href="https://github.com/Teradata/covalent-quickstart/tree/develop/src/app/templates" target="_blank">
  317 + <md-icon>code</md-icon>
  318 +</a>
0 \ No newline at end of file 319 \ No newline at end of file
src/app/templates/templates.component.scss 0 → 100644
  1 +++ a/src/app/templates/templates.component.scss
src/app/templates/templates.component.ts 0 → 100644
  1 +++ a/src/app/templates/templates.component.ts
  1 +import { Component } from '@angular/core';
  2 +
  3 +@Component({
  4 + selector: 'qs-templates',
  5 + templateUrl: './templates.component.html',
  6 + styleUrls: ['./templates.component.scss'],
  7 +})
  8 +export class TemplatesComponent {
  9 +
  10 +}
src/assets/ico/favicon.ico 0 → 100644
No preview for this file type
src/assets/icons/appcenter.svg 0 → 100644
  1 +++ a/src/assets/icons/appcenter.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<svg width="454px" height="432px" viewBox="0 0 454 432" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
  3 + <!-- Generator: Sketch 3.4.2 (15855) - http://www.bohemiancoding.com/sketch -->
  4 + <title>appcenter</title>
  5 + <desc>Created with Sketch.</desc>
  6 + <defs></defs>
  7 + <g id="appcenter">
  8 + <g id="iPad-Portrait" sketch:type="MSArtboardGroup" transform="translate(-29.000000, -40.000000)">
  9 + <g id="appcenter" sketch:type="MSLayerGroup" transform="translate(29.000000, 40.000000)">
  10 + <path d="M0.546074656,166.825391 L218.43635,307.846844 L218.43635,361.348202 L0.546074656,221.326749 L0.546074656,166.825391 Z" id="Rectangle-1-Copy" sketch:type="MSShapeGroup"></path>
  11 + <path d="M0.546074656,236.825391 L218.43635,377.846844 L218.43635,431.348202 L0.546074656,291.326749 L0.546074656,236.825391 Z" id="Rectangle-1-Copy-6" sketch:type="MSShapeGroup"></path>
  12 + <path d="M235.56365,166.825391 L453.453925,307.846844 L453.453925,361.348202 L235.56365,221.326749 L235.56365,166.825391 Z" id="Rectangle-1-Copy-8" sketch:type="MSShapeGroup" transform="translate(344.508788, 264.086797) scale(-1, 1) translate(-344.508788, -264.086797) "></path>
  13 + <path d="M235.56365,236.825391 L453.453925,377.846844 L453.453925,431.348202 L235.56365,291.326749 L235.56365,236.825391 Z" id="Rectangle-1-Copy-7" sketch:type="MSShapeGroup" transform="translate(344.508788, 334.086797) scale(-1, 1) translate(-344.508788, -334.086797) "></path>
  14 + <path d="M352.100981,210.800069 L453.453925,145.825391 L350.689952,79.9461383 L294.622647,115.73711 C302.455369,124.575152 307,135.097827 307,146.391929 C307,156.884764 303.077338,166.711749 296.239641,175.140576 L352.100981,210.800069 Z M125.166311,65.9346692 L227,0.651797518 L330.640173,67.092758 L276.691152,101.531509 C263.505611,94.1167908 246.96182,89.7043912 229,89.7043912 C210.946626,89.7043912 194.325773,94.1618869 181.107484,101.645124 L125.166311,65.9346692 Z M332.051203,223.65345 L227,290.998984 L123.755281,224.811538 L178.714274,189.728065 C192.292426,198.058442 209.839401,203.079467 229,203.079467 C248.069591,203.079467 265.54085,198.106026 279.091978,189.846543 L332.051203,223.65345 Z M105.116532,78.7880494 L0.546074656,145.825391 L103.705503,211.958158 L161.631255,174.980832 C154.873309,166.587691 151,156.818547 151,146.391929 C151,135.163718 155.491758,124.697959 163.240597,115.89197 L105.116532,78.7880494 Z M289,146.391929 C289,122.199644 262.137085,102.587923 229,102.587923 C195.862915,102.587923 169,122.199644 169,146.391929 C169,170.584214 195.862915,190.195936 229,190.195936 C262.137085,190.195936 289,170.584214 289,146.391929 Z" id="Rectangle-3" sketch:type="MSShapeGroup"></path>
  15 + </g>
  16 + </g>
  17 + </g>
  18 +</svg>
src/assets/icons/covalent-mark.svg 0 → 100644
  1 +++ a/src/assets/icons/covalent-mark.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  3 + <!-- Generator: Sketch 3.8.3 (29802) - http://www.bohemiancoding.com/sketch -->
  4 + <title>covalent</title>
  5 + <desc>Created with Sketch.</desc>
  6 + <defs></defs>
  7 + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
  8 + <g id="covalent">
  9 + <polygon id="Polygon-1" fill="#FB8C00" points="256.080725 1.7143935 476.29852 128.857197 461.260124 383.142803 256.080725 510.285606 49.5341992 383.142803 35.8629301 128.857197"></polygon>
  10 + <path d="M256,510.235915 L256.080725,510.285606 L461.260124,383.142803 L476.29852,128.857197 L256.080725,1.7143935 L255.58604,2 L256,2 L256,510.235915 Z" id="Combined-Shape" fill="#EF6C00"></path>
  11 + <path d="M256.080725,56 L429.285806,156 L417.457849,356 L256.080725,456 L93.6283325,356 L82.8756443,156 L256.080725,56 Z M256.080725,75.9660451 L411.994704,165.983023 L401.242015,346.016977 L256.080725,436.033955 L110.919435,346.016977 L100.166747,165.983023 L256.080725,75.9660451 Z" id="Combined-Shape" fill="#FFFFFF"></path>
  12 + <path d="M368.953995,258.4825 C365.791495,256.8127 362.097695,256.745233 358.842428,257.9006 L349.110361,252.7647 L349.110361,212.0064 L358.690628,206.238 C359.871295,206.600633 361.094128,206.836767 362.359128,206.836767 C364.652995,206.836767 366.913128,206.2127 368.878095,205.0236 C371.770728,203.2779 373.811595,200.511767 374.629628,197.239633 C375.439228,193.959067 374.933228,190.560433 373.187528,187.6678 C369.729861,181.9247 361.583261,179.883833 355.823295,183.358367 C352.635495,185.281167 350.645228,188.4015 349.987428,191.800133 L340.677028,197.4083 L306.943695,177.176733 L306.943695,166.011 C309.515861,163.691833 311.160361,160.377533 311.160361,156.65 C311.160361,149.675633 305.484728,144 298.510361,144 C291.535995,144 285.860361,149.675633 285.860361,156.65 C285.860361,160.377533 287.504861,163.691833 290.077028,166.011 L290.077028,177.176733 L256.343695,197.416733 L222.610361,177.176733 L222.610361,166.011 C225.182528,163.691833 226.827028,160.377533 226.827028,156.65 C226.827028,149.675633 221.151395,144 214.177028,144 C207.202661,144 201.527028,149.675633 201.527028,156.65 C201.527028,160.377533 203.171528,163.691833 205.743695,166.011 L205.743695,177.176733 L172.018795,197.4083 L162.708395,191.800133 C162.050595,188.4015 160.060328,185.272733 156.872528,183.358367 C151.112561,179.8754 142.974395,181.9247 139.508295,187.659367 C137.754161,190.552 137.248161,193.959067 138.057761,197.239633 C138.875795,200.511767 140.916661,203.2779 143.809295,205.0236 C145.782695,206.2127 148.034395,206.836767 150.328261,206.836767 C151.593261,206.836767 152.816095,206.600633 153.996761,206.238 L163.577028,212.014833 L163.577028,252.7647 L153.853395,257.909033 C150.598128,256.753667 146.904328,256.8127 143.733395,258.490933 C137.568628,261.754633 135.207295,269.420533 138.462561,275.5853 C140.663661,279.742933 144.947795,282.323533 149.653595,282.323533 C151.702895,282.323533 153.735328,281.817533 155.556928,280.856133 C158.845928,279.118867 161.013295,276.108167 161.856628,272.760133 L171.748928,267.531467 L205.743695,287.923267 L205.743695,328.6647 L196.020061,333.809033 C192.756361,332.653667 189.062561,332.721133 185.900061,334.390933 C179.735295,337.654633 177.373961,345.320533 180.629228,351.4853 C182.830328,355.642933 187.114461,358.223533 191.820261,358.223533 C193.869561,358.223533 195.901995,357.717533 197.723595,356.756133 C201.012595,355.018867 203.179961,352.008167 204.023295,348.660133 L213.915595,343.431467 L247.910361,363.823267 L247.910361,374.989 C245.338195,377.308167 243.693695,380.622467 243.693695,384.35 C243.693695,391.324367 249.369328,397 256.343695,397 C263.318061,397 268.993695,391.324367 268.993695,384.35 C268.993695,380.622467 267.349195,377.308167 264.777028,374.989 L264.777028,363.823267 L298.771795,343.431467 L308.664095,348.660133 C309.515861,352.0166 311.674795,355.018867 314.963795,356.764567 C316.776961,357.717533 318.817828,358.223533 320.867128,358.223533 C325.572928,358.223533 329.857061,355.642933 332.058161,351.4853 C335.321861,345.320533 332.952095,337.6462 326.787328,334.390933 C323.624828,332.7127 319.931028,332.653667 316.675761,333.809033 L306.943695,328.6647 L306.943695,287.923267 L340.938461,267.531467 L350.830761,272.760133 C351.682528,276.1166 353.841461,279.118867 357.130461,280.864567 C358.943628,281.817533 360.984495,282.323533 363.033795,282.323533 C367.739595,282.323533 372.023728,279.742933 374.224828,275.5853 C377.488528,269.420533 375.118761,261.7462 368.953995,258.4825 L368.953995,258.4825 Z M290.077028,328.9683 L256.343695,349.2083 L222.610361,328.9683 L222.610361,287.923267 L256.343695,267.683267 L290.077028,287.923267 L290.077028,328.9683 L290.077028,328.9683 Z M332.243695,253.0683 L298.510361,273.3083 L264.777028,253.0683 L264.777028,212.023267 L298.510361,191.783267 L332.243695,212.023267 L332.243695,253.0683 L332.243695,253.0683 Z" id="Shape" fill="#FFFFFF"></path>
  13 + </g>
  14 + </g>
  15 +</svg>
0 \ No newline at end of file 16 \ No newline at end of file
src/assets/icons/covalent.svg 0 → 100644
  1 +++ a/src/assets/icons/covalent.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<svg width="300px" height="69px" viewBox="0 0 300 69" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  3 + <g id="covalent-logo" fill-rule="evenodd">
  4 + <g id="covalent">
  5 + <g id="Group" transform="translate(0.000000, 9.000000)">
  6 + <path d="M25.5,0 L51,14.75 L49.2586371,44.25 L25.5,59 L1.58305719,44.25 L-1.68724468e-15,14.75 L25.5,0 Z M25.5,2.94499165 L48.4543293,16.2224958 L46.8712721,42.7775042 L25.5,56.0550083 L4.12872794,42.7775042 L2.54567075,16.2224958 L25.5,2.94499165 Z" id="Combined-Shape"></path>
  7 + <path d="M43.9838902,30.195 C43.5069139,29.9442 42.9498056,29.9340667 42.4588381,30.1076 L40.9910231,29.3362 L40.9910231,23.2144 L42.4359432,22.348 C42.6140143,22.4024667 42.7984452,22.4379333 42.9892357,22.4379333 C43.3352025,22.4379333 43.6760815,22.3442 43.9724428,22.1656 C44.4087171,21.9034 44.7165258,21.4879333 44.8399036,20.9964667 C44.9620096,20.5037333 44.8856934,19.9932667 44.6224025,19.5588 C44.1009084,18.6962 42.8722175,18.3896667 42.0034847,18.9115333 C41.5226926,19.2003333 41.2225156,19.669 41.1233045,20.1794667 L39.7190863,21.0218 L34.6313394,17.9830667 L34.6313394,16.306 C35.0192801,15.9576667 35.2673077,15.4598667 35.2673077,14.9 C35.2673077,13.8524667 34.4112943,13 33.3594026,13 C32.307511,13 31.4514975,13.8524667 31.4514975,14.9 C31.4514975,15.4598667 31.6995252,15.9576667 32.0874659,16.306 L32.0874659,17.9830667 L26.9997189,21.0230667 L21.911972,17.9830667 L21.911972,16.306 C22.2999127,15.9576667 22.5479404,15.4598667 22.5479404,14.9 C22.5479404,13.8524667 21.6919269,13 20.6400353,13 C19.5881436,13 18.7321301,13.8524667 18.7321301,14.9 C18.7321301,15.4598667 18.9801578,15.9576667 19.3680985,16.306 L19.3680985,17.9830667 L14.2816235,21.0218 L12.8774053,20.1794667 C12.7781943,19.669 12.4780172,19.1990667 11.9972251,18.9115333 C11.1284923,18.3884 9.90107337,18.6962 9.37830737,19.5575333 C9.11374453,19.992 9.03742833,20.5037333 9.15953425,20.9964667 C9.28291212,21.4879333 9.59072081,21.9034 10.0269951,22.1656 C10.3246283,22.3442 10.6642354,22.4379333 11.0102022,22.4379333 C11.2009927,22.4379333 11.3854235,22.4024667 11.5634947,22.348 L13.0084148,23.2156667 L13.0084148,29.3362 L11.5418718,30.1088667 C11.0509042,29.9353333 10.4937959,29.9442 10.0155477,30.1962667 C9.08576192,30.6864667 8.72961964,31.8378667 9.22058722,32.7638 C9.55256271,33.3882667 10.1987066,33.7758667 10.9084473,33.7758667 C11.2175279,33.7758667 11.5240646,33.6998667 11.798803,33.5554667 C12.2948583,33.2945333 12.6217461,32.8423333 12.7489397,32.3394667 L14.2409215,31.5541333 L19.3680985,34.6169333 L19.3680985,40.7362 L17.9015555,41.5088667 C17.4093159,41.3353333 16.8522076,41.3454667 16.3752314,41.5962667 C15.4454456,42.0864667 15.0893033,43.2378667 15.5802709,44.1638 C15.9122464,44.7882667 16.5583903,45.1758667 17.268131,45.1758667 C17.5772116,45.1758667 17.8837483,45.0998667 18.1584867,44.9554667 C18.654542,44.6945333 18.9814297,44.2423333 19.1086234,43.7394667 L20.6006052,42.9541333 L25.7277822,46.0169333 L25.7277822,47.694 C25.3398415,48.0423333 25.0918138,48.5401333 25.0918138,49.1 C25.0918138,50.1475333 25.9478273,51 26.9997189,51 C28.0516106,51 28.9076241,50.1475333 28.9076241,49.1 C28.9076241,48.5401333 28.6595964,48.0423333 28.2716557,47.694 L28.2716557,46.0169333 L33.3988327,42.9541333 L34.8908145,43.7394667 C35.0192801,44.2436 35.3448959,44.6945333 35.8409512,44.9567333 C36.1144176,45.0998667 36.4222263,45.1758667 36.7313069,45.1758667 C37.4410476,45.1758667 38.0871915,44.7882667 38.419167,44.1638 C38.9114065,43.2378667 38.5539923,42.0852 37.6242065,41.5962667 C37.1472302,41.3442 36.590122,41.3353333 36.0991544,41.5088667 L34.6313394,40.7362 L34.6313394,34.6169333 L39.7585164,31.5541333 L41.2504982,32.3394667 C41.3789638,32.8436 41.7045796,33.2945333 42.2006349,33.5567333 C42.4741013,33.6998667 42.78191,33.7758667 43.0909906,33.7758667 C43.8007313,33.7758667 44.4468752,33.3882667 44.7788507,32.7638 C45.2710902,31.8378667 44.913676,30.6852 43.9838902,30.195 L43.9838902,30.195 Z M32.0874659,40.7818 L26.9997189,43.8218 L21.911972,40.7818 L21.911972,34.6169333 L26.9997189,31.5769333 L32.0874659,34.6169333 L32.0874659,40.7818 L32.0874659,40.7818 Z M38.4471496,29.3818 L33.3594026,32.4218 L28.2716557,29.3818 L28.2716557,23.2169333 L33.3594026,20.1769333 L38.4471496,23.2169333 L38.4471496,29.3818 L38.4471496,29.3818 Z" id="Shape"></path>
  8 + </g>
  9 + <path d="M104.851302,49.3254817 C104.384155,54.2729874 102.558065,58.1321964 99.372975,60.9032243 C96.1878855,63.6742522 91.95178,65.0597453 86.6645313,65.0597453 C82.9698275,65.0597453 79.7157765,64.1838588 76.9022807,62.4320596 C74.088785,60.6802604 71.9176482,58.1906194 70.3888052,54.963062 C68.8599622,51.7355046 68.0637018,47.9877721 68,43.7197522 L68,39.3880521 C68,35.0138624 68.7750268,31.1599619 70.3251037,27.8262349 C71.8751806,24.4925078 74.0994015,21.9232408 76.9978329,20.1183567 C79.8962644,18.3134727 83.2458667,17.4110442 87.0467402,17.4110442 C92.1641174,17.4110442 96.283438,18.8018457 99.4048258,21.5834906 C102.526214,24.3651354 104.341687,28.2933536 104.851302,33.3682629 L96.8249161,33.3682629 C96.4427054,30.0345359 95.4712677,27.6298294 93.9105738,26.1540712 C92.3498799,24.6783131 90.0619583,23.9404451 87.0467402,23.9404451 C83.5431417,23.9404451 80.8517814,25.2197702 78.9725786,27.7784588 C77.0933758,30.3371473 76.1325548,34.0901882 76.090087,39.037694 L76.090087,43.1464389 C76.090087,48.1576464 76.9872071,51.9796965 78.7814742,54.6127039 C80.5757413,57.2457112 83.2034007,58.5621952 86.6645313,58.5621952 C89.8283869,58.5621952 92.2065515,57.8508692 93.7990962,56.4281959 C95.391641,55.0055225 96.4002375,52.6379748 96.8249161,49.3254817 L104.851302,49.3254817 Z M106.758688,46.872975 C106.758688,43.4967801 107.427547,40.4550652 108.765284,37.7477391 C110.103022,35.040413 111.982197,32.9595191 114.402865,31.5049949 C116.823533,30.0504707 119.605136,29.3232195 122.747758,29.3232195 C127.397988,29.3232195 131.172263,30.8201891 134.070694,33.8141732 C136.969126,36.8081574 138.535105,40.7788428 138.768678,45.7263485 L138.800529,47.5418405 C138.800529,50.9392693 138.147595,53.9756758 136.841708,56.651151 C135.535822,59.3266262 133.667264,61.3969034 131.235979,62.8620445 C128.804694,64.3271857 125.996549,65.0597453 122.811459,65.0597453 C117.948889,65.0597453 114.05783,63.4406824 111.138164,60.2025081 C108.218499,56.9643337 106.758688,52.6486021 106.758688,47.2551839 L106.758688,46.872975 Z M114.498417,47.5418405 C114.498417,51.0879068 115.230977,53.8642016 116.696118,55.870808 C118.161259,57.8774144 120.199686,58.8807025 122.811459,58.8807025 C125.423232,58.8807025 127.456351,57.8614892 128.910875,55.8230319 C130.365399,53.7845746 131.09265,50.8012521 131.09265,46.872975 C131.09265,43.3906105 130.344166,40.630241 128.847174,38.5917837 C127.350181,36.5533264 125.317063,35.534113 122.747758,35.534113 C120.22092,35.534113 118.214344,36.5374011 116.727968,38.5440075 C115.241593,40.550614 114.498417,43.5498616 114.498417,47.5418405 L114.498417,47.5418405 Z M153.92597,54.6127039 L161.219789,29.9602342 L169.214324,29.9602342 L157.270298,64.4227306 L150.549792,64.4227306 L138.510214,29.9602342 L146.5366,29.9602342 L153.92597,54.6127039 Z M191.060271,64.4227306 C190.720528,63.7644788 190.423257,62.6921814 190.16845,61.2058063 C187.705314,63.7751118 184.690142,65.0597453 181.122841,65.0597453 C177.661711,65.0597453 174.83764,64.0723824 172.650545,62.0976269 C170.463451,60.1228714 169.36992,57.681006 169.36992,54.7719576 C169.36992,51.0984876 170.734179,48.2797257 173.462739,46.3155871 C176.191299,44.3514486 180.092975,43.3693941 185.167885,43.3693941 L189.913644,43.3693941 L189.913644,41.1079918 C189.913644,39.3243417 189.414655,37.8963813 188.41666,36.8240678 C187.418665,35.7517543 185.900462,35.2156056 183.862005,35.2156056 C182.099588,35.2156056 180.655703,35.6562031 179.530304,36.5374112 C178.404906,37.4186193 177.842215,38.5386923 177.842215,39.8976638 L170.102487,39.8976638 C170.102487,38.007844 170.728878,36.2401459 171.98168,34.5945163 C173.234482,32.9488867 174.938479,31.6589448 177.093723,30.7246518 C179.248967,29.7903589 181.653674,29.3232195 184.307915,29.3232195 C188.342362,29.3232195 191.559254,30.3371244 193.958688,32.3649647 C196.358122,34.3928051 197.589671,37.2434175 197.653373,40.9168874 L197.653373,56.4600466 C197.653373,59.5602004 198.088662,62.0339162 198.959253,63.8812681 L198.959253,64.4227306 L191.060271,64.4227306 Z M182.556124,58.8488518 C184.084967,58.8488518 185.523545,58.4772636 186.871899,57.734076 C188.220254,56.9908885 189.234159,55.9929087 189.913644,54.7401068 L189.913644,48.2425567 L185.741198,48.2425567 C182.874617,48.2425567 180.719406,48.7415466 179.275499,49.7395413 C177.831591,50.737536 177.109649,52.1495712 177.109649,53.9756892 C177.109649,55.4620643 177.60333,56.6458381 178.590708,57.5270462 C179.578085,58.4082543 180.899878,58.8488518 182.556124,58.8488518 L182.556124,58.8488518 Z M210.899622,64.4227306 L203.159893,64.4227306 L203.159893,15.5 L210.899622,15.5 L210.899622,64.4227306 Z M231.407838,65.0597453 C226.5028,65.0597453 222.526806,63.5150001 219.479737,60.4254632 C216.432668,57.3359264 214.909157,53.2219141 214.909157,48.083303 L214.909157,47.1277809 C214.909157,43.6878842 215.572707,40.6143189 216.899828,37.9069928 C218.226948,35.1996667 220.090198,33.0922308 222.489632,31.5846217 C224.889066,30.0770127 227.564501,29.3232195 230.516017,29.3232195 C235.208716,29.3232195 238.834355,30.8201891 241.393044,33.8141732 C243.951732,36.8081574 245.231057,41.0442629 245.231057,46.5226169 L245.231057,49.6439891 L222.712587,49.6439891 C222.94616,52.4893357 223.896364,54.7400986 225.563228,56.3963451 C227.230091,58.0525917 229.326911,58.8807025 231.853748,58.8807025 C235.399815,58.8807025 238.287586,57.4474337 240.517149,54.5808532 L244.689595,58.5621952 C243.309389,60.6218864 241.467374,62.2197157 239.163492,63.3557309 C236.859611,64.4917462 234.274419,65.0597453 231.407838,65.0597453 L231.407838,65.0597453 Z M230.484167,35.534113 C228.360774,35.534113 226.646159,36.2772894 225.340273,37.7636645 C224.034386,39.2500396 223.200967,41.3203168 222.83999,43.974558 L237.586881,43.974558 L237.586881,43.4012448 C237.417009,40.8107053 236.726917,38.8519046 235.516583,37.524784 C234.306249,36.1976634 232.628794,35.534113 230.484167,35.534113 L230.484167,35.534113 Z M255.324083,29.9602342 L255.547038,33.9415762 C258.09511,30.8626563 261.439404,29.3232195 265.58002,29.3232195 C272.757088,29.3232195 276.40927,33.4319233 276.536673,41.6494543 L276.536673,64.4227306 L268.796944,64.4227306 L268.796944,42.0953646 C268.796944,39.9082698 268.324497,38.2892069 267.379587,37.2381274 C266.434677,36.1870478 264.889931,35.6615159 262.745305,35.6615159 C259.623917,35.6615159 257.298836,37.0735511 255.769993,39.8976638 L255.769993,64.4227306 L248.030264,64.4227306 L248.030264,29.9602342 L255.324083,29.9602342 Z M291.0251,21.5834906 L291.0251,29.9602342 L297.108591,29.9602342 L297.108591,35.6933667 L291.0251,35.6933667 L291.0251,54.9312113 C291.0251,56.2477149 291.285212,57.1979191 291.805443,57.7818521 C292.325675,58.3657852 293.254645,58.6577474 294.592383,58.6577474 C295.484208,58.6577474 296.386636,58.5515793 297.299695,58.33924 L297.299695,64.3271784 C295.537279,64.8155588 293.83859,65.0597453 292.203578,65.0597453 C286.258077,65.0597453 283.285372,61.7791523 283.285372,55.2178679 L283.285372,35.6933667 L277.615941,35.6933667 L277.615941,29.9602342 L283.285372,29.9602342 L283.285372,21.5834906 L291.0251,21.5834906 Z" id="Covalent"></path>
  10 + </g>
  11 + </g>
  12 +</svg>
0 \ No newline at end of file 13 \ No newline at end of file
src/assets/icons/github.svg 0 → 100644
  1 +++ a/src/assets/icons/github.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<svg width="256px" height="250px" viewBox="0 0 256 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
  3 + <g>
  4 + <path d="M128.00106,0 C57.3172926,0 0,57.3066942 0,128.00106 C0,184.555281 36.6761997,232.535542 87.534937,249.460899 C93.9320223,250.645779 96.280588,246.684165 96.280588,243.303333 C96.280588,240.251045 96.1618878,230.167899 96.106777,219.472176 C60.4967585,227.215235 52.9826207,204.369712 52.9826207,204.369712 C47.1599584,189.574598 38.770408,185.640538 38.770408,185.640538 C27.1568785,177.696113 39.6458206,177.859325 39.6458206,177.859325 C52.4993419,178.762293 59.267365,191.04987 59.267365,191.04987 C70.6837675,210.618423 89.2115753,204.961093 96.5158685,201.690482 C97.6647155,193.417512 100.981959,187.77078 104.642583,184.574357 C76.211799,181.33766 46.324819,170.362144 46.324819,121.315702 C46.324819,107.340889 51.3250588,95.9223682 59.5132437,86.9583937 C58.1842268,83.7344152 53.8029229,70.715562 60.7532354,53.0843636 C60.7532354,53.0843636 71.5019501,49.6441813 95.9626412,66.2049595 C106.172967,63.368876 117.123047,61.9465949 128.00106,61.8978432 C138.879073,61.9465949 149.837632,63.368876 160.067033,66.2049595 C184.49805,49.6441813 195.231926,53.0843636 195.231926,53.0843636 C202.199197,70.715562 197.815773,83.7344152 196.486756,86.9583937 C204.694018,95.9223682 209.660343,107.340889 209.660343,121.315702 C209.660343,170.478725 179.716133,181.303747 151.213281,184.472614 C155.80443,188.444828 159.895342,196.234518 159.895342,208.176593 C159.895342,225.303317 159.746968,239.087361 159.746968,243.303333 C159.746968,246.709601 162.05102,250.70089 168.53925,249.443941 C219.370432,232.499507 256,184.536204 256,128.00106 C256,57.3066942 198.691187,0 128.00106,0 Z M47.9405593,182.340212 C47.6586465,182.976105 46.6581745,183.166873 45.7467277,182.730227 C44.8183235,182.312656 44.2968914,181.445722 44.5978808,180.80771 C44.8734344,180.152739 45.876026,179.97045 46.8023103,180.409216 C47.7328342,180.826786 48.2627451,181.702199 47.9405593,182.340212 Z M54.2367892,187.958254 C53.6263318,188.524199 52.4329723,188.261363 51.6232682,187.366874 C50.7860088,186.474504 50.6291553,185.281144 51.2480912,184.70672 C51.8776254,184.140775 53.0349512,184.405731 53.8743302,185.298101 C54.7115892,186.201069 54.8748019,187.38595 54.2367892,187.958254 Z M58.5562413,195.146347 C57.7719732,195.691096 56.4895886,195.180261 55.6968417,194.042013 C54.9125733,192.903764 54.9125733,191.538713 55.713799,190.991845 C56.5086651,190.444977 57.7719732,190.936735 58.5753181,192.066505 C59.3574669,193.22383 59.3574669,194.58888 58.5562413,195.146347 Z M65.8613592,203.471174 C65.1597571,204.244846 63.6654083,204.03712 62.5716717,202.981538 C61.4524999,201.94927 61.1409122,200.484596 61.8446341,199.710926 C62.5547146,198.935137 64.0575422,199.15346 65.1597571,200.200564 C66.2704506,201.230712 66.6095936,202.705984 65.8613592,203.471174 Z M75.3025151,206.281542 C74.9930474,207.284134 73.553809,207.739857 72.1039724,207.313809 C70.6562556,206.875043 69.7087748,205.700761 70.0012857,204.687571 C70.302275,203.678621 71.7478721,203.20382 73.2083069,203.659543 C74.6539041,204.09619 75.6035048,205.261994 75.3025151,206.281542 Z M86.046947,207.473627 C86.0829806,208.529209 84.8535871,209.404622 83.3316829,209.4237 C81.8013,209.457614 80.563428,208.603398 80.5464708,207.564772 C80.5464708,206.498591 81.7483088,205.631657 83.2786917,205.606221 C84.8005962,205.576546 86.046947,206.424403 86.046947,207.473627 Z M96.6021471,207.069023 C96.7844366,208.099171 95.7267341,209.156872 94.215428,209.438785 C92.7295577,209.710099 91.3539086,209.074206 91.1652603,208.052538 C90.9808515,206.996955 92.0576306,205.939253 93.5413813,205.66582 C95.054807,205.402984 96.4092596,206.021919 96.6021471,207.069023 Z"></path>
  5 + </g>
  6 +</svg>
0 \ No newline at end of file 7 \ No newline at end of file
src/assets/icons/listener.svg 0 → 100644
  1 +++ a/src/assets/icons/listener.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<svg width="198px" height="146px" viewBox="0 0 198 146" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
  3 + <!-- Generator: Sketch 3.3.2 (12043) - http://www.bohemiancoding.com/sketch -->
  4 + <title>listener</title>
  5 + <desc>Created with Sketch.</desc>
  6 + <defs></defs>
  7 + <g id="listener">
  8 + <g id="listener" sketch:type="MSLayerGroup" transform="translate(-2.000000, 0.000000)">
  9 + <path d="M90.3234043,47.5323404 C98.7405957,49.9764681 105.981532,50.6430511 110.190128,50.7998936 L110.190128,15.8109574 L90.3234043,34.6320638 L90.3234043,47.5323617 L90.3234043,47.5323404 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  10 + <path d="M90.3234043,98.6238298 L90.3234043,113.053319 L110.190128,131.874426 L110.190128,95.421617 C105.968451,95.5653894 98.7275745,96.2188979 90.3234043,98.623817 L90.3234043,98.6238298 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  11 + <path d="M188.821277,65.0595745 L135.547234,65.0595745 L135.547234,81.1359149 L188.821277,81.1359149 L188.821277,89.788383 L199.15983,73.2153617 L188.821277,56.067234 L188.821277,65.0595319 L188.821277,65.0595745 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  12 + <path d="M132.774468,14.2425532 L132.774468,130.044681 L113.064596,131.874511 L113.064596,12.1515319 L132.774468,14.242766 L132.774468,14.2425532 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  13 + <path d="M175.489362,83.4365957 L175.489362,87.1616043 L135.546809,87.1616043 L135.546809,100.885306 L175.489362,100.885306 L175.489362,110.583391 L185.827915,94.0103702 L179.44966,83.436583 L175.489387,83.436583 L175.489362,83.4365957 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  14 + <path d="M175.489362,62.746383 L175.489362,59.0213745 L135.546809,59.0213745 L135.546809,45.2976723 L175.489362,45.2976723 L175.489362,35.5995872 L185.827915,52.1726085 L179.44966,62.7463957 L175.489387,62.7463957 L175.489362,62.746383 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  15 + <path d="M2.65106383,86.3378723 C3.76202979,96.7286809 6.11466809,105.472638 9.10774468,112.791957 C14.4011915,106.413702 27.2361277,93.6310213 48.2399574,88.6120851 C77.9746809,81.5018723 104.154426,82.1292766 110.192723,82.4037447 L110.192723,76.5613617 C103.827532,76.4175894 75.2822128,75.9470638 48.7629362,78.9532085 C27.3016596,81.3711957 10.5064255,84.6518043 2.65144681,86.3378894 L2.65106383,86.3378723 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  16 + <path d="M110.191489,87.24 C103.342681,87.6190362 71.2030638,89.9586043 51.8982979,100.519319 C36.3578298,109.028043 24.6861277,123.248426 19.3011915,130.646128 C27.7837447,141.612043 36.2140426,145.729149 36.2140426,145.729149 C36.2140426,145.729149 43.2719574,124.816809 64.4457021,108.609745 C85.6194468,92.4026809 110.191234,93.1868936 110.191234,93.1868936 L110.191234,87.2399574 L110.191489,87.24 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  17 + <path d="M48.2382979,57.5965957 C27.2083404,52.5645532 14.3603404,39.7557447 9.07995745,33.3905532 C6.07380851,40.775234 3.69502128,49.6237447 2.61021277,60.1583404 C10.4523404,61.8443957 27.2606383,65.1380851 48.7612766,67.5691489 C75.2807234,70.5622255 103.825957,70.1047702 110.191064,69.9609957 L110.191064,63.8049106 C104.152638,64.0663149 77.9730213,64.7067532 48.2382979,57.5965702 L48.2382979,57.5965957 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  18 + <path d="M19.2638298,15.5106383 C24.6357021,22.8953191 36.3335319,37.1679574 51.9001277,45.6766809 C71.2048085,56.2504681 103.344383,58.5769787 110.193319,58.956 L110.193319,52.9306383 C110.193319,52.9306383 85.6213191,53.7148511 64.4477872,37.5077872 C43.2740426,21.3007234 36.2161277,0.388382979 36.2161277,0.388382979 C36.2161277,0.388382979 27.772766,4.51856596 19.2640851,15.5105957 L19.2638298,15.5106383 Z" id="Shape" sketch:type="MSShapeGroup"></path>
  19 + </g>
  20 + </g>
  21 +</svg>
src/assets/icons/querygrid.svg 0 → 100644
  1 +++ a/src/assets/icons/querygrid.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<svg width="397px" height="398px" viewBox="0 0 397 398" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
  3 + <!-- Generator: Sketch 3.4.2 (15855) - http://www.bohemiancoding.com/sketch -->
  4 + <title>querygrid</title>
  5 + <desc>Created with Sketch.</desc>
  6 + <defs></defs>
  7 + <g id="Page-1" stroke="none" stroke-width="1" fill-rule="evenodd" sketch:type="MSPage">
  8 + <g id="uda-querygrid" sketch:type="MSArtboardGroup" transform="translate(-326.000000, -293.000000)">
  9 + <g id="querygrid" sketch:type="MSLayerGroup" transform="translate(524.000000, 492.000000) rotate(-315.000000) translate(-524.000000, -492.000000) translate(244.000000, 212.000000)">
  10 + <path d="M400.208153,120.587878 L400.416306,120.379726 L280.208153,0.171572875 L160,120.379726 L160.208153,120.587878 L160.208153,120.379726 L400.208153,120.379726 L400.208153,120.587878 Z" id="Rectangle-2" sketch:type="MSShapeGroup"></path>
  11 + <path d="M180.379726,340 L180.587878,339.791847 L60.3797257,219.583694 L-59.8284271,339.791847 L-59.6202743,340 L-59.6202743,339.791847 L180.379726,339.791847 L180.379726,340 Z" id="Rectangle-2" sketch:type="MSShapeGroup" transform="translate(60.379726, 279.791847) rotate(-90.000000) translate(-60.379726, -279.791847) "></path>
  12 + <path d="M618.913168,340.123412 L619.12132,339.91526 L498.913168,219.707107 L378.705015,339.91526 L378.913168,340.123412 L378.913168,339.91526 L618.913168,339.91526 L618.913168,340.123412 Z" id="Rectangle-2" sketch:type="MSShapeGroup" transform="translate(498.913168, 279.915260) rotate(-270.000000) translate(-498.913168, -279.915260) "></path>
  13 + <path d="M400.791847,559.828427 L401,559.620274 L280.791847,439.412122 L160.583694,559.620274 L160.791847,559.828427 L160.791847,559.620274 L400.791847,559.620274 L400.791847,559.828427 Z" id="Rectangle-2" sketch:type="MSShapeGroup" transform="translate(280.791847, 499.620274) rotate(-180.000000) translate(-280.791847, -499.620274) "></path>
  14 + <path d="M185.763158,380.5 L180.5,380.5 L180.5,180.5 L185.763158,180.5 L380.5,180.5 L380.5,185.763158 L380.5,375.236842 L380.5,380.5 L185.763158,380.5 Z M191.026316,369.973684 L191.026316,191.026316 L369.973684,191.026316 L369.973684,369.973684 L191.026316,369.973684 Z" id="Rectangle-1" sketch:type="MSShapeGroup"></path>
  15 + <path d="M292.644972,364 C294.579533,349.229336 298.737053,339.391905 300.795145,335.230858 C317.143809,329.072337 330.036866,315.863084 335.767635,299.309779 C340.454145,297.164349 350.702718,293.018831 363.87594,290.910651 L363.87594,267.338712 C349.174245,265.397182 339.380244,261.257179 335.230858,259.204855 C329.221663,243.252597 316.499509,230.590402 300.507933,224.661807 C298.474486,220.290093 294.272272,210.165136 292.054522,197 L268.219654,197 C266.301436,210.721777 262.492489,220.038456 260.421348,224.326182 C243.897325,230.136974 230.740329,243.096085 224.661807,259.492067 C220.290093,261.525514 210.165136,265.727728 197,267.945478 L197,291.780346 C210.721777,293.698564 220.038456,297.507511 224.326182,299.578652 C230.277808,316.503161 243.728454,329.895456 260.690221,335.767635 C262.842381,340.468846 267.007198,350.767072 269.109129,364 L292.644972,364 Z M291.907925,389 C292.8573,402.875933 295.903118,412.910883 298.363085,419 L401,419 L401,433 L161,433 L161,419 L262.172844,419 C264.967855,412.492484 268.660097,401.878342 269.933873,389 L291.907925,389 Z M290.972536,172 C292.149029,158.671381 295.960125,147.675197 298.827156,141 L400,141 L400,127 L160,127 L160,141 L262.636915,141 C265.155588,147.234433 268.288409,157.605278 269.156427,172 L290.972536,172 Z M172,290.843573 C157.605278,291.711591 147.234433,294.844412 141,297.363085 L141,400 L127,400 L127,160 L141,160 L141,261.172844 C147.675197,264.039875 158.671381,267.850971 172,269.027464 L172,290.843573 Z M388.87594,290.053939 C401.810172,291.316195 412.4716,295.023175 419,297.827156 L419,399 L433,399 L433,159 L419,159 L419,261.636915 C412.892751,264.104207 402.816134,267.160845 388.87594,268.1005 L388.87594,290.053939 Z" id="Rectangle-1" sketch:type="MSShapeGroup"></path>
  16 + </g>
  17 + </g>
  18 + </g>
  19 +</svg>
src/assets/icons/teradata-ux.svg 0 → 100644
  1 +++ a/src/assets/icons/teradata-ux.svg
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<svg width="192px" height="32px" viewBox="0 0 192 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  3 + <!-- Generator: Sketch 3.8.3 (29802) - http://www.bohemiancoding.com/sketch -->
  4 + <title>teradata-ux</title>
  5 + <desc>Created with Sketch.</desc>
  6 + <defs>
  7 + <path d="M166.783823,6.80397488 L166.783823,17.4236886 C166.783823,23.2855796 162.031808,28.0375811 156.16702,28.0375811 C150.303522,28.0375811 145.550217,23.2767426 145.550217,17.4236886 L145.550217,6.80397488 L166.783823,6.80397488 Z" id="path-1"></path>
  8 + <mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="25.2336062" height="25.2336062">
  9 + <rect x="143.550217" y="4.80397488" width="25.2336062" height="25.2336062" fill="white"></rect>
  10 + <use xlink:href="#path-1" fill="black"></use>
  11 + </mask>
  12 + <path d="M185.948934,17.420778 L191.253218,6.80397488 L180.493076,6.80397488 L169.732935,6.80397488 L175.037219,17.420778 L169.732935,28.0375811 L180.493076,28.0375811 L191.253218,28.0375811 L185.948934,17.420778 Z" id="path-3"></path>
  13 + <mask id="mask-4" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="25.5202823" height="25.2336062">
  14 + <rect x="167.732935" y="4.80397488" width="25.5202823" height="25.2336062" fill="white"></rect>
  15 + <use xlink:href="#path-3" fill="black"></use>
  16 + </mask>
  17 + </defs>
  18 + <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
  19 + <g id="teradata-ux">
  20 + <path d="M77.2088874,6.69745941 L70.1937732,6.69745941 L70.1937732,25.1487383 C70.1937732,26.5237134 70.9533716,27.233378 72.5619328,27.233378 L77.2088874,27.233378 L77.9684857,27.233378 C83.5537677,27.0116078 86.1453385,24.5721359 86.1453385,18.8061112 L86.1453385,15.3464964 C86.1900208,9.58047174 83.2409919,6.69745941 77.2088874,6.69745941 L77.2088874,6.69745941 Z M82.4367113,18.8061112 C82.4367113,22.9753906 81.0515614,25.0156762 77.3429341,25.0156762 L73.991765,25.0156762 L73.991765,9.00386927 L77.2535696,9.00386927 C81.0515614,9.00386927 82.4367113,11.2215711 82.4367113,15.3908504 L82.4367113,18.8061112 L82.4367113,18.8061112 Z" id="Shape" fill="#F29400"></path>
  21 + <path d="M124.348667,6.4313352 C123.455022,6.4313352 122.650741,6.74181345 122.472012,7.1853538 L114.876029,27.233378 L116.261179,27.233378 C117.780376,27.233378 118.450609,27.1003159 118.942114,25.8584029 L120.64004,21.1568751 L125.19763,21.1568751 L124.527396,18.8948193 L121.354956,18.8948193 L124.169938,10.9554469 L129.263715,25.8140489 C129.710538,27.0559619 130.425454,27.189024 132.078697,27.189024 L133.865988,27.189024 L126.18064,7.14099977 C126.046593,6.74181345 125.19763,6.4313352 124.348667,6.4313352 L124.348667,6.4313352 Z" id="Shape" fill="#F29400"></path>
  22 + <path d="M10.4982796,28.519645 C10.4982796,29.8946202 11.3472425,30.6042847 12.9111214,30.6042847 L14.2962713,30.6042847 L14.2962713,2.57253408 L22.8305822,2.57253408 L23.6348628,0 L0.846912374,0 L0.0426317715,2.57253408 L10.4982796,2.57253408 L10.4982796,28.519645 L10.4982796,28.519645 Z" id="Shape" fill="#F29400"></path>
  23 + <path d="M31.4095753,9.00386927 L32.1244914,6.74181345 L18.6304501,6.74181345 L18.6304501,20.9351049 C18.6304501,25.7253408 19.7475065,27.233378 26.3157981,27.233378 L38.4693717,27.189024 L38.4693717,9.00386927 L41.150307,9.00386927 C44.0546536,9.00386927 45.5291681,10.0240121 45.5291681,11.9755897 L45.5291681,13.7497511 C45.5291681,15.7456827 43.6971956,16.3666392 41.4630828,16.3666392 L39.7651571,16.3666392 L45.4398036,26.035819 C46.0653551,27.1446699 46.3781309,27.233378 47.8973276,27.233378 L51.2038145,27.233378 C52.7230112,27.233378 53.3932451,27.1003159 53.8847499,25.8584029 L55.5826756,21.1568751 L60.1402657,21.1568751 L59.4700318,18.8948193 L56.2975917,18.8948193 L59.1125738,10.9554469 L64.206351,25.8140489 C64.6531735,27.0559619 65.3680896,27.189024 67.0213331,27.189024 L68.8086233,27.189024 L61.0785931,7.14099977 C60.899864,6.69745941 60.0509012,6.38698116 59.2019383,6.38698116 C58.2636109,6.38698116 57.5040126,6.69745941 57.3252836,7.14099977 L50.0867582,26.4793594 L44.635523,18.2738628 C47.4951873,17.7859684 49.1484308,16.2779312 49.1484308,13.7053971 L49.1484308,11.8868816 C49.1484308,8.20549663 45.7078971,6.65310537 41.1056248,6.65310537 L34.7160622,6.65310537 L34.7160622,24.9269681 L26.4051626,24.9269681 C23.143358,24.9269681 22.3837596,24.2173036 22.3837596,20.8463968 L22.3837596,17.298074 L28.5499109,17.298074 L29.2201447,15.0360181 L22.4284419,15.0360181 L22.4284419,9.00386927 L31.4095753,9.00386927 L31.4095753,9.00386927 Z" id="Shape" fill="#F29400"></path>
  24 + <path d="M110.720579,27.277732 L112.105729,27.277732 L112.105729,9.00386927 L118.450609,9.00386927 L119.120843,6.74181345 L101.962857,6.74181345 L101.247941,9.00386927 L108.307737,9.00386927 L108.307737,25.1930924 C108.307737,26.5680675 109.1567,27.277732 110.720579,27.277732 L110.720579,27.277732 Z" id="Shape" fill="#F29400"></path>
  25 + <path d="M95.6179767,6.4313352 C94.6796493,6.4313352 93.920051,6.74181345 93.741322,7.1853538 L86.1453385,27.233378 L87.5751707,27.233378 C89.0943674,27.233378 89.7646012,27.1003159 90.256106,25.8584029 L91.9540317,21.1568751 L96.5116218,21.1568751 L95.841388,18.8948193 L92.6689478,18.8948193 L95.4839299,10.9554469 L100.577707,25.8584029 C101.02453,27.1003159 101.739446,27.233378 103.392689,27.233378 L105.179979,27.233378 L97.4499492,7.1853538 C97.2712202,6.74181345 96.4669396,6.4313352 95.6179767,6.4313352 L95.6179767,6.4313352 Z" id="Shape" fill="#F29400"></path>
  26 + <g id="Combined-Shape">
  27 + <use fill="#F6B500" fill-rule="evenodd" xlink:href="#path-1"></use>
  28 + <use stroke="#FFFFFF" mask="url(#mask-2)" stroke-width="4" xlink:href="#path-1"></use>
  29 + </g>
  30 + <g id="Combined-Shape">
  31 + <use fill="#D8D8D8" fill-rule="evenodd" xlink:href="#path-3"></use>
  32 + <use stroke="#FFFFFF" mask="url(#mask-4)" stroke-width="4" xlink:href="#path-3"></use>
  33 + </g>
  34 + <path d="M177.988195,23.3273109 L169.732935,6.80397488 L180.64465,6.80397488 L183.253245,12.025215 L177.988195,23.3273109 Z" id="Combined-Shape" fill="#F29400"></path>
  35 + <path d="M177.988195,23.3273109 L180.341503,28.0375811 L191.253218,28.0375811 L183.253245,12.025215 L177.988195,23.3273109 Z" id="Combined-Shape" fill="#F6B500"></path>
  36 + <polygon id="Rectangle-9" fill="#F8CC3E" points="191.253218 6.80397488 180.64465 28.0375811 169.732935 28.0375811 180.341503 6.80397488"></polygon>
  37 + <rect id="Rectangle-7" fill="#F8CC3E" x="145.550217" y="6.80397488" width="10.6168031" height="10.6168031"></rect>
  38 + <rect id="Rectangle-7-Copy" fill="#F29400" x="156.16702" y="6.80397488" width="10.6168031" height="10.6168031"></rect>
  39 + </g>
  40 + </g>
  41 +</svg>
0 \ No newline at end of file 42 \ No newline at end of file
src/assets/icons/teradata.svg 0 → 100644
  1 +++ a/src/assets/icons/teradata.svg
  1 +<svg xmlns="http://www.w3.org/2000/svg" id="teradata" width="300" height="69" viewBox="0 0 300 69">
  2 +<path class="st0" d="M172.7 15.1h-15.7v41.6c0 3.1 1.7 4.7 5.3 4.7h10.4l1.7 0c12.5-0.5 18.3-6 18.3-19v-7.8C192.8 21.6 186.2 15.1 172.7 15.1zM184.4 42.4c0 9.4-3.1 14-11.4 14h-7.5V20.3h7.3c8.5 0 11.6 5 11.6 14.4V42.4z"/><path class="st0" d="M278.2 14.5c-2 0-3.8 0.7-4.2 1.7l-17 45.2h3.1c3.4 0 4.9-0.3 6-3.1l3.8-10.6h10.2l-1.5-5.1h-7.1l6.3-17.9 11.4 33.5c1 2.8 2.6 3.1 6.3 3.1h4l-17.2-45.2C282 15.2 280.1 14.5 278.2 14.5z"/><path class="st0" d="M23.4 64.3c0 3.1 1.9 4.7 5.4 4.7h3.1V5.8H51L52.8 0h-51L0 5.8h23.4V64.3z"/><path class="st0" d="M70.2 20.3l1.6-5.1H41.6v32c0 10.8 2.5 14.2 17.2 14.2L86 61.3v-41h6c6.5 0 9.8 2.3 9.8 6.7v4c0 4.5-4.1 5.9-9.1 5.9h-3.8l12.7 21.8c1.4 2.5 2.1 2.7 5.5 2.7h7.4c3.4 0 4.9-0.3 6-3.1l3.8-10.6h10.2l-1.5-5.1h-7.1l6.3-17.9 11.4 33.5c1 2.8 2.6 3.1 6.3 3.1h4l-17.3-45.2c-0.4-1-2.3-1.7-4.2-1.7 -2.1 0-3.8 0.7-4.2 1.7L112 59.7 99.8 41.2c6.4-1.1 10.1-4.5 10.1-10.3v-4.1c0-8.3-7.7-11.8-18-11.8H77.6v41.2H59c-7.3 0-9-1.6-9-9.2V39h13.8l1.5-5.1H50.1V20.3H70.2z"/><path class="st0" d="M247.7 61.5h3.1V20.3h14.2l1.5-5.1h-38.4l-1.6 5.1h15.8v36.5C242.3 59.9 244.2 61.5 247.7 61.5z"/><path class="st0" d="M213.9 14.5c-2.1 0-3.8 0.7-4.2 1.7l-17 45.2h3.2c3.4 0 4.9-0.3 6-3.1l3.8-10.6h10.2l-1.5-5.1h-7.1l6.3-17.9L225 58.3c1 2.8 2.6 3.1 6.3 3.1h4L218 16.2C217.6 15.2 215.8 14.5 213.9 14.5z"/></svg>
src/components/chart/chart.component.html 0 → 100644
  1 +++ a/src/components/chart/chart.component.html
  1 +<div class="chart-container">
  2 + <svg class="chart" viewBox="0 0 600 600" preserveAspectRatio="xMinYMax meet"><g transform="translate(60,20)"><g class="x axis" transform="translate(0,300)"><g class="tick" transform="translate(25,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">JAN</text></g><g class="tick" transform="translate(63,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">FEB</text></g><g class="tick" transform="translate(101,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">MAR</text></g><g class="tick" transform="translate(139,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">APR</text></g><g class="tick" transform="translate(177,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">MAY</text></g><g class="tick" transform="translate(215,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">JUN</text></g><g class="tick" transform="translate(253,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">JUL</text></g><g class="tick" transform="translate(291,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">AUG</text></g><g class="tick" transform="translate(329,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">SEP</text></g><g class="tick" transform="translate(367,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">OCT</text></g><g class="tick" transform="translate(405,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">NOV</text></g><g class="tick" transform="translate(443,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">DEC</text></g><g class="tick" transform="translate(481,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">JAN</text></g><g class="tick" transform="translate(519,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">FEB</text></g><g class="tick" transform="translate(557,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">MAR</text></g><g class="tick" transform="translate(595,0)" style="opacity: 1;"><line y2="6" x2="0"></line><text dy=".71em" y="9" x="0" style="text-anchor: middle;">APR</text></g><path class="domain" d="M0,6V0H620V6" style="display: none;"></path></g><g class="y axis"><g class="tick" transform="translate(0,300)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">0.0</text></g><g class="tick" transform="translate(0,273)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">50K</text></g><g class="tick" transform="translate(0,245)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">100K</text></g><g class="tick" transform="translate(0,218)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">150K</text></g><g class="tick" transform="translate(0,190)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">200K</text></g><g class="tick" transform="translate(0,163)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">250K</text></g><g class="tick" transform="translate(0,135)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">300K</text></g><g class="tick" transform="translate(0,108)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">350K</text></g><g class="tick" transform="translate(0,80)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">400K</text></g><g class="tick" transform="translate(0,53)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">450K</text></g><g class="tick" transform="translate(0,25)" style="opacity: 1;"><line x2="-6" y2="0"></line><text dy=".32em" x="-9" y="0" style="text-anchor: end;">500K</text></g><path class="domain" d="M-6,0H0V300H-6" style="display: none;"></path></g><g class="g" transform="translate(8,0)"><rect width="34" y="134" height="166" class="bar-2"></rect><rect width="34" y="133" height="1" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="36" height="97" class="bar-1"></rect></g><g class="g" transform="translate(46,0)"><rect width="34" y="134" height="166" class="bar-2"></rect><rect width="34" y="133" height="1" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="33" height="100" class="bar-1"></rect></g><g class="g" transform="translate(84,0)"><rect width="34" y="133" height="167" class="bar-2"></rect><rect width="34" y="132" height="1" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="33" height="99" class="bar-1"></rect></g><g class="g" transform="translate(122,0)"><rect width="34" y="140" height="160" class="bar-2"></rect><rect width="34" y="139" height="1" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="39" height="100" class="bar-1"></rect></g><g class="g" transform="translate(160,0)"><rect width="34" y="138" height="162" class="bar-2"></rect><rect width="34" y="137" height="1" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="39" height="98" class="bar-1"></rect></g><g class="g" transform="translate(198,0)"><rect width="34" y="133" height="167" class="bar-2"></rect><rect width="34" y="132" height="1" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="29" height="103" class="bar-1"></rect></g><g class="g" transform="translate(236,0)"><rect width="34" y="136" height="164" class="bar-2"></rect><rect width="34" y="135" height="1" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="28" height="107" class="bar-1"></rect></g><g class="g" transform="translate(274,0)"><rect width="34" y="130" height="170" class="bar-2"></rect><rect width="34" y="130" height="0" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="25" height="105" class="bar-1"></rect></g><g class="g" transform="translate(312,0)"><rect width="34" y="120" height="180" class="bar-2"></rect><rect width="34" y="120" height="0" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="11" height="109" class="bar-1"></rect></g><g class="g" transform="translate(350,0)"><rect width="34" y="125" height="175" class="bar-2"></rect><rect width="34" y="125" height="0" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="13" height="112" class="bar-1"></rect></g><g class="g" transform="translate(388,0)"><rect width="34" y="132" height="168" class="bar-2"></rect><rect width="34" y="132" height="0" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="16" height="116" class="bar-1"></rect></g><g class="g" transform="translate(426,0)"><rect width="34" y="129" height="171" class="bar-2"></rect><rect width="34" y="129" height="0" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="7" height="122" class="bar-1"></rect></g><g class="g" transform="translate(464,0)"><rect width="34" y="127" height="173" class="bar-2"></rect><rect width="34" y="127" height="0" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="0" height="127" class="bar-1"></rect></g><g class="g" transform="translate(502,0)"><rect width="34" y="135" height="165" class="bar-2"></rect><rect width="34" y="135" height="0" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="9" height="126" class="bar-1"></rect></g><g class="g" transform="translate(540,0)"><rect width="34" y="148" height="152" class="bar-2"></rect><rect width="34" y="148" height="0" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="17" height="131" class="bar-1"></rect></g><g class="g" transform="translate(578,0)"><rect width="34" y="149" height="151" class="bar-2"></rect><rect width="34" y="149" height="0" style="fill: rgb(95, 169, 243);"></rect><rect width="34" y="16" height="133" class="bar-1"></rect></g></g></svg>
  3 +</div>
0 \ No newline at end of file 4 \ No newline at end of file
src/components/chart/chart.component.scss 0 → 100644
  1 +++ a/src/components/chart/chart.component.scss
  1 +.chart-container {
  2 + display: inline-block;
  3 + position: relative;
  4 + width: 95%;
  5 + padding-bottom: 55%;
  6 + vertical-align: top;
  7 + overflow: hidden;
  8 +}
  9 +.chart {
  10 + display: inline-block;
  11 + position: absolute;
  12 + top: 0;
  13 + left: 0;
  14 + right: 20px;
  15 + .bar-1 {
  16 + fill: #EF6C00;
  17 + }
  18 + .bar-2 {
  19 + fill: #009688;
  20 + }
  21 + text {
  22 + fill: rgba(0, 0, 0, 0.54);
  23 + font: 10px sans-serif;
  24 + text-anchor: end;
  25 + }
  26 +}
0 \ No newline at end of file 27 \ No newline at end of file
src/components/chart/chart.component.ts 0 → 100644
  1 +++ a/src/components/chart/chart.component.ts
  1 +import { Component } from '@angular/core';
  2 +
  3 +@Component({
  4 + selector: 'qs-chart-component',
  5 + templateUrl: './chart.component.html',
  6 + styleUrls: ['./chart.component.scss'],
  7 +})
  8 +export class ChartComponent {
  9 +
  10 +}
src/config/api.config.ts 0 → 100644
  1 +++ a/src/config/api.config.ts
  1 +export const MOCK_API: string = 'http://localhost:8080';
src/config/interceptors/request.interceptor.ts 0 → 100644
  1 +++ a/src/config/interceptors/request.interceptor.ts
  1 +import { Injectable } from '@angular/core';
  2 +import { RequestOptionsArgs } from '@angular/http';
  3 +import { IHttpInterceptor } from '@covalent/http';
  4 +
  5 +@Injectable()
  6 +export class RequestInterceptor implements IHttpInterceptor {
  7 + onRequest(requestOptions: RequestOptionsArgs): RequestOptionsArgs {
  8 + // you add headers or do something before a request here.
  9 + return requestOptions;
  10 + }
  11 +}
src/data/alerts.json 0 → 100644
  1 +++ a/src/data/alerts.json
  1 +[
  2 + {
  3 + "item_id": "1",
  4 + "name": "Sim Card",
  5 + "description": "sim card expiring",
  6 + "icon": "sim_card",
  7 + "created" : "07/13/2016 11:05 AM"
  8 + },{
  9 + "item_id": "2",
  10 + "name": "Motherboard",
  11 + "description": "board heat nearing critical",
  12 + "icon": "developer_board",
  13 + "created" : "07/01/2016 03:41 PM"
  14 + },{
  15 + "item_id": "3",
  16 + "name": "RAM Usage",
  17 + "description": "exceeded ram capacity",
  18 + "icon": "memory",
  19 + "created" : "06/15/2016 09:02 AM"
  20 + },{
  21 + "item_id": "4",
  22 + "name": "Wireless Signal",
  23 + "description": "interrupted signal strength",
  24 + "icon": "router",
  25 + "created" : "03/23/2016 11:01 PM"
  26 + },{
  27 + "item_id": "5",
  28 + "name": "Battery",
  29 + "description": "battery level unknown",
  30 + "icon": "battery_unknown",
  31 + "created" : "12/23/2015 11:05 AM"
  32 + }
  33 +]
0 \ No newline at end of file 34 \ No newline at end of file
src/data/data.csv 0 → 100644
  1 +++ a/src/data/data.csv
  1 +salesperson,sales
  2 +Bob,33
  3 +Robin,12
  4 +Anne,41
  5 +Mark,16
  6 +Joe,59
  7 +Eve,38
  8 +Karen,21
  9 +Kirsty,25
  10 +Chris,30
  11 +Lisa,47
  12 +Tom,5
  13 +Stacy,20
  14 +Charles,13
  15 +Mary,29
src/data/data.json 0 → 100644
  1 +++ a/src/data/data.json
  1 +[{
  2 + "x": 0,
  3 + "y": 250
  4 +}, {
  5 + "x": 40,
  6 + "y": 170
  7 +}, {
  8 + "x": 80,
  9 + "y": 140
  10 +}, {
  11 + "x": 120,
  12 + "y": 220
  13 +}, {
  14 + "x": 160,
  15 + "y": 220
  16 +}, {
  17 + "x": 200,
  18 + "y": 190
  19 +}, {
  20 + "x": 240,
  21 + "y": 170
  22 +}, {
  23 + "x": 280,
  24 + "y": 140
  25 +}, {
  26 + "x": 320,
  27 + "y": 200
  28 +}, {
  29 + "x": 360,
  30 + "y": 180
  31 +}, {
  32 + "x": 400,
  33 + "y": 190
  34 +}, {
  35 + "x": 440,
  36 + "y": 210
  37 +}, {
  38 + "x": 480,
  39 + "y": 170
  40 +}, {
  41 + "x": 500,
  42 + "y": 200
  43 +}]
0 \ No newline at end of file 44 \ No newline at end of file
src/data/data.tsv 0 → 100644
  1 +++ a/src/data/data.tsv
  1 +col1 col2 col3 col4
  2 +1 63.4 62.7 72.2
  3 +2 58.0 59.9 67.7
  4 +3 53.3 59.1 69.4
  5 +4 55.7 58.8 68.0
  6 +5 64.2 58.7 72.4
  7 +6 58.8 57.0 77.0
  8 +7 57.9 56.7 82.3
  9 +8 61.8 56.8 78.9
src/data/datatime.csv 0 → 100644
  1 +++ a/src/data/datatime.csv
  1 +date,close
  2 +22-Apr-07,63.4
  3 +24-Apr-07,93.24
  4 +25-Apr-07,95.35
  5 +26-Apr-07,98.84
  6 +27-Apr-07,99.92
  7 +30-Apr-07,99.80
  8 +1-May-07,99.47
  9 +2-May-07,100.39
  10 +3-May-07,100.40
  11 +4-May-07,100.81
  12 +7-May-07,103.92
  13 +8-May-07,105.06
  14 +9-May-07,106.88
  15 +10-May-07,107.34
  16 +11-May-07,108.74
  17 +14-May-07,109.36
  18 +15-May-07,107.52
  19 +16-May-07,107.34
  20 +17-May-07,109.44
  21 +18-May-07,110.02
  22 +21-May-07,111.98
  23 +22-May-07,113.54
  24 +23-May-07,112.89
  25 +24-May-07,110.69
  26 +25-May-07,113.62
  27 +29-May-07,114.35
  28 +30-May-07,118.77
  29 +31-May-07,121.19
  30 +1-Jun-07,118.40
  31 +4-Jun-07,121.33
  32 +5-Jun-07,122.67
  33 +6-Jun-07,123.64
  34 +7-Jun-07,124.07
  35 +8-Jun-07,124.49
  36 +11-Jun-07,120.19
  37 +12-Jun-07,120.38
  38 +13-Jun-07,117.50
  39 +14-Jun-07,118.75
  40 +15-Jun-07,120.50
  41 +18-Jun-07,125.09
  42 +19-Jun-07,123.66
  43 +20-Jun-07,121.55
  44 +21-Jun-07,123.90
  45 +22-Jun-07,123.00
  46 +25-Jun-07,122.34
  47 +26-Jun-07,119.65
  48 +27-Jun-07,121.89
  49 +28-Jun-07,120.56
  50 +29-Jun-07,122.04
  51 +2-Jul-07,121.26
  52 +3-Jul-07,127.17
  53 +5-Jul-07,132.75
  54 +6-Jul-07,132.30
  55 +9-Jul-07,130.33
  56 +10-Jul-07,132.35
  57 +11-Jul-07,132.39
  58 +12-Jul-07,134.07
  59 +13-Jul-07,137.73
  60 +16-Jul-07,138.10
  61 +17-Jul-07,138.91
  62 +18-Jul-07,138.12
  63 +19-Jul-07,140.00
  64 +20-Jul-07,143.75
  65 +23-Jul-07,143.70
  66 +24-Jul-07,134.89
  67 +25-Jul-07,137.26
  68 +26-Jul-07,146.00
  69 +27-Jul-07,143.85
  70 +30-Jul-07,141.43
  71 +31-Jul-07,131.76
  72 +1-Aug-07,135.00
  73 +2-Aug-07,136.49
  74 +3-Aug-07,131.85
  75 +6-Aug-07,135.25
  76 +7-Aug-07,135.03
  77 +8-Aug-07,134.01
  78 +9-Aug-07,126.39
  79 +10-Aug-07,125.00
  80 +13-Aug-07,127.79
  81 +14-Aug-07,124.03
  82 +15-Aug-07,119.90
  83 +16-Aug-07,117.05
  84 +17-Aug-07,122.06
  85 +20-Aug-07,122.22
  86 +21-Aug-07,127.57
  87 +22-Aug-07,132.51
  88 +23-Aug-07,131.07
  89 +24-Aug-07,135.30
  90 +27-Aug-07,132.25
  91 +28-Aug-07,126.82
  92 +29-Aug-07,134.08
  93 +30-Aug-07,136.25
  94 +31-Aug-07,138.48
  95 +4-Sep-07,144.16
  96 +5-Sep-07,136.76
  97 +6-Sep-07,135.01
  98 +7-Sep-07,131.77
  99 +10-Sep-07,136.71
  100 +11-Sep-07,135.49
  101 +12-Sep-07,136.85
  102 +13-Sep-07,137.20
  103 +14-Sep-07,138.81
  104 +17-Sep-07,138.41
  105 +18-Sep-07,140.92
  106 +19-Sep-07,140.77
  107 +20-Sep-07,140.31
  108 +21-Sep-07,144.15
  109 +24-Sep-07,148.28
  110 +25-Sep-07,153.18
  111 +26-Sep-07,152.77
  112 +27-Sep-07,154.50
  113 +28-Sep-07,153.47
  114 +1-Oct-07,156.34
  115 +2-Oct-07,158.45
  116 +3-Oct-07,157.92
  117 +4-Oct-07,156.24
  118 +5-Oct-07,161.45
  119 +8-Oct-07,167.91
  120 +9-Oct-07,167.86
  121 +10-Oct-07,166.79
  122 +11-Oct-07,162.23
  123 +12-Oct-07,167.25
  124 +15-Oct-07,166.98
  125 +16-Oct-07,169.58
  126 +17-Oct-07,172.75
  127 +18-Oct-07,173.50
  128 +19-Oct-07,170.42
  129 +22-Oct-07,174.36
  130 +23-Oct-07,186.16
  131 +24-Oct-07,185.93
  132 +25-Oct-07,182.78
  133 +26-Oct-07,184.70
  134 +29-Oct-07,185.09
  135 +30-Oct-07,187.00
  136 +31-Oct-07,189.95
  137 +1-Nov-07,187.44
  138 +2-Nov-07,187.87
  139 +5-Nov-07,186.18
  140 +6-Nov-07,191.79
  141 +7-Nov-07,186.30
  142 +8-Nov-07,175.47
  143 +9-Nov-07,165.37
  144 +12-Nov-07,153.76
  145 +13-Nov-07,169.96
  146 +14-Nov-07,166.11
  147 +15-Nov-07,164.30
  148 +16-Nov-07,166.39
  149 +19-Nov-07,163.95
  150 +20-Nov-07,168.85
  151 +21-Nov-07,168.46
0 \ No newline at end of file 152 \ No newline at end of file
src/data/features.json 0 → 100644
  1 +++ a/src/data/features.json
  1 +[{"created":"7/23/2016 12:05 AM","enabled":0,"icon":"thumb_up","id":"6dc2a966-f278-42f3-917a-e42b316c22ef","modified":"7/23/2016 12:05 AM","title":"Workflows Manager","user":"Carl Davidson"},{"created":"8/23/2016 12:07 AM","enabled":0,"icon":"autorenew","id":"42c3677f-2b93-4ffd-bf51-e161aacc7c56","modified":"8/23/2016 12:07 AM","title":"Workflows Availability","user":"Elizabeth Guerrero"},{"created":"8/23/2016 12:07 AM","enabled":0,"icon":"message","id":"8387b4a2-15a1-431f-a62b-4095dc2590f2","modified":"8/23/2016 12:07 AM","title":"Server Monitor","user":"Danielle Guerrero"},{"created":"8/23/2016 12:09 AM","enabled":0,"icon":"autorenew","id":"d049060d-3fcc-4405-a2e0-bb2f8ee457be","modified":"8/23/2016 12:09 AM","title":"Services Status","user":"Carl Burke"},{"created":"8/17/2016 12:05 AM","enabled":1,"icon":"thumb_up","id":"5faef1c0-f198-4d72-b22a-f27adb5e35e3","modified":"8/17/2016 12:05 AM","title":"Ingest Monitor","user":"Edward Stephens"},{"created":"8/17/2016 12:05 AM","enabled":0,"icon":"account_circle","id":"e10713b5-6679-464f-8dc2-b3cbc5aca57e","modified":"8/17/2016 12:05 AM","title":"Orchestration Monitor","user":"Beverly Guerrero"},{"created":"7/23/2016 12:05 AM","enabled":0,"icon":"message","id":"5d9968d6-082e-4857-bce0-249bc3ef4b3f","modified":"7/23/2016 12:05 AM","title":"Availability Manager","user":"Elizabeth Stephens"},{"created":"8/23/2016 12:09 AM","enabled":0,"icon":"account_balance_wallet","id":"e255297e-1d45-4890-8dd3-be7a2880b7d2","modified":"8/23/2016 12:09 AM","title":"Server Availability","user":"Aaron Obrien"},{"created":"7/23/2016 12:05 AM","enabled":0,"icon":"autorenew","id":"8387b4a2-15a1-431f-a62b-4095dc2590f2","modified":"7/23/2016 12:05 AM","title":"Alerts Availability","user":"Elizabeth Payne"},{"created":"7/23/2016 12:05 AM","enabled":1,"icon":"message","id":"0f0d7ad0-fac8-45f5-bc8f-c46532e5058f","modified":"7/23/2016 12:05 AM","title":"Orchestration Status","user":"Carl Hopkins"},{"created":"7/23/2016 12:05 AM","enabled":0,"icon":"account_circle","id":"67b456d2-6a28-4738-8b79-3b0dcb8e766b","modified":"7/23/2016 12:05 AM","title":"Movement Availability","user":"Danielle Park"},{"created":"8/23/2016 12:09 AM","enabled":0,"icon":"thumb_up","id":"c4a4aad5-9957-438f-af00-bcacc693fa3b","modified":"8/23/2016 12:09 AM","title":"Orchestration Status","user":"Alice Guerrero"}]
0 \ No newline at end of file 2 \ No newline at end of file
src/data/items.json 0 → 100644
  1 +++ a/src/data/items.json
  1 +[
  2 + {
  3 + "item_id": "1",
  4 + "name": "Suzy Cuningham",
  5 + "description": "updated her account",
  6 + "icon": "account_circle",
  7 + "created" : "07/13/2016 11:05 AM"
  8 + },{
  9 + "item_id": "2",
  10 + "name": "Bobby Daniels",
  11 + "description": "made a deposit of $25.15",
  12 + "icon": "account_balance_wallet",
  13 + "created" : "07/01/2016 03:41 PM"
  14 + },{
  15 + "item_id": "3",
  16 + "name": "John Walker",
  17 + "description": "changed refresh settings on their account",
  18 + "icon": "autorenew",
  19 + "created" : "06/15/2016 09:02 AM"
  20 + },{
  21 + "item_id": "4",
  22 + "name": "Eddy Stevens",
  23 + "description": "liked the latest announcements",
  24 + "icon": "thumb_up",
  25 + "created" : "03/23/2016 11:01 PM"
  26 + },{
  27 + "item_id": "5",
  28 + "name": "Jan Williams",
  29 + "description": "sent a personal message to a user",
  30 + "icon": "message",
  31 + "created" : "12/23/2015 11:05 AM"
  32 + }
  33 +]
0 \ No newline at end of file 34 \ No newline at end of file
src/data/products.json 0 → 100644
  1 +++ a/src/data/products.json
  1 +[
  2 + {
  3 + "item_id": "1",
  4 + "name": "Analyze This",
  5 + "description": "product description",
  6 + "icon": "account_balance",
  7 + "color": "pink-A200",
  8 + "category" : "analytics"
  9 + },{
  10 + "item_id": "2",
  11 + "name": "Android Usage",
  12 + "description": "product description",
  13 + "icon": "android",
  14 + "color": "green-700",
  15 + "category" : "analytics"
  16 + },{
  17 + "item_id": "3",
  18 + "name": "Watch Usage",
  19 + "description": "product description",
  20 + "icon": "watch",
  21 + "color": "purple-600",
  22 + "category" : "analytics"
  23 + },{
  24 + "item_id": "4",
  25 + "name": "Customer Sentiment",
  26 + "description": "product description",
  27 + "icon": "face",
  28 + "color": "light-blue-600",
  29 + "category" : "customers"
  30 + },{
  31 + "item_id": "5",
  32 + "name": "Member Retention",
  33 + "description": "product description",
  34 + "icon": "card_membership",
  35 + "color": "orange-700",
  36 + "category" : "customers"
  37 + },{
  38 + "item_id": "6",
  39 + "name": "Rewards Usage",
  40 + "description": "product description",
  41 + "icon": "card_giftcard",
  42 + "color": "indigo-600",
  43 + "category" : "customers"
  44 + }
  45 +]
0 \ No newline at end of file 46 \ No newline at end of file
src/data/users.json 0 → 100644
  1 +++ a/src/data/users.json
  1 +[
  2 + {
  3 + "displayName" : "Suzy Cuningham",
  4 + "id" : "suzy.cuningham",
  5 + "email" : "suzy.cuningham@gmail.com",
  6 + "created" : "10/01/2015 11:05 AM",
  7 + "lastAccess" : "12/23/2015 11:05 AM",
  8 + "siteAdmin": true
  9 + },
  10 + {
  11 + "displayName" : "Bobby Daniels",
  12 + "id" : "bobbyD",
  13 + "email" : "bobbyD@outlook.com",
  14 + "created" : "10/01/2015 11:05 AM",
  15 + "lastAccess" : "12/23/2015 11:05 AM",
  16 + "siteAdmin": false
  17 + },
  18 + {
  19 + "displayName" : "John Walker",
  20 + "id" : "johnnyWalker",
  21 + "email" : "johnnyWalker@blue.com",
  22 + "created" : "10/01/2015 11:05 AM",
  23 + "lastAccess" : "12/23/2015 11:05 AM",
  24 + "siteAdmin": false
  25 + },
  26 + {
  27 + "displayName" : "Eddy Stevens",
  28 + "id" : "eStevens",
  29 + "email" : "eStevens@yahoo.com",
  30 + "created" : "10/01/2015 11:05 AM",
  31 + "lastAccess" : "12/23/2015 11:05 AM",
  32 + "siteAdmin": false
  33 + },
  34 + {
  35 + "displayName" : "Jan Williams",
  36 + "id" : "jDubz",
  37 + "email" : "jDubz@msn.com",
  38 + "created" : "10/01/2015 11:05 AM",
  39 + "lastAccess" : "12/23/2015 11:05 AM",
  40 + "siteAdmin": false
  41 + }
  42 +]
src/environments/environment.prod.ts 0 → 100644
  1 +++ a/src/environments/environment.prod.ts
  1 +export const environment = {
  2 + production: true
  3 +};
src/environments/environment.ts 0 → 100644
  1 +++ a/src/environments/environment.ts
  1 +export const environment = {
  2 + production: false
  3 +};
src/favicon.ico 0 → 100644
No preview for this file type
src/favicon.png 0 → 100644

1.12 KB

src/helpers/editor.component.ts 0 → 100644
  1 +++ a/src/helpers/editor.component.ts
  1 +import { Component, ViewContainerRef, ViewChild, AfterViewInit } from '@angular/core';
  2 +
  3 +import { AgEditorComponent } from 'ag-grid-ng2/main';
  4 +
  5 +@Component({
  6 + selector: 'editor-cell',
  7 + template: `
  8 + <div class="md-select-panel">
  9 + <div #container class="md-select-content">
  10 + <md-option *ngFor="let item of data" (click)="onClick(item[this.params.valueCol])" >
  11 + {{item[this.params.labelCol]}}
  12 + </md-option>
  13 + </div>
  14 + </div>
  15 + `
  16 +})
  17 +export class EditorComponent implements AgEditorComponent, AfterViewInit {
  18 + @ViewChild('container', {read: ViewContainerRef}) public container;
  19 + public item: Object = null;
  20 + public data: Object[];
  21 + private params: any;
  22 + ngAfterViewInit() {
  23 + this.container.element.nativeElement.focus();
  24 + }
  25 +
  26 + agInit(params: any): void {
  27 + this.params = params;
  28 + if (!this.params.valueCol) {
  29 + this.params.valueCol = 'id';
  30 + }
  31 + if (!this.params.labelCol) {
  32 + this.params.labelCol = 'name';
  33 + }
  34 + this.data = params.data || [];
  35 + }
  36 +
  37 + getValue(): any {
  38 + return this.item;
  39 + }
  40 +
  41 + isPopup(): boolean {
  42 + return true;
  43 + }
  44 +
  45 + setValue(item: Object): void {
  46 + this.item = item;
  47 + }
  48 +
  49 + onClick(item: Object) {
  50 + this.setValue(item);
  51 + this.params.api.stopEditing();
  52 + }
  53 +
  54 + onKeyDown(event): boolean {
  55 + event.stopPropagation();
  56 + return false;
  57 + }
  58 +}
src/helpers/renderer.component.ts 0 → 100644
  1 +++ a/src/helpers/renderer.component.ts
  1 +import { Component } from '@angular/core';
  2 +
  3 +import { AgRendererComponent } from 'ag-grid-ng2/main';
  4 +
  5 +import { RegionSelectList } from '../models/region-select-list';
  6 +
  7 +@Component({
  8 + selector: 'render-cell',
  9 + template: `<span *ngIf="this.model !== undefined">{{this.label}}</span>`
  10 +})
  11 +export class RendererComponent implements AgRendererComponent {
  12 + private params: any;
  13 + private valueCol: string = 'id';
  14 + private labelCol: string = 'name';
  15 + private model: Object = null;
  16 + private label: string = null;
  17 + agInit(params: any): void {
  18 + this.params = params;
  19 + if (params.colDef.cellEditorParams && params.colDef.cellEditorParams.valueCol) {
  20 + this.valueCol = params.colDef.cellEditorParams.valueCol;
  21 + }
  22 + if (params.colDef.cellEditorParams && params.colDef.cellEditorParams.labelCol) {
  23 + this.labelCol = params.colDef.cellEditorParams.labelCol;
  24 + }
  25 + this.setValue(params);
  26 + }
  27 + refresh(params: any): void {
  28 + this.params = params;
  29 + this.setValue(params);
  30 + }
  31 + private setValue(params) {
  32 + this.model = params.value;
  33 + let label = this.params.colDef.cellEditorParams.data.find((element, index, array) => {
  34 + if (element[this.valueCol] === params.value) {
  35 + return true;
  36 + }
  37 + });
  38 + if (label) {
  39 + this.label = label[this.labelCol];
  40 + }
  41 + }
  42 +}
src/index.html 0 → 100644
  1 +++ a/src/index.html
  1 +<!doctype html>
  2 +<html>
  3 +<head>
  4 + <meta charset="utf-8">
  5 + <title>Covalent Quickstart</title>
  6 + <base href="/">
  7 + <link rel="icon" type="image/x-icon" href="favicon.ico">
  8 + <link rel="icon" type="image/png" href="favicon.png" sizes="32x32">
  9 + <meta name="theme-color" content="#000000">
  10 + <meta name="viewport" content="width=device-width, initial-scale=1">
  11 +</head>
  12 +<body>
  13 + <qs-app>
  14 + <div style="padding: 20%;text-align:center;">
  15 + <img src="assets/icons/covalent.svg" width="200">
  16 + <div>Quickstart Loading...</div>
  17 + </div>
  18 + </qs-app>
  19 +</body>
  20 +</html>
src/main.ts 0 → 100644
  1 +++ a/src/main.ts
  1 +import './polyfills.ts';
  2 +
  3 +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
  4 +import { enableProdMode } from '@angular/core';
  5 +import { environment } from './environments/environment';
  6 +import { AppModule } from './app/';
  7 +
  8 +if (environment.production) {
  9 + enableProdMode();
  10 +}
  11 +
  12 +platformBrowserDynamic().bootstrapModule(AppModule);
src/models/boolean-select-list.ts 0 → 100644
  1 +++ a/src/models/boolean-select-list.ts
  1 +export class BooleanSelectList {
  2 + value: number;
  3 + label: string;
  4 + }
src/models/bus-stop.ts 0 → 100644
  1 +++ a/src/models/bus-stop.ts
  1 +export class BusStop {
  2 + busStopID: number;
  3 + roadId: number;
  4 + regionId: number;
  5 + settlementId: number;
  6 + locationLeft: string;
  7 + locationRight: string;
  8 + surfaceTypeId: number;
  9 + areaStopAvailability: string;
  10 + areaLandAvailability: string;
  11 + pocketAvailability: string;
  12 + toiletAvailability: string;
  13 + yearBuild: string;
  14 + yearRepair: string;
  15 + stateCommonId: number;
  16 +}
src/models/region-select-list.ts 0 → 100644
  1 +++ a/src/models/region-select-list.ts
  1 +export class RegionSelectList {
  2 + regionId: number;
  3 + name: string;
  4 + }
src/models/road-select-list.ts 0 → 100644
  1 +++ a/src/models/road-select-list.ts
  1 +export class RoadSelectList {
  2 + roadId: number;
  3 + name: string;
  4 +}
src/models/settlement-select-list.ts 0 → 100644
  1 +++ a/src/models/settlement-select-list.ts
  1 +export class SettlementSelectList {
  2 + settlementId: number;
  3 + name: string;
  4 + }
src/models/state-common-select-list.ts 0 → 100644
  1 +++ a/src/models/state-common-select-list.ts
  1 +export class StateCommonSelectList {
  2 + stateCommonId: number;
  3 + value: string;
  4 + }
src/models/surface-type-select-list.ts 0 → 100644
  1 +++ a/src/models/surface-type-select-list.ts
  1 +export class SurfaceTypeSelectList {
  2 + surfaceTypeId: number;
  3 + name: string;
  4 + }
src/polyfills.ts 0 → 100644
  1 +++ a/src/polyfills.ts
  1 +// This file includes polyfills needed by Angular 2 and is loaded before
  2 +// the app. You can add your own extra polyfills to this file.
  3 +import 'core-js/es6/symbol';
  4 +import 'core-js/es6/object';
  5 +import 'core-js/es6/function';
  6 +import 'core-js/es6/parse-int';
  7 +import 'core-js/es6/parse-float';
  8 +import 'core-js/es6/number';
  9 +import 'core-js/es6/math';
  10 +import 'core-js/es6/string';
  11 +import 'core-js/es6/date';
  12 +import 'core-js/es6/array';
  13 +import 'core-js/es6/regexp';
  14 +import 'core-js/es6/map';
  15 +import 'core-js/es6/set';
  16 +import 'core-js/es6/reflect';
  17 +
  18 +import 'core-js/es7/reflect';
  19 +import 'zone.js/dist/zone';
  20 +
  21 +import 'rxjs/Rx';
src/services/boolean-select-list.service.ts 0 → 100644
  1 +++ a/src/services/boolean-select-list.service.ts
  1 +import { Injectable } from '@angular/core';
  2 +
  3 +import { BooleanSelectList } from '../models/boolean-select-list';
  4 +
  5 +@Injectable()
  6 +export class BooleanSelectListService {
  7 + getModels(): Promise<BooleanSelectList[]> {
  8 + let values = [];
  9 + let trueValue = new BooleanSelectList();
  10 + trueValue.value = 1;
  11 + trueValue.label = 'Да';
  12 + let falseValue = new BooleanSelectList();
  13 + falseValue.value = 0;
  14 + falseValue.label = 'Нет';
  15 + values.push(falseValue);
  16 + values.push(trueValue);
  17 + return Promise.resolve(values);
  18 + }
  19 +}
src/services/bus-stop-create.service.ts 0 → 100644
  1 +++ a/src/services/bus-stop-create.service.ts
  1 +import { Injectable } from '@angular/core';
  2 +import { Headers, Http } from '@angular/http';
  3 +
  4 +import 'rxjs/add/operator/toPromise';
  5 +
  6 +@Injectable()
  7 +export class BusStopCreateService {
  8 + private apiUrl = 'http://localhost:5000/busstop/directory';
  9 + private headers = new Headers({'Content-Type': 'applicaton/json'});
  10 + constructor(private http: Http) { }
  11 + getModels(): Promise<any> {
  12 + return this.http.get(this.apiUrl)
  13 + .toPromise()
  14 + .then(response => response.json())
  15 + .catch(this.handleError);
  16 + }
  17 + private handleError(error: any): Promise<any> {
  18 + console.error('An error occured', error);
  19 + return Promise.reject(error.message || error);
  20 + }
  21 +}
src/services/bus-stop.service.ts 0 → 100644
  1 +++ a/src/services/bus-stop.service.ts
  1 +import { Injectable } from '@angular/core';
  2 +import { Headers, Http } from '@angular/http';
  3 +
  4 +import 'rxjs/add/operator/toPromise';
  5 +
  6 +import { BusStop } from '../models/bus-stop';
  7 +
  8 +@Injectable()
  9 +export class BusStopService {
  10 + private url = 'http://localhost:5000/busstop';
  11 + private headers = new Headers({'Content-Type': 'application/json'});
  12 + constructor(private http: Http) { }
  13 + getData(): Promise<BusStop[]> {
  14 + return this.http.get(this.url)
  15 + .toPromise()
  16 + .then(response => response.json().busStopEditDsM as BusStop[])
  17 + .catch(this.handleError);
  18 + }
  19 + update(id: number, data: string): Promise<any> {
  20 + return this.http.post(this.url + '/update?id=' + id, data, { headers: this.headers })
  21 + .toPromise()
  22 + .then(response => response.json())
  23 + .catch(this.handleError);
  24 + }
  25 + create(data: string): Promise<BusStop> {
  26 + return this.http.post(this.url + '/create', data, { headers: this.headers })
  27 + .toPromise()
  28 + .then(response => response.json() as BusStop)
  29 + .catch(this.handleError);
  30 + }
  31 + delete(id: number): Promise<any> {
  32 + return this.http.delete(this.url + '/delete?id=' + id, { headers: this.headers })
  33 + .toPromise()
  34 + .then(response => response.json())
  35 + .catch(this.handleError);
  36 + }
  37 + private handleError(error: any): Promise<any> {
  38 + console.error('An error occured', error);
  39 + return Promise.reject(error.message || error);
  40 + }
  41 +}
src/services/region-select-list.service.ts 0 → 100644
  1 +++ a/src/services/region-select-list.service.ts
  1 +import { Injectable } from '@angular/core';
  2 +import { Headers, Http } from '@angular/http';
  3 +
  4 +import 'rxjs/add/operator/toPromise';
  5 +
  6 +import { RegionSelectList } from '../models/region-select-list';
  7 +
  8 +@Injectable()
  9 +export class RegionSelectListService {
  10 + private apiUrl = 'http://localhost:5000/directory/regionds';
  11 + private headers = new Headers({'Content-Type': 'applicaton/json'});
  12 + constructor(private http: Http) { }
  13 + getModels(): Promise<RegionSelectList[]> {
  14 + return this.http.get(this.apiUrl)
  15 + .toPromise()
  16 + .then(response => response.json().regionSelectListDsM as RegionSelectList[])
  17 + .catch(this.handleError);
  18 + }
  19 + private handleError(error: any): Promise<any> {
  20 + console.error('An error occured', error);
  21 + return Promise.reject(error.message || error);
  22 + }
  23 +}
src/services/road-select-list.service.ts 0 → 100644
  1 +++ a/src/services/road-select-list.service.ts
src/services/settlement-select-list.service.ts 0 → 100644
  1 +++ a/src/services/settlement-select-list.service.ts
src/services/state-common-selectlist.service.ts 0 → 100644
  1 +++ a/src/services/state-common-selectlist.service.ts
  1 +import { Injectable } from '@angular/core';
  2 +import { Headers, Http } from '@angular/http';
  3 +
  4 +import 'rxjs/add/operator/toPromise';
  5 +
  6 +import { StateCommonSelectList } from '../models/state-common-select-list';
  7 +
  8 +@Injectable()
  9 +export class StateCommonSelectListService {
  10 + private apiUrl = 'http://localhost:5000/directory/statecommonds';
  11 + private headers = new Headers({'Content-Type': 'applicaton/json'});
  12 + constructor(private http: Http) { }
  13 + getModels(): Promise<StateCommonSelectList[]> {
  14 + return this.http.get(this.apiUrl)
  15 + .toPromise()
  16 + .then(response => response.json().stateCommonSelectListDsM as StateCommonSelectList[])
  17 + .catch(this.handleError);
  18 + }
  19 + private handleError(error: any): Promise<any> {
  20 + console.error('An error occured', error);
  21 + return Promise.reject(error.message || error);
  22 + }
  23 +}
src/services/surface-type-select-list.service.ts 0 → 100644
  1 +++ a/src/services/surface-type-select-list.service.ts
src/styles.scss 0 → 100644
  1 +++ a/src/styles.scss
  1 +// Custom style for loading elements without height
  2 +.will-load {
  3 + min-height: 80px;
  4 +}
  5 +// Href line height wasn't right for md-icon-button
  6 +a[md-icon-button] {
  7 + line-height: 36px;
  8 +}
  9 +
  10 +// Capitalize
  11 +.text-capital {
  12 + text-transform: capitalize;
  13 +}
0 \ No newline at end of file 14 \ No newline at end of file
src/test.ts 0 → 100644
  1 +++ a/src/test.ts
  1 +import './polyfills.ts';
  2 +
  3 +import 'zone.js/dist/long-stack-trace-zone';
  4 +import 'zone.js/dist/proxy.js';
  5 +import 'zone.js/dist/sync-test';
  6 +import 'zone.js/dist/jasmine-patch';
  7 +import 'zone.js/dist/async-test';
  8 +import 'zone.js/dist/fake-async-test';
  9 +
  10 +// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
  11 +declare var __karma__: any;
  12 +declare var require: any;
  13 +
  14 +// Prevent Karma from running prematurely.
  15 +__karma__.loaded = function (): void { /* noop */ };
  16 +
  17 +Promise.all([
  18 + System.import('@angular/core/testing'),
  19 + System.import('@angular/platform-browser-dynamic/testing'),
  20 +])
  21 + // First, initialize the Angular testing environment.
  22 + .then(([testing, testingBrowser]: any[]) => {
  23 + testing.getTestBed().initTestEnvironment(
  24 + testingBrowser.BrowserDynamicTestingModule,
  25 + testingBrowser.platformBrowserDynamicTesting(),
  26 + );
  27 + })
  28 + // Then we find all the tests.
  29 + .then(() => require.context('./', true, /\.spec\.ts/))
  30 + // And load the modules.
  31 + .then((context: any) => context.keys().map(context))
  32 + // Finally, start Karma to run the tests.
  33 + .then(__karma__.start, __karma__.error);
src/theme.scss 0 → 100644
  1 +++ a/src/theme.scss
  1 +@import '~@angular/material/core/theming/all-theme';
  2 +@import '~@covalent/core/theming/all-theme';
  3 +@import '~@covalent/markdown/markdown-theme';
  4 +@import '~@covalent/charts/charts-theme';
  5 +@import '~@covalent/highlight/highlight-theme';
  6 +// Plus imports for other components in your app.
  7 +
  8 +// Include the base styles for Angular Material core. We include this here so that you only
  9 +// have to load a single css file for Angular Material in your app.
  10 +@include md-core();
  11 +
  12 +// Define the palettes for your theme using the Material Design palettes available in palette.scss
  13 +// (imported above). For each palette, you can optionally specify a default, lighter, and darker
  14 +// hue.
  15 +$primary: md-palette($md-blue, 700);
  16 +$accent: md-palette($md-orange, 800, A100, A400);
  17 +
  18 +// The warn palette is optional (defaults to red).
  19 +$warn: md-palette($md-red, 600);
  20 +
  21 +// Create the theme object (a Sass map containing all of the palettes).
  22 +$theme: md-light-theme($primary, $accent, $warn);
  23 +
  24 +// Include theme styles for core and each component used in your app.
  25 +// Alternatively, you can import and @include the theme mixins for each component
  26 +// that you are using.
  27 +@include angular-material-theme($theme);
  28 +@include covalent-theme($theme);
  29 +@include covalent-markdown-theme($theme);
  30 +@include covalent-charts-theme($theme);
  31 +@include covalent-highlight-theme();
  32 +
  33 +// Active icon color in list nav
  34 +md-nav-list {
  35 + [md-list-item].active {
  36 + md-icon[md-list-avatar] {
  37 + background-color: md-color($accent);
  38 + color: md-color($accent, default-contrast)
  39 + }
  40 + md-icon[md-list-icon] {
  41 + color: md-color($accent);
  42 + }
  43 + }
  44 +}
  45 +
  46 +// Custom theme examples
  47 +.white-orange {
  48 + $primary2: md-palette($md-grey, 50);
  49 + $accent2: md-palette($md-orange, 800);
  50 + $warn2: md-palette($md-red, 600);
  51 +
  52 + $white-orange: md-light-theme($primary2, $accent2, $warn2);
  53 +
  54 + @include angular-material-theme($white-orange);
  55 + @include covalent-theme($white-orange);
  56 +}
  57 +.dark-grey-blue {
  58 + $primary3: md-palette($md-blue-grey, 800);
  59 + $accent3: md-palette($md-teal, 500);
  60 + $warn3: md-palette($md-red, 600);
  61 +
  62 + $dark-grey-blue: md-dark-theme($primary3, $accent3, $warn3);
  63 +
  64 + @include angular-material-theme($dark-grey-blue);
  65 + @include covalent-theme($dark-grey-blue);
  66 +}
  67 +.light-blue-red {
  68 + $primary4: md-palette($md-light-blue, 700);
  69 + $accent4: md-palette($md-red, 700);
  70 + $warn4: md-palette($md-deep-orange, 800);
  71 +
  72 + $light-blue-red: md-light-theme($primary4, $accent4, $warn4);
  73 +
  74 + @include angular-material-theme($light-blue-red);
  75 + @include covalent-theme($light-blue-red);
  76 +}
0 \ No newline at end of file 77 \ No newline at end of file
src/tsconfig.json 0 → 100644
  1 +++ a/src/tsconfig.json
  1 +{
  2 + "compileOnSave": false,
  3 + "compilerOptions": {
  4 + "declaration": false,
  5 + "emitDecoratorMetadata": true,
  6 + "experimentalDecorators": true,
  7 + "lib": ["es6", "dom"],
  8 + "module": "es6",
  9 + "moduleResolution": "node",
  10 + "outDir": "../dist/out-tsc",
  11 + "sourceMap": true,
  12 + "target": "es5",
  13 + "typeRoots": [
  14 + "../node_modules/@types"
  15 + ],
  16 + "types": [
  17 + "jasmine", "hammerjs"
  18 + ],
  19 + "noUnusedParameters": false,
  20 + "noUnusedLocals": false,
  21 + "allowUnreachableCode": false,
  22 + "pretty": true
  23 + },
  24 + "exclude": [
  25 + "**/*.spec.*"
  26 + ]
  27 +}
src/typings.d.ts 0 → 100644
  1 +++ a/src/typings.d.ts
  1 +// Typings reference file, see links for more information
  2 +// https://github.com/typings/typings
  3 +// https://www.typescriptlang.org/docs/handbook/writing-declaration-files.html
  4 +
  5 +declare var System: any;
  6 +declare var require: any;
0 \ No newline at end of file 7 \ No newline at end of file