Merge branch 'main' into fix/lighthouse-20251230
All checks were successful
Build / Build-and-ng-test (pull_request) Successful in 4m4s
Build / Build-and-test-development (pull_request) Successful in 10m9s
Lighthouse Checks / lighthouse (24.5.0) (pull_request) Successful in 19m4s

This commit is contained in:
2026-01-05 13:39:20 +00:00
68 changed files with 4975 additions and 3150 deletions

View File

@@ -51,26 +51,22 @@
"base64-arraybuffer",
"@handsontable/formulajs"
],
"polyfills": [
"src/polyfills.ts",
"zone.js"
],
"polyfills": ["src/polyfills.ts", "zone.js"],
"outputPath": "dist",
"resourcesOutputPath": "images",
"index": "src/index.html",
"main": "src/main.ts",
"tsConfig": "tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": [
"src/images"
{
"glob": "**/*",
"input": "src/images",
"output": "images"
}
],
"styles": [
"src/styles.scss"
],
"scripts": [
"node_modules/marked/marked.min.js"
],
"webWorkerTsConfig": "tsconfig.worker.json"
"styles": ["src/styles.scss"],
"scripts": ["node_modules/marked/marked.min.js"],
"webWorkerTsConfig": "tsconfig.worker.json",
"main": "src/main.ts"
},
"configurations": {
"production": {
@@ -103,9 +99,7 @@
}
},
"development": {
"vendorChunk": true,
"extractLicenses": false,
"buildOptimizer": false,
"sourceMap": true,
"optimization": false,
"namedChunks": true
@@ -134,20 +128,11 @@
"test": {
"builder": "@angular-devkit/build-angular:karma",
"options": {
"polyfills": [
"src/polyfills.ts",
"zone.js",
"zone.js/testing"
],
"polyfills": ["src/polyfills.ts", "zone.js", "zone.js/testing"],
"tsConfig": "tsconfig.spec.json",
"inlineStyleLanguage": "scss",
"assets": [
"src/favicon.ico",
"src/assets"
],
"styles": [
"src/styles.scss"
],
"assets": ["src/favicon.ico", "src/assets"],
"styles": ["src/styles.scss"],
"scripts": [],
"karmaConfig": "karma.conf.js",
"webWorkerTsConfig": "tsconfig.worker.json"
@@ -156,10 +141,7 @@
"lint": {
"builder": "@angular-eslint/builder:lint",
"options": {
"lintFilePatterns": [
"src/**/*.ts",
"src/**/*.html"
]
"lintFilePatterns": ["src/**/*.ts", "src/**/*.html"]
}
}
}

7827
client/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -32,19 +32,20 @@
"compodoc:build": "compodoc -p tsconfig.doc.json --name 'Data Controller Client'",
"compodoc:build-and-serve": "compodoc -p tsconfig.doc.json -s --name 'Data Controller Client'",
"compodoc:serve": "compodoc -s --name 'Data Controller Client'",
"lighthouse": "lhci autorun"
"lighthouse": "lhci autorun",
"ng": "ng"
},
"private": true,
"dependencies": {
"@angular/animations": "^17.3.3",
"@angular/cdk": "^17.3.3",
"@angular/common": "^17.3.3",
"@angular/compiler": "^17.3.3",
"@angular/core": "^17.3.3",
"@angular/forms": "^17.3.3",
"@angular/platform-browser": "^17.3.3",
"@angular/platform-browser-dynamic": "^17.3.3",
"@angular/router": "^17.3.3",
"@angular/animations": "^19.2.17",
"@angular/cdk": "^19.2.19",
"@angular/common": "^19.2.17",
"@angular/compiler": "^19.2.17",
"@angular/core": "^19.2.17",
"@angular/forms": "^19.2.17",
"@angular/platform-browser": "^19.2.17",
"@angular/platform-browser-dynamic": "^19.2.17",
"@angular/router": "^19.2.17",
"@cds/core": "^6.15.1",
"@clr/angular": "file:libraries/clr-angular-17.9.0.tgz",
"@clr/icons": "^13.0.2",
@@ -68,7 +69,7 @@
"jquery-datetimepicker": "^2.5.21",
"jsrsasign": "^11.1.0",
"marked": "^5.0.0",
"moment": "^2.26.0",
"moment": "^2.30.1",
"ngx-clipboard": "^16.0.0",
"ngx-json-viewer": "file:libraries/ngx-json-viewer-3.2.1.tgz",
"nodejs": "0.0.0",
@@ -82,17 +83,17 @@
"vm": "^0.1.0",
"webpack": "^5.91.0",
"xlsx": "^0.18.5",
"zone.js": "~0.14.4"
"zone.js": "~0.15.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^17.3.3",
"@angular-eslint/builder": "17.3.0",
"@angular-eslint/eslint-plugin": "17.3.0",
"@angular-eslint/eslint-plugin-template": "17.3.0",
"@angular-eslint/schematics": "17.3.0",
"@angular-eslint/template-parser": "17.3.0",
"@angular/cli": "^17.3.3",
"@angular/compiler-cli": "^17.3.3",
"@angular-devkit/build-angular": "^19.2.19",
"@angular-eslint/builder": "19.8.1",
"@angular-eslint/eslint-plugin": "19.8.1",
"@angular-eslint/eslint-plugin-template": "19.8.1",
"@angular-eslint/schematics": "19.8.1",
"@angular-eslint/template-parser": "19.8.1",
"@angular/cli": "^19.2.19",
"@angular/compiler-cli": "^19.2.17",
"@babel/plugin-proposal-private-methods": "^7.18.6",
"@compodoc/compodoc": "^1.1.21",
"@cypress/webpack-preprocessor": "^5.17.1",
@@ -128,7 +129,7 @@
"rimraf": "3.0.2",
"ts-loader": "^9.2.8",
"ts-node": "^3.3.0",
"typescript": "~5.4.4",
"typescript": "~5.8.3",
"wait-on": "^6.0.1",
"watch": "^1.0.2"
}

View File

@@ -11,7 +11,7 @@ import { Location } from '@angular/common'
import '@clr/icons'
import '@clr/icons/shapes/all-shapes'
import { globals } from './_globals'
import * as moment from 'moment'
import moment from 'moment'
import { EventService } from './services/event.service'
import { AppService } from './services/app.service'
import { InfoModal } from './models/InfoModal'
@@ -42,7 +42,8 @@ ClarityIcons.addIcons(
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class AppComponent {
private dcAdapterSettings: DcAdapterSettings | undefined

View File

@@ -1,4 +1,4 @@
import { HttpClientModule } from '@angular/common/http'
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
import { NgModule } from '@angular/core'
import { FormsModule, ReactiveFormsModule } from '@angular/forms'
import { BrowserModule } from '@angular/platform-browser'
@@ -36,12 +36,12 @@ import { AppSettingsService } from './services/app-settings.service'
InfoModalComponent,
ViyaApiExplorerComponent
],
bootstrap: [AppComponent],
imports: [
BrowserAnimationsModule,
BrowserModule,
FormsModule,
ReactiveFormsModule,
HttpClientModule,
ROUTING,
SharedModule,
ClarityModule,
@@ -50,7 +50,12 @@ import { AppSettingsService } from './services/app-settings.service'
DirectivesModule,
NgxJsonViewerModule
],
providers: [AppService, SasStoreService, LicensingGuard, AppSettingsService],
bootstrap: [AppComponent]
providers: [
AppService,
SasStoreService,
LicensingGuard,
AppSettingsService,
provideHttpClient(withInterceptorsFromDi())
]
})
export class AppModule {}

