WaBis

walter.bislins.ch

CP: Demo

Im interaktiven Formular auf dieser Seite kannst du den NumFormatter ausprobieren. Das Formular zeigt eine Auswahl der Möglichkeiten des ControlPanel Moduls.

Anleitung

Gibt in Number eine zu formatierende Zahl ein. Mit dem Regler Power10 kann die Grösse dieser Zahl in Schritten von Faktor 10 interaktiv verändert werden.

Im Ausgabe-Formular sieht man die Wirkung der Einstellungen und die verschiedenen Formatierungen. Zum Vergleich wird im Feld Native die Formatierung der Javascript Funktion toString() angezeigt. Diese Formatierung ist so, dass der String die interne Darstellung einer Number exakt wiedergibt. Mit der Javascript Funktion parseFloat() kann dieser String wieder in die entsprechende Number konvertiert werden.

Die Formtierungen werden intern mit Hilfe des NumFormatter erstellt, ein ebenfalls von mir Programmiertes JavaScript-Modul.

Weitere Anwendungsbeispiele

Demo-Code

function CNumber() {
  this.Lang = 'iso';
  this.Number = 1.234567890123456789;
  this.PowerNumber = this.Number;
  this.Power = 0;
  this.Precision = 10;
}

var ObjNumber = new CNumber();

NumFormatter.AltPrec = ObjNumber.Precision;

ControlPanels.NewPanel( { 
  Name: 'InputPanel',
  PanelFormat: 'InputLongWidth', 
  NCols: 2, 
  HiliChanges: false, 
  OnModelChange: ModelChangedCB, 
  Format: 'fix', Digits: 0 

} ).AddHeader( { 
  Text: 'NumFormatter Einstellungen und Eingaben' + ControlPanels.ResetButtonR(), 
  ColSpan: 4 

} ).AddRadiobuttonField( {
  Name: 'Lang', 
  ValueRef: 'ObjNumber.Lang',
  Items: [
    { Name: 'iso' },
    { Name: 'en' },
    { Name: 'de' },
    { Name: 'ch' }
  ]

} ).AddRadiobuttonField( {
  Name: 'ExpChar', 
  ValueRef: 'NumFormatter.ExpChar', 
  Items: [
    { Value: 'e', Text: '\'e\'' },
    { Value: 'E', Text: '\'E\'' },
    { Value: ' E', Text: '\' E\'' }
  ]

} ).AddCheckboxField( {
  Name: 'ExpFlags', 
  Label: 'Exp', 
  Items: [
    { Name: 'ShowExpPlus', ValueRef: 'NumFormatter.ShowExpPlus' },
    { Name: 'HideZeroExp', ValueRef: 'NumFormatter.HideZeroExp' }
  ]

} ).AddRadiobuttonField( {
  Name: 'AltMode', 
  ValueRef: 'NumFormatter.AltMode',
  Items: [
    { Name: 'sci' },
    { Name: 'eng' }
  ]

} ).AddTextField( { 
  Name: 'MaxPrec', 
  ValueRef: 'NumFormatter.MaxPrec' 

} ).AddTextField( { 
  Name: 'MaxDigits', 
  ValueRef: 'NumFormatter.MaxDigits' 

} ).AddTextField( { 
  Name: 'AltPrec', 
  ValueRef: 'NumFormatter.AltPrec' 

} ).AddSliderField( { 
  Name: 'AltPrec', 
  ValueRef: 'NumFormatter.AltPrec', 
  Min: 1, Max: 16, Steps: 15 

} ).AddTextField( { 
  Name: 'Precision', 
  ValueRef: 'ObjNumber.Precision' 

} ).AddSliderField( { 
  Name: 'Precision', 
  ValueRef: 'ObjNumber.Precision', 
  Min: 0, Max: 16, Steps: 16 

} ).AddTextField( { 
  Name: 'Number', 
  ValueRef: 'ObjNumber.Number', 
  Format: '' 

} ).AddSliderField( { 
  Name: 'Power10', 
  ValueRef: 'ObjNumber.Power', 
  Min: -25, Max: 25, Steps: 50 

} ).Render();


ControlPanels.NewPanel( {
  Name: 'OutputPanel', 
  PanelFormat: 'InputLongWidth', 
  ModelRef: 'ObjNumber', 
  ReadOnly: true, 
  NCols: 2 

} ).AddHeader( { 
  Text: 'NumFormatter Ausgaben', 
  ColSpan: 4 

} ).AddTextField( { 
  Name: 'Native', 
  ValueRef: 'PowerNumber', 
  Format: '', Mult: 0, 
  DigitsRef: 'Precision' 

} ).AddTextField( {
  Name: 'fix', 
  ValueRef: 'PowerNumber', 
  Format: 'fix', 
  DigitsRef: 'Precision'

} ).AddTextField( { 
  Name: 'std', 
  ValueRef: 'PowerNumber', 
  Format: 'std', 
  DigitsRef: 'Precision'

} ).AddTextField( {
  Name: 'fix0', 
  ValueRef: 'PowerNumber', 
  Format: 'fix0', 
  DigitsRef: 'Precision'

} ).AddTextField( {
  Name: 'prec', 
  ValueRef: 'PowerNumber', 
  Format: 'prec', 
  DigitsRef: 'Precision' 

} ).AddTextField( {
  Name: 'weak', 
  ValueRef: 'PowerNumber', 
  Format: 'weak', 
  DigitsRef: 'Precision' 

} ).AddTextField( {
  Name: 'eng', 
  ValueRef: 'PowerNumber', 
  Format: 'eng', 
  DigitsRef: 'Precision'

} ).AddTextField( {
  Name: 'weak0', 
  ValueRef: 'PowerNumber', 
  Format: 'weak0', 
  DigitsRef: 'Precision' 

} ).AddTextField( {
  Name: 'sci', 
  ValueRef: 'PowerNumber', 
  Format: 'sci', 
  DigitsRef: 'Precision' 

} ).AddTextField( {
  Name: 'unit', 
  ValueRef: 'PowerNumber', 
  Format: 'unit', Units: 'U', 
  DigitsRef: 'Precision' 

} ).Render();


function ModelChangedCB( ) {
  NumFormatter.SetLang( ObjNumber.Lang );
  ObjNumber.PowerNumber = ObjNumber.Number * Math.pow( 10, ObjNumber.Power );
  ControlPanels.Invalidate( 'OutputPanel' );
  ControlPanels.Update();
}

function Reset( ) {
  ControlPanels.Reset( 'InputPanel', true );
}

Weitere Infos zur Seite
Erzeugt Samstag, 6. August 2016
von wabis
Zum Seitenanfang
Geändert Sonntag, 29. Juli 2018
von wabis