Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Example: Creates PmForm window configured as date/time entry form (from/to)

In a single script (e.g. after pressing the button in the onButtonUp event) a user dialog for date/time entry is created. The preset time can be defined in the script after the comment "Initial time". The time value is processed by the function "onViewClose".
JavaScriptSelect and copy to clipboard

//#pragma variable sTxtFrom=Macro("$.text('sys','from')");
//#pragma variable sTxtTo=Macro("$.text('sys','to')");
//#pragma variable sTxtDate=Macro("$.text('sys','date')");
//#pragma variable sTxtTime=Macro("$.text('sys','time')");
//#pragma variable sTxtSec=Macro("$.text('sys','second')");
//#pragma variable sTxtMin=Macro("$.text('sys','minute')");
//#pragma variable sTxtHour=Macro("$.text('sys','hour')");
//#pragma variable sTxtDay=Macro("$.text('sys','day')");
//#pragma variable sTxtMonth=Macro("$.text('sys','month')");
//#pragma variable sTxtYear=Macro("$.text('sys','year')");
var oFrom, oTo, oYear, oMonth, oDay, oHour, oMinut, oSec, oActF, oActT;
function onViewLoad(ev)
{
//Initial Time
var InitTime = Pm.CreatePmDateObject(Pm.Time - 2/24);
InitTime.SetHour(InitTime.GetHour(), 0, 0, 0);
var InitTime2 = Pm.CreatePmDateObject();
//*******************************

var oForm = ev.Form;
oForm.Title = sTxtFrom + " - " + sTxtTo + " (" + sTxtDate + "/" + sTxtTime + ")";

//From - text + check
var oLay0 = oForm.CreateItem("layout", "iF", null, "Subtype:horz;");
oFrom = oLay0.CreateItem("string", "Dt", sTxtFrom, "BodyWidthIni:10;BodyWidthMode:const;ValueHorzAlign:right;");
oFrom.Value = InitTime.Format("%Y.%m.%d %H:%M:%S");
oFrom.AddEvent("onEditAccept", onChangeDt);
oActF = oLay0.CreateItem("bool", "id_boolF", null, "TitlePos:right;");
oActF.AddEvent("onEditAccept", onChangeActF);
oActF.Value = 1;

//To - text + check
var oLay1 = oForm.CreateItem("layout", "iT", null, "Subtype:horz;");
oTo = oLay1.CreateItem("string", "Dt2", sTxtTo, "BodyWidthIni:10;BodyWidthMode:const;ValueHorzAlign:right;");
oTo.Value = InitTime2.Format("%Y.%m.%d %H:%M:%S");
oTo.AddEvent("onEditAccept", onChangeDt);
oActT = oLay1.CreateItem("bool", "id_boolT", null, "TitlePos:right;");
oActT.AddEvent("onEditAccept", onChangeActT);

oForm.CreateItem("separ", "", null, "Subtype:line;");

//TitleDate
var oLay2 = oForm.CreateItem("layout", "iTDate", null, "Subtype:horz;");
var oIt = oLay2.CreateItem("string", "s1", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtYear + ";");
oIt = oLay2.CreateItem("string", "s2", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtMonth + ";");
oIt = oLay2.CreateItem("string", "s3", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtDay + ";");

//Date
var oLay3 = oForm.CreateItem("layout", "iFr", null, "Subtype:horz;");
oYear = oLay3.CreateItem("number", "yearF", null, "BodyWidthIni:5;");
oYear.AddEvent("onEditAccept", onChange);
oMonth = oLay3.CreateItem("number", "monthF", null, "BodyWidthIni:5;Min:1;Max:12;");
oMonth.AddEvent("onEditAccept", onChangeMonth);
oDay = oLay3.CreateItem("number", "dayF", null, "BodyWidthIni:5;Min:1;Max:31;");
oDay.AddEvent("onEditAccept", onChange);

//TitleTime
var oLay4 = oForm.CreateItem("layout", "iTTime", null, "Subtype:horz;");
oIt = oLay4.CreateItem("string", "s4", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtHour + ";");
oIt = oLay4.CreateItem("string", "s5", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtMin + ";");
oIt = oLay4.CreateItem("string", "s6", "", "Subtype:static;BodyWidthIni:5;TitlePos:no;Value:" + sTxtSec + ";");

//Time
var oLay5 = oForm.CreateItem("layout", "iFr2", null, "Subtype:horz;");
oHour = oLay5.CreateItem("number", "hourF", null, "BodyWidthIni:5;Min:0;Max:23;");
oHour.AddEvent("onEditAccept", onChange);
oMinut = oLay5.CreateItem("number", "minF", null, "BodyWidthIni:5;Min:0;Max:59;");
oMinut.AddEvent("onEditAccept", onChange);
oSec = oLay5.CreateItem("number", "secF", null, "BodyWidthIni:5;Min:0;Max:59;");
oSec.AddEvent("onEditAccept", onChange);

onChangeDt();
onChangeMonth();
}


function onChangeActF(ev)
{
oActT.Value = ! oActF.Value;
onChangeDt(ev);
}

function onChangeActT(ev)
{
oActF.Value = ! oActT.Value;
onChangeDt(ev);
}

function onChangeMonth(ev)
{
var nMonth = oMonth.Value;
switch (nMonth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
oDay.Max = 31;
break;
case 2:
oDay.Max = 29;
break;
case 4:
case 6:
case 9:
case 11:
oDay.Max = 30;
break;
}
onChange();
}

function onChange(ev)
{
var tDateTime = Pm.CreateDate(oYear.Value, oMonth.Value, oDay.Value, oHour.Value, oMinut.Value, oSec.Value, 0);
var sDateTime = Pm.CreatePmDateObject(tDateTime).Format("%Y.%m.%d %H:%M:%S");
if (oActF.Value)
oFrom.Value = sDateTime;
else
oTo.Value = sDateTime;
}

function onChangeDt(ev)
{
if (oActF.Value)
var nTime = Pm.ScanDate(oFrom.Value, 1);
else
var nTime = Pm.ScanDate(oTo.Value, 1);
var oTime = Pm.CreatePmDateObject(nTime);
oYear.Value = oTime.GetYear();
oMonth.Value = oTime.GetMonth();
oDay.Value = oTime.GetDay();
oHour.Value = oTime.GetHour();
oMinut.Value = oTime.GetMinute();
oSec.Value = oTime.GetSecond();
}

function onViewClose(ev)
{
if (ev.CloseReason == "ok")
{
var tTimeF = Pm.ScanDate(oFrom.Value, 1);
var tTimeT = Pm.ScanDate(oTo.Value, 1);
//return values
}
}

//Creates PmViewCreator - This object allows opening the various viewers
var oCreator = Pm.CreateView(pMe.PmPanel, "/#glob/form", "", "target:_blank;modal:1;");
oCreator.View.onLoad = onViewLoad;
oCreator.View.onClose = onViewClose;

//Opens form in modal window:
oCreator.Open();
PROMOTIC 9.0.13 SCADA system documentation - MICROSYS, spol. s r.o.

Send page remarkContact responsible person
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice