e5core-angular-ui
Version:
e5 Anywhere Angular UI
181 lines • 16.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ChangeDetectionStrategy, Input, ViewChild, Output, EventEmitter } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { E5ConfigurationService as e5Config } from 'e5core-angular-services';
import { E5coreUiSelectFromListMaterialComponent } from './component/e5core-ui-select-from-list-material.component';
import { UiStyleService } from '../../services/ui-style.service';
import { DataSourceQuery } from '../../datasource/data-source-query';
import { DocumentDataSourceService } from '../../datasource/document-data-source.service';
export class E5coreUiSelectFromListComponent {
/**
* @param {?} config
* @param {?} style
* @param {?} datasource
*/
constructor(config, style, datasource) {
this.config = config;
this.style = style;
this.datasource = datasource;
this.folderName = "";
this.fieldsToShow = null; //Refer to http://blog.softartisans.com/2009/12/08/list-of-internal-names-for-sharepoint-fields
//Refer to http://blog.softartisans.com/2009/12/08/list-of-internal-names-for-sharepoint-fields
this.includeSelect = true;
this.query = null;
this.pagesizes = [5, 10, 25, 50];
this.autoSearch = true;
this.readonly = false;
this.listItemViewEvent = new EventEmitter();
this.listItemSelectEvent = new EventEmitter();
this.searchEvent = new EventEmitter();
}
/**
* @return {?}
*/
ngOnInit() {
if (typeof this.workItem$ == 'undefined') {
console.error('e5core-ui-select-from-list [workItem$] must have a BehaviorSubject<WorkItemModel>');
return;
}
if (typeof this.workItem$ != 'undefined') {
this.workItem$.subscribe(w => {
this.updateData();
});
}
if (this.libraryId == null) {
this.error = 'e5core-ui-search-results [searchDefinitionId] must be specified';
console.error(this.error);
return;
}
this.datasource.setLibrary(this.libraryId, this.folderName, this.includeSelect, this.fieldsToShow, this.searchText);
/** @type {?} */
let options = this.datasource.defaultOptions();
this.datasource.setDefaultOptions(options);
}
/**
* @return {?}
*/
ngAfterViewInit() {
}
/**
* @return {?}
*/
refresh() {
this.selectFromListMaterialComponent.refresh();
}
/**
* @param {?} event
* @return {?}
*/
onListItemViewEvent(event) {
this.listItemViewEvent.emit({ workId: null, type: "E5SharepointAttachment", attachmentId: null, fullUrl: event.element.fullUrl, name: event.element.fullUrl });
}
/**
* @param {?} event
* @return {?}
*/
onListItemSelectEvent(event) {
this.listItemSelectEvent.emit(event);
}
/**
* @param {?} event
* @return {?}
*/
onSearchEvent(event) {
debugger;
this.searchText = event;
this.datasource.setLibrary(this.libraryId, this.folderName, this.includeSelect, this.fieldsToShow, this.searchText);
}
/**
* @private
* @return {?}
*/
updateData() {
}
}
E5coreUiSelectFromListComponent.decorators = [
{ type: Component, args: [{
selector: 'e5core-ui-select-from-list',
template: `
<span *ngIf="workItem$" [ngSwitch]="style.current()">
<e5core-ui-select-from-list-material *ngSwitchCase='2' [datasource]='datasource' [pagesizes]="pagesizes" [query]='query' [autoSearch]='autoSearch' (listItemViewEvent)='onListItemViewEvent($event)' (listItemSelectEvent)='onListItemSelectEvent($event)' (searchEvent)='onSearchEvent($event)'></e5core-ui-select-from-list-material>
</span>
<div *ngIf="!(workItem$)" class="e5core-component-error"><e5core-ui-select-from-list> [workItem$] must have a BehaviorSubject<WorkItemModel></div>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
//changeDetection: ChangeDetectionStrategy.OnPush
providers: [
DocumentDataSourceService
]
}] }
];
/** @nocollapse */
E5coreUiSelectFromListComponent.ctorParameters = () => [
{ type: e5Config },
{ type: UiStyleService },
{ type: DocumentDataSourceService }
];
E5coreUiSelectFromListComponent.propDecorators = {
workItem$: [{ type: Input }],
libraryId: [{ type: Input }],
folderName: [{ type: Input }],
fieldsToShow: [{ type: Input }],
includeSelect: [{ type: Input }],
query: [{ type: Input }],
pagesizes: [{ type: Input }],
autoSearch: [{ type: Input }],
readonly: [{ type: Input }],
listItemViewEvent: [{ type: Output }],
listItemSelectEvent: [{ type: Output }],
searchEvent: [{ type: Output }],
selectFromListMaterialComponent: [{ type: ViewChild, args: [E5coreUiSelectFromListMaterialComponent,] }]
};
if (false) {
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.workItem$;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.libraryId;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.folderName;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.fieldsToShow;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.includeSelect;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.query;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.pagesizes;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.autoSearch;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.readonly;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.listItemViewEvent;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.listItemSelectEvent;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.searchEvent;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.workId;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.searchText;
/**
* @type {?}
* @private
*/
E5coreUiSelectFromListComponent.prototype.selectFromListMaterialComponent;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.error;
/**
* @type {?}
* @private
*/
E5coreUiSelectFromListComponent.prototype.config;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.style;
/** @type {?} */
E5coreUiSelectFromListComponent.prototype.datasource;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vZTVjb3JlLWFuZ3VsYXItdWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC9lNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxzQkFBc0IsSUFBSSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVwSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBa0IxRixNQUFNLE9BQU8sK0JBQStCOzs7Ozs7SUF1QjFDLFlBQW9CLE1BQWdCLEVBQVMsS0FBb0IsRUFBUyxVQUFxQztRQUEzRixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUFTLGVBQVUsR0FBVixVQUFVLENBQTJCO1FBbkJ0RyxlQUFVLEdBQVksRUFBRSxDQUFDO1FBQ3pCLGlCQUFZLEdBQTRCLElBQUksQ0FBQyxDQUFJLCtGQUErRjs7UUFDaEosa0JBQWEsR0FBYSxJQUFJLENBQUM7UUFDL0IsVUFBSyxHQUFxQixJQUFJLENBQUM7UUFDL0IsY0FBUyxHQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxF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LEtBQUs7dUJBQ0wsS0FBSztnQ0FFTCxNQUFNO2tDQUNOLE1BQU07MEJBQ1AsTUFBTTs4Q0FJTCxTQUFTLFNBQUMsdUNBQXVDOzs7O0lBaEJsRCxvREFBb0Q7O0lBQ3BELG9EQUE0Qjs7SUFDNUIscURBQWtDOztJQUNsQyx1REFBc0Q7O0lBQ3RELHdEQUF3Qzs7SUFDeEMsZ0RBQXdDOztJQUN4QyxvREFBZ0Q7O0lBQ2hELHFEQUFxQzs7SUFDckMsbURBQW9DOztJQUVwQyw0REFBcUU7O0lBQ3JFLDhEQUFtRDs7SUFDcEQsc0RBQTJDOztJQUMxQyxpREFBaUI7O0lBQ2pCLHFEQUFvQjs7Ozs7SUFFcEIsMEVBQ2lGOztJQUVsRixnREFBZTs7Ozs7SUFFRixpREFBd0I7O0lBQUUsZ0RBQTJCOztJQUFFLHFEQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIFZpZXdDaGlsZCwgQWZ0ZXJWaWV3SW5pdCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRTVDb25maWd1cmF0aW9uU2VydmljZSBhcyBlNUNvbmZpZyB9IGZyb20gJ2U1Y29yZS1hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IFdvcmtJdGVtTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvd29yay1pdGVtJztcbmltcG9ydCB7IEU1Y29yZVVpU2VsZWN0RnJvbUxpc3RNYXRlcmlhbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50L2U1Y29yZS11aS1zZWxlY3QtZnJvbS1saXN0LW1hdGVyaWFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBLZXlWYWx1ZVBhaXIgfSBmcm9tICcuLi8uLi91dGlsL2tleS12YWx1ZS1wYWlyJztcbmltcG9ydCB7IFVpU3R5bGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdWktc3R5bGUuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhU291cmNlT3B0aW9ucyB9IGZyb20gJy4uLy4uL2RhdGFzb3VyY2UvZGF0YS1zb3VyY2Utb3B0aW9ucyc7XG5pbXBvcnQgeyBEYXRhU291cmNlUXVlcnkgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL2RhdGEtc291cmNlLXF1ZXJ5JztcbmltcG9ydCB7IERvY3VtZW50RGF0YVNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9kYXRhc291cmNlL2RvY3VtZW50LWRhdGEtc291cmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmllbGREZWZpbml0aW9uTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmllbGQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBWaWV3ZXJEaXNwbGF5RXZlbnQgfSBmcm9tICcuLi8uLi9ldmVudHMvdmlld2VyLWRpc3BsYXktZXZlbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdCcsXG4gIHRlbXBsYXRlOiBgXG4gIDxzcGFuICpuZ0lmPVwid29ya0l0ZW0kXCIgW25nU3dpdGNoXT1cInN0eWxlLmN1cnJlbnQoKVwiPlxuICAgIDxlNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdC1tYXRlcmlhbCAqbmdTd2l0Y2hDYXNlPScyJyBbZGF0YXNvdXJjZV09J2RhdGFzb3VyY2UnIFtwYWdlc2l6ZXNdPVwicGFnZXNpemVzXCIgIFtxdWVyeV09J3F1ZXJ5JyBbYXV0b1NlYXJjaF09J2F1dG9TZWFyY2gnIChsaXN0SXRlbVZpZXdFdmVudCk9J29uTGlzdEl0ZW1WaWV3RXZlbnQoJGV2ZW50KScgKGxpc3RJdGVtU2VsZWN0RXZlbnQpPSdvbkxpc3RJdGVtU2VsZWN0RXZlbnQoJGV2ZW50KScgKHNlYXJjaEV2ZW50KT0nb25TZWFyY2hFdmVudCgkZXZlbnQpJz48L2U1Y29yZS11aS1zZWxlY3QtZnJvbS1saXN0LW1hdGVyaWFsPlxuICA8L3NwYW4+XG4gIDxkaXYgKm5nSWY9XCIhKHdvcmtJdGVtJClcIiBjbGFzcz1cImU1Y29yZS1jb21wb25lbnQtZXJyb3JcIj4mbHQ7ZTVjb3JlLXVpLXNlbGVjdC1mcm9tLWxpc3QmZ3Q7IFt3b3JrSXRlbSRdIG11c3QgaGF2ZSBhIEJlaGF2aW9yU3ViamVjdCZsdDtXb3JrSXRlbU1vZGVsJmd0OzwvZGl2PlxuICBgLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgLy9jaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxuICBwcm92aWRlcnM6IFtcbiAgICBEb2N1bWVudERhdGFTb3VyY2VTZXJ2aWNlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRTVjb3JlVWlTZWxlY3RGcm9tTGlzdENvbXBvbmVudCAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHdvcmtJdGVtJCA6IEJlaGF2aW9yU3ViamVjdDxXb3JrSXRlbU1vZGVsPjtcbiAgQElucHV0KCkgbGlicmFyeUlkIDogbnVtYmVyO1xuICBASW5wdXQoKSBmb2xkZXJOYW1lIDogc3RyaW5nID0gXCJcIjtcbiAgQElucHV0KCkgZmllbGRzVG9TaG93IDogRmllbGREZWZpbml0aW9uTW9kZWxbXSA9IG51bGw7ICAgIC8vUmVmZXIgdG8gaHR0cDovL2Jsb2cuc29mdGFydGlzYW5zLmNvbS8yMDA5LzEyLzA4L2xpc3Qtb2YtaW50ZXJuYWwtbmFtZXMtZm9yLXNoYXJlcG9pbnQtZmllbGRzXG4gIEBJbnB1dCgpIGluY2x1ZGVTZWxlY3QgOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcXVlcnkgOiBEYXRhU291cmNlUXVlcnkgPSBudWxsO1xuICBASW5wdXQoKSBwYWdlc2l6ZXMgOiBudW1iZXJbXSA9IFs1LCAxMCwgMjUsIDUwXTtcbiAgQElucHV0KCkgYXV0b1NlYXJjaCA6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSByZWFkb25seSA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgXG4gIEBPdXRwdXQoKSBsaXN0SXRlbVZpZXdFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Vmlld2VyRGlzcGxheUV2ZW50PigpO1xuICBAT3V0cHV0KCkgbGlzdEl0ZW1TZWxlY3RFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblx0QE91dHB1dCgpIHNlYXJjaEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB3b3JrSWQgOiBzdHJpbmcgO1xuICBzZWFyY2hUZXh0IDogc3RyaW5nO1xuICBcbiAgQFZpZXdDaGlsZChFNWNvcmVVaVNlbGVjdEZyb21MaXN0TWF0ZXJpYWxDb21wb25lbnQpXG4gIHByaXZhdGUgc2VsZWN0RnJvbUxpc3RNYXRlcmlhbENvbXBvbmVudDogRTVjb3JlVWlTZWxlY3RGcm9tTGlzdE1hdGVyaWFsQ29tcG9uZW50O1xuXG5cdGVycm9yOiBzdHJpbmcgO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBlNUNvbmZpZywgcHVibGljIHN0eWxlOlVpU3R5bGVTZXJ2aWNlLCBwdWJsaWMgZGF0YXNvdXJjZTogRG9jdW1lbnREYXRhU291cmNlU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMud29ya0l0ZW0kID09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdlNWNvcmUtdWktc2VsZWN0LWZyb20tbGlzdCBbd29ya0l0ZW0kXSBtdXN0IGhhdmUgYSBCZWhhdmlvclN1YmplY3Q8V29ya0l0ZW1Nb2RlbD4nKTtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLndvcmtJdGVtJCAhPSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy53b3JrSXRlbSQuc3Vic2NyaWJlKFxuICAgICAgICB3ID0+IHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZURhdGEoKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmxpYnJhcnlJZCA9PSBudWxsKSB7XG4gICAgICB0aGlzLmVycm9yID0gJ2U1Y29yZS11aS1zZWFyY2gtcmVzdWx0cyBbc2VhcmNoRGVmaW5pdGlvbklkXSBtdXN0IGJlIHNwZWNpZmllZCcgO1xuICAgICAgY29uc29sZS5lcnJvcih0aGlzLmVycm9yKTtcbiAgICAgIHJldHVybiA7XG4gICAgfVxuICAgIHRoaXMuZGF0YXNvdXJjZS5zZXRMaWJyYXJ5KHRoaXMubGlicmFyeUlkLCB0aGlzLmZvbGRlck5hbWUsIHRoaXMuaW5jbHVkZVNlbGVjdCwgdGhpcy5maWVsZHNUb1Nob3csIHRoaXMuc2VhcmNoVGV4dCk7XG4gICAgbGV0IG9wdGlvbnM6RGF0YVNvdXJjZU9wdGlvbnMgPSB0aGlzLmRhdGFzb3VyY2UuZGVmYXVsdE9wdGlvbnMoKTtcbiAgICB0aGlzLmRhdGFzb3VyY2Uuc2V0RGVmYXVsdE9wdGlvbnMob3B0aW9ucyk7XG4gIH1cbiAgXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgfVxuXG4gIHJlZnJlc2goKSB7XG4gICAgdGhpcy5zZWxlY3RGcm9tTGlzdE1hdGVyaWFsQ29tcG9uZW50LnJlZnJlc2goKTtcbiAgfVxuICBcbiAgb25MaXN0SXRlbVZpZXdFdmVudChldmVudCkge1xuICAgIHRoaXMubGlzdEl0ZW1WaWV3RXZlbnQuZW1pdCh7d29ya0lkOiBudWxsLCB0eXBlOiBcIkU1U2hhcmVwb2ludEF0dGFjaG1lbnRcIiwgYXR0YWNobWVudElkOiBudWxsLCBmdWxsVXJsOiBldmVudC5lbGVtZW50LmZ1bGxVcmwsIG5hbWU6IGV2ZW50LmVsZW1lbnQuZnVsbFVybH0pO1xuICB9XG4gIFxuICBvbkxpc3RJdGVtU2VsZWN0RXZlbnQoZXZlbnQpIHtcbiAgICB0aGlzLmxpc3RJdGVtU2VsZWN0RXZlbnQuZW1pdChldmVudCk7XG4gIH1cblxuICBvblNlYXJjaEV2ZW50KGV2ZW50KSB7XG4gICAgZGVidWdnZXI7XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gZXZlbnQ7XG4gICAgdGhpcy5kYXRhc291cmNlLnNldExpYnJhcnkodGhpcy5saWJyYXJ5SWQsIHRoaXMuZm9sZGVyTmFtZSwgdGhpcy5pbmNsdWRlU2VsZWN0LCB0aGlzLmZpZWxkc1RvU2hvdywgdGhpcy5zZWFyY2hUZXh0KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRGF0YSgpOnZvaWQge1xuICB9XG59Il19