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",
|
||||
"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",
|
||||
|
@ -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",
|
||||
|
@ -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());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user