import { Component, ViewChild, ViewEncapsulation } from '@angular/core';
import { jqxRibbonComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxribbon';
import { jqxGridComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxgrid';
import { jqxButtonComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxbuttons';
import { jqxTooltipComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxtooltip';
import { jqxDropDownButtonComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxdropdownbutton';
import { jqxColorPickerComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxcolorpicker';
import { jqxDropDownListComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxdropdownlist';
import { jqxToggleButtonComponent } from 'jqwidgets-scripts/jqwidgets-ts/angular_jqxtogglebutton';
@Component({
selector: 'app-root',
styleUrls: ['./app.component.css'],
templateUrl: './app.component.html',
encapsulation: ViewEncapsulation.None
})
export class AppComponent {
@ViewChild('ribbonReference') ribbon: jqxRibbonComponent;
@ViewChild('fileItemButton') fileItemButton: jqxDropDownButtonComponent;
@ViewChild('bucketColor') bucketColorButton: jqxDropDownButtonComponent;
@ViewChild('fontColor') fontColorButton: jqxDropDownButtonComponent;
@ViewChild('highlightColor') highlightColorButton: jqxDropDownButtonComponent;
@ViewChild('pasteButton') pasteButton: jqxButtonComponent;
@ViewChild('superscript') superScriptToggleButton: jqxToggleButtonComponent;
@ViewChild('subscript') subscriptToggleButton: jqxToggleButtonComponent;
getWidth() : any {
if (document.body.offsetWidth < 800) {
return '90%';
}
return 800;
}
ngAfterViewInit(): void {
this.buttonsStyling();
this.ribbon.elementRef.nativeElement.firstElementChild.children[1].style.padding = '35px 0px 0px';
this.ribbon.disableAt(0);
this.fileItemButton.setContent('File');
this.fontColorButton.setContent('Font Color');
this.bucketColorButton.setContent('');
this.highlightColorButton.setContent('Highlight Color');
}
buttonsStyling(): void {
for (let i = 0; i < document.getElementsByTagName('jqxtooltip').length; i++) {
(document.getElementsByTagName('jqxtooltip')[i].firstElementChild).style.display = 'inline-block';
}
for (let i = 0; i < document.getElementsByTagName('jqxbutton').length; i++) {
(document.getElementsByTagName('jqxbutton')[i].firstElementChild).style.display = 'inline-block';
(document.getElementsByTagName('jqxbutton')[i].firstElementChild).setAttribute('checked', 'false');
}
for (let i = 0; i < document.getElementsByTagName('jqxdropdownlist').length; i++) {
(document.getElementsByTagName('jqxdropdownlist')[i].firstElementChild).style.display = 'inline-block';
}
this.fileItemButton.elementRef.nativeElement.firstElementChild.style.color = 'white';
this.fileItemButton.elementRef.nativeElement.firstElementChild.style.background = 'transparent';
};
onBucketColorPicker(event: any): void {
(document.getElementById('bucketColorPreview')).style.background = '#' + event.args.color.hex;
};
onSubScriptClick(): void {
this.superScriptToggleButton.toggled(false);
};
onSuperScriptClick(): void {
this.subscriptToggleButton.toggled(false);
};
onFontColorPicker(event: any): void {
(document.getElementById('fontColorPreview')).style.background = '#' + event.args.color.hex;
};
onHighlightColorPicker(event: any): void {
(document.getElementById('highlightColorPreview')).style.background = '#' + event.args.color.hex;
};
onPasteButtonClick(event: any): void {
let text = this.pasteButton.elementRef.nativeElement.getElementsByClassName('pasteText')[0].innerHTML;
console.log(text + ' clicked');
};
onMouseDownPasteButton(event: any): void {
event.preventDefault();
};
onPasteDropDownSelect(event: any): void {
let pasteData =
[
{ label: 'Paste', imageClass: 'icon page_paste' },
{ label: 'Paste Special', imageClass: 'icon paste_plain' },
{ label: 'Paste text', imageClass: 'icon paste_word' },
{ label: 'Paste link', imageClass: 'icon PasteImage' }
];
let index = event.args.index;
let icon = '';
this.pasteButton.elementRef.nativeElement.firstElementChild.innerHTML = (icon + '' + pasteData[index].label + '');
this.pasteButton.render();
};
fontListSource: string[] =
[
"Courier New",
"Times New Roman",
"Arial"
];
fontSizeListSource: number[] = [8, 9, 10, 11, 12, 14, 18, 20, 22, 24];
fontSizeListRenderer: any = (index, label, value) => {
return '' + value + '';
};
changeCaseListSource: string[] = ['Sentence Case', 'lowercase', 'UPPERCASE', 'Capitalize Each Word'];
changeCaseListSelectionRenderer: any = (object, index, label) => {
return '';
};
pasteData: any[] =
[
{ label: 'Paste', imageClass: 'icon page_paste' },
{ label: 'Paste Special', imageClass: 'icon paste_plain' },
{ label: 'Paste text', imageClass: 'icon paste_word' },
{ label: 'Paste link', imageClass: 'icon PasteImage' }
];
pasteRenderer: any = (index: number, label, value) => {
let labelEl = '' + label + '';
let icon = '';
return '' + icon + labelEl + '';
};
pasteRelectionRenderer: any = (object, index, label) => {
return "";
};
gridData: any = this.manageGridData();
manageGridData(): any {
let numberrenderer = (row, column, value): string => {
return '' + (1 + value) + '
';
};
let datafields = [];
let columns = [];
for (let i = 0; i < 26; i++) {
let text = String.fromCharCode(65 + i);
if (i == 0) {
let cssclass = 'jqx-widget-header';
columns[columns.length] =
{
pinned: true,
exportable: false,
text: "",
columntype: 'number',
cellclassname: cssclass,
cellsrenderer: numberrenderer
};
}
datafields[datafields.length] = { name: text };
columns[columns.length] = { text: text, datafield: text, width: 60, align: 'center' };
};
let source =
{
unboundmode: true,
totalrecords: 100,
datafields: datafields,
};
let dataAdapter = new jqx.dataAdapter(source);
let jqxGridSettings: jqwidgets.GridOptions =
{
source: dataAdapter,
columns: columns
};
return jqxGridSettings;
};
}