Compare commits

...

15 Commits

17 changed files with 147 additions and 54 deletions

View File

@@ -14,8 +14,8 @@ ext {
version_log4j2= '2.20.0' // keep in sync with spring-boot-starter-log4j2 version_log4j2= '2.20.0' // keep in sync with spring-boot-starter-log4j2
version_spring = '3.3.4' version_spring = '3.3.4'
version_junit = '5.10.3' version_junit = '5.11.1'
version_junit_platform = '1.10.3' version_junit_platform = '1.11.1'
version_nodejs = '20.17.0' // keep in sync with npm version_nodejs = '20.17.0' // keep in sync with npm
version_npm = '10.8.2' // keep in sync with nodejs version_npm = '10.8.2' // keep in sync with nodejs
@@ -141,5 +141,5 @@ subprojects {
} }
wrapper { wrapper {
gradleVersion = '8.9' gradleVersion = '8.10.2'
} }

Binary file not shown.

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

View File

@@ -1,21 +1,17 @@
import { NgModule } from "@angular/core"; import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router"; import { RouterModule, Routes } from "@angular/router";
import { VisualizationPageComponent } from "./visualization-page/visualization-page.component"; import { VisualizationPageComponent } from "./visualization-page/visualization-page.component";
import { MainPageComponent } from "./main-page/main-page.component";
import { UploadPageComponent } from "./upload-page/upload-page.component";
import { HelpPageComponent } from "./help-page/help-page.component";
import { DashboardPageComponent } from "./dashboard-page/dashboard-page.component"; import { DashboardPageComponent } from "./dashboard-page/dashboard-page.component";
import { DashboardComponent } from "./dashboard-page/dashboard/dashboard.component"; import { DashboardComponent } from "./dashboard-page/dashboard/dashboard.component";
import { CustomizableGridComponent } from "./customizable-grid/customizable-grid.component";
const routes: Routes = [ const routes: Routes = [
{ path: "", component: MainPageComponent }, { path: "", loadComponent: () => import("./main-page/main-page.component").then(m => m.MainPageComponent) },
{ path: "vis", component: VisualizationPageComponent }, { path: "vis", component: VisualizationPageComponent },
{ path: "dashboard", component: DashboardPageComponent }, { path: "dashboard", component: DashboardPageComponent },
{ path: "dashboard/:id", component: DashboardComponent }, { path: "dashboard/:id", component: DashboardComponent },
{ path: "upload", component: UploadPageComponent }, { path: "upload", loadComponent: () => import("./upload-page/upload-page.component").then(m => m.UploadPageComponent) },
{ path: "grid", component: CustomizableGridComponent }, { path: "grid", loadComponent: () => import("./customizable-grid/customizable-grid.component").then(m => m.CustomizableGridComponent) },
{ path: "help", component: HelpPageComponent }, { path: "help", loadComponent: () => import("./help-page/help-page.component").then(m => m.HelpPageComponent) },
// { path: '**', component: PageNotFoundComponent } // { path: '**', component: PageNotFoundComponent }
]; ];

View File

