Added saved filters

pull/6/head
Alvaro Puente Mella 2024-08-01 23:25:46 +02:00
parent 4016f00f78
commit 18ff06afb2
9 changed files with 473 additions and 321 deletions

View File

@ -139,4 +139,21 @@ export class DataService {
})
);
}
getFilters(): Observable<any> {
return this.http.get<any>('http://127.0.0.1:8080/views?page=1&itemsPerPage=30').pipe(
map(response => {
if (response['hydra:member'] && Array.isArray(response['hydra:member'])) {
return response['hydra:member'];
} else {
throw new Error('Unexpected response format');
}
}),
catchError(error => {
console.error('Error fetching filters', error);
return throwError(error);
})
);
}
}

View File

@ -122,17 +122,15 @@ mat-spinner {
align-self: center;
}
.container { /* Asegúrate de que esta clase sea la del contenedor del botón */
.container {
display: flex;
justify-content: flex-end;
width: 200px;
}
.classroomBtn-container {
display: flex;
justify-content: flex-end;
width: 100%; /* Asegura que el contenedor ocupe todo el ancho disponible */
padding-right: 20px; /* Opcional: ajusta el espacio a la derecha */
width: 100%;
padding-right: 20px;
}
.classroomBtn {

View File

@ -1,27 +1,27 @@
<mat-tab-group>
<mat-tab label="General" i18n-label="@@tabGeneralLabel">
<mat-tab label="General">
<div class="header-container">
<h2 class="title" i18n="@@headerAdminGroups">Administrar grupos</h2>
<h2 class="title" i18n="@@adminGroupsTitle">Administrar grupos</h2>
<div class="groups-button-row">
<button mat-flat-button color="primary" (click)="addOU($event)" i18n="@@buttonNewOU">Nueva Unidad Organizativa</button>
<button mat-flat-button color="primary" (click)="addClient($event)" i18n="@@buttonNewClient">Nuevo Cliente</button>
<button mat-raised-button (click)="openBottomSheet()" i18n="@@buttonLegend">Leyenda</button>
<button mat-flat-button color="primary" (click)="addOU($event)" i18n="@@newOrganizationalUnitButton">Nueva Unidad Organizativa</button>
<button mat-flat-button color="primary" (click)="addClient($event)" i18n="@@newClientButton">Nuevo Cliente</button>
<button mat-raised-button (click)="openBottomSheet()" i18n="@@legendButton">Leyenda</button>
</div>
<div class="classroomBtn-container">
<button mat-flat-button class="classroomBtn" color="accent" (click)="roomMap()" *ngIf="selectedDetail && selectedDetail.type === 'classroom'" i18n="@@buttonRoomMap">Plano de aula</button>
<div class="container">
<button mat-flat-button class="roomMap-btn" color="accent" (click)="roomMap()" *ngIf="selectedDetail && selectedDetail.type === 'classroom'" i18n="@@classroomMapButton">Plano de aula</button>
</div>
</div>
<div class="search-container">
<mat-form-field appearance="fill">
<mat-label i18n="@@labelSearch">Búsqueda</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="searchTerm" (keyup.enter)="search()" i18n-placeholder="@@placeholderSearch">
<mat-label i18n="@@searchLabel">Búsqueda</mat-label>
<input matInput placeholder="Búsqueda" [(ngModel)]="searchTerm" (keyup.enter)="search()" i18n-placeholder="@@searchPlaceholder">
<mat-icon matSuffix>search</mat-icon>
<mat-hint i18n="@@hintSearch">Pulsar 'enter' para buscar entre las unidades organizativas</mat-hint>
<mat-hint i18n="@@searchHint">Pulsar 'enter' para buscar entre las unidades organizativas</mat-hint>
</mat-form-field>
</div>
<div class="groupLists-container">
<mat-card class="card unidad-card">
<mat-card-title i18n="@@cardTitleOU">Unidad organizativa</mat-card-title>
<mat-card-title i18n="@@organizationalUnitTitle">Unidad organizativa</mat-card-title>
<mat-card-content>
<mat-spinner *ngIf="loading"></mat-spinner>
<mat-list *ngIf="!loading">
@ -31,55 +31,60 @@
<mat-icon>apartment</mat-icon>
{{ unidad.name }}
<span class="actions">
<mat-icon mat-button [matMenuTriggerFor]="menu" (click)="$event.stopPropagation()">menu</mat-icon>
<mat-menu #menu="matMenu">
<button mat-menu-item (click)="onTreeClick($event, unidad)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Visualizar en forma de arbol"
matTooltipHideDelay="0" i18n-matTooltip="@@tooltipViewTree">account_tree
</mat-icon>
<span i18n="@@menuItemViewTree">Ver organigrama</span>
</button>
<button mat-menu-item (click)="onEditClick($event, unidad.type, unidad.uuid)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Editar unidad organizativa"
matTooltipHideDelay="0" i18n-matTooltip="@@tooltipEditOU">edit
</mat-icon>
<span i18n="@@menuItemEditOU">Editar</span>
</button>
<button mat-menu-item (click)="onShowClick($event, unidad)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Visualizar unidad organizativa"
matTooltipHideDelay="0" i18n-matTooltip="@@tooltipViewOU">visibility
</mat-icon>
<span i18n="@@menuItemViewOU">Visualizar datos</span>
</button>
<button mat-menu-item (click)="addOU($event, unidad)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Crear unidad organizativa interna"
matTooltipHideDelay="0" i18n-matTooltip="@@tooltipAddOU">add_home_work
</mat-icon>
<span i18n="@@menuItemAddOU">Añadir unidad organizativa</span>
</button>
<button mat-menu-item (click)="addClient($event, unidad)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Crear cliente en esta unidad organizativa"
matTooltipHideDelay="0" i18n-matTooltip="@@tooltipAddClient">devices
</mat-icon>
<span i18n="@@menuItemAddClient">Crear cliente</span>
</button>
</mat-menu>
</span>
<mat-icon mat-button [matMenuTriggerFor]="menu" (click)="$event.stopPropagation()">menu</mat-icon>
<mat-menu #menu="matMenu">
<button mat-menu-item (click)="onTreeClick($event, unidad)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Visualizar en forma de arbol"
matTooltipHideDelay="0"
i18n="@@viewTreeTooltip">account_tree
</mat-icon>
<span i18n="@@viewTreeMenu">Ver organigrama</span>
</button>
<button mat-menu-item (click)="onEditClick($event, unidad.type, unidad.uuid)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Editar unidad organizativa"
matTooltipHideDelay="0"
i18n="@@editUnitTooltip">edit
</mat-icon>
<span i18n="@@editUnitMenu">Editar</span>
</button>
<button mat-menu-item (click)="onShowClick($event, unidad)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Visualizar unidad organizativa"
matTooltipHideDelay="0"
i18n="@@viewUnitTool">visibility
</mat-icon>
<span i18n="@@viewUnitMenu">Visualizar datos</span>
</button>
<button mat-menu-item (click)="addOU($event, unidad)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Crear unidad organizativa interna"
matTooltipHideDelay="0"
i18n="@@addInternalUnitTool">add_home_work
</mat-icon>
<span i18n="@@addInternalUnitMenu">Añadir unidad organizativa</span>
</button>
<button mat-menu-item (click)="addClient($event, unidad)">
<mat-icon
class="edit-icon"
#tooltip="matTooltip"
matTooltip="Crear cliente en esta unidad organizativa"
matTooltipHideDelay="0"
i18n="@@addClientDevice">devices
</mat-icon>
<span i18n="@@addClientMenu">Crear cliente</span>
</button>
</mat-menu>
</span>
</div>
</mat-list-item>
</mat-list>
@ -88,7 +93,7 @@
<mat-card class="card elements-card">
<mat-card-title>
<div class="title-with-breadcrumb">
<span i18n="@@cardTitleInternalElements">Elementos internos</span>
<span i18n="@@internalElementsTitle">Elementos internos</span>
<mat-card-subtitle>
<ng-container *ngFor="let crumb of breadcrumb; let i = index">
<a (click)="navigateToBreadcrumb(i)">{{ crumb }}</a>
@ -102,7 +107,7 @@
<mat-list *ngIf="!loadingChildren">
<div *ngIf="children.length === 0" class="empty-list">
<mat-icon>info</mat-icon>
<span i18n="@@emptyListNoInternalElements">No hay elementos internos</span>
<span i18n="@@noInternalElementsMessage">No hay elementos internos</span>
</div>
<mat-list-item *ngFor="let child of children" [ngClass]="{'selected-item': child === selectedUnidad, 'clickable-item': true}" (click)="onSelectChild(child)">
<div class="item-content">
@ -116,48 +121,112 @@
</mat-icon>
{{child.name}}
<span class="actions">
<mat-icon mat-button [matMenuTriggerFor]="menu" (click)="$event.stopPropagation()">menu</mat-icon>
<mat-menu #menu="matMenu">
<button mat-menu-item (click)="onEditClick($event, child.type, child.uuid)">
<mat-icon class="edit-icon" #tooltip="matTooltip" matTooltip="Editar elemento" matTooltipHideDelay="0" i18n-matTooltip="@@tooltipEditElement">edit</mat-icon>
<span i18n="@@menuItemEditElement">Editar</span>
</button>
<button *ngIf="child.type !== 'client'" mat-menu-item (click)="onShowClick($event, child)">
<mat-icon class="edit-icon" #tooltip="matTooltip" matTooltip="Visualizar unidad organizativa" matTooltipHideDelay="0" i18n-matTooltip="@@tooltipViewOUElement">visibility</mat-icon>
<span i18n="@@menuItemViewOUElement">Visualizar datos</span>
</button>
<button *ngIf="child.type !== 'client'" mat-menu-item (click)="addOU($event, child)">
<mat-icon class="edit-icon" #tooltip="matTooltip" matTooltip="Crear unidad organizativa interna" matTooltipHideDelay="0" i18n-matTooltip="@@tooltipAddOUElement">add_home_work</mat-icon>
<span i18n="@@menuItemAddOUElement">Añadir unidad organizativa</span>
</button>
<button *ngIf="child.type !== 'client'" mat-menu-item (click)="addClient($event, child)">
<mat-icon class="edit-icon" #tooltip="matTooltip" matTooltip="Crear cliente en esta unidad organizativa" matTooltipHideDelay="0" i18n-matTooltip="@@tooltipAddClientElement">devices</mat-icon>
<span i18n="@@menuItemAddClientElement">Crear cliente</span>
</button>
<button mat-menu-item (click)="onDeleteClick($event, child.uuid, child.name, child.type)">
<mat-icon class="delete-icon" #tooltip="matTooltip" matTooltip="Borrar elemento" matTooltipHideDelay="0" i18n-matTooltip="@@tooltipDeleteElement">delete</mat-icon>
<span i18n="@@menuItemDeleteElement">Borrar elemento</span>
</button>
</mat-menu>
</span>
<mat-icon mat-button [matMenuTriggerFor]="menu" (click)="$event.stopPropagation()">menu</mat-icon>
<mat-menu #menu="matMenu">
<button mat-menu-item (click)="onEditClick($event, child.type, child.uuid)">
<mat-icon class="edit-icon" #tooltip="matTooltip" matTooltip="Editar elemento" matTooltipHideDelay="0" i18n="@@editElementTooltip">edit</mat-icon>
<span i18n="@@editElementMenu">Editar</span>
</button>
<button *ngIf="child.type !== 'client'" mat-menu-item (click)="onShowClick($event, child)">
<mat-icon class="edit-icon" #tooltip="matTooltip" matTooltip="Visualizar unidad organizativa" matTooltipHideDelay="0" i18n="@@viewUnitTooltip">visibility</mat-icon>
<span i18n="@@viewUnitMenu">Visualizar datos</span>
</button>
<button *ngIf="child.type !== 'client'" mat-menu-item (click)="addOU($event, child)">
<mat-icon class="edit-icon" #tooltip="matTooltip" matTooltip="Crear unidad organizativa interna" matTooltipHideDelay="0" i18n="@@addInternalUnitTooltip">add_home_work</mat-icon>
<span i18n="@@addInternalUnitMenu">Añadir unidad organizativa</span>
</button>
<button *ngIf="child.type !== 'client'" mat-menu-item (click)="addClient($event, child)">
<mat-icon class="edit-icon" #tooltip="matTooltip" matTooltip="Crear cliente en esta unidad organizativa" matTooltipHideDelay="0" i18n="@@addClientTooltip">devices</mat-icon>
<span i18n="@@addClientMenu">Crear cliente</span>
</button>
<button mat-menu-item (click)="onDeleteClick($event, child.uuid, child.name, child.type)">
<mat-icon class="delete-icon" #tooltip="matTooltip" matTooltip="Borrar elemento" matTooltipHideDelay="0" i18n="@@deleteElementTooltip">delete</mat-icon>
<span i18n="@@deleteElementMenu">Borrar elemento</span>
</button>
</mat-menu>
</span>
</div>
</mat-list-item>
</mat-list>
</mat-card-content>
</mat-card>
<!-- <app-classroom-view class="card classroom-view" [clients]="clientsData" [pcInTable]="5"></app-classroom-view> -->
</div>
</mat-tab>
<mat-tab label="Búsqueda avanzada" i18n-label="@@tabAdvancedSearchLabel">
<h2 class="title" i18n="@@headerSearch">Búsqueda</h2>
<mat-tab label="Búsqueda avanzada">
<h2 class="title" i18n="@@searchTitle">Búsqueda</h2>
<div class="container">
<div class="header">
<mat-form-field>
<mat-label i18n="@@labelSelectFilter">Seleccione filtro</mat-label>
<mat-label i18n="@@selectFilterLabel">Seleccione filtro</mat-label>
<mat-select (selectionChange)="loadSelectedFilter($event.value)">
<mat-option *ngFor="let savedFilter of savedFilters" [value]="savedFilter">
{{ savedFilter.name }}
<mat-option *ngFor="let savedFilter of savedFilterNames" [value]="savedFilter">
{{ savedFilter }}
</mat-option>
</mat-select>
</mat-form-field>
</mat-form-field>
</div>
<mat-divider class="divider"></mat-divider>
<div class="main-content">
<div class="filters">
<mat-form-field>
<mat-label i18n="@@selectOptionLabel">Selecciona una opción</mat-label>
<mat-select [(value)]="selectedFilter1" (selectionChange)="applyFilter()">
<mat-option value="ou" i18n="@@organizationalUnitsOption">Unidades organizativas</mat-option>
<mat-option value="client" i18n="@@clientsOption">Clientes</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field class="example-full-width">
<mat-label i18n="@@nameLabel">Nombre</mat-label>
<input matInput placeholder="Unidad organizativa" (input)="applyFilter()" [(ngModel)]="filterName" i18n-placeholder="@@namePlaceholder">
</mat-form-field>
<mat-form-field [disabled]="selectedFilter1 === 'ou'">
<mat-label i18n="@@unitTypeLabel">Tipo de unidad</mat-label>
<mat-select [(value)]="selectedFilter2" (selectionChange)="applyFilter()">
<mat-option value="organizational-unit" i18n="@@organizationalUnitOption">Unidad organizativa</mat-option>
<mat-option value="classroom-group" i18n="@@classroomsGroupOption">Grupos de aulas</mat-option>
<mat-option value="classroom" i18n="@@classroomOption">Aulas</mat-option>
<mat-option value="client-group" i18n="@@clientGroupOption">Grupos de clientes</mat-option>
</mat-select>
</mat-form-field>
<mat-form-field>
<mat-label i18n="@@selectAnotherOptionLabel">Selecciona otra opción</mat-label>
<mat-select [(value)]="selectedFilter1" (selectionChange)="applyFilter()">
<mat-option value="none" i18n="@@noneOption">Ninguno</mat-option>
<mat-option value="option1" i18n="@@option1">Opción 1</mat-option>
<mat-option value="option2" i18n="@@option2">Opción 2</mat-option>
<mat-option value="option3" i18n="@@option3">Opción 3</mat-option>
</mat-select>
</mat-form-field>
<button mat-raised-button color="primary" (click)="saveFilters()" i18n="@@saveFiltersButton">Guardar Filtros</button>
</div>
<div class="results">
<ng-container *ngIf="filteredResults && filteredResults.length > 0; else noResults">
<mat-grid-list cols="4" rowHeight="1:1">
<mat-grid-tile *ngFor="let result of filteredResults">
<mat-card class="result-card">
<mat-card-title>{{ result.name }}</mat-card-title>
<mat-card-content>
<p>{{ result.type }}</p>
<p *ngIf="result.type !== 'client'" i18n="@@internalUnits">Unidades internas: {{ result.type !== 'client' ? result.children.length : 0}}</p>
<p *ngIf="result.type !== 'client'" i18n="@@clients">Clientes: {{ result.type !== 'client' ? result.clients.length : 0}}</p>
</mat-card-content>
</mat-card>
</mat-grid-tile>
</mat-grid-list>
<div class="paginator-container">
<mat-paginator [length]="length"
[pageSize]="itemsPerPage"
[pageIndex]="page"
[pageSizeOptions]="pageSizeOptions"
(page)="onPageChange($event)">
</mat-paginator>
</div>
</ng-container>
<ng-template #noResults>
<p i18n="@@noResultsMessage">No hay resultados para mostrar.</p>
</ng-template>
</div>
</div>
</div>
</mat-tab>
</mat-tab-group>

View File

@ -39,7 +39,7 @@ export class GroupsComponent implements OnInit {
selectedFilter2: string = 'none';
filterName: string = '';
filteredResults: any[] = [];
savedFilters: any[] = [];
savedFilterNames: any[] = [];
length: number = 0;
itemsPerPage: number = 10;
page: number = 1;
@ -55,6 +55,20 @@ export class GroupsComponent implements OnInit {
ngOnInit(): void {
this.search();
this.getFilters();
}
getFilters(): void {
this.dataService.getFilters().subscribe(
data => {
this.savedFilterNames = data.map((filter: any) => filter.name);
console.log('data:', data);
console.log('Saved filters:', this.savedFilterNames);
},
error => {
console.error('Error fetching filters:', error);
}
);
}
search(): void {
@ -303,10 +317,21 @@ export class GroupsComponent implements OnInit {
}
saveFilters() {
const filters = {
name: `Filter ${new Date().toISOString()}`,
filter1: this.selectedFilter1,
filter2: this.selectedFilter2
name: this.filterName || `Filter ${new Date().toISOString()}`,
favourite: true,
filters: {
filter1: this.selectedFilter1,
filter2: this.selectedFilter2
}
};
console.log('Filters:', filters);
this.http.post('http://127.0.0.1:8080/views', filters).subscribe(response => {
console.log('Response from server:', response);
}, error => {
console.error('Error:', error);
});
}
loadSelectedFilter(savedFilter: any) {

View File

@ -30,7 +30,6 @@ export class HeaderComponent implements OnInit {
this.decodedToken = jwtDecode(token);
this.isSuperAdmin = this.decodedToken.roles.includes('ROLE_SUPER_ADMIN');
localStorage.setItem('isSuperAdmin', String(this.isSuperAdmin));
console.log('isSuperAdmin:', this.isSuperAdmin);
this.username = this.decodedToken.username;
} catch (error) {
console.error('Error decoding JWT:', error);

View File

@ -37,3 +37,8 @@ mat-icon {
margin-top: auto;
}
@media (max-width: 680px) {
mat-nav-list {
width: 0px;
}
}

View File

@ -23,7 +23,6 @@ export class SidebarComponent {
this.decodedToken = jwtDecode(token);
this.isSuperAdmin = this.decodedToken.roles.includes('ROLE_SUPER_ADMIN');
localStorage.setItem('isSuperAdmin', String(this.isSuperAdmin));
console.log('isSuperAdmin:', this.isSuperAdmin);
this.username = this.decodedToken.username;
} catch (error) {
console.error('Error decoding JWT:', error);

View File

@ -1,19 +1,19 @@
{
"locale": "en",
"translations": {
"digital-board": "Digital Board",
"digital-board": "Digital board",
"projector-alt": "Projector",
"client-image-alt": "Client",
"save-disposition-button": "Save Layout",
"save-disposition-button": "Save layout",
"client-properties-title": "Client Properties",
"property-header": "Property",
"value-header": "Value",
"power-on-button": "Power On",
"power-off-button": "Power Off",
"reset-button": "Reset",
"other-actions-1": "Other Actions 1",
"other-actions-2": "Other Actions 2",
"other-actions-3": "Other Actions 3",
"other-actions-1": "Other actions 1",
"other-actions-2": "Other actions 2",
"other-actions-3": "Other actions 3",
"close-button": "Close",
"add-client-dialog-title": "Add Client",
"organizational-unit-label": "Parent",
@ -35,34 +35,62 @@
"add-button": "Add",
"edit-client-dialog-title": "Edit Client",
"delete-dialog-title": "Delete",
"delete-dialog-content": "Do you want to delete the clients located at {$INTERPOLATION} or relocate them to the top level?",
"delete-all-clients-button": "Delete All Clients",
"delete-dialog-content": "Do you want to delete the clients located in {$INTERPOLATION} or move them to the top level?",
"delete-all-clients-button": "Delete all clients",
"reposition-clients-button": "Reposition",
"deleteDialogTitle": "Delete",
"deleteConfirmationMessage": "Are you sure you want to delete {$INTERPOLATION}?",
"cancelButton": "Cancel",
"confirmButton": "Delete",
"titleAdminGroups": "Manage Groups",
"btnNewOrgUnit": "New Organizational Unit",
"btnNewClient": "New Client",
"btnLegend": "Legend",
"btnClassroomMap": "Classroom Layout",
"lblSearch": "Search",
"phSearch": "Search",
"hintSearch": "Press 'enter' to search among organizational units",
"cardTitleOrgUnit": "Organizational Unit",
"menuItemTreeView": "View Org Chart",
"menuItemEdit": "Edit",
"menuItemViewData": "View Data",
"menuItemAddOrgUnit": "Add Organizational Unit",
"menuItemAddClient": "Create Client",
"cardTitleElements": "Internal Elements",
"noElements": "No internal elements",
"menuItemEditElement": "Edit",
"menuItemViewOrgUnit": "View Data",
"menuItemAddInternalOrgUnit": "Add Organizational Unit",
"menuItemAddClientToOrgUnit": "Create Client",
"menuItemDeleteElement": "Delete Element",
"adminGroupsTitle": "Manage Groups",
"newOrganizationalUnitButton": "New Organizational Unit",
"newClientButton": "New Client",
"legendButton": "Legend",
"classroomMapButton": "Classroom Layout",
"searchLabel": "Search",
"searchPlaceholder": "Search",
"searchHint": "Press 'enter' to search among organizational units",
"organizationalUnitTitle": "Organizational Unit",
"viewTreeTooltip": "account_tree",
"viewTreeMenu": "View Organization Chart",
"editUnitTooltip": "edit",
"editUnitMenu": "Edit",
"viewUnitTool": "visibility",
"viewUnitMenu": "View Details",
"addInternalUnitTool": "add_home_work",
"addInternalUnitMenu": "Add Organizational Unit",
"addClientDevice": "devices",
"addClientMenu": "Create Client",
"internalElementsTitle": "Internal Elements",
"noInternalElementsMessage": "No internal elements",
"editElementTooltip": "edit",
"editElementMenu": "Edit",
"viewUnitTooltip": "visibility",
"addInternalUnitTooltip": "add_home_work",
"addClientTooltip": "devices",
"deleteElementTooltip": "delete",
"deleteElementMenu": "Delete Element",
"searchTitle": "Search",
"selectFilterLabel": "Select filter",
"selectOptionLabel": "Select an option",
"organizationalUnitsOption": "Organizational Units",
"clientsOption": "Clients",
"nameLabel": "Name",
"namePlaceholder": "Organizational Unit",
"unitTypeLabel": "Unit Type",
"organizationalUnitOption": "Organizational Unit",
"classroomsGroupOption": "Classroom Groups",
"classroomOption": "Classrooms",
"clientGroupOption": "Client Groups",
"selectAnotherOptionLabel": "Select another option",
"noneOption": "None",
"option1": "Option 1",
"option2": "Option 2",
"option3": "Option 3",
"saveFiltersButton": "Save Filters",
"internalUnits": "Internal Units: {$INTERPOLATION}",
"clients": "Clients: {$INTERPOLATION}",
"noResultsMessage": "No results to display.",
"orgUnitTitle": "Organizational Unit",
"classroomGroupsTitle": "Classroom Groups",
"classroomTitle": "Classroom",
@ -71,7 +99,6 @@
"addOrgUnitTitle": "Add Organizational Unit",
"generalStepLabel": "General",
"typeLabel": "Type",
"nameLabel": "Name",
"createOrgUnitparentLabel": "Parent Organizational Unit",
"noParentOption": "--",
"descriptionLabel": "Description",
@ -110,9 +137,9 @@
"2366056895545879062": "Power On",
"7368908909686115507": "Power Off",
"7760171369336053154": "Reset",
"6799187990933478083": "Other Actions 1",
"8971534271481971645": "Other Actions 2",
"3300614831699539964": "Other Actions 3",
"6799187990933478083": "Other actions 1",
"8971534271481971645": "Other actions 2",
"3300614831699539964": "Other actions 3",
"viewTreeTitle": "View Organizational Unit Tree",
"closeButton": "Close",
"webConsoleTitle": "Opengnsys Web Console",
@ -139,12 +166,12 @@
"dialogTitleAddRole": "Add Role (TBD)",
"labelRoleName": "Name",
"sectionTitlePermissions": "Permissions:",
"checkboxManageUsers": "Manage Users",
"checkboxManageUsers": "Manage users",
"checkboxPXEConfig": "PXE Configuration",
"checkboxConsoleImages": "Web Console Images",
"checkboxManageComponents": "Manage Components",
"checkboxCreateImages": "Create Images",
"checkboxServerConfigScript": "Server Configuration Script",
"checkboxManageComponents": "Manage various components",
"checkboxCreateImages": "Create images",
"checkboxServerConfigScript": "Server configuration script",
"checkboxOther": "...",
"buttonCancel": "Cancel",
"buttonAdd": "Add",
@ -177,4 +204,4 @@
"buttonEditUser": "Edit",
"buttonDeleteUser": "Delete"
}
}
}

View File

@ -1,194 +1,207 @@
{
"locale": "en",
"locale": "es",
"translations": {
"digital-board": "Digital board",
"projector-alt": "Projector",
"digital-board": "Pizarra digital",
"projector-alt": "Proyector",
"client-image-alt": "Client",
"save-disposition-button": "Save disposition",
"client-properties-title": "Client properties",
"property-header": "Property",
"value-header": "Value",
"power-on-button": "Power on",
"power-off-button": "Power off",
"reset-button": "Reset",
"other-actions-1": "Other actions 1",
"other-actions-2": "Other actions 2",
"other-actions-3": "Other actions 3",
"close-button": "Close",
"add-client-dialog-title": "Add Client",
"organizational-unit-label": "Parent",
"name-label": "Name",
"serial-number-label": "Serial Number",
"netiface-label": "Network Interface",
"net-driver-label": "Network Driver",
"save-disposition-button": "Guardar disposición",
"client-properties-title": "Propiedades cliente",
"property-header": "Propiedad",
"value-header": "Valor",
"power-on-button": "Encender",
"power-off-button": "Apagar",
"reset-button": "Resetear",
"other-actions-1": "Otras acciones 1",
"other-actions-2": "Otras acciones 2",
"other-actions-3": "Otras acciones 3",
"close-button": "Cerrar",
"add-client-dialog-title": "Añadir Cliente",
"organizational-unit-label": "Padre",
"name-label": "Nombre",
"serial-number-label": "Número de Serie",
"netiface-label": "Interfaz de red",
"net-driver-label": "Controlador de red",
"mac-label": "MAC",
"mac-hint": "Example: 00:11:22:33:44:55",
"mac-error": "Invalid MAC format. Valid example: 00:11:22:33:44:55",
"ip-label": "IP Address",
"ip-hint": "Example: 127.0.0.1",
"ip-error": "Invalid IP address format. Valid example: 127.0.0.1",
"menu-url-label": "Menu URL",
"menu-url-error": "Invalid URL format.",
"hardware-profile-label": "Hardware Profile",
"hardware-profile-error": "Invalid URL format.",
"cancel-button": "Cancel",
"add-button": "Add",
"edit-client-dialog-title": "Edit Client",
"delete-dialog-title": "Delete",
"delete-dialog-content": "Do you want to delete the clients located at {$INTERPOLATION} or reposition them at the upper level?",
"delete-all-clients-button": "Delete all clients",
"reposition-clients-button": "Reposition",
"deleteDialogTitle": "Delete",
"deleteConfirmationMessage": "Are you sure you want to delete {$INTERPOLATION}?",
"cancelButton": "Cancel",
"confirmButton": "Delete",
"tabGeneralLabel": "General",
"headerAdminGroups": "Manage groups",
"buttonNewOU": "New Organizational Unit",
"buttonNewClient": "New Client",
"buttonLegend": "Legend",
"buttonRoomMap": "Classroom layout",
"labelSearch": "Search",
"placeholderSearch": "Search",
"hintSearch": "Press 'enter' to search among organizational units",
"cardTitleOU": "Organizational Unit",
"tooltipViewTree": "View as tree",
"menuItemViewTree": "View organizational chart",
"tooltipEditOU": "Edit organizational unit",
"menuItemEditOU": "Edit",
"tooltipViewOU": "View organizational unit",
"menuItemViewOU": "View data",
"tooltipAddOU": "Create internal organizational unit",
"menuItemAddOU": "Add organizational unit",
"tooltipAddClient": "Create client in this organizational unit",
"menuItemAddClient": "Create client",
"cardTitleInternalElements": "Internal Elements",
"emptyListNoInternalElements": "No internal elements",
"tooltipEditElement": "Edit element",
"menuItemEditElement": "Edit",
"tooltipViewOUElement": "View organizational unit",
"menuItemViewOUElement": "View data",
"tooltipAddOUElement": "Create internal organizational unit",
"menuItemAddOUElement": "Add organizational unit",
"tooltipAddClientElement": "Create client in this organizational unit",
"menuItemAddClientElement": "Create client",
"tooltipDeleteElement": "Delete element",
"menuItemDeleteElement": "Delete element",
"tabAdvancedSearchLabel": "Advanced Search",
"headerSearch": "Search",
"labelSelectFilter": "Select filter",
"orgUnitTitle": "Organizational Unit",
"classroomGroupsTitle": "Classroom Groups",
"classroomTitle": "Classroom",
"clientGroupsTitle": "Client Groups",
"clientTitle": "Client",
"addOrgUnitTitle": "Add Organizational Unit",
"mac-hint": "Ejemplo: 00:11:22:33:44:55",
"mac-error": "Formato de MAC inválido. Ejemplo válido: 00:11:22:33:44:55",
"ip-label": "Dirección IP",
"ip-hint": "Ejemplo: 127.0.0.1",
"ip-error": "Formato de dirección IP inválido. Ejemplo válido: 127.0.0.1",
"menu-url-label": "Menú URL",
"menu-url-error": "Formato de URL inválido.",
"hardware-profile-label": "Perfil de Hardware",
"hardware-profile-error": "Formato de URL inválido.",
"cancel-button": "Cancelar",
"add-button": "Añadir",
"edit-client-dialog-title": "Editar Cliente",
"delete-dialog-title": "Eliminar",
"delete-dialog-content": "¿Quiere borrar los clientes situados en {$INTERPOLATION} o quiere resituarlos en el nivel superior?",
"delete-all-clients-button": "Borrar todos los clientes",
"reposition-clients-button": "Resituar",
"deleteDialogTitle": "Eliminar",
"deleteConfirmationMessage": "¿Estás seguro que deseas eliminar {$INTERPOLATION}?",
"cancelButton": "Cancelar",
"confirmButton": "Eliminar",
"adminGroupsTitle": "Administrar grupos",
"newOrganizationalUnitButton": "Nueva Unidad Organizativa",
"newClientButton": "Nuevo Cliente",
"legendButton": "Leyenda",
"classroomMapButton": "Plano de aula",
"searchLabel": "Búsqueda",
"searchPlaceholder": "Búsqueda",
"searchHint": "Pulsar 'enter' para buscar entre las unidades organizativas",
"organizationalUnitTitle": "Unidad organizativa",
"viewTreeTooltip": "account_tree ",
"viewTreeMenu": "Ver organigrama",
"editUnitTooltip": "edit ",
"editUnitMenu": "Editar",
"viewUnitTool": "visibility ",
"viewUnitMenu": "Visualizar datos",
"addInternalUnitTool": "add_home_work ",
"addInternalUnitMenu": "Añadir unidad organizativa",
"addClientDevice": "devices ",
"addClientMenu": "Crear cliente",
"internalElementsTitle": "Elementos internos",
"noInternalElementsMessage": "No hay elementos internos",
"editElementTooltip": "edit",
"editElementMenu": "Editar",
"viewUnitTooltip": "visibility",
"addInternalUnitTooltip": "add_home_work",
"addClientTooltip": "devices",
"deleteElementTooltip": "delete",
"deleteElementMenu": "Borrar elemento",
"searchTitle": "Búsqueda",
"selectFilterLabel": "Seleccione filtro",
"selectOptionLabel": "Selecciona una opción",
"organizationalUnitsOption": "Unidades organizativas",
"clientsOption": "Clientes",
"nameLabel": "Nombre",
"namePlaceholder": "Unidad organizativa",
"unitTypeLabel": "Tipo de unidad",
"organizationalUnitOption": "Unidad organizativa",
"classroomsGroupOption": "Grupos de aulas",
"classroomOption": "Aulas",
"clientGroupOption": "Grupos de clientes",
"selectAnotherOptionLabel": "Selecciona otra opción",
"noneOption": "Ninguno",
"option1": "Opción 1",
"option2": "Opción 2",
"option3": "Opción 3",
"saveFiltersButton": "Guardar Filtros",
"internalUnits": "Unidades internas: {$INTERPOLATION}",
"clients": "Clientes: {$INTERPOLATION}",
"noResultsMessage": "No hay resultados para mostrar.",
"orgUnitTitle": "Unidad organizativa",
"classroomGroupsTitle": "Grupos de aula",
"classroomTitle": "Aula",
"clientGroupsTitle": "Grupos de clientes",
"clientTitle": "Cliente",
"addOrgUnitTitle": "Añadir Unidad Organizativa",
"generalStepLabel": "General",
"typeLabel": "Type",
"nameLabel": "Name",
"createOrgUnitparentLabel": "Parent Organizational Unit",
"typeLabel": "Tipo",
"createOrgUnitparentLabel": "Unidad organizativa padre",
"noParentOption": "--",
"descriptionLabel": "Description",
"nextButton": "Next",
"classroomInfoStepLabel": "Classroom Information",
"locationLabel": "Location",
"projectorToggle": "Projector",
"boardToggle": "Board",
"capacityLabel": "Capacity",
"backButton": "Back",
"additionalInfoStepLabel": "Additional Information",
"commentsLabel": "Comments",
"networkSettingsStepLabel": "Network Settings",
"proxyUrlLabel": "Proxy Server URL",
"dnsIpLabel": "DNS Server IP",
"netmaskLabel": "Netmask",
"descriptionLabel": "Descripción",
"nextButton": "Siguiente",
"classroomInfoStepLabel": "Información del Aula",
"locationLabel": "Ubicación",
"projectorToggle": "Proyector",
"boardToggle": "Pizarra",
"capacityLabel": "Aforo",
"backButton": "Atrás",
"additionalInfoStepLabel": "Información Adicional",
"commentsLabel": "Comentarios",
"networkSettingsStepLabel": "Configuración de Red",
"proxyUrlLabel": "Url servidor Proxy",
"dnsIpLabel": "IP servidor DNS",
"netmaskLabel": "Máscara de Red",
"routerLabel": "Router",
"ntpIpLabel": "NTP Server IP",
"p2pModeLabel": "P2P Mode",
"p2pTimeLabel": "P2P Time",
"mcastIpLabel": "Multicast IP",
"mcastSpeedLabel": "Multicast Speed",
"mcastPortLabel": "Multicast Port",
"mcastModeLabel": "Multicast Mode",
"menuUrlLabel": "Menu URL",
"hardwareProfileLabel": "Hardware Profile",
"urlFormatError": "Invalid URL format.",
"submitButton": "Add",
"editOrgUnitTitle": "Edit Organizational Unit",
"editOrgUnitParentLabel": "Parent",
"validationToggle": "Validation",
"orgUnitPropertiesTitle": "Organizational Unit Properties",
"generalDataTab": "General Data",
"classroomNetworkPropertiesTab": "Classroom and Network Properties",
"actionsTab": "Actions",
"2366056895545879062": "Power on",
"7368908909686115507": "Power off",
"7760171369336053154": "Reset",
"6799187990933478083": "Other actions 1",
"8971534271481971645": "Other actions 2",
"3300614831699539964": "Other actions 3",
"viewTreeTitle": "View Organizational Unit Tree",
"closeButton": "Close",
"ntpIpLabel": "IP servidor NTP",
"p2pModeLabel": "Modo P2P",
"p2pTimeLabel": "Tiempo P2P",
"mcastIpLabel": "IP Multicast",
"mcastSpeedLabel": "Velocidad Multicast",
"mcastPortLabel": "Puerto Multicast",
"mcastModeLabel": "Modo Multicast",
"menuUrlLabel": "Menú URL",
"hardwareProfileLabel": "Perfil de Hardware",
"urlFormatError": "Formato de URL inválido.",
"submitButton": "Añadir",
"editOrgUnitTitle": "Editar Unidad Organizativa",
"editOrgUnitParentLabel": "Padre",
"validationToggle": "Validación",
"orgUnitPropertiesTitle": "Propiedades unidad organizativa",
"generalDataTab": "Datos generales",
"classroomNetworkPropertiesTab": "Propiedades aula y de red",
"actionsTab": "Acciones",
"2366056895545879062": "Encender",
"7368908909686115507": "Apagar",
"7760171369336053154": "Resetear",
"6799187990933478083": "Otras acciones 1",
"8971534271481971645": "Otras acciones 2",
"3300614831699539964": "Otras acciones 3",
"viewTreeTitle": "Visualizar árbol unidad Organizativa",
"closeButton": "Cerrar",
"webConsoleTitle": "Opengnsys webconsole",
"admin": "Administration",
"editUser": "Edit user",
"usersMenuItem": "Users",
"admin": "Administración",
"editUser": "Editar usuario",
"usersMenuItem": "Usuarios",
"rolesMenuItem": "Roles",
"logout": "Logout",
"welcomeUser": "Welcome {$INTERPOLATION}",
"groups": "Groups",
"actions": "Actions",
"images": "Images",
"components": "Components",
"repositories": "Repositories",
"menus": "Menus",
"search": "Search",
"calendars": "Calendars",
"logout": "Salir",
"welcomeUser": "Bienvenido {$INTERPOLATION}",
"groups": "Grupos",
"actions": "Acciones",
"images": "Imágenes",
"components": "Componentes",
"repositories": "Repositorios",
"menus": "Menús",
"search": "Buscar",
"calendars": "Calendarios",
"headerOpengnsys": "Opengnsys",
"loginlabelUsername": "Enter your username",
"loginlabelPassword": "Enter your password",
"buttonLogin": "Log in",
"labelUsers": "Users",
"loginlabelUsername": "Introduce tu usuario",
"loginlabelPassword": "Introduce tu contraseña",
"buttonLogin": "Iniciar sesión",
"labelUsers": "Usuarios",
"labelRoles": "Roles",
"dialogTitleAddRole": "Add Role (TBD)",
"labelRoleName": "Name",
"sectionTitlePermissions": "Permissions:",
"checkboxManageUsers": "Manage users",
"checkboxPXEConfig": "PXE Configuration",
"checkboxConsoleImages": "Web console images",
"checkboxManageComponents": "Manage components",
"checkboxCreateImages": "Create images",
"checkboxServerConfigScript": "Server configuration script",
"dialogTitleAddRole": "Añadir Rol (TBD)",
"labelRoleName": "Nombre",
"sectionTitlePermissions": "Permisos:",
"checkboxManageUsers": "Gestionar los usuarios",
"checkboxPXEConfig": "Configuración PXE",
"checkboxConsoleImages": "Imágenes de la consola web",
"checkboxManageComponents": "Gestionar los distintos componentes",
"checkboxCreateImages": "Crear imágenes",
"checkboxServerConfigScript": "script de configuración del servidor",
"checkboxOther": "...",
"buttonCancel": "Cancel",
"buttonAdd": "Add",
"dialogTitleDeleteRole": "Delete Role",
"dialogContentDeleteRole": "Are you sure you want to delete the role {$INTERPOLATION}?",
"buttonDelete": "Delete",
"headerRoleManagement": "Role management",
"buttonAddRole": "+ Add",
"headerActions": "Actions",
"dialogTitleAddUser": "Add User",
"addUserlabelUsername": "Username",
"addUserlabelPassword": "Password",
"labelRole": "Role",
"labelOrganizationalUnit": "Organizational Unit",
"dialogTitleEditUser": "Edit User",
"labelCurrentPassword": "Current password",
"labelNewPassword": "New password",
"labelRepeatPassword": "Repeat password",
"errorPasswordMismatch": " Passwords do not match ",
"buttonCancel": "Cancelar",
"buttonAdd": "Añadir",
"dialogTitleDeleteRole": "Eliminar Rol",
"dialogContentDeleteRole": "¿Estás seguro que deseas eliminar el rol {$INTERPOLATION}?",
"buttonDelete": "Eliminar",
"headerRoleManagement": "Gestión de roles",
"buttonAddRole": "+ Añadir",
"headerActions": "Acciones",
"dialogTitleAddUser": "Añadir Usuario",
"addUserlabelUsername": "Nombre de usuario",
"addUserlabelPassword": "Contraseña",
"labelRole": "Rol",
"labelOrganizationalUnit": "Unidad organiativa",
"dialogTitleEditUser": "Editar Usuario",
"labelCurrentPassword": "Contraseña actual",
"labelNewPassword": "Nueva contraseña",
"labelRepeatPassword": "Repite la contraseña",
"errorPasswordMismatch": " Las contraseñas no coinciden ",
"errorUpdate": " {$INTERPOLATION} ",
"buttonEdit": "Edit",
"dialogTitleDeleteUser": "Delete User",
"dialogContentDeleteUser": "Are you sure you want to delete {$INTERPOLATION}?",
"editUserlabelUsername": "Username",
"editUserlabelPassword": "Password",
"labelOrgUnit": "Organizational Unit",
"headerUserManagement": "User management",
"buttonAddUser": "+ Add",
"columnActions": "Actions",
"buttonEditUser": "Edit",
"buttonDeleteUser": "Delete"
"buttonEdit": "Editar",
"dialogTitleDeleteUser": "Eliminar Usuario",
"dialogContentDeleteUser": "¿Estás seguro que deseas eliminar a {$INTERPOLATION}?",
"editUserlabelUsername": "Nombre de usuario",
"editUserlabelPassword": "Contraseña",
"labelOrgUnit": "Unidad organizativa",
"headerUserManagement": "Gestión de usuarios",
"buttonAddUser": "+ Añadir",
"columnActions": "Acciones",
"buttonEditUser": "Editar",
"buttonDeleteUser": "Eliminar"
}
}
}