TS - OperationsMgrWeb login page UI and function

This commit is contained in:
Thomas Savine
2020-03-23 09:06:54 +00:00
parent 70de9715ce
commit 5067e26d08
25 changed files with 4652 additions and 550 deletions
+2 -2
View File
@@ -7,7 +7,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaOperationsMgrService", "S
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaOperationsMgr", "SaOperationsMgr\SaOperationsMgr.csproj", "{F59F6AEB-6611-4F71-A211-D64F98A1A8AC}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaOperationsMgr", "SaOperationsMgr\SaOperationsMgr.csproj", "{F59F6AEB-6611-4F71-A211-D64F98A1A8AC}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaOpnMgrCore", "SaOpnMgrCore\SaOpnMgrCore.csproj", "{9EAC4DD6-D3C8-4966-B1BE-B0D2CE17F012}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaOpnMgrCore", "SaOpnMgrCore\SaOpnMgrCore.csproj", "{9EAC4DD6-D3C8-4966-B1BE-B0D2CE17F012}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaOpnMgrProcs", "SaOpnMgrProcs\SaOpnMgrProcs.csproj", "{12783700-F1BA-4D24-9B0E-9C8A7C5FF621}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaOpnMgrProcs", "SaOpnMgrProcs\SaOpnMgrProcs.csproj", "{12783700-F1BA-4D24-9B0E-9C8A7C5FF621}"
EndProject EndProject
@@ -25,7 +25,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SacsWinForms", "..\..\Commo
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SacsWinOffice", "..\..\Common-C#\Workspace\SacsWinOffice\SacsWinOffice.csproj", "{E9106099-66B4-42DB-AF28-C34CF1AFF2AA}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SacsWinOffice", "..\..\Common-C#\Workspace\SacsWinOffice\SacsWinOffice.csproj", "{E9106099-66B4-42DB-AF28-C34CF1AFF2AA}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SaOperationsMgrWeb", "SaOperationsMgrWeb\SaOperationsMgrWeb.csproj", "{BAEA9717-20F8-4519-93CB-19F4B75D5913}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SaOperationsMgrWeb", "SaOperationsMgrWeb\SaOperationsMgrWeb.csproj", "{BAEA9717-20F8-4519-93CB-19F4B75D5913}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -3,7 +3,7 @@
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 1.3 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
@@ -14,16 +14,17 @@
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object] <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object] <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
@@ -45,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
@@ -58,20 +59,38 @@
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
--> -->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
@@ -90,12 +109,147 @@
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>1.3</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="application.caption" xml:space="preserve">
<value>Sarand OperationsMgr</value>
</data>
<data name="button.cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="button.close" xml:space="preserve">
<value>Close</value>
</data>
<data name="button.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="button.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="button.nextDataPage" xml:space="preserve">
<value>Next page</value>
</data>
<data name="button.no" xml:space="preserve">
<value>No</value>
</data>
<data name="button.ok" xml:space="preserve">
<value>OK</value>
</data>
<data name="button.prevDataPage" xml:space="preserve">
<value>Prev page</value>
</data>
<data name="button.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="button.yes" xml:space="preserve">
<value>Yes</value>
</data>
<data name="dataList.header.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="dataList.header.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="dataList.header.utility" xml:space="preserve">
<value>Utility</value>
</data>
<data name="dialog.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="form.action.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="form.action.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="form.action.nextDataPage" xml:space="preserve">
<value>NextDataPage</value>
</data>
<data name="form.action.prevDataPage" xml:space="preserve">
<value>PrevDataPage</value>
</data>
<data name="form.action.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="form.caption.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="label.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="label.company" xml:space="preserve">
<value>Company</value>
</data>
<data name="label.instance" xml:space="preserve">
<value>Instance</value>
</data>
<data name="label.password" xml:space="preserve">
<value>Password</value>
</data>
<data name="label.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="label.type" xml:space="preserve">
<value>Type</value>
</data>
<data name="label.user" xml:space="preserve">
<value>User</value>
</data>
<data name="menu.option.home" xml:space="preserve">
<value>Home</value>
</data>
<data name="menu.option.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="menu.option.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="msg.confirm.logout" xml:space="preserve">
<value>Are you sure that you want to logout?</value>
</data>
<data name="msg.data.noneFound" xml:space="preserve">
<value>No matching data found.</value>
</data>
<data name="msg.data.querying" xml:space="preserve">
<value>Querying data. please wait ...</value>
</data>
<data name="msg.warn.login.credentials.invalid" xml:space="preserve">
<value>Invalid credentials supplied.</value>
</data>
<data name="msg.warn.login.userCode.missing" xml:space="preserve">
<value>User code must be supplied.</value>
</data>
<data name="msg.warn.securityConsole.unavailable" xml:space="preserve">
<value>Failed to retrieve Security Console.</value>
</data>
<data name="msg.warn.session.expired" xml:space="preserve">
<value>Your session has expired.</value>
</data>
<data name="msg.warn.sessionContext.unknown" xml:space="preserve">
<value>Unknown session context.</value>
</data>
<data name="msg.warn.sessionExpired" xml:space="preserve">
<value>Session has expired.</value>
</data>
<data name="page.caption.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="paging.info.items.suffix" xml:space="preserve">
<value>items</value>
</data>
<data name="paging.info.of" xml:space="preserve">
<value>of</value>
</data>
<data name="paging.info.prefix" xml:space="preserve">
<value>Page</value>
</data>
<data name="view.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
</root> </root>
+165 -11
View File
@@ -3,7 +3,7 @@
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 1.3 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
@@ -14,16 +14,17 @@
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object] <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object] <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
@@ -45,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
@@ -58,20 +59,38 @@
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
--> -->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
@@ -90,12 +109,147 @@
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>1.3</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="application.caption" xml:space="preserve">
<value>Sarand OperationsMgr</value>
</data>
<data name="button.cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="button.close" xml:space="preserve">
<value>Close</value>
</data>
<data name="button.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="button.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="button.nextDataPage" xml:space="preserve">
<value>Next page</value>
</data>
<data name="button.no" xml:space="preserve">
<value>No</value>
</data>
<data name="button.ok" xml:space="preserve">
<value>OK</value>
</data>
<data name="button.prevDataPage" xml:space="preserve">
<value>Prev page</value>
</data>
<data name="button.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="button.yes" xml:space="preserve">
<value>Yes</value>
</data>
<data name="dataList.header.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="dataList.header.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="dataList.header.utility" xml:space="preserve">
<value>Utility</value>
</data>
<data name="dialog.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="form.action.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="form.action.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="form.action.nextDataPage" xml:space="preserve">
<value>NextDataPage</value>
</data>
<data name="form.action.prevDataPage" xml:space="preserve">
<value>PrevDataPage</value>
</data>
<data name="form.action.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="form.caption.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="label.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="label.company" xml:space="preserve">
<value>Company</value>
</data>
<data name="label.instance" xml:space="preserve">
<value>Instance</value>
</data>
<data name="label.password" xml:space="preserve">
<value>Password</value>
</data>
<data name="label.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="label.type" xml:space="preserve">
<value>Type</value>
</data>
<data name="label.user" xml:space="preserve">
<value>User</value>
</data>
<data name="menu.option.home" xml:space="preserve">
<value>Home</value>
</data>
<data name="menu.option.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="menu.option.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="msg.confirm.logout" xml:space="preserve">
<value>Are you sure that you want to logout?</value>
</data>
<data name="msg.data.noneFound" xml:space="preserve">
<value>No matching data found.</value>
</data>
<data name="msg.data.querying" xml:space="preserve">
<value>Querying data. please wait ...</value>
</data>
<data name="msg.warn.login.credentials.invalid" xml:space="preserve">
<value>Invalid credentials supplied.</value>
</data>
<data name="msg.warn.login.userCode.missing" xml:space="preserve">
<value>User code must be supplied.</value>
</data>
<data name="msg.warn.securityConsole.unavailable" xml:space="preserve">
<value>Failed to retrieve Security Console.</value>
</data>
<data name="msg.warn.session.expired" xml:space="preserve">
<value>Your session has expired.</value>
</data>
<data name="msg.warn.sessionContext.unknown" xml:space="preserve">
<value>Unknown session context.</value>
</data>
<data name="msg.warn.sessionExpired" xml:space="preserve">
<value>Session has expired.</value>
</data>
<data name="page.caption.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="paging.info.items.suffix" xml:space="preserve">
<value>items</value>
</data>
<data name="paging.info.of" xml:space="preserve">
<value>of</value>
</data>
<data name="paging.info.prefix" xml:space="preserve">
<value>Page</value>
</data>
<data name="view.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
</root> </root>
@@ -3,7 +3,7 @@
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 1.3 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
@@ -14,16 +14,17 @@
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object] <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object] <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
@@ -45,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
@@ -58,20 +59,38 @@
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
--> -->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
@@ -90,12 +109,150 @@
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>1.3</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="application.caption" xml:space="preserve">
<value>Sarand LogisticsMgr</value>
</data>
<data name="application.caption1" xml:space="preserve">
<value>Sarand OperationsMgr</value>
</data>
<data name="button.cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="button.close" xml:space="preserve">
<value>Close</value>
</data>
<data name="button.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="button.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="button.nextDataPage" xml:space="preserve">
<value>Next page</value>
</data>
<data name="button.no" xml:space="preserve">
<value>No</value>
</data>
<data name="button.ok" xml:space="preserve">
<value>OK</value>
</data>
<data name="button.prevDataPage" xml:space="preserve">
<value>Prev page</value>
</data>
<data name="button.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="button.yes" xml:space="preserve">
<value>Yes</value>
</data>
<data name="dataList.header.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="dataList.header.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="dataList.header.utility" xml:space="preserve">
<value>Utility</value>
</data>
<data name="dialog.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="form.action.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="form.action.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="form.action.nextDataPage" xml:space="preserve">
<value>NextDataPage</value>
</data>
<data name="form.action.prevDataPage" xml:space="preserve">
<value>PrevDataPage</value>
</data>
<data name="form.action.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="form.caption.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="label.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="label.company" xml:space="preserve">
<value>Company</value>
</data>
<data name="label.instance" xml:space="preserve">
<value>Instance</value>
</data>
<data name="label.password" xml:space="preserve">
<value>Password</value>
</data>
<data name="label.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="label.type" xml:space="preserve">
<value>Type</value>
</data>
<data name="label.user" xml:space="preserve">
<value>User</value>
</data>
<data name="menu.option.home" xml:space="preserve">
<value>Home</value>
</data>
<data name="menu.option.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="menu.option.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="msg.confirm.logout" xml:space="preserve">
<value>Are you sure that you want to logout?</value>
</data>
<data name="msg.data.noneFound" xml:space="preserve">
<value>No matching data found.</value>
</data>
<data name="msg.data.querying" xml:space="preserve">
<value>Querying data. please wait ...</value>
</data>
<data name="msg.warn.login.credentials.invalid" xml:space="preserve">
<value>Invalid credentials supplied.</value>
</data>
<data name="msg.warn.login.userCode.missing" xml:space="preserve">
<value>User code must be supplied.</value>
</data>
<data name="msg.warn.securityConsole.unavailable" xml:space="preserve">
<value>Failed to retrieve Security Console.</value>
</data>
<data name="msg.warn.session.expired" xml:space="preserve">
<value>Your session has expired.</value>
</data>
<data name="msg.warn.sessionContext.unknown" xml:space="preserve">
<value>Unknown session context.</value>
</data>
<data name="msg.warn.sessionExpired" xml:space="preserve">
<value>Session has expired.</value>
</data>
<data name="page.caption.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="paging.info.items.suffix" xml:space="preserve">
<value>items</value>
</data>
<data name="paging.info.of" xml:space="preserve">
<value>of</value>
</data>
<data name="paging.info.prefix" xml:space="preserve">
<value>Page</value>
</data>
<data name="view.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
</root> </root>
@@ -3,7 +3,7 @@
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 1.3 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
@@ -14,16 +14,17 @@
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object] <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object] <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
@@ -45,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
@@ -58,20 +59,38 @@
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
--> -->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
@@ -90,12 +109,147 @@
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>1.3</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="application.caption" xml:space="preserve">
<value>Sarand OperationsMgr</value>
</data>
<data name="button.cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="button.close" xml:space="preserve">
<value>Close</value>
</data>
<data name="button.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="button.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="button.nextDataPage" xml:space="preserve">
<value>Next page</value>
</data>
<data name="button.no" xml:space="preserve">
<value>No</value>
</data>
<data name="button.ok" xml:space="preserve">
<value>OK</value>
</data>
<data name="button.prevDataPage" xml:space="preserve">
<value>Prev page</value>
</data>
<data name="button.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="button.yes" xml:space="preserve">
<value>Yes</value>
</data>
<data name="dataList.header.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="dataList.header.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="dataList.header.utility" xml:space="preserve">
<value>Utility</value>
</data>
<data name="dialog.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="form.action.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="form.action.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="form.action.nextDataPage" xml:space="preserve">
<value>NextDataPage</value>
</data>
<data name="form.action.prevDataPage" xml:space="preserve">
<value>PrevDataPage</value>
</data>
<data name="form.action.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="form.caption.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="label.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="label.company" xml:space="preserve">
<value>Company</value>
</data>
<data name="label.instance" xml:space="preserve">
<value>Instance</value>
</data>
<data name="label.password" xml:space="preserve">
<value>Password</value>
</data>
<data name="label.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="label.type" xml:space="preserve">
<value>Type</value>
</data>
<data name="label.user" xml:space="preserve">
<value>User</value>
</data>
<data name="menu.option.home" xml:space="preserve">
<value>Home</value>
</data>
<data name="menu.option.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="menu.option.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="msg.confirm.logout" xml:space="preserve">
<value>Are you sure that you want to logout?</value>
</data>
<data name="msg.data.noneFound" xml:space="preserve">
<value>No matching data found.</value>
</data>
<data name="msg.data.querying" xml:space="preserve">
<value>Querying data. please wait ...</value>
</data>
<data name="msg.warn.login.credentials.invalid" xml:space="preserve">
<value>Invalid credentials supplied.</value>
</data>
<data name="msg.warn.login.userCode.missing" xml:space="preserve">
<value>User code must be supplied.</value>
</data>
<data name="msg.warn.securityConsole.unavailable" xml:space="preserve">
<value>Failed to retrieve Security Console.</value>
</data>
<data name="msg.warn.session.expired" xml:space="preserve">
<value>Your session has expired.</value>
</data>
<data name="msg.warn.sessionContext.unknown" xml:space="preserve">
<value>Unknown session context.</value>
</data>
<data name="msg.warn.sessionExpired" xml:space="preserve">
<value>Session has expired.</value>
</data>
<data name="page.caption.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="paging.info.items.suffix" xml:space="preserve">
<value>items</value>
</data>
<data name="paging.info.of" xml:space="preserve">
<value>of</value>
</data>
<data name="paging.info.prefix" xml:space="preserve">
<value>Page</value>
</data>
<data name="view.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
</root> </root>
@@ -3,7 +3,7 @@
<!-- <!--
Microsoft ResX Schema Microsoft ResX Schema
Version 1.3 Version 2.0
The primary goals of this format is to allow a simple XML format The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the that is mostly human readable. The generation and parsing of the
@@ -14,16 +14,17 @@
... ado.net/XML headers & schema ... ... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">1.3</resheader> <resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1">this is my long string</data> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
[base64 mime encoded serialized .NET Framework object] <value>[base64 mime encoded serialized .NET Framework object]</value>
</data> </data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
[base64 mime encoded string representing a byte array form of the .NET Framework object] <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data> </data>
There are any number of "resheader" rows that contain simple There are any number of "resheader" rows that contain simple
@@ -45,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64 mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64 mimetype: application/x-microsoft.net.object.soap.base64
@@ -58,20 +59,38 @@
: using a System.ComponentModel.TypeConverter : using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding. : and then encoded with base64 encoding.
--> -->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType> <xsd:complexType>
<xsd:choice maxOccurs="unbounded"> <xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data"> <xsd:element name="data">
<xsd:complexType> <xsd:complexType>
<xsd:sequence> <xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence> </xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType> </xsd:complexType>
</xsd:element> </xsd:element>
<xsd:element name="resheader"> <xsd:element name="resheader">
@@ -90,12 +109,147 @@
<value>text/microsoft-resx</value> <value>text/microsoft-resx</value>
</resheader> </resheader>
<resheader name="version"> <resheader name="version">
<value>1.3</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="application.caption" xml:space="preserve">
<value>Sarand OperationsMgr</value>
</data>
<data name="button.cancel" xml:space="preserve">
<value>Cancel</value>
</data>
<data name="button.close" xml:space="preserve">
<value>Close</value>
</data>
<data name="button.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="button.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="button.nextDataPage" xml:space="preserve">
<value>Next page</value>
</data>
<data name="button.no" xml:space="preserve">
<value>No</value>
</data>
<data name="button.ok" xml:space="preserve">
<value>OK</value>
</data>
<data name="button.prevDataPage" xml:space="preserve">
<value>Prev page</value>
</data>
<data name="button.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="button.yes" xml:space="preserve">
<value>Yes</value>
</data>
<data name="dataList.header.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="dataList.header.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="dataList.header.utility" xml:space="preserve">
<value>Utility</value>
</data>
<data name="dialog.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="form.action.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="form.action.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="form.action.nextDataPage" xml:space="preserve">
<value>NextDataPage</value>
</data>
<data name="form.action.prevDataPage" xml:space="preserve">
<value>PrevDataPage</value>
</data>
<data name="form.action.refresh" xml:space="preserve">
<value>Refresh</value>
</data>
<data name="form.caption.login" xml:space="preserve">
<value>Login</value>
</data>
<data name="label.code" xml:space="preserve">
<value>Code</value>
</data>
<data name="label.company" xml:space="preserve">
<value>Company</value>
</data>
<data name="label.instance" xml:space="preserve">
<value>Instance</value>
</data>
<data name="label.password" xml:space="preserve">
<value>Password</value>
</data>
<data name="label.status" xml:space="preserve">
<value>Status</value>
</data>
<data name="label.type" xml:space="preserve">
<value>Type</value>
</data>
<data name="label.user" xml:space="preserve">
<value>User</value>
</data>
<data name="menu.option.home" xml:space="preserve">
<value>Home</value>
</data>
<data name="menu.option.logout" xml:space="preserve">
<value>Logout</value>
</data>
<data name="menu.option.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="msg.confirm.logout" xml:space="preserve">
<value>Are you sure that you want to logout?</value>
</data>
<data name="msg.data.noneFound" xml:space="preserve">
<value>No matching data found.</value>
</data>
<data name="msg.data.querying" xml:space="preserve">
<value>Querying data. please wait ...</value>
</data>
<data name="msg.warn.login.credentials.invalid" xml:space="preserve">
<value>Invalid credentials supplied.</value>
</data>
<data name="msg.warn.login.userCode.missing" xml:space="preserve">
<value>User code must be supplied.</value>
</data>
<data name="msg.warn.securityConsole.unavailable" xml:space="preserve">
<value>Failed to retrieve Security Console.</value>
</data>
<data name="msg.warn.session.expired" xml:space="preserve">
<value>Your session has expired.</value>
</data>
<data name="msg.warn.sessionContext.unknown" xml:space="preserve">
<value>Unknown session context.</value>
</data>
<data name="msg.warn.sessionExpired" xml:space="preserve">
<value>Session has expired.</value>
</data>
<data name="page.caption.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
<data name="paging.info.items.suffix" xml:space="preserve">
<value>items</value>
</data>
<data name="paging.info.of" xml:space="preserve">
<value>of</value>
</data>
<data name="paging.info.prefix" xml:space="preserve">
<value>Page</value>
</data>
<data name="view.title.utilities.utilities" xml:space="preserve">
<value>Utilities</value>
</data>
</root> </root>
@@ -35,4 +35,9 @@
<Folder Include="wwwroot\css\images\" /> <Folder Include="wwwroot\css\images\" />
<Folder Include="wwwroot\img\icon\" /> <Folder Include="wwwroot\img\icon\" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Localisation\OpnProperties.resx">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>
</Project> </Project>
@@ -0,0 +1,12 @@
@model Sarand.OperationsMgr.Web.Models.Model_Base
@inject Sarand.OperationsMgr.Web.App.OpnLocaliser Localiser
<div id="dlgOpnLogout" class="dialog" title="Logout">
<form id="frmOpnLogout" action="/Home" method="post">
@Html.Hidden("SessionIdx", null, new { @id = "" })
@Html.Hidden("FormAction", @Localiser["form.action.logout"], new { @id = "" })
</form>
<div class="spacer4"></div>
<div>@Localiser["msg.confirm.logout"]</div>
<div class="spacer4"></div>
</div>
@@ -0,0 +1,33 @@
@model Sarand.OperationsMgr.Web.Models.Model_Base
@if (Model.HasMessages)
{
<div class="opn-msg">
@if (Model.ErrorMessages.Count > 0)
{
<div class="err">
@foreach (var message in Model.ErrorMessages)
{
<div class="msg">@message</div>
}
</div>
}
@if (Model.WarningMessages.Count > 0)
{
<div class="wrn">
@foreach (var message in Model.WarningMessages)
{
<div class="msg">@message</div>
}
</div>
}
@if (Model.InfoMessages.Count > 0)
{
<div class="inf">
@foreach (var message in Model.InfoMessages)
{
<div class="msg">@message</div>
}
</div>
}
</div>
}
+102 -42
View File
@@ -1,23 +1,86 @@
@using Sarand.Core.App
@model Sarand.OperationsMgr.Web.Models.Model_Base
@inject Sarand.OperationsMgr.Web.App.OpnLocaliser Localiser
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no" />
<title>@ViewData["Title"] - SaOperationsMgrWeb</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" />@* IE11 incompatibility eg. 'border-radius' not recognised. Must be at top of head *@
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="application/javascript" />
<meta name="Author" content="Sarand" />
<title>@ViewData["Title"] - Sarand OperationsMgr</title>
<environment include="Development"> @* Stylesheets *@
<environment names="Development">
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" /> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
<link rel="stylesheet" href="~/css/site.css" /> <link rel="stylesheet" href="~/css/jquery-ui.css" asp-append-version="true" />
</environment> </environment>
<environment exclude="Development"> <environment names="Staging,Production">
<link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css" <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css"
asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css" asp-fallback-href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/css/bootstrap.min.css"
asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" /> asp-fallback-test-class="sr-only"
<link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" /> asp-fallback-test-property="position"
asp-fallback-test-value="absolute" />
<link rel="stylesheet" href="~/css/jquery-ui.min.css" asp-append-version="false" />
</environment> </environment>
<link rel="stylesheet" href="~/css/opn-core.css?@Model.HrefVersion" />
@foreach (var cssFile in Model.AdditionalFiles_CSS)
{
<link rel="stylesheet" href="~/@cssFile?@Model.HrefVersion" />
}
@* Scripts *@
<script>
var opn = opn || {};
opn.urlHome = '@Model.RedirectLocation.Home';
opn.urlHomeExp = '@Model.RedirectLocation.Home_SessionExpired';
opn.dlgBtnYes = '@Localiser["button.yes"]';
opn.dlgBtnNo = '@Localiser["button.no"]';
opn.dlgBtnOk = '@Localiser["button.ok"]';
opn.dlgBtnClose = '@Localiser["button.close"]';
opn.dlgBtnCancel = '@Localiser["button.cancel"]';
opn.dlgBtnLogout = '@Localiser["button.logout"]';
opn.msgDataQuerying = '@Localiser.GetJavascriptText("msg.data.querying")';
opn.msgDataNoneFound = '@Localiser.GetJavascriptText("msg.data.noneFound")';
</script>
<environment names="Development">
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="~/js/jquery-ui.js" asp-append-version="true"></script>
</environment>
<environment names="Staging,Production">
<script src="~/lib/jquery/dist/jquery.min.js"
asp-fallback-src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js"
asp-fallback-test="window.jQuery">
</script>
<script src="~/lib/bootstrap/dist/js/bootstrap.min.js"
asp-fallback-src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.6/bootstrap.min.js"
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal">
</script>
<script src="~/js/jquery-ui.min.js" asp-append-version="false"></script>
</environment>
@* @RenderSection("scripts", required: false) *@
<script src="~/js/opn-core.js?@Model.HrefVersion" asp-append-version="false"></script>
@foreach (var jsFile in Model.AdditionalFiles_JS)
{
<script src="~/@jsFile?@Model.HrefVersion" asp-append-version="false"></script>
}
@if (SacsSystem.DebugMode)
{
@Html.ApplicationInsightsJavaScript(TelemetryConfiguration)
}
</head> </head>
<body> <body>
<nav class="navbar navbar-inverse navbar-fixed-top">
@* --- H e a d e r --- *@
<div id="opn-header" class="navbar navbar-inverse navbar-fixed-top">
<div class="container"> <div class="container">
<div class="navbar-header"> <div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
@@ -26,46 +89,43 @@
<span class="icon-bar"></span> <span class="icon-bar"></span>
<span class="icon-bar"></span> <span class="icon-bar"></span>
</button> </button>
<a asp-page="/Index" class="navbar-brand">SaOperationsMgrWeb</a> <a asp-area="" asp-controller="Home" asp-action="Index" class="navbar-brand">@Localiser["application.caption"]</a>
</div> </div>
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li><a asp-page="/Index">Home</a></li> <li><a asp-area="" asp-controller="Home" asp-action="Index">@Localiser["menu.option.home"]</a></li>
<li><a asp-page="/About">About</a></li> @if (!Model.AwaitingLogin)
<li><a asp-page="/Contact">Contact</a></li> {
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">@Localiser["menu.option.utilities"] <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a asp-area="" asp-controller="Utilities" asp-action="Utilities">@Localiser["menu.option.utilities.utilities"]</a></li>
</ul>
</li>
<li><a onclick="opn.doLogout()">@Localiser["menu.option.logout"]</a></li>
}
</ul> </ul>
</div> </div>
</div> </div>
</nav> <div class="clearb"></div>
<div class="container body-content">
@RenderBody()
<hr />
<footer>
<p>&copy; 2017 - SaOperationsMgrWeb</p>
</footer>
</div> </div>
<environment include="Development"> @* --- B o d y --- *@
<script src="~/lib/jquery/dist/jquery.js"></script> <div id="opn-body" class="container body-content">
<script src="~/lib/bootstrap/dist/js/bootstrap.js"></script> @if (Model.ShowMessagesAtTopOfBody)
<script src="~/js/site.js" asp-append-version="true"></script> {
</environment> @await Html.PartialAsync("OpnMessages")
<environment exclude="Development"> }
<script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-2.2.0.min.js" @RenderBody()
asp-fallback-src="~/lib/jquery/dist/jquery.min.js" @await Html.PartialAsync("OpnLogout")
asp-fallback-test="window.jQuery" </div>
crossorigin="anonymous"
integrity="sha384-K+ctZQ+LL8q6tP7I94W+qzQsfRV2a+AfHIi9k8z8l9ggpc8X+Ytst4yBo/hH+8Fk"> @* --- F o o t e r --- *@
</script> <footer id="opn-footer">
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js" <div>@ViewData["CopyrightNotice"]</div>
asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js" </footer>
asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal" <script src="~/js/bootstrap-Toolkit.js"></script>
crossorigin="anonymous" <div id='opn-please-wait'></div>
integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa">
</script>
<script src="~/js/site.min.js" asp-append-version="true"></script>
</environment>
@RenderSection("Scripts", required: false)
</body> </body>
</html> </html>
@@ -0,0 +1,9 @@
@model Sarand.OperationsMgr.Web.Models.Model_Utilities_Base
@inject Sarand.OperationsMgr.Web.App.OpnLocaliser Localiser
@{
ViewData["Title"] = Localiser["view.title.utilities"];
}
<div id="opn-panel-utilities">
</div>
@@ -1,12 +1,14 @@
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Sarand.Core.Base; using Sarand.Core.Base;
using Sarand.Core.IO;
using Sarand.OperationsMgr.Core.App; using Sarand.OperationsMgr.Core.App;
using Sarand.OperationsMgr.Web.Consoles; using Sarand.OperationsMgr.Web.Consoles;
using Sarand.OperationsMgr.Win.Dbas.App; using Sarand.OperationsMgr.Win.Dbas.App;
using Sarand.Win.Dbas.Base; using Sarand.Win.Dbas.Base;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -43,6 +45,49 @@ namespace Sarand.OperationsMgr.Web.App
public SaOperationsMgrWebApp (IHostingEnvironment env, IConfigurationSection instanceConfig, String initialLogMessage) public SaOperationsMgrWebApp (IHostingEnvironment env, IConfigurationSection instanceConfig, String initialLogMessage)
{ {
app = this; app = this;
OpnSystem_WinDbas.InitStatics();
ContentRootPath = env.ContentRootPath;
IsDevelopment = env.IsDevelopment();
// Locate IIS logs folder.
String logsFolder = null;
String folder = env.ContentRootPath;
DirectoryInfo info = null;
while (logsFolder == null && (info = Directory.GetParent(folder)) != null)
{
folder = info.FullName;
logsFolder = folder + Path.DirectorySeparatorChar + "logs" + Path.DirectorySeparatorChar + "LogFiles";
if (!Directory.Exists(logsFolder))
logsFolder = null;
}
// Configure root logging folder.
if (logsFolder != null)
{
logsFolder = logsFolder + Path.DirectorySeparatorChar + "SaOperationsMgr";
if (FileUtil.ValidateDirectory(logsFolder, true))
LoggingRootFolder = logsFolder;
}
// Initialise properties.
properties = new PropertySet();
// ToDo Web app - Logging properties - by user session?
properties.AddProperty("Logging", "Folder", LoggingRootFolder);
properties.AddProperty("Logging", "Level", "Info");
properties.AddProperty("Logging", "ExtendedLogging", "");
// Configure logging.
Logger.LogFilenamePrefix = "SLM-Web";
Logger.LogFolder = properties.GetPropertyValue("Logging", "Folder");
#if DEBUG
Logger.ConsoleLevel = SaMessageLevel.Trace;
#endif
Logger.LogFileLevel = EnumUtil.StartsWith(properties.GetPropertyValue("Logging", "Level"), SaMessageLevel.Info);
Logger.Info(initialLogMessage, true);
Logger.Info("Logging level: " + Logger.LogFileLevel);
// Initialise global objects.
InitGlobals(instanceConfig);
} }
public void Dispose () public void Dispose ()
{ {
@@ -0,0 +1,65 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Sarand.Core.Base;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Sarand.OperationsMgr.Web.Controllers
{
//=======================================================================
// U t i l i t i e s C o n t r o l l e r
//-----------------------------------------------------------------------
// A s s e t s
//=======================================================================
partial class UtilitiesController
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Action - Utilities.
public IActionResult Utilities (Models.Model_Utilities_Utilities model)
{
Logger.Debug(GetType().Name + ".Utilities");
if (!ValidSession)
return new RedirectResult(GetRedirectLocation(RedirectLocation.Home_SessionExpired), false);
ViewData["Title"] = Localiser["view.title.assets.assets"];
//ViewData["Message"] = "Containers";
return View(model);
}
//-------------------------------------------------------------------
// A j a x - R e s p o n s e D a t a
//-------------------------------------------------------------------
/// <summary>Summary Utility information</summary>
public class UtilityInfo
{
}
/// <summary>Detailed Utility data</summary>
public class UtilityData : UtilityInfo
{
}
//-------------------------------------------------------------------
// A j a x - A s s e t L i s t
//-------------------------------------------------------------------
public class AjaxResponse_UtilityList : AjaxResponse
{
public List<UtilityData> Utilities { get; set; } = new List<UtilityData>();
}
// Ajax request.
[HttpGet, HttpPost]
public IActionResult GetUtilityList (Models.Model_Utilities_Utilities model)
{
throw new NotImplementedException();
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,41 @@
using Microsoft.AspNetCore.Mvc;
using Sarand.Core.Base;
using Sarand.OperationsMgr.Core.App;
using Sarand.OperationsMgr.Web.App;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Sarand.OperationsMgr.Web.Controllers
{
//=======================================================================
// U t i l i t i e s C o n t r o l l e r
//=======================================================================
public partial class UtilitiesController : Controller_Base
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
public UtilitiesController (OpnLocaliser localiser) : base(localiser)
{
}
//-------------------------------------------------------------------
// Properties.
//-------------------------------------------------------------------
// Utilities.
//-------------------------------------------------------------------
public IActionResult Error ()
{
return View();
}
//-------------------------------------------------------------------
}
//=======================================================================
}
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Sarand.OperationsMgr.Web.Models
{
public class Model_Utilities_Base : Model_Base
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
protected Model_Utilities_Base ()
{
// Data paging.
DataPageNo = 1;
DataPageLength = 20;
DataItemCount = 0;
DataItemTotal = 0;
}
//-------------------------------------------------------------------
// Filter properties.
//-------------------------------------------------------------------
// Form properties.
}
}
@@ -0,0 +1,30 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Sarand.OperationsMgr.Web.Models
{
public class Model_Utilities_Utilities : Model_Utilities_Base
{
//-------------------------------------------------------------------
// Data members.
//-------------------------------------------------------------------
// Construction.
public Model_Utilities_Utilities ()
{
// Additional includes.
AdditionalFiles_CSS.Add("css/slm-assets-assets.css");
AdditionalFiles_JS.Add("js/slm-assets-assets.js");
}
//-------------------------------------------------------------------
// Filter properties.
//-------------------------------------------------------------------
// Form properties.
//-------------------------------------------------------------------
}
}
@@ -1,4 +1,13 @@
{ {
"SessionContexts": {
"TestInstance": {
"Instance": "TEST",
"Caption": "Test Instance",
"StockDatabase": {
"Location": "MsSQL:Sarand109\\Sql2014.SaBusinessMgr_Cadix"
}
}
},
"Logging": { "Logging": {
"IncludeScopes": false, "IncludeScopes": false,
"LogLevel": { "LogLevel": {
@@ -1,4 +1,13 @@
{ {
"SessionContexts": {
"TestInstance": {
"Instance": "TEST",
"Caption": "Test Instance",
"StockDatabase": {
"Location": "MsSQL:Sarand109\\SQL2012EXPRESS.SaBusinessMgr_Cadix"
}
}
},
"Logging": { "Logging": {
"IncludeScopes": false, "IncludeScopes": false,
"LogLevel": { "LogLevel": {
File diff suppressed because it is too large Load Diff
+579
View File
@@ -0,0 +1,579 @@
/*
Application: Sarand OperationsMgr
Stylesheet: Core
*/
@charset "UTF-8";
@media print {
* {
color: #000000 !important;
background-color: #FFFFFF !important;
}
}
body {
min-width: 320px;
max-width: 1600px;
margin: auto;
padding: 0px;
font-family: Verdana,Arial,Tahoma,"Sans-Serif";
font-size: 16px;
line-height: 1.42857em;
text-indent: 0px;
color: #0a0a0a;
background-color: #ffffe5;
page: rotated;
border-width: 0px;
}
div {
font-family: inherit;
font-size: inherit;
}
button, input, textarea, select, option {
font-family: inherit;
font-size: 1em;
}
input, textarea, select {
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
/* --- Standard tags --- */
h1, h2, h3 {
color: #0000B0;
}
h1 {
font-size: 14px;
font-weight: bold;
margin: 6px 0px 6px 0px;
padding: 0px;
}
h2 {
font-size: 12px;
font-weight: bold;
margin: 3px 0px 6px 0px;
padding: 0px;
}
h3 {
font-size: 11px;
font-weight: bold;
margin: 3px 0px 6px 0px;
padding: 0px;
}
p {
margin: 3px 0px 6px 0px;
}
hr {
height: 4px;
width: 90%;
text-align: center;
color: #000000;
margin: 4px auto;
}
a {
font-size: 1em;
}
img {
border-style: none;
}
ul {
margin-top: 3px;
margin-bottom: 6px;
}
table {
margin-top: 0px;
empty-cells: inherit;
}
td {
vertical-align: top;
padding: 0px;
}
div, form {
margin: 0px;
padding: 0px;
}
label {
margin: 0px;
}
input {
margin: 0px;
padding: 0px 2px 1px 2px;
}
textarea {
resize: none;
}
.bold, b {
font-weight: bold !important;
}
.ul, u {
text-decoration: underline !important;
}
.italic, i {
font-style: italic !important;
}
.upper {
text-transform: uppercase !important;
}
.lower {
text-transform: lowercase !important;
}
.center {
text-align: center !important;
}
.right {
text-align: right !important;
}
.middle {
vertical-align: middle !important;
}
.bottom {
vertical-align: bottom !important;
}
.pointer {
cursor: pointer;
}
.fullwidth {
width: 100%;
}
.floatl, .floatleft {
float: left;
}
.floatr, .floatright {
float: right;
}
.clearl, .clearleft {
clear: left;
}
.clearr, .clearright {
clear: right;
}
.clearb, .clearboth {
clear: both;
margin: 0px;
padding: 0px;
width: 0px;
height: 0px;
line-height: 0.0em;
font-size: 0px;
}
.clear-after:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.nowrap {
white-space: nowrap !important;
}
.spacer {
height: 4px;
font-size: 2px;
}
.spacer2 {
height: 8px;
font-size: 2px;
}
.spacer4 {
height: 16px;
font-size: 2px;
}
.pl4 {
padding-left: 4px;
}
.pl8 {
padding-left: 8px;
}
.lastTabSeq {
z-index: 99;
}
.hidden {
visibility: hidden;
}
.shadow {
-moz-box-shadow: 2px 2px 3px #ccc;
-webkit-box-shadow: 2px 2px 3px #ccc;
box-shadow: 2px 2px 3px #ccc; /* For IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=3,Direction=135,Color='#cccccc')"; /* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3,Direction=135,Color='#cccccc');
}
/* --- Application --- */
body {
padding-top: 50px !important;
padding-bottom: 0 !important; /* 20px */
}
/* Wrapping element */
/* Set some basic padding to keep content from hitting the edges */
.body-content {
padding-left: 15px;
padding-right: 15px;
}
/* Set widths on the form inputs since otherwise they're 100% wide */
input, select, textarea {
max-width: 280px;
}
/* Carousel */
.carousel-caption p {
font-size: 20px;
line-height: 1.4;
}
/* Make .svg files in the carousel display properly in older browsers */
.carousel-inner .item img[src$=".svg"] {
width: 100%;
}
/* Hide/rearrange for smaller screens */
@media screen and (max-width:767px) {
/* Hide captions */
.carousel-caption {
display: none;
}
}
/* --- Bootstrap --- */
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a,
.mob .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
color: #e0e0e0;
font-weight: bold;
}
.dropdown-menu {
font-size: 1em;
}
/* --- Tooltip --- */
.tooltip {
position: fixed
}
.tooltip.in {
opacity: 1;
}
.tooltip.top {
margin-top: -0px;
}
.tooltip.top .tooltip-arrow {
border-top-color: #808080;
}
.tooltip .tooltip-inner {
min-width: 320px;
max-width: 320px;
color: #404040;
background-color: #FFFFFF;
text-align: left;
border: 1px solid #808080;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
-moz-box-shadow: 4px 4px 3px #aaa;
-webkit-box-shadow: 4px 4px 3px #aaa;
box-shadow: 4px 4px 3px #aaa; /* For IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=3,Direction=135,Color='#aaaaaa')"; /* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=3,Direction=135,Color='#aaaaaa');
}
.tooltip .tooltip-inner .tooltip-caption {
margin-bottom: 4px;
font-weight: bold;
border-bottom: 1px solid #808080;
}
.tooltip .tooltip-inner .label {
padding-right: 6px;
color: #808080;
}
/* --- Application Messages --- */
.opn-msg {
margin: 4px 0;
}
.opn-msg .err, .opn-msg .wrn, .opn-msg .inf {
margin: 2px 0;
padding: 4px 16px 4px 32px;
background-color: #fefefe;
border-radius: 4px;
}
.opn-msg .err {
color: red;
border: 1px solid red;
}
.opn-msg .wrn {
color: #ff6000;
border: 1px solid darkorange;
}
.opn-msg .inf {
color: darkgreen;
border: 1px solid green;
}
/* --- Notification --- */
#opn-notification {
display: none;
position: fixed;
bottom: 0;
right: 0;
min-width: 180px;
margin-right: 12px;
z-index: 1000;
border: 1px solid #808080;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
overflow: hidden;
}
#opn-notification .content {
background-color: #fbfbfb;
}
#opn-notification .heading {
background-color: #f0f0f0;
font-weight: bold;
border-bottom: 1px solid #808080;
}
#opn-notification .heading:after {
content: "";
display: table;
clear: both;
}
#opn-notification .title {
float: left;
padding: 4px 8px;
white-space: nowrap;
}
#opn-notification .close {
float: right;
padding: 4px;
font-weight: bold;
cursor: pointer;
}
#opn-notification .message {
clear: both;
padding: 8px;
}
/* --- Modal Please wait --- */
#opn-please-wait {
display: none;
cursor: progress;
position: fixed;
z-index: 1000;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: rgba(255,255,255,.0) url('../img/icon/opn-please-wait.gif') 50% 50% no-repeat;
}
/* --- Dialogs --- */
div.dialog {
display: none;
}
/* --- Forms --- */
.opn-form {
margin: 12px auto 6px auto;
background-color: #f8f8f8;
border: 1px solid #808080;
border-radius: 4px;
-moz-box-shadow: 4px 4px 6px #ccc;
-webkit-box-shadow: 4px 4px 6px #ccc;
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=6,Direction=135,Color='#cccccc');
}
.opn-form.login {
width: 440px;
}
.opn-form .caption {
padding: 4px 0;
text-align: center;
font-weight: bold;
color: #fff;
background-color: #404040;
border-bottom: 1px solid #808080;
}
.opn-form .body {
padding: 12px;
}
/* --- Controls --- */
.ui-datepicker-trigger {
margin-left: 4px;
cursor: pointer;
}
/* --- Page Layout --- */
#opn-header.navbar-inverse {
background-color: #404040;
}
#opn-body {
padding: 2px 0;
overflow-y: auto;
}
#opn-footer {
padding: 0 4px;
font-size: 10px;
color: #e0e0e0;
background-color: #404040;
border-top: solid 1px #b0b0b0;
visibility: hidden;
}
/* --- Panels --- */
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
padding: 0px;
}
/* --- Filter Panel --- */
.opn-panel-filter {
padding: 4px 4px;
/*border:1px solid blue;*/
}
.opn-panel-filter .opn-filter-header {
margin-bottom: 4px;
padding: 2px 8px;
text-align: center;
background-color: aliceblue;
border: 1px solid #808080;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
.opn-panel-filter .opn-label {
padding: 0 8px 0 0;
text-align: right;
}
.opn-panel-filter .opn-value {
}
.opn-panel-filter input[type="text"],
.opn-panel-filter select {
width: 96%;
}
.opn-panel-filter .opn-filter-paging {
display: none;
}
/* --- Data Panel --- */
.opn-panel-data {
padding: 4px 4px;
/*border:1px solid purple;*/
}
.opn-panel-data .opn-data-header {
margin-bottom: 4px;
background-color: aliceblue;
border: 1px solid #808080;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
border-radius: 4px;
}
.opn-panel-data .opn-data-header .opn-column-header {
padding: 2px 8px;
}
.opn-panel-data .opn-data-msg {
padding: 4px;
background-color: lightgoldenrodyellow;
border: 1px solid #808080;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius: 8px;
}
.opn-panel-data .opn-data-content {
overflow-y: auto;
}
.opn-panel-data .opn-data-item {
}
.opn-panel-data .opn-data-item {
margin-bottom: 4px;
padding: 6px 4px;
background-color: #fff;
border: 1px solid #808080;
-moz-border-radius: 8px;
-webkit-border-radius: 8px;
border-radius: 8px;
}
.opn-panel-data .opn-data-item:hover {
background-color: #e0ffe0;
}
.opn-data-template {
display: none;
}
/* --- The End --- */
+340
View File
@@ -0,0 +1,340 @@
/*
Application: Sarand OperationsMgr
Javascript: Core
Notes: From a sarand.com original.
*/
//-------------------------------------------------------------
// Data members.
var opn = opn || {};
//-------------------------------------------------------------
// Utility functions.
opn.checkTextAreaMaxLength = function (ctrl, len) {
if (ctrl == null || ctrl.value == null) return;
if (ctrl.value.length > len) ctrl.value = ctrl.value.substring(0, len);
};
opn.isDef = function (obj) {
return obj === null || typeof obj == "undefined" ? false : true;
};
opn.isFn = function (fn) {
return fn != null && typeof fn == typeof Function;
};
opn.isNumeric = function (n) {
return !isNaN(parseFloat(n)) && isFinite(n);
};
opn.zeroPad = function (num, count) {
var val = num + '';
while (val.length < count) val = "0" + val;
return val;
};
opn.setOddDataRowClass = function (rowSel) {
$(rowSel).addClass(function (index, currentClasses) {
return index % 2 == 1 ? "other" : "";
});
};
opn.toInt = function (value, defaultValue) {
return opn.isNumeric(value) ? parseInt(value, 10) : defaultValue || 0;
}
//-------------------------------------------------------------
// Security.
opn.redirectHome = function () {
opn.doPleaseWait();
document.location = opn.urlHome;
}
opn.redirectHomeExp = function () {
opn.doPleaseWait();
document.location = opn.urlHomeExp;
}
opn.doLogout = function () {
var $dlg = $('#dlgOpnLogout');
if (!$dlg.hasClass('ui-dialog-content')) {
var optLogout = opn.dlgOpts();
optLogout.buttons[opn.dlgBtnLogout] = function () { $(this).dialog('close'); opn.onLogout(); };
optLogout.buttons[opn.dlgBtnCancel] = function () { $(this).dialog('close'); };
$dlg.dialog(optLogout);
}
$dlg.dialog('open');
};
opn.onLogout = function () {
opn.doPleaseWait();
$('form#frmOpnLogout').submit();
};
//-------------------------------------------------------------
// Data paging.
opn.doPrevDataPage = function (frm) {
var $frm = $(frm);
var $pageNo = $('#ifDataPageNo', $frm);
$pageNo.val(Math.max(1, opn.toInt($pageNo.val()) - 1));
opn.refreshItemList();
};
opn.doNextDataPage = function (frm) {
var $frm = $(frm);
var $pageNo = $('#ifDataPageNo', $frm);
$pageNo.val(opn.toInt($pageNo.val()) + 1);
opn.refreshItemList();
};
opn.refreshPaging = function (paging, $paging) {
if (!paging) {
$paging.hide().Hide();
return;
}
$('#ifDataPageNo', $paging).val(paging ? paging.pageNo : '');
$('.PageNo', $paging).text(paging ? paging.pageNo : '');
$('#DataPageCount', $paging).val(paging ? paging.pageCount : '');
$('.PageCount', $paging).text(paging ? paging.pageCount : '');
$('#DataItemCount', $paging).val(paging ? paging.itemCount : '');
$('#DataItemTotal', $paging).val(paging ? paging.itemTotal : '');
$('.ItemTotal', $paging).text(paging ? paging.itemTotal : '');
if (paging.paged) $paging.show(); else $paging.hide();
}
//-------------------------------------------------------------
// Dialogs.
opn.openDialog = function ($dlg, width) {
$dlg.dialog({ minWidth: null, maxWidth: null, width: Math.min(width || 400, $(window).width() * .90) }).dialog('open');
return $dlg;
};
opn.dlgOpts = function () {
return { autoOpen: false, modal: true, show: 'clip', hide: 'clip', minWidth: 320, maxWidth: 480, width: 'auto', resizable: false, draggable: false, closeOnEscape: false, dialogClass: "no-close center-buttons", buttons: {} };
};
opn.dlgOptsClose = function () {
var opts = opn.dlgOpts();
opts.buttons[opn.dlgBtnClose] = function () { $(this).dialog('close'); };
return opts;
};
opn.doAlert = function (title, msg, onOk) {
if (!msg) {
msg = title;
title = null;
}
if (!opn.isDef(opn.$dlgAlert)) {
var opt = opn.dlgOpts();
opt.title = title || opn.dlgTitleAlert;
opt.buttons[opn.dlgBtnOk] = function () { $(this).dialog('close'); if (onOk) onOk(); };
opn.$dlgAlert = $('<div id="dlgAlert"><div id="dlgAlertMsg"></div></div>').dialog(opt);
}
$('#dlgAlertMsg').html(msg);
opn.openDialog(opn.$dlgAlert);
};
opn.doConfirm = function (msg, onOk, onCancel) {
if (!opn.isDef(opn.$dlgConfirm)) {
var opt = opn.dlgOpts();
opt.title = opn.dlgTitleConfirm;
opn.$dlgConfirm = $('<div id="dlgConfirm"><div class="spacer2"></div><div id="dlgConfirmMsg"></div></div>').dialog(opt);
}
var buttons = opn.$dlgConfirm.dialog('option', 'buttons');
buttons[opn.dlgBtnYes] = function () { $(this).dialog('close'); if (onOk) onOk(); };
buttons[opn.dlgBtnNo] = function () { $(this).dialog('close'); if (onCancel) onCancel(); };
opn.$dlgConfirm.dialog('option', 'buttons', buttons);
$('#dlgConfirmMsg').html(msg);
opn.openDialog(opn.$dlgConfirm);
};
opn.doProgress = function (msg, delay) {
clearTimeout(opn.toShowProgress);
if (!opn.isDef(opn.$dlgProgress)) {
var opt = opn.dlgOpts();
opt.title = opn.dlgTitleProgress;
opt.show = { effect: 'fade', duration: 100 };
opt.hide = { effect: 'fade', duration: 100 };
opn.$dlgProgress = $('<div id="dlgProgress"><div id="dlgProgressMsg"></div></div>').dialog(opt);
}
$('#dlgProgressMsg').html(msg);
if (delay > 0) opn.toShowProgress = setTimeout(function () { opn.$dlgProgress.dialog('open'); }, delay);
else opn.$dlgProgress.dialog('open');
};
opn.hideProgress = function () {
clearTimeout(opn.toShowProgress);
opn.$dlgProgress.dialog('close');
};
//-------------------------------------------------------------
// Notifications.
opn.showNotification = function (title, msg) {
window.clearTimeout(opn.toNotification);
var $win = $(window);
var $not = $('#opn-notification').hide();
if (!$not.length) {
$not = $('<div id="opn-notification"><div class="content"><div class="heading"><div class="close" onclick="opn.hideNotification()">&#10006;</div><div class="title"></div></div><div class="message"></div></div></div>');
$('body').append($not);
}
var $hdr = $('.heading', $not).css({ 'background-color': 'rgba(247,217,0,0.7)' });
$('.title', $not).html(title);
$('.message', $not).html(msg);
var fbr = $('#opn-footer')[0].getBoundingClientRect();
var fn = function () { $hdr.delay(2000).animate({ backgroundColor: '#f0f0f0' }, 1000); };
$not.css({ 'bottom': $win.height() - fbr.top, 'right': $win.width() - fbr.right }).slideDown(500, fn);
opn.toNotification = setTimeout(opn.hideNotification, 6000);
};
opn.hideNotification = function () {
window.clearTimeout(opn.toNotification);
$('#opn-notification').slideUp(500);
};
opn.doPleaseWait = function () {
$('#opn-please-wait').show();
};
opn.hidePleaseWait = function () {
$('#opn-please-wait').hide();
};
//-------------------------------------------------------------
// Ajax.
opn.doAjaxRequest = function (ajax, url, formId, callback, delay) {
window.clearTimeout(ajax.timeout);
if (url) ajax.url = url;
if (formId) ajax.formId = formId;
if (callback) ajax.callback = callback;
if (!ajax.noWaitIcon) opn.doPleaseWait();
ajax.timeout = setTimeout(function () { opn.execAjaxRequest(ajax); }, Math.max(50, parseInt(delay || 0, 10)));
};
opn.execAjaxRequest = function (ajax) {
window.clearTimeout(ajax.timeout);
if (ajax.request) ajax.request.abort();
var cfgAjax =
{
url: ajax.url,
type: 'POST',
cache: false,
enctype: 'multipart/form-data',
data: ajax.formData || $("#" + ajax.formId).serialize(),
dataType: 'json',
success: function (response, status, jqXHR) {
ajax.status = status;
if (response.notification)
opn.showNotification(response.notification.title, response.notification.message);
if (response.message)
opn.doAlert(response.message.title, response.message.text, function (response) { if (ajax.errFn) ajax.errFn(response); }(response));
if (response.sessionExpired)
return opn.redirectHomeExp();
if (response.goHome)
return opn.redirectHome();
if (ajax.callback) ajax.callback(response);
},
error: function (jqXHR, status, errorThrown) {
ajax.status = status;
if (status == "abort") return;
return opn.redirectHome();
},
complete: function (jqXHR, textStatus) {
if (!ajax.noWaitIcon) opn.hidePleaseWait();
ajax.complete = true;
}
};
if (ajax.formData) {
cfgAjax.processData = false,
cfgAjax.contentType = false;
}
//console.log(ajax.formData);
ajax.request = $.ajax(cfgAjax);
};
//-------------------------------------------------------------
// Viewport - Desktop or Mobile.
opn.isMob = function () { return $('body.mob').length > 0; };
opn.onChangeViewport = function (viewport) {
var $body = $('body');
$body.removeClass('mob dsk');
if (viewport.is('xs')) $body.addClass('mob');
else if (viewport.current() != 'unrecognized') $body.addClass('dsk');
};
opn.isAutoHeight = function () { return ($(window).width() < 360 || $(window).height() < 560 || opn.isMob()); }
opn.onWinResizePage = function () { };
opn.onWinResize = function () {
var winH = $(window).height();
var $pageBody = $('#opn-body');
var $hdr = $('#opn-header');
var $ftr = $('#opn-footer');
//console.log(winH);
//console.log($hdr.outerHeight(true));
//console.log($ftr.outerHeight(true));
if (opn.isAutoHeight())
$pageBody.height('auto');
else
$pageBody.innerHeight(Math.min(1200, winH - $hdr.outerHeight() - $ftr.outerHeight(true)));
$ftr.css('visibility', 'visible');
opn.onWinResizePage();
};
opn.objBtm = function (sel) {
var $obj = $(sel);
return Math.floor($obj.offset().top + $obj.outerHeight(true));
};
opn.innerBtm = function (sel) {
var $obj = $(sel);
return Math.floor($obj.offset().top + $obj.outerHeight() - opn.bottomSurround($obj));
};
opn.innerTop = function (sel) {
var $obj = $(sel);
return Math.floor($obj.offset().top + opn.topSurround($obj));
};
opn.topSurround = function (sel) {
var $obj = $(sel);
return parseInt($obj.css('margin-top'), 10) + parseInt($obj.css('border-top-width'), 10) + parseInt($obj.css('padding-top'), 10);
};
opn.bottomSurround = function (sel) {
var $obj = $(sel);
return parseInt($obj.css('margin-bottom'), 10) + parseInt($obj.css('border-bottom-width'), 10) + parseInt($obj.css('padding-bottom'), 10);
};
opn.marginHeight = function (sel) {
var $obj = $(sel);
return parseInt($obj.css('margin-top'), 10) + parseInt($obj.css('margin-bottom'), 10);
};
opn.borderHeight = function (sel) {
var $obj = $(sel);
return parseInt($obj.css('border-top-width'), 10) + parseInt($obj.css('border-bottom-width'), 10);
};
//-------------------------------------------------------------
// On page load.
$(function () {
//console.log('Page loaded');
(function ($, viewport) {
var timerResize = 0;
$(window).bind('resize', function (e) {
viewport.changed(function () { opn.onChangeViewport(viewport); });
clearTimeout(timerResize);
timerResize = setTimeout(opn.onWinResize, 200);
}).trigger('resize');
})($, ResponsiveBootstrapToolkit);
$('textarea[maxlength]').keyup(function () {
var limit = parseInt($(this).attr('maxlength'), 10);
var text = $(this).val();
if (text.length > limit)
$(this).val(text.substr(0, limit));
});
// Text selection in element.
jQuery.fn.selectText = function () {
/*
this.find('input').each(function()
{
if($(this).prev().length == 0 || !$(this).prev().hasClass('p_copy'))
$('<p class="p_copy" style="position: absolute; z-index: -1;"></p>').insertBefore($(this));
$(this).prev().html($(this).val());
});
*/
var doc = document;
var element = this[0];
var range;
if (doc.body.createTextRange) {
range = doc.body.createTextRange();
range.moveToElementText(element);
range.select();
}
else if (window.getSelection) {
range = doc.createRange();
range.selectNodeContents(element);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}
};
});
$(window).load(function () {
//console.log('Window loaded');
$(window).trigger('resize');
});
//-------------------------------------------------------------
// T h e E n d
//-------------------------------------------------------------
@@ -0,0 +1,62 @@
/*
Application: Sarand OperationsMgr
Javascript: Utilities
Notes: From a sarand.com original.
*/
//-------------------------------------------------------------
opn.refreshUtilityList = function (delay) {
var $panel = $('#opn-panel-utilities-utilities');
var $data = $('.opn-panel-data', $panel);
var $content = $('.opn-data-content', $data);
$('.opn-data-list', $content).empty();
$('.opn-data-msg', $data).text(opn.msgDataQuerying).show();
opn.ajaxUtilityList = opn.ajaxUtilityList || {};
opn.doAjaxRequest(opn.ajaxUtilityList, '/Utilities/GetUtilityList', 'frmFilter', opn.onRefreshUtilityList, delay || 250);
};
opn.refreshItemList = opn.refreshUtilityList;
opn.onRefreshUtilityList = function (response) {
var $panel = $('#opn-panel-utilities-utilities');
var $data = $('.opn-panel-data', $panel);
var $content = $('.opn-data-content', $data);
var $msg = $('.opn-data-msg', $data).empty().hide();
//console.log(response);
opn.refreshPaging(response.paging, $('.opn-panel-filter .opn-filter-paging', $panel));
var $list = $('.opn-data-list', $content);
$list.empty();
if (response.utilities && response.utilities.length) {
var $tmpl = $('.opn-utility-template .opn-data-item', $data);
for (var utilityIdx = 0; utilityIdx < response.utilities.length; utilityIdx++) {
var $utility = $tmpl.clone();
var utility = response.utilities[utilityIdx];
$('.code', $utility).text(utility.code);
$('.size', $utility).text(utility.sizeCode);
if (utility.onInstance)
$('.status', $utility).text("Gate-in: " + utility.gateIn);
else
$('.status', $utility).text("Gate-out: " + utility.gateOut);
$list.append($utility);
if (utilityIdx > 12) break;
}
}
else {
$msg.text(opn.msgDataNoneFound).show();
}
};
//------------------------------------------------------------
$(function () {
$('#ifFilterUtilityCode,#ifFilterUtilitySize').keypress(function (evt) {
if (evt.key === 'Enter') {
$('#pbFilterRefresh').click();
evt.preventDefault();
return false;
}
});
opn.refreshUtilityList(500);
});
/* --------------------------- */
/* T h e E n d */
/* --------------------------- */
+1
View File
@@ -67,6 +67,7 @@ namespace Sarand.OperationsMgr.Core.App
public enum Instance public enum Instance
{ {
Unknown = 0, Unknown = 0,
Test = 10,
} }
//------------------------------------------------------------------- //-------------------------------------------------------------------
+1 -1
View File
@@ -47,7 +47,7 @@ namespace Sarand.OperationsMgr.Core.App
// System code utilities. // System code utilities.
public static Opn.Instance GetInstanceForCode (String instanceCode) public static Opn.Instance GetInstanceForCode (String instanceCode)
{ {
return Opn.Instance.Unknown; return Opn.Instance.Test;
} }
public static String GetInstanceCode (Opn.Instance instance) public static String GetInstanceCode (Opn.Instance instance)
{ {
@@ -40,7 +40,6 @@ namespace Sarand.OperationsMgr.App.Consoles
// Register Security Rights. // Register Security Rights.
public override void RegisterSecurityRights () public override void RegisterSecurityRights ()
{ {
throw new NotImplementedException();
} }
//--------------------------------------------------------------- //---------------------------------------------------------------