jqwidgets-framework
Version:
jQWidgets is an advanced Angular, Vue, Blazor, React, Web Components, jquery, ASP .NET MVC, Custom Elements and HTML5 UI framework.
168 lines (145 loc) • 6.34 kB
text/typescript
import { Component, ViewChild, AfterViewInit, ViewEncapsulation } from '@angular/core';
import { jqxKnobComponent } from 'jqwidgets-ng/jqxknob';
({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
encapsulation: ViewEncapsulation.None
})
export class AppComponent implements AfterViewInit {
('myKnobOne', { static: false }) myKnobOne: jqxKnobComponent;
startValue1: number = 60;
startValue2: number = 60;
startValue3: number = 60;
ngAfterViewInit(): void {
// Create Second and Third Knobs
let knobOneContainer = this.myKnobOne.elementRef.nativeElement;
let knobTwoContainer = document.createElement('div');
let knobThreeContainer = document.createElement('div');
knobTwoContainer.id = 'myKnobTwo';
knobThreeContainer.id = 'myKnobThree';
knobOneContainer.appendChild(knobTwoContainer);
let knobTwoOptions =
{
value: 60,
min: 0,
max: 100,
startAngle: 190,
width: 300,
height: 300,
endAngle: 350,
snapToStep: true,
pointerGrabAction: 'progressBar',
rotation: 'clockwise',
style: { fill: 'transparent' },
progressBar: {
style: { fill: '#ef6100', stroke: '#ef6100' },
size: '18%',
offset: '78%',
background: { fill: '#cfd0d4', stroke: '#cfd0d4' }
},
pointer: { type: 'line', visible: false, style: { fill: '#33AADD' }, size: '18%', offset: '78%', thickness: 0 }
};
let myKnobTwo = jqwidgets.createInstance('#myKnobTwo', 'jqxKnob', knobTwoOptions);
knobTwoContainer.appendChild(knobThreeContainer);
let knobThreeOptions =
{
value: 60,
min: 0,
max: 100,
startAngle: 10,
width: 300,
height: 300,
endAngle: 170,
snapToStep: true,
pointerGrabAction: 'progressBar',
rotation: 'clockwise',
style: { fill: 'transparent' },
progressBar: {
style: { fill: '#18a25e', stroke: '#18a25e' },
size: '18%',
offset: '78%',
background: { fill: '#cfd0d4', stroke: '#cfd0d4' }
},
pointer: { type: 'line', visible: false, style: { fill: '#00a4e1' }, size: '18%', offset: '78%', thickness: 0 }
};
let myKnobThree = jqwidgets.createInstance('#myKnobThree', 'jqxKnob', knobThreeOptions);
knobTwoContainer.style.cssText = 'position: absolute !important; top: 90px; left: 60px;';
knobThreeContainer.style.cssText = 'position: absolute !important; top: 0px; left: 0px;';
myKnobTwo.addEventHandler('change', (event: any): void => {
if (event.target !== event.currentTarget) {
return;
}
let inputDiv = document.getElementsByClassName('inputField2')[0];
inputDiv.children[1].innerHTML = event.args.value;
});
myKnobThree.addEventHandler('change', (event: any): void => {
if (event.target !== event.currentTarget) {
return;
}
let inputDiv = document.getElementsByClassName('inputField3')[0];
inputDiv.children[0].innerHTML = event.args.value;
});
// End Creating Second and Third Knobs
// Create Input Div's
let inputDiv = document.createElement('div');
inputDiv.className = 'inputField1';
inputDiv.innerHTML = '<span style="font-size: 14px; width: 33%; display:inline-block; color: #407ec3">All</span><span style="width:33%; display:inline-block;">' + this.startValue1 + '</span><span style="width:33%; font-size: 14px; color: #00a4e1; display:inline-block;">Calls</span>'
knobOneContainer.appendChild(inputDiv);
let inputDiv2 = document.createElement('div');
inputDiv2.className = 'inputField2';
inputDiv2.innerHTML = '<div style="font-size: 14px; color: #ef6100">Resolved Issues</div><div>' + this.startValue2 + '</div>';
knobTwoContainer.appendChild(inputDiv2);
let inputDiv3 = document.createElement('div');
inputDiv3.className = 'inputField3';
inputDiv3.innerHTML = '<div>' + this.startValue3 + '</div><div style="font-size: 14px; color: #18a25e">Pending Issues</div>';
knobThreeContainer.appendChild(inputDiv3);
// End Creating Input Div's
}
marks: any =
{
drawAboveProgressBar: true,
colorRemaining: 'white',
colorProgress: 'white',
style: 'line',
offset: '78%',
thickness: 3,
size: '18%',
minorInterval: 5
};
progressBar: any =
{
style: { fill: '#407ec3', stroke: '#407ec3' },
size: '18%',
offset: '78%',
background: { fill: '#cfd0d4', stroke: '#cfd0d4' }
};
pointer: any =
{
type: 'line', visible: false, style: { fill: '#407ec3' }, size: '18%', offset: '78%', thickness: 0
};
spinner: any =
{
style: { fill: '#66707e', stroke: '#66707e' },
innerRadius: '0%', // specifies the inner Radius of the dial
outerRadius: '58%', // specifies the outer Radius of the dial
marks: {
colorRemaining: '#a2da39',
colorProgress: '#a2da39',
type: 'circle',
offset: '55%',
thickness: 3,
size: '1%',
majorSize: '1%',
majorInterval: 10,
minorInterval: 10
}
};
myKnobOneOnChange(event: any): void {
if (event.target !== event.currentTarget) {
return;
}
let inputDiv = document.getElementsByClassName('inputField1')[0];
inputDiv.children[1].innerHTML = event.args.value;
}
}