UNPKG

16 kBJavaScriptView Raw
1/* Excel web application specific API library */
2/* Version: 15.0.4745.1000 */
3/*
4 Copyright (c) Microsoft Corporation. All rights reserved.
5*/
6
7/*
8 Your use of this file is governed by the Microsoft Services Agreement http://go.microsoft.com/fwlink/?LinkId=266419.
9*/
10
11OSF.OUtil.setNamespace("XLS", OSF.DDA);
12OSF.OUtil.augmentList(Microsoft.Office.WebExtension.FilterType, {
13 OnlyVisible: "onlyVisible"
14});
15OSF.OUtil.augmentList(Microsoft.Office.WebExtension.EventType, {
16 SettingsChanged: "settingsChanged"
17});
18OSF.DDA.XLS.UniqueArguments={
19 Data: "Data",
20 Properties : "Properties",
21 BindingRequest: "DdaBindingsMethod",
22 BindingResponse: "Bindings",
23 SingleBindingResponse: "singleBindingResponse",
24 GetData: "DdaGetBindingData",
25 AddRowsColumns: "DdaAddRowsColumns",
26 SetData: "DdaSetBindingData",
27 SettingsRequest: "DdaSettingsMethod",
28 BindingEventSource: "ddaBinding"
29};
30OSF.DDA.XLS.SettingsTranslator=(function () {
31 var keyIndex=0;
32 var valueIndex=1;
33 return {
34 read: function OSF_DDA_XLS_SettingsTranslator$read(payload) {
35 var serializedSettings={};
36 var settingsPayload=payload.Settings;
37 for (var index in settingsPayload) {
38 var setting=settingsPayload[index];
39 serializedSettings[setting[keyIndex]]=setting[valueIndex];
40 }
41 return serializedSettings;
42 },
43 write: function OSF_DDA_XLS_SettingsTranslator$write(serializedSettings) {
44 var settingsPayload=[];
45 for (var key in serializedSettings) {
46 var setting=[];
47 setting[keyIndex]=key;
48 setting[valueIndex]=serializedSettings[key];
49 settingsPayload.push(setting);
50 }
51 return settingsPayload;
52 }
53 }
54})();
55OSF.OUtil.setNamespace("Delegate", OSF.DDA.XLS);
56OSF.DDA.DispIdHost.getXLSDelegateMethods=function OSF_DDA_DispIdHost_getXLSDelegateMethods() {
57 var delegateMethods={};
58 delegateMethods[OSF.DDA.DispIdHost.Delegates.ExecuteAsync]=OSF.DDA.XLS.Delegate.executeAsync;
59 delegateMethods[OSF.DDA.DispIdHost.Delegates.RegisterEventAsync]=OSF.DDA.XLS.Delegate.registerEventAsync;
60 delegateMethods[OSF.DDA.DispIdHost.Delegates.UnregisterEventAsync]=OSF.DDA.XLS.Delegate.unregisterEventAsync;
61 return delegateMethods;
62};
63OSF.DDA.XLS.Delegate.SpecialProcessor=function OSF_DDA_XLS_Delegate_SpecialProcessor() {
64 var complexTypes=[
65 OSF.DDA.PropertyDescriptors.BindingProperties,
66 OSF.DDA.XLS.UniqueArguments.SingleBindingResponse,
67 OSF.DDA.XLS.UniqueArguments.BindingRequest,
68 OSF.DDA.XLS.UniqueArguments.BindingResponse,
69 OSF.DDA.XLS.UniqueArguments.GetData,
70 OSF.DDA.XLS.UniqueArguments.AddRowsColumns,
71 OSF.DDA.XLS.UniqueArguments.SetData,
72 OSF.DDA.XLS.UniqueArguments.SettingsRequest,
73 OSF.DDA.XLS.UniqueArguments.BindingEventSource,
74 OSF.DDA.EventDescriptors.BindingSelectionChangedEvent
75 ];
76 var dynamicTypes={};
77 dynamicTypes[Microsoft.Office.WebExtension.Parameters.Data]=(function () {
78 var tableRows="Rows";
79 var tableHeaders="Headers";
80 return {
81 toHost: function OSF_DDA_XLS_Delegate_SpecialProcessor_Data$toHost(data) {
82 if (typeof data !="string" && data[OSF.DDA.TableDataProperties.TableRows] !==undefined) {
83 var tableData={};
84 tableData[tableRows]=data[OSF.DDA.TableDataProperties.TableRows];
85 tableData[tableHeaders]=data[OSF.DDA.TableDataProperties.TableHeaders];
86 data=tableData;
87 }
88 else if (OSF.DDA.DataCoercion.determineCoercionType(data)==Microsoft.Office.WebExtension.CoercionType.Text) {
89 data=[[data]];
90 }
91 return data;
92 },
93 fromHost: function OSF_DDA_XLS_Delegate_SpecialProcessor_Data$fromHost(hostArgs) {
94 var ret;
95 if (hostArgs[tableRows] !=undefined) {
96 ret={};
97 ret[OSF.DDA.TableDataProperties.TableRows]=hostArgs[tableRows];
98 ret[OSF.DDA.TableDataProperties.TableHeaders]=hostArgs[tableHeaders];
99 }
100 else {
101 ret=hostArgs;
102 }
103 return ret;
104 }
105 }
106 })();
107 dynamicTypes[OSF.DDA.SettingsManager.SerializedSettings]={
108 toHost: OSF.DDA.XLS.SettingsTranslator.write,
109 fromHost: OSF.DDA.XLS.SettingsTranslator.read
110 };
111 OSF.DDA.XLS.Delegate.SpecialProcessor.uber.constructor.call(this, complexTypes, dynamicTypes);
112 this.pack=function OSF_DDA_XLS_Delegate_SpecialProcessor$pack(param, arg) {
113 var value;
114 if (this.isDynamicType(param)) {
115 value=dynamicTypes[param].toHost(arg);
116 }
117 else {
118 value=arg;
119 }
120 return value;
121 };
122 this.unpack=function OSF_DDA_XLS_Delegate_SpecialProcessor$unpack(param, arg) {
123 var value;
124 if (this.isDynamicType(param)) {
125 value=dynamicTypes[param].fromHost(arg);
126 }
127 else {
128 value=arg;
129 }
130 return value;
131 };
132};
133OSF.OUtil.extend(OSF.DDA.XLS.Delegate.SpecialProcessor, OSF.DDA.SpecialProcessor);
134OSF.DDA.XLS.Delegate.ParameterMap=(function () {
135 var parameterMap=new OSF.DDA.HostParameterMap(new OSF.DDA.XLS.Delegate.SpecialProcessor());
136 var ns;
137 var self=parameterMap.self;
138 function createObject(properties) {
139 var obj=null;
140 if (properties) {
141 obj={};
142 var len=properties.length;
143 for (var i=0; i < len; i++) {
144 obj[properties[i].name]=properties[i].value;
145 }
146 }
147 return obj;
148 }
149 function define(definition) {
150 var args={};
151 var toHost=createObject(definition.toHost);
152 if (definition.invertible) {
153 args.map=toHost;
154 }
155 else if (definition.canonical) {
156 args.toHost=args.fromHost=toHost;
157 }
158 else {
159 args.toHost=toHost;
160 args.fromHost=createObject(definition.fromHost);
161 }
162 parameterMap.setMapping(definition.type, args);
163 }
164 ns=Microsoft.Office.WebExtension.Parameters;
165 define({
166 type: OSF.DDA.XLS.UniqueArguments.BindingRequest,
167 toHost: [
168 { name: ns.ItemName, value: "ItemName" },
169 { name: ns.Id, value: "BindingId" },
170 { name: ns.BindingType, value: "BindingType" },
171 { name: ns.PromptText, value: "PromptText" },
172 { name: ns.FailOnCollision, value: "FailOnCollision" }
173 ]
174 });
175 define({
176 type: OSF.DDA.XLS.UniqueArguments.GetData,
177 toHost: [
178 { name: ns.Id, value: "BindingId" },
179 { name: ns.CoercionType, value: "CoerceType" },
180 { name: ns.ValueFormat, value: "ValueFormat" },
181 { name: ns.FilterType, value: "FilterType" },
182 { name: ns.StartRow, value: "StartRow" },
183 { name: ns.StartColumn, value: "StartCol" },
184 { name: ns.RowCount, value: "RowCount" },
185 { name: ns.ColumnCount, value: "ColCount" }
186 ]
187 });
188 define({
189 type: OSF.DDA.XLS.UniqueArguments.SetData,
190 toHost: [
191 { name: ns.Id, value: "BindingId" },
192 { name: ns.CoercionType, value: "CoerceType" },
193 { name: ns.Data, value: OSF.DDA.XLS.UniqueArguments.Data },
194 { name: ns.StartRow, value: "StartRow" },
195 { name: ns.StartColumn, value: "StartCol" }
196 ]
197 });
198 define({
199 type: OSF.DDA.XLS.UniqueArguments.AddRowsColumns,
200 toHost: [
201 { name: ns.Id, value: "BindingId" },
202 { name: ns.Data, value: OSF.DDA.XLS.UniqueArguments.Data }
203 ]
204 });
205 define({
206 type: OSF.DDA.XLS.UniqueArguments.SettingsRequest,
207 toHost: [
208 { name: ns.OverwriteIfStale, value: "OverwriteIfStale" },
209 { name: OSF.DDA.SettingsManager.SerializedSettings, value: OSF.DDA.XLS.UniqueArguments.Properties }
210 ],
211 invertible: true
212 });
213 ns=Microsoft.Office.WebExtension.BindingType;
214 define({
215 type: Microsoft.Office.WebExtension.Parameters.BindingType,
216 toHost: [
217 { name: ns.Text, value: 2 },
218 { name: ns.Matrix, value: 3 },
219 { name: ns.Table, value: 1 }
220 ],
221 invertible: true
222 });
223 ns=OSF.DDA.BindingProperties;
224 define({
225 type: OSF.DDA.PropertyDescriptors.BindingProperties,
226 fromHost: [
227 { name: ns.Id, value: "Name" },
228 { name: ns.Type, value: "BindingType" },
229 { name: ns.RowCount, value: "RowCount" },
230 { name: ns.ColumnCount, value: "ColCount" },
231 { name: ns.HasHeaders, value: "HasHeaders" }
232 ]
233 });
234 define({
235 type: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse,
236 fromHost: [
237 { name: OSF.DDA.PropertyDescriptors.BindingProperties, value: 0 }
238 ]
239 });
240 define({
241 type: OSF.DDA.PropertyDescriptors.Subset,
242 fromHost: [
243 { name: ns.StartRow, value: "StartRow" },
244 { name: ns.StartColumn, value: "StartCol" },
245 { name: ns.RowCount, value: "RowCount" },
246 { name: ns.ColumnCount, value: "ColCount" }
247 ]
248 });
249 ns=Microsoft.Office.WebExtension.AsyncResultStatus;
250 define({
251 type: OSF.DDA.PropertyDescriptors.AsyncResultStatus,
252 fromHost: [
253 { name: ns.Succeeded, value: 0 },
254 { name: ns.Failed, value: 1 }
255 ]
256 });
257 define({
258 type: OSF.DDA.EventDescriptors.BindingSelectionChangedEvent,
259 fromHost: [
260 { name: OSF.DDA.PropertyDescriptors.BindingProperties, value: OSF.DDA.XLS.UniqueArguments.BindingEventSource },
261 { name: OSF.DDA.PropertyDescriptors.Subset, value: OSF.DDA.PropertyDescriptors.Subset }
262 ]
263 });
264 ns=OSF.DDA.XLS.UniqueArguments;
265 var cns=OSF.DDA.MethodDispId;
266 define({
267 type: cns.dispidGetSelectedDataMethod,
268 fromHost: [
269 { name: Microsoft.Office.WebExtension.Parameters.Data, value: ns.Data }
270 ],
271 toHost: [
272 { name: ns.GetData, value: self }
273 ]
274 });
275 define({
276 type: cns.dispidSetSelectedDataMethod,
277 toHost: [
278 { name: ns.SetData, value: self }
279 ]
280 });
281 define({
282 type: cns.dispidAddBindingFromSelectionMethod,
283 fromHost: [
284 { name: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
285 ],
286 toHost: [
287 { name: ns.BindingRequest, value: self }
288 ]
289 });
290 define({
291 type: cns.dispidAddBindingFromPromptMethod,
292 fromHost: [
293 { name: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
294 ],
295 toHost: [
296 { name: ns.BindingRequest, value: self }
297 ]
298 });
299 define({
300 type: cns.dispidAddBindingFromNamedItemMethod,
301 fromHost: [
302 { name: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
303 ],
304 toHost: [
305 { name: ns.BindingRequest, value: self }
306 ]
307 });
308 define({
309 type: cns.dispidReleaseBindingMethod,
310 toHost: [
311 { name: ns.BindingRequest, value: self }
312 ]
313 });
314 define({
315 type: cns.dispidGetBindingMethod,
316 fromHost: [
317 { name: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
318 ],
319 toHost: [
320 { name: ns.BindingRequest, value: self }
321 ]
322 });
323 define({
324 type: cns.dispidGetAllBindingsMethod,
325 fromHost: [
326 { name: OSF.DDA.ListDescriptors.BindingList, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
327 ]
328 });
329 define({
330 type: cns.dispidGetBindingDataMethod,
331 fromHost: [
332 { name: Microsoft.Office.WebExtension.Parameters.Data, value: ns.Data }
333 ],
334 toHost: [
335 { name: ns.GetData, value: self }
336 ]
337 });
338 define({
339 type: cns.dispidSetBindingDataMethod,
340 toHost: [
341 { name: ns.SetData, value: self }
342 ]
343 });
344 define({
345 type: cns.dispidAddRowsMethod,
346 toHost: [
347 { name: ns.AddRowsColumns, value: self }
348 ]
349 });
350 define({
351 type: cns.dispidAddColumnsMethod,
352 toHost: [
353 { name: ns.AddRowsColumns, value: self }
354 ]
355 });
356 define({
357 type: cns.dispidClearAllRowsMethod,
358 toHost: [
359 { name: ns.BindingRequest, value: self }
360 ]
361 });
362 define({
363 type: cns.dispidLoadSettingsMethod,
364 fromHost: [
365 { name: OSF.DDA.SettingsManager.SerializedSettings, value: ns.Properties }
366 ]
367 });
368 define({
369 type: cns.dispidSaveSettingsMethod,
370 toHost: [
371 { name: ns.SettingsRequest, value: self }
372 ]
373 });
374 define({
375 type: cns.dispidGetActiveViewMethod,
376 fromHost: [
377 { name: Microsoft.Office.WebExtension.Parameters.ActiveView, value: ns.Data }
378 ]
379 });
380 cns=OSF.DDA.EventDispId
381 define({ type: cns.dispidDocumentSelectionChangedEvent });
382 define({
383 type: cns.dispidBindingSelectionChangedEvent,
384 fromHost: [
385 { name: OSF.DDA.EventDescriptors.BindingSelectionChangedEvent, value: self }
386 ]
387 });
388 define({
389 type: cns.dispidBindingDataChangedEvent,
390 fromHost: [
391 { name: OSF.DDA.PropertyDescriptors.BindingProperties, value: ns.BindingEventSource }
392 ]
393 });
394 define({ type: cns.dispidSettingsChangedEvent });
395 return parameterMap;
396})();
397OSF.DDA.XLS.Delegate.version=1;
398OSF.DDA.XLS.Delegate.executeAsync=function OSF_DDA_XLS_Delegate$executeAsync(args) {
399 if(!args.hostCallArgs) {
400 args.hostCallArgs={};
401 }
402 args.hostCallArgs["DdaMethod"]={
403 "ControlId": OSF._OfficeAppFactory.getId(),
404 "Version": OSF.DDA.XLS.Delegate.version,
405 "DispatchId": args.dispId
406 };
407 if(args.onCalling) {
408 args.onCalling();
409 }
410 var startTime=(new Date()).getTime();
411 OSF._OfficeAppFactory.getClientEndPoint().invoke(
412 "executeMethod",
413 function OSF_DDA_XLS_Delegate$OMFacade$OnResponse(xdmStatus, payload) {
414 if(args.onReceiving) {
415 args.onReceiving();
416 }
417 var error;
418 if (xdmStatus==Microsoft.Office.Common.InvokeResultCode.noError) {
419 OSF.DDA.XLS.Delegate.version=payload["Version"];
420 error=payload["Error"];
421 } else {
422 switch (xdmStatus) {
423 case Microsoft.Office.Common.InvokeResultCode.errorHandlingRequestAccessDenied:
424 error=OSF.DDA.ErrorCodeManager.errorCodes.ooeNoCapability;
425 break;
426 default:
427 error=OSF.DDA.ErrorCodeManager.errorCodes.ooeInternalError;
428 break;
429 }
430 }
431 if (args.onComplete) {
432 args.onComplete(error, payload);
433 }
434 if (OSF.AppTelemetry) {
435 OSF.AppTelemetry.onMethodDone(args.dispId, null, Math.abs((new Date()).getTime() - startTime), error);
436 }
437 },
438 args.hostCallArgs
439 );
440};
441OSF.DDA.XLS.Delegate._getOnAfterRegisterEvent=function OSF_DDA_XLS_Delegate$GetOnAfterRegisterEvent(register, args) {
442 var startTime=(new Date()).getTime();
443 return function OSF_DDA_XLS_Delegate$OnAfterRegisterEvent(xdmStatus, succeeded) {
444 if (args.onReceiving) {
445 args.onReceiving();
446 }
447 var status;
448 if (xdmStatus !=Microsoft.Office.Common.InvokeResultCode.noError) {
449 switch (xdmStatus) {
450 case Microsoft.Office.Common.InvokeResultCode.errorHandlingRequestAccessDenied:
451 status=OSF.DDA.ErrorCodeManager.errorCodes.ooeNoCapability;
452 break;
453 default:
454 status=OSF.DDA.ErrorCodeManager.errorCodes.ooeInternalError;
455 break;
456 }
457 } else {
458 status=succeeded ? OSF.DDA.ErrorCodeManager.errorCodes.ooeSuccess : OSF.DDA.ErrorCodeManager.errorCodes.ooeInternalError;
459 }
460 if (args.onComplete) {
461 args.onComplete(status);
462 }
463 if (OSF.AppTelemetry) {
464 OSF.AppTelemetry.onRegisterDone(register, args.dispId, Math.abs((new Date()).getTime() - startTime), status);
465 }
466 }
467};
468OSF.DDA.XLS.Delegate.registerEventAsync=function OSF_DDA_XLS_Delegate$RegisterEventAsync(args) {
469 if (args.onCalling) {
470 args.onCalling();
471 }
472 OSF._OfficeAppFactory.getClientEndPoint().registerForEvent(
473 OSF.DDA.getXdmEventName(args.targetId, args.eventType),
474 function OSF_DDA_XLSOMFacade$OnEvent(payload) {
475 if (args.onEvent) {
476 args.onEvent(payload);
477 }
478 if (OSF.AppTelemetry) {
479 OSF.AppTelemetry.onEventDone(args.dispId);
480 }
481 },
482 OSF.DDA.XLS.Delegate._getOnAfterRegisterEvent(true, args),
483 {
484 "controlId": OSF._OfficeAppFactory.getId(),
485 "eventDispId": args.dispId,
486 "targetId": args.targetId
487 }
488 );
489};
490OSF.DDA.XLS.Delegate.unregisterEventAsync=function OSF_DDA_XLS_Delegate$UnregisterEventAsync(args) {
491 if (args.onCalling) {
492 args.onCalling();
493 }
494 OSF._OfficeAppFactory.getClientEndPoint().unregisterForEvent(
495 OSF.DDA.getXdmEventName(args.targetId, args.eventType),
496 OSF.DDA.XLS.Delegate._getOnAfterRegisterEvent(false, args),
497 {
498 "controlId": OSF._OfficeAppFactory.getId(),
499 "eventDispId": args.dispId,
500 "targetId": args.targetId
501 }
502 );
503};
504OSF.DDA.ExcelWebAppDocument=function Microsoft_Office_WebExtension_ExcelWebAppDocument(officeAppContext, settings) {
505 var bf=new OSF.DDA.BindingFacade(this);
506 OSF.DDA.DispIdHost.addAsyncMethods(bf, [OSF.DDA.AsyncMethodNames.AddFromPromptAsync]);
507 OSF.DDA.DispIdHost.addAsyncMethods(this, [OSF.DDA.AsyncMethodNames.GetActiveViewAsync]);
508 OSF.DDA.ExcelWebAppDocument.uber.constructor.call(this,
509 officeAppContext,
510 bf,
511 setting
\No newline at end of file