{"version":3,"sources":["Shared/Static/js/ajax-promise.js"],"names":["define","require","$","Promise","exports","method","url","data","ajaxOptions","cache","skipLocalDebug","window","location","hostname","console","log","localdebug","xhr","ajax","resultPromise","resolve","reject","done","textStatus","jqXHR","Error","error","fail","errorThrown","abort","get","this","post","delete","put"],"mappings":"AAAAA,OAAO,SAAUC,SACb,IAAIC,EAAID,QAAQ,UACZE,EAAUF,QAAQ,YAElBG,KAkGJ,OApFAA,EAAQC,OAAS,SAAUA,EAAQC,EAAKC,EAAMC,GACvB,MAAfA,IACAA,MAGJA,EAAYH,OAASA,EACrBG,EAAYF,IAAMA,EAON,MAARC,IACAC,EAAYD,KAAOA,GAIE,MAArBC,EAAYC,QACZD,EAAYC,OAAQ,GA/B/B,SAAoBD,GAEdA,EAAYE,gBAEgB,aAA5BC,OAAOC,SAASC,UACnBC,QAAQC,IAAIP,EAAYH,OAAS,IAAMG,EAAYF,IAAKE,EAAYD,MA6BtES,CAAWR,GAGL,IAAIS,EAAMf,EAAEgB,KAAKV,GAEbW,EAAgB,IAAIhB,EAAQ,SAAUiB,EAASC,GAC/CJ,EAAIK,KAAK,SAAUf,EAAMgB,EAAYC,GACf,MAAdjB,EAAKkB,OAAgC,KAAflB,EAAKkB,MAC3BJ,EAAO,IAAII,MAAMlB,EAAKkB,QAEH,MAAdlB,EAAKmB,OAAgC,KAAfnB,EAAKmB,MAChCL,EAAO,IAAII,MAAMlB,EAAKmB,QAGtBN,EAAQb,KAEboB,KAAK,SAAUH,EAAOD,EAAYK,GACb,KAAhBA,IACAA,EAAc,qCAQlBP,EAAO,IAAII,MAAMG,QAiBzB,OANAT,EAAcF,IAAMA,EAEpBE,EAAcU,MAAQ,WAClBZ,EAAIY,SAGDV,GAGXf,EAAQ0B,IAAM,SAAUxB,EAAKC,EAAMC,GAC/B,OAAOuB,KAAK1B,OAAO,MAAOC,EAAKC,EAAMC,IAGzCJ,EAAQ4B,KAAO,SAAU1B,EAAKC,EAAMC,GAChC,OAAOuB,KAAK1B,OAAO,OAAQC,EAAKC,EAAMC,IAG1CJ,EAAQ6B,OAAS,SAAU3B,EAAKC,EAAMC,GAClC,OAAOuB,KAAK1B,OAAO,SAAUC,EAAKC,EAAMC,IAG5CJ,EAAQ8B,IAAM,SAAU5B,EAAKC,EAAMC,GAC/B,OAAOuB,KAAK1B,OAAO,MAAOC,EAAKC,EAAMC,IAGlCJ","file":"ajax-promise.js","sourcesContent":["define(function (require) {\r\n var $ = require(\"jquery\");\r\n var Promise = require(\"bluebird\");\r\n\r\n var exports = {};\r\n\r\n\tfunction localdebug(ajaxOptions)\r\n\t{\r\n\t\tif (!ajaxOptions.skipLocalDebug)\r\n\t\t{\r\n\t\t\tif (window.location.hostname == 'localhost') {\r\n\t\t\t\tconsole.log(ajaxOptions.method + \" \" + ajaxOptions.url, ajaxOptions.data);\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n exports.method = function (method, url, data, ajaxOptions) {\r\n if (ajaxOptions == null) {\r\n ajaxOptions = {};\r\n }\r\n\r\n ajaxOptions.method = method;\r\n ajaxOptions.url = url;\r\n\r\n //Si l'url est relative, on la rend absolu (alternative à l'iframe avec CORS)\r\n //if (ajaxOptions.url.startsWith(\"/\")) {\r\n // ajaxOptions.url = window.getBaseUrl() + ajaxOptions.url;\r\n //}\r\n\r\n if (data != null) {//optionnel\r\n ajaxOptions.data = data;\r\n }\r\n\r\n //option \"cache\" de $.ajax à false si non spécifié\r\n if (ajaxOptions.cache == null) {\r\n ajaxOptions.cache = false;\r\n }\r\n\r\n\t\tlocaldebug(ajaxOptions);\r\n\r\n //On conserve la référence xhr pour autoriser l'appellant à annuler la requete\r\n var xhr = $.ajax(ajaxOptions);\r\n\r\n var resultPromise = new Promise(function (resolve, reject) {\r\n xhr.done(function (data, textStatus, jqXHR) {\r\n if (data.Error != null && data.Error !== \"\") {\r\n reject(new Error(data.Error)); //Le controlleur a répondu avec un champ error string non vide\r\n }\r\n else if (data.error != null && data.error !== \"\") {\r\n reject(new Error(data.error)); //Le controlleur a répondu avec un champ error string non vide\r\n }\r\n else {\r\n resolve(data);\r\n }\r\n }).fail(function (jqXHR, textStatus, errorThrown) {\r\n if (errorThrown === \"\") {\r\n errorThrown = \"La connexion au serveur a échoué.\"; //serveur down\r\n }\r\n\r\n //requete ajax annulée si errorThrown === \"abort\"\r\n \r\n //Reject si le controlleur send un objet avec une property \"Error\" non vide\r\n //On reject avec un objet du type Error afin de conserver le stack trace\r\n //Voir https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Error\r\n reject(new Error(errorThrown));\r\n\r\n /*\r\n * L'url n'a pas été atteinte, erreurs courantes :\r\n * - Mauvaise url\r\n * - Le verbe utilisé n'est pas autorisée par l'action du controlleur ()\r\n * - Server is shutdown\r\n */\r\n });\r\n });\r\n\r\n resultPromise.xhr = xhr;\r\n\r\n resultPromise.abort = function () {\r\n xhr.abort();\r\n }\r\n\r\n return resultPromise;\r\n }\r\n\r\n exports.get = function (url, data, ajaxOptions) {\r\n return this.method('GET', url, data, ajaxOptions);\r\n }\r\n\r\n exports.post = function (url, data, ajaxOptions) {\r\n return this.method('POST', url, data, ajaxOptions);\r\n }\r\n\r\n exports.delete = function (url, data, ajaxOptions) {\r\n return this.method('DELETE', url, data, ajaxOptions);\r\n }\r\n\r\n exports.put = function (url, data, ajaxOptions) {\r\n return this.method('PUT', url, data, ajaxOptions);\r\n }\r\n\r\n return exports;\r\n});\r\n"]}