Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • matefun/Frontend
  • felipe.parodi/Frontend
2 results
Show changes
Showing
with 2487 additions and 1922 deletions
import { NgModule } from '@angular/core'; import { NgModule } from "@angular/core";
import { Routes, RouterModule } from '@angular/router'; import { Routes, RouterModule } from "@angular/router";
import { AuthGuard } from './shared/guards/auth.guard'; import { AuthGuard } from "./shared/guards/auth.guard";
const routes: Routes = [ const routes: Routes = [
{ path: '', loadChildren: './layout/layout.module#LayoutModule', canActivate: [AuthGuard] }, {
{ path: 'login', loadChildren: './login/login.module#LoginModule' }, path: "",
{ path: 'not-found', loadChildren: './not-found/not-found.module#NotFoundModule' }, loadChildren: () =>
{ path: '**', redirectTo: 'not-found' } import("./layout/layout.module").then((m) => m.LayoutModule),
canActivate: [AuthGuard],
},
{
path: "login",
loadChildren: () =>
import("./login/login.module").then((m) => m.LoginModule),
data: {
language:
navigator.language &&
(navigator.language.split("-")[0] == "es" ||
navigator.language.split("-")[0] == "en")
? navigator.language.split("-")[0]
: "es",
},
},
{
path: "es/login",
loadChildren: () =>
import("./login/login.module").then((m) => m.LoginModule),
data: { language: "es" },
},
{
path: "en/login",
loadChildren: () =>
import("./login/login.module").then((m) => m.LoginModule),
data: { language: "en" },
},
{
path: "not-found",
loadChildren: () =>
import("./not-found/not-found.module").then((m) => m.NotFoundModule),
},
{ path: "**", redirectTo: "not-found" },
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forRoot(routes, { useHash: true })], imports: [
exports: [RouterModule] RouterModule.forRoot(routes, {
useHash: true,
relativeLinkResolution: "legacy",
}),
],
exports: [RouterModule],
}) })
export class AppRoutingModule { } export class AppRoutingModule {}
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
import { TestBed, async } from '@angular/core/testing'; import { TestBed, waitForAsync } from "@angular/core/testing";
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from "@angular/router/testing";
import { AppComponent } from './app.component'; import { AppComponent } from "./app.component";
describe('AppComponent', () => { describe("AppComponent", () => {
beforeEach(async(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [RouterTestingModule],
RouterTestingModule declarations: [AppComponent],
],
declarations: [
AppComponent
],
}).compileComponents(); }).compileComponents();
})); }));
it('should create the app', async(() => { it("should create the app", waitForAsync(() => {
const fixture = TestBed.createComponent(AppComponent); const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance; const app = fixture.debugElement.componentInstance;
expect(app).toBeTruthy(); expect(app).toBeTruthy();
})); }));
it(`should have as title 'app works!'`, async(() => { it(`should have as title 'app works!'`, waitForAsync(() => {
const fixture = TestBed.createComponent(AppComponent); const fixture = TestBed.createComponent(AppComponent);
const app = fixture.debugElement.componentInstance; const app = fixture.debugElement.componentInstance;
expect(app.title).toEqual('app works!'); expect(app.title).toEqual("app works!");
})); }));
it('should render title in a h1 tag', async(() => { it("should render title in a h1 tag", waitForAsync(() => {
const fixture = TestBed.createComponent(AppComponent); const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges(); fixture.detectChanges();
const compiled = fixture.debugElement.nativeElement; const compiled = fixture.debugElement.nativeElement;
expect(compiled.querySelector('h1').textContent).toContain('app works!'); expect(compiled.querySelector("h1").textContent).toContain("app works!");
})); }));
}); });
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from "@angular/core";
import { Router } from '@angular/router'; import { Router } from "@angular/router";
import { TranslateService } from "../../node_modules/@ngx-translate/core";
@Component({ @Component({
selector: 'app-root', selector: "app-root",
templateUrl: './app.component.html', templateUrl: "./app.component.html",
styleUrls: ['./app.component.scss'] styleUrls: ["./app.component.scss"],
}) })
export class AppComponent implements OnInit { export class AppComponent implements OnInit {
constructor(public router: Router) { } constructor(public router: Router, public translate: TranslateService) {
ngOnInit() { this.translate.addLangs(["es", "en"]);
//this.router.navigate(['/login']); let currentSession = sessionStorage.getItem("currentUser");
let language = currentSession ? JSON.parse(currentSession).language : "es";
if (language) {
this.translate.setDefaultLang(language);
} else {
this.translate.setDefaultLang("es");
} }
}
ngOnInit() {
//this.router.navigate(['/login']);
}
} }
import { BrowserModule } from '@angular/platform-browser'; import { BrowserModule } from "@angular/platform-browser";
import { NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
import { FormsModule } from '@angular/forms'; import { FormsModule } from "@angular/forms";
import { HttpModule } from '@angular/http'; import { HttpClient, HttpClientModule } from "@angular/common/http";
import { AppRoutingModule } from './app-routing.module'; import { AppRoutingModule } from "./app-routing.module";
import { AppComponent } from './app.component'; import { AppComponent } from "./app.component";
import { AuthGuard } from './shared/guards/auth.guard'; import { AuthGuard } from "./shared/guards/auth.guard";
import { SessionService } from './shared/services/session.service'; import { SessionService } from "./shared/services/session.service";
import { NotificacionService } from './shared/services/notificacion.service'; import { NotificacionService } from "./shared/services/notificacion.service";
import {NotificacionModule} from './notificacion/notificacion.module' import { NotificacionModule } from "./notificacion/notificacion.module";
import { TranslateHttpLoader } from "@ngx-translate/http-loader";
import { TranslateModule, TranslateLoader } from "@ngx-translate/core";
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(
http,
"./assets/i18n/",
".json?cb=" + new Date().getTime()
);
}
@NgModule({ @NgModule({
declarations: [ declarations: [AppComponent],
AppComponent, imports: [
], NotificacionModule,
imports: [ BrowserModule,
NotificacionModule, FormsModule,
BrowserModule, HttpClientModule,
FormsModule, AppRoutingModule,
HttpModule, TranslateModule.forRoot({
AppRoutingModule loader: {
], provide: TranslateLoader,
providers: [AuthGuard, SessionService,NotificacionService], useFactory: HttpLoaderFactory,
bootstrap: [AppComponent] deps: [HttpClient],
},
}),
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
providers: [AuthGuard, SessionService, NotificacionService],
bootstrap: [AppComponent],
}) })
export class AppModule { } export class AppModule {}
import { NgModule } from '@angular/core'; import { NgModule } from "@angular/core";
import { Routes, RouterModule } from '@angular/router'; import { Routes, RouterModule } from "@angular/router";
import { ArchivosComponent } from './archivos.component'; import { ArchivosComponent } from "./archivos.component";
const routes: Routes = [ const routes: Routes = [{ path: "", component: ArchivosComponent }];
{ path: '', component: ArchivosComponent }
];
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [RouterModule.forChild(routes)],
exports: [RouterModule] exports: [RouterModule],
}) })
export class ArchivosRoutingModule { } export class ArchivosRoutingModule {}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
import { NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
import { FormsModule } from '@angular/forms'; import { FormsModule } from "@angular/forms";
import { ArchivosComponent } from './archivos.component'; import { ArchivosComponent } from "./archivos.component";
import { CommonModule } from '@angular/common'; import { CommonModule } from "@angular/common";
import { ArchivosRoutingModule } from './archivos-routing.module'; import { ArchivosRoutingModule } from "./archivos-routing.module";
import { FilterPipe } from '../../shared/pipes/filter.pipe'; import { FilterPipe } from "../../shared/pipes/filter.pipe";
import { ConfirmComponent } from '../../shared/modal/confirm.component'; import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
import { NuevoArchivo } from './nuevoArchivo.component'; import { LtCodemirrorModule } from "lt-codemirror";
import { VerCalificacionComponent } from './verCalificacion.component'; import { NotificacionModule } from "../../notificacion/notificacion.module";
import { CompartirArchivoComponent } from './compartirArchivo.component'; import { I18nModule } from "../../shared/modules/translate/i18n.module";
import { SeleccionarDirectorioMove } from './seleccionarDirectorio.component'; import { TitleCaseModule } from "../../shared/modules/titlecase.module";
import { ConfirmarEliminar } from './confirmarEliminar.component';
import { DialogService } from "ng2-bootstrap-modal";
import { BootstrapModalModule } from 'ng2-bootstrap-modal';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { CodemirrorModule } from 'ng2-codemirror';
import { NotificacionModule } from '../../notificacion/notificacion.module';
@NgModule({ @NgModule({
imports: [CommonModule, ArchivosRoutingModule, FormsModule,BootstrapModalModule, NgbModule, CodemirrorModule,NotificacionModule], imports: [
declarations: [ArchivosComponent, FilterPipe,NuevoArchivo, VerCalificacionComponent, ConfirmComponent, CompartirArchivoComponent,ConfirmarEliminar, SeleccionarDirectorioMove], CommonModule,
entryComponents: [ ArchivosRoutingModule,
NuevoArchivo, FormsModule,
VerCalificacionComponent, NgbModule,
ConfirmComponent, LtCodemirrorModule,
CompartirArchivoComponent, NotificacionModule,
ConfirmarEliminar, I18nModule,
SeleccionarDirectorioMove TitleCaseModule,
], ],
exports: [ArchivosComponent] declarations: [ArchivosComponent, FilterPipe],
exports: [ArchivosComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}) })
export class ArchivosModule {}
export class ArchivosModule { }
import { Component } from '@angular/core';
import { DialogComponent, DialogService } from "ng2-bootstrap-modal";
import { Archivo } from '../../shared/objects/archivo';
import { Grupo } from '../../shared/objects/grupo';
export interface ConfirmModel {
archivo: Archivo;
grupos:any;
parent:any;
}
@Component({
selector: 'confirm',
template: `<div class="modal-dialog" style="margin-top:100px;">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title pull-lefth">Compartir &quot;{{archivo.nombre}}&quot; con:</h6>
<button type="button" class="close" (click)="close()" style="margin-rigth:8px;">&times;</button>
</div>
<div class="modal-body" style="height:350px;overflow-y: scroll;">
<div>
<div class="list-group">
<button *ngFor="let g of grupos" type="button" (click)="seleccionarGrupo(g)" style="cursor:pointer" class="list-group-item list-group-item-action" [ngClass]="{'active':grupo!=undefined && g.grado == grupo.grado && g.grupo == grupo.grupo && g.anio == grupo.anio && g.liceoId == grupo.liceoId}">
<i class="fa fa-group" style="margin-right:10px; font-size: 3em; cursor: pointer;" aria-hidden="true" ></i>
{{g.grado+"°"+g.grupo+" - "+g.anio}}
</button>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" (click)="compartir()">Compartir</button>
</div>
</div>
</div>`
})
export class CompartirArchivoComponent extends DialogComponent<ConfirmModel, boolean> implements ConfirmModel {
archivo: Archivo;
grupos:any;
grupo: Grupo;
parent: any;
constructor(dialogService: DialogService) {
super(dialogService);
}
seleccionarGrupo(grupo){
this.grupo = grupo;
}
compartir(){
if(this.grupo){
this.parent.haskellService.compartirArchivoGrupo(this.grupo, this.archivo.id)
.subscribe(
success => {
this.parent.notifService.success("Archivo compartido");
this.close();
},
error => {
this.parent.notifService.error(error);
});
}else{
this.parent.notifService.error("Seleccione un grupo");
}
}
}
\ No newline at end of file
import { Component } from '@angular/core';
import { DialogComponent, DialogService } from "ng2-bootstrap-modal";
import { Archivo } from '../../shared/objects/archivo';
export interface ConfirmModel {
nombreArchivo:string;
esDirectorio:boolean;
parentContext: any;
}
@Component({
selector: 'confirm',
template: `<div class="modal-dialog" style="margin-top:100px;">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title" *ngIf="!esDirectorio">Eliminar archivo</h6>
<h6 class="modal-title" *ngIf="esDirectorio">Eliminar carpeta</h6>
<button type="button" class="close" (click)="close()" style="margin-left:8px;">&times;</button>
</div>
<div class="modal-body">
<p *ngIf="!esDirectorio">¿Está seguro que desea eliminar el archivo {{nombreArchivo}}?</p>
<p *ngIf="esDirectorio">¿Está seguro que desea eliminar la carpeta {{nombreArchivo}}?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" (click)="close()">Cancelar</button>
<button type="button" class="btn btn-success" (click)="confirmarEliminar()">Eliminar</button>
</div>
</div>
</div>`
})
export class ConfirmarEliminar extends DialogComponent<ConfirmModel, boolean> implements ConfirmModel {
nombreArchivo: string;
esDirectorio: boolean;
parentContext: any;
constructor(dialogService: DialogService) {
super(dialogService);
}
confirmarEliminar(){
var that = this.parentContext;
var directorio = this.parentContext.archivoSeleccionado.directorio;
this.parentContext.archivoSeleccionado.eliminado = true;
if(directorio){
delete this.parentContext.archivoSeleccionado['archivos'];
}
this.parentContext.haskellService.editarArchivo(this.parentContext.archivoSeleccionado.id,this.parentContext.archivoSeleccionado)
.subscribe(
archivo => {
console.log("Archivo eliminado");
if(directorio){
var idDirActual = that.directorioActual.padreId;
}else {
var idDirActual = that.directorioActual.id;
}
that.recargarArchivos(idDirActual);
that.archivoSeleccionado = null;
},
error => {
this.parentContext.notifService.error(error);
});
this.close();
}
}
\ No newline at end of file
/** /**
* This barrel file provides the export for the lazy loaded BlankpageComponent. * This barrel file provides the export for the lazy loaded BlankpageComponent.
*/ */
export * from './archivos.component'; export * from "./archivos.component";
\ No newline at end of file
import { Component } from '@angular/core';
import { DialogComponent, DialogService } from "ng2-bootstrap-modal";
import { Archivo } from '../../shared/objects/archivo';
export interface ConfirmModel {
nombre:string;
descripcion:string;
parentContext: any;
esDirectorio:boolean;
}
@Component({
selector: 'confirm',
template: `<div class="modal-dialog" style="margin-top:100px;">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title" *ngIf="esDirectorio">Nueva carpeta</h6>
<h6 class="modal-title" *ngIf="!esDirectorio">Nuevo archivo</h6>
<button type="button" class="close" (click)="close()" style="margin-left:8px;">&times;</button>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="recipient-name" class="form-control-label">Nombre:</label>
<input type="text" class="form-control" id="recipient-name" [(ngModel)]="nombre" [ngModelOptions]="{standalone: true}" >
</div>
<div class="form-group" *ngIf="esDirectorio">
<label for="message-text" class="form-control-label">Descripción:</label>
<textarea class="form-control" id="message-text" [(ngModel)]="descripcion" [ngModelOptions]="{standalone: true}" ></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success" (click)="confirm()">Crear</button>
</div>
</div>
</div>`
})
export class NuevoArchivo extends DialogComponent<ConfirmModel, boolean> implements ConfirmModel {
nombre: string;
esDirectorio: boolean;
descripcion: string;
parentContext: any;
constructor(dialogService: DialogService) {
super(dialogService);
}
confirm() {
var nombre = this.nombre;
var desc = this.descripcion;
var archivo : Archivo;
archivo = new Archivo();
archivo.cedulaCreador = this.parentContext.directorioActual.cedulaCreador;
if(this.esDirectorio){
archivo.contenido = desc;
} else {
archivo.contenido = '';
}
archivo.directorio = this.esDirectorio;
archivo.editable = true;
archivo.fechaCreacion = new Date();
archivo.nombre = nombre;
archivo.padreId = this.parentContext.directorioActual.id;
var that = this.parentContext;
var regex = /^[A-Z]/
if(regex.test(nombre)){
this.parentContext.haskellService.crearArchivo(archivo).subscribe(
archivo => {
var id = that.directorioActual.id;
that.recargarArchivos(id);
},
error => {
this.parentContext.notifService.error(error);
});
this.close();
}else{
alert("Nombre de archivo debe iniciar con mayusula.")
}
}
}
\ No newline at end of file
import { Component } from '@angular/core';
import { DialogComponent, DialogService } from "ng2-bootstrap-modal";
import { Archivo } from '../../shared/objects/archivo';
export interface ConfirmModel {
directorio: boolean;
archivos:any;
directorioActual:any;
parent:any;
nombre:string;
}
@Component({
selector: 'confirm',
template: `<div class="modal-dialog" style="margin-top:100px;">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title pull-lefth">¿Dónde quieres mover el archivo?</h6>
<button type="button" class="close" (click)="close()" style="margin-rigth:8px;">&times;</button>
</div>
<div class="modal-body" style="height:350px;overflow-y: scroll;">
<div>
<div class="list-group" >
<button *ngFor="let arch of directorioActual.archivos" type="button" (click)="navToDir(arch)" style="cursor:pointer" class="list-group-item list-group-item-action">
<i *ngIf="arch.directorio" class="fa fa-folder" style="margin-right:10px; font-size: 3em; cursor: pointer;" aria-hidden="true" ></i>
<i *ngIf="!arch.directorio" class="fa fa-file-text" style="margin-right:10px;font-size: 3em; cursor: pointer;" aria-hidden="true"></i>
{{arch.nombre}}
</button>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" (click)="navBack()">Atras</button>
<button type="button" class="btn btn-primary" (click)="move()">Mover aquí</button>
</div>
</div>
</div>`
})
export class SeleccionarDirectorioMove extends DialogComponent<ConfirmModel, boolean> implements ConfirmModel {
directorio: boolean;
archivos:any;
directorioActual:any;
parent:any;
nombre:string;
constructor(dialogService: DialogService) {
super(dialogService);
}
move() {
// we set dialog result as true on click on confirm button,
// then we can get dialog result from caller code
var that = this;
if(this.nombre!==undefined && this.nombre!==""){
this.parent.archivoSeleccionado.padreId = this.directorioActual.id;
if(this.parent.archivoSeleccionado.directorio){
delete this.parent.archivoSeleccionado['archivos'];
}
this.parent.haskellService.editarArchivo(this.parent.archivoSeleccionado.id,this.parent.archivoSeleccionado)
.subscribe(
archivo => {
that.parent.recargarArchivos(this.directorioActual.id);
that.parent.archivoSeleccionado = null;
},
error => {
this.parent.notifService.error(error);
});
}
this.close();
}
navToDir(arch){
if(arch.directorio){
this.directorioActual = arch;
}
}
navBack(){
var idPadre = this.directorioActual.padreId;
var archivosList = this.parent.sessionService.getArchivosList();
var nuevoDirectorioActual = archivosList.filter(function(a){return a.id===idPadre})[0];
this.directorioActual=nuevoDirectorioActual;
}
}
\ No newline at end of file
import { Component } from '@angular/core';
import { DialogComponent, DialogService } from "ng2-bootstrap-modal";
import { Archivo, Evaluacion } from '../../shared/objects/archivo';
export interface ConfirmModel {
archivo: Archivo;
}
@Component({
selector: 'confirm',
template: `<div class="modal-dialog" style="margin-top:100px;">
<div class="modal-content">
<div class="modal-header">
<h6 class="modal-title pull-lefth">Calificación &quot;{{archivo.nombre}}&quot;:</h6>
<button type="button" class="close" (click)="close()" style="margin-rigth:8px;">&times;</button>
</div>
<div class="modal-body">
<div>
<label><b>Fecha: </b></label>&nbsp; {{archivo.evaluacion.fecha | date}}<br>
<label><b>Nota (1-100): </b></label>&nbsp; {{archivo.evaluacion.nota}}<br>
<label><b>Detalle: </b></label>&nbsp; {{archivo.evaluacion.descripcion}}
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" (click)="close()">Cerrar</button>
</div>
</div>
</div>`
})
export class VerCalificacionComponent extends DialogComponent<ConfirmModel, boolean> implements ConfirmModel {
archivo: Archivo;
constructor(dialogService: DialogService) {
super(dialogService);
}
}
\ No newline at end of file
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
<div class="form-group"> <div class="form-group">
<label> <label>
<input type="checkbox" style="width: 15px; display: inline-block;" name="evaluacionVertical" class="form-control form-control-sm" [checked]=evaluacionVertical (click)="mostrarEvaluacionVertical()"> <input type="checkbox" style="width: 15px; display: inline-block;" name="evaluacionVertical" class="form-control form-control-sm" [checked]=evaluacionVertical (click)="mostrarEvaluacionVertical()">
Evaluacion Evaluacions
</label> </label>
<br> <br>
<label> <label>
...@@ -41,7 +41,11 @@ ...@@ -41,7 +41,11 @@
<button class="btn btn-sm btn-secondary" data-placement="bottom" *ngIf="!animando && elementosAnimacion.length>0" style=" float:left; margin-top: -5px; margin-right: 5px" (click)="play()" ><i class="fa fa-play"></i></button> <button class="btn btn-sm btn-secondary" data-placement="bottom" *ngIf="!animando && elementosAnimacion.length>0" style=" float:left; margin-top: -5px; margin-right: 5px" (click)="play()" ><i class="fa fa-play"></i></button>
<button class="btn btn-sm btn-secondary" data-placement="bottom" *ngIf="animando && elementosAnimacion.length>0" style=" float:left; margin-top: -5px; margin-right: 5px" (click)="pause()" ><i class="fa fa-pause"></i></button> <button class="btn btn-sm btn-secondary" data-placement="bottom" *ngIf="animando && elementosAnimacion.length>0" style=" float:left; margin-top: -5px; margin-right: 5px" (click)="pause()" ><i class="fa fa-pause"></i></button>
<ngb-progressbar style="float: none" *ngIf="elementosAnimacion.length>0" type="info" [value]="((frameAnimacion+1)/elementosAnimacion.length)*100"></ngb-progressbar>
<ngb-progressbar style="float: left; width: 45%" *ngIf="elementosAnimacion.length>0" type="info" [value]="((frameAnimacion+1)/elementosAnimacion.length)*100"></ngb-progressbar>
<span style="float: right; margin-left: 10px" *ngIf="elementosAnimacion.length>0"> {{timer}}ms</span>
<input style="float: right; width: 20%" *ngIf="elementosAnimacion.length>0" type="range" min="40" max="1500" [value]="timer" (input)="timer = $event.target.value" />
<canvas #canvasElement width="2000" height="2000" style="max-width: 100%;" (mousemove)="moveGraph($event)" (touchmove)="moveGraph($event)" (touchstart)="moveGraph($event)" (touchend)="moveGraph($event)" (mouseleave)="leaveCanvas($event)" (mousewheel)="zoomGraph($event)" (DOMMouseScroll)="zoomGraph($event)" id="myCanvas"> <canvas #canvasElement width="2000" height="2000" style="max-width: 100%;" (mousemove)="moveGraph($event)" (touchmove)="moveGraph($event)" (touchstart)="moveGraph($event)" (touchend)="moveGraph($event)" (mouseleave)="leaveCanvas($event)" (mousewheel)="zoomGraph($event)" (DOMMouseScroll)="zoomGraph($event)" id="myCanvas">
</canvas> </canvas>
......
This diff is collapsed.
import { NgModule} from '@angular/core'; import { NgModule } from "@angular/core";
import { CommonModule } from '@angular/common' import { CommonModule } from "@angular/common";
import { RouterModule } from '@angular/router'; import { RouterModule } from "@angular/router";
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
import { FormsModule } from '@angular/forms'; import { FormsModule } from "@angular/forms";
import { CanvasComponent } from './canvas.component'; import { CanvasComponent } from "./canvas.component";
@NgModule({ @NgModule({
imports: [FormsModule, RouterModule, CommonModule, NgbModule], imports: [FormsModule, RouterModule, CommonModule, NgbModule],
declarations: [CanvasComponent], declarations: [CanvasComponent],
exports: [CanvasComponent] exports: [CanvasComponent],
}) })
export class CanvasModule {}
export class CanvasModule { }
import { Route } from '@angular/router'; import { Route } from "@angular/router";
import { CanvasComponent } from './index'; import { CanvasComponent } from "./index";
export const CanvasRoutes: Route[] = [ export const CanvasRoutes: Route[] = [
{ {
path: 'canvas', path: "canvas",
component: CanvasComponent component: CanvasComponent,
} },
]; ];