Start Software Uses Alpha Anywhere to Build the Perfect Custom App for MSS Lasers


Start Software Uses Alpha Anywhere to Build the Perfect Custom App for MSS Lasers

MSS Lasers is a specialist UK laser equipment sales & service business with an unrivalled knowledge of the last and gas generation business. When they researched the market to find the best software to replace their existing field staff support systems with a new generation of bespoke software, Alpha Anywhere was their preferred platform.

"MSS Tracker": How Alpha Anywhere helped Start Software deliver a prototype app for business management in 3 days

That's where Alpha Software’s UK Professional Partners Start Software comes in. They are working with MSS to deliver “MSS Tracker” - their new call-log, scheduling tool and on-site data capture system - a custom business application built from the ground up in Alpha Anywhere.

Having looked at MSS’s requirements in detail, it was clear that Alpha Anywhere’s flexibility was going to answer 90% of the requirements “out of the box” with its excellent tools for web and mobile database system building. In fact, after only 3 days of systems build, Start Software have already delivered a working prototype app for business use (click the images to enlarge):

Figure 1 - MSS Tracker's customer dashboard

The integrated scheduling in Alpha Anywhere (via Web2Cal) - part of it's extensive toolchest of business intelligence and reporting tools - also provides most of the scheduling functionality needed, but not quite all… so developer Ricky used the popular JQuery “Full Calendar” component with a resource view modification to create his own diary view which shows a summary of each Engineer’s diary in a view designed to be used by scheduling staff:

Figure 2 - Alpha Anywhere's built-in Web2Cal scheduling
Figure 3 - Start Software's new diary view using JQuery "Full Calendar"
The solution involved the use of several JavaScript files and three .a5w pages:


This was the “host” of the modified calendar component which uses the immensely popular jQuery Framework. To do this, we wrote some very simple HTML:
<div id="calendar"></div>
This serves as a placeholder to the jQuery components output which itself is HTML elements. Then we added the tags to tell the browser where to fetch the styling and code to run this component:
<script type='text/javascript' src='src/_loader.js'></script>
<link rel="stylesheet" type="text/css" href="DatePicker/jquery.calendarPicker.css" />
<script type="text/javascript" src="DatePicker/jquery.calendarPicker.js"></script>
After this we had to tell the full calendar component how to work and where to get it’s resources and events from which are defined in a standardised format:
jQuery(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
var calendar = jQuery('#calendar').fullCalendar({
resources: 'resourcefeed.a5w',
events: 'eventfeed.a5w',
Finally we created the pages that feed the resources and events to the component:


Dim rs as SQL::ResultSet
Dim args as SQL::Arguments
Dim total as N

total = ExecSQLScalar("SELECT COUNT(*) as Count FROM Engineers", "Count")
Dim resources[total] as P
rs = ExecSQLReader("SELECT GROUPID, Name FROM Engineers")

dim count as n
count = 1

while rs.nextrow()
resources[count].name ="Name")
resources[count].id = ltrim(str("GROUPID")))
count = count + 1
end while
?STRITRAN(vartojson(resources, .t., .f., "", .t.), "'", "\"")


while rs.nextrow()
dim AllDay as c
dim SVRReceived as c
dim ThisClassName as c = ""

if"AllDay") then
AllDay = "All day"
AllDay = ""
end if

if"ServiceVisitReportReceived") then
SVRReceived = "<br/><strong>SVR RECEIVED"</strong>"
SVRReceived = "<br/><strong>SVR NOT RECEIVED</strong>"
ThisClassName = "red"
end if

if"GROUPID") = 0 then
ThisClassName = "gray"
end if

thisDaysFromStart = FLOOR(CONVERT_TYPE("STARTDATE"), "D") - justStartDate)

if (thisDaysFromStart < 0) then
thisDaysFromStart = 0
end if

events[count].id = count
events[count].title = AllDay +"NAME") + SVRReceived
events[count].description ="Description")
events[count].resource = ltrim(str("GROUPID")))
events[count].start = time_to_unixTimeStamp(CTODT(DTOC("STARTDATE"))))
events[count].allDay = .T.

if (ThisClassName <> "") then
events[count].className = ThisClassName
end if
'events[count].end = time_to_unixTimeStamp("ENDTIME"))
count = count + 1

totals[thisDaysFromStart+1] = totals[thisDaysFromStart+1]
end while

dim finalEvents[2] as P

?STRITRAN(vartojson(events, .t., .f., "", .t.), "'", "\"")
Learn more about building an app for business with Alpha Anywhere
Mobile Web Apps Are In -- The Wall Street Journal Joins the Party
How to programmatically handle missing images with Alpha Anywhere

About Author

Default Author Image
Chris Conroy

Chris Conroy runs digital programs for Alpha Software.

Related Posts
Updating Mobile Apps Just Got WAY Easier
Updating Mobile Apps Just Got WAY Easier
Cold Season Is Here: Here's Some Alka Seltzer for Your Mobile App Development Pains
Cold Season Is Here: Here's Some Alka Seltzer for Your Mobile App Development Pains
Alpha Software Gains Market Attention with Apple Watch Development Announcement
Alpha Software Gains Market Attention with Apple Watch Development Announcement


Subscribe To Blog

Subscribe to Email Updates