@@ -6,9 +6,6 @@ import { FormsModule, ReactiveFormsModule } from "@angular/forms";
import { AppRoutingModule } from "./app-routing.module"; import { AppRoutingModule } from "./app-routing.module";
import { AppComponent } from "./app.component"; import { AppComponent } from "./app.component";
import { MainPageComponent } from "./main-page/main-page.component";
import { HelpPageComponent } from "./help-page/help-page.component";
import { UploadPageComponent } from "./upload-page/upload-page.component";
import { VisualizationPageComponent } from "./visualization-page/visualization-page.component"; import { VisualizationPageComponent } from "./visualization-page/visualization-page.component";
import { DatePickerComponent } from "./components/datepicker/date-picker.component"; import { DatePickerComponent } from "./components/datepicker/date-picker.component";
@@ -27,7 +24,6 @@ import { MatTooltipModule } from "@angular/material/tooltip";
import { OverlayModule } from "@angular/cdk/overlay"; import { OverlayModule } from "@angular/cdk/overlay";
import { YAxisDefinitionComponent } from "./y-axis-definition/y-axis-definition.component"; import { YAxisDefinitionComponent } from "./y-axis-definition/y-axis-definition.component";
import { QueryAutocompleteComponent } from "./query-autocomplete/query-autocomplete.component"; import { QueryAutocompleteComponent } from "./query-autocomplete/query-autocomplete.component";
import { LimitByComponent } from "./limit-by/limit-by.component";
import { PlotDetailsComponent } from "./plot-details/plot-details.component"; import { PlotDetailsComponent } from "./plot-details/plot-details.component";
import { PlotViewComponent } from "./plot-view/plot-view.component"; import { PlotViewComponent } from "./plot-view/plot-view.component";
import { import {
@@ -37,7 +33,6 @@ import {
} from "./gallery-view/gallery-view.component"; } from "./gallery-view/gallery-view.component";
import { ImageToggleComponent } from "./image-toggle/image-toggle.component"; import { ImageToggleComponent } from "./image-toggle/image-toggle.component";
import { DashboardPageComponent } from "./dashboard-page/dashboard-page.component"; import { DashboardPageComponent } from "./dashboard-page/dashboard-page.component";
import { NewDashboardComponent } from "./dashboard-page/new-dashboard/new-dashboard.component";
import { import {
MAT_DIALOG_DEFAULT_OPTIONS, MAT_DIALOG_DEFAULT_OPTIONS,
MatDialogModule, MatDialogModule,
@@ -48,52 +43,48 @@ import { MatGridListModule } from "@angular/material/grid-list";
import { MatCardModule } from "@angular/material/card"; import { MatCardModule } from "@angular/material/card";
import { MatBadgeModule } from "@angular/material/badge"; import { MatBadgeModule } from "@angular/material/badge";
import { DashboardComponent } from "./dashboard-page/dashboard/dashboard.component"; import { DashboardComponent } from "./dashboard-page/dashboard/dashboard.component";
import { AddTextDialogComponent } from "./dashboard-page/dashboard/add-text-dialog/add-text-dialog.component";
import { TextWidgetComponent } from "./dashboard-page/dashboard/text-widget/text-widget.component"; import { TextWidgetComponent } from "./dashboard-page/dashboard/text-widget/text-widget.component";
import { AddPlotDialogComponent } from "./dashboard-page/dashboard/add-plot-dialog/add-plot-dialog.component"; import { AddPlotDialogComponent } from "./dashboard-page/dashboard/add-plot-dialog/add-plot-dialog.component";
import { PlotWidgetComponent } from "./dashboard-page/dashboard/plot-widget/plot-widget.component"; import { PlotWidgetComponent } from "./dashboard-page/dashboard/plot-widget/plot-widget.component";
import { FullScreenPlotDialogComponent } from "./dashboard-page/dashboard/full-screen-plot-dialog/full-screen-plot-dialog.component"; import { FullScreenPlotDialogComponent } from "./dashboard-page/dashboard/full-screen-plot-dialog/full-screen-plot-dialog.component";
import { CustomizableGridComponent } from "./customizable-grid/customizable-grid.component";
import { DragDropModule } from "@angular/cdk/drag-drop"; import { DragDropModule } from "@angular/cdk/drag-drop";
import { ConfirmationDialogComponent } from "./confirmation-dialog/confirmation-dialog.component"; import { ConfirmationDialogComponent } from "./confirmation-dialog/confirmation-dialog.component";
import { FocusDirective } from "./focus.directive"; import { FocusDirective } from "./focus.directive";
import { MarkdownModule } from "ngx-markdown"; import { MarkdownModule } from "ngx-markdown";
import { MainPageComponent } from "./main-page/main-page.component";
import { LimitByComponent } from "./limit-by/limit-by.component";
@NgModule({ declarations: [ @NgModule({ declarations: [
AppComponent, AppComponent,
MainPageComponent,
HelpPageComponent,
UploadPageComponent,
DatePickerComponent,
VisualizationPageComponent, VisualizationPageComponent,
YAxisDefinitionComponent,
QueryAutocompleteComponent, QueryAutocompleteComponent,
LimitByComponent,
PlotDetailsComponent, PlotDetailsComponent,
PlotViewComponent, PlotViewComponent,
GalleryViewComponent, GalleryViewComponent,
GalleryItemView, GalleryItemView,
GalleryFilterView, GalleryFilterView,
ImageToggleComponent,
DashboardPageComponent, DashboardPageComponent,
NewDashboardComponent,
DashboardComponent, DashboardComponent,
AddTextDialogComponent,
TextWidgetComponent, TextWidgetComponent,
AddPlotDialogComponent, AddPlotDialogComponent,
PlotWidgetComponent, PlotWidgetComponent,
FullScreenPlotDialogComponent, FullScreenPlotDialogComponent,
CustomizableGridComponent,
ConfirmationDialogComponent, ConfirmationDialogComponent,
FocusDirective, FocusDirective,
], ],
bootstrap: [AppComponent], imports: [MarkdownModule.forRoot(), bootstrap: [AppComponent],
imports: [
MarkdownModule.forRoot(),
BrowserModule, BrowserModule,
AppRoutingModule, AppRoutingModule,
FormsModule, FormsModule,
ReactiveFormsModule, ReactiveFormsModule,
DatePickerComponent,
DragDropModule, DragDropModule,
ImageToggleComponent,
LimitByComponent,
MainPageComponent,
MatAutocompleteModule, MatAutocompleteModule,
MatBadgeModule, MatBadgeModule,
MatButtonModule, MatButtonModule,
@@ -112,7 +103,10 @@ import { MarkdownModule } from "ngx-markdown";
MatTableModule, MatTableModule,
MatTooltipModule, MatTooltipModule,
BrowserAnimationsModule, BrowserAnimationsModule,
OverlayModule], providers: [{ OverlayModule,
YAxisDefinitionComponent
],
providers: [{
provide: MAT_DIALOG_DEFAULT_OPTIONS, provide: MAT_DIALOG_DEFAULT_OPTIONS,
useValue: { hasBackdrop: true }, useValue: { hasBackdrop: true },
}, provideHttpClient(withInterceptorsFromDi())] }) }, provideHttpClient(withInterceptorsFromDi())] })

View File

@@ -1,3 +1,4 @@
import { OverlayModule } from "@angular/cdk/overlay";
import { import {
Component, Component,
EventEmitter, EventEmitter,
@@ -8,9 +9,18 @@ import {
import { import {
ControlValueAccessor, ControlValueAccessor,
FormControl, FormControl,
FormsModule,
NG_VALUE_ACCESSOR, NG_VALUE_ACCESSOR,
ReactiveFormsModule,
Validators, Validators,
} from "@angular/forms"; } from "@angular/forms";
import { MatButtonModule } from "@angular/material/button";
import { MAT_DIALOG_DEFAULT_OPTIONS } from "@angular/material/dialog";
import { MatFormFieldModule } from "@angular/material/form-field";
import { MatInputModule } from "@angular/material/input";
import { MatTabsModule } from "@angular/material/tabs";
import { BrowserModule } from "@angular/platform-browser";
import { BrowserAnimationsModule } from "@angular/platform-browser/animations";
export type DateType = "QUICK" | "RELATIVE" | "ABSOLUTE"; export type DateType = "QUICK" | "RELATIVE" | "ABSOLUTE";
@@ -29,12 +39,27 @@ export class DatePickerChange {
@Component({ @Component({
selector: "app-date-picker", selector: "app-date-picker",
templateUrl: "./date-picker.component.html", templateUrl: "./date-picker.component.html",
standalone: true,
imports: [
BrowserModule,
MatButtonModule,
MatFormFieldModule,
MatInputModule,
MatTabsModule,
FormsModule,
ReactiveFormsModule,
OverlayModule
],
providers: [ providers: [
{ {
provide: NG_VALUE_ACCESSOR, provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => DatePickerComponent), useExisting: forwardRef(() => DatePickerComponent),
multi: true, multi: true,
}, },
{
provide: MAT_DIALOG_DEFAULT_OPTIONS,
useValue: { hasBackdrop: true },
}
], ],
}) })
export class DatePickerComponent implements ControlValueAccessor { export class DatePickerComponent implements ControlValueAccessor {

View File

@@ -1,12 +1,18 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { CdkDragEnter, CdkDropList, moveItemInArray, DragRef} from '@angular/cdk/drag-drop'; import { CdkDragEnter, CdkDropList, moveItemInArray, DragRef, DragDropModule} from '@angular/cdk/drag-drop';
import { AfterViewInit } from '@angular/core'; import { AfterViewInit } from '@angular/core';
import { ViewChild } from '@angular/core'; import { ViewChild } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@Component({ @Component({
selector: 'app-customizable-grid', selector: 'app-customizable-grid',
templateUrl: './customizable-grid.component.html' templateUrl: './customizable-grid.component.html',
standalone: true,
imports: [
BrowserModule,
DragDropModule
]
}) })
export class CustomizableGridComponent implements AfterViewInit { export class CustomizableGridComponent implements AfterViewInit {
@ViewChild(CdkDropList) placeholder!: CdkDropList; @ViewChild(CdkDropList) placeholder!: CdkDropList;

View File

@@ -1,4 +1,4 @@
import { AfterViewInit, Component, ElementRef, Inject, ViewChild } from '@angular/core'; import { Component, Inject, ViewChild } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
import { PlotConfig } from 'src/app/plot.service'; import { PlotConfig } from 'src/app/plot.service';
import { VisualizationPageComponent } from 'src/app/visualization-page/visualization-page.component'; import { VisualizationPageComponent } from 'src/app/visualization-page/visualization-page.component';

View File

@@ -1,9 +1,28 @@
import { Component, ElementRef, Inject, ViewChild } from '@angular/core'; import { Component, ElementRef, Inject, ViewChild } from '@angular/core';
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button';
import { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { MarkdownModule } from 'ngx-markdown';
@Component({ @Component({
selector: 'app-add-text-dialog', selector: 'app-add-text-dialog',
templateUrl: './add-text-dialog.component.html' templateUrl: './add-text-dialog.component.html',
standalone: true,
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
ReactiveFormsModule,
MarkdownModule,
MatButtonModule,
MatDialogModule,
MatFormFieldModule,
MatInputModule,
]
}) })
export class AddTextDialogComponent { export class AddTextDialogComponent {
text = ""; text = "";

View File

@@ -1,11 +1,26 @@
import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core'; import { Component, ElementRef, Inject, OnInit, ViewChild } from '@angular/core';
import {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog'; import {MAT_DIALOG_DATA, MatDialogModule, MatDialogRef} from '@angular/material/dialog';
import { DashboardCreationData } from 'src/app/dashboard.service'; import { DashboardCreationData } from 'src/app/dashboard.service';
import { AbstractControl, FormControl, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms'; import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
import { BrowserModule } from '@angular/platform-browser';
import { MatButtonModule } from '@angular/material/button';
import { OverlayModule } from '@angular/cdk/overlay';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
@Component({ @Component({
selector: 'app-new-dashboard', selector: 'app-new-dashboard',
templateUrl: './new-dashboard.component.html' templateUrl: './new-dashboard.component.html',
standalone: true,
imports: [
BrowserModule,
FormsModule,
MatButtonModule,
MatDialogModule,
MatFormFieldModule,
MatInputModule,
ReactiveFormsModule
]
}) })
export class NewDashboardComponent implements OnInit { export class NewDashboardComponent implements OnInit {

View File

@@ -3,7 +3,8 @@ import { Component, OnInit } from '@angular/core';
@Component({ @Component({
selector: 'pdb-help-page', selector: 'pdb-help-page',
templateUrl: './help-page.component.html', templateUrl: './help-page.component.html',
styleUrls: ['./help-page.component.scss'] styleUrls: ['./help-page.component.scss'],
standalone: true
}) })
export class HelpPageComponent implements OnInit { export class HelpPageComponent implements OnInit {

View File

@@ -1,9 +1,14 @@
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
@Component({ @Component({
selector: 'pdb-image-toggle', selector: 'pdb-image-toggle',
templateUrl: './image-toggle.component.html', templateUrl: './image-toggle.component.html',
styleUrls: ['./image-toggle.component.scss'] styleUrls: ['./image-toggle.component.scss'],
standalone: true,
imports: [
BrowserModule
]
}) })
export class ImageToggleComponent implements OnInit { export class ImageToggleComponent implements OnInit {

View File

@@ -1,10 +1,25 @@
import { Component, Input} from '@angular/core'; import { Component } from '@angular/core';
import {FormControl} from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatFormField, MatLabel } from '@angular/material/form-field';
import { MatInput } from '@angular/material/input';
import { MatOption, MatSelect } from '@angular/material/select';
import { BrowserModule } from '@angular/platform-browser';
@Component({ @Component({
selector: 'pdb-limit-by', selector: 'pdb-limit-by',
templateUrl: './limit-by.component.html', templateUrl: './limit-by.component.html',
styleUrls: ['./limit-by.component.scss'] styleUrls: ['./limit-by.component.scss'],
standalone: true,
imports: [
BrowserModule,
FormsModule,
MatFormField,
MatInput,
MatLabel,
MatSelect,
MatOption,
ReactiveFormsModule
]
}) })
export class LimitByComponent { export class LimitByComponent {

View File

@@ -1,15 +1,14 @@
import { Component, OnInit } from '@angular/core'; import { Component } from '@angular/core';
import { RouterLink } from '@angular/router';
@Component({ @Component({
selector: 'pdb-main-page', selector: 'pdb-main-page',
templateUrl: './main-page.component.html', templateUrl: './main-page.component.html',
styleUrls: ['./main-page.component.scss'] standalone: true,
imports: [
RouterLink
]
}) })
export class MainPageComponent implements OnInit { export class MainPageComponent {
constructor() { }
ngOnInit() {
}
} }

View File

@@ -3,7 +3,8 @@ import { Component, OnInit } from '@angular/core';
@Component({ @Component({
selector: 'pdb-upload-page', selector: 'pdb-upload-page',
templateUrl: './upload-page.component.html', templateUrl: './upload-page.component.html',
styleUrls: ['./upload-page.component.scss'] styleUrls: ['./upload-page.component.scss'],
standalone: true
}) })
export class UploadPageComponent implements OnInit { export class UploadPageComponent implements OnInit {

View File

@@ -1,10 +1,27 @@
import { Component, Input } from '@angular/core'; import { Component, Input } from '@angular/core';
import { YAxisDefinition } from '../plot.service'; import { YAxisDefinition } from '../plot.service';
import { BrowserModule } from '@angular/platform-browser';
import { MatFormField, MatLabel } from '@angular/material/form-field';
import { MatOptgroup, MatOption, MatSelect } from '@angular/material/select';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { MatInput } from '@angular/material/input';
@Component({ @Component({
selector: 'pdb-y-axis-definition', selector: 'pdb-y-axis-definition',
templateUrl: './y-axis-definition.component.html', templateUrl: './y-axis-definition.component.html',
styleUrls: ['./y-axis-definition.component.scss'] styleUrls: ['./y-axis-definition.component.scss'],
standalone: true,
imports: [
BrowserModule,
FormsModule,
MatFormField,
MatInput,
MatLabel,
MatSelect,
MatOption,
MatOptgroup,
ReactiveFormsModule
]
}) })
export class YAxisDefinitionComponent { export class YAxisDefinitionComponent {