mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-05-26 17:24:45 +00:00
core electron integration (#356)
* core electron integration * test fixes
This commit is contained in:
parent
daf7d65c03
commit
e1ea9fbfc1
8
package-lock.json
generated
8
package-lock.json
generated
@ -427,6 +427,14 @@
|
|||||||
"resolved": "https://registry.npmjs.org/@mat-datetimepicker/moment/-/moment-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/@mat-datetimepicker/moment/-/moment-1.0.1.tgz",
|
||||||
"integrity": "sha1-YYUwbd/QeTBlq9XbBjKpQZgjdPQ="
|
"integrity": "sha1-YYUwbd/QeTBlq9XbBjKpQZgjdPQ="
|
||||||
},
|
},
|
||||||
|
"@ngstack/electron": {
|
||||||
|
"version": "0.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@ngstack/electron/-/electron-0.1.0.tgz",
|
||||||
|
"integrity": "sha512-uqBNDkeATuZQm1eVXjB3rok9zFLMaJzfNl1tVnlqMwfaGA9FIe90nquvIZnL/scHbno89weGGxg4JeHLgsRMLA==",
|
||||||
|
"requires": {
|
||||||
|
"tslib": "^1.7.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"@ngtools/json-schema": {
|
"@ngtools/json-schema": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.2.0.tgz",
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
"build:prod": "npm run server-versions && ng build --prod",
|
"build:prod": "npm run server-versions && ng build --prod",
|
||||||
"build:dev": "npm run server-versions && ng build",
|
"build:dev": "npm run server-versions && ng build",
|
||||||
"build:tomcat": "npm run server-versions && ng build --base-href ./",
|
"build:tomcat": "npm run server-versions && ng build --base-href ./",
|
||||||
|
"build:electron": "npm run server-versions && ng build --base-href ./",
|
||||||
"test": "ng test --code-coverage",
|
"test": "ng test --code-coverage",
|
||||||
"test:ci": "ng test --code-coverage --single-run --no-progress && cat ./coverage/lcov.info | ./node_modules/.bin/codacy-coverage && rm -rf ./coverage",
|
"test:ci": "ng test --code-coverage --single-run --no-progress && cat ./coverage/lcov.info | ./node_modules/.bin/codacy-coverage && rm -rf ./coverage",
|
||||||
"lint": "ng lint",
|
"lint": "ng lint",
|
||||||
@ -40,6 +41,7 @@
|
|||||||
"@angular/router": "5.1.1",
|
"@angular/router": "5.1.1",
|
||||||
"@mat-datetimepicker/core": "1.0.1",
|
"@mat-datetimepicker/core": "1.0.1",
|
||||||
"@mat-datetimepicker/moment": "1.0.1",
|
"@mat-datetimepicker/moment": "1.0.1",
|
||||||
|
"@ngstack/electron": "0.1.0",
|
||||||
"@ngx-translate/core": "9.1.1",
|
"@ngx-translate/core": "9.1.1",
|
||||||
"alfresco-js-api": "2.4.0-31a7fc6e5d58dc8bf202ef9a80bc993c9f48fe18",
|
"alfresco-js-api": "2.4.0-31a7fc6e5d58dc8bf202ef9a80bc993c9f48fe18",
|
||||||
"core-js": "2.5.3",
|
"core-js": "2.5.3",
|
||||||
|
@ -23,9 +23,13 @@
|
|||||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit, EventEmitter } from '@angular/core';
|
||||||
import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';
|
import { Router, ActivatedRoute, NavigationEnd } from '@angular/router';
|
||||||
import { TranslationService, PageTitleService, UserPreferencesService, AppConfigService } from '@alfresco/adf-core';
|
import {
|
||||||
|
TranslationService, PageTitleService, UserPreferencesService, AppConfigService,
|
||||||
|
FileModel, UploadService
|
||||||
|
} from '@alfresco/adf-core';
|
||||||
|
import { ElectronService } from '@ngstack/electron';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-root',
|
selector: 'app-root',
|
||||||
@ -39,7 +43,9 @@ export class AppComponent implements OnInit {
|
|||||||
private pageTitle: PageTitleService,
|
private pageTitle: PageTitleService,
|
||||||
private translateService: TranslationService,
|
private translateService: TranslationService,
|
||||||
preferences: UserPreferencesService,
|
preferences: UserPreferencesService,
|
||||||
config: AppConfigService) {
|
config: AppConfigService,
|
||||||
|
private electronService: ElectronService,
|
||||||
|
private uploadService: UploadService) {
|
||||||
// TODO: remove once ADF 2.3.0 is out (needs bug fixes)
|
// TODO: remove once ADF 2.3.0 is out (needs bug fixes)
|
||||||
preferences.defaults.supportedPageSizes = config.get('pagination.supportedPageSizes');
|
preferences.defaults.supportedPageSizes = config.get('pagination.supportedPageSizes');
|
||||||
preferences.defaults.paginationSize = config.get('pagination.size');
|
preferences.defaults.paginationSize = config.get('pagination.size');
|
||||||
@ -69,5 +75,25 @@ export class AppComponent implements OnInit {
|
|||||||
pageTitle.setTitle(data.title || '');
|
pageTitle.setTitle(data.title || '');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this.electronService.on('app:navigateRoute', (event: any, ...args: string[]) => {
|
||||||
|
this.router.navigate([...args]);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.electronService.on('app:upload', (event: any, files: any[] = []) => {
|
||||||
|
const models = files.map(fileInfo => {
|
||||||
|
const file = new File([fileInfo.data], fileInfo.name);
|
||||||
|
|
||||||
|
return new FileModel(file, {
|
||||||
|
path: fileInfo.path,
|
||||||
|
parentId: fileInfo.parentId
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
if (models.length > 0) {
|
||||||
|
this.uploadService.addToQueue(...models);
|
||||||
|
this.uploadService.uploadFilesInTheQueue(new EventEmitter());
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,7 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|||||||
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
||||||
import { TRANSLATION_PROVIDER, CoreModule } from '@alfresco/adf-core';
|
import { TRANSLATION_PROVIDER, CoreModule } from '@alfresco/adf-core';
|
||||||
import { ContentModule } from '@alfresco/adf-content-services';
|
import { ContentModule } from '@alfresco/adf-content-services';
|
||||||
|
import { ElectronModule } from '@ngstack/electron';
|
||||||
|
|
||||||
import { AppComponent } from './app.component';
|
import { AppComponent } from './app.component';
|
||||||
import { APP_ROUTES } from './app.routes';
|
import { APP_ROUTES } from './app.routes';
|
||||||
@ -82,7 +83,8 @@ import { SearchComponent } from './components/search/search.component';
|
|||||||
MatDialogModule,
|
MatDialogModule,
|
||||||
MatInputModule,
|
MatInputModule,
|
||||||
CoreModule,
|
CoreModule,
|
||||||
ContentModule
|
ContentModule,
|
||||||
|
ElectronModule
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
AppComponent,
|
AppComponent,
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
</adf-upload-button>
|
</adf-upload-button>
|
||||||
|
|
||||||
<adf-upload-button
|
<adf-upload-button
|
||||||
|
*ngIf="!isDesktopApp"
|
||||||
[tooltip]="
|
[tooltip]="
|
||||||
(permission.check(node, ['create'])
|
(permission.check(node, ['create'])
|
||||||
? 'APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS'
|
? 'APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS'
|
||||||
@ -46,6 +47,20 @@
|
|||||||
[uploadFolders]="true"
|
[uploadFolders]="true"
|
||||||
[staticTitle]="'APP.NEW_MENU.MENU_ITEMS.UPLOAD_FOLDER' | translate">
|
[staticTitle]="'APP.NEW_MENU.MENU_ITEMS.UPLOAD_FOLDER' | translate">
|
||||||
</adf-upload-button>
|
</adf-upload-button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
*ngIf="isDesktopApp"
|
||||||
|
mat-menu-item
|
||||||
|
[title]="
|
||||||
|
(permission.check(node, ['create'])
|
||||||
|
? 'APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS'
|
||||||
|
: 'APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS_NOT_ALLOWED'
|
||||||
|
) | translate"
|
||||||
|
[disabled]="!permission.check(node, ['create'])"
|
||||||
|
(click)="uploadFolderDesktop()">
|
||||||
|
<mat-icon>file_upload</mat-icon>
|
||||||
|
<span>{{ 'APP.NEW_MENU.MENU_ITEMS.UPLOAD_FOLDER' | translate }}</span>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</adf-sidebar-action-menu>
|
</adf-sidebar-action-menu>
|
||||||
</div>
|
</div>
|
||||||
@ -79,4 +94,4 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -38,6 +38,7 @@ import { BrowsingFilesService } from '../../common/services/browsing-files.servi
|
|||||||
import { NodePermissionService } from '../../common/services/node-permission.service';
|
import { NodePermissionService } from '../../common/services/node-permission.service';
|
||||||
|
|
||||||
import { SidenavComponent } from './sidenav.component';
|
import { SidenavComponent } from './sidenav.component';
|
||||||
|
import { ElectronModule } from '@ngstack/electron';
|
||||||
|
|
||||||
describe('SidenavComponent', () => {
|
describe('SidenavComponent', () => {
|
||||||
let fixture;
|
let fixture;
|
||||||
@ -61,7 +62,8 @@ describe('SidenavComponent', () => {
|
|||||||
MatMenuModule,
|
MatMenuModule,
|
||||||
MatSnackBarModule,
|
MatSnackBarModule,
|
||||||
TranslateModule.forRoot(),
|
TranslateModule.forRoot(),
|
||||||
RouterTestingModule
|
RouterTestingModule,
|
||||||
|
ElectronModule
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
SidenavComponent
|
SidenavComponent
|
||||||
|
@ -31,6 +31,7 @@ import { AppConfigService, NotificationService } from '@alfresco/adf-core';
|
|||||||
|
|
||||||
import { BrowsingFilesService } from '../../common/services/browsing-files.service';
|
import { BrowsingFilesService } from '../../common/services/browsing-files.service';
|
||||||
import { NodePermissionService } from '../../common/services/node-permission.service';
|
import { NodePermissionService } from '../../common/services/node-permission.service';
|
||||||
|
import { ElectronService } from '@ngstack/electron';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-sidenav',
|
selector: 'app-sidenav',
|
||||||
@ -40,6 +41,7 @@ import { NodePermissionService } from '../../common/services/node-permission.ser
|
|||||||
export class SidenavComponent implements OnInit, OnDestroy {
|
export class SidenavComponent implements OnInit, OnDestroy {
|
||||||
@Input() showLabel: boolean;
|
@Input() showLabel: boolean;
|
||||||
|
|
||||||
|
isDesktopApp = false;
|
||||||
node: MinimalNodeEntryEntity = null;
|
node: MinimalNodeEntryEntity = null;
|
||||||
navigation = [];
|
navigation = [];
|
||||||
|
|
||||||
@ -49,7 +51,8 @@ export class SidenavComponent implements OnInit, OnDestroy {
|
|||||||
private notificationService: NotificationService,
|
private notificationService: NotificationService,
|
||||||
private browsingFilesService: BrowsingFilesService,
|
private browsingFilesService: BrowsingFilesService,
|
||||||
private appConfig: AppConfigService,
|
private appConfig: AppConfigService,
|
||||||
public permission: NodePermissionService
|
public permission: NodePermissionService,
|
||||||
|
private electronService: ElectronService
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@ -59,6 +62,8 @@ export class SidenavComponent implements OnInit, OnDestroy {
|
|||||||
this.browsingFilesService.onChangeParent
|
this.browsingFilesService.onChangeParent
|
||||||
.subscribe((node: MinimalNodeEntryEntity) => this.node = node)
|
.subscribe((node: MinimalNodeEntryEntity) => this.node = node)
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
this.isDesktopApp = this.electronService.isDesktopApp;
|
||||||
}
|
}
|
||||||
|
|
||||||
openSnackMessage(event: any) {
|
openSnackMessage(event: any) {
|
||||||
@ -78,4 +83,8 @@ export class SidenavComponent implements OnInit, OnDestroy {
|
|||||||
|
|
||||||
return Object.keys(data).map((key) => data[key]);
|
return Object.keys(data).map((key) => data[key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uploadFolderDesktop() {
|
||||||
|
this.electronService.send('core:uploadFolder', this.node.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user