Skip to content

Commit d473863

Browse files
committed
V1.0. Added options to control UI.
1 parent 8f6990c commit d473863

File tree

3 files changed

+50
-18
lines changed

3 files changed

+50
-18
lines changed

RangeSliderControl/ControlManifest.Input.xml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
<?xml version="1.0" encoding="utf-8" ?>
22
<manifest>
3-
<control namespace="DancingWithCrmControls" constructor="RangeSliderControl" version="0.3.0" display-name-key="DancingWithCrm.RangeSliderControl" description-key="Range Slider Control from DancingWithCrm" control-type="standard">
3+
<control namespace="DancingWithCrmControls" constructor="RangeSliderControl" version="1.0.0" display-name-key="DancingWithCrm.RangeSliderControl" description-key="Range Slider Control from DancingWithCrm" control-type="standard">
44
<type-group name="numbers">
55
<type>Whole.None</type>
66
<type>Currency</type>
77
<type>FP</type>
88
<type>Decimal</type>
99
</type-group>
1010
<!-- property node identifies a specific, configurable piece of data that the control expects from CDS -->
11-
<property name="MinValue" display-name-key="RangeSliderControl_MinValue" description-key="Minimal value of the slider" of-type-group="numbers" usage="input" required="true" />
12-
<property name="MaxValue" display-name-key="RangeSliderControl_MaxValue" description-key="Maximum value of the slider" of-type-group="numbers" usage="input" required="true" />
13-
<property name="StepValue" display-name-key="RangeSliderControl_StepValue" description-key="Step value of the slider" of-type-group="numbers" usage="input" required="false" />
14-
<property name="HolderValue" display-name-key="RangeSliderControl_HolderValue" description-key="HolderValue" of-type-group="numbers" usage="bound" required="false" />
15-
<property name="LowerValue" display-name-key="RangeSliderControl_LowerValue" description-key="Lower value of the slider that will be set" of-type-group="numbers" usage="bound" required="true" />
16-
<property name="UpperValue" display-name-key="RangeSliderControl_UpperValue" description-key="Upper value of the slider" of-type-group="numbers" usage="bound" required="true" />
17-
11+
<property name="MinValue" display-name-key="MinValue" description-key="Minimal value of the slider" of-type-group="numbers" usage="input" required="true" />
12+
<property name="MaxValue" display-name-key="MaxValue" description-key="Maximum value of the slider" of-type-group="numbers" usage="input" required="true" />
13+
<property name="StepValue" display-name-key="StepValue" description-key="Step value of the slider" of-type-group="numbers" usage="input" required="false" />
14+
<property name="HolderValue" display-name-key="HolderValue" description-key="HolderValue" of-type-group="numbers" usage="bound" required="false" />
15+
<property name="LowerValue" display-name-key="LowerValue" description-key="Lower value of the slider that will be set" of-type-group="numbers" usage="bound" required="true" />
16+
<property name="UpperValue" display-name-key="UpperValue" description-key="Upper value of the slider" of-type-group="numbers" usage="bound" required="true" />
17+
<property name="ShowScale" display-name-key="ShowScale" description-key="Set 1 to show scale (StepValue required)" of-type="Whole.None" usage="input" required="false" />
18+
<property name="RequireStep" display-name-key="RequireStep" description-key="Set 1 to move only on step value (StepValue required)" of-type="Whole.None" usage="input" required="false" />
19+
1820
<resources>
1921
<code path="index.ts" order="1"/>
2022
<css path="css/nouislider.min.css" order="1" />
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
.dwcrm-slider-wrapper{
22
margin-top:50px;
3-
margin-bottom: 30px;
3+
margin-bottom: 50px;
44
padding-left: 10px;
55
padding-right: 40px;
66
}

RangeSliderControl/index.ts

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,13 @@ export class RangeSliderControl implements ComponentFramework.StandardControl<II
3939

4040
this._minValue = context.parameters.MinValue.raw || 0;
4141
this._maxValue = context.parameters.MaxValue.raw || 100;
42-
this._stepValue = context.parameters.StepValue.raw;
42+
this._stepValue = context.parameters.StepValue.raw || 10;
4343
this._upperValue = context.parameters.UpperValue.raw;
4444
this._lowerValue = context.parameters.LowerValue.raw;
4545

46+
let showScale = !!context.parameters.ShowScale.raw;
47+
let requireStep = !!context.parameters.RequireStep.raw;
48+
4649
this._slider = document.createElement("div");
4750
this._slider.id = "slider";
4851

@@ -56,18 +59,45 @@ export class RangeSliderControl implements ComponentFramework.StandardControl<II
5659
let startLower:number = this._lowerValue || this._minValue;
5760
let startUpper:number = this._upperValue || this._maxValue;
5861

59-
noUiSlider.create(this._slider, {
62+
let sliderOptions = this.getSliderOptions(this._minValue, this._maxValue,
63+
startLower, startUpper, this._stepValue, showScale, requireStep);
64+
65+
noUiSlider.create(this._slider, sliderOptions);
66+
67+
// @ts-ignore
68+
this._slider.noUiSlider.on('change', this.refreshData);
69+
}
70+
71+
private getSliderOptions(min:number,max:number, startLower:number, startUpper:number,
72+
step:number, showScale:boolean, requireStep:boolean): noUiSlider.Options{
73+
74+
let options:noUiSlider.Options = {
6075
start: [startLower, startUpper],
61-
connect: true,
6276
range: {
63-
'min': this._minValue,
64-
'max': this._maxValue
77+
'min': min,
78+
'max': max
6579
},
66-
tooltips: true,
67-
});
80+
connect: true,
81+
tooltips: true
82+
};
83+
84+
if(showScale && step){
85+
options.pips = {
86+
mode: 'steps',
87+
values: [0, 50, 100],
88+
density: 2,
89+
stepped: true
90+
};
91+
}
6892

69-
// @ts-ignore
70-
this._slider.noUiSlider.on('change', this.refreshData);
93+
if(requireStep){
94+
options.range = {
95+
'min': [min, step],
96+
'max': max
97+
}
98+
}
99+
100+
return options;
71101
}
72102

73103
public refreshData(values:string[], handle:number):void{

0 commit comments

Comments
 (0)