[DEV] continue integration
This commit is contained in:
parent
e4831e1a17
commit
334d68ac1f
@ -69,21 +69,21 @@
|
|||||||
"serve": {
|
"serve": {
|
||||||
"builder": "@angular-devkit/build-angular:dev-server",
|
"builder": "@angular-devkit/build-angular:dev-server",
|
||||||
"options": {
|
"options": {
|
||||||
"browserTarget": "karideo:build"
|
"buildTarget": "karideo:build"
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"production": {
|
"production": {
|
||||||
"browserTarget": "karideo:build:production"
|
"buildTarget": "karideo:build:production"
|
||||||
},
|
},
|
||||||
"develop": {
|
"develop": {
|
||||||
"browserTarget": "karideo:build:develop"
|
"buildTarget": "karideo:build:develop"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"extract-i18n": {
|
"extract-i18n": {
|
||||||
"builder": "@angular-devkit/build-angular:extract-i18n",
|
"builder": "@angular-devkit/build-angular:extract-i18n",
|
||||||
"options": {
|
"options": {
|
||||||
"browserTarget": "karideo:build"
|
"buildTarget": "karideo:build"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"test": {
|
"test": {
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
"all": "npm run build && npm run test",
|
"all": "npm run build && npm run test",
|
||||||
"ng": "ng",
|
"ng": "ng",
|
||||||
"dev": "ng serve --configuration=develop --watch --port 4202",
|
"dev": "ng serve --configuration=develop --watch --port 4202",
|
||||||
|
"dev-hot-update": "ng serve --configuration=develop --watch --hmr --port 4202",
|
||||||
"build": "ng build --prod",
|
"build": "ng build --prod",
|
||||||
"test": "ng test",
|
"test": "ng test",
|
||||||
"lint": "ng lint",
|
"lint": "ng lint",
|
||||||
@ -46,4 +47,4 @@
|
|||||||
"npm-check-updates": "^16.14.18",
|
"npm-check-updates": "^16.14.18",
|
||||||
"tslib": "^2.6.2"
|
"tslib": "^2.6.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -53,7 +53,7 @@ export class AppComponent implements OnInit {
|
|||||||
this.updateMainMenu();
|
this.updateMainMenu();
|
||||||
let self = this;
|
let self = this;
|
||||||
this.sessionService.change.subscribe((isConnected) => {
|
this.sessionService.change.subscribe((isConnected) => {
|
||||||
console.log(`receive event from session ...${isConnected}`);
|
|
||||||
self.isConnected = isConnected;
|
self.isConnected = isConnected;
|
||||||
self.autoConnectedDone = true;
|
self.autoConnectedDone = true;
|
||||||
self.updateMainMenu();
|
self.updateMainMenu();
|
||||||
@ -68,13 +68,10 @@ export class AppComponent implements OnInit {
|
|||||||
});
|
});
|
||||||
|
|
||||||
this.userService.checkAutoConnect().then(() => {
|
this.userService.checkAutoConnect().then(() => {
|
||||||
console.log(` ==>>>>> Auto-connect THEN !!!`);
|
|
||||||
self.autoConnectedDone = true;
|
self.autoConnectedDone = true;
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
console.log(` ==>>>>> Auto-connect CATCH !!!`);
|
|
||||||
self.autoConnectedDone = true;
|
self.autoConnectedDone = true;
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
console.log(` ==>>>>> Auto-connect FINALLY !!!`);
|
|
||||||
self.autoConnectedDone = true;
|
self.autoConnectedDone = true;
|
||||||
});
|
});
|
||||||
this.arianeService.segmentChange.subscribe((_segmentName: string) => {
|
this.arianeService.segmentChange.subscribe((_segmentName: string) => {
|
||||||
@ -123,7 +120,6 @@ export class AppComponent implements OnInit {
|
|||||||
|
|
||||||
}
|
}
|
||||||
updateMainMenu(): void {
|
updateMainMenu(): void {
|
||||||
console.log("update main menu :");
|
|
||||||
if (this.isConnected) {
|
if (this.isConnected) {
|
||||||
this.currentMenu = [
|
this.currentMenu = [
|
||||||
{
|
{
|
||||||
@ -230,11 +226,9 @@ export class AppComponent implements OnInit {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
console.log(" ==> DONE");
|
|
||||||
|
|
||||||
}
|
}
|
||||||
getSegmentDisplayable(): string {
|
getSegmentDisplayable(): string {
|
||||||
let segment = this.arianeService.getCurrrentSegment();
|
let segment = this.arianeService.getCurrentSegment();
|
||||||
if (segment === "type") {
|
if (segment === "type") {
|
||||||
return "Type";
|
return "Type";
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { BrowserModule } from '@angular/platform-browser';
|
import { BrowserModule } from '@angular/platform-browser';
|
||||||
import { NgModule } from '@angular/core';
|
import { CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA, NgModule } from '@angular/core';
|
||||||
import { RouterModule } from '@angular/router';
|
import { RouterModule } from '@angular/router';
|
||||||
import { HttpClientModule } from '@angular/common/http';
|
import { HttpClientModule } from '@angular/common/http';
|
||||||
import { AppRoutingModule } from './app-routing.module';
|
import { AppRoutingModule } from './app-routing.module';
|
||||||
@ -20,7 +20,7 @@ import { PopInCreateType } from './popin/create-type/create-type';
|
|||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import {
|
import {
|
||||||
HomeScene, HelpScene, TypeScene, SeriesScene, SeasonScene, VideoScene, SettingsScene,
|
HomeScene, HelpScene, TypeScene, SeriesScene, SeasonScene, VideoScene, SettingsScene,
|
||||||
VideoEditScene, SeasonEditScene, SeriesEditScene
|
VideoEditScene, SeasonEditScene, SeriesEditScene,
|
||||||
} from './scene';
|
} from './scene';
|
||||||
import {
|
import {
|
||||||
DataService,
|
DataService,
|
||||||
@ -35,6 +35,9 @@ import { UploadScene } from './scene/upload/upload';
|
|||||||
import { KarCWModule } from '@kangaroo-and-rabbit/kar-cw';
|
import { KarCWModule } from '@kangaroo-and-rabbit/kar-cw';
|
||||||
import { environment } from 'environments/environment';
|
import { environment } from 'environments/environment';
|
||||||
|
|
||||||
|
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
ElementTypeComponent,
|
ElementTypeComponent,
|
||||||
@ -58,6 +61,10 @@ import { environment } from 'environments/environment';
|
|||||||
UploadScene
|
UploadScene
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
|
FormsModule,
|
||||||
|
ReactiveFormsModule,
|
||||||
|
CommonModule,
|
||||||
|
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
RouterModule,
|
RouterModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
@ -80,10 +87,11 @@ import { environment } from 'environments/environment';
|
|||||||
ElementSeriesComponent,
|
ElementSeriesComponent,
|
||||||
ElementSeasonComponent,
|
ElementSeasonComponent,
|
||||||
ElementVideoComponent,
|
ElementVideoComponent,
|
||||||
PopInCreateType
|
PopInCreateType,
|
||||||
],
|
],
|
||||||
bootstrap: [
|
bootstrap: [
|
||||||
AppComponent
|
AppComponent
|
||||||
]
|
],
|
||||||
|
schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA],
|
||||||
})
|
})
|
||||||
export class AppModule { }
|
export class AppModule { }
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* API of the server (auto-generated code)
|
* API of the server (auto-generated code)
|
||||||
*/
|
*/
|
||||||
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, ProgressCallback, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
||||||
import {UUID, } from "./model"
|
import {UUID, } from "./model"
|
||||||
export namespace DataResource {
|
export namespace DataResource {
|
||||||
|
|
||||||
@ -25,6 +25,31 @@ export namespace DataResource {
|
|||||||
data,
|
data,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* Get back some data from the data environment
|
||||||
|
*/
|
||||||
|
// TODO: unmanaged "Response" type: please specify @AsyncType or considered as 'void'.
|
||||||
|
export function retrieveDataId({ restConfig, queries, params, data, }: {
|
||||||
|
restConfig: RESTConfig,
|
||||||
|
queries: {
|
||||||
|
Authorization: string,
|
||||||
|
},
|
||||||
|
params: {
|
||||||
|
id: UUID,
|
||||||
|
},
|
||||||
|
data: string,
|
||||||
|
}): Promise<void> {
|
||||||
|
return RESTRequestVoid({
|
||||||
|
restModel: {
|
||||||
|
endPoint: "/data/{id}",
|
||||||
|
requestType: HTTPRequestModel.GET,
|
||||||
|
},
|
||||||
|
restConfig,
|
||||||
|
params,
|
||||||
|
queries,
|
||||||
|
data,
|
||||||
|
});
|
||||||
|
};
|
||||||
/**
|
/**
|
||||||
* Get a thumbnail of from the data environment (if resize is possible)
|
* Get a thumbnail of from the data environment (if resize is possible)
|
||||||
*/
|
*/
|
||||||
@ -76,29 +101,4 @@ export namespace DataResource {
|
|||||||
data,
|
data,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
/**
|
|
||||||
* Get back some data from the data environment
|
|
||||||
*/
|
|
||||||
// TODO: unmanaged "Response" type: please specify @AsyncType or considered as 'void'.
|
|
||||||
export function retrieveDataId({ restConfig, queries, params, data, }: {
|
|
||||||
restConfig: RESTConfig,
|
|
||||||
queries: {
|
|
||||||
Authorization: string,
|
|
||||||
},
|
|
||||||
params: {
|
|
||||||
id: UUID,
|
|
||||||
},
|
|
||||||
data: string,
|
|
||||||
}): Promise<void> {
|
|
||||||
return RESTRequestVoid({
|
|
||||||
restModel: {
|
|
||||||
endPoint: "/data/{id}",
|
|
||||||
requestType: HTTPRequestModel.GET,
|
|
||||||
},
|
|
||||||
restConfig,
|
|
||||||
params,
|
|
||||||
queries,
|
|
||||||
data,
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* API of the server (auto-generated code)
|
* API of the server (auto-generated code)
|
||||||
*/
|
*/
|
||||||
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, ProgressCallback, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
||||||
import {} from "./model"
|
import {} from "./model"
|
||||||
export namespace Front {
|
export namespace Front {
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/**
|
/**
|
||||||
* API of the server (auto-generated code)
|
* API of the server (auto-generated code)
|
||||||
*/
|
*/
|
||||||
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, ProgressCallback, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
||||||
import {HealthResult, isHealthResult, } from "./model"
|
import {HealthResult, isHealthResult, } from "./model"
|
||||||
export namespace HealthCheck {
|
export namespace HealthCheck {
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* API of the server (auto-generated code)
|
* API of the server (auto-generated code)
|
||||||
*/
|
*/
|
||||||
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, ProgressCallback, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
||||||
import {Long, Media, UUID, isMedia, } from "./model"
|
import {UUID, Long, Media, isMedia, } from "./model"
|
||||||
export namespace MediaResource {
|
export namespace MediaResource {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -16,7 +16,7 @@ export namespace MediaResource {
|
|||||||
}): Promise<void> {
|
}): Promise<void> {
|
||||||
return RESTRequestVoid({
|
return RESTRequestVoid({
|
||||||
restModel: {
|
restModel: {
|
||||||
endPoint: "/video/{id}",
|
endPoint: "/media/{id}",
|
||||||
requestType: HTTPRequestModel.DELETE,
|
requestType: HTTPRequestModel.DELETE,
|
||||||
contentType: HTTPMimeType.TEXT_PLAIN,
|
contentType: HTTPMimeType.TEXT_PLAIN,
|
||||||
accept: HTTPMimeType.JSON,
|
accept: HTTPMimeType.JSON,
|
||||||
@ -36,7 +36,7 @@ export namespace MediaResource {
|
|||||||
}): Promise<Media> {
|
}): Promise<Media> {
|
||||||
return RESTRequestJson({
|
return RESTRequestJson({
|
||||||
restModel: {
|
restModel: {
|
||||||
endPoint: "/video/{id}",
|
endPoint: "/media/{id}",
|
||||||
requestType: HTTPRequestModel.GET,
|
requestType: HTTPRequestModel.GET,
|
||||||
accept: HTTPMimeType.JSON,
|
accept: HTTPMimeType.JSON,
|
||||||
},
|
},
|
||||||
@ -56,7 +56,7 @@ export namespace MediaResource {
|
|||||||
}): Promise<Media> {
|
}): Promise<Media> {
|
||||||
return RESTRequestJson({
|
return RESTRequestJson({
|
||||||
restModel: {
|
restModel: {
|
||||||
endPoint: "/video/{id}",
|
endPoint: "/media/{id}",
|
||||||
requestType: HTTPRequestModel.PATCH,
|
requestType: HTTPRequestModel.PATCH,
|
||||||
contentType: HTTPMimeType.JSON,
|
contentType: HTTPMimeType.JSON,
|
||||||
accept: HTTPMimeType.JSON,
|
accept: HTTPMimeType.JSON,
|
||||||
@ -66,37 +66,10 @@ export namespace MediaResource {
|
|||||||
data,
|
data,
|
||||||
}, isMedia);
|
}, isMedia);
|
||||||
};
|
};
|
||||||
/**
|
|
||||||
* Create a new Media
|
|
||||||
*/
|
|
||||||
export function uploadFile({ restConfig, data, }: {
|
|
||||||
restConfig: RESTConfig,
|
|
||||||
data: {
|
|
||||||
fileName: string,
|
|
||||||
file: File,
|
|
||||||
series: string,
|
|
||||||
universe: string,
|
|
||||||
season: string,
|
|
||||||
episode: string,
|
|
||||||
typeId: string,
|
|
||||||
title: string,
|
|
||||||
},
|
|
||||||
}): Promise<Media> {
|
|
||||||
return RESTRequestJson({
|
|
||||||
restModel: {
|
|
||||||
endPoint: "/video",
|
|
||||||
requestType: HTTPRequestModel.POST,
|
|
||||||
contentType: HTTPMimeType.MULTIPART,
|
|
||||||
accept: HTTPMimeType.JSON,
|
|
||||||
},
|
|
||||||
restConfig,
|
|
||||||
data,
|
|
||||||
}, isMedia);
|
|
||||||
};
|
|
||||||
/**
|
/**
|
||||||
* Upload a new season cover media
|
* Upload a new season cover media
|
||||||
*/
|
*/
|
||||||
export function uploadCover({ restConfig, params, data, }: {
|
export function uploadCover({ restConfig, params, data, progress, }: {
|
||||||
restConfig: RESTConfig,
|
restConfig: RESTConfig,
|
||||||
params: {
|
params: {
|
||||||
id: Long,
|
id: Long,
|
||||||
@ -105,10 +78,11 @@ export namespace MediaResource {
|
|||||||
fileName: string,
|
fileName: string,
|
||||||
file: File,
|
file: File,
|
||||||
},
|
},
|
||||||
|
progress?: ProgressCallback,
|
||||||
}): Promise<Media> {
|
}): Promise<Media> {
|
||||||
return RESTRequestJson({
|
return RESTRequestJson({
|
||||||
restModel: {
|
restModel: {
|
||||||
endPoint: "/video/{id}/cover",
|
endPoint: "/media/{id}/cover",
|
||||||
requestType: HTTPRequestModel.POST,
|
requestType: HTTPRequestModel.POST,
|
||||||
contentType: HTTPMimeType.MULTIPART,
|
contentType: HTTPMimeType.MULTIPART,
|
||||||
accept: HTTPMimeType.JSON,
|
accept: HTTPMimeType.JSON,
|
||||||
@ -116,6 +90,22 @@ export namespace MediaResource {
|
|||||||
restConfig,
|
restConfig,
|
||||||
params,
|
params,
|
||||||
data,
|
data,
|
||||||
|
progress,
|
||||||
|
}, isMedia);
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Get all Media
|
||||||
|
*/
|
||||||
|
export function gets({ restConfig, }: {
|
||||||
|
restConfig: RESTConfig,
|
||||||
|
}): Promise<Media[]> {
|
||||||
|
return RESTRequestJsonArray({
|
||||||
|
restModel: {
|
||||||
|
endPoint: "/media",
|
||||||
|
requestType: HTTPRequestModel.GET,
|
||||||
|
accept: HTTPMimeType.JSON,
|
||||||
|
},
|
||||||
|
restConfig,
|
||||||
}, isMedia);
|
}, isMedia);
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
@ -130,7 +120,7 @@ export namespace MediaResource {
|
|||||||
}): Promise<Media> {
|
}): Promise<Media> {
|
||||||
return RESTRequestJson({
|
return RESTRequestJson({
|
||||||
restModel: {
|
restModel: {
|
||||||
endPoint: "/video/{id}/cover/{coverId}",
|
endPoint: "/media/{id}/cover/{coverId}",
|
||||||
requestType: HTTPRequestModel.DELETE,
|
requestType: HTTPRequestModel.DELETE,
|
||||||
contentType: HTTPMimeType.TEXT_PLAIN,
|
contentType: HTTPMimeType.TEXT_PLAIN,
|
||||||
accept: HTTPMimeType.JSON,
|
accept: HTTPMimeType.JSON,
|
||||||
@ -140,18 +130,32 @@ export namespace MediaResource {
|
|||||||
}, isMedia);
|
}, isMedia);
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* Get all Media
|
* Create a new Media
|
||||||
*/
|
*/
|
||||||
export function gets({ restConfig, }: {
|
export function uploadFile({ restConfig, data, progress, }: {
|
||||||
restConfig: RESTConfig,
|
restConfig: RESTConfig,
|
||||||
}): Promise<Media[]> {
|
data: {
|
||||||
return RESTRequestJsonArray({
|
fileName: string,
|
||||||
|
file: File,
|
||||||
|
series: string,
|
||||||
|
universe: string,
|
||||||
|
season: string,
|
||||||
|
episode: string,
|
||||||
|
typeId: string,
|
||||||
|
title: string,
|
||||||
|
},
|
||||||
|
progress?: ProgressCallback,
|
||||||
|
}): Promise<Media> {
|
||||||
|
return RESTRequestJson({
|
||||||
restModel: {
|
restModel: {
|
||||||
endPoint: "/video",
|
endPoint: "/media",
|
||||||
requestType: HTTPRequestModel.GET,
|
requestType: HTTPRequestModel.POST,
|
||||||
|
contentType: HTTPMimeType.MULTIPART,
|
||||||
accept: HTTPMimeType.JSON,
|
accept: HTTPMimeType.JSON,
|
||||||
},
|
},
|
||||||
restConfig,
|
restConfig,
|
||||||
|
data,
|
||||||
|
progress,
|
||||||
}, isMedia);
|
}, isMedia);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -270,15 +270,15 @@ export function isType(data: any): data is Type {
|
|||||||
|
|
||||||
export const ZodUserMediaAdvancement = ZodGenericDataSoftDelete.extend({
|
export const ZodUserMediaAdvancement = ZodGenericDataSoftDelete.extend({
|
||||||
// Foreign Key Id of the user
|
// Foreign Key Id of the user
|
||||||
userId: ZodLong,
|
userId: ZodLong.optional(),
|
||||||
// Id of the media
|
// Id of the media
|
||||||
mediaId: ZodLong,
|
mediaId: ZodLong.optional(),
|
||||||
// Percent of advancement in the media
|
// Percent of advancement in the media
|
||||||
percent: ZodFloat,
|
percent: ZodFloat.optional(),
|
||||||
// Number of second of advancement in the media
|
// Number of second of advancement in the media
|
||||||
time: ZodInteger,
|
time: ZodInteger.optional(),
|
||||||
// Number of time this media has been read
|
// Number of time this media has been read
|
||||||
count: ZodInteger
|
count: ZodInteger.optional()
|
||||||
});
|
});
|
||||||
export type UserMediaAdvancement = zod.infer<typeof ZodUserMediaAdvancement>;
|
export type UserMediaAdvancement = zod.infer<typeof ZodUserMediaAdvancement>;
|
||||||
export function isUserMediaAdvancement(data: any): data is UserMediaAdvancement {
|
export function isUserMediaAdvancement(data: any): data is UserMediaAdvancement {
|
||||||
|
@ -67,22 +67,33 @@ export function isArrayOf<TYPE>(
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isNullOrUndefined(data: any): data is undefined | null {
|
||||||
|
return data === undefined || data === null;
|
||||||
|
}
|
||||||
|
|
||||||
export type RESTRequestType = {
|
export type RESTRequestType = {
|
||||||
restModel: RESTModel,
|
restModel: RESTModel,
|
||||||
restConfig: RESTConfig,
|
restConfig: RESTConfig,
|
||||||
data?: any,
|
data?: any,
|
||||||
params?: object,
|
params?: object,
|
||||||
queries?: object,
|
queries?: object,
|
||||||
|
progress?: ProgressCallback,
|
||||||
};
|
};
|
||||||
|
|
||||||
function removeTrailingSlashes(input: string): string {
|
function removeTrailingSlashes(input: string): string {
|
||||||
|
if (isNullOrUndefined(input)) {
|
||||||
|
return "undefined";
|
||||||
|
}
|
||||||
return input.replace(/\/+$/, '');
|
return input.replace(/\/+$/, '');
|
||||||
}
|
}
|
||||||
function removeLeadingSlashes(input: string): string {
|
function removeLeadingSlashes(input: string): string {
|
||||||
|
if (isNullOrUndefined(input)) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
return input.replace(/^\/+/, '');
|
return input.replace(/^\/+/, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function RESTUrl({ restModel, restConfig, data, params, queries }: RESTRequestType): string {
|
export function RESTUrl({ restModel, restConfig, params, queries }: RESTRequestType): string {
|
||||||
// Create the URL PATH:
|
// Create the URL PATH:
|
||||||
let generateUrl = `${removeTrailingSlashes(restConfig.server)}/${removeLeadingSlashes(restModel.endPoint)}`;
|
let generateUrl = `${removeTrailingSlashes(restConfig.server)}/${removeLeadingSlashes(restModel.endPoint)}`;
|
||||||
if (params !== undefined) {
|
if (params !== undefined) {
|
||||||
@ -91,7 +102,7 @@ export function RESTUrl({ restModel, restConfig, data, params, queries }: RESTRe
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (queries === undefined && (restConfig.token === undefined || restModel.tokenInUrl !== true)) {
|
if (queries === undefined && (restConfig.token === undefined || restModel.tokenInUrl !== true)) {
|
||||||
return generateUrl;
|
return generateUrl;
|
||||||
}
|
}
|
||||||
const searchParams = new URLSearchParams();
|
const searchParams = new URLSearchParams();
|
||||||
if (queries !== undefined) {
|
if (queries !== undefined) {
|
||||||
@ -112,7 +123,64 @@ export function RESTUrl({ restModel, restConfig, data, params, queries }: RESTRe
|
|||||||
return generateUrl + "?" + searchParams.toString();
|
return generateUrl + "?" + searchParams.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function RESTRequest({ restModel, restConfig, data, params, queries }: RESTRequestType): Promise<ModelResponseHttp> {
|
|
||||||
|
export type ProgressCallback = (count: number, total: number) => void;
|
||||||
|
// input: RequestInfo | URL, init?: RequestInit): Promise<Response>;
|
||||||
|
export function fetchProgress<TYPE>(generateUrl: string, { method, headers, body }: {
|
||||||
|
method: HTTPRequestModel,
|
||||||
|
headers: any,
|
||||||
|
body: any,
|
||||||
|
}, progress: ProgressCallback): Promise<Response> {
|
||||||
|
|
||||||
|
//async function fetchForm(form, options = {}) {
|
||||||
|
const action = generateUrl;
|
||||||
|
const data = body;
|
||||||
|
const xhr = new XMLHttpRequest();
|
||||||
|
console.log(`call fetch progress ...`);
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
xhr.responseType = 'blob';
|
||||||
|
xhr.onreadystatechange = () => {
|
||||||
|
if (xhr.readyState != 4) {
|
||||||
|
console.log(` ==> READY state`);
|
||||||
|
// done
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log(` ==> has finish ...`);
|
||||||
|
const response = new Response(xhr.response, {
|
||||||
|
status: xhr.status,
|
||||||
|
statusText: xhr.statusText
|
||||||
|
});
|
||||||
|
resolve(response);
|
||||||
|
}
|
||||||
|
// If fail:
|
||||||
|
xhr.addEventListener('error', () => {
|
||||||
|
console.log(` ==> IS REJECTED`);
|
||||||
|
reject(new TypeError('Failed to fetch'))
|
||||||
|
});
|
||||||
|
// Link the progression callback
|
||||||
|
if (progress) {
|
||||||
|
xhr.addEventListener('progress', (dataEvent) => {
|
||||||
|
console.log(` ==> has a progress event: ${dataEvent.loaded} / ${dataEvent.total}`);
|
||||||
|
progress(dataEvent.loaded, dataEvent.total);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
console.log(` ==> open`);
|
||||||
|
// open the socket
|
||||||
|
xhr.open(method, action, true);
|
||||||
|
console.log(` ==> set header`);
|
||||||
|
// configure the header
|
||||||
|
if (!isNullOrUndefined(headers)) {
|
||||||
|
for (const [key, value] of Object.entries(headers)) {
|
||||||
|
xhr.setRequestHeader(key, value as string);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(` ==> send`);
|
||||||
|
xhr.send(data);
|
||||||
|
console.log(` ==> send done`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
export function RESTRequest({ restModel, restConfig, data, params, queries, progress }: RESTRequestType): Promise<ModelResponseHttp> {
|
||||||
// Create the URL PATH:
|
// Create the URL PATH:
|
||||||
let generateUrl = RESTUrl({ restModel, restConfig, data, params, queries });
|
let generateUrl = RESTUrl({ restModel, restConfig, data, params, queries });
|
||||||
let headers: any = {};
|
let headers: any = {};
|
||||||
@ -141,11 +209,21 @@ export function RESTRequest({ restModel, restConfig, data, params, queries }: RE
|
|||||||
}
|
}
|
||||||
console.log(`Call ${generateUrl}`)
|
console.log(`Call ${generateUrl}`)
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
fetch(generateUrl, {
|
let action: Promise<Response> = undefined;
|
||||||
method: restModel.requestType,
|
if (isNullOrUndefined(progress)) {
|
||||||
headers,
|
action = fetch(generateUrl, {
|
||||||
body,
|
method: restModel.requestType,
|
||||||
}).then((response: Response) => {
|
headers,
|
||||||
|
body,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
action = fetchProgress(generateUrl, {
|
||||||
|
method: restModel.requestType,
|
||||||
|
headers,
|
||||||
|
body,
|
||||||
|
}, progress);
|
||||||
|
}
|
||||||
|
action.then((response: Response) => {
|
||||||
if (response.status >= 200 && response.status <= 299) {
|
if (response.status >= 200 && response.status <= 299) {
|
||||||
const contentType = response.headers.get('Content-Type');
|
const contentType = response.headers.get('Content-Type');
|
||||||
if (restModel.accept !== contentType) {
|
if (restModel.accept !== contentType) {
|
||||||
@ -196,6 +274,8 @@ export function RESTRequest({ restModel, restConfig, data, params, queries }: RE
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export function RESTRequestJson<TYPE>(request: RESTRequestType, checker: (data: any) => data is TYPE): Promise<TYPE> {
|
export function RESTRequestJson<TYPE>(request: RESTRequestType, checker: (data: any) => data is TYPE): Promise<TYPE> {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
RESTRequest(request).then((value: ModelResponseHttp) => {
|
RESTRequest(request).then((value: ModelResponseHttp) => {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* API of the server (auto-generated code)
|
* API of the server (auto-generated code)
|
||||||
*/
|
*/
|
||||||
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, ProgressCallback, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
||||||
import {Long, Season, UUID, isSeason, } from "./model"
|
import {UUID, Long, Season, isSeason, } from "./model"
|
||||||
export namespace SeasonResource {
|
export namespace SeasonResource {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -88,7 +88,7 @@ export namespace SeasonResource {
|
|||||||
/**
|
/**
|
||||||
* Upload a new season cover season
|
* Upload a new season cover season
|
||||||
*/
|
*/
|
||||||
export function uploadCover({ restConfig, params, data, }: {
|
export function uploadCover({ restConfig, params, data, progress, }: {
|
||||||
restConfig: RESTConfig,
|
restConfig: RESTConfig,
|
||||||
params: {
|
params: {
|
||||||
id: Long,
|
id: Long,
|
||||||
@ -97,10 +97,11 @@ export namespace SeasonResource {
|
|||||||
fileName: string,
|
fileName: string,
|
||||||
file: File,
|
file: File,
|
||||||
},
|
},
|
||||||
|
progress?: ProgressCallback,
|
||||||
}): Promise<Season> {
|
}): Promise<Season> {
|
||||||
return RESTRequestJson({
|
return RESTRequestJson({
|
||||||
restModel: {
|
restModel: {
|
||||||
endPoint: "/season/{id}/add_cover",
|
endPoint: "/season/{id}/cover",
|
||||||
requestType: HTTPRequestModel.POST,
|
requestType: HTTPRequestModel.POST,
|
||||||
contentType: HTTPMimeType.MULTIPART,
|
contentType: HTTPMimeType.MULTIPART,
|
||||||
accept: HTTPMimeType.JSON,
|
accept: HTTPMimeType.JSON,
|
||||||
@ -108,6 +109,22 @@ export namespace SeasonResource {
|
|||||||
restConfig,
|
restConfig,
|
||||||
params,
|
params,
|
||||||
data,
|
data,
|
||||||
|
progress,
|
||||||
|
}, isSeason);
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Get a specific Season with his ID
|
||||||
|
*/
|
||||||
|
export function gets({ restConfig, }: {
|
||||||
|
restConfig: RESTConfig,
|
||||||
|
}): Promise<Season[]> {
|
||||||
|
return RESTRequestJsonArray({
|
||||||
|
restModel: {
|
||||||
|
endPoint: "/season",
|
||||||
|
requestType: HTTPRequestModel.GET,
|
||||||
|
accept: HTTPMimeType.JSON,
|
||||||
|
},
|
||||||
|
restConfig,
|
||||||
}, isSeason);
|
}, isSeason);
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
@ -131,19 +148,4 @@ export namespace SeasonResource {
|
|||||||
params,
|
params,
|
||||||
}, isSeason);
|
}, isSeason);
|
||||||
};
|
};
|
||||||
/**
|
|
||||||
* Get a specific Season with his ID
|
|
||||||
*/
|
|
||||||
export function gets({ restConfig, }: {
|
|
||||||
restConfig: RESTConfig,
|
|
||||||
}): Promise<Season[]> {
|
|
||||||
return RESTRequestJsonArray({
|
|
||||||
restModel: {
|
|
||||||
endPoint: "/season",
|
|
||||||
requestType: HTTPRequestModel.GET,
|
|
||||||
accept: HTTPMimeType.JSON,
|
|
||||||
},
|
|
||||||
restConfig,
|
|
||||||
}, isSeason);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* API of the server (auto-generated code)
|
* API of the server (auto-generated code)
|
||||||
*/
|
*/
|
||||||
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, ProgressCallback, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
||||||
import {Series, Long, UUID, isSeries, } from "./model"
|
import { UUID, Long, Series, isSeries, } from "./model"
|
||||||
export namespace SeriesResource {
|
export namespace SeriesResource {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -88,7 +88,7 @@ export namespace SeriesResource {
|
|||||||
/**
|
/**
|
||||||
* Upload a new season cover Series
|
* Upload a new season cover Series
|
||||||
*/
|
*/
|
||||||
export function uploadCover({ restConfig, params, data, }: {
|
export function uploadCover({ restConfig, params, data, progress, }: {
|
||||||
restConfig: RESTConfig,
|
restConfig: RESTConfig,
|
||||||
params: {
|
params: {
|
||||||
id: Long,
|
id: Long,
|
||||||
@ -97,6 +97,7 @@ export namespace SeriesResource {
|
|||||||
fileName: string,
|
fileName: string,
|
||||||
file: File,
|
file: File,
|
||||||
},
|
},
|
||||||
|
progress?: ProgressCallback,
|
||||||
}): Promise<Series> {
|
}): Promise<Series> {
|
||||||
return RESTRequestJson({
|
return RESTRequestJson({
|
||||||
restModel: {
|
restModel: {
|
||||||
@ -108,6 +109,22 @@ export namespace SeriesResource {
|
|||||||
restConfig,
|
restConfig,
|
||||||
params,
|
params,
|
||||||
data,
|
data,
|
||||||
|
progress,
|
||||||
|
}, isSeries);
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Get all Series
|
||||||
|
*/
|
||||||
|
export function gets({ restConfig, }: {
|
||||||
|
restConfig: RESTConfig,
|
||||||
|
}): Promise<Series[]> {
|
||||||
|
return RESTRequestJsonArray({
|
||||||
|
restModel: {
|
||||||
|
endPoint: "/series",
|
||||||
|
requestType: HTTPRequestModel.GET,
|
||||||
|
accept: HTTPMimeType.JSON,
|
||||||
|
},
|
||||||
|
restConfig,
|
||||||
}, isSeries);
|
}, isSeries);
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
@ -131,19 +148,4 @@ export namespace SeriesResource {
|
|||||||
params,
|
params,
|
||||||
}, isSeries);
|
}, isSeries);
|
||||||
};
|
};
|
||||||
/**
|
|
||||||
* Get all Series
|
|
||||||
*/
|
|
||||||
export function gets({ restConfig, }: {
|
|
||||||
restConfig: RESTConfig,
|
|
||||||
}): Promise<Series[]> {
|
|
||||||
return RESTRequestJsonArray({
|
|
||||||
restModel: {
|
|
||||||
endPoint: "/series",
|
|
||||||
requestType: HTTPRequestModel.GET,
|
|
||||||
accept: HTTPMimeType.JSON,
|
|
||||||
},
|
|
||||||
restConfig,
|
|
||||||
}, isSeries);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* API of the server (auto-generated code)
|
* API of the server (auto-generated code)
|
||||||
*/
|
*/
|
||||||
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, ProgressCallback, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
||||||
import {Long, Type, UUID, isType, } from "./model"
|
import {UUID, Long, Type, isType, } from "./model"
|
||||||
export namespace TypeResource {
|
export namespace TypeResource {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -88,7 +88,7 @@ export namespace TypeResource {
|
|||||||
/**
|
/**
|
||||||
* Upload a new season cover Type
|
* Upload a new season cover Type
|
||||||
*/
|
*/
|
||||||
export function uploadCover({ restConfig, params, data, }: {
|
export function uploadCover({ restConfig, params, data, progress, }: {
|
||||||
restConfig: RESTConfig,
|
restConfig: RESTConfig,
|
||||||
params: {
|
params: {
|
||||||
id: Long,
|
id: Long,
|
||||||
@ -97,6 +97,7 @@ export namespace TypeResource {
|
|||||||
fileName: string,
|
fileName: string,
|
||||||
file: File,
|
file: File,
|
||||||
},
|
},
|
||||||
|
progress?: ProgressCallback,
|
||||||
}): Promise<Type> {
|
}): Promise<Type> {
|
||||||
return RESTRequestJson({
|
return RESTRequestJson({
|
||||||
restModel: {
|
restModel: {
|
||||||
@ -108,6 +109,22 @@ export namespace TypeResource {
|
|||||||
restConfig,
|
restConfig,
|
||||||
params,
|
params,
|
||||||
data,
|
data,
|
||||||
|
progress,
|
||||||
|
}, isType);
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* Get all Type
|
||||||
|
*/
|
||||||
|
export function gets({ restConfig, }: {
|
||||||
|
restConfig: RESTConfig,
|
||||||
|
}): Promise<Type[]> {
|
||||||
|
return RESTRequestJsonArray({
|
||||||
|
restModel: {
|
||||||
|
endPoint: "/type",
|
||||||
|
requestType: HTTPRequestModel.GET,
|
||||||
|
accept: HTTPMimeType.JSON,
|
||||||
|
},
|
||||||
|
restConfig,
|
||||||
}, isType);
|
}, isType);
|
||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
@ -131,19 +148,4 @@ export namespace TypeResource {
|
|||||||
params,
|
params,
|
||||||
}, isType);
|
}, isType);
|
||||||
};
|
};
|
||||||
/**
|
|
||||||
* Get all Type
|
|
||||||
*/
|
|
||||||
export function gets({ restConfig, }: {
|
|
||||||
restConfig: RESTConfig,
|
|
||||||
}): Promise<Type[]> {
|
|
||||||
return RESTRequestJsonArray({
|
|
||||||
restModel: {
|
|
||||||
endPoint: "/type",
|
|
||||||
requestType: HTTPRequestModel.GET,
|
|
||||||
accept: HTTPMimeType.JSON,
|
|
||||||
},
|
|
||||||
restConfig,
|
|
||||||
}, isType);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* API of the server (auto-generated code)
|
* API of the server (auto-generated code)
|
||||||
*/
|
*/
|
||||||
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, ProgressCallback, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
||||||
import {MediaInformationsDelta, Long, UserMediaAdvancement, isUserMediaAdvancement, } from "./model"
|
import {Long, UserMediaAdvancement, MediaInformationsDelta, isUserMediaAdvancement, } from "./model"
|
||||||
export namespace UserMediaAdvancementResource {
|
export namespace UserMediaAdvancementResource {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
* API of the server (auto-generated code)
|
* API of the server (auto-generated code)
|
||||||
*/
|
*/
|
||||||
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
import { HTTPMimeType, HTTPRequestModel, ModelResponseHttp, RESTConfig, ProgressCallback, RESTRequestJson, RESTRequestJsonArray, RESTRequestVoid } from "./rest-tools"
|
||||||
import {UserOut, Long, UserKarideo, isUserOut, isUserKarideo, } from "./model"
|
import {Long, UserKarideo, UserOut, isUserKarideo, isUserOut, } from "./model"
|
||||||
export namespace UserResource {
|
export namespace UserResource {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -24,21 +24,6 @@ export namespace UserResource {
|
|||||||
params,
|
params,
|
||||||
}, isUserKarideo);
|
}, isUserKarideo);
|
||||||
};
|
};
|
||||||
/**
|
|
||||||
* Get the user personal data
|
|
||||||
*/
|
|
||||||
export function getMe({ restConfig, }: {
|
|
||||||
restConfig: RESTConfig,
|
|
||||||
}): Promise<UserOut> {
|
|
||||||
return RESTRequestJson({
|
|
||||||
restModel: {
|
|
||||||
endPoint: "/users/me",
|
|
||||||
requestType: HTTPRequestModel.GET,
|
|
||||||
accept: HTTPMimeType.JSON,
|
|
||||||
},
|
|
||||||
restConfig,
|
|
||||||
}, isUserOut);
|
|
||||||
};
|
|
||||||
/**
|
/**
|
||||||
* Get all the users
|
* Get all the users
|
||||||
*/
|
*/
|
||||||
@ -54,4 +39,19 @@ export namespace UserResource {
|
|||||||
restConfig,
|
restConfig,
|
||||||
}, isUserKarideo);
|
}, isUserKarideo);
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* Get the user personal data
|
||||||
|
*/
|
||||||
|
export function getMe({ restConfig, }: {
|
||||||
|
restConfig: RESTConfig,
|
||||||
|
}): Promise<UserOut> {
|
||||||
|
return RESTRequestJson({
|
||||||
|
restModel: {
|
||||||
|
endPoint: "/users/me",
|
||||||
|
requestType: HTTPRequestModel.GET,
|
||||||
|
accept: HTTPMimeType.JSON,
|
||||||
|
},
|
||||||
|
restConfig,
|
||||||
|
}, isUserOut);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,6 @@ export class ElementTypeComponent implements OnInit {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let self = this;
|
let self = this;
|
||||||
console.log(" ??? Get element ! " + JSON.stringify(this.element));
|
|
||||||
self.name = this.element.name;
|
self.name = this.element.name;
|
||||||
self.description = this.element.description;
|
self.description = this.element.description;
|
||||||
self.covers = self.dataService.getListThumbnailUrl(this.element.covers);
|
self.covers = self.dataService.getListThumbnailUrl(this.element.covers);
|
||||||
|
@ -28,10 +28,8 @@ export class HomeScene implements OnInit {
|
|||||||
.then((response) => {
|
.then((response) => {
|
||||||
self.error = '';
|
self.error = '';
|
||||||
self.dataList = response;
|
self.dataList = response;
|
||||||
console.log(`Get response: ${JSON.stringify(response, null, 2)}`);
|
|
||||||
}).catch((response) => {
|
}).catch((response) => {
|
||||||
self.error = 'Wrong e-mail/login or password';
|
self.error = 'Wrong e-mail/login or password';
|
||||||
console.log(`[E] ${self.constructor.name}: Does not get a correct response from the server ...`);
|
|
||||||
self.dataList = [];
|
self.dataList = [];
|
||||||
});
|
});
|
||||||
this.arianeService.reset();
|
this.arianeService.reset();
|
||||||
|
@ -64,17 +64,18 @@ export class SeriesScene implements OnInit {
|
|||||||
self.name = '???';
|
self.name = '???';
|
||||||
self.cover = null;
|
self.cover = null;
|
||||||
self.covers = [];
|
self.covers = [];
|
||||||
// no check just ==> an error occured on season
|
// no check just ==> an error occurred on season
|
||||||
});
|
});
|
||||||
//console.log(`get parameter id: ${ this.idSeries}`);
|
console.log(`this.seriesService.getSeason(${this.idSeries})`);
|
||||||
this.seriesService.getSeason(this.idSeries)
|
this.seriesService.getSeason(this.idSeries)
|
||||||
.then((response: Season[]) => {
|
.then((response: Season[]) => {
|
||||||
//console.log(`>>>> get season : ${JSON.stringify(response)}`)
|
console.log(`>>>> get season : ${JSON.stringify(response)}`)
|
||||||
self.seasonsError = '';
|
self.seasonsError = '';
|
||||||
self.seasons = response;
|
self.seasons = response;
|
||||||
updateEnded.subSaison = true;
|
updateEnded.subSaison = true;
|
||||||
self.checkIfJumpIsNeeded(updateEnded);
|
self.checkIfJumpIsNeeded(updateEnded);
|
||||||
}).catch((response) => {
|
}).catch((response) => {
|
||||||
|
console.log(`>>>> get season (FAIL) : ${JSON.stringify(response)}`)
|
||||||
self.seasonsError = 'Can not get the list of season in this series';
|
self.seasonsError = 'Can not get the list of season in this series';
|
||||||
self.seasons = [];
|
self.seasons = [];
|
||||||
updateEnded.subSaison = true;
|
updateEnded.subSaison = true;
|
||||||
@ -82,12 +83,13 @@ export class SeriesScene implements OnInit {
|
|||||||
});
|
});
|
||||||
this.seriesService.getVideo(this.idSeries)
|
this.seriesService.getVideo(this.idSeries)
|
||||||
.then((response: Season[]) => {
|
.then((response: Season[]) => {
|
||||||
//console.log(`>>>> get video : ${JSON.stringify(response)}`)
|
console.log(`>>>> get video : ${JSON.stringify(response)}`)
|
||||||
self.videosError = '';
|
self.videosError = '';
|
||||||
self.videos = response;
|
self.videos = response;
|
||||||
updateEnded.subVideo = true;
|
updateEnded.subVideo = true;
|
||||||
self.checkIfJumpIsNeeded(updateEnded);
|
self.checkIfJumpIsNeeded(updateEnded);
|
||||||
}).catch((response) => {
|
}).catch((response) => {
|
||||||
|
console.log(`>>>> get video (FAIL): ${JSON.stringify(response)}`)
|
||||||
self.videosError = 'Can not get the List of video without season';
|
self.videosError = 'Can not get the List of video without season';
|
||||||
self.videos = [];
|
self.videos = [];
|
||||||
updateEnded.subVideo = true;
|
updateEnded.subVideo = true;
|
||||||
|
@ -5,8 +5,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { Series } from 'app/back-api';
|
||||||
|
|
||||||
import { TypeService, DataService, ArianeService, AdvancementService } from 'app/service';
|
import { TypeService, DataService, ArianeService, AdvancementService, SeriesService } from 'app/service';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-type',
|
selector: 'app-type',
|
||||||
@ -27,6 +28,7 @@ export class TypeScene implements OnInit {
|
|||||||
constructor(
|
constructor(
|
||||||
private dataService: DataService,
|
private dataService: DataService,
|
||||||
private typeService: TypeService,
|
private typeService: TypeService,
|
||||||
|
private seriesService: SeriesService,
|
||||||
private arianeService: ArianeService,
|
private arianeService: ArianeService,
|
||||||
private advancementService: AdvancementService) {
|
private advancementService: AdvancementService) {
|
||||||
|
|
||||||
@ -43,12 +45,12 @@ export class TypeScene implements OnInit {
|
|||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.typeId = this.arianeService.getTypeId();
|
this.typeId = this.arianeService.getTypeId();
|
||||||
let self = this;
|
let self = this;
|
||||||
console.log(`get type global id: ${this.typeId}`);
|
//console.log(`get type global id: ${this.typeId}`);
|
||||||
this.typeService.get(this.typeId)
|
this.typeService.get(this.typeId)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
self.name = response.name;
|
self.name = response.name;
|
||||||
self.description = response.description;
|
self.description = response.description;
|
||||||
console.log(` ==> get answer type detail: ${JSON.stringify(response)}`);
|
//console.log(` ==> get answer type detail: ${JSON.stringify(response)}`);
|
||||||
if (response.covers === undefined || response.covers === null || response.covers.length === 0) {
|
if (response.covers === undefined || response.covers === null || response.covers.length === 0) {
|
||||||
self.cover = null;
|
self.cover = null;
|
||||||
self.covers = [];
|
self.covers = [];
|
||||||
@ -64,23 +66,23 @@ export class TypeScene implements OnInit {
|
|||||||
self.covers = [];
|
self.covers = [];
|
||||||
self.cover = null;
|
self.cover = null;
|
||||||
});
|
});
|
||||||
this.typeService.getSubSeries(this.typeId)
|
this.seriesService.getSeriesWithType(this.typeId)
|
||||||
.then((response) => {
|
.then((response: Series[]) => {
|
||||||
console.log(` ==> get answer sub-series: ${JSON.stringify(response)}`);
|
//console.log(` ==> get answer sub-series: ${JSON.stringify(response)}`);
|
||||||
self.seriessError = '';
|
self.seriessError = '';
|
||||||
self.series = response;
|
self.series = response;
|
||||||
}).catch((response) => {
|
}).catch((response) => {
|
||||||
console.log(` ==> get answer sub-series (ERROR): ${JSON.stringify(response)}`);
|
//console.log(` ==> get answer sub-series (ERROR): ${JSON.stringify(response)}`);
|
||||||
self.seriessError = 'Wrong e-mail/login or password';
|
self.seriessError = 'Wrong e-mail/login or password';
|
||||||
self.series = [];
|
self.series = [];
|
||||||
});
|
});
|
||||||
this.typeService.getSubVideo(this.typeId)
|
this.typeService.getSubVideo(this.typeId)
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
console.log(` ==> get answer sub-video: ${JSON.stringify(response)}`);
|
//console.log(` ==> get answer sub-video: ${JSON.stringify(response)}`);
|
||||||
self.videosError = '';
|
self.videosError = '';
|
||||||
self.videos = response;
|
self.videos = response;
|
||||||
}).catch((response) => {
|
}).catch((response) => {
|
||||||
console.log(` ==> get answer sub-video (ERROR): ${JSON.stringify(response)}`);
|
//console.log(` ==> get answer sub-video (ERROR): ${JSON.stringify(response)}`);
|
||||||
self.videosError = 'Wrong e-mail/login or password';
|
self.videosError = 'Wrong e-mail/login or password';
|
||||||
self.videos = [];
|
self.videos = [];
|
||||||
});
|
});
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
import { PopInService, UploadProgress } from '@kangaroo-and-rabbit/kar-cw';
|
import { PopInService, UploadProgress } from '@kangaroo-and-rabbit/kar-cw';
|
||||||
|
import { Series } from 'app/back-api';
|
||||||
|
|
||||||
import { TypeService, SeriesService, MediaService, SeasonService } from 'app/service';
|
import { TypeService, SeriesService, MediaService, SeasonService } from 'app/service';
|
||||||
|
|
||||||
@ -151,8 +152,8 @@ export class UploadScene implements OnInit {
|
|||||||
let self = this;
|
let self = this;
|
||||||
this.updateNeedSend();
|
this.updateNeedSend();
|
||||||
if (this.typeId !== null) {
|
if (this.typeId !== null) {
|
||||||
self.typeService.getSubSeries(this.typeId)
|
self.seriesService.getSeriesWithType(this.typeId)
|
||||||
.then((response2) => {
|
.then((response2: Series[]) => {
|
||||||
for (let iii = 0; iii < response2.length; iii++) {
|
for (let iii = 0; iii < response2.length; iii++) {
|
||||||
self.listSeries.push({ value: response2[iii].id, label: response2[iii].name });
|
self.listSeries.push({ value: response2[iii].id, label: response2[iii].name });
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ export class VideoEditScene implements OnInit {
|
|||||||
let self = this;
|
let self = this;
|
||||||
this.updateNeedSend();
|
this.updateNeedSend();
|
||||||
if (this.data.typeId !== undefined) {
|
if (this.data.typeId !== undefined) {
|
||||||
self.typeService.getSubSeries(this.data.typeId)
|
self.seriesService.getSeriesWithType(this.data.typeId)
|
||||||
.then((response2: Series[]) => {
|
.then((response2: Series[]) => {
|
||||||
for (let iii = 0; iii < response2.length; iii++) {
|
for (let iii = 0; iii < response2.length; iii++) {
|
||||||
self.listSeries.push({ value: response2[iii].id, label: response2[iii].name });
|
self.listSeries.push({ value: response2[iii].id, label: response2[iii].name });
|
||||||
|
@ -83,7 +83,7 @@ export class ArianeService {
|
|||||||
this.setType(undefined);
|
this.setType(undefined);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getCurrrentSegment(): string | undefined {
|
getCurrentSegment(): string | undefined {
|
||||||
return this.segment;
|
return this.segment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { SessionService, DataStore } from '@kangaroo-and-rabbit/kar-cw';
|
import { SessionService, DataStore } from '@kangaroo-and-rabbit/kar-cw';
|
||||||
import { Media, MediaResource, UUID } from 'app/back-api';
|
import { Media, MediaResource, UUID } from 'app/back-api';
|
||||||
import { RESTConfig } from 'app/back-api/rest-tools';
|
import { ProgressCallback, RESTConfig } from 'app/back-api/rest-tools';
|
||||||
import { environment } from 'environments/environment';
|
import { environment } from 'environments/environment';
|
||||||
import { GenericDataService } from './GenericDataService';
|
import { GenericDataService } from './GenericDataService';
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ export class MediaService extends GenericDataService<Media> {
|
|||||||
episode?: number,
|
episode?: number,
|
||||||
title?: string,
|
title?: string,
|
||||||
typeId?: number,
|
typeId?: number,
|
||||||
progress: any = null) {
|
progress: ProgressCallback | undefined = undefined) {
|
||||||
const formData = {
|
const formData = {
|
||||||
fileName: file.name,
|
fileName: file.name,
|
||||||
file,
|
file,
|
||||||
@ -52,7 +52,7 @@ export class MediaService extends GenericDataService<Media> {
|
|||||||
return MediaResource.uploadFile({
|
return MediaResource.uploadFile({
|
||||||
restConfig: this.getRestConfig(),
|
restConfig: this.getRestConfig(),
|
||||||
data: formData,
|
data: formData,
|
||||||
//progress
|
progress
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ export class MediaService extends GenericDataService<Media> {
|
|||||||
}
|
}
|
||||||
uploadCover(id: number,
|
uploadCover(id: number,
|
||||||
file: File,
|
file: File,
|
||||||
progress: any = null): Promise<Media> {
|
progress: ProgressCallback | undefined = undefined): Promise<Media> {
|
||||||
let self = this;
|
let self = this;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
MediaResource.uploadCover({
|
MediaResource.uploadCover({
|
||||||
@ -122,7 +122,7 @@ export class MediaService extends GenericDataService<Media> {
|
|||||||
file,
|
file,
|
||||||
fileName: file.name
|
fileName: file.name
|
||||||
},
|
},
|
||||||
//progress
|
progress
|
||||||
}).then((value) => {
|
}).then((value) => {
|
||||||
self.dataStore.updateValue(value);
|
self.dataStore.updateValue(value);
|
||||||
resolve(value);
|
resolve(value);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
import { Injectable } from '@angular/core';
|
import { Injectable } from '@angular/core';
|
||||||
import { DataStore, SessionService, TypeCheck } from '@kangaroo-and-rabbit/kar-cw';
|
import { DataStore, SessionService, TypeCheck } from '@kangaroo-and-rabbit/kar-cw';
|
||||||
import { Media, Season, SeasonResource, UUID } from 'app/back-api';
|
import { Media, Season, SeasonResource, UUID } from 'app/back-api';
|
||||||
import { RESTConfig } from 'app/back-api/rest-tools';
|
import { ProgressCallback, RESTConfig } from 'app/back-api/rest-tools';
|
||||||
import { environment } from 'environments/environment';
|
import { environment } from 'environments/environment';
|
||||||
import { GenericDataService } from './GenericDataService';
|
import { GenericDataService } from './GenericDataService';
|
||||||
import { MediaService } from './media';
|
import { MediaService } from './media';
|
||||||
@ -19,7 +19,7 @@ export class SeasonService extends GenericDataService<Season> {
|
|||||||
|
|
||||||
getRestConfig(): RESTConfig {
|
getRestConfig(): RESTConfig {
|
||||||
return {
|
return {
|
||||||
server: environment.server.karusic,
|
server: environment.server.karideo,
|
||||||
token: this.session.getToken()
|
token: this.session.getToken()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,7 +141,7 @@ export class SeasonService extends GenericDataService<Season> {
|
|||||||
}
|
}
|
||||||
uploadCover(id: number,
|
uploadCover(id: number,
|
||||||
file: File,
|
file: File,
|
||||||
progress: any = null): Promise<Season> {
|
progress: ProgressCallback | undefined = undefined): Promise<Season> {
|
||||||
let self = this;
|
let self = this;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
SeasonResource.uploadCover({
|
SeasonResource.uploadCover({
|
||||||
@ -153,7 +153,7 @@ export class SeasonService extends GenericDataService<Season> {
|
|||||||
file,
|
file,
|
||||||
fileName: file.name
|
fileName: file.name
|
||||||
},
|
},
|
||||||
//progress
|
progress
|
||||||
}).then((value) => {
|
}).then((value) => {
|
||||||
self.dataStore.updateValue(value);
|
self.dataStore.updateValue(value);
|
||||||
resolve(value);
|
resolve(value);
|
||||||
|
@ -8,7 +8,7 @@ import { Injectable } from '@angular/core';
|
|||||||
|
|
||||||
import { SessionService, DataStore, TypeCheck } from '@kangaroo-and-rabbit/kar-cw';
|
import { SessionService, DataStore, TypeCheck } from '@kangaroo-and-rabbit/kar-cw';
|
||||||
import { Media, Season, Series, SeriesResource, UUID } from 'app/back-api';
|
import { Media, Season, Series, SeriesResource, UUID } from 'app/back-api';
|
||||||
import { RESTConfig } from 'app/back-api/rest-tools';
|
import { ProgressCallback, RESTConfig } from 'app/back-api/rest-tools';
|
||||||
import { environment } from 'environments/environment';
|
import { environment } from 'environments/environment';
|
||||||
import { GenericDataService } from './GenericDataService';
|
import { GenericDataService } from './GenericDataService';
|
||||||
import { SeasonService, MediaService } from '.';
|
import { SeasonService, MediaService } from '.';
|
||||||
@ -117,6 +117,24 @@ export class SeriesService extends GenericDataService<Series> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getSeriesWithType(typeId: number): Promise<Series[]> {
|
||||||
|
let self = this;
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
self.getsWhere([
|
||||||
|
{
|
||||||
|
check: TypeCheck.EQUAL,
|
||||||
|
key: 'parentId',
|
||||||
|
value: typeId,
|
||||||
|
}],
|
||||||
|
['name'])
|
||||||
|
.then((data: Series[]) => {
|
||||||
|
resolve(data);
|
||||||
|
})
|
||||||
|
.catch((response) => {
|
||||||
|
reject(response);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
patch(id: number, data: Series): Promise<Series> {
|
patch(id: number, data: Series): Promise<Series> {
|
||||||
const self = this;
|
const self = this;
|
||||||
@ -178,7 +196,7 @@ export class SeriesService extends GenericDataService<Series> {
|
|||||||
}
|
}
|
||||||
uploadCover(id: number,
|
uploadCover(id: number,
|
||||||
file: File,
|
file: File,
|
||||||
progress: any = null): Promise<Media> {
|
progress: ProgressCallback | undefined = undefined): Promise<Media> {
|
||||||
let self = this;
|
let self = this;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
SeriesResource.uploadCover({
|
SeriesResource.uploadCover({
|
||||||
@ -190,7 +208,7 @@ export class SeriesService extends GenericDataService<Series> {
|
|||||||
file,
|
file,
|
||||||
fileName: file.name
|
fileName: file.name
|
||||||
},
|
},
|
||||||
//progress
|
progress
|
||||||
}).then((value) => {
|
}).then((value) => {
|
||||||
self.dataStore.updateValue(value);
|
self.dataStore.updateValue(value);
|
||||||
resolve(value);
|
resolve(value);
|
||||||
|
@ -34,7 +34,7 @@ export class TypeService extends GenericDataService<Type> {
|
|||||||
|
|
||||||
constructor(private session: SessionService,
|
constructor(private session: SessionService,
|
||||||
private MediaService: MediaService,
|
private MediaService: MediaService,
|
||||||
private seriesService: SeriesService,
|
//private seriesService: SeriesService,
|
||||||
) {
|
) {
|
||||||
super();
|
super();
|
||||||
console.log('Start TypeService');
|
console.log('Start TypeService');
|
||||||
@ -87,28 +87,6 @@ export class TypeService extends GenericDataService<Type> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getSubSeries(id: number): Promise<Series[]> {
|
|
||||||
let self = this;
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
resolve([]);
|
|
||||||
/*
|
|
||||||
self.seriesService.getsWhere([
|
|
||||||
{
|
|
||||||
check: TypeCheck.EQUAL,
|
|
||||||
key: 'parentId',
|
|
||||||
value: id,
|
|
||||||
}],
|
|
||||||
['name'])
|
|
||||||
.then((data: Series[]) => {
|
|
||||||
resolve(data);
|
|
||||||
})
|
|
||||||
.catch((response) => {
|
|
||||||
reject(response);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
getSubUniverse(id: number): Promise<any[]> {
|
getSubUniverse(id: number): Promise<any[]> {
|
||||||
let self = this;
|
let self = this;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
@ -2,29 +2,33 @@
|
|||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
<svg
|
<svg
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
width="256"
|
width="256"
|
||||||
height="256"
|
height="256"
|
||||||
viewBox="0 0 67.733333 67.733333"
|
viewBox="0 0 67.733333 67.733333"
|
||||||
version="1.1"
|
version="1.1"
|
||||||
id="svg8"
|
id="svg8"
|
||||||
inkscape:version="0.92.4 5da689c313, 2019-01-14"
|
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25, custom)"
|
||||||
sodipodi:docname="ikon_gray.svg"
|
sodipodi:docname="ikon_gray.svg"
|
||||||
inkscape:export-filename="/home/heero/dev/perso/appl_pro/NoKomment/plugin/chrome/ikon.png"
|
inkscape:export-filename="/home/heero/dev/perso/appl_pro/NoKomment/plugin/chrome/ikon.png"
|
||||||
inkscape:export-xdpi="7.1250005"
|
inkscape:export-xdpi="7.1250005"
|
||||||
inkscape:export-ydpi="7.1250005">
|
inkscape:export-ydpi="7.1250005"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||||
<defs
|
<defs
|
||||||
id="defs2">
|
id="defs2">
|
||||||
<filter
|
<filter
|
||||||
style="color-interpolation-filters:sRGB;"
|
style="color-interpolation-filters:sRGB;"
|
||||||
inkscape:label="Drop Shadow"
|
inkscape:label="Drop Shadow"
|
||||||
id="filter5338">
|
id="filter5338"
|
||||||
|
x="-0.12319682"
|
||||||
|
y="-0.081815216"
|
||||||
|
width="1.2463936"
|
||||||
|
height="1.1636304">
|
||||||
<feFlood
|
<feFlood
|
||||||
flood-opacity="1"
|
flood-opacity="1"
|
||||||
flood-color="rgb(255,255,255)"
|
flood-color="rgb(255,255,255)"
|
||||||
@ -74,22 +78,31 @@
|
|||||||
borderopacity="1.0"
|
borderopacity="1.0"
|
||||||
inkscape:pageopacity="0.0"
|
inkscape:pageopacity="0.0"
|
||||||
inkscape:pageshadow="2"
|
inkscape:pageshadow="2"
|
||||||
inkscape:zoom="2.8"
|
inkscape:zoom="7.9195959"
|
||||||
inkscape:cx="60.215971"
|
inkscape:cx="100.06824"
|
||||||
inkscape:cy="128.86947"
|
inkscape:cy="115.66247"
|
||||||
inkscape:document-units="mm"
|
inkscape:document-units="mm"
|
||||||
inkscape:current-layer="layer1"
|
inkscape:current-layer="layer1"
|
||||||
showgrid="true"
|
showgrid="true"
|
||||||
units="px"
|
units="px"
|
||||||
inkscape:snap-text-baseline="false"
|
inkscape:snap-text-baseline="false"
|
||||||
inkscape:window-width="1918"
|
inkscape:window-width="3838"
|
||||||
inkscape:window-height="1038"
|
inkscape:window-height="2118"
|
||||||
inkscape:window-x="0"
|
inkscape:window-x="0"
|
||||||
inkscape:window-y="20"
|
inkscape:window-y="20"
|
||||||
inkscape:window-maximized="1">
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1">
|
||||||
<inkscape:grid
|
<inkscape:grid
|
||||||
type="xygrid"
|
type="xygrid"
|
||||||
id="grid4504" />
|
id="grid4504"
|
||||||
|
originx="0"
|
||||||
|
originy="0"
|
||||||
|
spacingy="1"
|
||||||
|
spacingx="1"
|
||||||
|
units="px"
|
||||||
|
visible="true" />
|
||||||
</sodipodi:namedview>
|
</sodipodi:namedview>
|
||||||
<metadata
|
<metadata
|
||||||
id="metadata5">
|
id="metadata5">
|
||||||
@ -115,11 +128,11 @@
|
|||||||
transform="matrix(0.8407653,0,0,0.83753055,-37.28971,3.4402954)"
|
transform="matrix(0.8407653,0,0,0.83753055,-37.28971,3.4402954)"
|
||||||
aria-label="K">
|
aria-label="K">
|
||||||
<path
|
<path
|
||||||
sodipodi:nodetypes="ccccccccccccc"
|
sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccssccccssscccccccccccccccsscccccsssccccccccccccccssscsscsss"
|
||||||
inkscape:connector-curvature="0"
|
inkscape:connector-curvature="0"
|
||||||
id="path823-5"
|
id="path823-5"
|
||||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:84.55024719px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:0.775;fill:#2b3137;fill-opacity:1;stroke-width:2.11376619;filter:url(#filter5338)"
|
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:84.5502px;font-family:'DejaVu Sans Mono';-inkscape-font-specification:'DejaVu Sans Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;opacity:0.775;fill:#2b3137;fill-opacity:1;stroke-width:2.11377;filter:url(#filter5338)"
|
||||||
d="m 65.200546,279.9533 h 8.949095 v 27.37877 l 25.568842,-27.37877 6.392207,6.84469 -20.455071,21.90302 20.455071,27.37876 -6.392207,5.47576 -19.176632,-27.37877 -6.39221,6.84469 v 20.53408 h -8.949095 z" />
|
d="m 65.200546,279.9533 h 8.949095 v 27.37877 l 25.568842,-27.37877 6.392207,6.84469 -20.455071,21.90302 20.455071,27.37876 -6.392207,5.47576 -19.176632,-27.37877 -6.39221,6.84469 v 20.53408 h -8.949095 z m 3.913007,39.48974 c -0.26846,-0.43226 -0.592093,-0.92734 -0.887692,-1.37494 l 0.02075,-0.022 c 0.456433,0.27687 0.977308,0.56258 1.422211,0.80755 l 0.407045,0.22999 -0.710959,0.75468 z m 0.591316,3.01367 0.778423,-0.82629 -0.642969,-1.02783 1.022328,-1.08519 1.052938,0.59264 0.80956,-0.85934 -4.631256,-2.27837 -0.913349,0.96952 z m 6.54394,-6.94635 0.762854,-0.80977 -1.289542,-1.22424 0.399591,-0.42416 1.938227,0.53566 0.856265,-0.90892 -2.195068,-0.54992 c 0.187965,-0.54159 0.09714,-1.11827 -0.429654,-1.61839 -0.850547,-0.80747 -1.705543,-0.42955 -2.421693,0.33064 l -1.198771,1.27249 z m -1.168715,-2.64352 -1.004195,-0.95334 0.373643,-0.39662 c 0.40478,-0.42967 0.738271,-0.54092 1.089465,-0.20751 0.351195,0.33341 0.31951,0.73118 -0.08527,1.16085 z m 7.416862,-3.98885 2.345648,-2.48989 -0.68044,-0.64598 -0.788801,0.83731 -2.216914,-2.10465 0.788802,-0.83731 -0.680439,-0.64598 -2.345647,2.48989 0.680439,0.64598 0.788802,-0.83731 2.216913,2.10465 -0.788801,0.83731 z m 6.206624,-6.58829 0.980813,-1.04113 c 0.939292,-0.99705 1.006613,-2.22712 -0.222565,-3.39405 -1.229181,-1.16694 -2.41593,-0.99961 -3.401932,0.047 l -0.934107,0.99155 z m 0.115038,-1.43521 -2.271787,-2.15674 0.124547,-0.13221 c 0.52932,-0.56189 1.150798,-0.69191 2.006834,0.12078 0.856035,0.81268 0.794297,1.47411 0.264954,2.03597 z m 6.226516,-5.29631 2.293753,-2.4348 -0.68044,-0.64599 -1.525707,1.61953 -0.823112,-0.78143 1.250665,-1.32757 -0.674951,-0.64077 -1.250666,1.32757 -0.71885,-0.68245 1.473813,-1.56444 -0.680438,-0.64598 -2.241858,2.37972 z m 7.372646,-7.6936 c 0.80437,-0.85384 0.71213,-2.05798 -0.51156,-3.2197 -1.19626,-1.13568 -2.393561,-1.15578 -3.197932,-0.30194 -0.80437,0.85383 -0.717618,2.05277 0.478638,3.18844 1.223694,1.16173 2.426484,1.18703 3.230854,0.3332 z m -0.6969,-0.66161 c -0.35289,0.37458 -0.97662,0.23116 -1.750342,-0.50339 -0.7408,-0.70328 -0.918234,-1.32045 -0.565349,-1.69503 0.352885,-0.37459 0.976611,-0.23116 1.717411,0.47213 0.77373,0.73454 0.95116,1.3517 0.59828,1.72629 z" />
|
||||||
</g>
|
</g>
|
||||||
<g
|
<g
|
||||||
id="text821"
|
id="text821"
|
||||||
|
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 7.5 KiB |
@ -1,4 +1,4 @@
|
|||||||
<!doctype html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"moduleResolution": "node",
|
"moduleResolution": "node",
|
||||||
"emitDecoratorMetadata": true,
|
"emitDecoratorMetadata": true,
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"target": "es2022",
|
"target": "ES2022",
|
||||||
"typeRoots": [
|
"typeRoots": [
|
||||||
"node_modules/@types"
|
"node_modules/@types"
|
||||||
],
|
],
|
||||||
@ -17,7 +17,7 @@
|
|||||||
"ES2022",
|
"ES2022",
|
||||||
"dom"
|
"dom"
|
||||||
],
|
],
|
||||||
"module": "es2022",
|
"module": "ES2022",
|
||||||
"baseUrl": "./src",
|
"baseUrl": "./src",
|
||||||
"paths": {
|
"paths": {
|
||||||
"@app/*": [
|
"@app/*": [
|
||||||
@ -27,5 +27,13 @@
|
|||||||
"./src/common/*"
|
"./src/common/*"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"angularCompilerOptions": {
|
||||||
|
"_enabledBlockTypes": [
|
||||||
|
"if",
|
||||||
|
"switch",
|
||||||
|
"for",
|
||||||
|
"defer"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user