Univention Bugzilla – Attachment 4488 Details for
Bug 27778
Speicherangabe wird nicht validiert
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
ByteBox widget
ByteBox.js (text/plain), 5.02 KB, created by
Philipp Hahn
on 2012-06-29 16:08 CEST
(
hide
)
Description:
ByteBox widget
Filename:
MIME Type:
Creator:
Philipp Hahn
Created:
2012-06-29 16:08 CEST
Size:
5.02 KB
patch
obsolete
>/* > * Copyright 2011-2012 Univention GmbH > * > * http://www.univention.de/ > * > * All rights reserved. > * > * The source code of this program is made available > * under the terms of the GNU Affero General Public License version 3 > * (GNU AGPL V3) as published by the Free Software Foundation. > * > * Binary versions of this program provided by Univention to you as > * well as other copyrighted, protected or trademarked materials like > * Logos, graphics, fonts, specific documentations and configurations, > * cryptographic keys etc. are subject to a license agreement between > * you and Univention and not subject to the GNU AGPL V3. > * > * In the case you use this program under the terms of the GNU AGPL V3, > * the program is provided in the hope that it will be useful, > * but WITHOUT ANY WARRANTY; without even the implied warranty of > * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > * GNU Affero General Public License for more details. > * > * You should have received a copy of the GNU Affero General Public > * License with the Debian GNU/Linux or Univention distribution in file > * /usr/share/common-licenses/AGPL-3; if not, see > * <http://www.gnu.org/licenses/>. > */ >/*global console MyError dojo dojox dijit umc */ > >// TODO: Add support min/max constraint: "If min=1 MiB, don't show KiB", but "If max=1 GiB, allow 0.5 GiB"? >// TODO: Update value when unit changes: 1024 KiB â 1 MiB >// TODO: Think more about handling fractional values: 0.5 MiB = 512 KiB >// TODO: Check why static widget <input data-dojo-type="umc.widgets.ByteBox" .../> does not work, but dynamic dojo.place(new umc.widgets.ByteBox({id: 'bb', value: 0}).domNode, dojo.body()); works > >dojo.provide("umc.widgets.ByteBox"); > >dojo.require("umc.widgets.ContainerWidget"); >dojo.require("umc.widgets.ComboBox"); >dojo.require("umc.widgets.NumberSpinner"); >dojo.require("umc.widgets._FormWidgetMixin"); >dojo.require("umc.widgets._WidgetsInWidgetsMixin"); > >dojo.declare("umc.widgets.ByteBox", [ > umc.widgets.ContainerWidget, > umc.widgets._FormWidgetMixin, > umc.widgets._WidgetsInWidgetsMixin >], { > // summary: > // Display human readable size in bytes > > name: '', > > label: '', > > required: '', > > disabled: false, > > i18nClass: 'umc.app', > > // list of available units > units: [{ > unit: 'B', > factor: 1 > }, { > unit: 'KiB', > factor: 1024 > }, { > unit: 'MiB', > factor: 1024*1024 > }, { > unit: 'GiB', > factor: 1024*1024*1024 > }, { > unit: 'TiB', > factor: 1024*1024*1024*1024 > }, { > unit: 'PiB', > factor: 1024*1024*1024*1024*1024 > }], > > constraints: { > min: 0, > max: 1024*1024*1024*1024*1024*1024 - 1, > }, > > // the widget's class name as CSS class > 'class': 'umcByteBox', > > // internal reference to the NumberSpinner > _spinBox: null, > > // internal reference to the ComboBox containing the units > _unitBox: null, > > _setDisabledAttr: function(newVal) { > this.disabled = newVal; > if (this._spinBox && this._unitBox) { > this._spinBox.set('disabled', this.disabled); > this._unitBox.set('disabled', this.disabled); > } > }, > > _setRequiredAttr: function(newVal) { > this.required = newVal; > if (this._spinBox && this._unitBox) { > this._spinBox.set('required', this.required); > this._unitBox.set('required', this.required); > } > }, > > _setValueAttr: function(_val) { > var unit = this.units[0]; > dojo.forEach(this.units, function(iunit) { > if (iunit.factor > _val) > return false; > unit = iunit; > }); > > this._spinBox.set('value', _val / unit.factor); > this._unitBox.set('value', unit.unit); > }, > > _getValueAttr: function() { > var factor = 1; > var unit = this._unitBox.get('value'); > dojo.forEach(this.units, function(iunit) { > if (iunit.unit == unit) { > factor = iunit.factor; > return false; > } > }); > return this._spinBox.get('value') * factor; > }, > > postMixInProperties: function() { > this.inherited(arguments); > > // ignore specified size classes > this.sizeClass = null; > }, > > buildRendering: function() { > this.inherited(arguments); > > // create widgets > this._spinBox = this.adopt(umc.widgets.NumberSpinner, { > required: this.required, > disabled: this.disabled, > constraints: { > min: 1, > max: 1024, > }, > sizeClass: 'TwoThirds' > }); > this._unitBox = this.adopt(umc.widgets.ComboBox, { > required: this.required, > disabled: this.disabled, > sizeClass: 'OneThird', > staticValues: dojo.map(this.units, function(iunit) { > return iunit.unit; > }) > }); > > // register to 'onChange' events > this.connect(this._unitBox, 'onChange', function() { > this.onChange(this.get('value')); > }); > this.connect(this._spinBox, 'onChange', function() { > this.onChange(this.get('value')); > }); > > // create layout > this.addChild(this._spinBox); > this.addChild(this._unitBox); > this.startup(); > }, > > isValid: function() { > return this._spinBox.isValid() && this._unitBox.isValid(); > }, > > // provide 'onChange' method stub in case it does not exist yet > onChange: function(newValue, widgetName) { > // event stub > } >});
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
Actions:
View
Attachments on
bug 27778
: 4488