@@ -23,75 +23,6 @@ qx.Class.define("osparc.study.Utils", {
2323 type : "static" ,
2424
2525 statics : {
26- isAnyLinkedNodeMissing : function ( studyData ) {
27- const existingNodeIds = Object . keys ( studyData [ "workbench" ] ) ;
28- const linkedNodeIds = osparc . data . model . Workbench . getLinkedNodeIds ( studyData [ "workbench" ] ) ;
29- const allExist = linkedNodeIds . every ( linkedNodeId => existingNodeIds . includes ( linkedNodeId ) ) ;
30- return ! allExist ;
31- } ,
32-
33- extractUniqueServices : function ( workbench ) {
34- const services = new Set ( [ ] ) ;
35- Object . values ( workbench ) . forEach ( srv => {
36- services . add ( {
37- key : srv . key ,
38- version : srv . version
39- } ) ;
40- } ) ;
41- return Array . from ( services ) ;
42- } ,
43-
44- getCantExecuteServices : function ( studyServices = [ ] ) {
45- return studyServices . filter ( studyService => studyService [ "myAccessRights" ] [ "execute" ] === false ) ;
46- } ,
47-
48- anyServiceRetired : function ( studyServices ) {
49- const isRetired = studyServices . some ( studyService => {
50- if ( studyService [ "release" ] && studyService [ "release" ] [ "retired" ] ) {
51- const retirementDate = new Date ( studyService [ "release" ] [ "retired" ] ) ;
52- const currentDate = new Date ( ) ;
53- return retirementDate < currentDate ;
54- }
55- return false ;
56- } ) ;
57- return isRetired ;
58- } ,
59-
60- anyServiceDeprecated : function ( studyServices ) {
61- const isDeprecated = studyServices . some ( studyService => {
62- if ( studyService [ "release" ] && studyService [ "release" ] [ "retired" ] ) {
63- const retirementDate = new Date ( studyService [ "release" ] [ "retired" ] ) ;
64- const currentDate = new Date ( ) ;
65- return retirementDate > currentDate ;
66- }
67- return false ;
68- } ) ;
69- return isDeprecated ;
70- } ,
71-
72- anyServiceUpdatable : function ( studyServices ) {
73- const isUpdatable = studyServices . some ( studyService => {
74- if ( studyService [ "release" ] && studyService [ "release" ] [ "compatibility" ] ) {
75- return Boolean ( studyService [ "release" ] [ "compatibility" ] ) ;
76- }
77- return false ;
78- } ) ;
79- return isUpdatable ;
80- } ,
81-
82- updatableNodeIds : function ( workbench , studyServices ) {
83- const nodeIds = [ ] ;
84- for ( const nodeId in workbench ) {
85- const node = workbench [ nodeId ] ;
86- const studyServiceFound = studyServices . find ( studyService => studyService [ "key" ] === node [ "key" ] && studyService [ "release" ] [ "version" ] === node [ "version" ] ) ;
87- if ( studyServiceFound && studyServiceFound [ "release" ] && studyServiceFound [ "release" ] [ "compatibility" ] ) {
88- nodeIds . push ( nodeId ) ;
89- }
90- }
91- return nodeIds ;
92- } ,
93-
94-
9526 createStudyFromService : function ( key , version , existingStudies , newStudyLabel , contextProps = { } ) {
9627 return new Promise ( ( resolve , reject ) => {
9728 osparc . store . Services . getService ( key , version )
@@ -257,6 +188,91 @@ qx.Class.define("osparc.study.Utils", {
257188 } ) ;
258189 } ,
259190
191+ duplicateStudy : function ( studyData ) {
192+ const text = qx . locale . Manager . tr ( "Duplicate process started and added to the background tasks" ) ;
193+ osparc . FlashMessenger . logAs ( text , "INFO" ) ;
194+
195+ const params = {
196+ url : {
197+ "studyId" : studyData [ "uuid" ]
198+ }
199+ } ;
200+ const options = {
201+ pollTask : true
202+ } ;
203+ const fetchPromise = osparc . data . Resources . fetch ( "studies" , "duplicate" , params , options ) ;
204+ const pollTasks = osparc . store . PollTasks . getInstance ( ) ;
205+ return pollTasks . createPollingTask ( fetchPromise )
206+ } ,
207+
208+ isAnyLinkedNodeMissing : function ( studyData ) {
209+ const existingNodeIds = Object . keys ( studyData [ "workbench" ] ) ;
210+ const linkedNodeIds = osparc . data . model . Workbench . getLinkedNodeIds ( studyData [ "workbench" ] ) ;
211+ const allExist = linkedNodeIds . every ( linkedNodeId => existingNodeIds . includes ( linkedNodeId ) ) ;
212+ return ! allExist ;
213+ } ,
214+
215+ extractUniqueServices : function ( workbench ) {
216+ const services = new Set ( [ ] ) ;
217+ Object . values ( workbench ) . forEach ( srv => {
218+ services . add ( {
219+ key : srv . key ,
220+ version : srv . version
221+ } ) ;
222+ } ) ;
223+ return Array . from ( services ) ;
224+ } ,
225+
226+ getCantExecuteServices : function ( studyServices = [ ] ) {
227+ return studyServices . filter ( studyService => studyService [ "myAccessRights" ] [ "execute" ] === false ) ;
228+ } ,
229+
230+ anyServiceRetired : function ( studyServices ) {
231+ const isRetired = studyServices . some ( studyService => {
232+ if ( studyService [ "release" ] && studyService [ "release" ] [ "retired" ] ) {
233+ const retirementDate = new Date ( studyService [ "release" ] [ "retired" ] ) ;
234+ const currentDate = new Date ( ) ;
235+ return retirementDate < currentDate ;
236+ }
237+ return false ;
238+ } ) ;
239+ return isRetired ;
240+ } ,
241+
242+ anyServiceDeprecated : function ( studyServices ) {
243+ const isDeprecated = studyServices . some ( studyService => {
244+ if ( studyService [ "release" ] && studyService [ "release" ] [ "retired" ] ) {
245+ const retirementDate = new Date ( studyService [ "release" ] [ "retired" ] ) ;
246+ const currentDate = new Date ( ) ;
247+ return retirementDate > currentDate ;
248+ }
249+ return false ;
250+ } ) ;
251+ return isDeprecated ;
252+ } ,
253+
254+ anyServiceUpdatable : function ( studyServices ) {
255+ const isUpdatable = studyServices . some ( studyService => {
256+ if ( studyService [ "release" ] && studyService [ "release" ] [ "compatibility" ] ) {
257+ return Boolean ( studyService [ "release" ] [ "compatibility" ] ) ;
258+ }
259+ return false ;
260+ } ) ;
261+ return isUpdatable ;
262+ } ,
263+
264+ updatableNodeIds : function ( workbench , studyServices ) {
265+ const nodeIds = [ ] ;
266+ for ( const nodeId in workbench ) {
267+ const node = workbench [ nodeId ] ;
268+ const studyServiceFound = studyServices . find ( studyService => studyService [ "key" ] === node [ "key" ] && studyService [ "release" ] [ "version" ] === node [ "version" ] ) ;
269+ if ( studyServiceFound && studyServiceFound [ "release" ] && studyServiceFound [ "release" ] [ "compatibility" ] ) {
270+ nodeIds . push ( nodeId ) ;
271+ }
272+ }
273+ return nodeIds ;
274+ } ,
275+
260276 isInDebt : function ( studyData ) {
261277 return Boolean ( "debt" in studyData && studyData [ "debt" ] < 0 ) ;
262278 } ,
0 commit comments