Testing
Wiki.Template(":MindTouch/CoDoer/Engines/CoDoer",{
action: "Test",
widget: page.path,
engine: "#3",
id: "test",
language: "en",
logging: {evt:1,par:0,wdt:0,ctr:0}
});
Parameters
var mPars = {
language: __request.args.language ?? args.language ?? ( page.language != '' ? page.language : (site.language!='' ? site.language : 'en-us'))
};
var sLang=mPars.language;
Views - Events
View : Document
Event : document.ready
<script type="text/jem">"
$('td#result').text('0');
"</script>
View : Calculator
#[Calculator]
| |
| | | |
| |
| MC | MR | MS | M+ | M- |
| <- | CE | C | +- | sqrt |
| 7 | 8 | 9 | / | % |
| 4 | 5 | 6 | * | 1/x |
| 1 | 2 | 3 | - | . |
| | 0 | | + | = |
Event : calc.click
<script type="text/jem">"
var key=_evelem;
if (key=='td')
key=jQuery.trim(Deki.$(event).text());
if (key!='')
{
Log('Key: \"'+key+'\"');
var result=jQuery.trim($('td#result').text());
var oper=jQuery.trim($('td#oper').text());
var last=jQuery.trim($('td#last').text());
if ((oper=='=')&&(key!='=')&&(key!='prev'))
$('td#prev').text(result);
//Log('Result#1: \"'+result+'\"');
var decpos=result.indexOf('.');
if (decpos>=0)
decpos=result.length-decpos-1;
var optor='';
switch (key)
{
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
if (oper=='=')
{
oper='';
$('td#result').text('');
result='0';
}//if
if ((result!='')&&(result!='0'))
{
if (decpos<2)
result+=key;
if (decpos>=0)
decpos++;
}//if
else
result=key;
break;
case '.':
if (decpos<0)
result+=key;
break;
case '=':
case '+': case '-': case '*': case '/':
if (optor=='') optor='b';
case '+-': case '1/x': case 'sqrt': case '%':
if (optor=='') optor='u';
if ((last!='')||(optor=='u'))
{
if (optor=='b')
result=eval(last+oper+result);
else if (key=='+-')
{
if (result.charAt(0)=='-')
result=result.substring(1);
else if (result!='0')
result='-'+result;
}//ei
else if (key=='1/x')
result=eval('1/'+result);
else if (key=='sqrt')
result=Math.sqrt(result);
else if (key=='%')
{
if (oper=='/')
result=eval(last+'/'+(result/100));
else
result=eval(last+'*'+(result/100));
if ((oper=='*')||(oper=='/'))
{ oper=''; last=''; }//if
}//ei
result=result.toString();
decpos=result.indexOf('.');
if (decpos>=0)
decpos=result.length-decpos-1;
if (decpos>0)
{
decpos=Math.min(decpos,2);
result=Math.round(result*Math.pow(10,decpos))/Math.pow(10,decpos); //rount to decpos
}//if
}//if
if (oper=='=')
oper='';
if (key=='=')
{ oper='='; last=''; }//if
else if (optor=='b')
{ oper=key; last=result; result=0; }//ei
break;
case '<-':
result=result.substring(0,result.length-1);
break;
case 'CE':
result='0';
break;
case 'C':
result='0';
oper='';
last='';
break;
case 'MC': case 'MR': case 'MS': case 'M+': case 'M-':
var mem=jQuery.trim($('td#mem').text());
if (key=='MC')
mem='0';
else if (key=='MR')
result=mem;
else if (key=='MS')
mem=result;
else
mem=eval(mem+key.substring(1)+result);
$('td#mem').text(mem);
break;
case 'prev':
var prev=jQuery.trim($('td#prev').text());
if (prev!='')
result=prev;
break;
default:
oper=key;
last='';
result='0';
}//sw
$('td#last').text(last);
$('td#oper').text(oper);
$('td#result').text(result);
//Log('Result#2: \"'+result+'\"');
}//if
"</script>
Controller
Interactions
| Source Scene | Source View | Html Element | On Event | Resp. Type | Resp. Section | Operations | Target Scene | Options |
| calc | Document | document | load | View | Calculator | | | |
| calc | Document | document | ready | Event | Document | | | |
| calc | Calculator | td | click | Event | calc | | | |
| calc | Calculator | prev | click | Event | calc | | | |
Resources
Languages
Lang : en
Web.Pre(Json.Format(
{
calculator: 'Calculator'
}));
Lang : es
Web.Pre(JSon.Format(
{
calculator: 'Calculadora'
}));
Lang : eu
Web.Pre(JSon.Format(
{
calculator: 'Kalkulagailua'
}));