View File

@@ -14,7 +14,8 @@ import { DcAdapterSettings } from '../models/DcAdapterSettings'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class DeployComponent implements OnInit {
public step: number = 0

View File

@@ -29,7 +29,8 @@ import {
selector: 'app-automatic-deploy',
templateUrl: './automatic.component.html',
styleUrls: ['./automatic.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class AutomaticComponent implements OnInit {
@Input() sasJs!: SASjs

View File

@@ -18,7 +18,8 @@ import { SasService } from 'src/app/services/sas.service'
selector: 'app-manual-deploy',
templateUrl: './manual.component.html',
styleUrls: ['./manual.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ManualComponent implements OnInit {
@Input() sasJs!: SASjs

View File

@@ -20,7 +20,8 @@ import { SasjsService } from 'src/app/services/sasjs.service'
selector: 'app-sasjs-configurator',
templateUrl: './sasjs-configurator.component.html',
styleUrls: ['./sasjs-configurator.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class SasjsConfiguratorComponent implements OnInit {
@Input() sasJs!: SASjs

View File

@@ -7,7 +7,8 @@ import {
} from '@angular/core'
@Directive({
selector: '[appDragNdrop]'
selector: '[appDragNdrop]',
standalone: false
})
export class DragNdropDirective {
@HostBinding('class.fileover') fileOver: boolean = false

View File

@@ -9,7 +9,8 @@ import {
import { FileUploader } from '../models/FileUploader.class'
@Directive({
selector: '[appFileDrop]'
selector: '[appFileDrop]',
standalone: false
})
export class FileDropDirective {
@Input() uploader?: FileUploader

View File

@@ -9,7 +9,8 @@ import {
import { FileUploader } from '../models/FileUploader.class'
@Directive({
selector: '[appFileSelect]'
selector: '[appFileSelect]',
standalone: false
})
export class FileSelectDirective {
@Input() uploader?: FileUploader

View File

@@ -6,7 +6,8 @@ import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core'
* Calling functions in html is bad for performance
*/
@Directive({
selector: '[ngVar]'
selector: '[ngVar]',
standalone: false
})
export class NgVarDirective {
@Input()

View File

@@ -1,7 +1,8 @@
import { Directive, HostListener } from '@angular/core'
@Directive({
selector: '[appStealFocus]'
selector: '[appStealFocus]',
standalone: false
})
export class StealFocusDirective {
constructor() {}

View File

@@ -24,7 +24,8 @@ import { EditRecordModal } from '../../models/EditRecordModal'
selector: 'app-edit-record',
templateUrl: './edit-record.component.html',
styleUrls: ['./edit-record.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class EditRecordComponent implements OnInit {
@Input() currentRecord!: EditRecordModal

View File

@@ -11,7 +11,8 @@ import { Component, OnInit, ViewEncapsulation } from '@angular/core'
selector: 'app-upload-stater',
templateUrl: './upload-stater.component.html',
styleUrls: ['./upload-stater.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class UploadStaterComponent implements OnInit {
public statesList: string[] = [] //States appended to be displayed

View File

@@ -70,7 +70,8 @@ import { ParseResult } from '../models/ParseResult.interface'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class EditorComponent implements OnInit, AfterViewInit, OnDestroy {
@ViewChildren('uploadStater')

View File

@@ -15,7 +15,8 @@ import { RequestWrapperResponse } from '../models/request-wrapper/RequestWrapper
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class GroupComponent implements OnInit {
public groups: Array<any> | undefined

View File

@@ -19,7 +19,8 @@ import { LicenceService } from '../services/licence.service'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class HomeComponent implements AfterContentInit {
public treeNodeLibraries: Array<any> | null = null

View File

@@ -15,7 +15,8 @@ enum LicenseActions {
selector: 'app-licensing',
templateUrl: './licensing.component.html',
styleUrls: ['./licensing.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class LicensingComponent implements OnInit {
public action: LicenseActions | null = null

View File

@@ -19,7 +19,8 @@ const moment = require('moment')
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class LineageComponent {
public switchFlag: boolean = false

View File

@@ -51,7 +51,8 @@ class ValueFilter implements ClrDatagridStringFilterInterface<MetaData> {
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class MetadataComponent implements OnInit {
metaDataList: Array<any> | undefined

View File

@@ -48,7 +48,8 @@ enum FileLoadingState {
selector: 'app-multi-dataset',
templateUrl: './multi-dataset.component.html',
styleUrls: ['./multi-dataset.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class MultiDatasetComponent implements OnInit, AfterViewInit {
@HostBinding('class.content-container') contentContainerClass = true

View File

@@ -7,7 +7,8 @@ import { Component, OnInit, ViewEncapsulation } from '@angular/core'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class NotFoundComponent implements OnInit {
constructor() {}

View File

@@ -2,7 +2,8 @@ import { Pipe, PipeTransform } from '@angular/core'
import { bytesToSize } from '@sasjs/utils/utils/bytesToSize'
@Pipe({
name: 'convertSize'
name: 'convertSize',
standalone: false
})
export class ConvertSizePipe implements PipeTransform {
transform(bytes: string | number, ...args: string[]): string {

View File

@@ -1,7 +1,8 @@
import { Pipe, PipeTransform } from '@angular/core'
import * as moment from 'moment'
import moment from 'moment'
@Pipe({
name: 'dateTimeFormatter'
name: 'dateTimeFormatter',
standalone: false
})
export class DateTimeFormatterPipe implements PipeTransform {
transform(value: Date | string, type: string): string {

View File

@@ -1,7 +1,8 @@
import { Pipe, PipeTransform } from '@angular/core'
@Pipe({
name: 'linkinze'
name: 'linkinze',
standalone: false
})
export class LinkinzePipe implements PipeTransform {
/**

View File

@@ -2,7 +2,8 @@ import { Pipe, PipeTransform } from '@angular/core'
import { HelperService } from '../services/helper.service'
@Pipe({
name: 'sasToJsDate'
name: 'sasToJsDate',
standalone: false
})
export class sasToJsDatePipe implements PipeTransform {
constructor(private helperService: HelperService) {}

View File

@@ -1,7 +1,8 @@
import { Pipe, PipeTransform } from '@angular/core'
@Pipe({
name: 'pkSpaceSeparate'
name: 'pkSpaceSeparate',
standalone: false
})
export class PkSpaceSeparatePipe implements PipeTransform {
transform(value: string): string {

View File

@@ -1,7 +1,8 @@
import { Pipe, PipeTransform } from '@angular/core'
@Pipe({
name: 'prettyjson'
name: 'prettyjson',
standalone: false
})
export class PrettyjsonPipe implements PipeTransform {
transform(rawJson: any): string {

View File

@@ -2,7 +2,8 @@ import { Pipe, PipeTransform } from '@angular/core'
import { HelperService } from '../services/helper.service'
@Pipe({
name: 'secondsParser'
name: 'secondsParser',
standalone: false
})
export class SecondsParserPipe implements PipeTransform {
constructor(private helperService: HelperService) {}

View File

@@ -1,7 +1,8 @@
import { Pipe, PipeTransform } from '@angular/core'
@Pipe({
name: 'thousandSeparator'
name: 'thousandSeparator',
standalone: false
})
export class ThousandSeparatorPipe implements PipeTransform {
transform(value: string | number, separator?: string): string {

View File

@@ -1,7 +1,8 @@
import { Pipe, PipeTransform } from '@angular/core'
@Pipe({
name: 'toNumber'
name: 'toNumber',
standalone: false
})
export class ToNumberPipe implements PipeTransform {
transform(value: string | number): number {

View File

@@ -29,7 +29,8 @@ registerLocaleData(localeEnGB)
templateUrl: './query.component.html',
styleUrls: ['./query.component.scss'],
providers: [{ provide: LOCALE_ID, useValue: 'en-GB' }],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class QueryComponent
implements AfterViewInit, AfterContentInit, OnDestroy

View File

@@ -30,7 +30,8 @@ interface ChangesObj {
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ApproveDetailsComponent implements AfterViewInit, OnDestroy {
private _detailsSub: Subscription | undefined

View File

@@ -51,7 +51,8 @@ class SubmitReasonFilter implements ClrDatagridStringFilterInterface<ApproveData
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ApproveComponent implements OnInit {
public approveList: Array<ApproveData> | undefined

View File

@@ -63,7 +63,8 @@ class ReviewedFilter implements ClrDatagridStringFilterInterface<HistoryData> {
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class HistoryComponent implements OnInit {
public history: Array<any> = []

View File

@@ -36,7 +36,8 @@ class SubmitReasonFilter implements ClrDatagridStringFilterInterface<SubmitterDa
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class SubmitterComponent implements OnInit, AfterViewInit {
public remained: number = 0

View File

@@ -13,7 +13,8 @@ import { RequestWrapperResponse } from '../models/request-wrapper/RequestWrapper
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class RoleComponent implements OnInit {
public roles: Array<any> | undefined

View File

@@ -7,7 +7,8 @@ import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class HomeRouteComponent implements OnInit, OnDestroy {
constructor() {}

View File

@@ -5,7 +5,8 @@ import { Component, OnInit, OnDestroy } from '@angular/core'
templateUrl: './multi-dataset-route.component.html',
host: {
class: 'content-container'
}
},
standalone: false
})
export class MultiDatasetRouteComponent implements OnInit, OnDestroy {
constructor() {}

View File

@@ -7,7 +7,8 @@ import { Component, OnInit, ViewEncapsulation } from '@angular/core'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ReviewRouteComponent implements OnInit {
constructor() {}

View File

@@ -7,7 +7,8 @@ import { Component, OnInit, ViewEncapsulation } from '@angular/core'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class UsernavRouteComponent implements OnInit {
constructor() {}

View File

@@ -7,7 +7,8 @@ import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ViewRouteComponent implements OnInit, OnDestroy {
constructor() {}

View File

@@ -7,7 +7,8 @@ import { Component, OnInit, OnDestroy, ViewEncapsulation } from '@angular/core'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class XLMapRouteComponent implements OnInit, OnDestroy {
constructor() {}

View File

@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core'
import cloneDeep from 'lodash-es/cloneDeep'
import * as CryptoMD5 from 'crypto-js/md5'
import CryptoMD5 from 'crypto-js/md5'
import { SasService } from './sas.service'
const librariesToShow = 50

View File

@@ -2,7 +2,7 @@ import { Injectable } from '@angular/core'
import { BehaviorSubject } from 'rxjs'
import { LicenseKeyData } from '../models/LicenseKeyData'
import { SasService } from './sas.service'
import * as moment from 'moment'
import moment from 'moment'
import * as base64Converter from 'base64-arraybuffer'
import * as encoding from 'text-encoding'
import { Router } from '@angular/router'

View File

@@ -17,7 +17,8 @@ import { AbortDetails, InfoModal } from '../../models/InfoModal'
selector: 'app-info-modal',
templateUrl: './info-modal.component.html',
styleUrls: ['./info-modal.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class InfoModalComponent implements OnInit {
@Output() onConfirmModalClick: EventEmitter<any> = new EventEmitter()

View File

@@ -7,7 +7,8 @@ import { AlertsService } from './alerts.service'
selector: 'app-alerts',
templateUrl: './alerts.component.html',
styleUrls: ['./alerts.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class AlertsComponent implements OnInit {
public alerts: Array<Alert> = []

View File

@@ -19,7 +19,8 @@ export type OnLoadingMoreEvent = {
selector: 'app-autocomplete',
templateUrl: './autocomplete.component.html',
styleUrls: ['./autocomplete.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class AutocompleteComponent implements OnInit, AfterViewInit {
@ViewChild('input') inputElement: any

View File

@@ -4,7 +4,8 @@ import { Component, Input, OnInit, ViewEncapsulation } from '@angular/core'
selector: 'contact-link',
templateUrl: './contact-link.component.html',
styleUrls: ['./contact-link.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ContactLinkComponent implements OnInit {
@Input() classes: string = ''

View File

@@ -15,7 +15,8 @@ import { Tab } from './models/dsmeta-groupped.model'
selector: 'app-dataset-info',
templateUrl: './dataset-info.component.html',
styleUrls: ['./dataset-info.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class DatasetInfoComponent implements OnInit, OnChanges {
@Input() open: boolean = false

View File

@@ -22,7 +22,8 @@ import { TableClickEmitter } from './models/TableClickEmitter'
selector: 'dc-tree',
templateUrl: './dc-tree.component.html',
styleUrls: ['./dc-tree.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class DcTreeComponent implements OnInit, AfterViewInit, OnChanges {
// REFACTOR NOTICE

View File

@@ -7,7 +7,8 @@ import { Options } from './models/options.interface'
selector: 'app-excel-password-modal',
styleUrls: ['./excel-password-modal.component.scss'],
templateUrl: './excel-password-modal.component.html',
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ExcelPasswordModalComponent {
options$: Observable<Options> = this.excelPasswordModalService.optionsSubject$

View File

@@ -7,7 +7,8 @@ import { Service } from '../service.interface'
selector: 'app-loading-indicator',
templateUrl: './loading-indicator.component.html',
styleUrls: ['./loading-indicator.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class LoadingIndicatorComponent implements OnInit, OnDestroy {
public loading: boolean = false

View File

@@ -13,7 +13,8 @@ interface User {
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class LoginComponent implements OnInit, OnDestroy {
private _subscription: Subscription = new Subscription()

View File

@@ -7,7 +7,7 @@ import {
ViewEncapsulation
} from '@angular/core'
import { SASjsRequest } from '@sasjs/adapter'
import * as moment from 'moment'
import moment from 'moment'
import { HelperService } from 'src/app/services/helper.service'
import { LoggerService } from '../../services/logger.service'
import { SasService } from '../../services/sas.service'
@@ -23,7 +23,8 @@ interface SASjsRequestExtended extends SASjsRequest {
selector: 'app-requests-modal',
templateUrl: './requests-modal.component.html',
styleUrls: ['./requests-modal.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class RequestsModalComponent implements OnInit {
private _opened: boolean = false

View File

@@ -18,7 +18,8 @@ import { globals } from '../../_globals'
selector: 'app-sidebar',
templateUrl: './sidebar.component.html',
styleUrls: ['./sidebar.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class SidebarComponent implements OnInit {
@ViewChild('sidebarNav') sidebarNav!: ElementRef

View File

@@ -15,7 +15,8 @@ import { OnLoadingMoreEvent } from '../autocomplete/autocomplete.component'
selector: 'app-soft-select',
templateUrl: './soft-select.component.html',
styleUrls: ['./soft-select.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class SoftSelectComponent implements OnInit, OnChanges {
@Input() inputId: string = ''

View File

@@ -15,7 +15,8 @@ import { RequestWrapperResponse } from 'src/app/models/request-wrapper/RequestWr
selector: 'app-terms',
templateUrl: './terms.component.html',
styleUrls: ['./terms.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class TermsComponent implements OnInit, AfterViewInit {
@ViewChild('markdownCard') markdownCard!: ElementRef

View File

@@ -12,7 +12,8 @@ import { globals } from 'src/app/_globals'
selector: 'app-header-actions',
templateUrl: './header-actions.component.html',
styleUrls: ['./header-actions.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class HeaderActions implements OnInit, OnDestroy {
public userName: string = 'Not logged in'

View File

@@ -48,7 +48,8 @@ import { Viewbox } from './models/viewbox.model'
selector: 'app-viewboxes',
templateUrl: './viewboxes.component.html',
styleUrls: ['./viewboxes.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ViewboxesComponent implements OnInit, AfterViewInit, OnDestroy {
@ViewChildren('resizeBox') resizeBoxQuery!: QueryList<ElementRef> //make query list, handle multiple

View File

@@ -24,7 +24,8 @@ import { RequestWrapperResponse } from '../models/request-wrapper/RequestWrapper
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class StageComponent implements OnInit, AfterViewInit {
public table_id: any

View File

@@ -18,7 +18,8 @@ import { RequestWrapperResponse } from '../models/request-wrapper/RequestWrapper
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class SystemComponent implements OnInit {
appInfo: AppInfo = {

View File

@@ -15,7 +15,8 @@ import { RequestWrapperResponse } from '../models/request-wrapper/RequestWrapper
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class UserComponent implements OnInit {
public users: Array<any> | undefined

View File

@@ -49,7 +49,8 @@ import { RequestWrapperResponse } from '../models/request-wrapper/RequestWrapper
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ViewerComponent
implements AfterContentInit, AfterViewInit, OnDestroy

View File

@@ -14,7 +14,8 @@ import { ViyaApis } from './models/viya-apis.models'
host: {
class: 'content-container'
},
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class ViyaApiExplorerComponent implements OnInit {
collections: ViyaApis = {}

View File

@@ -62,7 +62,8 @@ enum Tabs {
selector: 'app-xlmap',
templateUrl: './xlmap.component.html',
styleUrls: ['./xlmap.component.scss'],
encapsulation: ViewEncapsulation.None
encapsulation: ViewEncapsulation.None,
standalone: false
})
export class XLMapComponent implements AfterContentInit, AfterViewInit, OnInit {
@HostBinding('class.content-container') contentContainerClass = true