udata 9.0.1.dev29504__py2.py3-none-any.whl → 9.0.1.dev29536__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of udata might be problematic. Click here for more details.
- udata/api_fields.py +7 -3
- udata/core/dataservices/models.py +37 -2
- udata/core/dataservices/rdf.py +58 -0
- udata/core/dataset/rdf.py +9 -119
- udata/harvest/api.py +4 -0
- udata/harvest/backends/base.py +100 -7
- udata/harvest/backends/dcat.py +29 -7
- udata/harvest/models.py +2 -0
- udata/harvest/tests/dcat/bnodes.xml +13 -2
- udata/harvest/tests/test_dcat_backend.py +21 -0
- udata/rdf.py +110 -2
- udata/static/chunks/{18.134a90750da131794993.js → 18.1922fd0b2b7fad122991.js} +3 -3
- udata/static/chunks/18.1922fd0b2b7fad122991.js.map +1 -0
- udata/static/chunks/{7.f000b2613a410a2db864.js → 7.e2106342e94ee09393b1.js} +2 -2
- udata/static/chunks/{7.f000b2613a410a2db864.js.map → 7.e2106342e94ee09393b1.js.map} +1 -1
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/tests/dataset/test_dataset_rdf.py +4 -1
- {udata-9.0.1.dev29504.dist-info → udata-9.0.1.dev29536.dist-info}/METADATA +2 -1
- {udata-9.0.1.dev29504.dist-info → udata-9.0.1.dev29536.dist-info}/RECORD +24 -23
- udata/static/chunks/18.134a90750da131794993.js.map +0 -1
- {udata-9.0.1.dev29504.dist-info → udata-9.0.1.dev29536.dist-info}/LICENSE +0 -0
- {udata-9.0.1.dev29504.dist-info → udata-9.0.1.dev29536.dist-info}/WHEEL +0 -0
- {udata-9.0.1.dev29504.dist-info → udata-9.0.1.dev29536.dist-info}/entry_points.txt +0 -0
- {udata-9.0.1.dev29504.dist-info → udata-9.0.1.dev29536.dist-info}/top_level.txt +0 -0
udata/rdf.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
'''
|
|
2
2
|
This module centralize udata-wide RDF helpers and configuration
|
|
3
3
|
'''
|
|
4
|
+
from html.parser import HTMLParser
|
|
4
5
|
import logging
|
|
5
6
|
import re
|
|
6
7
|
|
|
7
|
-
from flask import request, url_for, abort
|
|
8
|
+
from flask import request, url_for, abort, current_app
|
|
8
9
|
|
|
9
10
|
from rdflib import Graph, Literal, URIRef
|
|
10
11
|
from rdflib.resource import Resource as RdfResource
|
|
@@ -13,8 +14,11 @@ from rdflib.namespace import (
|
|
|
13
14
|
)
|
|
14
15
|
from rdflib.util import SUFFIX_FORMAT_MAP, guess_format as raw_guess_format
|
|
15
16
|
from udata import uris
|
|
17
|
+
from udata.core.contact_point.models import ContactPoint
|
|
16
18
|
from udata.models import Schema
|
|
17
19
|
from udata.mongo.errors import FieldValidationError
|
|
20
|
+
from udata.frontend.markdown import parse_html
|
|
21
|
+
from udata.tags import slug as slugify_tag
|
|
18
22
|
|
|
19
23
|
log = logging.getLogger(__name__)
|
|
20
24
|
|
|
@@ -100,8 +104,17 @@ RDF_EXTENSIONS = {
|
|
|
100
104
|
# Includes control characters, unicode surrogate characters and unicode end-of-plane non-characters
|
|
101
105
|
ILLEGAL_XML_CHARS = '[\x00-\x08\x0b\x0c\x0e-\x1F\uD800-\uDFFF\uFFFE\uFFFF]'
|
|
102
106
|
|
|
107
|
+
# Map High Value Datasets URIs to keyword categories
|
|
108
|
+
EU_HVD_CATEGORIES = {
|
|
109
|
+
"http://data.europa.eu/bna/c_164e0bf5": "Météorologiques",
|
|
110
|
+
"http://data.europa.eu/bna/c_a9135398": "Entreprises et propriété d'entreprises",
|
|
111
|
+
"http://data.europa.eu/bna/c_ac64a52d": "Géospatiales",
|
|
112
|
+
"http://data.europa.eu/bna/c_b79e35eb": "Mobilité",
|
|
113
|
+
"http://data.europa.eu/bna/c_dd313021": "Observation de la terre et environnement",
|
|
114
|
+
"http://data.europa.eu/bna/c_e1da4e07": "Statistiques"
|
|
115
|
+
}
|
|
103
116
|
HVD_LEGISLATION = 'http://data.europa.eu/eli/reg_impl/2023/138/oj'
|
|
104
|
-
|
|
117
|
+
TAG_TO_EU_HVD_CATEGORIES = {slugify_tag(EU_HVD_CATEGORIES[uri]): uri for uri in EU_HVD_CATEGORIES}
|
|
105
118
|
|
|
106
119
|
def guess_format(string):
|
|
107
120
|
'''Guess format given an extension or a mime-type'''
|
|
@@ -216,6 +229,42 @@ CONTEXT = {
|
|
|
216
229
|
'totalItems': 'hydra:totalItems',
|
|
217
230
|
}
|
|
218
231
|
|
|
232
|
+
def serialize_value(value):
|
|
233
|
+
if isinstance(value, (URIRef, Literal)):
|
|
234
|
+
return value.toPython()
|
|
235
|
+
elif isinstance(value, RdfResource):
|
|
236
|
+
return value.identifier.toPython()
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def rdf_value(obj, predicate, default=None):
|
|
240
|
+
value = obj.value(predicate)
|
|
241
|
+
return serialize_value(value) if value else default
|
|
242
|
+
|
|
243
|
+
class HTMLDetector(HTMLParser):
|
|
244
|
+
def __init__(self, *args, **kwargs):
|
|
245
|
+
HTMLParser.__init__(self, *args, **kwargs)
|
|
246
|
+
self.elements = set()
|
|
247
|
+
|
|
248
|
+
def handle_starttag(self, tag, attrs):
|
|
249
|
+
self.elements.add(tag)
|
|
250
|
+
|
|
251
|
+
def handle_endtag(self, tag):
|
|
252
|
+
self.elements.add(tag)
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
def is_html(text):
|
|
256
|
+
parser = HTMLDetector()
|
|
257
|
+
parser.feed(text)
|
|
258
|
+
return bool(parser.elements)
|
|
259
|
+
|
|
260
|
+
|
|
261
|
+
def sanitize_html(text):
|
|
262
|
+
text = text.toPython() if isinstance(text, Literal) else ''
|
|
263
|
+
if is_html(text):
|
|
264
|
+
return parse_html(text)
|
|
265
|
+
else:
|
|
266
|
+
return text.strip()
|
|
267
|
+
|
|
219
268
|
|
|
220
269
|
def url_from_rdf(rdf, prop):
|
|
221
270
|
'''
|
|
@@ -228,6 +277,65 @@ def url_from_rdf(rdf, prop):
|
|
|
228
277
|
elif isinstance(value, RdfResource):
|
|
229
278
|
return value.identifier.toPython()
|
|
230
279
|
|
|
280
|
+
def theme_labels_from_rdf(rdf):
|
|
281
|
+
'''
|
|
282
|
+
Get theme labels to use as keywords.
|
|
283
|
+
Map HVD keywords from known URIs resources if HVD support is activated.
|
|
284
|
+
'''
|
|
285
|
+
for theme in rdf.objects(DCAT.theme):
|
|
286
|
+
if isinstance(theme, RdfResource):
|
|
287
|
+
uri = theme.identifier.toPython()
|
|
288
|
+
if current_app.config['HVD_SUPPORT'] and uri in EU_HVD_CATEGORIES:
|
|
289
|
+
label = EU_HVD_CATEGORIES[uri]
|
|
290
|
+
# Additionnally yield hvd keyword
|
|
291
|
+
yield 'hvd'
|
|
292
|
+
else:
|
|
293
|
+
label = rdf_value(theme, SKOS.prefLabel)
|
|
294
|
+
else:
|
|
295
|
+
label = theme.toPython()
|
|
296
|
+
if label:
|
|
297
|
+
yield label
|
|
298
|
+
|
|
299
|
+
def themes_from_rdf(rdf):
|
|
300
|
+
tags = [tag.toPython() for tag in rdf.objects(DCAT.keyword)]
|
|
301
|
+
tags += theme_labels_from_rdf(rdf)
|
|
302
|
+
return list(set(tags))
|
|
303
|
+
|
|
304
|
+
def contact_point_from_rdf(rdf, dataset):
|
|
305
|
+
contact_point = rdf.value(DCAT.contactPoint)
|
|
306
|
+
if contact_point:
|
|
307
|
+
name = rdf_value(contact_point, VCARD.fn) or ''
|
|
308
|
+
email = (rdf_value(contact_point, VCARD.hasEmail)
|
|
309
|
+
or rdf_value(contact_point, VCARD.email)
|
|
310
|
+
or rdf_value(contact_point, DCAT.email))
|
|
311
|
+
if not email:
|
|
312
|
+
return
|
|
313
|
+
email = email.replace('mailto:', '').strip()
|
|
314
|
+
if dataset.organization:
|
|
315
|
+
contact_point = ContactPoint.objects(
|
|
316
|
+
name=name, email=email, organization=dataset.organization).first()
|
|
317
|
+
return (contact_point or
|
|
318
|
+
ContactPoint(name=name, email=email, organization=dataset.organization).save())
|
|
319
|
+
elif dataset.owner:
|
|
320
|
+
contact_point = ContactPoint.objects(
|
|
321
|
+
name=name, email=email, owner=dataset.owner).first()
|
|
322
|
+
return (contact_point or
|
|
323
|
+
ContactPoint(name=name, email=email, owner=dataset.owner).save())
|
|
324
|
+
|
|
325
|
+
def remote_url_from_rdf(rdf):
|
|
326
|
+
'''
|
|
327
|
+
Return DCAT.landingPage if found and uri validation succeeds.
|
|
328
|
+
Use RDF identifier as fallback if uri validation succeeds.
|
|
329
|
+
'''
|
|
330
|
+
landing_page = url_from_rdf(rdf, DCAT.landingPage)
|
|
331
|
+
uri = rdf.identifier.toPython()
|
|
332
|
+
for candidate in [landing_page, uri]:
|
|
333
|
+
if candidate:
|
|
334
|
+
try:
|
|
335
|
+
uris.validate(candidate)
|
|
336
|
+
return candidate
|
|
337
|
+
except uris.ValidationError:
|
|
338
|
+
pass
|
|
231
339
|
|
|
232
340
|
def schema_from_rdf(rdf):
|
|
233
341
|
'''
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
webpackJsonp([18,31],{887:function(e,t,o){var s,a;s=o(1469),a=o(1566),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},985:function(e,t,o){var s,a;o(1001),s=o(993),a=o(998),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},986:function(e,t,o){var s,a;s=o(992),a=o(997),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},992:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=300,s=5e3;t.default={name:"alert-box",data:function(){return{closing:!1}},props:{alert:Object},computed:{closable:function(){return void 0===this.alert.closable||this.alert.closable},classes:function classes(){var classes={"alert-dismissable":this.closable,in:!this.closing};return classes["alert-"+(this.alert.type||"success")]=!0,classes},details:function(){if(this.alert&&this.alert.details)return this.alert.details.replace(/\n/g,"<br/>")}},methods:{close:function(){var e=this;this.closing=!0,setTimeout(function(){e.$dispatch("notify:close",e.alert)},o)}},ready:function(){var e=this;this.alert.autoclose&&setTimeout(function(){e.$dispatch("notify:close",e.alert)},s)}}},993:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"box",props:{title:String,icon:null,boxclass:{type:String,default:""},bodyclass:{type:String,default:""},footerclass:{type:String,default:""},loading:Boolean,footer:null}}},994:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(986),a=_interopRequireDefault(s);t.default={name:"notification-zone",components:{Alert:a.default}}},995:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".box .box-tools>*{float:right}.box .box-tools .text-muted{color:#777!important}.box .box-tools .box-search{width:180px;display:inline-block}.box .box-tools .box-search input:focus{box-shadow:none;border-color:transparent!important}.box .box-tools .box-search .btn,.box .box-tools .box-search input[type=text]{box-shadow:none;background-color:#fbfbfb;border:1px solid #fbfbfb}.box .box-tools .box-search .btn:focus,.box .box-tools .box-search input[type=text]:focus{background-color:#fff;color:#666}.box .box-tools .box-search .btn:focus+.input-group-btn .btn,.box .box-tools .box-search input[type=text]:focus+.input-group-btn .btn{background-color:#fff;border-left-color:#fff;color:#666}.box .box-tools .box-search>*{border-top:1px solid #eee;border-bottom:1px solid #eee}.box .box-tools .box-search>:first-child{border-left:1px solid #eee}.box .box-tools .box-search>:last-child{border-right:1px solid #eee}.box .box-tools .btn-box-tool{font-size:14px;padding:6px 8px}.box .box-tools .btn-group{vertical-align:inherit}.box form{margin:10px}","",{version:3,sources:["/./js/components/containers/box.vue"],names:[],mappings:"AAAA,kBAAkB,WAAW,CAAC,4BAA4B,oBAAqB,CAAC,4BAA4B,YAAY,oBAAoB,CAAC,wCAAwC,gBAAgB,kCAAmC,CAAC,8EAAgF,gBAAgB,yBAAyB,wBAAwB,CAAC,0FAA4F,sBAAsB,UAAU,CAAC,sIAAwI,sBAAsB,uBAAuB,UAAU,CAAC,8BAA8B,0BAA0B,4BAA4B,CAAC,yCAA0C,0BAA0B,CAAC,wCAAyC,2BAA2B,CAAC,8BAA8B,eAAe,eAAe,CAAC,2BAA2B,sBAAsB,CAAC,UAAU,WAAW,CAAC",file:"box.vue",sourcesContent:['.box .box-tools>*{float:right}.box .box-tools .text-muted{color:#777 !important}.box .box-tools .box-search{width:180px;display:inline-block}.box .box-tools .box-search input:focus{box-shadow:none;border-color:transparent !important}.box .box-tools .box-search input[type="text"],.box .box-tools .box-search .btn{box-shadow:none;background-color:#fbfbfb;border:1px solid #fbfbfb}.box .box-tools .box-search input[type="text"]:focus,.box .box-tools .box-search .btn:focus{background-color:#fff;color:#666}.box .box-tools .box-search input[type="text"]:focus+.input-group-btn .btn,.box .box-tools .box-search .btn:focus+.input-group-btn .btn{background-color:#fff;border-left-color:#fff;color:#666}.box .box-tools .box-search>*{border-top:1px solid #eee;border-bottom:1px solid #eee}.box .box-tools .box-search>*:first-child{border-left:1px solid #eee}.box .box-tools .box-search>*:last-child{border-right:1px solid #eee}.box .box-tools .btn-box-tool{font-size:14px;padding:6px 8px}.box .box-tools .btn-group{vertical-align:inherit}.box form{margin:10px}'],sourceRoot:"webpack://"}])},996:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".notification-zone{padding:15px 15px 0;position:fixed;right:15px;bottom:15px;width:350px;z-index:10000}.notification-zone .alert:last-child{margin-bottom:0}.notification-zone .alert:not(:last-child){margin-bottom:5px}","",{version:3,sources:["/./js/components/notification-zone.vue"],names:[],mappings:"AAAA,mBAAmB,oBAAoB,eAAe,WAAW,YAAY,YAAY,aAAa,CAAC,qCAAqC,eAAe,CAAC,2CAA2C,iBAAiB,CAAC",file:"notification-zone.vue",sourcesContent:[".notification-zone{padding:15px 15px 0;position:fixed;right:15px;bottom:15px;width:350px;z-index:10000}.notification-zone .alert:last-child{margin-bottom:0}.notification-zone .alert:not(:last-child){margin-bottom:5px}"],sourceRoot:"webpack://"}])},997:function(e,t){e.exports=' <div class="alert fade" :class=classes> <button type=button class=close aria-hidden=true @click=close>×</button> <h4> <span class="icon fa fa-{{alert.icon || \'check\'}}"></span> {{alert.title}} </h4> {{{ details }}} </div> '},998:function(e,t){e.exports=' <div class="box {{ boxclass }}"> <header class=box-header v-show="title || icon"> <i v-show=icon class="fa fa-{{icon}}"></i> <h3 class=box-title>{{title}}</h3> <div class=box-tools> <slot name=tools></slot> </div> </header> <div class="box-body {{bodyclass}}"> <slot></slot> </div> <div class=overlay v-show=loading> <span class="fa fa-refresh fa-spin"></span> </div> <div class="box-footer clearfix {{footerclass}}" v-show=footer> <slot name=footer></slot> </div> </div> '},999:function(e,t){e.exports=' <div v-show="$root.notifications && $root.notifications.length > 0" class=notification-zone> <alert v-for="n in $root.notifications" :alert=n></alert> </div> '},1e3:function(e,t,o){var s,a;o(1002),s=o(994),a=o(999),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1001:function(e,t,o){var s=o(995);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1002:function(e,t,o){var s=o(996);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1039:function(e,t,o){var s,a;o(1181),s=o(1117),a=o(1158),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1078:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1e3),a=_interopRequireDefault(s);t.default={name:"layout",props:{title:String,subtitle:String,page:String,actions:{type:Array,default:function(){return[]}},badges:Array},components:{NotificationZone:a.default},computed:{menu_actions:function(){if(this.actions&&this.actions.length>1)return this.actions}}}},1079:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".content-header h1 a{color:#000}.content-header h1 a .fa{font-size:.4em}","",{version:3,sources:["/./js/components/layout.vue"],names:[],mappings:"AAAA,qBAAqB,UAAW,CAAC,yBAAyB,cAAc,CAAC",file:"layout.vue",sourcesContent:[".content-header h1 a{color:black}.content-header h1 a .fa{font-size:.4em}"],sourceRoot:"webpack://"}])},1080:function(e,t){e.exports=' <div class=content-wrapper> <router-view></router-view> <section class=content-header> <div class="btn-group btn-group-sm btn-actions pull-right clearfix"> <div v-if=menu_actions class="btn-group btn-group-sm" role=group> <button type=button class="btn btn-info dropdown-toggle" data-toggle=dropdown> {{_(\'Edit\')}} <span class=caret></span> </button> <ul class="dropdown-menu dropdown-menu-right" role=menu> <li v-for="action in menu_actions" :role="action.divider ? \'separator\' : false" :class="{ \'divider\': action.divider }"> <a class=pointer v-if=!action.divider @click=action.method> <span v-if=action.icon class="fa fa-fw fa-{{action.icon}}"></span> {{action.label}} </a> </li> </ul> </div> </div> <h1> <a v-if=page :href=page :title="_(\'See on the site\')"> {{ title }} <span class="fa fa-external-link"></span> </a> <span v-if=!page>{{title}}</span> <small v-if=subtitle>{{subtitle}}</small> <small v-if=badges> <span v-for="badge in badges" class="label label-{{badge.class}}">{{badge.label}}</span> </small> </h1> </section> <notification-zone></notification-zone> <section class=content> <slot></slot> </section> </div> '},1081:function(e,t,o){var s,a;o(1082),s=o(1078),a=o(1080),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1082:function(e,t,o){var s=o(1079);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1098:function(e,t,o){function webpackContext(e){return o(webpackContextResolve(e))}function webpackContextResolve(e){return s[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var s={"./avatar.vue":1161,"./date.vue":1162,"./datetime.vue":1163,"./deletable-text.vue":1164,"./label.vue":1165,"./metric.vue":1166,"./playpause.vue":1167,"./progress-bars.vue":1168,"./since.vue":1169,"./text.vue":1170,"./thumbnail.vue":1171,"./timeago.vue":1172,"./visibility.vue":1173};webpackContext.keys=function(){return Object.keys(s)},webpackContext.resolve=webpackContextResolve,e.exports=webpackContext,webpackContext.id=1098},1101:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(57),a=(_interopRequireDefault(s),o(314)),i=_interopRequireDefault(a);t.default={name:"datatable-cell",default:"",props:{field:Object,item:Object},computed:{value:function(){if(!this.field||!this.item)return this.$options.default;if(this.field.key)if(i.default.isFunction(this.field.key))t=this.field.key(this.item);else for(var e=this.field.key.split("."),t=this.item,o=0;o<e.length;o++){var s=e[o];if(!t||!t.hasOwnProperty(s)){t=null;break}t=t[s]}else t=this.item;return t||this.$options.default}}}},1102:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={attached:function(){this.$el.closest("td").classList.add("avatar-cell")}}},1103:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-date"}},1104:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-datetime"}},1105:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-deletable-text"}},1106:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-label",filters:{format:function(e){return this.field.hasOwnProperty("label_func")?this.field.label_func(e):e},color:function(e){return this.field.hasOwnProperty("label_type")?this.field.label_type(e):"default"}},computed:{labels:function(){return this.value instanceof Array?this.value:[this.value]}}}},1107:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-metric",default:0}},1108:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-playpause",default:!1}},1109:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-progress-bars",computed:{progress_class:function(){return this.value<1/3?"danger":this.value<2/3?"warning":this.value<.9?"primary":"success"}}}},1110:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-since"}},1111:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-text"}},1112:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(101),a=_interopRequireDefault(s);t.default={attached:function(){this.$el.closest("td").classList.add("thumbnail-cell")},computed:{src:function(){return this.value?this.value:this.field.placeholder?a.default.getFor(this.field.placeholder):a.default.generic}}}},1113:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-timeago"}},1114:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=o(133),a={deleted:{label:(0,s._)("Deleted"),type:"danger"},archived:{label:(0,s._)("Archived"),type:"warning"},private:{label:(0,s._)("Private"),type:"info"},public:{label:(0,s._)("Public"),type:"success"}};t.default={name:"datatable-cell-visibility",computed:{status:function(){if(this.item)return this.item.deleted?a.deleted:this.item.archived?a.archived:this.item.private?a.private:a.public}}}},1115:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(200),a=_interopRequireDefault(s),i=o(57),r=_interopRequireDefault(i),n=o(1160),l=_interopRequireDefault(n);t.default={name:"datatable-row",props:{item:Object,fields:Array,selected:{type:Boolean,default:!1}},created:function(){var e=!0,t=!1,o=void 0;try{for(var s,i=(0,a.default)(this.fields);!(e=(s=i.next()).done);e=!0){var r=s.value;this.load_cell(r.type||"text")}}catch(n){t=!0,o=n}finally{try{!e&&i.return&&i.return()}finally{if(t)throw o}}},methods:{item_click:function(e){this.$dispatch("datatable:item:click",e)},load_cell:function(e){if(!this.$options.components.hasOwnProperty(e)){var t=o(1098)("./"+e+".vue");t.hasOwnProperty("mixins")||(t.mixins=[]),l.default in t.mixins||t.mixins.push(l.default),this.$options.components[e]=r.default.extend(t)}}}}},1116:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1174),a=_interopRequireDefault(s);t.default={name:"datatable",components:{Row:a.default},props:{p:Object,fields:Array,track:{type:null,default:"id"}},data:function(){return{selected:null}},computed:{remote:function(){return this.p&&this.p.serverside},trackBy:function(){return this.track||""}},events:{"datatable:item:click":function(e){return this.selected=e,!0}},methods:{header_click:function(e){e.sort&&this.p.sort(this.sort_for(e))},sort_for:function(e){return this.remote?e.sort:e.key},classes_for:function(e){var t={pointer:Boolean(e.sort)},o=e.align||"left";return t["text-"+o]=!0,t},sort_classes_for:function(e){var t={};return this.p.sorted!=this.sort_for(e)?t["fa-sort"]=!0:this.p.reversed?this.p.reversed&&(t["fa-sort-desc"]=!0):t["fa-sort-asc"]=!0,t}},filters:{thwidth:function(e){switch(e){case void 0:return"";case 0:return 0;default:return e+5}}}}},1117:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(985),a=_interopRequireDefault(s),i=o(1175),r=_interopRequireDefault(i),n=o(1176),l=_interopRequireDefault(n);t.default={name:"datatable-widget",components:{Box:a.default,Datatable:r.default,PaginationWidget:l.default},data:function(){return{search_query:null,selected:null}},computed:{has_footer_children:function(){return this.$els.footer_container&&this.$els.footer_container.children.length},show_footer:function(){return this.p&&this.p.pages>1||this.has_footer_children},boxclasses:function(){return["datatable-widget",this.tint?"box-"+this.tint:"box-solid",this.boxclass].join(" ")}},props:{p:Object,title:String,icon:String,fields:Array,boxclass:String,tint:String,empty:String,loading:{type:Boolean,default:void 0},track:{type:null,default:"id"},downloads:{type:Array,default:function(){return[]}}},methods:{search:function(){this.p.search(this.search_query)}},watch:{search_query:function(e){this.p.search(e)}}}},1118:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=2;t.default={name:"pagination-widget",props:{p:Object},computed:{start:function(){return this.p?this.p.page<=o?1:this.p.page-o:-1},end:function(){return this.p?this.p.page+o>this.p.pages?this.p.pages:this.p.page+o:-1},range:function(){var e=this;return isNaN(this.start)||isNaN(this.end)||this.start>=this.end?[]:Array.apply(0,Array(this.end+1-this.start)).map(function(t,o){return o+e.start})}}}},1135:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable td.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0}","",{version:3,sources:["/./js/components/datatable/cell.vue"],names:[],mappings:"AAAA,uBAAuB,mBAAmB,gBAAgB,uBAAuB,WAAW,CAAC",file:"cell.vue",sourcesContent:[".datatable td.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0}"],sourceRoot:"webpack://"}])},1136:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable td.avatar-cell{padding:3px}","",{version:3,sources:["/./js/components/datatable/cells/avatar.vue"],names:[],mappings:"AAAA,0BAA0B,WAAW,CAAC",file:"avatar.vue",sourcesContent:[".datatable td.avatar-cell{padding:3px}"],sourceRoot:"webpack://"}])},1137:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable td.thumbnail-cell{padding:3px}","",{version:3,sources:["/./js/components/datatable/cells/thumbnail.vue"],names:[],mappings:"AAAA,6BAA6B,WAAW,CAAC",file:"thumbnail.vue",sourcesContent:[".datatable td.thumbnail-cell{padding:3px}"],sourceRoot:"webpack://"}])},1138:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable th{white-space:nowrap}","",{version:3,sources:["/./js/components/datatable/table.vue"],names:[],mappings:"AAAA,cAAc,kBAAkB,CAAC",file:"table.vue",sourcesContent:[".datatable th{white-space:nowrap}"],sourceRoot:"webpack://"}])},1139:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable-widget .datatable-header>.row{width:100%}","",{version:3,sources:["/./js/components/datatable/widget.vue"],names:[],mappings:"AAAA,yCAAyC,UAAU,CAAC",file:"widget.vue",sourcesContent:[".datatable-widget .datatable-header>.row{width:100%}"],sourceRoot:"webpack://"}])},1140:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".label{margin:1px}","",{version:3,sources:["/./js/components/datatable/cells/label.vue"],names:[],mappings:"AACA,OACI,UAAY,CACf",file:"label.vue",sourcesContent:["\n.label {\n margin: 1px;\n}\n"],sourceRoot:"webpack://"}])},1143:function(e,t){e.exports=' <img :src="value | avatar_url field.width" :width=field.width :height=field.width /> '},1144:function(e,t){e.exports=' <time :datetime="value | dt YYYY-MM-DD">{{value | dt L}}</time> '},1145:function(e,t){e.exports=" <time :datetime=value>{{value | dt L LT}}</time> "},1146:function(e,t){e.exports=" <del v-if=item.deleted :title=\"_('This item has been deleted')\" :datetime=item.deleted>{{value}}</del> <span v-else>{{value}}</span> "},1147:function(e,t){e.exports=' <span v-for="label in labels" class="label label-{{label | color}}"> {{label | format}} </span> '},1148:function(e,t){e.exports=" <span class=badge :class=\"{\n 'bg-green': value > 0,\n 'bg-red': value == 0\n }\">{{value}}</span> "},1149:function(e,t){e.exports=" <i class=\"fa fa-fw fa-{{value ? 'play' : 'stop'}} text-{{value ? 'green' : 'red'}}\"></i> "},1150:function(e,t){e.exports=' <div class="progress progress-sm"> <span class="progress-bar progress-bar-{{ progress_class }}" :style="{width: value * 100 + \'%\'}" :title="_(\'Score:\') + \' \' + value * 100"> </span> </div> '},1151:function(e,t){e.exports=" <time :datetime=value>{{value | since}}</time> "},1152:function(e,t){e.exports="<span>{{value}}</span>"},1153:function(e,t){e.exports=" <img :src=src :width=field.width :height=field.width /> "},1154:function(e,t){e.exports=" <time :datetime=value class=timeago>{{value | timeago}}</time> "},1155:function(e,t){e.exports=' <span class="label label-{{ status.type }}">{{ status.label }}</span> '},1156:function(e,t){e.exports=" <tr class=pointer :class=\"{ 'active': selected }\" @click=item_click(item)> <td v-for=\"field in fields\" track-by=key :class=\"{\n 'text-center': field.align === 'center',\n 'text-left': field.align === 'left',\n 'text-right': field.align === 'right',\n 'ellipsis': field.ellipsis\n }\"> <component :is=\"field.type || 'text'\" :item=item :field=field> </component> </td> </tr> "},1157:function(e,t){e.exports=' <table class="table table-hover datatable"> <thead> <tr> <th v-for="field in fields" :class=classes_for(field) @click=header_click(field) :width="field.width | thwidth"> {{field.label}} <span class="fa fa-fw" v-if=field.sort :class=sort_classes_for(field)></span> </th> </tr> </thead> <tbody> <tr v-for="item in p.data" :track-by=trackBy is=row :item=item :fields=fields :selected="item === selected"> </tr> </tbody> </table> '},1158:function(e,t){e.exports=' <div> <box :title=title :icon=icon :boxclass=boxclasses bodyclass="table-responsive no-padding" footerclass="text-center clearfix" :loading="loading !== undefined ? loading : p.loading" :footer=show_footer> <aside slot=tools> <div class=btn-group v-show=downloads.length> <button type=button class="btn btn-box-tool dropdown-toggle" data-toggle=dropdown aria-expanded=false> <span class="fa fa-download"></span> </button> <ul class=dropdown-menu role=menu> <li v-for="download in downloads"> <a :href=download.url>{{download.label}}</a> </li> </ul> </div> <div class=box-search v-if=p.has_search> <div class=input-group> <input type=text class="form-control input-sm pull-right" style="width: 150px" :placeholder="_(\'Search\')" v-model=search_query debounce=500 @keyup.enter=search> <div class=input-group-btn> <button class="btn btn-sm btn-flat" @click=search> <i class="fa fa-search"></i> </button> </div> </div> </div> </aside> <header class=datatable-header> <slot name=header></slot> </header> <datatable v-if=p.has_data :p=p :fields=fields :track=track> </datatable> <div class="text-center lead" v-if=!p.has_data> {{ empty || _(\'No data\')}} </div> <footer slot=footer> <div :class="{ \'pull-right\': p.pages > 1 }" v-el:footer_container> <slot name=footer></slot> </div> <pagination-widget :p=p></pagination-widget> </footer> </box> </div> '},1159:function(e,t){e.exports=' <ul class="pagination pagination-sm no-margin" v-show="p && p.pages > 1"> <li :class="{ \'disabled\': !p || p.page == 1 }"> <a :title="_(\'First page\')" class=pointer @click=p.go_to_page(1)> « </a> </li> <li :class="{ \'disabled\': !p || p.page == 1 }"> <a :title="_(\'Previous page\')" class=pointer @click=p.previousPage()> ‹ </a> </li> <li v-for="current in range" :class="{ \'active\': current == p.page }"> <a @click=p.go_to_page(current) class=pointer>{{ current }}</a> </li> <li :class="{ \'disabled\': !p || p.page == p.pages }"> <a :title="_(\'Next page\')" class=pointer @click=p.nextPage()> › </a> </li> <li :class="{ \'disabled\': !p || p.page == p.pages }"> <a :title="_(\'Last page\')" class=pointer @click=p.go_to_page(p.pages)> » </a> </li> </ul> '},1160:function(e,t,o){var s,a;o(1177),s=o(1101),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1161:function(e,t,o){var s,a;o(1178),s=o(1102),a=o(1143),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1162:function(e,t,o){var s,a;s=o(1103),a=o(1144),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1163:function(e,t,o){var s,a;s=o(1104),a=o(1145),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1164:function(e,t,o){var s,a;s=o(1105),a=o(1146),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1165:function(e,t,o){var s,a;o(1182),s=o(1106),a=o(1147),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1166:function(e,t,o){var s,a;s=o(1107),a=o(1148),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1167:function(e,t,o){var s,a;s=o(1108),a=o(1149),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1168:function(e,t,o){var s,a;s=o(1109),a=o(1150),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1169:function(e,t,o){var s,a;s=o(1110),a=o(1151),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1170:function(e,t,o){var s,a;s=o(1111),a=o(1152),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1171:function(e,t,o){var s,a;o(1179),s=o(1112),a=o(1153),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1172:function(e,t,o){var s,a;s=o(1113),a=o(1154),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1173:function(e,t,o){var s,a;s=o(1114),a=o(1155),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1174:function(e,t,o){var s,a;s=o(1115),a=o(1156),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1175:function(e,t,o){var s,a;o(1180),s=o(1116),a=o(1157),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1176:function(e,t,o){var s,a;s=o(1118),a=o(1159),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1177:function(e,t,o){var s=o(1135);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1178:function(e,t,o){var s=o(1136);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1179:function(e,t,o){var s=o(1137);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1180:function(e,t,o){var s=o(1138);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1181:function(e,t,o){var s=o(1139);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1182:function(e,t,o){var s=o(1140);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1187:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.HarvestSource=t.VALIDATION_STATUS_I18N=t.VALIDATION_STATUS_CLASSES=void 0;var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(46),l=_interopRequireDefault(n),u=o(27),d=_interopRequireDefault(u),c=o(26),p=_interopRequireDefault(c),f=o(39),b=o(133),h=o(19),v=_interopRequireDefault(h),x=(t.VALIDATION_STATUS_CLASSES={pending:"default",accepted:"success",refused:"danger"},t.VALIDATION_STATUS_I18N={pending:(0,b._)("Pending"),accepted:(0,b._)("Accepted"),refused:(0,b._)("Refused")},t.HarvestSource=function(e){function HarvestSource(){return(0,r.default)(this,HarvestSource),(0,d.default)(this,(HarvestSource.__proto__||(0,a.default)(HarvestSource)).apply(this,arguments))}return(0,p.default)(HarvestSource,e),(0,l.default)(HarvestSource,[{key:"fetch",value:function(e){return e=e||this.id||this.slug,this.loading=!0,e?this.$api("harvest.get_harvest_source",{ident:e},this.on_fetched):v.default.error("Unable to fetch HarvestSource: no identifier specified"),this}},{key:"save",value:function(e){return this.id?this.update(this,e):(this.loading=!0,void this.$api("harvest.create_harvest_source",{payload:this},this.on_fetched,this.on_error(e)))}},{key:"update",value:function(e,t){this.loading=!0,this.$api("harvest.update_harvest_source",{ident:this.id,payload:e},this.on_fetched,this.on_error(t))}}]),HarvestSource}(f.Model));t.default=x},1199:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.HarvestJob=t.STATUS_I18N=t.STATUS_CLASSES=void 0;var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(46),l=_interopRequireDefault(n),u=o(27),d=_interopRequireDefault(u),c=o(26),p=_interopRequireDefault(c),f=o(39),b=o(19),h=_interopRequireDefault(b),v=o(133),x=(t.STATUS_CLASSES={pending:"default",initializing:"primary",initialized:"info",processing:"info",done:"success","done-errors":"warning",failed:"danger",deleted:"danger"},t.STATUS_I18N={pending:(0,v._)("Pending"),initializing:(0,v._)("Initializing"),initialized:(0,v._)("Initialized"),processing:(0,v._)("Processing"),done:(0,v._)("Done"),"done-errors":(0,v._)("Done with errors"),failed:(0,v._)("Failed"),deleted:(0,v._)("Deleted")},t.HarvestJob=function(e){function HarvestJob(){return(0,r.default)(this,HarvestJob),(0,d.default)(this,(HarvestJob.__proto__||(0,a.default)(HarvestJob)).apply(this,arguments))}return(0,p.default)(HarvestJob,e),(0,l.default)(HarvestJob,[{key:"fetch",value:function(){return this.id?(this.loading=!0,this.$api("harvest.get_harvest_job",{ident:this.id},this.on_fetched)):h.default.error("Unable to fetch Job"),this}}]),HarvestJob}(f.Model));t.default=x},1300:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.harvest_backends=t.HarvestBackends=void 0;var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(27),l=_interopRequireDefault(n),u=o(26),d=_interopRequireDefault(u),c=o(39),p=t.HarvestBackends=function(e){function HarvestBackends(e){(0,r.default)(this,HarvestBackends);var t=(0,l.default)(this,(HarvestBackends.__proto__||(0,a.default)(HarvestBackends)).call(this,e));return t.$options.ns="harvest",t.$options.fetch="harvest_backends",t}return(0,d.default)(HarvestBackends,e),HarvestBackends}(c.List),f=t.harvest_backends=(new p).fetch();t.default=f},1302:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.STATUS_I18N=t.STATUS_CLASSES=void 0;var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(27),l=_interopRequireDefault(n),u=o(26),d=_interopRequireDefault(u),c=o(39),p=o(19),f=(_interopRequireDefault(p),
|
|
2
|
-
o(133)),b=(t.STATUS_CLASSES={pending:"default",started:"info",done:"success",failed:"danger",skipped:"warning",archived:"warning"},t.STATUS_I18N={pending:(0,f._)("Pending"),started:(0,f._)("Started"),done:(0,f._)("Done"),failed:(0,f._)("Failed"),skipped:(0,f._)("Skipped"),archived:(0,f._)("Archived")},function(e){function HarvestItem(){return(0,r.default)(this,HarvestItem),(0,l.default)(this,(HarvestItem.__proto__||(0,a.default)(HarvestItem)).apply(this,arguments))}return(0,d.default)(HarvestItem,e),HarvestItem}(c.Model));t.default=b},1322:function(e,t,o){var s,a;s=o(1335),a=o(1359),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1334:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1302),a=o(318),i=_interopRequireDefault(a),r=o(323),n=_interopRequireDefault(r);t.default={components:{Modal:i.default,DatasetCard:n.default},props:{item:Object},events:{"dataset:clicked":function(e){document.location=e.page}},filters:{statusClass:function(e){return s.STATUS_CLASSES[e]},statusI18n:function(e){return s.STATUS_I18N[e]}}}},1335:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1199),a=o(1302),i=o(39),r=o(1039),n=_interopRequireDefault(r);t.default={name:"JobDetails",props:{job:s.HarvestJob,loading:{type:Boolean,default:void 0},empty:String,withSlot:{type:Boolean,default:!1}},components:{Datatable:n.default},data:function(){var e=this;return{fields:[{label:this._("Remote ID"),key:"remote_id",sort:"remote_id",ellipsis:!0},{label:this._("Logs"),key:function(t){return t.logs.length?t.logs.length+" "+e._("logs"):""},width:80},{label:this._("Status"),key:"status",sort:"status",type:"label",width:100,label_type:function(e){return a.STATUS_CLASSES[e]},label_func:function(e){return a.STATUS_I18N[e]}}],p:new i.PageList({data:this.job.items})}},computed:{title:function(){return this.job.id?"Job "+this.job.id:"Job"}},events:{"datatable:item:click":function(e){this.$dispatch("harvest:job:item:selected",e)}},filters:{statusClass:function(e){return s.STATUS_CLASSES[e]||""},statusI18n:function(e){return s.STATUS_I18N[e]},count:function(e,t){return e?e.filter(function(e){return e.status===t}).length:"-"}},watch:{"job.items":function(e){this.p=new i.PageList({data:e})}}}},1336:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(99),a=_interopRequireDefault(s),i=o(1300),r=(_interopRequireDefault(i),o(1199)),n=_interopRequireDefault(r),l=o(1187),u=_interopRequireDefault(l),d=o(1322),c=_interopRequireDefault(d);t.default={name:"HarvestPreviewView",components:{JobWidget:c.default},props:{source:{type:Object,default:function(){return new u.default}},fromConfig:{type:Boolean,default:!1}},data:function(){return{job:new n.default,loading:!1}},computed:{empty:function(){return this.job.created?this._("No item found"):" "}},methods:{preview:function(){this.loading=!0,this.fromConfig?a.default.harvest.preview_harvest_source_config({payload:this.source},this.onPreviewFetch,this.$root.handleApiError):a.default.harvest.preview_harvest_source({ident:this.source.id},this.onPreviewFetch,this.$root.handleApiError)},onPreviewFetch:function(e){this.job.on_fetched(e),this.loading=!1}}}},1349:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".job-item-modal .modal-footer{text-align:center!important}","",{version:3,sources:["/./js/components/harvest/item.vue"],names:[],mappings:"AAAA,8BAA8B,2BAA4B,CAAC",file:"item.vue",sourcesContent:[".job-item-modal .modal-footer{text-align:center !important}"],sourceRoot:"webpack://"}])},1358:function(e,t){e.exports=" <modal class=job-item-modal v-ref:modal :class=\"{\n 'modal-success': item.status === 'done',\n 'modal-danger': item.status === 'failed',\n 'modal-warning': item.status === 'skipped'\n }\"> <div class=modal-body> <dl class=clearfix> <dt>{{ _('Remote ID') }}</dt> <dd>{{ item.remote_id }}</dd> <dt>{{ _('Started at') }}</dt> <dd>{{ item.started | dt }}</dd> <dt>{{ _('Ended at') }}</dt> <dd>{{ item.ended | dt }}</dd> <dt>{{ _('Status') }}</dt> <dd><span class=\"label label-{{ item.status | statusClass }}\">{{ item.status | statusI18n }}</span></dd> <dt v-if=item.dataset>{{ _('Dataset') }}</dt> <dd v-if=item.dataset> <dataset-card class=col-xs-12 clickable v-if=item.dataset.id :datasetid=item.dataset.id> </dataset-card> <dataset-card class=col-xs-12 clickable v-if=!item.dataset.id :dataset=item.dataset> </dataset-card> </dd> <dt v-if=item.errors.length>{{ _('Errors') }}</dt> <dd v-if=item.errors.length> <div v-for=\"error in item.errors\"> {{{error.message | markdown}}} <pre>{{error.details}}</pre> </div> </dd> <dt v-if=item.logs.length>{{ _('Logs') }}</dt> <dd v-if=item.logs.length> <div v-for=\"log in item.logs\"> {{log.level}} <div>{{log.message}}</div> </div> </dd> </dl> </div> <footer class=modal-footer> <button type=button class=\"btn btn-outline btn-flat pointer\" @click=$refs.modal.close> {{ _('Close') }} </button> </footer> </modal> "},1359:function(e,t){e.exports=' <div> <datatable icon=cog :title=title bodyclass="table-responsive no-padding" :p=p :track=false :loading="loading !== undefined ? loading : job.loading" :fields=fields track=remote_id :empty=empty :tint="job.status | statusClass"> <div class=row slot=header> <div class=col-xs-12 :class="{\'col-lg-6\': job.created}" v-show=withSlot> <slot></slot> </div> <dl class="dl-horizontal col-xs-12" :class="{\'col-lg-6\': withSlot}" v-show=job.created> <dt>{{ _(\'Created at\') }}</dt> <dd>{{ job.created | dt }}</dd> <dt>{{ _(\'Ended at\') }}</dt> <dd>{{ job.ended | dt }}</dd> <dt>{{ _(\'Status\') }}</dt> <dd><span class="label label-{{ job.status | statusClass }}">{{ job.status | statusI18n }}</span></dd> <dt v-if="job.errors && job.errors.length">{{ _(\'Errors\') }}</dt> <dd v-if="job.errors && job.errors.length"> <div v-for="error in job.errors"> <p><strong>{{{error.message | markdown}}}</strong></p> <div v-if=error.details> <code><pre>{{error.details}}</pre></code> </div> </div> </dd> <dt v-if="job.items && job.items.length">{{ _(\'Items\') }}</dt> <dd v-if="job.items && job.items.length"> <span class=text-warning v-tooltip tooltip-placement=top :title="_(\'Number of skipped items\')">{{job.items | count \'skipped\'}}</span> / <span class=text-warning v-tooltip tooltip-placement=top :title="_(\'Number of archived items\')">{{job.items | count \'archived\'}}</span> / <span class=text-danger v-tooltip tooltip-placement=top :title="_(\'Number of failed items\')">{{job.items | count \'failed\'}}</span> / <span class=text-green v-tooltip tooltip-placement=top :title="_(\'Number of succeed items\')">{{job.items | count \'done\'}}</span> / <strong>{{job.items.length}}</strong> </dd> </dl> </div> </datatable> </div> '},1360:function(e,t){e.exports=' <div> <job-widget :job=job :loading=loading :empty=empty with-slot> <div class=text-center> <button class="btn btn-primary btn-flat" @click=preview> <span class="fa fa-cog"></span> {{ _(\'Preview\') }} </button> </div> </job-widget> </div> '},1376:function(e,t,o){var s,a;o(1390),s=o(1334),a=o(1358),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1377:function(e,t,o){var s,a;s=o(1336),a=o(1360),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1390:function(e,t,o){var s=o(1349);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1395:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(27),l=_interopRequireDefault(n),u=o(26),d=_interopRequireDefault(u),c=o(39),p=o(19),f=(_interopRequireDefault(p),function(e){function HarvestJobPage(e){(0,r.default)(this,HarvestJobPage);var t=(0,l.default)(this,(HarvestJobPage.__proto__||(0,a.default)(HarvestJobPage)).call(this,e));return t.$options.ns="harvest",t.$options.fetch="list_harvest_jobs",t}return(0,d.default)(HarvestJobPage,e),HarvestJobPage}(c.ModelPage));t.default=f},1430:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(99),a=_interopRequireDefault(s),i=o(318),r=_interopRequireDefault(i);t.default={components:{Modal:r.default},props:{source:Object},methods:{confirm:function(){var e=this;a.default.harvest.delete_harvest_source({ident:this.source.id},function(t){e.source.fetch(),e.$refs.modal.close()},this.$root.handleApiError)}}}},1432:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1199),a=o(1039),i=_interopRequireDefault(a),r=o(1395),n=_interopRequireDefault(r),l=["id","created","status"],u=20;t.default={components:{Datatable:i.default},props:{source:Object,current:null},data:function(){return{AVATAR_SIZE:u,title:this._("Jobs"),jobs:new n.default({query:{page_size:10},mask:l}),fields:[{label:this._("Date"),key:"created",sort:"created",type:"datetime"},{label:this._("Status"),key:"status",type:"label",label_type:function(e){return s.STATUS_CLASSES[e]},label_func:function(e){return s.STATUS_I18N[e]}}]}},events:{"datatable:item:click":function(e){return this.$dispatch("harvest:job:selected",e),!0}},watch:{"source.id":function(e){e&&this.jobs.fetch({ident:e})}}}},1433:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(99),a=_interopRequireDefault(s),i=o(318),r=_interopRequireDefault(i);t.default={components:{Modal:r.default},props:{source:Object},data:function(){return{comment:null}},methods:{validate:function(){this.perform_validation("accepted")},reject:function(){this.perform_validation("refused")},perform_validation:function(e){var t=this;return"refused"!==e||this.comment?(this.$els.group.className.replace("has-error",""),!this.$els.group.className.indexOf("has-success")>=0&&(this.$els.group.className+=" has-success"),void a.default.harvest.validate_harvest_source({ident:this.source.id,payload:{state:e,comment:this.comment}},function(e){t.source.on_fetched(e),t.$refs.modal.close()},this.$root.handleApiError)):(this.$els.group.className.replace("has-success",""),void(!this.$els.group.className.indexOf("has-error")>=0&&(this.$els.group.className+=" has-error")))}}}},1469:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1187),a=_interopRequireDefault(s),i=o(1199),r=_interopRequireDefault(i),n=o(1376),l=_interopRequireDefault(n),u=o(57),d=(_interopRequireDefault(u),o(1377)),c=_interopRequireDefault(d),p=o(1611),f=_interopRequireDefault(p),b=o(1322),h=_interopRequireDefault(b),v=o(1081),x=_interopRequireDefault(v),_=["id","name","url","owner","organization","backend","validation{state}","schedule","deleted"];t.default={name:"HarvestSourceView",components:{Preview:c.default,SourceWidget:f.default,JobWidget:h.default,Layout:x.default},data:function(){return{source:new a.default({mask:_}),current_job:null,current_item:null}},computed:{is_validation_pending:function(){return this.source&&this.source.validation&&"pending"===this.source.validation.state},should_validate:function(){return this.is_validation_pending&&this.$root.me.is_admin},display_warning:function(){return this.is_validation_pending&&!this.$root.me.is_admin},badges:function(){return this.source&&this.source.deleted?[{class:"danger",label:this._("Deleted")}]:[]},actions:function actions(){var actions=[{label:this._("Edit"),icon:"pencil",method:this.edit}];return this.$root.me.is_admin&&actions.push({label:this._("Scheduling"),icon:"history",method:this.schedule},{divider:!0}),actions.push({label:this._("Delete"),icon:"trash",method:this.confirm_delete}),actions}},events:{"harvest:job:selected":function(e){return this.current_job=new r.default({data:e}).fetch(),!0},"harvest:job:item:selected":function(e){return this.current_item=e,this.$root.$modal(l.default,{item:e}),!0}},methods:{edit:function(){this.$go({name:"harvester-edit",params:{oid:this.source.id}})},confirm_delete:function(){this.$root.$modal(o(1610),{source:this.source})},validate_source:function(){this.$root.$modal(o(1612),{source:this.source})},schedule:function(){this.$go({name:"harvester-schedule",params:{oid:this.source.id}})}},route:{data:function(){this.source.fetch(this.$route.params.oid)}}}},1527:function(e,t){e.exports=' <modal :title="_(\'Confirm deletion\')" class="modal-danger harvest-delete-modal" v-ref:modal> <div class=modal-body> <p class="lead text-center"> {{ _(\'You are about to delete this harvest source\') }} </p> <p class="lead text-center"> {{ _(\'Are you sure?\') }} </p> </div> <footer class="modal-footer text-center"> <button type=button class="btn btn-danger btn-flat pull-left" @click=$refs.modal.close> {{ _(\'Cancel\') }} </button> <button type=button class="btn btn-warning btn-flat" @click=confirm> {{ _(\'Confirm\') }} </button> </footer> </modal> '},1529:function(e,t){e.exports=" <div> <datatable :title=\"source.name || ''\" icon=tasks boxclass=harvest-jobs-widget :fields=fields :p=jobs :loading=\"source.loading || jobs.loading\" :empty=\"_('No job yet')\"> <header slot=header> {{{ source.description | markdown }}} <dl class=dl-horizontal> <dt v-if=source.owner>{{ _('Owner') }}</dt> <dd v-if=source.owner> <a v-link=\"{name:'user', params: {oid: source.owner.id}}\" :title=\"source.owner | display\"> <img class=avatar :src=\"source.owner | avatar_url AVATAR_SIZE\" :alt=\"source.owner | display\" :width=AVATAR_SIZE :height=AVATAR_SIZE> {{ source.owner | display }} </a> </dd> <dt v-if=source.organization>{{ _('Organization') }}</dt> <dd v-if=source.organization> <a v-link=\"{name:'organization', params: {oid: source.organization.id}}\" :title=\"source.organization | display\"> <img class=avatar :src=\"source.organization | logo_url AVATAR_SIZE\" :alt=\"source.organization | display\" :width=AVATAR_SIZE :height=AVATAR_SIZE> {{ source.organization | display }} </a> </dd> <dt>{{ _('Backend') }}</dt> <dd>{{ source.backend }}</dd> <dt>{{ _('URL') }}</dt> <dd>{{ source.url }}</dd> <dt>{{ _('Scheduling') }}</dt> <dd v-if=source.schedule>{{ source.schedule }}</dd> <dd v-else>{{ _('Not scheduled') }}</dd> <dt>{{ _('Jobs') }}</dt> <dd>{{ jobs.total }}</dd> </dl> </header> </datatable> </div> "},1530:function(e,t){e.exports=" <modal v-ref:modal :title=\"_('Harvest source validation')\" class=\"modal-info harvest-delete-modal\"> <div class=modal-body> <p> {{ _('You are about to validate (or not) this harvest source.') }} {{ _('It means that this source will be harvested regulary.') }} </p> <form role=form> <div class=form-group v-el:group> <label>{{ _('Reason') }}</label> <textarea class=form-control rows=3 v-el:comment :placeholder=\"_('Explain your validation')\" v-model=comment>\n </textarea> </div> </form></div> <footer class=\"modal-footer text-center\"> <button type=button class=\"btn btn-success btn-flat pull-left\" @click=validate> {{ _('Validate') }} </button> <button type=button class=\"btn btn-danger btn-flat\" @click=reject> {{ _('Reject') }} </button> </footer> </modal> "},1566:function(e,t){e.exports=" <div> <layout :title=\"source.name || ''\" :subtitle=\"source.backend || ''\" :actions=actions :badges=badges> <div class=\"alert alert-info\" v-if=should_validate> <div class=\"btn-toolbar pull-right\"> <div class=btn-group> <button class=\"btn btn-danger btn-xs\" @click=confirm_delete>{{ _('Delete') }}</button> </div> <div class=btn-group> <button class=\"btn btn-primary btn-xs\" @click=validate_source>{{ _('Validate') }}</button> </div> </div> {{ _('This harvest source has not been validated') }} </div> <div class=\"alert alert-warning\" v-if=display_warning> {{ _('This harvest source has not been validated') }} </div> <div class=row> <source-widget :source=source :class=\"{\n 'col-xs-12': !current_job,\n 'col-md-4': current_job,\n }\"> </source-widget> <job-widget v-if=current_job :job=current_job class=col-md-8> </job-widget> </div> <div class=row v-if=should_validate> <preview class=col-xs-12 :source=source></preview> </div> </layout> </div> "},1610:function(e,t,o){var s,a;s=o(1430),a=o(1527),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1611:function(e,t,o){var s,a;s=o(1432),a=o(1529),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1612:function(e,t,o){var s,a;s=o(1433),a=o(1530),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)}});
|
|
3
|
-
//# sourceMappingURL=18.
|
|
1
|
+
webpackJsonp([18,31],{887:function(e,t,o){var s,a;s=o(1469),a=o(1566),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},985:function(e,t,o){var s,a;o(1001),s=o(993),a=o(998),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},986:function(e,t,o){var s,a;s=o(992),a=o(997),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},992:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=300,s=5e3;t.default={name:"alert-box",data:function(){return{closing:!1}},props:{alert:Object},computed:{closable:function(){return void 0===this.alert.closable||this.alert.closable},classes:function classes(){var classes={"alert-dismissable":this.closable,in:!this.closing};return classes["alert-"+(this.alert.type||"success")]=!0,classes},details:function(){if(this.alert&&this.alert.details)return this.alert.details.replace(/\n/g,"<br/>")}},methods:{close:function(){var e=this;this.closing=!0,setTimeout(function(){e.$dispatch("notify:close",e.alert)},o)}},ready:function(){var e=this;this.alert.autoclose&&setTimeout(function(){e.$dispatch("notify:close",e.alert)},s)}}},993:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"box",props:{title:String,icon:null,boxclass:{type:String,default:""},bodyclass:{type:String,default:""},footerclass:{type:String,default:""},loading:Boolean,footer:null}}},994:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(986),a=_interopRequireDefault(s);t.default={name:"notification-zone",components:{Alert:a.default}}},995:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".box .box-tools>*{float:right}.box .box-tools .text-muted{color:#777!important}.box .box-tools .box-search{width:180px;display:inline-block}.box .box-tools .box-search input:focus{box-shadow:none;border-color:transparent!important}.box .box-tools .box-search .btn,.box .box-tools .box-search input[type=text]{box-shadow:none;background-color:#fbfbfb;border:1px solid #fbfbfb}.box .box-tools .box-search .btn:focus,.box .box-tools .box-search input[type=text]:focus{background-color:#fff;color:#666}.box .box-tools .box-search .btn:focus+.input-group-btn .btn,.box .box-tools .box-search input[type=text]:focus+.input-group-btn .btn{background-color:#fff;border-left-color:#fff;color:#666}.box .box-tools .box-search>*{border-top:1px solid #eee;border-bottom:1px solid #eee}.box .box-tools .box-search>:first-child{border-left:1px solid #eee}.box .box-tools .box-search>:last-child{border-right:1px solid #eee}.box .box-tools .btn-box-tool{font-size:14px;padding:6px 8px}.box .box-tools .btn-group{vertical-align:inherit}.box form{margin:10px}","",{version:3,sources:["/./js/components/containers/box.vue"],names:[],mappings:"AAAA,kBAAkB,WAAW,CAAC,4BAA4B,oBAAqB,CAAC,4BAA4B,YAAY,oBAAoB,CAAC,wCAAwC,gBAAgB,kCAAmC,CAAC,8EAAgF,gBAAgB,yBAAyB,wBAAwB,CAAC,0FAA4F,sBAAsB,UAAU,CAAC,sIAAwI,sBAAsB,uBAAuB,UAAU,CAAC,8BAA8B,0BAA0B,4BAA4B,CAAC,yCAA0C,0BAA0B,CAAC,wCAAyC,2BAA2B,CAAC,8BAA8B,eAAe,eAAe,CAAC,2BAA2B,sBAAsB,CAAC,UAAU,WAAW,CAAC",file:"box.vue",sourcesContent:['.box .box-tools>*{float:right}.box .box-tools .text-muted{color:#777 !important}.box .box-tools .box-search{width:180px;display:inline-block}.box .box-tools .box-search input:focus{box-shadow:none;border-color:transparent !important}.box .box-tools .box-search input[type="text"],.box .box-tools .box-search .btn{box-shadow:none;background-color:#fbfbfb;border:1px solid #fbfbfb}.box .box-tools .box-search input[type="text"]:focus,.box .box-tools .box-search .btn:focus{background-color:#fff;color:#666}.box .box-tools .box-search input[type="text"]:focus+.input-group-btn .btn,.box .box-tools .box-search .btn:focus+.input-group-btn .btn{background-color:#fff;border-left-color:#fff;color:#666}.box .box-tools .box-search>*{border-top:1px solid #eee;border-bottom:1px solid #eee}.box .box-tools .box-search>*:first-child{border-left:1px solid #eee}.box .box-tools .box-search>*:last-child{border-right:1px solid #eee}.box .box-tools .btn-box-tool{font-size:14px;padding:6px 8px}.box .box-tools .btn-group{vertical-align:inherit}.box form{margin:10px}'],sourceRoot:"webpack://"}])},996:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".notification-zone{padding:15px 15px 0;position:fixed;right:15px;bottom:15px;width:350px;z-index:10000}.notification-zone .alert:last-child{margin-bottom:0}.notification-zone .alert:not(:last-child){margin-bottom:5px}","",{version:3,sources:["/./js/components/notification-zone.vue"],names:[],mappings:"AAAA,mBAAmB,oBAAoB,eAAe,WAAW,YAAY,YAAY,aAAa,CAAC,qCAAqC,eAAe,CAAC,2CAA2C,iBAAiB,CAAC",file:"notification-zone.vue",sourcesContent:[".notification-zone{padding:15px 15px 0;position:fixed;right:15px;bottom:15px;width:350px;z-index:10000}.notification-zone .alert:last-child{margin-bottom:0}.notification-zone .alert:not(:last-child){margin-bottom:5px}"],sourceRoot:"webpack://"}])},997:function(e,t){e.exports=' <div class="alert fade" :class=classes> <button type=button class=close aria-hidden=true @click=close>×</button> <h4> <span class="icon fa fa-{{alert.icon || \'check\'}}"></span> {{alert.title}} </h4> {{{ details }}} </div> '},998:function(e,t){e.exports=' <div class="box {{ boxclass }}"> <header class=box-header v-show="title || icon"> <i v-show=icon class="fa fa-{{icon}}"></i> <h3 class=box-title>{{title}}</h3> <div class=box-tools> <slot name=tools></slot> </div> </header> <div class="box-body {{bodyclass}}"> <slot></slot> </div> <div class=overlay v-show=loading> <span class="fa fa-refresh fa-spin"></span> </div> <div class="box-footer clearfix {{footerclass}}" v-show=footer> <slot name=footer></slot> </div> </div> '},999:function(e,t){e.exports=' <div v-show="$root.notifications && $root.notifications.length > 0" class=notification-zone> <alert v-for="n in $root.notifications" :alert=n></alert> </div> '},1e3:function(e,t,o){var s,a;o(1002),s=o(994),a=o(999),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1001:function(e,t,o){var s=o(995);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1002:function(e,t,o){var s=o(996);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1039:function(e,t,o){var s,a;o(1181),s=o(1117),a=o(1158),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1078:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1e3),a=_interopRequireDefault(s);t.default={name:"layout",props:{title:String,subtitle:String,page:String,actions:{type:Array,default:function(){return[]}},badges:Array},components:{NotificationZone:a.default},computed:{menu_actions:function(){if(this.actions&&this.actions.length>1)return this.actions}}}},1079:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".content-header h1 a{color:#000}.content-header h1 a .fa{font-size:.4em}","",{version:3,sources:["/./js/components/layout.vue"],names:[],mappings:"AAAA,qBAAqB,UAAW,CAAC,yBAAyB,cAAc,CAAC",file:"layout.vue",sourcesContent:[".content-header h1 a{color:black}.content-header h1 a .fa{font-size:.4em}"],sourceRoot:"webpack://"}])},1080:function(e,t){e.exports=' <div class=content-wrapper> <router-view></router-view> <section class=content-header> <div class="btn-group btn-group-sm btn-actions pull-right clearfix"> <div v-if=menu_actions class="btn-group btn-group-sm" role=group> <button type=button class="btn btn-info dropdown-toggle" data-toggle=dropdown> {{_(\'Edit\')}} <span class=caret></span> </button> <ul class="dropdown-menu dropdown-menu-right" role=menu> <li v-for="action in menu_actions" :role="action.divider ? \'separator\' : false" :class="{ \'divider\': action.divider }"> <a class=pointer v-if=!action.divider @click=action.method> <span v-if=action.icon class="fa fa-fw fa-{{action.icon}}"></span> {{action.label}} </a> </li> </ul> </div> </div> <h1> <a v-if=page :href=page :title="_(\'See on the site\')"> {{ title }} <span class="fa fa-external-link"></span> </a> <span v-if=!page>{{title}}</span> <small v-if=subtitle>{{subtitle}}</small> <small v-if=badges> <span v-for="badge in badges" class="label label-{{badge.class}}">{{badge.label}}</span> </small> </h1> </section> <notification-zone></notification-zone> <section class=content> <slot></slot> </section> </div> '},1081:function(e,t,o){var s,a;o(1082),s=o(1078),a=o(1080),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1082:function(e,t,o){var s=o(1079);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1098:function(e,t,o){function webpackContext(e){return o(webpackContextResolve(e))}function webpackContextResolve(e){return s[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var s={"./avatar.vue":1161,"./date.vue":1162,"./datetime.vue":1163,"./deletable-text.vue":1164,"./label.vue":1165,"./metric.vue":1166,"./playpause.vue":1167,"./progress-bars.vue":1168,"./since.vue":1169,"./text.vue":1170,"./thumbnail.vue":1171,"./timeago.vue":1172,"./visibility.vue":1173};webpackContext.keys=function(){return Object.keys(s)},webpackContext.resolve=webpackContextResolve,e.exports=webpackContext,webpackContext.id=1098},1101:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(57),a=(_interopRequireDefault(s),o(314)),i=_interopRequireDefault(a);t.default={name:"datatable-cell",default:"",props:{field:Object,item:Object},computed:{value:function(){if(!this.field||!this.item)return this.$options.default;if(this.field.key)if(i.default.isFunction(this.field.key))t=this.field.key(this.item);else for(var e=this.field.key.split("."),t=this.item,o=0;o<e.length;o++){var s=e[o];if(!t||!t.hasOwnProperty(s)){t=null;break}t=t[s]}else t=this.item;return t||this.$options.default}}}},1102:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={attached:function(){this.$el.closest("td").classList.add("avatar-cell")}}},1103:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-date"}},1104:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-datetime"}},1105:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-deletable-text"}},1106:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-label",filters:{format:function(e){return this.field.hasOwnProperty("label_func")?this.field.label_func(e):e},color:function(e){return this.field.hasOwnProperty("label_type")?this.field.label_type(e):"default"}},computed:{labels:function(){return this.value instanceof Array?this.value:[this.value]}}}},1107:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-metric",default:0}},1108:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-playpause",default:!1}},1109:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-progress-bars",computed:{progress_class:function(){return this.value<1/3?"danger":this.value<2/3?"warning":this.value<.9?"primary":"success"}}}},1110:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-since"}},1111:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-text"}},1112:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(101),a=_interopRequireDefault(s);t.default={attached:function(){this.$el.closest("td").classList.add("thumbnail-cell")},computed:{src:function(){return this.value?this.value:this.field.placeholder?a.default.getFor(this.field.placeholder):a.default.generic}}}},1113:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"datatable-cell-timeago"}},1114:function(e,t,o){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var s=o(133),a={deleted:{label:(0,s._)("Deleted"),type:"danger"},archived:{label:(0,s._)("Archived"),type:"warning"},private:{label:(0,s._)("Private"),type:"info"},public:{label:(0,s._)("Public"),type:"success"}};t.default={name:"datatable-cell-visibility",computed:{status:function(){if(this.item)return this.item.deleted?a.deleted:this.item.archived?a.archived:this.item.private?a.private:a.public}}}},1115:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(200),a=_interopRequireDefault(s),i=o(57),r=_interopRequireDefault(i),n=o(1160),l=_interopRequireDefault(n);t.default={name:"datatable-row",props:{item:Object,fields:Array,selected:{type:Boolean,default:!1}},created:function(){var e=!0,t=!1,o=void 0;try{for(var s,i=(0,a.default)(this.fields);!(e=(s=i.next()).done);e=!0){var r=s.value;this.load_cell(r.type||"text")}}catch(n){t=!0,o=n}finally{try{!e&&i.return&&i.return()}finally{if(t)throw o}}},methods:{item_click:function(e){this.$dispatch("datatable:item:click",e)},load_cell:function(e){if(!this.$options.components.hasOwnProperty(e)){var t=o(1098)("./"+e+".vue");t.hasOwnProperty("mixins")||(t.mixins=[]),l.default in t.mixins||t.mixins.push(l.default),this.$options.components[e]=r.default.extend(t)}}}}},1116:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1174),a=_interopRequireDefault(s);t.default={name:"datatable",components:{Row:a.default},props:{p:Object,fields:Array,track:{type:null,default:"id"}},data:function(){return{selected:null}},computed:{remote:function(){return this.p&&this.p.serverside},trackBy:function(){return this.track||""}},events:{"datatable:item:click":function(e){return this.selected=e,!0}},methods:{header_click:function(e){e.sort&&this.p.sort(this.sort_for(e))},sort_for:function(e){return this.remote?e.sort:e.key},classes_for:function(e){var t={pointer:Boolean(e.sort)},o=e.align||"left";return t["text-"+o]=!0,t},sort_classes_for:function(e){var t={};return this.p.sorted!=this.sort_for(e)?t["fa-sort"]=!0:this.p.reversed?this.p.reversed&&(t["fa-sort-desc"]=!0):t["fa-sort-asc"]=!0,t}},filters:{thwidth:function(e){switch(e){case void 0:return"";case 0:return 0;default:return e+5}}}}},1117:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(985),a=_interopRequireDefault(s),i=o(1175),r=_interopRequireDefault(i),n=o(1176),l=_interopRequireDefault(n);t.default={name:"datatable-widget",components:{Box:a.default,Datatable:r.default,PaginationWidget:l.default},data:function(){return{search_query:null,selected:null}},computed:{has_footer_children:function(){return this.$els.footer_container&&this.$els.footer_container.children.length},show_footer:function(){return this.p&&this.p.pages>1||this.has_footer_children},boxclasses:function(){return["datatable-widget",this.tint?"box-"+this.tint:"box-solid",this.boxclass].join(" ")}},props:{p:Object,title:String,icon:String,fields:Array,boxclass:String,tint:String,empty:String,loading:{type:Boolean,default:void 0},track:{type:null,default:"id"},downloads:{type:Array,default:function(){return[]}}},methods:{search:function(){this.p.search(this.search_query)}},watch:{search_query:function(e){this.p.search(e)}}}},1118:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=2;t.default={name:"pagination-widget",props:{p:Object},computed:{start:function(){return this.p?this.p.page<=o?1:this.p.page-o:-1},end:function(){return this.p?this.p.page+o>this.p.pages?this.p.pages:this.p.page+o:-1},range:function(){var e=this;return isNaN(this.start)||isNaN(this.end)||this.start>=this.end?[]:Array.apply(0,Array(this.end+1-this.start)).map(function(t,o){return o+e.start})}}}},1135:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable td.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0}","",{version:3,sources:["/./js/components/datatable/cell.vue"],names:[],mappings:"AAAA,uBAAuB,mBAAmB,gBAAgB,uBAAuB,WAAW,CAAC",file:"cell.vue",sourcesContent:[".datatable td.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:0}"],sourceRoot:"webpack://"}])},1136:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable td.avatar-cell{padding:3px}","",{version:3,sources:["/./js/components/datatable/cells/avatar.vue"],names:[],mappings:"AAAA,0BAA0B,WAAW,CAAC",file:"avatar.vue",sourcesContent:[".datatable td.avatar-cell{padding:3px}"],sourceRoot:"webpack://"}])},1137:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable td.thumbnail-cell{padding:3px}","",{version:3,sources:["/./js/components/datatable/cells/thumbnail.vue"],names:[],mappings:"AAAA,6BAA6B,WAAW,CAAC",file:"thumbnail.vue",sourcesContent:[".datatable td.thumbnail-cell{padding:3px}"],sourceRoot:"webpack://"}])},1138:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable th{white-space:nowrap}","",{version:3,sources:["/./js/components/datatable/table.vue"],names:[],mappings:"AAAA,cAAc,kBAAkB,CAAC",file:"table.vue",sourcesContent:[".datatable th{white-space:nowrap}"],sourceRoot:"webpack://"}])},1139:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".datatable-widget .datatable-header>.row{width:100%}","",{version:3,sources:["/./js/components/datatable/widget.vue"],names:[],mappings:"AAAA,yCAAyC,UAAU,CAAC",file:"widget.vue",sourcesContent:[".datatable-widget .datatable-header>.row{width:100%}"],sourceRoot:"webpack://"}])},1140:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".label{margin:1px}","",{version:3,sources:["/./js/components/datatable/cells/label.vue"],names:[],mappings:"AACA,OACI,UAAY,CACf",file:"label.vue",sourcesContent:["\n.label {\n margin: 1px;\n}\n"],sourceRoot:"webpack://"}])},1143:function(e,t){e.exports=' <img :src="value | avatar_url field.width" :width=field.width :height=field.width /> '},1144:function(e,t){e.exports=' <time :datetime="value | dt YYYY-MM-DD">{{value | dt L}}</time> '},1145:function(e,t){e.exports=" <time :datetime=value>{{value | dt L LT}}</time> "},1146:function(e,t){e.exports=" <del v-if=item.deleted :title=\"_('This item has been deleted')\" :datetime=item.deleted>{{value}}</del> <span v-else>{{value}}</span> "},1147:function(e,t){e.exports=' <span v-for="label in labels" class="label label-{{label | color}}"> {{label | format}} </span> '},1148:function(e,t){e.exports=" <span class=badge :class=\"{\n 'bg-green': value > 0,\n 'bg-red': value == 0\n }\">{{value}}</span> "},1149:function(e,t){e.exports=" <i class=\"fa fa-fw fa-{{value ? 'play' : 'stop'}} text-{{value ? 'green' : 'red'}}\"></i> "},1150:function(e,t){e.exports=' <div class="progress progress-sm"> <span class="progress-bar progress-bar-{{ progress_class }}" :style="{width: value * 100 + \'%\'}" :title="_(\'Score:\') + \' \' + value * 100"> </span> </div> '},1151:function(e,t){e.exports=" <time :datetime=value>{{value | since}}</time> "},1152:function(e,t){e.exports="<span>{{value}}</span>"},1153:function(e,t){e.exports=" <img :src=src :width=field.width :height=field.width /> "},1154:function(e,t){e.exports=" <time :datetime=value class=timeago>{{value | timeago}}</time> "},1155:function(e,t){e.exports=' <span class="label label-{{ status.type }}">{{ status.label }}</span> '},1156:function(e,t){e.exports=" <tr class=pointer :class=\"{ 'active': selected }\" @click=item_click(item)> <td v-for=\"field in fields\" track-by=key :class=\"{\n 'text-center': field.align === 'center',\n 'text-left': field.align === 'left',\n 'text-right': field.align === 'right',\n 'ellipsis': field.ellipsis\n }\"> <component :is=\"field.type || 'text'\" :item=item :field=field> </component> </td> </tr> "},1157:function(e,t){e.exports=' <table class="table table-hover datatable"> <thead> <tr> <th v-for="field in fields" :class=classes_for(field) @click=header_click(field) :width="field.width | thwidth"> {{field.label}} <span class="fa fa-fw" v-if=field.sort :class=sort_classes_for(field)></span> </th> </tr> </thead> <tbody> <tr v-for="item in p.data" :track-by=trackBy is=row :item=item :fields=fields :selected="item === selected"> </tr> </tbody> </table> '},1158:function(e,t){e.exports=' <div> <box :title=title :icon=icon :boxclass=boxclasses bodyclass="table-responsive no-padding" footerclass="text-center clearfix" :loading="loading !== undefined ? loading : p.loading" :footer=show_footer> <aside slot=tools> <div class=btn-group v-show=downloads.length> <button type=button class="btn btn-box-tool dropdown-toggle" data-toggle=dropdown aria-expanded=false> <span class="fa fa-download"></span> </button> <ul class=dropdown-menu role=menu> <li v-for="download in downloads"> <a :href=download.url>{{download.label}}</a> </li> </ul> </div> <div class=box-search v-if=p.has_search> <div class=input-group> <input type=text class="form-control input-sm pull-right" style="width: 150px" :placeholder="_(\'Search\')" v-model=search_query debounce=500 @keyup.enter=search> <div class=input-group-btn> <button class="btn btn-sm btn-flat" @click=search> <i class="fa fa-search"></i> </button> </div> </div> </div> </aside> <header class=datatable-header> <slot name=header></slot> </header> <datatable v-if=p.has_data :p=p :fields=fields :track=track> </datatable> <div class="text-center lead" v-if=!p.has_data> {{ empty || _(\'No data\')}} </div> <footer slot=footer> <div :class="{ \'pull-right\': p.pages > 1 }" v-el:footer_container> <slot name=footer></slot> </div> <pagination-widget :p=p></pagination-widget> </footer> </box> </div> '},1159:function(e,t){e.exports=' <ul class="pagination pagination-sm no-margin" v-show="p && p.pages > 1"> <li :class="{ \'disabled\': !p || p.page == 1 }"> <a :title="_(\'First page\')" class=pointer @click=p.go_to_page(1)> « </a> </li> <li :class="{ \'disabled\': !p || p.page == 1 }"> <a :title="_(\'Previous page\')" class=pointer @click=p.previousPage()> ‹ </a> </li> <li v-for="current in range" :class="{ \'active\': current == p.page }"> <a @click=p.go_to_page(current) class=pointer>{{ current }}</a> </li> <li :class="{ \'disabled\': !p || p.page == p.pages }"> <a :title="_(\'Next page\')" class=pointer @click=p.nextPage()> › </a> </li> <li :class="{ \'disabled\': !p || p.page == p.pages }"> <a :title="_(\'Last page\')" class=pointer @click=p.go_to_page(p.pages)> » </a> </li> </ul> '},1160:function(e,t,o){var s,a;o(1177),s=o(1101),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1161:function(e,t,o){var s,a;o(1178),s=o(1102),a=o(1143),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1162:function(e,t,o){var s,a;s=o(1103),a=o(1144),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1163:function(e,t,o){var s,a;s=o(1104),a=o(1145),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1164:function(e,t,o){var s,a;s=o(1105),a=o(1146),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1165:function(e,t,o){var s,a;o(1182),s=o(1106),a=o(1147),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1166:function(e,t,o){var s,a;s=o(1107),a=o(1148),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1167:function(e,t,o){var s,a;s=o(1108),a=o(1149),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1168:function(e,t,o){var s,a;s=o(1109),a=o(1150),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1169:function(e,t,o){var s,a;s=o(1110),a=o(1151),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1170:function(e,t,o){var s,a;s=o(1111),a=o(1152),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1171:function(e,t,o){var s,a;o(1179),s=o(1112),a=o(1153),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1172:function(e,t,o){var s,a;s=o(1113),a=o(1154),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1173:function(e,t,o){var s,a;s=o(1114),a=o(1155),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1174:function(e,t,o){var s,a;s=o(1115),a=o(1156),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1175:function(e,t,o){var s,a;o(1180),s=o(1116),a=o(1157),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1176:function(e,t,o){var s,a;s=o(1118),a=o(1159),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1177:function(e,t,o){var s=o(1135);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1178:function(e,t,o){var s=o(1136);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1179:function(e,t,o){var s=o(1137);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1180:function(e,t,o){var s=o(1138);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1181:function(e,t,o){var s=o(1139);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1182:function(e,t,o){var s=o(1140);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1187:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.HarvestSource=t.VALIDATION_STATUS_I18N=t.VALIDATION_STATUS_CLASSES=void 0;var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(46),l=_interopRequireDefault(n),d=o(27),u=_interopRequireDefault(d),c=o(26),p=_interopRequireDefault(c),f=o(39),b=o(133),h=o(19),v=_interopRequireDefault(h),x=(t.VALIDATION_STATUS_CLASSES={pending:"default",accepted:"success",refused:"danger"},t.VALIDATION_STATUS_I18N={pending:(0,b._)("Pending"),accepted:(0,b._)("Accepted"),refused:(0,b._)("Refused")},t.HarvestSource=function(e){function HarvestSource(){return(0,r.default)(this,HarvestSource),(0,u.default)(this,(HarvestSource.__proto__||(0,a.default)(HarvestSource)).apply(this,arguments))}return(0,p.default)(HarvestSource,e),(0,l.default)(HarvestSource,[{key:"fetch",value:function(e){return e=e||this.id||this.slug,this.loading=!0,e?this.$api("harvest.get_harvest_source",{ident:e},this.on_fetched):v.default.error("Unable to fetch HarvestSource: no identifier specified"),this}},{key:"save",value:function(e){return this.id?this.update(this,e):(this.loading=!0,void this.$api("harvest.create_harvest_source",{payload:this},this.on_fetched,this.on_error(e)))}},{key:"update",value:function(e,t){this.loading=!0,this.$api("harvest.update_harvest_source",{ident:this.id,payload:e},this.on_fetched,this.on_error(t))}}]),HarvestSource}(f.Model));t.default=x},1199:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.HarvestJob=t.STATUS_I18N=t.STATUS_CLASSES=void 0;var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(46),l=_interopRequireDefault(n),d=o(27),u=_interopRequireDefault(d),c=o(26),p=_interopRequireDefault(c),f=o(39),b=o(19),h=_interopRequireDefault(b),v=o(133),x=(t.STATUS_CLASSES={pending:"default",initializing:"primary",initialized:"info",processing:"info",done:"success","done-errors":"warning",failed:"danger",deleted:"danger"},t.STATUS_I18N={pending:(0,v._)("Pending"),initializing:(0,v._)("Initializing"),initialized:(0,v._)("Initialized"),processing:(0,v._)("Processing"),done:(0,v._)("Done"),"done-errors":(0,v._)("Done with errors"),failed:(0,v._)("Failed"),deleted:(0,v._)("Deleted")},t.HarvestJob=function(e){function HarvestJob(){return(0,r.default)(this,HarvestJob),(0,u.default)(this,(HarvestJob.__proto__||(0,a.default)(HarvestJob)).apply(this,arguments))}return(0,p.default)(HarvestJob,e),(0,l.default)(HarvestJob,[{key:"fetch",value:function(){return this.id?(this.loading=!0,this.$api("harvest.get_harvest_job",{ident:this.id},this.on_fetched)):h.default.error("Unable to fetch Job"),this}}]),HarvestJob}(f.Model));t.default=x},1300:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.harvest_backends=t.HarvestBackends=void 0;var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(27),l=_interopRequireDefault(n),d=o(26),u=_interopRequireDefault(d),c=o(39),p=t.HarvestBackends=function(e){function HarvestBackends(e){(0,r.default)(this,HarvestBackends);var t=(0,l.default)(this,(HarvestBackends.__proto__||(0,a.default)(HarvestBackends)).call(this,e));return t.$options.ns="harvest",t.$options.fetch="harvest_backends",t}return(0,u.default)(HarvestBackends,e),HarvestBackends}(c.List),f=t.harvest_backends=(new p).fetch();t.default=f},1302:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.STATUS_I18N=t.STATUS_CLASSES=void 0;var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(27),l=_interopRequireDefault(n),d=o(26),u=_interopRequireDefault(d),c=o(39),p=o(19),f=(_interopRequireDefault(p),
|
|
2
|
+
o(133)),b=(t.STATUS_CLASSES={pending:"default",started:"info",done:"success",failed:"danger",skipped:"warning",archived:"warning"},t.STATUS_I18N={pending:(0,f._)("Pending"),started:(0,f._)("Started"),done:(0,f._)("Done"),failed:(0,f._)("Failed"),skipped:(0,f._)("Skipped"),archived:(0,f._)("Archived")},function(e){function HarvestItem(){return(0,r.default)(this,HarvestItem),(0,l.default)(this,(HarvestItem.__proto__||(0,a.default)(HarvestItem)).apply(this,arguments))}return(0,u.default)(HarvestItem,e),HarvestItem}(c.Model));t.default=b},1322:function(e,t,o){var s,a;s=o(1335),a=o(1359),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1334:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1302),a=o(318),i=_interopRequireDefault(a),r=o(323),n=_interopRequireDefault(r);t.default={components:{Modal:i.default,DatasetCard:n.default},props:{item:Object},events:{"dataset:clicked":function(e){document.location=e.page}},filters:{statusClass:function(e){return s.STATUS_CLASSES[e]},statusI18n:function(e){return s.STATUS_I18N[e]}}}},1335:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1199),a=o(1302),i=o(39),r=o(1039),n=_interopRequireDefault(r);t.default={name:"JobDetails",props:{job:s.HarvestJob,loading:{type:Boolean,default:void 0},empty:String,withSlot:{type:Boolean,default:!1}},components:{Datatable:n.default},data:function(){var e=this;return{fields:[{label:this._("Remote ID"),key:"remote_id",sort:"remote_id",ellipsis:!0},{label:this._("Logs"),key:function(t){return t.logs.length?t.logs.length+" "+e._("logs"):""},width:80},{label:this._("Status"),key:"status",sort:"status",type:"label",width:100,label_type:function(e){return a.STATUS_CLASSES[e]},label_func:function(e){return a.STATUS_I18N[e]}}],p:new i.PageList({data:this.job.items})}},computed:{title:function(){return this.job.id?"Job "+this.job.id:"Job"}},events:{"datatable:item:click":function(e){this.$dispatch("harvest:job:item:selected",e)}},filters:{statusClass:function(e){return s.STATUS_CLASSES[e]||""},statusI18n:function(e){return s.STATUS_I18N[e]},count:function(e,t){return e?e.filter(function(e){return e.status===t}).length:"-"}},watch:{"job.items":function(e){this.p=new i.PageList({data:e})}}}},1336:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(99),a=_interopRequireDefault(s),i=o(1300),r=(_interopRequireDefault(i),o(1199)),n=_interopRequireDefault(r),l=o(1187),d=_interopRequireDefault(l),u=o(1322),c=_interopRequireDefault(u);t.default={name:"HarvestPreviewView",components:{JobWidget:c.default},props:{source:{type:Object,default:function(){return new d.default}},fromConfig:{type:Boolean,default:!1}},data:function(){return{job:new n.default,loading:!1}},computed:{empty:function(){return this.job.created?this._("No item found"):" "}},methods:{preview:function(){this.loading=!0,this.fromConfig?a.default.harvest.preview_harvest_source_config({payload:this.source},this.onPreviewFetch,this.$root.handleApiError):a.default.harvest.preview_harvest_source({ident:this.source.id},this.onPreviewFetch,this.$root.handleApiError)},onPreviewFetch:function(e){this.job.on_fetched(e),this.loading=!1}}}},1349:function(e,t,o){t=e.exports=o(37)(),t.push([e.id,".job-item-modal .modal-footer{text-align:center!important}","",{version:3,sources:["/./js/components/harvest/item.vue"],names:[],mappings:"AAAA,8BAA8B,2BAA4B,CAAC",file:"item.vue",sourcesContent:[".job-item-modal .modal-footer{text-align:center !important}"],sourceRoot:"webpack://"}])},1358:function(e,t){e.exports=" <modal class=job-item-modal v-ref:modal :class=\"{\n 'modal-success': item.status === 'done',\n 'modal-danger': item.status === 'failed',\n 'modal-warning': item.status === 'skipped'\n }\"> <div class=modal-body> <dl class=clearfix> <dt>{{ _('Remote ID') }}</dt> <dd>{{ item.remote_id }}</dd> <dt>{{ _('Started at') }}</dt> <dd>{{ item.started | dt }}</dd> <dt>{{ _('Ended at') }}</dt> <dd>{{ item.ended | dt }}</dd> <dt>{{ _('Status') }}</dt> <dd><span class=\"label label-{{ item.status | statusClass }}\">{{ item.status | statusI18n }}</span></dd> <dt v-if=item.dataset>{{ _('Dataset') }}</dt> <dd v-if=item.dataset> <dataset-card class=col-xs-12 clickable v-if=item.dataset.id :datasetid=item.dataset.id> </dataset-card> <dataset-card class=col-xs-12 clickable v-if=!item.dataset.id :dataset=item.dataset> </dataset-card> </dd> <dt v-if=item.dataservice>{{ _('Dataservice') }}</dt> <dd v-if=item.dataservice> <div class=card> <div class=card-body> <h4> <a :title=item.dataservice.title :href=item.dataservice.self_web_url> {{ item.dataservice.title | truncate 80 }} </a> <div class=clamp-3>{{{ item.dataservice.description | markdown 180 }}}</div> </h4> </div> </div> </dd> <dt v-if=item.errors.length>{{ _('Errors') }}</dt> <dd v-if=item.errors.length> <div v-for=\"error in item.errors\"> {{{error.message | markdown}}} <pre>{{error.details}}</pre> </div> </dd> <dt v-if=item.logs.length>{{ _('Logs') }}</dt> <dd v-if=item.logs.length> <div v-for=\"log in item.logs\"> {{log.level}} <div>{{log.message}}</div> </div> </dd> </dl> </div> <footer class=modal-footer> <button type=button class=\"btn btn-outline btn-flat pointer\" @click=$refs.modal.close> {{ _('Close') }} </button> </footer> </modal> "},1359:function(e,t){e.exports=' <div> <datatable icon=cog :title=title bodyclass="table-responsive no-padding" :p=p :track=false :loading="loading !== undefined ? loading : job.loading" :fields=fields track=remote_id :empty=empty :tint="job.status | statusClass"> <div class=row slot=header> <div class=col-xs-12 :class="{\'col-lg-6\': job.created}" v-show=withSlot> <slot></slot> </div> <dl class="dl-horizontal col-xs-12" :class="{\'col-lg-6\': withSlot}" v-show=job.created> <dt>{{ _(\'Created at\') }}</dt> <dd>{{ job.created | dt }}</dd> <dt>{{ _(\'Ended at\') }}</dt> <dd>{{ job.ended | dt }}</dd> <dt>{{ _(\'Status\') }}</dt> <dd><span class="label label-{{ job.status | statusClass }}">{{ job.status | statusI18n }}</span></dd> <dt v-if="job.errors && job.errors.length">{{ _(\'Errors\') }}</dt> <dd v-if="job.errors && job.errors.length"> <div v-for="error in job.errors"> <p><strong>{{{error.message | markdown}}}</strong></p> <div v-if=error.details> <code><pre>{{error.details}}</pre></code> </div> </div> </dd> <dt v-if="job.items && job.items.length">{{ _(\'Items\') }}</dt> <dd v-if="job.items && job.items.length"> <span class=text-warning v-tooltip tooltip-placement=top :title="_(\'Number of skipped items\')">{{job.items | count \'skipped\'}}</span> / <span class=text-warning v-tooltip tooltip-placement=top :title="_(\'Number of archived items\')">{{job.items | count \'archived\'}}</span> / <span class=text-danger v-tooltip tooltip-placement=top :title="_(\'Number of failed items\')">{{job.items | count \'failed\'}}</span> / <span class=text-green v-tooltip tooltip-placement=top :title="_(\'Number of succeed items\')">{{job.items | count \'done\'}}</span> / <strong>{{job.items.length}}</strong> </dd> </dl> </div> </datatable> </div> '},1360:function(e,t){e.exports=' <div> <job-widget :job=job :loading=loading :empty=empty with-slot> <div class=text-center> <button class="btn btn-primary btn-flat" @click=preview> <span class="fa fa-cog"></span> {{ _(\'Preview\') }} </button> </div> </job-widget> </div> '},1376:function(e,t,o){var s,a;o(1390),s=o(1334),a=o(1358),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1377:function(e,t,o){var s,a;s=o(1336),a=o(1360),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1390:function(e,t,o){var s=o(1349);"string"==typeof s&&(s=[[e.id,s,""]]);o(38)(s,{sourceMap:!0});s.locals&&(e.exports=s.locals)},1395:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(21),a=_interopRequireDefault(s),i=o(20),r=_interopRequireDefault(i),n=o(27),l=_interopRequireDefault(n),d=o(26),u=_interopRequireDefault(d),c=o(39),p=o(19),f=(_interopRequireDefault(p),function(e){function HarvestJobPage(e){(0,r.default)(this,HarvestJobPage);var t=(0,l.default)(this,(HarvestJobPage.__proto__||(0,a.default)(HarvestJobPage)).call(this,e));return t.$options.ns="harvest",t.$options.fetch="list_harvest_jobs",t}return(0,u.default)(HarvestJobPage,e),HarvestJobPage}(c.ModelPage));t.default=f},1430:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(99),a=_interopRequireDefault(s),i=o(318),r=_interopRequireDefault(i);t.default={components:{Modal:r.default},props:{source:Object},methods:{confirm:function(){var e=this;a.default.harvest.delete_harvest_source({ident:this.source.id},function(t){e.source.fetch(),e.$refs.modal.close()},this.$root.handleApiError)}}}},1432:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1199),a=o(1039),i=_interopRequireDefault(a),r=o(1395),n=_interopRequireDefault(r),l=["id","created","status"],d=20;t.default={components:{Datatable:i.default},props:{source:Object,current:null},data:function(){return{AVATAR_SIZE:d,title:this._("Jobs"),jobs:new n.default({query:{page_size:10},mask:l}),fields:[{label:this._("Date"),key:"created",sort:"created",type:"datetime"},{label:this._("Status"),key:"status",type:"label",label_type:function(e){return s.STATUS_CLASSES[e]},label_func:function(e){return s.STATUS_I18N[e]}}]}},events:{"datatable:item:click":function(e){return this.$dispatch("harvest:job:selected",e),!0}},watch:{"source.id":function(e){e&&this.jobs.fetch({ident:e})}}}},1433:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(99),a=_interopRequireDefault(s),i=o(318),r=_interopRequireDefault(i);t.default={components:{Modal:r.default},props:{source:Object},data:function(){return{comment:null}},methods:{validate:function(){this.perform_validation("accepted")},reject:function(){this.perform_validation("refused")},perform_validation:function(e){var t=this;return"refused"!==e||this.comment?(this.$els.group.className.replace("has-error",""),!this.$els.group.className.indexOf("has-success")>=0&&(this.$els.group.className+=" has-success"),void a.default.harvest.validate_harvest_source({ident:this.source.id,payload:{state:e,comment:this.comment}},function(e){t.source.on_fetched(e),t.$refs.modal.close()},this.$root.handleApiError)):(this.$els.group.className.replace("has-success",""),void(!this.$els.group.className.indexOf("has-error")>=0&&(this.$els.group.className+=" has-error")))}}}},1469:function(e,t,o){"use strict";function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var s=o(1187),a=_interopRequireDefault(s),i=o(1199),r=_interopRequireDefault(i),n=o(1376),l=_interopRequireDefault(n),d=o(57),u=(_interopRequireDefault(d),o(1377)),c=_interopRequireDefault(u),p=o(1611),f=_interopRequireDefault(p),b=o(1322),h=_interopRequireDefault(b),v=o(1081),x=_interopRequireDefault(v),_=["id","name","url","owner","organization","backend","validation{state}","schedule","deleted"];t.default={name:"HarvestSourceView",components:{Preview:c.default,SourceWidget:f.default,JobWidget:h.default,Layout:x.default},data:function(){return{source:new a.default({mask:_}),current_job:null,current_item:null}},computed:{is_validation_pending:function(){return this.source&&this.source.validation&&"pending"===this.source.validation.state},should_validate:function(){return this.is_validation_pending&&this.$root.me.is_admin},display_warning:function(){return this.is_validation_pending&&!this.$root.me.is_admin},badges:function(){return this.source&&this.source.deleted?[{class:"danger",label:this._("Deleted")}]:[]},actions:function actions(){var actions=[{label:this._("Edit"),icon:"pencil",method:this.edit}];return this.$root.me.is_admin&&actions.push({label:this._("Scheduling"),icon:"history",method:this.schedule},{divider:!0}),actions.push({label:this._("Delete"),icon:"trash",method:this.confirm_delete}),actions}},events:{"harvest:job:selected":function(e){return this.current_job=new r.default({data:e}).fetch(),!0},"harvest:job:item:selected":function(e){return this.current_item=e,this.$root.$modal(l.default,{item:e}),!0}},methods:{edit:function(){this.$go({name:"harvester-edit",params:{oid:this.source.id}})},confirm_delete:function(){this.$root.$modal(o(1610),{source:this.source})},validate_source:function(){this.$root.$modal(o(1612),{source:this.source})},schedule:function(){this.$go({name:"harvester-schedule",params:{oid:this.source.id}})}},route:{data:function(){this.source.fetch(this.$route.params.oid)}}}},1527:function(e,t){e.exports=' <modal :title="_(\'Confirm deletion\')" class="modal-danger harvest-delete-modal" v-ref:modal> <div class=modal-body> <p class="lead text-center"> {{ _(\'You are about to delete this harvest source\') }} </p> <p class="lead text-center"> {{ _(\'Are you sure?\') }} </p> </div> <footer class="modal-footer text-center"> <button type=button class="btn btn-danger btn-flat pull-left" @click=$refs.modal.close> {{ _(\'Cancel\') }} </button> <button type=button class="btn btn-warning btn-flat" @click=confirm> {{ _(\'Confirm\') }} </button> </footer> </modal> '},1529:function(e,t){e.exports=" <div> <datatable :title=\"source.name || ''\" icon=tasks boxclass=harvest-jobs-widget :fields=fields :p=jobs :loading=\"source.loading || jobs.loading\" :empty=\"_('No job yet')\"> <header slot=header> {{{ source.description | markdown }}} <dl class=dl-horizontal> <dt v-if=source.owner>{{ _('Owner') }}</dt> <dd v-if=source.owner> <a v-link=\"{name:'user', params: {oid: source.owner.id}}\" :title=\"source.owner | display\"> <img class=avatar :src=\"source.owner | avatar_url AVATAR_SIZE\" :alt=\"source.owner | display\" :width=AVATAR_SIZE :height=AVATAR_SIZE> {{ source.owner | display }} </a> </dd> <dt v-if=source.organization>{{ _('Organization') }}</dt> <dd v-if=source.organization> <a v-link=\"{name:'organization', params: {oid: source.organization.id}}\" :title=\"source.organization | display\"> <img class=avatar :src=\"source.organization | logo_url AVATAR_SIZE\" :alt=\"source.organization | display\" :width=AVATAR_SIZE :height=AVATAR_SIZE> {{ source.organization | display }} </a> </dd> <dt>{{ _('Backend') }}</dt> <dd>{{ source.backend }}</dd> <dt>{{ _('URL') }}</dt> <dd>{{ source.url }}</dd> <dt>{{ _('Scheduling') }}</dt> <dd v-if=source.schedule>{{ source.schedule }}</dd> <dd v-else>{{ _('Not scheduled') }}</dd> <dt>{{ _('Jobs') }}</dt> <dd>{{ jobs.total }}</dd> </dl> </header> </datatable> </div> "},1530:function(e,t){e.exports=" <modal v-ref:modal :title=\"_('Harvest source validation')\" class=\"modal-info harvest-delete-modal\"> <div class=modal-body> <p> {{ _('You are about to validate (or not) this harvest source.') }} {{ _('It means that this source will be harvested regulary.') }} </p> <form role=form> <div class=form-group v-el:group> <label>{{ _('Reason') }}</label> <textarea class=form-control rows=3 v-el:comment :placeholder=\"_('Explain your validation')\" v-model=comment>\n </textarea> </div> </form></div> <footer class=\"modal-footer text-center\"> <button type=button class=\"btn btn-success btn-flat pull-left\" @click=validate> {{ _('Validate') }} </button> <button type=button class=\"btn btn-danger btn-flat\" @click=reject> {{ _('Reject') }} </button> </footer> </modal> "},1566:function(e,t){e.exports=" <div> <layout :title=\"source.name || ''\" :subtitle=\"source.backend || ''\" :actions=actions :badges=badges> <div class=\"alert alert-info\" v-if=should_validate> <div class=\"btn-toolbar pull-right\"> <div class=btn-group> <button class=\"btn btn-danger btn-xs\" @click=confirm_delete>{{ _('Delete') }}</button> </div> <div class=btn-group> <button class=\"btn btn-primary btn-xs\" @click=validate_source>{{ _('Validate') }}</button> </div> </div> {{ _('This harvest source has not been validated') }} </div> <div class=\"alert alert-warning\" v-if=display_warning> {{ _('This harvest source has not been validated') }} </div> <div class=row> <source-widget :source=source :class=\"{\n 'col-xs-12': !current_job,\n 'col-md-4': current_job,\n }\"> </source-widget> <job-widget v-if=current_job :job=current_job class=col-md-8> </job-widget> </div> <div class=row v-if=should_validate> <preview class=col-xs-12 :source=source></preview> </div> </layout> </div> "},1610:function(e,t,o){var s,a;s=o(1430),a=o(1527),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1611:function(e,t,o){var s,a;s=o(1432),a=o(1529),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)},1612:function(e,t,o){var s,a;s=o(1433),a=o(1530),e.exports=s||{},e.exports.__esModule&&(e.exports=e.exports.default),a&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=a)}});
|
|
3
|
+
//# sourceMappingURL=18.1922fd0b2b7fad122991.js.map
|