From fb4d06506f086a72bfe27c270904bc141cebb923 Mon Sep 17 00:00:00 2001 From: David Dorchies <david.dorchies@irstea.fr> Date: Mon, 15 May 2017 16:16:19 +0200 Subject: [PATCH] Initial commit with Lechapt & Calmon --- .angular-cli.json | 57 ---------------- README.md | 39 ++++++----- e2e/app.e2e-spec.ts | 14 ---- e2e/app.po.ts | 11 ---- e2e/tsconfig.e2e.json | 12 ---- jalhyd_class_diagram.png | Bin 0 -> 15492 bytes karma.conf.js | 93 ++++++++++++++++++--------- package.json | 37 +++-------- protractor.conf.js | 30 --------- src/app/app.component.css | 0 src/app/app.component.html | 3 - src/app/app.component.spec.ts | 32 --------- src/app/app.component.ts | 10 --- src/app/app.module.ts | 20 ------ src/assets/.gitkeep | 0 src/base.spec.ts | 24 +++++++ src/base.ts | 93 +++++++++++++++++++++++++++ src/environments/environment.prod.ts | 3 - src/environments/environment.ts | 8 --- src/favicon.ico | Bin 5430 -> 0 bytes src/index.html | 14 ---- src/lechaptcalmon.ts | 53 +++++++++++++++ src/main.ts | 11 ---- src/polyfills.ts | 72 --------------------- src/styles.css | 1 - src/test.ts | 32 --------- src/typings.d.ts | 5 -- 27 files changed, 267 insertions(+), 407 deletions(-) delete mode 100644 .angular-cli.json delete mode 100644 e2e/app.e2e-spec.ts delete mode 100644 e2e/app.po.ts delete mode 100644 e2e/tsconfig.e2e.json create mode 100644 jalhyd_class_diagram.png delete mode 100644 protractor.conf.js delete mode 100644 src/app/app.component.css delete mode 100644 src/app/app.component.html delete mode 100644 src/app/app.component.spec.ts delete mode 100644 src/app/app.component.ts delete mode 100644 src/app/app.module.ts delete mode 100644 src/assets/.gitkeep create mode 100644 src/base.spec.ts create mode 100644 src/base.ts delete mode 100644 src/environments/environment.prod.ts delete mode 100644 src/environments/environment.ts delete mode 100644 src/favicon.ico delete mode 100644 src/index.html create mode 100644 src/lechaptcalmon.ts delete mode 100644 src/main.ts delete mode 100644 src/polyfills.ts delete mode 100644 src/styles.css delete mode 100644 src/test.ts delete mode 100644 src/typings.d.ts diff --git a/.angular-cli.json b/.angular-cli.json deleted file mode 100644 index f395bd87..00000000 --- a/.angular-cli.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "project": { - "name": "ja-lhyd" - }, - "apps": [ - { - "root": "src", - "outDir": "dist", - "assets": [ - "assets", - "favicon.ico" - ], - "index": "index.html", - "main": "main.ts", - "polyfills": "polyfills.ts", - "test": "test.ts", - "tsconfig": "tsconfig.app.json", - "testTsconfig": "tsconfig.spec.json", - "prefix": "app", - "styles": [ - "styles.css" - ], - "scripts": [], - "environmentSource": "environments/environment.ts", - "environments": { - "dev": "environments/environment.ts", - "prod": "environments/environment.prod.ts" - } - } - ], - "e2e": { - "protractor": { - "config": "./protractor.conf.js" - } - }, - "lint": [ - { - "project": "src/tsconfig.app.json" - }, - { - "project": "src/tsconfig.spec.json" - }, - { - "project": "e2e/tsconfig.e2e.json" - } - ], - "test": { - "karma": { - "config": "./karma.conf.js" - } - }, - "defaults": { - "styleExt": "css", - "component": {} - } -} diff --git a/README.md b/README.md index 0505c17b..42876c12 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,37 @@ -# JaLHyd +# JaLHyd : Javascript Library For Hydraulics -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.0.3. +## All the things to know for developping the library -## Development server +The library needs nodeJS installed and the following node packages installed globally: typescript, karma, tslint. This can be done by the command line: -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. +`npm install -g typescript karma tslint` -## Code scaffolding +Then, you can install the necessary packages of the library: +`npm install` -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|module`. -## Build +### For compiling the typescript code -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. +`npm build` -## Running unit tests -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). +### For compiling and testing the code with karma -## Running end-to-end tests +`npm test` -Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). -Before running the tests make sure you are serving the app via `ng serve`. -## Further help +### For flagging suspicious language usage -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). +`npm lint` + + +### UML visualisation + +The tsviz package can be used for drawing class diagram of the current code. + +For installing tsviz: `npm install -g tsviz` + +There's currently a bug on debian like distribution due to a wrong declaration of graphviz path in the code: https://github.com/joaompneves/tsviz/issues/5 +To work around, you can create a link to the good path: `sudo ln -s /usr/bin/dot /usr/local/bin/dot` + +For drawing the diagram: `npm viz` diff --git a/e2e/app.e2e-spec.ts b/e2e/app.e2e-spec.ts deleted file mode 100644 index 0435d1cb..00000000 --- a/e2e/app.e2e-spec.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { JaLHydPage } from './app.po'; - -describe('ja-lhyd App', () => { - let page: JaLHydPage; - - beforeEach(() => { - page = new JaLHydPage(); - }); - - it('should display message saying app works', () => { - page.navigateTo(); - expect(page.getParagraphText()).toEqual('app works!'); - }); -}); diff --git a/e2e/app.po.ts b/e2e/app.po.ts deleted file mode 100644 index 88fc2dfc..00000000 --- a/e2e/app.po.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { browser, by, element } from 'protractor'; - -export class JaLHydPage { - navigateTo() { - return browser.get('/'); - } - - getParagraphText() { - return element(by.css('app-root h1')).getText(); - } -} diff --git a/e2e/tsconfig.e2e.json b/e2e/tsconfig.e2e.json deleted file mode 100644 index e2a9a2fc..00000000 --- a/e2e/tsconfig.e2e.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../tsconfig.json", - "compilerOptions": { - "outDir": "../out-tsc/e2e", - "module": "commonjs", - "target": "es5", - "types": [ - "jasmine", - "node" - ] - } -} diff --git a/jalhyd_class_diagram.png b/jalhyd_class_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..5fe2266aaecfcdaaf8fcc17b5d45e0316643235b GIT binary patch literal 15492 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 C<Y@8$ literal 0 HcmV?d00001 diff --git a/karma.conf.js b/karma.conf.js index 84b4cd5a..0cd2a217 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,44 +1,77 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/0.13/config/configuration-file.html +// Karma configuration +// Generated on Sun May 14 2017 18:49:28 GMT+0200 (CEST) module.exports = function (config) { config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) basePath: '', - frameworks: ['jasmine', '@angular/cli'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage-istanbul-reporter'), - require('@angular/cli/plugins/karma') - ], - client:{ - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, + + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ['jasmine', 'karma-typescript'], + + + // list of files / patterns to load in the browser files: [ - { pattern: './src/test.ts', watched: false } + { pattern: 'dist/out-tsc/**/*.spec.js', included: false } ], + + + // list of files to exclude + exclude: [ + ], + + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor preprocessors: { - './src/test.ts': ['@angular/cli'] + 'src/**/*.spec.ts': ['karma-typescript'] }, - mime: { - 'text/x-typescript': ['ts','tsx'] - }, - coverageIstanbulReporter: { - reports: [ 'html', 'lcovonly' ], - fixWebpackSourcePaths: true - }, - angularCli: { - environment: 'dev' + + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ['progress', 'karma-typescript'], + + // https://github.com/monounity/karma-typescript/blob/master/cookbook.md#user-content-importing-es2015-aka-es6-modules + karmaTypescriptConfig: { + bundlerOptions: { + transforms: [require("karma-typescript-es6-transform")()] + } }, - reporters: config.angularCli && config.angularCli.codeCoverage - ? ['progress', 'coverage-istanbul'] - : ['progress', 'kjhtml'], + + + // web server port port: 9876, + + + // enable / disable colors in the output (reporters and logs) colors: true, + + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG logLevel: config.LOG_INFO, + + + // enable / disable watching file and executing tests whenever any file changes autoWatch: true, + + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher browsers: ['Chrome'], - singleRun: false - }); -}; + + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: false, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity + }) +} diff --git a/package.json b/package.json index 0ff00c32..c1f0a0b9 100644 --- a/package.json +++ b/package.json @@ -1,44 +1,27 @@ { - "name": "ja-lhyd", - "version": "0.0.0", + "name": "jalhyd", + "version": "0.0.1", "license": "MIT", "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e" + "build": "tsc --p src/tsconfig.app.json", + "test": "./node_modules/karma/bin/karma start", + "lint": "./node_modules/tslint/bin/tslint", + "viz": "tsviz -recursive src/ jalhyd_class_diagram.png" }, "private": true, - "dependencies": { - "@angular/common": "^4.0.0", - "@angular/compiler": "^4.0.0", - "@angular/core": "^4.0.0", - "@angular/forms": "^4.0.0", - "@angular/http": "^4.0.0", - "@angular/platform-browser": "^4.0.0", - "@angular/platform-browser-dynamic": "^4.0.0", - "@angular/router": "^4.0.0", - "core-js": "^2.4.1", - "rxjs": "^5.1.0", - "zone.js": "^0.8.4" - }, + "dependencies": {}, "devDependencies": { - "@angular/cli": "1.0.3", - "@angular/compiler-cli": "^4.0.0", "@types/jasmine": "2.5.38", "@types/node": "~6.0.60", - "codelyzer": "~2.0.0", "jasmine-core": "~2.5.2", "jasmine-spec-reporter": "~3.2.0", "karma": "~1.4.1", "karma-chrome-launcher": "~2.1.1", - "karma-cli": "~1.0.1", + "karma-coverage-istanbul-reporter": "^0.2.0", "karma-jasmine": "~1.1.0", "karma-jasmine-html-reporter": "^0.2.2", - "karma-coverage-istanbul-reporter": "^0.2.0", - "protractor": "~5.1.0", + "karma-typescript": "^3.0.1", + "karma-typescript-es6-transform": "^1.0.0", "ts-node": "~2.0.0", "tslint": "~4.5.0", "typescript": "~2.2.0" diff --git a/protractor.conf.js b/protractor.conf.js deleted file mode 100644 index 1c5e1e5a..00000000 --- a/protractor.conf.js +++ /dev/null @@ -1,30 +0,0 @@ -// Protractor configuration file, see link for more information -// https://github.com/angular/protractor/blob/master/lib/config.ts - -const { SpecReporter } = require('jasmine-spec-reporter'); - -exports.config = { - allScriptsTimeout: 11000, - specs: [ - './e2e/**/*.e2e-spec.ts' - ], - capabilities: { - 'browserName': 'chrome' - }, - directConnect: true, - baseUrl: 'http://localhost:4200/', - framework: 'jasmine', - jasmineNodeOpts: { - showColors: true, - defaultTimeoutInterval: 30000, - print: function() {} - }, - beforeLaunch: function() { - require('ts-node').register({ - project: 'e2e/tsconfig.e2e.json' - }); - }, - onPrepare() { - jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); - } -}; diff --git a/src/app/app.component.css b/src/app/app.component.css deleted file mode 100644 index e69de29b..00000000 diff --git a/src/app/app.component.html b/src/app/app.component.html deleted file mode 100644 index b6931b53..00000000 --- a/src/app/app.component.html +++ /dev/null @@ -1,3 +0,0 @@ -<h1> - {{title}} -</h1> diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts deleted file mode 100644 index c740bcd7..00000000 --- a/src/app/app.component.spec.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { TestBed, async } from '@angular/core/testing'; - -import { AppComponent } from './app.component'; - -describe('AppComponent', () => { - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [ - AppComponent - ], - }).compileComponents(); - })); - - it('should create the app', async(() => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.debugElement.componentInstance; - expect(app).toBeTruthy(); - })); - - it(`should have as title 'app works!'`, async(() => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('app works!'); - })); - - it('should render title in a h1 tag', async(() => { - const fixture = TestBed.createComponent(AppComponent); - fixture.detectChanges(); - const compiled = fixture.debugElement.nativeElement; - expect(compiled.querySelector('h1').textContent).toContain('app works!'); - })); -}); diff --git a/src/app/app.component.ts b/src/app/app.component.ts deleted file mode 100644 index ff63e050..00000000 --- a/src/app/app.component.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Component } from '@angular/core'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent { - title = 'app works!'; -} diff --git a/src/app/app.module.ts b/src/app/app.module.ts deleted file mode 100644 index 67ae4911..00000000 --- a/src/app/app.module.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { HttpModule } from '@angular/http'; - -import { AppComponent } from './app.component'; - -@NgModule({ - declarations: [ - AppComponent - ], - imports: [ - BrowserModule, - FormsModule, - HttpModule - ], - providers: [], - bootstrap: [AppComponent] -}) -export class AppModule { } diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/src/base.spec.ts b/src/base.spec.ts new file mode 100644 index 00000000..10316147 --- /dev/null +++ b/src/base.spec.ts @@ -0,0 +1,24 @@ +import { Nub, Result } from "base"; + +class NubTest extends Nub { + Equation(): Result { + let res: Result = new Result(); + res.varCalc = this.v["A"] + this.v["B"]; + return res; + } +} +let nub = new NubTest({ "A": 1, "B": 2, "C": null }); +let res = new Result; + +describe('Class Nub: ', () => { + beforeEach(() => { + nub.sVarsEq = ["C"]; + res.varCalc = 3; + }); + describe('Calc(): ', () => { + it('should return a result', () => { + expect(nub.Calc("C")).toBe(res); + }); + }); +}); + diff --git a/src/base.ts b/src/base.ts new file mode 100644 index 00000000..584799be --- /dev/null +++ b/src/base.ts @@ -0,0 +1,93 @@ + + +/** + * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...) + */ +export class Result { + public varCalc: number; + public extraVar: {}; /** @todo Comment définit-on un objet dont on ne connait pas le nom des clés mais dont on connait le type ? */ +} + +/** + * Série de valeurs à calculer définie par le nom de la variable à sérier et le vecteur de valeur + */ +export class Serie { + public name: string; + public values: number[]; + + constructor(name: string, values: number[]) { + this.name = name; + this.values = values; + } +} + + +export interface IParametres { + [key: string]: number; +} + + + +/** + * Classe abstraite de Noeud de calcul : classe de base pour tous les calculs + */ +export abstract class Nub { + /// Nom des variables calculées par la méthode Equation + private _varsEq: string[]; + + public v: IParametres; + + constructor(parametres: IParametres) { + this.v = parametres; + } + + + /** + * Formule utilisée pour le calcul analytique (solution directe ou méthode de résolution spécifique) + */ + abstract Equation(sVarCalc: string): Result; + + + /** + * Calcul d'une équation quelque soit l'inconnue à calculer + */ + Calc(sVarCalc: string): Result { + for(let sVarEq of this._varsEq) { + if(sVarCalc == sVarEq) { + return this.Equation(sVarCalc); + } + } + return this.Solve(sVarCalc); + } + + + CalcSerie(svarCalc: string, serie: Serie): Result[] { + /** @todo faire une boucle pour appeler this.Calc avec chaque valeur de serie.values + * + */ + let results = [new (Result)]; + return results; + } + + get sVarsEq(): string[] { + return this._varsEq; + } + + set sVarsEq(sVarsEq: string[]) { + this._varsEq = sVarsEq; + } + + AddVarEq(sVarEq: string) { + this._varsEq.push(sVarEq); + } + + + /** + * Résoud l'équation par une méthode numérique + */ + Solve(sVarCalc: string): Result { + let res: Result; + /** @todo Résolution par méthode numérique (dichotomie...) */ + return res; + } +} diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/src/environments/environment.ts b/src/environments/environment.ts deleted file mode 100644 index b7f639ae..00000000 --- a/src/environments/environment.ts +++ /dev/null @@ -1,8 +0,0 @@ -// The file contents for the current environment will overwrite these during build. -// The build system defaults to the dev environment which uses `environment.ts`, but if you do -// `ng build --env=prod` then `environment.prod.ts` will be used instead. -// The list of which env maps to which file can be found in `.angular-cli.json`. - -export const environment = { - production: false -}; diff --git a/src/favicon.ico b/src/favicon.ico deleted file mode 100644 index 8081c7ceaf2be08bf59010158c586170d9d2d517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5430 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 diff --git a/src/index.html b/src/index.html deleted file mode 100644 index 12cbbb4a..00000000 --- a/src/index.html +++ /dev/null @@ -1,14 +0,0 @@ -<!doctype html> -<html> -<head> - <meta charset="utf-8"> - <title>JaLHyd</title> - <base href="/"> - - <meta name="viewport" content="width=device-width, initial-scale=1"> - <link rel="icon" type="image/x-icon" href="favicon.ico"> -</head> -<body> - <app-root>Loading...</app-root> -</body> -</html> diff --git a/src/lechaptcalmon.ts b/src/lechaptcalmon.ts new file mode 100644 index 00000000..8827a3dd --- /dev/null +++ b/src/lechaptcalmon.ts @@ -0,0 +1,53 @@ +import { Nub, Result, IParametres } from "base"; + + +interface IParamLechaptCalmon extends IParametres { + /** Débit */ + Q: number; + /** Diamètre */ + D: number; + /** Perte de charge */ + J: number; + /** Longueur de la conduite */ + Lg: number; + /** Paramètre de rugosité L */ + L: number; + /** Paramètre de rugosité M */ + M: number; + /** Paramètre de rugosité N */ + N: number; +} + + +class LechaptCalmon extends Nub { + + + constructor(parametres: IParamLechaptCalmon) { + super(parametres); + this.AddVarEq("Q"); + this.AddVarEq("D"); + this.AddVarEq("J"); + this.AddVarEq("Lg"); + + } + + Equation(sVarCalc: string): Result { + let res: Result; + + switch (sVarCalc) { + case "Q": + res.varCalc = Math.pow((((this.v.J * Math.pow(this.v.D, this.v.N)) / this.v.L) * (1000 / this.v.Lg)), 1 / this.v.M); + break; + case "D": + res.varCalc = Math.pow((((this.v.L * Math.pow(this.v.Q, this.v.M)) / this.v.J) * (this.v.Lg / 1000)), 1 / this.v.N); + break; + case "J": + res.varCalc = ((this.v.L * Math.pow(this.v.Q, this.v.M)) / Math.pow(this.v.D, this.v.N)) * (this.v.Lg / 1000); + break; + case "Lg": + res.varCalc = ((this.v.J * Math.pow(this.v.D, this.v.N)) / (this.v.L * Math.pow(this.v.Q, this.v.M))) * 1000; + } + + return res; + } +} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index a9ca1caf..00000000 --- a/src/main.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/src/polyfills.ts b/src/polyfills.ts deleted file mode 100644 index bc94e7a6..00000000 --- a/src/polyfills.ts +++ /dev/null @@ -1,72 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** IE9, IE10 and IE11 requires all of the following polyfills. **/ -// import 'core-js/es6/symbol'; -// import 'core-js/es6/object'; -// import 'core-js/es6/function'; -// import 'core-js/es6/parse-int'; -// import 'core-js/es6/parse-float'; -// import 'core-js/es6/number'; -// import 'core-js/es6/math'; -// import 'core-js/es6/string'; -// import 'core-js/es6/date'; -// import 'core-js/es6/array'; -// import 'core-js/es6/regexp'; -// import 'core-js/es6/map'; -// import 'core-js/es6/set'; - -/** IE10 and IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** IE10 and IE11 requires the following to support `@angular/animation`. */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - - -/** Evergreen browsers require these. **/ -import 'core-js/es6/reflect'; -import 'core-js/es7/reflect'; - - -/** ALL Firefox browsers require the following to support `@angular/animation`. **/ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - - - -/*************************************************************************************************** - * Zone JS is required by Angular itself. - */ -import 'zone.js/dist/zone'; // Included with Angular CLI. - - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ - -/** - * Date, currency, decimal and percent pipes. - * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 - */ -// import 'intl'; // Run `npm install --save intl`. -/** - * Need to import at least one locale-data with intl. - */ -// import 'intl/locale-data/jsonp/en'; diff --git a/src/styles.css b/src/styles.css deleted file mode 100644 index 90d4ee00..00000000 --- a/src/styles.css +++ /dev/null @@ -1 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ diff --git a/src/test.ts b/src/test.ts deleted file mode 100644 index 9bf72267..00000000 --- a/src/test.ts +++ /dev/null @@ -1,32 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/long-stack-trace-zone'; -import 'zone.js/dist/proxy.js'; -import 'zone.js/dist/sync-test'; -import 'zone.js/dist/jasmine-patch'; -import 'zone.js/dist/async-test'; -import 'zone.js/dist/fake-async-test'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. -declare var __karma__: any; -declare var require: any; - -// Prevent Karma from running prematurely. -__karma__.loaded = function () {}; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); -// Then we find all the tests. -const context = require.context('./', true, /\.spec\.ts$/); -// And load the modules. -context.keys().map(context); -// Finally, start Karma to run the tests. -__karma__.start(); diff --git a/src/typings.d.ts b/src/typings.d.ts deleted file mode 100644 index ef5c7bd6..00000000 --- a/src/typings.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -/* SystemJS module definition */ -declare var module: NodeModule; -interface NodeModule { - id: string; -} -- GitLab