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