@microsoft/office-js
Version:
Office JavaScript APIs
513 lines (509 loc) • 15.5 kB
JavaScript
/* Excel web application specific API library */
/* Version: 15.0.4420.1017 Build Time: 03/31/2014 */
/*
Copyright (c) Microsoft Corporation. All rights reserved.
*/
/*
Your use of this file is governed by the Microsoft Services Agreement http://go.microsoft.com/fwlink/?LinkId=266419.
*/
OSF.OUtil.setNamespace("XLS", OSF.DDA);
OSF.OUtil.augmentList(Microsoft.Office.WebExtension.FilterType, {
OnlyVisible: "onlyVisible"
});
OSF.OUtil.augmentList(Microsoft.Office.WebExtension.EventType, {
SettingsChanged: "settingsChanged"
});
OSF.DDA.XLS.UniqueArguments={
Data: "Data",
Properties : "Properties",
BindingRequest: "DdaBindingsMethod",
BindingResponse: "Bindings",
SingleBindingResponse: "singleBindingResponse",
GetData: "DdaGetBindingData",
AddRowsColumns: "DdaAddRowsColumns",
SetData: "DdaSetBindingData",
SettingsRequest: "DdaSettingsMethod",
BindingEventSource: "ddaBinding"
};
OSF.DDA.XLS.SettingsTranslator=(function () {
var keyIndex=0;
var valueIndex=1;
return {
read: function OSF_DDA_XLS_SettingsTranslator$read(payload) {
var serializedSettings={};
var settingsPayload=payload.Settings;
for (var index in settingsPayload) {
var setting=settingsPayload[index];
serializedSettings[setting[keyIndex]]=setting[valueIndex];
}
return serializedSettings;
},
write: function OSF_DDA_XLS_SettingsTranslator$write(serializedSettings) {
var settingsPayload=[];
for (var key in serializedSettings) {
var setting=[];
setting[keyIndex]=key;
setting[valueIndex]=serializedSettings[key];
settingsPayload.push(setting);
}
return settingsPayload;
}
}
})();
OSF.OUtil.setNamespace("Delegate", OSF.DDA.XLS);
OSF.DDA.DispIdHost.getXLSDelegateMethods=function OSF_DDA_DispIdHost_getXLSDelegateMethods() {
var delegateMethods={};
delegateMethods[OSF.DDA.DispIdHost.Delegates.ExecuteAsync]=OSF.DDA.XLS.Delegate.executeAsync;
delegateMethods[OSF.DDA.DispIdHost.Delegates.RegisterEventAsync]=OSF.DDA.XLS.Delegate.registerEventAsync;
delegateMethods[OSF.DDA.DispIdHost.Delegates.UnregisterEventAsync]=OSF.DDA.XLS.Delegate.unregisterEventAsync;
return delegateMethods;
};
OSF.DDA.XLS.Delegate.SpecialProcessor=function OSF_DDA_XLS_Delegate_SpecialProcessor() {
var complexTypes=[
OSF.DDA.PropertyDescriptors.BindingProperties,
OSF.DDA.XLS.UniqueArguments.SingleBindingResponse,
OSF.DDA.XLS.UniqueArguments.BindingRequest,
OSF.DDA.XLS.UniqueArguments.BindingResponse,
OSF.DDA.XLS.UniqueArguments.GetData,
OSF.DDA.XLS.UniqueArguments.AddRowsColumns,
OSF.DDA.XLS.UniqueArguments.SetData,
OSF.DDA.XLS.UniqueArguments.SettingsRequest,
OSF.DDA.XLS.UniqueArguments.BindingEventSource,
OSF.DDA.EventDescriptors.BindingSelectionChangedEvent
];
var dynamicTypes={};
dynamicTypes[Microsoft.Office.WebExtension.Parameters.Data]=(function () {
var tableRows="Rows";
var tableHeaders="Headers";
return {
toHost: function OSF_DDA_XLS_Delegate_SpecialProcessor_Data$toHost(data) {
if (typeof data !="string" && data[OSF.DDA.TableDataProperties.TableRows] !==undefined) {
var tableData={};
tableData[tableRows]=data[OSF.DDA.TableDataProperties.TableRows];
tableData[tableHeaders]=data[OSF.DDA.TableDataProperties.TableHeaders];
data=tableData;
}
else if (OSF.DDA.DataCoercion.determineCoercionType(data)==Microsoft.Office.WebExtension.CoercionType.Text) {
data=[[data]];
}
return data;
},
fromHost: function OSF_DDA_XLS_Delegate_SpecialProcessor_Data$fromHost(hostArgs) {
var ret;
if (hostArgs[tableRows] !=undefined) {
ret={};
ret[OSF.DDA.TableDataProperties.TableRows]=hostArgs[tableRows];
ret[OSF.DDA.TableDataProperties.TableHeaders]=hostArgs[tableHeaders];
}
else {
ret=hostArgs;
}
return ret;
}
}
})();
dynamicTypes[OSF.DDA.SettingsManager.SerializedSettings]={
toHost: OSF.DDA.XLS.SettingsTranslator.write,
fromHost: OSF.DDA.XLS.SettingsTranslator.read
};
OSF.DDA.XLS.Delegate.SpecialProcessor.uber.constructor.call(this, complexTypes, dynamicTypes);
this.pack=function OSF_DDA_XLS_Delegate_SpecialProcessor$pack(param, arg) {
var value;
if (this.isDynamicType(param)) {
value=dynamicTypes[param].toHost(arg);
}
else {
value=arg;
}
return value;
};
this.unpack=function OSF_DDA_XLS_Delegate_SpecialProcessor$unpack(param, arg) {
var value;
if (this.isDynamicType(param)) {
value=dynamicTypes[param].fromHost(arg);
}
else {
value=arg;
}
return value;
};
};
OSF.OUtil.extend(OSF.DDA.XLS.Delegate.SpecialProcessor, OSF.DDA.SpecialProcessor);
OSF.DDA.XLS.Delegate.ParameterMap=(function () {
var parameterMap=new OSF.DDA.HostParameterMap(new OSF.DDA.XLS.Delegate.SpecialProcessor());
var ns;
var self=parameterMap.self;
function createObject(properties) {
var obj=null;
if (properties) {
obj={};
var len=properties.length;
for (var i=0; i < len; i++) {
obj[properties[i].name]=properties[i].value;
}
}
return obj;
}
function define(definition) {
var args={};
var toHost=createObject(definition.toHost);
if (definition.invertible) {
args.map=toHost;
}
else if (definition.canonical) {
args.toHost=args.fromHost=toHost;
}
else {
args.toHost=toHost;
args.fromHost=createObject(definition.fromHost);
}
parameterMap.setMapping(definition.type, args);
}
ns=Microsoft.Office.WebExtension.Parameters;
define({
type: OSF.DDA.XLS.UniqueArguments.BindingRequest,
toHost: [
{ name: ns.ItemName, value: "ItemName" },
{ name: ns.Id, value: "BindingId" },
{ name: ns.BindingType, value: "BindingType" },
{ name: ns.PromptText, value: "PromptText" },
{ name: ns.FailOnCollision, value: "FailOnCollision" }
]
});
define({
type: OSF.DDA.XLS.UniqueArguments.GetData,
toHost: [
{ name: ns.Id, value: "BindingId" },
{ name: ns.CoercionType, value: "CoerceType" },
{ name: ns.ValueFormat, value: "ValueFormat" },
{ name: ns.FilterType, value: "FilterType" },
{ name: ns.StartRow, value: "StartRow" },
{ name: ns.StartColumn, value: "StartCol" },
{ name: ns.RowCount, value: "RowCount" },
{ name: ns.ColumnCount, value: "ColCount" }
]
});
define({
type: OSF.DDA.XLS.UniqueArguments.SetData,
toHost: [
{ name: ns.Id, value: "BindingId" },
{ name: ns.CoercionType, value: "CoerceType" },
{ name: ns.Data, value: OSF.DDA.XLS.UniqueArguments.Data },
{ name: ns.StartRow, value: "StartRow" },
{ name: ns.StartColumn, value: "StartCol" }
]
});
define({
type: OSF.DDA.XLS.UniqueArguments.AddRowsColumns,
toHost: [
{ name: ns.Id, value: "BindingId" },
{ name: ns.Data, value: OSF.DDA.XLS.UniqueArguments.Data }
]
});
define({
type: OSF.DDA.XLS.UniqueArguments.SettingsRequest,
toHost: [
{ name: ns.OverwriteIfStale, value: "OverwriteIfStale" },
{ name: OSF.DDA.SettingsManager.SerializedSettings, value: OSF.DDA.XLS.UniqueArguments.Properties }
],
invertible: true
});
ns=Microsoft.Office.WebExtension.BindingType;
define({
type: Microsoft.Office.WebExtension.Parameters.BindingType,
toHost: [
{ name: ns.Text, value: 2 },
{ name: ns.Matrix, value: 3 },
{ name: ns.Table, value: 1 }
],
invertible: true
});
ns=OSF.DDA.BindingProperties;
define({
type: OSF.DDA.PropertyDescriptors.BindingProperties,
fromHost: [
{ name: ns.Id, value: "Name" },
{ name: ns.Type, value: "BindingType" },
{ name: ns.RowCount, value: "RowCount" },
{ name: ns.ColumnCount, value: "ColCount" },
{ name: ns.HasHeaders, value: "HasHeaders" }
]
});
define({
type: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse,
fromHost: [
{ name: OSF.DDA.PropertyDescriptors.BindingProperties, value: 0 }
]
});
define({
type: OSF.DDA.PropertyDescriptors.Subset,
fromHost: [
{ name: ns.StartRow, value: "StartRow" },
{ name: ns.StartColumn, value: "StartCol" },
{ name: ns.RowCount, value: "RowCount" },
{ name: ns.ColumnCount, value: "ColCount" }
]
});
ns=Microsoft.Office.WebExtension.AsyncResultStatus;
define({
type: OSF.DDA.PropertyDescriptors.AsyncResultStatus,
fromHost: [
{ name: ns.Succeeded, value: 0 },
{ name: ns.Failed, value: 1 }
]
});
define({
type: OSF.DDA.EventDescriptors.BindingSelectionChangedEvent,
fromHost: [
{ name: OSF.DDA.PropertyDescriptors.BindingProperties, value: OSF.DDA.XLS.UniqueArguments.BindingEventSource },
{ name: OSF.DDA.PropertyDescriptors.Subset, value: OSF.DDA.PropertyDescriptors.Subset }
]
});
ns=OSF.DDA.XLS.UniqueArguments;
var cns=OSF.DDA.MethodDispId;
define({
type: cns.dispidGetSelectedDataMethod,
fromHost: [
{ name: Microsoft.Office.WebExtension.Parameters.Data, value: ns.Data }
],
toHost: [
{ name: ns.GetData, value: self }
]
});
define({
type: cns.dispidSetSelectedDataMethod,
toHost: [
{ name: ns.SetData, value: self }
]
});
define({
type: cns.dispidAddBindingFromSelectionMethod,
fromHost: [
{ name: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
],
toHost: [
{ name: ns.BindingRequest, value: self }
]
});
define({
type: cns.dispidAddBindingFromPromptMethod,
fromHost: [
{ name: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
],
toHost: [
{ name: ns.BindingRequest, value: self }
]
});
define({
type: cns.dispidAddBindingFromNamedItemMethod,
fromHost: [
{ name: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
],
toHost: [
{ name: ns.BindingRequest, value: self }
]
});
define({
type: cns.dispidReleaseBindingMethod,
toHost: [
{ name: ns.BindingRequest, value: self }
]
});
define({
type: cns.dispidGetBindingMethod,
fromHost: [
{ name: OSF.DDA.XLS.UniqueArguments.SingleBindingResponse, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
],
toHost: [
{ name: ns.BindingRequest, value: self }
]
});
define({
type: cns.dispidGetAllBindingsMethod,
fromHost: [
{ name: OSF.DDA.ListDescriptors.BindingList, value: OSF.DDA.XLS.UniqueArguments.BindingResponse }
]
});
define({
type: cns.dispidGetBindingDataMethod,
fromHost: [
{ name: Microsoft.Office.WebExtension.Parameters.Data, value: ns.Data }
],
toHost: [
{ name: ns.GetData, value: self }
]
});
define({
type: cns.dispidSetBindingDataMethod,
toHost: [
{ name: ns.SetData, value: self }
]
});
define({
type: cns.dispidAddRowsMethod,
toHost: [
{ name: ns.AddRowsColumns, value: self }
]
});
define({
type: cns.dispidAddColumnsMethod,
toHost: [
{ name: ns.AddRowsColumns, value: self }
]
});
define({
type: cns.dispidClearAllRowsMethod,
toHost: [
{ name: ns.BindingRequest, value: self }
]
});
define({
type: cns.dispidLoadSettingsMethod,
fromHost: [
{ name: OSF.DDA.SettingsManager.SerializedSettings, value: ns.Properties }
]
});
define({
type: cns.dispidSaveSettingsMethod,
toHost: [
{ name: ns.SettingsRequest, value: self }
]
});
cns=OSF.DDA.EventDispId
define({ type: cns.dispidDocumentSelectionChangedEvent });
define({
type: cns.dispidBindingSelectionChangedEvent,
fromHost: [
{ name: OSF.DDA.EventDescriptors.BindingSelectionChangedEvent, value: self }
]
});
define({
type: cns.dispidBindingDataChangedEvent,
fromHost: [
{ name: OSF.DDA.PropertyDescriptors.BindingProperties, value: ns.BindingEventSource }
]
});
define({ type: cns.dispidSettingsChangedEvent });
return parameterMap;
})();
OSF.DDA.XLS.Delegate.version=1;
OSF.DDA.XLS.Delegate.executeAsync=function OSF_DDA_XLS_Delegate$executeAsync(args) {
if(!args.hostCallArgs) {
args.hostCallArgs={};
}
args.hostCallArgs["DdaMethod"]={
"ControlId": OSF._OfficeAppFactory.getId(),
"Version": OSF.DDA.XLS.Delegate.version,
"DispatchId": args.dispId
};
if(args.onCalling) {
args.onCalling();
}
var startTime=(new Date()).getTime();
OSF._OfficeAppFactory.getClientEndPoint().invoke(
"executeMethod",
function OSF_DDA_XLS_Delegate$OMFacade$OnResponse(xdmStatus, payload) {
if(args.onReceiving) {
args.onReceiving();
}
var error;
if (xdmStatus==Microsoft.Office.Common.InvokeResultCode.noError) {
OSF.DDA.XLS.Delegate.version=payload["Version"];
error=payload["Error"];
} else {
switch (xdmStatus) {
case Microsoft.Office.Common.InvokeResultCode.errorHandlingRequestAccessDenied:
error=OSF.DDA.ErrorCodeManager.errorCodes.ooeNoCapability;
break;
default:
error=OSF.DDA.ErrorCodeManager.errorCodes.ooeInternalError;
break;
}
}
if (args.onComplete) {
args.onComplete(error, payload);
}
if (OSF.AppTelemetry) {
OSF.AppTelemetry.onMethodDone(args.dispId, null, Math.abs((new Date()).getTime() - startTime), error);
}
},
args.hostCallArgs
);
};
OSF.DDA.XLS.Delegate._getOnAfterRegisterEvent=function OSF_DDA_XLS_Delegate$GetOnAfterRegisterEvent(register, args) {
var startTime=(new Date()).getTime();
return function OSF_DDA_XLS_Delegate$OnAfterRegisterEvent(xdmStatus, succeeded) {
if (args.onReceiving) {
args.onReceiving();
}
var status;
if (xdmStatus !=Microsoft.Office.Common.InvokeResultCode.noError) {
switch (xdmStatus) {
case Microsoft.Office.Common.InvokeResultCode.errorHandlingRequestAccessDenied:
status=OSF.DDA.ErrorCodeManager.errorCodes.ooeNoCapability;
break;
default:
status=OSF.DDA.ErrorCodeManager.errorCodes.ooeInternalError;
break;
}
} else {
status=succeeded ? OSF.DDA.ErrorCodeManager.errorCodes.ooeSuccess : OSF.DDA.ErrorCodeManager.errorCodes.ooeInternalError;
}
if (args.onComplete) {
args.onComplete(status);
}
if (OSF.AppTelemetry) {
OSF.AppTelemetry.onRegisterDone(register, args.dispId, Math.abs((new Date()).getTime() - startTime), status);
}
}
};
OSF.DDA.XLS.Delegate.registerEventAsync=function OSF_DDA_XLS_Delegate$RegisterEventAsync(args) {
if (args.onCalling) {
args.onCalling();
}
OSF._OfficeAppFactory.getClientEndPoint().registerForEvent(
OSF.DDA.getXdmEventName(args.targetId, args.eventType),
function OSF_DDA_XLSOMFacade$OnEvent(payload) {
if (args.onEvent) {
args.onEvent(payload);
}
if (OSF.AppTelemetry) {
OSF.AppTelemetry.onEventDone(args.dispId);
}
},
OSF.DDA.XLS.Delegate._getOnAfterRegisterEvent(true, args),
{
"controlId": OSF._OfficeAppFactory.getId(),
"eventDispId": args.dispId,
"targetId": args.targetId
}
);
};
OSF.DDA.XLS.Delegate.unregisterEventAsync=function OSF_DDA_XLS_Delegate$UnregisterEventAsync(args) {
if (args.onCalling) {
args.onCalling();
}
OSF._OfficeAppFactory.getClientEndPoint().unregisterForEvent(
OSF.DDA.getXdmEventName(args.targetId, args.eventType),
OSF.DDA.XLS.Delegate._getOnAfterRegisterEvent(false, args),
{
"controlId": OSF._OfficeAppFactory.getId(),
"eventDispId": args.dispId,
"targetId": args.targetId
}
);
};
OSF.DDA.ExcelWebAppDocument=function Microsoft_Office_WebExtension_ExcelWebAppDocument(officeAppContext, settings) {
var bf=new OSF.DDA.BindingFacade(this);
OSF.DDA.DispIdHost.addAsyncMethods(bf, [OSF.DDA.AsyncMethodNames.AddFromPromptAsync]);
OSF.DDA.ExcelWebAppDocument.uber.constructor.call(this,
officeAppContext,
bf,
settings
);
if (this.mode==OSF.ClientMode.ReadOnly) {
this.url=document.URL;
}
OSF.OUtil.finalizeProperties(this);
};
OSF.OUtil.extend(OSF.DDA.ExcelWebAppDocument, OSF.DDA.JsomDocument);