", customElements.define("sm-option", class extends HTMLElement { constructor() { super(), this.attachShadow({ mode: "open" }).append(smOption.content.cloneNode(!0)) } connectedCallback() { this.setAttribute("role", "option") } });
const spinner = document.createElement("template"); spinner.innerHTML = '\n\n\n\n'; class SpinnerLoader extends HTMLElement { constructor() { super(), this.attachShadow({ mode: "open" }).append(spinner.content.cloneNode(!0)) } } window.customElements.define("sm-spinner", SpinnerLoader);
diff --git a/index.html b/index.html
index 7b57106..0344936 100644
--- a/index.html
+++ b/index.html
@@ -1329,6 +1329,7 @@
dragger = dragula([getRef('display_task_map'), getRef('all_tasks')])
dragger.on('dragend', function (el, source) {
const newOrder = Array.from(getRef('display_task_map').children).map(el => el.dataset.taskId)
+ console.log(newOrder)
RIBC.admin.setDisplayedTasks(newOrder)
});
break;
@@ -2756,7 +2757,7 @@
getRef('task_list').lastElementChild.scrollIntoView({ behavior: "smooth" });
}
function commitToChanges() {
- getConfirmation("Do you want to commit to changes?").then((result) => {
+ getConfirmation("Do you want to commit to changes?", { confirmText: 'Save' }).then((result) => {
if (result) {
RIBC.admin.updateObjects().then(res => {
notify('Changes committed.', 'success')
@@ -3022,14 +3023,14 @@
document.addEventListener('popupopened', e => {
getRef('main_page').setAttribute('inert', '')
- switch (e.detail.popup.id) {
+ switch (e.target.id) {
case 'intern_list_popup':
renderElem(getRef('intern_list_container'), filterInterns('', { availableInternsOnly: true }))
break;
}
})
document.addEventListener('popupclosed', e => {
- switch (e.detail.popup.id) {
+ switch (e.target.id) {
case 'intern_list_popup':
renderElem(getRef('intern_list_container'), html``)
getRef('intern_search_field').value = ''
diff --git a/scripts/floCloudAPI.min.js b/scripts/floCloudAPI.min.js
index db69d30..2c1407d 100644
--- a/scripts/floCloudAPI.min.js
+++ b/scripts/floCloudAPI.min.js
@@ -1 +1 @@
-(function(e){"use strict";function t(e,n){if(!n||!e)return t.clear();let r=floCrypto.getPubKeyHex(n);if(!r||!floCrypto.verifyPubKey(r,e))return t.clear();let o=floCrypto.randInt(12,20);return y=floCrypto.randString(o),h=Crypto.AES.encrypt(n,y),m=r,p=e,p}function n(e){return new Promise((t,n)=>{if(!(e in I))return n(`${e} is not a supernode`);if(O.has(e))return n(`${e} is not active`);var r=new WebSocket("wss://"+I[e].uri+"/");r.onopen=(e=>t(r)),r.onerror=(t=>{O.add(e),n(`${e} is unavailable`)})})}function r(e,t=!1){return new Promise((o,c)=>{if(O.size===v.list.length)return c("Cloud offline");e in I||(e=v.closestNode(N(e))),n(e).then(e=>o(e)).catch(n=>{if(t)var i=v.prevNode(e);else i=v.nextNode(e);r(i,t).then(e=>o(e)).catch(e=>c(e))})})}function o(e,t){return new Promise((n,r)=>{if(O.has(e))return r(`${e} is not active`);let o,c="https://"+I[e].uri;"string"==typeof t?o=fetch(c+"?"+t):"object"==typeof t&&"POST"===t.method&&(o=fetch(c,t)),o.then(e=>{e.ok||400===e.status||500===e.status?n(e):r(e)}).catch(e=>r(e))})}function c(e,t,n=!1){return new Promise((r,i)=>{if(O.size===v.list.length)return i("Cloud offline");e in I||(e=v.closestNode(N(e))),o(e,t).then(e=>r(e)).catch(o=>{if(O.add(e),n)var a=v.prevNode(e);else a=v.nextNode(e);c(a,t,n).then(e=>r(e)).catch(e=>i(e))})})}function i(e,t,n="POST"){return new Promise((r,o)=>{let i;i="POST"===n?{method:"POST",body:JSON.stringify(t)}:new URLSearchParams(JSON.parse(JSON.stringify(t))).toString(),c(e,i).then(e=>{e.ok?e.json().then(e=>r(e)).catch(e=>o(e)):e.text().then(t=>o(e.status+": "+t)).catch(e=>o(e))}).catch(e=>o(e))})}function a(e,t,n){const o=void 0!==t.status?e=>{if(t.status)return e;{let n={};for(let r in e)t.trackList.includes(r)&&(n[r]=e[r]);return n}}:e=>{e=u(e);let n={},r=N(t.receiverID),o=t;for(let t in e){let c=e[t];o.atVectorClock&&o.atVectorClock!=t||!(o.atVectorClock||!o.lowerVectorClock||o.lowerVectorClock<=t)||!(o.atVectorClock||!o.upperVectorClock||o.upperVectorClock>=t)||o.afterTime&&!(o.afterTime{r(e).then(e=>{let r=floCrypto.randString(5);e.send(JSON.stringify(t)),e.onmessage=(e=>{let t=null,r=null;try{t=o(JSON.parse(e.data))}catch(t){r=e.data}finally{n(t,r)}}),w[r]=e,w[r].request=t,c(r)}).catch(e=>i(e))})}function l(e,t){try{console.log(t);let n=Object.keys(t).sort();for(let r of n)if(!(rD[e]&&(D[e]=t[n].log_time);compactIDB.writeData("lastVC",D[e],e),compactIDB.writeData("generalData",b[e],e)}catch(e){console.error(e)}}function u(e){return Array.isArray(e)||(e=[e]),Object.fromEntries(e.map(e=>(e.message=C(e.message),[e.vectorClock,e])))}const d=e,f={blockchainPrefix:35,SNStorageID:floGlobals.SNStorageID||"FNaN9McoBAEFUjkRmNQRYLmBF8SpS7Tgfk",adminID:floGlobals.adminID,application:floGlobals.application,callback:(e,t)=>console.debug(e,t)};var p,m,h,y,g,b,D;Object.defineProperties(t,{id:{get:()=>{if(!p)throw"User not set";return p}},public:{get:()=>{if(!m)throw"User not set";return m}},sign:{value:e=>{if(!h)throw"User not set";return floCrypto.signData(e,Crypto.AES.decrypt(h,y))}},clear:{value:()=>p=m=h=y=void 0}}),Object.defineProperties(d,{SNStorageID:{get:()=>f.SNStorageID},adminID:{get:()=>f.adminID},application:{get:()=>f.application},user:{get:()=>t}}),Object.defineProperties(floGlobals,{appObjects:{get:()=>g,set:e=>g=e},generalData:{get:()=>b,set:e=>b=e},generalDataset:{value:(e,t={})=>b[P(e,t)]},lastVC:{get:()=>D,set:e=>D=e}});var v,I={};Object.defineProperty(d,"nodes",{get:()=>JSON.parse(JSON.stringify(I))});const k=d.K_Bucket=function(e,t){const n=e=>{let t=bitjs.Base58.decode(e);t.shift(),t.splice(-4,4);let n=Crypto.util.bytesToHex(t),r=new BigInteger(n,16),o=r.toByteArrayUnsigned(),c=new Uint8Array(o);return c},r=new BuildKBucket({localNodeId:n(e)});t.forEach(e=>r.add({id:n(e),floID:e}));const o=t.map(e=>[r.distance(r.localNodeId,n(e)),e]).sort((e,t)=>e[0]-t[0]).map(e=>e[1]),c=this;Object.defineProperty(c,"tree",{get:()=>r}),Object.defineProperty(c,"list",{get:()=>Array.from(o)}),c.isNode=(e=>o.includes(e)),c.innerNodes=function(e,t){if(!o.includes(e)||!o.includes(t))throw Error("Given nodes are not supernode");let n=[];for(let r=o.indexOf(e)+1;o[r]!=t;r++)r-1?r[t++]=o[c]:c=o.length;return 1==t?r[0]:r},c.nextNode=function(e,t=1){let n=t||o.length;if(!o.includes(e))throw Error("Given node is not supernode");n||(n=o.length);let r=[];for(let t=0,c=o.indexOf(e)+1;te.floID);return 1==t?a[0]:a}};d.init=function(e){return new Promise((t,n)=>{try{I=e,v=new k(f.SNStorageID,Object.keys(I)),t("Cloud init successful")}catch(e){n(e)}})},Object.defineProperty(d,"kBucket",{get:()=>v});const O=new Set,w={};Object.defineProperty(d,"liveRequest",{get:()=>w}),Object.defineProperty(d,"inactive",{get:()=>O});const j=d.util={},S=j.encodeMessage=function(e){return btoa(unescape(encodeURIComponent(JSON.stringify(e))))},C=j.decodeMessage=function(e){return JSON.parse(decodeURIComponent(escape(atob(e))))},P=j.filterKey=function(e,t={}){return e+(t.comment?":"+t.comment:"")+"|"+(t.group||t.receiverID||f.adminID)+"|"+(t.application||f.application)},N=j.proxyID=function(e){if(e){var t;if(33==e.length||34==e.length){let n=bitjs.Base58.decode(e);t=n.slice(0,n.length-4);let r=n.slice(n.length-4),o=Crypto.SHA256(Crypto.SHA256(t,{asBytes:!0}),{asBytes:!0});o[0]!=r[0]||o[1]!=r[1]||o[2]!=r[2]||o[3]!=r[3]?t=void 0:t.shift()}else if(42==e.length||62==e.length){if("function"!=typeof coinjs)throw"library missing (lib_btc.js)";let n=coinjs.bech32_decode(e);n&&(t=n.data,t.shift(),t=coinjs.bech32_convert(t,5,8,!1),62==e.length&&(t=coinjs.bech32_convert(t,5,8,!1)))}else 66==e.length&&(t=ripemd160(Crypto.SHA256(Crypto.util.hexToBytes(e),{asBytes:!0})));if(t){t.unshift(f.blockchainPrefix);let e=Crypto.SHA256(Crypto.SHA256(t,{asBytes:!0}),{asBytes:!0});return bitjs.Base58.encode(t.concat(e.slice(0,4)))}throw"Invalid address: "+e}},A={};Object.defineProperty(A,"get",{value:e=>JSON.parse(A[e])}),Object.defineProperty(A,"set",{value:e=>A[e]=JSON.stringify(g[e])}),d.setStatus=function(e={}){return new Promise((n,r)=>{let o=e.callback instanceof Function?e.callback:f.callback;var c={floID:t.id,application:e.application||f.application,time:Date.now(),status:!0,pubKey:t.public};let i=["time","application","floID"].map(e=>c[e]).join("|");c.sign=t.sign(i),a(e.refID||f.adminID,c,o).then(e=>n(e)).catch(e=>r(e))})},d.requestStatus=function(e,t={}){return new Promise((n,r)=>{Array.isArray(e)||(e=[e]);let o=t.callback instanceof Function?t.callback:f.callback,c={status:!1,application:t.application||f.application,trackList:e};a(t.refID||f.adminID,c,o).then(e=>n(e)).catch(e=>r(e))})};const B=d.sendApplicationData=function(e,n,r={}){return new Promise((o,c)=>{var a={senderID:t.id,receiverID:r.receiverID||f.adminID,pubKey:t.public,message:S(e),time:Date.now(),application:r.application||f.application,type:n,comment:r.comment||""};let l=["receiverID","time","application","type","message","comment"].map(e=>a[e]).join("|");a.sign=t.sign(l),i(a.receiverID,a).then(e=>o(e)).catch(e=>c(e))})},x=d.requestApplicationData=function(e,t={}){return new Promise((n,r)=>{var o={receiverID:t.receiverID||f.adminID,senderID:t.senderID||void 0,application:t.application||f.application,type:e,comment:t.comment||void 0,lowerVectorClock:t.lowerVectorClock||void 0,upperVectorClock:t.upperVectorClock||void 0,atVectorClock:t.atVectorClock||void 0,afterTime:t.afterTime||void 0,mostRecent:t.mostRecent||void 0};t.callback instanceof Function?a(o.receiverID,o,t.callback).then(e=>n(e)).catch(e=>r(e)):("POST"===t.method&&(o={time:Date.now(),request:o}),i(o.receiverID,o,t.method||"GET").then(e=>n(e)).catch(e=>r(e)))})};d.tagApplicationData=function(e,n,r={}){return new Promise((o,c)=>{if(!floGlobals.subAdmins.includes(t.id))return c("Only subAdmins can tag data");var a={receiverID:r.receiverID||f.adminID,requestorID:t.id,pubKey:t.public,time:Date.now(),vectorClock:e,tag:n};let l=["time","vectorClock","tag"].map(e=>a[e]).join("|");a.sign=t.sign(l),i(a.receiverID,a).then(e=>o(e)).catch(e=>c(e))})},d.noteApplicationData=function(e,n,r={}){return new Promise((o,c)=>{var a={receiverID:r.receiverID||f.adminID,requestorID:t.id,pubKey:t.public,time:Date.now(),vectorClock:e,note:n};let l=["time","vectorClock","note"].map(e=>a[e]).join("|");a.sign=t.sign(l),i(a.receiverID,a).then(e=>o(e)).catch(e=>c(e))})},d.sendGeneralData=function(e,t,n={}){return new Promise((r,o)=>{if(n.encrypt){let t=!0===n.encrypt?floGlobals.settings.encryptionKey:n.encrypt;e=floCrypto.encryptData(JSON.stringify(e),t)}B(e,t,n).then(e=>r(e)).catch(e=>o(e))})},d.requestGeneralData=function(e,t={}){return new Promise((n,r)=>{var o=P(e,t);if(D[o]=parseInt(D[o])||0,t.afterTime=t.afterTime||D[o],t.callback instanceof Function){let c=Object.create(t);c.callback=((e,n)=>{s(o,e),t.callback(e,n)}),x(e,c).then(e=>n(e)).catch(e=>r(e))}else x(e,t).then(e=>{s(o,u(e)),n(e)}).catch(e=>r(e))})},d.requestObjectData=function(e,t={}){return new Promise((n,r)=>{t.lowerVectorClock=t.lowerVectorClock||D[e]+1,t.senderID=[!1,null].includes(t.senderID)?null:t.senderID||floGlobals.subAdmins,t.mostRecent=!0,t.comment="RESET";let o=null;if(t.callback instanceof Function){let n=t.callback;o=((t,r)=>{l(e,t),n(t,r)}),delete t.callback}x(e,t).then(c=>{if(l(e,u(c)),delete t.comment,t.lowerVectorClock=D[e]+1,delete t.mostRecent,o){let c=Object.create(t);c.callback=o,x(e,c).then(e=>n(e)).catch(e=>r(e))}else x(e,t).then(t=>{l(e,u(t)),n(g[e])}).catch(e=>r(e))}).catch(e=>r(e))})},d.closeRequest=function(e){return new Promise((t,n)=>{let r=w[e];if(!r)return n("Request not found");r.onclose=(n=>{delete w[e],t("Request connection closed")}),r.close()})},d.resetObjectData=function(e,t={}){return new Promise((n,r)=>{let o={reset:g[e]};t.comment="RESET",B(o,e,t).then(t=>{A.set(e),n(t)}).catch(e=>r(e))})},d.updateObjectData=function(e,t={}){return new Promise((n,r)=>{let o={diff:E.find(A.get(e),g[e])};t.comment="UPDATE",B(o,e,t).then(t=>{A.set(e),n(t)}).catch(e=>r(e))})};var E=function(){const e=e=>e instanceof Date,t=e=>0===Object.keys(e).length,n=e=>null!=e&&"object"==typeof e,r=e=>n(e)&&!e.hasOwnProperty?{...e}:e,o=(c,i)=>{if(c===i)return{};if(!n(c)||!n(i))return i;const a=r(c),l=r(i);return e(a)||e(l)?a.valueOf()==l.valueOf()?{}:l:Object.keys(l).reduce((r,c)=>{if(a.hasOwnProperty(c)){const i=o(a[c],l[c]);return n(i)&&t(i)&&!e(i)?r:{...r,[c]:i}}return r},{})},c=(e,o)=>{if(e===o||!n(e)||!n(o))return{};const i=r(e),a=r(o);return Object.keys(a).reduce((e,r)=>{if(i.hasOwnProperty(r)){const o=c(i[r],a[r]);return n(o)&&t(o)?e:{...e,[r]:o}}return{...e,[r]:a[r]}},{})},i=(e,o)=>{if(e===o||!n(e)||!n(o))return{};const c=r(e),a=r(o);return Object.keys(c).reduce((e,r)=>{if(a.hasOwnProperty(r)){const o=i(c[r],a[r]);return n(o)&&t(o)?e:{...e,[r]:o}}return{...e,[r]:null}},{})},a=(e,t)=>{for(var n in t)try{t[n].constructor==Object?e[n]=a(e[n],t[n]):Ext.isArray(t[n])?t[n].length<1?e[n]=t[n]:e[n]=a(e[n],t[n]):e[n]=t[n]}catch(r){e[n]=t[n]}return e},l=e=>(Object.keys(e).forEach(t=>{var n=e[t];"object"==typeof n&&null!==n?l(n):null===n&&delete e[t]}),-1!=e.constructor.toString().indexOf("Array")&&(e=e.filter(function(e){return null!=e})),e),s=(e,t)=>({added:c(e,t),deleted:i(e,t),updated:o(e,t)}),u=(e,t)=>(0!==Object.keys(t.updated).length&&(e=a(e,t.updated)),0!==Object.keys(t.deleted).length&&(e=a(e,t.deleted),e=l(e)),0!==Object.keys(t.added).length&&(e=a(e,t.added)),e);return{find:s,merge:u}}()})("object"==typeof module?module.exports:window.floCloudAPI={});
\ No newline at end of file
+(function(e){"use strict";function t(e,n){if(!n||!e)return t.clear();let r=floCrypto.getPubKeyHex(n);if(!r||!floCrypto.verifyPubKey(r,e))return t.clear();let o=floCrypto.randInt(12,20);return y=floCrypto.randString(o),h=Crypto.AES.encrypt(n,y),m=r,p=e,p}function n(e){return new Promise((t,n)=>{if(!(e in I))return n(`${e} is not a supernode`);if(O.has(e))return n(`${e} is not active`);var r=new WebSocket("wss://"+I[e].uri+"/");r.onopen=(e=>t(r)),r.onerror=(t=>{O.add(e),n(`${e} is unavailable`)})})}function r(e,t=!1){return new Promise((o,c)=>{if(O.size===v.list.length)return c("Cloud offline");e in I||(e=v.closestNode(N(e))),n(e).then(e=>o(e)).catch(n=>{if(t)var i=v.prevNode(e);else i=v.nextNode(e);r(i,t).then(e=>o(e)).catch(e=>c(e))})})}function o(e,t){return new Promise((n,r)=>{if(O.has(e))return r(`${e} is not active`);let o,c="https://"+I[e].uri;"string"==typeof t?o=fetch(c+"?"+t):"object"==typeof t&&"POST"===t.method&&(o=fetch(c,t)),o.then(e=>{e.ok||400===e.status||500===e.status?n(e):r(e)}).catch(e=>r(e))})}function c(e,t,n=!1){return new Promise((r,i)=>{if(O.size===v.list.length)return i("Cloud offline");e in I||(e=v.closestNode(N(e))),o(e,t).then(e=>r(e)).catch(o=>{if(O.add(e),n)var a=v.prevNode(e);else a=v.nextNode(e);c(a,t,n).then(e=>r(e)).catch(e=>i(e))})})}function i(e,t,n="POST"){return new Promise((r,o)=>{let i;i="POST"===n?{method:"POST",body:JSON.stringify(t)}:new URLSearchParams(JSON.parse(JSON.stringify(t))).toString(),c(e,i).then(e=>{e.ok?e.json().then(e=>r(e)).catch(e=>o(e)):e.text().then(t=>o(e.status+": "+t)).catch(e=>o(e))}).catch(e=>o(e))})}function a(e,t,n){const o=void 0!==t.status?e=>{if(t.status)return e;{let n={};for(let r in e)t.trackList.includes(r)&&(n[r]=e[r]);return n}}:e=>{e=u(e);let n={},r=N(t.receiverID),o=t;for(let t in e){let c=e[t];o.atVectorClock&&o.atVectorClock!=t||!(o.atVectorClock||!o.lowerVectorClock||o.lowerVectorClock<=t)||!(o.atVectorClock||!o.upperVectorClock||o.upperVectorClock>=t)||o.afterTime&&!(o.afterTime{r(e).then(e=>{let r=floCrypto.randString(5);e.send(JSON.stringify(t)),e.onmessage=(e=>{let t=null,r=null;try{t=o(JSON.parse(e.data))}catch(t){r=e.data}finally{n(t,r)}}),w[r]=e,w[r].request=t,c(r)}).catch(e=>i(e))})}function l(e,t){try{console.log(t);let n=Object.keys(t).sort();for(let r of n)if(!(rD[e]&&(D[e]=t[n].log_time);compactIDB.writeData("lastVC",D[e],e),compactIDB.writeData("generalData",b[e],e)}catch(e){console.error(e)}}function u(e){return Array.isArray(e)||(e=[e]),Object.fromEntries(e.map(e=>(e.message=P(e.message),[e.vectorClock,e])))}const d=e,f={blockchainPrefix:35,SNStorageID:floGlobals.SNStorageID||"FNaN9McoBAEFUjkRmNQRYLmBF8SpS7Tgfk",adminID:floGlobals.adminID,application:floGlobals.application,callback:(e,t)=>console.debug(e,t)};var p,m,h,y,g,b,D;Object.defineProperties(t,{id:{get:()=>{if(!p)throw"User not set";return p}},public:{get:()=>{if(!m)throw"User not set";return m}},sign:{value:e=>{if(!h)throw"User not set";return floCrypto.signData(e,Crypto.AES.decrypt(h,y))}},clear:{value:()=>p=m=h=y=void 0}}),Object.defineProperties(d,{SNStorageID:{get:()=>f.SNStorageID},adminID:{get:()=>f.adminID},application:{get:()=>f.application},user:{get:()=>t}}),Object.defineProperties(floGlobals,{appObjects:{get:()=>g,set:e=>g=e},generalData:{get:()=>b,set:e=>b=e},generalDataset:{value:(e,t={})=>b[S(e,t)]},lastVC:{get:()=>D,set:e=>D=e}});var v,I={};Object.defineProperty(d,"nodes",{get:()=>JSON.parse(JSON.stringify(I))});const k=d.K_Bucket=function(e,t){const n=e=>{let t=bitjs.Base58.decode(e);t.shift(),t.splice(-4,4);let n=Crypto.util.bytesToHex(t),r=new BigInteger(n,16),o=r.toByteArrayUnsigned(),c=new Uint8Array(o);return c},r=new BuildKBucket({localNodeId:n(e)});t.forEach(e=>r.add({id:n(e),floID:e}));const o=t.map(e=>[r.distance(r.localNodeId,n(e)),e]).sort((e,t)=>e[0]-t[0]).map(e=>e[1]),c=this;Object.defineProperty(c,"tree",{get:()=>r}),Object.defineProperty(c,"list",{get:()=>Array.from(o)}),c.isNode=(e=>o.includes(e)),c.innerNodes=function(e,t){if(!o.includes(e)||!o.includes(t))throw Error("Given nodes are not supernode");let n=[];for(let r=o.indexOf(e)+1;o[r]!=t;r++)r-1?r[t++]=o[c]:c=o.length;return 1==t?r[0]:r},c.nextNode=function(e,t=1){let n=t||o.length;if(!o.includes(e))throw Error("Given node is not supernode");n||(n=o.length);let r=[];for(let t=0,c=o.indexOf(e)+1;te.floID);return 1==t?a[0]:a}};d.init=function(e){return new Promise((t,n)=>{try{I=e,v=new k(f.SNStorageID,Object.keys(I)),t("Cloud init successful")}catch(e){n(e)}})},Object.defineProperty(d,"kBucket",{get:()=>v});const O=new Set,w={};Object.defineProperty(d,"liveRequest",{get:()=>w}),Object.defineProperty(d,"inactive",{get:()=>O});const j=d.util={},C=j.encodeMessage=function(e){return btoa(unescape(encodeURIComponent(JSON.stringify(e))))},P=j.decodeMessage=function(e){return JSON.parse(decodeURIComponent(escape(atob(e))))},S=j.filterKey=function(e,t={}){return e+(t.comment?":"+t.comment:"")+"|"+(t.group||t.receiverID||f.adminID)+"|"+(t.application||f.application)},N=j.proxyID=function(e){if(e){var t;if(33==e.length||34==e.length){let n=bitjs.Base58.decode(e);t=n.slice(0,n.length-4);let r=n.slice(n.length-4),o=Crypto.SHA256(Crypto.SHA256(t,{asBytes:!0}),{asBytes:!0});o[0]!=r[0]||o[1]!=r[1]||o[2]!=r[2]||o[3]!=r[3]?t=void 0:t.shift()}else if(42==e.length||62==e.length){if("function"!=typeof coinjs)throw"library missing (lib_btc.js)";let n=coinjs.bech32_decode(e);n&&(t=n.data,t.shift(),t=coinjs.bech32_convert(t,5,8,!1),62==e.length&&(t=coinjs.bech32_convert(t,5,8,!1)))}else 66==e.length&&(t=ripemd160(Crypto.SHA256(Crypto.util.hexToBytes(e),{asBytes:!0})));if(t){t.unshift(f.blockchainPrefix);let e=Crypto.SHA256(Crypto.SHA256(t,{asBytes:!0}),{asBytes:!0});return bitjs.Base58.encode(t.concat(e.slice(0,4)))}throw"Invalid address: "+e}},A={};Object.defineProperty(A,"get",{value:e=>JSON.parse(A[e])}),Object.defineProperty(A,"set",{value:e=>A[e]=JSON.stringify(g[e])}),d.setStatus=function(e={}){return new Promise((n,r)=>{let o=e.callback instanceof Function?e.callback:f.callback;var c={floID:t.id,application:e.application||f.application,time:Date.now(),status:!0,pubKey:t.public};let i=["time","application","floID"].map(e=>c[e]).join("|");c.sign=t.sign(i),a(e.refID||f.adminID,c,o).then(e=>n(e)).catch(e=>r(e))})},d.requestStatus=function(e,t={}){return new Promise((n,r)=>{Array.isArray(e)||(e=[e]);let o=t.callback instanceof Function?t.callback:f.callback,c={status:!1,application:t.application||f.application,trackList:e};a(t.refID||f.adminID,c,o).then(e=>n(e)).catch(e=>r(e))})};const B=d.sendApplicationData=function(e,n,r={}){return new Promise((o,c)=>{var a={senderID:t.id,receiverID:r.receiverID||f.adminID,pubKey:t.public,message:C(e),time:Date.now(),application:r.application||f.application,type:n,comment:r.comment||""};let l=["receiverID","time","application","type","message","comment"].map(e=>a[e]).join("|");a.sign=t.sign(l),i(a.receiverID,a).then(e=>o(e)).catch(e=>c(e))})},T=d.requestApplicationData=function(e,t={}){return new Promise((n,r)=>{var o={receiverID:t.receiverID||f.adminID,senderID:t.senderID||void 0,application:t.application||f.application,type:e,comment:t.comment||void 0,lowerVectorClock:t.lowerVectorClock||void 0,upperVectorClock:t.upperVectorClock||void 0,atVectorClock:t.atVectorClock||void 0,afterTime:t.afterTime||void 0,mostRecent:t.mostRecent||void 0};t.callback instanceof Function?a(o.receiverID,o,t.callback).then(e=>n(e)).catch(e=>r(e)):("POST"===t.method&&(o={time:Date.now(),request:o}),i(o.receiverID,o,t.method||"GET").then(e=>n(e)).catch(e=>r(e)))})};d.tagApplicationData=function(e,n,r={}){return new Promise((o,c)=>{if(!floGlobals.subAdmins.includes(t.id))return c("Only subAdmins can tag data");var a={receiverID:r.receiverID||f.adminID,requestorID:t.id,pubKey:t.public,time:Date.now(),vectorClock:e,tag:n};let l=["time","vectorClock","tag"].map(e=>a[e]).join("|");a.sign=t.sign(l),i(a.receiverID,a).then(e=>o(e)).catch(e=>c(e))})},d.noteApplicationData=function(e,n,r={}){return new Promise((o,c)=>{var a={receiverID:r.receiverID||f.adminID,requestorID:t.id,pubKey:t.public,time:Date.now(),vectorClock:e,note:n};let l=["time","vectorClock","note"].map(e=>a[e]).join("|");a.sign=t.sign(l),i(a.receiverID,a).then(e=>o(e)).catch(e=>c(e))})},d.sendGeneralData=function(e,t,n={}){return new Promise((r,o)=>{if(n.encrypt){let t=!0===n.encrypt?floGlobals.settings.encryptionKey:n.encrypt;e=floCrypto.encryptData(JSON.stringify(e),t)}B(e,t,n).then(e=>r(e)).catch(e=>o(e))})},d.requestGeneralData=function(e,t={}){return new Promise((n,r)=>{var o=S(e,t);if(D[o]=parseInt(D[o])||0,t.afterTime=t.afterTime||D[o],t.callback instanceof Function){let c=Object.create(t);c.callback=((e,n)=>{s(o,e),t.callback(e,n)}),T(e,c).then(e=>n(e)).catch(e=>r(e))}else T(e,t).then(e=>{s(o,u(e)),n(e)}).catch(e=>r(e))})},d.requestObjectData=function(e,t={}){return new Promise((n,r)=>{t.lowerVectorClock=t.lowerVectorClock||D[e]+1,t.senderID=[!1,null].includes(t.senderID)?null:t.senderID||floGlobals.subAdmins,t.mostRecent=!0,t.comment="RESET";let o=null;if(t.callback instanceof Function){let n=t.callback;o=((t,r)=>{l(e,t),n(t,r)}),delete t.callback}T(e,t).then(c=>{if(l(e,u(c)),delete t.comment,t.lowerVectorClock=D[e]+1,delete t.mostRecent,o){let c=Object.create(t);c.callback=o,T(e,c).then(e=>n(e)).catch(e=>r(e))}else T(e,t).then(t=>{l(e,u(t)),n(g[e])}).catch(e=>r(e))}).catch(e=>r(e))})},d.closeRequest=function(e){return new Promise((t,n)=>{let r=w[e];if(!r)return n("Request not found");r.onclose=(n=>{delete w[e],t("Request connection closed")}),r.close()})},d.resetObjectData=function(e,t={}){return new Promise((n,r)=>{let o={reset:g[e]};t.comment="RESET",B(o,e,t).then(t=>{A.set(e),n(t)}).catch(e=>r(e))})},d.updateObjectData=function(e,t={}){return new Promise((n,r)=>{let o={diff:V.find(A.get(e),g[e])};t.comment="UPDATE",B(o,e,t).then(t=>{A.set(e),n(t)}).catch(e=>r(e))})};var V=function(){const e=e=>e instanceof Date,t=e=>0===Object.keys(e).length,n=e=>null!=e&&"object"==typeof e,r=e=>n(e)&&!e.hasOwnProperty?{...e}:e,o=(c,i)=>{if(c===i)return{};if(!n(c)||!n(i))return i;const a=r(c),l=r(i);return e(a)||e(l)?a.valueOf()==l.valueOf()?{}:l:Object.keys(l).reduce((r,c)=>{if(a.hasOwnProperty(c)){const i=o(a[c],l[c]);return n(i)&&t(i)&&!e(i)?r:{...r,[c]:i}}return r},{})},c=(e,o)=>{if(e===o||!n(e)||!n(o))return{};const i=r(e),a=r(o);return Object.keys(a).reduce((e,r)=>{if(i.hasOwnProperty(r)){const o=c(i[r],a[r]);return n(o)&&t(o)?e:{...e,[r]:o}}return{...e,[r]:a[r]}},{})},i=(e,o)=>{if(e===o||!n(e)||!n(o))return{};const c=r(e),a=r(o);return Object.keys(c).reduce((e,r)=>{if(a.hasOwnProperty(r)){const o=i(c[r],a[r]);return n(o)&&t(o)?e:{...e,[r]:o}}return{...e,[r]:null}},{})},a=(e,t,n=!1)=>{for(var r in t)try{t[r].constructor==Object?e[r]=a(e[r],t[r],n):Array.isArray(t[r])?t[r].length<1?e[r]=t[r]:e[r]=a(e[r],t[r],n):e[r]=n&&null===t[r]?void 0:t[r]}catch(o){e[r]=n&&null===t[r]?void 0:t[r]}return e},l=e=>(Object.keys(e).forEach(t=>{var n=e[t];"object"==typeof n&&null!==n?e[t]=l(n):void 0===n&&delete e[t]}),Array.isArray(e)&&(e=e.filter(e=>void 0!==e)),e),s=(e,t)=>({added:c(e,t),deleted:i(e,t),updated:o(e,t)}),u=(e,t)=>(0!==Object.keys(t.updated).length&&(e=a(e,t.updated)),0!==Object.keys(t.deleted).length&&(e=a(e,t.deleted,!0),e=l(e)),0!==Object.keys(t.added).length&&(e=a(e,t.added)),e);return{find:s,merge:u}}()})("object"==typeof module?module.exports:window.floCloudAPI={});
\ No newline at end of file
diff --git a/scripts/ribc.js b/scripts/ribc.js
index 043830c..b475448 100644
--- a/scripts/ribc.js
+++ b/scripts/ribc.js
@@ -167,6 +167,12 @@
_.internRating[floID] = 1
return true;
}
+ Admin.renameIntern = function (floID, newName) {
+ if (!(floID in _.internList))
+ return false;
+ _.internList[floID] = newName;
+ return true;
+ }
Admin.removeIntern = function (floID) {
if (!(floID in _.internList))
diff --git a/scripts/ribc.min.js b/scripts/ribc.min.js
index d21f4a5..51e6499 100644
--- a/scripts/ribc.min.js
+++ b/scripts/ribc.min.js
@@ -1 +1 @@
-(function(){function e(e){if(a.projectBranches.hasOwnProperty(e))var t=a.projectBranches[e].split(",");else t=!1;return t}function t(e){for(var t={},n=a.projectBranches[e].split(","),r=0;r{Promise.all([n.refreshObjectData(),n.refreshGeneralData(e)]).then(e=>t(e)).catch(e=>r(e))})},n.refreshObjectData=(()=>new Promise((e,t)=>{floCloudAPI.requestObjectData("RIBC").then(t=>{floGlobals.appObjects.RIBC||(floGlobals.appObjects.RIBC={});var n=["projectMap","projectBranches","projectTaskDetails","projectDetails","internList","internRating","internsAssigned","projectTaskStatus","displayedTasks"];n.forEach(e=>{floGlobals.appObjects.RIBC[e]||(floGlobals.appObjects.RIBC[e]={}),a[e]=floGlobals.appObjects.RIBC[e]}),e("Object Data Refreshed Successfully")}).catch(e=>t(e))})),n.refreshGeneralData=(e=>new Promise((t,n)=>{var r=["InternUpdates"],a=[],s=[];(e?r:s).push("TaskRequests","InternRequests");let o=[];for(let e of r)o.push(floCloudAPI.requestGeneralData(e));for(let e of a)o.push(floCloudAPI.requestGeneralData(e,{senderID:floGlobals.subAdmins}));for(let e of s)o.push(floCloudAPI.requestGeneralData(e,{senderID:floDapps.user.id}));Promise.all(o).then(e=>t("General Data Refreshed Successfully")).catch(e=>n(e))}));const a={};n.applyForIntern=(e=>new Promise((t,n)=>{floCloudAPI.sendGeneralData(e,"InternRequests").then(e=>t(e)).catch(e=>n(e))})),n.postInternUpdate=(e=>new Promise((t,n)=>{floCloudAPI.sendGeneralData(e,"InternUpdates").then(e=>t(e)).catch(e=>n(e))})),n.getInternUpdates=function(e=null){let t=Object.values(floGlobals.generalDataset("InternUpdates")).map(e=>({floID:e.senderID,update:e.message,time:e.vectorClock.split("_")[0],note:e.note}));return t=t.filter(e=>e.floID in a.internList),t.reverse(),e&&enew Promise((n,r)=>{if(!(e in floGlobals.generalDataset("InternUpdates")))return r("Intern update not found");floCloudAPI.noteApplicationData(e,t).then(e=>n(e)).catch(e=>r(e))})),n.applyForTask=(e=>new Promise((t,n)=>{floCloudAPI.sendGeneralData(e,"TaskRequests").then(e=>t(e)).catch(e=>n(e))})),n.getProjectList=(()=>Object.keys(a.projectMap)),n.getProjectDetails=(e=>a.projectDetails[e]),n.getProjectMap=(e=>a.projectMap[e]),n.getProjectBranches=(t=>e(t)),n.getTaskDetails=((e,t,n)=>a.projectTaskDetails[e+"_"+t+"_"+n]),n.getTaskStatus=((e,t,n)=>a.projectTaskStatus[e+"_"+t+"_"+n]),n.getInternList=(()=>a.internList),n.getInternRating=(e=>a.internRating[e]),n.getAssignedInterns=((e,t,n)=>a.internsAssigned[e+"_"+t+"_"+n]),n.getAllTasks=(()=>a.projectTaskDetails),n.getDisplayedTasks=(()=>floGlobals.appObjects.RIBC.displayedTasks.filter(e=>e)||[]),r.updateObjects=(()=>new Promise((e,t)=>{floCloudAPI.updateObjectData("RIBC").then(t=>e(t)).catch(e=>t(e))})),r.resetObjects=(()=>new Promise((e,t)=>{floCloudAPI.resetObjectData("RIBC").then(t=>e(t)).catch(e=>t(e))})),r.addProjectDetails=function(e,t){if(!(e in a.projectMap))return"Project not Found!";if(e in a.projectDetails&&"object"==typeof e&&"object"==typeof t)for(let n in t)a.projectDetails[e][n]=t[n];else a.projectDetails[e]=t;return"added project details for "+e},n.getInternRequests=function(e=!0){var t=Object.values(floGlobals.generalDataset("InternRequests")).map(e=>({floID:e.senderID,vectorClock:e.vectorClock,details:e.message,status:e.note}));return t=t.filter(e=>!(e.floID in a.internList)),e&&(t=t.filter(e=>!e.status)),t},r.processInternRequest=function(e,t=!0){let n=floGlobals.generalDataset("InternRequests")[e];return n?(r=t&&s(n.senderID,n.message[0])?"Accepted":"Rejected",floCloudAPI.noteApplicationData(e,r).then(e=>null).catch(e=>console.error(e)),r):"Request not found";var r};const s=r.addIntern=function(e,t){return!(e in a.internList)&&(a.internList[e]=t,a.internRating[e]=1,!0)};r.removeIntern=function(e){if(!(e in a.internList))return!1;delete a.internList[e],delete a.internRating[e];for(const t in a.projectTaskDetails)a.internsAssigned[t].includes(e)&&(a.internsAssigned[t]=a.internsAssigned[t].filter(t=>t!=e));return!0},r.updateInternRating=function(e,t=0){return e in a.internList?(a.internRating[e]+=t,"Intern rating Updated"):"Intern not found!"},n.getTaskRequests=function(e=!0){var t=Object.values(floGlobals.generalDataset("TaskRequests")).map(e=>({floID:e.senderID,vectorClock:e.vectorClock,details:e.message,status:e.note}));try{floDapps.user.id&&!floGlobals.subAdmins.includes(floDapps.user.id)&&(t=t.filter(e=>e.floID===floDapps.user.id))}catch(e){return[]}return e&&(t=t.filter(e=>!e.status)),t},r.processTaskRequest=function(e,t=!0){let n=floGlobals.generalDataset("TaskRequests")[e];if(!n)return"Request not found";const{message:{taskId:r,name:a},senderID:i}=n,[c,l,p]=r.split("_");var u;return s(i,a),u=t&&o(i,c,l,p)?"Accepted":"Rejected",floCloudAPI.noteApplicationData(e,u).then(e=>null).catch(e=>console.error(e)),u};const o=r.assignInternToTask=function(e,t,n,r){var s=t+"_"+n+"_"+r;return Array.isArray(a.internsAssigned[s])||(a.internsAssigned[s]=[]),!a.internsAssigned[s].includes(e)&&(a.internsAssigned[s].push(e),!0)};r.unassignInternFromTask=function(e,t,n,r){const s=t+"_"+n+"_"+r;a.internsAssigned[s]=a.internsAssigned[s].filter(t=>t!=e)},r.putTaskStatus=function(e,t,n,r){a.projectTaskStatus[t+"_"+n+"_"+r]=e},r.setDisplayedTasks=function(e=[]){floGlobals.appObjects.RIBC.displayedTasks=e},r.createProject=function(e){return e in a.projectMap?"Project Name already exists":(i(e),"Project Create: "+e)},r.copyBranchToNewProject=function(e,t,n,r,s,o){if("mainLine"==t)return"You cannot change mainLine";if(0==a.projectMap.hasOwnProperty(n))return"The project does not exist";if(0==a.projectMap[n].hasOwnProperty(c))return"The branch does not exist";if(s>o)return"Startpoint cannot be later than endpoint";var c=i(n,r,s,o);a.projectMap[n][c]=a.projectMap[e][t].slice(),a.projectMap[n][c][0]="undefined"==r?"mainLine":"newBranchConnection","undefined"!=s&&(a.projectMap[n][c][2]=s),"undefined"!=o&&(a.projectMap[n][c][3]=o);var l=a.projectTaskDetails;for(var p in l)if(l.hasOwnProperty(p)&&p.contains(e+"_"+t)){var u=p.replace(e+"_"+t+"_","");a.projectTaskDetails[n+"_"+c+"_"+u]=l[p]}return a.projectMap[n][c]},r.deleteTaskInMap=function(e,t,n){for(var r,s=a.projectMap[e][t],o=4;o4&&re!==t||"mainLine"!==e);for(o=0;o=c&&(c=i[p]+1),i[p]==r&&(l=p);return l>3?(i.splice(l+1,0,c),i[1]++,c):"Not possible to insert here.Try another position"},r.changeBranchLine=function(e,t,n,r,s){return"mainLine"==t?"You cannot change mainLine":0==a.projectMap.hasOwnProperty(e)?"The project does not exist":0==a.projectMap[e].hasOwnProperty(t)?"The branch does not exist":0==a.projectMap[e].hasOwnProperty(n)?"The newConnection does not exist":r>s?"Startpoint cannot be later than endpoint":(a.projectMap[e][t][0]=n,"undefined"!=r&&(a.projectMap[e][t][2]=r),"undefined"!=s&&(a.projectMap[e][t][3]=s),a.projectMap[e][t])},r.changeBranchPoint=function(e,t,n,r){var s;return"mainLine"!=t&&(1==r&&(n<=a.projectMap[e][t][3]?(a.projectMap[e][t][2]=n,s=n):s="Start point cannot be later than end point"),2==r&&(n>=a.projectMap[e][t][2]?(a.projectMap[e][t][3]=n,s=n):s="End point cannot be earlier than start point")),"mainLine"==t&&(s="mainLine cannot be rerouted"),s};const i=r.addBranch=function(t,n,r,s){var o,i=e(t);if(0==i)a.projectMap[t]={},a.projectMap[t].mainLine=["mainLine",0,"Start","Stop"],o="mainLine",a.projectBranches[t]="mainLine";else{var c=i[i.length-1];if(c.includes("branch")){var l=c.split("branch"),p=parseFloat(l[1])+1;o="branch"+p,a.projectMap[t]["branch"+p]=[n,0,r,s],a.projectBranches[t]=a.projectBranches[t]+",branch"+p}c.includes("mainLine")&&(o="branch1",a.projectMap[t].branch1=["mainLine",0,r,s],a.projectBranches[t]="mainLine,branch1")}return o};r.editTaskDetails=function(e,t,n,r){a.projectTaskDetails[t+"_"+n+"_"+r]={...a.projectTaskDetails[t+"_"+n+"_"+r],...e}},r.addTaskInMap=function(e,n){var r=[];r=t(e);var s=r[n],o=s+1;return a.projectMap[e][n].push(o),a.projectMap[e][n][1]++,o}})();
\ No newline at end of file
+(function(){function e(e){if(a.projectBranches.hasOwnProperty(e))var t=a.projectBranches[e].split(",");else t=!1;return t}function t(e){for(var t={},n=a.projectBranches[e].split(","),r=0;r{Promise.all([n.refreshObjectData(),n.refreshGeneralData(e)]).then(e=>t(e)).catch(e=>r(e))})},n.refreshObjectData=(()=>new Promise((e,t)=>{floCloudAPI.requestObjectData("RIBC").then(t=>{floGlobals.appObjects.RIBC||(floGlobals.appObjects.RIBC={});var n=["projectMap","projectBranches","projectTaskDetails","projectDetails","internList","internRating","internsAssigned","projectTaskStatus","displayedTasks"];n.forEach(e=>{floGlobals.appObjects.RIBC[e]||(floGlobals.appObjects.RIBC[e]={}),a[e]=floGlobals.appObjects.RIBC[e]}),e("Object Data Refreshed Successfully")}).catch(e=>t(e))})),n.refreshGeneralData=(e=>new Promise((t,n)=>{var r=["InternUpdates"],a=[],s=[];(e?r:s).push("TaskRequests","InternRequests");let o=[];for(let e of r)o.push(floCloudAPI.requestGeneralData(e));for(let e of a)o.push(floCloudAPI.requestGeneralData(e,{senderID:floGlobals.subAdmins}));for(let e of s)o.push(floCloudAPI.requestGeneralData(e,{senderID:floDapps.user.id}));Promise.all(o).then(e=>t("General Data Refreshed Successfully")).catch(e=>n(e))}));const a={};n.applyForIntern=(e=>new Promise((t,n)=>{floCloudAPI.sendGeneralData(e,"InternRequests").then(e=>t(e)).catch(e=>n(e))})),n.postInternUpdate=(e=>new Promise((t,n)=>{floCloudAPI.sendGeneralData(e,"InternUpdates").then(e=>t(e)).catch(e=>n(e))})),n.getInternUpdates=function(e=null){let t=Object.values(floGlobals.generalDataset("InternUpdates")).map(e=>({floID:e.senderID,update:e.message,time:e.vectorClock.split("_")[0],note:e.note}));return t=t.filter(e=>e.floID in a.internList),t.reverse(),e&&enew Promise((n,r)=>{if(!(e in floGlobals.generalDataset("InternUpdates")))return r("Intern update not found");floCloudAPI.noteApplicationData(e,t).then(e=>n(e)).catch(e=>r(e))})),n.applyForTask=(e=>new Promise((t,n)=>{floCloudAPI.sendGeneralData(e,"TaskRequests").then(e=>t(e)).catch(e=>n(e))})),n.getProjectList=(()=>Object.keys(a.projectMap)),n.getProjectDetails=(e=>a.projectDetails[e]),n.getProjectMap=(e=>a.projectMap[e]),n.getProjectBranches=(t=>e(t)),n.getTaskDetails=((e,t,n)=>a.projectTaskDetails[e+"_"+t+"_"+n]),n.getTaskStatus=((e,t,n)=>a.projectTaskStatus[e+"_"+t+"_"+n]),n.getInternList=(()=>a.internList),n.getInternRating=(e=>a.internRating[e]),n.getAssignedInterns=((e,t,n)=>a.internsAssigned[e+"_"+t+"_"+n]),n.getAllTasks=(()=>a.projectTaskDetails),n.getDisplayedTasks=(()=>floGlobals.appObjects.RIBC.displayedTasks.filter(e=>e)||[]),r.updateObjects=(()=>new Promise((e,t)=>{floCloudAPI.updateObjectData("RIBC").then(t=>e(t)).catch(e=>t(e))})),r.resetObjects=(()=>new Promise((e,t)=>{floCloudAPI.resetObjectData("RIBC").then(t=>e(t)).catch(e=>t(e))})),r.addProjectDetails=function(e,t){if(!(e in a.projectMap))return"Project not Found!";if(e in a.projectDetails&&"object"==typeof e&&"object"==typeof t)for(let n in t)a.projectDetails[e][n]=t[n];else a.projectDetails[e]=t;return"added project details for "+e},n.getInternRequests=function(e=!0){var t=Object.values(floGlobals.generalDataset("InternRequests")).map(e=>({floID:e.senderID,vectorClock:e.vectorClock,details:e.message,status:e.note}));return t=t.filter(e=>!(e.floID in a.internList)),e&&(t=t.filter(e=>!e.status)),t},r.processInternRequest=function(e,t=!0){let n=floGlobals.generalDataset("InternRequests")[e];return n?(r=t&&s(n.senderID,n.message[0])?"Accepted":"Rejected",floCloudAPI.noteApplicationData(e,r).then(e=>null).catch(e=>console.error(e)),r):"Request not found";var r};const s=r.addIntern=function(e,t){return!(e in a.internList)&&(a.internList[e]=t,a.internRating[e]=1,!0)};r.renameIntern=function(e,t){return e in a.internList&&(a.internList[e]=t,!0)},r.removeIntern=function(e){if(!(e in a.internList))return!1;delete a.internList[e],delete a.internRating[e];for(const t in a.projectTaskDetails)a.internsAssigned[t].includes(e)&&(a.internsAssigned[t]=a.internsAssigned[t].filter(t=>t!=e));return!0},r.updateInternRating=function(e,t=0){return e in a.internList?(a.internRating[e]+=t,"Intern rating Updated"):"Intern not found!"},n.getTaskRequests=function(e=!0){var t=Object.values(floGlobals.generalDataset("TaskRequests")).map(e=>({floID:e.senderID,vectorClock:e.vectorClock,details:e.message,status:e.note}));try{floDapps.user.id&&!floGlobals.subAdmins.includes(floDapps.user.id)&&(t=t.filter(e=>e.floID===floDapps.user.id))}catch(e){return[]}return e&&(t=t.filter(e=>!e.status)),t},r.processTaskRequest=function(e,t=!0){let n=floGlobals.generalDataset("TaskRequests")[e];if(!n)return"Request not found";const{message:{taskId:r,name:a},senderID:i}=n,[c,l,p]=r.split("_");var u;return s(i,a),u=t&&o(i,c,l,p)?"Accepted":"Rejected",floCloudAPI.noteApplicationData(e,u).then(e=>null).catch(e=>console.error(e)),u};const o=r.assignInternToTask=function(e,t,n,r){var s=t+"_"+n+"_"+r;return Array.isArray(a.internsAssigned[s])||(a.internsAssigned[s]=[]),!a.internsAssigned[s].includes(e)&&(a.internsAssigned[s].push(e),!0)};r.unassignInternFromTask=function(e,t,n,r){const s=t+"_"+n+"_"+r;a.internsAssigned[s]=a.internsAssigned[s].filter(t=>t!=e)},r.putTaskStatus=function(e,t,n,r){a.projectTaskStatus[t+"_"+n+"_"+r]=e},r.setDisplayedTasks=function(e=[]){floGlobals.appObjects.RIBC.displayedTasks=e},r.createProject=function(e){return e in a.projectMap?"Project Name already exists":(i(e),"Project Create: "+e)},r.copyBranchToNewProject=function(e,t,n,r,s,o){if("mainLine"==t)return"You cannot change mainLine";if(0==a.projectMap.hasOwnProperty(n))return"The project does not exist";if(0==a.projectMap[n].hasOwnProperty(c))return"The branch does not exist";if(s>o)return"Startpoint cannot be later than endpoint";var c=i(n,r,s,o);a.projectMap[n][c]=a.projectMap[e][t].slice(),a.projectMap[n][c][0]="undefined"==r?"mainLine":"newBranchConnection","undefined"!=s&&(a.projectMap[n][c][2]=s),"undefined"!=o&&(a.projectMap[n][c][3]=o);var l=a.projectTaskDetails;for(var p in l)if(l.hasOwnProperty(p)&&p.contains(e+"_"+t)){var u=p.replace(e+"_"+t+"_","");a.projectTaskDetails[n+"_"+c+"_"+u]=l[p]}return a.projectMap[n][c]},r.deleteTaskInMap=function(e,t,n){for(var r,s=a.projectMap[e][t],o=4;o4&&re!==t||"mainLine"!==e);for(o=0;o=c&&(c=i[p]+1),i[p]==r&&(l=p);return l>3?(i.splice(l+1,0,c),i[1]++,c):"Not possible to insert here.Try another position"},r.changeBranchLine=function(e,t,n,r,s){return"mainLine"==t?"You cannot change mainLine":0==a.projectMap.hasOwnProperty(e)?"The project does not exist":0==a.projectMap[e].hasOwnProperty(t)?"The branch does not exist":0==a.projectMap[e].hasOwnProperty(n)?"The newConnection does not exist":r>s?"Startpoint cannot be later than endpoint":(a.projectMap[e][t][0]=n,"undefined"!=r&&(a.projectMap[e][t][2]=r),"undefined"!=s&&(a.projectMap[e][t][3]=s),a.projectMap[e][t])},r.changeBranchPoint=function(e,t,n,r){var s;return"mainLine"!=t&&(1==r&&(n<=a.projectMap[e][t][3]?(a.projectMap[e][t][2]=n,s=n):s="Start point cannot be later than end point"),2==r&&(n>=a.projectMap[e][t][2]?(a.projectMap[e][t][3]=n,s=n):s="End point cannot be earlier than start point")),"mainLine"==t&&(s="mainLine cannot be rerouted"),s};const i=r.addBranch=function(t,n,r,s){var o,i=e(t);if(0==i)a.projectMap[t]={},a.projectMap[t].mainLine=["mainLine",0,"Start","Stop"],o="mainLine",a.projectBranches[t]="mainLine";else{var c=i[i.length-1];if(c.includes("branch")){var l=c.split("branch"),p=parseFloat(l[1])+1;o="branch"+p,a.projectMap[t]["branch"+p]=[n,0,r,s],a.projectBranches[t]=a.projectBranches[t]+",branch"+p}c.includes("mainLine")&&(o="branch1",a.projectMap[t].branch1=["mainLine",0,r,s],a.projectBranches[t]="mainLine,branch1")}return o};r.editTaskDetails=function(e,t,n,r){a.projectTaskDetails[t+"_"+n+"_"+r]={...a.projectTaskDetails[t+"_"+n+"_"+r],...e}},r.addTaskInMap=function(e,n){var r=[];r=t(e);var s=r[n],o=s+1;return a.projectMap[e][n].push(o),a.projectMap[e][n][1]++,o}})();
\ No newline at end of file