core electron integration (#356)

* core electron integration

* test fixes
This commit is contained in:
Denys Vuika 2018-05-14 04:12:45 +01:00 committed by Cilibiu Bogdan
parent daf7d65c03
commit e1ea9fbfc1
7 changed files with 71 additions and 7 deletions

8
package-lock.json generated
View File

@ -427,6 +427,14 @@
"resolved": "https://registry.npmjs.org/@mat-datetimepicker/moment/-/moment-1.0.1.tgz",
"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": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.2.0.tgz",

View File

@ -10,6 +10,7 @@
"build:prod": "npm run server-versions && ng build --prod",
"build:dev": "npm run server-versions && ng build",
"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:ci": "ng test --code-coverage --single-run --no-progress && cat ./coverage/lcov.info | ./node_modules/.bin/codacy-coverage && rm -rf ./coverage",
"lint": "ng lint",
@ -40,6 +41,7 @@
"@angular/router": "5.1.1",
"@mat-datetimepicker/core": "1.0.1",
"@mat-datetimepicker/moment": "1.0.1",
"@ngstack/electron": "0.1.0",
"@ngx-translate/core": "9.1.1",
"alfresco-js-api": "2.4.0-31a7fc6e5d58dc8bf202ef9a80bc993c9f48fe18",
"core-js": "2.5.3",

View File

@ -23,9 +23,13 @@
* 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 { 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({
selector: 'app-root',
@ -39,7 +43,9 @@ export class AppComponent implements OnInit {
private pageTitle: PageTitleService,
private translateService: TranslationService,
preferences: UserPreferencesService,
config: AppConfigService) {
config: AppConfigService,
private electronService: ElectronService,
private uploadService: UploadService) {
// TODO: remove once ADF 2.3.0 is out (needs bug fixes)
preferences.defaults.supportedPageSizes = config.get('pagination.supportedPageSizes');
preferences.defaults.paginationSize = config.get('pagination.size');
@ -69,5 +75,25 @@ export class AppComponent implements OnInit {
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());
}
});
}
}

View File

@ -30,6 +30,7 @@ import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { TRANSLATION_PROVIDER, CoreModule } from '@alfresco/adf-core';
import { ContentModule } from '@alfresco/adf-content-services';
import { ElectronModule } from '@ngstack/electron';
import { AppComponent } from './app.component';
import { APP_ROUTES } from './app.routes';
@ -82,7 +83,8 @@ import { SearchComponent } from './components/search/search.component';
MatDialogModule,
MatInputModule,
CoreModule,
ContentModule
ContentModule,
ElectronModule
],
declarations: [
AppComponent,

View File

@ -35,6 +35,7 @@
</adf-upload-button>
<adf-upload-button
*ngIf="!isDesktopApp"
[tooltip]="
(permission.check(node, ['create'])
? 'APP.NEW_MENU.TOOLTIPS.UPLOAD_FOLDERS'
@ -46,6 +47,20 @@
[uploadFolders]="true"
[staticTitle]="'APP.NEW_MENU.MENU_ITEMS.UPLOAD_FOLDER' | translate">
</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>
</adf-sidebar-action-menu>
</div>
@ -79,4 +94,4 @@
</li>
</ul>
</div>
</div>
</div>

View File

@ -38,6 +38,7 @@ import { BrowsingFilesService } from '../../common/services/browsing-files.servi
import { NodePermissionService } from '../../common/services/node-permission.service';
import { SidenavComponent } from './sidenav.component';
import { ElectronModule } from '@ngstack/electron';
describe('SidenavComponent', () => {
let fixture;
@ -61,7 +62,8 @@ describe('SidenavComponent', () => {
MatMenuModule,
MatSnackBarModule,
TranslateModule.forRoot(),
RouterTestingModule
RouterTestingModule,
ElectronModule
],
declarations: [
SidenavComponent

View File

@ -31,6 +31,7 @@ import { AppConfigService, NotificationService } from '@alfresco/adf-core';
import { BrowsingFilesService } from '../../common/services/browsing-files.service';
import { NodePermissionService } from '../../common/services/node-permission.service';
import { ElectronService } from '@ngstack/electron';
@Component({
selector: 'app-sidenav',
@ -40,6 +41,7 @@ import { NodePermissionService } from '../../common/services/node-permission.ser
export class SidenavComponent implements OnInit, OnDestroy {
@Input() showLabel: boolean;
isDesktopApp = false;
node: MinimalNodeEntryEntity = null;
navigation = [];
@ -49,7 +51,8 @@ export class SidenavComponent implements OnInit, OnDestroy {
private notificationService: NotificationService,
private browsingFilesService: BrowsingFilesService,
private appConfig: AppConfigService,
public permission: NodePermissionService
public permission: NodePermissionService,
private electronService: ElectronService
) {}
ngOnInit() {
@ -59,6 +62,8 @@ export class SidenavComponent implements OnInit, OnDestroy {
this.browsingFilesService.onChangeParent
.subscribe((node: MinimalNodeEntryEntity) => this.node = node)
]);
this.isDesktopApp = this.electronService.isDesktopApp;
}
openSnackMessage(event: any) {
@ -78,4 +83,8 @@ export class SidenavComponent implements OnInit, OnDestroy {
return Object.keys(data).map((key) => data[key]);
}
uploadFolderDesktop() {
this.electronService.send('core:uploadFolder', this.node.id);
}
}