{"version":3,"sources":["./node_modules/moment/locale sync ^\\.\\/.*$","./src/app/app.component.html","./src/app/fish-map/fish-map.component.html","./src/app/fish-map/recaptures-list/recaptures-list.component.html","./src/app/shared/map/map.component.html","./src/$_lazy_route_resource lazy namespace object","./src/app/app-routing.module.ts","./src/app/app.component.scss","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/core/core.module.ts","./src/app/core/helpers/common/formatter.helper.ts","./src/app/core/helpers/common/utils.ts","./src/app/core/helpers/index.ts","./src/app/core/helpers/map/catches.helper.ts","./src/app/core/helpers/map/factories.helper.ts","./src/app/core/helpers/map/recaptures.helper.ts","./src/app/core/helpers/map/releases.helper.ts","./src/app/core/models/common/catch.ts","./src/app/core/models/common/color.ts","./src/app/core/models/common/factory.ts","./src/app/core/models/common/feature-data.ts","./src/app/core/models/common/filter-recapture.ts","./src/app/core/models/common/filter.ts","./src/app/core/models/common/recapture.ts","./src/app/core/models/common/release.ts","./src/app/core/models/common/select-item.ts","./src/app/core/models/enums/feature-states.ts","./src/app/core/models/enums/feature-types.ts","./src/app/core/models/enums/layer-types.ts","./src/app/core/models/ices/ices-catch-group.ts","./src/app/core/models/ices/ices-cell.ts","./src/app/core/models/ices/ices-filter.ts","./src/app/core/models/ices/ices-recapture-group.ts","./src/app/core/models/ices/ices-recaptures.ts","./src/app/core/models/ices/ices-release-group.ts","./src/app/core/models/ices/ices-releases.ts","./src/app/core/models/ices/ices-total.ts","./src/app/core/models/index.ts","./src/app/core/models/map/interpolated-feature-style.ts","./src/app/core/models/map/map-configuration.ts","./src/app/core/pipes/date-format.pipe.ts","./src/app/core/pipes/weight-format.pipe.ts","./src/app/core/services/app-config-resolover.service.ts","./src/app/core/services/app-config.service.ts","./src/app/fish-map/fish-map.component.scss","./src/app/fish-map/fish-map.component.ts","./src/app/fish-map/fish-map.module.ts","./src/app/fish-map/panel-option.ts","./src/app/fish-map/recaptures-list/recaptures-list.component.scss","./src/app/fish-map/recaptures-list/recaptures-list.component.ts","./src/app/services/app.settings.ts","./src/app/services/fish-map.service.ts","./src/app/services/index.ts","./src/app/services/logger.service.ts","./src/app/services/settings.service.ts","./src/app/shared/group.pipe.ts","./src/app/shared/map/map.component.scss","./src/app/shared/map/map.component.ts","./src/app/shared/shared.module.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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","file":"main-es2015.js","sourcesContent":["var map = {\n\t\"./af\": \"./node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"./node_modules/moment/locale/af.js\",\n\t\"./ar\": \"./node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"./node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"./node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"./node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"./node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"./node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"./node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"./node_modules/moment/locale/ar.js\",\n\t\"./az\": \"./node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"./node_modules/moment/locale/az.js\",\n\t\"./be\": \"./node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"./node_modules/moment/locale/be.js\",\n\t\"./bg\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"./node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"./node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"./node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"./node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"./node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"./node_modules/moment/locale/bo.js\",\n\t\"./br\": \"./node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"./node_modules/moment/locale/br.js\",\n\t\"./bs\": \"./node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"./node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"./node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"./node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"./node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"./node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"./node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"./node_modules/moment/locale/cy.js\",\n\t\"./da\": \"./node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"./node_modules/moment/locale/da.js\",\n\t\"./de\": \"./node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"./node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"./node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"./node_modules/moment/locale/de.js\",\n\t\"./dv\": \"./node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"./node_modules/moment/locale/dv.js\",\n\t\"./el\": \"./node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"./node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"./node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"./node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"./node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"./node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"./node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"./node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"./node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"./node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"./node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"./node_modules/moment/locale/eo.js\",\n\t\"./es\": \"./node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"./node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"./node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"./node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"./node_modules/moment/locale/es.js\",\n\t\"./et\": \"./node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"./node_modules/moment/locale/et.js\",\n\t\"./eu\": \"./node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"./node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"./node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"./node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"./node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"./node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"./node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"./node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"./node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"./node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"./node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"./node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"./node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"./node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"./node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"./node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"./node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"./node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"./node_modules/moment/locale/gu.js\",\n\t\"./he\": \"./node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"./node_modules/moment/locale/he.js\",\n\t\"./hi\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"./node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"./node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"./node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"./node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"./node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"./node_modules/moment/locale/id.js\",\n\t\"./is\": \"./node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"./node_modules/moment/locale/is.js\",\n\t\"./it\": \"./node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"./node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"./node_modules/moment/locale/it.js\",\n\t\"./ja\": \"./node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"./node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"./node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"./node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"./node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"./node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"./node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"./node_modules/moment/locale/kk.js\",\n\t\"./km\": \"./node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"./node_modules/moment/locale/km.js\",\n\t\"./kn\": \"./node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"./node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"./node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"./node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"./node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"./node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"./node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"./node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"./node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"./node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"./node_modules/moment/locale/lv.js\",\n\t\"./me\": \"./node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"./node_modules/moment/locale/me.js\",\n\t\"./mi\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"./node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"./node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"./node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"./node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"./node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"./node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"./node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"./node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"./node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"./node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"./node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"./node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"./node_modules/moment/locale/mt.js\",\n\t\"./my\": \"./node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"./node_modules/moment/locale/my.js\",\n\t\"./nb\": \"./node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"./node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"./node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"./node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"./node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"./node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"./node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"./node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"./node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"./node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"./node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"./node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"./node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"./node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"./node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"./node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"./node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"./node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"./node_modules/moment/locale/sd.js\",\n\t\"./se\": \"./node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"./node_modules/moment/locale/se.js\",\n\t\"./si\": \"./node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"./node_modules/moment/locale/si.js\",\n\t\"./sk\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"./node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"./node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"./node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"./node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"./node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"./node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"./node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"./node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"./node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"./node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"./node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"./node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"./node_modules/moment/locale/ta.js\",\n\t\"./te\": \"./node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"./node_modules/moment/locale/te.js\",\n\t\"./tet\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"./node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"./node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"./node_modules/moment/locale/tg.js\",\n\t\"./th\": \"./node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"./node_modules/moment/locale/th.js\",\n\t\"./tk\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"./node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"./node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"./node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"./node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"./node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"./node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"./node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"./node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"./node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"./node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"./node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"./node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"./node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"./node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"./node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"./node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"./node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"./node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"./node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"./node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"./node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"./node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"./node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"./node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"./node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","export default \"\";","export default \"
\\n \\n \\n
\\n \\n
Area {{ selectedFeature?.ICES }}
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n \\n \\n {{fish}}\\n \\n\\n \\n\\n
\\n\\n \\n
\\n \\n \\n Releases\\n \\n \\n Recaptures\\n \\n \\n Catches\\n \\n \\n \\n
\\n\\n \\n \\n\\n \\n \\n
\\n
\\n
Year
\\n \\n \\n {{ year.Text }}\\n \\n \\n
\\n
\\n
Releases:
{{ totalReleases | weightFormat }}
\\n
\\n
\\n
\\n\\n \\n \\n
\\n
\\n
Year
\\n \\n \\n {{ year.Text }}\\n \\n \\n
\\n
\\n
Factory
\\n \\n *\\n \\n {{ factory.Text }}\\n \\n \\n
\\n
\\n
Release Year
\\n \\n \\n {{ releaseYear.Text }}\\n \\n \\n
\\n
\\n
Expedition
\\n \\n *\\n \\n {{ expedition.Text }}\\n \\n \\n
\\n
Recaptures:
{{ totalRecaptures | weightFormat }}
\\n
\\n
\\n\\n \\n \\n
\\n
\\n
Year
\\n \\n \\n {{ year.Text }}\\n \\n \\n
\\n
\\n
Factory
\\n \\n *\\n \\n {{ factory.Text }}\\n \\n \\n
\\n
Catches:
{{ totalCatches | weightFormat }}\\n kg\\n
\\n
\\n
\\n\\n \\n \\n \\n\\n \\n
\\n\\n \\n \\n \\n \\n \\n \\n\\n
\\n \\n \\n
\\n \\n
\\n\\n \\n \\n
\\n\\n \\n \\n\\n \\n \\n
\\n
\\n \\n
\\n \\n \\n
\\n\\n \\n \\n \\n
\\n \\n\\n \\n\\n \\n
\\n
\\n

List of Recaptures

\\n \\n
\\n
\\n
\\n
Year
\\n \\n \\n {{ year.Text }}\\n \\n \\n
\\n
\\n
Factory
\\n \\n *\\n \\n {{ factory.Text }}\\n \\n \\n
\\n
\\n
\\n \\n
\\n
\\n\\n \\n \\n
\\n
Released{{ selectedFeature?.Total | weightFormat }}
\\n
Total recaptured{{ selectedFeature?.Recaptures.Total | weightFormat }}\\n
\\n
\\n
\\n {{ recapture.Total }} recaptured in {{ recapture.ICES }} in {{ recapture.Year }}\\n
\\n
\\n
\\n
\\n \\n
\\n
Recaptured{{ selectedFeature?.Total | weightFormat }}
\\n \\n
\\n
\\n {{ release.value.length }} released in {{ release.key }} in {{ release.value[0].ReleasedYear }}\\n
\\n
\\n
\\n
\\n \\n
\\n
Caught{{ selectedFeature?.Total | weightFormat }} kg
\\n
Recaptures{{ selectedFeature?.Recaptures.Total }}
\\n
\\n
\\n {{ catch.Total }} released in {{ catch.ICES }} in {{ catch.Year }}\\n
\\n
\\n
\\n
\\n\\n
\";","export default \"\\n\\n\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
Recapture TimeFactoryRecapture ICESRelease ICESRelease Year
{{ recapture.RecapturedTime | dateFormat }}{{ recapture.RecapturedFactory }}{{ recapture.RecapturedArea }}{{ recapture.ReleasedICES }}{{ recapture.ReleasedYear }}
\\n\\n\\n \";","export default \"
\\n
\\n
\\n
\\n\";","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Routes, RouterModule } from '@angular/router';\nimport { FishMapComponent } from './fish-map/fish-map.component';\nimport { AppConfigResoloverService } from './core/services/app-config-resolover.service';\n\nconst routes: Routes = [\n {\n path: '',\n component: FishMapComponent,\n resolve: { appConfig: AppConfigResoloverService }\n }\n];\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule.forRoot(routes)\n ],\n exports: [\n RouterModule\n ],\n providers: []\n})\nexport class AppRoutingModule { }\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL2FwcC5jb21wb25lbnQuc2NzcyJ9 */\";","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n title = 'app works!';\n\n constructor() {\n }\n\n ngOnInit() {\n }\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule } from '@angular/common/http';\nimport { BrowserAnimationsModule, NoopAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { AppComponent } from './app.component';\nimport { FishMapModule } from './fish-map/fish-map.module';\nimport { AppSettings, FishMapService, LoggerService, SettingsService } from './services';\nimport { AppRoutingModule } from './app-routing.module';\nimport { CoreModule } from './core/core.module';\n\n@NgModule({\n declarations: [\n AppComponent\n ],\n imports: [\n BrowserModule,\n CoreModule.forRoot(),\n AppRoutingModule,\n FormsModule,\n BrowserAnimationsModule,\n NoopAnimationsModule,\n FishMapModule,\n HttpClientModule\n ],\n providers: [\n AppSettings,\n FishMapService,\n LoggerService,\n SettingsService, \n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { AppConfigResoloverService } from './services/app-config-resolover.service';\nimport { HttpClientModule } from '@angular/common/http';\nimport { NgModule, Optional, SkipSelf, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AppConfigService } from './services/app-config.service';\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule\n ],\n declarations: [],\n providers: []\n})\n\nexport class CoreModule {\n\n constructor( @Optional() @SkipSelf() parentModule: CoreModule) {\n if (parentModule) {\n throw new Error(\n 'CoreModule is already loaded. Import it in the AppModule only');\n }\n }\n\n static forRoot(): ModuleWithProviders {\n return {\n ngModule: CoreModule,\n providers: [AppConfigService, AppConfigResoloverService]\n };\n }\n\n}\n","import { SelectItem, ICESGroup } from '../../models'\nexport class FormatterHelper {\n\n constructor() { }\n\n public convertToISODecimal(numberStr: string): number {\n let value = 0;\n if (numberStr) {\n numberStr = numberStr.replace(',', '.');\n value = Number(numberStr);\n }\n return value;\n }\n\n public getUniqueItems(array: T[]): T[] {\n return array.filter((v, i, a) => v && a.indexOf(v) === i);\n }\n\n public convertToSelectList(array: number[]): SelectItem[] {\n return array.map(i => new SelectItem(i, i.toString()));\n }\n\n public getMaxGroup(array: T[]): T {\n return array.reduce((a, b) => this.max(a, b));\n }\n\n public getMinGroup(array: T[]): T {\n return array.reduce((a, b) => this.min(a, b));\n }\n\n public max(one: T, two: T): T {\n if (one.Total > two.Total) {\n return one;\n }\n else {\n return two;\n }\n }\n\n public min(one: T, two: T): T {\n if (one.Total < two.Total) {\n return one;\n }\n else {\n return two;\n }\n } \n}","export function sortAlphaNum(a, b) {\n var reA = /[^a-zA-Z]/g;\n var reN = /[^0-9]/g;\n\n var AInt = parseInt(a, 10);\n var BInt = parseInt(b, 10);\n\n if (isNaN(AInt) && isNaN(BInt)) {\n var aA = a.replace(reA, \"\");\n var bA = b.replace(reA, \"\");\n if (aA === bA) {\n var aN = parseInt(a.replace(reN, \"\"), 10);\n var bN = parseInt(b.replace(reN, \"\"), 10);\n return aN === bN ? 0 : bN > aN ? 1 : -1;\n } else {\n return aA > bA ? 1 : -1;\n }\n } else if (isNaN(AInt)) {\n return 1;\n } else if (isNaN(BInt)) {\n return -1;\n } else {\n return BInt > AInt ? 1 : -1;\n }\n}","export { FactoriesHelper } from './map/factories.helper';\nexport { ReleasesHelper } from './map/releases.helper';\nexport { RecapturesHelper } from './map/recaptures.helper';\nexport { CatchesHelper } from './map/catches.helper';\nexport { FormatterHelper } from './common/formatter.helper';","import { Catch, Recapture, Filter, ICESFilter, ICESCatchGroup } from '../../models';\nimport { FormatterHelper } from '../common/formatter.helper';\n\nexport class CatchesHelper {\n\n catches: Catch[];\n formatter: FormatterHelper;\n\n constructor() {\n this.catches = [];\n this.formatter = new FormatterHelper();\n }\n\n createCatch(data: any): Catch {\n return { \n ICES : data.ices_rectangle ? data.ices_rectangle : '?',\n CatchYear : data.catchdate,\n FactoryId : data.reference_plant,\n FactoryName : data.plant_name,\n FactoryICES : data.plant_ices_rectangle,\n Catches: data.catches,\n TotalWeight: data.TotalWeight\n }\n }\n\n public findCatches(filter: Filter): Catch[] {\n return this.catches.filter(c => \n ((filter.Year == 0 || c.CatchYear === filter.Year) && (filter.Factory.length == 0 || filter.Factory.includes(c.FactoryId))));\n }\n\n public findCatchesByICES(filter: ICESFilter): Catch[] {\n return this.catches.filter(c => \n ((filter.Year == 0 || c.CatchYear === filter.Year) && c.ICES === filter.ICES));\n }\n \n public getMinCatchGroup(groups: ICESCatchGroup[]): ICESCatchGroup {\n return this.formatter.getMinGroup(groups);\n }\n\n public getMaxCatchGroup(groups: ICESCatchGroup []): ICESCatchGroup {\n return this.formatter.getMaxGroup(groups);\n }\n \n public groupByICES(catches: Catch[]): ICESCatchGroup[] {\n let groups = [];\n let result = catches.reduce((r, a) => this.group(r, a), Object.create(null));\n // Make a list of groups\n if (result) {\n for (let key in result) {\n if (key != '?') {\n result[key].Total = Math.round(result[key].Total);\n groups.push(result[key]);\n }\n }\n }\n return groups;\n }\n\n /* Helper functions */\n\n private group(r: any, a: Catch) {\n r[a.ICES] = r[a.ICES] || new ICESCatchGroup(a.ICES);\n r[a.ICES].Total += a.TotalWeight;\n r[a.ICES].Catches.push(a);\n return r;\n }\n\n \n}","import { Factory } from '../../models';\nimport { FormatterHelper } from '../common/formatter.helper';\n\nexport class FactoriesHelper {\n\n protected formatterHelper: FormatterHelper;\n public factories: Factory[];\n\n constructor() {\n this.factories = [];\n this.formatterHelper = new FormatterHelper();\n }\n\n createFactory(data: any): Factory {\n let factory: Factory = {\n Id: data.pkID,\n Name: data.name,\n Longitude: this.formatterHelper.convertToISODecimal(data.LO),\n Latitude: this.formatterHelper.convertToISODecimal(data.LA)\n };\n return factory;\n }\n\n findFactory(factory: string[]): Factory[] {\n return this.factories.filter(f => factory.includes(f.Id));\n }\n\n\n}","import { FilterRecapture } from '@app/core/models/common/filter-recapture';\nimport { Recapture, Filter, ICESTotal, ICESFilter, ICESRecaptures, ICESReleases, ICESRecaptureGroup } from '../../models';\nimport { FormatterHelper } from '../common/formatter.helper';\n\nexport class RecapturesHelper {\n\n protected formatter: FormatterHelper;\n public recaptures: Recapture[];\n\n constructor() {\n this.recaptures = [];\n this.formatter = new FormatterHelper();\n }\n\n public createRecapture(data: any): Recapture {\n let recapture: Recapture = {\n ReleasedICES: data.RelICES,\n ReleasedYear: data.RelTime,\n RecapturedTime: data.RecTime,\n RecapturedYear: new Date(data.RecTime).getFullYear(),\n RecapturedTimestamp: new Date(data.RecTime),\n ReleasedLongitude: this.formatter.convertToISODecimal(data.RelPosLO),\n ReleasedLatitude: this.formatter.convertToISODecimal(data.RelPosLA),\n RecapturedFactoryId: data.FactoryID,\n RecapturedFactory: data.RecFactory,\n RecapturedArea: data.RecArea ? data.RecArea : '?',\n RecapturedExpedition: data.Expedition\n }\n return recapture;\n }\n\n public findRecaptures(filter: FilterRecapture): Recapture[] {\n return this.recaptures.filter(function(recapture) {\n return (\n (filter.Year == 0 || recapture.RecapturedYear === filter.Year) &&\n (filter.Factory.length == 0 || filter.Factory.includes('') || filter.Factory.includes(recapture.RecapturedFactoryId)) &&\n ((filter.ReleaseYear == 0 || recapture.ReleasedYear === filter.ReleaseYear)) &&\n (filter.Expedition.length == 0 || filter.Expedition.includes('') || filter.Expedition.includes(recapture.RecapturedExpedition))\n )});\n }\n\n public findRecapturesByReleasedICES(filter: ICESFilter): Recapture[] {\n return this.recaptures.filter(recapture =>\n ((filter.Year == 0 || recapture.ReleasedYear === filter.Year) && recapture.ReleasedICES === filter.ICES));\n }\n\n public findRecapturesByRecapturedICES(filter: ICESFilter): Recapture[] {\n return this.recaptures.filter(recapture =>\n ((filter.Year == 0 || recapture.RecapturedYear === filter.Year)\n && (filter.Factory.length == 0 || filter.Factory.includes('') || filter.Factory.includes(recapture.RecapturedFactoryId))\n && recapture.RecapturedArea === filter.ICES));\n }\n\n public findReleasesByICES(filter: ICESFilter): Recapture[] {\n return this.recaptures.filter(recapture =>\n ((filter.Year == 0 || recapture.RecapturedYear === filter.Year)\n && (filter.Factory.length == 0 || filter.Factory.includes('') || filter.Factory.includes(recapture.RecapturedFactoryId))\n && recapture.RecapturedArea === filter.ICES));\n }\n\n public groupByICES(recaptures: Recapture[]): ICESRecaptureGroup[] {\n let groups = [];\n let result = recaptures.reduce((r, a) => this.group(r, a), Object.create(null));\n // Make a list of groups\n if (result) {\n for (let key in result) {\n if (key != '?') {\n groups.push(result[key]);\n }\n }\n }\n return groups;\n }\n\n public getMinRecaptureGroup(groups: ICESRecaptureGroup[]): ICESRecaptureGroup {\n // return groups.reduce((a, b) => this.min(a, b));\n return this.formatter.getMinGroup(groups);\n }\n\n public getMaxRecaptureGroup(groups: ICESRecaptureGroup[]): ICESRecaptureGroup {\n // return groups.reduce((a, b) => this.max(a, b));\n return this.formatter.getMaxGroup(groups);\n }\n\n public getAccumulatedRecapturesByICES(recaptures: Recapture[]): ICESRecaptures {\n let icesRecaptures = new ICESRecaptures();\n let groups = [];\n let result = recaptures.reduce((r, a) => this.accumulateRecaptureGroup(r, a), Object.create(null));\n // Make a list of groups\n if (result) {\n for (let key in result) {\n if (key.indexOf('null') < 0) {\n icesRecaptures.Total += result[key].Total;\n icesRecaptures.Recaptures.push(result[key]);\n }\n }\n }\n return icesRecaptures;\n }\n\n public getAccumulatedReleasesByICES(recaptures: Recapture[]): ICESReleases {\n let icesRecaptures = new ICESReleases();\n let groups = [];\n let result = recaptures.reduce((r, a) => this.accumulateReleaseGroup(r, a), Object.create(null));\n // Make a list of groups\n if (result) {\n for (let key in result) {\n if (key.indexOf('null') < 0) {\n icesRecaptures.Total += result[key].Total;\n icesRecaptures.Releases.push(result[key]);\n }\n }\n }\n return icesRecaptures;\n }\n\n /* Helper functions */\n\n private group(r: any, a: any) {\n r[a.RecapturedArea] = r[a.RecapturedArea] || new ICESRecaptureGroup(a.RecapturedArea);\n r[a.RecapturedArea].Total += 1;\n r[a.RecapturedArea].Recaptures.push(a);\n return r;\n }\n\n private accumulateReleaseGroup(r: any, a: any) {\n let key = `${a.ReleasedICES}-${a.ReleasedYear}`;\n r[key] = r[key] || new ICESTotal(a.ReleasedICES);\n r[key].Total += 1;\n r[key].Year = a.ReleasedYear;\n return r;\n }\n\n private accumulateRecaptureGroup(r: any, a: any) {\n let key = `${a.RecapturedArea}-${a.RecapturedYear}`;\n r[key] = r[key] || new ICESTotal(a.RecapturedArea);\n r[key].Total += 1;\n r[key].Year = a.RecapturedYear;\n return r;\n }\n}","import { Release, Filter, ICESFilter, ICESReleaseGroup } from '../../models';\nimport { FormatterHelper } from '../common/formatter.helper';\n\nexport class ReleasesHelper {\n\n releases: Release[];\n formatter: FormatterHelper;\n\n constructor() {\n this.releases = [];\n this.formatter = new FormatterHelper();\n }\n\n public createRelease(data: any): Release {\n let release: Release = {\n ICES: data.RelICES ? data.RelICES : '?',\n Year: data.RelTime,\n Count: data.count\n };\n return release;\n }\n\n public getRelease(icesName: string) {\n return this.releases.find(release => release.ICES === icesName);\n }\n\n public findReleases(filter: Filter): Release[] {\n return this.releases.filter(release => release.Year != null && (release.Year === filter.Year || filter.Year == 0));\n }\n \n public groupByICES(releases: Release[]): ICESReleaseGroup[] {\n let groups = [];\n let result = releases.reduce((r, a) => this.group(r, a), Object.create(null));\n // Make a list of groups\n if (result) {\n for (let key in result) {\n groups.push(result[key]);\n }\n }\n return groups;\n }\n\n public getMinReleaseGroup(groups: ICESReleaseGroup[]): ICESReleaseGroup {\n // return groups.reduce((a, b) => this.min(a, b));\n return this.formatter.getMinGroup(groups);\n }\n\n public getMaxReleaseGroup(groups: ICESReleaseGroup[]): ICESReleaseGroup {\n // return groups.reduce((a, b) => this.max(a, b));\n return this.formatter.getMaxGroup(groups);\n }\n\n /* helper functions */\n \n private group(r: any, a: any) {\n r[a.ICES] = r[a.ICES] || new ICESReleaseGroup(a.ICES, [], null);\n r[a.ICES].Total += a.Count;\n r[a.ICES].Releases.push(a);\n return r;\n }\n}","export class Catch {\n\n public ICES: string;\n public CatchYear: number;\n public FactoryId: string;\n public FactoryName: string;\n public FactoryICES: string;\n public Catches: number;\n public TotalWeight: number;\n}","export class Color {\n constructor (\n public r: number,\n public g: number,\n public b: number) { \n }\n}","export class Factory {\n Id: string;\n Name: string;\n Longitude: number;\n Latitude: number;\n}","import { FeatureTypes } from '../enums/feature-types';\nimport { FeatureStates } from '../enums/feature-states';\n\nexport class FeatureData {\n constructor (\n public FeatureType: FeatureTypes,\n public Data: any,\n public State: FeatureStates = FeatureStates.Default,\n ) {\n \n }\n}","export class FilterRecapture {\n constructor(\n public Year: number,\n public Factory?: string[],\n public ReleaseYear?: number,\n public Expedition?: string[]\n ) {\n\n }\n}","export class Filter {\n constructor (\n public Year: number,\n public Factory?: string[]\n ){\n \n }\n}","export class Recapture {\n public ReleasedICES: string;\n public ReleasedYear: number;\n public ReleasedLongitude: number;\n public ReleasedLatitude: number;\n public RecapturedTime: string;\n public RecapturedTimestamp: Date;\n public RecapturedYear: number;\n public RecapturedFactoryId: string;\n public RecapturedFactory: string;\n public RecapturedArea: any;\n public RecapturedExpedition : string;\n}","export class Release {\n public ICES: string;\n public Year: number;\n public Count: number;\n}","export class SelectItem {\n constructor (\n public Value: any, \n public Text: string\n ) {\n \n }\n}","export enum FeatureStates {\n Default = 1,\n Highlighted,\n Hovered\n}","export enum FeatureTypes {\n ICES = 1,\n Factory,\n Releases,\n Recaptures,\n Catches\n}","export enum LayerTypes {\n Releases = 1,\n Recaptures,\n Catches\n}","import { Catch } from '../common/catch';\nimport { ICESReleases } from '../ices/ices-releases';\nimport { ICESGroup } from '../interfaces/ices-group';\n\nexport class ICESCatchGroup implements ICESGroup {\n public Total: number;\n constructor (\n public ICES: string,\n public Catches: Catch[] = [],\n public Recaptures: ICESReleases = null\n ){\n this.Total = 0;\n }\n}","export class ICESCell {\n public ICESName: string;\n public Coordinates: any[];\n}","export class ICESFilter {\n constructor(\n public ICES: string,\n public Year: number,\n public Factory: string[] = []\n ) {}\n}","import { Recapture } from '../common/recapture';\nimport { ICESReleases } from './ices-releases';\nimport { ICESGroup } from '../interfaces/ices-group';\n\nexport class ICESRecaptureGroup implements ICESGroup { \n public Total: number;\n constructor (\n public ICES: string,\n public Recaptures: Recapture[] = [],\n public Releases: ICESReleases = null\n ){\n this.Total = 0;\n }\n}\n","import { ICESTotal } from './ices-total';\n\nexport class ICESRecaptures {\n public Total: number = 0;\n public Recaptures: ICESTotal[] = [];\n}","import { Release } from '../common/release';\nimport { ICESGroup } from '../interfaces/ices-group';\nimport { ICESRecaptures } from '../ices/ices-recaptures';\n\nexport class ICESReleaseGroup implements ICESGroup {\n public Total: number;\n constructor (\n public ICES: string,\n public Releases: Release[],\n public Recaptures: ICESRecaptures\n ){\n this.Total = 0;\n }\n}","import { ICESTotal } from './ices-total';\n\nexport class ICESReleases {\n public Total: number = 0;\n public Releases: ICESTotal[] = [];\n}","export class ICESTotal {\n public Total: number;\n public Year: number;\n\n constructor(\n public ICES: string\n ) {\n this.Total = 0;\n }\n}","export { ICESGroup } from './interfaces/ices-group'\nexport { Factory } from './common/factory';\nexport { Catch } from './common/catch';\nexport { Release } from './common/release';\nexport { Recapture } from './common/recapture';\nexport { Color } from './common/color';\nexport { Filter } from './common/filter';\nexport { SelectItem } from './common/select-item';\nexport { FeatureData } from './common/feature-data';\nexport { LayerTypes } from './enums/layer-types';\nexport { FeatureTypes } from './enums/feature-types';\nexport { FeatureStates } from './enums/feature-states';\nexport { ICESCell } from './ices/ices-cell';\nexport { ICESTotal } from './ices/ices-total';\nexport { ICESFilter } from './ices/ices-filter';\nexport { ICESRecaptureGroup } from './ices/ices-recapture-group';\nexport { ICESReleaseGroup } from './ices/ices-release-group';\nexport { ICESCatchGroup } from './ices/ices-catch-group';\nexport { ICESReleases } from './ices/ices-releases';\nexport { ICESRecaptures } from './ices/ices-recaptures';\nexport { MapConfiguration } from './map/map-configuration';\nexport { InterpolatedFeatureStyle } from './map/interpolated-feature-style';","import { Color } from '../common/color';\n\nexport class InterpolatedFeatureStyle {\n public Color: Color;\n public CurrentValue: number;\n public MinValue: number;\n public MaxValue: number;\n public MinOpacity: number;\n public MaxOpacity: number;\n}","export class MapConfiguration {\n \n}","import { Pipe, PipeTransform } from '@angular/core';\nimport * as moment from 'moment';\n\n@Pipe({\n name: 'dateFormat'\n})\nexport class DateFormatPipe implements PipeTransform {\n\n transform(value: string): string {\n return moment(value).format('DD MMM YYYY HH:mm');\n }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'weightFormat'\n})\nexport class WeightFormatPipe implements PipeTransform {\n\n transform(value: number): string {\n return value.toString().replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, \"$1 \");\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { Router, RouterStateSnapshot, ActivatedRouteSnapshot, Resolve } from '@angular/router';\nimport { AppConfig } from '../models/config/appConfig';\nimport { AppConfigService } from './app-config.service';\n\n@Injectable()\nexport class AppConfigResoloverService implements Resolve {\n\n constructor(private appConfigService: AppConfigService, private router: Router) { }\n\n resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise {\n return this.appConfigService.loadEnvironment()\n .then(es => {\n this.appConfigService.setEnvSpecific(es);\n return this.appConfigService.appConfig;\n }, error => {\n console.log(error);\n return null;\n });\n }\n\n}\n","\nimport {map} from 'rxjs/operators';\nimport { HttpClient } from '@angular/common/http';\nimport { AppConfig } from './../models/config/appConfig';\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n\n@Injectable()\nexport class AppConfigService {\n\n public appConfig: AppConfig;\n public appConfigNull: AppConfig = null;\n private appConfigSubject: BehaviorSubject = new BehaviorSubject(null);\n\n constructor(private http: HttpClient) { }\n\n public loadEnvironment() {\n // Only want to do this once - if root page is revisited, it calls this again.\n if (this.appConfig === null || this.appConfig === undefined) {\n console.log('Loading app.config.json');\n\n return this.http.get('./assets/app.config.json').pipe(\n map((data: AppConfig) => data))\n .toPromise();\n }\n\n return Promise.resolve(this.appConfigNull);\n }\n\n\n public setEnvSpecific(ac: AppConfig) {\n // This has already been set so bail out.\n if (ac === null || ac === undefined) {\n return;\n }\n\n this.appConfig = ac;\n console.log(this.appConfig);\n\n if (this.appConfigSubject) {\n this.appConfigSubject.next(this.appConfig);\n }\n }\n\n /*\n Call this if you want to know when EnvSpecific is set.\n */\n public subscribe(caller: any, callback: (caller: any, ac: AppConfig) => void) {\n this.appConfigSubject\n .subscribe((ac) => {\n if (ac === null) {\n return;\n }\n callback(caller, ac);\n });\n }\n\n}\n","export default \".filter-factory {\\n width: 300px;\\n}\\n\\n.menu-footer {\\n margin: 10px 0 5px 0;\\n font-size: 0.75em;\\n text-align: center;\\n}\\n\\n.menu-footer a {\\n text-decoration: none;\\n font-weight: bold;\\n}\\n\\n.menu-footer, .menu-footer a:visited, .menu-footer a {\\n color: rgba(0, 0, 0, 0.2);\\n}\\n\\napp-recaptures-list {\\n width: 100%;\\n}\\n\\n.details-panel-catches {\\n width: 265px !important;\\n}\\n\\n.spinner {\\n position: absolute;\\n z-index: 100;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n}\\n\\n#recaptures-panel {\\n width: 20%;\\n}\\n\\nh3 {\\n margin: 0.7em 0;\\n}\\n\\n.filter-release-year {\\n width: 75px;\\n}\\n\\n.filter-expedition {\\n width: 300px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9obWEvRG9jdW1lbnRzL0hvbWUvd2Vicy9GaXNoLk1hcC9GaXNoLk1hcC5Bbmd1bGFyL0Zpc2hNYXAvc3JjL2FwcC9maXNoLW1hcC9maXNoLW1hcC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvZmlzaC1tYXAvZmlzaC1tYXAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0E7RUFDSSxZQUFBO0FDSko7O0FET0E7RUFDSSxvQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7QUNKSjs7QURPQTtFQUNJLHFCQUFBO0VBQ0EsaUJBQUE7QUNKSjs7QURPQTtFQUNJLHlCQUFBO0FDSko7O0FET0E7RUFDSSxXQUFBO0FDSko7O0FEU0E7RUFDSSx1QkFBQTtBQ05KOztBRFNBO0VBQ0ksa0JBQUE7RUFDQSxZQUFBO0VBQ0EsU0FBQTtFQUNBLFFBQUE7RUFLQSxnQ0FBQTtBQ05KOztBRFNBO0VBQ0ksVUFBQTtBQ05KOztBRFNBO0VBQ0ksZUFBQTtBQ05KOztBRFNBO0VBQ0ksV0FBQTtBQ05KOztBRFNBO0VBQ0ksWUFBQTtBQ05KIiwiZmlsZSI6InNyYy9hcHAvZmlzaC1tYXAvZmlzaC1tYXAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIudGFiLWdyb3VwLW1vYmlsZSB7XG4gICAgLy8gaGVpZ2h0OiAzMHB4O1xuICAgIC8vIGZvbnQtc2l6ZTogMC44ZW07XG59XG5cbi5maWx0ZXItZmFjdG9yeSB7XG4gICAgd2lkdGg6IDMwMHB4O1xufVxuXG4ubWVudS1mb290ZXIge1xuICAgIG1hcmdpbjogMTBweCAwIDVweCAwO1xuICAgIGZvbnQtc2l6ZTogMC43NWVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm1lbnUtZm9vdGVyIGEge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLm1lbnUtZm9vdGVyLCAubWVudS1mb290ZXIgYTp2aXNpdGVkLCAubWVudS1mb290ZXIgYSB7XG4gICAgY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cblxuYXBwLXJlY2FwdHVyZXMtbGlzdCB7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cblxuXG4uZGV0YWlscy1wYW5lbC1jYXRjaGVzIHtcbiAgICB3aWR0aDogMjY1cHggIWltcG9ydGFudDtcbn1cblxuLnNwaW5uZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgbGVmdDogNTAlO1xuICAgIHRvcDogNTAlO1xuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gICAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgXG4gICAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpOyBcbiAgICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsgXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG59XG5cbiNyZWNhcHR1cmVzLXBhbmVsIHtcbiAgICB3aWR0aDogMjAlO1xufVxuXG5oMyB7XG4gICAgbWFyZ2luOiAwLjdlbSAwO1xufVxuXG4uZmlsdGVyLXJlbGVhc2UteWVhciB7XG4gICAgd2lkdGg6IDc1cHg7XG59XG5cbi5maWx0ZXItZXhwZWRpdGlvbiB7XG4gICAgd2lkdGg6IDMwMHB4O1xufSIsIi5maWx0ZXItZmFjdG9yeSB7XG4gIHdpZHRoOiAzMDBweDtcbn1cblxuLm1lbnUtZm9vdGVyIHtcbiAgbWFyZ2luOiAxMHB4IDAgNXB4IDA7XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5tZW51LWZvb3RlciBhIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLm1lbnUtZm9vdGVyLCAubWVudS1mb290ZXIgYTp2aXNpdGVkLCAubWVudS1mb290ZXIgYSB7XG4gIGNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMik7XG59XG5cbmFwcC1yZWNhcHR1cmVzLWxpc3Qge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmRldGFpbHMtcGFuZWwtY2F0Y2hlcyB7XG4gIHdpZHRoOiAyNjVweCAhaW1wb3J0YW50O1xufVxuXG4uc3Bpbm5lciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTAwO1xuICBsZWZ0OiA1MCU7XG4gIHRvcDogNTAlO1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XG4gIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcbn1cblxuI3JlY2FwdHVyZXMtcGFuZWwge1xuICB3aWR0aDogMjAlO1xufVxuXG5oMyB7XG4gIG1hcmdpbjogMC43ZW0gMDtcbn1cblxuLmZpbHRlci1yZWxlYXNlLXllYXIge1xuICB3aWR0aDogNzVweDtcbn1cblxuLmZpbHRlci1leHBlZGl0aW9uIHtcbiAgd2lkdGg6IDMwMHB4O1xufSJdfQ== */\";","import { Component, OnInit, ViewChild } from '@angular/core';\nimport { mergeMap } from 'rxjs/operators';\n\nimport { FormatterHelper } from '../core/helpers';\nimport { ICESCell, Factory, Catch, Release, Recapture, SelectItem, Filter, FeatureData, FeatureTypes, LayerTypes } from '../core/models';\nimport { LoggerService, FishMapService, AppSettings } from '../services';\nimport { ActivatedRoute } from '@angular/router';\nimport { AppConfig } from '@app/core/models/config/appConfig';\nimport { FilterRecapture } from '@app/core/models/common/filter-recapture';\nimport { MatOption } from '@angular/material/core';\nimport { sortAlphaNum } from '@app/core/helpers/common/utils';\nimport { PanelOption } from './panel-option';\n\ndeclare var ol;\n@Component({\n selector: 'app-fish-map',\n templateUrl: './fish-map.component.html',\n styleUrls: ['./fish-map.component.scss']\n})\nexport class FishMapComponent implements OnInit {\n @ViewChild('map', { static: true }) map;\n @ViewChild('selectAllExpedition') private selectAllExpedition: MatOption;\n @ViewChild('selectAllFactory') private selectAllFactory: MatOption;\n @ViewChild('selectAllFactoryOnCatches') private selectAllFactoryOnCatches: MatOption;\n @ViewChild('selectAllFactoryOnPanel') private selectAllFactoryOnPanel: MatOption;\n\n panelOption = PanelOption\n\n // Options\n panelRecaptures: boolean = false;\n filterMobile: boolean = false;\n showFactories: boolean;\n showICESGrid: boolean;\n\n activeLayer: LayerTypes;\n activeFishType: string;\n factoriesList: SelectItem[];\n releaseYearsList: SelectItem[];\n catchYearsList: SelectItem[];\n recaptureYearsList: SelectItem[];\n recaptureReleaseYearsList: SelectItem[];\n expeditionList: SelectItem[];\n\n factories: Factory[];\n catches: Catch[];\n releases: Release[];\n recaptures: Recapture[];\n lastRecaptures: Recapture[];\n icesCells: ICESCell[];\n fishTypes = [];\n\n // Selected values\n selectedReleaseYear: number;\n selectedCatchYear: number;\n selectedRecaptureYear: number;\n selectedRecaptureFactory: string[];\n selectedCatchFactory: string[];\n selectedFactory: any;\n selectedFeature: any;\n selectedRecaptureListYear: number;\n selectedRecaptureListFactory: string[];\n selectedRecaptureReleaseYear: number;\n selectedRecaptureExpedition: string[];\n\n // Filters\n releasesFilter: Filter;\n recapturesFilter: Filter;\n catchesFilter: Filter;\n recaptureListFilter: FilterRecapture;\n\n // Total\n totalReleases: number = 0;\n totalRecaptures: number = 0;\n totalCatches: number = 0;\n\n formatter: FormatterHelper;\n\n showDetailsPanel: boolean;\n showLastRecapturesPanel: boolean;\n loaded: boolean;\n\n constructor(\n private logger: LoggerService,\n private fishMap: FishMapService,\n private appSettingService: AppSettings,\n private route: ActivatedRoute\n ) {\n this.formatter = new FormatterHelper();\n this.showFactories = true;\n this.showICESGrid = true;\n this.showDetailsPanel = false;\n this.showLastRecapturesPanel = true;\n this.activeLayer = LayerTypes.Releases;\n this.factoriesList = [];\n }\n\n ngOnInit() {\n\n this.route.data\n .subscribe((data: { appConfig: AppConfig }) => {\n this.mapUrls(data);\n });\n\n this.resetFilters();\n\n this.setFilters();\n\n this.getFishTypes();\n\n }\n\n loadData(): void {\n\n this.loaded = true;\n this.fishMap.getAllData(this.activeFishType).subscribe(data => {\n\n this.mapData(data)\n this.fillDropdownLists();\n this.setFilters();\n\n }, error => {\n\n this.loaded = false;\n this.logger.showErrorMessage(\"Error while loading data\");\n }, () => {\n this.loaded = false;\n });\n }\n\n\n getFishTypes() {\n this.loaded = true;\n this.fishMap.getFishTypes().pipe(\n mergeMap(response => {\n\n this.fishTypes = response;\n this.activeFishType = response[0];\n return this.fishMap.getAllData(this.activeFishType)\n }))\n .subscribe(data => {\n\n this.mapData(data)\n this.fillDropdownLists();\n this.setFilters();\n\n }, error => {\n\n this.loaded = false;\n this.logger.showErrorMessage(\"Error while loading data\");\n }, () => {\n this.loaded = false;\n });\n }\n\n changeFishType() {\n this.showDetailsPanel = false;\n this.map.removeHighlight();\n this.resetFilters();\n this.loadData();\n }\n\n fillDropdownLists(): void {\n\n // Fill factories\n this.factoriesList = this.factoriesList.concat(this.factories.map(f => new SelectItem(f.Id, f.Name)));\n\n // Fill expeditions\n let allExpedition = this.recaptures.map(f => f.RecapturedExpedition);\n let expeditions = this.formatter.getUniqueItems(allExpedition).sort(sortAlphaNum);\n this.expeditionList = this.expeditionList.concat(expeditions.map(f => new SelectItem(f, f)));\n\n // Fill release years\n let allYears = this.releases.map(r => r.Year);\n let years = this.formatter.getUniqueItems(allYears);\n this.releaseYearsList = this.releaseYearsList.concat(this.formatter.convertToSelectList(years));\n\n // Fill recapture years\n allYears = this.recaptures.map(r => r.RecapturedYear);\n years = this.formatter.getUniqueItems(allYears);\n this.recaptureYearsList = this.recaptureYearsList.concat(this.formatter.convertToSelectList(years));\n\n // Fill catch years\n allYears = this.catches.map(c => c.CatchYear);\n years = this.formatter.getUniqueItems(allYears);\n this.catchYearsList = this.catchYearsList.concat(this.formatter.convertToSelectList(years));\n\n // Fill recapture release years\n allYears = this.recaptures.map(r => r.ReleasedYear);\n years = this.formatter.getUniqueItems(allYears).sort((a, b) => b - a);\n this.recaptureReleaseYearsList = this.recaptureReleaseYearsList.concat(this.formatter.convertToSelectList(years));\n }\n\n // setLastRecaptures(): void {\n // if (this.recaptures) {\n // let lastDate = new Date();\n // lastDate.setDate(lastDate.getDate() - 365);\n // let latest = this.recaptures.filter(r => r.RecapturedTimestamp >= lastDate);\n // this.lastRecaptures = latest;\n // }\n // }\n\n setICESGridVisibility(value: boolean): void {\n this.showICESGrid = value;\n }\n\n setFactoryVisibility(value: boolean): void {\n this.showFactories = value;\n }\n\n setReleasesFilter(): void {\n this.resetSelections();\n this.releasesFilter = new Filter(this.selectedReleaseYear);\n }\n\n setRecapturesFilter(): void {\n this.resetSelections();\n this.recapturesFilter = new FilterRecapture(this.selectedRecaptureYear, this.selectedRecaptureFactory, this.selectedRecaptureReleaseYear, this.selectedRecaptureExpedition);\n }\n\n setRecaptureListFilter(): void {\n this.resetSelections();\n this.recaptureListFilter = new FilterRecapture(this.selectedRecaptureListYear, this.selectedRecaptureListFactory, 0, []);\n }\n\n setCatchesFilter(): void {\n this.resetSelections();\n this.catchesFilter = new Filter(this.selectedCatchYear, this.selectedCatchFactory);\n }\n\n onSelectFeature(data: FeatureData): void {\n switch (data.FeatureType) {\n case FeatureTypes.Releases:\n case FeatureTypes.Recaptures:\n case FeatureTypes.Catches:\n this.selectedFeature = data.Data;\n break;\n }\n if (!this.showDetailsPanel) {\n this.toggleDetails(true);\n }\n }\n\n resetSelections(): void {\n this.selectedFeature = null;\n this.toggleDetails(false);\n }\n\n toggleLastRecaptures(value: boolean): void {\n this.showLastRecapturesPanel = value;\n this.updateMapSize();\n }\n\n toggleDetails(value: boolean): void {\n this.showDetailsPanel = value;\n // this.updateMapSize();\n if (!value && this.map) {\n this.map.removeHighlight();\n }\n }\n\n updateMapSize(): void {\n if (this.map) {\n this.map.updateMapSize();\n }\n }\n\n onTotalChange(data: FeatureData): void {\n switch (data.FeatureType) {\n case FeatureTypes.Releases:\n setTimeout(() => {\n this.totalReleases = Math.round(data.Data);\n });\n break;\n case FeatureTypes.Recaptures:\n setTimeout(() => {\n this.totalRecaptures = Math.round(data.Data);\n });\n break;\n case FeatureTypes.Catches:\n setTimeout(() => {\n this.totalCatches = Math.round(data.Data);\n });\n break;\n }\n }\n\n onClickAllExpedition() {\n if (this.selectAllExpedition.selected) {\n this.selectedRecaptureExpedition = ([...this.expeditionList.map(item => item.Value), '*']);\n } else {\n this.selectedRecaptureExpedition = [];\n }\n this.setRecapturesFilter();\n }\n\n togglePerOptionForExpedition() {\n if (this.selectAllExpedition.selected) {\n this.selectAllExpedition.deselect();\n this.setRecapturesFilter();\n return false;\n }\n if (this.selectedRecaptureExpedition.length == this.expeditionList.length)\n this.selectAllExpedition.select();\n\n this.setRecapturesFilter();\n }\n\n onClickAllFactory(panelOption: number) {\n this.getSelectedFactory(panelOption);\n this.setFilterBySelectedOption(panelOption);\n }\n\n togglePerOptionForFactory(panelOption: number) {\n this.getToggleSelectedFactory(panelOption);\n this.setFilterBySelectedOption(panelOption);\n }\n\n getSelectedFactory(panelOption: number) {\n switch (panelOption) {\n case PanelOption.recaptures: {\n if (this.selectAllFactory.selected) {\n this.selectedRecaptureFactory = ([...this.factoriesList.map(item => item.Value), '*']);\n } else {\n this.selectedRecaptureFactory = [];\n }\n }\n case PanelOption.catches: {\n if (this.selectAllFactoryOnCatches.selected) {\n this.selectedCatchFactory = ([...this.factoriesList.map(item => item.Value), '*']);\n } else {\n this.selectedCatchFactory = [];\n }\n }\n }\n }\n\n getToggleSelectedFactory(panelOption: number) {\n switch (panelOption) {\n case PanelOption.recaptures: {\n if (this.selectAllFactory.selected) {\n this.selectAllFactory.deselect();\n this.setFilterBySelectedOption(panelOption);\n return false;\n }\n if (this.selectedRecaptureFactory.length == this.factoriesList.length)\n this.selectAllFactory.select();\n }\n case PanelOption.catches: {\n if (this.selectAllFactoryOnCatches.selected) {\n this.selectAllFactoryOnCatches.deselect();\n this.setFilterBySelectedOption(panelOption);\n return false;\n }\n if (this.selectedCatchFactory.length == this.factoriesList.length)\n this.selectAllFactoryOnCatches.select();\n }\n }\n }\n\n setFilterBySelectedOption(panelOption: number) {\n switch (panelOption) {\n case PanelOption.recaptures: {\n this.setRecapturesFilter();\n break;\n }\n case PanelOption.catches: {\n this.setCatchesFilter();\n break;\n }\n }\n }\n\n onClickPanelAllFactory() {\n if (this.selectAllFactoryOnPanel.selected) {\n this.selectedRecaptureListFactory = ([...this.factoriesList.map(item => item.Value), '*']);\n } else {\n this.selectedRecaptureListFactory = [];\n }\n this.setRecaptureListFilter();\n }\n\n togglePerOptionForFactoryOnPanel() {\n if (this.selectAllFactoryOnPanel.selected) {\n this.selectAllFactoryOnPanel.deselect();\n this.setRecaptureListFilter();\n return false;\n }\n if (this.selectedRecaptureListFactory.length == this.factoriesList.length)\n this.selectAllFactoryOnPanel.select();\n\n this.setRecaptureListFilter();\n }\n\n private resetFilters() {\n this.selectedReleaseYear = 0;\n\n this.selectedRecaptureYear = 0;\n this.selectedRecaptureFactory = [];\n\n this.selectedRecaptureListYear = 0;\n this.selectedRecaptureListFactory = [];\n\n this.selectedCatchYear = 0;\n this.selectedCatchFactory = [];\n\n this.selectedRecaptureReleaseYear = 0;\n this.selectedRecaptureExpedition = [];\n\n this.factoriesList = [];\n this.releaseYearsList = [];\n this.recaptureYearsList = [];\n this.catchYearsList = [];\n this.recaptureReleaseYearsList = [];\n this.expeditionList = [];\n\n // this.factoriesList.push(new SelectItem('', '*'));\n this.releaseYearsList = [new SelectItem(0, '*')];\n this.recaptureYearsList = [new SelectItem(0, '*')];\n this.catchYearsList = [new SelectItem(0, '*')];\n this.recaptureReleaseYearsList = [new SelectItem(0, '*')];\n }\n\n private setFilters() {\n this.setRecapturesFilter();\n this.setRecaptureListFilter();\n this.setReleasesFilter();\n this.setCatchesFilter();\n }\n\n private mapData(data: any[]) {\n this.factories = data[0];\n this.releases = data[1];\n this.recaptures = data[2];\n this.catches = data[3];\n this.icesCells = data[4];\n }\n\n private mapUrls(data: { appConfig: AppConfig }) {\n this.appSettingService.apiBaseUrl = data.appConfig.apiBaseUrl;\n this.appSettingService.apiFishTypeUrl = data.appConfig.apiFishTypeUrl;\n this.appSettingService.apiCatchesUrl = data.appConfig.apiCatchesUrl;\n this.appSettingService.apiFactoriesUrl = data.appConfig.apiFactoriesUrl;\n this.appSettingService.apiReleasesUrl = data.appConfig.apiReleasesUrl;\n this.appSettingService.apiRecapturesUrl = data.appConfig.apiRecapturesUrl;\n }\n\n showRecapturesList() {\n if (this.panelRecaptures) {\n this.panelRecaptures = false;\n }\n else {\n this.panelRecaptures = true;\n }\n }\n hideFilterMobile() {\n if (this.filterMobile) {\n this.filterMobile = false;\n }\n else {\n this.filterMobile = true;\n }\n }\n\n trackByFn(index: any, item: any) {\n return index;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule } from '@angular/forms';\n\nimport { SharedModule } from '../shared/shared.module';\nimport { FishMapComponent } from './fish-map.component';\nimport { DateFormatPipe } from '../core/pipes/date-format.pipe';\nimport { WeightFormatPipe } from '../core/pipes/weight-format.pipe';\nimport { RecapturesListComponent } from './recaptures-list/recaptures-list.component';\n\n@NgModule({\n imports: [\n CommonModule,\n BrowserModule,\n FormsModule,\n SharedModule\n ],\n exports: [\n FishMapComponent\n ],\n declarations: [\n DateFormatPipe,\n WeightFormatPipe,\n FishMapComponent,\n RecapturesListComponent\n ]\n})\nexport class FishMapModule { }\n","export enum PanelOption {\n releases = 1,\n recaptures = 2,\n catches = 3\n}","export default \"table {\\n width: 100%;\\n border-collapse: collapse;\\n}\\n\\nth {\\n height: 25px;\\n}\\n\\nth, td {\\n padding: 10px 20px;\\n border-bottom: 1px solid #DDD;\\n}\\n\\n.th1 {\\n width: 20%;\\n}\\n\\n.th2 {\\n width: 35%;\\n}\\n\\n.th3, .th4, .th5 {\\n width: 15%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9obWEvRG9jdW1lbnRzL0hvbWUvd2Vicy9GaXNoLk1hcC9GaXNoLk1hcC5Bbmd1bGFyL0Zpc2hNYXAvc3JjL2FwcC9maXNoLW1hcC9yZWNhcHR1cmVzLWxpc3QvcmVjYXB0dXJlcy1saXN0LmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9maXNoLW1hcC9yZWNhcHR1cmVzLWxpc3QvcmVjYXB0dXJlcy1saXN0LmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksV0FBQTtFQUNBLHlCQUFBO0FDQ0o7O0FEQ0E7RUFDSSxZQUFBO0FDRUo7O0FEQUE7RUFDSSxrQkFBQTtFQUNBLDZCQUFBO0FDR0o7O0FEREE7RUFDSSxVQUFBO0FDSUo7O0FERkE7RUFDSSxVQUFBO0FDS0o7O0FESEE7RUFDSSxVQUFBO0FDTUoiLCJmaWxlIjoic3JjL2FwcC9maXNoLW1hcC9yZWNhcHR1cmVzLWxpc3QvcmVjYXB0dXJlcy1saXN0LmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsidGFibGUge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG59XG50aCB7XG4gICAgaGVpZ2h0OiAyNXB4O1xufVxudGgsIHRkIHtcbiAgICBwYWRkaW5nOiAxMHB4IDIwcHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNEREQ7XG59XG4udGgxIHtcbiAgICB3aWR0aDogMjAlO1xufVxuLnRoMiB7XG4gICAgd2lkdGg6IDM1JTtcbn1cbi50aDMsIC50aDQsIC50aDUge1xuICAgIHdpZHRoOiAxNSU7XG59IiwidGFibGUge1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbn1cblxudGgge1xuICBoZWlnaHQ6IDI1cHg7XG59XG5cbnRoLCB0ZCB7XG4gIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNEREQ7XG59XG5cbi50aDEge1xuICB3aWR0aDogMjAlO1xufVxuXG4udGgyIHtcbiAgd2lkdGg6IDM1JTtcbn1cblxuLnRoMywgLnRoNCwgLnRoNSB7XG4gIHdpZHRoOiAxNSU7XG59Il19 */\";","import { Component, OnInit, Input } from '@angular/core';\n\nimport { Recapture } from '../../core/models';\nimport { RecapturesHelper } from '../../core/helpers';\nimport { Sort } from '@angular/material/sort';\nimport { FilterRecapture } from '@app/core/models/common/filter-recapture';\n\n@Component({\n selector: 'app-recaptures-list',\n templateUrl: './recaptures-list.component.html',\n styleUrls: ['./recaptures-list.component.scss'],\n})\nexport class RecapturesListComponent implements OnInit {\n public columns = [\n 'RecapturedTime',\n 'RecapturedFactory',\n 'RecapturedArea',\n 'ReleasedICES',\n 'ReleasedYear'\n ]\n\n private _recaptures: Recapture[] = [];\n private _recapturesFilter: FilterRecapture;\n\n @Input()\n set recaptures(recaptures: Recapture[]) {\n if (recaptures) {\n this._recaptures = recaptures;\n this.recapturesHelper.recaptures = recaptures;\n this.sortedData = this._recaptures.slice();\n }\n }\n\n @Input()\n set recapturesFilter(filter: FilterRecapture) {\n this._recapturesFilter = filter;\n if (filter && this._recaptures) {\n this.filterRecaptures(filter);\n }\n }\n\n sortedData: any;\n recapturesHelper: RecapturesHelper;\n\n constructor() {\n this.sortedData = this._recaptures.slice();\n this.recapturesHelper = new RecapturesHelper();\n }\n\n ngOnInit() {\n }\n\n sortData(sort: Sort) {\n let data = this._recaptures.slice();\n if (!sort.active || sort.direction == '') {\n this.sortedData = data;\n return;\n }\n\n this.sortedData = data.sort((a, b) => {\n let isAsc = sort.direction == 'asc';\n switch (sort.active) {\n case 'Date': return compare(a.RecapturedTime, b.RecapturedTime, isAsc);\n case 'RecapturedFactory': return compare(a.RecapturedFactory, b.RecapturedFactory, isAsc);\n case 'RecapturedArea': return compare(a.RecapturedArea, b.RecapturedArea, isAsc);\n case 'ReleasedICES': return compare(a.ReleasedICES, b.ReleasedICES, isAsc);\n case 'ReleasedYear': return compare(a.ReleasedYear, b.ReleasedYear, isAsc);\n default: return 0;\n }\n });\n }\n\n filterRecaptures(filter: FilterRecapture) {\n this._recaptures = this.recapturesHelper.findRecaptures(filter);\n this.sortedData = this._recaptures.slice();\n }\n\n trackByFn(index: any, item: any) {\n return index;\n }\n}\n\nfunction compare(a, b, isAsc) {\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\n}\n","import { Injectable } from '@angular/core';\nimport { environment } from '../../environments/environment';\n\nInjectable()\nexport class AppSettings {\n\n public apiBaseUrl: string;\n public apiFishTypeUrl:string;\n public apiCatchesUrl: string;\n public apiFactoriesUrl: string;\n public apiReleasesUrl: string;\n public apiRecapturesUrl: string;\n\n public readonly snackbar_action_label: string;\n public readonly snackbar_duration: number;\n\n constructor() {\n \n this.snackbar_action_label = 'close';\n this.snackbar_duration = 2000;\n }\n\n}","\nimport {map} from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable, forkJoin } from 'rxjs';\n\n\nimport { AppSettings } from './app.settings';\nimport { Catch, Factory, Recapture, Release, ICESCell } from '../core/models';\nimport { FactoriesHelper, CatchesHelper, RecapturesHelper, ReleasesHelper } from '../core/helpers';\n\n@Injectable()\nexport class FishMapService {\n\n factoriesHelper: FactoriesHelper;\n catchesHelper: CatchesHelper;\n recapturesHelper: RecapturesHelper;\n releasesHelper: ReleasesHelper\n fishType:string;\n\n constructor(\n private http: HttpClient,\n private appSettings: AppSettings) {\n this.factoriesHelper = new FactoriesHelper();\n this.catchesHelper = new CatchesHelper();\n this.recapturesHelper = new RecapturesHelper();\n this.releasesHelper = new ReleasesHelper();\n }\n\n // getICESCoordinates(): Observable {\n // return this.http.get('./assets/data/_ICES_Statistical_Rectangles_Eco.json').map(response => {\n // let features: any[] = response.features;\n // return features.map(item => new ICESCell(item));\n // });\n // }\n\n getICESCoordinates(): Observable {\n return this.http.get('./assets/data/ICES_Statistical_Rectangles_Eco.json');\n }\n\n getAllData(fishType:string): Observable {\n // Declare observables\n this.fishType=fishType;\n let factoriesObservable = this.getFactories();\n let releasesObservable = this.getReleases();\n let recapturesObservable = this.getRecaptures();\n let catchesObservable = this.getCatches();\n let icesObservable = this.getICESCoordinates();\n let observables = [factoriesObservable, releasesObservable, recapturesObservable, catchesObservable, icesObservable];\n\n // Declare a fork join to load data together\n return forkJoin(observables);\n }\n\n getFactories(): Observable {\n // return this.http.get('./assets/data/factories.json');\n return this.http.get(`${this.appSettings.apiFactoriesUrl}/${this.fishType}`).pipe(map(response => {\n return response.map(item => this.factoriesHelper.createFactory(item));\n }));\n }\n\n getCatches(): Observable {\n // return this.http.get('./assets/data/catches.json');\n return this.http.get(`${this.appSettings.apiCatchesUrl}/${this.fishType}`).pipe(map(response => {\n return response.map(item => this.catchesHelper.createCatch(item));\n }));\n }\n\n getRecaptures(): Observable {\n // return this.http.get('./assets/data/recaptures.json');\n return this.http.get(`${this.appSettings.apiRecapturesUrl}/${this.fishType}`).pipe(map(response => {\n return response.map(item => this.recapturesHelper.createRecapture(item));\n }));\n }\n\n getReleases(): Observable {\n // return this.http.get('./assets/data/releases.json');\n return this.http.get(`${this.appSettings.apiReleasesUrl}/${this.fishType}`).pipe(map(response => {\n return response.map(item => this.releasesHelper.createRelease(item));\n }));\n }\n\n getFishTypes() {\n return this.http.get(`${this.appSettings.apiFishTypeUrl}`).pipe(map(response => response));\n }\n}","export * from './app.settings';\nexport * from './logger.service';\nexport * from './settings.service';\nexport * from './fish-map.service';","import { Injectable } from '@angular/core';\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\nimport { AppSettings } from './app.settings';\n\n@Injectable()\nexport class LoggerService {\n\n private actionLabel: string;\n private snackBarConfig: MatSnackBarConfig;\n\n constructor(\n private settings: AppSettings,\n private snackBar: MatSnackBar) {\n this.actionLabel = settings.snackbar_action_label;\n this.snackBarConfig = {\n duration: settings.snackbar_duration,\n };\n }\n\n public showErrorMessage(message: string) {\n this.snackBar.open(message, this.actionLabel, this.snackBarConfig);\n }\n\n public showWarningMessage(message: string) {\n this.snackBar.open(message, this.actionLabel, this.snackBarConfig);\n }\n\n public showSuccessfulMessage(message: string) {\n this.snackBar.open(message, this.actionLabel, this.snackBarConfig);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class SettingsService {\n\n}","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'groupBy'\n})\nexport class GroupByPipe implements PipeTransform {\n transform(collection: any[], property: string): any[] {\n // prevents the application from breaking if the array of objects doesn't exist yet\n if(!collection) {\n return null;\n }\n\n const groupedCollection = collection.reduce((previous, current)=> {\n if(!previous[current[property]]) {\n previous[current[property]] = [current];\n } else {\n previous[current[property]].push(current);\n }\n\n return previous;\n }, {});\n\n // this will return an array of objects, each object containing a group of objects\n return Object.keys(groupedCollection).map(key => ({ key, value: groupedCollection[key] }));\n }\n}","export default \".map {\\n height: 100%;\\n width: 100%;\\n}\\n\\n.popup {\\n background: #5DA514;\\n padding: 3px;\\n color: white;\\n opacity: 0.7;\\n position: relative;\\n white-space: nowrap;\\n font-size: 0.8em;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9obWEvRG9jdW1lbnRzL0hvbWUvd2Vicy9GaXNoLk1hcC9GaXNoLk1hcC5Bbmd1bGFyL0Zpc2hNYXAvc3JjL2FwcC9zaGFyZWQvbWFwL21hcC5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvc2hhcmVkL21hcC9tYXAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxZQUFBO0VBQ0EsV0FBQTtBQ0NKOztBREVBO0VBQ0ksbUJBQUE7RUFDQSxZQUFBO0VBQ0EsWUFBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9tYXAvbWFwLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLm1hcCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xufVxuXG4ucG9wdXAge1xuICAgIGJhY2tncm91bmQ6ICM1REE1MTQ7XG4gICAgcGFkZGluZzogM3B4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbn0iLCIubWFwIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLnBvcHVwIHtcbiAgYmFja2dyb3VuZDogIzVEQTUxNDtcbiAgcGFkZGluZzogM3B4O1xuICBjb2xvcjogd2hpdGU7XG4gIG9wYWNpdHk6IDAuNztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBmb250LXNpemU6IDAuOGVtO1xufSJdfQ== */\";","import { Component, ElementRef, ViewChild, Input, Output, EventEmitter } from '@angular/core';\n\nimport { ICESCell, Factory, Release, Recapture, Catch, Color, Filter, ICESFilter, FeatureData, FeatureTypes, LayerTypes, FeatureStates, InterpolatedFeatureStyle } from '../../core/models';\nimport { FactoriesHelper, ReleasesHelper, RecapturesHelper, CatchesHelper } from '../../core/helpers';\nimport { AppSettings, LoggerService, SettingsService, FishMapService } from '../../services';\nimport { FilterRecapture } from '@app/core/models/common/filter-recapture';\n\ndeclare var ol: any;\n@Component({\n selector: 'app-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent {\n @ViewChild('mapElement', { static: true }) mapElement: ElementRef;\n @ViewChild('popupElement', { static: true }) popupElement: ElementRef;\n\n // Input fields\n private _showICESGrid: boolean;\n private _showFactories: boolean;\n private _releasesFilter: Filter;\n private _recapturesFilter: FilterRecapture;\n private _catchesFilter: Filter;\n private _activeLayer: LayerTypes;\n private _factories: Factory[];\n private _releases: Release[];\n private _recaptures: Recapture[];\n private _catches: Catch[];\n private _icesCells: ICESCell[];\n \n // Input fields setters\n @Input()\n set showICESGrid(value: boolean) {\n this._showICESGrid = value;\n this.setLayerVisibility(this.icesGridLayer, value);\n }\n\n @Input()\n set showFactories(value: boolean) {\n this._showFactories = value;\n this.setLayerVisibility(this.factoriesLayer, value);\n }\n\n @Input()\n set activeLayer(layer: LayerTypes) {\n this._activeLayer = layer;\n if (layer) {\n this._activeLayer = Number(layer);\n this.changeActiveLayer();\n }\n }\n\n @Input()\n set icesCells(cells: ICESCell[]) {\n this._icesCells = cells;\n if (cells) {\n this.loadICESGrid();\n }\n }\n\n @Input()\n set factories(factories: Factory[]) {\n this._factories = factories;\n if (factories) {\n this.factoriesHelper.factories = factories;\n this.filterFactories([]);\n }\n }\n\n @Input()\n set releases(releases: Release[]) {\n this._releases = releases;\n this.releasesHelper.releases = releases;\n }\n\n @Input()\n set catches(catches: Catch[]) {\n this._catches = catches;\n this.catchesHelper.catches = catches;\n }\n\n @Input()\n set recaptures(recaptures: Recapture[]) {\n this._recaptures = recaptures;\n this.recapturesHelper.recaptures = recaptures;\n if (this._recapturesFilter) {\n this.filterRecaptures(this._recapturesFilter);\n }\n // Releases should be loaded after recaptures due to its dependency\n if (this._releasesFilter) {\n this.filterReleases(this._releasesFilter);\n }\n // Catches also should be loaded after recaptures due to its dependency\n if (this._catchesFilter) {\n this.filterCatches(this._catchesFilter);\n }\n }\n\n @Input()\n set releasesFilter(filter: Filter) {\n this._releasesFilter = filter;\n if (this._releases && this._releases.length > 0) {\n this.filterReleases(filter);\n }\n }\n\n @Input()\n set catchesFilter(filter: Filter) { \n this._catchesFilter = filter;\n if (filter) {\n this.filterFactories(filter.Factory);\n }\n if (this._catches && this._catches.length > 0) {\n this.filterCatches(filter);\n }\n }\n\n @Input()\n set recapturesFilter(filter: FilterRecapture) {\n this._recapturesFilter = filter;\n if (filter) {\n this.filterFactories(filter.Factory);\n }\n if (this._recaptures && this._recaptures.length > 0) {\n this.filterRecaptures(filter);\n }\n }\n\n // Outputs\n @Output()\n onSelectedFeatureChange = new EventEmitter();\n\n @Output()\n onTotalChange = new EventEmitter();\n\n // fileds\n map: any;\n selectedFeature: any;\n markedFeature: any;\n markedFeatures: any[];\n popup: any;\n\n // Map layers\n icesGridLayer: any;\n factoriesLayer: any;\n highlightLayer: any;\n catchesLayer: any;\n releasesLayer: any;\n recapturesLayer: any;\n\n // Helpers\n factoriesHelper: FactoriesHelper;\n releasesHelper: ReleasesHelper;\n recapturesHelper: RecapturesHelper;\n catchesHelper: CatchesHelper;\n\n constructor(\n private appSettings: AppSettings,\n private logger: LoggerService,\n private fishMap: FishMapService\n ) {\n this.icesCells = [];\n this.markedFeatures = [];\n\n this.factoriesHelper = new FactoriesHelper();\n this.releasesHelper = new ReleasesHelper();\n this.recapturesHelper = new RecapturesHelper();\n this.catchesHelper = new CatchesHelper();\n }\n\n ngOnInit() {\n this.initializeMap();\n }\n\n updateMapSize(): void {\n if (this.map) {\n setTimeout(() => this.map.updateSize(), 10);\n }\n }\n\n initializeMap() {\n this.mapElement.nativeElement.innerHTML = '';\n this.map = new ol.Map({\n layers: [\n new ol.layer.Tile({\n source: new ol.source.XYZ({\n crossOrigin: null,\n //url: 'http://{a-c}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png',\n url: 'https://cartodb-basemaps-{a-c}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png',\n attributions: [ ol.source.OSM.ATTRIBUTION, '© OpenStreetMap contributors.'],\n })\n })\n ],\n // interactions: ol.interaction.defaults({\n // mouseWheelZoom: false,\n // }),\n view: new ol.View({\n center: ol.proj.transform([5, 58], 'EPSG:4326', 'EPSG:3857'),\n zoom: 4.2,\n })\n });\n // Add popup\n this.popup = new ol.Overlay({\n element: this.popupElement.nativeElement,\n offset: [0, -5],\n positioning: 'bottom-center'\n })\n this.map.addOverlay(this.popup);\n this.map.setTarget(this.mapElement.nativeElement);\n this.addFeatureClickHandler();\n this.addFeatureHoverHandler();\n\n this.addLayers();\n\n this.updateMapSize();\n }\n\n // Add required layers to the map\n addLayers(): void {\n this.icesGridLayer = this.getEmptyLayer(true, this.getICESGridStyle());\n // this.factoriesLayer = this.getEmptyLayer(true, this.getFactoryPointStyle());\n this.factoriesLayer = this.getEmptyLayer(true);\n this.releasesLayer = this.getEmptyLayer(true);\n this.recapturesLayer = this.getEmptyLayer(false);\n this.catchesLayer = this.getEmptyLayer(false);\n this.highlightLayer = this.getEmptyLayer(true);\n\n this.map.addLayer(this.icesGridLayer);\n this.map.addLayer(this.releasesLayer);\n this.map.addLayer(this.recapturesLayer);\n this.map.addLayer(this.catchesLayer);\n this.map.addLayer(this.factoriesLayer);\n this.map.addLayer(this.highlightLayer);\n }\n\n // add click event handler to features\n addFeatureClickHandler(): void {\n if (this.map) {\n let onClick = (data) => this.showRegionStatistics(data);\n this.map.on(\"click\", (event) => {\n let features = [];\n this.map.forEachFeatureAtPixel(event.pixel, function (feature, layer) {\n features.push(feature);\n });\n if (features.length > 0) {\n onClick(features[0]);\n }\n });\n }\n }\n\n // call show statistics for highlighted feature\n showRegionStatistics(feature: any): void {\n let data: FeatureData = feature.get('data');\n if (data.FeatureType != FeatureTypes.ICES && data.FeatureType != FeatureTypes.Factory) {\n this.highlightCell(feature);\n this.onSelectedFeatureChange.emit(data);\n }\n }\n\n // add hover event handler to features\n addFeatureHoverHandler(): void {\n if (this.map) {\n let onHover = (data) => this.markHoveredFeature(data);\n this.map.on('pointermove', (event) => {\n let features = [];\n this.popup.setPosition(event.coordinate);\n this.map.forEachFeatureAtPixel(event.pixel, function (feature, layer) {\n features.push(feature);\n });\n // Remove previous marked features\n this.removeMarks();\n for (let feature of features) {\n onHover(feature);\n }\n });\n }\n }\n\n // draw a thin border around features which are hovered by mouse\n markHoveredFeature(feature: any): void {\n let data: FeatureData = feature.get('data');\n if (data.FeatureType == FeatureTypes.Factory) {\n this.markFactory(feature);\n }\n else if (data.FeatureType != FeatureTypes.ICES) {\n this.markCell(feature)\n }\n }\n\n // mark factory\n markFactory(feature: any): void {\n\n let style = feature.getStyle();\n let data: FeatureData = feature.get('data');\n data.State = FeatureStates.Hovered;\n feature.set('data', data);\n feature.setStyle(style);\n\n this.popupElement.nativeElement.style.display = '';\n this.popupElement.nativeElement.innerHTML = `${data.Data.Name}`;\n\n // Save into selected feature\n this.addToMarkedFeatures(feature);\n\n // this.addFeaturesToLayer(this.highlightLayer, [feature]);\n }\n\n // mark cell\n markCell(feature: any): void {\n\n let data: FeatureData = feature.get('data');\n if (data.State != FeatureStates.Highlighted) {\n let style = feature.getStyle();\n data.State = FeatureStates.Hovered;\n feature.set('data', data);\n feature.setStyle(style);\n\n // Save into selected feature\n this.addToMarkedFeatures(feature);\n }\n }\n\n addToMarkedFeatures(feature: any): void {\n let existing = this.markedFeatures.find(f => f == feature);\n if (!existing) {\n this.markedFeatures.push(feature);\n }\n }\n\n removeMarks(): void {\n\n for (let feature of this.markedFeatures) {\n let data: FeatureData = feature.get('data');\n if (data.State != FeatureStates.Highlighted) {\n this.popupElement.nativeElement.style.display = 'none';\n\n let style = feature.getStyle();\n data.State = FeatureStates.Default;\n feature.set('data', data);\n feature.setStyle(style);\n }\n }\n this.markedFeatures = [];\n }\n\n // highlight factory\n highlightFactory(feature: any): void {\n // Remove previous\n this.removeHighlight();\n // Save into selected feature\n this.selectedFeature = feature;\n\n // let style = this.getHighlightedFactoryPointStyle();\n // feature.setStyle(style);\n this.addFeaturesToLayer(this.highlightLayer, [feature]);\n\n }\n\n // highlight cell\n highlightCell(feature: any): void {\n // Remove previous\n this.removeHighlight();\n let style = feature.getStyle();\n\n // Set highlighted feature to true\n let data: FeatureData = feature.get('data');\n data.State = FeatureStates.Highlighted;\n this.selectedFeature = feature;\n feature.set('data', data);\n feature.setStyle(style);\n\n this.addFeaturesToLayer(this.highlightLayer, [feature]);\n }\n\n // remove highlighted feature\n removeHighlight(): void {\n \n if (this.selectedFeature) {\n let data: FeatureData = this.selectedFeature.get('data');\n data.State = FeatureStates.Default;\n this.highlightLayer.getSource().clear();\n if (data.FeatureType == FeatureTypes.Factory) {\n // let style = this.getFactoryPointStyle();\n // this.selectedFeature.setStyle(style);\n }\n else {\n let style = this.selectedFeature.getStyle();\n data.State = FeatureStates.Default;\n this.selectedFeature.set('data', data);\n this.selectedFeature.setStyle(style);\n }\n }\n }\n\n // change the visible layer\n changeActiveLayer(): void {\n \n // Remove any highlighted feature\n this.removeHighlight();\n let selectedFactoryIds = [];\n // Make the active layer visible\n switch (this._activeLayer) {\n case LayerTypes.Releases:\n this.setLayerVisibility(this.releasesLayer, true);\n this.setLayerVisibility(this.recapturesLayer, false);\n this.setLayerVisibility(this.catchesLayer, false);\n break;\n case LayerTypes.Recaptures:\n selectedFactoryIds = this._recapturesFilter ? this._recapturesFilter.Factory : [];\n this.setLayerVisibility(this.releasesLayer, false);\n this.setLayerVisibility(this.recapturesLayer, true);\n this.setLayerVisibility(this.catchesLayer, false);\n break;\n case LayerTypes.Catches:\n selectedFactoryIds = this._catchesFilter ? this._catchesFilter.Factory : [];\n this.setLayerVisibility(this.releasesLayer, false);\n this.setLayerVisibility(this.recapturesLayer, false);\n this.setLayerVisibility(this.catchesLayer, true);\n break;\n }\n this.filterFactories(selectedFactoryIds);\n }\n\n // Load ICES cells grid\n loadICESGrid(): void {\n if (this._icesCells) {\n let features = [];\n for (let ices of this._icesCells) {\n let feature = this.getPolygonFeature(ices.Coordinates, new FeatureData(FeatureTypes.ICES, ices));\n let data = new FeatureData(FeatureTypes.ICES, ices);\n // feature.setStyle(this.getNamedICESGridStyle(data));\n features.push(feature);\n }\n // Draw grid lines in the map\n this.addFeaturesToLayer(this.icesGridLayer, features);\n }\n }\n\n // Filter factories in the map\n filterFactories(factory: string[]): void {\n let features = [];\n if (factory.length > 0) {\n let factories = this.factoriesHelper.findFactory(factory);\n for(let f of factories) {\n let feature = this.getIconFeature([f.Longitude, f.Latitude], new FeatureData(FeatureTypes.Factory, f));\n feature.setStyle(this.getFactoryPointStyle());\n features.push(feature);\n } \n }\n else {\n for (let factory of this.factoriesHelper.factories) {\n let feature = this.getIconFeature([factory.Longitude, factory.Latitude], new FeatureData(FeatureTypes.Factory, factory));\n feature.setStyle(this.getFactoryPointStyle());\n features.push(feature);\n }\n }\n this.addFeaturesToLayer(this.factoriesLayer, features, true);\n }\n\n // Filter releases in the map\n filterReleases(filter: Filter): void {\n let releases = [];\n releases = this.releasesHelper.findReleases(filter);\n this.drawReleases(releases, true);\n }\n\n drawReleases(releases: Release[], redraw: boolean = false): void {\n let features = [];\n let total = 0;\n if (releases.length > 0) {\n // Group releases by ICES cell\n let groups = this.releasesHelper.groupByICES(releases);\n // Fill corresponding recaptures\n for (let group of groups) {\n let recaptures = this.recapturesHelper.findRecapturesByReleasedICES(new ICESFilter(group.ICES, this._releasesFilter.Year));\n let recapturesGroups = this.recapturesHelper.getAccumulatedRecapturesByICES(recaptures);\n group.Recaptures = recapturesGroups;\n total += group.Total;\n }\n if (groups.length > 0) {\n // Get maximum\n let max = this.releasesHelper.getMaxReleaseGroup(groups);\n // Get minimum\n let min = this.releasesHelper.getMinReleaseGroup(groups);\n // Draw releases with respect to theri ICES cell\n for (let group of groups) {\n let color = new Color(0, 132, 255);//#0084FF // new Color(118, 196, 229); //#76C4E5\n let data = new FeatureData(FeatureTypes.Releases, group);\n let feature = this.getInterpolatedFeature(color, data, min.Total, max.Total);\n if (feature) {\n features.push(feature);\n }\n }\n }\n }\n this.onTotalChange.emit(new FeatureData(FeatureTypes.Releases, total));\n this.addFeaturesToLayer(this.releasesLayer, features, redraw);\n // this.fitContentToFeatures(this.releasesLayer);\n }\n\n // Filter recaptures in the map\n filterRecaptures(filter: FilterRecapture) {\n let recaptures = [];\n if (filter.Year > 0 || filter.Factory.length > 0 || filter.ReleaseYear > 0 || filter.Expedition.length > 0) {\n recaptures = this.recapturesHelper.findRecaptures(filter);\n }\n else {\n recaptures = this.recapturesHelper.recaptures;\n }\n this.drawRecaptures(recaptures, true);\n }\n\n drawRecaptures(recaptures: Recapture[], redraw: boolean = false): void {\n let features = [];\n let total = 0;\n if (recaptures.length > 0) {\n // Group recaptures by ICES cell\n let groups = this.recapturesHelper.groupByICES(recaptures);\n // Fill corresponding releases\n for (let group of groups) {\n let filter = new ICESFilter(group.ICES, this._recapturesFilter.Year, this._recapturesFilter.Factory);\n let releases = this.recapturesHelper.findReleasesByICES(filter);\n let releasesGroups = this.recapturesHelper.getAccumulatedReleasesByICES(releases);\n group.Releases = releasesGroups;\n total += group.Total;\n }\n if (groups.length > 0) {\n // Get maximum\n let max = this.recapturesHelper.getMaxRecaptureGroup(groups);\n // Get minimum\n let min = this.recapturesHelper.getMinRecaptureGroup(groups);\n // Draw releases with respect to theri ICES cell\n for (let group of groups) {\n let color = new Color(196, 60, 232); //#C43CE8\n let data = new FeatureData(FeatureTypes.Recaptures, group);\n let feature = this.getInterpolatedFeature(color, data, min.Total, max.Total);\n if (feature) {\n features.push(feature);\n }\n }\n }\n }\n this.onTotalChange.emit(new FeatureData(FeatureTypes.Recaptures, total));\n this.addFeaturesToLayer(this.recapturesLayer, features, true);\n }\n\n\n // Filter catches in the map\n filterCatches(filter: Filter) {\n let catches = [];\n if (filter.Year != 0 || filter.Factory.length > 0) {\n catches = this.catchesHelper.findCatches(filter);\n }\n else {\n catches = this.catchesHelper.catches;\n }\n this.drawCatches(catches, true);\n }\n\n drawCatches(catches: Catch[], redraw: boolean = false): void {\n let features = [];\n let total = 0;\n if (catches?.length > 0) {\n // Group catches by ICES cell\n let groups = this.catchesHelper.groupByICES(catches);\n // Fill corresponding releases\n for (let group of groups) {\n let filter = new ICESFilter(group.ICES, this._catchesFilter.Year, this._catchesFilter.Factory);\n let recaptures = this.recapturesHelper.findRecapturesByRecapturedICES(filter);\n let recapturesGroups = this.recapturesHelper.getAccumulatedReleasesByICES(recaptures);\n group.Recaptures = recapturesGroups;\n total += group.Total;\n }\n if (groups.length > 0) {\n // Get maximum\n let max = this.catchesHelper.getMaxCatchGroup(groups);\n // Get minimum\n let min = this.catchesHelper.getMinCatchGroup(groups);\n // Draw releases with respect to theri ICES cell\n for (let group of groups) {\n let color = new Color(22, 174, 0); //#16AE00\n let data = new FeatureData(FeatureTypes.Catches, group);\n let feature = this.getInterpolatedFeature(color, data, min.Total, max.Total);\n if (feature) {\n features.push(feature);\n }\n }\n }\n }\n this.onTotalChange.emit(new FeatureData(FeatureTypes.Catches, total));\n this.addFeaturesToLayer(this.catchesLayer, features, true);\n }\n\n /* Feature styles */\n\n private getInterpolatedStyleConfig(color: Color, currentValue: number, minValue: number, maxValue: number): InterpolatedFeatureStyle {\n let styleConfig: InterpolatedFeatureStyle = {\n Color: color,\n MaxOpacity: 1,\n MinOpacity: 0.3,\n CurrentValue: currentValue,\n MinValue: minValue,\n MaxValue: maxValue\n };\n return styleConfig;\n }\n\n private getICESGridStyle(): any {\n let style = new ol.style.Style({\n stroke: new ol.style.Stroke({\n color: 'rgba(238, 238, 238, 0.5)', // '#EEE',\n width: 0.5\n })\n });\n return style;\n }\n\n private getNamedICESGridStyle(data: FeatureData): any {\n let style = () => {\n let zoom = this.map.getView().getZoom();\n let scale = (zoom - 4) * 0.5;\n let fontSize = scale * 12;\n return [new ol.style.Style({\n stroke: new ol.style.Stroke({\n color: 'rgba(238, 238, 238, 0.5)', // '#EEE',\n width: 0.5\n }),\n text: new ol.style.Text({\n font: `${fontSize}px Roboto, \"Helvetica Neue\", sans-serif`,\n fill: new ol.style.Fill({ color: 'rgba(0, 0, 0, 0.4)' }),\n text: fontSize < 12 ? '' : data.Data.ICESName\n }),\n })];\n };\n return style;\n }\n\n private getStrokeStyle(color: string, width: number): any {\n let stroke = new ol.style.Stroke({\n color: color,\n width: width\n });\n return stroke;\n }\n\n // private getFactoryPointStyle(): any {\n // let style = new ol.style.Style({\n // image: new ol.style.Circle({\n // radius: 5,\n // fill: new ol.style.Fill({\n // color: '#5DA514'\n // })\n // })\n // });\n // return style;\n // }\n\n // getInterpolatedFeatureStyle(style: InterpolatedFeatureStyle): any {\n // let difference = Math.abs(style.MaxValue - style.MinValue + 1);\n // let opacityDifference = style.MaxOpacity - style.MinOpacity;\n // let scaledOpacity = '1';\n // if (difference > 0) {\n // scaledOpacity = ((opacityDifference / difference) * style.CurrentValue + style.MinOpacity).toFixed(2);\n // }\n // // console.log(style.MinValue, style.MaxValue);\n // // console.log('Value: ' + style.CurrentValue + ', scaledOpacity: ' + scaledOpacity);\n // let color = `rgba(${style.Color.r}, ${style.Color.g}, ${style.Color.b}, ${scaledOpacity})`;\n // let featureStyle = new ol.style.Style({\n // fill: new ol.style.Fill({\n // color: color\n // })\n // });\n // return featureStyle;\n // }\n\n private getFactoryPointStyle(): any {\n let style = (feature, resolution) => {\n let data: FeatureData = feature.get('data');\n let zoom = this.map.getView().getZoom();\n let scale = (zoom - 4) * 0.5;\n let fontSize = scale * 12;\n let strokeWidth = 0;\n let zIndex = 100;\n if (data.State == FeatureStates.Hovered) {\n strokeWidth = 2;\n zIndex = 500;\n }\n return [new ol.style.Style({\n image: new ol.style.Circle({\n radius: 5,\n fill: new ol.style.Fill({\n color: '#5DA514'\n }),\n stroke: strokeWidth == 0 ? null : new ol.style.Stroke({\n color: '#000',\n width: strokeWidth\n })\n }),\n text: new ol.style.Text({\n // font: `${ fontSize }px Roboto, \"Helvetica Neue\", sans-serif`,\n font: `10px Roboto, \"Helvetica Neue\", sans-serif`,\n offsetX: 10,\n offsetY: 0,\n textAlign: 'left',\n placement: 'point',\n fill: new ol.style.Fill({ color: 'rgba(0, 0, 0, 0.8)' }),\n text: zoom < 7 ? '' : data.Data.Name\n }),\n zIndex: zIndex\n })];\n }\n return style;\n }\n\n getInterpolatedFeatureStyle(style: InterpolatedFeatureStyle, data: FeatureData): any {\n let difference = Math.abs(style.MaxValue - style.MinValue + 1);\n let opacityDifference = style.MaxOpacity - style.MinOpacity;\n let scaledOpacity = '1';\n if (difference > 0) {\n scaledOpacity = ((opacityDifference / difference) * style.CurrentValue + style.MinOpacity).toFixed(2);\n }\n // console.log(style.MinValue, style.MaxValue);\n // console.log('Value: ' + style.CurrentValue + ', scaledOpacity: ' + scaledOpacity);\n let color = `rgba(${style.Color.r}, ${style.Color.g}, ${style.Color.b}, ${scaledOpacity})`;\n let featureStyle = (feature, resolution) => this.getInterpolatedICESStyle(feature, resolution, color);\n return featureStyle;\n }\n\n getInterpolatedICESStyle(feature: any, resolution: number, color: string) {\n let data: FeatureData = feature.get('data');\n let zoom = this.map.getView().getZoom();\n let scale = (zoom - 4) * 0.5;\n let fontSize = scale * 12;\n let strokeWidth = 0;\n let zIndex = 100;\n if (data.State == FeatureStates.Hovered) {\n strokeWidth = 2;\n }\n else if (data.State == FeatureStates.Highlighted) {\n strokeWidth = 3;\n }\n return [new ol.style.Style({\n fill: new ol.style.Fill({\n color: color\n }),\n stroke: strokeWidth == 0 ? null : new ol.style.Stroke({\n color: '#000',\n width: strokeWidth\n }),\n text: new ol.style.Text({\n font: `${fontSize}px Roboto, \"Helvetica Neue\", sans-serif`,\n fill: new ol.style.Fill({ color: 'rgba(255, 255, 255, 0.5)' }),\n text: fontSize < 12 ? '' : data.Data.ICES\n }),\n })];\n }\n\n /* Helper functions */\n\n private findICESCell(icesName: string): ICESCell {\n let cell = this._icesCells.find(i => i.ICESName == icesName);\n return cell;\n }\n\n private getPolygonFeature(coordinates: any[], data: FeatureData): any {\n let feature = new ol.Feature({\n geometry: new ol.geom.Polygon(coordinates),\n data: data\n });\n feature.getGeometry().transform('EPSG:4326', 'EPSG:3857');\n return feature;\n }\n\n private getIconFeature(point: [number, number], data?: any): any {\n let feature = new ol.Feature({\n geometry: new ol.geom.Point(ol.proj.transform(point, 'EPSG:4326', 'EPSG:3857')),\n data: data\n });\n return feature;\n }\n\n private getEmptyLayer(visible: boolean, style?: any): any {\n let source = new ol.source.Vector({\n features: []\n });\n let layer = new ol.layer.Vector({\n source: source,\n style: style,\n visible: visible\n });\n return layer;\n }\n\n // Get interpolated feature\n private getInterpolatedFeature(color: Color, data: FeatureData, min: number, max: number): any {\n let feature;\n let icesCell = this.findICESCell(data.Data.ICES);\n if (icesCell) {\n feature = this.getPolygonFeature(icesCell.Coordinates, data);\n let styleConfig = this.getInterpolatedStyleConfig(color, data.Data.Total, min, max);\n let style = this.getInterpolatedFeatureStyle(styleConfig, data);\n feature.setStyle(style);\n }\n return feature;\n }\n\n private setLayerVisibility(layer: any, value: boolean): void {\n if (layer) {\n layer.setVisible(value);\n }\n }\n\n private addFeaturesToLayer(layer: any, features: any[], redraw: boolean = false): void {\n if (layer) {\n let source = layer.getSource();\n if (source) {\n if (redraw) {\n source.clear();\n }\n for (let feature of features) {\n source.addFeature(feature);\n }\n }\n }\n }\n\n private fitContentToFeatures(layer: any): void {\n if (layer) {\n let source = layer.getSource();\n if (source) {\n this.map.getView().fit(source.getExtent(), this.map.getSize(), { maxZoom: 10 });\n }\n }\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MapComponent } from './map/map.component';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatTableModule } from '@angular/material/table';\nimport { GroupByPipe } from './group.pipe';\n\n@NgModule({\n imports: [\n FlexLayoutModule,\n MatTabsModule,\n MatButtonToggleModule,\n MatToolbarModule,\n MatIconModule,\n MatSnackBarModule,\n MatSelectModule,\n MatMenuModule,\n MatTooltipModule,\n MatButtonModule,\n MatSidenavModule,\n MatProgressSpinnerModule,\n CommonModule,\n ],\n exports: [\n FlexLayoutModule,\n MatTabsModule,\n MatButtonToggleModule,\n MatToolbarModule,\n MatIconModule,\n MatSnackBarModule,\n MatSelectModule,\n MatMenuModule,\n MatTooltipModule,\n MatButtonModule,\n MatSidenavModule,\n MatTableModule,\n MatProgressSpinnerModule,\n MatSortModule,\n MapComponent,\n GroupByPipe\n ],\n declarations: [\n MapComponent,\n GroupByPipe\n ]\n})\nexport class SharedModule { }\n","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: false,\n // api_url: 'http://tracfish.imr.no:9000/api/',\n api_url: 'http://smartfishsvc.smartsea.no/api/'\n // api_url: 'http://s3.smartsea.no:9000/api/'\n};\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\nimport 'hammerjs';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule);\n"],"sourceRoot":"webpack:///"}