Compare commits
10 Commits
9e903ae62a
...
952fd67cba
| Author | SHA1 | Date |
|---|---|---|
|
|
952fd67cba | |
|
|
2e5fce6c23 | |
|
|
658f921ce6 | |
|
|
a8ea5d681b | |
|
|
ba4cffd1b0 | |
|
|
9757ed9a59 | |
|
|
48ff919640 | |
|
|
9ed2610996 | |
|
|
867a88025b | |
|
|
1ff70de669 |
|
|
@ -104,6 +104,10 @@
|
|||
"replace": "src/app/_modules/layout/footer/footer.component.ts",
|
||||
"with": "src/vniigaz-v2/component/layout/footer/footer.component.ts"
|
||||
},
|
||||
{
|
||||
"replace": "src/app/_modules/pages/page/page.component.ts",
|
||||
"with": "src/vniigaz-v2/component/pages/page/page.component.ts"
|
||||
},
|
||||
{
|
||||
"replace": "src/app/_modules/layout/jumbotron/jumbotron.component.ts",
|
||||
"with": "src/vniigaz-v2/component/layout/jumbotron/jumbotron.component.ts"
|
||||
|
|
@ -163,6 +167,10 @@
|
|||
"replace": "src/app/_modules/layout/footer/footer.component.ts",
|
||||
"with": "src/vniigaz-v2/component/layout/footer/footer.component.ts"
|
||||
},
|
||||
{
|
||||
"replace": "src/app/_modules/pages/page/page.component.ts",
|
||||
"with": "src/vniigaz-v2/component/pages/page/page.component.ts"
|
||||
},
|
||||
{
|
||||
"replace": "src/app/_modules/layout/jumbotron/jumbotron.component.ts",
|
||||
"with": "src/vniigaz-v2/component/layout/jumbotron/jumbotron.component.ts"
|
||||
|
|
|
|||
|
|
@ -14,6 +14,10 @@ import {WidjetModule} from "@app/_modules/widjet/widjet.module";
|
|||
import {AdministrateLicenceComponent} from "@app/_modules/administration/licence/administrate-licence.component";
|
||||
import {AdministrateUsersComponent} from "@app/_modules/administration/users/administrate-users.component";
|
||||
import {UsersModule} from "@app/_modules/users/users.module";
|
||||
import { ObjectTypeComponent } from './object-type/object-type.component';
|
||||
import { ObjectTypeListComponent } from '@app/_modules/administration/object-type/list/object-type-list.component';
|
||||
import { ObjectTypeListItemComponent } from '@app/_modules/administration/object-type/list/item/object-type-list-item.component';
|
||||
import {SortablejsModule} from "@dustfoundation/ngx-sortablejs";
|
||||
|
||||
type PathMatch = "full" | "prefix" | undefined;
|
||||
const routes = [
|
||||
|
|
@ -31,6 +35,7 @@ const routes = [
|
|||
PagesModule,
|
||||
WidjetModule,
|
||||
UsersModule,
|
||||
SortablejsModule,
|
||||
],
|
||||
declarations: [
|
||||
AdministrationPageComponent,
|
||||
|
|
@ -38,7 +43,10 @@ const routes = [
|
|||
AdministrateCommitteeComponent,
|
||||
AdministrateSitePagesComponent,
|
||||
AdministrateLicenceComponent,
|
||||
AdministrateUsersComponent
|
||||
AdministrateUsersComponent,
|
||||
ObjectTypeComponent,
|
||||
ObjectTypeListComponent,
|
||||
ObjectTypeListItemComponent
|
||||
],
|
||||
exports: [
|
||||
RouterModule
|
||||
|
|
|
|||
|
|
@ -0,0 +1,94 @@
|
|||
<div class="item" [class.hidden]="isHidden" [class.home]="!parent" (click)="touched = true">
|
||||
<div class="bar">
|
||||
<div class="left">
|
||||
<drop-down ico="chevron_right_24" [angle]="[0,90]" *ngIf="hasChildren" (toggle)="active=$event"></drop-down>
|
||||
</div>
|
||||
<div class="mid" [class.deleted]="isDeleted">
|
||||
<div class="info">
|
||||
<div class="logo" *ngIf="parent">
|
||||
<!-- <ico ico="web_page_24" color="#FFF"></ico>-->
|
||||
</div>
|
||||
<div class="logo" *ngIf="!parent">
|
||||
<!-- <ico ico="home_24" color="#FFF"></ico>-->
|
||||
</div>
|
||||
<div class="name">
|
||||
<div>
|
||||
<a [routerLink]="" target="_blank">{{objectType.title}}</a>
|
||||
</div>
|
||||
<div *ngIf="!isDeleted" title="Добавить группу" (click)="addGroup()">
|
||||
<ico ico="webpage_plus_24" class="page-control"></ico>
|
||||
</div>
|
||||
<div *ngFor="let group of groups">
|
||||
<p>Группа объектов: <a [routerLink]="" target="_blank">{{group.name}}</a></p>
|
||||
<div class="right">
|
||||
<div *ngIf="!isDeleted" title="Редактировать группу" (click)="editGroup()">
|
||||
<ico ico="edit_24" class="page-control"></ico>
|
||||
</div>
|
||||
<div *ngIf="!isDeleted" title="Удалить группу" (click)="deleteGroup()">
|
||||
<ico ico="visibility_off_24" class="page-control"></ico>
|
||||
</div>
|
||||
</div>
|
||||
<table>
|
||||
<tr>
|
||||
<th style="border: #1F1F1F solid 2px">title</th>
|
||||
<th style="border: #1F1F1F solid 2px">name</th>
|
||||
<th style="border: #1F1F1F solid 2px">type</th>
|
||||
<th style="border: #1F1F1F solid 2px">required</th>
|
||||
<th style="border: #1F1F1F solid 2px">multiple</th>
|
||||
<th style="border: #1F1F1F solid 2px">related</th>
|
||||
<th>
|
||||
<div *ngIf="!isDeleted" title="Добавить объект" (click)="addField()">
|
||||
<ico ico="webpage_plus_24" class="page-control"></ico>
|
||||
</div>
|
||||
</th>
|
||||
</tr>
|
||||
<tr *ngFor="let field of fields">
|
||||
<td style="border: #1F1F1F solid 1px">{{field.title}}</td>
|
||||
<td style="border: #1F1F1F solid 1px">{{field.name}}</td>
|
||||
<td style="border: #1F1F1F solid 1px">{{field.type}}</td>
|
||||
<td style="border: #1F1F1F solid 1px">{{field.required}}</td>
|
||||
<td style="border: #1F1F1F solid 1px">{{field.multiple}}</td>
|
||||
<td style="border: #1F1F1F solid 1px">{{field.related}}</td>
|
||||
<td>
|
||||
<div *ngIf="!isDeleted" title="Редактировать объект" (click)="editField()">
|
||||
<ico ico="edit_24" class="page-control"></ico>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<div *ngIf="!isDeleted" title="Удалить объект" (click)="deleteField()">
|
||||
<ico ico="visibility_off_24" class="page-control"></ico>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<!-- <a [routerLink]="" target="_blank" *ngIf="page.h1">{{page.h1}}</a>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div *ngIf="parent && !isDeleted" title="Копировать" (click)="clone()">
|
||||
<ico ico="copy_24" class="page-control"></ico>
|
||||
</div>
|
||||
<div *ngIf="!isDeleted" title="Добавить типовой объект" (click)="add()">
|
||||
<ico ico="webpage_plus_24" class="page-control"></ico>
|
||||
</div>
|
||||
<div *ngIf="!isDeleted" title="Редактировать типовой объект" (click)="edit()">
|
||||
<ico ico="edit_24" class="page-control"></ico>
|
||||
</div>
|
||||
<div *ngIf="isDeleted" title="Восстановить типой объект" (click)="restore()">
|
||||
<ico ico="visibility_on_24" class="page-control"></ico>
|
||||
</div>
|
||||
<div *ngIf="isDeleted" title="Удалить безвозвратно" (click)="delete()">
|
||||
<ico ico="delete_24" class="page-control"></ico>
|
||||
</div>
|
||||
<div *ngIf="!isDeleted" title="Удалить типовой объект" (click)="delete()">
|
||||
<ico ico="visibility_off_24" class="page-control"></ico>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="items" *ngIf="active">
|
||||
<object-type-list [parent]="objectType"></object-type-list>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,186 @@
|
|||
import {Component, Input} from '@angular/core';
|
||||
import {concat, Subscription} from "rxjs";
|
||||
import {FormsService, ListsService} from "@app/_services";
|
||||
import {DialogService} from "@app/_services/dialog.service";
|
||||
import {ObjectTypesService} from "@app/_services/object-types.service";
|
||||
import {group} from "@angular/animations";
|
||||
import {concatAll} from "rxjs/operators";
|
||||
|
||||
@Component({
|
||||
selector: 'object-type-list-item',
|
||||
templateUrl: './object-type-list-item.component.html',
|
||||
styleUrls: ['./object-type-list-item.component.scss']
|
||||
})
|
||||
export class ObjectTypeListItemComponent {
|
||||
@Input() objectType: any;
|
||||
@Input() FieldsGroup: any;
|
||||
@Input() parent: any;
|
||||
public active = false;
|
||||
public touched = false;
|
||||
public subscription: Subscription;
|
||||
|
||||
constructor(
|
||||
public objectTypesService: ObjectTypesService,
|
||||
private formsService: FormsService,
|
||||
private listsService: ListsService,
|
||||
private dialog: DialogService) {
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.subscription = this.listsService.controls(this.listId).subscribe(res => {
|
||||
if (this.touched) this.fetch();
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.subscription?.unsubscribe();
|
||||
}
|
||||
|
||||
|
||||
get listId() {
|
||||
return this.objectType.id;
|
||||
}
|
||||
|
||||
get parentListId() {
|
||||
return this.parent?.id || 'object-type-root';
|
||||
}
|
||||
|
||||
get logo() {
|
||||
return this.objectType?.logo?.data.links?.full;
|
||||
}
|
||||
|
||||
get noLogoLetters() {
|
||||
return this.objectType.name.replace(' ', '').slice(0, 2);
|
||||
}
|
||||
|
||||
get children() {
|
||||
return this.objectType.children?.data;
|
||||
}
|
||||
|
||||
get groups() {
|
||||
return this.objectType.groups?.data;
|
||||
}
|
||||
|
||||
get fields() {
|
||||
let allFields = [];
|
||||
this.groups.forEach(function (groups){
|
||||
groups.fields.data.forEach(function (fields){
|
||||
allFields.push(fields);
|
||||
})
|
||||
});
|
||||
return allFields;
|
||||
}
|
||||
|
||||
get isDeleted() {
|
||||
return !!this.objectType.deletedAt;
|
||||
}
|
||||
get isHidden() {
|
||||
return this.isDeleted && !this.showDeleted;
|
||||
}
|
||||
get showDeleted() {
|
||||
return this.objectTypesService.showDeleted;
|
||||
}
|
||||
|
||||
get hasChildren() {
|
||||
return this.showDeleted ? this.children?.length : this.children?.filter(objectType => {return !objectType.deletedAt}).length;
|
||||
}
|
||||
|
||||
|
||||
fetch() {
|
||||
let include = ['children.children', 'groups'];
|
||||
this.objectTypesService.show(this.objectType.id, {include: include.join(','), withTrashed: true}).subscribe(res => {
|
||||
this.objectType = res.data;
|
||||
});
|
||||
}
|
||||
|
||||
clone() {
|
||||
this.dialog.confirm(`Копировать страницу ${this.objectType.name}?`).subscribe(
|
||||
resp=>{
|
||||
if (resp) {
|
||||
this.dialog.waiting('Выполняется копирование данных. Подождите, пожалуйста')
|
||||
this.objectTypesService.clone(this.objectType.id, {recursive: true}).subscribe(res => {
|
||||
this.dialog.waiting(null);
|
||||
this.listsService.refresh(this.parentListId);
|
||||
this.refresh();
|
||||
});
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
add() {
|
||||
this.formsService.createModel('objectType', {extraProps: {parent: this.objectType.id}}, this.listId);
|
||||
this.active = true;
|
||||
this.refresh()
|
||||
}
|
||||
|
||||
edit() {
|
||||
this.formsService.editModel('objectType', this.objectType.id, null, this.listId);
|
||||
}
|
||||
|
||||
delete() {
|
||||
this.dialog.confirm(`Удалить страницу ${this.objectType.name}?`).subscribe(
|
||||
resp=>{
|
||||
if (resp) this.objectTypesService.delete(this.objectType.id).subscribe(res => {
|
||||
this.listsService.refresh(this.parentListId);
|
||||
this.refresh();
|
||||
});
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
restore() {
|
||||
this.dialog.confirm(`Восстановить страницу ${this.objectType.name}?`).subscribe(
|
||||
resp=>{
|
||||
if (resp) this.objectTypesService.restore(this.objectType.id, {}).subscribe(res => {
|
||||
this.listsService.refresh(this.parentListId);
|
||||
this.refresh();
|
||||
});
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private refresh(){
|
||||
this.objectTypesService.root({include:'children'}).subscribe(
|
||||
res => { this.objectTypesService.rootObjectTypes = res }
|
||||
)
|
||||
}
|
||||
|
||||
toggle() {
|
||||
this.active = !this.active;
|
||||
}
|
||||
|
||||
addGroup() {
|
||||
this.formsService.createModel('fieldsGroup',{extraProps: {object_type: this.objectType.id}});
|
||||
this.active = true;
|
||||
this.refresh()
|
||||
}
|
||||
|
||||
editGroup() {
|
||||
this.formsService.editModel('fieldsGroup', this.objectType.groups.id, null, this.listId);
|
||||
}
|
||||
|
||||
deleteGroup() {
|
||||
this.dialog.confirm(`Удалить страницу ${this.objectType.groups.name}?`).subscribe(
|
||||
resp=>{
|
||||
if (resp) this.objectTypesService.delete(this.objectType.groups.id).subscribe(res => {
|
||||
this.listsService.refresh(this.parentListId);
|
||||
this.refresh();
|
||||
});
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
addField() {
|
||||
this.formsService.createModel('field'/*,{extraProps: {object_type: this.objectType.id}}*/);
|
||||
this.refresh()
|
||||
}
|
||||
|
||||
editField() {
|
||||
|
||||
}
|
||||
|
||||
deleteField() {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<div class="items" [sortablejs]="objectTypes" [sortablejsOptions]="parent ? optionsObjectTypes : optionsLocales">
|
||||
<object-type-list-item [id]="objectType.id" [objectType]="objectType" [parent]="parent" *ngFor="let objectType of objectTypes"></object-type-list-item>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
import {Component, Input} from '@angular/core';
|
||||
import {Subscription} from "rxjs";
|
||||
import {SortableOptions} from "sortablejs";
|
||||
import {Router} from "@angular/router";
|
||||
import {ObjectTypesService} from "@app/_services/object-types.service";
|
||||
import {FormsService, ListsService} from "@app/_services";
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'object-type-list',
|
||||
templateUrl: './object-type-list.component.html',
|
||||
styleUrls: ['./object-type-list.component.scss']
|
||||
})
|
||||
export class ObjectTypeListComponent {
|
||||
@Input() parent: any;
|
||||
public objectTypes = <any>[];
|
||||
subscription: Subscription;
|
||||
|
||||
public optionsObjectTypes: SortableOptions = {
|
||||
group: 'object-types',
|
||||
handle: '.logo',
|
||||
onUpdate: (event: any) => {this.move(event)},
|
||||
onAdd: (event: any) => {this.move(event)}
|
||||
};
|
||||
public optionsLocales: SortableOptions = {
|
||||
group: 'site-locales',
|
||||
handle: '.logo',
|
||||
onUpdate: (event: any) => {this.move(event)},
|
||||
onAdd: (event: any) => {this.move(event)}
|
||||
};
|
||||
|
||||
constructor(private router: Router, private objectTypesService: ObjectTypesService, private listsService: ListsService, private formsService: FormsService) {
|
||||
}
|
||||
|
||||
get listId() {
|
||||
return this.parent?.id || 'object-types-root';
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.subscription = this.listsService.controls(this.listId).subscribe(res => {
|
||||
this.fetch();
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.subscription?.unsubscribe();
|
||||
}
|
||||
|
||||
fetch() {
|
||||
this.parent ? this.fetchSubObjectTypes() : this.fetchRootObjectTypes();
|
||||
}
|
||||
|
||||
fetchRootObjectTypes() {
|
||||
let include = [
|
||||
'children.children',
|
||||
'groups',
|
||||
'groups.fields',
|
||||
'children.groups.fields'
|
||||
];
|
||||
this.objectTypesService.root({include: include.join(','), withTrashed: true}).subscribe(res => {
|
||||
this.objectTypes = res.data;
|
||||
});
|
||||
}
|
||||
|
||||
fetchSubObjectTypes() {
|
||||
let include = ['children.children', 'groups', 'children.groups.fields'];
|
||||
this.objectTypesService.show(this.parent.id, {include: include.join(','), withTrashed: true}).subscribe(res => {
|
||||
this.objectTypes = res.data?.children?.data;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
add() {
|
||||
this.formsService.createModel('ObjectType', null, this.listId);
|
||||
}
|
||||
|
||||
|
||||
move(event: any) {
|
||||
this.objectTypesService.move(event.item.id, {parent: this.parent?.id, ord: event.newIndex}).subscribe(res => {
|
||||
this.listsService.refresh(this.parent?.id);
|
||||
this.objectTypesService.root({include:'children'}).subscribe(
|
||||
res => { this.objectTypesService.rootObjectTypes = res }
|
||||
)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
<ng-container *ngIf="licenceService.isActive">
|
||||
<div class="site-admin-control">
|
||||
<div class="site-admin-control-toggle" (click)="toggle()">
|
||||
Показать скрытые
|
||||
<switch [val]="showDeleted"></switch>
|
||||
</div>
|
||||
<div class="site-admin-page-block">
|
||||
<div class="site-admin-company">
|
||||
<!-- <ico ico="cloud_24" class="page-lable" color="#FFF"></ico>-->
|
||||
<span>Типовые объекты</span>
|
||||
</div>
|
||||
<ico ico="home_plus_24" class="page-control" (click)="addLocale()"></ico>
|
||||
</div>
|
||||
</div>
|
||||
<object-type-list></object-type-list>
|
||||
</ng-container>
|
||||
<ng-container *ngIf="!licenceService.isActive">
|
||||
<p>Лицензия не активна. Перейдите в раздел <a routerLink="/administrate/licence">Данные о лицензии</a></p>
|
||||
</ng-container>
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
import { Component } from '@angular/core';
|
||||
import {ObjectTypesService} from "@app/_services/object-types.service";
|
||||
import {FormsService} from "@app/_services";
|
||||
import {LicenceService} from "@app/_services/licence.service";
|
||||
import {DialogService} from "@app/_services/dialog.service";
|
||||
|
||||
@Component({
|
||||
selector: 'object-type',
|
||||
templateUrl: './object-type.component.html',
|
||||
styleUrls: ['./object-type.component.scss']
|
||||
})
|
||||
export class ObjectTypeComponent {
|
||||
constructor(private objectTypesService: ObjectTypesService, private formsService: FormsService, public licenceService: LicenceService, private dialog: DialogService) {
|
||||
}
|
||||
|
||||
get isLicenceActive() {
|
||||
return this.licenceService.isActive;
|
||||
}
|
||||
get isMultilang() {
|
||||
return this.isLicenceActive && this.licenceService.hasOption('multilang');
|
||||
}
|
||||
|
||||
|
||||
get showDeleted() {
|
||||
return this.objectTypesService.showDeleted;
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.objectTypesService.showDeleted = false;
|
||||
}
|
||||
|
||||
addLocale() {
|
||||
if (this.isMultilang) this.formsService.createModel('objectType', null, 'object-types-root');
|
||||
else this.dialog.alert('Данная опция не входит в Вашу лицензию. Для включения опции обратитесь в службу поддержки НИР (+7 499 490 04 65, help@nirgroup.ru)');
|
||||
}
|
||||
|
||||
toggle() {
|
||||
this.objectTypesService.showDeleted = !this.objectTypesService.showDeleted;
|
||||
}
|
||||
}
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
<div class="tabs default">
|
||||
<div *ngFor="let tab of tabs" >
|
||||
<button type="button"[class.active]="tab.active" *ngIf="showTab(tab)" routerLink="/administrate/{{tab.name}}">{{tab.title}}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div [ngSwitch]="tab.name">
|
||||
<administrate-company *ngSwitchCase="'company'" [companyId]="'main'"></administrate-company>
|
||||
|
|
@ -14,6 +14,7 @@
|
|||
<administrate-site-pages *ngSwitchCase="'site-pages'"></administrate-site-pages>
|
||||
<administrate-licence *ngSwitchCase="'licence'"></administrate-licence>
|
||||
<administrate-users *ngSwitchCase="'users'"></administrate-users>
|
||||
<object-type *ngSwitchCase="'object-type'"></object-type>
|
||||
<p *ngSwitchDefault>Страница не найдена</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -36,9 +36,10 @@ export class AdministrationPageComponent {
|
|||
//this.tabs = [{name: 'company', title: 'Структура ФАУ «ФЦС»'}, {name: 'committee', title: 'Структура ТК 465'}];
|
||||
//if (this.authService.isSuperAdmin) this.tabs.push({name: 'site-pages', title: 'Структура сайта'});
|
||||
this.tabs = [
|
||||
{name: 'site-pages', title: 'Структура сайта', access: ["admin", "editor"]},
|
||||
{name: 'users', title: 'Пользователи', access: ["admin"]},
|
||||
{name: 'licence', title: 'Данные о лицензии', access: ["admin"]}];
|
||||
{name: 'site-pages', title: 'Структура сайта', access: ["admin", "editor"]},
|
||||
{name: 'users', title: 'Пользователи', access: ["admin"]},
|
||||
{name: 'licence', title: 'Данные о лицензии', access: ["admin"]},
|
||||
{name: 'object-type', title: 'Объекты сайта', access: ["admin"]}];
|
||||
this.switchTab(this.route.snapshot.paramMap.get('tab'));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<ul class="breadcrumbs" *ngIf="parents.length>1">
|
||||
<ul class="breadcrumbs" [ngClass]="depthClass">
|
||||
<li *ngFor="let parent of parents"><a [routerLink]="parent.link">{{parent.name}}</a></li>
|
||||
<li>{{page.name}}</li>
|
||||
</ul>
|
||||
|
|
@ -15,6 +15,13 @@ export class pageBreadcrumbsComponent {
|
|||
return this.page?.parents?.data;
|
||||
}
|
||||
|
||||
get depthClass(){
|
||||
let depthClass:any = {};
|
||||
let name = 'bc-depth-' + this.parents.length;
|
||||
depthClass[name] = true;
|
||||
return depthClass
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
<a class="btn" [href]="url" [target]="targetSelf ? '_self' : '_blank'" [innerText]="title"></a>
|
||||
<a class="btn" [href]="url" [target]="targetBlank ? '_self' : '_blank'" [innerText]="title"></a>
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ export class ButtonSectionComponent {
|
|||
get title() {
|
||||
return this.objectsService.getValue(this.section, 'button-title');
|
||||
}
|
||||
get targetSelf() {
|
||||
return this.objectsService.getValue(this.section, 'target-self');
|
||||
get targetBlank() {
|
||||
return this.objectsService.getValue(this.section, 'target-blank');
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<div [class]="style" (click)="navigate()">
|
||||
<div [class]="style" (click)="navigate()" [class.cards-item-default-link]="link">
|
||||
<div *ngIf="header" class="card-header">{{header}}</div>
|
||||
<div *ngIf="subheader" class="card-subheader">{{subheader}}</div>
|
||||
<div *ngIf="text" class="card-text">{{text}}</div>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,17 @@
|
|||
</div>
|
||||
<div class="title" *ngIf="name">{{name}}</div>
|
||||
<div class="subtitle" *ngIf="position">{{position}}</div>
|
||||
<div class="documents list default">
|
||||
<div class="items">
|
||||
<div class="item" *ngFor="let document of documents">
|
||||
<!-- <file-ico [type]="document.extension"></file-ico>-->
|
||||
<div class="value">
|
||||
<a [href]="document.links?.open" target="_blank">{{document.name}}</a>
|
||||
<div class="description">{{document.description}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="phone" *ngIf="phone">{{phone}}</div>
|
||||
<div class="email" *ngIf="email">{{email}}</div>
|
||||
<div class="html" [innerHtml]="html"></div>
|
||||
|
|
|
|||
|
|
@ -26,6 +26,9 @@ export class CardsItemPersonsComponent {
|
|||
get position() {
|
||||
return this.objectsService.getValue(this.card, 'person-position');
|
||||
}
|
||||
get documents() {
|
||||
return this.objectsService.getValue(this.card, 'documents');
|
||||
}
|
||||
get phone() {
|
||||
return this.objectsService.getValue(this.card, 'contact-phone');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,10 @@
|
|||
</div>
|
||||
<div class="results" *ngIf="searchString">
|
||||
<div class="tabs default" *ngIf="total">
|
||||
<button *ngFor="let tab of tabs" type="button" [class.disabled]="tab.disabled" [class.active]="tab.active" (click)="toggleTab(tab)">{{tab.title}} ({{tab.count || 0}})</button>
|
||||
<div>
|
||||
<button *ngFor="let tab of tabs" type="button" [class.disabled]="tab.disabled" [class.active]="tab.active" (click)="toggleTab(tab)">{{tab.title}} ({{tab.count || 0}})</button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="result">
|
||||
<search-sections [class.hidden]="activeTab.name !== 'pages'"></search-sections>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class FieldsGroupService {
|
||||
|
||||
constructor() { }
|
||||
}
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
import {Injectable} from '@angular/core';
|
||||
import {HttpClient} from '@angular/common/http';
|
||||
import {environment} from '@environments/environment';
|
||||
import {Observable, BehaviorSubject} from "rxjs";
|
||||
import {LicenceService} from "@app/_services/licence.service";
|
||||
import { DialogService } from '@app/_services/dialog.service';
|
||||
|
||||
|
||||
@Injectable({providedIn: 'root'})
|
||||
export class ObjectTypesService {
|
||||
public currentObjectTypesSubject = new BehaviorSubject<any>(null);
|
||||
public rootObjectTypesSubject = new BehaviorSubject<any>(null);
|
||||
public metaSubject = new BehaviorSubject<any>({title: '', description: '', keywords: ''});
|
||||
public editModeSubject = new BehaviorSubject<boolean>(false);
|
||||
public showDeletedSubject = new BehaviorSubject<boolean>(false);
|
||||
public menuSelectedLink: string;
|
||||
|
||||
public rootPage:any;
|
||||
|
||||
constructor(private http: HttpClient, private licenceService: LicenceService, private dialog: DialogService) {
|
||||
//this.find('/').subscribe(res => {this.rootPages = res.data});
|
||||
}
|
||||
|
||||
get currentObjectType() {
|
||||
return this.currentObjectTypesSubject.value;
|
||||
}
|
||||
set currentObjectType(val: any) {
|
||||
this.currentObjectTypesSubject.next(val);
|
||||
this.setMetaFromPage(val);
|
||||
}
|
||||
// get rootObjectTypes() {
|
||||
// return this.rootObjectTypesSubject.value;
|
||||
// }
|
||||
set rootObjectTypes(val: any) {
|
||||
this.rootObjectTypesSubject.next(val);
|
||||
}
|
||||
|
||||
// get isRtl() {
|
||||
// return ['ar'].indexOf(this.rootPage?.slug) !== -1;
|
||||
// }
|
||||
|
||||
get editMode() {
|
||||
return this.editModeSubject.value;
|
||||
}
|
||||
set editMode(value: boolean) {
|
||||
if (value) {
|
||||
let error = this.licenceService.checkEditAvailability(this.currentObjectType);
|
||||
if (error) {
|
||||
this.dialog.alert(error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
this.editModeSubject.next(value);
|
||||
}
|
||||
|
||||
get showDeleted() {
|
||||
return this.showDeletedSubject.value;
|
||||
}
|
||||
set showDeleted(value: boolean) {
|
||||
this.showDeletedSubject.next(value);
|
||||
}
|
||||
|
||||
|
||||
root(params?: any): Observable<any> {
|
||||
return this.http.get(`${environment.apiUrl}/api/object-types`, {params: params});
|
||||
}
|
||||
|
||||
find(url: string, params?: any): Observable<any> {
|
||||
if (!params) params = {};
|
||||
params.url = url;
|
||||
return this.http.get(`${environment.apiUrl}/api/object-types/find`, {params: params});
|
||||
}
|
||||
|
||||
list(params?: any): Observable<any> {
|
||||
return this.http.get(`${environment.apiUrl}/api/object-types`, {params: params});
|
||||
}
|
||||
|
||||
show(id: string, params?: any): Observable<any> {
|
||||
return this.http.get<any>(`${environment.apiUrl}/api/object-types/${id}`, {params: params});
|
||||
}
|
||||
|
||||
delete(id: string): Observable<any> {
|
||||
return this.http.delete(`${environment.apiUrl}/api/object-types/${id}`);
|
||||
}
|
||||
|
||||
restore(id: string, data: any): Observable<any> {
|
||||
return this.http.patch(`${environment.apiUrl}/api/pages/restore/${id}`, data);
|
||||
}
|
||||
|
||||
deleteBackground(id: string): Observable<any> {
|
||||
return this.http.delete(`${environment.apiUrl}/api/pages/background/${id}`);
|
||||
}
|
||||
|
||||
move(id: string, data: any): Observable<any> {
|
||||
return this.http.put(`${environment.apiUrl}/api/pages/move/${id}`, data);
|
||||
}
|
||||
|
||||
clone(id: string, data: any): Observable<any> {
|
||||
return this.http.put(`${environment.apiUrl}/api/pages/clone/${id}`, data);
|
||||
}
|
||||
|
||||
setMetaFromPage(page: any) {
|
||||
this.setMeta({title: page?.title || page?.name, description: page?.description || '', keywords: page?.keywords || ''});
|
||||
}
|
||||
setMeta(meta: any) {
|
||||
this.metaSubject.next(meta);
|
||||
}
|
||||
}
|
||||
|
|
@ -87,7 +87,7 @@ right-content{
|
|||
width: 100%;
|
||||
max-width: $page-width;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -99,7 +99,7 @@ footer{
|
|||
width: 100%;
|
||||
padding: 40px 0;
|
||||
margin-top: 48px;
|
||||
|
||||
|
||||
color: white;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -134,14 +134,14 @@ footer{
|
|||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.line{
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background-color: var(--prime);
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
|
||||
|
||||
.copyright{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
|
@ -194,4 +194,4 @@ pages-menu-item{
|
|||
|
||||
.pages{
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ header{
|
|||
&:not(.lvl-0){
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.item{
|
||||
drop-down{
|
||||
display: none;
|
||||
|
|
@ -62,7 +62,7 @@ header{
|
|||
|
||||
a.logo{
|
||||
img{
|
||||
width:114px;
|
||||
width:114px;
|
||||
height: 80px;
|
||||
}
|
||||
}
|
||||
|
|
@ -156,7 +156,7 @@ right-content{
|
|||
display: none;
|
||||
&.parent,&.current{
|
||||
display: block;
|
||||
>pages-menu{
|
||||
>pages-menu{
|
||||
background-color: var(--white);
|
||||
padding: 20px;
|
||||
border-radius: 8px;
|
||||
|
|
@ -206,17 +206,10 @@ right-content{
|
|||
&.current,&.parent {
|
||||
background-color: #ededed;
|
||||
border-radius: 8px;
|
||||
a {
|
||||
a {
|
||||
color: var(--second-act);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
export const environment = {
|
||||
production: false,
|
||||
apiUrl: 'http://api.nircms.lc',
|
||||
clientId: 4,
|
||||
clientSecret: 'KmGnhqVbEi3wlzkEyXi1JeNg9FtswdOdKQHpOcAu',
|
||||
clientId: 2,
|
||||
clientSecret: 'iyTS47vCZHgMxokKToa1HhOgfvFrwlOu7WkmJ3cQ',
|
||||
project: null,
|
||||
licence: 'POUFLO4YW7SU',
|
||||
defaultLocale: 'ru'
|
||||
|
|
|
|||
|
|
@ -5,8 +5,8 @@
|
|||
export const environment = {
|
||||
production: false,
|
||||
apiUrl: 'http://api.nircms.lc',
|
||||
clientId: 4,
|
||||
clientSecret: 'KmGnhqVbEi3wlzkEyXi1JeNg9FtswdOdKQHpOcAu',
|
||||
clientId: 2,
|
||||
clientSecret: 'iyTS47vCZHgMxokKToa1HhOgfvFrwlOu7WkmJ3cQ',
|
||||
project: 'vniigaz-v2',
|
||||
licence: 'POUFLO4YW7SU',
|
||||
defaultLocale: 'ru'
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<div class="footer layout-corral">
|
||||
<a>
|
||||
<a href="https://vniigaz-cert.ru/" target="_blank">
|
||||
© 2023, Газпром ВНИИГАЗ
|
||||
</a>
|
||||
<div>
|
||||
142717, Московская область, г.о. Ленинский, п. Развилка, ул. Газовиков, зд. 15, стр. 1
|
||||
142717, Московская область, г.о. Ленинский, п. Развилка, ул. Газовиков, зд. 15, стр. 1
|
||||
</div>
|
||||
<div></div>
|
||||
<a>
|
||||
<a href="https://nirgroup.ru/" class="footer-nir" target="_blank">
|
||||
Работает на платформе НИР
|
||||
</a>
|
||||
</div>
|
||||
|
|
@ -1,49 +1,44 @@
|
|||
<div class="layout-corral " *ngIf="pictURL">
|
||||
<div class="jumbotron-img">
|
||||
<div class="layout-corral">
|
||||
<div class="jumbotron-img" *ngIf="pictURL">
|
||||
<img [src]="pictURL" alt="">
|
||||
</div>
|
||||
<div class="jumbotron-board">
|
||||
<div class=" jumbotron-registeries">
|
||||
<a href="uvedomlenie-o-razrabotke"><h2>Разработка стандартов</h2></a>
|
||||
<div *ngFor="let reg of regestries; index as i;">
|
||||
<div *ngIf="i<3">
|
||||
<div *ngFor="let entry of entries">
|
||||
<div class="">
|
||||
<span *ngIf="reg.notificationDate" class="notification-date">{{reg.notificationDate | date : 'dd.MM.yyyy'}} </span>
|
||||
<span *ngIf="reg.yearInclusion" class="year-inclusion">{{reg.yearInclusion}} </span>
|
||||
<span>{{reg.type}} </span>
|
||||
<span class="subcommittee">{{reg.subcommittee}}</span>
|
||||
<span *ngIf="entry.notificationDate" class="notification-date">{{entry.notificationDate | date : 'dd.MM.yyyy'}} </span>
|
||||
<span *ngIf="entry.yearInclusion" class="year-inclusion">{{entry.yearInclusion}} </span>
|
||||
<span>{{entry.type}} </span>
|
||||
<span class="subcommittee">{{entry.subcommittee}}</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="name">
|
||||
<a [routerLink]="reg.page">{{reg.name}}</a>
|
||||
<a [routerLink]="entry.page">{{entry.name}}</a>
|
||||
</div>
|
||||
|
||||
<div *ngIf="reg.startDiscussion" class="discussion">
|
||||
<span class="start-discussion">{{reg.startDiscussion | date : 'dd.MM.yyyy'}}</span> -
|
||||
<span class="end-discussion">{{reg.endDiscussion | date : 'dd.MM.yyyy'}}</span>
|
||||
<div *ngIf="entry.startDiscussion" class="discussion">
|
||||
<span class="start-discussion">{{entry.startDiscussion | date : 'dd.MM.yyyy'}}</span> -
|
||||
<span class="end-discussion">{{entry.endDiscussion | date : 'dd.MM.yyyy'}}</span>
|
||||
</div>
|
||||
|
||||
<div *ngIf="reg.documentType">
|
||||
<span class="document-type">{{reg.documentType}} </span>
|
||||
<span class="designation">{{reg.designation}} </span>
|
||||
<span class="order">{{reg.order}}</span>
|
||||
<div *ngIf="entry.documentType">
|
||||
<span class="document-type">{{entry.documentType}} </span>
|
||||
<span class="designation">{{entry.designation}} </span>
|
||||
<span class="order">{{entry.order}}</span>
|
||||
</div>
|
||||
<br>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class=" jumbotron-news">
|
||||
<a href="novosti"><h2>Новости</h2></a>
|
||||
|
||||
<div *ngFor="let pub of news; index as i;">
|
||||
<div *ngIf="i<3">
|
||||
<span>{{pub.date}} </span>
|
||||
<a [routerLink]="pub.link ">{{pub.name}} </a>
|
||||
</div> <br>
|
||||
<div *ngFor="let pub of news">
|
||||
|
||||
<span class="pub-date">{{pub.date}} </span>
|
||||
<a [routerLink]="pub.link ">{{pub.name}} </a><br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
import { Component } from '@angular/core';
|
||||
import { PagesService } from '@app/_services/pages.service';
|
||||
import { RegistryEntriesService } from '@app/_services/registry-entries.service';
|
||||
import {PublicationsService} from "@app/_services/publications.service";
|
||||
import { RegistriesService } from '@app/_services/registries.service';
|
||||
|
||||
import { HttpClient } from '@angular/common/http';
|
||||
|
||||
import { environment } from '@environments/environment';
|
||||
|
||||
@Component({
|
||||
selector: 'jumbotron',
|
||||
|
|
@ -11,14 +13,14 @@ import { RegistriesService } from '@app/_services/registries.service';
|
|||
})
|
||||
export class JumbotronComponent {
|
||||
|
||||
regestries: any[] =[]
|
||||
entries: any[]
|
||||
rootEntries: any
|
||||
news: any[] =[]
|
||||
|
||||
constructor(
|
||||
private pagesService: PagesService,
|
||||
private entriesService: RegistryEntriesService,
|
||||
private publicationsService: PublicationsService,
|
||||
private registriesService: RegistriesService
|
||||
private http: HttpClient,
|
||||
){}
|
||||
|
||||
get currentPage(){
|
||||
|
|
@ -33,93 +35,55 @@ export class JumbotronComponent {
|
|||
return !this.pagesService.currentPage?.parents.data.length && this.pagesService.currentPage
|
||||
}
|
||||
|
||||
newlist(type: string, params?: {}) {
|
||||
return this.http.get(`${environment.apiUrl}/api/registries/list/${type}`, {params: params});
|
||||
}
|
||||
|
||||
ngOnInit(){
|
||||
|
||||
let include = ['page'];
|
||||
this.registriesService.list({
|
||||
// filters:JSON.stringify({"id": "602770ef-7f5b-421e-a4f4-14e16ca1ee90"}),
|
||||
include: include.join(',')
|
||||
}).subscribe(
|
||||
resp => {
|
||||
console.log('DATA',resp.data)
|
||||
let regID:any = [];
|
||||
regID = regID.concat(
|
||||
resp.data.filter( reg=> reg.type.name == "notice")
|
||||
.map(reg=>({id: reg.id, type:reg.type.title, page:reg.page.data.link}))
|
||||
)
|
||||
regID = regID.concat(
|
||||
resp.data.filter( reg=> reg.type.name == "approval")
|
||||
.map(reg=>({id: reg.id, type:reg.type.title, page:reg.page.data.link}))
|
||||
)
|
||||
console.log(regID)
|
||||
|
||||
regID.forEach(reg=>{
|
||||
this.entriesService.list({
|
||||
page:1,
|
||||
filters:JSON.stringify({
|
||||
"registry": reg.id
|
||||
})
|
||||
}).subscribe(resp=>{
|
||||
let include = ['properties.groups.fields.value'];
|
||||
resp.data.forEach(entry => {
|
||||
this.entriesService.show(entry.id,{include: include.join(',')}).subscribe(resp=>{
|
||||
console.log('ENYTY',resp.data)
|
||||
console.log('REG',reg)
|
||||
let properties = resp.data.properties.data.groups.data[0].fields.data;
|
||||
this.regestries.push({
|
||||
type:reg.type,
|
||||
page: reg.page,
|
||||
createdAt:resp.data.createdAt,
|
||||
notificationDate: properties.find(prop=>prop.name=='notification-date')?.value.data[0],
|
||||
subcommittee: properties.find(prop=>prop.name=='subcommittee')?.value.data[0],
|
||||
name: resp.data.name,
|
||||
link: resp.data.link,
|
||||
startDiscussion: properties.find(prop=>prop.name=='start-discussion')?.value.data[0],
|
||||
endDiscussion: properties.find(prop=>prop.name=='end-discussion')?.value.data[0],
|
||||
|
||||
|
||||
yearInclusion: properties.find(prop=>prop.name=='year-inclusion')?.value.data[0],
|
||||
documentType: properties.find(prop=>prop.name=='document-type')?.value.data[0],
|
||||
designation: properties.find(prop=>prop.name=='designation')?.value.data[0],
|
||||
order: properties.find(prop=>prop.name=='order')?.value.data[0],
|
||||
})
|
||||
this.regestries.sort((a,b)=> a.createdAt<b.createdAt?1:-1)
|
||||
})
|
||||
});
|
||||
})
|
||||
})
|
||||
// this.entriesService.list({
|
||||
// page:1,
|
||||
// filters:JSON.stringify({
|
||||
// "registry": regID[0]
|
||||
// })
|
||||
// }).subscribe(resp=>{
|
||||
// let include = ['properties.groups.fields.value'];
|
||||
// resp.data.slice(0,3).forEach(entry => {
|
||||
// this.entriesService.show(entry.id,{include: include.join(',')}).subscribe(resp=>{
|
||||
// let properties = resp.data.properties.data.groups.data[0].fields.data;
|
||||
// this.regestries.push({
|
||||
// notificationDate: properties.find(prop=>prop.name=='notification-date').value.data[0],
|
||||
// subcommittee: properties.find(prop=>prop.name=='subcommittee').value.data[0],
|
||||
// name: resp.data.name,
|
||||
// link: resp.data.link,
|
||||
// startDiscussion: properties.find(prop=>prop.name=='subcommittee').value.data[0],
|
||||
// endDiscussion: properties.find(prop=>prop.name=='subcommittee').value.data[0],
|
||||
// })
|
||||
// })
|
||||
// });
|
||||
// })
|
||||
|
||||
let include = ['registry.page', 'properties.groups.fields.value'];
|
||||
this.newlist('notice',{include: include.join(',')}).subscribe(
|
||||
(resp:any)=>{
|
||||
this.rootEntries = resp.data;
|
||||
|
||||
this.newlist('approval',{include: include.join(',')}).subscribe(
|
||||
(resp:any)=>{
|
||||
|
||||
this.rootEntries = this.rootEntries
|
||||
.concat(resp.data)
|
||||
.sort((a,b)=> a.createdAt<b.createdAt?1:-1)
|
||||
.slice(0,5)
|
||||
|
||||
this.entries = this.rootEntries.map(entry=>{
|
||||
|
||||
let properties = entry.properties.data.groups.data[0].fields.data;
|
||||
let findProp = (propName)=>properties.find(prop=>prop.name==propName)?.value.data[0]
|
||||
|
||||
return{
|
||||
type: entry.registry.data.type.title,
|
||||
page: entry.registry.data.page.data.link,
|
||||
name: entry.name,
|
||||
notificationDate: findProp('notification-date'),
|
||||
subcommittee: findProp('subcommittee'),
|
||||
startDiscussion: findProp('start-discussion'),
|
||||
endDiscussion: findProp('end-discussion'),
|
||||
yearInclusion: findProp('year-inclusion'),
|
||||
documentType: findProp('document-type'),
|
||||
designation: findProp('designation'),
|
||||
order: findProp('order'),
|
||||
}
|
||||
})
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
// this.registriesService.list().subscribe(resp=>{
|
||||
// console.log('EEEEntry', resp.data)
|
||||
// let regID = resp.data.find( reg=> reg.type.name == "notice").id
|
||||
// console.log('EEEEntry', regID)
|
||||
// })
|
||||
|
||||
this.publicationsService.list({subType: 'publication-news'}).subscribe(resp=>{
|
||||
// console.log('novosti', resp)
|
||||
this.news = resp.data.slice(0,3).map( pub =>
|
||||
|
||||
this.news = resp.data.slice(0,5).map( pub =>
|
||||
({
|
||||
name: pub.name,
|
||||
date: pub.publishDateRus,
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
.administration-page{
|
||||
font-family: PT Sans;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
|
||||
font-weight: 500;
|
||||
h2{
|
||||
color: var(--second-act);
|
||||
margin-bottom: 48px;
|
||||
|
|
|
|||
|
|
@ -149,20 +149,22 @@ button.mat-calendar-body-cell{
|
|||
}
|
||||
|
||||
.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover > .mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){
|
||||
background-color: rgba(0, 162, 255,0.3);
|
||||
background-color: rgba(0, 162, 255,0.3) ;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.mat-calendar-body-cell-content{
|
||||
font-family: PT Sans;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
width: 32px !important;
|
||||
height: 32px !important;
|
||||
button.mat-mdc-button:hover, button.mat-mdc-icon-button:hover{
|
||||
background-color: rgba(0, 162, 255,0.3) ;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.mat-calendar-body-cell-content{
|
||||
font-weight: 500;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.tox-promotion, .tox-statusbar__branding {
|
||||
display: none!important;
|
||||
}
|
||||
|
|
@ -446,11 +448,6 @@ modal{
|
|||
}
|
||||
|
||||
.toggle {
|
||||
font-family: PT Sans;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 24px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
|
|
@ -464,6 +461,7 @@ modal{
|
|||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100%;
|
||||
color: var(--dark);
|
||||
background-color: #ffffff;
|
||||
p {
|
||||
padding: 0;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
display: inline-block;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
flex-shrink: 0;
|
||||
img{
|
||||
object-fit: contain;
|
||||
width: 100%;
|
||||
|
|
|
|||
|
|
@ -262,6 +262,7 @@ form-field-document{
|
|||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0,0,0,0.6);
|
||||
z-index:10;
|
||||
}
|
||||
|
||||
.form {
|
||||
|
|
@ -270,6 +271,7 @@ form-field-document{
|
|||
z-index: 100;
|
||||
border-radius: 12px;
|
||||
padding: $p;
|
||||
margin-top: -100px;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -358,6 +360,9 @@ form-field-image{
|
|||
}
|
||||
.trash {
|
||||
margin-left: 4px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background-image: url("~src/assets/images/icons/delete_24dp.svg");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -372,11 +377,6 @@ form-field-image{
|
|||
|
||||
.caption {
|
||||
color: var(--second);
|
||||
font-family: PT Sans;
|
||||
font-size: 20px;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 32px;
|
||||
}
|
||||
.value {
|
||||
.error {
|
||||
|
|
@ -555,12 +555,13 @@ auth-page, auth-modal{
|
|||
.search-form{
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
.results{
|
||||
.tabs{
|
||||
button{
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.results{
|
||||
.tabs{
|
||||
button{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -74,6 +74,9 @@ jumbotron{
|
|||
>div{
|
||||
flex-grow: 1;
|
||||
flex-basis: 50%;
|
||||
.notification-date, .year-inclusion, .pub-date{
|
||||
color: var(--second);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -82,12 +85,13 @@ jumbotron{
|
|||
footer{
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
border-top: 1px solid var(--light);
|
||||
.footer{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
padding: 16px 48px 32px;
|
||||
border-top: 1px solid var(--light);
|
||||
|
||||
a, div{
|
||||
flex-basis: 50%;
|
||||
&:nth-child(2n){
|
||||
|
|
@ -97,6 +101,9 @@ footer{
|
|||
a:not(:hover), div{
|
||||
color: var(--second);
|
||||
}
|
||||
.footer-nir{
|
||||
margin-top: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ pages-menu{
|
|||
|
||||
|
||||
header{
|
||||
border-bottom: 1px solid var(--light);
|
||||
|
||||
.header.layout-corral{
|
||||
flex-direction: column;
|
||||
|
|
@ -70,7 +71,7 @@ header{
|
|||
background-color: #FFF;
|
||||
position: relative;
|
||||
gap: -1px;
|
||||
border-bottom: 1px solid var(--light);
|
||||
|
||||
pages-menu{
|
||||
display: none;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,14 @@ page-breadcrumbs{
|
|||
gap:2px;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
&.bc-depth-0{
|
||||
display: none;
|
||||
}
|
||||
&.bc-depth-1{
|
||||
li:first-child{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
li{
|
||||
&:first-child{
|
||||
display: inline-flex;
|
||||
|
|
@ -174,6 +182,14 @@ cards-section{
|
|||
border-top: 1px solid var(--second-dis);
|
||||
border-bottom: 1px solid var(--second-dis);
|
||||
margin-bottom: 40px;
|
||||
&::before{
|
||||
content: "Группа карточек";
|
||||
margin-right: auto;
|
||||
}
|
||||
>span{
|
||||
display: none;
|
||||
}
|
||||
|
||||
ico{
|
||||
cursor: pointer;
|
||||
svg{
|
||||
|
|
@ -333,6 +349,13 @@ cards-section-items{
|
|||
.card-text{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.cards-item-default-link{
|
||||
cursor: pointer;
|
||||
.card-subheader{
|
||||
color: var(--prime);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,22 +9,16 @@
|
|||
margin-bottom: 24px;
|
||||
}
|
||||
>div{
|
||||
margin-right: -1px;
|
||||
|
||||
button {
|
||||
padding: 8px 20px;
|
||||
background: #ffffff;
|
||||
border-radius: 4px 4px 0 0;
|
||||
border: var(--prime) solid 1px;
|
||||
color: var(--prime);
|
||||
font-family: PT Sans;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 24px; /* 150% */
|
||||
cursor: pointer;
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
margin-right: -1px;
|
||||
span {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 5.3 KiB |
|
|
@ -4,7 +4,7 @@
|
|||
<base href="/" />
|
||||
<title>TK 023</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no" />
|
||||
<link rel="icon" type="image/x-icon" href="/assets/images/favicon.png" />
|
||||
<link rel="icon" type="image/x-icon" href="/assets/images/favicon.ico" />
|
||||
</head>
|
||||
<body>
|
||||
<app></app>
|
||||
|
|
|
|||
|
|
@ -10,14 +10,13 @@
|
|||
<a href="https://vniigaz.gazprom.ru/" target="_blank">Учреждено в 1998</a>
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="space jumbotron-edit-field" *ngIf="editable" dir="ltr">
|
||||
<div class="layout-corral jumbotron-edit-field-row">
|
||||
<div class="switch-host" (click)="toggleEditMode()">
|
||||
Режим редактирования
|
||||
<switch [val]="editMode"></switch>
|
||||
</div>
|
||||
<switch [val]="editMode"></switch>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
<div *ngIf="page">
|
||||
<!-- <div class="limiter">
|
||||
<page-breadcrumbs [page]="page"></page-breadcrumbs>
|
||||
</div> -->
|
||||
<div class="pages" [ngSwitch]="page?.type?.name || page?.type">
|
||||
<content-page *ngSwitchCase="'content'" [page]="page" [editMode]="editMode"></content-page>
|
||||
<publications-page *ngSwitchCase="'publications'" [page]="page" [editMode]="editMode"></publications-page>
|
||||
<registry-page *ngSwitchCase="'registry'" [page]="page" [editMode]="editMode"></registry-page>
|
||||
<publication-page *ngSwitchCase="'publication'" [page]="page" [editMode]="editMode"></publication-page>
|
||||
<tk-structure-page *ngSwitchCase="'tk-structure'" [page]="page" [editMode]="editMode"></tk-structure-page>
|
||||
<p *ngSwitchDefault>Page type {{page?.type?.name}} is undefined</p>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="!loading && !page">
|
||||
<page-not-found></page-not-found>
|
||||
</div>
|
||||
<!--div class="loader" *ngIf="loading"></div-->
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
@media screen and (min-width: 1330px){
|
||||
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 480px) {
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
import {Component} from '@angular/core';
|
||||
import {NavigationEnd, Router} from "@angular/router";
|
||||
import {Subscription} from "rxjs";
|
||||
import {PagesService} from "@app/_services/pages.service";
|
||||
import {ListsService} from "@app/_services";
|
||||
import {Title} from "@angular/platform-browser";
|
||||
|
||||
@Component({
|
||||
templateUrl: 'page.component.html',
|
||||
styleUrls: ['page.component.scss']
|
||||
})
|
||||
export class PageComponent {
|
||||
public page: any;
|
||||
public loading = false;
|
||||
private url: string;
|
||||
private inited = false;
|
||||
routeSubscription?: Subscription;
|
||||
listSubscription: Subscription;
|
||||
|
||||
constructor(
|
||||
private router: Router,
|
||||
private pagesService: PagesService,
|
||||
private listsService: ListsService,
|
||||
private titleService:Title){
|
||||
this.routeSubscription = this.router.events.subscribe(event => {
|
||||
if (event instanceof NavigationEnd) this.onNavigationEnd(event);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
get editMode() {
|
||||
return this.pagesService.editMode;
|
||||
}
|
||||
|
||||
get permissions() {
|
||||
return this.page?.permissions;
|
||||
}
|
||||
|
||||
get isEditable() {
|
||||
return this.permissions?.edit || this.permissions?.anything;
|
||||
}
|
||||
|
||||
|
||||
ngOnInit() {
|
||||
this.listSubscription = this.listsService.controls().subscribe(res => {
|
||||
this.inited ? this.fetch() : this.inited = true;
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy() {
|
||||
this.routeSubscription?.unsubscribe();
|
||||
this.listSubscription?.unsubscribe()
|
||||
}
|
||||
|
||||
onNavigationEnd(event: NavigationEnd) {
|
||||
let url = event.url.split('(')[0].split('?')[0];
|
||||
if (url !== this.url) {
|
||||
this.url = url;
|
||||
this.fetch();
|
||||
this.pagesService.editMode = false;
|
||||
}
|
||||
}
|
||||
|
||||
fetch() {
|
||||
this.loading = true;
|
||||
let include = [
|
||||
'parents.children',
|
||||
'parents.picture',
|
||||
'children',
|
||||
'sections.type',
|
||||
'sections.groups.fields.value',
|
||||
'sections.objects.groups.fields.value',
|
||||
'sidebars.groups.fields.value',
|
||||
'sidebars.type',
|
||||
'permissions',
|
||||
'picture',
|
||||
'posters'
|
||||
];
|
||||
if (this.url == '/certification/voluntary/main') this.url = '/sertifikaciya/obyazatelnaya-sertifikaciya'
|
||||
this.pagesService.find(this.url, {include: include.join(',')}).subscribe(res => {
|
||||
this.page = res?.data;
|
||||
if (this.page) {
|
||||
this.pagesService.currentPage = this.page;
|
||||
// this.titleService.setTitle(this.page.title||this.page.h1||this.page.name)
|
||||
}
|
||||
this.loading = false;
|
||||
}, error => {
|
||||
this.loading = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
}
|
||||
.site-admin-company{
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
ico.page-lable{
|
||||
background-color: var(--prime);
|
||||
|
|
@ -68,9 +68,9 @@ administrate-site-pages{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ico.page-control{
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
svg{
|
||||
color:var(--second);
|
||||
&:hover{
|
||||
|
|
@ -79,7 +79,7 @@ ico.page-control{
|
|||
}
|
||||
}
|
||||
pages-tree{
|
||||
|
||||
|
||||
.item:not(.home){
|
||||
.bar{
|
||||
padding-left: 50px;
|
||||
|
|
@ -175,15 +175,130 @@ pages-tree{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
object-type-list{
|
||||
|
||||
.item:not(.home){
|
||||
.bar{
|
||||
padding-left: 50px;
|
||||
|
||||
}
|
||||
.item .bar{
|
||||
padding-left: 100px;
|
||||
}
|
||||
.item .item .bar{
|
||||
padding-left: 150px;
|
||||
}
|
||||
.item .item .item .bar{
|
||||
padding-left: 200px;
|
||||
}
|
||||
|
||||
.item .item .item .item .bar{
|
||||
padding-left: 250px;
|
||||
}
|
||||
|
||||
.item .item .item .item .item .bar{
|
||||
padding-left: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.item {
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
.bar {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
padding: 16px 0;
|
||||
border-bottom: #E0E0E0 solid 1px;
|
||||
.left {
|
||||
flex-shrink: 0;
|
||||
width: 40px;
|
||||
height: 24px;
|
||||
cursor: pointer;
|
||||
|
||||
}
|
||||
.mid {
|
||||
flex-grow: 1;
|
||||
padding: 0 16px;
|
||||
.info {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
position: relative;
|
||||
flex-shrink: 0;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
margin-right: 16px;
|
||||
border-radius: 100px;
|
||||
background-color: var(--prime);
|
||||
color: #ffffff;
|
||||
cursor: move;
|
||||
&:hover{
|
||||
background-color: var(--prime-act);
|
||||
}
|
||||
span{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.name {
|
||||
p {
|
||||
margin: 0;
|
||||
a {
|
||||
color: var(--grey-7);
|
||||
}
|
||||
&.sub {
|
||||
font-size: 0.875rem;
|
||||
color: #7f7f7f;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.right {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: flex-start;
|
||||
flex-shrink: 1;
|
||||
gap: 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 1330px) {
|
||||
.item {
|
||||
.bar {
|
||||
.mid {
|
||||
padding: 0 12px;
|
||||
.info .logo {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.right {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
.items {
|
||||
padding-left: 16px;
|
||||
}
|
||||
&.company {
|
||||
.items {
|
||||
padding-left: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
administrate-licence{
|
||||
font-family: PT Sans;
|
||||
|
|
@ -193,7 +308,7 @@ administrate-licence{
|
|||
line-height: 24px;
|
||||
color: var(--dark);
|
||||
.default{
|
||||
|
||||
|
||||
.caption{
|
||||
color: var(--second);
|
||||
}
|
||||
|
|
@ -242,7 +357,7 @@ users-list{
|
|||
flex-shrink: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
users-list-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -316,4 +431,4 @@ users-list{
|
|||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -157,14 +157,18 @@ button.mat-calendar-body-cell{
|
|||
font-weight: 400;
|
||||
}
|
||||
|
||||
button.mat-mdc-button:hover, button.mat-mdc-icon-button:hover{
|
||||
background-color: rgba(0, 162, 255,0.3) ;
|
||||
border: none;
|
||||
}
|
||||
|
||||
|
||||
.mat-calendar-body-cell-content{
|
||||
font-family: PT Sans;
|
||||
font-size: 16px;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
width: 75% !important;
|
||||
font-size: 15px;
|
||||
font-weight: 500;
|
||||
line-height: 24px;
|
||||
width: 32px !important;
|
||||
height: 32px !important;
|
||||
|
||||
}
|
||||
|
||||
.tox-promotion, .tox-statusbar__branding {
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ input, select, textarea {
|
|||
&:focus, &:focus-visible {
|
||||
border-color: var(--prime);
|
||||
outline: none;
|
||||
|
||||
|
||||
}
|
||||
&:disabled{
|
||||
border-color: #EDEDED;
|
||||
|
|
@ -202,7 +202,7 @@ form-field-document{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.values {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -242,7 +242,7 @@ form-field-document{
|
|||
ico{
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
svg{
|
||||
svg{
|
||||
color: var(--white);
|
||||
}
|
||||
}
|
||||
|
|
@ -264,8 +264,9 @@ form-field-document{
|
|||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(0,0,0,0.6);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
|
||||
.form {
|
||||
position: relative;
|
||||
background-color: #ffffff;
|
||||
|
|
@ -273,7 +274,7 @@ form-field-document{
|
|||
border-radius: 12px;
|
||||
padding: $p;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -332,7 +333,7 @@ form-field-image{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.values {
|
||||
display: flex;
|
||||
column-gap: 24px;
|
||||
|
|
@ -362,7 +363,7 @@ form-field-image{
|
|||
margin-left: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.field {
|
||||
|
|
@ -378,7 +379,7 @@ form-field-image{
|
|||
font-size: 20px;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
line-height: 32px;
|
||||
line-height: 32px;
|
||||
}
|
||||
.value {
|
||||
.error {
|
||||
|
|
@ -422,21 +423,21 @@ auth-page{
|
|||
text-align: center;
|
||||
color: #0071BB;
|
||||
}
|
||||
|
||||
|
||||
.form {
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
padding: 24px;
|
||||
}
|
||||
|
||||
|
||||
.center {
|
||||
width: 100%;
|
||||
max-width: 416px;
|
||||
margin: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@media screen and (max-width: 959px) {
|
||||
.authentication {
|
||||
flex-direction: column;
|
||||
|
|
@ -454,7 +455,7 @@ auth-page{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
auth-page, auth-modal{
|
||||
|
|
@ -465,16 +466,16 @@ auth-page, auth-modal{
|
|||
font-size: 24px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
||||
.field {
|
||||
margin: 0 0 16px;
|
||||
|
||||
|
||||
label {
|
||||
font-size: 14px;
|
||||
color: #666666;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
|
||||
.checkbox {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
|
@ -497,14 +498,14 @@ auth-page, auth-modal{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.error {
|
||||
margin: 0 0 16px;
|
||||
font-size: 14px;
|
||||
color: #D91519;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
.bar {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
|
@ -530,7 +531,7 @@ auth-page, auth-modal{
|
|||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.bottom {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
|
@ -539,8 +540,8 @@ auth-page, auth-modal{
|
|||
gap: 24px;
|
||||
margin: 24px 0 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@media screen and (max-width: 600px) {
|
||||
.bottom {
|
||||
flex-direction: column-reverse;
|
||||
|
|
@ -549,5 +550,5 @@ auth-page, auth-modal{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
justify-content: center;
|
||||
>.layout-corral{
|
||||
flex-basis: calc($layout-width + 2 * $pxl);
|
||||
padding: 0 $pxl;
|
||||
padding: 0 20px;
|
||||
display: flex;
|
||||
};
|
||||
.page-corral{
|
||||
|
|
@ -121,7 +121,7 @@ jumbotron{
|
|||
left-content{
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
right-content{
|
||||
flex-shrink: 0;
|
||||
pages-menu.current{
|
||||
|
|
@ -134,7 +134,7 @@ jumbotron{
|
|||
max-width: 100%;
|
||||
width: $page-width;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -152,7 +152,7 @@ jumbotron{
|
|||
|
||||
@media screen and (min-width: 1330px){
|
||||
.this-root-page{
|
||||
.content-sapce{
|
||||
.content-sapce{
|
||||
.content-grid{
|
||||
.main-content{
|
||||
margin-left: 150px;
|
||||
|
|
@ -170,7 +170,7 @@ footer{
|
|||
width: 100%;
|
||||
padding: 40px 0;
|
||||
margin-top: 48px;
|
||||
font-size: 16px;
|
||||
font-size: 16px;
|
||||
color: white;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -213,13 +213,13 @@ footer{
|
|||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.line{
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background-color: var(--prime);
|
||||
}
|
||||
|
||||
|
||||
.copyright{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
|
@ -296,4 +296,4 @@ pages-menu-item{
|
|||
gap: 24px;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ pages-menu{
|
|||
padding-left: 0;
|
||||
}
|
||||
pages-menu{
|
||||
padding-inline-start: 24px;
|
||||
padding-inline-start: 6px;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -21,11 +21,11 @@ header{
|
|||
|
||||
pages-menu{
|
||||
flex-direction: row;
|
||||
gap:24px;
|
||||
gap:12px;
|
||||
&:not(.lvl-0){
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
.item{
|
||||
drop-down{
|
||||
display: none;
|
||||
|
|
@ -99,7 +99,7 @@ header{
|
|||
|
||||
a.logo{
|
||||
img{
|
||||
width:114px;
|
||||
width:114px;
|
||||
height: 80px;
|
||||
}
|
||||
}
|
||||
|
|
@ -372,7 +372,7 @@ right-content{
|
|||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ add-section, publications-list{
|
|||
border-top: 1px solid var(--second-dis);
|
||||
border-bottom: 1px solid var(--second-dis);
|
||||
}
|
||||
|
||||
|
||||
&.active{
|
||||
a{
|
||||
color: var(--prime-act);
|
||||
|
|
@ -97,7 +97,7 @@ add-section, publications-list{
|
|||
top:22px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
.menu {
|
||||
|
|
@ -157,9 +157,9 @@ cards-section-items{
|
|||
align-items: stretch;
|
||||
gap: 24px;
|
||||
flex-wrap: wrap;
|
||||
|
||||
|
||||
cards-section-item {
|
||||
|
||||
|
||||
width: 252px;
|
||||
cards-item-persons{
|
||||
display: flex;
|
||||
|
|
@ -178,6 +178,9 @@ cards-section-items{
|
|||
height: 100%;
|
||||
}
|
||||
}
|
||||
.item{
|
||||
overflow: hidden;
|
||||
}
|
||||
.title{
|
||||
font-family: PT Sans Narrow;
|
||||
font-size: 24px;
|
||||
|
|
@ -206,7 +209,7 @@ cards-section-items{
|
|||
.entry-contents{
|
||||
text-align: justify;
|
||||
text-indent: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -242,7 +245,7 @@ cards-section-items{
|
|||
|
||||
|
||||
|
||||
// cards
|
||||
// cards
|
||||
|
||||
|
||||
|
||||
|
|
@ -279,7 +282,7 @@ cards-section-items{
|
|||
}
|
||||
.card-subheader, .card-text{
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
.default{
|
||||
display: flex;
|
||||
|
|
@ -327,10 +330,10 @@ cards-section-items{
|
|||
border-color: var(--bk44);
|
||||
}
|
||||
.card-subheader{
|
||||
color: var(--bk88);
|
||||
color: var(--bk88);
|
||||
}
|
||||
.card-header{
|
||||
color: var(--bk66);
|
||||
color: var(--bk66);
|
||||
}
|
||||
&::after{
|
||||
background-image: url(/assets/images/ico/arrow_forward_24_hover.svg);
|
||||
|
|
@ -432,7 +435,7 @@ cards-section-items{
|
|||
|
||||
|
||||
|
||||
// cards
|
||||
// cards
|
||||
|
||||
|
||||
|
||||
|
|
@ -455,56 +458,56 @@ images-section{
|
|||
top:24px;
|
||||
right: 24px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.items {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
width: 100%;
|
||||
gap: 8px;
|
||||
|
||||
img{
|
||||
|
||||
img{
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
|
||||
&.tiles{
|
||||
.item{
|
||||
margin-bottom: 16px;
|
||||
img{
|
||||
border: 1px solid var(--second-dis);
|
||||
max-height: 273px;
|
||||
max-width: 273px;
|
||||
max-width: 273px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
&.full-width{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
|
||||
.item{
|
||||
max-width: 100%;
|
||||
margin-bottom: 32px;
|
||||
img{
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.item {
|
||||
|
||||
|
||||
position: relative;
|
||||
|
||||
|
||||
img {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
|
||||
&.full-width {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -515,7 +518,7 @@ images-section{
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.swiper-box{
|
||||
width: 100% !important;
|
||||
|
|
@ -523,7 +526,7 @@ images-section{
|
|||
max-height: 400px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.fullscreen {
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
|
@ -535,12 +538,12 @@ images-section{
|
|||
width: 100vw;
|
||||
height: 100vh;
|
||||
background-color: grey;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@media screen and (max-width: 700px){
|
||||
.carousel {
|
||||
|
||||
|
||||
.prev, .next {
|
||||
cursor: pointer;
|
||||
z-index: 1;
|
||||
|
|
@ -558,9 +561,9 @@ images-section{
|
|||
.slide {
|
||||
width: calc( 100vw - 80px );
|
||||
height: calc( (100vw - 80px) * 0.75 );
|
||||
|
||||
|
||||
img {
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -574,14 +577,14 @@ images-section{
|
|||
display: flex !important;
|
||||
}
|
||||
.fullscreen {
|
||||
|
||||
|
||||
|
||||
|
||||
.content {
|
||||
position: fixed;
|
||||
display: flex;
|
||||
pointer-events: none;
|
||||
|
||||
|
||||
|
||||
|
||||
width:100vw;
|
||||
height:100vh;
|
||||
left: 0;
|
||||
|
|
@ -605,11 +608,11 @@ publications-list{
|
|||
align-items: flex-end;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
|
||||
.items {
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
publications-list-item {
|
||||
display: block;
|
||||
padding: 24px 0;
|
||||
|
|
@ -625,13 +628,13 @@ publications-list{
|
|||
font-size: 32px;
|
||||
line-height: 38px;
|
||||
}
|
||||
|
||||
|
||||
.date{
|
||||
color: var(--second);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.excerpt{
|
||||
margin-top: $p;
|
||||
font-family: PT Sans;
|
||||
|
|
@ -646,20 +649,20 @@ publications-list{
|
|||
.name{
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
|
||||
.publication-read-more{
|
||||
margin-top: 24px;
|
||||
}
|
||||
|
||||
|
||||
.content{
|
||||
margin-top: $p;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: $p;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
publication-page {
|
||||
|
|
@ -668,7 +671,7 @@ publication-page {
|
|||
color: var(--second);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.name{
|
||||
margin-bottom: 24px;
|
||||
|
|
@ -682,7 +685,7 @@ publication-page {
|
|||
text-align: justify;
|
||||
text-indent: 30px;
|
||||
};
|
||||
|
||||
|
||||
.publication-page-back {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
|
|
@ -693,7 +696,7 @@ publication-page {
|
|||
}
|
||||
|
||||
gellery{
|
||||
.poster{
|
||||
.poster{
|
||||
height: 468px;
|
||||
max-width: calc( 100vw - 80px);
|
||||
max-height: calc( (100vw - 80px ) * 0.7 );
|
||||
|
|
@ -761,7 +764,7 @@ video-section{
|
|||
.poster{
|
||||
object-fit: cover;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
.icon{
|
||||
position: absolute;
|
||||
|
|
@ -777,7 +780,7 @@ video-section{
|
|||
background-color: black;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -859,4 +862,4 @@ video-section{
|
|||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue