[DE] Add check/radio form settings
This commit is contained in:
parent
3234492ccc
commit
b46ab4e0bd
|
@ -4,13 +4,19 @@
|
||||||
<label class="header padding-small" id="form-settings-name"><%= scope.textField %></label>
|
<label class="header padding-small" id="form-settings-name"><%= scope.textField %></label>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr class="form-textfield form-checkbox form-list form-image">
|
||||||
<td class="padding-small">
|
<td class="padding-small">
|
||||||
<label class="input-label"><%= scope.textKey %></label>
|
<label class="input-label"><%= scope.textKey %></label>
|
||||||
<div id="form-combo-key" style="width: 100%;"></div>
|
<div id="form-combo-key" style="width: 100%;"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="form-panel-textfield">
|
<tr class="form-radiobox">
|
||||||
|
<td class="padding-small">
|
||||||
|
<label class="input-label"><%= scope.textGroupKey %></label>
|
||||||
|
<div id="form-combo-group-key" style="width: 100%;"></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="form-placeholder">
|
||||||
<td class="padding-small">
|
<td class="padding-small">
|
||||||
<label class="input-label"><%= scope.textPlaceholder %></label>
|
<label class="input-label"><%= scope.textPlaceholder %></label>
|
||||||
<div id="form-txt-pholder"></div>
|
<div id="form-txt-pholder"></div>
|
||||||
|
@ -22,23 +28,28 @@
|
||||||
<div id="form-txt-help"></div>
|
<div id="form-txt-help"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="form-panel-textfield">
|
<tr class="form-textfield">
|
||||||
<td class="padding-small">
|
<td class="padding-small">
|
||||||
<div id="form-chb-max-chars" style="display: inline-block;margin-top: 4px;"></div>
|
<div id="form-chb-max-chars" style="display: inline-block;margin-top: 4px;"></div>
|
||||||
<div id="form-spin-max-chars" style="display: inline-block;float: right;"></div>
|
<div id="form-spin-max-chars" style="display: inline-block;float: right;"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="form-panel-textfield">
|
<tr class="form-textfield">
|
||||||
<td class="padding-small">
|
<td class="padding-small">
|
||||||
<div id="form-chb-comb"></div>
|
<div id="form-chb-comb"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="form-panel-textfield">
|
<tr class="form-textfield">
|
||||||
<td class="padding-small" colspan="2">
|
<td class="padding-large" colspan="2">
|
||||||
<label class="input-label" style="margin-left: 22px;margin-top: 4px;"><%= scope.textWidth %></label>
|
<label class="input-label" style="margin-left: 22px;margin-top: 4px;"><%= scope.textWidth %></label>
|
||||||
<div id="form-spin-width" style="display: inline-block; float: right;"></div>
|
<div id="form-spin-width" style="display: inline-block; float: right;"></div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr class="form-checkbox form-radiobox">
|
||||||
|
<td class="padding-large" colspan=2>
|
||||||
|
<div id="form-chb-selected"></div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="padding-small">
|
<td class="padding-small">
|
||||||
<div class="separator horizontal"></div>
|
<div class="separator horizontal"></div>
|
||||||
|
|
|
@ -88,7 +88,12 @@ define([
|
||||||
scope: this
|
scope: this
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this.textFieldContainer = el.find('.form-panel-textfield');
|
this.TextOnlySettings = el.find('.form-textfield');
|
||||||
|
this.PlaceholderSettings = el.find('.form-placeholder');
|
||||||
|
this.CheckOnlySettings = el.find('.form-checkbox');
|
||||||
|
this.RadioOnlySettings = el.find('.form-radiobox');
|
||||||
|
this.ListOnlySettings = el.find('.form-list');
|
||||||
|
this.ImageOnlySettings = el.find('.form-image');
|
||||||
},
|
},
|
||||||
|
|
||||||
createDelayedElements: function() {
|
createDelayedElements: function() {
|
||||||
|
@ -100,7 +105,7 @@ define([
|
||||||
|
|
||||||
this.labelFormName = $markup.findById('#form-settings-name');
|
this.labelFormName = $markup.findById('#form-settings-name');
|
||||||
|
|
||||||
// Short Size
|
// Common props
|
||||||
this.cmbKey = new Common.UI.ComboBox({
|
this.cmbKey = new Common.UI.ComboBox({
|
||||||
el: $markup.findById('#form-combo-key'),
|
el: $markup.findById('#form-combo-key'),
|
||||||
cls: 'input-group-nr',
|
cls: 'input-group-nr',
|
||||||
|
@ -129,13 +134,14 @@ define([
|
||||||
|
|
||||||
this.textareaHelp = new Common.UI.TextareaField({
|
this.textareaHelp = new Common.UI.TextareaField({
|
||||||
el : $markup.findById('#form-txt-help'),
|
el : $markup.findById('#form-txt-help'),
|
||||||
style : 'width: 100%; height: 90px;',
|
style : 'width: 100%; height: 60px;',
|
||||||
value : ''
|
value : ''
|
||||||
});
|
});
|
||||||
this.lockedControls.push(this.textareaHelp);
|
this.lockedControls.push(this.textareaHelp);
|
||||||
this.textareaHelp.on('changed:after', this.onHelpChanged.bind(this));
|
this.textareaHelp.on('changed:after', this.onHelpChanged.bind(this));
|
||||||
this.textareaHelp.on('inputleave', function(){ me.fireEvent('editcomplete', me);});
|
this.textareaHelp.on('inputleave', function(){ me.fireEvent('editcomplete', me);});
|
||||||
|
|
||||||
|
// Text props
|
||||||
this.chMaxChars = new Common.UI.CheckBox({
|
this.chMaxChars = new Common.UI.CheckBox({
|
||||||
el: $markup.findById('#form-chb-max-chars'),
|
el: $markup.findById('#form-chb-max-chars'),
|
||||||
labelText: this.textMaxChars
|
labelText: this.textMaxChars
|
||||||
|
@ -177,6 +183,29 @@ define([
|
||||||
this.spnWidth.on('change', this.onWidthChange.bind(this));
|
this.spnWidth.on('change', this.onWidthChange.bind(this));
|
||||||
this.spnWidth.on('inputleave', function(){ me.fireEvent('editcomplete', me);});
|
this.spnWidth.on('inputleave', function(){ me.fireEvent('editcomplete', me);});
|
||||||
|
|
||||||
|
// Check/Radio props
|
||||||
|
this.chSelected = new Common.UI.CheckBox({
|
||||||
|
el: $markup.findById('#form-chb-selected'),
|
||||||
|
labelText: this.textChecked
|
||||||
|
});
|
||||||
|
this.chSelected.on('change', this.onChSelectedChanged.bind(this));
|
||||||
|
this.lockedControls.push(this.chSelected);
|
||||||
|
|
||||||
|
// Radio props
|
||||||
|
this.cmbGroupKey = new Common.UI.ComboBox({
|
||||||
|
el: $markup.findById('#form-combo-group-key'),
|
||||||
|
cls: 'input-group-nr',
|
||||||
|
menuStyle: 'min-width: 100%;',
|
||||||
|
editable: true,
|
||||||
|
data: [],
|
||||||
|
disabled: this._locked
|
||||||
|
});
|
||||||
|
this.cmbGroupKey.setValue('');
|
||||||
|
this.lockedControls.push(this.cmbGroupKey);
|
||||||
|
this.cmbGroupKey.on('selected', this.onGroupKeyChanged.bind(this));
|
||||||
|
this.cmbGroupKey.on('changed:after', this.onGroupKeyChanged.bind(this));
|
||||||
|
this.cmbGroupKey.on('hide:after', this.onHideMenus.bind(this));
|
||||||
|
|
||||||
this.btnRemForm = new Common.UI.Button({
|
this.btnRemForm = new Common.UI.Button({
|
||||||
parentEl: $markup.findById('#form-btn-delete'),
|
parentEl: $markup.findById('#form-btn-delete'),
|
||||||
cls : 'btn-toolbar',
|
cls : 'btn-toolbar',
|
||||||
|
@ -313,6 +342,28 @@ define([
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onChSelectedChanged: function(field, newValue, oldValue, eOpts){
|
||||||
|
if (this.api && !this._noApply) {
|
||||||
|
var props = this._originalProps || new AscCommon.CContentControlPr();
|
||||||
|
var specProps = this._originalCheckProps || new AscCommon.CSdtCheckBoxPr();
|
||||||
|
// specProps.put_Selected(field.getValue()=='checked');
|
||||||
|
props.put_CheckBoxPr(specProps);
|
||||||
|
this.api.asc_SetContentControlProperties(props, this.internalId);
|
||||||
|
this.fireEvent('editcomplete', this);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
onGroupKeyChanged: function(combo, record) {
|
||||||
|
if (this.api && !this._noApply) {
|
||||||
|
var props = this._originalProps || new AscCommon.CContentControlPr();
|
||||||
|
var specProps = this._originalCheckProps || new AscCommon.CSdtCheckBoxPr();
|
||||||
|
specProps.put_GroupKey(record.value);
|
||||||
|
props.put_CheckBoxPr(specProps);
|
||||||
|
this.api.asc_SetContentControlProperties(props, this.internalId);
|
||||||
|
this.fireEvent('editcomplete', this);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
ChangeSettings: function(props) {
|
ChangeSettings: function(props) {
|
||||||
if (this._initSettings)
|
if (this._initSettings)
|
||||||
this.createDelayedElements();
|
this.createDelayedElements();
|
||||||
|
@ -363,7 +414,6 @@ define([
|
||||||
specProps = props.get_CheckBoxPr();
|
specProps = props.get_CheckBoxPr();
|
||||||
this._originalCheckProps = specProps;
|
this._originalCheckProps = specProps;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.type = type;
|
this.type = type;
|
||||||
|
|
||||||
// form settings
|
// form settings
|
||||||
|
@ -387,13 +437,18 @@ define([
|
||||||
if (type == Asc.c_oAscContentControlSpecificType.CheckBox && specProps) {
|
if (type == Asc.c_oAscContentControlSpecificType.CheckBox && specProps) {
|
||||||
val = specProps.get_GroupKey();
|
val = specProps.get_GroupKey();
|
||||||
if (this._state.groupkey!==val) {
|
if (this._state.groupkey!==val) {
|
||||||
this.txtGroupKey.setValue(val ? val : '');
|
this.cmbGroupKey.setValue(val ? val : '');
|
||||||
this._state.groupkey=val;
|
this._state.groupkey=val;
|
||||||
}
|
}
|
||||||
hidden = (typeof val !== 'string');
|
hidden = (typeof val !== 'string');
|
||||||
this.labelFormName.text(hidden ? this.textCheckbox : this.textRadiobox);
|
this.labelFormName.text(hidden ? this.textCheckbox : this.textRadiobox);
|
||||||
|
this.chSelected.setCaption(hidden ? this.textChecked : this.textSelected);
|
||||||
|
// val = formTextPr.get_Selected();
|
||||||
|
// if ( this._state.Selected!==val ) {
|
||||||
|
// this.chSelected.setValue(!!val, true);
|
||||||
|
// this._state.Selected=val;
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
this.$el.find('.group-key').toggleClass('hidden', hidden);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var formTextPr = props.get_TextFormPr();
|
var formTextPr = props.get_TextFormPr();
|
||||||
|
@ -420,6 +475,8 @@ define([
|
||||||
this.spnMaxChars.setValue(val && val>=0 ? val : 10);
|
this.spnMaxChars.setValue(val && val>=0 ? val : 10);
|
||||||
}
|
}
|
||||||
this._noApply = false;
|
this._noApply = false;
|
||||||
|
|
||||||
|
this.showHideControls(formTextPr, specProps);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -451,10 +508,48 @@ define([
|
||||||
this.btnRemForm.setDisabled(this._lockedControl || disable);
|
this.btnRemForm.setDisabled(this._lockedControl || disable);
|
||||||
},
|
},
|
||||||
|
|
||||||
hideTextOnlySettings: function(value) {
|
showHideControls: function(textProps, specProps) {
|
||||||
if (this._state.HideTextOnlySettings !== value) {
|
var textOnly = false,
|
||||||
this._state.HideTextOnlySettings = value;
|
checkboxOnly = false,
|
||||||
this.TextOnlySettings.toggleClass('hidden', value==true);
|
radioboxOnly = false,
|
||||||
|
listOnly = false,
|
||||||
|
imageOnly = false;
|
||||||
|
if (this.type == Asc.c_oAscContentControlSpecificType.ComboBox || this.type == Asc.c_oAscContentControlSpecificType.DropDownList) {
|
||||||
|
listOnly = !!specProps;
|
||||||
|
} else if (this.type == Asc.c_oAscContentControlSpecificType.CheckBox) {
|
||||||
|
if (specProps) {
|
||||||
|
checkboxOnly = (typeof specProps.get_GroupKey() !== 'string');
|
||||||
|
radioboxOnly = !checkboxOnly;
|
||||||
|
}
|
||||||
|
} else if (this.type == Asc.c_oAscContentControlSpecificType.Picture) {
|
||||||
|
imageOnly = true;
|
||||||
|
} else if (this.type == Asc.c_oAscContentControlSpecificType.None) {
|
||||||
|
textOnly = !!textProps;
|
||||||
|
}
|
||||||
|
if (this._state.TextOnlySettings !== textOnly) {
|
||||||
|
this._state.TextOnlySettings = textOnly;
|
||||||
|
this.TextOnlySettings.toggleClass('hidden', !textOnly);
|
||||||
|
}
|
||||||
|
if (this._state.CheckOnlySettings !== checkboxOnly) {
|
||||||
|
this._state.CheckOnlySettings = checkboxOnly;
|
||||||
|
this.CheckOnlySettings.toggleClass('hidden', !checkboxOnly);
|
||||||
|
}
|
||||||
|
if (this._state.RadioOnlySettings !== radioboxOnly) {
|
||||||
|
this._state.RadioOnlySettings = radioboxOnly;
|
||||||
|
this.RadioOnlySettings.toggleClass('hidden', !radioboxOnly);
|
||||||
|
}
|
||||||
|
if (this._state.ListOnlySettings !== listOnly) {
|
||||||
|
this._state.ListOnlySettings = listOnly;
|
||||||
|
this.ListOnlySettings.toggleClass('hidden', !listOnly);
|
||||||
|
}
|
||||||
|
if (this._state.ImageOnlySettings !== imageOnly) {
|
||||||
|
this._state.ImageOnlySettings = imageOnly;
|
||||||
|
this.ImageOnlySettings.toggleClass('hidden', !imageOnly);
|
||||||
|
}
|
||||||
|
var value = !(checkboxOnly || radioboxOnly);
|
||||||
|
if (this._state.PlaceholderSettings !== value) {
|
||||||
|
this._state.PlaceholderSettings = value;
|
||||||
|
this.PlaceholderSettings.toggleClass('hidden', !value);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -472,7 +567,10 @@ define([
|
||||||
textCheckbox: 'Checkbox',
|
textCheckbox: 'Checkbox',
|
||||||
textCombobox: 'Combo box',
|
textCombobox: 'Combo box',
|
||||||
textDropDown: 'Dropdown',
|
textDropDown: 'Dropdown',
|
||||||
textImage: 'Image'
|
textImage: 'Image',
|
||||||
|
textChecked: 'Checked by default',
|
||||||
|
textSelected: 'Selected by default',
|
||||||
|
textGroupKey: 'Group key'
|
||||||
|
|
||||||
}, DE.Views.FormSettings || {}));
|
}, DE.Views.FormSettings || {}));
|
||||||
});
|
});
|
Loading…
Reference in a new issue