...
When you click this button, a message should appear in the message control you configured earlier stating that the save was successful.
Adding new component to Web Application using JavaScript SDK
In this step, we will explain “How to add new JavaScript SDK component and render it as HTML page?”.
We will be creating new component “Chart of Accounts” and adding it to existing list of menus/components.
For each menu, there is corresponding html page which renders when user click on that menu.
First we have to find where the existing html pages in source code are. You can find in “Views/App” folder. Now, you can copy existing page “CheckList.cshtml” and rename it to “ChartOfAccounts.cshtml” and then add to the project in same hierarchy “Views/App” folder.
To make appropriate changes in html page, you need to login WPF application (http://apps.saasplications.com/wpf/). In “Financials” menu, press “Chart of Accounts” menu. Then in “System” menu, press “Traffic Debug”. You can see both “Request” and “Response” in both text and XML forms.
You need to set “ViewBag.Title” to same menu text as is in WPF application which is “Chart of Accounts”. You can keep “ViewBag.Icon” same as was in “CheckList” but you can change if you want.
In Traffic, you can find Activity name and Style.
Now, you need to bind to that activity in your html page.
For now, your html page (empty) is created. Now you need to add this html page to get it displayed in existing menu list.
You can find that file where existing html pages are added, and that is “FormMapping.xml”. You can add your page at bottom.
You can build and run application. You can see new menu “Chart of Accounts”.
You can see empty “Chart of Accounts” page when you click on new menu.
...
Here we will explain all menus one by one with examples of "How data is fetched from WPF application to Web Application and saved back to WPF Application from Web application using Genie SDK?".
Vehicle Check
Vehicle Check is used as safety measure application in which driver has to enter vehicle code/ODO and also check for any issue. If driver see any issue, he must need to report that issue and replace vehicle by finding another vehicle and assigning to himself. Then. he can mark "Vehicle Check Done".
To build Vehicle Check page, we need to see traffic debug and XML request to identify activity name and style.
Code Block | ||
---|---|---|
| ||
<div class="row" data-ex-bind="activity" data-ex-activityname="ERP.TourRun" data-ex-activitystyle="VehicleCheck">
</div> |
We need to replicate fields in Web application as exist in WPF application after adding static header Vehicle code/rego.
To add static field "Rego/License No:"; use data-ex-bind to "field", and data-ex-fieldid to "Vehicle.RegoLicenceNo".
Code Block | ||
---|---|---|
| ||
<div class="input-group" data-ex-bind="field" data-ex-fieldid="Vehicle.RegoLicenceNo">
<label data-ex-attribute="label" class="control-label"></label>
<span data-ex-attribute="value" class="form-control-static"></span>
</div> |
To add ODO input field; use data-ex-bind to "field" and data-ex-fieldid to "ODO.Start".
Code Block | ||
---|---|---|
| ||
<div class="input-group" data-ex-bind="field" data-ex-fieldid="ODO.Start">
<span data-ex-attribute="label" class="input-group-addon">ODO</span>
<input data-ex-attribute="value" type="number" class="form-control" min="0">
</div> |
We need to add three tabs "Things to Take", "Report Issue" and "Change Driver" while making first tab "Things to Take" as active tab.
Code Block | ||
---|---|---|
| ||
<ul id="vehicleCheckTabs" class="nav nav-tabs" role="tablist">
<li role="presentation" class="active">
<a href="#things" id="things-tab" role="tab" data-toggle="tab">Things To Take</a>
</li>
<li role="presentation">
<a href="#report" role="tab" id="report-tab" data-toggle="tab">Report Isssue</a>
</li>
<li role="presentation">
<a href="#driverChange" role="tab" id="driverChange-tab" data-toggle="tab">Change Driver</a>
</li>
</ul> |
Now, we need to add contents/fields to each tab.
Code Block | ||
---|---|---|
| ||
<div id="vehicleCheckTabContent" class="tab-content">
</div> |
We need to display special instructions (if exist) in "Things to Take" tab. To bind with "SpecialInstrunctions" field; use data-ex-bind to"field" and data-ex-fieldid to "SpecialInstructions".
Code Block | ||
---|---|---|
| ||
<div id="vehicleCheckTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane active in" id="things" data-ex-bind="field" data-ex-fieldid="SpecialInstructions">
<p style="padding-top: 10px; padding-bottom: 10px" class="col-xs-12" data-ex-attribute="value" data-ex-renderashtml="true"></p>
</div>
</div> |
In "Report Issue" tab, user can report any issue and can replace vehicle as well.
Code Block | ||
---|---|---|
| ||
<div id="vehicleCheckTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane in" id="report">
</div>
</div> |
To report issue we need to create text field to enter issue and then button to report/save issue. To bind field data, use data-ex-fieldid to "Vehicle.Issues.Issue". To bind button to Save method, use type="submit", data-ex-contextobject='Vehicle.Issues', data-ex-bind="method", data-ex-method="Save".
Code Block | ||
---|---|---|
| ||
<div class="input-group" data-ex-bind="field" data-ex-fieldid="Vehicle.Issues.Issue">
<input id="issueToReport" x-webkit-speech type="text" class="form-control" placeholder="Enter Issue..." data-ex-attribute="value">
<span class="input-group-btn">
<button id="reportIssue" class="btn btn-default" type="submit" data-ex-contextobject='Vehicle.Issues' data-ex-bind="method" data-ex-method="Save">Report</button>
</span>
</div> |
Now, we need to list down all vehicles registration number, and show them in drop-down list once user press "Get Vehicles" button.
To fetch data from service, use data-ex-bind="method" data-ex-method="listReplacementVehicles".
Code Block | ||
---|---|---|
| ||
<button class="pull-right btn btn-primary btn-lg" style="margin: 0 5px;" data-ex-bind="method" data-ex-method="listReplacementVehicles">
Get Vehicles
</button>
|
...
Code Block | ||
---|---|---|
| ||
<div class="input-group">
<span class="input-group-addon">Select Replacement Vehicle</span>
<select class="form-control" data-ex-bind="datafield" data-ex-fieldid="UDefInt" data-ex-populatemethod="listReplacementVehicles" data-ex-autopopulate="0">
</select>
</div>
|
To apply vehicle change, user need to press "Apply Vehicle Change". To apply this we need to bind method to "applyVehicleChange".
Code Block | ||
---|---|---|
| ||
<button class="pull-right btn btn-primary btn-lg" data-ex-bind="method" data-ex-method="applyVehicleChange">
Apply Vehicle Change
</button>
|
Now if you build and run, you can see Vehicle check page.
In last tab, "Change Driver", user can assign vehicle using button "Assign Me as Replacement" with binding to method "assignMeAsReplacementDriver".
Code Block | ||
---|---|---|
| ||
<div id="vehicleCheckTabContent" class="tab-content">
<div role="tabpanel" class="tab-pane in" id="driverChange">
<button class="pull-right btn btn-primary btn-lg" data-ex-bind="method" data-ex-method="assignMeAsReplacementDriver">
Assign Me as Replacement
</button>
</div>
</div> |
Now, user can mark both fields "Supporting Items Onboard" and "Vehicle Check Done".
Code Block | ||
---|---|---|
| ||
<div class="input-group" data-ex-bind="field" data-ex-fieldid="SupportingItemsOnboard">
<input id="SupportingItemsOnboard" type="checkbox" data-ex-attribute="value" />
<label for="SupportingItemsOnboard" class="form-control" data-ex-attribute="label">Supporting Items Onboard</label>
</div>
<div class="input-group" data-ex-bind="field" data-ex-fieldid="VehicleCheckDone">
<input id="vehicleCheckComplete" type="checkbox" data-ex-attribute="value" />
<label for="vehicleCheckComplete" class="form-control" data-ex-attribute="label">Vehicle Check Completed</label>
</div> |
----------------------------------------------------------------------------------------------------------------End Vehicle Check--------------------------------------------------------------------------------------------