Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cribjs
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Cédric Le Ninivin
cribjs
Commits
a4c03a17
Commit
a4c03a17
authored
Jun 03, 2020
by
Cédric Le Ninivin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove unecessary logs and have start page works with ZIP url
parent
41a76efb
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
82 additions
and
135 deletions
+82
-135
app.js
app.js
+9
-11
gadget/gadget_jio_cribjs.html
gadget/gadget_jio_cribjs.html
+1
-0
gadget/gadget_jio_cribjs.js
gadget/gadget_jio_cribjs.js
+67
-120
index.html
index.html
+1
-0
sw.js
sw.js
+4
-4
No files found.
app.js
View file @
a4c03a17
/*jslint nomen: true, indent: 2, maxerr: 3 */
/*global window, rJS */
(
function
(
window
,
rJS
)
{
(
function
(
window
,
rJS
,
loopEventListener
)
{
"
use strict
"
;
function
loadCribJS
(
gadget
,
event
)
{
...
...
@@ -20,26 +20,21 @@
.
push
(
function
(
jio_string
)
{
return
jio_cribjs_gadget
.
load
({
path
:
document
.
location
.
href
,
jio_config
:
JSON
.
parse
(
jio_string
)
,
jio_config
:
jio_string
,
application_id
:
"
cribjs
"
})
})
.
push
(
function
(
url_list
)
{
console
.
log
(
url_list
);
document
.
location
=
document
.
location
.
href
+
"
crib-editor4/
"
;
})
.
push
(
console
.
log
,
console
.
log
);
}
rJS
(
window
)
.
declareMethod
(
'
render
'
,
function
(
options
)
{
var
gadget
=
this
,
jio_configuration_string
=
""
;
if
(
localStorage
.
hasOwnProperty
(
"
crib_js_loader_jio
"
))
{
jio_configuration_string
=
localStorage
.
getItem
(
"
crib_js_loader_jio
"
);
}
else
{
jio_configuration_string
=
'
{"type": "dav", "url": "
'
+
document
.
location
.
href
+
'
cribjs-storage/"}
'
;
}
jio_configuration_string
=
"
https://cribjs.nexedi.net/cribjs-latest.zip
"
;
return
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
'
jio_configurator
'
);
...
...
@@ -63,7 +58,10 @@
return
g
.
getElement
()
.
push
(
function
(
element
)
{
g
.
props
.
element
=
element
;
});
}).
push
(
function
()
{
g
.
render
({})
})
;
});
}(
window
,
rJS
));
\ No newline at end of file
}(
window
,
rJS
,
loopEventListener
));
\ No newline at end of file
gadget/gadget_jio_cribjs.html
View file @
a4c03a17
...
...
@@ -8,6 +8,7 @@
<title>
CribJS Loader
</title>
<script
src=
"/lib/rsvp.js"
></script>
<script
src=
"/lib/renderjs.js"
></script>
<script
src=
"/lib/jszip.js"
type=
"text/javascript"
></script>
<script
src=
"gadget_jio_cribjs.js"
></script>
</head>
<body>
...
...
gadget/gadget_jio_cribjs.js
View file @
a4c03a17
/*globals window, document, RSVP, rJS,
location, console*/
/*jslint indent: 2, maxlen: 80*/
(
function
(
window
,
document
,
RSVP
,
rJS
,
location
,
console
)
{
(
function
(
window
,
document
,
RSVP
,
rJS
,
location
,
console
,
JSZip
)
{
"
use strict
"
;
function
getExtension
(
url
)
{
...
...
@@ -12,6 +12,69 @@
return
"
.
"
+
extension
;
}
function
loadContentFromZIPURL
(
gadget
,
zip_url
)
{
var
path_to_load
,
path_to_load_length
,
file_list
,
crib_sw_gadget
,
jio_gadget
,
url_list
=
[],
url_number
=
0
;
path_to_load
=
""
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
gadget
.
getDeclaredGadget
(
'
crib_sw_gadget
'
);
})
.
push
(
function
(
returned_gadget
)
{
crib_sw_gadget
=
returned_gadget
;
return
fetch
(
zip_url
)
.
then
(
function
(
response
)
{
// 2) filter on 200 OK
if
(
response
.
status
===
200
||
response
.
status
===
0
)
{
return
Promise
.
resolve
(
response
.
blob
());
}
else
{
return
Promise
.
reject
(
new
Error
(
response
.
statusText
));
}
});
})
.
push
(
JSZip
.
loadAsync
)
.
push
(
function
(
zip
)
{
var
promise_list
=
[];
zip
.
forEach
(
function
(
relativePath
,
zipEntry
)
{
var
end_url
;
url_number
+=
1
;
if
(
zipEntry
.
dir
)
{
return
}
if
(
!
relativePath
.
startsWith
(
"
/
"
)
&&
!
path_to_load
.
endsWith
(
"
/
"
))
{
end_url
=
path_to_load
+
"
/
"
+
relativePath
}
else
if
(
relativePath
.
startsWith
(
"
/
"
)
&&
path_to_load
.
endsWith
(
"
/
"
))
{
end_url
=
path_to_load
+
relativePath
.
substring
(
1
);
}
else
{
end_url
=
path_to_load
+
relativePath
}
promise_list
.
push
(
new
RSVP
.
Queue
().
push
(
function
()
{
return
zipEntry
.
async
(
'
blob
'
);
})
.
push
(
function
(
result
)
{
if
(
end_url
.
endsWith
(
"
.js
"
)
)
{
// This is a ugly hack as mimetype needs to be correct for JS
result
=
result
.
slice
(
0
,
result
.
size
,
"
application/javascript
"
)
}
else
if
(
end_url
.
endsWith
(
"
.html
"
)
)
{
// This is a ugly hack as mimetype needs to be correct for JS
result
=
result
.
slice
(
0
,
result
.
size
,
"
text/html
"
)
}
else
if
(
end_url
.
endsWith
(
"
.css
"
)
)
{
// This is a ugly hack as mimetype needs to be correct for JS
result
=
result
.
slice
(
0
,
result
.
size
,
"
text/css
"
)
}
return
crib_sw_gadget
.
put
(
end_url
,
{
blob
:
result
})
})
)
})
return
RSVP
.
all
(
promise_list
)
})
.
push
(
function
()
{
gadget
.
props
.
element
.
querySelector
(
"
.crib-load-from-zip-status
"
).
textContent
=
"
Loaded
"
+
url_number
+
"
files at
"
+
Date
()
})
.
push
(
console
.
log
,
console
.
log
)
}
rJS
(
window
)
.
ready
(
function
(
g
)
{
g
.
props
=
{};
...
...
@@ -25,125 +88,9 @@
path_to_load_length
=
path_to_load
.
length
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
RSVP
.
all
([
gadget
.
getDeclaredGadget
(
'
crib_sw_gadget
'
),
gadget
.
getDeclaredGadget
(
'
jio_gadget
'
)]);
})
.
push
(
function
(
gadget_list
)
{
crib_sw_gadget
=
gadget_list
[
0
];
jio_gadget
=
gadget_list
[
1
];
return
jio_gadget
.
createJio
(
jio_config
);
})
.
push
(
function
()
{
return
jio_gadget
.
allAttachments
(
"
/
"
+
application_id
+
"
.attachment/
"
);
})
.
push
(
function
(
response
)
{
var
promise_list
=
[],
key
,
extension
;
for
(
key
in
response
)
{
if
(
response
.
hasOwnProperty
(
key
))
{
extension
=
getExtension
(
key
);
console
.
log
(
key
);
url_list
.
push
(
atob
(
key
.
substr
(
0
,
key
.
length
-
extension
.
length
)))
promise_list
.
push
(
jio_gadget
.
getAttachment
(
"
/
"
+
application_id
+
"
.attachment/
"
,
key
));
}
};
return
RSVP
.
all
(
promise_list
)
})
.
push
(
function
(
response_list
)
{
var
promise_list
=
[],
i
,
i_len
,
url
,
index
,
response
,
location
,
location_len
;
location
=
document
.
location
.
origin
;
location_len
=
location
.
length
for
(
i
=
0
,
i_len
=
response_list
.
length
;
i
<
i_len
;
i
+=
1
)
{
url
=
url_list
[
i
]
index
=
url
.
indexOf
(
location
);
if
(
index
!=
-
1
)
url
=
url
.
substr
(
index
+
location_len
);
console
.
log
(
path_to_load
+
url
);
promise_list
.
push
(
crib_sw_gadget
.
put
(
path_to_load
+
url
,
{
blob
:
response_list
[
i
]})
)
}
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
()
{
return
url_list
});
})
.
declareMethod
(
'
save
'
,
function
(
options
)
{
var
path_to_save
,
path_to_save_length
,
application_id
,
crib_sw_gadget
,
jio_config
,
jio_gadget
,
url_list
=
[],
saved_url_list
=
[],
gadget
=
this
;
path_to_save
=
options
.
path
;
application_id
=
options
.
application_id
;
jio_config
=
options
.
jio_config
;
path_to_save_length
=
path_to_save
.
length
;
return
new
RSVP
.
Queue
()
.
push
(
function
()
{
return
RSVP
.
all
([
gadget
.
getDeclaredGadget
(
'
crib_sw_gadget
'
),
gadget
.
getDeclaredGadget
(
'
jio_gadget
'
)]);
})
.
push
(
function
(
gadget_list
)
{
crib_sw_gadget
=
gadget_list
[
0
];
jio_gadget
=
gadget_list
[
1
];
return
jio_gadget
.
createJio
(
jio_config
);
})
.
push
(
function
(){
return
crib_sw_gadget
.
allDocs
();
})
.
push
(
function
(
data
)
{
url_list
=
data
.
urls
;
// This is buggy, it fails if the document already exists with dav storage
// XX Should be able to add some metadata here such as url, contributor, version ...
return
RSVP
.
all
(
[
jio_gadget
.
put
(
"
/
"
+
application_id
+
"
.attachment/
"
,
{
}),
jio_gadget
.
putAttachment
(
"
/
"
,
application_id
,
new
Blob
([
JSON
.
stringify
({
url
:
path_to_save
})],{
type
:
"
application/json
"
}))
]);
})
.
push
(
function
()
{
var
promise_list
=
[],
i
,
i_len
,
url
;
for
(
i
=
0
,
i_len
=
url_list
.
length
;
i
<
i_len
;
i
+=
1
)
{
url
=
new
String
(
url_list
[
i
]);
if
(
url
.
indexOf
(
path_to_save
)
===
0
)
{
saved_url_list
.
push
({
url
:
url
});
promise_list
.
push
(
jIO
.
util
.
ajax
({
url
:
url
,
dataType
:
"
blob
"
}));
};
};
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
(
response_list
)
{
var
promise_list
=
[],
i
,
i_len
,
url
,
response
,
extension
;
for
(
i
=
0
,
i_len
=
response_list
.
length
;
i
<
i_len
;
i
+=
1
)
{
response
=
response_list
[
i
];
url
=
response
.
target
.
responseURL
.
substr
(
path_to_save_length
);
// This is tricky here, we use the extension for file storages in order to get the correct blob
// It should be fixed
saved_url_list
[
i
].
target
=
url
;
extension
=
getExtension
(
url
);
saved_url_list
[
i
].
target
=
extension
;
console
.
log
(
"
Will push attachment
"
+
saved_url_list
[
i
].
url
+
"
to
"
+
url
);
promise_list
.
push
(
jio_gadget
.
putAttachment
(
"
/
"
+
application_id
+
"
.attachment/
"
,
btoa
(
url
)
+
extension
,
response
.
target
.
response
)
);
};
return
RSVP
.
all
(
promise_list
);
})
.
push
(
function
()
{
return
saved_url_list
;
return
loadContentFromZIPURL
(
gadget
,
jio_config
);
})
.
fail
(
function
(
error
)
{
gadget
.
props
.
element
.
querySelector
(
"
.crib-save-to-jio-status
"
).
textContent
=
error
;
console
.
log
(
error
);
});
.
push
(
console
.
log
,
console
.
log
)
})
}(
window
,
document
,
RSVP
,
rJS
,
location
,
console
));
\ No newline at end of file
}(
window
,
document
,
RSVP
,
rJS
,
location
,
console
,
JSZip
));
\ No newline at end of file
index.html
View file @
a4c03a17
...
...
@@ -8,6 +8,7 @@
<title>
CribJS Loader
</title>
<script
src=
"./lib/rsvp.js"
></script>
<script
src=
"./lib/renderjs.js"
></script>
<script
src=
"./gadget/gadget_global.js"
></script>
<script
src=
"app.js"
></script>
</head>
<body>
...
...
sw.js
View file @
a4c03a17
...
...
@@ -59,7 +59,7 @@ self.addEventListener('activate', function(event) {
});
self
.
addEventListener
(
'
fetch
'
,
function
(
event
)
{
console
.
log
(
'
Handling fetch event for
'
,
event
.
request
.
url
);
//
console.log('Handling fetch event for', event.request.url);
if
(
event
.
request
.
method
===
"
GET
"
)
{
/// XXX Why is URL_LIST undefined in some cases???
if
(
URL_LIST
===
undefined
)
...
...
@@ -78,18 +78,18 @@ self.addEventListener('fetch', function(event) {
if
(
response
)
{
// If there is an entry in the cache for event.request, then response will be defined
// and we can just return it. Note that in this example, only font resources are cached.
console
.
log
(
'
Found response in cache:
'
,
response
.
url
);
//
console.log(' Found response in cache:', response.url);
URL_LIST
[
event
.
request
.
url
].
cached
=
true
;
return
response
;
}
else
{
// Otherwise, if there is no entry in the cache for event.request, response will be
// undefined, and we need to fetch() the resource.
console
.
log
(
'
No response for %s found in cache. About to fetch from network...
'
,
event
.
request
.
url
);
//
console.log(' No response for %s found in cache. About to fetch from network...', event.request.url);
// We call .clone() on the request since we might use it in a call to cache.put() later on.
// Both fetch() and cache.put() "consume" the request, so we need to make a copy.
// (see https://fetch.spec.whatwg.org/#dom-request-clone)
return
fetch
(
event
.
request
.
clone
()).
then
(
function
(
response
)
{
console
.
log
(
'
Response for %s from network is: %O
'
,
event
.
request
.
url
,
response
.
url
);
//
console.log(' Response for %s from network is: %O', event.request.url, response.url);
// Return the original response object, which will be used to fulfill the resource request.
//cache.put(event.request, response.clone());
return
response
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment