Methods
-
init()
-
Call this to initialize the camera database.
Returns:
Promise
-
_load()
-
Load cached data from the local storage.
Returns:
Promise
-
_store()
-
Store the cached data.
-
reset()
-
Resets the camera database by clearing all locally cached data.
The class will request camera info again from the server on
future calls (rebuilding the cache on-demand). -
getCameraInfo(make, model) → {Object}
-
Returns information about the given make/model.
NOTE: If the returned oject has the pending member set to true, the camera is in the database
but not yet updated with proper values. The crop factor will always be 1 in that case.Parameters:
Name Type Description make
String The nake (from {File.MD.make})
model
String The model (from {File.MD.model})
Returns:
The result member of the object can be one of
'ok' : The camera was found. The cropFactor is in the cropFactor member.
'' : The camera has not been looked up yet. Use lookupCameraInfo().- Type
- Object
-
lookupCameraInfo(make, model) → {Promise}
-
Performs a lookup for the camera model in the camera database.
Parameters:
Name Type Description make
* Camera make
model
* Camera model
Returns:
It is always resolved with the session state. The status member is either 'ok' (lookup completed) or 'pending' or unknown' for unknown mnodel.
- Type
- Promise
-
hasPending()
-
Returns:
true if there is at least one pending camera.
-
getPendingCameras()
-
Returns an array with cameras which are marked as pending.
-
onScopeChanged(cause)
-
This method is called when IMatch informs the File Window App about the change in the scope (model).
Such changes can be caused by many things, e.g. the user clicking on another folder, the user using the search bar or filter panel, changing the sort order etc.Parameters:
Name Type Description cause
String The reason for the scope change.
-
onSortOrderChanged(reverse)
-
This methid is caled when the sort order changes between asc and desc. The user triggers this via the File Window toolbar.
Parameters:
Name Type Description reverse
Boolean The current state of the Asc/Desc sort order option. True when the sort order is reversed (Z..A).
-
onSortProfileChanged(profile)
-
The user selected a different sort profile in the File Window toolbar.
This also causes an IMatchFileWindow.onScopeChanged event.Parameters:
Name Type Description profile
String The name of the currently selected sort profile.
-
onZoomChanged(zoom)
-
The user changed the zoom level of the File Window.
Parameters:
Name Type Description zoom
Number The new zoom level. The range for this number is by default 0-20, but it can be changed via the app.json of your File Window App.
-
onPauseThresholdChanged(threshold)
-
The user picked a new auto-pause theshold.
Parameters:
Name Type Description threshold
* The new threshold.
-
onActiveStateChanged(active)
-
The file window was actived or deactivated. When the user switches to another View or opens a result window, the current file window is deactivated.
Parameters:
Name Type Description active
Boolean -
onMoveFocus(next, selectAndFocus, keepSelection, ensureVisible)
-
IMatch has requested that the file window moves the focus to the previous or next file.
This is mostly used by the Quick Preview Panel, when the user navigates using the flaps.Parameters:
Name Type Description next
* True to move to the next file, false to move to the previous file.
selectAndFocus
* The new file should be focused and selected
keepSelection
* False if the change should remove the current selection
ensureVisible
* The newly selected file should be made visible.
-
onSearchRunning()
-
The user started a search via the File Window Search Bar.
-
onSearchCompleted(success)
-
The search has completed or was aborted by some reason.
IMatch applies the search result to the file window and causes the scope to change. Files no longer visible get the flag FileStates.esHiddenSearch.
This also causes an IMatchFileWindow.onScopeChanged event.Parameters:
Name Type Description success
* True if the search has been successful.
-
onFilterRunning()
-
The Filter Panel is performing a query.
-
onFilterCanceled()
-
The current Filter Panel query was canceled.
This may cause an IMatchFileWindow.onScopeChanged event. -
onFilterCompleted()
-
The Filter Panel has complete its query.
This may causes an IMatchFileWindow.onScopeChanged event. -
enumerateRunningApps() → {Promise}
-
Lists all currently running File Window Apps.
This can be used to find out the instance id of a specific app, e.g., to connect to it from an external web browser.Returns:
- Type
- Promise
-
getState() → {Promise}
-
Queries the current state of the File Window associated with this instance.
Returns:
- Type
- Promise
-
loadModel(params) → {Promise}
-
Loads the model of the File Window associated with this instance.
The model contains 1 to n groups, each group containing the file ids in that group plus other information.
Groups may be nested to any depth. The hierarhcy mode of the file window controls how the model is created from the current scope.Parameters:
Name Type Description params
Object An object with additional parameters. You can specify the same parameters that can be used with the
/files
endpoint.Returns:
- Type
- Promise
Example
let fw = new IMatchFileWindow(instance); fw.loadModel({ fields: 'id,namene,format,datetime,rating,label,labelcolor', tagdesc: 'description', tagtitle: 'title', tagkeywords: 'hierarchicalkeywords' }).then(response => { // ... });
-
setSelection(params)
-
This method changes the selection of the model maintained by the File Window.
Parameters:
Name Type Description params
Object parameters.op
String How to apply the selection. Supported are 'set' to replace the selection and 'add' to add to the selection.
parameters.id
String List of file ids. Standard IMWS syntax.
-
setFocus(id)
-
This selection changes the focused file in the model maintained by the File Window.
Parameters:
Name Type Description id
Number The id of the file to focus, or null to remove the focus
-
getImageUrl(id, size [, useDefault])
-
Parameters:
Name Type Argument Default Description id
Number The id of the file
size
String The size of the image. See
/files
endpoint for details.useDefault
Boolean <optional>
true If this is true and there is no image available for the file, a default image/icon is returned.
-
init( [forceLocale]) → {Promise}
-
Initialize this class. This must be called first.
If a global moment exists, it's locate will be set to the same locale as this class is using.Parameters:
Name Type Argument Default Description forceLocale
String <optional>
false By default, this class retrives the appLocale from IMatch.
You can override this by specifying a locale with this parameter.Returns:
If the promise is resolved, the locale data has been loaded and initialized() returns true.
- Type
- Promise
-
initialized() → {Boolean}
-
Check if this has been properly initialited by a call to init()
Returns:
True if this has been initialized.
- Type
- Boolean
-
locale() → {String}
-
Get the locale used by this.
NOTE: This is filled always, but may change after init() has been called.Returns:
The locale identifier to use for all locale-specific operations.
- Type
- String
-
formatInt( [useGrouping], n)
-
Format an integer value.
Parameters:
Name Type Argument Default Description useGrouping
Boolean <optional>
true Use thousands groupings?
n
Number The number to format.
-
formatFloat(n [, useGrouping])
-
Format a floating point value.
Parameters:
Name Type Argument Default Description n
* The number to format.
useGrouping
Boolean <optional>
true Use thousands groupings?
-
formatCurrency(n [, currency] [, displayFormat])
-
Format a currency value.
Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleStringParameters:
Name Type Argument Default Description n
Number The number to format.
currency
String <optional>
'USD' The currency to use: {USD,EUR,...}
displayFormat
String <optional>
'symbol' The currency format to use: {'code' (EUR), 'symbol' ($),'name' (Euro)}
-
formatPercent(n) → {String}
-
Format a percentage value.
Parameters:
Name Type Description n
Number The percentage to format (0.5 = 50%).
Returns:
- Type
- String
-
formatUnit(n [, unit] [, displayFormat]) → {String}
-
Format a unit like meter or litre.
Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleStringParameters:
Name Type Argument Default Description n
Number The number to format
unit
String <optional>
'm' The unit to use: {'liter','kilogram','kilometer','meter','bit','byte',...}
displayFormat
String <optional>
'short' The type of unit formatting: {'short','long','narrow}
Returns:
- Type
- String
-
formatDateTime(isoDate, format)
-
Format a date in the local date and time format
Parameters:
Name Type Description isoDate
String The date to format. Must be in YYYY-MM-DD HH:MM:SS format
format
String How to format the timestamp: 'LT', 'LTS', ... See https://momentjs.com/docs/#/displaying/
-
compareString(a, b)
-
Compares two strings using the current locale.
Parameters:
Name Type Description a
String string to compare
b
String string to compare
-
load(xmlData [, simulateTimestamps]) → {Boolean}
-
Load a track log file from memory.
Parameters:
Name Type Argument Default Description xmlData
String The XML formatted GPX data.
simulateTimestamps
Boolean <optional>
false If this is true, a fixed date and time is used for points without a
Returns:
If this method returns false, check the IMatchTrackLog#error property for more info.
- Type
- Boolean
-
tracks() → {Array}
-
This function returns the standardized points extracted from the file.
The returned array may have one or more sub-arrays, if multiple tracks
have been recored in the file.Returns:
- Type
- Array
-
error()
-
Properties:
Name Type Description error
String The last error message.
-
authenticate(email, key, service) → {Promise}
-
This method authenticates the specified user for the specified service and retrieves a serviceToken from the host.
This serviceToken is used to authenticate the user when calling the APIs for that service.NOTE: Usually you have to call this before calling any of the other service endpoints.
The only exception are endpoints which don't require authentication.
Parameters:
Name Type Description email
String The user name or email address.
key
String Passowrd or license key.
service
String The service to authenticate for.
Returns:
The promise is fulfilled with the service token on success, else rejected.
- Type
- Promise
Example
let ptcs = new PTCServices(); ptcs.authenticate('email','licenekey','service name').then(response => { // This token can now be used to access 'service name' API endpoints. myToken = response.serviceToken; });
-
quotaInfo(serviceToken, serviceKey)
-
Queries the service quota info for the specified service token.
To get the service token call authenticate before as needed.Parameters:
Name Type Description serviceToken
String The service quota to query.
serviceKey
String The optional service key. If no key is provided, information about all services for the user is returned.
Returns:
Promise The response contains a JSON object with information about the service quoty (credits).
Example
{ "service": "nnn", "used": 111, "remaining": 111, "total": 222, "type": 10, "typeName": "monthly", "periodStart": "2018-05-16 00:00:00", "nextReset": "2018-06-16 00:00:00" }
-
translate(langFrom, langTo, text, serviceToken [, service]) → {Promise}
-
Uses machine translation to translate the given text.
The result format is the original format of the specified service.Parameters:
Name Type Argument Default Description langFrom
String source language id, e.g.
en
.langTo
String target language id, e.g.
de
.text
String The text to translate.
Note: For Azure (service MSAZTT) the following limits apply: Maximum 5,000 characters, including spaces.serviceToken
String the serviceToken retrieved with the authenticate method.
service
String <optional>
'MSAZTT' the name of the translation service to use. Must be the same used to get serviceToken.
Returns:
Will be fulfilled when the translation call is successful.
The response is a JSON wrapper object.
Theresult
string contains the translated text.
TheserviceData
object contains the native data as returned by the translation service.
TheptcsData
object contains quota and other technical data from the photools.com service.- Type
- Promise
Example
let s = new PTCServices(); s.translate('en', 'de', 'The quick brown fox jumps over the lazy dog.', 'YOUR TOKEN').then(response => { console.log(response.serviceData[0].translations[0].text); });
-
translateArray(langFrom, langTo, textArray, serviceToken [, service] [, progressCallback]) → {Promise}
-
Uses machine translation to translate the given text.
The result format is the original format of the specified service.Parameters:
Name Type Argument Default Description langFrom
String source languages id, e.g.
en
.langTo
String target language id, e.g.
de
.textArray
Array.<String> An array of strings to translate. EMPTY STRINGS are not supported!
serviceToken
String the serviceToken retrieved with the authenticate method.
service
String <optional>
'MSAZTT' the name of the translation service to use. Must be the same used to get serviceToken.
progressCallback
callback <optional>
This callback is called frequently during the translation. If it returns false, the translation is aborted
Note: For Azure (service MSAZTT) the following limits apply: Maximum 5,000 characters query.
Returns:
Will be fulfilled when the translation call is successful.
The response is a JSON array of objects. Depending on the service used and the number of array elements on input,
the result may contain one or more array elements. Each element is an object consisting of:
Theresult
object contains key:value pairs with the original keys and translated text.
This is what you will use for typical scenarios.
TheserviceData
object contains the native data as returned by the translation service.
TheptcsData
object contains quota and other technical data from the photools.com service.- Type
- Promise
Example
const TEXTARRAY = { 'key1' : 'First sentence to translate.', 'key2' : 'The quick brown fox jumps over the lazy dog.', 'key3' : 'Start Button' }; let s = new PTCServices(); s.translateArray('en', 'de', TEXTARRAY, 'YOUR TOKEN').then(response => { // Contains 1 to many elements, depending on the number of elements in the input array // and if and where the service had to split the array. for (let r of response) { for (let t of r.result) { console.log(t.translations[0].text); } } });
-
translateListLanguages(serviceToken [, service]) → {Promise}
-
This function retrieves a list of all languages supported by the specified translation service.
The result format is standardized between supported services.
The method returns a dictionary with the two-letter lang-id as the key. Each object has the name of the language in English,
plus the nativeName in the native language.Parameters:
Name Type Argument Default Description serviceToken
String the serviceToken retrieved with the authenticate method.
service
String <optional>
'MSAZTT' the name of the translation service to use. Must be the same used to get serviceToken.
Returns:
Will be fulfilled when the translation call is successful. Returns the native response from the service used.
- Type
- Promise
Example
let s = new PTCServices(); ptcs.translateListLanguages(serviceToken,service).then(response => { $('#data').text(JSON.stringify(response,null,2)); },error => { $('#data').text(JSON.stringify(error,null,2)); });
-
newsFeed( [productId] [, limit])
-
This method retrieves the current photools.com newsfeed. It consists of messages
directly from photools.com and also the recent limit messages from the photools.community.Parameters:
Name Type Argument Default Description productId
* <optional>
null If you want to query data for a specific product, specify the product id in this parameter.
limit
* <optional>
20 The number of recent community posts to return.
Example
ptcs.newsFeed(productId,20).then(response => { console.log(JSON.stringify(response,null,2)); },error => { console.log(JSON.stringify(error,null,2)); });
-
camdbInfo() → {Promise}
-
Retrieves information about the photools.com camera database.
Returns:
If the promise is fulfilled, it contains information about the camera database.
- Type
- Promise
Example
let ptcs = new PTCServices(); ptcs.camdbInfo().then(response => { console.log(JSON.stringify(response,null,2)); });
-
camdbDownload() → {Promise}
-
Downloads the camera database in JSON format.
Returns:
- Type
- Promise
Example
let ptcs = new PTCServices(); ptcs.camdbDownload().then(response => { console.log(JSON.stringify(response,null,2)); });
-
camdbGet(make, model)
-
Retrieves information for the camera with the specified make and model name. The make/model parameters are not case-sensitive.
NOTE: The content of these parameters must exaclty match the contents found in the EXIF make and model tags.
Parameters:
Name Type Description make
String The contents of the EXIF make tag of the camera for which to retrieve information.
model
String The contents of the EXIF model tag.
Example
let ptcs = new PTCServices(); ptcs.camdbGet('NIKON CORPORATION', 'NIKON D300').then(response => { console.log(JSON.stringify(response,null,2)); },error => { // Camera does not exist in the camera database. console.log(JSON.stringify(error,null,2)); });