-
Notifications
You must be signed in to change notification settings - Fork 0
/
Action_IncidentReport.page
162 lines (135 loc) · 6.33 KB
/
Action_IncidentReport.page
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
<apex:page docType="html-5.0" showHeader="false" standardController="Merchandise__c" extensions="IncidentReport">
<apex:stylesheet value="{!URLFOR($Resource.OneStarter,'icons.css')}"/>
<apex:stylesheet value="{!URLFOR($Resource.OneStarter,'styles.css')}"/>
<apex:stylesheet value="{!URLFOR($Resource.OneStarter,'OneStarter.css')}"/>
<!-- JavaScript files -->
<apex:includeScript value="{!URLFOR($Resource.jquery_1_10_2)}"/>
<apex:includeScript value="{!URLFOR($Resource.TouchSwipe,'jquery.touchSwipe.min.js')}"/>
<apex:includeScript value="{!URLFOR($Resource.OneStarter,'jquery.onestarter.js')}"/>
<apex:includeScript value="/canvas/sdk/js/publisher.js"/>
<apex:includeScript value="{!$Resource.forcetk}"/>
<!-- <c:RemoteTK />-->
<apex:remoteObjects >
<apex:remoteObjectModel id="model" name="Damage_Report__c" fields="Id" jsShorthand="DamageReport">
<apex:remoteObjectField name="Merchandise__c" jsShorthand="merchId"/>
<apex:remoteObjectField name="Type__c" jsShorthand="type"/>
<apex:remoteObjectField name="Description__c" jsShorthand="description"/>
</apex:remoteObjectModel>
</apex:remoteObjects>
<script>
</script>
<div id="one-app">
<h1>Incident Report</h1>
<article class="padded">
Please file incident details and photo.
Merchandise: {!Merchandise__c.Name}
</article>
<div id="form-example">
<h2>Form Example</h2>
<!-- File input control - we hide this when the page inits -->
<!-- Photo upload button - we wire this to the file input control -->
<!--<button href="#" data-role="button" class="photoButton" data-theme="b">
Upload Photo
</button>-->
<div id="test-display"></div>
<section>
<label class="field-label">Description</label>
<textarea id="ta-description" rows="4" columns="50" />
</section>
<button id="do-incident" onclick="javascript:handleIncident()">File Report</button>
<button style="visibility:hidden" id="do-photo" onclick="javascript:invokeFileClick()">Post Photo</button>
<input id="in-photo" style="visibility:hidden" onchange="javascript:applyPic(this)" class="photoFile" type="file" accept="image/*;capture=camera"/>
</div>
</div>
<script>
//this is implementation code
var restClient = new forcetk.Client();
var contentId;
var merchId;
restClient.setSessionToken('{!$Api.Session_ID}');
//turn off proxy now that we have our session for more efficient processing.
restClient.proxyUrl = null;
restClient.instanceUrl = '';
$(document).ready(function() {
//set to one starter record publisher action settings
s1 = $('div#one-app').oneStarter('record-action');
merchId = '{!Merchandise__c.id}';
$('#test-display').text('Action VF Loaded');
});
function handleIncident()
{
var dr = new SObjectModel.DamageReport({
"merchId" : "{!Merchandise__c.Id}",
"type" : "Accident",
"description" : $('#ta-description').val()
});
console.log('button clicked');
dr.create(function(err, result, event){
if (err) {
console.log(err);
$('#test-display').text('An error occurred creating the damage report: '+result[0] );
} else {
console.log(result);
console.log(event);
$('#test-display').text('Damage Report Id: '+result[0] );
$('#do-photo').css("visibility","visible");
$('#loading-icon').show();
}
});
/* if using JS remoting APEX method
IncidentReport.createIncidentReport(dr, function(resp,event){
console.log(resp);
$('#test-display').text('Damage Report Id: '+resp + JSON.stringify(event));
$('#do-photo').css("visibility","visible");
$('#loading-icon').show();
});
*/
}
function applyPic(fileInput)
{
console.log(fileInput);
var file = fileInput.files[0];
var reader = new FileReader();
reader.onload = (function(theFile) {
return function(e) {
// Extract raw base64 data from data URL
var imageData = e.target.result.split(',')[1];
// Upload the image data to Chatter files
$('#test-display').text('Creating File');
restClient.create('ContentVersion', {
"Origin": "H",
"PathOnClient": file.name,
"VersionData": imageData
}, function(data) {
console.log('got to forceTK callback');
console.log(data.id);
contentId = data.id;
Sfdc.canvas.publisher.publish({name: "publisher.setValidForSubmit", payload:true});
$('#test-display').text('File Create Complete:' + data.id);
}, onErrorSfdc);
};
})(file);
reader.readAsDataURL(file);
}
function postToFeed(){
$('#test-display').text('Posting To Feed: ' + contentId + '&' + merchId);
Visualforce.remoting.Manager.invokeAction('{!$RemoteAction.IncidentReport.postToChatter}', contentId, merchId,
function(result, event) {
$('#test-display').text('Back from posting: ' +result + JSON.stringify(event));
Sfdc.canvas.publisher.publish({name: "publisher.close", payload:{ refresh:"true"}});
});
}
function invokeFileClick()
{
document.getElementById('in-photo').click();
}
function onErrorSfdc(error) {
console.log("onErrorSfdc: " + JSON.stringify(error));
alert('got an error' + JSON.stringify(error));
}
Sfdc.canvas.publisher.subscribe({name: "publisher.post", onData:function(e) {
// This subscribe fires when the user hits 'Submit' in the publisher
postToFeed();
}});
</script>
</apex:page>