{"version":3,"file":"main.js","mappings":"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AO;EACfC,OAAO,EAAE;CACV,EACD;EACEloC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,mBAAmB;EAC1BgoC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAE;CACV,EACD;EACEloC,IAAI,EAAE,SAAS;EACfC,KAAK,EAAE,uBAAuB;EAC9BgoC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAE;CACV,EACD;EACEloC,IAAI,EAAE,SAAS;EACfC,KAAK,EAAE,YAAY;EACnBgoC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAE;CACV,EACD;EACEloC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,eAAe;EACtBgoC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAE;CACV,EACD;EACEloC,IAAI,EAAE,UAAU;EAChBC,KAAK,EAAE,+BAA+B;EACtCgoC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAE;CACV,EACD;EACEloC,IAAI,EAAE,YAAY;EAClBC,KAAK,EAAE,WAAW;EAClBgoC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAE;CACV,EACD;EACEloC,IAAI,EAAE,gBAAgB;EACtBC,KAAK,EAAE,gBAAgB;EACvBgoC,MAAM,EAAE,OAAO;EACfC,OAAO,EAAE;CACV,EACD;EACEloC,IAAI,EAAE,QAAQ;EACdC,KAAK,EAAE,WAAW;EAClBgoC,MAAM,EAAE,MAAM;EACdC,OAAO,EAAE;CACV,CACF;;;;;;;;;;;;;;;;;AClEM,MAAM6P,WAAW,GAAmB,EAAE;AAE7C;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;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;AACO,MAAMC,cAAc,GAAW,EAAE;AAExC;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;AAEO,MAAMC,QAAQ,GAAe,EAAE;AAEtC;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;AAEO,MAAMC,gBAAgB,GAAmB,EAAE;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC7eyC;AACf;;AAKpB,MAAOC,gBAAgB;EAC3BxpD;IAIA,gBAAW,GAAG46C,wCAAE,CAAC0O,kDAAQ,CAAC;IAC1B,uBAAkB,GAAG,EAAE;IAJrB;EACF;;EAKAjK,wBAAwB,CAAC5qC,IAAS;IAChC,IAAI,CAACg1C,kBAAkB,GAAGh1C,IAAI;EAChC;EAAC;qBAVU+0C,gBAAgB;EAAA;EAAA;WAAhBA,gBAAgB;IAAA3hD,SAAhB2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AAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,SAAS;MACf,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,aAAa,CAChB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,aAAa,CAChB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB;GAER,EACD;IACI,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,UAAU;IACvB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,CACL;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,mBAAmB;MAC3B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,oBAAoB;QACrC,eAAe,EAAE,cAAc;QAC/B,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,QAAQ;MACrB,kBAAkB,EAAE,GAAG;MACvB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,aAAa;MACrB,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,iBAAiB;QAClC,eAAe,EAAE,WAAW;QAC5B,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,QAAQ;MACnB,WAAW,EAAE,MAAM;MACnB,kBAAkB,EAAE,GAAG;MACvB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,sBAAsB;MAC9B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,SAAS;QAC1B,eAAe,EAAE,cAAc;QAC/B,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,YAAY;MACvB,WAAW,EAAE,WAAW;MACxB,kBAAkB,EAAE,GAAG;MACvB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,WAAW;MACnB,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,WAAW;QAC5B,eAAe,EAAE,eAAe;QAChC,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,MAAM;MACjB,WAAW,EAAE,MAAM;MACnB,kBAAkB,EAAE,GAAG;MACvB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,kBAAkB;MAC1B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,mBAAmB;QACpC,eAAe,EAAE,YAAY;QAC7B,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,OAAO;MAClB,WAAW,EAAE,YAAY;MACzB,kBAAkB,EAAE,IAAI;MACxB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,gBAAgB;MACxB,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,eAAe;QAChC,eAAe,EAAE,aAAa;QAC9B,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,WAAW;MACtB,WAAW,EAAE,MAAM;MACnB,kBAAkB,EAAE,IAAI;MACxB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,YAAY;MACpB,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,eAAe;QAChC,eAAe,EAAE,aAAa;QAC9B,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,OAAO;MAClB,WAAW,EAAE,MAAM;MACnB,kBAAkB,EAAE,GAAG;MACvB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,qBAAqB;MAC7B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,gBAAgB;QACjC,eAAe,EAAE,eAAe;QAChC,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,aAAa;MACxB,WAAW,EAAE,SAAS;MACtB,kBAAkB,EAAE,GAAG;MACvB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,oBAAoB;MAC5B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,aAAa;QAC9B,eAAe,EAAE,aAAa;QAC9B,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,QAAQ;QACpB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,UAAU;MACrB,WAAW,EAAE,WAAW;MACxB,kBAAkB,EAAE,GAAG;MACvB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,kBAAkB;MAC1B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,oBAAoB;QACrC,eAAe,EAAE,WAAW;QAC5B,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,aAAa;MACxB,WAAW,EAAE,MAAM;MACnB,kBAAkB,EAAE,GAAG;MACvB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,qBAAqB;MAC7B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,oBAAoB;QACrC,eAAe,EAAE,cAAc;QAC/B,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,aAAa;MACxB,WAAW,EAAE,SAAS;MACtB,kBAAkB,EAAE,IAAI;MACxB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,CACJ;IACD,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE,CACN;MACI,IAAI,EAAE,SAAS;MACf,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,SAAS;MACf,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,SAAS;MACf,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,SAAS;MACf,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,SAAS;MACf,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,SAAS;MACf,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBA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EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CA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I,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB;GAER,EACD;IACI,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,CACL;MACI,IAAI,EAAE,OAAO;MACb,MAAM,EAAE,sBAAsB;MAC9B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,aAAa;QAC9B,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,kBAAkB,EAAE,IAAI;MACxB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,WAAW;MAClC,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,CACJ;IACD,WAAW,EAAE,CACT;MACI,IAAI,EAAE,CAAC;MACP,eAAe,EAAE,IAAI;MACrB,eAAe,EAAE,IAAI;MACrB,eAAe,EAAE,IAAI;MACrB,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,iBAAiB;MACzB,YAAY,EAAE,MAAM;MACpB,UAAU,EAAE,QAAQ;MACpB,UAAU,EAAE,eAAe;MAC3B,SAAS,EAAE,IAAI;MACf,QAAQ,EAAE,CAAC;MACX,aAAa,EAAE;KAClB,CACJ;IACD,QAAQ,EAAE,CACN;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB;GAER,EACD;IACI,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,CACL;MACI,IAAI,EAAE,OAAO;MACb,MAAM,EAAE,sBAAsB;MAC9B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,aAAa;QAC9B,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,IAAI;MACf,WAAW,EAAE,IAAI;MACjB,kBAAkB,EAAE,IAAI;MACxB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,WAAW;MAClC,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,CACJ;IACD,WAAW,EAAE,EAAE;IACf,QAAQ,EAAE,CACN;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB;GAER,EACD;IACI,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,KAAK;IACf,OAAO,EAAE,CACL;MACI,IAAI,EAAE,UAAU;MAChB,MAAM,EAAE,uBAAuB;MAC/B,aAAa,EAAE;QACX,IAAI,EAAE,CAAC;QACP,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,iBAAiB;QAClC,eAAe,EAAE,oBAAoB;QACrC,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,IAAI;QACZ,YAAY,EAAE,MAAM;QACpB,UAAU,EAAE,eAAe;QAC3B,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ,EAAE,IAAI;QACd,aAAa,EAAE;OAClB;MACD,SAAS,EAAE,WAAW;MACtB,WAAW,EAAE,aAAa;MAC1B,kBAAkB,EAAE,GAAG;MACvB,cAAc,EAAE,IAAI;MACpB,OAAO,EAAE,KAAK;MACd,qBAAqB,EAAE,IAAI;MAC3B,aAAa,EAAE,IAAI;MACnB,QAAQ,EAAE,IAAI;MACd,cAAc,EAAE,IAAI;MACpB,oBAAoB,EAAE;KACzB,CACJ;IACD,WAAW,EAAE,CACT;MACI,IAAI,EAAE,CAAC;MACP,eAAe,EAAE,IAAI;MACrB,eAAe,EAAE,IAAI;MACrB,eAAe,EAAE,IAAI;MACrB,UAAU,EAAE,IAAI;MAChB,MAAM,EAAE,kBAAkB;MAC1B,YAAY,EAAE,MAAM;MACpB,UAAU,EAAE,QAAQ;MACpB,UAAU,EAAE,eAAe;MAC3B,SAAS,EAAE,IAAI;MACf,QAAQ,EAAE,EAAE;MACZ,aAAa,EAAE;KAClB,CACJ;IACD,QAAQ,EAAE,CACN;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gB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AChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ,EACD,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACn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B,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,aAAa,CAChB,EACD,CACI,gBAAgB,E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,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI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EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,UAAU;MAChB,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,YAAY;QAClB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,SAAS;MACf,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ,EACD,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,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AgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACn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CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,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CX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,cAAc,EACd,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,KAAK;MAClB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB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nB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,cAAc,CACjB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,eAAe,CAClB,EACD,CACI,cAAc,EACd,eAAe,CAClB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,CACJ;SAER;QACD,YAAY,EAAE;UACV,QAAQ,EAAE;;;KAGrB,EACD;MACI,IAAI,EAAE,QAAQ;MACd,WAAW,EAAE,IAAI;MACjB,SAAS,EAAE;QACP,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE;UACR,MAAM,EAAE,SAAS;UACjB,aAAa,EAAE,CACX,CACI,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,eAAe,EACf,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,gBAAgB,CACnB,EACD,CACI,gBAAgB,EAChB,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","sources":["./apps/IsyMap/src/app/app-data.ts","./apps/IsyMap/src/app/app-routing.module.ts","./apps/IsyMap/src/app/app.component.ts","./apps/IsyMap/src/app/app.component.html","./apps/IsyMap/src/app/app.module.ts","./apps/IsyMap/src/app/configuration.service.ts","./apps/IsyMap/src/app/guard/auth.guard.ts","./apps/IsyMap/src/app/init/keycloak-init.factory.ts","./apps/IsyMap/src/app/main/main.component.ts","./apps/IsyMap/src/app/main/main.component.html","./apps/IsyMap/src/environments/environment.ts","./apps/IsyMap/src/main.ts","./libs/isy-admin/src/lib/admin-show-spinner.pipe.ts","./libs/isy-admin/src/lib/data.ts","./libs/isy-admin/src/lib/detail-overlays.service.ts","./libs/isy-admin/src/lib/get-name-from-params.pipe.ts","./libs/isy-admin/src/lib/get-string-from-array.pipe.ts","./libs/isy-admin/src/lib/isy-admin-btn/isy-admin-btn.component.ts","./libs/isy-admin/src/lib/isy-admin-btn/isy-admin-btn.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-preview/base-layers-preview.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-preview/base-layers-preview.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/base-layers-services.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/base-layers-services.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-add-new/service-base-layer-add-new.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-add-new/service-base-layer-add-new.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-edit/service-base-layer-edit.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-edit/service-base-layer-edit.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-info/service-base-layer-info.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-info/service-base-layer-info.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-list/service-base-layer-list.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-list/service-base-layer-list.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/choose-base-layers.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/choose-base-layers.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/choose-base-layers.service.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-base-layers/tab-buttons.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/choose-layers.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/choose-layers.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layer-fields.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/add-new-service/add-new-service.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/add-new-service/add-new-service.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/catalog-detail.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/catalog-detail.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/catalog-edit/catalog-edit.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/catalog-edit/catalog-edit.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/catalog-info/catalog-info.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/catalog-info/catalog-info.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-list/catalog-list.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/catalog-list/catalog-list.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/layers-catalog.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-catalog/layers-catalog.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-preview/layers-preview.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-preview/layers-preview.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-preview/layers-preview.service.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/layers-services.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/layers-services.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/filter-editor/filter-editor.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/filter-editor/filter-editor.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/filter-editor/filter-tree/filter-tree.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/filter-editor/filter-tree/filter-tree.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/service-detail.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/service-detail.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/service-style.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/color-picker/color-picker.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/color-picker/color-picker.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/interfaces.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/line-editor/line-editor.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/line-editor/line-editor.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/point-editor/point-editor.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/point-editor/point-editor.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/polygon-editor/polygon-editor.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/polygon-editor/polygon-editor.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/style-editor.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/style-editor.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/text-editor/text-editor.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/text-editor/text-editor.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/toggle-height-animation.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-list/service-list.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/layers-services/service-list/service-list.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/select-layers.service.ts","./libs/isy-admin/src/lib/isy-admin-stepper/choose-layers/tab-buttons.ts","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-basic/project-basic.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-basic/project-basic.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-integration/project-integration.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-integration/project-integration.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-pointinfo/project-pointinfo.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-pointinfo/project-pointinfo.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-search/project-search.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-search/project-search.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-settings.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-settings.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-settings.service.ts","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-tool/project-tool.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/project-tool/project-tool.component.html","./libs/isy-admin/src/lib/isy-admin-stepper/project-settings/tab-buttons.ts","./libs/isy-admin/src/lib/isy-admin-stepper/test-choose-layers/test-choose-layers.component.ts","./libs/isy-admin/src/lib/isy-admin-stepper/test-choose-layers/test-choose-layers.component.html","./libs/isy-admin/src/lib/isy-admin-welcome-page/isy-admin-welcome-page.component.ts","./libs/isy-admin/src/lib/isy-admin-welcome-page/isy-admin-welcome-page.component.html","./libs/isy-admin/src/lib/isy-admin.component.ts","./libs/isy-admin/src/lib/isy-admin.component.html","./libs/isy-admin/src/lib/isy-admin.module.ts","./libs/isy-admin/src/lib/isy-admin.service.ts","./libs/isy-admin/src/lib/isy-capabilities.service.ts","./libs/isy-admin/src/lib/library/search-library.ts","./libs/isy-admin/src/lib/mock-config.ts","./libs/isy-admin/src/lib/test-admin.service.ts","./libs/isy-animations/src/lib/fade-animations.ts","./libs/isy-animations/src/lib/isy-animations.ts","./libs/isy-app-services/src/lib/isy-app-feature-info.service.ts","./libs/isy-app-services/src/lib/isy-app-matrikkel.service.ts","./libs/isy-app-services/src/lib/isy-overlays.service.ts","./libs/isy-app-services/src/lib/isy-picklist.service.ts","./libs/isy-base-layers/src/lib/isy-base-layers.component.ts","./libs/isy-base-layers/src/lib/isy-base-layers.component.html","./libs/isy-base-layers/src/lib/isy-base-layers.module.ts","./libs/isy-base-layers/src/lib/isy-base-layers.service.ts","./libs/isy-blade/src/lib/animations.ts","./libs/isy-blade/src/lib/blade-content-size.directive.ts","./libs/isy-blade/src/lib/blade-host.directive.ts","./libs/isy-blade/src/lib/blade-resize-border.directive.ts","./libs/isy-blade/src/lib/blade-window-size.directive.ts","./libs/isy-blade/src/lib/bladeItem.ts","./libs/isy-blade/src/lib/isy-blade.component.ts","./libs/isy-blade/src/lib/isy-blade.component.html","./libs/isy-blade/src/lib/isy-blade.module.ts","./libs/isy-blade/src/lib/isy-blade.service.ts","./libs/isy-blade/src/lib/isy-dynamic-blade.component.ts","./libs/isy-common/src/lib/isy-common.service.ts","./libs/isy-configs/src/lib/layer-config.model.ts","./libs/isy-configs/src/lib/mainMenuNavBar.model.ts","./libs/isy-configs/src/lib/map-config.model.ts","./libs/isy-configs/src/lib/sessionStorage.model.ts","./libs/isy-configs/src/lib/tool.model.ts","./libs/isy-configs/src/lib/url-params.model.ts","./libs/isy-draggable-overlay/src/lib/draggable-host.directive.ts","./libs/isy-draggable-overlay/src/lib/draggableItem.ts","./libs/isy-draggable-overlay/src/lib/isy-draggable-overlay.component.ts","./libs/isy-draggable-overlay/src/lib/isy-draggable-overlay.component.html","./libs/isy-draggable-overlay/src/lib/isy-draggable-overlay.module.ts","./libs/isy-draggable-overlay/src/lib/isy-draggable-overlay.service.ts","./libs/isy-draggable-overlay/src/lib/isy-dynamic-draggable-overlay.component.ts","./libs/isy-dynamic-modal/src/lib/animations.ts","./libs/isy-dynamic-modal/src/lib/isy-dynamic-modal.component.ts","./libs/isy-dynamic-modal/src/lib/isy-dynamic-modal.component.html","./libs/isy-dynamic-modal/src/lib/isy-dynamic-modal.module.ts","./libs/isy-dynamic-modal/src/lib/isy-dynamic-modal.service.ts","./libs/isy-dynamic-modal/src/lib/modal-host-content.directive.ts","./libs/isy-dynamic-modal/src/lib/modal-host-footer.directive.ts","./libs/isy-dynamic-modal/src/lib/modalItem.ts","./libs/isy-dynamic-nav-loader/src/lib/isy-dynamic-nav-loader.component.ts","./libs/isy-dynamic-nav-loader/src/lib/isy-dynamic-nav-loader.component.html","./libs/isy-dynamic-nav-loader/src/lib/isy-dynamic-nav-loader.module.ts","./libs/isy-dynamic-nav-loader/src/lib/isy-dynamic-nav-loader.service.ts","./libs/isy-dynamic-nav-loader/src/lib/isy-nav-bar.directive.ts","./libs/isy-edit-wfst/src/lib/attachment-file-name.pipe.ts","./libs/isy-edit-wfst/src/lib/attachment-filter.pipe.ts","./libs/isy-edit-wfst/src/lib/edit-wfst.directive.ts","./libs/isy-edit-wfst/src/lib/isy-edit-geometry-action-dialog/isy-edit-geometry-action-dialog.component.ts","./libs/isy-edit-wfst/src/lib/isy-edit-geometry-action-dialog/isy-edit-geometry-action-dialog.component.html","./libs/isy-edit-wfst/src/lib/isy-edit-wfst-modal-content/isy-edit-wfst-modal-content.component.ts","./libs/isy-edit-wfst/src/lib/isy-edit-wfst-modal-content/isy-edit-wfst-modal-content.component.html","./libs/isy-edit-wfst/src/lib/isy-edit-wfst-modal-footer/isy-edit-wfst-modal-footer.component.ts","./libs/isy-edit-wfst/src/lib/isy-edit-wfst-modal-footer/isy-edit-wfst-modal-footer.component.html","./libs/isy-edit-wfst/src/lib/isy-edit-wfst.module.ts","./libs/isy-edit-wfst/src/lib/isy-edit-wfst.service.ts","./libs/isy-edit-wfst/src/lib/isy-insert-wfst-modal-footer/isy-insert-wfst-modal-footer.component.ts","./libs/isy-edit-wfst/src/lib/isy-insert-wfst-modal-footer/isy-insert-wfst-modal-footer.component.html","./libs/isy-empty-content/src/lib/color-palete.model.ts","./libs/isy-empty-content/src/lib/isy-empty-content.component.ts","./libs/isy-empty-content/src/lib/isy-empty-content.component.html","./libs/isy-empty-content/src/lib/isy-empty-content.module.ts","./libs/isy-feature-info/src/lib/feature-info.directive.ts","./libs/isy-feature-info/src/lib/isy-feature-info-chart/isy-feature-info-chart.component.ts","./libs/isy-feature-info/src/lib/isy-feature-info-chart/isy-feature-info-chart.component.html","./libs/isy-feature-info/src/lib/isy-feature-info-chart/isy-feature-info-chart.service.ts","./libs/isy-feature-info/src/lib/isy-feature-info-doc/isy-feature-info-doc.component.ts","./libs/isy-feature-info/src/lib/isy-feature-info-doc/isy-feature-info-doc.component.html","./libs/isy-feature-info/src/lib/isy-feature-info-rep/isy-feature-info-rep.component.ts","./libs/isy-feature-info/src/lib/isy-feature-info-rep/isy-feature-info-rep.component.html","./libs/isy-feature-info/src/lib/isy-feature-info.component.ts","./libs/isy-feature-info/src/lib/isy-feature-info.component.html","./libs/isy-feature-info/src/lib/isy-feature-info.module.ts","./libs/isy-feature-info/src/lib/isy-feature-info.service.ts","./libs/isy-font-awesome-icons/src/lib/fontAwesomeIcons.ts","./libs/isy-geolocation/src/lib/isy-geolocation.component.ts","./libs/isy-geolocation/src/lib/isy-geolocation.component.html","./libs/isy-geolocation/src/lib/isy-geolocation.module.ts","./libs/isy-gi-bridge-events/src/lib/events/frame-view.ts","./libs/isy-gi-bridge-events/src/lib/events/geojson-utilities.ts","./libs/isy-gi-bridge-events/src/lib/events/map-layers.ts","./libs/isy-gi-bridge-events/src/lib/events/map-view.ts","./libs/isy-gi-bridge-events/src/lib/gi-bridge-events.directive.ts","./libs/isy-gi-bridge-events/src/lib/isy-gi-bridge-events.module.ts","./libs/isy-gi-bridge/src/lib/gi-bridge-event.model.ts","./libs/isy-gi-bridge/src/lib/isy-gi-bridge.service.ts","./libs/isy-gi-vis/src/lib/gi-vis.directive.ts","./libs/isy-gi-vis/src/lib/isy-gi-vis.component.ts","./libs/isy-gi-vis/src/lib/isy-gi-vis.component.html","./libs/isy-gi-vis/src/lib/isy-gi-vis.module.ts","./libs/isy-gi-vis/src/lib/isy-gi-vis.service.ts","./libs/isy-gis-styles/src/lib/gis-input/gis-input.component.ts","./libs/isy-gis-styles/src/lib/gis-input/gis-input.component.html","./libs/isy-gis-styles/src/lib/gis-input/gis-input.service.ts","./libs/isy-gis-styles/src/lib/gis-theme.directive.ts","./libs/isy-gis-styles/src/lib/isy-gis-styles.component.ts","./libs/isy-gis-styles/src/lib/isy-gis-styles.module.ts","./libs/isy-gis-styles/src/lib/isy-gis-styles.service.ts","./libs/isy-gis-styles/src/lib/pin-icon.ts","./libs/isy-gis-styles/src/lib/theme.ts","./libs/isy-gis-styles/src/lib/themes.ts","./libs/isy-gis-styles/src/lib/themes/classic.ts","./libs/isy-gis-styles/src/lib/themes/darkmode.ts","./libs/isy-gis-styles/src/lib/themes/innbyggerdlg.ts","./libs/isy-help/src/lib/isy-help.component.ts","./libs/isy-help/src/lib/isy-help.directive.ts","./libs/isy-help/src/lib/isy-help.module.ts","./libs/isy-info-panel/src/lib/info-panel-height.directive.ts","./libs/isy-info-panel/src/lib/isy-info-panel-layout/isy-info-panel-layout.component.ts","./libs/isy-info-panel/src/lib/isy-info-panel-layout/isy-info-panel-layout.component.html","./libs/isy-info-panel/src/lib/isy-info-panel.component.ts","./libs/isy-info-panel/src/lib/isy-info-panel.component.html","./libs/isy-info-panel/src/lib/isy-info-panel.module.ts","./libs/isy-info-panel/src/lib/isy-info-panel.service.ts","./libs/isy-jobtech/src/lib/isy-jobtech.component.ts","./libs/isy-jobtech/src/lib/isy-jobtech.component.html","./libs/isy-jobtech/src/lib/isy-jobtech.module.ts","./libs/isy-jobtech/src/lib/isy-jobtech.service.ts","./libs/isy-jobtech/src/lib/jobtech.directive.ts","./libs/isy-keycloak/src/lib/isy-keycloak.component.ts","./libs/isy-keycloak/src/lib/isy-keycloak.component.html","./libs/isy-keycloak/src/lib/isy-keycloak.module.ts","./libs/isy-keycloak/src/lib/isy-keycloak.service.ts","./libs/isy-layers/src/lib/isy-layers.component.ts","./libs/isy-layers/src/lib/isy-layers.component.html","./libs/isy-layers/src/lib/isy-layers.module.ts","./libs/isy-layers/src/lib/isy-layers.pipe.ts","./libs/isy-layers/src/lib/isy-layers.service.ts","./libs/isy-layers/src/lib/protected-image.component.ts","./libs/isy-layers/src/lib/style-legend/style-legend.component.html","./libs/isy-layers/src/lib/style-legend/style-legend.component.ts","./libs/isy-login/src/lib/isy-id-porten/idporten-neighborlist-csv.ts","./libs/isy-login/src/lib/isy-id-porten/isy-id-porten-print-neighbor/isy-id-porten-print-neighbor.component.ts","./libs/isy-login/src/lib/isy-id-porten/isy-id-porten-print-neighbor/isy-id-porten-print-neighbor.component.html","./libs/isy-login/src/lib/isy-id-porten/isy-id-porten.component.ts","./libs/isy-login/src/lib/isy-id-porten/isy-id-porten.component.html","./libs/isy-login/src/lib/isy-id-porten/isy-id-porten.service.ts","./libs/isy-login/src/lib/isy-id-porten/isy-user-properties/isy-user-properties.component.ts","./libs/isy-login/src/lib/isy-id-porten/isy-user-properties/isy-user-properties.component.html","./libs/isy-login/src/lib/isy-id-porten/mockData/MatrikkelenhetMe.ts","./libs/isy-login/src/lib/isy-id-porten/mockData/MatrikkelenhetNaboliste.ts","./libs/isy-login/src/lib/isy-id-porten/mockData/Person.ts","./libs/isy-login/src/lib/isy-kc/isy-kc.component.ts","./libs/isy-login/src/lib/isy-kc/isy-kc.component.html","./libs/isy-login/src/lib/isy-login.component.ts","./libs/isy-login/src/lib/isy-login.component.html","./libs/isy-login/src/lib/isy-login.directive.ts","./libs/isy-login/src/lib/isy-login.module.ts","./libs/isy-login/src/lib/isy-login.service.ts","./libs/isy-login/src/lib/isy-msal/isy-msal.component.ts","./libs/isy-login/src/lib/isy-msal/isy-msal.component.html","./libs/isy-login/src/lib/isy-user-admin/isy-user-admin.component.ts","./libs/isy-login/src/lib/isy-user-admin/isy-user-admin.component.html","./libs/isy-map-action-dialog/src/lib/animations.ts","./libs/isy-map-action-dialog/src/lib/isy-dynamic-map-action-dialog.component.ts","./libs/isy-map-action-dialog/src/lib/isy-map-action-dialog.component.html","./libs/isy-map-action-dialog/src/lib/isy-map-action-dialog.component.ts","./libs/isy-map-action-dialog/src/lib/isy-map-action-dialog.module.ts","./libs/isy-map-action-dialog/src/lib/isy-map-action-dialog.service.ts","./libs/isy-map-action-dialog/src/lib/map-action-dialog-host.directive.ts","./libs/isy-map-action-dialog/src/lib/mapActionDialogItem.ts","./libs/isy-map/src/lib/isy-map-emitter.service.ts","./libs/isy-map/src/lib/isy-map.component.ts","./libs/isy-map/src/lib/isy-map.component.html","./libs/isy-map/src/lib/isy-map.module.ts","./libs/isy-map/src/lib/isy-map.service.ts","./libs/isy-map/src/lib/map-popover-tooltip.directive.ts","./libs/isy-map/src/lib/map-tooltip.directive.ts","./libs/isy-map/src/lib/maplibng.service.ts","./libs/isy-map/src/lib/utils/geojson-utils.service.ts","./libs/isy-neighbor/src/lib/get-address-string.pipe.ts","./libs/isy-neighbor/src/lib/isy-neighbor-print/isy-neighbor-print.component.ts","./libs/isy-neighbor/src/lib/isy-neighbor-print/isy-neighbor-print.component.html","./libs/isy-neighbor/src/lib/isy-neighbor.component.ts","./libs/isy-neighbor/src/lib/isy-neighbor.component.html","./libs/isy-neighbor/src/lib/isy-neighbor.module.ts","./libs/isy-neighbor/src/lib/isy-neighbor.service.ts","./libs/isy-position-info/src/lib/isy-position-info-areaplan/isy-position-info-areaplan-doc/isy-position-info-areaplan-doc.component.ts","./libs/isy-position-info/src/lib/isy-position-info-areaplan/isy-position-info-areaplan-doc/isy-position-info-areaplan-doc.component.html","./libs/isy-position-info/src/lib/isy-position-info-areaplan/isy-position-info-areaplan.component.ts","./libs/isy-position-info/src/lib/isy-position-info-areaplan/isy-position-info-areaplan.component.html","./libs/isy-position-info/src/lib/isy-position-info-building/isy-position-info-building.component.ts","./libs/isy-position-info/src/lib/isy-position-info-building/isy-position-info-building.component.html","./libs/isy-position-info/src/lib/isy-position-info-property/isy-position-info-property.component.ts","./libs/isy-position-info/src/lib/isy-position-info-property/isy-position-info-property.component.html","./libs/isy-position-info/src/lib/isy-position-info.component.ts","./libs/isy-position-info/src/lib/isy-position-info.component.html","./libs/isy-position-info/src/lib/isy-position-info.module.ts","./libs/isy-position-info/src/lib/isy-position-info.service.ts","./libs/isy-print/src/lib/isy-print.directive.ts","./libs/isy-print/src/lib/isy-print.module.ts","./libs/isy-project-not-found/src/lib/isy-project-not-found.component.ts","./libs/isy-project-not-found/src/lib/isy-project-not-found.component.html","./libs/isy-project-not-found/src/lib/isy-project-not-found.module.ts","./libs/isy-projects-list/src/lib/isy-projects-list.component.ts","./libs/isy-projects-list/src/lib/isy-projects-list.component.html","./libs/isy-projects-list/src/lib/isy-projects-list.module.ts","./libs/isy-projects-list/src/lib/isy-projects-list.service.ts","./libs/isy-road-profile/src/lib/isy-road-profile.module.ts","./libs/isy-road-profile/src/lib/isy-road-profile.service.ts","./libs/isy-road-profile/src/lib/road-cross-section-emitter.service.ts","./libs/isy-road-profile/src/lib/road-cross-section.service.ts","./libs/isy-road-profile/src/lib/road-cross-section/road-cross-section.component.ts","./libs/isy-road-profile/src/lib/road-cross-section/road-cross-section.component.html","./libs/isy-road-profile/src/lib/road-profile.directive.ts","./libs/isy-road-profile/src/lib/road-profile/road-profile.component.ts","./libs/isy-road-profile/src/lib/road-profile/road-profile.component.html","./libs/isy-road-profile/src/lib/roadprofile-emitter.service.ts","./libs/isy-road-profile/src/lib/roadprofile.service.ts","./libs/isy-search/src/lib/isy-search-bar/isy-search-bar-layout/isy-search-bar-layout.component.ts","./libs/isy-search/src/lib/isy-search-bar/isy-search-bar-layout/isy-search-bar-layout.component.html","./libs/isy-search/src/lib/isy-search-bar/isy-search-bar.component.ts","./libs/isy-search/src/lib/isy-search-bar/isy-search-bar.component.html","./libs/isy-search/src/lib/isy-search-bar/isy-search-bar.service.ts","./libs/isy-search/src/lib/isy-search-results/isy-search-results-filter.pipe.ts","./libs/isy-search/src/lib/isy-search-results/isy-search-results.component.ts","./libs/isy-search/src/lib/isy-search-results/isy-search-results.component.html","./libs/isy-search/src/lib/isy-search-results/isy-search-results.service.ts","./libs/isy-search/src/lib/isy-search-results/styles.ts","./libs/isy-search/src/lib/isy-search.module.ts","./libs/isy-side-nav/src/lib/isy-side-nav-content/isy-side-nav-content.component.ts","./libs/isy-side-nav/src/lib/isy-side-nav-content/isy-side-nav-content.component.html","./libs/isy-side-nav/src/lib/isy-side-nav-content/temp-comp-help/temp-comp-help.component.ts","./libs/isy-side-nav/src/lib/isy-side-nav-content/temp-comp-help/temp-comp-help.component.html","./libs/isy-side-nav/src/lib/isy-side-nav-overlay-layer/isy-side-nav-overlay-layer.component.ts","./libs/isy-side-nav/src/lib/isy-side-nav-overlay-layer/isy-side-nav-overlay-layer.component.html","./libs/isy-side-nav/src/lib/isy-side-nav.component.ts","./libs/isy-side-nav/src/lib/isy-side-nav.component.html","./libs/isy-side-nav/src/lib/isy-side-nav.module.ts","./libs/isy-side-nav/src/lib/isy-side-nav.service.ts","./libs/isy-side-nav/src/lib/side-nav-opener.directive.ts","./libs/isy-spinner/src/lib/isy-spinner.component.ts","./libs/isy-spinner/src/lib/isy-spinner.module.ts","./libs/isy-spinner/src/lib/isy-spinner.service.ts","./libs/isy-toaster/src/lib/isy-toaster.component.ts","./libs/isy-toaster/src/lib/isy-toaster.module.ts","./libs/isy-toaster/src/lib/isy-toaster.service.ts","./libs/isy-toaster/src/lib/toast.ts","./libs/isy-tools/src/lib/isy-active-tool/isy-active-tool.component.ts","./libs/isy-tools/src/lib/isy-active-tool/isy-active-tool.component.html","./libs/isy-tools/src/lib/isy-advanced-search/column-defs-changed.pipe.ts","./libs/isy-tools/src/lib/isy-advanced-search/column-ids.pipe.ts","./libs/isy-tools/src/lib/isy-advanced-search/content-size.directive.ts","./libs/isy-tools/src/lib/isy-advanced-search/isy-advanced-search-buttons/isy-advanced-search-buttons.component.ts","./libs/isy-tools/src/lib/isy-advanced-search/isy-advanced-search-buttons/isy-advanced-search-buttons.component.html","./libs/isy-tools/src/lib/isy-advanced-search/isy-advanced-search.component.ts","./libs/isy-tools/src/lib/isy-advanced-search/isy-advanced-search.component.html","./libs/isy-tools/src/lib/isy-advanced-search/isy-advanced-search.service.ts","./libs/isy-tools/src/lib/isy-advanced-search/isy-obj-search/isy-obj-search.component.ts","./libs/isy-tools/src/lib/isy-advanced-search/isy-obj-search/isy-obj-search.component.html","./libs/isy-tools/src/lib/isy-advanced-search/isy-prop-search/isy-prop-search.component.ts","./libs/isy-tools/src/lib/isy-advanced-search/isy-prop-search/isy-prop-search.component.html","./libs/isy-tools/src/lib/isy-advanced-search/isy-search-welcome-page/isy-search-welcome-page.component.ts","./libs/isy-tools/src/lib/isy-advanced-search/isy-search-welcome-page/isy-search-welcome-page.component.html","./libs/isy-tools/src/lib/isy-analyses-and-reports/isy-analyses-and-reports.component.ts","./libs/isy-tools/src/lib/isy-analyses-and-reports/isy-analyses-and-reports.component.html","./libs/isy-tools/src/lib/isy-analyses-and-reports/isy-analyses-and-reports.service.ts","./libs/isy-tools/src/lib/isy-analyses-and-reports/isy-analyses-reports-list/isy-analyses-reports-list.component.ts","./libs/isy-tools/src/lib/isy-analyses-and-reports/isy-analyses-reports-list/isy-analyses-reports-list.component.html","./libs/isy-tools/src/lib/isy-bbox/isy-bbox.component.ts","./libs/isy-tools/src/lib/isy-bbox/isy-bbox.component.html","./libs/isy-tools/src/lib/isy-draw/draw-panel.model.ts","./libs/isy-tools/src/lib/isy-draw/isy-draw.component.ts","./libs/isy-tools/src/lib/isy-draw/isy-draw.component.html","./libs/isy-tools/src/lib/isy-draw/isy-draw.service.ts","./libs/isy-tools/src/lib/isy-elevation-profile/isy-elevation-profile.component.ts","./libs/isy-tools/src/lib/isy-elevation-profile/isy-elevation-profile.component.html","./libs/isy-tools/src/lib/isy-export/isy-export.component.ts","./libs/isy-tools/src/lib/isy-export/isy-export.component.html","./libs/isy-tools/src/lib/isy-feedback/isy-feedback-modal/isy-feedback-modal.component.ts","./libs/isy-tools/src/lib/isy-feedback/isy-feedback-modal/isy-feedback-modal.component.html","./libs/isy-tools/src/lib/isy-feedback/isy-feedback.component.ts","./libs/isy-tools/src/lib/isy-feedback/isy-feedback.component.html","./libs/isy-tools/src/lib/isy-oblique/isy-oblique.component.html","./libs/isy-tools/src/lib/isy-oblique/isy-oblique.component.ts","./libs/isy-tools/src/lib/isy-print-map/isy-print-map.component.ts","./libs/isy-tools/src/lib/isy-print-map/isy-print-map.component.html","./libs/isy-tools/src/lib/isy-property-report/isy-property-report-list/get-address-string.pipe.ts","./libs/isy-tools/src/lib/isy-property-report/isy-property-report-list/isy-property-report-list.component.ts","./libs/isy-tools/src/lib/isy-property-report/isy-property-report-list/isy-property-report-list.component.html","./libs/isy-tools/src/lib/isy-property-report/isy-property-report-print/isy-property-report-print.component.ts","./libs/isy-tools/src/lib/isy-property-report/isy-property-report-print/isy-property-report-print.component.html","./libs/isy-tools/src/lib/isy-property-report/isy-property-report.component.ts","./libs/isy-tools/src/lib/isy-property-report/isy-property-report.component.html","./libs/isy-tools/src/lib/isy-property-report/isy-property-report.service.ts","./libs/isy-tools/src/lib/isy-road-analysis/isy-road-analysis.component.ts","./libs/isy-tools/src/lib/isy-road-analysis/isy-road-analysis.component.html","./libs/isy-tools/src/lib/isy-routing.service.ts","./libs/isy-tools/src/lib/isy-three-d/isy-three-d.component.ts","./libs/isy-tools/src/lib/isy-tool.directive.ts","./libs/isy-tools/src/lib/isy-tools-list/isy-tools-list.component.ts","./libs/isy-tools/src/lib/isy-tools-list/isy-tools-list.component.html","./libs/isy-tools/src/lib/isy-tools.module.ts","./libs/isy-tools/src/lib/isy-tools.service.ts","./libs/isy-tools/src/lib/tools.directive.ts","./libs/isy-tools/src/lib/tools.ts","./libs/isy-translate/src/lib/isy-translate.module.ts","./libs/isy-translate/src/lib/isy-translate.service.ts","./libs/isy-translate/src/lib/lang-en.ts","./libs/isy-translate/src/lib/lang-no.ts","./libs/isy-translate/src/lib/translate.directive.ts","./libs/isy-translate/src/lib/translate.pipe.ts","./libs/isy-translate/src/lib/translations.ts","./libs/isy-url-params/src/lib/isy-url-params.directive.ts","./libs/isy-url-params/src/lib/isy-url-params.module.ts","./libs/isy-url-params/src/lib/styles.ts","./libs/isy-user-info-msal/src/lib/isy-user-info-msal.component.ts","./libs/isy-user-info-msal/src/lib/isy-user-info-msal.component.html","./libs/isy-user-info-msal/src/lib/isy-user-info-msal.module.ts","./libs/isy-utils/src/lib/create-url.pipe.ts","./libs/isy-utils/src/lib/filter-layer-groups.pipe.ts","./libs/isy-utils/src/lib/fix-iframe-size.directive.ts","./libs/isy-utils/src/lib/format-convert.service.ts","./libs/isy-utils/src/lib/format-filter-description.pipe.ts","./libs/isy-utils/src/lib/format-option-description.pipe.ts","./libs/isy-utils/src/lib/get-font-icon.pipe.ts","./libs/isy-utils/src/lib/isy-iframe/isy-iframe.component.html","./libs/isy-utils/src/lib/isy-iframe/isy-iframe.component.ts","./libs/isy-utils/src/lib/isy-utils.module.ts","./libs/isy-utils/src/lib/neighborlist-csv.ts","./libs/isy-utils/src/lib/sort-by.pipe.ts","./libs/isy-utils/src/lib/title-label.pipe.ts","./libs/isy-utils/src/lib/utils.ts","./libs/isy-zoom-in-out/src/lib/isy-zoom-in-out.component.ts","./libs/isy-zoom-in-out/src/lib/isy-zoom-in-out.component.html","./libs/isy-zoom-in-out/src/lib/isy-zoom-in-out.module.ts","./libs/isymap-config/src/index.ts","./libs/isymap-config/src/lib/cache.service.ts","./libs/isymap-config/src/lib/config.service.provider.ts","./libs/isymap-config/src/lib/config.service.ts","./libs/isymap-config/src/lib/project-config.model.ts","./libs/maplibng/src/ISY/Domain/FeatureInfo.ts","./libs/maplibng/src/ISY/Domain/FeatureResponse.ts","./libs/maplibng/src/ISY/Domain/Layer.ts","./libs/maplibng/src/ISY/Domain/LayerResponse.ts","./libs/maplibng/src/ISY/Domain/LegendGraphic.ts","./libs/maplibng/src/ISY/Domain/MapPosition.ts","./libs/maplibng/src/ISY/Domain/SubLayer.ts","./libs/maplibng/src/ISY/Events/EventHandler.ts","./libs/maplibng/src/ISY/MapAPI/Categories.ts","./libs/maplibng/src/ISY/MapAPI/CustomCrsLoader.ts","./libs/maplibng/src/ISY/MapAPI/FeatureInfo.ts","./libs/maplibng/src/ISY/MapAPI/Groups.ts","./libs/maplibng/src/ISY/MapAPI/Layers.ts","./libs/maplibng/src/ISY/MapAPI/Map.ts","./libs/maplibng/src/ISY/MapAPI/Parsers/Base.ts","./libs/maplibng/src/ISY/MapAPI/Parsers/Exception.ts","./libs/maplibng/src/ISY/MapAPI/Parsers/Factory.ts","./libs/maplibng/src/ISY/MapAPI/Parsers/GML.ts","./libs/maplibng/src/ISY/MapAPI/Parsers/GeoJSON.ts","./libs/maplibng/src/ISY/MapAPI/Tools/Tool.ts","./libs/maplibng/src/ISY/MapAPI/Tools/ToolFactory.ts","./libs/maplibng/src/ISY/MapAPI/Tools/Tools.ts","./libs/maplibng/src/ISY/MapImplementation/AddLayerFeature.ts","./libs/maplibng/src/ISY/MapImplementation/DrawBox.ts","./libs/maplibng/src/ISY/MapImplementation/DrawFeature.ts","./libs/maplibng/src/ISY/MapImplementation/DrawingManager.ts","./libs/maplibng/src/ISY/MapImplementation/Export.ts","./libs/maplibng/src/ISY/MapImplementation/FeatureEditor.ts","./libs/maplibng/src/ISY/MapImplementation/FeatureHighlighter.ts","./libs/maplibng/src/ISY/MapImplementation/FeatureInfo.ts","./libs/maplibng/src/ISY/MapImplementation/FeatureSelector.ts","./libs/maplibng/src/ISY/MapImplementation/FilterSource.ts","./libs/maplibng/src/ISY/MapImplementation/GetClickCoordinates.ts","./libs/maplibng/src/ISY/MapImplementation/HoverInfo.ts","./libs/maplibng/src/ISY/MapImplementation/LayerState.ts","./libs/maplibng/src/ISY/MapImplementation/LinePositionMarker.ts","./libs/maplibng/src/ISY/MapImplementation/Map.ts","./libs/maplibng/src/ISY/MapImplementation/Marker.ts","./libs/maplibng/src/ISY/MapImplementation/Measure.ts","./libs/maplibng/src/ISY/MapImplementation/MeasureLine.ts","./libs/maplibng/src/ISY/MapImplementation/ModifyFeature.ts","./libs/maplibng/src/ISY/MapImplementation/PopoverInfo.ts","./libs/maplibng/src/ISY/MapImplementation/PrintBoxSelect.ts","./libs/maplibng/src/ISY/MapImplementation/Sources/SourcesFactory.ts","./libs/maplibng/src/ISY/MapImplementation/Sources/Vector.ts","./libs/maplibng/src/ISY/MapImplementation/Sources/Wfs.ts","./libs/maplibng/src/ISY/MapImplementation/Sources/WfsT.ts","./libs/maplibng/src/ISY/MapImplementation/Sources/Wms.ts","./libs/maplibng/src/ISY/MapImplementation/Sources/Wmts.ts","./libs/maplibng/src/ISY/MapImplementation/Styles/Default.ts","./libs/maplibng/src/ISY/MapImplementation/Styles/Json.ts","./libs/maplibng/src/ISY/MapImplementation/Styles/Measure.ts","./libs/maplibng/src/ISY/MapImplementation/Styles/Sld.ts","./libs/maplibng/src/ISY/MapImplementation/Transform.ts","./libs/maplibng/src/ISY/MapImplementation/Utilities.ts","./libs/maplibng/src/ISY/Repository/ConfigRepository.ts","./libs/maplibng/src/ISY/Repository/MapConfig.ts","./libs/maplibng/src/ISY/Utils/AddBoxes.ts","./libs/maplibng/src/ISY/Utils/AddLegends.ts","./libs/maplibng/src/ISY/Utils/DrawGraticule.ts","./libs/maplibng/src/ISY/Utils/Guid.ts","./libs/maplibng/src/ISY/Utils/SetSize.ts","./libs/permission/src/lib/permission.service.ts","./libs/roadprofile/src/ISY/Events/EventHandler.ts","./libs/roadprofile/src/ISY/RoadCrossSectionAPI/RoadCrossSection.ts","./libs/roadprofile/src/ISY/RoadCrossSectionImplementation/Draw.ts","./libs/roadprofile/src/ISY/RoadCrossSectionImplementation/RoadCrossSection.ts","./libs/roadprofile/src/ISY/RoadCrossSectionImplementation/SvgElement.ts","./libs/roadprofile/src/ISY/RoadProfileAPI/RoadProfile.ts","./libs/roadprofile/src/ISY/RoadProfileImplementation/Draw.ts","./libs/roadprofile/src/ISY/RoadProfileImplementation/RoadProfile.ts","./libs/roadprofile/src/ISY/RoadProfileImplementation/SvgElement.ts","./libs/roadprofile/src/index.ts"],"sourcesContent":["import { InMemoryDbService } from 'angular-in-memory-web-api';\r\nimport {\r\n Person,\r\n MatrikkelenhetMe,\r\n MatrikkelenhetNaboliste,\r\n IPersonMe,\r\n IMatrikkelenhet,\r\n} from '@isygis/isy-login';\r\n\r\nexport interface InMemoryDatabase {\r\n personMe: IPersonMe,\r\n matrikkelenhetMe: IMatrikkelenhet[],\r\n matrikkelenhetNaboliste: IMatrikkelenhet[]\r\n}\r\n\r\nexport class AppData implements InMemoryDbService {\r\n createDb(): InMemoryDatabase {\r\n const personMe = Person.personMe;\r\n const matrikkelenhetMe = MatrikkelenhetMe.matrikkelenhetMe;\r\n const matrikkelenhetNaboliste =\r\n MatrikkelenhetNaboliste.matrikkelenhetNaboliste;\r\n return { personMe, matrikkelenhetMe, matrikkelenhetNaboliste };\r\n }\r\n}\r\n","import { RouterModule, Routes, ActivatedRouteSnapshot } from '@angular/router';\r\nimport { NgModule } from '@angular/core';\r\nimport { MainComponent } from './main/main.component';\r\nimport { Observable } from 'rxjs';\r\nimport { objectKeysToLowerCase } from '@isygis/isy-utils';\r\nimport { UrlParams } from '@isygis/isy-configs';\r\nimport { IsyProjectNotFoundComponent } from '@isygis/isy-project-not-found';\r\nimport { AuthGuard } from './guard/auth.guard';\r\n\r\nexport function routingResolveFunction(\r\n routeSnapshot: ActivatedRouteSnapshot\r\n): Observable | Promise | UrlParams {\r\n const {\r\n lat,\r\n lon,\r\n zoom,\r\n application,\r\n project,\r\n layers,\r\n baselayers,\r\n jtobjektid,\r\n jtfunksjon,\r\n theme,\r\n funksjon,\r\n plan,\r\n kommunenummer,\r\n gaardsnummer,\r\n bruksnummer,\r\n festenummer,\r\n seksjonsnummer,\r\n undernummer,\r\n bygningsnummer,\r\n endringsloepenummer,\r\n adressenavn,\r\n husnummer,\r\n bokstav,\r\n onlymap,\r\n tool,\r\n search,\r\n opennav,\r\n marker,\r\n planidentifikasjon,\r\n } = objectKeysToLowerCase(routeSnapshot.queryParams);\r\n return {\r\n lat,\r\n lon,\r\n zoom,\r\n application,\r\n project,\r\n layers,\r\n baselayers,\r\n jtobjektid,\r\n jtfunksjon,\r\n theme,\r\n funksjon,\r\n plan,\r\n kommunenummer,\r\n gaardsnummer,\r\n bruksnummer,\r\n festenummer,\r\n seksjonsnummer,\r\n undernummer,\r\n bygningsnummer,\r\n endringsloepenummer,\r\n adressenavn,\r\n husnummer,\r\n bokstav,\r\n onlymap,\r\n tool,\r\n search,\r\n opennav,\r\n marker,\r\n planidentifikasjon,\r\n };\r\n}\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: MainComponent,\r\n resolve: {\r\n routingData: routingResolveFunction,\r\n },\r\n canActivate: [AuthGuard],\r\n },\r\n {\r\n path: 'project-not-found',\r\n component: IsyProjectNotFoundComponent,\r\n },\r\n { path: '**', redirectTo: '/', pathMatch: 'full' },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class AppRoutingModule {}\r\n","import { Component, OnInit, ViewContainerRef } from '@angular/core';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyDraggableOverlayService } from '@isygis/isy-draggable-overlay';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { environment } from '../environments/environment';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n providers: [],\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss'],\r\n})\r\nexport class AppComponent implements OnInit {\r\n constructor(\r\n private translateService: IsyTranslateService,\r\n private toasterService: IsyToasterService,\r\n public vcRef: ViewContainerRef,\r\n private bladeService: IsyBladeService,\r\n private draggableOverlayService: IsyDraggableOverlayService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private commonService: IsyCommonService\r\n ) {\r\n this.toasterService.setRootViewContainerRef(vcRef);\r\n this.bladeService.setRootViewContainerRef(vcRef);\r\n this.draggableOverlayService.setRootViewContainerRef(vcRef);\r\n this.mapActionDialogService.setRootViewContainerRef(vcRef);\r\n this.dynamicModalService.setRootViewContainerRef(vcRef);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.translateService.use('no');\r\n this.commonService.setActiveEnvironment(environment);\r\n }\r\n}\r\n","
\r\n \r\n
\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule, LOCALE_ID } from '@angular/core';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule, registerLocaleData } from '@angular/common';\r\n// import { FlexLayoutModule } from '@angular/flex-layout';\r\nimport { AppRoutingModule } from './app-routing.module';\r\n\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\nimport { IsyMapModule } from '@isygis/isy-map';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyToasterModule } from '@isygis/isy-toaster';\r\nimport { IsySideNavModule } from '@isygis/isy-side-nav';\r\nimport { IsyToolsModule } from '@isygis/isy-tools';\r\nimport { IsyLayersModule } from '@isygis/isy-layers';\r\nimport { IsyDraggableOverlayModule } from '@isygis/isy-draggable-overlay';\r\nimport { IsyBaseLayersModule } from '@isygis/isy-base-layers';\r\nimport { IsyLoginModule } from '@isygis/isy-login';\r\nimport { IsyDynamicModalModule } from '@isygis/isy-dynamic-modal';\r\nimport { IsyDynamicNavLoaderModule } from '@isygis/isy-dynamic-nav-loader';\r\nimport {\r\n IsyProjectsListModule\r\n} from '@isygis/isy-projects-list';\r\nimport {\r\n IsyTranslateModule,\r\n TRANSLATION_PROVIDERS,\r\n IsyTranslateService,\r\n} from '@isygis/isy-translate';\r\nimport { IsyEditWfstModule } from '@isygis/isy-edit-wfst';\r\n\r\nimport { AppComponent } from './app.component';\r\nimport { ConfigService, configServiceFactory } from '@isygis/isymap-config';\r\nimport { IsyAdminModule } from '@isygis/isy-admin';\r\nimport { IsyInfoPanelModule } from '@isygis/isy-info-panel';\r\nimport { IsySearchModule } from '@isygis/isy-search';\r\nimport { MainComponent } from './main/main.component';\r\nimport { IsyUserInfoMsalModule } from '@isygis/isy-user-info-msal';\r\nimport { IsyUrlParamsModule } from '@isygis/isy-url-params';\r\nimport { IsyBladeModule } from '@isygis/isy-blade';\r\nimport { IsyRoadProfileModule } from '@isygis/isy-road-profile';\r\nimport { IsyJobtechModule } from '@isygis/isy-jobtech';\r\nimport { IsyGisStylesModule } from '@isygis/isy-gis-styles';\r\nimport { IsyMapActionDialogModule } from '@isygis/isy-map-action-dialog';\r\nimport { IsyEmptyContentModule } from '@isygis/isy-empty-content';\r\nimport { IsyGeolocationModule } from '@isygis/isy-geolocation';\r\nimport { NgxWebstorageModule, SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyProjectNotFoundModule } from '@isygis/isy-project-not-found';\r\nimport { IsyFeatureInfoModule } from '@isygis/isy-feature-info';\r\nimport { IsyGiVisModule } from '@isygis/isy-gi-vis';\r\nimport { IsyGiBridgeEventsModule } from '@isygis/isy-gi-bridge-events';\r\nimport { IsyZoomInOutModule } from '@isygis/isy-zoom-in-out';\r\nimport { IsyHelpModule } from '@isygis/isy-help';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { IsyKeycloakModule } from '@isygis/isy-keycloak';\r\nimport localeNo from '@angular/common/locales/no';\r\n\r\nimport { AuthModule, StsConfigLoader, StsConfigStaticLoader } from 'angular-auth-oidc-client';\r\nimport { InMemoryWebApiModule } from 'angular-in-memory-web-api';\r\nimport { AppData } from './app-data';\r\nimport { initializeKeycloak } from './init/keycloak-init.factory';\r\nimport { KeycloakAngularModule, KeycloakService } from 'keycloak-angular';\r\n\r\nimport {\r\n MsalGuard,\r\n MsalInterceptor,\r\n MsalBroadcastService, MsalModule,\r\n MsalService\r\n} from '@azure/msal-angular';\r\nimport { APP_INITIALIZER } from '@angular/core';\r\nimport { ConfigurationService } from './configuration.service';\r\n\r\nregisterLocaleData(localeNo);\r\n@NgModule({\r\n imports: [\r\n KeycloakAngularModule,\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n FormsModule,\r\n CommonModule,\r\n // FlexLayoutModule,\r\n AppRoutingModule,\r\n TooltipModule.forRoot(),\r\n FontAwesomeModule,\r\n HttpClientModule,\r\n InMemoryWebApiModule.forRoot(AppData, {\r\n delay: 1000,\r\n passThruUnknownUrl: true,\r\n }),\r\n IsyMapModule,\r\n IsyBaseLayersModule,\r\n IsySideNavModule,\r\n IsyToolsModule,\r\n IsyTranslateModule,\r\n IsyLayersModule,\r\n IsyLoginModule,\r\n IsyKeycloakModule,\r\n IsyUserInfoMsalModule,\r\n IsyDraggableOverlayModule,\r\n // InfoPanelModule,\r\n IsyProjectsListModule,\r\n IsyDynamicModalModule,\r\n IsyDynamicNavLoaderModule,\r\n IsyAdminModule,\r\n IsyEditWfstModule,\r\n IsyInfoPanelModule,\r\n IsySearchModule,\r\n IsyToasterModule.forRoot(),\r\n IsyBladeModule,\r\n IsyRoadProfileModule,\r\n IsyJobtechModule,\r\n IsyGisStylesModule,\r\n IsyMapActionDialogModule,\r\n IsyUrlParamsModule,\r\n IsyEmptyContentModule,\r\n IsyGeolocationModule,\r\n NgxWebstorageModule.forRoot(),\r\n IsyProjectNotFoundModule,\r\n IsyFeatureInfoModule,\r\n IsyGiVisModule,\r\n MsalModule,\r\n IsyGiBridgeEventsModule,\r\n IsyZoomInOutModule,\r\n IsyHelpModule,\r\n IsySpinnerModule,\r\n AuthModule.forRoot({\r\n loader: {\r\n provide: StsConfigLoader,\r\n useFactory: createAuthConfig,\r\n deps: [ConfigurationService]\r\n }\r\n })\r\n ],\r\n declarations: [AppComponent, MainComponent],\r\n providers: [\r\n { provide: LOCALE_ID, useValue: 'no'},\r\n TRANSLATION_PROVIDERS,\r\n IsyTranslateService,\r\n ConfigurationService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: MsalInterceptor,\r\n multi: true,\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeIdPorten,\r\n deps: [ConfigurationService],\r\n multi: true\r\n },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: initializeKeycloak,\r\n multi: true,\r\n deps: [KeycloakService, SessionStorageService],\r\n },\r\n {\r\n provide: ConfigService,\r\n useFactory: configServiceFactory,\r\n },\r\n MsalService,\r\n MsalGuard,\r\n MsalBroadcastService,\r\n ],\r\n bootstrap: [AppComponent],\r\n})\r\nexport class AppModule {}\r\n\r\nexport function initializeIdPorten(configService: ConfigurationService) {\r\n return () => configService.loadConfig();\r\n}\r\n\r\nexport function createAuthConfig(configService: ConfigurationService) {\r\n return new StsConfigStaticLoader(configService.authConfigValues);\r\n}","// import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ConfigService } from '@isygis/isymap-config';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n\r\n private config: any;\r\n\r\n constructor(\r\n // private http: HttpClient,\r\n private configService: ConfigService\r\n ) {}\r\n\r\n // ***Get config with http.get\r\n // loadConfig(): Observable {\r\n // return this.http.get('/config.json').pipe(\r\n // map(config => {\r\n // this.config = config;\r\n // // console.log('Config loaded: ', this.config);\r\n // })\r\n // );\r\n // }\r\n\r\n // ***Get config with fetch\r\n // loadConfig(): Observable {\r\n // return new Observable((observer) => {\r\n // fetch('/config.json')\r\n // .then((response) => {\r\n // if (!response.ok) {\r\n // throw new Error(response.statusText);\r\n // }\r\n // return response.json();\r\n // })\r\n // .then((config) => {\r\n // this.config = config;\r\n\t// \tconsole.log('Configuration loaded', this.config);\r\n // observer.next();\r\n // observer.complete();\r\n // })\r\n // .catch((error) => {\r\n // observer.error(error);\r\n // });\r\n // });\r\n // }\r\n\r\n // ***Get config from configService\r\n loadConfig(): Observable {\r\n return new Observable((observer) => {\r\n this.configService.isymapConfig()\r\n .then((config) => {\r\n this.config = config;\r\n // console.log('Configuration loaded', this.config);\r\n observer.next();\r\n observer.complete();\r\n })\r\n .catch((error) => {\r\n observer.error(error);\r\n });\r\n });\r\n }\r\n\r\n get authConfigValues() {\r\n return {\r\n authority: this.config.idPorten?.authority,\r\n redirectUrl:\r\n window.location.origin + window.location.pathname.replace(/\\/+$/, ''), // could be geoinnsyn.no or test.geoinnsyn.no/dev\r\n postLogoutRedirectUri:\r\n window.location.origin + window.location.pathname.replace(/\\/+$/, ''),\r\n clientId: this.config.idPorten?.clientId, \r\n scope: 'openid', \r\n responseType: 'code', \r\n silentRenew: true, \r\n useRefreshToken: true, \r\n renewTimeBeforeTokenExpiresInSeconds: 30\r\n };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActivatedRouteSnapshot,\r\n Router,\r\n RouterStateSnapshot,\r\n UrlTree,\r\n} from '@angular/router';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { KeycloakAuthGuard, KeycloakService } from 'keycloak-angular';\r\nimport { ELogin, ELoginType, EMainMenuNavBar, ESessionStorageId } from '@isygis/isy-configs';\r\nimport { ConfigService } from '@isygis/isymap-config';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthGuard extends KeycloakAuthGuard {\r\n constructor(\r\n protected readonly router: Router,\r\n protected readonly keycloak: KeycloakService,\r\n private commonService: IsyCommonService,\r\n private sessionStorageService: SessionStorageService,\r\n private configService: ConfigService,\r\n ) {\r\n super(router, keycloak);\r\n }\r\n async isAccessAllowed(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot\r\n ): Promise {\r\n let environment = '';\r\n\r\n // get config json\r\n // await fetch('./config.json')\r\n // .then((response) => response.json())\r\n this.configService.isymapConfig()\r\n .then((config) => {\r\n if (\r\n // TODO: Hva er dette?? - endret || til && for å få det til å kompilere\r\n // men dette tror jeg bør skrives om.\r\n config?.environment &&\r\n (config?.environment !== 'prod' &&\r\n config?.environment !== 'local' &&\r\n config?.environment !== '')\r\n ) {\r\n environment = '/' + config?.environment;\r\n }\r\n });\r\n\r\n if (\r\n // this.sessionStorageService.retrieve('loginTypeInProgess') !== 'keycloak'\r\n localStorage.getItem('loginTypeInProgess') !== 'keycloak'\r\n ) {\r\n return true;\r\n } else {\r\n if (!this.authenticated) {\r\n await this.keycloak.login({\r\n redirectUri: window.location.origin + environment + state.url,\r\n });\r\n return this.authenticated;\r\n }\r\n }\r\n\r\n if (this.authenticated) {\r\n // token\r\n this.sessionStorageService.clear(ELogin.TOKEN);\r\n this.sessionStorageService.clear(ELogin.RESOURCES);\r\n this.keycloak\r\n .getToken()\r\n .then((token) => this.commonService.setKcToken(token));\r\n // this.commonService.setKcLoginActive(true);\r\n this.sessionStorageService.store(ELogin.USERISLOGGEDIN, true);\r\n this.commonService.setActiveNavBarId(EMainMenuNavBar.LOGIN);\r\n // profile\r\n this.keycloak.loadUserProfile().then((profile) => {\r\n this.sessionStorageService.store(ELogin.EMAIL, profile.email);\r\n this.sessionStorageService.store(ELogin.USERNAME, profile.username);\r\n this.sessionStorageService.store(\r\n ESessionStorageId.LOGINTYPEINPROGRESS,\r\n ELoginType.KEYCLOAK\r\n );\r\n localStorage.setItem(ESessionStorageId.LOGINTYPEINPROGRESS, ELoginType.KEYCLOAK);\r\n this.commonService.setKcLoginActive(true);\r\n });\r\n }\r\n }\r\n}\r\n","import { KeycloakService } from 'keycloak-angular';\r\n\r\nexport function initializeKeycloak(\r\n keycloak: KeycloakService,\r\n): () => Promise {\r\n return (): Promise => {\r\n return new Promise((resolve, reject) => {\r\n // const realm = sessionStorageService.retrieve('realm');\r\n // const clientId = sessionStorageService.retrieve('clientid');\r\n // const realmAddress = sessionStorageService.retrieve('realmaddress');\r\n const realm = localStorage.getItem('realm');\r\n const clientId = localStorage.getItem('clientid');\r\n const realmAddress = localStorage.getItem('realmaddress');\r\n // if (sessionStorageService.retrieve('loginTypeInProgess') !== 'keycloak') {\r\n if (localStorage.getItem('loginTypeInProgess') !== 'keycloak') {\r\n resolve({});\r\n keycloak.init({\r\n config: {\r\n url: '',\r\n realm: '',\r\n clientId: '',\r\n },\r\n initOptions: {\r\n pkceMethod: 'S256',\r\n checkLoginIframe: false,\r\n },\r\n shouldAddToken: () => {\r\n return false;\r\n },\r\n })\r\n .catch((error) => reject(error));\r\n } else {\r\n keycloak.init({\r\n config: {\r\n url: realmAddress,\r\n realm: realm,\r\n clientId: clientId,\r\n },\r\n initOptions: {\r\n pkceMethod: 'S256',\r\n checkLoginIframe: false,\r\n },\r\n\r\n shouldAddToken: (request) => {\r\n const { url } = request;\r\n const acceptablePaths = [\r\n 'https://test.geoinnsyn.no/services/isy.gis.isyproxy',\r\n 'https://gd-datalake-postgrest.azurewebsites.net/rpc/pointinfo',\r\n 'https://ws.geonorge.no/kommuneinfo/v1/punkt',\r\n ];\r\n const isAcceptablePathMatch = acceptablePaths.some((path) =>\r\n url.includes(path)\r\n );\r\n return !isAcceptablePathMatch;\r\n },\r\n })\r\n .catch((error) => reject(error))\r\n .then(() => resolve({}));\r\n }\r\n });\r\n };\r\n}\r\n","import { Component, OnInit, AfterContentInit } from '@angular/core';\r\nimport {\r\n IsyToolsService,\r\n IsyToolsListComponent,\r\n} from '@isygis/isy-tools';\r\nimport { map } from 'rxjs/operators';\r\nimport { combineLatest } from 'rxjs';\r\nimport { IsyAdminBtnComponent } from '@isygis/isy-admin';\r\nimport {\r\n IsyDynamicNavLoaderService,\r\n INavBarElement,\r\n} from '@isygis/isy-dynamic-nav-loader';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyLayersComponent } from '@isygis/isy-layers';\r\nimport { IsyLoginComponent } from '@isygis/isy-login';\r\nimport { IsyProjectsListComponent } from '@isygis/isy-projects-list';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyGisStylesService, IGisTheme } from '@isygis/isy-gis-styles';\r\nimport { EMainMenuNavBar } from '@isygis/isy-configs';\r\nimport { Platform } from '@angular/cdk/platform';\r\n\r\n@Component({\r\n selector: 'app-main',\r\n templateUrl: './main.component.html',\r\n styleUrls: ['./main.component.scss'],\r\n})\r\nexport class MainComponent implements OnInit, AfterContentInit {\r\n mapBounds;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n EMainMenuNavBar = EMainMenuNavBar;\r\n\r\n constructor(\r\n private toolsService: IsyToolsService,\r\n private dynamicNavLoaderService: IsyDynamicNavLoaderService,\r\n private commonService: IsyCommonService,\r\n private gisStylesService: IsyGisStylesService,\r\n private platform: Platform\r\n ) {}\r\n\r\n activeTool$ = this.commonService.toolsIsActive$;\r\n currentTheme$ = this.gisStylesService.currentTheme$;\r\n showMainSpinner$ = this.commonService.showMainSpinner$;\r\n\r\n vm$ = combineLatest([\r\n this.activeTool$,\r\n this.currentTheme$,\r\n this.showMainSpinner$,\r\n ]).pipe(\r\n map(\r\n ([activeTool, currentTheme, showMainSpinner]: [\r\n boolean,\r\n IGisTheme,\r\n boolean\r\n ]) => ({\r\n isActiveTool: activeTool ? true : false,\r\n currentTheme,\r\n showMainSpinner,\r\n })\r\n )\r\n // tap(data => console.log('APP: ', data))\r\n );\r\n\r\n ngOnInit(): void {\r\n if (this.platform.TRIDENT) {\r\n console.log('It is a IE browser!');\r\n alert('IE is not supported');\r\n }\r\n\r\n const layers: INavBarElement = {\r\n component: IsyLayersComponent,\r\n icon: fontAwesomeIcons.faLayerGroup,\r\n id: EMainMenuNavBar.LAYERS,\r\n isActive: true,\r\n tooltip: 'layers',\r\n };\r\n\r\n const tools: INavBarElement = {\r\n component: IsyToolsListComponent,\r\n icon: fontAwesomeIcons.faToolbox,\r\n id: EMainMenuNavBar.TOOLS,\r\n isActive: false,\r\n childComponent: IsyAdminBtnComponent,\r\n tooltip: 'tools',\r\n };\r\n\r\n const login: INavBarElement = {\r\n component: IsyLoginComponent,\r\n icon: fontAwesomeIcons.faUser,\r\n id: EMainMenuNavBar.LOGIN,\r\n isActive: false,\r\n tooltip: 'log_in',\r\n };\r\n\r\n const projects: INavBarElement = {\r\n component: IsyProjectsListComponent,\r\n icon: fontAwesomeIcons.faMapSigns,\r\n id: EMainMenuNavBar.PROJECTS,\r\n isActive: false,\r\n tooltip: 'projects',\r\n };\r\n\r\n this.dynamicNavLoaderService.addToNavBar(EMainMenuNavBar.ID, layers);\r\n this.dynamicNavLoaderService.addToNavBar(EMainMenuNavBar.ID, tools);\r\n this.dynamicNavLoaderService.addToNavBar(EMainMenuNavBar.ID, login);\r\n this.dynamicNavLoaderService.addToNavBar(EMainMenuNavBar.ID, projects);\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.mapBounds = document.getElementById('map');\r\n }\r\n\r\n clickToMapOverlayLayer(): void {\r\n this.commonService.hideSideNav(true);\r\n }\r\n}\r\n","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n msalRedirectUri: 'http://localhost:4200',\r\n clientId: '3ae41205-02ab-4841-83ad-ff452b0b243f',\r\n authority:\r\n 'https://login.microsoftonline.com/ce25ca93-004f-44f4-a6b5-eb22b45815aa',\r\n protectedResources:\r\n 'https://gisdemo-backend.azurewebsites.net/WebInnsyn/UserAdmin',\r\n postLogoutRedirectUri: 'http://localhost:4200',\r\n useInMemoryDatabase: true,\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\nimport {\r\n MSAL_INSTANCE,\r\n MSAL_GUARD_CONFIG,\r\n MSAL_INTERCEPTOR_CONFIG,\r\n MsalGuardConfiguration,\r\n MsalInterceptorConfiguration,\r\n} from '@azure/msal-angular';\r\nimport {\r\n BrowserCacheLocation,\r\n PublicClientApplication,\r\n LogLevel,\r\n InteractionType,\r\n} from '@azure/msal-browser';\r\nimport { ConfigService } from '@isygis/isymap-config';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nexport function loggerCallback(logLevel: LogLevel, message: string): void {\r\n console.log(message);\r\n}\r\n\r\n\r\n(new ConfigService()).isymapConfig()\r\n .then((config) => {\r\n if (config.azureAd !== undefined) {\r\n platformBrowserDynamic([\r\n // Insert the msal providers here, with values from config.json\r\n {\r\n provide: MSAL_INSTANCE,\r\n useValue: new PublicClientApplication({\r\n auth: {\r\n clientId: config.azureAd.msalClientId,\r\n authority: config.azureAd.msalAuthority,\r\n // redirectUri: config.azureAd.msalRedirecUri, // No longer necessary, because we use auth-state to redirect in isy-login.directive\r\n // postLogoutRedirectUri: config.azureAd.postLogoutRedirectUri // This is in ibgd, but not in isycomponents.. necessary?\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage,\r\n // Below is true for Internet Explorer 11\r\n // storeAuthStateInCookie: window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1 // This is in ibgd, but not in isycomponents.. necessary?\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback,\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false,\r\n },\r\n },\r\n }),\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useValue: {\r\n interactionType: InteractionType.Redirect,\r\n /* // This is in ibgd, but not in isycomponents.. necessary?\r\n authRequest: {\r\n scopes: []\r\n },\r\n loginFailedRoute: '' */\r\n } as MsalGuardConfiguration,\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useValue: {\r\n interactionType: InteractionType.Redirect,\r\n protectedResourceMap: new Map([\r\n [config.azureAd.genusUri, [config.azureAd.msalApi]],\r\n ]),\r\n // protectedResourceMap: new Map>([`${config.azureAd.genusUri}`, [config.azureAd.msalApi]])\r\n } as MsalInterceptorConfiguration,\r\n },\r\n ])\r\n .bootstrapModule(AppModule)\r\n .catch((err) => console.error(err));\r\n } else {\r\n // The MSAL values needs to be set to avoid crash. Set the values to something default instead?\r\n // Same as in innbyggerdialog..\r\n platformBrowserDynamic([\r\n {\r\n provide: MSAL_INSTANCE,\r\n useValue: new PublicClientApplication({\r\n auth: {\r\n clientId: '',\r\n authority: '',\r\n redirectUri: '',\r\n postLogoutRedirectUri: '',\r\n },\r\n cache: {\r\n cacheLocation: BrowserCacheLocation.LocalStorage,\r\n // storeAuthStateInCookie: window.navigator.userAgent.indexOf('MSIE ') > -1 || window.navigator.userAgent.indexOf('Trident/') > -1\r\n },\r\n system: {\r\n loggerOptions: {\r\n loggerCallback,\r\n logLevel: LogLevel.Info,\r\n piiLoggingEnabled: false,\r\n },\r\n },\r\n }),\r\n },\r\n {\r\n provide: MSAL_GUARD_CONFIG,\r\n useValue: {\r\n interactionType: InteractionType.Redirect,\r\n authRequest: {\r\n scopes: [],\r\n },\r\n loginFailedRoute: '',\r\n } as MsalGuardConfiguration,\r\n },\r\n {\r\n provide: MSAL_INTERCEPTOR_CONFIG,\r\n useValue: {\r\n interactionType: InteractionType.Redirect,\r\n protectedResourceMap: new Map([]),\r\n } as MsalInterceptorConfiguration,\r\n },\r\n ])\r\n .bootstrapModule(AppModule)\r\n .catch((err) => console.error(err));\r\n }\r\n });\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { IsyAdminService } from './isy-admin.service';\r\n\r\n@Pipe({\r\n name: 'adminShowSpinner',\r\n})\r\nexport class AdminShowSpinnerPipe implements PipeTransform {\r\n constructor(private adminService: IsyAdminService) {}\r\n\r\n transform(value: unknown, ...args: unknown[]): unknown {\r\n setTimeout(() => {\r\n this.adminService.showSpinner(false);\r\n }, 100);\r\n return value;\r\n }\r\n}\r\n","import { IFeatureInfoElement, IVector, IWms } from '@isygis/isymap-config';\r\n\r\nexport class FeatureType {\r\n name: string;\r\n title: string;\r\n epsg: string;\r\n // isOpen?: boolean;\r\n}\r\n\r\nexport class Services {\r\n name: string;\r\n featureTypes: FeatureType[];\r\n}\r\n\r\n// TODO: IgroupList will be remove -> IgroupList will be replace with IGroups from define-groups.service\r\nexport interface IGroupList {\r\n groupName: string;\r\n layersInside?: number;\r\n}\r\n\r\nexport class BaseLayer {\r\n guid: string;\r\n name: string;\r\n provider: string;\r\n gatekeeper: boolean;\r\n url: string;\r\n format: string;\r\n layer: string;\r\n abstract: string;\r\n type?: string;\r\n isSelected?: boolean;\r\n isMainLayer?: boolean;\r\n imageUrl?: string;\r\n}\r\n\r\nexport class LayerNode {\r\n guid: string;\r\n name: string;\r\n title: string;\r\n layer: LayerNodeSublayer[];\r\n featureElements: IFeatureInfoElement[];\r\n isSelected?: boolean;\r\n groupName?: string;\r\n styleFileName?: string;\r\n catalogLayerId?: string;\r\n geometryType?: string;\r\n hasWarning?: boolean;\r\n transactions: boolean;\r\n typeName: string;\r\n isParentCopy: boolean;\r\n prefix: string;\r\n isOpened?: boolean;\r\n countSelectedNodelayers?: number;\r\n links?: string[];\r\n constructor(\r\n guid: string,\r\n name: string,\r\n title: string,\r\n layer: any,\r\n featureElements: IFeatureInfoElement[],\r\n transactions: boolean,\r\n typeName: string,\r\n isParentCopy: boolean,\r\n prefix: string\r\n ) {\r\n this.guid = guid;\r\n this.name = name;\r\n this.title = title;\r\n this.layer = layer;\r\n this.typeName = typeName;\r\n this.featureElements = featureElements;\r\n this.transactions = transactions;\r\n this.isParentCopy = isParentCopy;\r\n this.prefix = prefix;\r\n }\r\n}\r\nexport class LayerNodeSublayer {\r\n Name: string;\r\n Title: string;\r\n queryable?: boolean;\r\n isSelected?: boolean;\r\n\r\n constructor(name: string, title: string, isSelected: boolean) {\r\n this.Name = name;\r\n this.Title = title;\r\n this.isSelected = isSelected;\r\n }\r\n}\r\nexport class LayerCapabilities {\r\n nodes: LayerNode[];\r\n version: string;\r\n url: string;\r\n transactions: boolean;\r\n featureInfoFormats: string[];\r\n}\r\n\r\nfunction _isIWms(object: any): object is IWms {\r\n return 'url' in object;\r\n}\r\nexport interface ICatalogLibrary {\r\n Layers: CatalogLayer[];\r\n BaseLayers: IWms[];\r\n}\r\n\r\nexport class CatalogLayer {\r\n guid: string;\r\n url: string;\r\n provider: string;\r\n title: string;\r\n category: string;\r\n service: string;\r\n version: string;\r\n typename: string;\r\n subname: string;\r\n // featureinfoelement: FeatureInfoElement[];\r\n isOpen?: boolean;\r\n isSelected?: boolean;\r\n // isCustom?: boolean;\r\n // isSelected?: string;\r\n isOnlyInProject?: boolean;\r\n capabilities?: LayerCapabilities;\r\n tempVectorLayers?: IVector[]; // remove when clean up\r\n\r\n constructor(layer: IWms | IVector) {\r\n if (_isIWms(layer)) {\r\n this.url = layer?.url;\r\n this.service = 'WMS'; // layer.sourceType;\r\n // this.typename = layer?.params?.layers;\r\n } else {\r\n this.url = layer?.options?.protocol?.url;\r\n this.subname = layer.subname;\r\n this.version = layer?.options?.protocol?.version || '1.1.0'; // ok as default?;\r\n this.service = layer?.options?.protocol?.type || 'WFS';\r\n this.typename = layer?.options?.protocol?.params?.typename;\r\n }\r\n this.provider = layer?.provider;\r\n this.title = layer?.name;\r\n this.category = '';\r\n\r\n // this.isCustom = isCustom;\r\n }\r\n}\r\n\r\nexport class TableDef {\r\n name: string;\r\n fidMapping: string;\r\n}\r\n\r\nexport class SchemaTable {\r\n name: string;\r\n nFeatures: number;\r\n}\r\n\r\nexport class Schema {\r\n schemaGuid: string;\r\n displayName: string;\r\n timeCreated: string;\r\n tables: SchemaTable[];\r\n description: string;\r\n enabled: boolean;\r\n}\r\n\r\n// export interface IUrlParameters {\r\n// key: string;\r\n// value: string;\r\n// }\r\n\r\n// export class UrlParameters implements IUrlParameters {\r\n// key: string;\r\n// value: string;\r\n// constructor(key: string, value: string) {\r\n// this.key = key;\r\n// this.value = value;\r\n// }\r\n// }\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\nexport enum ECatalogOverlay {\r\n ADDNEWSERVICE = 1,\r\n UPLOADSERVICE, // Removed\r\n EDITCATALOG,\r\n CATALOGINFO,\r\n}\r\n\r\nexport enum EBaseLayerOverlay {\r\n BASELAYERADDNEW = 1,\r\n EDITBASELAYER,\r\n BASELAYERINFO,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DetailOverlaysService {\r\n\r\n private activeCatalogDetailOverlay = new BehaviorSubject(\r\n ECatalogOverlay.CATALOGINFO\r\n );\r\n activeCatalogDetailOverlay$ = this.activeCatalogDetailOverlay.asObservable();\r\n\r\n private activeBaseLayerDetailOverlay = new BehaviorSubject(\r\n EBaseLayerOverlay.BASELAYERINFO\r\n );\r\n activeBaseLayerDetailOverlay$ =\r\n this.activeBaseLayerDetailOverlay.asObservable();\r\n\r\n setActiveCatalogDetailOverlay(activeOverlay: ECatalogOverlay) {\r\n this.activeCatalogDetailOverlay.next(activeOverlay);\r\n }\r\n\r\n getActiveCatalogDetailOverlay(): ECatalogOverlay {\r\n return this.activeCatalogDetailOverlay.getValue();\r\n }\r\n\r\n setActiveBaseLayerDetailOverlay(activeOverlay: EBaseLayerOverlay) {\r\n this.activeBaseLayerDetailOverlay.next(activeOverlay);\r\n }\r\n\r\n getActiveBaseLayerDetailOverlay(): EBaseLayerOverlay {\r\n return this.activeBaseLayerDetailOverlay.getValue();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'getNameFromParams',\r\n})\r\nexport class GetNameFromParamsPipe implements PipeTransform {\r\n transform(value: any, ...args: any[]): any {\r\n // console.log('PIPE: ', value, ', ', args);\r\n if (args[0].length === 0) {\r\n return '???';\r\n }\r\n let transformText = value;\r\n args[0].forEach((param) => {\r\n transformText = transformText[param];\r\n });\r\n return transformText ? transformText : '???';\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'getStringFromArray',\r\n})\r\nexport class GetStringFromArrayPipe implements PipeTransform {\r\n transform(dataInArray: any[], ...args: any[]): any {\r\n let stringFromArray = '';\r\n const param = args[0];\r\n dataInArray.forEach((data, index) => {\r\n stringFromArray += data[param];\r\n if (index + 1 < dataInArray.length) {\r\n stringFromArray += ', ';\r\n }\r\n });\r\n return stringFromArray;\r\n }\r\n}\r\n","import { Component, HostBinding, OnInit, OnDestroy } from '@angular/core';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyAdminComponent } from '../isy-admin.component';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { PermissionService } from '@isygis/permission';\r\n\r\n@Component({\r\n selector: 'lib-isy-admin-btn',\r\n templateUrl: './isy-admin-btn.component.html',\r\n styleUrls: ['./isy-admin-btn.component.scss'],\r\n animations: [pageAnimation],\r\n})\r\nexport class IsyAdminBtnComponent implements OnInit, OnDestroy {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n isAdministrator = false;\r\n subscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService,\r\n private translateService: IsyTranslateService,\r\n private permissionService: PermissionService,\r\n private sessionStorageService: SessionStorageService\r\n ) {}\r\n\r\n previewIsActive$ = this.commonService.administratorPreviewIsActive$;\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.sessionStorageService.observe(ELogin.RESOURCES).subscribe(() => {\r\n this.setIsAdminValue();\r\n })\r\n );\r\n this.setIsAdminValue();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n setIsAdminValue(): void {\r\n this.isAdministrator = this.permissionService.hasResource('GeoInnsynAdmin');\r\n }\r\n\r\n showAdmin(): void {\r\n this.bladeService.showBladeWithComponent(\r\n 'admin',\r\n IsyAdminComponent,\r\n undefined,\r\n {\r\n fullScreen: true,\r\n showHeader: true,\r\n showMinifyBtn: false,\r\n bladeHeader: {\r\n headerTitle: this.translateService.instant('admin_modal_title'),\r\n headerIcon: fontAwesomeIcons.faUserCog,\r\n },\r\n showBladeOverlay: true,\r\n }\r\n );\r\n }\r\n}\r\n","
    \r\n
    \r\n
  • \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Administrator\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
  • \r\n
    \r\n
","import { Component } from '@angular/core';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport {\r\n ChooseBaseLayersService,\r\n IBaseLayer,\r\n} from '../choose-base-layers.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Component({\r\n selector: 'lib-base-layers-preview',\r\n templateUrl: './base-layers-preview.component.html',\r\n styleUrls: [\r\n './base-layers-preview.component.scss',\r\n '../../../isy-admin-new-style.component.scss',\r\n ],\r\n})\r\nexport class BaseLayersPreviewComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(private chooseBaseLayersService: ChooseBaseLayersService) {}\r\n\r\n baseLayersWithImgUrl = this.chooseBaseLayersService.baseLayersWithImgUrl$;\r\n\r\n vm$ = combineLatest([this.baseLayersWithImgUrl]).pipe(\r\n map(([baseLayers]: [IBaseLayer[]]) => ({\r\n baseLayers,\r\n mainBaseLayer: baseLayers.find((b) => b.isMainLayer === true),\r\n }))\r\n // tap(result => console.log('BASE LAYERS: ', result))\r\n );\r\n\r\n errorLoadImg(baseLayer: IBaseLayer): void {\r\n baseLayer.imageUrlError = true;\r\n // console.log('ERROR LOAD IMG', baseLayer);\r\n }\r\n}\r\n","
\r\n
0\">\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
{{'admin_base_no_preview' | translate}}
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport {\r\n DetailOverlaysService,\r\n EBaseLayerOverlay,\r\n} from '../../../detail-overlays.service';\r\n\r\n@Component({\r\n selector: 'lib-base-layers-services',\r\n templateUrl: './base-layers-services.component.html',\r\n styleUrls: ['../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class BaseLayersServicesComponent implements OnDestroy {\r\n constructor(private detailOverlaysService: DetailOverlaysService) {}\r\n\r\n activeServiceBaseLayerOverlay$ =\r\n this.detailOverlaysService.activeBaseLayerDetailOverlay$;\r\n\r\n ngOnDestroy(): void {\r\n this.detailOverlaysService.setActiveBaseLayerDetailOverlay(\r\n EBaseLayerOverlay.BASELAYERINFO\r\n );\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n ChooseBaseLayersService,\r\n IBaseLayer,\r\n} from '../../choose-base-layers.service';\r\nimport {\r\n Wms,\r\n WmsOptions,\r\n ParamsWms,\r\n Layers,\r\n WmsLayer,\r\n} from '@isygis/isymap-config';\r\nimport {\r\n DetailOverlaysService,\r\n EBaseLayerOverlay,\r\n} from '../../../../detail-overlays.service';\r\nimport { SelectLayersService } from '../../../choose-layers/select-layers.service';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { getUniqueId } from '@isygis/isy-utils';\r\n\r\n@Component({\r\n selector: 'lib-service-base-layer-add-new',\r\n templateUrl: './service-base-layer-add-new.component.html',\r\n styleUrls: ['../../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class ServiceBaseLayerAddNewComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription = new Subscription();\r\n serviceTypes = ['WMTS', 'WMS'];\r\n selectedServiceType = 'WMS';\r\n selectedOpacity = 1;\r\n opacityValueError = false;\r\n selectedFormat = 'image/png';\r\n selectedMatrixset = '';\r\n matrixPrefix = '';\r\n numberOfZoomLevels = 0;\r\n adjustedNumberOfZoomLevels = 0;\r\n useGatekeeper = false;\r\n useSingleTile = false;\r\n showMetadataFields = true;\r\n versions = [];\r\n attachments = [];\r\n attachmentFileInput = {\r\n value: '',\r\n };\r\n formats = [];\r\n url = '';\r\n name = '';\r\n title = '';\r\n matrixsets = [];\r\n matrixinfo = {};\r\n\r\n constructor(\r\n private chooseBaseLayersService: ChooseBaseLayersService,\r\n private detailOverlaysService: DetailOverlaysService,\r\n private selectLayersService: SelectLayersService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private toasterService: IsyToasterService,\r\n private translateService: IsyTranslateService\r\n ) {}\r\n\r\n layersCapabilitiesMaplib$ =\r\n this.mapEmitterService.getCapabilitiesFromUrlEmitter$.pipe(\r\n map((result) => {\r\n if (result && result['error']) {\r\n this.toasterService.error(result['error'], 'error');\r\n return undefined;\r\n }\r\n if (result && result['nodes']) {\r\n if (result.nodes.length === 0) {\r\n this.toasterService.error(\r\n 'admin_empty_layers_correct_service_q',\r\n 'error'\r\n );\r\n return undefined;\r\n } else {\r\n this.name = '';\r\n this.title = '';\r\n this.toasterService.success(\r\n 'admin_url_valid_toaster_msg',\r\n 'success'\r\n );\r\n }\r\n }\r\n return result;\r\n })\r\n );\r\n\r\n vm$ = combineLatest([this.layersCapabilitiesMaplib$]).pipe(\r\n map(([layersCapabilitiesMaplib]: [any]) => ({\r\n data: layersCapabilitiesMaplib,\r\n }))\r\n // ,tap(result => console.log('Admin get cap: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.mapEmitterService.emitGetCapabilitiesFromUrl(undefined);\r\n this.subscription.add(\r\n this.chooseBaseLayersService.addBaseLayer$.subscribe((result) => {\r\n if (result === false) {\r\n this.toasterService.info(\r\n this.translateService.instant(\r\n 'admin_catalog_service_custom_add_error'\r\n )\r\n );\r\n } else if (result === true) {\r\n this.detailOverlaysService.setActiveBaseLayerDetailOverlay(\r\n EBaseLayerOverlay.BASELAYERINFO\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log('Destroy add layer');\r\n this.chooseBaseLayersService.destroyNewBaseLayer();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n addCustomUrl(url: string): void {\r\n if (!url) {\r\n const message = this.translateService.instant(\r\n `Url til tjeneste mangler!`\r\n );\r\n this.toasterService.error(message);\r\n return;\r\n }\r\n url = this.removeUrlParameters(url);\r\n\r\n const params = new ParamsWms(this.name);\r\n params.format = this.selectedFormat;\r\n\r\n const newLayer = new Wms(\r\n new Layers([\r\n new WmsLayer(\r\n this.name, // name\r\n this.name, // title\r\n 'false' // queryable\r\n ),\r\n ]),\r\n 'false', // display\r\n this.useGatekeeper.toString(), // gatekeeper\r\n getUniqueId(4), // guid\r\n '9999', // layerindex\r\n this.title, // name\r\n new WmsOptions('true', this.selectedOpacity.toString(), this.useSingleTile ? 'true' : 'false'),\r\n params,\r\n this.selectedServiceType,\r\n url\r\n ) as IBaseLayer;\r\n newLayer.matrixset = this.selectedMatrixset;\r\n newLayer.matrixprefix = this.matrixPrefix;\r\n newLayer.numberofzoomlevels = this.adjustedNumberOfZoomLevels;\r\n this.chooseBaseLayersService.addLayer(newLayer);\r\n this.toasterService.success('admin_layer_upload_toaster_msg', 'success');\r\n }\r\n\r\n removeUrlParameters(url: string): string {\r\n if (url) {\r\n const fixedUrl = url\r\n .replace(/layers=.*?(&|$)/gi, '')\r\n .replace(/request=.*?(&|$)/gi, '')\r\n .replace(/version=.*?(&|$)/gi, '')\r\n .replace(/service=.*?(&|$)/gi, '')\r\n .trimEnd()\r\n .replace(/[?&]?$/, '');\r\n return fixedUrl;\r\n }\r\n return '';\r\n }\r\n\r\n getCapabilities(url, serviceType): Promise {\r\n return this.selectLayersService.getCapabilitiesUrlVersion(\r\n serviceType,\r\n url,\r\n undefined\r\n );\r\n }\r\n\r\n setNodeData(node: any) {\r\n this.name = node.name;\r\n this.title = node.title;\r\n this.formats = node.formats;\r\n this.matrixinfo = node.matrixinfo;\r\n this.matrixsets = Object.keys(node.matrixinfo);\r\n if (\r\n this.formats.length > 0 &&\r\n this.formats.find((x) => x === this.selectedFormat) < 0\r\n ) {\r\n this.selectedFormat = this.formats[0];\r\n }\r\n }\r\n\r\n setMatrixSet(m: string) {\r\n this.selectedMatrixset = m;\r\n this.numberOfZoomLevels = this.matrixinfo[m]['numberOfZoomLevels'];\r\n this.matrixPrefix = this.matrixinfo[m]['prefix']\r\n this.adjustedNumberOfZoomLevels = this.numberOfZoomLevels;\r\n }\r\n\r\n setServiceType(serviceType: string) {\r\n if (serviceType === 'WMTS') {\r\n this.useSingleTile = false;\r\n }\r\n this.selectedServiceType = serviceType;\r\n }\r\n}","
\r\n {{'admin_base_custom_add' | translate}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n {{'admin_layers_service_type' | translate}}\r\n
\r\n \r\n
\r\n
\r\n \r\n
    \r\n
  • \r\n {{s}}\r\n
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {{node.title}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n {{'admin_matrixset' | translate}}\r\n
\r\n
\r\n
\r\n \r\n
    \r\n
  • \r\n {{m}}\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n {{'admin_number_of_zoom_levels' | translate}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n {{'admin_imagetype' | translate}}\r\n
\r\n
\r\n
\r\n \r\n
    \r\n
  • \r\n {{f}}\r\n
  • \r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n {{'admin_use_gatekeeper' | translate}}\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n {{'admin_service_use_single_tile' | translate}}\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n {{'admin_opacity' | translate}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{this.selectedOpacity * 100 | number:'1.0-0'}}%\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
","import { Component, OnDestroy } from '@angular/core';\r\nimport {\r\n ChooseBaseLayersService,\r\n IBaseLayer,\r\n} from '../../choose-base-layers.service';\r\nimport { combineLatest, Subscription, Subject } from 'rxjs';\r\nimport { map, debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { IWms } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-service-base-layer-edit',\r\n templateUrl: './service-base-layer-edit.component.html',\r\n styleUrls: ['../../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class ServiceBaseLayerEditComponent implements OnDestroy {\r\n // changedBaseLayerName: string;\r\n baseLayers: IWms[] = [];\r\n keyUpChangeName = new Subject();\r\n subscription: Subscription;\r\n editLayerGuid: string;\r\n\r\n constructor(\r\n private chooseBaseLayersService: ChooseBaseLayersService,\r\n ) {\r\n this.subscription = this.keyUpChangeName\r\n .pipe(debounceTime(200), distinctUntilChanged())\r\n .subscribe((result) => {\r\n const base = this.baseLayers.find(\r\n (b) => b.guid === this.editLayerGuid\r\n );\r\n if (base) {\r\n base.name = result;\r\n }\r\n });\r\n }\r\n\r\n editBaseLayerByGuid$ = this.chooseBaseLayersService.editBaseLayerByGuid$.pipe(\r\n map((result) => {\r\n this.editLayerGuid = result;\r\n return result;\r\n })\r\n );\r\n baseLayers$ = this.chooseBaseLayersService.baseLayers$.pipe(\r\n map((layers: IWms[]) => {\r\n this.baseLayers = layers;\r\n return this.baseLayers;\r\n })\r\n );\r\n\r\n\r\n vm$ = combineLatest([\r\n this.editBaseLayerByGuid$,\r\n this.baseLayers$,\r\n ]).pipe(\r\n map(\r\n ([editBaseLayerByGuid, baseLayers]: [\r\n string,\r\n IBaseLayer[]\r\n ]) => ({\r\n baseLayer: baseLayers.find((b) => b.guid === editBaseLayerByGuid),\r\n })\r\n )\r\n // tap(data => console.log('Base layer edit: ', data))\r\n );\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","
\r\n
\r\n {{'admin_base_edit' | translate}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
","import { Component } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Component({\r\n selector: 'lib-service-base-layer-info',\r\n templateUrl: './service-base-layer-info.component.html',\r\n styleUrls: ['../../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class ServiceBaseLayerInfoComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{'admin_base_description' | translate}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{{'admin_base_select_info' | translate}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{{'admin_base_delete_info' | translate}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{{'admin_base_mark_main_info' | translate}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{{'admin_base_add_custom_info' | translate}}
\r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Subscription, combineLatest } from 'rxjs';\r\nimport { map, tap, take, filter, switchMap } from 'rxjs/operators';\r\nimport {\r\n ChooseBaseLayersService,\r\n IBaseLayer,\r\n} from '../../choose-base-layers.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyAdminService } from '../../../../isy-admin.service';\r\nimport {\r\n IWms,\r\n Wms,\r\n IProjectConfig,\r\n} from '@isygis/isymap-config';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport {\r\n DetailOverlaysService,\r\n EBaseLayerOverlay,\r\n} from '../../../../detail-overlays.service';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IConfigJson } from '@isygis/isymap-config';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\n\r\n@Component({\r\n selector: 'lib-service-base-layer-list',\r\n templateUrl: './service-base-layer-list.component.html',\r\n styleUrls: ['../../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class ServiceBaseLayerListComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n // eSelectedBaseLayerType = ESelectedBaseLayerType;\r\n subscriptions: Subscription[] = [];\r\n\r\n baseLayers: IWms[];\r\n layerToRemove: IBaseLayer | undefined = undefined;\r\n\r\n constructor(\r\n private chooseBaseLayersService: ChooseBaseLayersService,\r\n private adminService: IsyAdminService,\r\n private detailOverlaysService: DetailOverlaysService,\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService,\r\n private sessionStorageService: SessionStorageService,\r\n private toasterService: IsyToasterService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n baseLayersOriginal$ = this.chooseBaseLayersService.baseLayers$;\r\n baseLayerEditGuid$ = this.chooseBaseLayersService.editBaseLayerByGuid$;\r\n activeBaseLayerDetailOverlay$ =\r\n this.detailOverlaysService.activeBaseLayerDetailOverlay$;\r\n\r\n vm$ = combineLatest([\r\n this.baseLayersOriginal$,\r\n this.baseLayerEditGuid$,\r\n this.activeBaseLayerDetailOverlay$,\r\n ]).pipe(\r\n map(\r\n ([\r\n baseLayersOriginal,\r\n baseLayerEditGuid,\r\n activeBaseLayerDetailOverlay,\r\n ]: [IBaseLayer[], string, EBaseLayerOverlay]) => ({\r\n baseLayersOriginal,\r\n baseLayerEditGuid,\r\n addNewIsActive:\r\n activeBaseLayerDetailOverlay === EBaseLayerOverlay.BASELAYERADDNEW,\r\n })\r\n ),\r\n tap((result) => console.log('BASE LAYERS: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.push(\r\n this.commonService.dynamicModalAcceptButtonClick$.subscribe((value) => {\r\n if (value === 'removeSourceLayer' && this.layerToRemove) {\r\n this.mapService.config$\r\n .pipe(\r\n filter((x) => !!x),\r\n switchMap((config: IConfigJson) => {\r\n const options = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n return this.httpClient.delete(\r\n config.configurl +\r\n '/api/v2/sourcelist/DeleteBaseLayer?isytoken=' +\r\n this.sessionStorageService.retrieve(ELogin.TOKEN) +\r\n `&application=${config.instance}&url=${escape(\r\n this.layerToRemove.url\r\n )}&layer=${this.layerToRemove.params?.layers}`,\r\n options\r\n );\r\n }),\r\n map((result) => {\r\n if (result) {\r\n this.toasterService.success(\r\n 'admin_service_removed_toaster_msg'\r\n );\r\n } else {\r\n this.toasterService.info(\r\n 'admin_service_remove_fail_toaster_msg'\r\n );\r\n }\r\n this.chooseBaseLayersService.removeLayer(this.layerToRemove);\r\n return result;\r\n }),\r\n take(1)\r\n )\r\n .subscribe();\r\n this.commonService.dynamicModalAcceptButtonClick(undefined);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n this.chooseBaseLayersService.destroyNewBaseLayer();\r\n this.chooseBaseLayersService.changeEditBaseLayerGuid(undefined);\r\n }\r\n\r\n dropLayer(\r\n event: CdkDragDrop,\r\n baseLayersOriginal: IBaseLayer[]\r\n ): void {\r\n baseLayersOriginal.map((layer) => (layer.layerorder = undefined));\r\n moveItemInArray(baseLayersOriginal, event.previousIndex, event.currentIndex);\r\n baseLayersOriginal.forEach((layer, index) => {\r\n layer.layerorder = index;\r\n });\r\n }\r\n \r\n changeSelectedBaseLayer(\r\n layer: IBaseLayer,\r\n baseLayersOriginal: IBaseLayer[]\r\n ): void {\r\n layer.isSelected = !layer.isSelected;\r\n const layerIndex = this.baseLayers?.findIndex((l) => l.guid === layer.guid);\r\n if (layer.isSelected) {\r\n if (layerIndex < 0) {\r\n const newBaseLayer = new Wms(\r\n layer.layers,\r\n layer.display,\r\n layer.gatekeeper,\r\n layer.guid,\r\n layer.layerindex,\r\n layer.name,\r\n layer.options,\r\n layer.params,\r\n layer.type,\r\n layer.url\r\n );\r\n this.baseLayers.push(newBaseLayer);\r\n if (!baseLayersOriginal.find((b) => b.isMainLayer)) {\r\n const baseLayer = this.baseLayers[0];\r\n const baseLayerFromLibrary = baseLayersOriginal.find(\r\n (b) => b.guid === baseLayer.guid\r\n );\r\n if (baseLayerFromLibrary) {\r\n this.changeMainBaseLayer(baseLayerFromLibrary, baseLayersOriginal);\r\n }\r\n }\r\n }\r\n }\r\n if (!layer.isSelected) {\r\n if (layerIndex >= 0) {\r\n this.baseLayers.splice(layerIndex, 1);\r\n if (this.baseLayers.length > 0) {\r\n if (layer.isMainLayer) {\r\n const baseLayer = this.baseLayers[0];\r\n const baseLayerFromLibrary = baseLayersOriginal.find(\r\n (b) => b.guid === baseLayer.guid\r\n );\r\n if (baseLayerFromLibrary) {\r\n this.changeMainBaseLayer(\r\n baseLayerFromLibrary,\r\n baseLayersOriginal\r\n );\r\n }\r\n }\r\n }\r\n layer.isMainLayer = false;\r\n }\r\n }\r\n }\r\n\r\n changeMainBaseLayer(\r\n layer: IBaseLayer,\r\n baseLayersOriginal: IBaseLayer[]\r\n ): void {\r\n baseLayersOriginal.forEach((b) => (b.isMainLayer = false));\r\n layer.isMainLayer = !layer.isMainLayer;\r\n if (layer.isMainLayer) {\r\n const layerIndex = this.baseLayers.findIndex(\r\n (l) => l.guid === layer.guid\r\n );\r\n if (layerIndex >= 0) {\r\n const baseLayer = this.baseLayers[layerIndex];\r\n this.baseLayers.splice(layerIndex, 1);\r\n this.baseLayers.unshift(baseLayer);\r\n }\r\n }\r\n }\r\n\r\n changeAddNewCustomBaseMap(): void {\r\n const activeOverlay =\r\n this.detailOverlaysService.getActiveBaseLayerDetailOverlay();\r\n this.detailOverlaysService.setActiveBaseLayerDetailOverlay(\r\n activeOverlay === EBaseLayerOverlay.BASELAYERADDNEW\r\n ? EBaseLayerOverlay.BASELAYERINFO\r\n : EBaseLayerOverlay.BASELAYERADDNEW\r\n );\r\n this.chooseBaseLayersService.changeEditBaseLayerGuid(undefined);\r\n }\r\n\r\n changeBaseLayerEdit(layer: IBaseLayer): void {\r\n const activeOverlay =\r\n this.detailOverlaysService.getActiveBaseLayerDetailOverlay();\r\n const activeLayerGuid = this.chooseBaseLayersService.getEditBaseLayerGuid();\r\n if (\r\n activeOverlay === EBaseLayerOverlay.EDITBASELAYER &&\r\n activeLayerGuid === layer.guid\r\n ) {\r\n this.chooseBaseLayersService.changeEditBaseLayerGuid(undefined);\r\n this.detailOverlaysService.setActiveBaseLayerDetailOverlay(\r\n EBaseLayerOverlay.BASELAYERINFO\r\n );\r\n } else {\r\n this.chooseBaseLayersService.changeEditBaseLayerGuid(layer.guid);\r\n this.detailOverlaysService.setActiveBaseLayerDetailOverlay(\r\n EBaseLayerOverlay.EDITBASELAYER\r\n );\r\n }\r\n }\r\n\r\n removeMainBaseLayer(layer: IBaseLayer): void {\r\n this.layerToRemove = layer;\r\n this.dynamicModalService.showModalWithComponent(\r\n 'removeSourceLayer',\r\n undefined,\r\n undefined,\r\n {\r\n showHeader: true,\r\n showFooter: true,\r\n contentText: 'admin_delete_permission',\r\n modalHeader: {\r\n headerIcon: fontAwesomeIcons.faTrash,\r\n headerTitle: 'admin_delete_layer',\r\n showCloseBtn: false,\r\n iconColor: 'text-danger',\r\n },\r\n modalFooter: { showCancelButton: true, acceptButtonText: 'delete' },\r\n }\r\n );\r\n }\r\n}\r\n","
\r\n
{{'admin_base_predefined' | translate}}
\r\n
\r\n
    \r\n
  • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {{layer.name}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
  • \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{'admin_base_custom_add' | translate}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, Input, OnInit } from '@angular/core';\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { TABBUTTONS } from './tab-buttons';\r\nimport { TabButton } from '../../tab-button';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\n\r\n@Component({\r\n selector: 'lib-choose-base-layers',\r\n templateUrl: './choose-base-layers.component.html',\r\n styleUrls: ['../../isy-admin-new-style.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class ChooseBaseLayersComponent implements OnInit {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n @Input() activeTabButton: TabButton;\r\n tabButtons: TabButton[];\r\n\r\n constructor(private commonService: IsyCommonService) {}\r\n\r\n ngOnInit(): void {\r\n this.tabButtons = TABBUTTONS;\r\n this.activeTabButton = this.tabButtons[0];\r\n }\r\n\r\n toggleTabButton(tabButton: TabButton): void {\r\n this.activeTabButton = tabButton;\r\n }\r\n\r\n showHelp(helpFile: string): void {\r\n this.commonService.setHelpId(helpFile);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n {{tabButton.text | translate }}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n IWms,\r\n IProjectConfig,\r\n Wms,\r\n} from '@isygis/isymap-config';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport {\r\n BehaviorSubject,\r\n combineLatest,\r\n firstValueFrom,\r\n ReplaySubject,\r\n} from 'rxjs';\r\nimport {\r\n map,\r\n tap,\r\n catchError,\r\n multicast,\r\n refCount,\r\n concatMap,\r\n} from 'rxjs/operators';\r\nimport { ICatalogLibrary } from '../../data';\r\nimport { MapLibNgService, IsyMapService } from '@isygis/isy-map';\r\nimport { IsyAdminService } from '../../isy-admin.service';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { arrayMove } from '@isygis/isy-utils';\r\nimport { IConfigJson } from '@isygis/isymap-config';\r\n\r\nexport interface IBaseLayer extends IWms {\r\n isSelected: boolean;\r\n isMainLayer: boolean;\r\n imageUrl?: Promise;\r\n imageUrlError?: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ChooseBaseLayersService {\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private adminService: IsyAdminService,\r\n private mapService: IsyMapService,\r\n private sessionStorageService: SessionStorageService,\r\n private httpClient: HttpClient,\r\n private toasterService: IsyToasterService\r\n ) {}\r\n\r\n catalogLibrary = new BehaviorSubject(undefined);\r\n catalogLibrary$ = this.catalogLibrary.asObservable();\r\n\r\n private editBaseLayerByGuid = new BehaviorSubject(undefined);\r\n editBaseLayerByGuid$ = this.editBaseLayerByGuid.asObservable();\r\n private projectConfig$ = this.adminService.tempProjectConfig$;\r\n private newBaseLayerAction = new BehaviorSubject(undefined);\r\n baseLayers = new BehaviorSubject([]);\r\n\r\n private baseLayersOriginal$ = combineLatest([\r\n this.projectConfig$,\r\n this.catalogLibrary$,\r\n ]).pipe(\r\n map(\r\n ([projectConfig, baseLibrary]: [\r\n IProjectConfig,\r\n ICatalogLibrary\r\n ]) => {\r\n const projectBaseLayers = projectConfig.config.base;\r\n projectBaseLayers.forEach((b, index) => {\r\n const baseInLibrary = baseLibrary.BaseLayers.find(\r\n (l) => l.guid === b.guid\r\n );\r\n if (!baseInLibrary) {\r\n const newBaseLayer = new Wms(\r\n b.layers,\r\n b.display,\r\n b.gatekeeper,\r\n b.guid,\r\n b.layerindex,\r\n b.name,\r\n b.options,\r\n b.params,\r\n b.type,\r\n b.url,\r\n ) as IBaseLayer;\r\n newBaseLayer.matrixset = b.matrixset;\r\n newBaseLayer.attribution = b.attribution;\r\n newBaseLayer.matrixprefix = b.matrixprefix;\r\n newBaseLayer.numberofzoomlevels = b.numberofzoomlevels; \r\n newBaseLayer.isSelected = true;\r\n newBaseLayer.isMainLayer = false;\r\n if (index === 0) {\r\n baseLibrary.BaseLayers.unshift(newBaseLayer);\r\n } else {\r\n baseLibrary.BaseLayers.push(newBaseLayer);\r\n }\r\n }\r\n });\r\n if (projectBaseLayers.length > 0) {\r\n const firstBaseLayerGuid = projectBaseLayers[0].guid;\r\n const indexInBaseLibrary = baseLibrary.BaseLayers.findIndex(\r\n (b) => b.guid === firstBaseLayerGuid\r\n );\r\n if (indexInBaseLibrary > 0) {\r\n arrayMove(baseLibrary.BaseLayers, indexInBaseLibrary, 0);\r\n }\r\n }\r\n return baseLibrary.BaseLayers.map((b, index) => {\r\n const layerExist = projectBaseLayers.find((l) => l.guid === b.guid);\r\n return {\r\n ...b,\r\n name: layerExist ? layerExist.name : b.name,\r\n layerorder: layerExist ? layerExist.layerorder : 99,\r\n isMainLayer: index === 0,\r\n isSelected: layerExist ? true : false,\r\n attribution: layerExist ? layerExist.attribution : null,\r\n } as IBaseLayer;\r\n }).sort((a,b) => a.layerorder - b.layerorder)\r\n ;\r\n }\r\n ),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount()\r\n );\r\n\r\n baseLayers$ = combineLatest([\r\n this.baseLayers,\r\n this.baseLayersOriginal$,\r\n this.newBaseLayerAction,\r\n ]).pipe(\r\n map(\r\n ([baseLayers, baseLayersOriginal, newAddedBaseLayer]: [\r\n IBaseLayer[],\r\n IBaseLayer[],\r\n IBaseLayer\r\n ]) => {\r\n if (baseLayers.length === 0 && baseLayersOriginal.length > 0) {\r\n this.baseLayers.next(baseLayersOriginal);\r\n return this.baseLayers.getValue();\r\n }\r\n if (newAddedBaseLayer) {\r\n const findNewAddedBaseLayer = baseLayers.find(\r\n (p) => p.name === newAddedBaseLayer.name\r\n );\r\n if (!findNewAddedBaseLayer) {\r\n newAddedBaseLayer.isSelected = false;\r\n newAddedBaseLayer.isMainLayer = false;\r\n baseLayers.push(newAddedBaseLayer);\r\n }\r\n }\r\n return baseLayers;\r\n }\r\n )\r\n );\r\n\r\n // TODO: fixed GUID - layer from baseLibrary has wrong GUID and selected layer is not uploaded to maplib\r\n baseLayersWithImgUrl$ = combineLatest([this.projectConfig$]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => {\r\n const projectBaseLayers = projectConfig.config.base;\r\n return projectBaseLayers.map((b, index) => {\r\n return {\r\n ...b,\r\n isMainLayer: index === 0,\r\n imageUrl: this.mapLibNgService.map().getImageUrl(b['id'] || b.guid),\r\n } as IBaseLayer;\r\n });\r\n }),\r\n tap((result) => console.log('IMAGEURL: ', result))\r\n );\r\n\r\n addBaseLayer$ = combineLatest([this.newBaseLayerAction]).pipe(\r\n concatMap(([layer]: [IBaseLayer]) => {\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n if (layer && isytoken) {\r\n const config: IConfigJson = this.mapService.getConfig();\r\n let sourceAddUrl = config.configurl;\r\n sourceAddUrl +=\r\n '/api/v2/sourcelist/AddBaseLayer?application=' +\r\n config.instance +\r\n '&isytoken=' +\r\n isytoken;\r\n\r\n const headers = {\r\n 'Content-type': 'application/json',\r\n };\r\n\r\n return this.httpClient.post(sourceAddUrl, layer, { headers }).pipe(\r\n map((result: boolean) => {\r\n return result;\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n })\r\n );\r\n\r\n getCatalogLibrary(): Promise {\r\n const config: IConfigJson = this.mapService.getConfig();\r\n let sourceListUrl = config.configurl;\r\n sourceListUrl += '/api/v2/sourcelist?application=' + config.instance;\r\n return firstValueFrom(this.httpClient.get(sourceListUrl)).then(\r\n (value: ICatalogLibrary) => this.catalogLibrary.next(value)\r\n );\r\n }\r\n\r\n changeEditBaseLayerGuid(guid: string): void {\r\n this.editBaseLayerByGuid.next(guid);\r\n }\r\n\r\n getEditBaseLayerGuid(): string {\r\n return this.editBaseLayerByGuid.getValue();\r\n }\r\n\r\n addLayer(layer: IBaseLayer): void {\r\n this.newBaseLayerAction.next(layer);\r\n }\r\n\r\n destroyNewBaseLayer(): void {\r\n this.newBaseLayerAction.next(undefined);\r\n }\r\n\r\n removeLayer(layer: IBaseLayer): void {\r\n const allLayers = this.baseLayers.getValue();\r\n const layerIndex = allLayers.findIndex(\r\n (l) => l.url === layer.url && l.params.layers === layer.params.layers\r\n );\r\n if (layerIndex > -1) {\r\n allLayers.splice(layerIndex, 1);\r\n this.baseLayers.next(allLayers);\r\n }\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.statusText}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n this.toasterService.error(errorMessage, 'ERROR');\r\n return Promise.resolve();\r\n }\r\n}\r\n","import { TabButton } from '../../tab-button';\r\n\r\nexport const TABBUTTONS: TabButton[] = [\r\n { id: 1, text: 'admin_details_title', helpFile: 'adminBaselayersDetails' },\r\n // ,{ id: 2, text: 'admin_preview_title' }\r\n];\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\n\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { TABBUTTONS } from './tab-buttons';\r\nimport { TabButton } from '../../tab-button';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\n\r\n@Component({\r\n selector: 'lib-choose-layers',\r\n templateUrl: './choose-layers.component.html',\r\n styleUrls: ['../../isy-admin-new-style.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class ChooseLayersComponent implements OnInit {\r\n @Input() activeTabButton: TabButton;\r\n tabButtons: TabButton[];\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(private commonService: IsyCommonService) {}\r\n\r\n ngOnInit(): void {\r\n this.tabButtons = TABBUTTONS;\r\n this.activeTabButton = this.tabButtons[1];\r\n }\r\n\r\n toggleTabButton(tabButton: TabButton): void {\r\n this.activeTabButton = tabButton;\r\n }\r\n\r\n showHelp(helpFile: string): void {\r\n this.commonService.setHelpId(helpFile);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n {{tabButton.text | translate }}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
","import { ILayerField } from './layer-field';\r\nexport const WMSLAYERFIELDS: ILayerField[] = [\r\n {\r\n label: 'Title',\r\n keys: ['name'],\r\n dataType: 'text',\r\n },\r\n {\r\n label: 'Background color',\r\n keys: ['params', 'bgcolor'],\r\n dataType: 'text',\r\n },\r\n {\r\n label: 'Image format',\r\n keys: ['params', 'format'],\r\n dataType: 'select',\r\n },\r\n];\r\n\r\nexport const WFSLAYERFIELDS: ILayerField[] = [\r\n {\r\n label: 'Title',\r\n keys: ['name'],\r\n dataType: 'text',\r\n },\r\n];\r\n\r\nexport const CATALOGLAYERFIELDS: ILayerField[] = [\r\n {\r\n label: 'Url',\r\n keys: ['url'],\r\n dataType: 'text',\r\n },\r\n {\r\n label: 'Category',\r\n keys: ['category'],\r\n dataType: 'text',\r\n },\r\n {\r\n label: 'Provider',\r\n keys: ['provider'],\r\n dataType: 'text',\r\n },\r\n {\r\n label: 'Service',\r\n keys: ['service'],\r\n dataType: 'text',\r\n },\r\n {\r\n label: 'Subname',\r\n keys: ['subname'],\r\n dataType: 'text',\r\n },\r\n {\r\n label: 'Title',\r\n keys: ['title'],\r\n dataType: 'text',\r\n },\r\n {\r\n label: 'Typename',\r\n keys: ['typename'],\r\n dataType: 'text',\r\n },\r\n {\r\n label: 'Version',\r\n keys: ['version'],\r\n dataType: 'text',\r\n },\r\n];\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n EServiceTypes,\r\n SelectLayersService,\r\n} from '../../../select-layers.service';\r\n\r\nimport { CatalogLayer } from '../../../../../data';\r\nimport { IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { Subscription } from 'rxjs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { getUniqueId } from '@isygis/isy-utils';\r\nimport { take } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'lib-add-new-service',\r\n templateUrl: './add-new-service.component.html',\r\n styleUrls: ['../../../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class AddNewServiceComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n subscriptions: Subscription = new Subscription();\r\n\r\n metadata: CatalogLayer = {\r\n guid: getUniqueId(4),\r\n url: '',\r\n service: EServiceTypes.WFS,\r\n category: '',\r\n provider: '',\r\n title: '',\r\n version: '',\r\n typename: '',\r\n subname: '',\r\n };\r\n versions = [];\r\n serviceTypes = [EServiceTypes.WFS, EServiceTypes.WMS, EServiceTypes.VECTOR]; // , 'WMTS'\r\n showMetadataFields = false;\r\n addLayer = this.selectLayersService.addLayer$;\r\n urlExist = false;\r\n projectConfig$ = this.selectLayersService.projectConfig$;\r\n tempConfig;\r\n\r\n constructor(\r\n private toasterService: IsyToasterService,\r\n private translateService: IsyTranslateService,\r\n private selectLayersService: SelectLayersService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.urlExist = false;\r\n this.subscriptions.add(\r\n this.selectLayersService.addLayer$.subscribe((result) => {\r\n if (result === false) {\r\n this.toasterService.info(\r\n this.translateService.instant(\r\n 'admin_catalog_service_custom_add_error'\r\n )\r\n );\r\n }\r\n }));\r\n this.subscriptions.add(this.projectConfig$.subscribe(result => this.tempConfig = result)); \r\n\r\n this.subscriptions.add(\r\n this.mapEmitterService.getCapabilitiesFromUrlEmitter$.subscribe(\r\n (result) => {\r\n if (\r\n result &&\r\n this.removeUrlParameters(this.metadata.url) === result.url\r\n ) {\r\n if (result.error) {\r\n this.toasterService.error(\r\n this.translateService.instant(\r\n 'admin_layers_get_capabilities_error'\r\n ) + result.error\r\n );\r\n } else if (!result.nodes.length) {\r\n this.toasterService.error(\r\n 'admin_empty_layers_correct_service_q',\r\n 'error'\r\n );\r\n this.showMetadataFields = false;\r\n } else if (this.tempConfig?.config?.project?.epsg && result.nodes[0].crs && !result.nodes[0].crs.find(crs => crs === this.tempConfig.config.project.epsg )) {\r\n this.toasterService.warning(\r\n 'admin_layers_crs_not_supported',\r\n 'warning'\r\n );\r\n this.showMetadataFields = true;\r\n } else {\r\n this.toasterService.info(\r\n this.translateService.instant(\r\n 'admin_layers_get_capabilities_ok'\r\n )\r\n );\r\n this.showMetadataFields = true;\r\n }\r\n this.metadata.subname = result.abstract || this.metadata.subname;\r\n this.metadata.title = result.title || this.metadata.title;\r\n this.metadata.provider = result.provider || this.metadata.provider;\r\n if (Array.isArray(result.versions)) {\r\n this.versions = result.versions;\r\n } else {\r\n this.versions = [result.version];\r\n }\r\n if (this.versions.length === 1) {\r\n this.metadata.version = this.versions[0];\r\n }\r\n }\r\n }\r\n )\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n getCapabilityValues(url: string, metadata): void {\r\n this.urlExist = false;\r\n this.showMetadataFields = false;\r\n this.metadata.category = '';\r\n this.metadata.provider = '';\r\n this.metadata.title = '';\r\n this.metadata.version = '';\r\n\r\n let fixedUrl = this.removeUrlParameters(url);\r\n console.log('Call getCapabilities for ', fixedUrl, metadata);\r\n this.toasterService.info(\r\n this.translateService.instant('admin_layers_get_capabilities_starting')\r\n );\r\n let capabilitiesPromise;\r\n if (metadata.service === EServiceTypes.VECTOR) {\r\n if (fixedUrl.substring(fixedUrl.length - 1) !== '/') {\r\n fixedUrl += '/';\r\n }\r\n this.selectLayersService.setOgcServiceUrl(fixedUrl);\r\n this.selectLayersService.getOgcApiData$\r\n .pipe(take(1))\r\n .subscribe((data) => {\r\n console.table(data);\r\n if (data) {\r\n const conformCrsVersion = data['conformance']['conformsTo'].find(\r\n (c) =>\r\n c ===\r\n 'https://www.opengis.net/spec/ogcapi-features-2/1.0/conf/crs'\r\n );\r\n\r\n this.metadata.version = conformCrsVersion ? '2.0.0' : '1.0.0';\r\n this.versions = ['1.0.0', '2.0.0'];\r\n this.metadata.title = data['api']['title'];\r\n this.metadata.subname = data['api']['description'];\r\n this.showMetadataFields = true;\r\n this.toasterService.info(\r\n this.translateService.instant('admin_layers_get_capabilities_ok')\r\n );\r\n }\r\n });\r\n capabilitiesPromise = Promise.resolve();\r\n } else {\r\n capabilitiesPromise = this.selectLayersService.getCapabilitiesUrlVersion(\r\n metadata.service,\r\n fixedUrl,\r\n metadata.version\r\n );\r\n }\r\n capabilitiesPromise.then(() => {\r\n const projectLayers = this.selectLayersService.getAllProjectLayers();\r\n const urlExist = projectLayers.find((l) => l.url === url);\r\n if (urlExist) {\r\n this.urlExist = true;\r\n }\r\n });\r\n }\r\n\r\n removeUrlParameters(url: string): string {\r\n if (url) {\r\n const fixedUrl = url\r\n .replace(/request=.*?(&|$)/gi, '')\r\n .replace(/version=.*?(&|$)/gi, '')\r\n .replace(/service=.*?(&|$)/gi, '')\r\n .trimEnd()\r\n .replace(/[?&]?$/, '');\r\n return fixedUrl;\r\n }\r\n return '';\r\n }\r\n\r\n addCustomUrl(url: string, metadata): void {\r\n try {\r\n // Remove request/service and version query params if present in url\r\n if (!url) {\r\n const message = this.translateService.instant(\r\n `Url til tjeneste mangler!`\r\n );\r\n this.toasterService.error(message);\r\n return;\r\n }\r\n if (!metadata || !metadata.version) {\r\n const message = this.translateService.instant(`Versjon må settes!`);\r\n this.toasterService.error(message);\r\n return;\r\n }\r\n const fixedUrl = this.removeUrlParameters(url);\r\n\r\n const newLayer: CatalogLayer = {\r\n guid: getUniqueId(4),\r\n url: fixedUrl,\r\n provider: metadata.provider,\r\n title: metadata.title,\r\n category: metadata.category,\r\n service: metadata.service,\r\n version: metadata.version,\r\n typename: metadata.typename,\r\n subname: metadata.subname,\r\n };\r\n this.selectLayersService.addLayer(newLayer);\r\n console.log(fixedUrl);\r\n this.toasterService.info(\r\n this.translateService.instant(\r\n `${metadata.title} ble lagt til i listen over ${metadata.service}-lag`\r\n )\r\n );\r\n } catch {\r\n this.toasterService.error(\r\n this.translateService.instant(`${metadata.title} ble ikke lagt til!`)\r\n );\r\n }\r\n }\r\n reInit(): void {\r\n this.metadata.url = '';\r\n this.metadata.service = '';\r\n this.metadata.category = '';\r\n this.metadata.provider = '';\r\n this.metadata.title = '';\r\n this.metadata.version = '';\r\n }\r\n}\r\n","\r\n\r\n
\r\n {{'admin_catalog_service_custom_add' | translate}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n {{'admin_url_exist' | translate}}\r\n \r\n
\r\n
\r\n
\r\n {{'admin_layers_service_type' | translate}}\r\n
\r\n \r\n
\r\n
\r\n \r\n
    \r\n
  • \r\n {{s}}\r\n
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n \r\n
\r\n {{'admin_layers_version' | translate}}\r\n
\r\n
\r\n
\r\n \r\n
    \r\n
  • \r\n {{ver}}\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
","import { Component } from '@angular/core';\r\n\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { DetailOverlaysService } from '../../../../detail-overlays.service';\r\n\r\n@Component({\r\n selector: 'lib-catalog-detail',\r\n templateUrl: './catalog-detail.component.html',\r\n styleUrls: ['../../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class CatalogDetailComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(private detailOverlaysService: DetailOverlaysService) {}\r\n\r\n activeCatalogDetailOverlay$ =\r\n this.detailOverlaysService.activeCatalogDetailOverlay$;\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport {\r\n SelectLayersService,\r\n ICatalogLayer,\r\n} from '../../../select-layers.service';\r\nimport {\r\n CatalogLayer\r\n} from '../../../../../data';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\n\r\n@Component({\r\n selector: 'lib-catalog-edit',\r\n templateUrl: './catalog-edit.component.html',\r\n styleUrls: ['../../../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class CatalogEditComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription = new Subscription();\r\n\r\n constructor(\r\n private selectLayersService: SelectLayersService,\r\n private toasterService: IsyToasterService,\r\n private translateService: IsyTranslateService\r\n ) {}\r\n\r\n editCatalogLayerUrl$ = this.selectLayersService.editCatalogLayerUrl$;\r\n searchCatalogs$ = this.selectLayersService.searchCatalogs$;\r\n\r\n vm$ = combineLatest([this.editCatalogLayerUrl$, this.searchCatalogs$]).pipe(\r\n map(([editCatalogLayerUrl, searchCatalogs]: [string, ICatalogLayer[]]) => ({\r\n catalogLayer: searchCatalogs.find((c) => c.url === editCatalogLayerUrl),\r\n })),\r\n tap((data) => console.log('Catalog edit: ', data))\r\n );\r\n\r\n update(layer: CatalogLayer): void {\r\n this.selectLayersService.addLayer(layer);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.selectLayersService.addLayer$.subscribe((result) => {\r\n if (result === false) {\r\n this.toasterService.info(\r\n this.translateService.instant(\r\n 'admin_catalog_service_custom_add_error'\r\n )\r\n );\r\n }\r\n if (result === true) {\r\n this.toasterService.info(\r\n this.translateService.instant(\r\n 'admin_catalog_service_custom_add_success'\r\n )\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","
\r\n\r\n
\r\n {{'admin_catalog_edit' | translate}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
","import { Component } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Component({\r\n selector: 'lib-catalog-info',\r\n templateUrl: './catalog-info.component.html',\r\n styleUrls: ['../../../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class CatalogInfoComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor() {\r\n // empty\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {{'admin_catalog_info' | translate}}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{{'admin_catalog_add_info' | translate}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{{'admin_catalog_service_local_layer_warning' | translate}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{{'admin_catalog_remove_info' | translate}}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{{'admin_catalog_new_info' | translate}}
\r\n
\r\n
\r\n
\r\n
\r\n
","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { combineLatest, Subscription, Subject } from 'rxjs';\r\nimport {\r\n map,\r\n tap,\r\n take,\r\n debounceTime,\r\n distinctUntilChanged,\r\n} from 'rxjs/operators';\r\n// import { ChooseLayersService } from '../../choose-layers.service';\r\nimport {\r\n SelectLayersService,\r\n ICatalogLayer,\r\n} from '../../select-layers.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n// import { CatalogLayer } from '../../../../data';\r\nimport { PageChangedEvent } from 'ngx-bootstrap/pagination';\r\nimport {\r\n DetailOverlaysService,\r\n ECatalogOverlay,\r\n} from '../../../../detail-overlays.service';\r\nimport { CatalogLayer } from '../../../../data';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Component({\r\n selector: 'lib-catalog-list',\r\n templateUrl: './catalog-list.component.html',\r\n styleUrls: ['../../../../isy-admin-new-style.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class CatalogListComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscriptions: Subscription[] = [];\r\n public keyUpSearch = new Subject();\r\n searchText: any;\r\n layerToRemove: CatalogLayer | undefined = undefined;\r\n\r\n contentArray: ICatalogLayer[] = [];\r\n returnedArray: ICatalogLayer[] = [];\r\n currentPage = 1;\r\n\r\n constructor(\r\n // private chooseLayersService: ChooseLayersService,\r\n private toasterService: IsyToasterService,\r\n private sessionStorageService: SessionStorageService,\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private commonService: IsyCommonService,\r\n private selectLayersService: SelectLayersService,\r\n private detailOverlaysService: DetailOverlaysService\r\n ) {\r\n this.subscriptions.push(\r\n this.keyUpSearch\r\n .pipe(debounceTime(200), distinctUntilChanged())\r\n .subscribe((result) => {\r\n console.log('Search catalog: ', result);\r\n this.searchInCatalogLayers(result.toString());\r\n })\r\n );\r\n }\r\n\r\n catalogLayers$ = this.selectLayersService.searchCatalogs$.pipe(\r\n map((layers) => {\r\n if (layers) {\r\n this.contentArray = layers; // layers.filter(l => !l.isCustom);\r\n const startItem = (this.currentPage - 1) * 10;\r\n const endItem = this.currentPage * 10;\r\n this.returnedArray = this.contentArray.slice(startItem, endItem);\r\n }\r\n return layers;\r\n })\r\n );\r\n\r\n editCatalogLayerUrl$ = this.selectLayersService.editCatalogLayerUrl$;\r\n activeCatalogDetailOverlay$ =\r\n this.detailOverlaysService.activeCatalogDetailOverlay$;\r\n\r\n // uploadCatalogLayerOverlay$ = this.chooseLayersService.uploadCatalogLayer$;\r\n // searchTextValue$ = this.chooseLayersService.searchValue$;\r\n\r\n vm$ = combineLatest([\r\n this.catalogLayers$,\r\n this.editCatalogLayerUrl$,\r\n this.activeCatalogDetailOverlay$,\r\n ]).pipe(\r\n map(\r\n ([catalogLayers, editCatalogLayerUrl, activeCatalogDetailOverlay]: [\r\n ICatalogLayer[],\r\n string,\r\n ECatalogOverlay\r\n ]) => ({\r\n // customLayers: catalogLayers.filter(c => c.isCustom),\r\n catalogLayers,\r\n editCatalogLayerUrl,\r\n addNewServieActive:\r\n activeCatalogDetailOverlay === ECatalogOverlay.ADDNEWSERVICE,\r\n // uploadCatalogLayerIsActive: uploadCatalogLayerOverlay\r\n })\r\n ),\r\n tap((result) => console.log('Catalog layers: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.selectLayersService.changeEditCatalogLayerUrl(undefined);\r\n this.subscriptions.push(\r\n this.commonService.dynamicModalAcceptButtonClick$.subscribe((value) => {\r\n if (value === 'removeSourceLayer' && this.layerToRemove) {\r\n const config = this.mapService.getConfig();\r\n const options = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n const isyToken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n this.httpClient\r\n .delete(\r\n `${config.configurl}/api/v2/sourcelist/DeleteLayer?isytoken=${isyToken}` +\r\n `&application=${config.instance}&url=${escape(\r\n this.layerToRemove.url\r\n )}&version=${this.layerToRemove.version}`,\r\n options\r\n )\r\n .pipe(\r\n map((result) => {\r\n if (result) {\r\n this.toasterService.success(\r\n 'admin_service_removed_toaster_msg'\r\n );\r\n } else {\r\n this.toasterService.info(\r\n 'admin_service_remove_fail_toaster_msg'\r\n );\r\n }\r\n this.selectLayersService.removeLayer(this.layerToRemove);\r\n this.layerToRemove = undefined;\r\n return result;\r\n }),\r\n take(1)\r\n )\r\n .subscribe();\r\n this.commonService.dynamicModalAcceptButtonClick(undefined);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n this.searchInCatalogLayers('');\r\n }\r\n\r\n toggleCatalogLayer(layer: ICatalogLayer): void {\r\n layer.isSelected = !layer.isSelected;\r\n if (!layer.isSelected) {\r\n layer.capabilities = undefined;\r\n layer.vectorLayers = [];\r\n layer.wmsLayers = [];\r\n }\r\n }\r\n\r\n changeAddCatalogLayer(): void {\r\n this.selectLayersService.changeEditCatalogLayerUrl(undefined);\r\n const activeDetailOverlay =\r\n this.detailOverlaysService.getActiveCatalogDetailOverlay();\r\n this.detailOverlaysService.setActiveCatalogDetailOverlay(\r\n activeDetailOverlay === ECatalogOverlay.ADDNEWSERVICE\r\n ? ECatalogOverlay.CATALOGINFO\r\n : ECatalogOverlay.ADDNEWSERVICE\r\n );\r\n }\r\n\r\n changeCatalogEdit(layer: ICatalogLayer): void {\r\n const activeLayerUrl = this.selectLayersService.getEditCatalogLayerUrl();\r\n const activeDetailOverlay =\r\n this.detailOverlaysService.getActiveCatalogDetailOverlay();\r\n this.selectLayersService.changeEditCatalogLayerUrl(\r\n activeLayerUrl === layer.url ? undefined : layer.url\r\n );\r\n this.detailOverlaysService.setActiveCatalogDetailOverlay(\r\n activeLayerUrl === layer.url &&\r\n activeDetailOverlay !== ECatalogOverlay.CATALOGINFO\r\n ? ECatalogOverlay.CATALOGINFO\r\n : ECatalogOverlay.EDITCATALOG\r\n );\r\n }\r\n\r\n searchInCatalogLayers(searchValue: string): void {\r\n // this.chooseLayersService.changeSearchValueForCatalogLayers(searchValue);\r\n this.selectLayersService.changeSearchedCatalogValue(searchValue);\r\n }\r\n\r\n pageChanged(event: PageChangedEvent): void {\r\n const startItem = (event.page - 1) * event.itemsPerPage;\r\n const endItem = event.page * event.itemsPerPage;\r\n this.currentPage = event.page;\r\n this.returnedArray = this.contentArray.slice(startItem, endItem);\r\n }\r\n\r\n removeCatalogLayer(layer: CatalogLayer): void {\r\n this.layerToRemove = layer;\r\n this.dynamicModalService.showModalWithComponent(\r\n 'removeSourceLayer',\r\n undefined,\r\n undefined,\r\n {\r\n showHeader: true,\r\n showFooter: true,\r\n contentText: 'admin_delete_permission',\r\n modalHeader: {\r\n headerIcon: fontAwesomeIcons.faTrash,\r\n headerTitle: 'admin_delete_source',\r\n showCloseBtn: false,\r\n iconColor: 'text-danger',\r\n },\r\n modalFooter: { showCancelButton: true, acceptButtonText: 'delete' },\r\n }\r\n );\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
    \r\n
  • \r\n
    \r\n
    \r\n {{layer.title}}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
  • \r\n
    10\">\r\n \r\n
    \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{'admin_catalog_service_custom_add' | translate}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
","import { Component, OnDestroy } from '@angular/core';\r\nimport {\r\n DetailOverlaysService,\r\n ECatalogOverlay,\r\n} from '../../../detail-overlays.service';\r\n\r\n@Component({\r\n selector: 'lib-layers-catalog',\r\n templateUrl: './layers-catalog.component.html',\r\n styleUrls: ['../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class LayersCatalogComponent implements OnDestroy {\r\n constructor(private detailOverlaysService: DetailOverlaysService) {}\r\n\r\n ngOnDestroy() {\r\n this.detailOverlaysService.setActiveCatalogDetailOverlay(\r\n ECatalogOverlay.CATALOGINFO\r\n );\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
","import { Component, HostBinding } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport {\r\n LayersPreviewService,\r\n IGroupPreview,\r\n GroupPreview,\r\n SuperGroupPreview,\r\n ILayersInGroups,\r\n IIsyLayersPreview,\r\n ISuperGroupPreview,\r\n} from './layers-preview.service';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { IsyAdminService } from '../../../isy-admin.service';\r\nimport { getUniqueId } from '@isygis/isy-utils';\r\nimport { SelectLayersService, ICatalogLayer } from '../select-layers.service';\r\n\r\nexport enum EGroup {\r\n GROUP = 'admin_group_txt',\r\n SUPERGROUP = 'admin_super_group_txt',\r\n}\r\n\r\n@Component({\r\n selector: 'lib-layers-preview',\r\n templateUrl: './layers-preview.component.html',\r\n styleUrls: [\r\n '../../../isy-admin-new-style.component.scss',\r\n './layers-preview.component.scss',\r\n ],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class LayersPreviewComponent {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n projectConfig: IProjectConfig;\r\n groupsWithLayers: IGroupPreview[];\r\n tempProjectConfig: IProjectConfig;\r\n\r\n groups = EGroup;\r\n group = EGroup.GROUP;\r\n\r\n constructor(\r\n private layersPreviewService: LayersPreviewService,\r\n private adminService: IsyAdminService,\r\n private selectLayersService: SelectLayersService\r\n ) {}\r\n\r\n tempProjectConfig$ = this.adminService.tempProjectConfig$;\r\n groupsWithLayers$ = this.layersPreviewService.groupsWithLayers$;\r\n projectLayers$ = this.selectLayersService.searchCatalogs$.pipe(\r\n map((layers: ICatalogLayer[]) =>\r\n layers.filter((layer) => layer?.isSelected)\r\n )\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.groupsWithLayers$,\r\n this.tempProjectConfig$,\r\n this.projectLayers$,\r\n ]).pipe(\r\n map(\r\n ([layersInGroups, tempProjectConfig, catalogLayers]: [\r\n ILayersInGroups,\r\n IProjectConfig,\r\n ICatalogLayer[]\r\n ]) => ({\r\n superGroups: layersInGroups.superGroups,\r\n groupsWithLayers: layersInGroups.groupsWithLayers,\r\n layersInGroups,\r\n config: tempProjectConfig,\r\n catalogLayers,\r\n })\r\n ),\r\n // map(result => result.superGroups.map(sg => ({...sg, isEditing: false}) )),\r\n tap((result) => console.log('PREVIEW: ', result))\r\n );\r\n\r\n createGroup(\r\n group: EGroup,\r\n groupName: any,\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n switch (group) {\r\n case EGroup.GROUP: {\r\n const newGroup = new GroupPreview(\r\n groupName.value,\r\n getUniqueId(2),\r\n String(layersInGroups.groupsWithLayers.length),\r\n undefined\r\n );\r\n layersInGroups.groupsWithLayers.push(newGroup);\r\n break;\r\n }\r\n case EGroup.SUPERGROUP: {\r\n const newSuperGroup = new SuperGroupPreview(\r\n groupName.value,\r\n getUniqueId(2),\r\n String(layersInGroups.superGroups.length)\r\n );\r\n layersInGroups.superGroups.push(newSuperGroup);\r\n break;\r\n }\r\n }\r\n groupName.value = '';\r\n this.layersPreviewService.updateLayerOrderIndex(layersInGroups);\r\n }\r\n\r\n changeSuperGroupName(\r\n ev,\r\n index: number,\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n layersInGroups.superGroups[index].name = ev.target.value;\r\n this.layersPreviewService.updateSuperGroupsInTempProjectConfig(\r\n layersInGroups\r\n );\r\n }\r\n\r\n changeGroupName(ev, index: number, layersInGroups: ILayersInGroups): void {\r\n layersInGroups.groupsWithLayers[index].name = ev.target.value;\r\n this.layersPreviewService.updateGroupInTempProjectConfig(layersInGroups);\r\n }\r\n\r\n setGroup(g: EGroup): void {\r\n this.group = g;\r\n }\r\n\r\n dropSuperGroup(\r\n event: CdkDragDrop,\r\n superGroups: ISuperGroupPreview[],\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n moveItemInArray(superGroups, event.previousIndex, event.currentIndex);\r\n this.layersPreviewService.updateLayerOrderIndex(layersInGroups);\r\n }\r\n\r\n dropGroup(\r\n event: CdkDragDrop,\r\n groups: IGroupPreview[],\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n moveItemInArray(groups, event.previousIndex, event.currentIndex);\r\n this.layersPreviewService.updateLayerOrderIndex(layersInGroups);\r\n }\r\n\r\n dropLayer(\r\n event: CdkDragDrop,\r\n layers: IIsyLayersPreview[],\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n moveItemInArray(layers, event.previousIndex, event.currentIndex);\r\n this.layersPreviewService.updateLayerOrderIndex(layersInGroups);\r\n }\r\n\r\n removeSuperGroup(\r\n superGroup: ISuperGroupPreview,\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n layersInGroups.groupsWithLayers.forEach(\r\n (g) =>\r\n (g.supergroupid =\r\n g.supergroupid === superGroup.supergroupid\r\n ? undefined\r\n : g.supergroupid)\r\n );\r\n const superGroupIndex = layersInGroups.superGroups.findIndex(\r\n (s) => s.supergroupid === superGroup.supergroupid\r\n );\r\n layersInGroups.superGroups.splice(superGroupIndex, 1);\r\n this.layersPreviewService.removeSuperMapLayerFromProjectConfig(\r\n superGroup.supergroupid\r\n );\r\n this.layersPreviewService.updateLayerOrderIndex(layersInGroups);\r\n this.layersPreviewService.updateCountVisibleLayers(layersInGroups);\r\n }\r\n\r\n removeFromSuperGroup(\r\n group: IGroupPreview,\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n group.supergroupid = undefined;\r\n this.layersPreviewService.updateLayerOrderIndex(layersInGroups);\r\n this.layersPreviewService.updateCountVisibleLayers(layersInGroups);\r\n }\r\n\r\n removeGroup(group: IGroupPreview, layersInGroups: ILayersInGroups): void {\r\n let dummyGroup = layersInGroups.groupsWithLayers.find(\r\n (g) => g.groupid === '999'\r\n );\r\n if (!dummyGroup) {\r\n dummyGroup = this.layersPreviewService.createDummyGroup();\r\n }\r\n group.isyLayers.forEach((l) => {\r\n l.groupid = '999';\r\n dummyGroup.isyLayers.push(l);\r\n });\r\n\r\n const groupIndex = layersInGroups.groupsWithLayers.findIndex(\r\n (g) => g.groupid === group.groupid\r\n );\r\n layersInGroups.groupsWithLayers.splice(groupIndex, 1);\r\n this.layersPreviewService.removeMapLayerFromProjectConfig(group.groupid);\r\n this.layersPreviewService.updateLayerOrderIndex(layersInGroups);\r\n this.layersPreviewService.updateCountVisibleLayers(layersInGroups);\r\n }\r\n\r\n moveLayerToGroup(\r\n isyLayer: IIsyLayersPreview,\r\n moveFromGroup: IGroupPreview,\r\n moveToGroup: IGroupPreview,\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n isyLayer.groupid = moveToGroup.groupid;\r\n moveToGroup.isyLayers.push(isyLayer);\r\n const layerIndex = moveFromGroup.isyLayers.findIndex(\r\n (l) => l.guid === isyLayer.guid\r\n );\r\n moveFromGroup.isyLayers.splice(layerIndex, 1);\r\n this.layersPreviewService.updateLayerOrderIndex(layersInGroups);\r\n this.layersPreviewService.updateCountVisibleLayers(layersInGroups);\r\n }\r\n\r\n moveGroupToSuperGroup(\r\n superGroup: ISuperGroupPreview,\r\n group: IGroupPreview,\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n group.supergroupid = superGroup.supergroupid;\r\n this.layersPreviewService.updateLayerOrderIndex(layersInGroups);\r\n this.layersPreviewService.updateCountVisibleLayers(layersInGroups);\r\n }\r\n\r\n toggleLayerVisibility(\r\n layer: IIsyLayersPreview,\r\n layersInGroups: ILayersInGroups\r\n ): void {\r\n layer.isVisible = layer.isVisible === 'true' ? 'false' : 'true';\r\n this.layersPreviewService.updateCountVisibleLayers(layersInGroups);\r\n this.layersPreviewService.updateLayersInTempProjectConfig(layersInGroups);\r\n }\r\n\r\n getLocationInCatalog(\r\n sublyr: IIsyLayersPreview,\r\n catalogLayers: ICatalogLayer[]\r\n ) {\r\n const wms = catalogLayers.find((lyr) =>\r\n lyr.wmsLayers.some((elt) => elt.guid === sublyr.guid)\r\n );\r\n if (wms) {\r\n return `(WMS - ${wms.title})`;\r\n }\r\n const wfs = catalogLayers.find((lyr) =>\r\n lyr.vectorLayers.some((elt) => elt.guid === sublyr.guid)\r\n );\r\n if (wfs) {\r\n return `(WFS - ${wfs.title})`;\r\n }\r\n console.log('Unable to locate layer in catalogLayers');\r\n return '';\r\n }\r\n}\r\n","\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
    \r\n
  • \r\n {{g.value | translate}}\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
0\" class=\"ms-2 p-2 infoBox rounded\">{{'admin_groups_with_supergroup' | translate}}
\r\n
0\">\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{superGroup.name}}\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
0\">\r\n \r\n \r\n \r\n
\r\n
\r\n {{group.name}}\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{subLayer.name}} - {{getLocationInCatalog(subLayer, vm.catalogLayers)}}\r\n
\r\n
\r\n \r\n
    \r\n
  • \r\n {{g.name}}\r\n {{g.name | translate}}\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
0\" class=\"ms-2 p-2 infoBox rounded\">{{'admin_groups_without_supergroup' | translate}}
\r\n
0\">\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
0\" (click)=\"$event.stopPropagation()\">\r\n \r\n \r\n \r\n
\r\n
\r\n {{group.name}}\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
0 && group.groupid !== '999'\" [autoClose]=\"true\">\r\n \r\n
    \r\n
  • \r\n {{s.name}}\r\n
  • \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{subLayer.name}} - {{getLocationInCatalog(subLayer, vm.catalogLayers)}}\r\n
\r\n
1\" [autoClose]=\"true\">\r\n \r\n
    \r\n
  • \r\n {{g.name}}\r\n {{g.name | translate}}\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
0\"\r\n (click)=\"$event.stopPropagation()\">\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{group.name | translate}}\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {{subLayer.name}} - {{getLocationInCatalog(subLayer, vm.catalogLayers)}}\r\n
\r\n
1\" [autoClose]=\"true\">\r\n \r\n
    \r\n
  • \r\n {{g.name}}\r\n {{g.name | translate}}\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyAdminService } from '../../../isy-admin.service';\r\nimport {\r\n IMapLayer,\r\n ISuperMapLayer,\r\n SuperMapLayer,\r\n MapLayer,\r\n} from '@isygis/isymap-config';\r\nimport { SortByPipe } from '@isygis/isy-utils';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\nexport enum ELayerType {\r\n VECTOR,\r\n WMS,\r\n}\r\n\r\nexport interface IIsyLayersPreview {\r\n guid: string;\r\n groupid: string;\r\n name: string;\r\n isVisible: string;\r\n layerorder: number;\r\n layerType: ELayerType;\r\n}\r\n\r\nclass IsyLayersPreview implements IIsyLayersPreview {\r\n guid: string;\r\n groupid: string;\r\n name: string;\r\n isVisible: string;\r\n layerorder: number;\r\n layerType: ELayerType;\r\n constructor(\r\n guid: string,\r\n groupid: string,\r\n name: string,\r\n isVisible: string,\r\n layerorder: number,\r\n layerType: ELayerType\r\n ) {\r\n this.guid = guid;\r\n this.groupid = groupid;\r\n this.name = name;\r\n this.isVisible = isVisible;\r\n this.layerorder = layerorder;\r\n this.layerType = layerType;\r\n }\r\n}\r\n\r\nexport interface IGroupPreview {\r\n name: string;\r\n isEditingName?: boolean;\r\n groupid: string;\r\n supergroupid?: string;\r\n index: string;\r\n isOpen: boolean;\r\n isyLayers?: IIsyLayersPreview[];\r\n countVisibleLayers?: number;\r\n}\r\n\r\nexport class GroupPreview implements IGroupPreview {\r\n name: string;\r\n isEditingName?: boolean;\r\n groupid: string;\r\n isOpen: boolean;\r\n supergroupid: string;\r\n isyLayers?: IIsyLayersPreview[];\r\n index: string;\r\n constructor(\r\n name: string,\r\n groupid: string,\r\n index: string,\r\n supergroupid: string\r\n ) {\r\n this.name = name;\r\n this.isEditingName = false;\r\n this.groupid = groupid;\r\n this.isOpen = false;\r\n this.index = index;\r\n this.supergroupid = supergroupid ? supergroupid : undefined;\r\n this.isyLayers = [];\r\n }\r\n}\r\n\r\nexport interface ISuperGroupPreview {\r\n name: string;\r\n supergroupid: string;\r\n isOpen: boolean;\r\n index: string;\r\n isEditingName?: boolean;\r\n // groups?: IGroupPreview[];\r\n}\r\n\r\nexport class SuperGroupPreview implements ISuperGroupPreview {\r\n name: string;\r\n supergroupid: string;\r\n isOpen: boolean;\r\n isEditingName: boolean;\r\n index: string;\r\n // groups?: IGroupPreview[];\r\n constructor(name: string, supergroupid: string, index: string) {\r\n this.name = name;\r\n this.supergroupid = supergroupid;\r\n this.isOpen = false;\r\n this.isEditingName = false;\r\n this.index = index;\r\n }\r\n}\r\n\r\nexport interface ILayersInGroups {\r\n superGroups: ISuperGroupPreview[];\r\n groupsWithLayers: IGroupPreview[];\r\n}\r\n\r\nexport class LayersInGroups implements ILayersInGroups {\r\n superGroups: ISuperGroupPreview[];\r\n groupsWithLayers: IGroupPreview[];\r\n constructor() {\r\n this.superGroups = [];\r\n this.groupsWithLayers = [];\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class LayersPreviewService {\r\n constructor(\r\n private adminService: IsyAdminService,\r\n private sortByPipe: SortByPipe\r\n ) {}\r\n\r\n private tempProjectConfig;\r\n\r\n projectConfig$ = this.adminService.tempProjectConfig$;\r\n\r\n groupsWithLayers$ = combineLatest([this.projectConfig$]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => {\r\n this.tempProjectConfig = projectConfig;\r\n const superMapLayers = projectConfig.config.supermaplayers;\r\n const mapLayers = projectConfig.config.maplayer;\r\n const vector = projectConfig.config.vector;\r\n const wms = projectConfig.config.wms;\r\n\r\n const layersInGroups = new LayersInGroups();\r\n\r\n if (superMapLayers) {\r\n superMapLayers.forEach((s, index) => {\r\n const superGroup = new SuperGroupPreview(\r\n s.name,\r\n s.supergroupid,\r\n String(index)\r\n );\r\n layersInGroups.superGroups.push(superGroup);\r\n });\r\n }\r\n\r\n if (mapLayers) {\r\n mapLayers.forEach((m, index) => {\r\n const mapLayer = new GroupPreview(\r\n m.name,\r\n m.groupid,\r\n String(index),\r\n m.supergroupid\r\n );\r\n layersInGroups.groupsWithLayers.push(mapLayer);\r\n });\r\n }\r\n\r\n const newDummyGroup = this.createDummyGroup();\r\n layersInGroups.groupsWithLayers.push(newDummyGroup);\r\n\r\n if (wms) {\r\n wms.forEach((w) => {\r\n const newWms = new IsyLayersPreview(\r\n w.guid,\r\n w.groupid,\r\n w.name,\r\n w.options.visibility,\r\n w.layerorder,\r\n ELayerType.WMS\r\n );\r\n const findGroup = layersInGroups.groupsWithLayers.find(\r\n (g) => g.groupid === w.groupid\r\n );\r\n if (findGroup) {\r\n findGroup.isyLayers.push(newWms);\r\n } else {\r\n const dummyGroup = layersInGroups.groupsWithLayers.find(\r\n (g) => g.groupid === '999'\r\n );\r\n dummyGroup.isyLayers.push(newWms);\r\n }\r\n });\r\n }\r\n\r\n if (vector) {\r\n vector.forEach((v) => {\r\n const newVector = new IsyLayersPreview(\r\n v.guid,\r\n v.groupid,\r\n v.subname,\r\n v.display,\r\n v.layerorder,\r\n ELayerType.VECTOR\r\n );\r\n const findGroup = layersInGroups.groupsWithLayers.find(\r\n (g) => g.groupid === v.groupid\r\n );\r\n if (findGroup) {\r\n findGroup.isyLayers.push(newVector);\r\n } else {\r\n const dummyGroup = layersInGroups.groupsWithLayers.find(\r\n (g) => g.groupid === '999'\r\n );\r\n dummyGroup.isyLayers.push(newVector);\r\n }\r\n });\r\n }\r\n layersInGroups.groupsWithLayers.forEach((g) =>\r\n this.sortLayersInGroupByLayerOrder(g)\r\n );\r\n\r\n this.updateLayerOrderIndex(layersInGroups);\r\n this.updateCountVisibleLayers(layersInGroups);\r\n\r\n return layersInGroups;\r\n })\r\n );\r\n\r\n createDummyGroup(): GroupPreview {\r\n return new GroupPreview('other_layers', '999', '999', undefined);\r\n }\r\n\r\n private sortLayersInGroupByLayerOrder(g: IGroupPreview): void {\r\n g.isyLayers?.sort((layer1, layer2) => {\r\n const layerIndex1 = layer1.layerorder;\r\n const layerIndex2 = layer2.layerorder;\r\n if (layerIndex1 > layerIndex2) {\r\n return 1;\r\n }\r\n if (layerIndex1 < layerIndex2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n private sortSuperMapLayers(superMapLayers: ISuperMapLayer[]): void {\r\n superMapLayers?.sort((group1, group2) => {\r\n const groupIndex1 = Number(group1.index);\r\n const groupIndex2 = Number(group2.index);\r\n if (groupIndex1 > groupIndex2) {\r\n return 1;\r\n }\r\n if (groupIndex1 < groupIndex2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n private sortMapLayers(mapLayers: IMapLayer[]): void {\r\n mapLayers?.sort((group1, group2) => {\r\n const groupIndex1 = Number(group1.index);\r\n const groupIndex2 = Number(group2.index);\r\n if (groupIndex1 > groupIndex2) {\r\n return 1;\r\n }\r\n if (groupIndex1 < groupIndex2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n updateLayerOrderIndex(layerInGroups: LayersInGroups): void {\r\n let layerOrderIndex = 0;\r\n layerInGroups.superGroups.forEach((s) => {\r\n const groups = layerInGroups.groupsWithLayers.filter(\r\n (g) => g.supergroupid === s.supergroupid\r\n );\r\n groups.forEach((g) => {\r\n g.isyLayers.forEach((l) => {\r\n l.layerorder = layerOrderIndex;\r\n layerOrderIndex += 1;\r\n });\r\n });\r\n });\r\n const groupWithoutSuperGroup = layerInGroups.groupsWithLayers.filter(\r\n (g) => g.supergroupid === undefined || g.supergroupid === null\r\n );\r\n groupWithoutSuperGroup.forEach((g) => {\r\n g.isyLayers.forEach((l) => {\r\n l.layerorder = layerOrderIndex;\r\n layerOrderIndex += 1;\r\n });\r\n });\r\n\r\n layerInGroups.groupsWithLayers.forEach((g) =>\r\n this.sortLayersInGroupByLayerOrder(g)\r\n );\r\n let groupIndex = 0;\r\n layerInGroups.superGroups.forEach((s, index) => {\r\n s.index = String(index);\r\n const groups = layerInGroups.groupsWithLayers.filter(\r\n (g) => g.supergroupid === s.supergroupid\r\n );\r\n groups.forEach((g) => {\r\n g.index = String(groupIndex);\r\n groupIndex += 1;\r\n });\r\n });\r\n const groupsWithoutSuperGroups = layerInGroups.groupsWithLayers.filter(\r\n (g) => g.supergroupid === undefined || g.supergroupid === null\r\n );\r\n groupsWithoutSuperGroups.forEach((g) => {\r\n g.index = String(groupIndex);\r\n groupIndex += 1;\r\n });\r\n // layerInGroups.groupsWithLayers = this.sortByPipe.transform(layerInGroups.groupsWithLayers, 'asc', 'index');\r\n // console.log('SORTED LAYERS: ', layerInGroups);\r\n this.updateSuperGroupsInTempProjectConfig(layerInGroups);\r\n this.updateGroupInTempProjectConfig(layerInGroups);\r\n this.updateLayersInTempProjectConfig(layerInGroups);\r\n }\r\n\r\n updateSuperGroupsInTempProjectConfig(layersInGroups: LayersInGroups): void {\r\n const projectConfig = this.tempProjectConfig;\r\n const projectConfigSuperGroups = projectConfig.config.supermaplayers;\r\n layersInGroups.superGroups.forEach((s) => {\r\n const superGroupExist = projectConfigSuperGroups.find(\r\n (g) => g.supergroupid === s.supergroupid\r\n );\r\n if (superGroupExist) {\r\n superGroupExist.index = s.index;\r\n // Change name\r\n if (superGroupExist.name !== s.name) {\r\n superGroupExist.name = s.name;\r\n }\r\n } else {\r\n const newSuperMapLayer = new SuperMapLayer(\r\n s.supergroupid,\r\n s.index,\r\n s.name\r\n );\r\n projectConfigSuperGroups.push(newSuperMapLayer);\r\n }\r\n });\r\n this.sortSuperMapLayers(projectConfigSuperGroups);\r\n }\r\n\r\n updateGroupInTempProjectConfig(layersInGroups: LayersInGroups): void {\r\n const projectConfig = this.tempProjectConfig as IProjectConfig;\r\n const projectMapLayers = projectConfig.config.maplayer;\r\n layersInGroups.groupsWithLayers.forEach((g) => {\r\n const groupExist = projectMapLayers.find((m) => m.groupid === g.groupid);\r\n if (groupExist) {\r\n groupExist.index = g.index;\r\n groupExist.supergroupid = g.supergroupid;\r\n // Change name\r\n if (groupExist.name !== g.name) {\r\n groupExist.name = g.name;\r\n }\r\n } else {\r\n if (g.groupid !== '999') {\r\n const newMapLayer = new MapLayer(g.groupid, g.index, g.name);\r\n projectMapLayers.push(newMapLayer);\r\n }\r\n }\r\n });\r\n this.sortMapLayers(projectMapLayers);\r\n }\r\n\r\n private sortLayersByLayerOrder(layers: any[]): void {\r\n layers?.sort((group1, group2) => {\r\n const groupIndex1 = group1.layerorder;\r\n const groupIndex2 = group2.layerorder;\r\n if (groupIndex1 > groupIndex2) {\r\n return 1;\r\n }\r\n if (groupIndex1 < groupIndex2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n\r\n updateLayersInTempProjectConfig(layersInGroups: LayersInGroups): void {\r\n const projectConfig = this.tempProjectConfig as IProjectConfig;\r\n const wms = projectConfig.config.wms;\r\n const vector = projectConfig.config.vector;\r\n const allLayers = [];\r\n if (wms) {\r\n wms.forEach((w) => allLayers.push(w));\r\n }\r\n if (vector) {\r\n vector.forEach((v) => allLayers.push(v));\r\n }\r\n layersInGroups.groupsWithLayers.forEach((g) => {\r\n g.isyLayers.forEach((isyLayer) => {\r\n const findLayer = wms?.find((l) => l.guid === isyLayer.guid);\r\n if (findLayer) {\r\n findLayer.groupid =\r\n isyLayer.groupid === '999' ? undefined : isyLayer.groupid;\r\n findLayer.grouptitle = isyLayer.groupid === '999' ? '' : g.name;\r\n findLayer.layerorder = isyLayer.layerorder;\r\n findLayer.display = isyLayer.isVisible;\r\n findLayer.options.visibility = isyLayer.isVisible;\r\n }\r\n });\r\n });\r\n layersInGroups.groupsWithLayers.forEach((g) => {\r\n g.isyLayers.forEach((isyLayer) => {\r\n const findLayer = vector?.find((l) => l.guid === isyLayer.guid);\r\n if (findLayer) {\r\n findLayer.groupid =\r\n isyLayer.groupid === '999' ? undefined : isyLayer.groupid;\r\n findLayer.grouptitle = isyLayer.groupid === '999' ? '' : g.name;\r\n findLayer.layerorder = isyLayer.layerorder;\r\n findLayer.display = isyLayer.isVisible;\r\n }\r\n });\r\n });\r\n this.sortLayersByLayerOrder(wms);\r\n this.sortLayersByLayerOrder(vector);\r\n // this.sortByPipe.transform(wms, 'asc', 'layerorder');\r\n // this.sortByPipe.transform(vector, 'asc', 'layerorder');\r\n }\r\n\r\n updateCountVisibleLayers(layersInGroups: LayersInGroups): void {\r\n layersInGroups.groupsWithLayers.forEach((g) => {\r\n g.countVisibleLayers = g.isyLayers.filter(\r\n (l) => l.isVisible === 'true'\r\n ).length;\r\n });\r\n }\r\n\r\n removeSuperMapLayerFromProjectConfig(superGroupdId: string): void {\r\n const projectConfig = this.tempProjectConfig as IProjectConfig;\r\n const superMapLayers = projectConfig.config.supermaplayers;\r\n const superMapLayerIndex = superMapLayers?.findIndex(\r\n (s) => s.supergroupid === superGroupdId\r\n );\r\n superMapLayers.splice(superMapLayerIndex, 1);\r\n }\r\n\r\n removeMapLayerFromProjectConfig(groupId: string): void {\r\n const projectConfig = this.tempProjectConfig as IProjectConfig;\r\n const mapLayers = projectConfig.config.maplayer;\r\n const mapLayerIndex = mapLayers?.findIndex((m) => m.groupid === groupId);\r\n mapLayers.splice(mapLayerIndex, 1);\r\n }\r\n}\r\n","
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { SelectLayersService } from '../select-layers.service';\r\n\r\n@Component({\r\n selector: 'lib-layers-services',\r\n templateUrl: './layers-services.component.html',\r\n styleUrls: ['../../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class LayersServicesComponent implements OnInit, OnDestroy {\r\n catalogLibraryLoaded = false;\r\n\r\n constructor(private selectLayersService: SelectLayersService) {}\r\n\r\n ngOnInit(): void {\r\n this.selectLayersService.getCatalogLibrary().then(() => {\r\n this.catalogLibraryLoaded = true;\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.selectLayersService.closeCatalogLayer();\r\n }\r\n}\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { toggleHeightAnimation } from '../style-editor/toggle-height-animation';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n CompleteStyle,\r\n IFilter,\r\n Filter,\r\n IStyle,\r\n ICompleteStyle,\r\n Stroke,\r\n Fill,\r\n ImageStyle,\r\n Style,\r\n FilterOperator,\r\n} from '../style-editor/interfaces';\r\nimport { IsyAdminService } from '../../../../../isy-admin.service';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-filter-editor',\r\n animations: [toggleHeightAnimation],\r\n templateUrl: './filter-editor.component.html',\r\n styleUrls: [\r\n '../style-editor/style-editor.component.scss',\r\n './filter-editor.component.scss',\r\n ],\r\n})\r\nexport class FilterEditorComponent implements OnDestroy, OnInit {\r\n @Input() featureElements: any[];\r\n @Input() node: any;\r\n @Input() set styleFileName(name: string) {\r\n if (name.endsWith('.json')) {\r\n this.fileName = name.slice(0, -5);\r\n } else {\r\n this.fileName = '';\r\n }\r\n }\r\n @Input() catalog: any;\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n showStyleEditor = true;\r\n styleFromStyleEditor: IStyle[];\r\n initialStyle: IStyle[];\r\n initialFilter: IFilter[] = [];\r\n hover = false;\r\n\r\n // isFilterValueEmpty = true;\r\n // DEFAULT VALUES\r\n defStroke = new Stroke('rgba(0, 0, 0, 0.7)', 2, undefined);\r\n defFill = new Fill('rgba(255, 255, 255, 0.7)');\r\n defCircle = new ImageStyle(this.defFill, 10, this.defStroke);\r\n defPoint = new Style(\r\n undefined,\r\n undefined,\r\n undefined,\r\n this.defCircle,\r\n undefined,\r\n undefined,\r\n 'Point'\r\n );\r\n defLine = new Style(\r\n undefined,\r\n undefined,\r\n this.defStroke,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'Line'\r\n );\r\n defPolygon = new Style(\r\n this.defFill,\r\n undefined,\r\n this.defStroke,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'Polygon'\r\n );\r\n defStyleList = [this.defPoint, this.defLine, this.defPolygon];\r\n defAnd = new FilterOperator(\r\n { name: '', value: '' },\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined\r\n );\r\n defFilterOperatorList = [this.defAnd];\r\n\r\n defaultFilter = new Filter(\r\n 'Filter',\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined\r\n );\r\n filterList = [{ isVisible: true, filter: this.defaultFilter }];\r\n fileName: string;\r\n saveStyleClicked: boolean;\r\n\r\n constructor(\r\n private adminService: IsyAdminService,\r\n private mapService: IsyMapService,\r\n ) {}\r\n\r\n saveStyle$ = this.adminService.saveStyle$;\r\n subscription: Subscription = new Subscription();\r\n styleSubscription: Subscription = new Subscription();\r\n\r\n ngOnInit(): void {\r\n this.styleSubscription.add(\r\n this.adminService.completeChosenStyle$.subscribe((value: CompleteStyle) => {\r\n if (value) {\r\n this.hover = value.hover;\r\n\r\n const isStyleFromEditor = this.containsSpecifiedGeometryType(value.style);\r\n const isFilterFromEditor = value.filter?.some(filter => this.containsSpecifiedGeometryType(filter.style));\r\n\r\n if (isStyleFromEditor) {\r\n // Just to ensure that the style fetched is from the style / filter editor\r\n this.showStyleEditor = true;\r\n this.initialStyle = value.style;\r\n this.filterList = [{ isVisible: true, filter: this.defaultFilter }];\r\n this.initialFilter = [this.defaultFilter];\r\n } else if (isFilterFromEditor) {\r\n // Just to ensure that the style fetched is from the style / filter editor\r\n this.showStyleEditor = false;\r\n this.filterList = [];\r\n this.initialFilter = value.filter;\r\n for (const filter of value.filter) {\r\n this.filterList.push({ isVisible: true, filter });\r\n }\r\n this.initialStyle = this.defStyleList;\r\n }\r\n } else {\r\n // Set to default values\r\n this.showStyleEditor = true;\r\n this.initialStyle = this.defStyleList;\r\n this.filterList = [{ isVisible: true, filter: this.defaultFilter }];\r\n this.initialFilter = [this.defaultFilter];\r\n }\r\n })\r\n );\r\n }\r\n\r\n containsSpecifiedGeometryType(styleArray: IStyle[]): boolean {\r\n return styleArray?.some(s => ['Point', 'Line', 'Polygon', 'Text'].includes(s.geometryType));\r\n }\r\n\r\n toggleStyleEditor(): void {\r\n if (!this.showStyleEditor) {\r\n this.initialFilter = this.filterList.map((item) => item.filter);\r\n }\r\n this.showStyleEditor = !this.showStyleEditor;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.styleSubscription.unsubscribe();\r\n this.saveStyle();\r\n }\r\n\r\n addFilterEditor(): void {\r\n this.filterList.push({\r\n isVisible: true,\r\n filter: { ...this.defaultFilter },\r\n });\r\n this.initialFilter.push({ ...this.defaultFilter });\r\n }\r\n\r\n removeFilterEditor(index: number): void {\r\n if (index > -1) {\r\n this.filterList.splice(index, 1);\r\n this.initialFilter.splice(index, 1);\r\n }\r\n }\r\n\r\n setStyle(index: number, styleInput: IStyle[]): void {\r\n if (this.showStyleEditor) {\r\n this.styleFromStyleEditor = styleInput;\r\n } else if (styleInput) {\r\n this.filterList[index].filter = {\r\n ...this.filterList[index].filter,\r\n style: styleInput,\r\n };\r\n }\r\n }\r\n\r\n toggleHover(): void {\r\n this.hover = !this.hover;\r\n }\r\n\r\n setFilter(index: number, data: IFilter): void {\r\n if (!this.showStyleEditor) {\r\n this.filterList[index].filter = {\r\n ...this.filterList[index].filter,\r\n and: data.and,\r\n or: data.or,\r\n };\r\n }\r\n }\r\n\r\n makeStyleString(): string {\r\n let completeStyle: ICompleteStyle;\r\n if (this.showStyleEditor) {\r\n completeStyle = new CompleteStyle(\r\n this.styleFromStyleEditor,\r\n undefined,\r\n this.hover\r\n );\r\n } else {\r\n const completeList: IFilter[] = [];\r\n for (const filter of this.filterList) {\r\n completeList.push(filter.filter);\r\n }\r\n completeStyle = new CompleteStyle(undefined, completeList, this.hover);\r\n }\r\n const styleString = JSON.stringify(completeStyle, null, 2);\r\n return styleString;\r\n }\r\n\r\n saveStyle(): void {\r\n this.subscription.unsubscribe();\r\n this.subscription = new Subscription();\r\n this.saveStyleClicked = true;\r\n\r\n if (!this.fileName) {\r\n return;\r\n }\r\n\r\n // If the file name consist of irregular characters, replace them with underscore and notify the user.\r\n const oldName = this.fileName;\r\n const newName = this.fileName.replace(/[^0-9a-zA-ZæøåÆØÅ\\-_]/g, '_');\r\n let nameHasChanged = false;\r\n if (oldName !== newName) {\r\n nameHasChanged = true;\r\n this.fileName = newName;\r\n }\r\n\r\n const styleString = this.makeStyleString();\r\n const newBlob = new Blob([styleString], { type: 'application/json' });\r\n\r\n this.subscription.add(\r\n this.saveStyle$.subscribe((value) => {\r\n if (value === true) {\r\n let fileName = `${this.fileName}.json`;\r\n this.node.styleFileName = fileName;\r\n this.adminService.setStyleFile(fileName);\r\n const mapConfig = this.mapService.getConfig();\r\n fileName = fileName.substring(\r\n 0,\r\n fileName.toLowerCase().indexOf('.json')\r\n );\r\n // Hack for filenames with #: If filename consist of #, it must be replaced by %23 for the api-call to work properly.\r\n fileName = fileName.replace(/#/g, '%23');\r\n this.catalog.stylemapjson =\r\n mapConfig.configurl +\r\n '/api/v2/style/json?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n fileName;\r\n this.catalog.stylemapurl = null;\r\n this.adminService.setStyleUpdated();\r\n this.subscription.unsubscribe();\r\n }\r\n })\r\n );\r\n this.adminService.setStyleUpdated(this.fileName, newBlob, nameHasChanged);\r\n }\r\n}\r\n","
\r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n {{filterEditor.filter.name }}\r\n
\r\n
1\" class=\"ps-2 pe-2 bd-highlight card-header-icon text-danger\" (click)=\"removeFilterEditor(i)\" title=\"{{'delete' | translate}}\">\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{'admin_style_toggle_hover' | translate}}\r\n
\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n {{'admin_style_toggle_hover' | translate}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n {{'filename_empty_error' | translate}}\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n Filter,\r\n FilterOperator,\r\n} from '../../style-editor/interfaces';\r\nimport { toggleHeightAnimation } from '../../style-editor/toggle-height-animation';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Component({\r\n selector: 'lib-filter-tree',\r\n templateUrl: './filter-tree.component.html',\r\n animations: [toggleHeightAnimation],\r\n styleUrls: [\r\n '../../style-editor/style-editor.component.scss',\r\n './filter-tree.component.scss',\r\n ],\r\n})\r\nexport class FilterTreeComponent implements OnInit {\r\n @Output() setFilterParent = new EventEmitter();\r\n @Input() set featureElementsInput(features: any[]) {\r\n if (Array.isArray(features) && features.length >= 1) {\r\n this.featureElements = features.sort((a, b) =>\r\n a['name'] > b['name'] ? 1 : a['name'] === b['name'] ? 0 : -1\r\n );\r\n }\r\n }\r\n @Input() set initialFilter(filter: Filter) {\r\n if (filter) {\r\n this.andOrOr = filter.or ? 'or' : 'and';\r\n const initialListOfFilters = [];\r\n\r\n const operators = {\r\n equalTo: 'equalTo',\r\n notEqualTo: 'notEqualTo',\r\n greaterThan: 'greaterThan',\r\n lessThan: 'lessThan',\r\n contains: 'contains',\r\n notContains: 'notContains',\r\n inArray: 'inArray',\r\n notInArray: 'notInArray',\r\n };\r\n\r\n if (!filter[this.andOrOr]) {\r\n initialListOfFilters.push({ operator: 'equalTo', name: '', value: '' });\r\n } else {\r\n for (let i = 0; i < filter[this.andOrOr].length; i++) {\r\n const currentFilter = filter[this.andOrOr][i];\r\n for (const operator in operators) {\r\n if (currentFilter[operator]) {\r\n initialListOfFilters.push({\r\n operator: operators[operator],\r\n name: currentFilter[operator].name,\r\n value: currentFilter[operator].value,\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.listOfFilters = initialListOfFilters;\r\n }\r\n }\r\n\r\n featureElements;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n toggleFiltering = true;\r\n operatorList = [\r\n 'equalTo',\r\n 'notEqualTo',\r\n 'lessThan',\r\n 'greaterThan',\r\n 'contains',\r\n 'notContains',\r\n 'inArray',\r\n 'notInArray',\r\n ];\r\n andOrOrList = [\r\n { name: 'and', operator: 'and' },\r\n { name: 'or', operator: 'or' },\r\n ];\r\n listOfFilters: any[] = [];\r\n andOrOr = 'and';\r\n\r\n constructor() {\r\n this.listOfFilters.push({ operator: 'equalTo', name: '', value: '' });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.emitFilter();\r\n }\r\n\r\n addFilter(): void {\r\n this.listOfFilters.push({ operator: 'equalTo', name: '', value: '' });\r\n this.emitFilter();\r\n }\r\n\r\n removeFilter(index: number): void {\r\n this.listOfFilters.splice(index, 1);\r\n this.emitFilter();\r\n }\r\n\r\n setFilterAttribute(index: number, attribute: string): void {\r\n this.listOfFilters[index].name = attribute;\r\n this.emitFilter();\r\n }\r\n\r\n setFilterValue(index: number, value: string): void {\r\n this.listOfFilters[index].value = value;\r\n this.emitFilter();\r\n }\r\n\r\n setFilterArrayValue(index: number, value: string, arrayIndex: number): void {\r\n this.listOfFilters[index].value[arrayIndex] = value;\r\n this.emitFilter();\r\n }\r\n\r\n appendValue(index: number) {\r\n this.listOfFilters[index].value.push('');\r\n this.emitFilter();\r\n }\r\n\r\n removeValue(index: number) {\r\n this.listOfFilters[index].value.pop();\r\n this.emitFilter();\r\n }\r\n\r\n trackValue(i): void {\r\n return i;\r\n }\r\n\r\n setOperator(i: number, operator: string): void {\r\n // Value should be an array for \"in\", \"notIn\" operators, and string for the rest.\r\n if (\r\n (operator === 'inArray' || operator === 'notInArray') &&\r\n !Array.isArray(this.listOfFilters[i].value)\r\n ) {\r\n this.listOfFilters[i].value = [this.listOfFilters[i].value, ''];\r\n } else if (\r\n operator !== 'inArray' &&\r\n operator !== 'notInArray' &&\r\n Array.isArray(this.listOfFilters[i].value)\r\n ) {\r\n this.listOfFilters[i].value = this.listOfFilters[i].value[0];\r\n }\r\n this.listOfFilters[i].operator = operator;\r\n this.emitFilter();\r\n }\r\n\r\n changeAndOrOrOperator(operator: any): void {\r\n this.andOrOr = operator.operator;\r\n this.emitFilter();\r\n }\r\n\r\n emitFilter(): void {\r\n const completeFilterList: FilterOperator[] = [];\r\n for (const currentFilter of this.listOfFilters) {\r\n const filterOperator = new FilterOperator(\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined\r\n );\r\n filterOperator[currentFilter.operator] = {\r\n name: currentFilter.name,\r\n value: currentFilter.value,\r\n };\r\n completeFilterList.push(filterOperator);\r\n }\r\n this.setFilterParent.emit({\r\n and: this.andOrOr === 'and' ? completeFilterList : undefined,\r\n or: this.andOrOr === 'or' ? completeFilterList : undefined,\r\n });\r\n }\r\n}\r\n","\r\n
\r\n
\r\n {{'admin_service_filtering_header' | translate }}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
  • \r\n \r\n {{feature.name}}\r\n \r\n
  • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
  • \r\n \r\n {{operator + '_filter_operator' | translate}}\r\n \r\n
  • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'admin_service_filter_value' | translate }}
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    1\">\r\n
    \r\n \r\n
    \r\n
  • \r\n \r\n {{operator.operator + '_filter_operator' | translate}}\r\n \r\n
  • \r\n
    \r\n
    \r\n
    \r\n
    1\" class=\"col-md-auto text-danger\" (click)=\"removeFilter(i)\">\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    ","import * as fastXml from 'fast-xml-parser';\r\n\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport {\r\n Component,\r\n ViewChild,\r\n ElementRef,\r\n OnDestroy,\r\n OnInit,\r\n} from '@angular/core';\r\nimport {\r\n KeyPair,\r\n KeyPairArray,\r\n} from '@isygis/isy-configs';\r\nimport { FileSystemFileEntry, NgxFileDropEntry } from 'ngx-file-drop';\r\nimport {\r\n IGroupPreview,\r\n ILayersInGroups,\r\n LayersPreviewService,\r\n} from '../../layers-preview/layers-preview.service';\r\nimport { JsonStyleDef, SERVICESTYLE, UserStyleProps } from './service-style';\r\nimport { Subject, Subscription, combineLatest } from 'rxjs';\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\nimport {\r\n catchError,\r\n debounceTime,\r\n filter,\r\n map,\r\n switchMap,\r\n take,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs/operators';\r\n\r\nimport { CATALOGLAYERFIELDS } from '../../layer-fields';\r\nimport { FileSaverService } from 'ngx-filesaver';\r\nimport { IsyAdminService } from '../../../../isy-admin.service';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { LayerNode } from '../../../../data';\r\nimport { PageChangedEvent } from 'ngx-bootstrap/pagination';\r\nimport { SelectLayersService } from '../../select-layers.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { FeatureInfoElement, IFeatureInfoElement, IMetadataService, IProjectConfig, IVector, IWms } from '@isygis/isymap-config';\r\n\r\nenum EFeatureElement {\r\n ATTACHMENT = 'attachment',\r\n EDITABLE = 'editable',\r\n HASCODELIST = 'hascodelist',\r\n CODELIST = 'codevalue',\r\n TEXT = 'text',\r\n DATATYPE = 'datatype',\r\n}\r\n\r\nenum EAccordion {\r\n PROPERTIESLIST,\r\n CARTOGRAPHY,\r\n INTEGRATION,\r\n ADVANCEDSETTINGS,\r\n}\r\n\r\n@Component({\r\n selector: 'lib-service-detail',\r\n templateUrl: './service-detail.component.html',\r\n styleUrls: [\r\n '../../../../isy-admin-new-style.component.scss',\r\n './service-detail.component.scss',\r\n ],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class ServiceDetailComponent implements OnInit, OnDestroy {\r\n @ViewChild('newConstant', { static: false }) newConstant: ElementRef;\r\n @ViewChild('newIdentifier', { static: false }) newIdentifier: ElementRef;\r\n\r\n uploadToServerSubscription: Subscription = new Subscription();\r\n acceptFiles = ['.json', '.sld'];\r\n attachmentFileInput = {\r\n value: '',\r\n };\r\n\r\n files: NgxFileDropEntry[] = [];\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n catalogLayerFileds = CATALOGLAYERFIELDS;\r\n\r\n // dropIsOpen = false;\r\n\r\n allContentArray: IFeatureInfoElement[] = [];\r\n contentArray: IFeatureInfoElement[] = [];\r\n returnedArray: IFeatureInfoElement[] = [];\r\n currentPage = 1;\r\n itemsPerPage = 6;\r\n\r\n pointsizeStep = 1;\r\n pointsizeMin = 2;\r\n pointsizeMax = 32;\r\n\r\n linewidthStep = 1;\r\n linewidthMin = 1;\r\n linewidthMax = 30;\r\n linedashValue = undefined;\r\n lineStyle = 'solid';\r\n\r\n pointType = 'circle';\r\n pointIcon = 'faCircle';\r\n image = undefined;\r\n regularshape = undefined;\r\n subscription: Subscription = new Subscription();\r\n currentNode: LayerNode | undefined = undefined;\r\n currentCatalog: IWms | IVector | undefined = undefined;\r\n currentFilename: string | undefined = undefined;\r\n\r\n // strokeColorFromInput = '#777777';\r\n // fillColorFromInput = '#0000FF';\r\n // strokeHoverColorFromInput = '#AA00AA';\r\n // fillHoverColorFromInput = '#00FF00';\r\n\r\n opacityValue = 75;\r\n opacityStep = 1;\r\n opacityMin = 1;\r\n opacityMax = 100;\r\n\r\n minScale = null;\r\n maxScale = 100000;\r\n styleFileName = '';\r\n\r\n serviceStyle = SERVICESTYLE;\r\n activeStyleDef: JsonStyleDef | any; // = new JsonStyleDef();\r\n\r\n catalogLayerVector: IVector;\r\n catalogLayerWms: IWms;\r\n openedCatalogLayer;\r\n editFeatureType;\r\n\r\n filterSelectedFeatureInfoElement = false;\r\n\r\n eAccordion = EAccordion;\r\n activeAccordion = EAccordion.PROPERTIESLIST;\r\n\r\n featureElements: IFeatureInfoElement[];\r\n public keyUpFeatureInfo = new Subject();\r\n\r\n urlParams = new Map();\r\n urlParamsEntries: IterableIterator<[string, string]>;\r\n urlParamsArray: any[];\r\n wmsParams = '';\r\n wfsParams = '';\r\n destroy$: Subject = new Subject();\r\n\r\n datatypes = ['text', 'number', 'decimal', 'textarea', 'boolean'];\r\n\r\n dragIdx: number;\r\n dragOverIdx: number;\r\n\r\n showFilterEditor = true;\r\n selectedUnit;\r\n constructor(\r\n // private defineGroupsService: DefineGroupsService,\r\n private commonService: IsyCommonService,\r\n private fileSaver: FileSaverService,\r\n private adminService: IsyAdminService,\r\n private mapService: IsyMapService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private selectLayersService: SelectLayersService,\r\n private layersPreviewService: LayersPreviewService,\r\n private toasterService: IsyToasterService\r\n ) {\r\n this.keyUpFeatureInfo\r\n .pipe(\r\n map((value) => {\r\n value.isSelected = true;\r\n return value;\r\n }),\r\n debounceTime(500)\r\n )\r\n .subscribe((result) => {\r\n this.changeValueInFeatureInfoElement(result, EFeatureElement.TEXT);\r\n });\r\n }\r\n\r\n groupsList$ = this.layersPreviewService.groupsWithLayers$; //this.defineGroupsService.definedGroups$;\r\n styleList$ = this.adminService.getStyles$;\r\n saveStyle$ = this.adminService.saveStyle$;\r\n projectConfig$ = this.adminService.tempProjectConfig$;\r\n styleFileLoad$ = this.adminService.styleFileLoad$;\r\n deleteStyle$ = this.adminService.deleteStyle$;\r\n\r\n styleFile$ = combineLatest([this.styleFileLoad$]).pipe(\r\n switchMap(([styleFileName]: [string]) => {\r\n if (styleFileName) {\r\n this.styleFileName = styleFileName;\r\n\r\n return this.adminService.getStyle(styleFileName).pipe(\r\n map((result) => {\r\n return this._parseResult(result);\r\n }),\r\n catchError(this.handleGetFileError.bind(this))\r\n );\r\n } else {\r\n return Promise.resolve();\r\n }\r\n })\r\n );\r\n\r\n styleFileBlob$ = this.styleFileLoad$.pipe(\r\n switchMap((styleFileName: string) => {\r\n if (styleFileName) {\r\n this.styleFileName = styleFileName; \r\n const fileNameExtension = styleFileName.split('.').pop();\r\n fileNameExtension === 'sld' ? this.showFilterEditor = false : this.showFilterEditor = true;\r\n return this.adminService.getStyleBlob(styleFileName).pipe(\r\n map((result) => {\r\n // Download style file\r\n return { styleFile: result, name: styleFileName };\r\n }),\r\n catchError(this.handleGetFileError.bind(this))\r\n );\r\n } else {\r\n return Promise.resolve();\r\n }\r\n })\r\n );\r\n\r\n openedCatalogLayer$ = this.selectLayersService.openedCatalogLayer$.pipe(\r\n map((layer) => {\r\n this.activeAccordion = EAccordion.PROPERTIESLIST;\r\n if (this.isIWms(layer)) {\r\n this.catalogLayerWms = layer;\r\n this.catalogLayerVector = undefined;\r\n } else {\r\n this.catalogLayerVector = layer;\r\n this.catalogLayerWms = undefined;\r\n }\r\n this.activeStyleDef = new JsonStyleDef(); // TODO: copy style from layer\r\n // extract file name\r\n if (layer) {\r\n const url = layer['stylemapurl'] || layer['stylemapjson'];\r\n if (url) {\r\n const index = url.indexOf('name=');\r\n if (index >= 0) {\r\n const filename = url.substring(index + 5);\r\n this.styleFileName = layer['stylemapurl']\r\n ? filename + '.sld'\r\n : filename + '.json';\r\n this.adminService.setStyleFile(this.styleFileName);\r\n }\r\n } else {\r\n this.styleFileName = '';\r\n this.adminService.setStyleFile(this.styleFileName);\r\n this.adminService.setCompleteChosenStyle(null);\r\n }\r\n }\r\n this.openedCatalogLayer = layer;\r\n return layer;\r\n })\r\n );\r\n editFeatureType$ = this.selectLayersService.editFeatureType$.pipe(\r\n map((editFeatureType) => {\r\n this.contentArray = [];\r\n this.returnedArray = [];\r\n this.currentPage = 1;\r\n if (editFeatureType && editFeatureType.featureElements) {\r\n this.allContentArray = this.uniqueNames(\r\n editFeatureType.featureElements\r\n );\r\n this.contentArray = this.uniqueNames(editFeatureType.featureElements);\r\n const startItem = (this.currentPage - 1) * this.itemsPerPage;\r\n const endItem = this.currentPage * this.itemsPerPage;\r\n this.returnedArray = this.contentArray.slice(startItem, endItem);\r\n this.featureElements = this.uniqueNames(\r\n editFeatureType.featureElements\r\n );\r\n setTimeout(() => {\r\n this.currentPage = 1;\r\n }, 100);\r\n editFeatureType.geometryType = this.findGeometryType(\r\n editFeatureType.featureElements\r\n );\r\n }\r\n this.filterSelectedFeatureInfoElement = false;\r\n this.editFeatureType = editFeatureType;\r\n return editFeatureType;\r\n })\r\n );\r\n\r\n // LE: Printer ut valgt stil, fra dropdown meny. styleFile er udefinert på første lasting av siden.\r\n // TODO: openedCatalogLayer - fix any should be IVector | IWms\r\n vm$ = combineLatest([\r\n this.openedCatalogLayer$,\r\n this.editFeatureType$,\r\n this.styleList$,\r\n this.styleFile$,\r\n this.styleFileBlob$,\r\n this.groupsList$,\r\n this.projectConfig$,\r\n ]).pipe(\r\n map(\r\n ([\r\n openedCatalogLayer,\r\n editFeatureType,\r\n styleList,\r\n styleFile,\r\n styleFileBlob,\r\n groupsList,\r\n projectConfig,\r\n ]: [\r\n any,\r\n LayerNode,\r\n any[],\r\n any,\r\n any,\r\n ILayersInGroups,\r\n IProjectConfig\r\n ]) => ({\r\n openedCatalogLayer,\r\n editFeatureType,\r\n transactions:\r\n openedCatalogLayer?.featureinfo?.editable === 'true' ||\r\n (editFeatureType ? editFeatureType.transactions : false),\r\n styleFiles: styleList,\r\n styleFile,\r\n styleFileBlob,\r\n groupsList: groupsList.groupsWithLayers,\r\n projectConfig,\r\n })\r\n ),\r\n tap((result) => console.log('SERIVCE DETAIL: ', result))\r\n );\r\n\r\n wmsUrlParam$ = this.openedCatalogLayer$.pipe(\r\n takeUntil(this.destroy$),\r\n filter((layer: any) => this.isIWms(layer)),\r\n //filter((layerData) => layerData.params?.customparams !== undefined),\r\n map((layerData: any) => this.mapUrlParams(layerData.params))\r\n );\r\n\r\n wfsUrlParam$ = this.openedCatalogLayer$.pipe(\r\n takeUntil(this.destroy$),\r\n filter((layerData: any) => layerData !== undefined),\r\n filter(\r\n (layerData: any) => layerData.options?.protocol?.params !== undefined\r\n ),\r\n map((layerData: any) =>\r\n this.mapUrlParams(layerData.options.protocol.params)\r\n )\r\n );\r\n\r\n ngOnInit(): void {\r\n this.wmsUrlParam$.subscribe();\r\n this.wfsUrlParam$.subscribe();\r\n\r\n this.subscription.add(\r\n this.commonService.dynamicModalAcceptButtonClick$.subscribe((value) => {\r\n if (value === 'admin_delete_json_sld') {\r\n this.adminService.setDeleteStyle(this.currentFilename);\r\n this.deleteStyle$.pipe(take(1)).subscribe((value) => {\r\n if (value === true) {\r\n console.log('Delete successfull');\r\n // Set current style file to ''\r\n this.styleFileName = '';\r\n this.selectStyleFile(this.currentNode, this.currentCatalog, '');\r\n } else {\r\n console.log('Delete failed');\r\n }\r\n });\r\n this.commonService.dynamicModalAcceptButtonClick(undefined);\r\n }\r\n })\r\n );\r\n }\r\n\r\n get incrementValue(): number {\r\n // Extract the numeric part from the increment string\r\n return parseInt(this.openedCatalogLayer.options.timeoptions.increment, 10);\r\n }\r\n\r\n set incrementValue(value: number) {\r\n // Update the increment string with the new numeric value\r\n const incrementParts = this.openedCatalogLayer.options.timeoptions.increment.split(' ');\r\n let incrementUnit = incrementParts[1];\r\n if (incrementUnit === undefined) {\r\n incrementUnit = 'day';\r\n }\r\n this.openedCatalogLayer.options.timeoptions.increment = `${value} ${incrementUnit}`;\r\n }\r\n\r\n get incrementUnit(): string {\r\n // Extract the unit part from the increment string\r\n const incrementParts = this.openedCatalogLayer.options.timeoptions.increment.split(' ');\r\n return incrementParts[1];\r\n }\r\n\r\n set incrementUnit(value: string) {\r\n // Update the increment string with the new unit value\r\n const incrementParts = this.openedCatalogLayer.options.timeoptions.increment.split(' ');\r\n if (incrementParts[0] === \"\") {\r\n incrementParts[0] = '1';\r\n }\r\n this.openedCatalogLayer.options.timeoptions.increment = `${incrementParts[0]} ${value}`;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n this.uploadToServerSubscription.unsubscribe();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n selectEpsg(vm: any, epsg: string): void {\r\n vm.options.dataprojection = epsg;\r\n }\r\n\r\n uniqueNames(list: any[]): any[] {\r\n const namesSeen = new Set();\r\n return list.filter((item) => {\r\n if (!namesSeen.has(item.name)) {\r\n namesSeen.add(item.name);\r\n return true;\r\n }\r\n return false;\r\n });\r\n }\r\n\r\n downloadStyleFile(fileAndFileName): void {\r\n if (fileAndFileName) {\r\n this.fileSaver.save(fileAndFileName.styleFile, fileAndFileName.name);\r\n } else {\r\n console.log('Could not save file');\r\n }\r\n }\r\n\r\n deleteStyleFile(node: LayerNode, catalog, fileName: string): void {\r\n if (fileName) {\r\n this.currentNode = node;\r\n this.currentCatalog = catalog;\r\n this.currentFilename = fileName;\r\n this.dynamicModalService.showModalWithComponent(\r\n 'admin_delete_json_sld',\r\n undefined,\r\n undefined,\r\n {\r\n showHeader: true,\r\n showFooter: true,\r\n contentText: 'admin_delete_permission',\r\n modalHeader: {\r\n headerIcon: fontAwesomeIcons.faTrash,\r\n headerTitle: 'admin_delete_json_sld',\r\n showCloseBtn: false,\r\n iconColor: 'text-danger',\r\n },\r\n modalFooter: { showCancelButton: true, acceptButtonText: 'delete' },\r\n }\r\n );\r\n }\r\n }\r\n\r\n addUrlParam(\r\n identifier: string,\r\n constant: string,\r\n openedCatalogLayer: IWms | IVector\r\n ): void {\r\n if (identifier && constant) {\r\n this.urlParams.set(identifier, constant);\r\n if (this.newConstant?.nativeElement?.value) {\r\n this.newConstant.nativeElement.value = '';\r\n }\r\n if (this.newIdentifier?.nativeElement?.value) {\r\n this.newIdentifier.nativeElement.value = '';\r\n }\r\n }\r\n this.updateConfig(openedCatalogLayer);\r\n }\r\n\r\n removeUrlParam(identifier: string, openedCatalogLayer: IWms | IVector): void {\r\n if (identifier) {\r\n this.urlParams.delete(identifier);\r\n this.updateConfig(openedCatalogLayer);\r\n }\r\n }\r\n\r\n updateConfig(layerConfig: IWms | IVector): void {\r\n const paramKeyValues: KeyPairArray = [];\r\n if (this.urlParams.size > 0) {\r\n for (const [key, value] of this.urlParams) {\r\n const pair = { Key: key, Value: value };\r\n paramKeyValues.push(pair);\r\n }\r\n }\r\n if (this.isIWms(layerConfig)) {\r\n layerConfig.params.customparams = paramKeyValues;\r\n } else {\r\n layerConfig.options.protocol.params.customparams = paramKeyValues;\r\n }\r\n }\r\n\r\n mapUrlParams(params: any): void {\r\n this.urlParams.clear();\r\n if (params.customparams === null || params.customparams === undefined) {\r\n return;\r\n }\r\n const customParams = params.customparams;\r\n customParams.forEach((param: KeyPair) => {\r\n this.urlParams.set(param.Key, param.Value);\r\n });\r\n }\r\n\r\n isIWms(object: any): object is IWms {\r\n return object && 'url' in object;\r\n }\r\n\r\n addMetadataService(catalogVectorLayer: IVector): void {\r\n if (!catalogVectorLayer.featureinfo.metadataservices) {\r\n catalogVectorLayer.featureinfo.metadataservices = [];\r\n }\r\n catalogVectorLayer.featureinfo.metadataservices.push({\r\n metadataurl: '',\r\n opennewwindow: 'false',\r\n title: '',\r\n });\r\n }\r\n removeMetadataService(\r\n featureInfo: IMetadataService,\r\n catalogVectorLayer: IVector\r\n ): void {\r\n const featureIndex =\r\n catalogVectorLayer.featureinfo.metadataservices.findIndex(\r\n (f) =>\r\n f.metadataurl === featureInfo.metadataurl &&\r\n f.title === featureInfo.title &&\r\n f.opennewwindow === featureInfo.opennewwindow\r\n );\r\n if (featureIndex >= 0) {\r\n catalogVectorLayer.featureinfo.metadataservices.splice(featureIndex, 1);\r\n }\r\n }\r\n\r\n _parseResult(result): any {\r\n if (!result) {\r\n return;\r\n }\r\n try {\r\n if (typeof result === 'object' && (result.style || result.filter)) {\r\n if (result.scale) {\r\n this.minScale = result.scale.min;\r\n this.maxScale = result.scale.max;\r\n }\r\n const completeChosenStyle = {\r\n hover: result.hover ? result.hover : undefined,\r\n scale: {\r\n max: result.scale.max ? result.scale.max : undefined,\r\n min: result.scale.min ? result.scale.min : undefined,\r\n },\r\n style: result.style ? result.style : undefined,\r\n filter: result.filter ? result.filter : undefined,\r\n };\r\n if (Array.isArray(result.style) && result.style.length >= 1) {\r\n // TODO: Loop through the result.style array to fetch all the styles.\r\n for (const styleObject of result.style) {\r\n this.activeStyleDef.fill = styleObject.fill\r\n ? styleObject.fill\r\n : this.activeStyleDef.fill;\r\n this.activeStyleDef.stroke = styleObject.stroke\r\n ? styleObject.stroke\r\n : this.activeStyleDef.stroke;\r\n this.activeStyleDef.image = styleObject.image\r\n ? styleObject.image\r\n : this.activeStyleDef.image;\r\n this.activeStyleDef.text = styleObject.text\r\n ? styleObject.text\r\n : this.activeStyleDef.text;\r\n }\r\n } else if (result.style) {\r\n const stroke = result.style.stroke;\r\n if (stroke) {\r\n this.activeStyleDef.stroke.color = this.rgbStringToHex(\r\n stroke.color\r\n );\r\n this.activeStyleDef.stroke.width = stroke.width;\r\n }\r\n const fill = result.style.fill;\r\n if (fill) {\r\n this.activeStyleDef.fill.color = this.rgbStringToHex(fill.color);\r\n }\r\n }\r\n this.adminService.setCompleteChosenStyle(completeChosenStyle);\r\n return result;\r\n } else if (result.toLowerCase().indexOf('= 0) {\r\n return this._parseAsSld(result);\r\n }\r\n } catch {\r\n // carry on..\r\n }\r\n }\r\n _parseAsSld(result: string): any {\r\n const asJson = fastXml.parse(result);\r\n if (\r\n asJson &&\r\n asJson['sld:StyledLayerDescriptor'] &&\r\n asJson['sld:StyledLayerDescriptor']['sld:NamedLayer']\r\n ) {\r\n const userStyle =\r\n asJson['sld:StyledLayerDescriptor']['sld:NamedLayer']['sld:UserStyle'];\r\n if (userStyle && userStyle['0']) {\r\n const active = userStyle['0'];\r\n const activeValues = this._parseSldUserStyle(active);\r\n this.activeStyleDef.fill.color = activeValues.fill;\r\n this.activeStyleDef.stroke.color = activeValues.stroke;\r\n this.activeStyleDef.stroke.width = activeValues.strokeWidth;\r\n if (activeValues.size) {\r\n this.activeStyleDef.image.radius = activeValues.size;\r\n }\r\n }\r\n // TODO: Make it work with the style editor as well?\r\n // this.adminService.setActiveStyle(this.activeStyleDef);\r\n return asJson;\r\n }\r\n }\r\n _parseFromJson(userStyle): UserStyleProps {\r\n const fillColor = userStyle.fill.color;\r\n const strokeColor = userStyle.stroke.color;\r\n const size = userStyle.image?.radius;\r\n const strokeWidth = userStyle.stroke.width;\r\n\r\n const result: UserStyleProps = {\r\n fill: fillColor,\r\n stroke: strokeColor,\r\n size: size || this.activeStyleDef.image.radius,\r\n strokeWidth: strokeWidth || this.activeStyleDef.stroke.width,\r\n };\r\n return result;\r\n }\r\n\r\n _parseSldUserStyle(userStyle): UserStyleProps {\r\n let fillColor = '';\r\n let strokeColor = '';\r\n let size = 0;\r\n let strokeWidth = 1;\r\n\r\n if (\r\n userStyle &&\r\n userStyle['sld:FeatureTypeStyle'] &&\r\n userStyle['sld:FeatureTypeStyle']['sld:Rule']\r\n ) {\r\n const pointSymbolizer =\r\n userStyle['sld:FeatureTypeStyle']['sld:Rule']['sld:PointSymbolizer'];\r\n if (pointSymbolizer && pointSymbolizer['sld:Graphic']) {\r\n const graphic = pointSymbolizer['sld:Graphic'];\r\n if (graphic) {\r\n const mark = graphic['sld:Mark'];\r\n if (mark) {\r\n const fill = mark['sld:Fill'];\r\n const stroke = mark['sld:Stroke'];\r\n\r\n if (fill) {\r\n const cssParameter = fill['sld:CssParameter'];\r\n fillColor = this._getValuesFromSldLiteral(cssParameter)[0];\r\n }\r\n if (stroke) {\r\n const cssParameter = stroke['sld:CssParameter'];\r\n const values = this._getValuesFromSldLiteral(cssParameter);\r\n if (values) {\r\n if (values[0]) {\r\n strokeColor = values[0];\r\n }\r\n if (values[1]) {\r\n strokeWidth = values[1];\r\n }\r\n }\r\n }\r\n }\r\n\r\n const sldSize = graphic['sld:Size'];\r\n if (sldSize) {\r\n size = Number.parseInt(\r\n this._getValuesFromSldLiteral(sldSize)[0],\r\n 10\r\n );\r\n }\r\n }\r\n }\r\n const polygonSymbolizer =\r\n userStyle['sld:FeatureTypeStyle']['sld:Rule']['sld:PolygonSymbolizer'];\r\n if (polygonSymbolizer) {\r\n const fill = polygonSymbolizer['sld:Fill'];\r\n const stroke = polygonSymbolizer['sld:Stroke'];\r\n\r\n if (fill) {\r\n fillColor = fill['sld:CssParameter'];\r\n }\r\n if (stroke) {\r\n strokeColor = stroke['sld:CssParameter'];\r\n }\r\n }\r\n }\r\n const result: UserStyleProps = {\r\n fill: fillColor,\r\n stroke: strokeColor,\r\n size: size || this.activeStyleDef.image?.radius,\r\n strokeWidth: strokeWidth || this.activeStyleDef.stroke.width,\r\n };\r\n return result;\r\n }\r\n _getValuesFromSldLiteral(field): any[] {\r\n const values = [];\r\n if (field) {\r\n if (typeof field === 'string') {\r\n values[0] = field;\r\n } else if (typeof field === 'number') {\r\n values[0] = field.toString();\r\n } else {\r\n if (field[0] && field[0]['ogc:Literal']) {\r\n values[0] = field[0]['ogc:Literal'];\r\n }\r\n if (field && field['ogc:Literal']) {\r\n values[0] = field['ogc:Literal'];\r\n }\r\n }\r\n }\r\n return values;\r\n }\r\n\r\n findGeometryType(elements: IFeatureInfoElement[]): string {\r\n let geoType = 'polygon'; // default\r\n elements.forEach((element) => {\r\n if (element && element.name && element.type) {\r\n const name = element.name.toLowerCase();\r\n const type = element.type.toLowerCase();\r\n if (\r\n name === 'geometri' ||\r\n name === 'geometry' ||\r\n name === 'wkb_geometry'\r\n ) {\r\n if (type.indexOf('point') >= 0) {\r\n geoType = 'point';\r\n }\r\n if (type.indexOf('polygon') >= 0) {\r\n geoType = 'polygon';\r\n }\r\n if (type.indexOf('line') >= 0) {\r\n geoType = 'line';\r\n }\r\n }\r\n }\r\n });\r\n return geoType;\r\n }\r\n selectFeatureElement(selectedFeature: IFeatureInfoElement): void {\r\n if (!this.catalogLayerVector) {\r\n return;\r\n }\r\n\r\n const feature = this.allContentArray.find(\r\n (f) => f.name === selectedFeature.name\r\n );\r\n feature.isSelected = !feature.isSelected;\r\n\r\n const featureInfoIndex =\r\n this.catalogLayerVector.featureinfo.featureinfoelement.findIndex(\r\n (f) => f.name === feature.name\r\n );\r\n\r\n if (feature.isSelected && featureInfoIndex < 0) {\r\n const newFeatureInfoElement = new FeatureInfoElement(\r\n feature.name,\r\n feature.text,\r\n feature.datatype\r\n );\r\n feature.datatype = newFeatureInfoElement.datatype;\r\n this.catalogLayerVector.featureinfo.featureinfoelement.push(\r\n newFeatureInfoElement\r\n );\r\n }\r\n if (!feature.isSelected && featureInfoIndex >= 0) {\r\n feature.editable = 'false';\r\n feature.attachment = 'false';\r\n feature.hascodelist = 'false';\r\n feature.datatype = undefined;\r\n\r\n this.catalogLayerVector.featureinfo.featureinfoelement.splice(\r\n featureInfoIndex,\r\n 1\r\n );\r\n }\r\n }\r\n\r\n toggleAllSelected() {\r\n this.toggleFilterFeatureInfoElement(true);\r\n if (this.allSelected()) {\r\n this.allContentArray.forEach((f) => {\r\n f.isSelected = true;\r\n this.selectFeatureElement(f);\r\n });\r\n } else {\r\n this.allContentArray.forEach((f) => {\r\n f.isSelected = false;\r\n this.selectFeatureElement(f);\r\n });\r\n }\r\n }\r\n allSelected(): boolean {\r\n return this.allContentArray.filter((f) => !f.isSelected).length === 0;\r\n }\r\n\r\n selectHasCodeList(feature: IFeatureInfoElement): void {\r\n feature.hascodelist =\r\n feature.hascodelist && feature.hascodelist === 'true' ? 'false' : 'true';\r\n this.changeValueInFeatureInfoElement(feature, EFeatureElement.HASCODELIST);\r\n }\r\n\r\n selectEditable(feature: IFeatureInfoElement): void {\r\n feature.editable =\r\n feature.editable && feature.editable === 'true' ? 'false' : 'true';\r\n this.changeValueInFeatureInfoElement(feature, EFeatureElement.EDITABLE);\r\n }\r\n\r\n selectAttachment(feature: IFeatureInfoElement): void {\r\n this.allContentArray.forEach((f) => (f.attachment = 'false'));\r\n feature.attachment = 'true';\r\n this.changeValueInFeatureInfoElement(feature, EFeatureElement.ATTACHMENT);\r\n }\r\n\r\n selectDatatype(feature: IFeatureInfoElement, datatype: string): void {\r\n feature.datatype = datatype;\r\n this.changeValueInFeatureInfoElement(feature, EFeatureElement.DATATYPE);\r\n }\r\n\r\n changeCodeList(codevalueString: any, feature: IFeatureInfoElement): void {\r\n feature.codevalue = codevalueString.value.split(',');\r\n this.changeValueInFeatureInfoElement(feature, EFeatureElement.CODELIST);\r\n }\r\n\r\n private changeValueInFeatureInfoElement(\r\n feature: any,\r\n value: EFeatureElement\r\n ): void {\r\n if (this.catalogLayerVector) {\r\n feature.isSelected = true;\r\n const featureIndex =\r\n this.catalogLayerVector.featureinfo.featureinfoelement.findIndex(\r\n (f) => f.name === feature.name\r\n );\r\n if (featureIndex >= 0) {\r\n this.catalogLayerVector.featureinfo.featureinfoelement[featureIndex][\r\n value\r\n ] = feature[value];\r\n } else {\r\n const featureInfoElement = new FeatureInfoElement(\r\n feature.name,\r\n feature.text,\r\n feature.datatype\r\n );\r\n featureInfoElement[value] = feature[value];\r\n this.catalogLayerVector.featureinfo.featureinfoelement.push(\r\n featureInfoElement\r\n );\r\n }\r\n }\r\n }\r\n\r\n selectFeatureOpenMode(service: IMetadataService, mode: string): void {\r\n if (service) {\r\n switch (mode) {\r\n case 'Nytt vindu': {\r\n // todo: change to enum\r\n service.opennewwindow = 'true';\r\n break;\r\n }\r\n case 'Modal': {\r\n service.opennewwindow = 'false';\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n selectSrsDimension(openedCatalogLayer: any, mode: string): void {\r\n if (openedCatalogLayer) {\r\n switch (mode) {\r\n case '2D': {\r\n // todo: change to enum\r\n openedCatalogLayer.options.protocol.params.srsdimension = '2';\r\n break;\r\n }\r\n case '3D': {\r\n openedCatalogLayer.options.protocol.params.srsdimension = '3';\r\n break;\r\n }\r\n default:\r\n openedCatalogLayer.options.protocol.params.srsdimension = null;\r\n }\r\n }\r\n }\r\n\r\n selectLayerType(openedCatalogLayer: any, mode: string): void {\r\n if (openedCatalogLayer) {\r\n switch (mode) {\r\n case 'Arealplan': {\r\n // todo: change to enum\r\n openedCatalogLayer.featureinfo.layertype = 'Arealplan';\r\n break;\r\n }\r\n case 'Eiendom': {\r\n openedCatalogLayer.featureinfo.layertype = 'Eiendom';\r\n break;\r\n }\r\n case 'Byggesak': {\r\n openedCatalogLayer.featureinfo.layertype = 'Byggesak';\r\n break;\r\n }\r\n case 'Delesak': {\r\n openedCatalogLayer.featureinfo.layertype = 'Delesak';\r\n break;\r\n }\r\n default:\r\n openedCatalogLayer.featureinfo.layertype = null;\r\n }\r\n }\r\n }\r\n\r\n toggleFilterFeatureInfoElement(filter: boolean): void {\r\n this.filterSelectedFeatureInfoElement = !filter;\r\n this.currentPage = 1;\r\n setTimeout(() => {\r\n this.contentArray = this.filterSelectedFeatureInfoElement\r\n ? this.allContentArray.filter((c) => c.isSelected === true)\r\n : this.allContentArray;\r\n if (this.splitInPages()) {\r\n const startItem = 0;\r\n const endItem = 1 * this.itemsPerPage;\r\n this.returnedArray = this.contentArray.slice(startItem, endItem);\r\n } else {\r\n this.returnedArray =\r\n this.catalogLayerVector.featureinfo.featureinfoelement;\r\n }\r\n }, 100);\r\n }\r\n\r\n toggleTimeoptions(openedCatalogLayer: any): void{\r\n if (openedCatalogLayer.options.timeoptions && openedCatalogLayer.options.timeoptions.starttime != \"\" && openedCatalogLayer.options.timeoptions.endtime != \"\") {\r\n openedCatalogLayer.options.timeoptions = undefined;\r\n } else {\r\n openedCatalogLayer.options.timeoptions = {\r\n starttime: '2024-01-01T00:00',\r\n endtime: '2025-01-01T00:00',\r\n increment: '1 day'\r\n };\r\n } }\r\n // chooseGroup(node: LayerNode, groupName: string) {\r\n // node.groupName = groupName;\r\n // }\r\n\r\n chooseGroup(\r\n catalogVectorLayer: IVector,\r\n group: IGroupPreview,\r\n node: LayerNode\r\n ): void {\r\n catalogVectorLayer.grouptitle = group.name;\r\n catalogVectorLayer.groupid = group.groupid;\r\n node.hasWarning = false;\r\n }\r\n\r\n pageChanged(event: PageChangedEvent): void {\r\n const startItem = (event.page - 1) * event.itemsPerPage;\r\n const endItem = event.page * event.itemsPerPage;\r\n this.currentPage = event.page;\r\n this.returnedArray = this.contentArray.slice(startItem, endItem);\r\n }\r\n\r\n toggleAccordion(type: EAccordion): void {\r\n this.activeAccordion = type;\r\n }\r\n\r\n toggleParamsGetFeatureInfoWms(openedCatalogLayer): void {\r\n if (openedCatalogLayer.params.getfeatureinfo === 'true') {\r\n openedCatalogLayer.params.getfeatureinfo = 'false';\r\n } else {\r\n openedCatalogLayer.params.getfeatureinfo = 'true';\r\n }\r\n }\r\n\r\n setPointSize(value): void {\r\n this.activeStyleDef.image.radius = value;\r\n this.setPointType(this.pointType);\r\n }\r\n\r\n setPointType(value): void {\r\n this.pointType = value;\r\n if (value === 'circle') {\r\n this.image = {\r\n radius: this.activeStyleDef.image.radius,\r\n };\r\n this.regularshape = undefined;\r\n this.pointIcon = 'faCircle';\r\n } else if (value === 'triangle') {\r\n this.image = undefined;\r\n this.regularshape = {\r\n points: 3,\r\n radius: this.activeStyleDef.image.radius,\r\n rotation: Math.PI / 4,\r\n angle: 0,\r\n };\r\n this.pointIcon = 'faPlay';\r\n } else if (value === 'square') {\r\n this.image = undefined;\r\n this.regularshape = {\r\n points: 4,\r\n radius: this.activeStyleDef.image.radius,\r\n angle: Math.PI / 4,\r\n };\r\n this.pointIcon = 'faSquare';\r\n }\r\n }\r\n componentToHex(c: number): string {\r\n const hex = c.toString(16);\r\n return hex.length === 1 ? '0' + hex : hex;\r\n }\r\n\r\n rgbToHex(r: number, g: number, b: number): string {\r\n return (\r\n '#' +\r\n this.componentToHex(r) +\r\n this.componentToHex(g) +\r\n this.componentToHex(b)\r\n );\r\n }\r\n rgbStringToRgb(rgbString): any {\r\n const rgb = rgbString.replace(/[^\\d.,]+/g, '').split(',');\r\n return rgb\r\n ? {\r\n r: parseInt(rgb[0], 10),\r\n g: parseInt(rgb[1], 10),\r\n b: parseInt(rgb[2], 10),\r\n // a: [rgb[3]\r\n }\r\n : null;\r\n }\r\n\r\n rgbStringToHex(rgbString: string): string {\r\n const rgb = this.rgbStringToRgb(rgbString);\r\n if (rgb) {\r\n return this.rgbToHex(rgb.r, rgb.g, rgb.b);\r\n }\r\n return rgbString;\r\n }\r\n\r\n setStrokeColor(color: string): void {\r\n this.activeStyleDef.stroke.color = color; // this.getRgbColor(color, 1);\r\n }\r\n\r\n setFillColor(color: string): void {\r\n this.activeStyleDef.fill.color = color; // this.getRgbColor(color, this.opacityValue / 100);\r\n }\r\n\r\n setLineWidth(value): void {\r\n this.activeStyleDef.stroke.width = parseInt(value, 10);\r\n if (this.linedashValue) {\r\n this.linedashValue[1] = 2 * this.activeStyleDef.stroke.width;\r\n }\r\n }\r\n\r\n setLineType(value): void {\r\n this.lineStyle = value;\r\n switch (value) {\r\n case 'solid': {\r\n this.linedashValue = undefined;\r\n break;\r\n }\r\n case 'dashed': {\r\n this.linedashValue = [10, 10];\r\n break;\r\n }\r\n case 'dotted': {\r\n this.linedashValue = [0, 7];\r\n break;\r\n }\r\n }\r\n if (this.linedashValue) {\r\n this.linedashValue[1] = 2 * this.activeStyleDef.stroke.width;\r\n }\r\n }\r\n\r\n selectStyleFile(node: LayerNode, catalog, fileName: string): void {\r\n node.styleFileName = fileName;\r\n this.adminService.setStyleFile(fileName);\r\n\r\n const mapConfig = this.mapService.getConfig();\r\n // Hack for filenames with #: If filename consist of #, it must be replaced by %23 for the api-call to work properly.\r\n fileName = fileName.replace(/#/g, '%23');\r\n if (fileName && fileName.toLowerCase().indexOf('.sld') > 0) {\r\n fileName = fileName.substr(0, fileName.toLowerCase().indexOf('.sld'));\r\n catalog.stylemapurl =\r\n mapConfig.configurl +\r\n '/api/v2/style?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n fileName;\r\n catalog.stylemapjson = null;\r\n } else if (fileName && fileName.toLowerCase().indexOf('.json') > 0) {\r\n fileName = fileName.substr(0, fileName.toLowerCase().indexOf('.json'));\r\n catalog.stylemapjson =\r\n mapConfig.configurl +\r\n '/api/v2/style/json?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n fileName;\r\n catalog.stylemapurl = null;\r\n } else {\r\n catalog.stylemapjson = '';\r\n catalog.stylemapurl = '';\r\n }\r\n }\r\n\r\n getActivePointStyle(): any {\r\n return {\r\n color: this.activeStyleDef.fill.color,\r\n 'font-size': `${this.activeStyleDef.image.radius}px`,\r\n };\r\n }\r\n\r\n getActiveStyle(): any {\r\n return {\r\n 'border-color': this.activeStyleDef.stroke.color,\r\n 'border-style': `${this.lineStyle}`,\r\n 'border-width': `${this.activeStyleDef.stroke.width}px`,\r\n 'background-color': this.activeStyleDef.fill.color,\r\n };\r\n }\r\n\r\n getActiveLineStyle(): any {\r\n return {\r\n 'border-color': this.activeStyleDef.stroke.color,\r\n 'border-style': `${this.lineStyle}`,\r\n 'border-width': `${this.activeStyleDef.stroke.width}px`,\r\n 'background-color': 'rgba(0,0,0,0)',\r\n };\r\n }\r\n\r\n getIcon(): any {\r\n return this.pointIcon;\r\n }\r\n\r\n private isAcceptedFile(file: File): boolean {\r\n return this.acceptFiles.some((ending) =>\r\n file.name.toLowerCase().endsWith(ending)\r\n );\r\n }\r\n\r\n // fix upload - remove file array\r\n uploadFiles(files: any, node: LayerNode, catalog): void {\r\n this.adminService.setStyleUpdated();\r\n if (files && files.length) {\r\n for (const currFile of files) {\r\n if (this.isAcceptedFile(currFile)) {\r\n this.upload2Server(node, catalog, currFile);\r\n return; // Return after first file with correct file extension is uploaded (should only upload one file).\r\n }\r\n }\r\n }\r\n }\r\n\r\n public dropped(files: NgxFileDropEntry[], node: LayerNode, catalog): void {\r\n this.files = files;\r\n for (const droppedFile of this.files) {\r\n if (droppedFile.fileEntry.isFile) {\r\n const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;\r\n fileEntry.file((file: File) => {\r\n if (this.isAcceptedFile(file)) {\r\n this.upload2Server(node, catalog, file);\r\n return; // Return after first file with correct file extension is uploaded (should only upload one file).\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n upload2Server(node: LayerNode, catalog, file: any): void {\r\n let fileExtension = '';\r\n let fileName = '';\r\n if (file.name.indexOf('.json') > 0) {\r\n fileExtension = file.name.slice(-5);\r\n fileName = file.name.slice(0, -5);\r\n } else if (file.name.indexOf('.sld') > 0) {\r\n fileExtension = file.name.slice(-4);\r\n fileName = file.name.slice(0, -4);\r\n }\r\n\r\n // If the file name consist of irregular characters, replace them with underscore and notify the user.\r\n const oldName = fileName;\r\n const newName = fileName.replace(/[^0-9a-zA-ZæøåÆØÅ\\-_]/g, '_');\r\n let nameHasChanged = false;\r\n if (oldName !== newName) {\r\n nameHasChanged = true;\r\n fileName = newName;\r\n }\r\n\r\n this.uploadToServerSubscription.unsubscribe();\r\n this.uploadToServerSubscription = new Subscription();\r\n this.uploadToServerSubscription.add(\r\n this.saveStyle$.subscribe((value) => {\r\n if (value === true) {\r\n this.selectStyleFile(node, catalog, fileName + fileExtension);\r\n this.adminService.setStyleUpdated(undefined, undefined);\r\n this.uploadToServerSubscription.unsubscribe();\r\n }\r\n })\r\n );\r\n this.adminService.setStyleUpdated(fileName, file, nameHasChanged);\r\n console.log('uploading...', file);\r\n }\r\n\r\n private handleGetFileError(err): Promise {\r\n // this.toasterService.error('fileDownloadError_toaster_msg');\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n if (err.status === 404) {\r\n this.styleFileName = '';\r\n this.selectStyleFile(\r\n this.editFeatureType,\r\n this.openedCatalogLayer,\r\n ''\r\n );\r\n }\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n return Promise.resolve();\r\n }\r\n\r\n dragableIsActive(): boolean {\r\n return this.filterSelectedFeatureInfoElement;\r\n }\r\n\r\n splitInPages(): boolean {\r\n return !this.dragableIsActive();\r\n }\r\n\r\n drop(event: CdkDragDrop) {\r\n moveItemInArray(\r\n this.catalogLayerVector.featureinfo.featureinfoelement,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n}\r\n","
    \r\n
    \r\n
    {{'admin_layers_edit_node' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{featureElement.text ? featureElement.text + ' (' + featureElement.name +\r\n ')' : featureElement.name}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {{'admin_layers_no_group' | translate}}\r\n \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n {{'admin_layers_selected_group_title' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{group.name}}\r\n {{group.name |\r\n translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{'admin_service_select_props' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_edit_enabled' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{(editable | translate)}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_select_geometry_type' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{(geometryType | translate)}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_send_username' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{(username | translate)}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_has_code_list' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{codelist.id}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {{'admin_layers_select_all' | translate}}\r\n
    \r\n
    \r\n {{'admin_remove_filter' | translate}}\r\n {{'admin_set_filter_features' | translate}}\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n {{'admin_layers_select' | translate}}\r\n
    \r\n
    \r\n {{'admin_layers_alias_name' | translate}}\r\n
    \r\n
    \r\n {{'admin_has_code_list' | translate}}\r\n
    \r\n
    \r\n {{'admin_editable' | translate}}\r\n
    \r\n
    \r\n {{'admin_datatype' | translate}}\r\n
    \r\n
    \r\n {{'admin_attachment' | translate}}\r\n
    \r\n
    \r\n
    0\" cdkDropList (cdkDropListDropped)=\"drop($event)\"\r\n [cdkDropListDisabled]=\"!dragableIsActive()\" class=\"drag-list d-flex flex-column\">\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{t | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_unable_to_retrive_properties' | translate}}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n\r\n
    \r\n
    itemsPerPage\">\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{'admin_service_integeration' | translate}}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_opens_as' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{mode}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_send_isytoken' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{'admin_service_cartogeraphy' | translate}}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{featureElement.text ? featureElement.text + ' (' +\r\n featureElement.name + ')' : featureElement.name}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_layers_selected_style_title' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{file}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_select_file_json_sld_for_upload' | translate}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{'admin_service_advanced' | translate}}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {{'admin_service_layer_type' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{layertype}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {{'admin_service_dimension' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{dimension}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_get_without_proxy' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_use_single_tile' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_use_gatekeeper' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_transparent' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_transparent' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_get_feature_info' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_service_use_time_slider' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Fra:\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n Til:\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n Increment:\r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{unit}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_show_neighbor_list' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_activate_advanced_filter' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n Send dataprojeksjon med BBOX\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n
    • \r\n {{mapbound.epsg}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {{'admin_layers_custom_url_parameters' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_layers_description' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    {{'admin_layers_expand_tree_info' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n 5\r\n
    \r\n
    {{'admin_layers_count_info' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    {{'admin_service_delete_from_list' | translate}}
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    {{'admin_layers_select_info' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    {{'admin_service_copy_selected_layer' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    {{'admin_layers_no_feature_warning_info' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    ","export interface UserStyleProps {\r\n fill?: string;\r\n stroke?: string;\r\n size?: number;\r\n strokeWidth?: number;\r\n}\r\n\r\nexport interface Scale {\r\n min?: number;\r\n max?: number;\r\n}\r\n\r\nexport interface JsonStyle {\r\n hover?: boolean;\r\n scale?: Scale;\r\n style?: JsonStyleDef[];\r\n}\r\n\r\nexport interface Stroke {\r\n color: string;\r\n width: number;\r\n lineCap?: string;\r\n lineDash?: number[];\r\n}\r\n\r\nexport interface Fill {\r\n color: string;\r\n}\r\n\r\nexport interface JsonStyleDefTest {\r\n image?: {\r\n radius: number;\r\n stroke: Stroke;\r\n fill: Fill;\r\n };\r\n stroke: Stroke;\r\n fill: Fill;\r\n}\r\n\r\nexport const SERVICESTYLE = {\r\n // pointsizeStep: 1,\r\n // pointsizeMin: 2,\r\n // pointsizeMax: 32,\r\n // linewidthStep: 1,\r\n // linewidthMin: 1,\r\n // linewidthMax: 30,\r\n // linedashValue: undefined,\r\n // lineStyle: 'solid',\r\n // pointType: 'circle',\r\n // pointIcon: 'faCircle',\r\n // image: undefined,\r\n // regularshape: undefined,\r\n // strokeColorFromInput: '#777777',\r\n // fillColorFromInput: '#0000FF',\r\n // strokeHoverColorFromInput: '#AA00AA',\r\n // fillHoverColorFromInput: '#00FF00',\r\n // opacityValue: 75,\r\n // opacityStep: 1,\r\n // opacityMin: 1,\r\n // opacityMax: 100,\r\n // styleFileName: ''\r\n};\r\n\r\nexport class JsonStyleDef {\r\n image?: {\r\n radius: number;\r\n stroke: {\r\n color: string;\r\n width: number;\r\n };\r\n fill: {\r\n color: string;\r\n };\r\n };\r\n stroke: {\r\n color: string;\r\n width: number;\r\n };\r\n fill: {\r\n color: string;\r\n };\r\n constructor() {\r\n (this.image = {\r\n radius: 5,\r\n stroke: {\r\n color: undefined,\r\n width: 2,\r\n },\r\n fill: {\r\n color: undefined,\r\n },\r\n }),\r\n (this.stroke = {\r\n color: undefined,\r\n width: 2,\r\n }),\r\n (this.fill = {\r\n color: undefined,\r\n });\r\n }\r\n // Todo: Getter/Setter that transforms to/from hex/rgb color...\r\n setStrokeColor(color: string) {\r\n this.stroke.color = color;\r\n }\r\n}\r\n","import { Component, EventEmitter, Output, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n styleUrls: [\r\n '../style-editor.component.scss',\r\n './color-picker.component.scss',\r\n ],\r\n})\r\nexport class ColorPickerComponent {\r\n color: string;\r\n\r\n @Input() fillColor?: boolean;\r\n @Input() set initialColor(value: string) {\r\n this.color = value;\r\n }\r\n @Output() setColorParent = new EventEmitter();\r\n\r\n constructor() {\r\n this.color = `rgba(0, 0, 0, 1)`;\r\n }\r\n\r\n emitColor(): void {\r\n this.setColorParent.emit(this.color);\r\n }\r\n}\r\n","\r\n
    \r\n
    {{'fill_color_editor_txt' | translate }}
    \r\n
    {{'stroke_color_txt' | translate }}
    \r\n \r\n
    \r\n","export interface Item {\r\n id: number;\r\n name: string;\r\n isVisible: boolean;\r\n}\r\n\r\n/* export interface StylingArray {\r\n style: IStyling[];\r\n}\r\n\r\nexport interface IStyling {\r\n regularShape?: IRegularShapeStyle;\r\n image?: IImageStyle;\r\n text?: ITextStyle;\r\n} */\r\n\r\nexport interface ICompleteStyle {\r\n hover: boolean;\r\n scale: {\r\n max: number;\r\n min: number;\r\n };\r\n style: IStyle[];\r\n filter: IFilter[];\r\n}\r\n\r\nexport class CompleteStyle implements ICompleteStyle {\r\n hover: boolean;\r\n scale: {\r\n max: number;\r\n min: number;\r\n };\r\n style: IStyle[];\r\n filter: IFilter[];\r\n constructor(style: IStyle[], filter: IFilter[], hover: boolean) {\r\n this.hover = hover;\r\n this.scale = {\r\n max: 1000000,\r\n min: 1,\r\n };\r\n this.style = style;\r\n this.filter = filter;\r\n }\r\n}\r\n\r\nexport interface IFilter {\r\n name: string;\r\n and: IFilterOperator[];\r\n or: IFilterOperator[];\r\n style: IStyle[];\r\n scale?: IScale;\r\n}\r\n\r\nexport class Filter implements IFilter {\r\n name: string;\r\n and: IFilterOperator[];\r\n or: IFilterOperator[];\r\n style: IStyle[];\r\n scale?: IScale;\r\n constructor(\r\n name: string,\r\n and: IFilterOperator[],\r\n or: IFilterOperator[],\r\n style: IStyle[],\r\n scale: IScale\r\n ) {\r\n this.name = name;\r\n this.and = and;\r\n this.or = or;\r\n this.style = style;\r\n this.scale = scale;\r\n }\r\n}\r\n/*\r\nexport interface IFilter2 {\r\n name: string;\r\n andOrOrOperator: string;\r\n children: IFilterOperator2[];\r\n style: IStyle[];\r\n scale?: IScale;\r\n}\r\n\r\nexport class Filter2 implements IFilter2 {\r\n name: string;\r\n andOrOrOperator: string;\r\n children: IFilterOperator2[];\r\n style: IStyle[];\r\n scale?: IScale;\r\n constructor(name: string, andOrOrOperator: string, children: IFilterOperator2[], style: IStyle[], scale: IScale) {\r\n this.name = name;\r\n this.andOrOrOperator = andOrOrOperator;\r\n this.children = children;\r\n this.style = style;\r\n this.scale = scale;\r\n }\r\n}\r\n\r\nexport interface IFilterOperator2 {\r\n operator: string;\r\n child: {\r\n name: string,\r\n value: string,\r\n };\r\n}\r\n\r\nexport class FilterOperator2 implements IFilterOperator2 {\r\n operator: string;\r\n child: {\r\n name: string,\r\n value: string\r\n };\r\n constructor(operator: string, child: any) {\r\n this.operator = operator;\r\n this.child = child;\r\n }\r\n} */\r\n\r\nexport interface IScale {\r\n min: number;\r\n max: number;\r\n}\r\n\r\nexport class Scale implements IScale {\r\n min: number;\r\n max: number;\r\n constructor(min: number, max: number) {\r\n this.min = min;\r\n this.max = max;\r\n }\r\n}\r\n\r\nexport interface IFilterOperator {\r\n equalTo?: {\r\n name: string;\r\n value: string;\r\n };\r\n notEqualTo?: {\r\n name: string;\r\n value: string;\r\n };\r\n greaterThan?: {\r\n name: string;\r\n value: string;\r\n };\r\n lessThan?: {\r\n name: string;\r\n value: string;\r\n };\r\n contains?: {\r\n name: string;\r\n value: string;\r\n };\r\n notContains?: {\r\n name: string;\r\n value: string;\r\n };\r\n inArray?: {\r\n name: string;\r\n value: string[];\r\n };\r\n notInArray?: {\r\n name: string;\r\n value: string[];\r\n };\r\n /* and?: IOperator[];\r\n or?: IOperator[]; */\r\n}\r\n\r\nexport class FilterOperator implements IFilterOperator {\r\n equalTo?: {\r\n name: string;\r\n value: string;\r\n };\r\n notEqualTo?: {\r\n name: string;\r\n value: string;\r\n };\r\n greaterThan?: {\r\n name: string;\r\n value: string;\r\n };\r\n lessThan?: {\r\n name: string;\r\n value: string;\r\n };\r\n contains?: {\r\n name: string;\r\n value: string;\r\n };\r\n notContains?: {\r\n name: string;\r\n value: string;\r\n };\r\n inArray?: {\r\n name: string;\r\n value: string[];\r\n };\r\n notInArray?: {\r\n name: string;\r\n value: string[];\r\n };\r\n constructor(\r\n equalTo: any,\r\n notEqualTo: any,\r\n greaterThan: any,\r\n lessThan: any,\r\n contains: any,\r\n notContains: any,\r\n inArray: any,\r\n notInArray: any\r\n ) {\r\n this.equalTo = equalTo;\r\n this.notEqualTo = notEqualTo;\r\n this.greaterThan = greaterThan;\r\n this.lessThan = lessThan;\r\n this.contains = contains;\r\n this.notContains = notContains;\r\n this.inArray = inArray;\r\n this.notInArray = notInArray;\r\n }\r\n}\r\n\r\nexport interface IStyle {\r\n fill?: IFill;\r\n fillPattern?: IFillPattern;\r\n stroke?: IStroke;\r\n image?: IImageStyle;\r\n icon?: IIconStyle;\r\n regularShape?: IRegularShapeStyle;\r\n text: ITextStyle;\r\n geometryType: string;\r\n label?: string;\r\n}\r\n\r\nexport class Style implements IStyle {\r\n fill?: IFill;\r\n fillPattern: IFillPattern;\r\n stroke?: IStroke;\r\n image?: IImageStyle;\r\n icon?: IIconStyle;\r\n regularshape?: IRegularShapeStyle;\r\n text: ITextStyle;\r\n geometryType: string;\r\n label: string;\r\n constructor(\r\n fill: IFill,\r\n fillPattern: IFillPattern,\r\n stroke: IStroke,\r\n image: IImageStyle,\r\n icon: IIconStyle,\r\n regularShape: IRegularShapeStyle,\r\n geometryType: string,\r\n text?: ITextStyle,\r\n label?: string\r\n ) {\r\n this.fill = fill;\r\n this.fillPattern = fillPattern;\r\n this.stroke = stroke;\r\n this.image = image;\r\n this.icon = icon;\r\n this.regularshape = regularShape;\r\n this.text = text;\r\n this.geometryType = geometryType;\r\n this.label = label;\r\n }\r\n}\r\n\r\nexport interface IFillPattern {\r\n colors: string[];\r\n solidLine: boolean;\r\n direction: string;\r\n strokeDistance?: number;\r\n strokeWidth?: number;\r\n}\r\n\r\nexport class FillPattern {\r\n colors: string[];\r\n solidLine: boolean;\r\n direction: string;\r\n strokeDistance?: number;\r\n strokeWidth?: number;\r\n constructor(\r\n colors: string[],\r\n solidLine: boolean,\r\n direction: string,\r\n strokeDistance?: number,\r\n strokeWidth?: number\r\n ) {\r\n this.colors = colors;\r\n this.solidLine = solidLine;\r\n this.direction = direction;\r\n this.strokeDistance = strokeDistance;\r\n this.strokeWidth = strokeWidth;\r\n }\r\n}\r\n\r\nexport interface IIconStyle {\r\n src: string;\r\n size: number[];\r\n opacity: number;\r\n rotation: number;\r\n scale: number;\r\n}\r\n\r\nexport class IconStyle implements IIconStyle {\r\n src: string;\r\n size: number[];\r\n opacity: number;\r\n rotation: number;\r\n scale: number;\r\n constructor(\r\n src: string,\r\n size: number[],\r\n opacity: number,\r\n rotation: number,\r\n scale: number\r\n ) {\r\n this.src = src;\r\n this.size = size;\r\n this.opacity = opacity;\r\n this.rotation = rotation;\r\n this.scale = scale;\r\n }\r\n}\r\n\r\nexport interface IRegularShapeStyle {\r\n fill: IFill;\r\n radius: number;\r\n radius2: number;\r\n points: number;\r\n angle: number;\r\n stroke: IStroke;\r\n rotation: number;\r\n}\r\n\r\nexport class RegularShapeStyle implements IRegularShapeStyle {\r\n fill: IFill;\r\n radius: number;\r\n radius2: number;\r\n points: number;\r\n angle: number;\r\n rotation: number;\r\n stroke: IStroke;\r\n constructor(\r\n fill: IFill,\r\n radius: number,\r\n radius2: number,\r\n points: number,\r\n angle: number,\r\n stroke: IStroke,\r\n rotation?: number\r\n ) {\r\n this.fill = fill;\r\n this.radius = radius;\r\n this.radius2 = radius2;\r\n this.points = points;\r\n this.angle = angle;\r\n this.stroke = stroke;\r\n this.rotation = rotation;\r\n }\r\n}\r\n\r\nexport interface IImageStyle {\r\n fill: IFill;\r\n radius: number;\r\n stroke: IStroke;\r\n}\r\n\r\nexport class ImageStyle implements IImageStyle {\r\n fill: IFill;\r\n radius: number;\r\n stroke: IStroke;\r\n constructor(fill: IFill, radius: number, stroke: IStroke) {\r\n this.fill = fill;\r\n this.radius = radius;\r\n this.stroke = stroke;\r\n }\r\n}\r\n\r\nexport interface ILineStyle {\r\n stroke: IStroke;\r\n}\r\n\r\nexport class LineStyle implements ILineStyle {\r\n stroke: IStroke;\r\n constructor(stroke: IStroke) {\r\n this.stroke = stroke;\r\n }\r\n}\r\n\r\nexport interface IPolygonStyle {\r\n fill: IFill;\r\n stroke: IStroke;\r\n}\r\n\r\nexport class PolygonStyle implements IPolygonStyle {\r\n fill: IFill;\r\n stroke: IStroke;\r\n constructor(fill: IFill, stroke: IStroke) {\r\n this.fill = fill;\r\n this.stroke = stroke;\r\n }\r\n}\r\n\r\nexport interface IFill {\r\n color: string;\r\n}\r\n\r\nexport class Fill implements IFill {\r\n color: string;\r\n constructor(color: string) {\r\n this.color = color;\r\n }\r\n}\r\n\r\nexport interface IStroke {\r\n color: string;\r\n width: number;\r\n lineDash: number[];\r\n lineCap: string;\r\n}\r\n\r\nexport class Stroke implements IStroke {\r\n color: string;\r\n width: number;\r\n lineDash: number[];\r\n lineCap: string;\r\n constructor(\r\n color: string,\r\n width: number,\r\n lineDash: number[],\r\n lineCap?: string\r\n ) {\r\n this.color = color;\r\n this.width = width;\r\n this.lineDash = lineDash;\r\n this.lineCap = lineCap;\r\n }\r\n}\r\n\r\nexport interface ITextStyle {\r\n text: string;\r\n font: string;\r\n placement: string; // E.g: line / point\r\n fill: IFill;\r\n stroke: IStroke;\r\n offsetX: number;\r\n offsetY: number;\r\n}\r\n\r\nexport class TextStyle implements ITextStyle {\r\n text: string;\r\n font: string;\r\n placement: string; // E.g: line / point\r\n fill: IFill;\r\n stroke: IStroke;\r\n offsetX: number;\r\n offsetY: number;\r\n constructor(\r\n text: string,\r\n font: string,\r\n placement: string,\r\n fill: IFill,\r\n stroke: IStroke,\r\n offsetX: number,\r\n offsetY: number\r\n ) {\r\n this.text = text;\r\n this.font = font;\r\n this.placement = placement;\r\n this.fill = fill;\r\n this.stroke = stroke;\r\n this.offsetX = offsetX;\r\n this.offsetY = offsetY;\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n} from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { Stroke, IStyle, Style, IStroke } from '../interfaces';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\n\r\n@Component({\r\n selector: 'lib-line-editor',\r\n templateUrl: './line-editor.component.html',\r\n styleUrls: [\r\n '../style-editor.component.scss',\r\n './line-editor.component.scss',\r\n '../../../../../../isy-admin-new-style.component.scss',\r\n ],\r\n})\r\nexport class LineEditorComponent implements OnInit {\r\n @Output() setLineStyle = new EventEmitter();\r\n @Input() set initialLineStyle(style: any) {\r\n this.label = style?.label ? style.label : this.label;\r\n if (style && style.stroke) {\r\n this.stroke = style.stroke;\r\n this.updateLine();\r\n }\r\n }\r\n @Input() showStyleEditor?: boolean;\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n label = this.translateService.instant('admin_style_editor_line_label');\r\n stroke: IStroke = new Stroke('rgba(255, 255, 255)', 2, undefined);\r\n line: IStyle = new Style(\r\n undefined,\r\n undefined,\r\n this.stroke,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'Line'\r\n );\r\n\r\n constructor(private translateService: IsyTranslateService) {}\r\n\r\n ngOnInit(): void {\r\n this.updateLine();\r\n }\r\n\r\n setColor(rgbaColor: string): void {\r\n this.stroke.color = rgbaColor;\r\n this.updateLine();\r\n }\r\n\r\n setLineType(value: number[]): void {\r\n this.stroke.lineDash = value;\r\n if (this.stroke.lineDash) {\r\n this.stroke.lineDash[1] = 2 * this.stroke.width;\r\n }\r\n this.updateLine();\r\n }\r\n\r\n setLineDash(first: string, second: string): void {\r\n if (first) {\r\n this.stroke.lineDash[0] =\r\n parseInt(first, 10) < 0 ? 0 : parseInt(first, 10);\r\n } else if (second) {\r\n this.stroke.lineDash[1] =\r\n parseInt(second, 10) < 0 ? 0 : parseInt(second, 10);\r\n }\r\n this.updateLine();\r\n }\r\n\r\n setLineCap(lineCap: string): void {\r\n this.stroke.lineCap = lineCap;\r\n }\r\n\r\n setLabel(value: string): void {\r\n this.label = value;\r\n this.updateLine();\r\n }\r\n\r\n setLineWidth(value: string): void {\r\n this.stroke.width = parseInt(value, 10) < 0 ? 0 : parseInt(value, 10);\r\n this.updateLine();\r\n }\r\n\r\n updateLine(): void {\r\n this.stroke = new Stroke(\r\n this.stroke.color,\r\n this.stroke.width,\r\n this.stroke.lineDash,\r\n this.stroke.lineCap\r\n );\r\n this.line = new Style(\r\n undefined,\r\n undefined,\r\n this.stroke,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'Line'\r\n );\r\n this.line.label = this.label;\r\n this.setLineStyle.emit(this.line);\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'line_stroke_type_txt' | translate }}
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    {{'lineTypeLine_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    {{'lineTypeSpacing_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'line_stroke_width_txt' | translate }}
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    {{'line_stroke_linecap_txt' | translate }}
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n Stroke,\r\n Fill,\r\n IFill,\r\n IStroke,\r\n ImageStyle,\r\n RegularShapeStyle,\r\n Style,\r\n IIconStyle,\r\n IconStyle,\r\n} from '../interfaces';\r\nimport { IStyle } from '../interfaces';\r\nimport { SelectLayersService } from '../../../../select-layers.service';\r\nimport { NgxImageCompressService } from 'ngx-image-compress';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\n\r\n@Component({\r\n selector: 'lib-point-editor',\r\n templateUrl: './point-editor.component.html',\r\n styleUrls: [\r\n '../style-editor.component.scss',\r\n './point-editor.component.scss',\r\n '../../../../../../isy-admin-new-style.component.scss',\r\n ],\r\n})\r\nexport class PointEditorComponent implements OnInit {\r\n @Output() setPointStyle = new EventEmitter();\r\n @Input() set initialPointStyle(style: any) {\r\n if (style?.icon) {\r\n this.icon = style.icon;\r\n this.radius =\r\n this.icon.scale && this.icon.size[1]\r\n ? this.icon.scale * this.icon.size[1]\r\n : this.radius;\r\n this.pointType = 'icon';\r\n this.label = style?.label ? style.label : this.label;\r\n this.updatePoint();\r\n } else if (style && (style.image || style.regularShape)) {\r\n const correctStyle = style.image ? style.image : style.regularShape;\r\n // this.pointStyle = style;\r\n this.fill = correctStyle.fill;\r\n this.stroke = correctStyle.stroke;\r\n if (correctStyle.points === 3) {\r\n this.pointType = 'triangle';\r\n } else if (correctStyle.points === 4) {\r\n // TODO: Add radius2 to type def if not existing\r\n correctStyle.radius2 === 0\r\n ? (this.pointType = 'cross')\r\n : (this.pointType = 'square');\r\n } else if (correctStyle.points == 5) {\r\n this.pointType = 'star';\r\n } else {\r\n this.pointType = 'circle';\r\n }\r\n this.label = style?.label ? style.label : this.label;\r\n this.radius = correctStyle.radius ? correctStyle.radius : this.radius;\r\n this.radius2 = correctStyle.radius2 ? correctStyle.radius2 : this.radius2;\r\n this.rotation = correctStyle.rotation\r\n ? (correctStyle.rotation * 180) / Math.PI\r\n : 0;\r\n this.angle = correctStyle.angle;\r\n this.points = correctStyle.points;\r\n this.updatePoint();\r\n }\r\n }\r\n @Input() showStyleEditor?: boolean;\r\n\r\n acceptFiles = ['image/png']; // jpg as well?\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n pointType = 'circle';\r\n label = this.translateService.instant('admin_style_editor_point_label');\r\n radius = 10;\r\n radius2: number;\r\n points: number;\r\n rotation = 0;\r\n angle: number;\r\n fill: IFill = new Fill('rgba(0, 0, 0, 0.69)');\r\n stroke: IStroke = new Stroke('rgba(255, 255, 255)', 2, undefined);\r\n icon: IIconStyle = new IconStyle(\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined\r\n );\r\n iconDefaultHeight = 60;\r\n iconFile: File | null = null;\r\n\r\n pointStyle;\r\n\r\n constructor(\r\n private selectLayersService: SelectLayersService,\r\n private imageCompress: NgxImageCompressService,\r\n private translateService: IsyTranslateService,\r\n ) {}\r\n\r\n openedCatalogLayer$ = this.selectLayersService.openedCatalogLayer$;\r\n editFeatureType$ = this.selectLayersService.editFeatureType$;\r\n\r\n ngOnInit(): void {\r\n this.updatePoint();\r\n }\r\n\r\n setFillColor(rgbaColor: string): void {\r\n this.fill.color = rgbaColor;\r\n this.updatePoint();\r\n }\r\n\r\n setPointSize(value: string): void {\r\n this.radius = parseInt(value, 10) < 1 ? 1 : parseInt(value, 10);\r\n if (this.pointType === 'star') {\r\n this.radius2 = this.radius / 3;\r\n } else if (this.pointType === 'icon') {\r\n // Update scale and size of the icon to change icon size in openlayers.\r\n // TODO: Add scale to icon interface\r\n // TODO: Convert icon rotation to double in backend, same with size and scale?\r\n // scale = this.icon.size[1] / this.radius\r\n // this.icon.size[1] = this.icon.size[1] * scale;\r\n // this.icon.size[0] = this.icon.size[0] * scale;\r\n // this.icon.scale = scale;\r\n this.icon.scale = this.radius / this.icon.size[1];\r\n }\r\n this.updatePoint();\r\n }\r\n\r\n uploadIcon(): void {\r\n // This opens the file upload dialog.\r\n this.imageCompress.uploadFile().then(({ image, orientation }) => {\r\n const img = new Image();\r\n img.src = image;\r\n img.onload = () => {\r\n const ratio = (this.iconDefaultHeight * 100) / img.height; // To find the ratio (scale factor) used to compress the image.\r\n this.imageCompress\r\n .compressFile(image, orientation, ratio, 100)\r\n .then((compressedImage) => {\r\n this.icon.src = compressedImage;\r\n const img = new Image();\r\n img.src = compressedImage;\r\n img.onload = () => {\r\n this.icon.src = compressedImage;\r\n this.icon.size = [img.width, img.height];\r\n this.icon.scale = this.radius / this.icon.size[1];\r\n this.pointType = 'icon';\r\n this.rotation = 0;\r\n this.updatePoint();\r\n };\r\n });\r\n };\r\n });\r\n }\r\n\r\n setPointType(value: string): void {\r\n this.pointType = value;\r\n switch (value) {\r\n case 'triangle':\r\n this.points = 3;\r\n this.radius2 = undefined;\r\n this.rotation = 0;\r\n this.angle = 0;\r\n break;\r\n case 'square':\r\n this.points = 4;\r\n this.angle = Math.PI / 4;\r\n this.radius2 = undefined;\r\n this.rotation = 45;\r\n break;\r\n case 'cross':\r\n this.points = 4;\r\n this.radius2 = 0;\r\n this.angle = 0;\r\n this.rotation = 0;\r\n break;\r\n case 'star':\r\n this.points = 5;\r\n this.radius2 = this.radius / 2;\r\n this.angle = 0;\r\n this.rotation = 0;\r\n break;\r\n case 'icon':\r\n break;\r\n }\r\n this.updatePoint();\r\n }\r\n\r\n setStrokeColor(rgbaColor: string): void {\r\n this.stroke.color = rgbaColor;\r\n this.updatePoint();\r\n }\r\n\r\n setLineType(value: number[]): void {\r\n this.stroke.lineDash = value;\r\n if (this.stroke.lineDash) {\r\n this.stroke.lineDash[1] = 2 * this.stroke.width;\r\n }\r\n this.updatePoint();\r\n }\r\n\r\n setLineDash(first: string, second: string): void {\r\n if (first) {\r\n this.stroke.lineDash[0] =\r\n parseInt(first, 10) < 0 ? 0 : parseInt(first, 10);\r\n } else if (second) {\r\n this.stroke.lineDash[1] =\r\n parseInt(second, 10) < 0 ? 0 : parseInt(second, 10);\r\n }\r\n this.updatePoint();\r\n }\r\n\r\n setLabel(value: string): void {\r\n this.label = value;\r\n this.updatePoint();\r\n }\r\n\r\n setRotation(value: string): void {\r\n this.rotation = parseInt(value, 10);\r\n this.updatePoint();\r\n }\r\n\r\n setLineWidth(value: string): void {\r\n this.stroke.width = parseInt(value, 10) < 0 ? 0 : parseInt(value, 10);\r\n this.updatePoint();\r\n }\r\n\r\n updatePoint(): void {\r\n if (this.pointType !== 'icon') {\r\n this.icon = new IconStyle(\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined\r\n );\r\n }\r\n switch (this.pointType) {\r\n case 'circle': {\r\n const circleStyle = new ImageStyle(this.fill, this.radius, this.stroke);\r\n this.pointStyle = new Style(\r\n undefined,\r\n undefined,\r\n undefined,\r\n circleStyle,\r\n undefined,\r\n undefined,\r\n 'Point'\r\n );\r\n }\r\n break;\r\n case 'triangle': {\r\n const triangleStyle = new RegularShapeStyle(\r\n this.fill,\r\n this.radius,\r\n this.radius2,\r\n this.points,\r\n this.angle,\r\n this.stroke,\r\n (this.rotation * Math.PI) / 180\r\n );\r\n this.pointStyle = new Style(\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n triangleStyle,\r\n 'Point'\r\n );\r\n }\r\n break;\r\n case 'square': {\r\n const squareStyle = new RegularShapeStyle(\r\n this.fill,\r\n this.radius,\r\n this.radius2,\r\n this.points,\r\n this.angle,\r\n this.stroke,\r\n (this.rotation * Math.PI) / 180\r\n );\r\n this.pointStyle = new Style(\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n squareStyle,\r\n 'Point'\r\n );\r\n }\r\n break;\r\n case 'cross': {\r\n const crossStyle = new RegularShapeStyle(\r\n this.fill,\r\n this.radius,\r\n this.radius2,\r\n this.points,\r\n this.angle,\r\n this.stroke,\r\n (this.rotation * Math.PI) / 180\r\n );\r\n this.pointStyle = new Style(\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n crossStyle,\r\n 'Point'\r\n );\r\n }\r\n break;\r\n case 'star': {\r\n const starStyle = new RegularShapeStyle(\r\n this.fill,\r\n this.radius,\r\n this.radius2,\r\n this.points,\r\n this.angle,\r\n this.stroke,\r\n (this.rotation * Math.PI) / 180\r\n );\r\n this.pointStyle = new Style(\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n starStyle,\r\n 'Point'\r\n );\r\n }\r\n break;\r\n case 'icon': {\r\n // let radians = Math.PI * this.rotation / 180;\r\n const iconStyle = new IconStyle(\r\n this.icon.src,\r\n this.icon.size,\r\n 1,\r\n this.rotation,\r\n this.icon.scale\r\n );\r\n this.pointStyle = new Style(\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n iconStyle,\r\n undefined,\r\n 'Point'\r\n );\r\n }\r\n break;\r\n default:\r\n console.log('None of the switch statements was executed.');\r\n break;\r\n }\r\n this.pointStyle.label = this.label;\r\n this.setPointStyle.emit(this.pointStyle);\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'pointTypeEditor_txt' | translate }}
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \"upload\r\n
    {{'styleIconUpload_txt' | translate}}
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    {{'sizeEditor_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    {{'pointRotation_txt' | translate }}
    \r\n \r\n
    \r\n \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    {{'lineTypeEditor_txt' | translate }}
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    {{'lineTypeLine_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    {{'lineTypeSpacing_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'lineWidthEditor_txt' | translate }}
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n Fill,\r\n Stroke,\r\n IStyle,\r\n Style,\r\n IStroke,\r\n IFill,\r\n FillPattern,\r\n IFillPattern,\r\n} from '../interfaces';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\n\r\n@Component({\r\n selector: 'lib-polygon-editor',\r\n templateUrl: './polygon-editor.component.html',\r\n styleUrls: [\r\n '../style-editor.component.scss',\r\n './polygon-editor.component.scss',\r\n '../../../../../../isy-admin-new-style.component.scss',\r\n ],\r\n})\r\nexport class PolygonEditorComponent implements OnInit {\r\n @Output() setPolygonStyle = new EventEmitter();\r\n @Input() set initialPolygonStyle(style: any) {\r\n if (style && style.fillPattern) {\r\n this.fillPattern = style.fillPattern;\r\n if (this.fillPattern.solidLine == true) {\r\n this.fillType = 'thickPattern';\r\n } else if (this.fillPattern.solidLine == false) {\r\n this.fillType = 'thinPattern';\r\n }\r\n } else if (style) {\r\n this.fillType = 'simple';\r\n }\r\n this.label = style?.label ? style.label : this.label;\r\n if (style && style.stroke && style.fill) {\r\n this.stroke = style.stroke;\r\n this.fill = style.fill;\r\n this.updatePolygon();\r\n }\r\n }\r\n @Input() showStyleEditor?: boolean;\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n label = this.translateService.instant('admin_style_editor_polygon_label');\r\n fill: IFill = new Fill(`rgba(0, 0, 0, 0.69)`);\r\n stroke: IStroke = new Stroke('rgba(255, 255, 255)', 2, undefined);\r\n fillType = 'simple'; // 'pattern'\r\n fillPattern: IFillPattern = new FillPattern(\r\n ['rgba(0, 0, 0, 0.69', 'rgba(255, 255, 255, 0.69)'],\r\n undefined,\r\n 'DOWNRIGHT',\r\n 10,\r\n 1\r\n );\r\n polygon: IStyle = new Style(\r\n this.fill,\r\n undefined,\r\n this.stroke,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'Polygon'\r\n );\r\n\r\n constructor(private translateService: IsyTranslateService) {}\r\n\r\n ngOnInit(): void {\r\n this.updatePolygon();\r\n }\r\n\r\n setFillType(type: string): void {\r\n this.fillType = type;\r\n if (this.fillType === 'thinPattern') {\r\n this.fillPattern = new FillPattern(\r\n ['rgba(0, 0, 0, 0.69', 'rgba(255, 255, 255, 0.69)'],\r\n undefined,\r\n 'VERTICAL',\r\n 10,\r\n 1\r\n );\r\n } else if (this.fillType === 'thickPattern') {\r\n this.fillPattern = new FillPattern(\r\n ['rgba(0, 0, 0, 0.69', 'rgba(255, 255, 255, 0.69)'],\r\n undefined,\r\n 'VERTICAL',\r\n undefined,\r\n undefined\r\n );\r\n }\r\n this.updatePolygon();\r\n }\r\n\r\n setPatternDirection(direction: string): void {\r\n this.fillPattern.direction = direction;\r\n this.updatePolygon();\r\n }\r\n\r\n updatePatternColors(index: number, color: string): void {\r\n this.fillPattern.colors[index] = color;\r\n this.updatePolygon();\r\n }\r\n\r\n appendPatternColor(): void {\r\n this.fillPattern.colors.push('rgba(0, 0, 0, 1)');\r\n this.updatePolygon();\r\n }\r\n\r\n removePatternColor(): void {\r\n this.fillPattern.colors.pop();\r\n this.updatePolygon();\r\n }\r\n\r\n trackColor(i): void {\r\n return i;\r\n }\r\n\r\n setStrokeDistance(distance: string): void {\r\n this.fillPattern.strokeDistance =\r\n parseInt(distance, 10) < 1 ? 1 : parseInt(distance, 10);\r\n this.updatePolygon();\r\n }\r\n\r\n setStrokeWidth(width: string): void {\r\n this.fillPattern.strokeWidth =\r\n parseInt(width, 10) < 1 ? 1 : parseInt(width, 10);\r\n this.updatePolygon();\r\n }\r\n\r\n setColor(rgbaColor: string): void {\r\n this.stroke.color = rgbaColor;\r\n this.updatePolygon();\r\n }\r\n\r\n setFillColor(rgbaColor: string): void {\r\n const newFill = new Fill(rgbaColor);\r\n this.fill = newFill;\r\n this.updatePolygon();\r\n }\r\n\r\n setLineType(value: number[]): void {\r\n this.stroke.lineDash = value;\r\n if (this.stroke.lineDash) {\r\n this.stroke.lineDash[1] = 2 * this.stroke.width;\r\n }\r\n this.updatePolygon();\r\n }\r\n\r\n setLineDash(first: string, second: string): void {\r\n if (first) {\r\n let value = parseInt(first, 10);\r\n value = value < 0 ? 0 : value;\r\n this.stroke.lineDash[0] = value;\r\n } else if (second) {\r\n const value = parseInt(second, 10);\r\n this.stroke.lineDash[1] = value < 0 ? 0 : value;\r\n }\r\n this.updatePolygon();\r\n }\r\n\r\n setLineWidth(value: string): void {\r\n this.stroke.width = parseInt(value, 10) < 0 ? 0 : parseInt(value, 10);\r\n this.updatePolygon();\r\n }\r\n\r\n setLabel(value: string): void {\r\n this.label = value;\r\n this.updatePolygon();\r\n }\r\n\r\n updatePolygon(): void {\r\n this.fill = new Fill(this.fill.color);\r\n this.stroke = new Stroke(\r\n this.stroke.color,\r\n this.stroke.width,\r\n this.stroke.lineDash\r\n );\r\n if (this.fillType == 'simple') {\r\n this.polygon = new Style(\r\n this.fill,\r\n undefined,\r\n this.stroke,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'Polygon'\r\n );\r\n } else if (this.fillType == 'thinPattern') {\r\n this.fillPattern = new FillPattern(\r\n this.fillPattern.colors,\r\n false,\r\n this.fillPattern.direction,\r\n this.fillPattern.strokeDistance,\r\n this.fillPattern.strokeWidth\r\n );\r\n this.polygon = new Style(\r\n this.fill,\r\n this.fillPattern,\r\n this.stroke,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'Polygon'\r\n );\r\n } else if (this.fillType == 'thickPattern') {\r\n this.fillPattern = new FillPattern(\r\n this.fillPattern.colors,\r\n true,\r\n this.fillPattern.direction,\r\n undefined,\r\n undefined\r\n );\r\n this.polygon = new Style(\r\n this.fill,\r\n this.fillPattern,\r\n this.stroke,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'Polygon'\r\n );\r\n }\r\n this.polygon.label = this.label;\r\n this.setPolygonStyle.emit(this.polygon);\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    {{'admin_fill_type_txt' | translate }}
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n\r\n \r\n \r\n
    \r\n
    {{'admin_pattern_type_txt' | translate }}
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n
    {{'admin_pattern_line_width_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    {{'admin_pattern_line_distance_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    {{'admin_pattern_color_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    {{'fill_color_editor_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n\r\n\r\n \r\n
    \r\n
    {{'admin_pattern_type_txt' | translate }}
    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    {{'admin_color_combination_txt' | translate }}
    \r\n\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    {{'lineTypeEditor_txt' | translate }}
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    {{'lineTypeLine_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    {{'lineTypeSpacing_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'lineWidthEditor_txt' | translate }}
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import {\r\n Component,\r\n Output,\r\n Input,\r\n EventEmitter,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { toggleHeightAnimation } from './toggle-height-animation';\r\nimport { IStyle } from './interfaces';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Component({\r\n selector: 'lib-style-editor',\r\n animations: [toggleHeightAnimation],\r\n templateUrl: './style-editor.component.html',\r\n styleUrls: [\r\n '../../../../../isy-admin-new-style.component.scss',\r\n './style-editor.component.scss',\r\n ],\r\n})\r\nexport class StyleEditorComponent implements AfterViewInit {\r\n @Output() setStyle = new EventEmitter();\r\n @Input() set initialStyle(style: IStyle[]) {\r\n if (style) {\r\n this.initialPointStyle = style.find((s) => s.geometryType === 'Point');\r\n this.itemList[0].isActive = !!this.initialPointStyle;\r\n this.itemList[0].isVisible = !!this.initialPointStyle;\r\n this.initialLineStyle = style.find((s) => s.geometryType === 'Line');\r\n this.itemList[1].isActive = !!this.initialLineStyle;\r\n this.itemList[1].isVisible = !!this.initialLineStyle;\r\n this.initialPolygonStyle = style.find(\r\n (s) => s.geometryType === 'Polygon'\r\n );\r\n this.itemList[2].isActive = !!this.initialPolygonStyle;\r\n this.itemList[2].isVisible = !!this.initialPolygonStyle;\r\n this.initialTextStyle = style.find((s) => s.geometryType === 'Text');\r\n this.itemList[3].isActive = !!this.initialTextStyle;\r\n this.itemList[3].isVisible = !!this.initialTextStyle;\r\n this.changeFilterStyle();\r\n }\r\n }\r\n // Take showStyleEditor from parent component\r\n @Input() showStyleEditor: boolean;\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n itemList = [\r\n { id: 0, name: 'Point', isVisible: true, isActive: true },\r\n { id: 1, name: 'Line', isVisible: false, isActive: true },\r\n { id: 2, name: 'Polygon', isVisible: false, isActive: true },\r\n { id: 3, name: 'Tekst', isVisible: false, isActive: false },\r\n ];\r\n\r\n initialPointStyle: IStyle;\r\n initialLineStyle: IStyle;\r\n initialPolygonStyle: IStyle;\r\n initialTextStyle: IStyle;\r\n pointStyle: IStyle;\r\n lineStyle: IStyle;\r\n polygonStyle: IStyle;\r\n textStyle: IStyle;\r\n childrenInitialized = false;\r\n\r\n ngAfterViewInit(): void {\r\n this.childrenInitialized = true;\r\n }\r\n\r\n setPointStyle(style: IStyle): void {\r\n if (style) {\r\n if (this.childrenInitialized) {\r\n this.itemList[0].isActive = true;\r\n }\r\n this.pointStyle = style;\r\n this.changeFilterStyle();\r\n }\r\n }\r\n\r\n setLineStyle(style: IStyle): void {\r\n if (style) {\r\n if (this.childrenInitialized) {\r\n this.itemList[1].isActive = true;\r\n }\r\n this.lineStyle = style;\r\n this.changeFilterStyle();\r\n }\r\n }\r\n\r\n setPolygonStyle(style: IStyle): void {\r\n if (style) {\r\n if (this.childrenInitialized) {\r\n this.itemList[2].isActive = true;\r\n }\r\n this.polygonStyle = style;\r\n this.changeFilterStyle();\r\n }\r\n }\r\n\r\n setTextStyle(style: IStyle): void {\r\n if (style && this.childrenInitialized) {\r\n this.itemList[3].isActive = true;\r\n }\r\n this.textStyle = style;\r\n this.changeFilterStyle();\r\n }\r\n\r\n toggleActiveStyle(index: number): void {\r\n this.itemList[index].isActive = !this.itemList[index].isActive;\r\n this.changeFilterStyle();\r\n }\r\n\r\n changeFilterStyle(): void {\r\n let styleList = [\r\n this.pointStyle,\r\n this.lineStyle,\r\n this.polygonStyle,\r\n this.textStyle,\r\n ].filter((style) => !!style);\r\n styleList = styleList.filter((style, i) => this.itemList[i].isActive);\r\n this.setStyle.emit(styleList);\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {{'pointStyle_txt' | translate }}\r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {{'lineStyle_txt' | translate }}\r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {{'polygonStyle_txt' | translate }}\r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {{'draw_enter_text' | translate }}\r\n
    \r\n
    \r\n\r\n \r\n\r\n
    \r\n
    \r\n","import {\r\n Component,\r\n OnInit,\r\n Output,\r\n EventEmitter,\r\n OnDestroy,\r\n Input,\r\n} from '@angular/core';\r\nimport {\r\n IFill,\r\n IStroke,\r\n Fill,\r\n IStyle,\r\n ITextStyle,\r\n Stroke,\r\n Style,\r\n TextStyle,\r\n} from '../interfaces';\r\nimport { IsyAdminService } from '../../../../../../isy-admin.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-text-editor',\r\n templateUrl: './text-editor.component.html',\r\n styleUrls: ['../style-editor.component.scss', './text-editor.component.scss'],\r\n})\r\nexport class TextEditorComponent implements OnInit, OnDestroy {\r\n @Output() setTextStyle = new EventEmitter();\r\n @Input() set initialTextStyle(style: any) {\r\n if (style && style.text) {\r\n this.fill = style.text.fill;\r\n this.stroke = style.text.stroke;\r\n this.text = style.text.text;\r\n this.font = style.text.font;\r\n this.size = this.font.match(/\\d+/g)\r\n ? parseInt(this.font.match(/\\d+/g).join(''), 10)\r\n : 10; // Fetches numeric value from font\r\n this.placement = style.text.placement\r\n ? style.text.placement\r\n : this.placement;\r\n this.offsetX = style.text.offsetX ? style.text.offsetX : this.offsetX;\r\n this.offsetY = style.text.offsetY ? style.text.offsetY : this.offsetY;\r\n this.emitText();\r\n }\r\n }\r\n\r\n fill: IFill = new Fill(`rgba(0, 0, 0, 1)`);\r\n stroke: IStroke = new Stroke('rgba(255, 255, 255)', 2, undefined);\r\n textStyle: ITextStyle;\r\n text = '';\r\n font = '10pt sans-serif';\r\n size = 10;\r\n placement = 'point';\r\n subscription: Subscription = new Subscription();\r\n offsetX = 0;\r\n offsetY = 0;\r\n\r\n constructor(private adminService: IsyAdminService) {}\r\n\r\n ngOnInit(): void {\r\n this.textStyle = new TextStyle(\r\n this.text,\r\n this.font,\r\n this.placement,\r\n this.fill,\r\n this.stroke,\r\n this.offsetX,\r\n this.offsetY\r\n );\r\n /* this.subscription.add(\r\n this.adminService.activeStyle$.subscribe(value => {\r\n if (value && value.text) {\r\n this.textStyle = value.text;\r\n this.emitText();\r\n }\r\n })\r\n ); */\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n setTextSize(value: string): void {\r\n this.size = parseInt(value, 10) < 0 ? 0 : parseInt(value, 10);\r\n this.font = `${value}pt sans-serif`;\r\n this.emitText();\r\n }\r\n\r\n setText(value: string): void {\r\n if (this.text !== value) {\r\n this.text = value;\r\n this.emitText();\r\n }\r\n }\r\n\r\n setTextColor(rgbaColor: string): void {\r\n this.fill.color = rgbaColor;\r\n this.emitText();\r\n }\r\n\r\n setTextStrokeColor(rgbColor: string): void {\r\n this.stroke.color = rgbColor;\r\n this.emitText();\r\n }\r\n\r\n setLineType(value: number[]): void {\r\n this.stroke.lineDash = value;\r\n if (this.stroke.lineDash) {\r\n this.stroke.lineDash[1] = 2 * this.stroke.width;\r\n }\r\n this.emitText();\r\n }\r\n\r\n setLineDash(first: string, second: string): void {\r\n if (first) {\r\n this.stroke.lineDash[0] =\r\n parseInt(first, 10) < 0 ? 0 : parseInt(first, 10);\r\n } else if (second) {\r\n this.stroke.lineDash[1] =\r\n parseInt(second, 10) < 0 ? 0 : parseInt(second, 10);\r\n }\r\n this.emitText();\r\n }\r\n\r\n setStrokeWidth(value: string): void {\r\n this.stroke.width = parseInt(value, 10) < 0 ? 0 : parseInt(value, 10);\r\n this.emitText();\r\n }\r\n\r\n setOffsetX(value: string): void {\r\n this.offsetX = parseInt(value, 10);\r\n this.emitText();\r\n }\r\n\r\n setOffsetY(value: string): void {\r\n this.offsetY = parseInt(value, 10);\r\n this.emitText();\r\n }\r\n\r\n setPlacement(value: string): void {\r\n this.placement = value;\r\n this.emitText();\r\n }\r\n\r\n emitText(): void {\r\n if (this.text === '') {\r\n // this.adminService.setTextStyle(undefined);\r\n this.setTextStyle.emit(undefined);\r\n } else {\r\n this.textStyle = new TextStyle(\r\n this.text,\r\n this.font,\r\n this.placement,\r\n this.fill,\r\n this.stroke,\r\n this.offsetX,\r\n this.offsetY\r\n );\r\n const style = new Style(\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n 'Text',\r\n this.textStyle\r\n );\r\n // this.adminService.setTextStyle(style);\r\n this.setTextStyle.emit(style);\r\n }\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'textSize_txt' | translate }}
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    {{'admin_offset_x_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    {{'admin_offset_y_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    {{'admin_placement_txt' | translate }}
    \r\n
    \r\n \r\n
    \r\n
  • \r\n \r\n {{'admin_placement_point' | translate}}\r\n \r\n
  • \r\n
  • \r\n \r\n {{'admin_placement_line' | translate}}\r\n \r\n
  • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    {{'lineTypeEditor_txt' | translate }}
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    {{'lineTypeLine_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    {{'lineTypeSpacing_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'lineWidthEditor_txt' | translate }}
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    ","import {\r\n trigger,\r\n state,\r\n transition,\r\n animate,\r\n style,\r\n} from '@angular/animations';\r\n\r\nexport const toggleHeightAnimation = trigger('toggleHeight', [\r\n // ...\r\n state(\r\n 'closed',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'open',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n transition('open => closed', [animate('200ms ease-out')]),\r\n transition('closed => open', [animate('200ms ease-in')]),\r\n]);\r\n","import { Component, OnInit, OnDestroy, HostBinding } from '@angular/core';\r\nimport { combineLatest, BehaviorSubject, Subscription, Subject } from 'rxjs';\r\nimport {\r\n map,\r\n debounceTime,\r\n distinctUntilChanged,\r\n} from 'rxjs/operators';\r\nimport {\r\n CatalogLayer,\r\n LayerCapabilities,\r\n LayerNode,\r\n LayerNodeSublayer,\r\n} from '../../../../data';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { PageChangedEvent } from 'ngx-bootstrap/pagination';\r\nimport {\r\n SelectLayersService,\r\n ICatalogLayer,\r\n EServiceTypes,\r\n} from '../../select-layers.service';\r\nimport { IsyAdminService } from '../../../../isy-admin.service';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { getUniqueId } from '@isygis/isy-utils';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\nenum EFilterVectorType {\r\n ISSELECTED = 'isSelected',\r\n HASWARNING = 'hasWarning',\r\n}\r\n\r\n@Component({\r\n selector: 'lib-service-list',\r\n templateUrl: './service-list.component.html',\r\n styleUrls: [\r\n './service-list.component.scss',\r\n '../../../../isy-admin-new-style.component.scss',\r\n ],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class ServiceListComponent implements OnInit, OnDestroy {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n wfsNodes = new BehaviorSubject(undefined);\r\n\r\n allFeatureTypes: LayerNode[] = [];\r\n allFeatureTypesCopy: LayerNode[] = [];\r\n curentPageFeatureTypes: LayerNode[] = [];\r\n currentPage = 1;\r\n itemsPerPage = 6;\r\n filterVectorLayers = false;\r\n filterVectorLayersWithWarning = false;\r\n filterWmsLayers = false;\r\n filterWmsLayersWithWarning = false;\r\n projectConfig: IProjectConfig;\r\n showSpinner = false;\r\n subscriptions: Subscription = new Subscription();\r\n public keyUpSearch = new Subject();\r\n searchText: string;\r\n layerToRemove: ICatalogLayer | undefined = undefined;\r\n constructor(\r\n private selectLayersService: SelectLayersService,\r\n private adminService: IsyAdminService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private commonService: IsyCommonService,\r\n private toasterService: IsyToasterService\r\n ) {\r\n this.subscriptions.add(\r\n this.keyUpSearch\r\n .pipe(debounceTime(200), distinctUntilChanged())\r\n .subscribe((result) => {\r\n this.searchInCatalogLayers(result.toString());\r\n })\r\n );\r\n }\r\n\r\n projectLayers$ = this.selectLayersService.searchCatalogs$.pipe(\r\n map((layers: ICatalogLayer[]) =>\r\n layers.filter((layer) => layer && layer.isSelected)\r\n )\r\n );\r\n\r\n toggleCatalogLayerUrl$ = this.selectLayersService.toggleCatalogLayerUrl$;\r\n toggleOGCCatalogLayerUrl$ =\r\n this.selectLayersService.toggleOGCCatalogLayerUrl$;\r\n editFeatureTypeName$ = this.selectLayersService.editFeatureType$.pipe(\r\n map((featureType) => {\r\n return featureType ? featureType.guid : '';\r\n })\r\n );\r\n\r\n projectConfig$ = this.adminService.tempProjectConfig$.pipe(\r\n map((projectConfig: IProjectConfig) => {\r\n this.projectConfig = projectConfig;\r\n return this.projectConfig;\r\n })\r\n );\r\n\r\n showSpinner$ = this.adminService.showSpinner$;\r\n\r\n vm$ = combineLatest([\r\n this.projectLayers$,\r\n this.toggleCatalogLayerUrl$,\r\n this.toggleOGCCatalogLayerUrl$,\r\n this.editFeatureTypeName$,\r\n this.projectConfig$,\r\n this.showSpinner$,\r\n ]).pipe(\r\n map(\r\n ([\r\n catalogLayers,\r\n toggleCatalogLayerUrl,\r\n toggleOGCCatalogLayerUrl,\r\n editFeatureTypeName,\r\n projectConfig,\r\n showSpinner,\r\n ]: [\r\n ICatalogLayer[],\r\n string,\r\n string,\r\n string,\r\n IProjectConfig,\r\n boolean\r\n ]) => ({\r\n catalogLayers,\r\n catalogLayersWMS: catalogLayers\r\n .filter(\r\n (l) =>\r\n l.service &&\r\n l.service.toLowerCase() === EServiceTypes.WMS.toLowerCase()\r\n )\r\n .sort((l, r) => (l.title > r.title ? 1 : -1)),\r\n catalogLayersWFS: catalogLayers\r\n .filter(\r\n (l) =>\r\n l.service &&\r\n l.service.toLowerCase() === EServiceTypes.WFS.toLowerCase()\r\n )\r\n .sort((l, r) => (l.title > r.title ? 1 : -1)),\r\n catalogLayersVector: catalogLayers\r\n .filter(\r\n (l) =>\r\n l.service &&\r\n l.service.toLowerCase() === EServiceTypes.VECTOR.toLowerCase()\r\n )\r\n .sort((l, r) => (l.title > r.title ? 1 : -1)),\r\n toggleCatalogLayerUrl,\r\n toggleOGCCatalogLayerUrl,\r\n editFeatureTypeName,\r\n paginationFeatureTypes:\r\n toggleCatalogLayerUrl || toggleOGCCatalogLayerUrl\r\n ? toggleCatalogLayerUrl\r\n ? this.generatePaginationFeatureTypes(\r\n catalogLayers,\r\n toggleCatalogLayerUrl\r\n )\r\n : this.generatePaginationFeatureTypes(\r\n catalogLayers,\r\n toggleOGCCatalogLayerUrl\r\n )\r\n : undefined, // TODO fix with pipe or something ...\r\n projectConfig,\r\n showSpinner,\r\n })\r\n )\r\n // ,tap(result => console.log('vm service list', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.adminService.showSpinner(false);\r\n this.filterVectorLayers = false;\r\n this.filterVectorLayersWithWarning = false;\r\n this.filterWmsLayersWithWarning = false;\r\n\r\n this.subscriptions.add(\r\n this.commonService.dynamicModalAcceptButtonClick$.subscribe((value) => {\r\n if (value === 'removeCatalogLayer' && this.layerToRemove) {\r\n this.layerToRemove.isSelected = false;\r\n this.layerToRemove.capabilities = undefined;\r\n\r\n this.layerToRemove.vectorLayers.forEach((v) => {\r\n const typename =\r\n v.options?.protocol?.featuretype ||\r\n v.options?.protocol?.params?.typename;\r\n const projectVectors = this.projectConfig.config.vector;\r\n const projectVectorIndex = projectVectors.findIndex(\r\n (pv) =>\r\n pv?.options?.protocol?.featuretype === typename ||\r\n pv?.options?.protocol?.params?.typename === typename\r\n );\r\n projectVectors.splice(projectVectorIndex, 1);\r\n });\r\n this.layerToRemove.vectorLayers = [];\r\n\r\n this.layerToRemove.wmsLayers.forEach((l) => {\r\n const projectWms = this.projectConfig.config.wms;\r\n const projectWmsIndex = projectWms.findIndex(\r\n (pv) => pv.params.layers === l.params.layers\r\n );\r\n projectWms.splice(projectWmsIndex, 1);\r\n });\r\n this.layerToRemove.wmsLayers = [];\r\n this.layerToRemove = undefined;\r\n\r\n this.commonService.dynamicModalAcceptButtonClick(undefined);\r\n }\r\n })\r\n );\r\n // this.subscriptions.add(\r\n // this.selectLayersService.getOGCCollections$.subscribe(value => {\r\n // console.log('OGC Collections: ', value);\r\n // })\r\n // );\r\n }\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n this.searchInCatalogLayers('');\r\n }\r\n\r\n private generatePaginationFeatureTypes(\r\n catalogLayers: CatalogLayer[],\r\n toggleCatalogLayerUrl: string\r\n ): LayerCapabilities {\r\n const catalogLayer = catalogLayers.find(\r\n (layer) => layer.url === toggleCatalogLayerUrl\r\n );\r\n if (catalogLayer?.capabilities) {\r\n if (!this.filterVectorLayers && !this.filterVectorLayersWithWarning) {\r\n this.allFeatureTypes = catalogLayer.capabilities.nodes;\r\n this.allFeatureTypesCopy = catalogLayer.capabilities.nodes; // not really a copy, is it?\r\n if (this.allFeatureTypes) {\r\n this.allFeatureTypes = this.filterWmsLayers\r\n ? this.allFeatureTypesCopy.filter(\r\n (f) => f[EFilterVectorType.ISSELECTED] === true\r\n )\r\n : this.allFeatureTypes;\r\n this.allFeatureTypes = this.filterWmsLayersWithWarning\r\n ? this.allFeatureTypesCopy.filter(\r\n (f) => f[EFilterVectorType.HASWARNING] === true\r\n )\r\n : this.allFeatureTypes;\r\n\r\n const startItem = (this.currentPage - 1) * this.itemsPerPage;\r\n const endItem = this.currentPage * this.itemsPerPage;\r\n this.curentPageFeatureTypes = this.allFeatureTypes.slice(\r\n startItem,\r\n endItem\r\n );\r\n // console.log('curentPageFeatureTypes', this.curentPageFeatureTypes);\r\n }\r\n }\r\n return catalogLayer.capabilities;\r\n }\r\n return undefined;\r\n }\r\n\r\n getCatalogLayerCapabilities(layer: CatalogLayer): Promise {\r\n this.adminService.showSpinner(true);\r\n this.currentPage = 1;\r\n this.filterVectorLayers = false;\r\n this.filterVectorLayersWithWarning = false;\r\n this.filterWmsLayers = false;\r\n this.filterWmsLayersWithWarning = false;\r\n return this.selectLayersService.toggleCatalogLayer(layer);\r\n }\r\n\r\n getOGCCollections(layer: CatalogLayer): void {\r\n this.currentPage = 1;\r\n this.filterVectorLayers = false;\r\n this.filterVectorLayersWithWarning = false;\r\n this.filterWmsLayers = false;\r\n this.filterWmsLayersWithWarning = false;\r\n this.selectLayersService.toggleOGCSource(layer);\r\n }\r\n\r\n changeEditFeatureType(\r\n featureType: LayerNode,\r\n catalogLayer: ICatalogLayer\r\n ): void {\r\n if (!featureType.isSelected) {\r\n if (catalogLayer.wmsLayers && catalogLayer.wmsLayers.length) {\r\n this.addWmsLayer(featureType, catalogLayer);\r\n }\r\n if (catalogLayer.vectorLayers && catalogLayer.vectorLayers.length) {\r\n this.addVectorLayer(featureType, catalogLayer);\r\n }\r\n }\r\n\r\n this.selectLayersService.changeEditFeatureType(featureType, catalogLayer);\r\n }\r\n\r\n changeEditOGCFeatureType(\r\n featureType: LayerNode,\r\n catalogLayer: ICatalogLayer\r\n ): void {\r\n if (!featureType.isSelected) {\r\n this.addOGCLayer(featureType, catalogLayer);\r\n }\r\n this.selectLayersService.changeEditOGCFeatureType(\r\n featureType,\r\n catalogLayer\r\n );\r\n }\r\n\r\n searchInCatalogLayers(searchValue: string): void {\r\n this.selectLayersService.changeSearchedCatalogValue(searchValue);\r\n }\r\n\r\n addVectorLayer(node: LayerNode, catalogLayer: ICatalogLayer): void {\r\n this.selectLayersService.addVectorLayer(\r\n node,\r\n catalogLayer,\r\n this.projectConfig\r\n );\r\n }\r\n\r\n addOGCLayer(node: LayerNode, catalogLayer: ICatalogLayer): void {\r\n console.log('ADD OGC LAYER: ', node, catalogLayer);\r\n this.selectLayersService.addOGCLayer(\r\n node,\r\n catalogLayer,\r\n this.projectConfig\r\n );\r\n }\r\n\r\n addWmsLayer(node: LayerNode, catalogLayer: ICatalogLayer): void {\r\n node.isSelected = !node.isSelected;\r\n this.selectLayersService.addWmsLayer(\r\n node,\r\n catalogLayer,\r\n this.projectConfig,\r\n false\r\n );\r\n }\r\n\r\n addWmsNodeLayer(\r\n nodeLayer: any,\r\n node: LayerNode,\r\n catalogLayer: ICatalogLayer\r\n ): void {\r\n nodeLayer['isSelected'] = !nodeLayer['isSelected'];\r\n this.selectLayersService.addWmsLayer(\r\n node,\r\n catalogLayer,\r\n this.projectConfig,\r\n true\r\n );\r\n }\r\n\r\n removeCatalogLayer(layer: ICatalogLayer): void {\r\n this.layerToRemove = layer;\r\n this.dynamicModalService.showModalWithComponent(\r\n 'removeCatalogLayer',\r\n undefined,\r\n undefined,\r\n {\r\n showHeader: true,\r\n showFooter: true,\r\n contentText: 'admin_delete_permission',\r\n modalHeader: {\r\n headerIcon: fontAwesomeIcons.faTrash,\r\n headerTitle: 'admin_delete_layer',\r\n showCloseBtn: false,\r\n iconColor: 'text-danger',\r\n },\r\n modalFooter: { showCancelButton: true, acceptButtonText: 'delete' },\r\n }\r\n );\r\n }\r\n\r\n toggleFilterVectorLayers(filter: boolean): void {\r\n this.filterVectorLayers = !filter;\r\n this.filterPagination(\r\n this.filterVectorLayers,\r\n EFilterVectorType.ISSELECTED\r\n );\r\n }\r\n\r\n toggleFilterVectorLayersWithWarning(filter: boolean): void {\r\n this.filterVectorLayersWithWarning = !filter;\r\n this.filterPagination(\r\n this.filterVectorLayersWithWarning,\r\n EFilterVectorType.HASWARNING\r\n );\r\n }\r\n\r\n toggleFilterWmsLayers(filter: boolean): void {\r\n this.filterWmsLayers = !filter;\r\n this.filterPagination(this.filterWmsLayers, EFilterVectorType.ISSELECTED);\r\n }\r\n\r\n toggleFilterWmsLayersWithWarning(filter: boolean): void {\r\n this.filterWmsLayersWithWarning = !filter;\r\n this.filterPagination(\r\n this.filterWmsLayersWithWarning,\r\n EFilterVectorType.HASWARNING\r\n );\r\n }\r\n\r\n createNodeCopy(node: LayerNode, catalogLayer: ICatalogLayer): void {\r\n const newNode = new LayerNode(\r\n getUniqueId(4),\r\n node.name,\r\n node.title,\r\n [],\r\n undefined,\r\n false,\r\n node.typeName,\r\n true,\r\n node.prefix\r\n );\r\n\r\n const newNodeSublayers: LayerNodeSublayer[] = [];\r\n if (node.layer) {\r\n node.layer.forEach((layer) => {\r\n newNodeSublayers.push(new LayerNodeSublayer(layer.Name, null, false));\r\n });\r\n newNode.layer = newNodeSublayers;\r\n } else {\r\n newNode.layer = undefined;\r\n }\r\n\r\n catalogLayer.capabilities.nodes.push(newNode);\r\n catalogLayer.capabilities.nodes.sort((node1, node2) => {\r\n const name1 = (node1.name || '').toLowerCase();\r\n const name2 = (node2.name || '').toLowerCase();\r\n if (name1 > name2) {\r\n return 1;\r\n }\r\n if (name1 < name2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n this.toggleFilterVectorLayers(true);\r\n this.toggleFilterWmsLayers(true);\r\n this.toasterService.success(\r\n 'admin_layer_copy_created_toaster_msg',\r\n 'success'\r\n );\r\n }\r\n\r\n removeNodeCopy(node: LayerNode, catalogLayer: ICatalogLayer): void {\r\n const findIndex = catalogLayer.capabilities.nodes.findIndex(\r\n (n) => n.guid === node.guid\r\n );\r\n catalogLayer.capabilities.nodes.splice(findIndex, 1);\r\n this.toggleFilterVectorLayers(true);\r\n this.toggleFilterWmsLayers(true);\r\n }\r\n\r\n private filterPagination(\r\n filter: boolean,\r\n filterType: EFilterVectorType\r\n ): void {\r\n this.currentPage = 1;\r\n setTimeout(() => {\r\n const startItem = 0;\r\n const endItem = 1 * this.itemsPerPage;\r\n if (this.allFeatureTypesCopy) {\r\n this.allFeatureTypes = filter\r\n ? this.allFeatureTypesCopy.filter((f) => f[filterType] === true)\r\n : this.allFeatureTypesCopy;\r\n this.curentPageFeatureTypes = this.allFeatureTypes.slice(\r\n startItem,\r\n endItem\r\n );\r\n }\r\n }, 100);\r\n }\r\n\r\n pageChanged(event: PageChangedEvent): void {\r\n const startItem = (event.page - 1) * event.itemsPerPage;\r\n const endItem = event.page * event.itemsPerPage;\r\n this.currentPage = event.page;\r\n this.curentPageFeatureTypes = this.allFeatureTypes.slice(\r\n startItem,\r\n endItem\r\n );\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n
    \r\n
    {{'admin_service_wfs_layers' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {{layer.title}}\r\n
    \r\n
    0\">\r\n {{layer.vectorLayers.length}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Loading...\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {{'admin_remove_filter' | translate}}\r\n {{'admin_set_filter' | translate}}\r\n \r\n | \r\n \r\n {{'admin_remove_filter_warnings' | translate}}\r\n {{'admin_set_filter_warnings' | translate}}\r\n \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n {{node.name}}\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
    • \r\n
      itemsPerPage\">\r\n \r\n
      \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n
    0\">\r\n \r\n
    \r\n
    \r\n
    {{'admin_service_wms_layers' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{layer.title}}\r\n
    \r\n
    0\">\r\n {{layer.wmsLayers.length}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n Loading...\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {{'admin_remove_filter' | translate}}\r\n {{'admin_set_filter' | translate}}\r\n \r\n | \r\n \r\n {{'admin_remove_filter_warnings' | translate}}\r\n {{'admin_set_filter_warnings' | translate}}\r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{node.name}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n {{nodeLayer.Name}}\r\n
      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    itemsPerPage\">\r\n \r\n
    \r\n
    \r\n \r\n\r\n \r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n\r\n
    0\">\r\n
    \r\n
    \r\n
    {{'admin_service_ogc_layers' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {{layer.title}}\r\n
    \r\n
    0\">\r\n {{layer.vectorLayers.length}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Loading...\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {{'admin_remove_filter' | translate}}\r\n {{'admin_set_filter' | translate}}\r\n \r\n | \r\n \r\n {{'admin_remove_filter_warnings' | translate}}\r\n {{'admin_set_filter_warnings' | translate}}\r\n \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n {{node.name}}\r\n
      \r\n
      \r\n \r\n
      \r\n \r\n \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n
    • \r\n
      itemsPerPage\">\r\n \r\n \r\n
      \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n map,\r\n switchMap,\r\n catchError,\r\n tap,\r\n multicast,\r\n refCount,\r\n mergeMap,\r\n} from 'rxjs/operators';\r\nimport {\r\n combineLatest,\r\n BehaviorSubject,\r\n forkJoin,\r\n ReplaySubject,\r\n firstValueFrom,\r\n EMPTY,\r\n} from 'rxjs';\r\nimport { IsyAdminService } from '../../isy-admin.service';\r\nimport {\r\n ICatalogLibrary,\r\n CatalogLayer,\r\n LayerNode,\r\n LayerCapabilities,\r\n} from '../../data';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport {\r\n MapLibNgService,\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n} from '@isygis/isy-map';\r\nimport { IsyCapabilitiesService } from '../../isy-capabilities.service';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport {\r\n LayersPreviewService,\r\n IGroupPreview,\r\n ILayersInGroups,\r\n} from './layers-preview/layers-preview.service';\r\nimport { getUniqueId } from '@isygis/isy-utils';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport {\r\n IConfigJson,\r\n IWms,\r\n IVector,\r\n VectorOptions,\r\n WmsOptions,\r\n Vector,\r\n Wms,\r\n WmsLayer,\r\n Layers,\r\n ParamsWms,\r\n IProjectConfig,\r\n IFeatureInfoElement,\r\n Params,\r\n Protocol,\r\n FeatureInfoProjectConfig,\r\n} from '@isygis/isymap-config';\r\n\r\nexport interface ICatalogLayer extends CatalogLayer {\r\n featureTypes: IFeatureInfoElement[];\r\n vectorLayers: IVector[];\r\n wmsLayers: IWms[];\r\n}\r\n\r\nexport enum EServiceTypes {\r\n WFS = 'WFS',\r\n WMS = 'WMS',\r\n VECTOR = 'VECTOR',\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SelectLayersService {\r\n constructor(\r\n private adminService: IsyAdminService,\r\n private mapLibNgService: MapLibNgService,\r\n private capabilitiesService: IsyCapabilitiesService,\r\n private toasterService: IsyToasterService,\r\n private httpClient: HttpClient,\r\n private translateService: IsyTranslateService,\r\n private sessionStorageService: SessionStorageService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapService: IsyMapService,\r\n private layersPreviewService: LayersPreviewService\r\n ) {}\r\n\r\n parsedCapabilities;\r\n\r\n projectConfig$ = this.adminService.tempProjectConfig$;\r\n catalogLibrary = new BehaviorSubject(undefined);\r\n catalogLibrary$ = this.catalogLibrary.asObservable();\r\n definedGroups$ = this.layersPreviewService.groupsWithLayers$;\r\n \r\n private toggleCatalogLayerUrl = new BehaviorSubject(undefined);\r\n private searchCatalogValue = new BehaviorSubject('');\r\n private editFeatureType = new BehaviorSubject(undefined);\r\n projectLayers = new BehaviorSubject([]);\r\n private editCatalogLayerUrl = new BehaviorSubject(undefined);\r\n editCatalogLayerUrl$ = this.editCatalogLayerUrl.asObservable();\r\n\r\n private layersCapabilitiesMaplib$ =\r\n this.mapEmitterService.getCapabilitiesFromUrlEmitter$;\r\n private featureTypeWithElementsMaplib$ =\r\n this.mapEmitterService.featureUrlHasBeenDescribedEmitter$;\r\n private addLayerAction = new BehaviorSubject(undefined);\r\n private toggleOGCSourceUrlAction = new BehaviorSubject(\r\n undefined\r\n );\r\n private ogcCollectionIdAction = new BehaviorSubject(undefined);\r\n private ogcCategoryIdAction = new BehaviorSubject(undefined);\r\n\r\n private ogcServiceUrlAction = new BehaviorSubject(undefined);\r\n\r\n private projectLayersOriginal$ = combineLatest([\r\n this.projectConfig$,\r\n this.catalogLibrary$,\r\n this.definedGroups$,\r\n ]).pipe(\r\n map(\r\n ([projectConfig, catalogLibrary, definedGroups]: [\r\n IProjectConfig,\r\n ICatalogLibrary,\r\n ILayersInGroups\r\n ]) => {\r\n if (projectConfig && projectConfig.config && catalogLibrary) {\r\n if (projectConfig.config.vector?.length) {\r\n projectConfig.config.vector.forEach((vectorLayer) => {\r\n const catalogLayer = catalogLibrary.Layers.find(\r\n (catalogLibraryLayer) =>\r\n catalogLibraryLayer.url === vectorLayer.options.protocol.url\r\n );\r\n if (\r\n !catalogLayer &&\r\n vectorLayer.options.protocol.type.toLowerCase() !== 'vector'\r\n ) {\r\n const newCatalogLayer = new CatalogLayer(vectorLayer);\r\n newCatalogLayer.isOnlyInProject = true;\r\n catalogLibrary.Layers.push(newCatalogLayer);\r\n }\r\n });\r\n }\r\n if (projectConfig.config.wms) {\r\n projectConfig.config.wms.forEach((wmsLayer) => {\r\n const catalogLayer = catalogLibrary.Layers.find(\r\n (catalogLibraryLayer) =>\r\n catalogLibraryLayer.url === wmsLayer.url\r\n );\r\n if (!catalogLayer) {\r\n const newCatalogLayer = new CatalogLayer(wmsLayer);\r\n newCatalogLayer.isOnlyInProject = true;\r\n catalogLibrary.Layers.push(newCatalogLayer);\r\n }\r\n });\r\n }\r\n }\r\n\r\n return catalogLibrary?.Layers?.map((c) => {\r\n if (projectConfig && projectConfig.config) {\r\n let vectorLayers = [];\r\n let wmsLayers = [];\r\n if (projectConfig.config?.vector.length) {\r\n // TODO: Change from .includes(c.url) to something else. --> can lead to bugs when different layers have similar urls\r\n vectorLayers = projectConfig.config.vector.filter(\r\n (v) =>\r\n v.options.protocol.url === c.url ||\r\n (v.options.protocol.url.includes(c.url) &&\r\n v.options.protocol.type.toLowerCase() === 'vector')\r\n );\r\n if (vectorLayers.length > 0) {\r\n this.updateGroups(vectorLayers, definedGroups.groupsWithLayers);\r\n }\r\n }\r\n if (projectConfig.config.wms) {\r\n wmsLayers = projectConfig.config.wms.filter(\r\n (v) => v.url === c.url\r\n );\r\n if (wmsLayers.length > 0) {\r\n this.updateGroups(wmsLayers, definedGroups.groupsWithLayers);\r\n }\r\n }\r\n\r\n return {\r\n ...c,\r\n vectorLayers,\r\n wmsLayers,\r\n isSelected: vectorLayers.length > 0 || wmsLayers.length > 0,\r\n featureTypes: null,\r\n } as ICatalogLayer;\r\n }\r\n return EMPTY\r\n });\r\n }\r\n ),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount()\r\n );\r\n\r\n projectLayers$ = combineLatest([\r\n this.projectLayers,\r\n this.projectLayersOriginal$,\r\n ]).pipe(\r\n map(\r\n ([projectLayers, projectLayersOriginal]: [\r\n ICatalogLayer[],\r\n ICatalogLayer[]\r\n ]) => {\r\n if (projectLayers.length === 0 && projectLayersOriginal.length !== 0) {\r\n this.projectLayers.next(projectLayersOriginal);\r\n return this.projectLayers.getValue();\r\n }\r\n return projectLayers;\r\n }\r\n ),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount()\r\n );\r\n\r\n getOgcApiData$ = combineLatest([this.ogcServiceUrlAction]).pipe(\r\n mergeMap(([ogcServiceUrl]: [string]) => {\r\n if (ogcServiceUrl) {\r\n const api = this.httpClient.get(ogcServiceUrl);\r\n const conformance = this.httpClient.get(ogcServiceUrl + 'conformance');\r\n return forkJoin({ api, conformance });\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n })\r\n );\r\n\r\n getOGCCollections$ = combineLatest([this.toggleOGCSourceUrlAction]).pipe(\r\n switchMap(([OGCSourceUrl]: [CatalogLayer]) => {\r\n if (OGCSourceUrl && OGCSourceUrl.url && !OGCSourceUrl.capabilities) {\r\n if (OGCSourceUrl.url.substring(OGCSourceUrl.url.length - 1) !== '/') {\r\n OGCSourceUrl.url += '/';\r\n }\r\n return this.httpClient.get(OGCSourceUrl.url + 'collections');\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n })\r\n );\r\n\r\n getOGCCollectionById$ = combineLatest([\r\n this.toggleOGCSourceUrlAction,\r\n this.ogcCollectionIdAction,\r\n ]).pipe(\r\n switchMap(([OGCSourceUrl, ogcCollectionId]: [CatalogLayer, string]) => {\r\n if (OGCSourceUrl && OGCSourceUrl.url && ogcCollectionId) {\r\n if (OGCSourceUrl.url.substring(OGCSourceUrl.url.length - 1) !== '/') {\r\n OGCSourceUrl.url += '/';\r\n }\r\n return this.httpClient.get(\r\n OGCSourceUrl.url + 'collections/' + ogcCollectionId\r\n );\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n })\r\n );\r\n\r\n toggleOGCCatalogLayerUrl$ = combineLatest([\r\n this.projectLayers$,\r\n this.toggleOGCSourceUrlAction,\r\n this.getOGCCollections$,\r\n ]).pipe(\r\n map(\r\n ([projectLayers, toggleOGCCatalogLayerUrl, OGCCollections]: [\r\n ICatalogLayer[],\r\n CatalogLayer,\r\n any\r\n ]) => {\r\n console.log('toggleOGCCatalogLayerUrl: ', toggleOGCCatalogLayerUrl);\r\n if (toggleOGCCatalogLayerUrl && toggleOGCCatalogLayerUrl.url) {\r\n const catalogLayer = projectLayers.find(\r\n (projectLayer) =>\r\n projectLayer && projectLayer.url === toggleOGCCatalogLayerUrl.url\r\n );\r\n if (catalogLayer) {\r\n if (OGCCollections && !catalogLayer.capabilities) {\r\n const ogcNodes = [];\r\n OGCCollections.collections.forEach((c) => {\r\n const node = new LayerNode(\r\n c.id,\r\n c.title,\r\n c.title,\r\n undefined,\r\n [],\r\n false,\r\n undefined,\r\n false,\r\n undefined\r\n );\r\n node.links = c.links;\r\n ogcNodes.push(node);\r\n });\r\n const newLayerCap = new LayerCapabilities();\r\n newLayerCap.nodes = ogcNodes;\r\n newLayerCap.url = catalogLayer.url;\r\n catalogLayer.capabilities = newLayerCap;\r\n } else {\r\n catalogLayer.capabilities = catalogLayer.capabilities\r\n ? catalogLayer.capabilities\r\n : undefined;\r\n }\r\n if (\r\n (catalogLayer.vectorLayers || catalogLayer.wmsLayers) &&\r\n catalogLayer.capabilities &&\r\n catalogLayer.capabilities.nodes\r\n ) {\r\n if (catalogLayer.vectorLayers) {\r\n catalogLayer.vectorLayers.forEach((v) => {\r\n const selectedGuid = v.guid;\r\n catalogLayer.capabilities.nodes.forEach((node) => {\r\n if (node.guid === selectedGuid) {\r\n node.isSelected = true;\r\n node.hasWarning = v.groupid ? false : true;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n return toggleOGCCatalogLayerUrl && toggleOGCCatalogLayerUrl.url\r\n ? toggleOGCCatalogLayerUrl.url\r\n : undefined;\r\n }\r\n ),\r\n tap((result) => console.log('OGC Catalog layer: ', result))\r\n );\r\n\r\n toggleCatalogLayerUrl$ = combineLatest([\r\n this.projectLayers$,\r\n this.toggleCatalogLayerUrl,\r\n this.layersCapabilitiesMaplib$,\r\n ]).pipe(\r\n map(\r\n ([projectLayers, toggleCatalogLayerUrl, layersCapabilities]: [\r\n ICatalogLayer[],\r\n string,\r\n any\r\n ]) => {\r\n const catalogLayer = projectLayers.find(\r\n (projectLayer) =>\r\n projectLayer && projectLayer.url === toggleCatalogLayerUrl\r\n );\r\n if (catalogLayer) {\r\n catalogLayer.capabilities = catalogLayer.capabilities\r\n ? catalogLayer.capabilities\r\n : layersCapabilities;\r\n if (\r\n (catalogLayer.vectorLayers || catalogLayer.wmsLayers) &&\r\n catalogLayer.capabilities &&\r\n catalogLayer.capabilities.nodes &&\r\n layersCapabilities\r\n ) {\r\n // copy guid from vector layer to node\r\n if (catalogLayer.vectorLayers) {\r\n catalogLayer.vectorLayers.forEach((v) => {\r\n const testTypeName = v.options.protocol.params.typename;\r\n let typeName = '';\r\n if (testTypeName && testTypeName.includes(':')) {\r\n typeName = testTypeName.split(':')[1];\r\n } else {\r\n typeName = testTypeName;\r\n }\r\n const findNode = catalogLayer?.capabilities?.nodes.find(\r\n (n) => n.name === typeName\r\n );\r\n if (findNode) {\r\n if (!findNode.guid) {\r\n findNode.guid = v.guid;\r\n findNode.typeName = v.options.protocol.params.typename;\r\n } else {\r\n const newNode = new LayerNode(\r\n v.guid,\r\n v.subname,\r\n findNode.title,\r\n findNode.layer,\r\n findNode.featureElements,\r\n catalogLayer.capabilities.transactions,\r\n v.options.protocol.params.typename,\r\n true,\r\n findNode.prefix\r\n );\r\n catalogLayer.capabilities.nodes.push(newNode);\r\n }\r\n } else {\r\n // Layer is in project, but could not be found in capabilities, probably removed\r\n const newNode = new LayerNode(\r\n v.guid,\r\n v.subname,\r\n v.name,\r\n null,\r\n null,\r\n catalogLayer.capabilities.transactions,\r\n v.options.protocol.params.typename,\r\n true,\r\n ''\r\n );\r\n catalogLayer.capabilities.nodes.push(newNode);\r\n }\r\n });\r\n }\r\n if (catalogLayer.wmsLayers) {\r\n catalogLayer.wmsLayers.forEach((w) => {\r\n const findNode = catalogLayer?.capabilities?.nodes.find(\r\n (n) => n.name === w.params.layers\r\n );\r\n if (findNode) {\r\n if (!findNode.guid) {\r\n findNode.guid = w.guid;\r\n } else {\r\n const newNode = new LayerNode(\r\n w.guid,\r\n w.name,\r\n findNode.title,\r\n findNode.layer,\r\n [],\r\n false,\r\n undefined,\r\n true,\r\n undefined\r\n );\r\n catalogLayer.capabilities.nodes.push(newNode);\r\n }\r\n } else {\r\n // Layer is in project, but could not be found in capabilities, probably removed\r\n const newNode = new LayerNode(\r\n w.guid,\r\n w.name,\r\n w.display,\r\n undefined,\r\n null,\r\n catalogLayer.capabilities.transactions,\r\n w.type,\r\n true,\r\n ''\r\n );\r\n catalogLayer.capabilities.nodes.push(newNode);\r\n }\r\n });\r\n }\r\n // generate guid for node without guid\r\n catalogLayer.capabilities.nodes.forEach((n) => {\r\n if (!n.guid) {\r\n n.guid = getUniqueId(4);\r\n }\r\n });\r\n catalogLayer.capabilities.nodes.sort((node1, node2) => {\r\n const name1 = node1.title.toLowerCase();\r\n const name2 = node2.title.toLowerCase();\r\n if (name1 > name2) {\r\n return 1;\r\n }\r\n if (name1 < name2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n if (catalogLayer.vectorLayers) {\r\n catalogLayer.vectorLayers.forEach((v) => {\r\n const selectedGuid = v.guid;\r\n catalogLayer.capabilities.nodes.forEach((node) => {\r\n if (node.guid === selectedGuid) {\r\n node.isSelected = true;\r\n node.hasWarning = v.groupid ? false : true;\r\n }\r\n });\r\n });\r\n }\r\n if (catalogLayer.wmsLayers && catalogLayer.wmsLayers.length) {\r\n catalogLayer.wmsLayers.forEach((w) => {\r\n const selectedGuid = w.guid;\r\n let countSelectedNodelayers = 0;\r\n catalogLayer.capabilities.nodes.forEach((node) => {\r\n if (node.guid === selectedGuid) {\r\n node.isSelected = true;\r\n node.hasWarning = w.groupid ? false : true;\r\n node.isOpened = false;\r\n node.layer?.forEach((nodelayer) => {\r\n nodelayer.isSelected = !!w.layers.layer.find(\r\n (wlayer) => wlayer.name === nodelayer.Name\r\n );\r\n });\r\n node.layer?.forEach((nodelayer) => {\r\n if (nodelayer.isSelected) {\r\n countSelectedNodelayers = countSelectedNodelayers + 1;\r\n }\r\n });\r\n node.countSelectedNodelayers = countSelectedNodelayers;\r\n if (countSelectedNodelayers === 0) {\r\n node.isSelected = false;\r\n }\r\n // when capabilities.node.layer is undefined but config contains the object layers.layer\r\n if (\r\n countSelectedNodelayers === 0 &&\r\n w.layers.layer.length > 0 &&\r\n node.layer === undefined\r\n ) {\r\n node.isSelected = true;\r\n }\r\n }\r\n });\r\n });\r\n console.log('NODES:', catalogLayer.capabilities.nodes);\r\n }\r\n } else if (\r\n (catalogLayer.vectorLayers || catalogLayer.wmsLayers) &&\r\n catalogLayer.capabilities &&\r\n catalogLayer.capabilities.nodes &&\r\n !layersCapabilities\r\n ) {\r\n if (catalogLayer.vectorLayers) {\r\n catalogLayer.vectorLayers.forEach((v) => {\r\n const selectedGuid = v.guid;\r\n catalogLayer.capabilities.nodes.forEach((node) => {\r\n if (node.guid === selectedGuid) {\r\n node.isSelected = true;\r\n node.hasWarning = v.groupid ? false : true;\r\n }\r\n });\r\n });\r\n }\r\n if (catalogLayer.wmsLayers) {\r\n catalogLayer.wmsLayers.forEach((w) => {\r\n const selectedGuid = w.guid;\r\n catalogLayer.capabilities.nodes.forEach((node) => {\r\n if (node.guid === selectedGuid) {\r\n node.hasWarning = w.groupid ? false : true;\r\n }\r\n });\r\n });\r\n }\r\n }\r\n }\r\n return toggleCatalogLayerUrl;\r\n }\r\n ),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount()\r\n );\r\n\r\n searchCatalogs$ = combineLatest([\r\n this.projectLayers$,\r\n this.searchCatalogValue,\r\n ]).pipe(\r\n map(([projectLayers, searchCatalogValue]: [ICatalogLayer[], string]) => {\r\n if (projectLayers && searchCatalogValue !== undefined) {\r\n const filteredProjectLayers = projectLayers.filter((catalogLayer) =>\r\n Object.keys(catalogLayer).some(\r\n (c) =>\r\n catalogLayer[c] !== null &&\r\n catalogLayer[c] !== undefined &&\r\n catalogLayer[c]\r\n .toString()\r\n .toLowerCase()\r\n .includes(searchCatalogValue.toLowerCase())\r\n )\r\n );\r\n return filteredProjectLayers.sort((layer1, layer2) => {\r\n const isSelected1 = layer1.isSelected;\r\n const isSelected2 = layer2.isSelected;\r\n if (isSelected1 < isSelected2) {\r\n return 1;\r\n }\r\n if (isSelected1 > isSelected2) {\r\n return -1;\r\n }\r\n\r\n const name1 = (layer1.title || '').toLowerCase();\r\n const name2 = (layer2.title || '').toLowerCase();\r\n if (name1 > name2) {\r\n return 1;\r\n }\r\n if (name1 < name2) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n }\r\n return [];\r\n })\r\n );\r\n\r\n editFeatureType$ = combineLatest([\r\n this.editFeatureType,\r\n this.featureTypeWithElementsMaplib$,\r\n this.projectLayers$,\r\n this.ogcCategoryIdAction,\r\n this.getOGCCollectionById$,\r\n ]).pipe(\r\n map(\r\n ([\r\n editFeatureType,\r\n featureTypeWithElements,\r\n projectLayers,\r\n ogcCategoryId,\r\n OGCCollectionById,\r\n ]: [LayerNode, any, ICatalogLayer[], string, any]) => {\r\n if (OGCCollectionById) {\r\n console.log('OGCCollectionById: ', OGCCollectionById);\r\n }\r\n if (editFeatureType) {\r\n if (featureTypeWithElements) {\r\n const catalogLayerForFeatureType = projectLayers.find(\r\n (projectLayer) =>\r\n projectLayer.url === featureTypeWithElements.catalogLayerId\r\n );\r\n if (catalogLayerForFeatureType) {\r\n const node = catalogLayerForFeatureType.capabilities.nodes.find(\r\n (n) => n.guid === featureTypeWithElements.guid\r\n );\r\n if (node && !node.featureElements) {\r\n node.transactions =\r\n catalogLayerForFeatureType.capabilities.transactions;\r\n node.featureElements = featureTypeWithElements.featureElements;\r\n const vector = catalogLayerForFeatureType.vectorLayers.find(\r\n (v) => v.guid === node.guid\r\n );\r\n if (vector) {\r\n if (\r\n !['true', 'false'].includes(vector.featureinfo.editable)\r\n ) {\r\n vector.featureinfo.editable = node.transactions\r\n ? 'true'\r\n : 'false';\r\n }\r\n vector.featureinfo.featureinfoelement.forEach((ve) => {\r\n node.featureElements.forEach((fe) => {\r\n if (ve.name === fe.name) {\r\n fe.isSelected = true;\r\n fe.text = ve.text;\r\n fe.attachment = ve.attachment ? ve.attachment : 'false';\r\n fe.hascodelist = ve.hascodelist\r\n ? ve.hascodelist\r\n : 'false';\r\n fe.codevalue = ve.codevalue ? [...ve.codevalue] : [];\r\n fe.editable = ve.editable ? ve.editable : 'false';\r\n fe.datatype = ve.datatype ? ve.datatype : 'text';\r\n }\r\n });\r\n });\r\n }\r\n return node;\r\n }\r\n }\r\n }\r\n if (OGCCollectionById && ogcCategoryId) {\r\n const catalogLayerForFeatureType = projectLayers.find(\r\n (projectLayer) => projectLayer.guid === ogcCategoryId\r\n );\r\n if (catalogLayerForFeatureType) {\r\n const node = catalogLayerForFeatureType.capabilities.nodes.find(\r\n (n) => n.guid === OGCCollectionById.id\r\n );\r\n if (node) {\r\n // node.transactions = catalogLayerForFeatureType.capabilities.transactions;\r\n node.featureElements = OGCCollectionById.properties;\r\n const vector = catalogLayerForFeatureType.vectorLayers.find(\r\n (v) => v.guid === node.guid\r\n );\r\n if (vector) {\r\n // vector.options.protocol.type = 'VECTOR';\r\n // OGCCollectionById.links.forEach(l => {\r\n // if (l.type === 'application/geo+json') {\r\n // vector.options.protocol.url = l.href;\r\n // }\r\n // });\r\n // // vector.noproxy = 'true';\r\n // vector.type = 'overlay';\r\n // vector.options.dataprojection = 'EPSG:25832';\r\n vector.featureinfo.editable =\r\n vector.featureinfo.editable === 'true'\r\n ? 'true'\r\n : vector.featureinfo.editable === 'false'\r\n ? 'false'\r\n : node.transactions\r\n ? 'true'\r\n : 'false';\r\n vector.featureinfo.featureinfoelement.forEach((ve) => {\r\n node.featureElements.forEach((fe) => {\r\n if (ve.name === fe.name) {\r\n fe.isSelected = true;\r\n fe.text = ve.text;\r\n fe.attachment = ve.attachment ? ve.attachment : 'false';\r\n fe.hascodelist = ve.hascodelist\r\n ? ve.hascodelist\r\n : 'false';\r\n fe.codevalue = ve.codevalue ? [...ve.codevalue] : [];\r\n fe.editable = ve.editable ? ve.editable : 'false';\r\n fe.datatype = ve.datatype ? ve.datatype : 'text';\r\n // fe.datatype = ve.datatype ? ve.datatype : (fe.type ? fe.type.substr(fe.type.indexOf(':') + 1) : 'string');\r\n }\r\n });\r\n });\r\n }\r\n return node;\r\n }\r\n }\r\n }\r\n }\r\n if (\r\n editFeatureType &&\r\n (!editFeatureType.featureElements ||\r\n editFeatureType.featureElements.length === 0)\r\n ) {\r\n editFeatureType.featureElements = undefined;\r\n }\r\n return editFeatureType;\r\n }\r\n )\r\n );\r\n\r\n openedCatalogLayer$ = combineLatest([\r\n this.projectLayers$,\r\n this.toggleCatalogLayerUrl$,\r\n this.toggleOGCCatalogLayerUrl$,\r\n this.editFeatureType$,\r\n ]).pipe(\r\n map(\r\n ([\r\n projectLayers,\r\n toggleCatalogLayerUrl,\r\n toggleOGCCatalogLayerUrl,\r\n editFeatureType,\r\n ]: [ICatalogLayer[], string, string, LayerNode]) => {\r\n if (\r\n editFeatureType &&\r\n (toggleCatalogLayerUrl || toggleOGCCatalogLayerUrl)\r\n ) {\r\n let openedCatalog;\r\n if (toggleCatalogLayerUrl) {\r\n openedCatalog = projectLayers.find(\r\n (catalogLayer) => catalogLayer.url === toggleCatalogLayerUrl\r\n );\r\n }\r\n if (toggleOGCCatalogLayerUrl) {\r\n openedCatalog = projectLayers.find(\r\n (catalogLayer) => catalogLayer.url === toggleOGCCatalogLayerUrl\r\n );\r\n }\r\n if (openedCatalog.vectorLayers && openedCatalog.vectorLayers.length) {\r\n const vector = openedCatalog.vectorLayers.find(\r\n (v) => v.guid === editFeatureType.guid\r\n );\r\n return vector;\r\n } else if (\r\n openedCatalog.wmsLayers &&\r\n openedCatalog.wmsLayers.length\r\n ) {\r\n const wms = openedCatalog.wmsLayers.find(\r\n (v) => v.guid === editFeatureType.guid\r\n );\r\n if (!wms.params.featureinfoformats) {\r\n wms.params.featureinfoformats = { format: null };\r\n }\r\n wms.params.featureinfoformats.format = wms.params.featureinfoformats\r\n .format\r\n ? wms.params.featureinfoformats.format\r\n : openedCatalog?.capabilities?.featureInfoFormats;\r\n return wms;\r\n }\r\n }\r\n return undefined;\r\n }\r\n )\r\n );\r\n\r\n addLayer$ = combineLatest([\r\n this.addLayerAction,\r\n this.mapService.config$,\r\n ]).pipe(\r\n switchMap(([layer, config]: [CatalogLayer, IConfigJson]) => {\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n if (layer && isytoken) {\r\n let sourceAddUrl = config.configurl;\r\n sourceAddUrl +=\r\n '/api/v2/sourcelist/AddLayer?application=' +\r\n config.instance +\r\n '&isytoken=' +\r\n isytoken;\r\n\r\n const headers = {\r\n 'Content-type': 'application/json',\r\n };\r\n\r\n return this.httpClient.post(sourceAddUrl, layer, { headers }).pipe(\r\n map((result: boolean) => {\r\n return result;\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n } else {\r\n return Promise.resolve();\r\n }\r\n })\r\n );\r\n\r\n getCatalogLibrary(): Promise {\r\n const config: IConfigJson = this.mapService.getConfig();\r\n let sourceListUrl = config.configurl;\r\n sourceListUrl += '/api/v2/sourcelist?application=' + config.instance;\r\n return firstValueFrom(this.httpClient.get(sourceListUrl)).then(\r\n (value: ICatalogLibrary) => this.catalogLibrary.next(value)\r\n );\r\n }\r\n getSourceListCallback(value: ICatalogLibrary): void {\r\n this.catalogLibrary.next(value);\r\n }\r\n\r\n updateGroups(\r\n layers: IWms[] | IVector[],\r\n definedGroups: IGroupPreview[]\r\n ): void {\r\n if (layers.length > 0) {\r\n layers.forEach((v) => {\r\n const groupIds = v.groupid ? v.groupid.split(',') : [''];\r\n const groupTitles = v.grouptitle ? v.grouptitle.split(',') : [''];\r\n const group = definedGroups.find((g) => g.groupid === groupIds[0]);\r\n if (!group) {\r\n v.groupid = undefined;\r\n v.grouptitle = '';\r\n } else {\r\n v.groupid = groupIds[0];\r\n v.grouptitle = groupTitles[0];\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleCatalogLayer(catalogLayer: CatalogLayer): Promise {\r\n this.toggleOGCSourceUrlAction.next(undefined);\r\n this.mapEmitterService.emitGetCapabilitiesFromUrl(undefined);\r\n this.editFeatureType.next(undefined);\r\n this.toggleCatalogLayerUrl.next(\r\n this.toggleCatalogLayerUrl.value === catalogLayer.url\r\n ? undefined\r\n : catalogLayer.url\r\n );\r\n return !catalogLayer.capabilities\r\n ? this.getCapabilitiesFromUrl(catalogLayer)\r\n : Promise.resolve();\r\n }\r\n\r\n toggleOGCSource(catalogLayer: CatalogLayer): void {\r\n this.mapEmitterService.emitGetCapabilitiesFromUrl(undefined);\r\n this.editFeatureType.next(undefined);\r\n this.ogcCollectionIdAction.next(undefined);\r\n this.toggleCatalogLayerUrl.next(undefined);\r\n if (\r\n this.toggleOGCSourceUrlAction.value &&\r\n this.toggleOGCSourceUrlAction.value.url === catalogLayer.url\r\n ) {\r\n this.toggleOGCSourceUrlAction.next(undefined);\r\n } else {\r\n this.toggleOGCSourceUrlAction.next(undefined);\r\n setTimeout(() => {\r\n this.toggleOGCSourceUrlAction.next(catalogLayer);\r\n });\r\n }\r\n }\r\n\r\n setOgcServiceUrl(value: string): void {\r\n this.ogcServiceUrlAction.next(value);\r\n }\r\n\r\n closeCatalogLayer(): void {\r\n this.editFeatureType.next(undefined);\r\n this.toggleOGCSourceUrlAction.next(undefined);\r\n this.toggleCatalogLayerUrl.next(undefined);\r\n }\r\n\r\n changeSearchedCatalogValue(searchValue: string): void {\r\n this.searchCatalogValue.next(searchValue);\r\n }\r\n\r\n addWmsLayer(\r\n node: LayerNode,\r\n catalogLayer: ICatalogLayer,\r\n projectConfig: IProjectConfig,\r\n nodeUpdated: boolean\r\n ): void {\r\n // node.isSelected = !node.isSelected;\r\n // Remove all node.layers\r\n if (!node.isSelected && !nodeUpdated) {\r\n this.editFeatureType.next(undefined);\r\n if (node.layer) {\r\n node.layer.forEach((l) => {\r\n l.isSelected = false;\r\n });\r\n }\r\n node.countSelectedNodelayers = 0;\r\n }\r\n const wmsLayer =\r\n catalogLayer.wmsLayers.length > 0\r\n ? catalogLayer.wmsLayers.find((w) => w.guid === node.guid)\r\n : undefined;\r\n // TODO: fix for wms\r\n // Layer to be added\r\n if (!wmsLayer && node.isSelected) {\r\n const newParams = new ParamsWms(node.name);\r\n const newWmsOptions = new WmsOptions('false');\r\n // const newLayer = new WmsLayer(node.name, 'false');\r\n // const newLayers = new Layers([newLayer]); // todo\r\n const newSubLayers = [];\r\n if (node.layer) {\r\n node.layer.forEach((l) => {\r\n l.isSelected = true;\r\n newSubLayers.push(new WmsLayer(l.Name, l.Title, 'false'));\r\n });\r\n node.countSelectedNodelayers = node.layer.length;\r\n }\r\n if (!node.layer) {\r\n newSubLayers.push(new WmsLayer(node.name, node.title, 'false'));\r\n }\r\n const newLayers = new Layers(newSubLayers); // todo\r\n const newWmsLayer = new Wms(\r\n newLayers,\r\n 'true',\r\n 'false',\r\n node.guid,\r\n '0',\r\n node.name,\r\n newWmsOptions,\r\n newParams,\r\n 'WMS',\r\n catalogLayer.url\r\n );\r\n catalogLayer.wmsLayers.push(newWmsLayer);\r\n projectConfig.config.wms.push(newWmsLayer);\r\n node.hasWarning = true;\r\n }\r\n // Layer to be updated\r\n if (!wmsLayer && nodeUpdated) {\r\n const newParams = new ParamsWms(node.name);\r\n const newWmsOptions = new WmsOptions('false');\r\n const newSubLayers = [];\r\n if (node.layer) {\r\n let nodeLayerCounter = 0;\r\n node.layer.forEach((l) => {\r\n if (l.isSelected) {\r\n newSubLayers.push(new WmsLayer(l.Name, l.Title, 'false'));\r\n nodeLayerCounter++;\r\n node.isSelected = true;\r\n }\r\n });\r\n node.countSelectedNodelayers = nodeLayerCounter;\r\n }\r\n const newLayers = new Layers(newSubLayers); // todo\r\n const newWmsLayer = new Wms(\r\n newLayers,\r\n 'true',\r\n 'false',\r\n node.guid,\r\n '0',\r\n node.name,\r\n newWmsOptions,\r\n newParams,\r\n 'WMS',\r\n catalogLayer.url\r\n );\r\n catalogLayer.wmsLayers.push(newWmsLayer);\r\n projectConfig.config.wms.push(newWmsLayer);\r\n node.hasWarning = true;\r\n if (node.layer.length === 0) {\r\n node.isSelected = false;\r\n }\r\n }\r\n // Add all node.layers\r\n if (wmsLayer && node.isSelected && !nodeUpdated) {\r\n const newSubLayers = [];\r\n if (node.layer) {\r\n node.layer.forEach((l) => {\r\n l.isSelected = true;\r\n newSubLayers.push(new WmsLayer(l.Name, l.Title, 'false'));\r\n });\r\n node.countSelectedNodelayers = node.layer.length;\r\n }\r\n const catalogWmsLayer =\r\n catalogLayer.wmsLayers.length > 0\r\n ? catalogLayer.wmsLayers.find((w) => w.guid === node.guid)\r\n : undefined;\r\n catalogWmsLayer.layers.layer = newSubLayers;\r\n const configWmsLayer =\r\n projectConfig.config.wms.length > 0\r\n ? projectConfig.config.wms.find((w) => w.guid === node.guid)\r\n : undefined;\r\n configWmsLayer.layers.layer = newSubLayers;\r\n if (node.layer.length === 0) {\r\n node.isSelected = false;\r\n }\r\n }\r\n // Update node.layer if it is updated\r\n if (wmsLayer && node.isSelected && nodeUpdated) {\r\n const newSubLayers = [];\r\n if (node.layer) {\r\n let nodeLayerCounter = 0;\r\n node.layer.forEach((l) => {\r\n if (l.isSelected) {\r\n newSubLayers.push(new WmsLayer(l.Name, l.Title, 'false'));\r\n nodeLayerCounter++;\r\n }\r\n });\r\n node.countSelectedNodelayers = nodeLayerCounter;\r\n if (nodeLayerCounter === 0) {\r\n node.isSelected = false;\r\n }\r\n }\r\n const catalogWmsLayer =\r\n catalogLayer.wmsLayers.length > 0\r\n ? catalogLayer.wmsLayers.find((w) => w.guid === node.guid)\r\n : undefined;\r\n catalogWmsLayer.layers.layer = newSubLayers;\r\n const configWmsLayer =\r\n projectConfig.config.wms.length > 0\r\n ? projectConfig.config.wms.find((w) => w.guid === node.guid)\r\n : undefined;\r\n configWmsLayer.layers.layer = newSubLayers;\r\n if (node.layer.length === 0) {\r\n node.isSelected = false;\r\n }\r\n }\r\n // remove layer\r\n if (wmsLayer && !node.isSelected) {\r\n const removeIndex = catalogLayer.wmsLayers.findIndex(\r\n (wms) => wms.guid === node.guid\r\n );\r\n catalogLayer.wmsLayers.splice(removeIndex, 1);\r\n const removeWmsIndex = projectConfig.config.wms.findIndex(\r\n (l) => l.guid === node.guid\r\n );\r\n projectConfig.config.wms.splice(removeWmsIndex, 1);\r\n }\r\n }\r\n\r\n addVectorLayer(\r\n node: LayerNode,\r\n catalogLayer: ICatalogLayer,\r\n projectConfig: IProjectConfig\r\n ): void {\r\n node.isSelected = !node.isSelected;\r\n if (!node.isSelected) {\r\n this.editFeatureType.next(undefined);\r\n }\r\n const vectorLayer =\r\n catalogLayer.vectorLayers.length > 0\r\n ? catalogLayer.vectorLayers.find((v) => v.guid === node.guid)\r\n : undefined;\r\n if (!vectorLayer && node.isSelected) {\r\n let hasTypeNamePrefix = false;\r\n if (node.typeName) {\r\n hasTypeNamePrefix = node.typeName.includes(':');\r\n } else {\r\n if (node.name) {\r\n hasTypeNamePrefix = node.name.includes(':');\r\n }\r\n }\r\n let typeNameParam;\r\n if (hasTypeNamePrefix === false) {\r\n typeNameParam = node.prefix\r\n ? node.prefix + ':' + (node.typeName || node.name)\r\n : node.typeName || node.name;\r\n } else {\r\n typeNameParam = node.typeName || node.name;\r\n }\r\n const newParams = new Params(\r\n catalogLayer.service,\r\n catalogLayer.service,\r\n typeNameParam\r\n );\r\n const newProtocol = new Protocol(\r\n newParams,\r\n catalogLayer.url,\r\n catalogLayer.version\r\n );\r\n const newVectorOptions = new VectorOptions(newProtocol);\r\n const newFeatureInfo = new FeatureInfoProjectConfig([]);\r\n const newVectorLayer = new Vector(\r\n node.name || node.title,\r\n node.guid,\r\n newFeatureInfo,\r\n newVectorOptions\r\n );\r\n catalogLayer.vectorLayers.push(newVectorLayer);\r\n projectConfig.config.vector.push(newVectorLayer);\r\n node.hasWarning = true;\r\n }\r\n if (vectorLayer && !node.isSelected) {\r\n const removeIndex = catalogLayer.vectorLayers.findIndex(\r\n (vector) => vector.guid === node.guid\r\n );\r\n catalogLayer.vectorLayers.splice(removeIndex, 1);\r\n const removeVectorIndex = projectConfig.config.vector.findIndex(\r\n (vector) => vector.guid === node.guid\r\n );\r\n projectConfig.config.vector.splice(removeVectorIndex, 1);\r\n }\r\n }\r\n\r\n addOGCLayer(\r\n node: LayerNode,\r\n catalogLayer: ICatalogLayer,\r\n projectConfig: IProjectConfig\r\n ): void {\r\n node.isSelected = !node.isSelected;\r\n if (!node.isSelected) {\r\n this.editFeatureType.next(undefined);\r\n }\r\n const vectorLayer =\r\n catalogLayer.vectorLayers.length > 0\r\n ? catalogLayer.vectorLayers.find((v) => v.guid === node.guid)\r\n : undefined;\r\n if (!vectorLayer && node.isSelected) {\r\n let hasTypeNamePrefix = false;\r\n if (node.typeName) {\r\n hasTypeNamePrefix = node.typeName.includes(':');\r\n } else {\r\n if (node.name) {\r\n hasTypeNamePrefix = node.name.includes(':');\r\n }\r\n }\r\n let typeNameParam;\r\n if (hasTypeNamePrefix === false) {\r\n typeNameParam = node.prefix\r\n ? node.prefix + ':' + (node.typeName || node.name)\r\n : node.typeName || node.name;\r\n } else {\r\n typeNameParam = node.typeName || node.name;\r\n }\r\n const newParams = new Params(\r\n catalogLayer.service,\r\n catalogLayer.service,\r\n typeNameParam\r\n );\r\n const newProtocol = new Protocol(\r\n newParams,\r\n catalogLayer.url,\r\n catalogLayer.version\r\n );\r\n const newVectorOptions = new VectorOptions(newProtocol);\r\n newVectorOptions.protocol.type = 'VECTOR';\r\n // newVectorOptions.dataprojection = 'EPSG:25832';\r\n node.links.forEach((l) => {\r\n if (l['type'] === 'application/geo+json') {\r\n newVectorOptions.protocol.url = l['href'];\r\n if (newVectorOptions.protocol.url.startsWith('http:')) {\r\n const re = /http/gi;\r\n newVectorOptions.protocol.url =\r\n newVectorOptions.protocol.url.replace(re, 'https');\r\n }\r\n }\r\n });\r\n const newFeatureInfo = new FeatureInfoProjectConfig([]);\r\n const newVectorLayer = new Vector(\r\n node.name || node.title,\r\n node.guid,\r\n newFeatureInfo,\r\n newVectorOptions\r\n );\r\n newVectorLayer.noproxy = 'true';\r\n catalogLayer.vectorLayers.push(newVectorLayer);\r\n projectConfig.config.vector.push(newVectorLayer);\r\n node.hasWarning = true;\r\n }\r\n if (vectorLayer && !node.isSelected) {\r\n const removeIndex = catalogLayer.vectorLayers.findIndex(\r\n (vector) => vector.guid === node.guid\r\n );\r\n catalogLayer.vectorLayers.splice(removeIndex, 1);\r\n const removeVectorIndex = projectConfig.config.vector.findIndex(\r\n (vector) => vector.guid === node.guid\r\n );\r\n projectConfig.config.vector.splice(removeVectorIndex, 1);\r\n }\r\n }\r\n\r\n changeEditFeatureType(\r\n featureType: LayerNode,\r\n catalogLayer: ICatalogLayer\r\n ): void {\r\n this.editFeatureType.next(\r\n this.editFeatureType.value &&\r\n this.editFeatureType.value.guid === featureType.guid\r\n ? undefined\r\n : featureType\r\n );\r\n if (!featureType.featureElements) {\r\n const vector = catalogLayer.vectorLayers.find(\r\n (v) => v.guid === featureType.guid\r\n );\r\n if (vector) {\r\n this.describeFeatureUrl(vector, featureType, catalogLayer);\r\n }\r\n }\r\n }\r\n\r\n changeEditOGCFeatureType(\r\n featureType: LayerNode,\r\n catalogLayer: ICatalogLayer\r\n ): void {\r\n this.ogcCategoryIdAction.next(undefined);\r\n this.ogcCollectionIdAction.next(undefined);\r\n setTimeout(() => {\r\n this.editFeatureType.next(\r\n this.editFeatureType.value &&\r\n this.editFeatureType.value.guid === featureType.guid\r\n ? undefined\r\n : featureType\r\n );\r\n this.ogcCategoryIdAction.next(catalogLayer.guid);\r\n this.ogcCollectionIdAction.next(featureType.guid);\r\n });\r\n }\r\n\r\n changeEditCatalogLayerUrl(url: string): void {\r\n this.editCatalogLayerUrl.next(url);\r\n }\r\n\r\n getEditCatalogLayerUrl(): string {\r\n return this.editCatalogLayerUrl.getValue();\r\n }\r\n\r\n private describeFeatureUrl(\r\n layer: IVector,\r\n node: LayerNode,\r\n catalogLayer: CatalogLayer\r\n ): void {\r\n console.log('PARSED: ', this.parsedCapabilities);\r\n const featureType =\r\n this.parsedCapabilities.featureTypeList.featureType.find(\r\n (f) => f.title === node.title\r\n );\r\n let format = '';\r\n if (\r\n featureType &&\r\n featureType.outputFormats &&\r\n featureType.outputFormats.format[0]\r\n ) {\r\n format = featureType.outputFormats.format[0];\r\n }\r\n const params = {\r\n service:\r\n layer?.options?.protocol?.params?.service ||\r\n layer?.options?.protocol?.type,\r\n name: node.name,\r\n title: node.title,\r\n guid: node.guid,\r\n catalogLayerId: catalogLayer.url,\r\n version: layer.options.protocol.version,\r\n typeName: node.typeName,\r\n prefix: node.prefix,\r\n // TODO: should not be necessary to specify outputFormat, possible to find supported formats from getCapabilities\r\n outputFormat: format, // 'text/xml;%20subtype=gml/3.2'\r\n };\r\n this.mapLibNgService\r\n .map()\r\n .describeFeatureUrl(layer.options.protocol.url, params);\r\n }\r\n\r\n private getCapabilitiesFromUrl(layer: CatalogLayer): Promise {\r\n const url = layer.url;\r\n const params = {\r\n service: layer.service,\r\n version: layer.version,\r\n typeName: layer.typename,\r\n subName: layer.subname,\r\n };\r\n\r\n try {\r\n return this.mapLibNgService\r\n .map()\r\n .getCapabilitiesFromUrlAsync(\r\n url,\r\n params,\r\n this.capabilitiesService.parseGetCapabilies.bind(this)\r\n );\r\n } catch {\r\n this.toasterService.error(\r\n this.translateService.instant('admin_layers_get_capabilities_error'),\r\n 'ERROR'\r\n );\r\n return this.handleErrorWithPromise(this.translateService.instant('admin_layers_get_capabilities_error'));\r\n }\r\n }\r\n\r\n getCapabilitiesUrlVersion(\r\n service: string,\r\n url: string,\r\n version: string | undefined\r\n ): Promise {\r\n const params = {\r\n service,\r\n version,\r\n };\r\n\r\n try {\r\n return this.mapLibNgService\r\n .map()\r\n .getCapabilitiesFromUrlAsync(\r\n url,\r\n params,\r\n this.capabilitiesService.parseGetCapabilies.bind(this)\r\n );\r\n } catch {\r\n this.toasterService.error(\r\n this.translateService.instant('admin_layers_get_capabilities_error'),\r\n 'ERROR'\r\n );\r\n return this.handleErrorWithPromise(this.translateService.instant('admin_layers_get_capabilities_error'));\r\n }\r\n }\r\n\r\n addLayer(layer: CatalogLayer): void {\r\n const newCatalogLayer: ICatalogLayer = {\r\n guid: layer.guid,\r\n url: layer.url,\r\n provider: layer.provider,\r\n title: layer.title,\r\n category: layer.category,\r\n service: layer.service,\r\n version: layer.version,\r\n typename: layer.typename,\r\n subname: layer.subname,\r\n featureTypes: [],\r\n vectorLayers: [],\r\n wmsLayers: [],\r\n };\r\n\r\n const allData = this.projectLayers.getValue();\r\n // if layer exist in list remove old layer and replace with new one\r\n const layerIndex = allData.findIndex((l) => l.url === layer.url);\r\n if (layerIndex > -1) {\r\n allData[layerIndex].title = layer.title;\r\n allData[layerIndex].subname = layer.subname;\r\n allData[layerIndex].provider = layer.provider;\r\n allData[layerIndex].category = layer.category;\r\n } else {\r\n allData.push(newCatalogLayer);\r\n }\r\n\r\n this.addLayerAction.next(newCatalogLayer);\r\n this.projectLayers.next(allData);\r\n }\r\n\r\n removeLayer(layer: CatalogLayer): void {\r\n const allLayers = this.projectLayers.getValue();\r\n const layerIndex = allLayers.findIndex((l) => l.url === layer.url);\r\n if (layerIndex > -1) {\r\n allLayers.splice(layerIndex, 1);\r\n this.projectLayers.next(allLayers);\r\n }\r\n }\r\n\r\n getProjectLayers(): ICatalogLayer[] {\r\n const projectLayers = this.projectLayers.getValue();\r\n return projectLayers.filter((l) => l.isSelected === true);\r\n }\r\n\r\n getAllProjectLayers(): ICatalogLayer[] {\r\n return this.projectLayers.getValue();\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.statusText}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n this.toasterService.error(errorMessage, 'ERROR');\r\n return Promise.resolve();\r\n }\r\n}\r\n","import { TabButton } from '../../tab-button';\r\n\r\nexport const TABBUTTONS: TabButton[] = [\r\n {\r\n id: 1,\r\n text: 'admin_data_source_title',\r\n helpFile: 'adminMaplayersConnections',\r\n },\r\n { id: 2, text: 'admin_services_title', helpFile: 'adminServices' },\r\n {\r\n id: 3,\r\n text: 'admin_order_map_layers',\r\n helpFile: 'adminKartlagsrekkefølge',\r\n },\r\n];\r\n","import { Component, HostBinding, OnDestroy } from '@angular/core';\r\nimport { IsyAdminService } from '../../../isy-admin.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { MapLibNgService } from '@isygis/isy-map';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { ProjectSettingsService } from '../project-settings.service';\r\nimport { UntypedFormControl, Validators } from '@angular/forms';\r\nimport {\r\n FileSystemFileEntry,\r\n NgxFileDropEntry,\r\n} from 'ngx-file-drop';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\n\r\n@Component({\r\n selector: 'lib-project-basic',\r\n templateUrl: './project-basic.component.html',\r\n styleUrls: ['../../../isy-admin-new-style.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class ProjectBasicComponent implements OnDestroy {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n // validering av inputfelt\r\n numZoomLevelControl = new UntypedFormControl('', [\r\n Validators.max(25),\r\n Validators.min(1),\r\n Validators.pattern('[1-9][0-9]*'),\r\n ]);\r\n zoomLevelControl = new UntypedFormControl('', [\r\n Validators.max(this.numZoomLevelControl.value),\r\n Validators.min(1),\r\n Validators.pattern('[1-9][0-9]*'),\r\n ]);\r\n\r\n fileInput: any;\r\n acceptFiles = ['.png', '.jpg', '.jpeg'];\r\n uploadToServerSubscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private adminService: IsyAdminService,\r\n private mapLibNgService: MapLibNgService,\r\n private projectSettingsService: ProjectSettingsService,\r\n private toasterService: IsyToasterService,\r\n ) {\r\n // empty\r\n }\r\n\r\n projectConfig$ = this.adminService.tempProjectConfig$;\r\n saveheaderIcon$ = this.projectSettingsService.saveheaderIcon$;\r\n\r\n vm$ = combineLatest([this.projectConfig$]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => ({\r\n config: projectConfig.config,\r\n })),\r\n tap((result) => {\r\n setTimeout(() => {\r\n this.numZoomLevelControl.setValue(result.config.project.numzoomlevels);\r\n this.zoomLevelControl.setValue(result.config.project.zoom);\r\n }, 200);\r\n console.log('PAGE Basic: ', result);\r\n })\r\n );\r\n\r\n ngOnDestroy(): void {\r\n this.uploadToServerSubscription.unsubscribe();\r\n }\r\n\r\n setNumZoomLevels(vm: any, numZoomLevel): void {\r\n if (numZoomLevel) {\r\n vm.config.project.numzoomlevels = numZoomLevel;\r\n if (vm.config.project.zoom > numZoomLevel) {\r\n vm.config.project.zoom = numZoomLevel;\r\n this.zoomLevelControl.setValue(numZoomLevel);\r\n }\r\n }\r\n }\r\n\r\n setZoomLevel(vm: any, zoom): void {\r\n if (zoom) {\r\n vm.config.project.zoom = zoom;\r\n }\r\n }\r\n\r\n dropped(files: NgxFileDropEntry[], vm: any): void {\r\n console.log('Dropped file');\r\n if (files.length >= 2) {\r\n console.log('You should only drop 1 file, selecting the first.');\r\n }\r\n const iconFile = files[0];\r\n if (iconFile.fileEntry.isFile) {\r\n const fileEntry = iconFile.fileEntry as FileSystemFileEntry;\r\n fileEntry.file((icon: File) => {\r\n let okFile = false;\r\n for (const accepted of this.acceptFiles) {\r\n if (icon.name.toLowerCase().endsWith(accepted)) {\r\n okFile = true;\r\n break;\r\n }\r\n }\r\n if (okFile) {\r\n console.log('File dropped', icon);\r\n this.upload2Server(icon, vm);\r\n }\r\n });\r\n }\r\n }\r\n\r\n uploadFiles(files: FileList, vm: any): void {\r\n if (files?.length) {\r\n if (files.length >= 2) {\r\n console.log('You should only choose 1 file, selecting the first.');\r\n }\r\n const iconFile = files[0];\r\n let okFile = false;\r\n for (const accepted of this.acceptFiles) {\r\n if (iconFile.name.toLowerCase().endsWith(accepted)) {\r\n okFile = true;\r\n break;\r\n }\r\n }\r\n if (okFile) {\r\n console.log('File chosen', iconFile);\r\n this.upload2Server(iconFile, vm);\r\n }\r\n }\r\n }\r\n\r\n upload2Server(icon: File, vm: any): void {\r\n console.log('Upload to server', icon);\r\n this.uploadToServerSubscription.unsubscribe();\r\n this.uploadToServerSubscription = new Subscription();\r\n this.uploadToServerSubscription.add(\r\n this.saveheaderIcon$.subscribe((value) => {\r\n if (value && value !== false) {\r\n console.log('SUCCESS ICON UPLOAD', value);\r\n this.uploadToServerSubscription.unsubscribe();\r\n const result = value.Result ? value.Result : value;\r\n if (result?.find((v) => v.First === 'url')?.Second) {\r\n const iconUrl = result.find((v) => v.First === 'url').Second;\r\n vm.config.project.headericon = iconUrl;\r\n }\r\n }\r\n })\r\n );\r\n this.projectSettingsService.setHeaderIconUpdated(icon);\r\n console.log('Uploading...');\r\n }\r\n\r\n selectEpsg(vm: IProjectConfig, epsg): void {\r\n if (this.transformCoordinates(vm, vm.config.project.epsg, epsg)) {\r\n vm.config.project.epsg = epsg;\r\n } else {\r\n const message = 'Could not transform coordinates to ' + epsg;\r\n console.log(message);\r\n this.toasterService.warning(message, 'error');\r\n }\r\n }\r\n\r\n getMapCoordinates(vm: IProjectConfig): void {\r\n const center = this.mapLibNgService.map().getCenter();\r\n vm.config.project.epsg = center.epsg;\r\n vm.config.project.lat = Number(center.lat).toFixed();\r\n vm.config.project.lon = Number(center.lon).toFixed();\r\n vm.config.project.zoom = center.zoom.toString();\r\n this.zoomLevelControl.setValue(center.zoom);\r\n }\r\n\r\n transformCoordinates(\r\n vm: IProjectConfig,\r\n fromEpsg: string,\r\n toEpsg: string\r\n ): boolean {\r\n const fromCoord = [\r\n parseFloat(vm.config.project.lon),\r\n parseFloat(vm.config.project.lat),\r\n ];\r\n const coord = this.mapLibNgService\r\n .map()\r\n .transformCoordinates(fromEpsg, toEpsg, fromCoord);\r\n if (coord) {\r\n vm.config.project.lon = Number(coord[0]).toFixed();\r\n vm.config.project.lat = Number(coord[1]).toFixed();\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{'admin_settings_project_name' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_project_headertitle' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_project_headersubtitle' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_project_headericon' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_select_file_png_jpg_for_upload' | translate}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_coordinate_system' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{mapbound.epsg}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_center' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_zoom' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_num_zoom_levels' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_restricted' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_update_extent' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_settings_hover_info_first_layer' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    ","import { Component, HostBinding } from '@angular/core';\r\nimport { IsyAdminService } from '../../../isy-admin.service';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { combineLatest } from 'rxjs';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Component({\r\n selector: 'lib-project-integration',\r\n templateUrl: './project-integration.component.html',\r\n styleUrls: ['../../../isy-admin-new-style.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class ProjectIntegrationComponent {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(\r\n private adminService: IsyAdminService,\r\n ) {\r\n // empty\r\n }\r\n\r\n projectConfig$ = this.adminService.tempProjectConfig$;\r\n vm$ = combineLatest([this.projectConfig$]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => ({\r\n config: projectConfig.config,\r\n })),\r\n tap((result) => console.log('PAGE Integration: ', result))\r\n );\r\n}\r\n","
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{'admin_settings_webinnsyn_url' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {{'admin_settings_single_gi_url' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {{'admin_settings_gi_plan_url' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {{'admin_settings_gi_plan_kart_url' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {{'admin_settings_gi_plan_basis_url' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {{'admin_settings_gi_plan_utvidet_url' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    ","import { Component, OnInit, HostBinding, OnDestroy } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyAdminService } from '../../../isy-admin.service';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IProjectConfig, IMetadataService } from '@isygis/isymap-config';\r\n\r\ninterface IPointInfo {\r\n name: string;\r\n selected: boolean;\r\n integrations?: IIntegration[];\r\n customintegrations?: IMetadataService[];\r\n}\r\ninterface IIntegration {\r\n name: string;\r\n title: string;\r\n selected: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-project-pointinfo',\r\n templateUrl: './project-pointinfo.component.html',\r\n styleUrls: ['../../../isy-admin-new-style.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class ProjectPointinfoComponent implements OnInit, OnDestroy {\r\n\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription: Subscription = new Subscription();\r\n metadataservice: IMetadataService;\r\n tempPointInfo: IPointInfo[] = [\r\n {\r\n name: 'address',\r\n selected: false,\r\n integrations: [],\r\n customintegrations: []\r\n },\r\n {\r\n name: 'elevation',\r\n selected: false,\r\n integrations: [],\r\n customintegrations: []\r\n },\r\n {\r\n name: 'property',\r\n selected: false,\r\n integrations: [\r\n {\r\n name: \"propertyInformation\",\r\n title: \"Hent mer informasjon om eiendommen\",\r\n selected: false\r\n },\r\n {\r\n name: \"propertyReport\",\r\n title: \"Hent rapporter for eiendommen\",\r\n selected: false\r\n },\r\n // {\r\n // name: \"neighborReport\",\r\n // title: \"Lag naboliste\",\r\n // selected: false\r\n // }\r\n ],\r\n customintegrations: []\r\n },\r\n {\r\n name: 'building',\r\n selected: false,\r\n integrations: [\r\n {\r\n name: \"buildingInformation\",\r\n title: \"Hent mer informasjon om bygningen\",\r\n selected: false\r\n }\r\n ],\r\n customintegrations: []\r\n },\r\n {\r\n name: 'plan',\r\n selected: false,\r\n integrations: [\r\n {\r\n name: \"planDocument\",\r\n title: \"Hent plandokumenter\",\r\n selected: false\r\n }\r\n ],\r\n customintegrations: []\r\n }\r\n ];\r\n configPointinfo;\r\n itemSelected: IPointInfo;\r\n newCustomIntegration: IMetadataService = { metadataurl: '', title: '', opennewwindow: 'false', useisytoken: 'false', restricted: ''};\r\n activeOverlay = false;\r\n constructor(\r\n private adminService: IsyAdminService,\r\n private translateService: IsyTranslateService,\r\n ) {\r\n }\r\n\r\n pointinfo$ = combineLatest([this.adminService.tempProjectConfig$]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => {\r\n if (projectConfig && projectConfig.config.project.pointinfo) {\r\n this.configPointinfo = projectConfig.config.project.pointinfo;\r\n this.configPointinfo.forEach(cp => {\r\n const itemExist = this.tempPointInfo.find(tp => tp.name === cp.name);\r\n if (itemExist) {\r\n itemExist.selected = true;\r\n // update tempPointInfo integrations\r\n if (cp.integrations) {\r\n itemExist.integrations.forEach(ti => {\r\n if (cp.integrations.find(ci => ci === ti.name)) {\r\n ti.selected = true;\r\n }\r\n })\r\n } else {\r\n cp['integrations'] = [];\r\n }\r\n // update tempPointInfo customintegrations\r\n if (cp.customintegrations) {\r\n itemExist.customintegrations = cp.customintegrations;\r\n } else {\r\n cp['customintegrations'] = [];\r\n }\r\n }\r\n })\r\n }\r\n else {\r\n projectConfig.config.project['pointinfo'] = [];\r\n this.configPointinfo = projectConfig.config.project.pointinfo;\r\n }\r\n })\r\n // , tap(result => console.log('PointInfo', result))\r\n // shareReplay(1)\r\n );\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(this.pointinfo$.subscribe());\r\n }\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n selectProp(prop): void {\r\n prop.selected = !prop.selected;\r\n this.resetNewCustomIntegration();\r\n prop.selected === true ? this.itemSelected = prop : this.itemSelected = undefined\r\n // use splice for keep connection with view/ emptying it without destroying it\r\n this.configPointinfo.splice(0, this.configPointinfo.length);\r\n this.tempPointInfo.forEach(tp => {\r\n if (tp.selected === true) {\r\n const selectedIntegrations = [];\r\n tp.integrations.forEach(ti => {\r\n if (ti.selected === true) {\r\n selectedIntegrations.push(ti.name);\r\n }\r\n })\r\n this.configPointinfo.push({name: tp.name, integrations: selectedIntegrations, customintegrations: tp.customintegrations})\r\n }\r\n })\r\n }\r\n\r\n selectIntegration(item, integration): void {\r\n integration.selected = !integration.selected;\r\n const selectedIntegraions = [];\r\n item.integrations.forEach(i => {\r\n if (i.selected === true) {\r\n selectedIntegraions.push(i.name);\r\n }\r\n this.configPointinfo.find(cp => cp.name === item.name).integrations = selectedIntegraions; \r\n })\r\n }\r\n\r\n selectFeatureOpenMode(customIntegration: IMetadataService, mode: string): void {\r\n if (customIntegration) {\r\n switch (mode) {\r\n case 'Nytt vindu': {\r\n // todo: change to enum\r\n customIntegration.opennewwindow = 'true';\r\n break;\r\n }\r\n case 'Modal': {\r\n customIntegration.opennewwindow = 'false';\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeMetadataService(\r\n customIntegration: IMetadataService,\r\n itemSelected: IPointInfo\r\n ): void {\r\n const index =\r\n itemSelected.customintegrations.findIndex(\r\n (f) =>\r\n f.metadataurl === customIntegration.metadataurl &&\r\n f.title === customIntegration.title \r\n );\r\n if (index >= 0) {\r\n itemSelected.customintegrations.splice(index, 1);\r\n }\r\n }\r\n addMetadataService(newCustomIntegration: IMetadataService, itemSelected: IPointInfo): void {\r\n itemSelected.customintegrations.push(newCustomIntegration);\r\n this.newCustomIntegration = { metadataurl: '', title: '', opennewwindow: 'true', useisytoken: 'false', restricted: ''};\r\n }\r\n resetNewCustomIntegration(): void {\r\n this.newCustomIntegration = { metadataurl: '', title: '', opennewwindow: 'true', useisytoken: 'false', restricted: ''};\r\n }\r\n}\r\n\r\n","
    \r\n
    \r\n
    \r\n
    \r\n {{'service' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{prop.name | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    0\" class=\"mb-4\">\r\n
    \r\n
    \r\n {{'admin_select' | translate}}\r\n
    \r\n
    \r\n {{'admin_integration_title' | translate}}\r\n
    \r\n
    \r\n {{'admin_predefined_integrations_list' | translate}}\r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{integration.title}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    0\">\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_custom_integrations_list' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_opens_as' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{mode}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_send_isytoken' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_add_new_custom_integration' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_opens_as' | translate}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{mode}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'admin_service_send_isytoken' | translate}}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n ","import { Component, HostBinding } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyAdminService } from '../../../isy-admin.service';\r\nimport {\r\n ISearchParam,\r\n IProjectConfig,\r\n SearchParam,\r\n} from '@isygis/isymap-config';\r\nimport { BehaviorSubject, combineLatest, Subject } from 'rxjs';\r\nimport { map, tap, debounceTime } from 'rxjs/operators';\r\nimport {\r\n ProjectSettingsService,\r\n ISearchLibrary,\r\n} from '../project-settings.service';\r\n\r\nenum ESearchParam {\r\n NAME = 'name',\r\n TITLE = 'title',\r\n HASURL = 'hasurl',\r\n EXAMPLE = 'example',\r\n}\r\n\r\n@Component({\r\n selector: 'lib-project-search',\r\n templateUrl: './project-search.component.html',\r\n styleUrls: ['../../../isy-admin-new-style.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class ProjectSearchComponent {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n public keyUpSearchParamTitle = new Subject();\r\n public keyUpSearchParamExample = new Subject();\r\n searchParams: ISearchParam[];\r\n\r\n constructor(\r\n private adminService: IsyAdminService,\r\n private projectSettingsService: ProjectSettingsService,\r\n ) {\r\n this.keyUpSearchParamTitle\r\n .pipe(\r\n map((value) => {\r\n value.isSelected = true;\r\n return value;\r\n }),\r\n debounceTime(500)\r\n )\r\n .subscribe((result) => {\r\n this.changeValueInSearchParam(result, ESearchParam.TITLE);\r\n });\r\n\r\n this.keyUpSearchParamExample\r\n .pipe(\r\n map((value) => {\r\n value.isSelected = true;\r\n return value;\r\n }),\r\n debounceTime(500)\r\n )\r\n .subscribe((result) => {\r\n this.changeValueInSearchParam(result, ESearchParam.EXAMPLE);\r\n });\r\n }\r\n\r\n projectConfig$ = this.adminService.tempProjectConfig$;\r\n private _changeAction = new BehaviorSubject(false);\r\n changeAction$ = this._changeAction.asObservable();\r\n\r\n searchParams$ = combineLatest([\r\n this.adminService.tempProjectConfig$,\r\n ]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => {\r\n this.searchParams =\r\n projectConfig?.config?.project?.searchparams\r\n ? projectConfig.config.project.searchparams.searchparam\r\n : [\r\n {\r\n name: 'ssr',\r\n title: 'Stedsnavn',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'matr',\r\n title: 'GÃ¥rds- og bruksnummer (enkelt)',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'gi',\r\n title: 'Planidentifikasjon (enkelt)',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'giname',\r\n title: 'Plannavn (enkelt)',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'gidnois',\r\n title: 'GÃ¥rds- og bruksnummer',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'address',\r\n title: 'Vegadresse',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'owners',\r\n title: 'Hjemmelshaver',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'plannois',\r\n title: 'Arealplan (planident og navn)',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'coordinate',\r\n title: 'Koordinat',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'buildingnumber',\r\n title: 'Bygningsnummer',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'custom',\r\n title: 'Tilpasset',\r\n hasurl: 'true',\r\n example: '',\r\n },\r\n ];\r\n projectConfig.config.project.searchparams = projectConfig.config.project\r\n .searchparams\r\n ? projectConfig.config.project.searchparams\r\n : { searchparam: this.searchParams };\r\n projectConfig.config.project.searchparams.searchparam = this.searchParams;\r\n console.log(this.searchParams);\r\n return this.searchParams;\r\n })\r\n );\r\n searchLibrary$ = this.projectSettingsService.searchParamsLibrary$;\r\n\r\n vm$ = combineLatest([\r\n this.searchLibrary$,\r\n this.searchParams$,\r\n this.projectConfig$,\r\n ]).pipe(\r\n map(\r\n ([searchLibrary, searchParams, projectConfig]: [\r\n ISearchLibrary[],\r\n ISearchParam[],\r\n IProjectConfig\r\n ]) => ({\r\n searchParams: searchParams,\r\n searchLibrary: searchLibrary,\r\n config: projectConfig.config,\r\n })\r\n ),\r\n tap((result) => {\r\n if (result) {\r\n console.log('PAGE Search: ', result);\r\n }\r\n })\r\n );\r\n\r\n selectSearchParam(param: ISearchLibrary) {\r\n param.isSelected = !param.isSelected;\r\n const paramIndex = this.searchParams.findIndex(\r\n (p) => p.name === param.name\r\n );\r\n if (param.isSelected) {\r\n if (paramIndex < 0) {\r\n const newSearchParam = new SearchParam(\r\n param.name,\r\n param.title,\r\n param.example\r\n );\r\n newSearchParam.hasurl = param.hasurl;\r\n this.searchParams.push(newSearchParam);\r\n console.log(this.searchParams);\r\n }\r\n }\r\n if (!param.isSelected) {\r\n if (paramIndex >= 0) {\r\n this.searchParams.splice(paramIndex, 1);\r\n }\r\n }\r\n }\r\n\r\n selectHasUrl(param: ISearchLibrary) {\r\n param.hasurl = param.hasurl && param.hasurl === 'true' ? 'false' : 'true';\r\n this.changeValueInSearchParam(param, ESearchParam.HASURL);\r\n }\r\n\r\n private changeValueInSearchParam(param: ISearchLibrary, value: ESearchParam) {\r\n param.isSelected = true;\r\n const paramIndex = this.searchParams.findIndex(\r\n (p) => p.name === param.name\r\n );\r\n if (paramIndex >= 0) {\r\n this.searchParams[paramIndex][value] = param[value];\r\n } else {\r\n const newSearchParam = new SearchParam(\r\n param.name,\r\n param.title,\r\n param.example\r\n );\r\n newSearchParam[value] = param[value];\r\n this.searchParams.push(newSearchParam);\r\n }\r\n }\r\n\r\n removeSearchParam(param: ISearchLibrary) {\r\n const paramIndex = this.searchParams.findIndex(\r\n (p) => p.name === param.name\r\n );\r\n if (paramIndex >= 0) {\r\n this.searchParams.splice(paramIndex, 1);\r\n this._changeAction.next(true);\r\n }\r\n }\r\n\r\n setDefaultmunicipality(vm): void {\r\n vm.config.project.defaultmunicipality = vm.config.project.defaultkommune;\r\n }\r\n}\r\n","
    \r\n \r\n \r\n
    \r\n
    \r\n {{'admin_layers_select' | translate}}\r\n
    \r\n
    \r\n {{'admin_layers_title' | translate}}\r\n
    \r\n
    \r\n {{'admin_search_example' | translate}}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n {{'admin_settings_project_municipality_nr' | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { TABBUTTONS } from './tab-buttons';\r\nimport { TabButton } from '../../tab-button';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Component({\r\n selector: 'lib-project-settings',\r\n templateUrl: './project-settings.component.html',\r\n styleUrls: ['../../isy-admin-new-style.component.scss'],\r\n})\r\nexport class ProjectSettingsComponent implements OnInit {\r\n @Input() activeTabButton: TabButton;\r\n tabButtons: TabButton[];\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(private commonService: IsyCommonService) {}\r\n\r\n ngOnInit(): void {\r\n this.tabButtons = TABBUTTONS;\r\n this.activeTabButton = this.tabButtons[0];\r\n }\r\n\r\n toggleTabButton(tabButton: TabButton): void {\r\n this.activeTabButton = tabButton;\r\n }\r\n\r\n showHelp(helpFile: string): void {\r\n this.commonService.setHelpId(helpFile);\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{tabButton.text | translate }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n","import { Injectable } from '@angular/core';\r\nimport { combineLatest, of, BehaviorSubject, ReplaySubject } from 'rxjs';\r\nimport {\r\n map,\r\n multicast,\r\n refCount,\r\n tap,\r\n mergeMap,\r\n catchError,\r\n} from 'rxjs/operators';\r\nimport { SearchLibrary } from '../../library/search-library';\r\nimport { IsyAdminService } from '../../isy-admin.service';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IProjectConfig, ISearchParam } from '@isygis/isymap-config';\r\n\r\nexport interface ISearchLibrary extends ISearchParam {\r\n isSelected: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ProjectSettingsService {\r\n constructor(\r\n private adminService: IsyAdminService,\r\n private mapService: IsyMapService,\r\n private httpClient: HttpClient,\r\n private sessionStorageService: SessionStorageService,\r\n private toasterService: IsyToasterService\r\n ) {}\r\n\r\n private headerIconUpdatedAction = new BehaviorSubject(undefined);\r\n\r\n projectConfig$ = this.adminService.tempProjectConfig$;\r\n searchLibrary$ = of(SearchLibrary);\r\n // private searchParamsLibrary = new BehaviorSubject([]);\r\n // private basicSettings = new BehaviorSubject(undefined);\r\n\r\n searchParamsLibrary$ = combineLatest([\r\n this.projectConfig$,\r\n this.searchLibrary$,\r\n ]).pipe(\r\n map(([projectConfig, searchLibrary]: [IProjectConfig, ISearchParam[]]) => {\r\n let searchParams = [];\r\n if (\r\n projectConfig &&\r\n projectConfig.config &&\r\n projectConfig.config.project &&\r\n projectConfig.config.project.searchparams\r\n ) {\r\n searchParams = projectConfig.config.project.searchparams.searchparam;\r\n }\r\n return searchLibrary.map((s) => {\r\n // const searchParams = projectConfig.config.project.searchparams.searchparam;\r\n const paramExist = searchParams.find((p) => p.name === s.name);\r\n\r\n return {\r\n ...s,\r\n title: paramExist && paramExist.title ? paramExist.title : s.title,\r\n example: paramExist ? paramExist.example : '',\r\n // hasurl: paramExist ? paramExist.hasurl : 'false',\r\n isSelected: paramExist ? true : false,\r\n } as ISearchLibrary;\r\n });\r\n }),\r\n tap((result) => console.log('Search params: ', result)),\r\n // take(1),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount()\r\n );\r\n\r\n saveheaderIcon$ = combineLatest([this.headerIconUpdatedAction]).pipe(\r\n mergeMap(([newIcon]: [File]) => {\r\n console.log(newIcon);\r\n if (newIcon) {\r\n const adminConfig = this.adminService.getProjectConfig();\r\n const mapConfig = this.mapService.getConfig();\r\n const application = mapConfig.instance;\r\n const isyToken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n const isyattachmentUrl = adminConfig.config.project.isyattachment;\r\n const iconApiUrl = isyattachmentUrl + '/api/v1/upload/files/';\r\n\r\n const formData = new FormData();\r\n formData.append('icon', newIcon);\r\n formData.append('application', application);\r\n formData.append('isytoken', isyToken);\r\n formData.append('project', adminConfig.config.project.name);\r\n\r\n return this.httpClient.post(iconApiUrl, formData).pipe(\r\n map((result: any) => {\r\n if (result === false) {\r\n console.log('Save icon failed: ', result);\r\n this.toasterService.error(\r\n 'admin_service_file_error_toaster_title'\r\n );\r\n return false;\r\n } else {\r\n console.log('Save icon ok: ', result);\r\n this.toasterService.success(\r\n 'admin_service_file_success_toaster_title'\r\n );\r\n return result;\r\n }\r\n // return Promise.resolve();\r\n })\r\n );\r\n }\r\n return Promise.resolve();\r\n }),\r\n // multicast(() => new ReplaySubject(1)),\r\n // refCount(),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n\r\n setHeaderIconUpdated(icon: File): void {\r\n if (icon) {\r\n this.headerIconUpdatedAction.next(icon);\r\n } else {\r\n this.headerIconUpdatedAction.next(undefined);\r\n }\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n // athis.toasterService.error('fileDownloadError_toaster_msg');\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return Promise.resolve();\r\n }\r\n\r\n // searchParamsLibrary$ = combineLatest([this.searchParamsOriginal$, this.searchParamsLibrary]).pipe(\r\n // map(([searchParamsOriginal, searchParamsLibrary]: [ISearchLibrary[], ISearchLibrary[]]) => {\r\n // if (searchParamsLibrary.length === 0) {\r\n // this.searchParamsLibrary.next(searchParamsOriginal);\r\n // return this.searchParamsLibrary.getValue();\r\n // }\r\n // return searchParamsLibrary;\r\n // })\r\n // );\r\n\r\n // basicSettings$ = combineLatest([this.projectConfig$, this.basicSettings]).pipe(\r\n // map(([projectConfig, basicSettings]: [IProjectConfig, IProject]) => {\r\n // if (!basicSettings) {\r\n // const project = projectConfig.config.project;\r\n // const newProject = new Project(project.name, project.epsg, project.lat, project.lon, project.zoom);\r\n // this.basicSettings.next(newProject);\r\n // return this.basicSettings.getValue();\r\n // } else {\r\n // return basicSettings;\r\n // }\r\n // }),\r\n // take(1),\r\n // shareReplay(1)\r\n // );\r\n}\r\n","import { Component, HostBinding } from '@angular/core';\r\nimport {\r\n UntypedFormGroup,\r\n UntypedFormBuilder,\r\n Validators,\r\n AbstractControl,\r\n} from '@angular/forms';\r\nimport { EToolId, ICustomTool } from '@isygis/isy-configs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyAdminService } from '../../../isy-admin.service';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { TOOLS } from '@isygis/isy-tools';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { IProjectConfig, CustomTool } from '@isygis/isymap-config';\r\n\r\ninterface ITool {\r\n toolName: string;\r\n toolAlias: string;\r\n toolIcon: IconDefinition;\r\n selected: boolean;\r\n}\r\n\r\nexport enum ECustomToolScale {\r\n ZOOMLEVEL = 'admin_custom_tool_scale_zoom_level',\r\n SCALE = 'admin_custom_tool_scale',\r\n // HEIGHTABOVETHEGROUND = 'admin_custom_tool_scale_height'\r\n}\r\n\r\nexport enum ECustomToolCoordinateSystem {\r\n DEFAULT = 'admin_custom_tool_coordinate_sytem_default',\r\n GEOGRAPHICAL = 'admin_custom_tool_coordinate_sytem_geographical',\r\n}\r\n\r\n@Component({\r\n selector: 'lib-project-tool',\r\n templateUrl: './project-tool.component.html',\r\n styleUrls: ['../../../isy-admin-new-style.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class ProjectToolComponent {\r\n @HostBinding('@pageAnimation')\r\n toolList: ITool[] = [];\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n availableTools: string[] = [];\r\n subscription: Subscription = new Subscription();\r\n customToolIcons = [\r\n fontAwesomeIcons.faMapSigns,\r\n fontAwesomeIcons.faMap,\r\n fontAwesomeIcons.faStreetView,\r\n fontAwesomeIcons.faLayerGroup,\r\n fontAwesomeIcons.faAtlas,\r\n fontAwesomeIcons.faGlobeEurope,\r\n fontAwesomeIcons.faSitemap,\r\n fontAwesomeIcons.faRoute,\r\n fontAwesomeIcons.faNewspaper,\r\n fontAwesomeIcons.faInfoCircle,\r\n fontAwesomeIcons.faPlane,\r\n ];\r\n selectedCustomToolIcon: IconDefinition;\r\n customToolOpenInNewWindow = true;\r\n form: UntypedFormGroup;\r\n customToolScales = ECustomToolScale;\r\n customToolScale: string = undefined; // 'admin_custom_tool_scale_select_type';\r\n customToolCoordinateSystems = ECustomToolCoordinateSystem;\r\n customToolCoordinateSystem: string = undefined; // = 'admin_custom_tool_coordinate_sytem_select_type';\r\n\r\n constructor(\r\n private adminService: IsyAdminService,\r\n private translateService: IsyTranslateService,\r\n private fb: UntypedFormBuilder\r\n ) {\r\n this.createForm();\r\n }\r\n\r\n // projectConfig$ = this.adminService.tempProjectConfig$;\r\n toolList$ = combineLatest([this.adminService.tempProjectConfig$]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => {\r\n for (const enumMember in EToolId) {\r\n if (\r\n enumMember &&\r\n EToolId[enumMember] !== EToolId.PRINT_PROTOCOL &&\r\n EToolId[enumMember] !== EToolId.BBOX &&\r\n EToolId[enumMember] !== EToolId.FEEDBACK\r\n ) {\r\n const toolNameTxt = TOOLS.find(\r\n (t) => t.id === EToolId[enumMember]\r\n ).toolName;\r\n const tool = this.translateService.instant(toolNameTxt);\r\n const icon = TOOLS.find((t) => t.id === EToolId[enumMember]).icon;\r\n this.toolList.push({\r\n toolName: EToolId[enumMember],\r\n toolAlias: tool,\r\n toolIcon: icon,\r\n selected: false,\r\n });\r\n }\r\n }\r\n if (\r\n !projectConfig.config.project.pointinfoenabled ||\r\n projectConfig.config.project.pointinfoenabled === 'false'\r\n ) {\r\n this.toolList = this.toolList.filter(\r\n (tool) => tool.toolName !== 'PointInformation'\r\n );\r\n }\r\n if (projectConfig) {\r\n this.availableTools = projectConfig.config.project.availableTools;\r\n if (this.availableTools && this.availableTools.length > 0) {\r\n this.availableTools.forEach((availableTools) => {\r\n this.toolList.forEach((tool) => {\r\n if (tool.toolName === availableTools) {\r\n tool.selected = true;\r\n }\r\n });\r\n });\r\n return this.toolList;\r\n } else {\r\n projectConfig.config.project['availableTools'] = [];\r\n this.availableTools = projectConfig.config.project.availableTools;\r\n this.toolList.forEach((tool) => {\r\n tool.selected = false;\r\n });\r\n if (\r\n !projectConfig.config.project.pointinfoenabled ||\r\n projectConfig.config.project.pointinfoenabled === 'false'\r\n ) {\r\n this.toolList = this.toolList.filter(\r\n (tool) => tool.toolName !== 'PointInformation'\r\n );\r\n }\r\n return this.toolList;\r\n }\r\n }\r\n return [];\r\n })\r\n // , tap(result => console.log('ToolList', result))\r\n // shareReplay(1)\r\n );\r\n\r\n customTools$ = combineLatest([this.adminService.tempProjectConfig$]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => {\r\n return projectConfig.config.project.availableCustomTools\r\n ? projectConfig.config.project.availableCustomTools\r\n : (projectConfig.config.project.availableCustomTools = []);\r\n })\r\n );\r\n\r\n vm$ = combineLatest([this.toolList$, this.customTools$]).pipe(\r\n map(([toolList, customTools]: [ITool[], ICustomTool[]]) => ({\r\n toolList,\r\n customTools,\r\n }))\r\n // tap(result => console.log('PAGE Tools: ', result))\r\n );\r\n\r\n createForm(): void {\r\n const reg = '(https://)(([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])?\\\\.)+[a-z]{2,})([/\\\\w .-]*)*([/?#][\\\\S]*)?';\r\n this.form = this.fb.group({\r\n s_url: ['', [Validators.required, Validators.pattern(reg)]],\r\n });\r\n }\r\n\r\n get s_url(): AbstractControl {\r\n return this.form.get('s_url');\r\n }\r\n\r\n selectTool(tool: ITool): void {\r\n tool.selected = !tool.selected;\r\n this.availableTools.splice(0, this.availableTools.length);\r\n // tslint:disable-next-line:no-shadowed-variable\r\n this.toolList.forEach((tool) => {\r\n if (tool.selected) {\r\n this.availableTools.push(tool.toolName);\r\n }\r\n });\r\n }\r\n\r\n setCustomToolScale(scaleType: string): void {\r\n this.customToolScale = scaleType;\r\n }\r\n\r\n setCustomToolCoordinateSytem(coordinateSytemType: string): void {\r\n this.customToolCoordinateSystem = coordinateSytemType;\r\n }\r\n\r\n addCustomTool(\r\n customTools: ICustomTool[],\r\n title: HTMLInputElement,\r\n url: AbstractControl\r\n ): void {\r\n const customTool = new CustomTool(\r\n this.selectedCustomToolIcon.prefix +\r\n '|' +\r\n this.selectedCustomToolIcon.iconName,\r\n title.value,\r\n url.value,\r\n this.customToolOpenInNewWindow\r\n );\r\n if (this.customToolCoordinateSystem !== undefined) {\r\n customTool.coordinatesystem = this.customToolCoordinateSystem;\r\n }\r\n if (this.customToolScale !== undefined) {\r\n customTool.scale = this.customToolScale;\r\n }\r\n customTools.push(customTool);\r\n title.value = '';\r\n url.setValue('');\r\n this.customToolCoordinateSystem = undefined;\r\n this.customToolScale = undefined;\r\n this.selectedCustomToolIcon = undefined;\r\n this.customToolOpenInNewWindow = true;\r\n }\r\n\r\n removeCustomTool(customTools: ICustomTool[], customToolIndex: number): void {\r\n customTools = customTools.splice(customToolIndex, 1);\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n {{'admin_select' | translate}}\r\n
    \r\n
    \r\n {{'admin_tools' | translate}}\r\n
    \r\n
    \r\n {{'admin_predefined_tools_list' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {{tool.toolAlias}}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_tools' | translate}}\r\n
    \r\n
    \r\n {{'admin_custom_tools_list' | translate}}\r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n \r\n \r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {{'admin_custom_tool_new_window' | translate}}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{scaleType.value | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{coordinateSystemType.value | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n --- {{'admin_custom_tools_list_is_empty' | translate}} ---\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'admin_add_new_custom_tool' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n \r\n \r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {{'admin_custom_tool_new_window' | translate}}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{scaleType.value | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{coordinateSystemType.value | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n ","import { TabButton } from '../../tab-button';\r\n\r\nexport const TABBUTTONS: TabButton[] = [\r\n { id: 1, text: 'admin_basic_title', helpFile: 'adminProjectBasis' },\r\n { id: 2, text: 'admin_search_title', helpFile: 'adminProjectSearch' },\r\n {\r\n id: 3,\r\n text: 'admin_integration_title',\r\n helpFile: 'adminProjectIntegrations',\r\n },\r\n { id: 4, text: 'admin_tool_title', helpFile: 'adminProjectTools' },\r\n { id: 5, text: 'admin_pointinfo_title', helpFile: 'adminProjectPointinfo' },\r\n];\r\n","import { Component } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { TestAdminService } from '../../test-admin.service';\r\nimport { FeatureType, Services } from '../../data';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n moveItemInArray,\r\n copyArrayItem,\r\n} from '@angular/cdk/drag-drop';\r\n\r\n@Component({\r\n selector: 'lib-test-choose-layers',\r\n templateUrl: './test-choose-layers.component.html',\r\n styleUrls: [\r\n './test-choose-layers.component.scss',\r\n '../../isy-admin.component.scss',\r\n ],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class TestChooseLayersComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n layersData$ = this.testAdminService.layersData$;\r\n\r\n selectedLayers: FeatureType[] = [];\r\n doneList; // = [];\r\n\r\n vm$ = combineLatest([this.layersData$]).pipe(\r\n map(([layersData]: [Services[]]) => ({\r\n layersData: layersData,\r\n }))\r\n );\r\n\r\n constructor(private testAdminService: TestAdminService) {\r\n // empty\r\n }\r\n\r\n drop(event: any) {\r\n if (event.previousContainer === event.container) {\r\n moveItemInArray(\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n } else {\r\n copyArrayItem(\r\n event.previousContainer.data,\r\n event.container.data,\r\n event.previousIndex,\r\n event.currentIndex\r\n );\r\n }\r\n this.testAdminService.updateSelectedLayersList(this.selectedLayers);\r\n }\r\n}\r\n","
    \r\n

    \r\n Selected layers\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{selectedLayer.name}}\r\n
    \r\n
    \r\n
    \r\n
    Described fueture, styling, etc...
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Tjenester\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n {{layer.name}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{featureType.name}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    ","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { IsyAdminService, EAdministratorMode } from '../isy-admin.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { ELogin, EUrlParam } from '@isygis/isy-configs';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { EEmptyContentColorPalete } from '@isygis/isy-empty-content';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { Router } from '@angular/router';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IProjectConfig, ConfigService } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-admin-welcome-page',\r\n templateUrl: './isy-admin-welcome-page.component.html',\r\n styleUrls: ['./isy-admin-welcome-page.component.scss'],\r\n})\r\nexport class IsyAdminWelcomePageComponent implements OnInit, OnDestroy {\r\n EEmptyContentColorPalete = EEmptyContentColorPalete;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n eAdministratorMode = EAdministratorMode;\r\n subscription: Subscription = new Subscription();\r\n projectConfig: IProjectConfig;\r\n\r\n constructor(\r\n private router: Router,\r\n private adminService: IsyAdminService,\r\n private mapService: IsyMapService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private commonService: IsyCommonService,\r\n private httpClient: HttpClient,\r\n private sessionStorageService: SessionStorageService,\r\n private toasterService: IsyToasterService,\r\n private bladeService: IsyBladeService,\r\n private translateService: IsyTranslateService,\r\n private configService: ConfigService,\r\n ) {}\r\n\r\n projectConfig$ = this.mapService.originalProjectConfig$.pipe(\r\n map((data) => {\r\n this.projectConfig = JSON.parse(JSON.stringify(data));\r\n return this.projectConfig;\r\n }) // deep cloning JSON object\r\n // tap(data => console.log('WELCOME PAGE: ', data))\r\n );\r\n\r\n vm$ = combineLatest([this.projectConfig$]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => ({\r\n name: projectConfig.config.project.name,\r\n projectConfig,\r\n // defaultProject: this.mapService.getConfig().defaultproject\r\n }))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.commonService.dynamicModalAcceptButtonClick$.subscribe((value) => {\r\n if (value === 'admin_delete_project') {\r\n const config = this.mapService.getConfig();\r\n const projectsList = this.mapService.getProjectsList();\r\n const headers = {\r\n 'Content-type': 'application/json',\r\n };\r\n this.httpClient\r\n .delete(\r\n config.configurl +\r\n '/api/v2/project?isytoken=' +\r\n this.sessionStorageService.retrieve(ELogin.TOKEN) +\r\n '&application=' +\r\n config.instance +\r\n '&name=' +\r\n this.projectConfig.config.project.name,\r\n { headers }\r\n )\r\n .pipe(\r\n map(() => {\r\n this.toasterService.success(\r\n 'admin_remove_success_toaster_msg',\r\n 'admin_remove_success_toaster_title'\r\n );\r\n const param = {};\r\n param[EUrlParam.PROJECT] = projectsList[0].ProjectName; // config.defaultproject;\r\n this.router.navigate([], {\r\n queryParams: param,\r\n queryParamsHandling: 'merge',\r\n });\r\n this.bladeService.hide('admin');\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 500);\r\n return true;\r\n }),\r\n take(1)\r\n )\r\n .subscribe();\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n setAdministratorMode(index: EAdministratorMode, projectConfig): void {\r\n switch (index) {\r\n case EAdministratorMode.NEW_PROJECT: {\r\n this.configService.projectTemplate().then(template => {\r\n this.adminService.setAdministratorMode(index);\r\n this.adminService.setTempProjectConfig(template);\r\n this.bladeService.changeDynamicBladeHeaderTitle(\r\n 'admin',\r\n this.translateService.instant('admin_modal_title') +\r\n ' - ' +\r\n this.translateService.instant('admin_createNew')\r\n );\r\n });\r\n break;\r\n }\r\n case EAdministratorMode.COPY_PROJECT: {\r\n this.adminService.setAdministratorMode(index);\r\n this.adminService.setTempProjectConfig(projectConfig);\r\n this.bladeService.changeDynamicBladeHeaderTitle(\r\n 'admin',\r\n this.translateService.instant('admin_modal_title') +\r\n ' - ' +\r\n this.translateService.instant('admin_copyProject')\r\n );\r\n break;\r\n }\r\n case EAdministratorMode.EDIT_PROJECT: {\r\n this.adminService.setAdministratorMode(index);\r\n this.adminService.setTempProjectConfig(projectConfig);\r\n this.bladeService.changeDynamicBladeHeaderTitle(\r\n 'admin',\r\n this.translateService.instant('admin_modal_title') +\r\n ' - ' +\r\n this.translateService.instant('admin_editProject')\r\n );\r\n break;\r\n }\r\n }\r\n }\r\n\r\n removeProject(): void {\r\n this.dynamicModalService.showModalWithComponent(\r\n 'admin_delete_project',\r\n undefined,\r\n undefined,\r\n {\r\n showHeader: true,\r\n showFooter: true,\r\n contentText: 'admin_delete_permission',\r\n modalHeader: {\r\n headerIcon: fontAwesomeIcons.faTrash,\r\n headerTitle: 'admin_delete_project',\r\n showCloseBtn: false,\r\n iconColor: 'text-danger',\r\n },\r\n modalFooter: { showCancelButton: true, acceptButtonText: 'delete' },\r\n }\r\n );\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {{'admin_createNew' | translate}}
    \r\n
    \r\n
    {{'admin_emptyFromTemplate' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {{'admin_copyProject' | translate}}
    \r\n
    \r\n
    {{vm.name | titlecase}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {{'admin_editProject' | translate}}
    \r\n
    \r\n
    {{vm.name | titlecase}}
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {{'admin_delete_project' | translate}}
    \r\n
    \r\n
    {{vm.name | titlecase}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { EAdministratorMode, IsyAdminService } from './isy-admin.service';\r\nimport {\r\n EMainMenuNavBar,\r\n EUrlParam,\r\n} from '@isygis/isy-configs';\r\nimport {\r\n EReInitType, IsyMapService\r\n} from '@isygis/isy-map';\r\nimport {\r\n INavBarElement,\r\n IsyDynamicNavLoaderService,\r\n} from '@isygis/isy-dynamic-nav-loader';\r\nimport { Subscription, combineLatest } from 'rxjs';\r\nimport { map, take, tap } from 'rxjs/operators';\r\n\r\nimport { ChooseBaseLayersComponent } from './isy-admin-stepper/choose-base-layers/choose-base-layers.component';\r\nimport { ChooseBaseLayersService } from './isy-admin-stepper/choose-base-layers/choose-base-layers.service';\r\nimport { ChooseLayersComponent } from './isy-admin-stepper/choose-layers/choose-layers.component';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { ProjectSettingsComponent } from './isy-admin-stepper/project-settings/project-settings.component';\r\nimport { Router } from '@angular/router';\r\nimport { SelectLayersService } from './isy-admin-stepper/choose-layers/select-layers.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IFeatureInfoElement, IVector } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-admin',\r\n templateUrl: './isy-admin.component.html',\r\n styleUrls: ['./isy-admin-new-style.component.scss'],\r\n})\r\nexport class IsyAdminComponent implements OnInit, OnDestroy {\r\n subscription: Subscription = new Subscription();\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n catalogLibraryLoaded = false;\r\n\r\n constructor(\r\n private router: Router,\r\n private adminService: IsyAdminService,\r\n private dynamicNavLoaderService: IsyDynamicNavLoaderService,\r\n private chooseBaseLayersService: ChooseBaseLayersService,\r\n private mapService: IsyMapService,\r\n private selectLayersService: SelectLayersService,\r\n private bladeService: IsyBladeService,\r\n private commonService: IsyCommonService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private translateService: IsyTranslateService,\r\n private toasterService: IsyToasterService,\r\n ) {}\r\n\r\n administratorMode$ = this.adminService.administratorMode$.pipe(\r\n map((value: EAdministratorMode) => {\r\n value !== 0 ? (this.activeSideIndex = 2) : (this.activeSideIndex = 1);\r\n return value;\r\n })\r\n );\r\n\r\n previewIsActive$ = this.commonService.administratorPreviewIsActive$;\r\n\r\n activeSideIndex = 1;\r\n adminNavbar = 'adminNavbar';\r\n\r\n vm$ = combineLatest([this.previewIsActive$, this.administratorMode$]).pipe(\r\n map(([previewMode, administratorMode]: [boolean, EAdministratorMode]) => ({\r\n // isModalShown: previewMode ? false : showModalStatus,\r\n previewMode,\r\n administratorMode,\r\n })),\r\n tap((result) => console.log('ADMINISTRATOR: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n const projectSettings: INavBarElement = {\r\n component: ProjectSettingsComponent,\r\n id: 'adminProjectSettings',\r\n isActive: true,\r\n text: this.translateService.instant('admin_project_settings'),\r\n };\r\n\r\n const chooseBaseLayers: INavBarElement = {\r\n component: ChooseBaseLayersComponent,\r\n id: 'adminChooseBaseLayers',\r\n isActive: false,\r\n text: this.translateService.instant('admin_base_layers'),\r\n };\r\n\r\n const chooseLayers: INavBarElement = {\r\n component: ChooseLayersComponent,\r\n id: 'adminChooseLayers',\r\n isActive: false,\r\n text: this.translateService.instant('admin_map_layers'),\r\n };\r\n\r\n this.dynamicNavLoaderService.addToNavBar(this.adminNavbar, projectSettings);\r\n this.dynamicNavLoaderService.addToNavBar(\r\n this.adminNavbar,\r\n chooseBaseLayers\r\n );\r\n this.dynamicNavLoaderService.addToNavBar(this.adminNavbar, chooseLayers);\r\n\r\n this.dynamicNavLoaderService.setActiveNavComponent(\r\n this.adminNavbar,\r\n projectSettings\r\n );\r\n this.subscription.add(\r\n this.commonService.mapActionDialogCloseButtonClick$.subscribe((value) => {\r\n if (value) this.stopPreviewMode();\r\n })\r\n );\r\n\r\n this.chooseBaseLayersService\r\n .getCatalogLibrary()\r\n .then(() => (this.catalogLibraryLoaded = true));\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.adminService.setAdministratorMode(EAdministratorMode.NONE);\r\n this.adminService.setTempProjectConfig();\r\n // ChooseBaseLayersService has to be destroy here and not inside the 'choose-base-layers' component.\r\n // We need to hold data whole administrator lifecycle.\r\n // this.defineGroupsService.destroyDefinedGroups();\r\n this.subscription.unsubscribe();\r\n this.chooseBaseLayersService.catalogLibrary.next(undefined);\r\n this.chooseBaseLayersService.baseLayers.next([]);\r\n this.selectLayersService.getSourceListCallback(undefined);\r\n this.selectLayersService.projectLayers.next([]);\r\n this.commonService.mapActionDialogCloseButtonClick(undefined);\r\n }\r\n\r\n hideBlade(): void {\r\n this.bladeService.hide('admin');\r\n }\r\n\r\n startPreviewMode(): void {\r\n const tempProjectConfig = this.adminService.getProjectConfig();\r\n const validationProblems =\r\n this.adminService.validateNewConfig(tempProjectConfig);\r\n if (validationProblems.length) {\r\n console.log('Validation problems: ', validationProblems);\r\n this.toasterService.warning(\r\n validationProblems.join(', '),\r\n 'admin_validating_failed_toaster_title'\r\n );\r\n return;\r\n }\r\n\r\n this.commonService.administratorPreviewIsActive(true);\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.LOGIN,\r\n true\r\n );\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.PROJECTS,\r\n true\r\n );\r\n this.bladeService.temporaryHide('admin', true);\r\n this.mapActionDialogService.show('admin', 'admin_modal_admin_preview');\r\n const originalProjectConfig = this.mapService.getOriginalProjectConfig();\r\n const selectedBaseLayers = this.chooseBaseLayersService.baseLayers\r\n .getValue()\r\n .filter((item) => item.isSelected);\r\n const selectedBaseLayerIndex = selectedBaseLayers.findIndex(\r\n (l) => l.isMainLayer\r\n );\r\n if (selectedBaseLayerIndex >= 0) {\r\n const baseLayer = selectedBaseLayers[selectedBaseLayerIndex];\r\n selectedBaseLayers.splice(selectedBaseLayerIndex, 1);\r\n selectedBaseLayers.unshift(baseLayer);\r\n }\r\n const projectLayers = this.selectLayersService.getProjectLayers();\r\n const vectorLayers = [];\r\n const wmsLayers = [];\r\n projectLayers.forEach((l) => {\r\n l.vectorLayers.forEach((v) => vectorLayers.push(v));\r\n l.wmsLayers.forEach((w) => wmsLayers.push(w));\r\n });\r\n\r\n if (selectedBaseLayers && selectedBaseLayers.length > 0) {\r\n originalProjectConfig.config.base = selectedBaseLayers;\r\n }\r\n if (vectorLayers.length > 0) {\r\n originalProjectConfig.config.vector = vectorLayers;\r\n }\r\n if (wmsLayers.length > 0) {\r\n originalProjectConfig.config.wms = wmsLayers;\r\n }\r\n originalProjectConfig.config.supermaplayers =\r\n tempProjectConfig.config.supermaplayers;\r\n originalProjectConfig.config.maplayer = tempProjectConfig.config.maplayer;\r\n originalProjectConfig.config.project = tempProjectConfig.config.project;\r\n this.mapService.setTempProjectName('Administrator test');\r\n this.mapService.setTempProjectConfig(originalProjectConfig);\r\n\r\n this.mapService.reInit(EReInitType.REINIT_WITH_TEMP_CONFIG);\r\n }\r\n\r\n stopPreviewMode(): void {\r\n this.commonService.administratorPreviewIsActive(false);\r\n this.bladeService.temporaryHide('admin', false);\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.LOGIN,\r\n false\r\n );\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.PROJECTS,\r\n false\r\n );\r\n this.commonService.administratorPreviewIsActive(false);\r\n this.mapService.reInit(EReInitType.REINIT_WITH_CACHED_ORIGINAL_CONFIG);\r\n }\r\n\r\n saveProject(): void {\r\n const originalProjectConfig = this.mapService.getOriginalProjectConfig();\r\n const selectedBaseLayers = this.chooseBaseLayersService.baseLayers\r\n .getValue()\r\n .filter((item) => item.isSelected);\r\n const selectedBaseLayerIndex = selectedBaseLayers.findIndex(\r\n (l) => l.isMainLayer\r\n );\r\n if (selectedBaseLayerIndex >= 0) {\r\n const baseLayer = selectedBaseLayers[selectedBaseLayerIndex];\r\n selectedBaseLayers.splice(selectedBaseLayerIndex, 1);\r\n selectedBaseLayers.unshift(baseLayer);\r\n }\r\n const projectLayers = this.selectLayersService.getProjectLayers();\r\n const vectorLayers = [];\r\n const wmsLayers = [];\r\n projectLayers.forEach((l) => {\r\n l.vectorLayers.forEach((v) => {\r\n v.name = v.name || l.title;\r\n v.provider = v.provider || l.provider;\r\n v = this.fixEmptyFeatureTitles(v);\r\n v = this.fixEmptyFeatureAlias(v);\r\n vectorLayers.push(v);\r\n });\r\n l.wmsLayers.forEach((w) => wmsLayers.push(w));\r\n });\r\n originalProjectConfig.config.vector = vectorLayers;\r\n originalProjectConfig.config.wms = wmsLayers;\r\n const tempProjectConfig = this.adminService.getProjectConfig();\r\n if (vectorLayers.length > 0) {\r\n tempProjectConfig.config.vector = vectorLayers;\r\n }\r\n if (wmsLayers.length > 0) {\r\n tempProjectConfig.config.wms = wmsLayers;\r\n }\r\n if (selectedBaseLayers && selectedBaseLayers.length > 0) {\r\n tempProjectConfig.config.base = selectedBaseLayers;\r\n }\r\n this.adminService.setNewConfig(tempProjectConfig);\r\n this.adminService.saveProject$.pipe(take(1)).subscribe((result) => {\r\n this.adminService.setNewConfig(undefined);\r\n if (result !== false && result !== 'UploadError') {\r\n const param = {};\r\n param[EUrlParam.PROJECT] = tempProjectConfig.config.project.name;\r\n this.router.navigate([], {\r\n queryParams: param,\r\n queryParamsHandling: 'merge',\r\n });\r\n this.hideBlade();\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 500);\r\n }\r\n });\r\n }\r\n\r\n private fixEmptyFeatureTitles(v: IVector) {\r\n if (!v.featureinfo.title) {\r\n v.featureinfo.title = v.subname;\r\n }\r\n return v;\r\n }\r\n\r\n private fixEmptyFeatureAlias(v: IVector) {\r\n if (\r\n typeof v.featureinfo.featureinfoelement !== 'undefined' &&\r\n v.featureinfo.featureinfoelement\r\n ) {\r\n const element: IFeatureInfoElement[] = v.featureinfo.featureinfoelement;\r\n if (element.length > 0) {\r\n element.forEach((alias) => {\r\n if (!alias.text) {\r\n alias.text = alias.name;\r\n }\r\n });\r\n v.featureinfo.featureinfoelement = element;\r\n }\r\n }\r\n return v;\r\n }\r\n}\r\n","
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import {\r\n FaIconLibrary,\r\n FontAwesomeModule,\r\n} from '@fortawesome/angular-fontawesome';\r\n\r\nimport { AddNewServiceComponent } from './isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/add-new-service/add-new-service.component';\r\nimport { AdminShowSpinnerPipe } from './admin-show-spinner.pipe';\r\nimport { AlertModule } from 'ngx-bootstrap/alert';\r\nimport { BaseLayersPreviewComponent } from './isy-admin-stepper/choose-base-layers/base-layers-preview/base-layers-preview.component';\r\nimport { BaseLayersServicesComponent } from './isy-admin-stepper/choose-base-layers/base-layers-services/base-layers-services.component';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { CatalogDetailComponent } from './isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/catalog-detail.component';\r\nimport { CatalogEditComponent } from './isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/catalog-edit/catalog-edit.component';\r\nimport { CatalogInfoComponent } from './isy-admin-stepper/choose-layers/layers-catalog/catalog-detail/catalog-info/catalog-info.component';\r\nimport { CatalogListComponent } from './isy-admin-stepper/choose-layers/layers-catalog/catalog-list/catalog-list.component';\r\nimport { CdkStepperModule } from '@angular/cdk/stepper';\r\nimport { CdkTreeModule } from '@angular/cdk/tree';\r\nimport { ChooseBaseLayersComponent } from './isy-admin-stepper/choose-base-layers/choose-base-layers.component';\r\nimport { ChooseLayersComponent } from './isy-admin-stepper/choose-layers/choose-layers.component';\r\nimport { ColorPickerComponent } from './isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/color-picker/color-picker.component';\r\nimport { ColorPickerModule } from 'ngx-color-picker';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { FileSaverModule } from 'ngx-filesaver';\r\nimport { FilterEditorComponent } from './isy-admin-stepper/choose-layers/layers-services/service-detail/filter-editor/filter-editor.component';\r\nimport { FilterTreeComponent } from './isy-admin-stepper/choose-layers/layers-services/service-detail/filter-editor/filter-tree/filter-tree.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { GetNameFromParamsPipe } from './get-name-from-params.pipe';\r\nimport { GetStringFromArrayPipe } from './get-string-from-array.pipe';\r\nimport { IsyAdminBtnComponent } from './isy-admin-btn/isy-admin-btn.component';\r\nimport { IsyAdminComponent } from './isy-admin.component';\r\nimport { IsyAdminWelcomePageComponent } from './isy-admin-welcome-page/isy-admin-welcome-page.component';\r\nimport { IsyDynamicModalModule } from '@isygis/isy-dynamic-modal';\r\nimport { IsyDynamicNavLoaderModule } from '@isygis/isy-dynamic-nav-loader';\r\nimport { IsyEmptyContentModule } from '@isygis/isy-empty-content';\r\nimport { IsyLayersModule } from '@isygis/isy-layers';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { IsyToasterModule } from '@isygis/isy-toaster';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { IsyUtilsModule, SortByPipe } from '@isygis/isy-utils';\r\nimport { LayersCatalogComponent } from './isy-admin-stepper/choose-layers/layers-catalog/layers-catalog.component';\r\nimport { LayersPreviewComponent } from './isy-admin-stepper/choose-layers/layers-preview/layers-preview.component';\r\nimport { LayersServicesComponent } from './isy-admin-stepper/choose-layers/layers-services/layers-services.component';\r\nimport { LineEditorComponent } from './isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/line-editor/line-editor.component';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { NgModule } from '@angular/core';\r\nimport { NgxFileDropModule } from 'ngx-file-drop';\r\nimport { PaginationModule } from 'ngx-bootstrap/pagination';\r\nimport { PointEditorComponent } from './isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/point-editor/point-editor.component';\r\nimport { PolygonEditorComponent } from './isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/polygon-editor/polygon-editor.component';\r\nimport { ProjectBasicComponent } from './isy-admin-stepper/project-settings/project-basic/project-basic.component';\r\nimport { ProjectIntegrationComponent } from './isy-admin-stepper/project-settings/project-integration/project-integration.component';\r\nimport { ProjectSearchComponent } from './isy-admin-stepper/project-settings/project-search/project-search.component';\r\nimport { ProjectSettingsComponent } from './isy-admin-stepper/project-settings/project-settings.component';\r\nimport { ProjectToolComponent } from './isy-admin-stepper/project-settings/project-tool/project-tool.component';\r\nimport { ServiceBaseLayerAddNewComponent } from './isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-add-new/service-base-layer-add-new.component';\r\nimport { ServiceBaseLayerEditComponent } from './isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-edit/service-base-layer-edit.component';\r\nimport { ServiceBaseLayerInfoComponent } from './isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-info/service-base-layer-info.component';\r\nimport { ServiceBaseLayerListComponent } from './isy-admin-stepper/choose-base-layers/base-layers-services/service-base-layer-list/service-base-layer-list.component';\r\nimport { ServiceDetailComponent } from './isy-admin-stepper/choose-layers/layers-services/service-detail/service-detail.component';\r\nimport { ServiceListComponent } from './isy-admin-stepper/choose-layers/layers-services/service-list/service-list.component';\r\nimport { StyleEditorComponent } from './isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/style-editor.component';\r\nimport { TestChooseLayersComponent } from './isy-admin-stepper/test-choose-layers/test-choose-layers.component';\r\nimport { TextEditorComponent } from './isy-admin-stepper/choose-layers/layers-services/service-detail/style-editor/text-editor/text-editor.component';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\nimport { far } from '@fortawesome/free-regular-svg-icons';\r\nimport { fas } from '@fortawesome/free-solid-svg-icons';\r\nimport { ProjectPointinfoComponent } from './isy-admin-stepper/project-settings/project-pointinfo/project-pointinfo.component';\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n NgxFileDropModule,\r\n FileSaverModule,\r\n ColorPickerModule,\r\n AlertModule.forRoot(),\r\n BsDropdownModule.forRoot(),\r\n FormsModule,\r\n IsyToasterModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n IsyDynamicNavLoaderModule,\r\n IsyLayersModule,\r\n CdkStepperModule,\r\n CdkTreeModule,\r\n DragDropModule,\r\n PaginationModule.forRoot(),\r\n ModalModule.forRoot(),\r\n TooltipModule.forRoot(),\r\n IsyEmptyContentModule,\r\n IsyDynamicModalModule,\r\n IsySpinnerModule,\r\n ReactiveFormsModule,\r\n IsyUtilsModule,\r\n ],\r\n declarations: [\r\n IsyAdminComponent,\r\n IsyAdminBtnComponent,\r\n ProjectSettingsComponent,\r\n ChooseBaseLayersComponent,\r\n ChooseLayersComponent,\r\n GetNameFromParamsPipe,\r\n TestChooseLayersComponent,\r\n LayersServicesComponent,\r\n ServiceListComponent,\r\n ServiceDetailComponent,\r\n GetStringFromArrayPipe,\r\n BaseLayersServicesComponent,\r\n ServiceBaseLayerListComponent,\r\n IsyAdminWelcomePageComponent,\r\n BaseLayersPreviewComponent,\r\n ServiceBaseLayerAddNewComponent,\r\n LayersPreviewComponent,\r\n LayersCatalogComponent,\r\n CatalogDetailComponent,\r\n CatalogListComponent,\r\n AddNewServiceComponent,\r\n ProjectBasicComponent,\r\n ProjectSearchComponent,\r\n ProjectIntegrationComponent,\r\n CatalogEditComponent,\r\n CatalogInfoComponent,\r\n ServiceBaseLayerInfoComponent,\r\n ServiceBaseLayerEditComponent,\r\n AdminShowSpinnerPipe,\r\n ProjectToolComponent,\r\n StyleEditorComponent,\r\n PointEditorComponent,\r\n LineEditorComponent,\r\n PolygonEditorComponent,\r\n ColorPickerComponent,\r\n TextEditorComponent,\r\n FilterEditorComponent,\r\n FilterTreeComponent,\r\n ProjectPointinfoComponent,\r\n ],\r\n exports: [\r\n IsyAdminComponent,\r\n ],\r\n providers: [SortByPipe],\r\n})\r\nexport class IsyAdminModule {\r\n constructor(library: FaIconLibrary) {\r\n library.addIconPacks(fas, far);\r\n }\r\n}\r\n","\r\nimport {\r\n BehaviorSubject,\r\n ReplaySubject,\r\n Subscription,\r\n combineLatest\r\n} from 'rxjs';\r\nimport {\r\n ELogin,\r\n MapConfig\r\n} from '@isygis/isy-configs';\r\nimport { IsyMapEmitterService, IsyMapService } from '@isygis/isy-map';\r\nimport {\r\n catchError,\r\n filter,\r\n map,\r\n mergeMap,\r\n multicast,\r\n refCount,\r\n switchMap,\r\n tap,\r\n} from 'rxjs/operators';\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { getUniqueId } from '@isygis/isy-utils';\r\nimport { IConfigJson, IProjectConfig, ToasterOptions } from '@isygis/isymap-config';\r\n\r\nexport enum EAdministratorMode {\r\n NONE,\r\n NEW_PROJECT,\r\n COPY_PROJECT,\r\n EDIT_PROJECT,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyAdminService {\r\n config: IConfigJson;\r\n mapConfig;\r\n\r\n private styleListUpdatedAction = new BehaviorSubject(false);\r\n private styleUpdatedAction = new BehaviorSubject(undefined);\r\n private saveStyleClickedAction = new BehaviorSubject(false);\r\n private tempProjectConfigAction = new BehaviorSubject(\r\n undefined\r\n );\r\n private activeStyleAction = new BehaviorSubject(undefined);\r\n private completeChosenStyleAction = new BehaviorSubject(undefined);\r\n private pointStyleAction = new BehaviorSubject(undefined);\r\n private lineStyleAction = new BehaviorSubject(undefined);\r\n private polygonStyleAction = new BehaviorSubject(undefined);\r\n private textStyleAction = new BehaviorSubject(undefined);\r\n private completeStyleAction = new BehaviorSubject(undefined);\r\n private styleFileLoadAction = new BehaviorSubject(undefined);\r\n private deleteStyleAction = new BehaviorSubject(undefined);\r\n\r\n activeStyle$ = this.activeStyleAction.asObservable();\r\n completeChosenStyle$ = this.completeChosenStyleAction.asObservable();\r\n pointStyle$ = this.pointStyleAction.asObservable();\r\n lineStyle$ = this.lineStyleAction.asObservable();\r\n polygonStyle$ = this.polygonStyleAction.asObservable();\r\n textStyle$ = this.textStyleAction.asObservable();\r\n completeStyle = this.completeStyleAction.asObservable();\r\n styleFileLoad$ = this.styleFileLoadAction.asObservable();\r\n deleteStyleAction$ = this.deleteStyleAction.asObservable();\r\n\r\n tempProjectConfig$ = this.tempProjectConfigAction.asObservable().pipe(\r\n map((projectConfig) => {\r\n if (projectConfig?.config?.vector) {\r\n projectConfig.config.vector.forEach((v) => {\r\n if (\r\n v.options.protocol.type !== 'VECTOR' &&\r\n v.guid &&\r\n v.guid.split('-').length - 1 !== 3\r\n ) {\r\n v.guid = getUniqueId(4);\r\n }\r\n });\r\n }\r\n if (projectConfig?.config?.wms) {\r\n projectConfig.config.wms.forEach((w) => {\r\n if (w.guid && w.guid.split('-').length - 1 !== 3) {\r\n w.guid = getUniqueId(4);\r\n }\r\n });\r\n }\r\n return projectConfig;\r\n }),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount()\r\n );\r\n\r\n configLoad$ = this.mapEmitterService.configLoadEmitter$;\r\n mapConfig$ = this.mapEmitterService.mapConfigLoadEmitter$;\r\n // private isytoken$ = this.commonService.loginToken$;\r\n\r\n private projectNameAction = new BehaviorSubject(undefined);\r\n private newConfigAction = new BehaviorSubject(undefined);\r\n\r\n private administratorModeAction = new BehaviorSubject(\r\n EAdministratorMode.NONE\r\n );\r\n administratorMode$ = this.administratorModeAction.asObservable();\r\n\r\n private showSpinnerAction = new BehaviorSubject(false);\r\n showSpinner$ = this.showSpinnerAction.asObservable();\r\n\r\n subscriptions: Subscription[] = [];\r\n\r\n exist$ = combineLatest([\r\n this.configLoad$,\r\n this.mapConfig$,\r\n this.tempProjectConfig$,\r\n this.administratorMode$,\r\n ]).pipe(\r\n switchMap(\r\n ([config, mapConfig, tempProjectConfig, administratorMode]: [\r\n IConfigJson,\r\n MapConfig,\r\n IProjectConfig,\r\n EAdministratorMode\r\n ]) => {\r\n if (tempProjectConfig) {\r\n this.config = config;\r\n this.mapConfig = mapConfig;\r\n if (administratorMode === EAdministratorMode.EDIT_PROJECT) {\r\n return new Promise((resolve) => resolve(false));\r\n } else {\r\n return this.httpClient\r\n .get(\r\n config.configurl +\r\n '/api/v2/project/exists?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n tempProjectConfig.config.project.name\r\n )\r\n .pipe(\r\n map((result) => {\r\n return result;\r\n })\r\n );\r\n }\r\n } else {\r\n return new Promise((resolve) => resolve(false));\r\n }\r\n }\r\n ),\r\n tap((result) => {\r\n if (result) {\r\n this.toasterService.warning(\r\n 'admin_project_name_exists_toaster_msg',\r\n 'admin_project_name_exists_toaster_title'\r\n );\r\n }\r\n console.log('Result exist: ', result);\r\n })\r\n );\r\n\r\n saveProject$ = combineLatest([\r\n this.exist$,\r\n this.tempProjectConfig$,\r\n this.newConfigAction,\r\n ]).pipe(\r\n switchMap(\r\n ([exist, tempProjectConfig, newConfig]: [\r\n boolean,\r\n IProjectConfig,\r\n IProjectConfig\r\n ]) => {\r\n if (tempProjectConfig && newConfig && !exist) {\r\n const validationProblems = this.validateNewConfig(newConfig);\r\n if (validationProblems.length) {\r\n console.log('Validation problems: ', validationProblems);\r\n this.toasterService.warning(\r\n validationProblems.join(', '),\r\n 'admin_validating_failed_toaster_title'\r\n );\r\n\r\n return new Promise((resolve) => resolve(false));\r\n }\r\n console.log('SAVE PROJECT CONFIG: ', newConfig);\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n return this.httpClient\r\n .post(\r\n this.config.configurl +\r\n '/api/v2/project?application=' +\r\n this.mapConfig.instance +\r\n '&name=' +\r\n tempProjectConfig.config.project.name +\r\n '&isyToken=' +\r\n isytoken +\r\n '&isPublic=true',\r\n newConfig\r\n )\r\n .pipe(\r\n map((result) => {\r\n return result;\r\n }),\r\n catchError(this.handlePostAttachmentError)\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve(false));\r\n }\r\n }\r\n ),\r\n tap((result) => {\r\n console.log('SAVE PROJECT: ', result);\r\n if (result === 'UploadError' || result === false) {\r\n this.toasterService.error(\r\n 'admin_saving_failed_toaster_msg',\r\n 'admin_saving_failed_toaster_title'\r\n );\r\n } else {\r\n this.toasterService.info(\r\n 'admin_saving_success_toaster_msg',\r\n 'admin_saving_success_toaster_title'\r\n );\r\n }\r\n })\r\n );\r\n\r\n getStyles$ = combineLatest([\r\n this.mapService.config$,\r\n ]).pipe(\r\n switchMap(([mapConfig]: [IConfigJson]) => {\r\n const styleApiUrl =\r\n mapConfig.configurl +\r\n '/api/v2/style/list?application=' +\r\n mapConfig.instance;\r\n return this.httpClient.get(styleApiUrl);\r\n })\r\n );\r\n\r\n deleteStyle$ = combineLatest([\r\n this.deleteStyleAction,\r\n this.mapService.config$,\r\n ]).pipe(\r\n mergeMap(([fileName, mapConfig]: [string, IConfigJson]) => {\r\n if (fileName) {\r\n let deleteMethod = '';\r\n if (fileName.toLowerCase().indexOf('.sld') > 0) {\r\n deleteMethod = 'deletesld';\r\n fileName = fileName.substring(0, fileName.indexOf('.sld'));\r\n } else if (fileName.toLowerCase().indexOf('.json') > 0) {\r\n deleteMethod = 'deletejson';\r\n fileName = fileName.substring(0, fileName.indexOf('.json'));\r\n }\r\n // Hack for filenames with #: If filename consist of #, it must be replaced by %23 for the api-call to work properly.\r\n fileName = fileName.replace(/#/g, '%23');\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n const projConfig = this.mapService.getProjectConfig();\r\n const styleApiUrl =\r\n mapConfig.configurl +\r\n '/api/v2/style/' +\r\n deleteMethod +\r\n '?application=' +\r\n mapConfig.instance +\r\n '&project=' +\r\n projConfig?.config?.project?.name +\r\n '&name=' +\r\n fileName +\r\n '&isytoken=' +\r\n isytoken;\r\n\r\n return this.httpClient.delete(styleApiUrl).pipe(\r\n map((result: any) => {\r\n console.log('RESULT', result);\r\n if (result === false) {\r\n this.toasterService.error('delete_style_file_error');\r\n return false;\r\n } else {\r\n this.toasterService.success('delete_style_file_success');\r\n // Should update the style file list, and remove the name from the dropdown menu.\r\n this.updateStyleList();\r\n return true;\r\n }\r\n })\r\n );\r\n }\r\n return Promise.resolve(false);\r\n }),\r\n catchError(this.handleDeleteError.bind(this))\r\n );\r\n\r\n saveStyle$ = combineLatest([\r\n this.styleUpdatedAction,\r\n this.mapService.config$,\r\n ]).pipe(\r\n mergeMap(([newStyle, mapConfig]: [any, IConfigJson]) => {\r\n if (newStyle) {\r\n let saveMethod = '';\r\n let headers;\r\n // for sld files\r\n if (newStyle.style.name?.toLowerCase().indexOf('.sld') > 0) {\r\n saveMethod = 'savesld';\r\n headers = { 'Content-Type': 'application/xml' };\r\n }\r\n // for json files\r\n else if (newStyle.style.name?.toLowerCase().indexOf('.json') > 0) {\r\n saveMethod = 'savejson';\r\n headers = { 'Content-Type': 'application/json' };\r\n }\r\n // for blobs\r\n else if (newStyle.style.constructor === Blob) {\r\n saveMethod = 'savejson';\r\n headers = { 'Content-Type': 'application/json' };\r\n } else {\r\n console.log('Unsupported file type for upload');\r\n return Promise.resolve(false);\r\n }\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n // Hack for filenames with #: If filename consist of #, it must be replaced by %23 for the api-call to work properly.\r\n newStyle.name = newStyle.name.replace(/#/g, '%23');\r\n const styleApiUrl =\r\n mapConfig.configurl +\r\n '/api/v2/style/' +\r\n saveMethod +\r\n '?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n newStyle.name +\r\n '&isytoken=' +\r\n isytoken;\r\n\r\n return this.httpClient\r\n .post(styleApiUrl, newStyle.style, { headers })\r\n .pipe(\r\n map((result: any) => {\r\n if (result === false) {\r\n console.log('SaveStyle failed: ', saveMethod);\r\n this.toasterService.error(\r\n 'admin_service_file_error_toaster_title'\r\n );\r\n return false;\r\n } else {\r\n console.log('SaveStyle ok: ', saveMethod);\r\n this.updateStyleList();\r\n return true;\r\n }\r\n })\r\n );\r\n }\r\n return Promise.resolve(false);\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n\r\n constructor(\r\n private mapEmitterService: IsyMapEmitterService,\r\n private httpClient: HttpClient,\r\n private translateService: IsyTranslateService,\r\n private mapService: IsyMapService,\r\n private toasterService: IsyToasterService,\r\n private sessionStorageService: SessionStorageService\r\n ) {}\r\n\r\n setActiveStyle(activeStyle?: any): void {\r\n this.activeStyleAction.next(activeStyle ? activeStyle : undefined);\r\n }\r\n\r\n setCompleteChosenStyle(activeStyle?: any): void {\r\n this.completeChosenStyleAction.next(activeStyle ? activeStyle : undefined);\r\n }\r\n\r\n validateNewConfig(config: IProjectConfig): string[] {\r\n const problems = [];\r\n if (config) {\r\n if (!config.config?.project?.name) {\r\n problems.push(\r\n this.translateService.instant('admin_validating_project_name')\r\n );\r\n }\r\n if (!config.config?.project?.epsg) {\r\n problems.push(\r\n this.translateService.instant('admin_validating_project_epsg')\r\n );\r\n }\r\n if (!config.config?.project?.lon || !config.config?.project?.lat) {\r\n problems.push(\r\n this.translateService.instant('admin_validating_project_center')\r\n );\r\n }\r\n if (!config.config?.project?.zoom) {\r\n problems.push(\r\n this.translateService.instant('admin_validating_project_zoom')\r\n );\r\n }\r\n if (!config.config?.base?.length) {\r\n problems.push(\r\n this.translateService.instant('admin_validating_project_base_layer')\r\n );\r\n }\r\n }\r\n return problems;\r\n }\r\n\r\n setProjectName(value: string): void {\r\n this.projectNameAction.next(value);\r\n }\r\n\r\n setNewConfig(config: IProjectConfig): void {\r\n this.newConfigAction.next(config);\r\n }\r\n\r\n // project type: 1 - new from template, 2 - copy project, 3 - edit project, 0 - not defined (start page)\r\n setAdministratorMode(administratorMode: EAdministratorMode): void {\r\n this.administratorModeAction.next(administratorMode);\r\n }\r\n\r\n setTempProjectConfig(projectConfig?: IProjectConfig): void {\r\n this.tempProjectConfigAction.next(projectConfig);\r\n }\r\n\r\n getProjectConfig(): IProjectConfig {\r\n return this.tempProjectConfigAction.getValue();\r\n }\r\n\r\n private handlePostAttachmentError(err): any {\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n return Promise.resolve('UploadError');\r\n }\r\n\r\n getStyle(name: string): any {\r\n return this.mapService.config$.pipe(\r\n filter((x) => !!x),\r\n switchMap((mapConfig) => {\r\n // Hack for filenames with #: If filename consist of #, it must be replaced by %23 for the api-call to work properly.\r\n name = name.replace(/#/g, '%23');\r\n if (name && name.toLowerCase().indexOf('.sld') > 0) {\r\n name = name.substr(0, name.toLowerCase().indexOf('.sld'));\r\n const styleApiUrl =\r\n mapConfig.configurl +\r\n '/api/v2/style?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n name;\r\n return this.httpClient\r\n .get(styleApiUrl, { responseType: 'text' })\r\n .pipe(\r\n map((result: any) => {\r\n console.log(result);\r\n return result;\r\n })\r\n );\r\n } else if (name && name.toLowerCase().indexOf('.json') > 0) {\r\n name = name.substr(0, name.toLowerCase().indexOf('.json'));\r\n const styleApiUrl =\r\n mapConfig.configurl +\r\n '/api/v2/style/json?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n name;\r\n return this.httpClient.get(styleApiUrl).pipe(\r\n map((result: any) => {\r\n console.log(result);\r\n return result;\r\n })\r\n );\r\n }\r\n throw new Error('Unsupported style');\r\n })\r\n );\r\n }\r\n\r\n getStyleBlob(name: string): any {\r\n return this.mapService.config$.pipe(\r\n filter((x) => !!x),\r\n switchMap((mapConfig) => {\r\n // Hack for filenames with #: If filename consist of #, it must be replaced by %23 for the api-call to work properly.\r\n name = name.replace(/#/g, '%23');\r\n if (name && name.toLowerCase().indexOf('.sld') > 0) {\r\n name = name.substr(0, name.toLowerCase().indexOf('.sld'));\r\n const styleApiUrl =\r\n mapConfig.configurl +\r\n '/api/v2/style?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n name;\r\n return this.httpClient\r\n .get(styleApiUrl, { responseType: 'blob' })\r\n .pipe(\r\n map((result: any) => {\r\n console.log(result);\r\n return result;\r\n })\r\n );\r\n } else if (name && name.toLowerCase().indexOf('.json') > 0) {\r\n name = name.substr(0, name.toLowerCase().indexOf('.json'));\r\n const styleApiUrl =\r\n mapConfig.configurl +\r\n '/api/v2/style/json?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n name;\r\n return this.httpClient\r\n .get(styleApiUrl, { responseType: 'blob' })\r\n .pipe(\r\n map((result: any) => {\r\n console.log(result);\r\n return result;\r\n })\r\n );\r\n }\r\n throw new Error('Unsupported style');\r\n })\r\n );\r\n }\r\n\r\n /*saveStyle(): void {\r\n this.subscription.unsubscribe();\r\n this.subscription = new Subscription();\r\n this.saveStyleClicked = true;\r\n\r\n if (!this.fileName) {\r\n return;\r\n }\r\n\r\n // If the file name consist of irregular characters, replace them with underscore and notify the user.\r\n const oldName = this.fileName;\r\n const newName = this.fileName.replace(/[^0-9a-zA-ZæøåÆØÅ\\-_]/g, '_');\r\n let nameHasChanged = false;\r\n if (oldName !== newName) {\r\n nameHasChanged = true;\r\n this.fileName = newName;\r\n }\r\n\r\n const styleString = this.makeStyleString();\r\n const newBlob = new Blob([styleString], { type: 'application/json' });\r\n\r\n this.subscription.add(\r\n this.saveStyle$.subscribe((value) => {\r\n if (value === true) {\r\n let fileName = `${this.fileName}.json`;\r\n this.node.styleFileName = fileName;\r\n this.adminService.setStyleFile(fileName);\r\n const mapConfig = this.mapService.getConfig();\r\n fileName = fileName.substring(\r\n 0,\r\n fileName.toLowerCase().indexOf('.json')\r\n );\r\n // Hack for filenames with #: If filename consist of #, it must be replaced by %23 for the api-call to work properly.\r\n fileName = fileName.replace(/#/g, '%23');\r\n this.catalog.stylemapjson =\r\n mapConfig.configurl +\r\n '/api/v2/style/json?application=' +\r\n mapConfig.instance +\r\n '&name=' +\r\n fileName;\r\n this.catalog.stylemapurl = null;\r\n this.adminService.setStyleUpdated();\r\n this.subscription.unsubscribe();\r\n }\r\n })\r\n );\r\n this.adminService.setStyleUpdated(this.fileName, newBlob, nameHasChanged);\r\n }*/\r\n\r\n updateStyleList(): void {\r\n this.styleListUpdatedAction.next(true);\r\n }\r\n\r\n showSpinner(value: boolean): void {\r\n this.showSpinnerAction.next(value);\r\n }\r\n\r\n setStyleFile(name: string): void {\r\n console.log(name);\r\n if (this.styleFileLoadAction.getValue() !== name) {\r\n this.styleFileLoadAction.next(name);\r\n }\r\n }\r\n\r\n setDeleteStyle(name: string): void {\r\n this.deleteStyleAction.next(name);\r\n }\r\n\r\n setStyleUpdated(name?: string, style?, nameHasChanged?: boolean): void {\r\n if (name && style) {\r\n const newStyle = { name, style, nameHasChanged };\r\n this.styleUpdatedAction.next(newStyle);\r\n } else {\r\n this.styleUpdatedAction.next(undefined);\r\n }\r\n }\r\n\r\n setSaveStyleClicked(bool: boolean): void {\r\n this.saveStyleClickedAction.next(bool);\r\n }\r\n\r\n private handleDeleteError(err): Promise {\r\n let errorMessage: string;\r\n let toasterMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n if (err.status === 409) {\r\n // In another project\r\n toasterMessage = err.error;\r\n } else if (err.status === 403) {\r\n // Ugyldig isytoken\r\n toasterMessage = 'Isytoken not valid. Please login again';\r\n }\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n this.toasterService.error(toasterMessage, 'Kan ikke slette fil.');\r\n return Promise.resolve(false);\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n this.toasterService.error('fileDownloadError_toaster_msg');\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return new Promise((resolve) => resolve(false));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\n\r\n// import * as Jsonix from 'jsonix';\r\nimport {\r\n OWS_1_0_0,\r\n OWS_1_1_0,\r\n Filter_1_0_0,\r\n Filter_1_1_0,\r\n Filter_2_0,\r\n SMIL_2_0,\r\n SMIL_2_0_Language,\r\n GML_1_0_0,\r\n GML_2_1_2,\r\n GML_3_1_1,\r\n GML_3_2_0,\r\n GML_3_2_1,\r\n WFS_1_0_0,\r\n WFS_1_1_0,\r\n WFS_2_0,\r\n} from 'ogc-schemas';\r\nimport { XLink_1_0 } from 'w3c-schemas';\r\n\r\ndeclare let Jsonix: any;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyCapabilitiesService {\r\n constructor(\r\n private toasterService: IsyToasterService,\r\n private translateService: IsyTranslateService,\r\n ) {}\r\n\r\n parsedCapabilities;\r\n\r\n parseGetCapabilies(response, versionInfo): void {\r\n if (!response) {\r\n this.toasterService.error(\r\n this.translateService.instant('admin_layers_get_capabilities_error'),\r\n 'ERROR'\r\n );\r\n throw('Could not get capabilities!');\r\n }\r\n\r\n let supportedVersions;\r\n\r\n this.parsedCapabilities = undefined;\r\n\r\n try {\r\n // This should work with geoserver/deegree/new webinnsyn\r\n const operationXml: HTMLCollection =\r\n response.getElementsByTagName('ows:Operation');\r\n if (operationXml && operationXml.length) {\r\n const getCapabilitiesXml = Array.from(operationXml).find(\r\n (o) => o.getAttribute('name') === 'GetCapabilities'\r\n );\r\n const capParams =\r\n getCapabilitiesXml.getElementsByTagName('ows:Parameter');\r\n const acceptedVersionsXml = Array.from(capParams).find(\r\n (p) => p.getAttribute('name') === 'AcceptVersions'\r\n );\r\n supportedVersions = Array.from(\r\n acceptedVersionsXml.getElementsByTagName('ows:Value')\r\n ).map((v) => v.innerHTML);\r\n }\r\n } catch {\r\n // ¯\\_(ツ)_/¯ try another way\r\n }\r\n\r\n if (!supportedVersions) {\r\n // Alternative approach, this should also work with geoserver/deegree\r\n const supportedVersionsXml: HTMLCollection =\r\n response.getElementsByTagName('ows:ServiceTypeVersion', '*');\r\n supportedVersions = Array.from(supportedVersionsXml).map(\r\n (v) => v.innerHTML\r\n );\r\n }\r\n\r\n if (!versionInfo) {\r\n versionInfo = supportedVersions.sort()[supportedVersions.length - 1];\r\n }\r\n if (!versionInfo) {\r\n // One more try to get versioninfo, this works for old webinnsyn (pre 2114)\r\n const e = response.getElementsByTagName('WFS_Capabilities', '*');\r\n if (e && e[0] && e[0].attributes && e[0].attributes.version) {\r\n versionInfo = e[0].attributes.version.value;\r\n supportedVersions = [versionInfo];\r\n }\r\n }\r\n // console.log('IsyCapabilitiesService', response);\r\n let modules = [];\r\n if (versionInfo === '1.0.0') {\r\n modules = [\r\n OWS_1_0_0,\r\n OWS_1_1_0,\r\n Filter_1_0_0,\r\n Filter_1_1_0,\r\n Filter_2_0,\r\n SMIL_2_0,\r\n SMIL_2_0_Language,\r\n XLink_1_0,\r\n GML_1_0_0,\r\n GML_2_1_2,\r\n GML_3_1_1,\r\n WFS_1_0_0,\r\n WFS_1_1_0,\r\n ];\r\n } else if (versionInfo === '1.1.0') {\r\n modules = [\r\n OWS_1_0_0,\r\n OWS_1_1_0,\r\n Filter_1_0_0,\r\n Filter_1_1_0,\r\n Filter_2_0,\r\n SMIL_2_0,\r\n SMIL_2_0_Language,\r\n XLink_1_0,\r\n GML_1_0_0,\r\n GML_2_1_2,\r\n GML_3_1_1,\r\n WFS_1_1_0,\r\n ];\r\n } else if (versionInfo === '2.0.0') {\r\n modules = [\r\n OWS_1_0_0,\r\n OWS_1_1_0,\r\n Filter_1_0_0,\r\n Filter_1_1_0,\r\n Filter_2_0,\r\n SMIL_2_0,\r\n SMIL_2_0_Language,\r\n XLink_1_0,\r\n GML_3_1_1,\r\n GML_3_2_0,\r\n GML_3_2_1,\r\n WFS_2_0,\r\n GML_2_1_2,\r\n ];\r\n }\r\n const wfsContext = new Jsonix.Context(modules);\r\n const wfsUnmarshaller = wfsContext.createUnmarshaller();\r\n\r\n const capabilities = wfsUnmarshaller.unmarshalDocument(response).value;\r\n capabilities.supportedVersions = supportedVersions;\r\n\r\n const operationsMetadata = response.getElementsByTagName(\r\n 'ows:OperationsMetadata',\r\n '*'\r\n );\r\n if (operationsMetadata.length === 1 && operationsMetadata[0].childNodes) {\r\n for (let i = 0; i < operationsMetadata[0].childNodes.length; i++) {\r\n const operation = operationsMetadata[0].childNodes[i];\r\n if (\r\n operation.attributes &&\r\n operation.attributes['name'] &&\r\n operation.attributes['name'].value === 'Transaction'\r\n ) {\r\n capabilities.transactions = true;\r\n }\r\n }\r\n }\r\n // console.log('jsonix', capabilities);\r\n this.parsedCapabilities = capabilities;\r\n return capabilities;\r\n }\r\n}\r\n","import { ISearchParam } from '@isygis/isymap-config';\r\n\r\nexport const SearchLibrary: ISearchParam[] = [\r\n {\r\n name: 'ssr',\r\n title: 'Stedsnavn',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'matr',\r\n title: 'Gårds- og bruksnummer (enkelt)',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'gi',\r\n title: 'Planidentifikasjon (enkelt)',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'giname',\r\n title: 'Plannavn (enkelt)',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'gidnois',\r\n title: 'Gårds- og bruksnummer',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'address',\r\n title: 'Vegadresse',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'owners',\r\n title: 'Hjemmelshaver',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'plannois',\r\n title: 'Arealplan (planident og navn)',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'coordinate',\r\n title: 'Koordinat',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'buildingnumber',\r\n title: 'Bygningsnummer',\r\n hasurl: 'false',\r\n example: '',\r\n },\r\n {\r\n name: 'custom',\r\n title: 'Tilpasset',\r\n hasurl: 'true',\r\n example: '',\r\n },\r\n];\r\n","import { IWms } from '@isygis/isymap-config';\r\nimport { Services, CatalogLayer } from './data';\r\nimport { ISearchParam } from '@isygis/isymap-config';\r\nexport const MockCatalog: CatalogLayer[] = [];\r\n\r\n// export const MockCatalog: CatalogLayer[] = [\r\n// {\r\n// url: 'https://kart5.nois.no/trondheim/wfs/default.asp?conname=Regplan',\r\n// provider: 'Trondheim',\r\n// title: 'Reguleringsplan område',\r\n// category: 'Plan',\r\n// service: 'WFS',\r\n// version: '1.0.0',\r\n// typename: 'RpOmråde',\r\n// subname: 'Reguleringsplan område',\r\n// // featureinfoelement: [],\r\n// },\r\n// {\r\n// url: 'https://kart5.nois.no/trondheim/wfs/default.asp?conname=ByggeSak',\r\n// provider: 'Trondheim',\r\n// title: 'Delesak - søknad registrert',\r\n// category: 'Plan',\r\n// service: 'WFS',\r\n// version: '1.0.0',\r\n// typename: 'JEiendomSakFase',\r\n// subname: 'Søknad om deling',\r\n// // featureinfoelement: [],\r\n// },\r\n// {\r\n// url: 'https://kart5.nois.no/trondheim/wfs/default.asp?conname=RegplanFOR', // options/protocol/url\r\n// provider: 'Trondheim', // provider\r\n// title: 'Reguleringsplan under arbeid', // name\r\n// category: 'Plan',\r\n// service: 'WFS',\r\n// version: '1.0.0',\r\n// typename: 'RpOmråde',\r\n// subname: 'Forslag Reguleringsplan område',\r\n// // featureinfoelement: []\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/tk/wms',\r\n// provider: 'Trondheim',\r\n// title: 'Stoysoner 2017 1.5m',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://bruker:bantor55@kart.trondheim.kommune.no/geoserver/ows?service=wfs',\r\n// provider: 'Trondheim geoserver',\r\n// title: 'Geoserver wfs',\r\n// category: 'uncategorized',\r\n// service: 'WFS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.nib_web_mercator_v2',\r\n// provider: 'GeoNorge',\r\n// title: 'wms.nib_web_mercator_v2',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.nib_utm35_v2',\r\n// provider: 'GeoNorge',\r\n// title: 'wms.nib_utm35_v2',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.nib_utm33_v2',\r\n// provider: 'GeoNorge',\r\n// title: 'wms.nib_utm33_v2',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=toporaster3',\r\n// provider: 'GeoNorge',\r\n// title: 'wms.toporaster3',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=europa',\r\n// provider: 'GeoNorge',\r\n// title: 'wms.europa',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/Skole/wms?',\r\n// provider: 'TrHeim',\r\n// title: 'Skolekrets',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/FinnDinSkole/wms?request=getcapabilities',\r\n// provider: 'TrHeim',\r\n// title: 'FinnDinSkole',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/abas/wms?',\r\n// provider: 'Trondheim geoserver',\r\n// title: 'abas',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/adresseprosjekt/wms',\r\n// provider: 'TrHeim',\r\n// title: 'Adresseprosjekt Geoserver',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/Sykkel_by/wms?',\r\n// provider: 'Trondheim geoserver',\r\n// title: 'Sykkelkart',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://bruker:bantor55@kart.trondheim.kommune.no/geoserver/NN2000/wfs',\r\n// provider: '',\r\n// title: 'NN2000_wfs',\r\n// category: 'uncategorized',\r\n// service: 'Wfs',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://bruker:bantor55@kart.trondheim.kommune.no/geoserver/NN2000/wfs',\r\n// provider: '',\r\n// title: 'NN2000_wfs_des13',\r\n// category: 'uncategorized',\r\n// service: 'Wfs',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://bruker:bantor55@kart.trondheim.kommune.no/geoserver/abas/wfs',\r\n// provider: 'Trondheim geoserver',\r\n// title: 'abas - wfs',\r\n// category: 'uncategorized',\r\n// service: 'Wfs',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geowebcache/service/wms?',\r\n// provider: 'Trondheim geoserver',\r\n// title: 'Trondheim Cache',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/Blagronn/wms',\r\n// provider: 'Trondheim geoserver',\r\n// title: 'blagronnWMS',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/abas/wms',\r\n// provider: 'Trondheim',\r\n// title: 'skolekrets',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/abas/wms',\r\n// provider: 'Trondheim',\r\n// title: 'ungdomsskolekrets',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://kart.trondheim.kommune.no/geoserver/Viltkart/wms',\r\n// provider: 'Trondheim Geoserver',\r\n// title: 'Viltkart wms',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'https://kart.trondheim.kommune.no/geoserver/Barnehage/wms',\r\n// provider: 'Trondheim geoserver',\r\n// title: 'Test geoinnsynendring',\r\n// category: 'uncategorized',\r\n// service: 'Wms',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=topo4',\r\n// provider: 'GeoNorge',\r\n// title: 'wms.topo4',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'https://kart.artsdatabanken.no/WMS/artskart.aspx?',\r\n// provider: 'Artsdatabanken',\r\n// title: 'Artskart rødlistearter WMS',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'https://kart.miljodirektoratet.no/arcgis/services/grunnforurensning2/MapServer/WMSServer?',\r\n// provider: 'MiljoDir',\r\n// title: 'Grunnforurensning',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// },\r\n// {\r\n// url: 'https://gis3.nve.no/map/services/Flomsoner1/MapServer/WmsServer?',\r\n// provider: 'NVE',\r\n// title: 'Flomsoner',\r\n// category: 'uncategorized',\r\n// service: 'WMS',\r\n// version: '1.0.0',\r\n// typename: '',\r\n// subname: ''\r\n// }\r\n// ];\r\nexport const MockBaseLayers: IWms[] = [];\r\n\r\n// export const MockBaseLayers: IWms[] = [\r\n// {\r\n// guid: 'wms.norges_grunnkart',\r\n// name: 'Forenklet grunnkart',\r\n// provider: 'GeoNorge',\r\n// display: 'false',\r\n// gatekeeper: 'true',\r\n// hidden: 'false',\r\n// url: 'http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=norges_grunnkart|http://gatekeeper2.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=norges_grunnkart|http://gatekeeper3.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=norges_grunnkart',\r\n// options: {\r\n// isbaselayer: 'true',\r\n// opacity: '1',\r\n// singletile: 'false',\r\n// transitioneffect: 'resize',\r\n// visibility: 'false'\r\n// },\r\n// params: {\r\n// format: 'image/png',\r\n// layers: 'norges_grunnkart',\r\n// bgcolor: '0x000000',\r\n// transparent: 'true',\r\n// getfeatureinfo: 'false'\r\n// },\r\n// layers: {\r\n// layer: [{\r\n// name: 'norges_grunnkart',\r\n// queryable: 'false'\r\n// }]\r\n// },\r\n// // abstract: 'Tjenesten inneholder topografiske kart i målestokken 1:500 til 1:10M',\r\n// type: 'WMTS'\r\n// },\r\n// {\r\n// guid: 'wms.norges_grunnkart_graatone',\r\n// name: 'Forenklet kart gråtone',\r\n// provider: 'GeoNorge',\r\n// display: 'false',\r\n// gatekeeper: 'true',\r\n// hidden: 'false',\r\n// url: 'https://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=norges_grunnkart_graatone|https://gatekeeper2.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=norges_grunnkart_graatone|https://gatekeeper3.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=norges_grunnkart_graatone',\r\n// options: {\r\n// isbaselayer: 'true',\r\n// opacity: '1',\r\n// singletile: 'false',\r\n// transitioneffect: 'resize',\r\n// visibility: 'false'\r\n// },\r\n// params: {\r\n// format: 'image/png',\r\n// layers: 'norges_grunnkart_graatone',\r\n// bgcolor: '0x000000',\r\n// transparent: 'true',\r\n// getfeatureinfo: 'false'\r\n// },\r\n// layers: {\r\n// layer: [{\r\n// title: 'Forenklet grunnkart - Gråtone',\r\n// name: 'norges_grunnkart_graatone',\r\n// queryable: 'false'\r\n// }]\r\n// },\r\n// // abstract: 'Tjenesten inneholder topografiske kart i målestokken 1:500 til 1:10M i gråtone.',\r\n// type: 'WMTS'\r\n// },\r\n// {\r\n// guid: '8fc5e8fe-6b26-43ce-8507-4d7728f0f6d9',\r\n// name: 'Flyfoto',\r\n// provider: 'GeoNorge',\r\n// display: 'false',\r\n// gatekeeper: 'true',\r\n// hidden: 'false',\r\n// url: 'http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.nib_utm32|http://gatekeeper2.geonorge.no/BaatGatekeeper/gk/gk.nib_utm32|http://gatekeeper3.geonorge.no/BaatGatekeeper/gk/gk.nib_utm32',\r\n// options: {\r\n// isbaselayer: 'true',\r\n// opacity: '1',\r\n// singletile: 'false',\r\n// transitioneffect: 'resize',\r\n// visibility: 'false'\r\n// },\r\n// params: {\r\n// format: 'image/png',\r\n// layers: 'Nibcache_UTM32_EUREF89',\r\n// bgcolor: '0x000000',\r\n// transparent: 'true',\r\n// getfeatureinfo: 'false',\r\n// featureinfoformats: {\r\n// format: ['application/vnd.esri.wms_raw_xml', 'application/vnd.esri.wms_featureinfo_xml', 'application/vnd.ogc.wms_xml',\r\n// 'application/geojson', 'text/xml', 'text/html', 'text/plain']\r\n// }\r\n// },\r\n// layers: {\r\n// layer: [{\r\n// title: 'Flyfoto',\r\n// name: 'Nibcache_UTM32_EUREF89',\r\n// queryable: 'true'\r\n// }]\r\n// },\r\n// // abstract: 'Bakgrunnskart og for oppdatering av annen kartinformasjon',\r\n// type: 'TileWMS'\r\n// },\r\n// {\r\n// guid: 'wms.topo4',\r\n// name: 'Kart',\r\n// provider: 'GeoNorge',\r\n// display: 'false',\r\n// gatekeeper: 'true',\r\n// hidden: 'false',\r\n// url: 'http://gatekeeper1.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=topo4|http://gatekeeper2.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=topo4|http://gatekeeper3.geonorge.no/BaatGatekeeper/gk/gk.cache?LAYERS=topo4',\r\n// options: {\r\n// isbaselayer: 'true',\r\n// opacity: '1',\r\n// singletile: 'false',\r\n// transitioneffect: 'resize',\r\n// visibility: 'false'\r\n// },\r\n// params: {\r\n// format: 'image/png',\r\n// layers: 'topo4',\r\n// bgcolor: '0x000000',\r\n// transparent: 'true',\r\n// getfeatureinfo: 'false'\r\n// },\r\n// layers: {\r\n// layer: [{\r\n// title: 'topo4',\r\n// name: 'topo4',\r\n// queryable: 'false'\r\n// }]\r\n// },\r\n// // abstract: 'Tjenesten inneholder topografiske kart i målestokken 1:500 til 1:10M. Tjenesten inneholder også data fra FKB.',\r\n// type: 'WMTS'\r\n// }\r\n// ];\r\n\r\nexport const MockData: Services[] = [];\r\n\r\n// export const MockData: Services[] = [\r\n// {\r\n// name: 'Reguleringsplan under arbeid',\r\n// featureTypes: [\r\n// {\r\n// name: 'PblMidlByggAnleggGrense',\r\n// title: 'PblMidlByggAnleggGrense',\r\n// epsg: 'EPSG:32632'\r\n// },\r\n// {\r\n// name: 'PblMidlByggAnleggOmråde',\r\n// title: 'PblMidlByggAnleggOmråde',\r\n// epsg: 'EPSG:32632'\r\n// },\r\n// {\r\n// name: 'RpAngittHensynGrense',\r\n// title: 'RpAngittHensynGrense',\r\n// epsg: 'EPSG:32632'\r\n// },\r\n// {\r\n// name: 'RpAngittHensynSone',\r\n// title: 'RpAngittHensynSone',\r\n// epsg: 'EPSG:32632'\r\n// }\r\n// ]\r\n// },\r\n// {\r\n// name: 'pblTiltak',\r\n// featureTypes: [\r\n// {\r\n// name: 'PblTiltak',\r\n// title: 'PblTiltak',\r\n// epsg: 'EPSG:32632'\r\n// },\r\n// {\r\n// name: 'TiltakGrense',\r\n// title: 'TiltakGrense',\r\n// epsg: 'EPSG:32632'\r\n// }\r\n// ]\r\n// }\r\n// ];\r\n\r\nexport const MockSearchParams: ISearchParam[] = [];\r\n\r\n// export const MockSearchParams: ISearchParam[] = [\r\n// {\r\n// name: 'ssr',\r\n// title: 'Stedsnavn',\r\n// hasurl: 'false'\r\n// },\r\n// {\r\n// name: 'matr',\r\n// title: 'Matrikkel',\r\n// hasurl: 'false'\r\n// },\r\n// {\r\n// name: 'gi',\r\n// title: 'Planidentifikasjon',\r\n// hasurl: 'false'\r\n// },\r\n// {\r\n// name: 'giname',\r\n// title: 'Plannavn',\r\n// hasurl: 'false'\r\n// }\r\n// ];\r\n","import { Injectable } from '@angular/core';\r\nimport { MockData } from './mock-config';\r\nimport { of } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TestAdminService {\r\n constructor() {\r\n // empty\r\n }\r\n\r\n layersData$ = of(MockData);\r\n selectedLayersList = [];\r\n\r\n updateSelectedLayersList(data: any) {\r\n this.selectedLayersList = data;\r\n }\r\n}\r\n","import {\r\n style,\r\n animate,\r\n transition,\r\n query,\r\n stagger,\r\n} from '@angular/animations';\r\n\r\nexport function fadeIn(selector: string, duration = '400ms ease-out') {\r\n return [\r\n transition('* => *', [\r\n query(\r\n selector,\r\n [\r\n style({ opacity: 0, transform: 'translateY(-5px)' }),\r\n stagger('50ms', [\r\n animate(\r\n duration,\r\n style({\r\n opacity: 1,\r\n transform: 'translateY(0px)',\r\n })\r\n ),\r\n ]),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ];\r\n}\r\n\r\nexport function fadeOut(selector = ':leave', duration = 300) {\r\n return [\r\n transition('* => *', [\r\n query(\r\n selector,\r\n [\r\n style({ opacity: 1 }),\r\n stagger('50ms', [\r\n animate(\r\n duration,\r\n style({\r\n opacity: 0,\r\n })\r\n ),\r\n ]),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ];\r\n}\r\n","import {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n keyframes,\r\n query,\r\n stagger,\r\n} from '@angular/animations';\r\n\r\nexport const pageAnimation = trigger('pageAnimation', [\r\n transition(':enter', [\r\n query(\r\n '.page-animations > div',\r\n [\r\n style({ transform: 'translateY(100px)', opacity: 0 }),\r\n stagger(50, [\r\n animate('500ms ease-out', style({ transform: 'none', opacity: '*' })),\r\n ]),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n]);\r\n\r\nexport const slideAnimation = trigger('slideAnimation', [\r\n transition(':enter', [\r\n query(\r\n '.slide-animations > div',\r\n [\r\n style({ transform: 'translateX(500px)', opacity: 0 }),\r\n stagger(50, [\r\n animate('500ms ease-out', style({ transform: 'none', opacity: '*' })),\r\n ]),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n]);\r\n\r\nexport const slideAnimationLeft = trigger('slideAnimationLeft', [\r\n transition(':enter', [\r\n query(\r\n '.slide-animations > div',\r\n [\r\n style({ transform: 'translateX(-500px)', opacity: 0 }),\r\n stagger(50, [\r\n animate('500ms ease-out', style({ transform: 'none', opacity: '*' })),\r\n ]),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n]);\r\n\r\nexport const overlayAnimation = trigger('overlayAnimation', [\r\n transition(':enter', [\r\n // :enter is alias to 'void => *'\r\n style({ opacity: 0 }),\r\n animate('500ms ease-in-out', style({ opacity: 1 })),\r\n ]),\r\n transition(':leave', [\r\n // :leave is alias to '* => void'\r\n style({ opacity: 1 }),\r\n animate('500ms ease-in-out', style({ opacity: 0 })),\r\n ]),\r\n]);\r\n\r\nexport const expandBox = trigger('expandBox', [\r\n state(\r\n 'closeLeft',\r\n style({\r\n opacity: 0,\r\n display: 'none',\r\n })\r\n ),\r\n state(\r\n 'closeRight',\r\n style({\r\n opacity: 0,\r\n display: 'none',\r\n })\r\n ),\r\n state(\r\n 'openLeft',\r\n style({\r\n opacity: 1,\r\n })\r\n ),\r\n state(\r\n 'openRight',\r\n style({\r\n opacity: 1,\r\n })\r\n ),\r\n transition('* => openLeft', [\r\n style({ display: 'flex' }),\r\n animate(\r\n 300,\r\n keyframes([\r\n style({ opacity: 0, transform: 'translateX(-150%)', offset: 0 }),\r\n style({ opacity: 0, transform: 'translateX(-30px)', offset: 0.4 }),\r\n style({ opacity: 1, transform: 'translateX(0%)', offset: 1 }),\r\n ])\r\n ),\r\n ]),\r\n transition('openLeft => *', [\r\n animate(\r\n 300,\r\n keyframes([\r\n style({ opacity: 1, transform: 'translateX(0%)', offset: 0 }),\r\n style({ opacity: 0, transform: 'translateX(-30px)', offset: 0.5 }),\r\n style({ opacity: 0, transform: 'translateX(-150%)', offset: 1 }),\r\n ])\r\n ),\r\n ]),\r\n transition('* => openRight', [\r\n style({ display: 'flex' }),\r\n animate(\r\n 300,\r\n keyframes([\r\n style({ opacity: 0, transform: 'translateX(100%)', offset: 0 }),\r\n style({ opacity: 0, transform: 'translateX(60px)', offset: 0.4 }),\r\n style({ opacity: 1, transform: 'translateX(0%)', offset: 1 }),\r\n ])\r\n ),\r\n ]),\r\n transition('openRight => *', [\r\n animate(\r\n 300,\r\n keyframes([\r\n style({ opacity: 1, transform: 'translateX(0%)', offset: 0 }),\r\n style({ opacity: 0, transform: 'translateX(60px)', offset: 0.5 }),\r\n style({ opacity: 0, transform: 'translateX(100%)', offset: 1 }),\r\n ])\r\n ),\r\n ]),\r\n]);\r\n","import * as fastXml from 'fast-xml-parser';\r\n\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport {\r\n DomainFeatureResponse,\r\n DomainSubLayerSOURCES,\r\n IDomainLayer,\r\n IFeatureInfoWmsData,\r\n} from '@isygis/isy-configs';\r\nimport { catchError, map, tap } from 'rxjs/operators';\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyAppFeatureInfoService {\r\n private wmsLayerCountAction = new BehaviorSubject(undefined);\r\n private showFeatureInfoSpinnerAction = new BehaviorSubject(false);\r\n wmsLayerCounter$ = this.wmsLayerCountAction.asObservable();\r\n showFeatureInfoSpinner$ = this.showFeatureInfoSpinnerAction.asObservable();\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n ) {}\r\n\r\n handleFeatureInfoWms(data: IFeatureInfoWmsData): Observable {\r\n this.setFeatureInfoSpinner(true);\r\n return this.httpClient.get(data.url, { responseType: 'text' }).pipe(\r\n map((result) => {\r\n this.setWmsLayerCount(this.getWmsLayerCount() - 1);\r\n return this._parseResult(result, data);\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this)),\r\n tap({\r\n next: () => {\r\n // Log the result (if needed)\r\n //console.log('handleFeatureInfoWms: ', result);\r\n },\r\n error: (error) => {\r\n console.error('handleFeatureInfoWms: ', error);\r\n },\r\n finalize: () => {\r\n this.setFeatureInfoSpinner(false);\r\n }\r\n })\r\n );\r\n }\r\n setFeatureInfoSpinner(value: boolean): void {\r\n this.showFeatureInfoSpinnerAction.next(value);\r\n }\r\n\r\n _parseResult(result: string, data: IFeatureInfoWmsData) {\r\n if (!result) {\r\n throw new Error('No response');\r\n }\r\n let parsedResult: DomainFeatureResponse[];\r\n const xml = ' 0 &&\r\n resultAsJson[0].layername &&\r\n resultAsJson[0].rows\r\n ) {\r\n parsedResult = this._parseLayerRowsJson(resultAsJson);\r\n return this._handleGetInfoResponse(data.layer, parsedResult, undefined);\r\n } else if (\r\n typeof resultAsJson === 'object' &&\r\n resultAsJson.features &&\r\n resultAsJson.features.length &&\r\n resultAsJson.features[0].properties\r\n ) {\r\n parsedResult = this._parseFeatureCollectionJson(resultAsJson);\r\n return this._handleGetInfoResponse(data.layer, parsedResult, undefined);\r\n } else {\r\n return this._handleGetInfoResponse(data.layer, resultAsJson, undefined);\r\n }\r\n } catch {\r\n // Not JSON, carry on..\r\n }\r\n\r\n if (result.toLowerCase().indexOf(msGMLOutput) > -1) {\r\n parsedResult = this._parseAsGml(result);\r\n } else if (result.toLowerCase().indexOf(xml) === 0) {\r\n parsedResult = this._parseAsXml(result);\r\n } else if (result.toLowerCase().indexOf(textPlain) > -1) {\r\n console.log('Text/Plain detected');\r\n parsedResult = this._parseAsTextPlain(result);\r\n } else if (result.toLowerCase().indexOf(html) > -1) {\r\n console.log('Parse as html not supported!');\r\n return null;\r\n } else {\r\n console.warn('Could not parse feature info.', result);\r\n return null; // Should be empty collection\r\n }\r\n\r\n if (parsedResult === null) {\r\n console.warn('Could not parse feature info.', result);\r\n return null; // Should be empty collection\r\n }\r\n\r\n return this._handleGetInfoResponse(data.layer, parsedResult, undefined);\r\n }\r\n _parseFeatureCollectionJson(resultAsJson) {\r\n const responseFeatureCollection = [];\r\n resultAsJson.features.forEach((feature) => {\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.properties = feature.properties;\r\n responseFeature.properties.layername = feature.layername;\r\n responseFeatureCollection.push(responseFeature);\r\n });\r\n return responseFeatureCollection;\r\n }\r\n\r\n _parseLayerRowsJson(resultAsJson: any[]) {\r\n const responseFeatureCollection = [];\r\n resultAsJson.forEach((layer) => {\r\n layer.rows.forEach((row) => {\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.properties = row;\r\n responseFeature.properties.layername = layer.layername;\r\n responseFeatureCollection.push(responseFeature);\r\n });\r\n });\r\n return responseFeatureCollection;\r\n }\r\n\r\n _parseAsTextPlain(result: string) {\r\n const responseFeatureCollection = [];\r\n const layers = result.split('\\n\\n');\r\n layers.forEach((layer) => {\r\n if (layer.startsWith('Layer')) {\r\n const layerNameNameMatch = layer.match(/Layer '(.*?)'/);\r\n if (layerNameNameMatch && layerNameNameMatch.length >= 2) {\r\n const layerName = layerNameNameMatch[1];\r\n const features = layer.split('Feature');\r\n for (let i = 1; i < features.length; i++) {\r\n const feature = features[i];\r\n const properties = feature.split('\\n');\r\n const propObj = {};\r\n for (let j = 1; j < properties.length; j++) {\r\n const prop = properties[j];\r\n const keyValue = prop.match(/\\s+(\\w+) = '(.*?)'/);\r\n if (keyValue && keyValue.length > 2) {\r\n const key = keyValue[1];\r\n const value = keyValue[2];\r\n propObj[key] = value;\r\n } else {\r\n console.warn('Unable to parse ', prop);\r\n }\r\n }\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.properties = propObj;\r\n responseFeature.properties.layername = layerName;\r\n responseFeatureCollection.push(responseFeature);\r\n }\r\n }\r\n }\r\n });\r\n return responseFeatureCollection;\r\n }\r\n _parseFeatureInfos(result: string) {\r\n const responseFeatureCollection = [];\r\n const xmlresult = fastXml.parse(result, { ignoreAttributes: false });\r\n if (xmlresult.FeatureInfos) {\r\n const featureInfos = xmlresult.FeatureInfos;\r\n if (featureInfos.FeatureInfo instanceof Array) {\r\n for (let i = 0; i < featureInfos.FeatureInfo.length; i++) {\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.properties = featureInfos.FeatureInfo[\r\n i\r\n ].Attribute.map((a) => [\r\n a['@_title'],\r\n a['@_valueTitle'] || a['@_value'],\r\n ]).reduce((obj, item) => ({ ...obj, [item[0]]: item[1] }), []);\r\n responseFeatureCollection.push(responseFeature);\r\n }\r\n } else {\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.properties = featureInfos.FeatureInfo.Attribute.map(\r\n (a) => [a['@_title'], a['@_valueTitle'] || a['@_value']]\r\n ).reduce((obj, item) => ({ ...obj, [item[0]]: item[1] }), []);\r\n responseFeatureCollection.push(responseFeature);\r\n }\r\n }\r\n\r\n return responseFeatureCollection;\r\n }\r\n\r\n _parseAsXml(result: string) {\r\n const responseFeatureCollection = [];\r\n\r\n result = result.replace(/:/g, ''); // Remove colon to prevent xml errors\r\n // const resultLc = result.replace(/(FEATUREINFORESPONSE|FIELDS)/ig, RegExp.$1.toLowerCase()); // lowercase match-tag name\r\n result = result.replace(/FEATUREINFORESPONSE/gi, 'featureinforesponse'); // lowercase match-tag name\r\n result = result.replace(/FIELDS/gi, 'fields'); // lowercase match-tag name\r\n\r\n if (\r\n !result.includes('featureinforesponse') &&\r\n result.includes('FeatureInfos')\r\n ) {\r\n return this._parseFeatureInfos(result);\r\n }\r\n\r\n const xmlresult = fastXml.parse(result, { ignoreAttributes: false });\r\n if (xmlresult.featureinforesponse) {\r\n const response = xmlresult.featureinforesponse;\r\n if (response.fields) {\r\n const fields = response.fields;\r\n if (fields instanceof Array) {\r\n for (const field of fields) {\r\n if (field['$']) {\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.properties = field['$'];\r\n responseFeatureCollection.push(responseFeature);\r\n } else if (field instanceof Object) {\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.properties = {};\r\n if (\r\n Object.keys(field)[0] &&\r\n Object.keys(field)[0].indexOf('@_') === 0\r\n ) {\r\n // Strip @_ - grums from properties\r\n Object.keys(field).forEach((j) => {\r\n const n = j.substring(2);\r\n responseFeature.properties[n] = field[j];\r\n });\r\n } else {\r\n responseFeature.properties = field;\r\n }\r\n responseFeatureCollection.push(responseFeature);\r\n }\r\n }\r\n } else if (fields instanceof Object) {\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.properties = {};\r\n if (\r\n Object.keys(fields)[0] &&\r\n Object.keys(fields)[0].indexOf('@_') === 0\r\n ) {\r\n // Strip @_ - grums from properties\r\n Object.keys(fields).forEach((i) => {\r\n const n = i.substring(2);\r\n responseFeature.properties[n] = fields[i];\r\n });\r\n } else {\r\n responseFeature.properties = fields;\r\n }\r\n responseFeatureCollection.push(responseFeature);\r\n }\r\n }\r\n }\r\n\r\n return responseFeatureCollection;\r\n }\r\n\r\n // ParseGML\r\n _parseAsGml(result: string) {\r\n const responseFeatureCollection = [];\r\n result = result.replace(/:gml/g, '');\r\n result = result.replace(/gml:/g, 'gml_');\r\n result = result.replace(/s:x/g, 'sx');\r\n\r\n const jsonFeatures = fastXml.parse(result);\r\n const rootObject = jsonFeatures[Object.keys(jsonFeatures)[0]];\r\n for (const i of Object.keys(rootObject)) {\r\n const testObject = rootObject[i];\r\n\r\n if (testObject instanceof Object) {\r\n const layerName = testObject['gml_name'] || '';\r\n for (const j of Object.keys(testObject)) {\r\n const testArray = testObject[j];\r\n if (testArray instanceof Array) {\r\n for (const k of testArray) {\r\n responseFeatureCollection.push(\r\n this.makeResponseFeature(k, layerName)\r\n );\r\n }\r\n } else if (typeof testArray === 'object') {\r\n responseFeatureCollection.push(\r\n this.makeResponseFeature(testArray, layerName)\r\n );\r\n }\r\n }\r\n }\r\n }\r\n return responseFeatureCollection;\r\n }\r\n\r\n private makeResponseFeature(\r\n properties: any,\r\n layerName: string\r\n ): DomainFeatureResponse {\r\n for (const p of Object.keys(properties)) {\r\n if (properties[p] instanceof Object) {\r\n // remove object properties, since they would not look nice in the view.\r\n delete properties[p];\r\n }\r\n }\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.properties = properties;\r\n responseFeature.properties.layername = layerName;\r\n return responseFeature;\r\n }\r\n\r\n _handleGetInfoResponse(subLayer, parsedResult, exception) {\r\n let isWms = false;\r\n if (\r\n subLayer.source === DomainSubLayerSOURCES.proxyWms ||\r\n subLayer.source === DomainSubLayerSOURCES.proxyWmts ||\r\n subLayer.source === DomainSubLayerSOURCES.wms ||\r\n subLayer.source === DomainSubLayerSOURCES.wmts\r\n ) {\r\n isWms = true;\r\n }\r\n\r\n const responseFeatureCollection: IDomainLayer = {\r\n id: subLayer.id,\r\n name: subLayer.providerName,\r\n isLoading: false,\r\n wms: isWms,\r\n features: parsedResult,\r\n exception: exception,\r\n featureInfoTitle:\r\n subLayer.featureInfoTitle || subLayer.title || 'egenskaper',\r\n featureInfoElement: subLayer.featureInfoElement,\r\n showDialog: subLayer.showDialog,\r\n showneighborlist: subLayer.showneighborlist,\r\n advancedfilter: subLayer.advancedfilter,\r\n openNewWindow: subLayer.openNewWindow,\r\n metadataServices: subLayer.metadataservices,\r\n metadataurl: subLayer.metadataurl,\r\n openParentWindow: subLayer.openParentWindow,\r\n windowWidth: subLayer.windowWidth,\r\n editable: subLayer.editable,\r\n showpopupwithdata: subLayer.showpopupwithdata,\r\n showpopuplibrary: subLayer.showpopuplibrary,\r\n popupwithdatatitle: subLayer.popupwithdatatitle,\r\n isOpen: false,\r\n url: subLayer.url,\r\n coordinate_system: subLayer.coordinate_system,\r\n featureNS: subLayer.featureNS,\r\n layertype: subLayer.layertype,\r\n geometrytype: subLayer.geometrytype,\r\n sendusername: subLayer.sendusername,\r\n useexternaluri: subLayer.useexternaluri,\r\n };\r\n\r\n return responseFeatureCollection;\r\n }\r\n\r\n setWmsLayerCount(value: number): void {\r\n // console.log('setWmsLayerCount:', value);\r\n this.wmsLayerCountAction.next(value);\r\n }\r\n getWmsLayerCount(): number {\r\n return this.wmsLayerCountAction.getValue();\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.statusText}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n return Promise.resolve();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map, catchError, tap } from 'rxjs/operators';\r\nimport { BehaviorSubject, Observable, forkJoin, throwError } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyAppMatrikkelService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n private instance = '';\r\n private url = '';\r\n private srs = '';\r\n private token = '';\r\n\r\n private initAction = new BehaviorSubject(undefined);\r\n initAction$ = this.initAction.asObservable();\r\n\r\n init(url, instance, srs, token): void {\r\n this.url = url;\r\n this.instance = instance;\r\n this.srs = srs;\r\n this.token = token;\r\n }\r\n\r\n ownersFromPolygon(coords, visadresser, geometryType): Observable {\r\n if (geometryType === 'MultiPolygon') {\r\n // If geometryType is MultiPolygon, coords is an array of polygons\r\n // Make a separate request for each polygon and wait for all of them to complete\r\n const requests = coords.map(polygonCoords =>\r\n this.makeRequestFindMatrikkelenheterForPolygon(polygonCoords, visadresser)\r\n );\r\n return forkJoin(requests).pipe(\r\n map((results: any[]) => {\r\n const feilValues = results.map(result => result.Feil).filter(feil => feil !== null);\r\n return {\r\n Feil: feilValues.length > 0 ? feilValues : null,\r\n Matrikkelenheter: results.reduce((acc, result) => acc.concat(result.Matrikkelenheter), [])\r\n };\r\n }),\r\n // tap(results => console.log(results)),\r\n catchError(this.handleError)\r\n );\r\n } else {\r\n // If geometryType is not MultiPolygon, just make a single request\r\n return this.makeRequestFindMatrikkelenheterForPolygon(coords, visadresser).pipe(\r\n catchError(this.handleError)\r\n );\r\n }\r\n }\r\n\r\n private makeRequestFindMatrikkelenheterForPolygon(coords, visadresser): Observable {\r\n return this.httpClient\r\n .post(this.url + '/findMatrikkelenheterForPolygon', {\r\n isytoken: this.token,\r\n instance: this.instance,\r\n Coords: coords,\r\n Srs: this.srs,\r\n visadresser,\r\n })\r\n .pipe(\r\n map(result => result)\r\n );\r\n }\r\n\r\n getNeighbors(knr, gnr, bnr, fnr, snr, visadresser): Observable {\r\n return this.httpClient\r\n .post(this.url + '/getNeighbors', {\r\n isytoken: this.token,\r\n instance: this.instance,\r\n visadresser,\r\n eiendom: {\r\n knr,\r\n gnr,\r\n bnr,\r\n fnr,\r\n snr,\r\n },\r\n })\r\n .pipe(\r\n map((result) => {\r\n return result;\r\n }),\r\n catchError(this.handleError)\r\n // tap( // Log the result or error\r\n // () => {},\r\n // error => console.error(error)\r\n // )\r\n );\r\n }\r\n\r\n getMainProperty(knr, gnr, bnr, fnr, snr, visadresser): Observable {\r\n return this.httpClient\r\n .post(this.url + '/findMatrikkelenhetForIdent', {\r\n isytoken: this.token,\r\n instance: this.instance,\r\n visadresser,\r\n eiendom: {\r\n knr,\r\n gnr,\r\n bnr,\r\n fnr,\r\n snr,\r\n },\r\n })\r\n .pipe(\r\n map((result) => {\r\n return result;\r\n }),\r\n catchError(this.handleError)\r\n // tap( // Log the result or error\r\n // () => {},\r\n // error => console.error(error)\r\n // )\r\n );\r\n }\r\n\r\n getAddressesFromCadastre(knr, gnr, bnr, fnr, snr): Observable {\r\n return this.httpClient\r\n .post(this.url + '/getAddresses', {\r\n isytoken: this.token,\r\n instance: this.instance,\r\n eiendom: {\r\n knr,\r\n gnr,\r\n bnr,\r\n fnr,\r\n snr,\r\n },\r\n })\r\n .pipe(\r\n map((result) => {\r\n return result;\r\n }),\r\n catchError(this.handleError)\r\n // tap( // Log the result or error\r\n // () => {},\r\n // error => console.error(error)\r\n // )\r\n );\r\n }\r\n\r\n findMatrikkelenhetForUnikId(\r\n knr,\r\n gnr,\r\n bnr,\r\n fnr,\r\n snr,\r\n unikId,\r\n visadresser\r\n ): Observable {\r\n return this.httpClient\r\n .post(this.url + '/findMatrikkelenhetForUnikId', {\r\n isytoken: this.token,\r\n instance: this.instance,\r\n visadresser,\r\n eiendom: {\r\n knr,\r\n gnr,\r\n bnr,\r\n fnr,\r\n snr,\r\n unikid: unikId,\r\n },\r\n })\r\n .pipe(\r\n map((result) => {\r\n return result;\r\n }),\r\n catchError(this.handleError)\r\n // tap( // Log the result or error\r\n // () => {},\r\n // error => console.error(error)\r\n // )\r\n );\r\n }\r\n\r\n private handleError(err): Observable {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.error(err);\r\n return throwError(errorMessage);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport enum OverlayId {\r\n sideNavOverlayLayer = 'SideNavOverlayLayerComponent',\r\n sideNav = 'SideNavComponent',\r\n mapOverlayLayer = 'MapOverlayLayerComponent',\r\n draggableOverlay = 'DraggableOverlayComponent',\r\n searchBarOverlay = 'SearchBarComponent',\r\n infoPanelOverlay = 'InfoPanelComponent',\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyOverlaysService {\r\n private overlayCache = new Set();\r\n\r\n _register(overlay): void {\r\n this.overlayCache.add(overlay);\r\n }\r\n\r\n show(id: OverlayId): void {\r\n this.toggleOverlay(id, true);\r\n }\r\n\r\n hide(id: OverlayId): void {\r\n this.toggleOverlay(id, false);\r\n }\r\n\r\n private toggleOverlay(id: OverlayId, value: boolean) {\r\n this.overlayCache.forEach((overlay) => {\r\n if (overlay['overlayId'] === id) {\r\n overlay['show'] = value;\r\n }\r\n });\r\n }\r\n\r\n _unregister(id: OverlayId): void {\r\n this.overlayCache.forEach((overlay) => {\r\n if (overlay['overlayId'] === id) {\r\n this.overlayCache.delete(overlay);\r\n }\r\n });\r\n }\r\n\r\n _unregisterAll(): void {\r\n this.overlayCache.clear();\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n catchError,\r\n shareReplay,\r\n timeout,\r\n mergeMap,\r\n} from 'rxjs/operators';\r\nimport { combineLatest, BehaviorSubject } from 'rxjs';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IExternalServices } from '@isygis/isymap-config';\r\n\r\nexport interface IPicklistRequest {\r\n id: string;\r\n property: string;\r\n value: string;\r\n}\r\n\r\nexport interface IPicklistResult {\r\n typenavn: string;\r\n egenskapsnavn: string;\r\n operator: string;\r\n verdi: string;\r\n forklaring: string;\r\n merknad: string;\r\n objektkatalognavn: string;\r\n gruppering: string;\r\n rettet_status: string;\r\n rettet_dato: string;\r\n rettet: string;\r\n utskrift_rekkef: string;\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyPicklistService {\r\n public picklistResult: IPicklistResult[] = [];\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n private picklistAction = new BehaviorSubject(undefined);\r\n picklistResult$ = combineLatest([\r\n this.picklistAction,\r\n this.commonService.externalServices$,\r\n ]).pipe(\r\n mergeMap(\r\n ([request, externalServices]: [IPicklistRequest, IExternalServices]) => {\r\n if (request && externalServices.picklist) {\r\n const picklistBaseUrl =\r\n externalServices.picklist || 'https://geoinnsyn.no/picklist/';\r\n const url = `${picklistBaseUrl}${request.id}?verdi=eq.${request.value}&egenskapsnavn=eq.${request.property}`;\r\n return this.httpClient.get(encodeURI(url)).pipe(\r\n // debounceTime(400),\r\n timeout(2000)\r\n );\r\n }\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n ),\r\n // tap(result => console.log('PicklistResult: ', result)),\r\n shareReplay(1),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n\r\n getPicklistResult(request: IPicklistRequest): void {\r\n this.picklistAction.next(request);\r\n }\r\n\r\n picklistRetrieve(id, prop, val): void {\r\n if (\r\n id === undefined ||\r\n id === null ||\r\n prop === undefined ||\r\n prop === null ||\r\n val === undefined ||\r\n val === null\r\n ) {\r\n return;\r\n }\r\n const exists = this.picklistLookup(id, prop, val);\r\n if (!exists) {\r\n const req: IPicklistRequest = { id, property: prop, value: val };\r\n this.getPicklistResult(req);\r\n }\r\n }\r\n\r\n picklistLookup(id, prop, val): IPicklistResult {\r\n return this.picklistResult.find(\r\n (p) =>\r\n p.egenskapsnavn.toLowerCase() === prop.toLowerCase() &&\r\n p.verdi === val &&\r\n p.objektkatalognavn &&\r\n id &&\r\n p.objektkatalognavn.toLowerCase() === id.toLowerCase()\r\n );\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { IIsyLayer } from '@isygis/isy-configs';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyBaseLayersService } from './isy-base-layers.service';\r\nimport { IsyMapEmitterService, MapLibNgService } from '@isygis/isy-map';\r\nimport { expandBox } from '@isygis/isy-animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\nexport interface IBaseLayer extends IIsyLayer {\r\n baseImageUrl?: Promise;\r\n imageUrlError?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-isy-base-layers',\r\n templateUrl: './isy-base-layers.component.html',\r\n styleUrls: ['./isy-base-layers.component.scss'],\r\n animations: [expandBox],\r\n})\r\nexport class IsyBaseLayersComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n @Input() position = 'right';\r\n\r\n state;\r\n baseLayers;\r\n menuIsPinned = false;\r\n activeBaseLayer$ = this.baseLayersService.activeBaseLayer$;\r\n subscriptions = new Subscription();\r\n baseLayers$ = this.baseLayersService.baseLayers$.pipe(\r\n map((bLayers) => {\r\n this.baseLayers = bLayers;\r\n return this.baseLayers;\r\n })\r\n );\r\n\r\n hideBaseLayersLayout$ = this.commonService.hideBaseLayersLayout$;\r\n\r\n vm$ = combineLatest([\r\n this.baseLayers$,\r\n this.activeBaseLayer$,\r\n this.hideBaseLayersLayout$,\r\n ]).pipe(\r\n map(\r\n ([baseLayers, activeLayer, hideBaseLayersLayout]: [\r\n IBaseLayer[],\r\n IBaseLayer,\r\n boolean\r\n ]) => ({\r\n baseLayers,\r\n activeBaseLayer: activeLayer\r\n ? activeLayer\r\n : baseLayers.find((layer) => layer.isVisible),\r\n hideBaseLayersLayout,\r\n })\r\n )\r\n );\r\n\r\n constructor(\r\n private baseLayersService: IsyBaseLayersService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapLibNgService: MapLibNgService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n private applyState(): void {\r\n switch (this.position) {\r\n case 'right': {\r\n this.state = this.state === 'closeRight' ? 'openRight' : 'closeRight';\r\n break;\r\n }\r\n case 'left': {\r\n this.state = this.state === 'closeLeft' ? 'openLeft' : 'closeLeft';\r\n break;\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.applyState();\r\n this.subscriptions.add(\r\n this.mapEmitterService.mapLoadEmitter$.subscribe(() => {\r\n this.baseLayersService.setBaseLayers(\r\n this.mapLibNgService.map().getBaseLayers()\r\n );\r\n })\r\n );\r\n this.subscriptions.add(\r\n this.mapEmitterService.reInitMapLibNg$.subscribe(() => {\r\n this.baseLayersService.setBaseLayers(\r\n this.mapLibNgService.map().getBaseLayers()\r\n );\r\n })\r\n );\r\n this.subscriptions.add(\r\n this.mapEmitterService.changeLayersEmitter$.subscribe((value) => {\r\n if (value && value.layers) {\r\n const activeBaseLayer = Number(value.layers.split(',')[0]);\r\n if (\r\n activeBaseLayer &&\r\n this.baseLayers &&\r\n activeBaseLayer < 2000 &&\r\n activeBaseLayer > 1000\r\n ) {\r\n const findBaseLayer = this.baseLayers.find(\r\n (b) => b.id === activeBaseLayer\r\n );\r\n if (findBaseLayer) {\r\n this.baseLayersService.setActiveBaseLayer(findBaseLayer);\r\n }\r\n }\r\n }\r\n })\r\n );\r\n this.subscriptions.add(\r\n this.commonService.sideNavPin$.subscribe((value) => {\r\n if (this.position === 'left') {\r\n this.menuIsPinned = value;\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n this.baseLayersService.setBaseLayers();\r\n }\r\n\r\n toggleBaseLayerBox(): void {\r\n this.applyState();\r\n }\r\n\r\n toggleBaseLayer(baseLayer: IIsyLayer): void {\r\n this.baseLayersService.setActiveBaseLayer(baseLayer);\r\n this.toggleBaseLayerBox();\r\n }\r\n\r\n errorLoadImg(baseLayer: IBaseLayer): void {\r\n baseLayer.imageUrlError = true;\r\n console.error('ERROR LOAD IMG', baseLayer);\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"{{baseLayer.name}}\"\r\n \"{{baseLayer.name}}\"\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \"{{vm.activeBaseLayer.name}}\"\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IsyBaseLayersComponent } from './isy-base-layers.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FontAwesomeModule, TooltipModule.forRoot()],\r\n declarations: [IsyBaseLayersComponent],\r\n exports: [IsyBaseLayersComponent],\r\n})\r\nexport class IsyBaseLayersModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { MapLibNgService } from '@isygis/isy-map';\r\nimport { IIsyLayer } from '@isygis/isy-configs';\r\nimport { BehaviorSubject, combineLatest } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyBaseLayersService {\r\n constructor(private mapLibNgService: MapLibNgService) {}\r\n\r\n private activeBaseLayer = new BehaviorSubject(undefined);\r\n activeBaseLayer$ = this.activeBaseLayer.asObservable();\r\n private baseLayers = new BehaviorSubject(undefined);\r\n baseLayers$ = combineLatest([this.baseLayers]).pipe(\r\n map(([baseLayers]: [IIsyLayer[]]) =>\r\n {\r\n if (!baseLayers) return [];\r\n return baseLayers.map((b: IIsyLayer) => {\r\n const imageUrl = this.mapLibNgService.map().getImageUrl(b.id);\r\n return {\r\n ...b,\r\n baseImageUrl: imageUrl,\r\n };\r\n }).sort((layer1, layer2) => {\r\n return layer1.mapLayerIndex - layer2.mapLayerIndex;\r\n });\r\n }\r\n \r\n ),\r\n // tap((baseLayers) => {console.log('BaseLayers', baseLayers)}),\r\n shareReplay(1)\r\n );\r\n\r\n setActiveBaseLayer(activeLayer: IIsyLayer): void {\r\n const activeBaseLayer = this.activeBaseLayer.getValue();\r\n if (\r\n !activeBaseLayer ||\r\n (activeBaseLayer && activeBaseLayer.id !== activeLayer.id)\r\n ) {\r\n this.mapLibNgService.map().setBaseLayer(activeLayer);\r\n this.activeBaseLayer.next(activeLayer);\r\n }\r\n }\r\n\r\n setBaseLayers(baseLayers?: IIsyLayer[]): void {\r\n this.activeBaseLayer.next(undefined);\r\n this.baseLayers.next(baseLayers);\r\n }\r\n}\r\n","import {\r\n trigger,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\n\r\nexport const topEnter = [\r\n style({ transform: 'translateY(-100%)' }),\r\n animate('300ms ease-in', style({ transform: 'translateY(0%)' })),\r\n];\r\n\r\nexport const topLeave = [\r\n animate('300ms ease-in', style({ transform: 'translateY(-100%)' })),\r\n];\r\n\r\nexport const bottomEnter = [\r\n style({ transform: 'translateY(100%)' }),\r\n animate('300ms ease-in', style({ transform: 'translateY(0%)' })),\r\n];\r\n\r\nexport const bottomLeave = [\r\n animate('300ms ease-in', style({ transform: 'translateY(100%)' })),\r\n];\r\n\r\nexport const leftEnter = [\r\n style({ transform: 'translateX(-100%)' }),\r\n animate('300ms ease-in', style({ transform: 'translateX(0%)' })),\r\n];\r\n\r\nexport const leftLeave = [\r\n animate('300ms ease-in', style({ transform: 'translateX(-100%)' })),\r\n];\r\n\r\nexport const rightEnter = [\r\n style({ transform: 'translateX(100%)' }),\r\n animate('300ms ease-in', style({ transform: 'translateX(0%)' })),\r\n];\r\n\r\nexport const rightLeave = [\r\n animate('300ms ease-in', style({ transform: 'translateX(100%)' })),\r\n];\r\n\r\nexport const SlideInOutGeneral = [\r\n trigger('slideInOutGeneral', [\r\n transition('* => topLeave', topEnter),\r\n transition('topLeave => *', topLeave),\r\n transition('* => bottomLeave', bottomEnter),\r\n transition('bottomLeave => *', bottomLeave),\r\n transition('* => rightLeave', rightEnter),\r\n transition('rightLeave => *', rightLeave),\r\n transition('* => leftLeave', leftEnter),\r\n transition('leftLeave => *', leftLeave),\r\n ]),\r\n];\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Directive({\r\n selector: '[libBladeContentSize]',\r\n})\r\nexport class BladeContentSizeDirective implements OnChanges, AfterViewInit {\r\n @Input() expanded;\r\n @Input() name;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(): void {\r\n this.resizeBladeContent();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.resizeBladeContent();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.resizeBladeContent();\r\n }\r\n\r\n private resizeBladeContent(): void {\r\n const blade = document.getElementById(this.name + '-blade');\r\n if (blade === null) {\r\n return;\r\n }\r\n const clientHeight = blade.offsetHeight;\r\n const clientWidth = blade.offsetWidth;\r\n this.el.nativeElement.style.height = clientHeight - 46 + 'px';\r\n this.el.nativeElement.style.width = clientWidth + 'px';\r\n this.commonService.bladeIsResized();\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libBladeHost]',\r\n})\r\nexport class BladeHostDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Directive, HostListener, ElementRef, Input } from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Directive({\r\n selector: '[libBladeResizeBorder]',\r\n})\r\nexport class BladeResizeBorderDirective {\r\n @Input('libBladeResizeBorder') position: string;\r\n @Input() fullScreen: boolean;\r\n @Input() name: string;\r\n @Input() offset: number;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n m_pos = 0;\r\n onResizeBottom;\r\n onResizeLeft;\r\n onResizeRight;\r\n onResizeTop;\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(event): void {\r\n // console.log('MouseDownTest', event.clientX, event.clientY, this.el.nativeElement.style.height, this.el.nativeElement.style.width,\r\n // (parseInt(getComputedStyle(this.el.nativeElement, '').width, 0)), event );\r\n if (this.fullScreen) {\r\n return;\r\n }\r\n if (this.position === 'top') {\r\n if (this.onResizeBottom) {\r\n document.removeEventListener('mousemove', this.onResizeBottom, false);\r\n this.onResizeBottom = undefined;\r\n }\r\n if (\r\n event.clientY >\r\n parseInt(getComputedStyle(this.el.nativeElement, '').height, 0)\r\n ) {\r\n this.m_pos = event.y;\r\n this.onResizeBottom = this.resizeBottom.bind(this);\r\n document.addEventListener('mousemove', this.onResizeBottom, false);\r\n }\r\n }\r\n if (this.position === 'right') {\r\n if (this.onResizeLeft) {\r\n document.removeEventListener('mousemove', this.onResizeLeft, false);\r\n this.onResizeLeft = undefined;\r\n }\r\n if (event.offsetX < 4) {\r\n this.m_pos = event.x;\r\n this.onResizeLeft = this.resizeLeft.bind(this);\r\n document.addEventListener('mousemove', this.onResizeLeft, false);\r\n }\r\n }\r\n if (this.position === 'left') {\r\n if (this.onResizeRight) {\r\n document.removeEventListener('mousemove', this.onResizeRight, false);\r\n this.onResizeRight = undefined;\r\n }\r\n if (\r\n event.clientX >\r\n parseInt(getComputedStyle(this.el.nativeElement, '').width, 0)\r\n ) {\r\n this.m_pos = event.x;\r\n this.onResizeRight = this.resizeRight.bind(this);\r\n document.addEventListener('mousemove', this.onResizeRight, false);\r\n }\r\n }\r\n if (this.position === 'bottom') {\r\n if (this.onResizeTop) {\r\n document.removeEventListener('mousemove', this.onResizeTop, false);\r\n this.onResizeTop = undefined;\r\n }\r\n if (event.offsetY < 4) {\r\n this.m_pos = event.y;\r\n this.onResizeTop = this.resizeTop.bind(this);\r\n document.addEventListener('mousemove', this.onResizeTop, false);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('mouseup', ['$event'])\r\n onMouseUp(): void {\r\n const clientHeight = this.fullScreen ? this.el.nativeElement.clientHeight : this.el.nativeElement.parentNode.parentNode.parentElement.clientHeight;\r\n if (this.position === 'top') {\r\n document.removeEventListener('mousemove', this.onResizeBottom, false);\r\n // console.log('Remove mouse up');\r\n this.onResizeBottom = undefined;\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').height, 0) >\r\n clientHeight -\r\n (this.fullScreen ? 0 : 20) -\r\n (this.fullScreen ? 0 : this.offset)\r\n ) {\r\n this.changeBladeHeight(\r\n clientHeight -\r\n (this.fullScreen ? 0 : 20) -\r\n this.offset\r\n );\r\n }\r\n }\r\n if (this.position === 'right') {\r\n document.removeEventListener('mousemove', this.onResizeLeft, false);\r\n this.onResizeLeft = undefined;\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').width, 0) >\r\n this.el.nativeElement.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n ) {\r\n this.changeBladeWidth(\r\n this.el.nativeElement.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n );\r\n }\r\n }\r\n if (this.position === 'left') {\r\n document.removeEventListener('mousemove', this.onResizeRight, false);\r\n this.onResizeRight = undefined;\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').width, 0) >\r\n this.el.nativeElement.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n ) {\r\n this.changeBladeWidth(\r\n this.el.nativeElement.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n );\r\n }\r\n }\r\n if (this.position === 'bottom') {\r\n document.removeEventListener('mousemove', this.onResizeTop, false);\r\n this.onResizeTop = undefined;\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').height, 0) >\r\n this.el.nativeElement.parentNode.parentElement.clientHeight -\r\n 20 -\r\n this.offset\r\n ) {\r\n this.changeBladeHeight(\r\n this.el.nativeElement.parentNode.parentElement.clientHeight -\r\n 20 -\r\n this.offset\r\n );\r\n }\r\n }\r\n }\r\n\r\n private resizeBottom(e): void {\r\n const dy = this.m_pos - e.y;\r\n this.m_pos = e.y;\r\n this.el.nativeElement.style.height =\r\n parseInt(getComputedStyle(this.el.nativeElement, '').height, 0) -\r\n dy +\r\n 'px';\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').height, 0) >\r\n this.el.nativeElement.parentNode.parentElement.clientHeight -\r\n 20 -\r\n this.offset\r\n ) {\r\n this.changeBladeHeight(\r\n this.el.nativeElement.parentNode.parentElement.clientHeight -\r\n 20 -\r\n this.offset\r\n );\r\n document.removeEventListener('mousemove', this.onResizeBottom, false);\r\n this.onResizeBottom = undefined;\r\n }\r\n this.resizeBladeContent();\r\n }\r\n\r\n private resizeLeft(e): void {\r\n const dx = this.m_pos - e.x;\r\n this.m_pos = e.x;\r\n this.el.nativeElement.style.width =\r\n parseInt(getComputedStyle(this.el.nativeElement, '').width, 0) +\r\n dx +\r\n 'px';\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').width, 0) >\r\n this.el.nativeElement.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n ) {\r\n this.changeBladeWidth(\r\n this.el.nativeElement.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n );\r\n document.removeEventListener('mousemove', this.onResizeLeft, false);\r\n this.onResizeLeft = undefined;\r\n }\r\n this.resizeBladeContent();\r\n }\r\n\r\n private resizeRight(e): void {\r\n const dx = this.m_pos - e.x;\r\n this.m_pos = e.x;\r\n this.el.nativeElement.style.width =\r\n parseInt(getComputedStyle(this.el.nativeElement, '').width, 0) -\r\n dx +\r\n 'px';\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').width, 0) >\r\n this.el.nativeElement.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n ) {\r\n this.changeBladeWidth(\r\n this.el.nativeElement.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n );\r\n document.removeEventListener('mousemove', this.onResizeRight, false);\r\n this.onResizeRight = undefined;\r\n }\r\n this.resizeBladeContent();\r\n }\r\n\r\n private resizeTop(e): void {\r\n const dy = this.m_pos - e.y;\r\n this.m_pos = e.y;\r\n this.el.nativeElement.style.height =\r\n parseInt(getComputedStyle(this.el.nativeElement, '').height, 0) +\r\n dy +\r\n 'px';\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').height, 0) >\r\n this.el.nativeElement.parentNode.parentElement.clientHeight -\r\n 20 -\r\n this.offset\r\n ) {\r\n this.changeBladeHeight(\r\n this.el.nativeElement.parentNode.parentElement.clientHeight -\r\n 20 -\r\n this.offset\r\n );\r\n document.removeEventListener('mousemove', this.onResizeTop, false);\r\n this.onResizeTop = undefined;\r\n }\r\n this.resizeBladeContent();\r\n }\r\n\r\n private changeBladeHeight(height: number): void {\r\n this.el.nativeElement.style.height = height + 'px';\r\n }\r\n\r\n private changeBladeWidth(width: number): void {\r\n this.el.nativeElement.style.width = width + 'px';\r\n }\r\n\r\n private resizeBladeContent(): void {\r\n const bladeContent = document.getElementById(this.name + '-blade-content');\r\n if (bladeContent === null) {\r\n return;\r\n }\r\n bladeContent.style.height =\r\n parseInt(getComputedStyle(this.el.nativeElement, '').height, 0) -\r\n 60 +\r\n 'px';\r\n bladeContent.style.width =\r\n parseInt(getComputedStyle(this.el.nativeElement, '').width, 0) + 'px';\r\n this.commonService.bladeIsResized();\r\n }\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n HostListener,\r\n ElementRef,\r\n OnInit,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Directive({\r\n selector: '[libBladeWindowSize]',\r\n})\r\nexport class BladeWindowSizeDirective implements OnInit, OnChanges {\r\n constructor(\r\n private el: ElementRef,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n @Input('libBladeWindowSize') position: string;\r\n @Input() fullScreen: boolean;\r\n @Input() expanded: boolean;\r\n @Input() offset: number;\r\n @Input() showBladeInBody: boolean;\r\n @HostListener('window:resize', ['$event']) \r\n onResize(): void {\r\n this.commonService.bladeIsResized();\r\n if (this.fullScreen) {\r\n this.changeStyleToFullScreen();\r\n } else {\r\n this.updateBladeStyle(false);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.fullScreen) {\r\n this.changeStyleToFullScreen();\r\n } else {\r\n this.updateBladeStyle(true); \r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n if (!this.fullScreen) {\r\n let clientHeight =\r\n this.el.nativeElement.parentNode.parentNode.parentElement.clientHeight; //document.documentElement.clientHeight;\r\n let clientWidth =\r\n this.el.nativeElement.parentNode.parentNode.parentElement.clientWidth; //document.documentElement.clientWidth;\r\n if (clientHeight === 0) {\r\n clientHeight = document.documentElement.clientHeight;\r\n }\r\n if (clientWidth === 0) {\r\n clientWidth = document.documentElement.clientWidth;\r\n }\r\n if (this.expanded) {\r\n switch (this.position) {\r\n case 'top':\r\n case 'bottom': {\r\n this.changeBladeHeight(clientHeight - 20 - this.offset);\r\n break;\r\n }\r\n case 'left':\r\n case 'right': {\r\n this.changeBladeWidth(clientWidth - 20 - this.offset);\r\n break;\r\n }\r\n }\r\n } else {\r\n switch (this.position) {\r\n case 'top':\r\n case 'bottom': {\r\n this.changeBladeHeight(clientHeight * 0.5 - (20 - this.offset));\r\n break;\r\n }\r\n case 'left':\r\n case 'right': {\r\n this.changeBladeWidth(0);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private changeStyleToFullScreen(): void {\r\n let clientHeight;\r\n let clientWidth;\r\n if (!this.showBladeInBody) {\r\n clientHeight =\r\n this.el.nativeElement.parentNode.parentElement.clientHeight;\r\n clientWidth =\r\n this.el.nativeElement.parentNode.parentElement.clientWidth;\r\n if (clientHeight === 0) {\r\n clientHeight = document.documentElement.clientHeight;\r\n }\r\n if (clientWidth === 0) {\r\n clientWidth = document.documentElement.clientWidth;\r\n }\r\n } else {\r\n clientHeight =\r\n this.el.nativeElement.parentNode.parentNode.parentElement.clientHeight === 0 ? this.el.nativeElement.parentNode.parentElement.clientHeight : this.el.nativeElement.parentNode.parentNode.parentElement.clientHeight;\r\n clientWidth =\r\n this.el.nativeElement.parentNode.parentNode.parentElement.clientWidth === 0 ? this.el.nativeElement.parentNode.parentElement.clientWidth : this.el.nativeElement.parentNode.parentNode.parentElement.clientWidth;\r\n }\r\n\r\n this.changeBladeHeight(clientHeight - 20 - this.offset);\r\n this.changeBladeWidth(clientWidth - 20 - this.offset);\r\n }\r\n\r\n private updateBladeStyle(updateNative: boolean): void { \r\n let clientHeight = updateNative ? this.el.nativeElement.clientHeight + 20 : this.el.nativeElement.parentNode.parentNode.parentElement.clientHeight === 0 ? this.el.nativeElement.parentNode.parentElement.clientHeight : this.el.nativeElement.parentNode.parentNode.parentElement.clientHeight; //document.documentElement.clientHeight;\r\n let clientWidth = updateNative ? this.el.nativeElement.clientWidth : this.el.nativeElement.parentNode.parentElement.clientWidth; //document.documentElement.clientWidth;\r\n if (clientHeight === 0) {\r\n clientHeight = this.el.nativeElement.clientHeight;\r\n } \r\n if (clientWidth === 0) {\r\n clientWidth = document.documentElement.clientWidth;\r\n }\r\n switch (this.position) {\r\n case 'left':\r\n case 'right': {\r\n this.changeBladeHeight(clientHeight - 20 - this.offset);\r\n if (this.expanded) {\r\n this.changeBladeWidth(clientWidth - 20 - this.offset);\r\n } else {\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').width, 0) >\r\n this.el.nativeElement.parentNode.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n ) {\r\n this.changeBladeWidth(\r\n this.el.nativeElement.parentNode.parentNode.parentElement.clientWidth -\r\n 20 -\r\n this.offset\r\n );\r\n }\r\n }\r\n break;\r\n }\r\n case 'top':\r\n case 'bottom': {\r\n this.changeBladeWidth(clientWidth - 20 - this.offset);\r\n if (this.expanded) { \r\n this.changeBladeHeight(clientHeight - 20 - this.offset);\r\n } else {\r\n if (\r\n parseInt(getComputedStyle(this.el.nativeElement, '').height, 0) >\r\n clientHeight -\r\n 20 -\r\n this.offset\r\n ) {\r\n this.changeBladeHeight(clientHeight - 20 - this.offset);\r\n }\r\n }\r\n \r\n break;\r\n }\r\n } \r\n }\r\n\r\n private changeBladeHeight(height: number): void {\r\n this.el.nativeElement.style.height = height + 'px';\r\n if (this.position === 'top') {\r\n this.el.nativeElement.style.top = this.offset / 2 + 'px';\r\n this.el.nativeElement.style.right = this.offset / 2 + 'px';\r\n }\r\n if (this.position === 'bottom') {\r\n this.el.nativeElement.style.bottom = this.offset / 2 + 'px';\r\n this.el.nativeElement.style.right = this.offset / 2 + 'px';\r\n }\r\n }\r\n\r\n private changeBladeWidth(width: number): void {\r\n this.el.nativeElement.style.width = width + 'px';\r\n if (this.position === 'right') {\r\n this.el.nativeElement.style.top = this.offset / 2 + 'px';\r\n this.el.nativeElement.style.right = this.offset / 2 + 'px';\r\n }\r\n if (this.position === 'left') {\r\n this.el.nativeElement.style.top = this.offset / 2 + 'px';\r\n this.el.nativeElement.style.left = this.offset / 2 + 'px';\r\n }\r\n }\r\n}\r\n","import { Type } from '@angular/core';\r\n\r\nexport class BladeItem {\r\n constructor(public component: Type, public data: any) {}\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\n\r\nimport { IsyBladeService } from './isy-blade.service';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { SlideInOutGeneral } from './animations';\r\nimport { Subscription } from 'rxjs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { BladeHeader } from '@isygis/isy-configs';\r\n\r\n@Component({\r\n selector: 'lib-isy-blade',\r\n templateUrl: 'isy-blade.component.html',\r\n styleUrls: ['isy-blade.component.scss'],\r\n animations: [SlideInOutGeneral],\r\n})\r\nexport class IsyBladeComponent implements OnInit, OnDestroy {\r\n animationState;\r\n subscriptions: Subscription = new Subscription();\r\n isShowing = false;\r\n bladeIsMinify = false;\r\n positionMinifyBtn;\r\n helpIsOpen = false;\r\n\r\n @Input() temporaryHide = false;\r\n\r\n @Input() name: string;\r\n @Input() position = 'top';\r\n @Input() showCloseBtn = true;\r\n @Input() showMinifyBtn = true;\r\n @Input() fullScreen = false;\r\n @Input() showHeader = false;\r\n @Input() showBladeOverlay = false;\r\n @Input() offset = 0;\r\n @Input() bladeHeader: BladeHeader = {\r\n showCloseBtn: true,\r\n };\r\n @Input() expanded = false;\r\n @Input() showBladeInBody = false;\r\n // @Input() threeQuarterHeight = false;\r\n @Input() set show(val: boolean) {\r\n this.isShowing = val;\r\n switch (this.position) {\r\n case 'top': {\r\n this.animationState = this.isShowing ? 'topLeave' : 'topEnter';\r\n break;\r\n }\r\n case 'bottom': {\r\n this.animationState = this.isShowing ? 'bottomLeave' : 'bottomEnter';\r\n break;\r\n }\r\n case 'right': {\r\n this.animationState = this.isShowing ? 'rightLeave' : 'rightEnter';\r\n break;\r\n }\r\n case 'left': {\r\n this.animationState = this.isShowing ? 'leftLeave' : 'leftEnter';\r\n break;\r\n }\r\n default: {\r\n this.animationState = this.isShowing ? 'topLeave' : 'topEnter';\r\n break;\r\n }\r\n }\r\n this.showChange.emit(this.isShowing);\r\n }\r\n get show(): boolean {\r\n return this.isShowing;\r\n }\r\n @Output() showChange = new EventEmitter();\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (!this.name) {\r\n throw new Error('Blade must have a \"name\" attribute.');\r\n }\r\n this.bladeService._register(this);\r\n this.subscriptions.add(\r\n this.commonService.showBladeByName$.subscribe((name) => {\r\n if (name) {\r\n this.bladeService.show(name);\r\n }\r\n })\r\n );\r\n this.subscriptions.add(\r\n this.commonService.hideBladeByName$.subscribe((name) => {\r\n if (name) {\r\n this.bladeService.hide(name);\r\n }\r\n })\r\n );\r\n\r\n this.subscriptions.add(\r\n this.commonService.helpId$.subscribe((id) => {\r\n if (id === undefined) {\r\n this.helpIsOpen = false;\r\n }\r\n })\r\n );\r\n }\r\n\r\n hideBlade(): void {\r\n this.commonService.hideBladeByName(this.name);\r\n this.commonService.setHelpId(undefined);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n this.commonService.hideBladeByName(undefined);\r\n this.commonService.showBladeByName(undefined);\r\n this.bladeService._unregister(this);\r\n }\r\n\r\n expand(): void {\r\n this.expanded = true;\r\n }\r\n\r\n compress(): void {\r\n this.expanded = false;\r\n }\r\n\r\n hideAndMinifyBlade(): void {\r\n this.animationState = 'rightEnter';\r\n this.bladeIsMinify = true;\r\n }\r\n\r\n showMinifyBlade(): void {\r\n this.animationState = 'rightLeave';\r\n this.bladeIsMinify = false;\r\n }\r\n\r\n showHelp(): void {\r\n this.helpIsOpen = !this.helpIsOpen;\r\n this.commonService.setHelpId(this.helpIsOpen ? this.name : undefined);\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{bladeHeader.headerTitle | translate }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyBladeComponent } from './isy-blade.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { BladeWindowSizeDirective } from './blade-window-size.directive';\r\nimport { IsyBladeService } from './isy-blade.service';\r\nimport { BladeHostDirective } from './blade-host.directive';\r\nimport { IsyDynamicBladeComponent } from './isy-dynamic-blade.component';\r\nimport { BladeResizeBorderDirective } from './blade-resize-border.directive';\r\nimport { BladeContentSizeDirective } from './blade-content-size.directive';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FontAwesomeModule, IsyTranslateModule],\r\n declarations: [\r\n IsyBladeComponent,\r\n IsyDynamicBladeComponent,\r\n BladeWindowSizeDirective,\r\n BladeHostDirective,\r\n BladeResizeBorderDirective,\r\n BladeContentSizeDirective,\r\n ],\r\n exports: [IsyBladeComponent],\r\n})\r\nexport class IsyBladeModule {\r\n public static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: IsyBladeModule,\r\n providers: [IsyBladeService],\r\n };\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n ComponentRef,\r\n Injectable,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\n\r\nimport { BladeItem } from './bladeItem';\r\nimport { IsyBladeComponent } from './isy-blade.component';\r\nimport { IsyDynamicBladeComponent } from './isy-dynamic-blade.component';\r\nimport { BladeOptions } from '@isygis/isy-configs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyBladeService {\r\n private bladeCache = new Set();\r\n private dynamicBladeCache = new Set>();\r\n private _rootViewContainerRef: ViewContainerRef;\r\n constructor(\r\n // private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef\r\n ) {}\r\n\r\n setRootViewContainerRef(vRef: ViewContainerRef): void {\r\n this._rootViewContainerRef = vRef;\r\n }\r\n\r\n private init(name: string): void {\r\n if (!this._rootViewContainerRef) {\r\n try {\r\n this._rootViewContainerRef =\r\n this.appRef['_rootComponents'][0]['_hostElement'].vcRef;\r\n } catch (e) {\r\n console.error(\r\n 'Please set root ViewContainerRef using setRootViewContainerRef(vRef: ViewContainerRef) method.'\r\n );\r\n return;\r\n }\r\n }\r\n // const providers = ReflectiveInjector.resolve([]);\r\n // const bladeFactory = this.componentFactoryResolver.resolveComponentFactory(IsyDynamicBladeComponent);\r\n // const childInjector = ReflectiveInjector.fromResolvedProviders(providers, this._rootViewContainerRef.parentInjector);\r\n // const container = this._rootViewContainerRef.createComponent(bladeFactory, this._rootViewContainerRef.length, childInjector);\r\n const container = this._rootViewContainerRef.createComponent(\r\n IsyDynamicBladeComponent,\r\n {\r\n index: this._rootViewContainerRef.length,\r\n injector: this._rootViewContainerRef.injector,\r\n }\r\n );\r\n container.instance.name = name;\r\n this._registerDynamic(container);\r\n }\r\n\r\n _register(blade: IsyBladeComponent): void {\r\n this.bladeCache.add(blade);\r\n }\r\n\r\n _registerDynamic(blade: ComponentRef): void {\r\n this.dynamicBladeCache.add(blade);\r\n }\r\n\r\n _unregister(bladeToRemove: IsyBladeComponent): void {\r\n this.bladeCache.forEach((blade) => {\r\n if (blade.name === bladeToRemove.name) {\r\n this.bladeCache.delete(blade);\r\n }\r\n });\r\n }\r\n\r\n show(bladeName: string): void {\r\n this.bladeCache.forEach((blade) => {\r\n if (blade.name === bladeName) {\r\n blade.show = true;\r\n }\r\n });\r\n }\r\n\r\n private showDynamic(bladeName: string): void {\r\n this.dynamicBladeCache.forEach((blade) => {\r\n if (blade.instance.name === bladeName) {\r\n blade.instance.show = true;\r\n }\r\n });\r\n }\r\n\r\n showBladeWithComponent(\r\n bladeName: string,\r\n component: Type,\r\n data?: any,\r\n options?: BladeOptions\r\n ): void {\r\n let bladeExist = false;\r\n this.dynamicBladeCache.forEach((blade) => {\r\n if (blade.instance.name === bladeName) {\r\n this.addComponent(bladeName, component, data, options);\r\n this.showDynamic(bladeName);\r\n bladeExist = true;\r\n }\r\n });\r\n if (!bladeExist) {\r\n this.init(bladeName);\r\n setTimeout(() => {\r\n this.addComponent(bladeName, component, data, options);\r\n }, 100);\r\n setTimeout(() => {\r\n this.showDynamic(bladeName);\r\n }, 200);\r\n }\r\n }\r\n\r\n hide(bladeName: string): void {\r\n this.bladeCache.forEach((blade) => {\r\n if (blade.name === bladeName) {\r\n blade.show = false;\r\n }\r\n });\r\n\r\n this.dynamicBladeCache.forEach((blade) => {\r\n if (blade.instance.name === bladeName) {\r\n blade.instance.show = false;\r\n }\r\n });\r\n }\r\n\r\n temporaryHide(bladeName: string, value: boolean): void {\r\n this.bladeCache.forEach((blade) => {\r\n if (blade.name === bladeName) {\r\n blade.temporaryHide = value;\r\n }\r\n });\r\n\r\n this.dynamicBladeCache.forEach((blade) => {\r\n if (blade.instance.name === bladeName) {\r\n blade.instance.temporaryHide = value;\r\n }\r\n });\r\n }\r\n\r\n changeDynamicBladeHeaderTitle(bladeName: string, title: string): void {\r\n this.dynamicBladeCache.forEach((blade) => {\r\n if (blade.instance.name === bladeName) {\r\n blade.instance.bladeHeader.headerTitle = title;\r\n }\r\n });\r\n }\r\n\r\n private addComponent(\r\n bladeName: string,\r\n component: Type,\r\n data?: any,\r\n options?: BladeOptions\r\n ): void {\r\n this.dynamicBladeCache.forEach((blade) => {\r\n if (blade.instance.name === bladeName) {\r\n const newBladeItem = new BladeItem(component, data);\r\n blade.instance._bladeItem = newBladeItem;\r\n if (options) {\r\n blade.instance.position =\r\n options.position !== undefined ? options.position : 'top';\r\n blade.instance.fullScreen =\r\n options.fullScreen !== undefined ? options.fullScreen : false;\r\n blade.instance.offset =\r\n options.offset !== undefined ? options.offset : 0;\r\n blade.instance.showBladeInBody =\r\n options.showBladeInBody !== undefined ? options.showBladeInBody : false;\r\n // blade.instance.threeQuarterHeight = options.threeQuarterHeight !== undefined ? options.threeQuarterHeight : false;\r\n blade.instance.showCloseBtn =\r\n options.showCloseBtn !== undefined ? options.showCloseBtn : true;\r\n blade.instance.showMinifyBtn =\r\n options.showMinifyBtn !== undefined ? options.showMinifyBtn : true;\r\n blade.instance.showHeader =\r\n options.showHeader !== undefined ? options.showHeader : false;\r\n blade.instance.showBladeOverlay =\r\n options.showBladeOverlay !== undefined\r\n ? options.showBladeOverlay\r\n : false;\r\n if (options.bladeHeader) {\r\n for (const key of Object.keys(options.bladeHeader)) {\r\n blade.instance.bladeHeader[key] = options.bladeHeader[key];\r\n }\r\n } else {\r\n blade.instance.bladeHeader = undefined;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnInit,\r\n OnDestroy,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { BladeComponent } from './blade.component';\r\nimport { BladeHostDirective } from './blade-host.directive';\r\nimport { BladeItem } from './bladeItem';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { SlideInOutGeneral } from './animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { BladeHeader } from '@isygis/isy-configs';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-isy-dynamic-blade',\r\n templateUrl: 'isy-blade.component.html',\r\n styleUrls: ['isy-blade.component.scss'],\r\n animations: [SlideInOutGeneral],\r\n})\r\nexport class IsyDynamicBladeComponent implements OnInit, OnDestroy {\r\n @ViewChild(BladeHostDirective, { static: false })\r\n libBladeHost: BladeHostDirective;\r\n animationState;\r\n isShowing = false;\r\n bladeIsMinify = false;\r\n positionMinifyBtn;\r\n\r\n subscription: Subscription = new Subscription();\r\n helpIsOpen = false;\r\n\r\n private bladeItem: BladeItem;\r\n @Input()\r\n set _bladeItem(bladeItem: BladeItem) {\r\n this.bladeItem = bladeItem;\r\n }\r\n\r\n @Input() temporaryHide = false;\r\n @Input() name: string;\r\n @Input() position = 'top';\r\n @Input() showCloseBtn = true;\r\n @Input() showMinifyBtn = true;\r\n @Input() fullScreen = false;\r\n @Input() showHeader = false;\r\n @Input() showBladeOverlay = false;\r\n @Input() offset = 0;\r\n @Input() bladeHeader: BladeHeader = {\r\n showCloseBtn: true,\r\n };\r\n @Input() expanded = false;\r\n @Input() showBladeInBody = false;\r\n // @Input() threeQuarterHeight = false;\r\n @Input() set show(val: boolean) {\r\n // console.log('SHOWING: ', val, this.position);\r\n this.isShowing = val;\r\n this.applyPositionState(this.isShowing);\r\n this.showChange.emit(this.isShowing);\r\n setTimeout(() => {\r\n if (this.libBladeHost) {\r\n const viewContainerRef = this.libBladeHost.viewContainerRef;\r\n if (!this.bladeItem || this.bladeItem.component === undefined) {\r\n viewContainerRef.clear();\r\n return;\r\n }\r\n // const componentFactory = this.componentFactoryResolver.resolveComponentFactory(this.bladeItem.component);\r\n viewContainerRef.clear();\r\n const componentRef = viewContainerRef.createComponent(\r\n this.bladeItem.component\r\n );\r\n (componentRef.instance as BladeComponent).data = this.bladeItem.data;\r\n }\r\n });\r\n }\r\n get show(): boolean {\r\n return this.isShowing;\r\n }\r\n @Output() showChange = new EventEmitter();\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(\r\n private commonService: IsyCommonService\r\n ) {\r\n // empty\r\n }\r\n\r\n private applyPositionState(stateShow: boolean): void {\r\n switch (this.position) {\r\n case 'top': {\r\n this.animationState = stateShow ? 'topLeave' : 'topEnter';\r\n break;\r\n }\r\n case 'bottom': {\r\n this.animationState = stateShow ? 'bottomLeave' : 'bottomEnter';\r\n break;\r\n }\r\n case 'right': {\r\n this.animationState = stateShow ? 'rightLeave' : 'rightEnter';\r\n break;\r\n }\r\n case 'left': {\r\n this.animationState = stateShow ? 'leftLeave' : 'leftEnter';\r\n break;\r\n }\r\n default: {\r\n this.animationState = stateShow ? 'topLeave' : 'topEnter';\r\n break;\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.name) {\r\n throw new Error('Blade must have a \"name\" attribute.');\r\n }\r\n this.subscription.add(\r\n this.commonService.helpId$.subscribe((id) => {\r\n if (id === undefined) {\r\n this.helpIsOpen = false;\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n hideBlade(): void {\r\n this.show = false;\r\n this.commonService.setHelpId(undefined);\r\n }\r\n\r\n expand(): void {\r\n this.expanded = true;\r\n }\r\n\r\n compress(): void {\r\n this.expanded = false;\r\n }\r\n\r\n hideAndMinifyBlade(): void {\r\n this.applyPositionState(false);\r\n this.positionMinifyBtn =\r\n this.position === 'top' ||\r\n this.position === 'right' ||\r\n this.position === 'botom'\r\n ? 'right'\r\n : 'left';\r\n setTimeout(() => {\r\n this.bladeIsMinify = true;\r\n // this.show = false;\r\n }, 300);\r\n }\r\n\r\n showMinifyBlade(): void {\r\n this.applyPositionState(true);\r\n this.bladeIsMinify = false;\r\n }\r\n\r\n showHelp(): void {\r\n this.helpIsOpen = !this.helpIsOpen;\r\n this.commonService.setHelpId(this.helpIsOpen ? this.name : undefined);\r\n }\r\n}\r\n","import { BehaviorSubject, Observable, Subject, combineLatest, of } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n IDomainFeature,\r\n IEnvironment,\r\n IGIVisAdresseQueryParams,\r\n IGIVisBygningQueryParams,\r\n IGIVisEiendomQueryParams,\r\n IGIVisPlanQueryParams,\r\n IJobtechQueryParams,\r\n ISearchResult,\r\n IGisCoordinate,\r\n ITool,\r\n} from '@isygis/isy-configs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Feature } from 'geojson';\r\nimport { IExternalServices } from '@isygis/isymap-config';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyCommonService {\r\n constructor() {\r\n // empty\r\n }\r\n\r\n\r\n // isy-admin\r\n private administratorPreviewIsActiveAction = new BehaviorSubject(\r\n false\r\n );\r\n administratorPreviewIsActive$ =\r\n this.administratorPreviewIsActiveAction.asObservable();\r\n\r\n // isy-base-layers\r\n private hideBaseLayersLayoutAction = new BehaviorSubject(false);\r\n hideBaseLayersLayout$ = this.hideBaseLayersLayoutAction.asObservable();\r\n\r\n // isy-blade\r\n private showBladeByNameAction = new BehaviorSubject('');\r\n private hideBladeByNameAction = new BehaviorSubject('');\r\n private bladeIsResizedAction = new Subject();\r\n showBladeByName$ = this.showBladeByNameAction.asObservable();\r\n hideBladeByName$ = this.hideBladeByNameAction.asObservable();\r\n bladeIsResized$ = this.bladeIsResizedAction.asObservable();\r\n\r\n // isy-dynamic-modal\r\n private dynamicModalCloseButtonClickAction = new BehaviorSubject(\r\n undefined\r\n );\r\n private dynamicModalAcceptButtonClickAction = new BehaviorSubject(\r\n undefined\r\n );\r\n dynamicModalCloseButtonClick$ =\r\n this.dynamicModalCloseButtonClickAction.asObservable();\r\n dynamicModalAcceptButtonClick$ =\r\n this.dynamicModalAcceptButtonClickAction.asObservable();\r\n\r\n // isy-feature-info\r\n private activateFeatureInfoSelectorWithLayerNameAction =\r\n new BehaviorSubject(true);\r\n private featureInfoLayersLengthAction = new BehaviorSubject(-1);\r\n activateFeatureInfoSelectorWithLayerName$ =\r\n this.activateFeatureInfoSelectorWithLayerNameAction.asObservable();\r\n featureInfoLayersLength$ = this.featureInfoLayersLengthAction.asObservable();\r\n\r\n // isy-geolocation\r\n private hideGeolocationAction = new BehaviorSubject(false);\r\n hideGeolocation$ = this.hideGeolocationAction.asObservable();\r\n\r\n // isy-gis-theme\r\n private changeThemeAction = new BehaviorSubject('');\r\n changeTheme$ = this.changeThemeAction.asObservable();\r\n\r\n // isy-help\r\n private helpIdAction = new BehaviorSubject(undefined);\r\n helpId$ = this.helpIdAction.asObservable();\r\n\r\n // isy-info-panel\r\n private featureAction = new BehaviorSubject(undefined);\r\n private hideInfoPanelAction = new BehaviorSubject(false);\r\n private hideInfoPanelNotDestroyAction = new BehaviorSubject(false);\r\n private infoPanelPositionAction = new BehaviorSubject('');\r\n private hideResultAction = new BehaviorSubject(false);\r\n private hideFeatureInfoResultAction = new BehaviorSubject(false);\r\n private hidePointInfoAction = new BehaviorSubject(false);\r\n feature$ = this.featureAction.asObservable();\r\n hideInfoPanel$ = this.hideInfoPanelAction.asObservable();\r\n hideInfoPanelNotDestroy$ = this.hideInfoPanelNotDestroyAction.asObservable();\r\n infoPanelPosition$ = this.infoPanelPositionAction.asObservable();\r\n hideResult$ = this.hideResultAction.asObservable();\r\n hideFeatureInfoResult$ = this.hideFeatureInfoResultAction.asObservable();\r\n hidePointInfo$ = this.hidePointInfoAction.asObservable();\r\n\r\n // isy-jobtech\r\n private jtQueryParamsAction = new BehaviorSubject(null);\r\n private removeJtQueryParamsAction = new Subject();\r\n jtQueryParams$ = this.jtQueryParamsAction.asObservable();\r\n removeJtQueryParams$ = this.removeJtQueryParamsAction.asObservable();\r\n\r\n // GI\r\n private giVisPlanQueryParamsAction =\r\n new BehaviorSubject(null);\r\n private giVisEiendomQueryParamsAction =\r\n new BehaviorSubject(null);\r\n private giVisBygningQueryParamsAction =\r\n new BehaviorSubject(null);\r\n private giVisAdresseQueryParamsAction =\r\n new BehaviorSubject(null);\r\n private giCompleteAction = new BehaviorSubject(false);\r\n private removeGiQueryParamsAction = new Subject();\r\n giVisPlanQueryParamsAction$ = this.giVisPlanQueryParamsAction.asObservable();\r\n giVisEiendomQueryParamsAction$ =\r\n this.giVisEiendomQueryParamsAction.asObservable();\r\n giVisBygningQueryParamsAction$ =\r\n this.giVisBygningQueryParamsAction.asObservable();\r\n giVisAdresseQueryParamsAction$ =\r\n this.giVisAdresseQueryParamsAction.asObservable();\r\n giCompleteAction$ = this.giCompleteAction.asObservable();\r\n removeGiQueryParams$ = this.removeGiQueryParamsAction.asObservable();\r\n\r\n // isy-layers\r\n private updateLayerGroupsAction = new BehaviorSubject(false);\r\n updateLayerGroups$ = this.updateLayerGroupsAction;\r\n\r\n // isy-login\r\n private idLogginActiveAction = new BehaviorSubject(false);\r\n private adfsLoginActiveAction = new BehaviorSubject(false);\r\n private kcLoginActiveAction = new BehaviorSubject(false);\r\n private showMainSpinnerAction = new BehaviorSubject(false);\r\n private kcToken = new BehaviorSubject('');\r\n private kcUsed = new BehaviorSubject(false);\r\n private idPortenToken = new BehaviorSubject('');\r\n private idPortenUsed = new BehaviorSubject(false);\r\n idLogginActive$ = this.idLogginActiveAction.asObservable();\r\n adfsLoginActive$ = this.adfsLoginActiveAction.asObservable();\r\n kcLoginActive$ = this.kcLoginActiveAction.asObservable();\r\n showMainSpinner$ = this.showMainSpinnerAction.asObservable();\r\n keycloaktToken$ = this.kcToken.asObservable();\r\n\r\n // isy-map-action-dialog\r\n private mapActionDialogCloseButtonClickAction = new BehaviorSubject(\r\n undefined\r\n );\r\n private hideAndBlockShowMapActionDialogAction = new BehaviorSubject(\r\n false\r\n );\r\n mapActionDialogCloseButtonClick$ =\r\n this.mapActionDialogCloseButtonClickAction.asObservable();\r\n hideAndBlockShowMapActionDialog$ =\r\n this.hideAndBlockShowMapActionDialogAction.asObservable();\r\n\r\n // isy-map\r\n private setIsyTokenToMaplibNgAction = new BehaviorSubject('');\r\n private externalServicesAction = new BehaviorSubject(\r\n undefined\r\n );\r\n setIsyTokenToMaplibNg$ = this.setIsyTokenToMaplibNgAction.asObservable();\r\n externalServices$ = this.externalServicesAction.asObservable();\r\n private setCenterAction = new BehaviorSubject(\r\n undefined\r\n );\r\n setCenterAction$ = this.setCenterAction.asObservable();\r\n private setEpsgAction = new BehaviorSubject(undefined);\r\n setEpsgAction$ = this.setEpsgAction.asObservable();\r\n\r\n // isy-road-profile\r\n private showRoadProfileAction = new Subject();\r\n private roadProfileDataAction = new BehaviorSubject(\r\n undefined\r\n );\r\n private showRoadCrossSectionAction = new Subject();\r\n private roadCrossSectionDataAction = new BehaviorSubject(\r\n undefined\r\n );\r\n showRoadProfile$ = this.showRoadProfileAction.asObservable();\r\n roadProfileData$ = this.roadProfileDataAction.asObservable();\r\n showRoadCrossSection$ = this.showRoadCrossSectionAction.asObservable();\r\n roadCrossSectionData$ = this.roadCrossSectionDataAction.asObservable();\r\n\r\n // isy-search-bar\r\n private hideSearchBarAction = new BehaviorSubject(false);\r\n private hideSearchBarNotDestroyAction = new BehaviorSubject(false);\r\n private searchBarMenuButtonClickAction = new Subject();\r\n private searchBarPositionAction = new BehaviorSubject('');\r\n private hideMenuIconAction = new BehaviorSubject(false);\r\n private featuresFromSearchAction = new BehaviorSubject(undefined);\r\n hideSearchBar$ = this.hideSearchBarAction.asObservable();\r\n hideSearchBarNotDestroy$ = this.hideSearchBarNotDestroyAction.asObservable();\r\n searchBarMenuButtonClick$ =\r\n this.searchBarMenuButtonClickAction.asObservable();\r\n searchBarPosition$ = this.searchBarPositionAction.asObservable();\r\n hideMenuIcon$ = this.hideMenuIconAction.asObservable();\r\n featuresFromSearch$ = this.featuresFromSearchAction.asObservable();\r\n\r\n //isy-search-result\r\n private gotoSearchResultWithCoordinatesAction = new BehaviorSubject<\r\n Partial\r\n >(undefined);\r\n gotoSearchResultWithCoordinates$ =\r\n this.gotoSearchResultWithCoordinatesAction.asObservable();\r\n\r\n // isy-side-nav\r\n private hideSideNavAction = new BehaviorSubject(true);\r\n private sideNavPinAction = new BehaviorSubject(false);\r\n private forceHideSideNavAction = new BehaviorSubject(false);\r\n private hideTranslateBarAction = new BehaviorSubject(false);\r\n private activeNavBarIdAction = new BehaviorSubject(undefined);\r\n hideSideNav$ = this.hideSideNavAction.asObservable();\r\n sideNavPin$ = this.sideNavPinAction.asObservable();\r\n forceHideSideNav$ = this.forceHideSideNavAction.asObservable();\r\n hideTranslateBar$ = this.hideTranslateBarAction.asObservable();\r\n activeNavBarId$ = this.activeNavBarIdAction.asObservable();\r\n\r\n // isy-tools\r\n private toolIsActiveAction = new BehaviorSubject(false);\r\n private activateToolByIdAction = new BehaviorSubject(undefined);\r\n private visibleToolsAction = new BehaviorSubject(undefined);\r\n toolsIsActive$ = this.toolIsActiveAction.asObservable();\r\n activateToolById$ = this.activateToolByIdAction.asObservable();\r\n visibleTools$ = this.visibleToolsAction.asObservable();\r\n\r\n // isy-translate\r\n private useLanguageAction = new BehaviorSubject('no');\r\n useLanguage$ = this.useLanguageAction.asObservable();\r\n\r\n // isy-zoom-in-out\r\n private hideZoomInOutBtnAction = new BehaviorSubject(false);\r\n hideZoomInOutBtn$ = this.hideZoomInOutBtnAction.asObservable();\r\n\r\n // general\r\n private iframeSessionLogoutAction = new BehaviorSubject(false);\r\n private pointInfoNeighborAction = new BehaviorSubject(false);\r\n private featureInfoNeighborAction = new BehaviorSubject(false);\r\n private componentPositionOffsetAction = new BehaviorSubject('520px');\r\n componentPosition$ = combineLatest([\r\n this.componentPositionOffsetAction,\r\n this.sideNavPinAction,\r\n ]).pipe(\r\n map(([componentPositionOffset, sideNavPin]: [string, boolean]) => {\r\n return sideNavPin ? componentPositionOffset : '30px';\r\n })\r\n );\r\n\r\n private activeEnvironmentAction = new BehaviorSubject(\r\n undefined\r\n );\r\n activeEnvironment$ = this.activeEnvironmentAction.asObservable();\r\n iframeSessionLogout$ = this.iframeSessionLogoutAction.asObservable();\r\n pointInfoNeighborActive$ = this.pointInfoNeighborAction.asObservable();\r\n featureInfoNeighborActive$ = this.featureInfoNeighborAction.asObservable();\r\n\r\n // ----- FUNCTIONS -----\r\n // isy-admin\r\n administratorPreviewIsActive(value: boolean): void {\r\n this.administratorPreviewIsActiveAction.next(value);\r\n }\r\n\r\n // isy-base-layers\r\n hideBaseLayersLayout(value: boolean): void {\r\n this.hideBaseLayersLayoutAction.next(value);\r\n }\r\n\r\n // isy-blade\r\n showBladeByName(value: string): void {\r\n this.hideBladeByNameAction.next('');\r\n this.showBladeByNameAction.next(value);\r\n }\r\n\r\n hideBladeByName(value: string): void {\r\n this.hideBladeByNameAction.next(value);\r\n this.showBladeByNameAction.next('');\r\n }\r\n\r\n bladeIsResized(): void {\r\n this.bladeIsResizedAction.next(true);\r\n }\r\n\r\n // isy-dynamic-modal\r\n dynamicModalCloseButtonClick(name: string): void {\r\n this.dynamicModalCloseButtonClickAction.next(name);\r\n }\r\n\r\n dynamicModalAcceptButtonClick(name: string): void {\r\n this.dynamicModalAcceptButtonClickAction.next(name);\r\n }\r\n\r\n // isy-feature-info\r\n activateFeatureInfoSelectorWithLayerName(value: boolean): void {\r\n this.activateFeatureInfoSelectorWithLayerNameAction.next(value);\r\n }\r\n\r\n setFeatureInfoLayersLength(value: number): void {\r\n if (this.featureInfoLayersLengthAction.getValue() !== value) {\r\n this.featureInfoLayersLengthAction.next(value);\r\n }\r\n }\r\n\r\n // isy-geolocation\r\n hideGeolocation(value: boolean): void {\r\n this.hideGeolocationAction.next(value);\r\n }\r\n\r\n // isy-gis-theme\r\n changeTheme(themeName: string): void {\r\n this.changeThemeAction.next(themeName);\r\n }\r\n\r\n // isy-info-panel\r\n setFeature(value: IDomainFeature): void {\r\n this.featureAction.next(value);\r\n }\r\n\r\n hideInfoPanel(value: boolean): void {\r\n this.hideInfoPanelAction.next(value);\r\n }\r\n\r\n hideInfoPanelNotDestroy(value: boolean): void {\r\n this.hideInfoPanelNotDestroyAction.next(value);\r\n }\r\n\r\n infoPanelSetPosition(value: string): void {\r\n this.infoPanelPositionAction.next(value);\r\n }\r\n\r\n setHideResult(value?: boolean): void {\r\n if (value === true || value === false) {\r\n this.hideResultAction.next(value);\r\n } else {\r\n const getValue = this.hideResultAction.getValue();\r\n this.hideResultAction.next(!getValue);\r\n }\r\n }\r\n setHideFeatureInfoResult(value?: boolean): void {\r\n if (value === true || value === false) {\r\n this.hideFeatureInfoResultAction.next(value);\r\n } else {\r\n const getValue = this.hideFeatureInfoResultAction.getValue();\r\n this.hideFeatureInfoResultAction.next(!getValue);\r\n }\r\n }\r\n\r\n setHidePointInfo(value: boolean): void {\r\n this.hidePointInfoAction.next(value);\r\n }\r\n\r\n // isy-jobtech\r\n setJobtechQueryParams(params: IJobtechQueryParams): void {\r\n this.jtQueryParamsAction.next(params);\r\n }\r\n\r\n removeJtQueryParams(): void {\r\n this.removeJtQueryParamsAction.next(true);\r\n }\r\n\r\n // GeoIntegrasjon\r\n setGIVisPlanQueryParams(params: IGIVisPlanQueryParams): void {\r\n this.giVisPlanQueryParamsAction.next(params);\r\n }\r\n setGIVisEiendomQueryParams(params: IGIVisEiendomQueryParams): void {\r\n this.giVisEiendomQueryParamsAction.next(params);\r\n }\r\n setGIVisBygningQueryParams(params: IGIVisBygningQueryParams): void {\r\n this.giVisBygningQueryParamsAction.next(params);\r\n }\r\n setGIVisAdresseQueryParams(params: IGIVisAdresseQueryParams): void {\r\n this.giVisAdresseQueryParamsAction.next(params);\r\n }\r\n setGIComplete(value: boolean = true): void {\r\n this.giCompleteAction.next(value);\r\n }\r\n removeGiQueryParams(): void {\r\n this.removeGiQueryParamsAction.next(true);\r\n }\r\n\r\n // isy-help\r\n setHelpId(id?: string): void {\r\n this.helpIdAction.next(id ? id : undefined);\r\n }\r\n\r\n // isy-layers\r\n updateLayerGroups(): void {\r\n this.updateLayerGroupsAction.next(true);\r\n }\r\n\r\n // isy-login\r\n setIdLogginActive(value: boolean): void {\r\n this.idLogginActiveAction.next(value);\r\n }\r\n\r\n setAdfsLoginActive(value: boolean): void {\r\n this.adfsLoginActiveAction.next(value);\r\n }\r\n\r\n setKcLoginActive(value: boolean): void {\r\n this.kcLoginActiveAction.next(value);\r\n }\r\n\r\n setShowMainSpinner(value: boolean): void {\r\n this.showMainSpinnerAction.next(value);\r\n }\r\n\r\n // isy-map\r\n setIsyTokenToMaplibNg(value: string): void {\r\n this.setIsyTokenToMaplibNgAction.next(value);\r\n }\r\n\r\n setExternalServices(value: IExternalServices): void {\r\n this.externalServicesAction.next(value);\r\n }\r\n setCenter(value: IGisCoordinate): void {\r\n this.setCenterAction.next(value);\r\n }\r\n setEpsgCode(value: number): void {\r\n this.setEpsgAction.next(value);\r\n }\r\n\r\n // isy-map-action-dialog\r\n mapActionDialogCloseButtonClick(id: string): void {\r\n this.mapActionDialogCloseButtonClickAction.next(id);\r\n }\r\n hideAndBlockShowMapActionDialog(value: boolean): void {\r\n this.hideAndBlockShowMapActionDialogAction.next(value);\r\n }\r\n\r\n // isy-road-profile\r\n showRoadProfile(): void {\r\n this.showRoadProfileAction.next(true);\r\n }\r\n\r\n setRoadProfileData(data?: IDomainFeature): void {\r\n this.roadProfileDataAction.next(data ? data : undefined);\r\n }\r\n\r\n showRoadCrossSection(): void {\r\n this.showRoadCrossSectionAction.next(true);\r\n }\r\n\r\n setRoadCrossSectionData(data?: IDomainFeature): void {\r\n this.roadCrossSectionDataAction.next(data ? data : undefined);\r\n }\r\n\r\n // isy-search-bar\r\n hideSearchBar(value: boolean): void {\r\n this.hideSearchBarAction.next(value);\r\n }\r\n\r\n hideSearchBarNotDestroy(value: boolean): void {\r\n this.hideSearchBarNotDestroyAction.next(value);\r\n }\r\n\r\n searchBarMenuButtonClick(): void {\r\n this.searchBarMenuButtonClickAction.next(true);\r\n }\r\n\r\n searchBarSetPosition(value: string): void {\r\n this.searchBarPositionAction.next(value);\r\n }\r\n\r\n hideMenuIcon(value: boolean): void {\r\n this.hideMenuIconAction.next(value);\r\n }\r\n\r\n setFeaturesFromSearch(feature: Feature): void {\r\n this.featuresFromSearchAction.next(feature);\r\n }\r\n\r\n // isy-search-result\r\n gotoSearchResultWithCoordinates(value: Partial): void {\r\n this.gotoSearchResultWithCoordinatesAction.next(value);\r\n }\r\n\r\n // isy-side-nav\r\n hideSideNav(value: boolean): void {\r\n if (!this.sideNavPinAction.getValue()) {\r\n this.hideSideNavAction.next(value);\r\n }\r\n }\r\n\r\n sideNavPin(value: boolean): void {\r\n this.sideNavPinAction.next(value);\r\n }\r\n\r\n forceHideSideNav(value: boolean): void {\r\n this.forceHideSideNavAction.next(value);\r\n this.hideSideNav(value);\r\n }\r\n\r\n hideTranslateBar(value: boolean): void {\r\n this.hideTranslateBarAction.next(value);\r\n }\r\n\r\n setActiveNavBarId(value: string): void {\r\n this.activeNavBarIdAction.next(value);\r\n }\r\n\r\n // isy-tools\r\n toolsIsActive(value: boolean): void {\r\n this.toolIsActiveAction.next(value);\r\n }\r\n\r\n activateToolById(tool: string): void {\r\n this.activateToolByIdAction.next(tool);\r\n }\r\n\r\n visibleTools(toolsList: ITool[]): void {\r\n this.visibleToolsAction.next(toolsList);\r\n }\r\n\r\n // isy-translate\r\n useLanguage(value: string): void {\r\n this.useLanguageAction.next(value);\r\n }\r\n\r\n // isy-zoom-in-out\r\n hideZoomInOutBtn(value: boolean): void {\r\n this.hideZoomInOutBtnAction.next(value);\r\n }\r\n\r\n // general\r\n setPointInfoNeighborActive(value: boolean): void {\r\n this.pointInfoNeighborAction.next(value);\r\n }\r\n\r\n setFeatureInfoNeighborActive(value: boolean): void {\r\n this.featureInfoNeighborAction.next(value);\r\n }\r\n\r\n setIframeSessionLogout(value: boolean): void {\r\n this.iframeSessionLogoutAction.next(value);\r\n }\r\n\r\n setComponentPositionOffset(value: string): void {\r\n this.componentPositionOffsetAction.next(value);\r\n }\r\n\r\n setActiveEnvironment(environment: IEnvironment): void {\r\n this.activeEnvironmentAction.next(environment);\r\n }\r\n\r\n getPointInfoNeighborActive(): boolean {\r\n return this.pointInfoNeighborAction.getValue();\r\n }\r\n\r\n getActiveEnvironment(): IEnvironment {\r\n return this.activeEnvironmentAction.getValue();\r\n }\r\n\r\n setKcToken(value: string): void {\r\n this.kcToken.next(value);\r\n // console.log('KC-TOKEN', this.kcToken.getValue());\r\n }\r\n\r\n getKcToken(): string {\r\n return this.kcToken.getValue();\r\n }\r\n\r\n setKcUsed(value: boolean): void {\r\n this.kcUsed.next(value);\r\n console.log('KC-USED', this.kcUsed.getValue());\r\n }\r\n\r\n getKcUsed(): boolean {\r\n return this.kcUsed.getValue();\r\n }\r\n\r\n setIdPortenUsed(value: boolean): void {\r\n this.idPortenUsed.next(value);\r\n console.log('idPortenUsed', this.idPortenUsed.getValue());\r\n }\r\n\r\n getIdPortenUsed(): boolean {\r\n return this.idPortenUsed.getValue();\r\n }\r\n \r\n setIdPortenToken(value: string): void {\r\n this.idPortenToken.next(value);\r\n console.log('idPortenToken', this.kcToken.getValue());\r\n }\r\n\r\n getIdPortenToken(): string {\r\n return this.idPortenToken.getValue();\r\n }\r\n\r\n handleErrorWithObservable(operation = 'operation', result?: T) {\r\n return (error: any): Observable => {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n errorMessage = error.error.message;\r\n } else {\r\n errorMessage = `${operation} failed: Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n\r\n // TODO: send the error to remote logging infrastructure?\r\n console.error(errorMessage); // log to console instead\r\n return of(result as T);\r\n };\r\n }\r\n}\r\n","export interface IFeatureInfo {\r\n supportsGetFeatureInfo: boolean;\r\n getFeatureInfoFormat: string;\r\n getFeatureInfoCrs: string;\r\n\r\n // multi select via WFS GetFeature\r\n supportsGetFeature: boolean;\r\n getFeatureBaseUrl: string;\r\n getFeatureFormat: string;\r\n getFeatureCrs: string;\r\n}\r\n\r\nexport interface ISubLayer {\r\n name: string;\r\n providerName: string; // f.eks Fiskeridirektoratet\r\n source: string;\r\n url: string;\r\n format: string;\r\n coordinate_system: string;\r\n dataProjection: string;\r\n srs_dimension: string;\r\n matrixSet: string;\r\n extent: [];\r\n extentUnits: string;\r\n id: string;\r\n transparent: boolean;\r\n layerIndex: number;\r\n legendGraphicUrl: string;\r\n crossOrigin: string;\r\n featureInfoTitle: string;\r\n tooltipTemplate: string;\r\n showDialog: boolean;\r\n openNewWindow: boolean;\r\n openParentWindow: boolean;\r\n windowWidth: number;\r\n featureInfoElement: [];\r\n editable: boolean;\r\n featureInfo: IFeatureInfo;\r\n featureNS: string;\r\n geometryName: string;\r\n geometryType: string;\r\n sendUserName: string;\r\n}\r\n\r\nexport interface ILegendGraphic {\r\n width: string;\r\n height: string;\r\n format: string;\r\n request: string;\r\n version: string;\r\n layer: string;\r\n url: string;\r\n}\r\n\r\nexport interface ILayer {\r\n guid: string;\r\n subLayers: ISubLayer[];\r\n name: string;\r\n categoryId: number;\r\n visibleOnLoad: boolean;\r\n isVisible: boolean; // Holds current state, will be set to true on factory.Init if VisibleOnLoad = true\r\n id: string;\r\n isBaseLayer: boolean;\r\n isSettingsOpen: boolean;\r\n isLegendOpen: boolean; // deprecated\r\n previewActive: boolean;\r\n opacity: number;\r\n timeoptions: TimeOptions;\r\n mapLayerIndex: number;\r\n minResolution: number;\r\n maxResolution: number;\r\n legendGraphicUrls: LegendElt[];\r\n selectedLayerOpen: number; // todo johben temp\r\n}\r\n\r\nexport interface TimeOptions {\r\n starttime?: string;\r\n endtime?: string;\r\n increment?: string; // Assuming increment is a string representation of TimeSpan\r\n sliderSteps?: Date[]; // Assuming sliderSteps is a list of Date objects\r\n}\r\nexport interface LegendElt {\r\n title: string;\r\n url: string;\r\n isLoading?: boolean;\r\n numTries?: number;\r\n isFiltered?: boolean;\r\n}\r\n\r\nexport type NestedProperties = {\r\n [key: string]: string | NestedProperties;\r\n};\r\n\r\nexport interface IDomainFeature {\r\n lowercaseprops: Record;\r\n geometryObject: '';\r\n crs: '';\r\n properties: NestedProperties;\r\n olFeature: any;\r\n isOpen: boolean;\r\n showMore: boolean;\r\n hasRoadProfile?: boolean;\r\n hasRoadCrossSection?: boolean;\r\n chartIsOpen?: boolean;\r\n reportIsOpen?: boolean;\r\n feedbackIsOpen?: boolean;\r\n neighborlistOpen?: boolean\r\n}\r\n\r\nexport interface IDomainLayer {\r\n id?: number;\r\n isLoading?: boolean;\r\n exception?: string;\r\n features?: IDomainFeature[];\r\n name?: string;\r\n featureInfoTitle?: string;\r\n wms?: boolean;\r\n featureInfoElement?: any;\r\n showDialog?: boolean;\r\n showneighborlist?: boolean;\r\n advancedfilter?: boolean;\r\n openNewWindow?: boolean;\r\n openParentWindow?: boolean;\r\n windowWidth?: number;\r\n editable?: boolean;\r\n showpopupwithdata?: boolean;\r\n showpopuplibrary?: boolean;\r\n popupwithdatatitle?: string;\r\n metadataServices?: any[];\r\n metadataurl?: string;\r\n isOpen?: boolean;\r\n url?: string;\r\n coordinate_system?: string;\r\n featureNS?: string;\r\n layertype?: string;\r\n geometrytype?: string;\r\n sendusername?: string;\r\n useexternaluri?: string;\r\n loadingstrategy?: string;\r\n}\r\n\r\nexport interface IKommuneInfo {\r\n fylkesnavn: string;\r\n fylkesnummer: string;\r\n kommunenummer: string;\r\n kommunenavn: string;\r\n kommune_pri_1: string;\r\n kommune_pri_1_sprak: string;\r\n samiskforvaltningsomrade: boolean;\r\n kommunevaapenurl: string;\r\n}\r\n\r\nexport enum IconType {\r\n Png = 'PNG',\r\n Svg = 'SVG',\r\n}\r\n","export enum EMainMenuNavBar {\r\n ID = 'mainMenuNavBar',\r\n LAYERS = 'layers',\r\n TOOLS = 'tools',\r\n LOGIN = 'login',\r\n PROJECTS = 'projects',\r\n}\r\n","import { LegendElt } from './layer-config.model';\r\nimport { IWmsLayer } from '@isygis/isymap-config';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { Type } from '@angular/core';\r\n\r\n\r\nexport interface IGisExtent {\r\n epsg?: string; // 'EPSG:25832',\r\n extent: number[]; // nedre venstre og øvre høyre [574485.96, 7033181.41, 584485.96, 7043181.41]\r\n}\r\n\r\ninterface IHoverOptions {\r\n multiSelect: boolean;\r\n mmultiSelect: boolean;\r\n}\r\n\r\nexport interface IProjectCoordinate {\r\n epsg: string;\r\n lat: number;\r\n lon: number;\r\n zoom: number;\r\n}\r\nexport interface IFeatureInfoWmsData {\r\n url: string;\r\n layer: ISubLayers;\r\n coordinate: [];\r\n}\r\n\r\ninterface IFeatureInfo {\r\n getFeatureBaseUrl: string;\r\n getFeatureCrs: string;\r\n getFeatureFormat: string;\r\n getFeatureInfoCrs: string;\r\n getFeatureInfoFormat: string;\r\n supportsGetFeature: boolean;\r\n supportsGetFeatureInfo: boolean;\r\n}\r\n\r\nexport interface ISubLayers {\r\n attachment: boolean;\r\n cluster: boolean;\r\n clustercount: boolean;\r\n clusterdistance: number;\r\n clusterstyle: string;\r\n clusterwrapx: boolean;\r\n coordinate_system: string;\r\n crossOrigin: string;\r\n editable: boolean;\r\n extent: [];\r\n extentUnits: string;\r\n featureInfo: IFeatureInfo;\r\n featureInfoElement: [];\r\n featureInfoTitle: string;\r\n featureNS: string;\r\n format: string;\r\n gatekeeper: boolean;\r\n geometryName: string;\r\n id: number;\r\n layerIndex: number;\r\n layers: IWmsLayer[];\r\n legendGraphicUrl: string;\r\n bboxLegendGraphicUrl?: string;\r\n matrixPrefix: boolean;\r\n matrixSet: string;\r\n minScale: string;\r\n name: string;\r\n neededResources: string[];\r\n numZoomLevels: number;\r\n noProxy: boolean;\r\n openNewWindow: boolean;\r\n openParentWindow: boolean;\r\n provider: string;\r\n providerName: string;\r\n showDialog: boolean;\r\n showneighborlist: boolean;\r\n advancedfilter: boolean;\r\n showpopuplibrary: boolean;\r\n showpopupwithdata: boolean;\r\n sortingIndex: number;\r\n source: string;\r\n srs_dimension: string;\r\n style: string;\r\n subLayerName: string;\r\n jsonstyleurl: string;\r\n jsonstyle: object;\r\n tiled: boolean;\r\n title: string;\r\n timeoptions: MapTimeOptions;\r\n tooltipTemplate: string;\r\n transparent: boolean;\r\n url: string;\r\n version: string;\r\n windowWidth: number;\r\n legendGraphicUrlWithBBOX(mapExtent: IGisExtent): string;\r\n}\r\n\r\nexport interface MapTimeOptions {\r\n starttime?: string;\r\n endtime?: string;\r\n increment?: string; // Assuming increment is a string representation of TimeSpan\r\n sliderSteps?: Date[]; // Assuming sliderSteps is a list of Date objects\r\n}\r\nexport interface IIsyLayer {\r\n categoryId: number;\r\n groupId: [];\r\n guid: string;\r\n id: number;\r\n isBaseLayer: boolean;\r\n isSettingsOpen: boolean;\r\n isLegendOpen: boolean; // deprecated\r\n isVisible: boolean;\r\n isDisabled: boolean;\r\n legendGraphicUrls: LegendElt[];\r\n legendGraphicUrlsBbox: LegendElt[];\r\n mapLayerIndex: number;\r\n maxResolution: number;\r\n minResolution: number;\r\n name: string;\r\n opacity: number;\r\n timeoptions: MapTimeOptions;\r\n previewActive: boolean;\r\n selectedLayerOpen: boolean;\r\n styles?: any;\r\n subLayers: ISubLayers[];\r\n visibleOnLoad: boolean;\r\n}\r\n\r\nexport interface IGroup {\r\n catId: string;\r\n countVisibleLayers?: number;\r\n groupId: string;\r\n groupIsVisible?: boolean;\r\n isAllLayersSelected?: boolean;\r\n isOpen: boolean;\r\n isPartiallyVisible?: boolean;\r\n isyLayers?: IIsyLayer[];\r\n name: string;\r\n parentId: string;\r\n subCategories: [];\r\n supergroupid?: string;\r\n visibleOnLoad: boolean;\r\n}\r\n\r\nexport class DomainFeatureResponse {\r\n geometryObject: any;\r\n crs: '';\r\n properties: any;\r\n olFeature: any;\r\n}\r\n\r\nexport const DomainSubLayerSOURCES = {\r\n wmts: 'WMTS',\r\n wms: 'WMS',\r\n vector: 'VECTOR',\r\n proxyWmts: 'proxyWmts',\r\n proxyWms: 'proxyWms',\r\n tms: 'TMS',\r\n wfs: 'WFS',\r\n};\r\n\r\nexport const DomainSubLayerFORMATS = {\r\n imagepng: 'image/png',\r\n imagejpeg: 'image/jpeg',\r\n geoJson: 'application/json',\r\n};\r\n\r\nexport interface IPageScrollingInfoTextAndOverlay {\r\n zoomInfoTextWindows?: string;\r\n zoomInfoTextMac?: string;\r\n zoomInfoTextMobile?: string;\r\n backgroundColor?: string;\r\n textColor?: string;\r\n fontSizeDesktop?: string;\r\n fontSizeMobile?: string;\r\n}\r\n\r\nexport class MapConfig {\r\n attachmentHost: string;\r\n center;\r\n comment: string;\r\n coordinate_system: string;\r\n dataprojection: string;\r\n credits: string;\r\n disableOffline: boolean;\r\n extent;\r\n extentUnits: string;\r\n groups: IGroup[];\r\n headerTitle: string;\r\n hoverOptions: IHoverOptions;\r\n instance: string;\r\n isOffline: boolean;\r\n layers;\r\n mouseProjectionPrefix: string;\r\n name: string;\r\n numZoomLevels: number;\r\n onlyOneGroup: boolean;\r\n proxyHost: string;\r\n project: IProjectCoordinate;\r\n projectName: string;\r\n searchHost: string;\r\n searchParams: object;\r\n searchpointzoom: number;\r\n showAdvancedPrinting: boolean;\r\n showMousePosition: boolean;\r\n showProgressBar: boolean;\r\n tokenHost: string;\r\n useCategories: boolean;\r\n version: number;\r\n zoom: number;\r\n updateExtent: boolean;\r\n hoverhighlightmode?: string;\r\n constrainedExtent?: [number, number, number, number];\r\n pageScrolling?: boolean;\r\n pageScrollingShowInfoText?: boolean;\r\n pageScrollingInfoTextAndOverlay?: IPageScrollingInfoTextAndOverlay;\r\n useMultiWorld?: boolean;\r\n\r\n constructor() {\r\n this.center = [526259, 7054145];\r\n this.disableOffline = false;\r\n this.extent = [-2000000, 3500000, 3545984, 9045984];\r\n this.extentUnits = 'm';\r\n this.groups = [];\r\n this.hoverOptions = {} as IHoverOptions;\r\n this.hoverOptions.multiSelect = true;\r\n this.hoverOptions.mmultiSelect = true;\r\n this.isOffline = false;\r\n this.layers = [];\r\n this.name = 'default config';\r\n this.numZoomLevels = 19;\r\n this.onlyOneGroup = false;\r\n this.project = {} as IProjectCoordinate;\r\n this.searchpointzoom = 12;\r\n this.showAdvancedPrinting = false;\r\n this.showMousePosition = true;\r\n this.showProgressBar = true;\r\n this.version = 2;\r\n this.zoom = 3;\r\n this.updateExtent = true;\r\n this.hoverhighlightmode = '';\r\n }\r\n}\r\n\r\nexport interface IExtraMapConfigParams {\r\n constrainedExtent?: [number, number, number, number];\r\n pageScrolling?: boolean;\r\n activatePopoverInfo?: boolean;\r\n pageScrollingShowInfoText?: boolean;\r\n pageScrollingInfoTextAndOverlay?: IPageScrollingInfoTextAndOverlay;\r\n}\r\n\r\nexport interface ICoordinate {\r\n lat: number;\r\n lon: number;\r\n epsg: string;\r\n crs: string;\r\n}\r\n\r\nexport interface IElevationResult {\r\n datakilde: string;\r\n terreng: string;\r\n x: number\r\n y: number;\r\n z: number;\r\n // placename: string;\r\n // elevation: number;\r\n // stedsnummer: number;\r\n}\r\n\r\nexport interface IPositionInfo {\r\n adresse: any;\r\n bygning: any;\r\n eiendom: any;\r\n planomrade: any;\r\n}\r\nexport interface IGisCoordinate {\r\n epsg?: string; // 'EPSG:25832',\r\n lon: number; // 574485.96, - x / øst\r\n lat: number; // 7033181.41, - y / nord\r\n zoom?: number; // (0 - 18) - 0 viser Norge som en liten ert\r\n scale?: number; // (1 - 81920000) 81920000 viser Norge som en liten ert\r\n}\r\n\r\n\r\nexport class GisCoordinate implements IGisCoordinate {\r\n epsg?: string;\r\n lon: number;\r\n lat: number;\r\n zoom?: number;\r\n scale?: number;\r\n\r\n constructor(lon: number, lat: number) {\r\n this.lon = lon;\r\n this.lat = lat;\r\n }\r\n}\r\n\r\nexport interface KeyPair {\r\n Key: string;\r\n Value: string;\r\n}\r\n\r\nexport type KeyPairArray = KeyPair[];\r\n\r\nexport interface AddGeoJsonOptions {\r\n layerName: string;\r\n features: string;\r\n jsonStyle?: any;\r\n featureInfoElements?: string;\r\n featureInfoTitle?: string;\r\n version?: string;\r\n typeName?: string;\r\n cluster?: boolean;\r\n clustercount?: boolean;\r\n clusterdistance?: number;\r\n clusterstyleurl?: string;\r\n clusterstyle?: string;\r\n layerOrder?: number;\r\n}\r\n\r\nexport interface BladeOptions {\r\n position?: string;\r\n fullScreen?: boolean;\r\n showCloseBtn?: boolean;\r\n showMinifyBtn?: boolean;\r\n showHeader?: boolean;\r\n bladeHeader?: BladeHeader;\r\n showBladeOverlay?: boolean;\r\n offset?: number;\r\n showBladeInBody?: boolean;\r\n}\r\n\r\nexport interface BladeHeader {\r\n headerIcon?: IconDefinition;\r\n headerImgIconClass?: string;\r\n headerTitle?: string;\r\n expandBladeBtn?: boolean;\r\n showCloseBtn?: boolean;\r\n showHelpBtn?: boolean;\r\n}\r\n\r\nexport interface ITool {\r\n id: string;\r\n toolName: string;\r\n icon: IconDefinition;\r\n url?: string;\r\n showInBlade?: boolean;\r\n bladeOptions?: BladeOptions;\r\n showInDraggable?: boolean;\r\n showInMapActionDialog?: boolean;\r\n showInModal?: boolean;\r\n modalOptions?: ModalOptions;\r\n mapActionDialogText?: string;\r\n component: Type;\r\n isVisible: boolean;\r\n buttonAvailable: boolean;\r\n usingUserResource: IUserResource;\r\n helpButton: boolean;\r\n closeOnEscape?: boolean;\r\n}\r\n\r\nexport interface ModalOptions {\r\n showHeader?: boolean;\r\n showFooter?: boolean;\r\n showFooterWithComponent?: boolean;\r\n showCloseBtn?: boolean;\r\n contentText?: string;\r\n modalHeader?: ModalHeader;\r\n modalFooter?: ModalFooter;\r\n}\r\nexport interface ModalHeader {\r\n headerIcon?: IconDefinition;\r\n headerTitle?: string;\r\n showCloseBtn?: boolean;\r\n iconColor?: string;\r\n}\r\n\r\nexport interface ModalFooter {\r\n showAcceptButton?: boolean;\r\n showCancelButton?: boolean;\r\n acceptButtonText?: string;\r\n cancelButtonText?: string;\r\n}\r\n\r\nexport interface IUserResource {\r\n hasUserResource: boolean;\r\n resourceId: string;\r\n}\r\n\r\nexport interface ICustomTool {\r\n url: string;\r\n title: string;\r\n icon: string;\r\n opennewwindow: boolean;\r\n coordinatesystem: string;\r\n scale: string;\r\n}\r\n","export enum ESessionStorageId {\r\n LOGINTYPEINPROGRESS = 'loginTypeInProgess',\r\n LOGININPROGRESS = 'loginInProgress',\r\n ACTIVENAVBAR = 'activeNavBar',\r\n SIDENAVOPEN = 'sideNavOpen',\r\n CONFIG = 'config'\r\n}\r\n\r\nexport enum ELogin {\r\n EMAIL = 'gi_mail',\r\n USERNAME = 'gi_userName',\r\n RESOURCES = 'gi_resources',\r\n USERISLOGGEDIN = 'gi_userLoggedIn',\r\n TOKEN = 'isyToken',\r\n URLREDIRECT = 'gi_redirectUrl',\r\n IDPORTENPOSTREDIRECTURL = 'gi_idportenPostRedirectUrl',\r\n LOGINHASBEENCALLED = 'loginHasBeenCalled',\r\n}\r\n\r\nexport enum ELoginType {\r\n IDPORTEN = 'idPorten',\r\n ADFS = 'adfs',\r\n ISYUSERADMIN = 'isyuseradmin',\r\n KEYCLOAK = 'keycloak',\r\n}\r\n","export enum EToolId {\r\n DRAW = 'Draw',\r\n PRINT_PROTOCOL = 'PrintProtocol',\r\n ELEVATION_PROFILE = 'ElevationProfile',\r\n EXPORT_DATA = 'ExportData',\r\n THREE_D_VIEW = '3DView',\r\n OBLIQUE_VIEW = 'ObliqueView',\r\n BBOX = 'BBOX',\r\n ADVANCED_SEARCH = 'advancedSearch',\r\n PROPERTY_REPORT = 'PropertyReport',\r\n FEEDBACK = 'Feedback',\r\n ANALYSES_AND_REPORTS = 'AnalysesAndReports',\r\n PRINT_MAP = 'PrintMap',\r\n ROAD_ANALYSIS = 'RoadAnalysis',\r\n // WEBINNSYN = 'Webinnsyn',\r\n POINT_INFORMATION = 'PointInformation',\r\n}\r\n","export interface UrlParams {\r\n application: string;\r\n baselayers: string;\r\n layers: string;\r\n lat: string;\r\n lon: string;\r\n zoom: string;\r\n project: string;\r\n jtobjektid?: string;\r\n jtfunksjon?: string;\r\n theme?: string;\r\n funksjon?: string;\r\n plan?: string;\r\n planidentifikasjon?: string;\r\n kommunenummer?: string;\r\n gaardsnummer?: string;\r\n bruksnummer?: string;\r\n festenummer?: string;\r\n seksjonsnummer?: string;\r\n undernummer?: string;\r\n bygningsnummer?: string;\r\n endringsloepenummer?: string;\r\n adressenavn?: string;\r\n husnummer?: string;\r\n bokstav?: string;\r\n onlymap?: string;\r\n tool?: string;\r\n search?: string;\r\n opennav?: string;\r\n marker?: string;\r\n}\r\n\r\nexport enum EUrlParam {\r\n LON = 'lon',\r\n LAT = 'lat',\r\n ZOOM = 'zoom',\r\n PROJECT = 'project',\r\n APPLICATION = 'application',\r\n BASELAYERS = 'baselayers',\r\n LAYERS = 'layers',\r\n JTOBJEKTID = 'jtobjektid',\r\n JTFUNKSJON = 'jtfunksjon',\r\n THEME = 'theme',\r\n FUNKSJON = 'funksjon',\r\n PLAN = 'plan',\r\n PLANIDENTIFIKASJON = 'planidentifikasjon',\r\n KOMMUNENUMMER = 'kommunenummer',\r\n GAARDSNUMMER = 'gaardsnummer',\r\n BRUKSNUMMER = 'bruksnummer',\r\n FESTENUMMER = 'festenummer',\r\n SEKSJONSNUMMER = 'seksjonsnummer',\r\n UNDERNUMMER = 'undernummer',\r\n ADRESSENAVN = 'adressenavn',\r\n HUSNUMMER = 'husnummer',\r\n BOKSTAV = 'bokstav',\r\n BYGNINGSNUMMER = 'bygningsnummer',\r\n ENDRINGSLOEPENUMMER = 'endringsloepenummer',\r\n ONLYMAP = 'onlymap',\r\n TOOL = 'tool',\r\n SEARCH = 'search',\r\n OPENNAV = 'opennav',\r\n MARKER = 'marker',\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libDraggableHost]',\r\n})\r\nexport class DraggableHostDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Type } from '@angular/core';\r\n\r\nexport class DraggableItem {\r\n constructor(public component: Type, public data: any) {}\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n} from '@angular/core';\r\n\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyDraggableOverlayService } from './isy-draggable-overlay.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-isy-draggable-overlay',\r\n templateUrl: './isy-draggable-overlay.component.html',\r\n styleUrls: ['./isy-draggable-overlay.component.scss'],\r\n})\r\nexport class IsyDraggableOverlayComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n @Input() headerName = 'Header name';\r\n @Input() headerIcon = undefined;\r\n @Input() name;\r\n @Input() showHelpButton = false;\r\n\r\n showContent = true;\r\n isShowing = false;\r\n draggablePosition = '';\r\n subscription: Subscription = new Subscription();\r\n @Input() bounds: HTMLElement;\r\n\r\n @Input() set position(val: string) {\r\n // this.draggableOverlayService.setDraggablePosition(val);\r\n this.draggablePosition = val;\r\n }\r\n get position(): string {\r\n return this.draggablePosition;\r\n }\r\n\r\n constructor(\r\n private draggableOverlayService: IsyDraggableOverlayService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n @Input()\r\n set show(val: boolean) {\r\n this.isShowing = val;\r\n this.showChange.emit(val);\r\n }\r\n get show(): boolean {\r\n return this.isShowing;\r\n }\r\n\r\n @Output() showChange = new EventEmitter();\r\n\r\n helpIsOpen = false;\r\n\r\n ngOnInit(): void {\r\n if (!this.name || !this.position) {\r\n throw new Error('Blade must have a \"name\" and \"position\" attribute.');\r\n }\r\n this.draggableOverlayService._register(this);\r\n this.subscription.add(\r\n this.commonService.helpId$.subscribe((id) => {\r\n if (id === undefined) {\r\n this.helpIsOpen = false;\r\n }\r\n })\r\n );\r\n }\r\n\r\n close(): void {\r\n this.show = false;\r\n this.commonService.setHelpId(undefined);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.draggableOverlayService._unregister(this);\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n showHelp(): void { \r\n this.helpIsOpen = !this.helpIsOpen\r\n this.commonService.setHelpId(this.helpIsOpen ? this.name : undefined);\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    {{headerName | translate }}
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AngularDraggableModule } from 'angular2-draggable';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\n\r\nimport { IsyDraggableOverlayComponent } from './isy-draggable-overlay.component';\r\nimport { DraggableHostDirective } from './draggable-host.directive';\r\nimport { IsyDynamicDraggableOverlayComponent } from './isy-dynamic-draggable-overlay.component';\r\n\r\n@NgModule({\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n AngularDraggableModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n ],\r\n declarations: [\r\n IsyDraggableOverlayComponent,\r\n IsyDynamicDraggableOverlayComponent,\r\n DraggableHostDirective,\r\n ],\r\n exports: [IsyDraggableOverlayComponent],\r\n})\r\nexport class IsyDraggableOverlayModule {}\r\n","import {\r\n ApplicationRef,\r\n ComponentRef,\r\n Injectable,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\n\r\nimport { DraggableItem } from './draggableItem';\r\nimport { DraggableOptions } from './draggable-options';\r\nimport { IsyDraggableOverlayComponent } from './isy-draggable-overlay.component';\r\nimport { IsyDynamicDraggableOverlayComponent } from './isy-dynamic-draggable-overlay.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyDraggableOverlayService {\r\n private draggableCache = new Set();\r\n private dynamicDraggableCache = new Set<\r\n ComponentRef\r\n >();\r\n private _rootViewContainerRef: ViewContainerRef;\r\n\r\n constructor(\r\n // private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef\r\n ) {}\r\n\r\n setRootViewContainerRef(vRef: ViewContainerRef): void {\r\n this._rootViewContainerRef = vRef;\r\n }\r\n\r\n private init(name: string): void {\r\n if (!this._rootViewContainerRef) {\r\n try {\r\n this._rootViewContainerRef =\r\n this.appRef['_rootComponents'][0]['_hostElement'].vcRef;\r\n } catch (e) {\r\n console.error(\r\n 'Please set root ViewContainerRef using setRootViewContainerRef(vRef: ViewContainerRef) method.'\r\n );\r\n return;\r\n }\r\n }\r\n // const providers = ReflectiveInjector.resolve([]);\r\n // const bladeFactory = this.componentFactoryResolver.resolveComponentFactory(IsyDynamicDraggableOverlayComponent);\r\n // const childInjector = ReflectiveInjector.fromResolvedProviders(providers, this._rootViewContainerRef.parentInjector);\r\n // const container = this._rootViewContainerRef.createComponent(bladeFactory, this._rootViewContainerRef.length, childInjector);\r\n const container = this._rootViewContainerRef.createComponent(\r\n IsyDynamicDraggableOverlayComponent,\r\n {\r\n index: this._rootViewContainerRef.length,\r\n injector: this._rootViewContainerRef.injector,\r\n }\r\n );\r\n container.instance.name = name;\r\n this._registerDynamic(container);\r\n }\r\n\r\n _register(draggable: any): void {\r\n this.draggableCache.add(draggable);\r\n }\r\n\r\n _registerDynamic(\r\n draggable: ComponentRef\r\n ): void {\r\n this.dynamicDraggableCache.add(draggable);\r\n }\r\n\r\n _unregister(draggableToRemove: IsyDraggableOverlayComponent): void {\r\n this.draggableCache.forEach((draggable) => {\r\n if (draggable.name === draggableToRemove.name) {\r\n this.draggableCache.delete(draggable);\r\n }\r\n });\r\n }\r\n\r\n show(draggableName: string): void {\r\n this.draggableCache.forEach((draggable) => {\r\n if (draggable.name === draggableName) {\r\n draggable.show = true;\r\n }\r\n });\r\n }\r\n\r\n private showDynamic(draggableName: string): void {\r\n this.dynamicDraggableCache.forEach((draggable) => {\r\n if (draggable.instance.name === draggableName) {\r\n draggable.instance.show = true;\r\n }\r\n });\r\n }\r\n\r\n hide(draggableName: string): void {\r\n this.draggableCache.forEach((draggable) => {\r\n if (draggable.name === draggableName) {\r\n draggable.show = false;\r\n }\r\n });\r\n this.dynamicDraggableCache.forEach((draggable) => {\r\n if (draggable.instance.name === draggableName) {\r\n draggable.instance.show = false;\r\n }\r\n });\r\n }\r\n\r\n showDraggableWithComponent(\r\n draggableName: string,\r\n component: Type,\r\n data?: any,\r\n options?: DraggableOptions\r\n ): void {\r\n let draggableExist = false;\r\n this.dynamicDraggableCache.forEach((draggable) => {\r\n if (draggable.instance.name === draggableName) {\r\n this.addComponent(draggableName, component, data, options);\r\n this.showDynamic(draggableName);\r\n draggableExist = true;\r\n }\r\n });\r\n if (!draggableExist) {\r\n this.init(draggableName);\r\n setTimeout(() => {\r\n this.addComponent(draggableName, component, data, options);\r\n }, 100);\r\n setTimeout(() => {\r\n this.showDynamic(draggableName);\r\n }, 200);\r\n }\r\n }\r\n\r\n private addComponent(\r\n draggableName: string,\r\n component: Type,\r\n data?: any,\r\n options?: DraggableOptions\r\n ): void {\r\n this.dynamicDraggableCache.forEach((draggable) => {\r\n if (draggable.instance.name === draggableName) {\r\n const newBladeItem = new DraggableItem(component, data);\r\n draggable.instance._draggableItem = newBladeItem;\r\n if (options) {\r\n draggable.instance.headerIcon =\r\n options.headerIcon !== undefined ? options.headerIcon : undefined;\r\n draggable.instance.headerName =\r\n options.headerName !== undefined\r\n ? options.headerName\r\n : 'Header name';\r\n draggable.instance.showHelpButton =\r\n options.helpButton !== undefined ? options.helpButton : false;\r\n draggable.instance.closeOnEscape =\r\n options.closeOnEscape !== undefined ? options.closeOnEscape : false;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n} from '@angular/core';\r\n\r\nimport { DraggableComponent } from './draggable.component';\r\nimport { DraggableHostDirective } from './draggable-host.directive';\r\nimport { DraggableItem } from './draggableItem';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { Subscription } from 'rxjs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Component({\r\n selector: 'lib-isy-dynamic-draggable-overlay',\r\n templateUrl: './isy-draggable-overlay.component.html',\r\n styleUrls: ['./isy-draggable-overlay.component.scss'],\r\n})\r\nexport class IsyDynamicDraggableOverlayComponent implements OnInit, OnDestroy {\r\n @ViewChild(DraggableHostDirective, { static: false })\r\n libDraggableHost: DraggableHostDirective;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n @Input() headerName = 'Header name';\r\n @Input() headerIcon = undefined;\r\n @Input() name;\r\n @Input() showHelpButton = false;\r\n @Input() closeOnEscape = false;\r\n \r\n showContent = true;\r\n isShowing = false;\r\n draggablePosition = '';\r\n subscription: Subscription = new Subscription();\r\n @Input() bounds: HTMLElement;\r\n private draggableItem: DraggableItem;\r\n @Output() showChange = new EventEmitter();\r\n \r\n helpIsOpen = false;\r\n\r\n // Listen for escape\r\n @HostListener('window:keydown.esc', ['$event'])\r\n handleKeyDown(event: KeyboardEvent) {\r\n if (this.closeOnEscape) {\r\n this.close();\r\n }\r\n }\r\n\r\n @Input() set position(val: string) {\r\n this.draggablePosition = val;\r\n }\r\n get position(): string {\r\n return this.draggablePosition;\r\n }\r\n\r\n @Input()\r\n set _draggableItem(draggableItem: DraggableItem) {\r\n this.draggableItem = draggableItem;\r\n }\r\n\r\n constructor(private commonService: IsyCommonService) {}\r\n\r\n @Input()\r\n set show(val: boolean) {\r\n this.isShowing = val;\r\n this.showChange.emit(val);\r\n setTimeout(() => {\r\n if (this.libDraggableHost) {\r\n const viewContainerRef = this.libDraggableHost.viewContainerRef;\r\n if (!this.draggableItem || this.draggableItem.component === undefined) {\r\n viewContainerRef.clear();\r\n return;\r\n }\r\n viewContainerRef.clear();\r\n const componentRef = viewContainerRef.createComponent(\r\n this.draggableItem.component\r\n );\r\n (componentRef.instance as DraggableComponent).data =\r\n this.draggableItem.data;\r\n }\r\n });\r\n }\r\n get show(): boolean {\r\n return this.isShowing;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.name) {\r\n throw new Error('Draggable must have a \"name\" attribute.');\r\n }\r\n this.subscription.add(this.commonService.componentPosition$.subscribe(\r\n (value) => {\r\n this.position = value;\r\n }\r\n ));\r\n this.subscription.add(\r\n this.commonService.helpId$.subscribe((id) => {\r\n if (id === undefined) {\r\n this.helpIsOpen = false;\r\n }\r\n })\r\n );\r\n }\r\n\r\n close(): void {\r\n this.show = false;\r\n this.commonService.setHelpId(undefined);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n showHelp(): void {\r\n this.helpIsOpen = !this.helpIsOpen;\r\n this.commonService.setHelpId(this.helpIsOpen ? this.name : undefined);\r\n }\r\n}\r\n","import {\r\n trigger,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\n\r\nexport const topEnter = [\r\n style({ transform: 'translateY(-100%)' }),\r\n animate('300ms ease-in', style({ transform: 'translateY(0%)' })),\r\n];\r\n\r\nexport const topLeave = [\r\n animate('300ms ease-in', style({ transform: 'translateY(-100%)' })),\r\n];\r\n\r\nexport const SlideInOutGeneral = [\r\n trigger('slideInOutGeneral', [\r\n transition('* => topLeave', topEnter),\r\n transition('topLeave => *', topLeave),\r\n ]),\r\n];\r\n\r\nexport const OverlayAnimation = trigger('overlayAnimation', [\r\n transition(':enter', [\r\n // :enter is alias to 'void => *'\r\n style({ opacity: 0 }),\r\n animate('500ms ease-in-out', style({ opacity: 1 })),\r\n ]),\r\n transition(':leave', [\r\n // :leave is alias to '* => void'\r\n style({ opacity: 1 }),\r\n animate('500ms ease-in-out', style({ opacity: 0 })),\r\n ]),\r\n]);\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n} from '@angular/core';\r\nimport { ModalItem } from './modalItem';\r\nimport { ModalHostContentDirective } from './modal-host-content.directive';\r\nimport { ModalHostFooterDirective } from './modal-host-footer.directive';\r\nimport { ModalComponent } from './modal.component';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { SlideInOutGeneral, OverlayAnimation } from './animations';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { ModalFooter, ModalHeader } from '@isygis/isy-configs';\r\n\r\n@Component({\r\n selector: 'lib-isy-dynamic-modal',\r\n templateUrl: './isy-dynamic-modal.component.html',\r\n styleUrls: ['./isy-dynamic-modal.component.scss'],\r\n animations: [SlideInOutGeneral, OverlayAnimation],\r\n})\r\nexport class IsyDynamicModalComponent implements OnInit {\r\n @ViewChild(ModalHostContentDirective, { static: false })\r\n libModalHostContent: ModalHostContentDirective;\r\n @ViewChild(ModalHostFooterDirective, { static: false })\r\n libModalHostFooter: ModalHostFooterDirective;\r\n animationState;\r\n isShowing = false;\r\n private modalItemContent: ModalItem;\r\n @Input()\r\n set _modalItemContent(modalItemContent: ModalItem) {\r\n this.modalItemContent = modalItemContent;\r\n }\r\n private modalItemFooter: ModalItem;\r\n @Input()\r\n set _modalItenFooter(modalItemFooter: ModalItem) {\r\n this.modalItemFooter = modalItemFooter;\r\n }\r\n @Input() name: string;\r\n @Input() temporaryHide = false;\r\n // Default values\r\n @Input() showCloseBtn = true;\r\n @Input() showHeader = false;\r\n @Input() showFooter = false;\r\n @Input() showFooterWithComponent = false;\r\n @Input() modalHeader: ModalHeader = {\r\n showCloseBtn: true,\r\n };\r\n @Input() modalFooter: ModalFooter = {\r\n showAcceptButton: true,\r\n showCancelButton: false,\r\n acceptButtonText: 'save',\r\n cancelButtonText: 'cancel',\r\n };\r\n @Input() contentText: string;\r\n @Input() set show(val: boolean) {\r\n this.isShowing = val;\r\n this.animationState = this.isShowing ? 'topLeave' : 'topEnter';\r\n this.showChange.emit(this.isShowing);\r\n setTimeout(() => {\r\n if (this.libModalHostContent && !this.contentText) {\r\n const viewContainerRef = this.libModalHostContent.viewContainerRef;\r\n if (\r\n !this.modalItemContent ||\r\n this.modalItemContent.component === undefined\r\n ) {\r\n viewContainerRef.clear();\r\n return;\r\n }\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(\r\n this.modalItemContent.component\r\n );\r\n viewContainerRef.clear();\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n (componentRef.instance as ModalComponent).data =\r\n this.modalItemContent.data;\r\n }\r\n if (this.libModalHostFooter && this.showFooterWithComponent) {\r\n const viewContainerRef = this.libModalHostFooter.viewContainerRef;\r\n if (\r\n !this.modalItemFooter ||\r\n this.modalItemFooter.component === undefined\r\n ) {\r\n viewContainerRef.clear();\r\n return;\r\n }\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(\r\n this.modalItemFooter.component\r\n );\r\n viewContainerRef.clear();\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n (componentRef.instance as ModalComponent).data =\r\n this.modalItemFooter.data;\r\n }\r\n });\r\n }\r\n get show(): boolean {\r\n return this.isShowing;\r\n }\r\n\r\n @Output() showChange = new EventEmitter();\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (!this.name) {\r\n throw new Error('Modal must have a \"name\" attribute.');\r\n }\r\n }\r\n\r\n hideModal(): void {\r\n this.commonService.dynamicModalCloseButtonClick(this.name);\r\n this.show = false;\r\n }\r\n\r\n cancelModal(): void {\r\n this.hideModal();\r\n }\r\n\r\n acceptModal(): void {\r\n this.commonService.dynamicModalAcceptButtonClick(this.name);\r\n this.show = false;\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{modalHeader.headerTitle | translate }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{contentText | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyDynamicModalComponent } from './isy-dynamic-modal.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { ModalHostContentDirective } from './modal-host-content.directive';\r\nimport { IsyDynamicModalService } from './isy-dynamic-modal.service';\r\nimport { ModalHostFooterDirective } from './modal-host-footer.directive';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FontAwesomeModule, IsyTranslateModule],\r\n declarations: [\r\n IsyDynamicModalComponent,\r\n ModalHostContentDirective,\r\n ModalHostFooterDirective,\r\n ],\r\n exports: [IsyDynamicModalComponent],\r\n})\r\nexport class IsyDynamicModalModule {\r\n public static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: IsyDynamicModalModule,\r\n providers: [IsyDynamicModalService],\r\n };\r\n }\r\n}\r\n","import {\r\n Injectable,\r\n Type,\r\n ViewContainerRef,\r\n ComponentFactoryResolver,\r\n ApplicationRef,\r\n ReflectiveInjector,\r\n ComponentRef,\r\n} from '@angular/core';\r\nimport { IsyDynamicModalComponent } from './isy-dynamic-modal.component';\r\nimport { ModalItem } from './modalItem';\r\nimport { ModalOptions } from '@isygis/isy-configs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyDynamicModalService {\r\n private dynamicModalCache = new Set>();\r\n private rootViewContainerRef: ViewContainerRef;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef\r\n ) {}\r\n\r\n setRootViewContainerRef(vRef: ViewContainerRef): void {\r\n this.rootViewContainerRef = vRef;\r\n }\r\n\r\n private init(name: string) {\r\n if (!this.rootViewContainerRef) {\r\n try {\r\n this.rootViewContainerRef =\r\n this.appRef['_rootComponents'][0]['_hostElement'].vcRef;\r\n } catch (e) {\r\n console.error(\r\n 'Please set root ViewContainerRef using setRootViewContainerRef(vRef: ViewContainerRef) method.'\r\n );\r\n return;\r\n }\r\n }\r\n\r\n const providers = ReflectiveInjector.resolve([]);\r\n const modalFactory = this.componentFactoryResolver.resolveComponentFactory(\r\n IsyDynamicModalComponent\r\n );\r\n const childInjector = ReflectiveInjector.fromResolvedProviders(\r\n providers,\r\n this.rootViewContainerRef.parentInjector\r\n );\r\n const container = this.rootViewContainerRef.createComponent(\r\n modalFactory,\r\n this.rootViewContainerRef.length,\r\n childInjector\r\n );\r\n container.instance.name = name;\r\n this.registerDynamic(container);\r\n }\r\n\r\n private registerDynamic(modal: ComponentRef): void {\r\n this.dynamicModalCache.add(modal);\r\n }\r\n\r\n private showDynamic(modalName: string): void {\r\n this.dynamicModalCache.forEach((modal) => {\r\n if (modal.instance.name === modalName) {\r\n modal.instance.show = true;\r\n }\r\n });\r\n }\r\n\r\n showModalWithComponent(\r\n modalName: string,\r\n component: Type,\r\n data?: any,\r\n options?: ModalOptions,\r\n footerComponent?: Type\r\n ): void {\r\n let modalExist = false;\r\n this.dynamicModalCache.forEach((modal) => {\r\n if (modal.instance.name === modalName) {\r\n this.addComponent(modalName, component, data, options, footerComponent);\r\n this.showDynamic(modalName);\r\n modalExist = true;\r\n }\r\n });\r\n if (!modalExist) {\r\n this.init(modalName);\r\n setTimeout(() => {\r\n this.addComponent(modalName, component, data, options, footerComponent);\r\n }, 100);\r\n setTimeout(() => {\r\n this.showDynamic(modalName);\r\n }, 200);\r\n }\r\n }\r\n\r\n hide(modalName: string): void {\r\n this.dynamicModalCache.forEach((modal) => {\r\n if (modal.instance.name === modalName) {\r\n modal.instance.show = false;\r\n }\r\n });\r\n }\r\n\r\n temporaryHide(modalName: string, value: boolean): void {\r\n this.dynamicModalCache.forEach((modal) => {\r\n if (modal.instance.name === modalName) {\r\n modal.instance.temporaryHide = value;\r\n }\r\n });\r\n }\r\n\r\n private addComponent(\r\n modalName: string,\r\n component: Type,\r\n data?: any,\r\n options?: ModalOptions,\r\n footerComponent?: Type\r\n ): void {\r\n this.dynamicModalCache.forEach((modal) => {\r\n if (modal.instance.name === modalName) {\r\n const newModalItem = new ModalItem(component, data);\r\n modal.instance._modalItemContent = newModalItem;\r\n if (options) {\r\n modal.instance.showCloseBtn =\r\n options.showCloseBtn !== undefined ? options.showCloseBtn : true;\r\n modal.instance.showHeader =\r\n options.showHeader !== undefined ? options.showHeader : false;\r\n modal.instance.contentText =\r\n options.contentText !== undefined ? options.contentText : undefined;\r\n modal.instance.showFooter =\r\n options.showFooter !== undefined ? options.showFooter : false;\r\n modal.instance.showFooterWithComponent =\r\n options.showFooterWithComponent !== undefined\r\n ? options.showFooterWithComponent\r\n : false;\r\n if (modal.instance.showFooterWithComponent) {\r\n if (footerComponent) {\r\n const newModalItemFooter = new ModalItem(\r\n footerComponent,\r\n undefined\r\n );\r\n modal.instance._modalItenFooter = newModalItemFooter;\r\n }\r\n }\r\n if (options.modalHeader) {\r\n for (const key of Object.keys(options.modalHeader)) {\r\n modal.instance.modalHeader[key] = options.modalHeader[key];\r\n }\r\n } else {\r\n modal.instance.modalHeader = undefined;\r\n }\r\n if (options.modalFooter) {\r\n for (const key of Object.keys(options.modalFooter)) {\r\n modal.instance.modalFooter[key] = options.modalFooter[key];\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libModalHostContent]',\r\n})\r\nexport class ModalHostContentDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libModalHostFooter]',\r\n})\r\nexport class ModalHostFooterDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Type } from '@angular/core';\r\n\r\nexport class ModalItem {\r\n constructor(public component: Type, public data: any) {}\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n OnDestroy,\r\n Input,\r\n Type,\r\n AfterViewInit,\r\n} from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n IsyDynamicNavLoaderService,\r\n INavBarElement,\r\n} from './isy-dynamic-nav-loader.service';\r\nimport { IsyNavBarDirective } from './isy-nav-bar.directive';\r\nimport { NavLoaderDataComponent } from '@isygis/isy-configs';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyMapEmitterService } from '@isygis/isy-map';\r\n\r\n@Component({\r\n selector: 'lib-isy-dynamic-nav-loader',\r\n templateUrl: './isy-dynamic-nav-loader.component.html',\r\n styleUrls: ['./isy-dynamic-nav-loader.component.scss'],\r\n})\r\nexport class IsyDynamicNavLoaderComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n @ViewChild(IsyNavBarDirective, { static: true })\r\n libIsyNavBar: IsyNavBarDirective;\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription: Subscription = new Subscription();\r\n\r\n _name: string;\r\n @Input() // name: string;\r\n set name(value: string) {\r\n this._name = value;\r\n }\r\n get name(): string {\r\n return this._name;\r\n }\r\n\r\n private navBarFontSize = '';\r\n @Input()\r\n get fontSize(): string {\r\n return this.navBarFontSize;\r\n }\r\n set fontSize(val: string) {\r\n this.navBarFontSize = val;\r\n }\r\n\r\n elements: INavBarElement[];\r\n @Input()\r\n set _navBarElements(elemets: INavBarElement[]) {\r\n this.elements = elemets;\r\n }\r\n get _navBarElements() {\r\n return this.elements;\r\n }\r\n\r\n private contentComponent: any;\r\n @Input()\r\n set _contentComponent(data: any) {\r\n this.contentComponent = data;\r\n }\r\n\r\n private activeComponent: Type;\r\n @Input()\r\n set _component(component: Type) {\r\n this.activeComponent = component;\r\n this._showComponent();\r\n }\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private dynamicNavLoaderService: IsyDynamicNavLoaderService,\r\n private commonService: IsyCommonService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (!this.name) {\r\n throw new Error('Nav bar must have a \"nameNavBar\" attribute');\r\n }\r\n this.dynamicNavLoaderService._register(this);\r\n this.subscription.add(\r\n this.commonService.activeNavBarId$.subscribe((value) => {\r\n if (value) {\r\n const element = this._navBarElements.find((n) => n.id === value);\r\n if (element) {\r\n this.toggleNavBarElement(element);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.dynamicNavLoaderService.setNavLoaderLoaded();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private _showComponent(): void {\r\n if (!this.libIsyNavBar) {\r\n return;\r\n }\r\n const viewContainerRef = this.libIsyNavBar.viewContainerRef;\r\n if (this.activeComponent === undefined) {\r\n viewContainerRef.clear();\r\n return;\r\n }\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(\r\n this.activeComponent\r\n );\r\n viewContainerRef.clear();\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n if (this.contentComponent) {\r\n (componentRef.instance).childComponent =\r\n this.contentComponent;\r\n }\r\n }\r\n\r\n toggleNavBarElement(navBarElement: INavBarElement): void {\r\n this.dynamicNavLoaderService.toggleNavBarElement(this.name, navBarElement);\r\n }\r\n\r\n clickToComponentContent(): void {\r\n this.dynamicNavLoaderService.clickToComponentContent(this.name);\r\n }\r\n}\r\n","\r\n
    \r\n \r\n
    \r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyDynamicNavLoaderComponent } from './isy-dynamic-nav-loader.component';\r\nimport { IsyNavBarDirective } from './isy-nav-bar.directive';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\n\r\n@NgModule({\r\n imports: [FontAwesomeModule, CommonModule, IsyTranslateModule],\r\n declarations: [IsyDynamicNavLoaderComponent, IsyNavBarDirective],\r\n exports: [IsyDynamicNavLoaderComponent],\r\n})\r\nexport class IsyDynamicNavLoaderModule {}\r\n","import { Injectable, Type } from '@angular/core';\r\nimport { IconDefinition } from '@fortawesome/free-solid-svg-icons';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { IsyDynamicNavLoaderComponent } from './isy-dynamic-nav-loader.component';\r\n\r\nexport interface INavBarElement {\r\n id: string;\r\n icon?: IconDefinition;\r\n text?: string;\r\n tooltip?: string;\r\n component: Type;\r\n isActive: boolean;\r\n isHidden?: boolean;\r\n childComponent?: any;\r\n}\r\n\r\nexport interface IActiveNavBar {\r\n navBarName: string;\r\n componentId: string;\r\n}\r\n\r\ninterface INavBar {\r\n id: string;\r\n fontSize?: string;\r\n navBarElements: INavBarElement[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyDynamicNavLoaderService {\r\n private navBarCache = new Set();\r\n\r\n navBars: INavBar[] = [];\r\n\r\n private clickToComponentContentAction = new BehaviorSubject(\r\n undefined\r\n );\r\n clickToComponentContent$ = this.clickToComponentContentAction.asObservable();\r\n private navComponentIdChangedAction = new BehaviorSubject(undefined);\r\n navComponentIdChanged$ = this.navComponentIdChangedAction.asObservable();\r\n private navLoaderLoadedAction = new Subject();\r\n navLoaderLoaded$ = this.navLoaderLoadedAction.asObservable();\r\n\r\n constructor() {\r\n // empty\r\n }\r\n\r\n _register(navBarComponent: IsyDynamicNavLoaderComponent): void {\r\n const navBar = this._getNavBarElementsByNavBarId(navBarComponent.name);\r\n navBarComponent._navBarElements = navBar.navBarElements;\r\n this.navBarCache.add(navBarComponent);\r\n this.setActiveNavComponent(\r\n navBarComponent.name,\r\n navBarComponent._navBarElements.find(\r\n (element) => element.isActive === true\r\n )\r\n );\r\n }\r\n\r\n private _getNavBarElementsByNavBarId(navBarName: string): INavBar {\r\n const navBar = this.navBars.find((navbar) => navbar.id === navBarName);\r\n if (navBar === undefined) {\r\n const newNavBar: INavBar = { id: navBarName, navBarElements: [] };\r\n this.navBars.push(newNavBar);\r\n return newNavBar;\r\n } else {\r\n return navBar;\r\n }\r\n }\r\n\r\n getActiveElementId(navBarName: string): string {\r\n let activeElement;\r\n this.navBarCache.forEach((navBar) => {\r\n if (navBar.name === navBarName) {\r\n const navBarElement = navBar._navBarElements.find(\r\n (element) => element.isActive === true\r\n );\r\n activeElement = navBarElement.id;\r\n }\r\n });\r\n return activeElement;\r\n }\r\n\r\n addToNavBar(navBarName: string, navElement: INavBarElement): void {\r\n const navBar = this._getNavBarElementsByNavBarId(navBarName);\r\n if (\r\n !navBar.navBarElements.find((element) => element.id === navElement.id)\r\n ) {\r\n navBar.navBarElements.push(Object.assign({}, navElement));\r\n if (navElement.isActive) {\r\n this.setActiveNavComponent(navBarName, navElement);\r\n }\r\n }\r\n }\r\n\r\n hideNavElement(\r\n navBarName: string,\r\n navElementId: string,\r\n hide: boolean\r\n ): void {\r\n const navBar = this._getNavBarElementsByNavBarId(navBarName);\r\n if (navBar) {\r\n const navBarElement = navBar.navBarElements.find(\r\n (element) => element.id === navElementId\r\n );\r\n if (navBarElement) {\r\n navBarElement.isHidden = hide;\r\n }\r\n }\r\n }\r\n\r\n setActiveNavComponent(\r\n navBarName: string,\r\n navBarElement: INavBarElement\r\n ): void {\r\n if (navBarElement === undefined) {\r\n return;\r\n }\r\n this.navBarCache.forEach((navBar) => {\r\n if (navBar.name === navBarName) {\r\n navBar._navBarElements.forEach((navElement) => {\r\n if (navElement.id === navBarElement.id) {\r\n navElement.isActive = true;\r\n navBar._contentComponent = navElement.childComponent;\r\n navBar._component = navElement.component;\r\n this.navComponentIdChangedAction.next(navElement.id);\r\n } else {\r\n navElement.isActive = false;\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n toggleNavBarElement(navBarName: string, navBarElement: INavBarElement): void {\r\n if (this.getActiveElementId(navBarName)) {\r\n if (navBarElement.isActive) {\r\n return;\r\n }\r\n }\r\n this.setActiveNavComponent(navBarName, navBarElement);\r\n }\r\n\r\n isAnyNavElementActive(navBarName: string): boolean {\r\n return this.getActiveElementId(navBarName) !== undefined;\r\n }\r\n\r\n clickToComponentContent(navBarName: string): void {\r\n const activeComponent: IActiveNavBar = {\r\n navBarName: navBarName,\r\n componentId: this.getActiveElementId(navBarName),\r\n };\r\n this.clickToComponentContentAction.next(activeComponent);\r\n }\r\n\r\n setNavIconFontSize(navBarName: string, fontSize: string): void {\r\n this.navBarCache.forEach((navBar) => {\r\n if (navBar.name === navBarName) {\r\n navBar.fontSize = fontSize;\r\n }\r\n });\r\n }\r\n\r\n setNavLoaderLoaded(): void {\r\n this.navLoaderLoadedAction.next(true);\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libIsyNavBar]',\r\n})\r\nexport class IsyNavBarDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'attachmentFileName',\r\n})\r\nexport class AttachmentFileNamePipe implements PipeTransform {\r\n transform(value: any, ...args: any[]): any {\r\n if (value.indexOf('file') > 0) {\r\n return value.split('file=')[1];\r\n }\r\n console.log('attachment value: ', value);\r\n return 'lenke';\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'attachmentFilter',\r\n})\r\nexport class AttachmentFilterPipe implements PipeTransform {\r\n transform(value: any, ...args: any[]): any {\r\n if (value) {\r\n return value.split('|');\r\n }\r\n return [value];\r\n }\r\n}\r\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription, combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyEditWfstModalContentComponent } from './isy-edit-wfst-modal-content/isy-edit-wfst-modal-content.component';\r\nimport { IsyEditWfstModalFooterComponent } from './isy-edit-wfst-modal-footer/isy-edit-wfst-modal-footer.component';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IsyEditWfstService } from './isy-edit-wfst.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyInsertWfstModalFooterComponent } from './isy-insert-wfst-modal-footer/isy-insert-wfst-modal-footer.component';\r\nimport { IsyFeatureInfoService } from '@isygis/isy-feature-info';\r\n\r\n@Directive({\r\n selector: '[libEditWfst]',\r\n})\r\nexport class EditWfstDirective implements OnInit, OnDestroy {\r\n private subscriptions: Subscription = new Subscription();\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private editWfstService: IsyEditWfstService,\r\n private featureInfoService: IsyFeatureInfoService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n const insertWfst = this.editWfstService.showInsertDialogAction$;\r\n const updateWfst = this.editWfstService.showUpdateDialogAction$;\r\n\r\n const insertOrUpdate = combineLatest([insertWfst, updateWfst]).pipe(\r\n map(([insertPromise, updatePromise]: [Promise, any]) => {\r\n Promise.all([insertPromise, updatePromise]).then(([insert, update]) => {\r\n if (insert || update) {\r\n if (update) {\r\n // Probably wrong place to set stop update, but I could not figure out where. Einar 27.01.23\r\n this.featureInfoService.stopUpdateFeature();\r\n }\r\n this.commonService.hideSearchBar(true);\r\n this.commonService.hideInfoPanel(true);\r\n this.dynamicModalService.showModalWithComponent(\r\n 'editWfst',\r\n IsyEditWfstModalContentComponent,\r\n undefined,\r\n {\r\n showHeader: true,\r\n showFooterWithComponent: true,\r\n showFooter: insert ? true : false,\r\n modalHeader: {\r\n headerTitle: insert ? 'wfst_createNew' : 'wfst_update',\r\n headerIcon: fontAwesomeIcons.faEdit,\r\n },\r\n modalFooter: {\r\n acceptButtonText: 'save',\r\n cancelButtonText: 'cancel',\r\n showAcceptButton: true,\r\n showCancelButton: true,\r\n },\r\n },\r\n update\r\n ? IsyEditWfstModalFooterComponent\r\n : IsyInsertWfstModalFooterComponent\r\n );\r\n }\r\n });\r\n })\r\n );\r\n this.subscriptions.add(insertOrUpdate.subscribe());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyEditWfstService } from '../isy-edit-wfst.service';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\n\r\n@Component({\r\n selector: 'lib-isy-edit-geometry-action-dialog',\r\n templateUrl: './isy-edit-geometry-action-dialog.component.html',\r\n})\r\nexport class IsyEditGeometryActionDialogComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(\r\n private editWfstService: IsyEditWfstService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private mapActionDialogService: IsyMapActionDialogService\r\n ) {}\r\n\r\n private goBackToModal(): void {\r\n this.mapActionDialogService.hide('editWfst');\r\n this.dynamicModalService.temporaryHide('editWfst', false);\r\n }\r\n\r\n cancelEditGeometry(): void {\r\n this.editWfstService.cancelEditeGeometryClick();\r\n this.goBackToModal();\r\n }\r\n\r\n saveEditGeometry(): void {\r\n this.editWfstService.saveEditGeometryClick();\r\n this.goBackToModal();\r\n }\r\n}\r\n","\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyEditWfstService, IInsertFeature } from '../isy-edit-wfst.service';\r\nimport { IsyMapEmitterService, MapLibNgService } from '@isygis/isy-map';\r\nimport { IsyFeatureInfoService } from '@isygis/isy-feature-info';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { NgxFileDropEntry, FileSystemFileEntry } from 'ngx-file-drop';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IsyEditGeometryActionDialogComponent } from '../isy-edit-geometry-action-dialog/isy-edit-geometry-action-dialog.component';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\n\r\ninterface IDescribedData {\r\n describedSource: any;\r\n describedSubLayer: any;\r\n geometry: any;\r\n}\r\n\r\ninterface IEditWfstStatus {\r\n editGeometryIsActive: boolean;\r\n insertHasBeenClicked: boolean;\r\n removeHasBeenClicked: boolean;\r\n updateHasBeenCliked: boolean;\r\n updateFeatureInfo: boolean;\r\n uploadInProgress: boolean;\r\n status: any;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-isy-edit-wfst-modal-content',\r\n templateUrl: './isy-edit-wfst-modal-content.component.html',\r\n styleUrls: ['./isy-edit-wfst-modal-content.component.scss'],\r\n})\r\nexport class IsyEditWfstModalContentComponent implements OnInit, OnDestroy {\r\n subscription: Subscription = new Subscription();\r\n private copyCoordinates = [];\r\n\r\n property = {};\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n attachmentFileInput = {\r\n value: '',\r\n };\r\n\r\n attachments = [];\r\n attachmentPropertyName;\r\n userName;\r\n\r\n editWfstStatus: IEditWfstStatus = {\r\n editGeometryIsActive: false,\r\n insertHasBeenClicked: false,\r\n removeHasBeenClicked: false,\r\n updateHasBeenCliked: false,\r\n updateFeatureInfo: false,\r\n uploadInProgress: false,\r\n status: undefined,\r\n };\r\n\r\n describedData: IDescribedData;\r\n\r\n describedFeature = undefined;\r\n hideModalInProgress = false;\r\n\r\n constructor(\r\n private editWfstService: IsyEditWfstService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private featureInfoService: IsyFeatureInfoService,\r\n private toasterService: IsyToasterService,\r\n private sessionStorageService: SessionStorageService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n describedFeatureAction$ = this.editWfstService.describedFeatureAction$.pipe(\r\n map((value) => {\r\n this.describedFeature = value;\r\n return this.describedFeature;\r\n })\r\n );\r\n saveInProgress$ = this.editWfstService.saveInProgress$;\r\n updateFeatureInfo$ = this.featureInfoService.updateFeatureInfo$;\r\n\r\n vm$ = combineLatest([\r\n this.describedFeatureAction$,\r\n this.saveInProgress$,\r\n this.updateFeatureInfo$,\r\n ]).pipe(\r\n map(\r\n ([describedFeatureAction, saveInProgress, updateFeatureInfo]: [\r\n IInsertFeature,\r\n boolean,\r\n boolean\r\n ]) => ({\r\n describedSubLayer: describedFeatureAction\r\n ? describedFeatureAction.describedFeature.describedSubLayer\r\n : undefined,\r\n saveInProgress,\r\n updateFeatureInfo: updateFeatureInfo\r\n ? (this.editWfstStatus.updateFeatureInfo = true)\r\n : false,\r\n })\r\n )\r\n // tap(result => console.log('Edit modal: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.editWfstService.showModal();\r\n this.updateProperty();\r\n\r\n // GENERAL SUBSCRIPTION\r\n this.subscription.add(\r\n this.editWfstService.transactionFinished$.subscribe((value) => {\r\n if (value) {\r\n this.hideModal(value);\r\n }\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.editWfstService.uploadAttachmentHasBeenFinished$.subscribe(\r\n (value) => {\r\n if (value) {\r\n this.attachmentHasBeenUpload();\r\n }\r\n }\r\n )\r\n );\r\n\r\n this.subscription.add(\r\n this.sessionStorageService\r\n .observe(ELogin.USERISLOGGEDIN)\r\n .subscribe(() => {\r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME);\r\n })\r\n );\r\n\r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME);\r\n\r\n // EDIT WFST MODAL FOOTER SUBSCRIPTION\r\n this.subscription.add(\r\n this.editWfstService.editGeometryClick$.subscribe(() => {\r\n this.editGeometry();\r\n this.dynamicModalService.temporaryHide('editWfst', true);\r\n this.mapActionDialogService.show(\r\n 'editWfst',\r\n 'wfst_editGeometri',\r\n IsyEditGeometryActionDialogComponent,\r\n undefined,\r\n { position: 'right' }\r\n );\r\n })\r\n );\r\n this.subscription.add(\r\n this.editWfstService.cancelFeatureClick$.subscribe(() => {\r\n this.hideModal();\r\n })\r\n );\r\n this.subscription.add(\r\n this.editWfstService.updateFeatureClick$.subscribe(() => {\r\n this.updateFeature();\r\n })\r\n );\r\n this.subscription.add(\r\n this.editWfstService.insertFeatureClick$.subscribe(() => {\r\n this.insertFeature();\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.editWfstService.removeFeatureClick$.subscribe(() => {\r\n this.removeFeature();\r\n })\r\n );\r\n\r\n // DYNAMIC MODAL FOOTER SUBSCRIPTION\r\n this.subscription.add(\r\n this.commonService.dynamicModalCloseButtonClick$.subscribe((value) => {\r\n if (value === 'editWfst') {\r\n this.commonService.dynamicModalCloseButtonClick(undefined);\r\n this.hideModal();\r\n }\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.commonService.dynamicModalAcceptButtonClick$.subscribe((value) => {\r\n if (value === 'editWfst') {\r\n this.commonService.dynamicModalAcceptButtonClick(undefined);\r\n this.insertFeature();\r\n }\r\n })\r\n );\r\n\r\n // EDIT GEOMETRY MAP ACTION DIALOG SUBSCRIPTION\r\n this.subscription.add(\r\n this.editWfstService.saveEditGeometryClick$.subscribe(() => {\r\n this.mapLibNgService.map().deactivateModifyFeature();\r\n this.stopEditGeometry();\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.editWfstService.cancelEditeGeometryClick$.subscribe(() => {\r\n this.refreshEditedGeometry();\r\n this.stopEditGeometry();\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n hideModal(transactionFinished?: any): void {\r\n if (!this.hideModalInProgress) {\r\n if (transactionFinished) {\r\n this.editWfstStatus.status = transactionFinished;\r\n }\r\n if (\r\n this.editWfstStatus.insertHasBeenClicked ||\r\n this.editWfstStatus.updateHasBeenCliked ||\r\n this.editWfstStatus.removeHasBeenClicked\r\n ) {\r\n setTimeout(() => {\r\n this.editWfstService.stopSaveInProgress();\r\n this.onHidden();\r\n }, 800);\r\n } else {\r\n this.onHidden();\r\n }\r\n this.hideModalInProgress = true;\r\n }\r\n }\r\n\r\n onHidden(): void {\r\n if (!this.editWfstStatus.editGeometryIsActive) {\r\n this.editWfstService.hideModal();\r\n // console.log('onHidden properties: ', this.property);\r\n // Property layerguid not found after changing to async loading.\r\n // But layer seems to contain new features. Is this needed?\r\n // Einar 26.01.23\r\n // this.mapLibNgService.map().refreshLayerByGuid(this.property['layerguid']);\r\n this.mapLibNgService.map().clearHighlightedFeatures();\r\n\r\n switch (true) {\r\n case this.editWfstStatus.status &&\r\n this.editWfstStatus.status.success !== true:\r\n this.toasterService.error(this.editWfstStatus.status.message);\r\n break;\r\n case this.editWfstStatus.insertHasBeenClicked:\r\n this.toasterService.success('objectSaved_toaster_msg');\r\n break;\r\n case this.editWfstStatus.updateHasBeenCliked:\r\n this.toasterService.success('objectUpdated_toaster_msg');\r\n break;\r\n case this.editWfstStatus.removeHasBeenClicked:\r\n this.toasterService.success('objectDeleted_toaster_msg');\r\n break;\r\n case this.editWfstStatus.updateFeatureInfo &&\r\n !this.editWfstStatus.updateHasBeenCliked:\r\n this.toasterService.warning('objectNotUpdated_toaster_msg');\r\n break;\r\n default:\r\n this.toasterService.warning('objectNotSaved_toaster_msg');\r\n break;\r\n }\r\n this.commonService.hideInfoPanel(false);\r\n this.commonService.hideSearchBar(false);\r\n this.dynamicModalService.hide('editWfst');\r\n }\r\n }\r\n\r\n insertFeature(): void {\r\n this.editWfstStatus.insertHasBeenClicked = true;\r\n this.editWfstService.startSaveInProgress();\r\n const describedSource =\r\n this.describedFeature.describedFeature.describedSource;\r\n const describedSubLayer =\r\n this.describedFeature.describedFeature.describedSubLayer;\r\n const geometry = this.describedFeature.geometry;\r\n this.describedData = { describedSource, describedSubLayer, geometry };\r\n if (this.attachments.length > 0) {\r\n this.editWfstService.postAttachmentStart(this.attachments);\r\n } else {\r\n this.editWfstService.noAttachmentToUpload();\r\n }\r\n }\r\n\r\n updateFeature(): void {\r\n this.editWfstStatus.updateHasBeenCliked = true;\r\n this.editWfstService.startSaveInProgress();\r\n const describedSource =\r\n this.describedFeature.describedFeature.describedSource;\r\n const describedSubLayer =\r\n this.describedFeature.describedFeature.describedSubLayer;\r\n const geometry = this.describedFeature.geometry;\r\n this.describedData = { describedSource, describedSubLayer, geometry };\r\n if (this.attachments.length > 0) {\r\n this.editWfstService.postAttachmentStart(this.attachments);\r\n } else {\r\n this.editWfstService.noAttachmentToUpload();\r\n }\r\n }\r\n\r\n removeFeature(): void {\r\n this.editWfstStatus.removeHasBeenClicked = true;\r\n this.editWfstService.startSaveInProgress();\r\n const describedSource =\r\n this.describedFeature.describedFeature.describedSource;\r\n const describedSubLayer =\r\n this.describedFeature.describedFeature.describedSubLayer;\r\n const geometry = this.describedFeature.geometry;\r\n this.describedData = { describedSource, describedSubLayer, geometry };\r\n this.editWfstService.noAttachmentToUpload();\r\n }\r\n\r\n private attachmentHasBeenUpload(): Promise {\r\n const promises: Promise[] = [];\r\n if (!this.editWfstStatus.uploadInProgress) {\r\n this.editWfstStatus.uploadInProgress = true;\r\n this.attachments = [];\r\n switch (true) {\r\n case this.editWfstStatus.insertHasBeenClicked:\r\n promises.push(this.startInsertFeature());\r\n break;\r\n case this.editWfstStatus.updateHasBeenCliked:\r\n this.startUpdateFeature();\r\n break;\r\n case this.editWfstStatus.removeHasBeenClicked:\r\n this.startRemoveFeature();\r\n break;\r\n }\r\n }\r\n return Promise.all(promises).then(undefined);\r\n }\r\n\r\n private generateAttachmentsString(): string {\r\n const attachmentUrls = this.editWfstService.attachmentsUrls;\r\n let newAttachmentUrlsString = '';\r\n attachmentUrls.forEach((attachment, index) => {\r\n newAttachmentUrlsString += attachment;\r\n if (attachmentUrls.length > 0) {\r\n if (index + 1 < attachmentUrls.length) {\r\n newAttachmentUrlsString += '|';\r\n }\r\n }\r\n });\r\n return newAttachmentUrlsString;\r\n }\r\n\r\n private startInsertFeature(): Promise {\r\n const newAttachmentUrlsString = this.generateAttachmentsString();\r\n if (this.describedData?.describedSubLayer?.sendUserName === 'true') {\r\n this.property['username'] = this.userName;\r\n }\r\n if (newAttachmentUrlsString !== '') {\r\n this.property[this.attachmentPropertyName]\r\n ? (this.property[this.attachmentPropertyName] +=\r\n '|' + newAttachmentUrlsString)\r\n : (this.property[this.attachmentPropertyName] =\r\n newAttachmentUrlsString);\r\n }\r\n Object.keys(this.property).forEach((key) => {\r\n this.describedData.geometry.set(key, this.property[key]);\r\n });\r\n return this.mapLibNgService\r\n .map()\r\n .insertFeature(\r\n this.describedData.describedSubLayer.id,\r\n this.describedData.describedSubLayer.name,\r\n this.describedData.describedSubLayer.geometryName,\r\n this.describedData.geometry,\r\n this.describedData.describedSource\r\n )\r\n .then(() => {\r\n this.mapLibNgService\r\n .map()\r\n .refreshLayerByGuid(this.describedData.describedSubLayer.id);\r\n });\r\n }\r\n\r\n private startUpdateFeature(): void {\r\n const newAttachmentUrlsString = this.generateAttachmentsString();\r\n if (newAttachmentUrlsString !== '') {\r\n this.property[this.attachmentPropertyName]\r\n ? (this.property[this.attachmentPropertyName] +=\r\n '|' + newAttachmentUrlsString)\r\n : (this.property[this.attachmentPropertyName] =\r\n newAttachmentUrlsString);\r\n }\r\n const featureResponse = this.featureInfoService.getFeatureResponse();\r\n if (this.describedData?.describedSubLayer?.sendUserName === 'true') {\r\n this.property['username'] = this.userName;\r\n }\r\n featureResponse.olFeature.setProperties(this.property);\r\n this.mapLibNgService.map().updateFeature(featureResponse.olFeature);\r\n this.mapLibNgService.map().deactivateModifyFeature();\r\n const subLayerId =\r\n this.describedFeature.describedFeature.describedSubLayer.id;\r\n if (subLayerId) {\r\n setTimeout(() => {\r\n this.mapLibNgService.map().refreshLayerByGuid(subLayerId);\r\n }, 2000);\r\n }\r\n }\r\n\r\n private startRemoveFeature(): void {\r\n const featureResponse = this.featureInfoService.getFeatureResponse();\r\n if (this.describedData?.describedSubLayer?.sendUserName === 'true') {\r\n this.property['username'] = this.userName;\r\n }\r\n featureResponse.olFeature.setProperties(this.property);\r\n this.mapLibNgService.map().deleteFeature(featureResponse.olFeature);\r\n\r\n const subLayerId =\r\n this.describedFeature.describedFeature.describedSubLayer.id;\r\n if (subLayerId) {\r\n setTimeout(() => {\r\n this.mapLibNgService.map().refreshLayerByGuid(subLayerId);\r\n }, 2000);\r\n }\r\n }\r\n\r\n private updateProperty(): void {\r\n if (this.featureInfoService.getFeatureResponse()) {\r\n if (Object.keys(this.property).length === 0) {\r\n this.property = this.featureInfoService.getFeatureResponse().properties;\r\n }\r\n }\r\n }\r\n\r\n editGeometry(): void {\r\n this.editWfstStatus.editGeometryIsActive = true;\r\n const featureResponse = this.featureInfoService.getFeatureResponse();\r\n const options = {\r\n features: featureResponse.olFeature,\r\n snappingEnabled: this.editWfstService.getSnappingStatus(),\r\n };\r\n this.copyCoordinates = [...options.features.getGeometry().getCoordinates()];\r\n this.mapLibNgService.map().deactivateModifyFeature();\r\n this.mapLibNgService.map().activateModifyFeature(options);\r\n this.editWfstService.pauseEvents();\r\n }\r\n\r\n private refreshEditedGeometry(): void {\r\n this.mapLibNgService.map().deactivateModifyFeature();\r\n if (this.copyCoordinates.length > 0) {\r\n const featureResponse = this.featureInfoService.getFeatureResponse();\r\n const options = {\r\n features: featureResponse.olFeature,\r\n snappingEnabled: this.editWfstService.getSnappingStatus(),\r\n };\r\n options.features.getGeometry().setCoordinates(this.copyCoordinates);\r\n this.mapLibNgService.map().activateModifyFeature(options);\r\n this.mapLibNgService.map().deactivateModifyFeature();\r\n }\r\n }\r\n\r\n private stopEditGeometry(): void {\r\n this.editWfstService.showModal();\r\n this.editWfstStatus.editGeometryIsActive = false;\r\n this.editWfstService.continueEvents();\r\n }\r\n\r\n dropped(files: NgxFileDropEntry[], propertyName: string): void {\r\n this.attachmentPropertyName = propertyName;\r\n for (const droppedFile of files) {\r\n if (droppedFile.fileEntry.isFile) {\r\n const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;\r\n fileEntry.file((file: File) => {\r\n this.attachments.push(file);\r\n });\r\n }\r\n }\r\n }\r\n\r\n uploadFiles(files: any, propertyName: string): void {\r\n this.attachmentPropertyName = propertyName;\r\n if (files && files.length) {\r\n for (const file of files) {\r\n this.attachments.push(file);\r\n }\r\n }\r\n }\r\n\r\n removeDroppedAttachment(index: any): void {\r\n this.attachments.splice(index, 1);\r\n this.attachmentFileInput.value = '';\r\n }\r\n\r\n removeAttachment(attachmentIndex: number, propertyName: string): void {\r\n const attachments = this.property[propertyName].split('|');\r\n attachments.splice(attachmentIndex, 1);\r\n let newAttachamentString = '';\r\n attachments.forEach((attachment, index) => {\r\n newAttachamentString += attachment;\r\n if (index + 1 < attachments.length) {\r\n newAttachamentString += '|';\r\n }\r\n });\r\n this.property[propertyName] = newAttachamentString;\r\n this.attachmentFileInput.value = '';\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {{feature.text}}\r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{val}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{feature.text}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'wfst_attachments' | translate}}\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'select_file_for_upload' | translate}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{file | attachmentFileName}}\r\n \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n
    \r\n {{attachment.name}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit } from '@angular/core';\r\nimport { IsyEditWfstService } from '../isy-edit-wfst.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { Subscription } from 'rxjs';\r\nimport { PermissionService } from '@isygis/permission';\r\n@Component({\r\n selector: 'lib-isy-edit-wfst-modal-footer',\r\n templateUrl: './isy-edit-wfst-modal-footer.component.html',\r\n})\r\nexport class IsyEditWfstModalFooterComponent implements OnInit {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription: Subscription = new Subscription();\r\n snapping = false;\r\n\r\n constructor(\r\n private editWfstService: IsyEditWfstService,\r\n private permissionService: PermissionService,\r\n private mapEmitterService: IsyMapEmitterService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapEmitterService.snappingEnabledEmitter$.subscribe(\r\n (status) => (this.snapping = status)\r\n )\r\n );\r\n }\r\n\r\n updateEnabled(): boolean {\r\n return this.permissionService.hasResource('GeoInnsynEdit');\r\n }\r\n\r\n deleteEnabled(): boolean {\r\n return this.permissionService.hasResource('GeoInnsynDelete');\r\n }\r\n\r\n updateFeature(): void {\r\n this.editWfstService.updateFeatureClick();\r\n }\r\n\r\n removeFeature(): void {\r\n this.editWfstService.removeFeatureClick();\r\n }\r\n\r\n editGeometry(): void {\r\n this.editWfstService.editGeometryClick();\r\n }\r\n\r\n hideModal(): void {\r\n this.editWfstService.cancelFeatureClick();\r\n }\r\n\r\n toggleSnapping() {\r\n this.mapEmitterService.emitSnappingEnabled(!this.snapping);\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyToasterModule } from '@isygis/isy-toaster';\r\nimport { NgxFileDropModule } from 'ngx-file-drop';\r\nimport { AttachmentFilterPipe } from './attachment-filter.pipe';\r\nimport { AttachmentFileNamePipe } from './attachment-file-name.pipe';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { IsyEditWfstModalContentComponent } from './isy-edit-wfst-modal-content/isy-edit-wfst-modal-content.component';\r\nimport { IsyEditGeometryActionDialogComponent } from './isy-edit-geometry-action-dialog/isy-edit-geometry-action-dialog.component';\r\nimport { IsyEditWfstModalFooterComponent } from './isy-edit-wfst-modal-footer/isy-edit-wfst-modal-footer.component';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { EditWfstDirective } from './edit-wfst.directive';\r\nimport { IsyInsertWfstModalFooterComponent } from './isy-insert-wfst-modal-footer/isy-insert-wfst-modal-footer.component';\r\n\r\n@NgModule({\r\n imports: [\r\n FormsModule,\r\n CommonModule,\r\n IsySpinnerModule,\r\n FontAwesomeModule,\r\n IsyToasterModule,\r\n NgxFileDropModule,\r\n IsyTranslateModule,\r\n BsDropdownModule.forRoot(),\r\n ],\r\n declarations: [\r\n AttachmentFilterPipe,\r\n AttachmentFileNamePipe,\r\n IsyEditWfstModalContentComponent,\r\n IsyEditGeometryActionDialogComponent,\r\n IsyEditWfstModalFooterComponent,\r\n IsyInsertWfstModalFooterComponent,\r\n EditWfstDirective,\r\n ],\r\n exports: [EditWfstDirective],\r\n})\r\nexport class IsyEditWfstModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n combineLatest,\r\n BehaviorSubject,\r\n Subject,\r\n ReplaySubject,\r\n} from 'rxjs';\r\nimport {\r\n map,\r\n publishReplay,\r\n refCount,\r\n catchError,\r\n mergeMap,\r\n multicast,\r\n take,\r\n} from 'rxjs/operators';\r\nimport {\r\n IsyMapEmitterService,\r\n MapLibNgService,\r\n IsyMapService,\r\n} from '@isygis/isy-map';\r\nimport { IsyLayersService } from '@isygis/isy-layers';\r\nimport { IsyFeatureInfoService } from '@isygis/isy-feature-info';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { ELogin } from '@isygis/isy-configs';\r\n\r\nexport interface IDescribedFeature {\r\n describedSource: any; // ol.source.Vector\r\n describedSubLayer: any; // ol.Feature\r\n}\r\n\r\nexport interface IInsertFeature {\r\n describedFeature: IDescribedFeature;\r\n geometry: any;\r\n}\r\n\r\ninterface IUploadAttachment {\r\n First: string;\r\n Second: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyEditWfstService {\r\n constructor(\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapLibNgService: MapLibNgService,\r\n private layersService: IsyLayersService,\r\n private featureInfoService: IsyFeatureInfoService,\r\n private mapService: IsyMapService,\r\n private sessionStorageService: SessionStorageService,\r\n private httpClient: HttpClient\r\n ) {}\r\n\r\n // EDIT WFST MODAL FOOTER\r\n private editGeometryClickAction = new Subject();\r\n editGeometryClick$ = this.editGeometryClickAction.asObservable();\r\n private insertFeatureClickAction = new Subject();\r\n insertFeatureClick$ = this.insertFeatureClickAction.asObservable();\r\n private removeFeatureClickAction = new Subject();\r\n removeFeatureClick$ = this.removeFeatureClickAction.asObservable();\r\n private updateFeatureClickAction = new Subject();\r\n updateFeatureClick$ = this.updateFeatureClickAction.asObservable();\r\n private cancelFeatureClickAction = new Subject();\r\n cancelFeatureClick$ = this.cancelFeatureClickAction.asObservable();\r\n\r\n // EDIT GEOMETRY MAP ACTION DIALOG\r\n private saveEditGeometryClickAction = new Subject();\r\n saveEditGeometryClick$ = this.saveEditGeometryClickAction.asObservable();\r\n private cancelEditeGeometryClickAction = new Subject();\r\n cancelEditeGeometryClick$ =\r\n this.cancelEditeGeometryClickAction.asObservable();\r\n\r\n private transactionInsertEndEmitter$ =\r\n this.mapEmitterService.transactionInsertEndEmitter$;\r\n private transactionUpdateEndEmitter$ =\r\n this.mapEmitterService.transactionUpdateEndEmitter$;\r\n private transactionRemoveEndEmitter$ =\r\n this.mapEmitterService.transactionRemoveEndEmitter$;\r\n private featureHasBeenDescribedEmitter$ =\r\n this.mapEmitterService.featureHasBeenDescribedEmitter$;\r\n private addLayerFeatureEndEmitter$ =\r\n this.mapEmitterService.addLayerFeatureEndEmitter$;\r\n private addFeatureAction$ = this.layersService.addFeatureAction$;\r\n private updateFeatureAction = this.featureInfoService.updateFeatureInfo$;\r\n private describedFeatureAction = new BehaviorSubject(\r\n undefined\r\n );\r\n describedFeatureAction$ = this.describedFeatureAction.asObservable();\r\n\r\n private startUploadAttachmentsAction = new BehaviorSubject(false);\r\n private startUploadAttachmentIndex = new BehaviorSubject(0);\r\n private postAttachmentsAction = new BehaviorSubject([]);\r\n private uploadAttachmentHasBeenFinishedAction = new BehaviorSubject(\r\n false\r\n );\r\n attachmentsUrls = [];\r\n\r\n private saveInProgressAction = new BehaviorSubject(false);\r\n saveInProgress$ = this.saveInProgressAction.asObservable();\r\n\r\n private describedFeature$ = combineLatest([\r\n this.featureHasBeenDescribedEmitter$,\r\n this.addFeatureAction$,\r\n this.updateFeatureAction,\r\n ]).pipe(\r\n map(\r\n ([\r\n featureHasBeenDescribedEmitter,\r\n addFeatureAction,\r\n updateFeatureAction,\r\n ]: [any, boolean, any]) => {\r\n let described: IDescribedFeature;\r\n if (featureHasBeenDescribedEmitter) {\r\n described = {\r\n describedSubLayer: featureHasBeenDescribedEmitter[0],\r\n describedSource: featureHasBeenDescribedEmitter[1],\r\n };\r\n }\r\n let result = Promise.resolve(undefined);\r\n if (addFeatureAction && described) {\r\n result = this.mapLibNgService\r\n .map()\r\n .initEdit(described.describedSubLayer)\r\n .then((status) => {\r\n if (status) {\r\n const addOptions = {\r\n translate: {\r\n add_layer_start_drawing: 'Klikk for å tegne',\r\n add_layer_continue_drawing: 'Fortsett å tegne',\r\n add_layer_modify_object: 'Klikk for å redigere',\r\n },\r\n toolType: described.describedSubLayer.geometryType, // Geometry type, Point, Line, Polygon\r\n snappingEnabled: this.getSnappingStatus(),\r\n snappingFeatures: [],\r\n };\r\n this.pauseEvents();\r\n this.mapLibNgService.map().activateAddLayerFeature(addOptions);\r\n }\r\n return described;\r\n });\r\n }\r\n if (updateFeatureAction && described) {\r\n result = this.mapLibNgService\r\n .map()\r\n .initEdit(described.describedSubLayer)\r\n .then(() => described);\r\n }\r\n return result;\r\n }\r\n ),\r\n publishReplay(1),\r\n refCount()\r\n // tap(result => console.log('describedFeature', result))\r\n );\r\n\r\n showInsertDialogAction$ = combineLatest([\r\n this.addLayerFeatureEndEmitter$,\r\n this.addFeatureAction$,\r\n this.describedFeature$,\r\n ]).pipe(\r\n map(\r\n ([geometry, addFeatureAction, describedFeaturePromise]: [\r\n any,\r\n boolean,\r\n Promise\r\n ]) => {\r\n return describedFeaturePromise.then((describedFeature) => {\r\n if (!!addFeatureAction && !!describedFeature && !!geometry) {\r\n const insertFeature: IInsertFeature = {\r\n describedFeature,\r\n geometry,\r\n };\r\n this.describedFeatureAction.next(insertFeature);\r\n }\r\n return !!addFeatureAction && !!describedFeature && !!geometry;\r\n });\r\n }\r\n ),\r\n publishReplay(1),\r\n refCount()\r\n // tap(result => console.log('insertGeometry', result))\r\n );\r\n\r\n showUpdateDialogAction$ = combineLatest([\r\n this.updateFeatureAction,\r\n this.describedFeature$,\r\n ]).pipe(\r\n map(\r\n ([updateFeatureAction, describedFeaturePromise]: [\r\n boolean,\r\n Promise\r\n ]) => {\r\n return describedFeaturePromise.then((describedFeature) => {\r\n const insertFeature: IInsertFeature = {\r\n describedFeature,\r\n geometry: undefined,\r\n };\r\n if (!!updateFeatureAction && !!describedFeature) {\r\n this.describedFeatureAction.next(insertFeature);\r\n }\r\n return !!updateFeatureAction && !!describedFeature;\r\n });\r\n }\r\n ),\r\n publishReplay(1),\r\n refCount()\r\n );\r\n\r\n transactionFinished$ = combineLatest([\r\n this.transactionInsertEndEmitter$,\r\n this.transactionUpdateEndEmitter$,\r\n this.transactionRemoveEndEmitter$,\r\n ]).pipe(\r\n map(\r\n ([\r\n transactionInsertEndEmitter,\r\n transactionUpdateEndEmitter,\r\n transactionRemoveEndEmitter,\r\n ]: [any, any, any]) => {\r\n return (\r\n transactionInsertEndEmitter ||\r\n transactionUpdateEndEmitter ||\r\n transactionRemoveEndEmitter\r\n );\r\n }\r\n ),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount()\r\n );\r\n\r\n private postAttachment$ = combineLatest([\r\n this.startUploadAttachmentsAction,\r\n this.startUploadAttachmentIndex,\r\n this.postAttachmentsAction,\r\n ]).pipe(\r\n mergeMap(\r\n ([\r\n startUploadAttachmentsAction,\r\n startUploadAttachmentIndex,\r\n attachments,\r\n ]: [boolean, number, any[]]) => {\r\n if (\r\n startUploadAttachmentsAction &&\r\n startUploadAttachmentIndex >= 0 &&\r\n attachments.length > 0\r\n ) {\r\n let urlAttachment = this.mapService.getMapConfig().attachmentHost;\r\n const isyToken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n urlAttachment += '/api/v1/upload/files';\r\n const attachment = attachments[startUploadAttachmentIndex];\r\n const formData = new FormData();\r\n formData.append(\r\n 'application',\r\n this.mapService.getMapConfig().instance\r\n );\r\n formData.append(\r\n 'project',\r\n this.mapService.getMapConfig().projectName\r\n );\r\n formData.append('isytoken', isyToken);\r\n formData.append('file', attachment, attachment.name);\r\n return this.httpClient.post(urlAttachment, formData).pipe(\r\n map((response: any) => {\r\n return response.Result.find((value) => value.First === 'url').Second;\r\n }),\r\n // publishReplay(1),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount(),\r\n catchError(this.handlePostAttachmentError.bind(this))\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n }\r\n ),\r\n publishReplay(1),\r\n refCount(),\r\n catchError(this.handlePostAttachmentError.bind(this))\r\n );\r\n\r\n uploadAttachmentHasBeenFinished$ = combineLatest([\r\n this.uploadAttachmentHasBeenFinishedAction,\r\n this.postAttachment$,\r\n this.startUploadAttachmentIndex,\r\n this.postAttachmentsAction,\r\n ]).pipe(\r\n map(\r\n ([\r\n uploadAttachmentHasBeenFinishedAction,\r\n postAttachment,\r\n startUploadAttachmentIndex,\r\n postAttachmentsAction,\r\n ]: [boolean, any, number, any[]]) => {\r\n if (postAttachment && !uploadAttachmentHasBeenFinishedAction) {\r\n const findAttachment = this.attachmentsUrls.find(\r\n (attachmentUrl) => attachmentUrl === postAttachment\r\n );\r\n if (!findAttachment) {\r\n this.attachmentsUrls.push(postAttachment);\r\n }\r\n if (startUploadAttachmentIndex === 0) {\r\n if (this.attachmentsUrls.length === postAttachmentsAction.length) {\r\n this.startUploadAttachmentsAction.next(false);\r\n this.uploadAttachmentHasBeenFinishedAction.next(true);\r\n }\r\n }\r\n if (postAttachment) {\r\n if (startUploadAttachmentIndex > 0) {\r\n this.startUploadAttachmentIndex.next(\r\n startUploadAttachmentIndex - 1\r\n );\r\n }\r\n }\r\n }\r\n if (uploadAttachmentHasBeenFinishedAction) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n )\r\n // tap(result => console.log('uploadAttachmentHasBeenFinished: ', result))\r\n );\r\n\r\n getSnappingStatus(): boolean {\r\n let status = false;\r\n const sub = this.mapEmitterService.snappingEnabledEmitter$\r\n .pipe(take(1))\r\n .subscribe((value) => (status = value));\r\n sub.unsubscribe();\r\n return status;\r\n }\r\n\r\n showModal(): void {\r\n this.continueEvents();\r\n }\r\n\r\n hideModal(): void {\r\n this.mapLibNgService.map().deactivateAddLayerFeature();\r\n this.mapEmitterService.emitTransactionInsertEnd(undefined);\r\n this.mapEmitterService.emitTransactionUpdateEnd(undefined);\r\n this.mapEmitterService.emitTransactionRemoveEnd(undefined);\r\n this.mapEmitterService.emitFeatureHasBeenDescribed(undefined);\r\n this.mapEmitterService.emitAddLayerFeatureEnd(undefined);\r\n this.layersService.stopAddFeature();\r\n this.featureInfoService.stopUpdateFeature();\r\n this.featureInfoService.setFeatureResponse(undefined);\r\n this.describedFeatureAction.next(undefined);\r\n this.uploadAttachmentHasBeenFinishedAction.next(false);\r\n this.postAttachmentsAction.next([]);\r\n this.attachmentsUrls = [];\r\n }\r\n\r\n startSaveInProgress(): void {\r\n this.saveInProgressAction.next(true);\r\n }\r\n\r\n stopSaveInProgress(): void {\r\n this.saveInProgressAction.next(false);\r\n }\r\n\r\n postAttachmentStart(attachments: any[]): void {\r\n this.startUploadAttachmentsAction.next(true);\r\n this.startUploadAttachmentIndex.next(attachments.length - 1);\r\n this.postAttachmentsAction.next(attachments);\r\n }\r\n\r\n noAttachmentToUpload(): void {\r\n this.uploadAttachmentHasBeenFinishedAction.next(true);\r\n }\r\n\r\n pauseEvents(): void {\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureHoverStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureHoverEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureHoverMove);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().GetClickCoordinates);\r\n }\r\n continueEvents(): void {\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureHoverStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureHoverEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureHoverMove);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().GetClickCoordinates);\r\n }\r\n\r\n private handlePostAttachmentError(err): Promise {\r\n this.startUploadAttachmentsAction.next(false);\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return new Promise((resolve) => resolve('UploadError'));\r\n }\r\n\r\n // EDIT WFST MODAL FOOTER\r\n editGeometryClick(): void {\r\n this.editGeometryClickAction.next(true);\r\n }\r\n\r\n insertFeatureClick(): void {\r\n this.insertFeatureClickAction.next(true);\r\n }\r\n\r\n removeFeatureClick(): void {\r\n this.removeFeatureClickAction.next(true);\r\n }\r\n\r\n updateFeatureClick(): void {\r\n this.updateFeatureClickAction.next(true);\r\n }\r\n\r\n cancelFeatureClick(): void {\r\n this.cancelFeatureClickAction.next(true);\r\n }\r\n\r\n // EDIT GEOMETRY MAP ACTION DIALOG\r\n saveEditGeometryClick(): void {\r\n this.saveEditGeometryClickAction.next(true);\r\n }\r\n\r\n cancelEditeGeometryClick(): void {\r\n this.cancelEditeGeometryClickAction.next(true);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { IsyEditWfstService } from '../isy-edit-wfst.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { PermissionService } from '@isygis/permission';\r\n@Component({\r\n selector: 'lib-isy-insert-wfst-modal-footer',\r\n templateUrl: './isy-insert-wfst-modal-footer.component.html',\r\n})\r\nexport class IsyInsertWfstModalFooterComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n constructor(\r\n private editWfstService: IsyEditWfstService,\r\n private permissionService: PermissionService,\r\n ) {}\r\n\r\n insertEnabled(): boolean {\r\n return this.permissionService.hasResource('GeoInnsynEdit');\r\n }\r\n\r\n insertFeature(): void {\r\n this.editWfstService.insertFeatureClick();\r\n }\r\n\r\n hideModal(): void {\r\n this.editWfstService.cancelFeatureClick();\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","export enum EEmptyContentColorPalete {\r\n DEFAULT = 'Default',\r\n PRIMARY = 'Primary',\r\n WARNING = 'Warning',\r\n DANGER = 'Danger',\r\n TRANSPARENT = 'Transparent',\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { EEmptyContentColorPalete } from './color-palete.model';\r\n\r\n@Component({\r\n selector: 'lib-isy-empty-content',\r\n templateUrl: './isy-empty-content.component.html',\r\n styleUrls: ['./isy-empty-content.component.scss'],\r\n})\r\nexport class IsyEmptyContentComponent {\r\n EEmptyContentColorPalete = EEmptyContentColorPalete;\r\n\r\n @Input() mainText: string;\r\n @Input() innerText: string;\r\n @Input() contentIcon: IconDefinition;\r\n @Input() iconColor: string;\r\n @Input() colorPalete: EEmptyContentColorPalete =\r\n EEmptyContentColorPalete.DEFAULT;\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor() {\r\n // empty\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n {{mainText | translate}}\r\n
    \r\n
    \r\n {{ 'emptyContentText' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{innerText | translate}}\r\n
    \r\n
    \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyEmptyContentComponent } from './isy-empty-content.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FontAwesomeModule, IsyTranslateModule],\r\n declarations: [IsyEmptyContentComponent],\r\n exports: [IsyEmptyContentComponent],\r\n})\r\nexport class IsyEmptyContentModule {}\r\n","import { Directive, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { Subscription, of, combineLatest } from 'rxjs';\r\nimport { mergeMap, map } from 'rxjs/operators';\r\nimport { IsyMapEmitterService, MapLibNgService } from '@isygis/isy-map';\r\nimport { IsyFeatureInfoService } from './isy-feature-info.service';\r\nimport { IsyAppFeatureInfoService } from '@isygis/isy-app-services';\r\nimport { IDomainLayer } from '@isygis/isy-configs';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Directive({\r\n selector: '[libFeatureInfo]',\r\n})\r\nexport class FeatureInfoDirective implements OnInit, OnDestroy {\r\n @Input() featureSelector = false;\r\n @Input() featureInfoOptions = undefined;\r\n\r\n subscriptions: Subscription = new Subscription();\r\n wmsLayerCounter;\r\n featureActivated = false;\r\n\r\n constructor(\r\n private mapEmitterService: IsyMapEmitterService,\r\n private featureInfoService: IsyFeatureInfoService,\r\n private appFeatureInfoService: IsyAppFeatureInfoService,\r\n private mapLibNgService: MapLibNgService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n activateFeatureInfoSelectorWithLayerName$ =\r\n this.commonService.activateFeatureInfoSelectorWithLayerName$;\r\n layerNamesForFeatureSelector$ = this.mapEmitterService.mapLoadEmitter$.pipe(\r\n map((value) => {\r\n const layerNamesForFeatureSelector = [];\r\n if (value) {\r\n const vectorLayers = value.config.vector;\r\n if (vectorLayers && vectorLayers.length > 0) {\r\n vectorLayers.forEach((v) => {\r\n if (v.featureinfo.showneighborlist === 'true') {\r\n layerNamesForFeatureSelector.push(v.name);\r\n }\r\n });\r\n }\r\n }\r\n return layerNamesForFeatureSelector;\r\n })\r\n );\r\n\r\n activateFeatureSelector$ = combineLatest([\r\n this.activateFeatureInfoSelectorWithLayerName$,\r\n this.layerNamesForFeatureSelector$,\r\n ]).pipe(\r\n map(\r\n ([\r\n activateFeatureInfoSelectorWithLayerName,\r\n layerNamesForFeatureSelector,\r\n ]: [boolean, any]) => {\r\n if (\r\n activateFeatureInfoSelectorWithLayerName &&\r\n layerNamesForFeatureSelector.length > 0\r\n ) {\r\n layerNamesForFeatureSelector.forEach((name) => {\r\n const options = {\r\n mode: '',\r\n style: 'select',\r\n layerName: name,\r\n };\r\n this.mapLibNgService.map().activateFeatureSelector(options);\r\n });\r\n } else if (!activateFeatureInfoSelectorWithLayerName) {\r\n this.mapLibNgService.map().deactivateFeatureSelector();\r\n }\r\n }\r\n )\r\n );\r\n\r\n ngOnInit(): void {\r\n if (this.featureSelector) {\r\n this.subscriptions.add(this.activateFeatureSelector$.subscribe());\r\n }\r\n\r\n if (this.featureInfoOptions) {\r\n this.featureInfoService.setFeatureInfoOptionsAction(\r\n this.featureInfoOptions\r\n );\r\n } else {\r\n this.featureInfoService.setFeatureInfoOptionsAction(undefined);\r\n }\r\n\r\n this.subscriptions.add(\r\n this.mapEmitterService.featureInfoStartEmitter$.subscribe(() => {\r\n // console.log('featureInfoStartEmitter', value);\r\n this.wmsLayerCounter = 0;\r\n this.appFeatureInfoService.setWmsLayerCount(this.wmsLayerCounter);\r\n this.featureInfoService.clearFeatureInfoLayers();\r\n })\r\n );\r\n\r\n this.subscriptions.add(\r\n this.mapEmitterService.featureInfoEndEmitter$\r\n .pipe(\r\n mergeMap((value) => {\r\n if (value && value.url) {\r\n this.appFeatureInfoService.setWmsLayerCount(\r\n this.wmsLayerCounter++\r\n );\r\n return this.appFeatureInfoService.handleFeatureInfoWms(value);\r\n } else {\r\n return of(value ? value : {});\r\n }\r\n })\r\n )\r\n .subscribe({\r\n next: (value: IDomainLayer) => {\r\n // console.log('featureInfoEndEmitter', value);\r\n this.featureInfoService.addFeatureInfoLayer(value);\r\n },\r\n error: (error) => {\r\n console.error('handleFeatureInfo Error:', error);\r\n },\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { ChartConfiguration } from 'chart.js';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IDomainLayer, EToolId } from '@isygis/isy-configs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyFeatureInfoChartService } from './isy-feature-info-chart.service';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-feature-info-chart',\r\n templateUrl: './isy-feature-info-chart.component.html',\r\n styleUrls: ['./isy-feature-info-chart.component.scss'],\r\n})\r\nexport class IsyFeatureInfoChartComponent implements OnInit {\r\n myChart;\r\n title = '';\r\n showFeedbackBtn = false;\r\n @Input() featureInfoLayer: IDomainLayer; // optional input\r\n @Input() showSpinnerWhenLoad = true; // optional input for show spinner when loading data, default is true\r\n @Input() feedbackButtonAvailable = false;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n hasActiveFase = false;\r\n hasDoneFase = false;\r\n isLoad = false;\r\n\r\n doughnutChartLabels: string[] = [];\r\n doughnutChartDatasets: ChartConfiguration<'doughnut'>['data']['datasets'] =\r\n [];\r\n doughnutChartLegend = false;\r\n doughnutChartOptions: ChartConfiguration<'doughnut'>['options'] = {\r\n responsive: true,\r\n maintainAspectRatio: false,\r\n events: ['mousemove', 'click'],\r\n\r\n cutout: '50%',\r\n plugins: {\r\n tooltip: {\r\n callbacks: {\r\n label: function (context) {\r\n return context.label || '';\r\n },\r\n },\r\n },\r\n legend: {\r\n display: false,\r\n },\r\n title: {\r\n display: false,\r\n },\r\n },\r\n layout: {\r\n padding: {\r\n left: 0,\r\n right: 0,\r\n top: 0,\r\n bottom: 10,\r\n },\r\n },\r\n };\r\n\r\n constructor(\r\n private toasterService: IsyToasterService,\r\n private mapService: IsyMapService,\r\n private commonService: IsyCommonService,\r\n private featureInfoChartService: IsyFeatureInfoChartService\r\n ) {}\r\n\r\n private projectConfig$ = this.mapService.projectConfig$;\r\n\r\n getSaksinfoMedFaser$ = this.featureInfoChartService.getSaksinfoMedFaser$.pipe(\r\n map((saksfaser) => {\r\n setTimeout(() => {\r\n this.isLoad = true;\r\n }, 100);\r\n this.showFeedbackBtn = false;\r\n this.doughnutChartDatasets = [];\r\n this.doughnutChartLabels = [];\r\n const dataset = {\r\n data: [],\r\n label: 'N/A',\r\n backgroundColor: [],\r\n borderColor: [],\r\n borderWidth: [],\r\n borderAlign: [],\r\n hoverBackgroundColor: [],\r\n hoverBorderColor: [],\r\n };\r\n if (saksfaser?.saksfaser?.length > 0) {\r\n // For changing the status of the last fase with status-code = '2' to status-code '1' WHEN there is no status code '1' at all.\r\n // kodeverdi === '0' -> \"Ikke påbegynt\", kodeverdi === '1' -> \"Påbegynt\", kodeverdi === '2' -> \"Ferdig\"\r\n saksfaser?.saksfaser.forEach((d) => {\r\n if (d.status.kodeverdi === '1') {\r\n this.hasActiveFase = true;\r\n }\r\n if (d.status.kodeverdi === '2') {\r\n this.hasDoneFase = true;\r\n }\r\n });\r\n if (!this.hasActiveFase && this.hasDoneFase) {\r\n let indexFound = false;\r\n let index;\r\n saksfaser.saksfaser.forEach((t) => {\r\n if (t.status.kodeverdi === '0') {\r\n if (!indexFound) {\r\n index = saksfaser.saksfaser.indexOf(t);\r\n indexFound = true;\r\n }\r\n }\r\n });\r\n if (indexFound) {\r\n saksfaser.saksfaser[index - 1].status.kodeverdi = '1';\r\n }\r\n }\r\n\r\n // tslint:disable-next-line: no-shadowed-variable\r\n saksfaser.saksfaser.forEach((data) => {\r\n dataset.data.push(10);\r\n switch (data.status.kodeverdi) {\r\n case '2': {\r\n this.doughnutChartLabels.push(data.faseNavn);\r\n dataset.backgroundColor.push('#2C5379');\r\n dataset.borderColor.push('white');\r\n dataset.borderWidth.push('7');\r\n dataset.borderAlign.push('inner');\r\n dataset.hoverBackgroundColor.push('#189395');\r\n dataset.hoverBorderColor.push('white');\r\n break;\r\n }\r\n case '1': {\r\n this.doughnutChartLabels.push(data.faseNavn);\r\n dataset.backgroundColor.push('#c3e7e7');\r\n dataset.borderColor.push('yellow');\r\n dataset.borderWidth.push('7');\r\n dataset.borderAlign.push('inner');\r\n dataset.hoverBackgroundColor.push('#99e4e4');\r\n dataset.hoverBorderColor.push('yellow');\r\n // For showing codeverdi '1' on top of the diagram\r\n this.getTitle(data.faseNavn, saksfaser.saksfaser);\r\n break;\r\n }\r\n default: {\r\n this.doughnutChartLabels.push(data.faseNavn);\r\n dataset.backgroundColor.push('#e9e6e6');\r\n dataset.borderColor.push('white');\r\n dataset.borderWidth.push('7');\r\n dataset.borderAlign.push('inner');\r\n dataset.hoverBackgroundColor.push('#cecdcd');\r\n dataset.hoverBorderColor.push('white');\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n // When there is no data to show\r\n else {\r\n this.title = 'noe gikk galt';\r\n dataset.data.push(10);\r\n dataset.backgroundColor.push('#e9e6e6');\r\n dataset.borderColor.push('white');\r\n dataset.borderWidth.push('7');\r\n dataset.borderAlign.push('inner');\r\n dataset.hoverBackgroundColor.push('#cecdcd');\r\n dataset.hoverBorderColor.push('white');\r\n }\r\n this.doughnutChartDatasets.push(dataset);\r\n this.myChart = document.getElementById('myChart');\r\n // For showing GiInnspill button\r\n if ((saksfaser?.saksmappe?.currentfasefristtitle?.length > 0 ||\r\n saksfaser?.saksmappe?.currentfasetypekodeverdi === '1') && (this.feedbackButtonAvailable)) {\r\n this.showFeedbackBtn = true;\r\n }\r\n return saksfaser;\r\n })\r\n );\r\n\r\n vm$ = combineLatest([this.getSaksinfoMedFaser$, this.projectConfig$,]).pipe(\r\n map(([saksfaser, projectConfig]: [any, IProjectConfig]) => ({\r\n saksfaser,\r\n hideFeedbackButton: !projectConfig.config.project.isyfeedbackapplicationid || !projectConfig.config.project.isyfeedbackurl\r\n }))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.toasterService.info(\r\n 'getCasesFromSystem_toaster_msg',\r\n 'getCasesFromSystem_toaster_title'\r\n );\r\n }\r\n\r\n // events\r\n chartClicked(event, saksfaser): void {\r\n if (event.active.length > 0) {\r\n const chart = event.event.chart;\r\n const activePoints = chart.getElementsAtEventForMode(\r\n event.event,\r\n 'nearest',\r\n { intersect: true },\r\n false\r\n );\r\n if (activePoints.length > 0) {\r\n // get the internal index of slice in pie chart\r\n const clickedElementIndex = activePoints[0].index;\r\n const label = chart.data.labels[clickedElementIndex];\r\n // get value by index\r\n // console.log(clickedElementIndex, label);\r\n this.getTitle(label, saksfaser);\r\n }\r\n }\r\n }\r\n\r\n activateFeedbackTool(): void {\r\n this.commonService.activateToolById(EToolId.FEEDBACK);\r\n }\r\n\r\n openUrl(url): void {\r\n window.open(url);\r\n }\r\n\r\n private getTitle(lable: string, saksfaser: any[]): void {\r\n // tslint:disable-next-line: no-shadowed-variable\r\n this.title = '';\r\n if (lable !== '') {\r\n const selectedData: any = saksfaser.filter((d) => d.faseNavn === lable);\r\n const startDate = selectedData[0]?.startMilepel?.milepelDato.toString();\r\n const endDate = selectedData[0]?.sluttMilepel?.milepelDato.toString();\r\n let date = '';\r\n // Checking if date is valid\r\n if (\r\n startDate && endDate &&\r\n !startDate.includes('0001-01-01') &&\r\n !endDate.includes('0001-01-01')\r\n ) {\r\n date =\r\n ':' +\r\n ' ' +\r\n startDate.substring(0, 10) +\r\n ' - ' +\r\n endDate.substring(0, 10);\r\n }\r\n this.title = this.title + lable + date;\r\n }\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'saksaar' | uppercase}}\r\n
    \r\n
    \r\n
    {{vm.saksfaser.saksmappe.saksaar}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'sakssekvensnummer' | uppercase}}\r\n
    \r\n
    \r\n
    {{vm.saksfaser.saksmappe.sakssekvensnummer}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'saksansvarlig' | uppercase}}\r\n
    \r\n
    \r\n
    {{vm.saksfaser.saksmappe.saksansvarlig}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'saksstatus' | uppercase}}\r\n
    \r\n
    \r\n
    {{vm.saksfaser.saksmappe.saksstatus}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'Gi uttalelse'}}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n\r\n
    0)\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {{title || ''}}\r\n
    \r\n
    \r\n \r\n
    \r\n {{vm.saksfaser.error}}\r\n
    \r\n
    \r\n","import { Injectable } from '@angular/core';\r\nimport { combineLatest, BehaviorSubject } from 'rxjs';\r\nimport { map, switchMap, catchError } from 'rxjs/operators';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { IsyMapService, IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IConfigJson, IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyFeatureInfoChartService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private sessionStorageService: SessionStorageService,\r\n private toasterService: IsyToasterService\r\n ) {}\r\n\r\n private config$ = this.mapEmitterService.configLoadEmitter$;\r\n private projectConfig$ = this.mapService.projectConfig$;\r\n private projectName$ = this.mapService.projectName$;\r\n private saksInfoMedFaserAction = new BehaviorSubject(undefined);\r\n\r\n getSaksinfoMedFaser$ = combineLatest([\r\n this.config$,\r\n this.projectConfig$,\r\n this.projectName$,\r\n this.saksInfoMedFaserAction,\r\n ]).pipe(\r\n switchMap(\r\n ([config, projectConfig, projectName, params]: [\r\n IConfigJson,\r\n IProjectConfig,\r\n string,\r\n any\r\n ]) => {\r\n const project = projectConfig.config.project;\r\n const headers = {\r\n 'Content-type': 'application/json',\r\n };\r\n const isArealPlanParams = params?.knr && params.planid;\r\n const isSaksNrParams = params?.saksaar && params?.sakssekvensnummer;\r\n if (!isArealPlanParams && !isSaksNrParams) {\r\n return Promise.resolve(undefined);\r\n }\r\n const commonBodyParams = {\r\n instance: config.instance,\r\n project: projectName || config.defaultproject,\r\n isytoken: this.sessionStorageService.retrieve(ELogin.TOKEN),\r\n knr: params.knr,\r\n }\r\n const body = isArealPlanParams\r\n ? {\r\n ...commonBodyParams,\r\n planid: params.planid,\r\n }\r\n : {\r\n ...commonBodyParams,\r\n saksaar: params.saksaar,\r\n sakssekvensnummer: params.sakssekvensnummer,\r\n };\r\n const url = `${project.isyexternalapi}/WebInnsyn/${isArealPlanParams ? 'saksinfomedfaser' : 'saksinfomedfasersaksnr'}`;\r\n return this.httpClient\r\n .post(url, body, { headers })\r\n .pipe(\r\n map((result: any) => {\r\n if (result?.error) {\r\n this.toasterService.warning(result.error, 'error');\r\n }\r\n return result;\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n }\r\n )\r\n );\r\n\r\n setSaksInfoMedFaserParams(data: any): void {\r\n this.saksInfoMedFaserAction.next(data);\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n this.toasterService.warning('noConnecteionToSakssystem_toaster_msg');\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { Component, Input } from '@angular/core';\r\nimport { combineLatest, BehaviorSubject } from 'rxjs';\r\nimport { map, switchMap, shareReplay, catchError } from 'rxjs/operators';\r\nimport {\r\n IDomainFeature,\r\n IDomainLayer,\r\n} from '@isygis/isy-configs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\ninterface ISearchParams {\r\n komm: string; // number?\r\n planid: string;\r\n metadataurl: string;\r\n}\r\n\r\ndeclare global {\r\n interface Navigator {\r\n msSaveBlob: (blob: Blob, fileName: string) => boolean;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-isy-feature-info-doc',\r\n templateUrl: './isy-feature-info-doc.component.html',\r\n styleUrls: [\r\n '../isy-feature-info.component.scss',\r\n './isy-feature-info-doc.component.scss',\r\n ],\r\n})\r\nexport class IsyFeatureInfoDocComponent {\r\n constructor(\r\n private mapService: IsyMapService,\r\n private httpClient: HttpClient\r\n ) {}\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n plandocs = [];\r\n base64elements = {};\r\n\r\n private featureInfoLayerAction = new BehaviorSubject(undefined);\r\n private featureAction = new BehaviorSubject(undefined);\r\n private projectConfig$ = this.mapService.projectConfig$;\r\n\r\n @Input() set featureInfoLayer(val: IDomainLayer) {\r\n this.featureInfoLayerAction.next(val);\r\n }\r\n @Input() set feature(val: IDomainFeature) {\r\n this.featureAction.next(val);\r\n }\r\n\r\n // Observable function\r\n checkPlanBestemelser$ = combineLatest([\r\n this.featureInfoLayerAction,\r\n this.featureAction,\r\n this.projectConfig$,\r\n ]).pipe(\r\n map(\r\n ([featureInfoLayer, feature, projectConfig]: [\r\n IDomainLayer,\r\n IDomainFeature,\r\n IProjectConfig\r\n ]) => {\r\n if (featureInfoLayer && feature && projectConfig) {\r\n let metadataurl;\r\n const planid = feature.lowercaseprops['planid'];\r\n const hasplanid = !!planid;\r\n const komm = feature.lowercaseprops['komm'];\r\n const haskomm = !!komm;\r\n if (haskomm && hasplanid) {\r\n if (\r\n projectConfig?.config?.project?.webinnsynurl\r\n ) {\r\n metadataurl =\r\n projectConfig.config.project.webinnsynurl +\r\n '/Content/plandialog/planinfo.aspx';\r\n } else if (featureInfoLayer.metadataurl) {\r\n metadataurl = featureInfoLayer.metadataurl;\r\n const ipos = metadataurl.lastIndexOf('?');\r\n if (ipos > 0) {\r\n metadataurl = metadataurl.substr(0, ipos);\r\n }\r\n }\r\n }\r\n const currentParam = {\r\n komm,\r\n planid,\r\n metadataurl,\r\n } as ISearchParams\r\n return currentParam;\r\n }\r\n return undefined;\r\n }\r\n )\r\n // tap(result => console.log('test', result))\r\n );\r\n\r\n featureDocResult$ = combineLatest([this.checkPlanBestemelser$]).pipe(\r\n // the previos result is canceled, switch to a new observable (we always want the latest result)\r\n switchMap(([changeSearchParams]: [ISearchParams]) => {\r\n if (changeSearchParams) {\r\n const mapConfig = this.mapService.getMapConfig();\r\n // tslint:disable-next-line: max-line-length\r\n const searchUrl =\r\n mapConfig.searchHost +\r\n '/api/searchgi/getplanbestemmelser/?instance=' +\r\n mapConfig.instance +\r\n '&project=' +\r\n mapConfig.projectName +\r\n '&plan=' +\r\n JSON.stringify(changeSearchParams) +\r\n '×tamp=' +\r\n new Date().getTime();\r\n return this.httpClient.get(searchUrl).pipe(\r\n map((result: any) => {\r\n let key = 0;\r\n const plandocs = [];\r\n if (result && result.length > 0) {\r\n result.forEach((item) => {\r\n const planDoc = this.processPlandokument(item, key++);\r\n if (planDoc) {\r\n plandocs.push(planDoc);\r\n }\r\n });\r\n } else {\r\n const planDoc = this.processPlandokument(result, key++);\r\n if (planDoc) {\r\n plandocs.push(planDoc);\r\n }\r\n }\r\n plandocs.sort(this.orderByPlanDocType);\r\n console.log(plandocs);\r\n return plandocs.length > 0 ? plandocs : undefined;\r\n })\r\n );\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n }),\r\n // share and replay the last emitted value\r\n shareReplay(1),\r\n catchError(this.handleErrorWithPromise)\r\n // tap(result => console.log('test2', result))\r\n );\r\n\r\n vm$ = combineLatest([this.featureDocResult$]).pipe(\r\n map(([featureDocResult]: [any]) => ({ featureDocResult }))\r\n // , tap(result => console.log('docs: ', result))\r\n );\r\n\r\n private processPlandokument(plandokument, key) {\r\n if (plandokument) {\r\n // console.log('plandokument', plandokument);\r\n const plandoc = {\r\n key,\r\n filename: plandokument.filnavn,\r\n type: plandokument.type,\r\n title: plandokument.tittel,\r\n url: plandokument.url,\r\n hasbase64: plandokument.base64 ? true : false,\r\n mimetype: plandokument.mimetype,\r\n image: '',\r\n };\r\n switch (plandokument.type.toLowerCase()) {\r\n case 'planbeskr':\r\n plandoc.image = 'assets/img/plan-document/iconDokument.png';\r\n break;\r\n case 'planbest':\r\n plandoc.image = 'assets/img/plan-document/iconBestemmelser.png';\r\n break;\r\n case 'plankart':\r\n plandoc.image = 'assets/img/plan-document/iconPlan.png';\r\n break;\r\n default:\r\n plandoc.image = 'assets/img/plan-document/iconDokument.png';\r\n break;\r\n }\r\n this.base64elements[key] = plandokument.base64;\r\n // console.log('plandok', plandok);\r\n\r\n // plandocs.push(plandoc);\r\n return plandoc;\r\n }\r\n return undefined;\r\n }\r\n\r\n private orderByPlanDocType(planA, planB): number {\r\n const sortingValue = [\r\n 'PLANBEST',\r\n 'PLANKART',\r\n 'VEDTAK',\r\n 'PLANBESKR',\r\n 'JURILLUST',\r\n ].reverse();\r\n const idxA = sortingValue.indexOf(planA.type);\r\n const idxB = sortingValue.indexOf(planB.type);\r\n return idxB - idxA;\r\n }\r\n\r\n private handleErrorWithPromise() {\r\n // TODO: Unhandled error!\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n private base64toByteArray(b64Data, contentType?, sliceSize?) {\r\n if (contentType === undefined) {\r\n contentType = '';\r\n }\r\n if (sliceSize === undefined) {\r\n sliceSize = 512;\r\n }\r\n const startText = contentType + ';base64, ';\r\n if (b64Data.indexOf(startText) >= 0) {\r\n b64Data = b64Data.substr(b64Data.indexOf(startText) + startText.length);\r\n }\r\n const byteCharacters = atob(b64Data);\r\n const byteArrays = [];\r\n\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n\r\n return byteArrays;\r\n }\r\n\r\n openDocument(plandoc) {\r\n const base64 = this.base64elements[plandoc.key];\r\n\r\n const byteArray = this.base64toByteArray(base64, plandoc.mimetype);\r\n let blob;\r\n if (typeof File === 'function') {\r\n try {\r\n blob = new File(byteArray, plandoc.filename, {\r\n type: plandoc.mimetype,\r\n });\r\n } catch (e) {\r\n /* Edge */\r\n }\r\n }\r\n if (typeof blob === 'undefined') {\r\n blob = new Blob(byteArray, { type: plandoc.mimetype });\r\n }\r\n\r\n if (typeof navigator.msSaveBlob !== 'undefined') {\r\n // IE workaround for \"HTML7007:\r\n // One or more blob URLs were revoked by closing the blob for which they were created. These URLs will no longer resolve as the data backing the URL has been freed.\"\r\n navigator.msSaveBlob(blob, plandoc.filename);\r\n } else {\r\n const URL = window['URL'] || window['webkitURL'];\r\n const downloadUrl = URL.createObjectURL(blob);\r\n\r\n // use HTML5 a[download] attribute to specify filename\r\n const a = document.createElement('a');\r\n // safari doesn't support this yet\r\n if (typeof a.download === 'undefined') {\r\n window.location.href = downloadUrl;\r\n } else {\r\n a.href = downloadUrl;\r\n a.download = plandoc.filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n }\r\n\r\n setTimeout(() => {\r\n URL.revokeObjectURL(downloadUrl);\r\n }, 100); // cleanup\r\n }\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'planDocuments_txt' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { fadeIn, fadeOut } from '@isygis/isy-animations';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { IsyFeatureInfoService } from '../isy-feature-info.service';\r\nimport { combineLatest } from 'rxjs';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyIframeComponent } from '@isygis/isy-utils';\r\nimport { IReportType } from '@isygis/isy-tools';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-feature-info-rep',\r\n templateUrl: './isy-feature-info-rep.component.html',\r\n styleUrls: [\r\n '../isy-feature-info.component.scss',\r\n './isy-feature-info-rep.component.scss',\r\n ],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n // pageAnimation\r\n trigger('fadeOut', fadeOut()),\r\n trigger('fadeIn', fadeIn(':enter')),\r\n ],\r\n})\r\nexport class IsyFeatureInfoRepComponent implements OnInit, OnDestroy {\r\n @Input() feature;\r\n showReportTypes = false;\r\n\r\n constructor(\r\n private featureInfoService: IsyFeatureInfoService,\r\n private sessionStorageService: SessionStorageService,\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService\r\n ) {\r\n // empty\r\n }\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n reportIsOpen = false;\r\n reportTypeIsOpen = false;\r\n selectedReportType = {\r\n Id: '',\r\n Title: '',\r\n ProcessingType: null,\r\n Category: '',\r\n };\r\n matrikkelReportTypeResults$ = this.featureInfoService.matrikkelReportTypeResults$;\r\n reportTypeResults$ = this.featureInfoService.reportTypeResults$;\r\n pdfReady = true;\r\n projectConfig: IProjectConfig;\r\n\r\n vm$ = combineLatest([this.matrikkelReportTypeResults$, this.reportTypeResults$]).pipe(\r\n map(([matrikkelReportTypeResults, reportTypeResults]: [IReportType[], IReportType[]]) => ({\r\n reportTypeResults: [].concat(matrikkelReportTypeResults, reportTypeResults),\r\n }))\r\n // , tap(result => console.log('result: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.featureInfoService.projectConfig$\r\n .pipe(take(1))\r\n .subscribe((projectConfig) => {\r\n this.projectConfig = projectConfig;\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.showReportTypes = true;\r\n }\r\n showReport(): void {\r\n if (this.selectedReportType.Category === 'dok') {\r\n if (this.selectedReportType.ProcessingType === 'GetKeysAndAppend') {\r\n // Not implemented for this report type\r\n return;\r\n }\r\n\r\n let url = this.projectConfig.config.project.webinnsynurl;\r\n if (!url) {\r\n console.error('Missing webinnsyn-url in config!');\r\n return;\r\n }\r\n if (!url.endsWith('/')) {\r\n url = url + '/';\r\n }\r\n if (this.feature?.lowercaseprops) {\r\n const komm = this.feature.lowercaseprops['komm'];\r\n const gnr = this.feature.lowercaseprops['gnr'];\r\n const bnr = this.feature.lowercaseprops['bnr'];\r\n const fnr = this.feature.lowercaseprops['fnr'];\r\n const snr = this.feature.lowercaseprops['snr'];\r\n\r\n if (this.commonService.getKcUsed() || this.commonService.getIdPortenUsed()) {\r\n this.pdfReady = false;\r\n // applied for kc and idporten\r\n url =\r\n url +\r\n `api/report/dokanalysepdfgid?k=${komm}&g=${gnr}&b=${bnr}&f=${fnr}&s=${snr}&reportid=${this.selectedReportType.Id}`;\r\n url = url + '&idp=keycloak';\r\n const anchor = document.createElement('a');\r\n document.body.appendChild(anchor);\r\n const file = url;\r\n const headers = new Headers();\r\n const token = this.commonService.getKcUsed() ? this.commonService.getKcToken() : this.commonService.getIdPortenToken();\r\n headers.append(\r\n 'Authorization',\r\n 'Bearer ' + token\r\n );\r\n fetch(file, { headers })\r\n .then((response) => response.blob())\r\n .then((blobby) => {\r\n const objectUrl = window.URL.createObjectURL(blobby);\r\n anchor.href = objectUrl;\r\n this.pdfReady = true;\r\n window.open(objectUrl, '_blank');\r\n });\r\n //\r\n } else {\r\n window.open(\r\n url +\r\n `api/report/dokanalysepdfgid?k=${komm}&g=${gnr}&b=${bnr}&f=${fnr}&s=${snr}&reportid=${\r\n this.selectedReportType.Id\r\n }&isytoken=${this.sessionStorageService.retrieve(ELogin.TOKEN)}`\r\n );\r\n }\r\n }\r\n } else if (this.selectedReportType.Category === 'matrikkel') {\r\n if (this.selectedReportType.ProcessingType === 'GetKeysAndAppend') {\r\n // Not implemented for this report type\r\n return;\r\n }\r\n\r\n let url = this.projectConfig.config.project.webinnsynurl;\r\n if (this.feature?.lowercaseprops) {\r\n const komm = this.feature.lowercaseprops['komm'];\r\n const gnr = this.feature.lowercaseprops['gnr'];\r\n const bnr = this.feature.lowercaseprops['bnr'];\r\n const fnr = this.feature.lowercaseprops['fnr'];\r\n const snr = this.feature.lowercaseprops['snr'];\r\n\r\n // fetch the file using your JWT, convert the payload into a blob, put the blob into an objectURL, set the source of an anchor\r\n // tag to that objectURL, and click that objectURL in javascript\r\n if (this.commonService.getKcUsed() || this.commonService.getIdPortenUsed()) {\r\n // applied for kc and idporten\r\n url =\r\n url +\r\n `api/matrikkel/report/create?k=${komm}&g=${gnr}&b=${bnr}&f=${fnr}&s=${snr}&reportid=${this.selectedReportType.Id}`;\r\n const webinnsynurl = this.projectConfig.config.project.webinnsynurl;\r\n const webinnsyniframelandingpage = `${webinnsynurl}${webinnsynurl.charAt(webinnsynurl.length - 1) === '/' ? '' : '/'}framed.htm`;\r\n const data = { url: webinnsyniframelandingpage, postMsgUrl: url };\r\n //\r\n\r\n this.bladeService.showBladeWithComponent(\r\n 'matrikkelReport',\r\n IsyIframeComponent,\r\n data,\r\n {\r\n position: 'top',\r\n fullScreen: true,\r\n offset: 100,\r\n showBladeOverlay: true,\r\n }\r\n );\r\n //\r\n } else {\r\n window.open(\r\n url +\r\n `api/matrikkel/report/create?k=${komm}&g=${gnr}&b=${bnr}&f=${fnr}&s=${snr}&reportid=${\r\n this.selectedReportType.Id\r\n }&isytoken=${this.sessionStorageService.retrieve(ELogin.TOKEN)}`\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n toggleShowReport(reportIsOpen): void {\r\n this.reportIsOpen = !reportIsOpen;\r\n }\r\n selectReportType(reportType): void {\r\n this.selectedReportType = reportType;\r\n }\r\n toggleShowReportTypes(): void {\r\n this.showReportTypes = !this.showReportTypes;\r\n }\r\n}\r\n","
    \r\n \r\n \r\n
    \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
      \r\n
    • \r\n {{reportType.Title}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n ELogin,\r\n ICadastre,\r\n IDomainFeature,\r\n IDomainLayer,\r\n NestedProperties,\r\n} from '@isygis/isy-configs';\r\nimport { IsyFeatureInfoService } from './isy-feature-info.service';\r\nimport {\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { Subscription, combineLatest, firstValueFrom, of } from 'rxjs';\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\nimport { fadeIn, fadeOut } from '@isygis/isy-animations';\r\nimport { catchError, map, shareReplay, tap } from 'rxjs/operators';\r\n\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport {\r\n IsyAppFeatureInfoService,\r\n IsyPicklistService,\r\n IPicklistResult,\r\n} from '@isygis/isy-app-services';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyIframeComponent } from '@isygis/isy-utils';\r\nimport { IsyNeighborService } from '@isygis/isy-neighbor';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyFeatureInfoChartService } from './isy-feature-info-chart/isy-feature-info-chart.service';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IConfigJson, IMetadataService, IProjectConfig } from '@isygis/isymap-config';\r\nimport { PermissionService } from '@isygis/permission';\r\ninterface IUrlFeature {\r\n urls: string[];\r\n isUrl: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-isy-feature-info',\r\n templateUrl: './isy-feature-info.component.html',\r\n styleUrls: ['./isy-feature-info.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n // pageAnimation\r\n trigger('fadeOut', fadeOut()),\r\n trigger('fadeIn', fadeIn(':enter')),\r\n ],\r\n})\r\nexport class IsyFeatureInfoComponent implements OnInit, OnDestroy {\r\n isFeatureUrl = {};\r\n config: IConfigJson = this.mapService.getConfig();\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n featureResponse;\r\n subscription: Subscription = new Subscription();\r\n maplibMap;\r\n eventHandler;\r\n eventTypes;\r\n featureInfoLayer;\r\n reportIsOpen = false;\r\n chartIsOpen = false;\r\n noFeatureInfoElements = true;\r\n picklistResult: IPicklistResult[];\r\n appShowNeighbor = true;\r\n appShowReport = true;\r\n complaintExist = false;\r\n picklistLookup;\r\n webinnsynurl: string;\r\n\r\n @Input() filterFeatureInfoLayers = [];\r\n @Input() showCadastreInModal = false;\r\n\r\n constructor(\r\n private mapEmitterService: IsyMapEmitterService,\r\n private featureInfoService: IsyFeatureInfoService,\r\n private mapService: IsyMapService,\r\n private mapLibNgService: MapLibNgService,\r\n private appFeatureInfoService: IsyAppFeatureInfoService,\r\n private domSanitizer: DomSanitizer,\r\n private bladeService: IsyBladeService,\r\n private sessionStorageService: SessionStorageService,\r\n private permissionService: PermissionService,\r\n private commonService: IsyCommonService,\r\n private neighborService: IsyNeighborService,\r\n private picklistService: IsyPicklistService,\r\n private featureInfoChartService: IsyFeatureInfoChartService,\r\n private httpClient: HttpClient,\r\n private toasterService: IsyToasterService\r\n ) {\r\n this.maplibMap = this.mapLibNgService.map();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n this.picklistResult = this.picklistService.picklistResult;\r\n this.picklistLookup = this.picklistService.picklistLookup;\r\n }\r\n\r\n private projectConfig$ = this.mapService.projectConfig$;\r\n configJson$ = this.mapEmitterService.configLoadEmitter$;\r\n\r\n featureInfoServiceLayers$ = this.featureInfoService.featureInfoLayers$.pipe(\r\n map((featureInfoLayers) =>\r\n featureInfoLayers.filter((featureInfoLayer) => {\r\n if (this.filterFeatureInfoLayers.length > 0) {\r\n return this.filterFeatureInfoLayers.find(\r\n (filterLayer) => filterLayer === featureInfoLayer['subLayerName']\r\n )\r\n ? featureInfoLayer\r\n : undefined;\r\n } else {\r\n return featureInfoLayer;\r\n }\r\n })\r\n ),\r\n map((featureInfoLayers) =>\r\n featureInfoLayers.map((featureInfoLayer, index) => {\r\n featureInfoLayer.features.forEach((feature, indexFeature) => {\r\n feature.isOpen =\r\n featureInfoLayers.length === 1 &&\r\n featureInfoLayer.features.length === 1;\r\n if (feature.isOpen && featureInfoLayer.layertype === 'Arealplan') {\r\n this.featureInfoService.setCheckComplaints(feature);\r\n }\r\n if (this.config.externalServices.seeiendom) {\r\n const baseUrl = this.config.externalServices.seeiendom;\r\n if (feature.properties) {\r\n const gardsnr =\r\n feature.properties['GARDSNR'] || feature.properties['gardsnr'];\r\n const bruksnr =\r\n feature.properties['BRUKSNR'] || feature.properties['bruksnr'];\r\n const knr =\r\n feature.properties['KOMMUNENR'] ||\r\n feature.properties['kommunenr'];\r\n if (gardsnr && bruksnr && knr) {\r\n const url = `${baseUrl}${knr}/${gardsnr}/${bruksnr}`;\r\n feature.properties['seeiendom'] = url;\r\n }\r\n }\r\n }\r\n featureInfoLayer.featureInfoElement.map((infoElement) => {\r\n const infoElemProp = feature.properties[infoElement.name];\r\n\r\n const isUrl: boolean =\r\n typeof infoElemProp === 'string' && this._isUrl(infoElemProp);\r\n let urls = [];\r\n if (isUrl && typeof infoElemProp === 'string') {\r\n urls = this._formatProperty(infoElemProp);\r\n }\r\n const feautreUrls: IUrlFeature = { urls, isUrl };\r\n if (!this.isFeatureUrl[index]) {\r\n this.isFeatureUrl[index] = {};\r\n }\r\n if (!this.isFeatureUrl[index][indexFeature]) {\r\n this.isFeatureUrl[index][indexFeature] = {};\r\n }\r\n this.isFeatureUrl[index][indexFeature][infoElement.name] =\r\n feautreUrls;\r\n });\r\n });\r\n // return ({ ...featureInfoLayer, isOpen: index === 0 ? true : false } as IDomainLayer);\r\n return { ...featureInfoLayer, isOpen: true } as IDomainLayer;\r\n })\r\n )\r\n // tap(result => console.log('FEATURE INFO RESULT - JURAJ TEST: ', result))\r\n );\r\n\r\n featureInfoLayers$ = combineLatest([\r\n this.projectConfig$,\r\n this.featureInfoServiceLayers$,\r\n ]).pipe(\r\n map(\r\n ([projectConfig, featureInfoLayers]: [\r\n IProjectConfig,\r\n IDomainLayer[]\r\n ]) => {\r\n if (projectConfig?.config) {\r\n const project = projectConfig.config.project;\r\n this.webinnsynurl = projectConfig.config.project?.webinnsynurl;\r\n if (this.webinnsynurl && !this.webinnsynurl.endsWith('/')) {\r\n this.webinnsynurl = this.webinnsynurl + '/';\r\n }\r\n if (project.roadProfileLayers) {\r\n featureInfoLayers.forEach((featureInfoLayer) => {\r\n const hasRoadProfileName = project.roadProfileLayers.find(\r\n (layer) => layer === featureInfoLayer.name\r\n );\r\n if (hasRoadProfileName) {\r\n featureInfoLayer.features.forEach((feature) => {\r\n feature.hasRoadProfile = true;\r\n });\r\n }\r\n });\r\n }\r\n if (project.roadCrossSectionLayers) {\r\n featureInfoLayers.forEach((featureInfoLayer) => {\r\n const hasRoadCrossSectionName = project.roadProfileLayers.find(\r\n (layer) => layer === featureInfoLayer.name\r\n );\r\n if (hasRoadCrossSectionName) {\r\n featureInfoLayer.features.forEach((feature) => {\r\n feature.hasRoadCrossSection = true;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n // checking if at least one layer has featureInfoElements, layertype, metadataservices or features\r\n this.noFeatureInfoElements = true;\r\n featureInfoLayers.forEach((featureInfoLayer) => {\r\n if (\r\n (featureInfoLayer?.featureInfoElement?.length > 0) ||\r\n featureInfoLayer.layertype ||\r\n (featureInfoLayer?.metadataServices?.length > 0) ||\r\n (featureInfoLayer?.features?.length > 0 &&\r\n featureInfoLayer.wms)\r\n ) {\r\n this.noFeatureInfoElements = false;\r\n }\r\n });\r\n\r\n // get picklist values\r\n featureInfoLayers.forEach((featureInfoLayer) => {\r\n if (\r\n featureInfoLayer.featureInfoElement &&\r\n featureInfoLayer.featureInfoElement.length > 0\r\n ) {\r\n featureInfoLayer.featureInfoElement.forEach((infoElement) => {\r\n if (infoElement.hascodelist === 'true') {\r\n featureInfoLayer.features.forEach((feature) => {\r\n this.picklistService.picklistRetrieve(\r\n infoElement.codelistid,\r\n infoElement.name,\r\n feature.properties[infoElement.name]\r\n );\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n // Check access to restricted metadataServices\r\n const resources = this.sessionStorageService.retrieve(ELogin.RESOURCES);\r\n featureInfoLayers.forEach((featureInfoLayer) => {\r\n if (\r\n featureInfoLayer.metadataServices &&\r\n featureInfoLayer.metadataServices.length > 0\r\n ) {\r\n featureInfoLayer.metadataServices.forEach(\r\n (infoElement: IMetadataService) => {\r\n let access = true;\r\n if (infoElement.restricted) {\r\n const neededResources = infoElement.restricted.split(',');\r\n neededResources.forEach((res) => {\r\n if (!resources?.includes(res)) {\r\n access = false;\r\n }\r\n });\r\n }\r\n infoElement.visible = access;\r\n }\r\n );\r\n }\r\n });\r\n this.commonService.setFeatureInfoLayersLength(featureInfoLayers.length);\r\n return featureInfoLayers;\r\n }\r\n )\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.featureInfoLayers$,\r\n this.appFeatureInfoService.showFeatureInfoSpinner$,\r\n this.projectConfig$,\r\n this.commonService.pointInfoNeighborActive$\r\n ]).pipe(\r\n map(\r\n ([featureInfoLayers, showFeatureInfoSpinner, projectConfig, pointInfoNeighborActive]: [\r\n IDomainLayer[],\r\n boolean,\r\n IProjectConfig,\r\n boolean\r\n ]) => ({\r\n featureInfoLayers,\r\n showFeatureInfoSpinner,\r\n projectConfig,\r\n feedback: projectConfig.config.project?.isyfeedbackurl && projectConfig.config.project?.isyfeedbackapplicationid,\r\n forceHideNeighborlist: pointInfoNeighborActive\r\n })\r\n ),\r\n // tap((result) => console.log('FEATURE-INFO: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.picklistService.picklistResult$.subscribe(\r\n (result: IPicklistResult[]) => {\r\n if (result && Array.isArray(result)) {\r\n result.forEach((item: IPicklistResult) => {\r\n const exists = this.picklistService.picklistLookup(\r\n item.objektkatalognavn,\r\n item.egenskapsnavn,\r\n item.verdi\r\n );\r\n if (!exists) {\r\n this.picklistResult.push(item);\r\n }\r\n });\r\n }\r\n // console.log('picklistResult: ', this.picklistResult);\r\n }\r\n )\r\n );\r\n\r\n this.subscription.add(\r\n this.featureInfoService.featureInfoOptions$.subscribe((value) => {\r\n if (value) {\r\n this.appShowNeighbor = value.showNeighbor;\r\n this.appShowReport = value.showReport;\r\n }\r\n })\r\n );\r\n this.subscription.add(\r\n this.featureInfoService.checkComplaintsResults$.subscribe((value: []) => {\r\n if (value && value.length > 0) {\r\n this.complaintExist = Boolean(\r\n value.find((v) => v['planbehandlingsType']['kodeverdi'] === '17')\r\n );\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.featureInfoService.setCadastreData(undefined);\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n this.maplibMap.deactivateDrawingManager();\r\n }\r\n\r\n recursiveReplace(properties: NestedProperties, url: string): string {\r\n for (const key in properties) {\r\n if (url.indexOf('{' + key + '}') >= 0) {\r\n const value = properties[key];\r\n if (typeof value === 'string') {\r\n url = url.replace('{' + key + '}', value);\r\n } else {\r\n url = this.recursiveReplace(value, url);\r\n }\r\n }\r\n }\r\n return url;\r\n }\r\n\r\n openBlade(\r\n metadataService: IMetadataService,\r\n result: IDomainFeature,\r\n newWindow\r\n ): void {\r\n const properties = result.properties;\r\n let url = this.recursiveReplace(properties, metadataService.metadataurl);\r\n if (\r\n metadataService.useisytoken === 'true' &&\r\n this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n ) {\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n if (url.indexOf('?') > 0) {\r\n url = url + '&isytoken=' + isytoken;\r\n } else {\r\n url = url + '?isytoken=' + isytoken;\r\n }\r\n }\r\n // const urlFound = this.httpClient.get(url, { observe: 'response' }).pipe(\r\n // shareReplay(1),\r\n // catchError((error: HttpErrorResponse) => of(error.status !== 404)),\r\n // map((data_or_error) => !!data_or_error),\r\n // );\r\n // firstValueFrom(urlFound).then((urlFound) => {\r\n // if (!urlFound) {\r\n // this.toasterService.warning('Egenskapen mangler data');\r\n // } else {\r\n\r\n if (newWindow === 'true') {\r\n window.open(url);\r\n } else {\r\n // applied for kc and idporten\r\n const webinnsyniframelandingpage = `${this.webinnsynurl}${this.webinnsynurl?.charAt(this.webinnsynurl?.length - 1) === '/' ? '' : '/'}framed.htm`;\r\n const data = this.commonService.getKcUsed() || this.commonService.getIdPortenUsed()\r\n ? { url: webinnsyniframelandingpage, postMsgUrl: url }\r\n : { url };\r\n this.bladeService.showBladeWithComponent(\r\n 'metadataService',\r\n IsyIframeComponent,\r\n data,\r\n {\r\n position: 'top',\r\n fullScreen: true,\r\n offset: 100,\r\n showBladeOverlay: true,\r\n }\r\n );\r\n }\r\n // }\r\n // });\r\n }\r\n\r\n private _isUrl(prop: string): boolean {\r\n const formattedProp = this._formatProperty(prop);\r\n if (\r\n formattedProp instanceof Array &&\r\n formattedProp[0] instanceof Array &&\r\n typeof formattedProp[0][0] === 'string' &&\r\n formattedProp[0][0].startsWith('http')\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private _formatProperty(prop: string): any {\r\n if (!prop) {\r\n return '';\r\n }\r\n const inHtmlPattern = /['\"](https?:.*)['\"](.*>(.*)<\\/a)?/;\r\n let foundProps;\r\n while ((foundProps = inHtmlPattern.exec(prop)) !== null) {\r\n if (foundProps[3]) {\r\n return [[foundProps[1], foundProps[3]]];\r\n } else if (foundProps[1]) {\r\n return [[foundProps[1], 'lenke']];\r\n }\r\n }\r\n const links = [];\r\n const attachmentPattern = /(https?:[^|]+)/g;\r\n let foundAttachments;\r\n while ((foundAttachments = attachmentPattern.exec(prop)) !== null) {\r\n if (foundAttachments[0] && foundAttachments[1]) {\r\n links.push([foundAttachments[1], 'lenke']);\r\n }\r\n }\r\n if (links.length) {\r\n return links;\r\n }\r\n return prop;\r\n }\r\n\r\n mouseOver(feature: IDomainFeature): void {\r\n this.maplibMap.highlightFeature(feature.olFeature);\r\n }\r\n\r\n mouseOut(): void {\r\n this.maplibMap.clearHighlightedFeatures();\r\n }\r\n\r\n mouseOverAll(featureInfoLayer: IDomainLayer): void {\r\n const olFeatures = [];\r\n featureInfoLayer.features.forEach((feature: IDomainFeature) => {\r\n olFeatures.push(feature.olFeature);\r\n });\r\n this.maplibMap.highlightFeatures(olFeatures);\r\n }\r\n\r\n toggleGroup(featureInfoLayer: IDomainLayer): void {\r\n featureInfoLayer.isOpen = !featureInfoLayer.isOpen;\r\n }\r\n\r\n toggleSubGroup(\r\n feature: IDomainFeature,\r\n featureInfoLayer?: IDomainLayer\r\n ): void {\r\n if (featureInfoLayer.layertype === 'Arealplan') {\r\n this.featureInfoService.setCheckComplaints(feature);\r\n }\r\n feature.isOpen = !feature.isOpen;\r\n }\r\n\r\n toggleShowMore(feature: IDomainFeature): void {\r\n feature.showMore = !feature.showMore;\r\n }\r\n\r\n editEnabled(): boolean {\r\n return this.permissionService.hasResource('GeoInnsynEdit');\r\n }\r\n\r\n\r\n startEditTool(featureInfoLayer, featureResponse): void {\r\n this.maplibMap\r\n .describeFeature(\r\n featureInfoLayer,\r\n featureResponse.olFeature.getGeometry().getType()\r\n )\r\n .then(() => {\r\n this.featureInfoService.setFeatureResponse(featureResponse);\r\n this.featureInfoService.startUpdateFeature();\r\n });\r\n }\r\n\r\n createUrlWithParams(properties, url): any {\r\n // it's wrong - should be rewrite as pipe\r\n for (const key in properties) {\r\n if (url.indexOf('{' + key + '}') >= 0) {\r\n url = url.replace('{' + key + '}', properties[key]);\r\n }\r\n }\r\n return this.domSanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n\r\n setCadasterData(data: any): void {\r\n const cadasterData: ICadastre = {\r\n komm: data['KOMMUNENR'] || data['kommunenr'],\r\n gnr: data['GARDSNR'] || data['gardsnr'],\r\n bnr: data['BRUKSNR'] || data['bruksnr'],\r\n fnr: data['FESTENR'] || data['festenr'],\r\n snr: data['SEKSJONSNR'] || data['seksjonsnr'],\r\n };\r\n this.featureInfoService.setCadastreData(cadasterData);\r\n }\r\n\r\n showRoadProfile(result: IDomainFeature): void {\r\n this.commonService.setRoadProfileData(result);\r\n this.commonService.showRoadProfile();\r\n }\r\n\r\n showRoadCrossSection(result: IDomainFeature): void {\r\n this.commonService.setRoadCrossSectionData(result);\r\n this.commonService.showRoadCrossSection();\r\n }\r\n\r\n toggleNeighbor(\r\n featureInfoLayer: IDomainLayer,\r\n feature: IDomainFeature\r\n ): void {\r\n this.neighborService.setFeatureInfoLayerAction(featureInfoLayer);\r\n this.neighborService.setFeatureAction(feature);\r\n feature['neighborlistOpen'] = !feature['neighborlistOpen'];\r\n if(feature['neighborlistOpen']) {\r\n this.commonService.setFeatureInfoNeighborActive(true);\r\n }\r\n // else {\r\n // this.commonService.setFeatureInfoNeighborActive(false);\r\n // }\r\n }\r\n\r\n toggleShowChartComponent(featureInfoLayers, layertype, selectedFeature): void {\r\n featureInfoLayers.forEach((featureInfoLayer) => {\r\n featureInfoLayer.features.forEach((feature) => {\r\n if (feature !== selectedFeature) {\r\n feature['chartIsOpen'] = false;\r\n }\r\n });\r\n });\r\n selectedFeature['chartIsOpen'] = !selectedFeature['chartIsOpen'];\r\n this.commonService.setFeature(selectedFeature);\r\n const isArealPlan = layertype == 'Arealplan';\r\n const commonParams = {\r\n knr: selectedFeature.lowercaseprops['komm'] || selectedFeature.lowercaseprops['kommuneid'],\r\n };\r\n const params = isArealPlan \r\n ? {\r\n ...commonParams,\r\n planid: selectedFeature.lowercaseprops['planid'],\r\n }\r\n : { // !Arealplan => SaksNr (Byggesak / Delesak)\r\n ...commonParams,\r\n saksaar: selectedFeature.lowercaseprops['saksaar'],\r\n sakssekvensnummer: selectedFeature.lowercaseprops['sakssekvensnummer'],\r\n };\r\n this.featureInfoChartService.setSaksInfoMedFaserParams(params);\r\n }\r\n\r\n toggleShowReportComponent(featureInfoLayer, selectedFeature): void {\r\n selectedFeature['reportIsOpen'] = !selectedFeature['reportIsOpen'];\r\n }\r\n showReport(feature: IDomainFeature): void {\r\n const knr = feature.lowercaseprops['komm'];\r\n if (typeof knr === 'string') this.featureInfoService.setKnr(knr);\r\n this.neighborService.showReport();\r\n }\r\n\r\n naboliste2CSV(): void {\r\n this.neighborService.naboliste2CSV();\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    0) ||\r\n featureInfoLayer.layertype || (featureInfoLayer.metadataServices && featureInfoLayer.metadataServices.length > 0) ||\r\n (featureInfoLayer.features && featureInfoLayer.features.length > 0 && featureInfoLayer.wms))\"\r\n class=\"card card-box rounded separate\" (click)=\"toggleGroup(featureInfoLayer)\">\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{featureInfoLayer.featureInfoTitle }}\r\n {{featureInfoLayer.name }}\r\n
    \r\n
    \r\n {{featureInfoLayer.features.length}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{[featureInfoLayer.featureInfoTitle, result.properties, featureInfoLayer.featureInfoElement] | titleLabel }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{infoElement.text.replace('_', ' ')}}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    0\">\r\n {{result.properties[infoElement.name]}}\r\n
    \r\n
    \r\n {{picklistResult && picklistLookup(infoElement.codelistid, infoElement.name, result.properties[infoElement.name]) ?\r\n picklistLookup(infoElement.codelistid, infoElement.name, result.properties[infoElement.name]).forklaring : result.properties[infoElement.name]}}\r\n
    \r\n
    \r\n
    \r\n {{result.properties[infoElement.name]}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{'show_road_profile' | translate }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{'show_road_cross_section' | translate }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {{metadataservice.title }}\r\n
    \r\n
    \r\n {{metadataservice.title }}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'getReports' | translate }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{'makeNeighborList' | translate }}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{prop.key}}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {{prop.value?.toString() || '' }}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{('showProceedings') | translate}}\r\n / {{'showProceedings_sendFeedback' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IsyFeatureInfoComponent } from './isy-feature-info.component';\r\n// import { TitleLabelPipe } from './isy-feature-info.pipe';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\n// import { IsyDynamicModalModule } from '@isygis/isy-dynamic-modal';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { IsyFeatureInfoDocComponent } from './isy-feature-info-doc/isy-feature-info-doc.component';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { IsyFeatureInfoRepComponent } from './isy-feature-info-rep/isy-feature-info-rep.component';\r\n// import { IsyFeatureInfoNeighborComponent } from './isy-feature-info-neighbor/isy-feature-info-neighbor.component';\r\nimport { IsyUtilsModule } from '@isygis/isy-utils';\r\n\r\n// import { GetAddressStringPipe } from './isy-feature-info-neighbor/get-address-string.pipe';\r\n// import { IsyFeatureInfoNeighborPrintComponent } from './isy-feature-info-neighbor/isy-feature-info-neighbor-print/isy-feature-info-neighbor-print.component';\r\n// import { IsyPrintModule } from '@isygis/isy-print';\r\nimport { IsyPositionInfoModule } from '@isygis/isy-position-info';\r\nimport { IsyNeighborModule } from '@isygis/isy-neighbor';\r\nimport { NgChartsModule } from 'ng2-charts';\r\nimport { IsyFeatureInfoChartComponent } from './isy-feature-info-chart/isy-feature-info-chart.component';\r\nimport { FeatureInfoDirective } from './feature-info.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n IsySpinnerModule,\r\n IsyPositionInfoModule,\r\n IsyUtilsModule,\r\n BsDropdownModule.forRoot(),\r\n IsyNeighborModule,\r\n NgChartsModule,\r\n ],\r\n declarations: [\r\n IsyFeatureInfoComponent,\r\n IsyFeatureInfoDocComponent,\r\n IsyFeatureInfoRepComponent,\r\n IsyFeatureInfoChartComponent,\r\n FeatureInfoDirective,\r\n ],\r\n exports: [\r\n IsyFeatureInfoComponent,\r\n FeatureInfoDirective,\r\n IsyFeatureInfoChartComponent,\r\n ],\r\n // entryComponents: [IsyFeatureInfoNeighborPrintComponent]\r\n})\r\nexport class IsyFeatureInfoModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n IDomainLayer,\r\n ICadastre,\r\n IDomainFeature,\r\n ELogin,\r\n} from '@isygis/isy-configs';\r\nimport { combineLatest, BehaviorSubject, ReplaySubject } from 'rxjs';\r\nimport {\r\n catchError,\r\n switchMap,\r\n map,\r\n multicast,\r\n refCount,\r\n} from 'rxjs/operators';\r\nimport { IsyMapService, IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IReportType } from '@isygis/isy-tools';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IConfigJson, IProjectConfig } from '@isygis/isymap-config';\r\n\r\nexport interface IFeatureDocResult {\r\n title: string;\r\n url: string;\r\n image: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyFeatureInfoService {\r\n private featureInfoLayers: IDomainLayer[] = [];\r\n\r\n private featureInfoLayersAction = new BehaviorSubject(this.featureInfoLayers);\r\n featureInfoLayers$ = this.featureInfoLayersAction.asObservable().pipe(\r\n map((featureInfoLayers) => this.setLowerCaseProperties(featureInfoLayers))\r\n );\r\n\r\n private featureInfoOptionsAction = new BehaviorSubject(undefined);\r\n featureInfoOptions$ = this.featureInfoOptionsAction.asObservable();\r\n\r\n private updateFeatureInfoAction = new BehaviorSubject(false);\r\n updateFeatureInfo$ = this.updateFeatureInfoAction.asObservable();\r\n\r\n private featureResponse: any = undefined;\r\n\r\n private cadastreDataAction = new BehaviorSubject(undefined);\r\n cadastreData$ = this.cadastreDataAction.asObservable();\r\n\r\n private checkComplaintsAction = new BehaviorSubject(\r\n undefined\r\n );\r\n checkComplaints$ = this.checkComplaintsAction.asObservable();\r\n private config$ = this.mapEmitterService.configLoadEmitter$;\r\n projectConfig$ = this.mapService.projectConfig$;\r\n private projectName$ = this.mapService.projectName$;\r\n // private isytoken$ = this.commonService.loginToken$;\r\n private knrAction = new BehaviorSubject(undefined);\r\n private knr$ = this.knrAction.asObservable();\r\n\r\n featureActivated = false;\r\n\r\n constructor(\r\n private mapService: IsyMapService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private commonService: IsyCommonService,\r\n private httpClient: HttpClient,\r\n private sessionStorageService: SessionStorageService\r\n ) {}\r\n\r\n checkComplaintsResults$ = combineLatest([\r\n this.config$,\r\n this.projectConfig$,\r\n this.projectName$,\r\n this.knr$,\r\n this.checkComplaints$,\r\n ]).pipe(\r\n switchMap(\r\n ([config, projectConfig, projectName, knr, checkComplaints]: [\r\n IConfigJson,\r\n IProjectConfig,\r\n string,\r\n string,\r\n IDomainFeature\r\n ]) => {\r\n if (!checkComplaints) {\r\n return new Promise((resolve) => resolve([]));\r\n }\r\n const project = projectConfig.config.project;\r\n const headers = {\r\n 'Content-type': 'text/plain',\r\n };\r\n const params =\r\n 'instance=' +\r\n config.instance +\r\n '&project=' +\r\n (projectName || config.defaultproject) +\r\n '&komm=' +\r\n (knr || project.defaultkommune) +\r\n '&planid=' +\r\n (checkComplaints.properties['planid'] ||\r\n checkComplaints.properties['PLANID']);\r\n\r\n return this.httpClient\r\n .get(\r\n project.isysearch +\r\n '/planregister/finnplanbehandlinger_v2?' +\r\n params,\r\n {\r\n headers,\r\n }\r\n )\r\n .pipe(\r\n map((result: any) => {\r\n console.log('checkComplaintsResults:', result);\r\n if (\r\n result &&\r\n result.Planbehandlinger &&\r\n result.Planbehandlinger.length > 0\r\n ) {\r\n return result.Planbehandlinger;\r\n }\r\n\r\n return new Promise((resolve) => resolve([]));\r\n })\r\n );\r\n }\r\n ),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount(),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n matrikkelReportTypeResults$ = combineLatest([\r\n this.projectConfig$,\r\n this.knr$,\r\n ]).pipe(\r\n switchMap(\r\n ([projectConfig, knr]: [\r\n IProjectConfig,\r\n string\r\n ]) => {\r\n const project = projectConfig.config.project;\r\n const headers = {\r\n 'Content-type': 'application/json; charset=utf-8',\r\n };\r\n const body = {\r\n k: knr || project.defaultkommune,\r\n isytoken: this.sessionStorageService.retrieve(ELogin.TOKEN),\r\n };\r\n\r\n return (\r\n this.httpClient\r\n .get(\r\n project.webinnsynurl +\r\n (project.webinnsynurl.endsWith('/') ? '' : '/') +\r\n 'api/matrikkel/report/types?k=' +\r\n body.k +\r\n '&isytoken=' +\r\n body.isytoken,\r\n {\r\n headers,\r\n }\r\n )\r\n .pipe(\r\n map((result: IReportType[]) => {\r\n if (result?.length) {\r\n result.forEach((r) => (r.Category = 'matrikkel'));\r\n return this.sortAlphabetically(result); // sort by name\r\n }\r\n return new Promise((resolve) => resolve([]));\r\n })\r\n )\r\n );\r\n }\r\n ),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount(),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n\r\n reportTypeResults$ = combineLatest([this.projectConfig$]).pipe(\r\n switchMap(([projectConfig]: [IProjectConfig]) => {\r\n const project = projectConfig.config.project;\r\n const headers = {\r\n 'Content-type': 'application/json',\r\n };\r\n const body = {\r\n isytoken: this.sessionStorageService.retrieve(ELogin.TOKEN),\r\n };\r\n\r\n return this.httpClient\r\n .get(\r\n project.webinnsynurl +\r\n (project.webinnsynurl.endsWith('/') ? '' : '/') +\r\n 'api/report/types?isytoken=' +\r\n body.isytoken,\r\n {\r\n headers,\r\n }\r\n )\r\n .pipe(\r\n map((result: IReportType[]) => {\r\n if (result?.length) {\r\n result.forEach((r) => (r.Category = 'dok'));\r\n const filteredResult = result.filter(\r\n (i) => i.ProcessingType !== 'GetKeysAndAppend'\r\n );\r\n return this.sortAlphabetically(filteredResult); // sort by name\r\n }\r\n return new Promise((resolve) => resolve([]));\r\n })\r\n );\r\n }),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount(),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n private featureInfoLayerAction = new BehaviorSubject(undefined);\r\n featureInfoLayer$ = this.featureInfoLayerAction.asObservable();\r\n private featureAction = new BehaviorSubject(undefined);\r\n\r\n private sortAlphabetically(filteredResult: any) {\r\n type title = { Title: string };\r\n const sortedTable = filteredResult.sort((a: title, b: title) => {\r\n if (a.Title < b.Title) {\r\n return -1;\r\n }\r\n if (a.Title > b.Title) {\r\n return 1;\r\n }\r\n\r\n // names must be equal\r\n return 0;\r\n });\r\n return sortedTable;\r\n }\r\n\r\n private setLowerCaseProperties(featureInfoLayers: IDomainLayer[]): IDomainLayer[] {\r\n featureInfoLayers.forEach((featureInfoLayer) => {\r\n featureInfoLayer.features.forEach((feature) => {\r\n const lowercaseprops: Record = {};\r\n for (const key in feature?.properties) {\r\n lowercaseprops[key.toLowerCase()] = feature.properties[key];\r\n }\r\n feature.lowercaseprops = lowercaseprops;\r\n });\r\n })\r\n return featureInfoLayers;\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n clearFeatureInfoLayers(): void {\r\n this.featureInfoLayers = [];\r\n this.featureInfoLayersAction.next(this.featureInfoLayers);\r\n }\r\n\r\n addFeatureInfoLayer(layer: IDomainLayer): void {\r\n if (!layer?.features?.length) {\r\n return;\r\n }\r\n layer.isOpen = false;\r\n layer.features.forEach((feature) => {\r\n feature.isOpen = false;\r\n feature.showMore = false;\r\n });\r\n this.featureInfoLayers.push(layer);\r\n this.featureInfoLayersAction.next(this.featureInfoLayers);\r\n this.commonService.setFeatureInfoLayersLength(this.featureInfoLayers.length);\r\n }\r\n\r\n startUpdateFeature(): void {\r\n this.updateFeatureInfoAction.next(true);\r\n }\r\n\r\n stopUpdateFeature(): void {\r\n this.updateFeatureInfoAction.next(false);\r\n }\r\n\r\n setFeatureResponse(featureResponse: any): void {\r\n this.featureResponse = featureResponse;\r\n }\r\n\r\n getFeatureResponse(): any {\r\n return this.featureResponse;\r\n }\r\n\r\n setCadastreData(data: ICadastre): void {\r\n this.cadastreDataAction.next(data);\r\n }\r\n\r\n setCheckComplaints(data: IDomainFeature): void {\r\n this.checkComplaintsAction.next(data);\r\n }\r\n\r\n setFeatureInfoLayer(value: IDomainLayer): void {\r\n this.featureInfoLayerAction.next(value);\r\n }\r\n\r\n setFeatureInfoOptionsAction(value): void {\r\n this.featureInfoOptionsAction.next(value);\r\n }\r\n\r\n setFeature(value: IDomainFeature): void {\r\n this.featureAction.next(value);\r\n }\r\n\r\n setKnr(data: string): void {\r\n if (this.knrAction.getValue() !== data) {\r\n this.knrAction.next(data);\r\n }\r\n }\r\n}\r\n","import {\r\n faBars,\r\n faSearch,\r\n faMap,\r\n faLayerGroup,\r\n faToolbox,\r\n faUser,\r\n faChevronRight,\r\n faChevronLeft,\r\n faChevronDown,\r\n faCog,\r\n faAtlas,\r\n faPalette,\r\n faPrint,\r\n faChartArea,\r\n faFileExport,\r\n faCubes,\r\n faPlane,\r\n faThumbtack,\r\n faKey,\r\n faTimes,\r\n faCircle,\r\n faSquare,\r\n faPlay,\r\n faTrashAlt,\r\n faTrash,\r\n faCloudDownloadAlt,\r\n faCloudUploadAlt,\r\n faEdit,\r\n faSlash,\r\n faInfo,\r\n faInfoCircle,\r\n faQuestion,\r\n faMapSigns,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faChevronUp,\r\n faCheck,\r\n faExclamationTriangle,\r\n faBan,\r\n faBookOpen,\r\n faRetweet,\r\n faFilter,\r\n faArrowLeft,\r\n faArrowRight,\r\n faArrowUp,\r\n faArrowDown,\r\n faUserCog,\r\n faTools,\r\n faSave,\r\n faUpload,\r\n faPlusCircle,\r\n faMinusCircle,\r\n faThumbsUp,\r\n faTrophy,\r\n faBolt,\r\n faFile,\r\n faPen,\r\n faCopy,\r\n faStar,\r\n faPlus,\r\n faMinus,\r\n faUserCircle,\r\n faEye,\r\n faDrawPolygon,\r\n faFileDownload,\r\n faExternalLinkAlt,\r\n faExpand,\r\n faExpandAlt,\r\n faExpandArrowsAlt,\r\n faCompress,\r\n faCompressAlt,\r\n faCompressArrowsAlt,\r\n faRoad,\r\n faExchangeAlt,\r\n faRedo,\r\n faClipboard,\r\n faChartPie,\r\n faAngleDoubleDown,\r\n faArchway,\r\n faBook,\r\n faVectorSquare,\r\n faObjectGroup,\r\n faMapMarkerAlt,\r\n faCrosshairs,\r\n faHome,\r\n faDraftingCompass,\r\n faHouseUser,\r\n faUsers,\r\n faUserLock,\r\n faTractor,\r\n faTree,\r\n faUniversity,\r\n faHiking,\r\n faBorderAll,\r\n faBookReader,\r\n faCalendarCheck,\r\n faFilePdf,\r\n faDownload,\r\n faMapMarkedAlt,\r\n faSearchLocation,\r\n faQuestionCircle,\r\n faStreetView,\r\n faGlobeEurope,\r\n faSitemap,\r\n faRoute,\r\n faNewspaper,\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faAngleDoubleUp,\r\n faFileCirclePlus,\r\n faCircleDot,\r\n faClose,\r\n faHandPointer,\r\n faClock,\r\n faHourglassHalf,\r\n faAdjust,\r\n} from '@fortawesome/free-solid-svg-icons';\r\nimport {\r\n faCheckSquare as farCheckSquare,\r\n faSquare as farSquare,\r\n faMinusSquare as farMinusSquare,\r\n faComment as farComment,\r\n faStar as farStar,\r\n faArrowAltCircleLeft as farArrowAltCircleLeft,\r\n faFilePdf as farFilePdf,\r\n faFileExcel as farFileExcel,\r\n faDotCircle as farDotCircle,\r\n faCircle as farCircle,\r\n} from '@fortawesome/free-regular-svg-icons';\r\nimport { faWindows } from '@fortawesome/free-brands-svg-icons';\r\n\r\nexport const fontAwesomeIcons = {\r\n farCircle,\r\n faHandPointer,\r\n faClose,\r\n faQuestionCircle,\r\n farDotCircle,\r\n farFilePdf,\r\n farFileExcel,\r\n faFilePdf,\r\n faCalendarCheck,\r\n faHome,\r\n faDraftingCompass,\r\n faHouseUser,\r\n faUsers,\r\n faUserLock,\r\n faTractor,\r\n faTree,\r\n faUniversity,\r\n faHiking,\r\n faBorderAll,\r\n faBookReader,\r\n farArrowAltCircleLeft,\r\n faCrosshairs,\r\n faBars,\r\n faSearch,\r\n faSearchLocation,\r\n faMapMarkedAlt,\r\n faMap,\r\n faLayerGroup,\r\n faToolbox,\r\n faUser,\r\n faChevronRight,\r\n faChevronLeft,\r\n faChevronDown,\r\n faChevronUp,\r\n farCheckSquare,\r\n farSquare,\r\n farMinusSquare,\r\n faCog,\r\n faAtlas,\r\n faArchway,\r\n faPalette,\r\n faPrint,\r\n faChartArea,\r\n faFileExport,\r\n faCubes,\r\n faMapMarkerAlt,\r\n faPlane,\r\n faThumbtack,\r\n faKey,\r\n faTimes,\r\n faCircle,\r\n faSquare,\r\n faPlay,\r\n faTrashAlt,\r\n faTrash,\r\n faCloudDownloadAlt,\r\n faCloudUploadAlt,\r\n faEdit,\r\n faSave,\r\n faUpload,\r\n faSlash,\r\n farComment,\r\n faInfo,\r\n faInfoCircle,\r\n faQuestion,\r\n faMapSigns,\r\n faEllipsisH,\r\n faEllipsisV,\r\n faCheck,\r\n faExclamationTriangle,\r\n faBan,\r\n faBookOpen,\r\n faBook,\r\n faRetweet,\r\n faFilter,\r\n faArrowLeft,\r\n faArrowRight,\r\n faArrowUp,\r\n faArrowDown,\r\n faUserCog,\r\n faTools,\r\n faPlusCircle,\r\n faMinusCircle,\r\n faThumbsUp,\r\n faTrophy,\r\n faBolt,\r\n faFile,\r\n faPen,\r\n faCopy,\r\n faStar,\r\n farStar,\r\n faPlus,\r\n faMinus,\r\n faUserCircle,\r\n faEye,\r\n faDrawPolygon,\r\n faFileDownload,\r\n faExternalLinkAlt,\r\n faExpand,\r\n faExpandAlt,\r\n faExpandArrowsAlt,\r\n faCompress,\r\n faCompressAlt,\r\n faCompressArrowsAlt,\r\n faRoad,\r\n faExchangeAlt,\r\n faRedo,\r\n faClipboard,\r\n faChartPie,\r\n faAngleDoubleDown,\r\n faVectorSquare,\r\n faObjectGroup,\r\n faDownload,\r\n faWindows,\r\n faStreetView,\r\n faGlobeEurope,\r\n faSitemap,\r\n faRoute,\r\n faNewspaper,\r\n faAngleDoubleLeft,\r\n faAngleDoubleRight,\r\n faAngleDoubleUp,\r\n faFileCirclePlus,\r\n faCircleDot, \r\n faClock,\r\n faAdjust,\r\n faHourglassHalf\r\n};\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { MapLibNgService, IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { combineLatest, Subject } from 'rxjs';\r\nimport { map, takeUntil } from 'rxjs/operators';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\n\r\n@Component({\r\n selector: 'lib-isy-geolocation',\r\n templateUrl: './isy-geolocation.component.html',\r\n styleUrls: ['./isy-geolocation.component.scss'],\r\n})\r\nexport class IsyGeolocationComponent implements OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n active = false;\r\n geolocationUpdateIsActivated = false;\r\n\r\n private unsubscribeGeolocationUpdate$ = new Subject();\r\n private unsubscribePointerDrag$ = new Subject();\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private commonService: IsyCommonService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private toasterService: IsyToasterService\r\n ) {}\r\n\r\n hideGeolocation$ = this.commonService.hideGeolocation$;\r\n\r\n vm$ = combineLatest([this.hideGeolocation$]).pipe(\r\n map(([hideGeolocation]: [boolean]) => ({\r\n hideGeolocation,\r\n }))\r\n );\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribeGeolocationUpdate();\r\n this.unsubscribePointerDrag();\r\n }\r\n\r\n getGeolocation(value: boolean): void {\r\n this.active = value;\r\n\r\n if (this.active) {\r\n // Activate geolocation\r\n this.mapLibNgService.map().getGeolocation();\r\n this.toasterService.info('geolocation_is_active_map_will_be_updated_msg', 'get_location_is_activated_title');\r\n this.geolocationUpdateIsActivated = false;\r\n // Subscribe to geolocation updates\r\n this.mapEmitterService.geolocationUpdatedEmitter$\r\n .pipe(takeUntil(this.unsubscribeGeolocationUpdate$))\r\n .subscribe((geoLocationIsActive: boolean) => {\r\n if (geoLocationIsActive === true) {\r\n if (!this.geolocationUpdateIsActivated) {\r\n this.geolocationUpdateIsActivated = true;\r\n // Notify user\r\n this.toasterService.success('position_is_updated_title'); \r\n // Subscribe to mapMoveEndEmitter only if geolocation is active\r\n this.mapEmitterService.mapMoveEndEmitter$\r\n .pipe(takeUntil(this.unsubscribeGeolocationUpdate$))\r\n .subscribe((mapMoveEnd) => {\r\n // Set zoom level\r\n this.mapLibNgService.map().setZoom(15);\r\n if (mapMoveEnd.zoom === '15') {\r\n this.unsubscribeGeolocationUpdate();\r\n this.subscribePointerDrag(); \r\n }\r\n });\r\n }\r\n }\r\n });\r\n } else {\r\n // Deactivate geolocation\r\n this.mapLibNgService.map().removeGeolocation(undefined);\r\n this.toasterService.info('get_location_is_deactivate_title');\r\n\r\n // Unsubscribe from both geolocation and pointer drag\r\n this.unsubscribeGeolocationUpdate();\r\n this.unsubscribePointerDrag();\r\n }\r\n }\r\n\r\n private unsubscribeGeolocationUpdate() {\r\n // Complete and reset the subject for geolocation\r\n this.unsubscribeGeolocationUpdate$.next();\r\n this.unsubscribeGeolocationUpdate$.complete();\r\n this.unsubscribeGeolocationUpdate$ = new Subject(); // Reset the subject\r\n }\r\n\r\n private subscribePointerDrag() { \r\n // Subscribe to pointer drag event\r\n this.mapEmitterService.pointerDragEmitter$\r\n .pipe(takeUntil(this.unsubscribePointerDrag$))\r\n .subscribe(() => { \r\n this.getGeolocation(false);\r\n // this.unsubscribePointerDrag();\r\n });\r\n }\r\n\r\n private unsubscribePointerDrag() {\r\n // Complete and reset the subject for pointer drag\r\n this.unsubscribePointerDrag$.next();\r\n this.unsubscribePointerDrag$.complete();\r\n this.unsubscribePointerDrag$ = new Subject(); // Reset the subject\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IsyGeolocationComponent } from './isy-geolocation.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, FontAwesomeModule, IsyTranslateModule],\r\n declarations: [IsyGeolocationComponent],\r\n exports: [IsyGeolocationComponent],\r\n})\r\nexport class IsyGeolocationModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { map, take } from 'rxjs/operators';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\n\r\ninterface ILanguage {\r\n language: string;\r\n}\r\n\r\ninterface IHide {\r\n hide: boolean;\r\n}\r\n\r\ninterface IJwt {\r\n token: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FrameView {\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService\r\n ) {}\r\n\r\n setLanguage(data: ILanguage): void {\r\n this.commonService.useLanguage(data.language);\r\n }\r\n\r\n hideTranslateBar(data: IHide): void {\r\n this.commonService.hideTranslateBar(data.hide);\r\n }\r\n\r\n hideSearchBar(data: IHide): void {\r\n this.commonService.hideSearchBar(data.hide);\r\n }\r\n\r\n hideInfoPanel(data: IHide): void {\r\n this.commonService.hideInfoPanel(data.hide);\r\n }\r\n\r\n hideGeolocation(data: IHide): void {\r\n this.commonService.hideGeolocation(data.hide);\r\n }\r\n\r\n hideBaseLayersLayout(data: IHide): void {\r\n this.commonService.hideBaseLayersLayout(data.hide);\r\n }\r\n\r\n setJwt(data: IJwt): void {\r\n const config = this.mapService.getProjectConfig();\r\n const instanceName = this.mapService.getInstanceName();\r\n const isyProxy = config.config.project.isyproxy;\r\n if (isyProxy) {\r\n const headers = {\r\n Authorization: `Bearer ${data.token}`,\r\n };\r\n const sendJwt = this.httpClient\r\n .post(\r\n isyProxy + '/AuthenticateToken?Instance=' + instanceName,\r\n undefined,\r\n { headers }\r\n )\r\n .pipe(\r\n map((result) => {\r\n return result;\r\n })\r\n );\r\n\r\n sendJwt.pipe(take(1)).subscribe();\r\n }\r\n }\r\n}\r\n","import {\r\n MapLibNgService,\r\n IsyMapEmitterService,\r\n GeoJsonUtilsService,\r\n} from '@isygis/isy-map';\r\nimport { Injectable } from '@angular/core';\r\nimport { EGiBridgeEventId, IsyGiBridgeService } from '@isygis/isy-gi-bridge';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GeoJsonUtilities {\r\n\r\n\r\n geoJsonSubscriptionIsActive = false;\r\n geoJsonSubscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private giBridgeService: IsyGiBridgeService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private geoJsonUtilsService: GeoJsonUtilsService\r\n ) {\r\n // empty\r\n }\r\n\r\n uploadGeoJson(data: any): void {\r\n // TODO: decide if tooltipTemplate will came as param or will be included inside GeoJson properties.\r\n // this.features = data.geoJson;\r\n // this.mapLibNgService.map().activateDrawingManager(this.createAdditionalOptions());\r\n // this.mapLibNgService.map().deactivateDrawingManager();\r\n this.geoJsonUtilsService.uploadGeoJson(data.geoJson);\r\n }\r\n\r\n removeGeoJson(): void {\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n this.mapLibNgService.map().activateHoverInfo();\r\n }\r\n\r\n startGetGeoJsonFeaturesInExtent(): void {\r\n if (!this.geoJsonSubscriptionIsActive) {\r\n this.geoJsonSubscription.add(\r\n this.mapEmitterService.getClickCoordinatesEmitter$.subscribe(\r\n (value) => {\r\n if (value) {\r\n const options = {};\r\n options['coordinate'] = value.coordinate;\r\n const features = this.mapLibNgService\r\n .map()\r\n .getGeoJsonFeaturesInExtent(value.coordinate);\r\n const geoJsonProperties = [];\r\n features.forEach((f) => {\r\n geoJsonProperties.push(f.getId());\r\n });\r\n this.giBridgeService.postMessage(\r\n EGiBridgeEventId.GEOJSONPROPERTIESINEXTENT,\r\n {\r\n ids: geoJsonProperties,\r\n }\r\n );\r\n }\r\n }\r\n )\r\n );\r\n }\r\n this.geoJsonSubscriptionIsActive = true;\r\n }\r\n\r\n stopGetGeoJsonFeaturesInExtent(): void {\r\n this.geoJsonSubscription.unsubscribe();\r\n this.geoJsonSubscriptionIsActive = false;\r\n this.giBridgeService.updateGeoJsonPropertiesInExtent(undefined);\r\n }\r\n}\r\n","import { MapLibNgService } from '@isygis/isy-map';\r\nimport { Injectable } from '@angular/core';\r\nimport { EGiBridgeEventId, IsyGiBridgeService } from '@isygis/isy-gi-bridge';\r\n\r\ninterface ILayer {\r\n guid: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MapLayers {\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private giBridgeService: IsyGiBridgeService\r\n ) {}\r\n\r\n setActiveBaseLayer(data: ILayer): void {\r\n this.mapLibNgService.map().setBaseLayerByGuid(data.guid);\r\n }\r\n\r\n showLayer(data: ILayer): void {\r\n this.mapLibNgService.map().showLayerByGuid(data.guid);\r\n }\r\n\r\n hideLayer(data: ILayer): void {\r\n this.mapLibNgService.map().hideLayerByGuid(data.guid);\r\n }\r\n\r\n getLayers(): void {\r\n const overlays = this.mapLibNgService.map().getOverlayLayers();\r\n this.giBridgeService.postMessage(EGiBridgeEventId.GETLAYERS, overlays);\r\n }\r\n\r\n getBaseLayers(): void {\r\n const baseOverlays = this.mapLibNgService.map().getBaseLayers();\r\n this.giBridgeService.postMessage(\r\n EGiBridgeEventId.GETBASELAYERS,\r\n baseOverlays\r\n );\r\n }\r\n}\r\n","import {\r\n MapLibNgService,\r\n IsyMapService,\r\n IsyMapEmitterService,\r\n} from '@isygis/isy-map';\r\nimport { Injectable } from '@angular/core';\r\nimport { IDomainLayer, IGisCoordinate, EToolId } from '@isygis/isy-configs';\r\nimport { EGiBridgeEventId, IsyGiBridgeService } from '@isygis/isy-gi-bridge';\r\nimport { IsyNeighborService } from '@isygis/isy-neighbor';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyAppMatrikkelService } from '@isygis/isy-app-services';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { take } from 'rxjs/operators';\r\nimport * as FileSaver from 'file-saver';\r\n\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IGisExtent } from '@isygis/isy-configs';\r\nexport interface ICoordinates {\r\n lat: string;\r\n lon: string;\r\n}\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MapView {\r\n eventHandler;\r\n eventTypes;\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private giBridgeService: IsyGiBridgeService,\r\n private mapService: IsyMapService,\r\n private matrikkelService: IsyAppMatrikkelService,\r\n private neighborService: IsyNeighborService,\r\n private sessionStorageService: SessionStorageService,\r\n private commonService: IsyCommonService,\r\n private toasterService: IsyToasterService,\r\n private translateService: IsyTranslateService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private mapEmitterService: IsyMapEmitterService\r\n ) {\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n }\r\n\r\n zoomIn(): void {\r\n let center = this.mapLibNgService.map().getZoom();\r\n center++;\r\n this.mapLibNgService.map().setZoom(center);\r\n }\r\n\r\n zoomOut(): void {\r\n let center = this.mapLibNgService.map().getZoom();\r\n center--;\r\n this.mapLibNgService.map().setZoom(center);\r\n }\r\n\r\n setCenter(data: IGisCoordinate): void {\r\n this.mapLibNgService.setCenter(data);\r\n }\r\n\r\n setExtent(data: IGisExtent): void {\r\n this.mapLibNgService.setExtent(data);\r\n }\r\n\r\n getCenter(): void {\r\n const center = this.mapLibNgService.getCenter();\r\n this.giBridgeService.postMessage(EGiBridgeEventId.GETCENTER, center);\r\n }\r\n\r\n getExtent(data: IGisExtent): void {\r\n const extent = this.mapLibNgService.getExtent(data.epsg);\r\n this.giBridgeService.postMessage(EGiBridgeEventId.GETEXTENT, extent);\r\n }\r\n\r\n mapMoveEnd(data: any): void {\r\n this.giBridgeService.postMessage(EGiBridgeEventId.MAPMOVEEND, data);\r\n }\r\n\r\n loadingLayerEnd(): void {\r\n this.giBridgeService.postMessage(EGiBridgeEventId.LOADINGLAYEREND);\r\n }\r\n\r\n pointInfo(data: any): void {\r\n this.giBridgeService.postMessage(EGiBridgeEventId.GETPOINTINFO, data);\r\n }\r\n\r\n getConfig(): void {\r\n const config = this.mapService.getConfig();\r\n this.giBridgeService.postMessage(EGiBridgeEventId.GETCONFIG, config);\r\n }\r\n\r\n getProjectConfig(): void {\r\n const projectConfig = this.mapService.getProjectConfig();\r\n this.giBridgeService.postMessage(\r\n EGiBridgeEventId.GETPROJECTCONFIG,\r\n projectConfig\r\n );\r\n }\r\n\r\n clickSimulation(data: ICoordinates): void {\r\n this.mapLibNgService.map().infoClickSimulation([data.lon, data.lat]);\r\n this.mapLibNgService.map().deactivateHoverInfo();\r\n }\r\n\r\n activateDrawTool(): void {\r\n this.commonService.activateToolById(EToolId.DRAW);\r\n }\r\n\r\n printMap(): void {\r\n this.mapLibNgService.map().activateExportImg(this.downloadImage, {});\r\n }\r\n\r\n private downloadImage(canvas): void {\r\n const dataUrl = canvas.toDataURL();\r\n FileSaver.saveAs(dataUrl, 'map.png');\r\n }\r\n\r\n featureInfo(data: any): void {\r\n this.giBridgeService.postMessage(EGiBridgeEventId.GETFEATUREINFO, data);\r\n }\r\n\r\n highLightFeature(data: any): void {\r\n this.mapLibNgService.map().highlightFeature(data);\r\n }\r\n\r\n deactivate_hoverinfo(): void {\r\n this.mapLibNgService.map().deactivateHoverInfo();\r\n }\r\n\r\n private findKeyFieldsFromFeatureInfoLayer(\r\n featureInfoLayer: IDomainLayer\r\n ): string[] {\r\n // if (featureInfoLayer && featureInfoLayer.features[0] && featureInfoLayer.features[0].properties) {\r\n // return this.findKeyFields(featureInfoLayer.features[0].properties);\r\n // }\r\n return [];\r\n }\r\n\r\n // findKeyFields(properties: any): any[] {\r\n // const keyFields = [];\r\n // const keyFieldCandidates = [\r\n // ['KOMM', 'KNR', 'KOMMUNENR', 'komm', 'knr', 'kommunenr'],\r\n // ['GNR', 'GARDSNR', 'gnr', 'gardsnr'],\r\n // ['BNR', 'BRUKSNR', 'bnr', 'bruksnr'],\r\n // ['FNR', 'FESTENR', 'fnr', 'festenr'],\r\n // ['SNR', 'SEKSJONSNR', 'snr', 'seksjonsnr'],\r\n // ['UNIKID', 'unikid']\r\n // ];\r\n // keyFieldCandidates.forEach(propGroup => {\r\n // let found = false;\r\n // propGroup.forEach(prop => {\r\n // if (!found && properties[prop] !== undefined) {\r\n // keyFields.push(prop);\r\n // found = true;\r\n // }\r\n // });\r\n // });\r\n // return keyFields;\r\n // }\r\n\r\n getNeighbors(data: any): void {\r\n //Gets the visible features in the map\r\n const visibleSubLayer = this.mapLibNgService.map().getVisibleSubLayers()[0];\r\n this.neighborService.setFeatureInfoLayerAction(visibleSubLayer);\r\n\r\n //Finds selected feature of visible features\r\n const features_visible = this.mapLibNgService\r\n .map()\r\n .getFeaturesInMap(visibleSubLayer);\r\n const selected_feature = features_visible.find(\r\n (f) =>\r\n f.get('KOMM') === String(data.komm) &&\r\n f.get('GNR') === String(data.gnr) &&\r\n f.get('BNR') === String(data.bnr)\r\n );\r\n this.neighborService.setFeatureAction(selected_feature);\r\n\r\n //NOTE: matrikkelservice.init() is hardcoded\r\n this.matrikkelService.init(\r\n 'https://test.geoinnsyn.no/services/isy.gis.isyexternalapi/matrikkel',\r\n 'od',\r\n 'EPSG:4326',\r\n null\r\n );\r\n const neighbors = this.matrikkelService.getNeighbors(\r\n data.komm,\r\n data.gnr,\r\n data.bnr,\r\n data.fnr,\r\n data.snr,\r\n true\r\n );\r\n\r\n //Subscribes for one result and sends neighbors as params to GiBridge\r\n neighbors.pipe(take(1)).subscribe((result) => {\r\n const neighbors = result.Matrikkelenheter;\r\n // console.log(\"Test neighbors: \",neighbors);\r\n this.giBridgeService.postMessage(\r\n EGiBridgeEventId.GETNEIGHBORS,\r\n neighbors\r\n );\r\n\r\n //selecting neighbors and highlighting\r\n const featureInfoLayer =\r\n this.neighborService.featureInfoLayerAction.getValue();\r\n const options = {\r\n mode: 'multi',\r\n style: 'neighbor',\r\n keyFields: this.findKeyFieldsFromFeatureInfoLayer(featureInfoLayer),\r\n layerName: featureInfoLayer.name,\r\n };\r\n\r\n this.mapLibNgService.map().activateFeatureSelector(options);\r\n this.neighborService.handleReceivedUnits(neighbors);\r\n\r\n //Attempt to disable feature click after neighbors are selected/highlighted\r\n // setTimeout(() => {\r\n // this.mapLibNgService.eventHandler().pauseEvent(this.mapLibNgService.eventTypes().FeatureClick);\r\n // this.mapLibNgService.eventHandler().pauseEvent(this.mapLibNgService.eventTypes().FeatureSelected);\r\n // this.mapLibNgService.eventHandler().pauseEvent(this.mapLibNgService.eventTypes().FeatureDeselected);\r\n // this.mapLibNgService.eventHandler().pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n // this.mapLibNgService.eventHandler().pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n // this.mapLibNgService.map().deactivateDrawingManager();\r\n // }, 1000)\r\n // this.mapEmitterService.featureSelectedEmitter$.subscribe(result => {\r\n // if(result){\r\n // console.log(result);\r\n // this.mapLibNgService.map().deactivateFeatureSelector();\r\n // }\r\n // });\r\n });\r\n }\r\n\r\n pauseEvents(): void {\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureHoverStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureHoverEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureHoverMove);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().GetClickCoordinates);\r\n }\r\n}\r\n","import { Directive, HostListener, OnDestroy, OnInit } from '@angular/core';\r\nimport { IsyMapEmitterService, MapLibNgService } from '@isygis/isy-map';\r\n\r\nimport { EGiBridgeEventId } from '@isygis/isy-gi-bridge';\r\nimport { FrameView } from './events/frame-view';\r\nimport { GeoJsonUtilities } from './events/geojson-utilities';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyPositionInfoService } from '@isygis/isy-position-info';\r\nimport { MapLayers } from './events/map-layers';\r\nimport { MapView } from './events/map-view';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[libGiBridgeEvents]',\r\n})\r\nexport class GiBridgeEventsDirective implements OnInit, OnDestroy {\r\n subscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private mapEmitterService: IsyMapEmitterService,\r\n private MaplibNgService: MapLibNgService,\r\n private positionInfoService: IsyPositionInfoService,\r\n private mapView: MapView,\r\n private frameView: FrameView,\r\n private mapLayers: MapLayers,\r\n private geoJsonUtilities: GeoJsonUtilities\r\n ) {}\r\n\r\n @HostListener('window:message', ['$event']) onPostMessage(event): void {\r\n // SETTER\r\n // --- MAP VIEW ---\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.ZOOMIN) {\r\n this.mapView.zoomIn();\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.ZOOMOUT) {\r\n this.mapView.zoomOut();\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.SETCENTER) {\r\n this.mapView.setCenter(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.SETEXTENT) {\r\n this.mapView.setExtent(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.CLICKSIMULATION) {\r\n this.mapView.clickSimulation(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.DEACTIVATEHOVERINFO) {\r\n this.mapView.deactivate_hoverinfo();\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.PAUSEALLEVENTS) {\r\n this.mapView.pauseEvents();\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.PRINTMAP) {\r\n this.mapView.printMap();\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.ACTIVATEDRAWTOOL) {\r\n this.mapView.activateDrawTool();\r\n }\r\n // --- FRAME VIEW ---\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.SETLANGUAGE) {\r\n this.frameView.setLanguage(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.HIDETRANSLATEBAR) {\r\n this.frameView.hideTranslateBar(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.HIDESEARCHBAR) {\r\n this.frameView.hideSearchBar(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.HIDEINFOPANEL) {\r\n this.frameView.hideInfoPanel(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.HIDEGEOLOCATION) {\r\n this.frameView.hideGeolocation(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.HIDEBASELAYERSLAYOUT) {\r\n this.frameView.hideBaseLayersLayout(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.SETJWT) {\r\n this.frameView.setJwt(event.data.params);\r\n }\r\n\r\n // --- MAP LAYERS ---\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.SETACTIVEBASELAYER) {\r\n this.mapLayers.setActiveBaseLayer(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.SHOWLAYER) {\r\n this.mapLayers.showLayer(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.HIDELAYER) {\r\n this.mapLayers.hideLayer(event.data.params);\r\n }\r\n\r\n // --- GEOJSON UTILITIES ---\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.UPLOADGEOJSON) {\r\n this.geoJsonUtilities.uploadGeoJson(event.data.params);\r\n }\r\n\r\n if (\r\n event.data.giBridgeParamId === EGiBridgeEventId.STARTGETGEOJSONFEATURES\r\n ) {\r\n this.geoJsonUtilities.startGetGeoJsonFeaturesInExtent();\r\n }\r\n\r\n if (\r\n event.data.giBridgeParamId === EGiBridgeEventId.STOPGETGEOJSONFEATURES\r\n ) {\r\n this.geoJsonUtilities.stopGetGeoJsonFeaturesInExtent();\r\n }\r\n\r\n // POST MESSAGE\r\n if (event.data.giBridgeParamId === 'gi_GetNeighbors') {\r\n this.mapView.getNeighbors(event.data.params);\r\n\r\n // if (event.data.komm !== undefined) {\r\n // this.matrikkelService.init(\r\n // this.mapService.getProjectConfig().config.project.isyexternalapi + '/matrikkel',\r\n // this.mapService.getMapConfig().instance,\r\n // 'EPSG:4326',\r\n // this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n // );\r\n\r\n // const neighbors = this.matrikkelService.getNeighbors(event.data.komm,\r\n // event.data.gnr, event.data.bnr, event.data.fnr, event.data.snr, true);\r\n // window.parent.postMessage(neighbors, '*');\r\n // }\r\n }\r\n\r\n // --- MAP VIEW ---\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.GETCENTER) {\r\n this.mapView.getCenter();\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.GETEXTENT) {\r\n this.mapView.getExtent(event.data.params);\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.GETCONFIG) {\r\n this.mapView.getConfig();\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.GETPROJECTCONFIG) {\r\n this.mapView.getProjectConfig();\r\n }\r\n\r\n // --- MAP LAYERS ---\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.GETLAYERS) {\r\n this.mapLayers.getLayers();\r\n }\r\n\r\n if (event.data.giBridgeParamId === EGiBridgeEventId.GETBASELAYERS) {\r\n this.mapLayers.getBaseLayers();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapEmitterService.mapMoveEndEmitter$.subscribe((value) => {\r\n if (value) {\r\n this.mapView.mapMoveEnd(value);\r\n }\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.mapEmitterService.loadingLayerEndEmitter$.subscribe((value) => {\r\n if (value) {\r\n this.mapView.loadingLayerEnd();\r\n }\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.positionInfoService.clickCoordinates$.subscribe((value) => {\r\n if (value) {\r\n this.mapView.pointInfo(value);\r\n }\r\n })\r\n );\r\n\r\n // this.subscription.add(\r\n // this.mapEmitterService.featureInfoEndEmitter$.subscribe(value => {\r\n // if (value) {\r\n\r\n // // this.mapView.highLightFeature(value.features[0].olFeature.getId()); //TODO: it has to be changed to featureId or something...\r\n // // this.mapView.highLightFeature(value.features[0].olFeature);\r\n // }\r\n // })\r\n // );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { GiBridgeEventsDirective } from './gi-bridge-events.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [GiBridgeEventsDirective],\r\n exports: [GiBridgeEventsDirective],\r\n})\r\nexport class IsyGiBridgeEventsModule {}\r\n","export enum EGiBridgeEventId {\r\n ZOOMIN = 'gi_ZoomIn',\r\n ZOOMOUT = 'gi_ZoomOut',\r\n SETCENTER = 'gi_SetCenter',\r\n SETEXTENT = 'gi_SetExtent',\r\n SETLANGUAGE = 'gi_SetLanguage',\r\n HIDETRANSLATEBAR = 'gi_HideTranslateBar',\r\n HIDESEARCHBAR = 'gi_HideSearchBar',\r\n HIDEINFOPANEL = 'gi_HideInfoPanel',\r\n HIDEGEOLOCATION = 'gi_HideGeolocation',\r\n HIDEBASELAYERSLAYOUT = 'gi_HideBaseLayersLayout',\r\n SETACTIVEBASELAYER = 'gi_SetActiveBaseLayer',\r\n SHOWLAYER = 'gi_ShowLayer',\r\n HIDELAYER = 'gi_HideLayer',\r\n GETNEIGHBORS = 'gi_GetNeighbors',\r\n GETCENTER = 'gi_GetCenter',\r\n GETEXTENT = 'gi_GetExtent',\r\n GETLAYERS = 'gi_GetLayers',\r\n GETBASELAYERS = 'gi_GetBaseLayers',\r\n MAPMOVEEND = 'gi_MapMoveEnd',\r\n LOADINGLAYEREND = 'gi_LoadingLayerEnd',\r\n GETPOINTINFO = 'gi_GetPointInfo',\r\n GETCONFIG = 'gi_getConfig',\r\n SETJWT = 'gi_setJwt',\r\n GETPROJECTCONFIG = 'gi_getProjectConfig',\r\n CLICKSIMULATION = 'gi_ClickSimulation',\r\n GETFEATUREINFO = 'gi_GetFeatureInfo',\r\n DEACTIVATEHOVERINFO = 'gi_DeactivateHoverInfo',\r\n PAUSEALLEVENTS = 'gi_PauseAllEvents',\r\n PRINTMAP = 'gi_PrintMap',\r\n ACTIVATEDRAWTOOL = 'gi_ActivateDrawTool',\r\n // GEOJSON UTILITIES\r\n UPLOADGEOJSON = 'gi_UploadGeoJson',\r\n STARTGETGEOJSONFEATURES = 'gi_StartGetGeoJsonFeatures',\r\n STOPGETGEOJSONFEATURES = 'gi_StopGetGeoJsonFeatures',\r\n GEOJSONPROPERTIESINEXTENT = 'gi_GeoJsonPropertiesInExtent',\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { IGiBridgeEvent } from './event';\r\n// ! NO MORE IMPORTS FROM OTHER PROJECTS !\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyGiBridgeService {\r\n private updatedCoordinatesAction = new BehaviorSubject(undefined);\r\n updatedCoordinates$ = this.updatedCoordinatesAction.asObservable();\r\n\r\n private mapCenterAction = new BehaviorSubject(undefined);\r\n mapCenter$ = this.mapCenterAction.asObservable();\r\n\r\n private mapExtentAction = new BehaviorSubject(undefined);\r\n mapExtent$ = this.mapExtentAction.asObservable();\r\n\r\n private initUrlAction = new BehaviorSubject(undefined);\r\n initUrl$ = this.initUrlAction.asObservable();\r\n\r\n private iframeLoadedAction = new BehaviorSubject(false);\r\n iframeLoaded$ = this.iframeLoadedAction.asObservable();\r\n\r\n private getPointInfoAction = new BehaviorSubject(undefined);\r\n getPointInfo$ = this.getPointInfoAction.asObservable();\r\n\r\n private getLayersAction = new BehaviorSubject(undefined);\r\n getLayers$ = this.getLayersAction.asObservable();\r\n\r\n private getBaseLayersAction = new BehaviorSubject(undefined);\r\n getBaseLayers$ = this.getBaseLayersAction.asObservable();\r\n\r\n private getNeighborsAction = new BehaviorSubject(undefined);\r\n getNeighbors$ = this.getNeighborsAction.asObservable();\r\n\r\n private geoJsonPropertiesInExtentAction = new BehaviorSubject(undefined);\r\n geoJsonPropertiesInExtent$ =\r\n this.geoJsonPropertiesInExtentAction.asObservable();\r\n\r\n private getConfigAction = new BehaviorSubject(undefined);\r\n getConfig$ = this.getConfigAction.asObservable();\r\n\r\n private getProjectConfigAction = new BehaviorSubject(undefined);\r\n getProjectConfig$ = this.getProjectConfigAction.asObservable();\r\n\r\n private featureInfoAction = new BehaviorSubject(undefined);\r\n getFeatureInfo$ = this.featureInfoAction.asObservable();\r\n\r\n // update observables\r\n\r\n updateCoordinate(value: any): void {\r\n this.updatedCoordinatesAction.next(value);\r\n }\r\n\r\n updateMapCenter(value: any): void {\r\n this.mapCenterAction.next(value);\r\n }\r\n\r\n updateMapExtent(value: any): void {\r\n this.mapExtentAction.next(value);\r\n }\r\n\r\n updatePointInfo(value: any): void {\r\n this.getPointInfoAction.next(value);\r\n }\r\n\r\n updateGetLayers(value: any): void {\r\n this.getLayersAction.next(value);\r\n }\r\n\r\n updateGetBaseLayers(value: any): void {\r\n this.getBaseLayersAction.next(value);\r\n }\r\n\r\n updateGetNeighbors(value: any): void {\r\n this.getNeighborsAction.next(value);\r\n }\r\n\r\n updateGeoJsonPropertiesInExtent(value: any): void {\r\n this.geoJsonPropertiesInExtentAction.next(value);\r\n }\r\n\r\n updateGetConfig(value: any): void {\r\n this.getConfigAction.next(value);\r\n }\r\n\r\n updateGetProjectConfig(value: any): void {\r\n this.getProjectConfigAction.next(value);\r\n }\r\n\r\n updateFeatureInfo(value: any): void {\r\n this.featureInfoAction.next(value);\r\n }\r\n\r\n // communication with iframe\r\n\r\n setParam(paramId: string, bridgeParams?: object): void {\r\n const giBridge = document.getElementById('giBridge');\r\n if (giBridge) {\r\n const giBridgeIframe = giBridge['contentWindow'];\r\n const postMessage = {\r\n giBridgeParamId: paramId,\r\n params: bridgeParams,\r\n };\r\n giBridgeIframe.postMessage(postMessage, '*');\r\n }\r\n }\r\n\r\n setInitUrl(url: string): void {\r\n this.initUrlAction.next(url);\r\n }\r\n\r\n iframeLoaded(): void {\r\n this.iframeLoadedAction.next(true);\r\n }\r\n\r\n iframeUnload(): void {\r\n this.iframeLoadedAction.next(false);\r\n }\r\n\r\n postMessage(paramId: string, bridgeParams?: any): void {\r\n const postMessage: IGiBridgeEvent = {\r\n giBridgeParamId: paramId,\r\n params: bridgeParams,\r\n };\r\n window.parent.postMessage(postMessage, '*');\r\n }\r\n}\r\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\r\n\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyGiVisComponent } from './isy-gi-vis.component';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[libGiVis]',\r\n})\r\nexport class GiVisDirective implements OnInit, OnDestroy {\r\n subscriptions: Subscription = new Subscription();\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private translateService: IsyTranslateService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.add(\r\n this.commonService.giVisPlanQueryParamsAction$.subscribe((params) => {\r\n if (params && params.plan) {\r\n params.planidentifikasjon = params.plan;\r\n }\r\n if (params && params.kommunenummer && params.planidentifikasjon) {\r\n setTimeout(() => {\r\n this.mapActionDialogService.show(\r\n 'GiVis',\r\n this.translateService.instant('VisPlan'),\r\n IsyGiVisComponent,\r\n params,\r\n { longText: true, noUpperCase: true, position: 'left' }\r\n );\r\n }, 200);\r\n }\r\n })\r\n );\r\n\r\n this.subscriptions.add(\r\n this.commonService.giVisEiendomQueryParamsAction$.subscribe((params) => {\r\n if (\r\n params &&\r\n params.kommunenummer &&\r\n params.gaardsnummer &&\r\n params.bruksnummer\r\n ) {\r\n setTimeout(() => {\r\n this.mapActionDialogService.show(\r\n 'GiVis',\r\n this.translateService.instant('Vis eiendom'),\r\n IsyGiVisComponent,\r\n params,\r\n { longText: true, noUpperCase: true, position: 'left' }\r\n );\r\n }, 200);\r\n }\r\n })\r\n );\r\n\r\n this.subscriptions.add(\r\n this.commonService.giVisBygningQueryParamsAction$.subscribe((params) => {\r\n if (params && params.kommunenummer && params.bygningsnummer) {\r\n setTimeout(() => {\r\n this.mapActionDialogService.show(\r\n 'GiVis',\r\n this.translateService.instant('Vis bygning'),\r\n IsyGiVisComponent,\r\n params,\r\n { longText: true, noUpperCase: true, position: 'left' }\r\n );\r\n }, 200);\r\n }\r\n })\r\n );\r\n\r\n this.subscriptions.add(\r\n this.commonService.giVisAdresseQueryParamsAction$.subscribe((params) => {\r\n if (params && params.kommunenummer && params.adressenavn) {\r\n setTimeout(() => {\r\n this.mapActionDialogService.show(\r\n 'GiVis',\r\n this.translateService.instant('Vis adresse'),\r\n IsyGiVisComponent,\r\n params,\r\n { longText: true, noUpperCase: true, position: 'left' }\r\n );\r\n }, 200);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}\r\n","import { BehaviorSubject, EMPTY, Subscription, combineLatest } from 'rxjs';\r\nimport { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n GeoJsonUtilsService,\r\n IsyMapEmitterService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { map, mergeMap, tap } from 'rxjs/operators';\r\n\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyGiVisService } from './isy-gi-vis.service';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { PinIconStyle } from '@isygis/isy-gis-styles';\r\n\r\n@Component({\r\n selector: 'lib-isy-gi-vis',\r\n templateUrl: './isy-gi-vis.component.html',\r\n styles: [],\r\n})\r\nexport class IsyGiVisComponent implements OnInit, OnDestroy {\r\n @Input() data: any;\r\n\r\n first = true;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription: Subscription;\r\n\r\n constructor(\r\n private giVisService: IsyGiVisService,\r\n private toasterService: IsyToasterService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private commonService: IsyCommonService,\r\n private geoJsonUtilsService: GeoJsonUtilsService\r\n ) {}\r\n\r\n private initReadyAction = new BehaviorSubject(false);\r\n doAction$ = combineLatest([this.initReadyAction]).pipe(\r\n mergeMap(([ready]: [boolean]) => {\r\n if (ready && this.data && this.data.funksjon) {\r\n switch (this.data.funksjon.toLowerCase()) {\r\n case 'visplan': {\r\n this.toasterService.info('', 'vis_plan_activated_toaster_title');\r\n return this.giVisService.giVisPlan(this.data);\r\n }\r\n case 'viseiendom': {\r\n this.toasterService.info(\r\n '',\r\n 'vis_property_activated_toaster_title'\r\n );\r\n return this.giVisService.giVisEiendom(this.data);\r\n }\r\n case 'visadresse': {\r\n this.toasterService.info('', 'vis_address_activated_toaster_title');\r\n return this.giVisService.giVisAdresse(this.data);\r\n }\r\n case 'visbygning': {\r\n this.toasterService.info(\r\n '',\r\n 'vis_building_activated_toaster_title'\r\n );\r\n return this.giVisService.giVisBygning(this.data);\r\n }\r\n default: {\r\n return EMPTY;\r\n }\r\n }\r\n } else {\r\n return Promise.resolve(undefined);\r\n }\r\n })\r\n );\r\n\r\n vm$ = combineLatest([this.doAction$]).pipe(\r\n map(([ready]: [any]) => ({\r\n ready,\r\n })),\r\n tap((result) => {\r\n if (result && result.ready) {\r\n if (result.ready[0]) {\r\n const pos: any = result.ready[0];\r\n const hasExtent: boolean = pos.Extent && pos.Extent.length > 0;\r\n const hasLatLon: boolean = pos.Longitude && pos.Latitude;\r\n const hasGeoJson: boolean = pos.GeoJson;\r\n if (hasExtent) {\r\n this.mapLibNgService\r\n .map()\r\n .fitExtent(pos.Extent, undefined, pos.EpsgKode || 'EPSG:4326'); //* Assume GI-VIS service returns 4326 if not specified\r\n }\r\n if (hasLatLon) {\r\n const center = {\r\n lon: Number(pos.Longitude),\r\n lat: Number(pos.Latitude),\r\n zoom: pos.ZoomLevel,\r\n epsg: pos.EpsgKode,\r\n };\r\n // this.mapLibNgService.map().showInfoMarker([center.lon, center.lat]);\r\n const iconStyle = new PinIconStyle();\r\n this.mapLibNgService.map().showMarker(center, iconStyle);\r\n if (!hasExtent) {\r\n this.mapLibNgService.map().setCenter(center);\r\n }\r\n }\r\n if (hasGeoJson) {\r\n this.geoJsonUtilsService.setSearchResultStyle();\r\n this.geoJsonUtilsService.uploadGeoJson(pos.GeoJson);\r\n }\r\n if (!hasExtent && !hasLatLon) {\r\n this.toasterService.error('no_result_toaster_msg');\r\n console.error(\r\n 'GI Vis fant ingen treff med følgende data: ',\r\n this.data\r\n );\r\n setTimeout(() => {\r\n this.abort();\r\n }, 100);\r\n }\r\n }\r\n }\r\n })\r\n );\r\n\r\n ngOnInit() {\r\n this.commonService.hideSearchBar(true);\r\n\r\n this.mapEmitterService.mapMoveEndEmitter$.subscribe((value) => {\r\n if (value) {\r\n if (this.first) {\r\n this.first = false;\r\n this.initReadyAction.next(true);\r\n }\r\n }\r\n });\r\n }\r\n ngOnDestroy() {\r\n this.commonService.hideSearchBar(false);\r\n this.commonService.removeGiQueryParams();\r\n this.mapLibNgService.map().removeInfoMarker();\r\n }\r\n abort() {\r\n this.mapActionDialogService.hide('GiVis');\r\n }\r\n}\r\n","\r\n
    \r\n \r\n
    \r\n ","import { NgModule } from '@angular/core';\r\nimport { IsyGiVisComponent } from './isy-gi-vis.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { GiVisDirective } from './gi-vis.directive';\r\n\r\n@NgModule({\r\n declarations: [IsyGiVisComponent, GiVisDirective],\r\n imports: [CommonModule, IsyTranslateModule, FontAwesomeModule],\r\n exports: [GiVisDirective],\r\n})\r\nexport class IsyGiVisModule {}\r\n","import {\r\n GeoJsonUtilsService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport {\r\n IGIVisAdresseQueryParams,\r\n IGIVisBygningQueryParams,\r\n IGIVisEiendomQueryParams,\r\n IGIVisPlanQueryParams,\r\n MapConfig,\r\n} from '@isygis/isy-configs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { EMPTY } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyGiVisService {\r\n private mapConfig: MapConfig;\r\n private url = '';\r\n private planUrl = '';\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService,\r\n private geoJsonUtilsService: GeoJsonUtilsService,\r\n private mapLibNgService: MapLibNgService,\r\n private toasterService: IsyToasterService\r\n ) {\r\n if (this.mapService.getProjectConfig()) {\r\n this.url =\r\n this.mapService.getProjectConfig().config.project.isysearch +\r\n '/api/searchgi/';\r\n this.planUrl =\r\n this.mapService.getProjectConfig().config.project.isysearch +\r\n '/api/searchplannoisv2/';\r\n }\r\n this.mapConfig = this.mapService.getMapConfig();\r\n }\r\n\r\n giVisPlan(params: IGIVisPlanQueryParams) {\r\n if (this.planUrl && this.mapConfig.instance) {\r\n if (params && params.plan) {\r\n params.planidentifikasjon = params.plan;\r\n }\r\n\r\n const visParams = {\r\n application: this.mapConfig.instance,\r\n project: this.mapConfig.projectName,\r\n funksjon: params.funksjon,\r\n kommunenummer: params.kommunenummer,\r\n planidentifikasjon: params.planidentifikasjon,\r\n };\r\n return this.getGiVisPlan(visParams);\r\n }\r\n return EMPTY;\r\n }\r\n\r\n giVisEiendom(params: IGIVisEiendomQueryParams) {\r\n if (this.url && this.mapConfig.instance) {\r\n const visParams = {\r\n application: this.mapConfig.instance,\r\n project: this.mapConfig.projectName,\r\n funksjon: params.funksjon,\r\n kommunenummer: params.kommunenummer,\r\n gaardsnummer: params.gaardsnummer,\r\n bruksnummer: params.bruksnummer,\r\n festenummer: params.festenummer,\r\n seksjonsnummer: params.seksjonsnummer,\r\n };\r\n return this.getGiVis(visParams);\r\n }\r\n return EMPTY;\r\n }\r\n\r\n giVisBygning(params: IGIVisBygningQueryParams) {\r\n if (this.url && this.mapConfig.instance) {\r\n const visParams = {\r\n application: this.mapConfig.instance,\r\n project: this.mapConfig.projectName,\r\n funksjon: params.funksjon,\r\n kommunenummer: params.kommunenummer,\r\n bygningsnummer: params.bygningsnummer,\r\n endringsloepenummer: params.endringsloepenummer,\r\n };\r\n return this.getGiVis(visParams);\r\n }\r\n return EMPTY;\r\n }\r\n\r\n giVisAdresse(params: IGIVisAdresseQueryParams) {\r\n if (this.url && this.mapConfig.instance) {\r\n const visParams = {\r\n application: this.mapConfig.instance,\r\n project: this.mapConfig.projectName,\r\n funksjon: params.funksjon,\r\n kommunenummer: params.kommunenummer,\r\n adressenavn: params.adressenavn,\r\n husnummer: params.husnummer,\r\n bokstav: params.bokstav,\r\n gaardsnummer: params.gaardsnummer,\r\n bruksnummer: params.bruksnummer,\r\n festenummer: params.festenummer,\r\n seksjonsnummer: params.seksjonsnummer,\r\n undernummer: params.undernummer,\r\n };\r\n return this.getGiVis(visParams);\r\n }\r\n return EMPTY;\r\n }\r\n getGiVisPlan(visParams: any) {\r\n return this.httpClient\r\n .get(\r\n this.planUrl +\r\n '?search=' +\r\n visParams.planidentifikasjon +\r\n '&kommune=' +\r\n visParams.kommunenummer +\r\n '&instance=' +\r\n this.mapConfig.instance +\r\n '&epsg=' +\r\n this.mapConfig.coordinate_system +\r\n '&project=' +\r\n this.mapConfig.projectName +\r\n '×tamp=' +\r\n Date.now()\r\n )\r\n .pipe(\r\n map((result) => {\r\n if (result && result[0] && result[0].GeoJson) {\r\n this.geoJsonUtilsService.setVisPlanStyle();\r\n this.geoJsonUtilsService.uploadGeoJson(result[0].GeoJson);\r\n // const extent = this.mapLibNgService.map().getExtentForLayerById('drawing');\r\n // this.mapLibNgService.map().setExtent(extent);\r\n this.showArealplanLayersWithFilter(visParams);\r\n return result;\r\n }\r\n return this.handleErrorWithPromise('No results found');\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n }\r\n\r\n getGiVis(visParams: any) {\r\n if (!this.mapConfig.instance) {\r\n this.mapConfig = this.mapService.getMapConfig();\r\n this.url =\r\n this.mapService.getProjectConfig().config.project.isysearch +\r\n '/api/searchgi/';\r\n this.planUrl =\r\n this.mapService.getProjectConfig().config.project.isysearch +\r\n '/api/searchplannoisv2/';\r\n }\r\n return this.httpClient\r\n .get(\r\n this.url +\r\n '?search=' +\r\n JSON.stringify(visParams) +\r\n '&kommune=' +\r\n visParams.kommunenummer +\r\n '&instance=' +\r\n this.mapConfig.instance +\r\n '&epsg=' +\r\n this.mapConfig.coordinate_system +\r\n '&project=' +\r\n this.mapConfig.projectName +\r\n '×tamp=' +\r\n Date.now()\r\n )\r\n .pipe(\r\n map((result) => {\r\n if (result) {\r\n return this.filterSearchgiResultsOnlyExactBnr(result);\r\n }\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n }\r\n private showArealplanLayersWithFilter(visParams: any) {\r\n const [layers, subLayers] = this.findArealPlanLayers();\r\n if (subLayers) {\r\n if (visParams.plan) {\r\n visParams.planidentifikasjon = visParams.plan;\r\n }\r\n layers.forEach((l) => {\r\n setTimeout(() => {\r\n this.mapLibNgService.map().showLayer(l);\r\n }, 300);\r\n });\r\n subLayers.forEach((l) => {\r\n setTimeout(() => {\r\n const style = {\r\n style: [\r\n {\r\n image: {\r\n radius: 5,\r\n stroke: {\r\n color: '#9b05d4',\r\n width: 3,\r\n },\r\n fill: {\r\n color: 'rgba(221, 7, 225, 1)',\r\n },\r\n },\r\n stroke: {\r\n color: 'rgba(221, 7, 225, 1)',\r\n width: 10.0,\r\n },\r\n fill: {\r\n color: 'rgba(0,255,0,0.5)',\r\n },\r\n },\r\n ],\r\n };\r\n this.mapLibNgService.map().setLayerFilter(\r\n l,\r\n {\r\n PLANID: visParams.planidentifikasjon,\r\n KOMM: visParams.kommunenummer,\r\n },\r\n true,\r\n false,\r\n style\r\n );\r\n }, 400);\r\n layers.forEach((l) => {\r\n this.mapLibNgService.map().showLayer(l);\r\n });\r\n });\r\n } else {\r\n this.toasterService.error('map_layer_not_found_toaster_mag', 'error');\r\n }\r\n }\r\n\r\n private findArealPlanLayers() {\r\n const layers = [];\r\n const subLayers = [];\r\n if (this.mapConfig && this.mapConfig.layers) {\r\n this.mapConfig.layers.forEach((layer) => {\r\n if (layer && layer.subLayers) {\r\n layer.subLayers.forEach((sublayer) => {\r\n if (sublayer.layertype === 'Arealplan') {\r\n layers.push(layer);\r\n subLayers.push(sublayer);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n return [layers, subLayers];\r\n }\r\n\r\n private filterSearchgiResultsOnlyExactBnr(result) {\r\n if (Array.isArray(result) && result[0]) {\r\n const res = result[0];\r\n const geoJson = JSON.parse(res.GeoJson);\r\n const bnr = res.ObjectValues?.BNR;\r\n geoJson.features = geoJson?.features?.filter(\r\n (x) => String(x.properties?.bnr) === String(bnr)\r\n );\r\n res.GeoJson = JSON.stringify(geoJson);\r\n const newExtent = this.getNewExtentFromFeatures(geoJson.features);\r\n if (newExtent) {\r\n res.Extent = newExtent;\r\n res.Latitude = String((newExtent[1] + newExtent[3]) / 2);\r\n res.Longitude = String((newExtent[0] + newExtent[2]) / 2);\r\n }\r\n return [res];\r\n } else {\r\n return result;\r\n }\r\n }\r\n\r\n private getNewExtentFromFeatures(features) {\r\n let extents = features.map((f) => this.getNewExtentFromFeature(f));\r\n extents = extents.filter((e) => e !== null);\r\n return this.averageExtents(extents);\r\n }\r\n\r\n private getNewExtentFromFeature(feature) {\r\n if (feature.geometry?.type === 'Polygon') {\r\n const coords = feature.geometry?.coordinates;\r\n return this.getNewExtentFromPolygonCoordinates(coords);\r\n } else if (feature.geometry?.type === 'MultiPolygon') {\r\n let extents = feature.geometry?.coordinates.map((coords) =>\r\n this.getNewExtentFromPolygonCoordinates(coords)\r\n );\r\n extents = extents.filter((e) => e !== null);\r\n return this.averageExtents(extents);\r\n }\r\n return null;\r\n }\r\n\r\n private averageExtents(extents) {\r\n return [\r\n Math.min(...extents.map((x) => x[0])),\r\n Math.min(...extents.map((x) => x[1])),\r\n Math.max(...extents.map((x) => x[2])),\r\n Math.max(...extents.map((x) => x[3])),\r\n ];\r\n }\r\n\r\n private getNewExtentFromPolygonCoordinates(coords) {\r\n const xs = coords[0].map((x) => x[0]);\r\n const ys = coords[0].map((x) => x[1]);\r\n return [Math.min(...xs), Math.min(...ys), Math.max(...xs), Math.max(...ys)];\r\n }\r\n\r\n private handleErrorWithPromise(err) {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n this.toasterService.error(errorMessage, 'ERROR');\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { GisInputService } from './gis-input.service';\r\n\r\n@Component({\r\n selector: 'lib-gis-input',\r\n templateUrl: './gis-input.component.html',\r\n styleUrls: ['./gis-input.component.scss'],\r\n})\r\nexport class GisInputComponent implements OnInit, OnDestroy {\r\n constructor(private gisInputService: GisInputService) {}\r\n\r\n // TODO: !!!EXPERIMENTAL NOT READY YET!!!\r\n inputValue;\r\n @Input() name: string;\r\n @Input() helpText: string;\r\n @Input() label: string;\r\n @Input() showHighlight: void;\r\n @Input()\r\n get inputData(): string {\r\n console.log('GET: ', this.inputValue);\r\n return this.inputValue;\r\n }\r\n set inputData(val: string) {\r\n console.log('SET: ', val);\r\n this.inputValue = val;\r\n this.outputData.emit(this.inputValue);\r\n }\r\n @Output() outputData = new EventEmitter();\r\n\r\n ngOnInit() {\r\n console.log('Highlight: ', this.showHighlight);\r\n if (!this.name) {\r\n throw new Error('Input must have a \"name\" attribute.');\r\n }\r\n this.gisInputService._register(this);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.gisInputService._unregister(this);\r\n }\r\n}\r\n","
    \r\n \r\n \r\n \r\n \r\n {{helpText}}\r\n
    ","import { Injectable } from '@angular/core';\r\nimport { GisInputComponent } from './gis-input.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GisInputService {\r\n private gisInputCache = new Set();\r\n\r\n _register(gisInput: GisInputComponent): void {\r\n this.gisInputCache.forEach((input) => {\r\n if (input.name === gisInput.name) {\r\n throw new Error(\r\n 'Input with the \"name\": ' + gisInput.name + ' already exist!'\r\n );\r\n }\r\n });\r\n this.gisInputCache.add(gisInput);\r\n }\r\n\r\n _unregister(gisInputToRemove: GisInputComponent): void {\r\n this.gisInputCache.forEach((gisInput) => {\r\n if (gisInput === gisInputToRemove) {\r\n this.gisInputCache.delete(gisInput);\r\n }\r\n });\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { EGISTheme } from './theme';\r\nimport { IsyGisStylesService } from './isy-gis-styles.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[libGisTheme]',\r\n})\r\nexport class GisThemeDirective implements OnChanges, OnInit, OnDestroy {\r\n @Input('libGisTheme') theme: any; // { [prop: string]: string };\r\n\r\n subscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private commonService: IsyCommonService,\r\n private gisStylesService: IsyGisStylesService\r\n ) {}\r\n\r\n ngOnChanges(): void {\r\n Object.keys(this.theme).forEach((prop) => {\r\n this.el.nativeElement.style.setProperty(`--${prop}`, this.theme[prop]);\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.commonService.changeTheme$.subscribe((themeName) => {\r\n const themes = Object.values(EGISTheme);\r\n const findTheme = themes.findIndex(\r\n (theme) => theme.toLowerCase() === themeName.toLowerCase()\r\n );\r\n if (findTheme) {\r\n this.gisStylesService.use(Object.values(EGISTheme)[findTheme]);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-isy-gis-styles',\r\n template: `

    isy-gis-styles works!

    `,\r\n styles: [],\r\n})\r\nexport class IsyGisStylesComponent {\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IsyGisStylesComponent } from './isy-gis-styles.component';\r\nimport { GisThemeDirective } from './gis-theme.directive';\r\nimport { GisInputComponent } from './gis-input/gis-input.component';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule],\r\n declarations: [IsyGisStylesComponent, GisThemeDirective, GisInputComponent],\r\n exports: [IsyGisStylesComponent, GisThemeDirective, GisInputComponent],\r\n})\r\nexport class IsyGisStylesModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { THEMES } from './themes';\r\nimport { IGisTheme } from './gis-theme.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyGisStylesService {\r\n private _currentTheme = new BehaviorSubject({});\r\n currentTheme$ = this._currentTheme.asObservable();\r\n\r\n public use(themeName: string) {\r\n // if (THEMES[themeName]) {\r\n // this._currentTheme.next(THEMES[themeName]);\r\n // }\r\n\r\n THEMES[themeName]\r\n ? this._currentTheme.next(THEMES[themeName])\r\n : this._currentTheme.next({});\r\n }\r\n}\r\n","export class PinIconStyle {\r\n constructor(color?: string) {\r\n let pinColor = '';\r\n switch (color) {\r\n case 'primary':\r\n pinColor = 'rgba(234, 67, 53, 1)';\r\n break;\r\n case 'secondary':\r\n pinColor = 'rgba(44, 83, 121, 1)';\r\n break;\r\n default:\r\n pinColor = color ? color : 'rgba(234, 67, 53, 1)';\r\n }\r\n const style = {\r\n image: {\r\n src:\r\n 'data:image/svg+xml;utf8,' +\r\n '' +\r\n '',\r\n\r\n scale: 0.08,\r\n anchor: [0.38, 512],\r\n anchorXUnits: 'fraction',\r\n anchorYUnits: 'pixels',\r\n },\r\n };\r\n return style;\r\n }\r\n}\r\n","export enum EGISTheme {\r\n CLASSIC = 'classic',\r\n DARKMODE = 'darkmode',\r\n INNBYGGERDLG = 'innbyggerdlg',\r\n}\r\n","import { GisThemes } from './gis-themes.model';\r\nimport { THEME_CLASSIC_NAME, THEME_CLASSIC_STYLES } from './themes/classic';\r\nimport { THEME_DARKMODE_NAME, THEME_DARKMODE_STYLES } from './themes/darkmode';\r\nimport {\r\n THEME_INNBYGGERDLG_NAME,\r\n THEME_INNBYGGERDLG_STYLES,\r\n} from './themes/innbyggerdlg';\r\n\r\nexport const THEMES: GisThemes = {\r\n [THEME_CLASSIC_NAME]: THEME_CLASSIC_STYLES,\r\n [THEME_DARKMODE_NAME]: THEME_DARKMODE_STYLES,\r\n [THEME_INNBYGGERDLG_NAME]: THEME_INNBYGGERDLG_STYLES,\r\n};\r\n","import { IThemeColors, IGisTheme } from '../gis-theme.model';\r\nimport { EGISTheme } from '../theme';\r\n\r\nexport const THEME_CLASSIC_NAME = EGISTheme.CLASSIC;\r\n\r\nexport const CLASSIC_COLORS: IThemeColors = {\r\n $primaryMainColor: '#2C5379',\r\n $primaryMainColorDeactivate: 'rgba(44, 83, 121, 0.5)',\r\n $mainBackgroundColor: 'white',\r\n $mainHeaderColor: '#eaeaea',\r\n $mainTextColor: '#555',\r\n $mainTextHoverColor: 'black',\r\n $mainBorderBoxColor: 'grey',\r\n $separatorColor: '#90D5D6',\r\n $listColor: '#e6e6e6',\r\n $listDeselectedColor: 'white',\r\n $listHoverColor: '#d0d0d0',\r\n $listTextColor: '#555',\r\n};\r\n\r\nexport const THEME_CLASSIC_STYLES: IGisTheme = {\r\n // main app color\r\n 'main-background-color': CLASSIC_COLORS.$mainBackgroundColor,\r\n 'main-text-color': CLASSIC_COLORS.$mainTextColor,\r\n 'main-text-hover-color': CLASSIC_COLORS.$mainTextHoverColor,\r\n 'primary-text-color': CLASSIC_COLORS.$primaryMainColor,\r\n 'primary-text-color-deactivate': CLASSIC_COLORS.$primaryMainColorDeactivate,\r\n // isy-base-layers\r\n 'base-active-layer-color': 'rgba(255, 255, 255, 0.8)',\r\n 'base-layers-color': 'rgba(147, 147, 147, 0.47)',\r\n 'base-layers-hover-color': 'rgba(0, 0, 0, 0.47)',\r\n 'base-active-layer-border': CLASSIC_COLORS.$primaryMainColor,\r\n // isy-draggable-overlay\r\n 'header-color': CLASSIC_COLORS.$mainHeaderColor,\r\n 'header-text-color': CLASSIC_COLORS.$mainTextColor,\r\n 'header-icon-color': CLASSIC_COLORS.$primaryMainColor,\r\n 'header-icon-border-box-color': CLASSIC_COLORS.$mainBorderBoxColor,\r\n\r\n 'separator-color': CLASSIC_COLORS.$separatorColor,\r\n\r\n 'list-color': CLASSIC_COLORS.$listColor,\r\n 'list-deselected-color': CLASSIC_COLORS.$listDeselectedColor,\r\n 'list-border-color': CLASSIC_COLORS.$listColor,\r\n 'list-hover-color': CLASSIC_COLORS.$listHoverColor,\r\n 'list-text-color': CLASSIC_COLORS.$listTextColor,\r\n\r\n 'selected-list-item-color-secondary': '#cdce7c',\r\n 'selected-list-item-text-color-secondary': 'white',\r\n\r\n 'pin-hover-color': '#f7f7f7',\r\n\r\n 'shadow-color': 'rgba(0,0,0,0.10)',\r\n 'shadow-color-light': 'rgba(0,0,0,0.01)',\r\n\r\n 'search-input-container-shadow': 'rgba(0,0,0,0.2)',\r\n 'search-input-container-shadow-light': 'rgba(0,0,0,0.02)',\r\n 'search-bar-icon': '#b7b7b7',\r\n\r\n 'side-nav-footer-text-color': 'white',\r\n 'side-nav-overlay-layer': 'rgba(93,93,93,.33)',\r\n};\r\n","import { IGisTheme, IThemeColors } from '../gis-theme.model';\r\nimport { EGISTheme } from '../theme';\r\n\r\nexport const THEME_DARKMODE_NAME = EGISTheme.DARKMODE;\r\n\r\nexport const DARKMODE_COLORS: IThemeColors = {\r\n $primaryMainColor: '#2C5379',\r\n $primaryMainColorDeactivate: 'rgba(44, 83, 121, 0.5)',\r\n $mainBackgroundColor: '#212121',\r\n $mainHeaderColor: '#333333',\r\n $mainTextColor: 'white',\r\n $mainTextHoverColor: 'grey',\r\n $mainBorderBoxColor: 'lightgrey',\r\n $separatorColor: '#90D5D6',\r\n $listColor: '#212121',\r\n $listDeselectedColor: '#212121',\r\n $listHoverColor: '#5d5d5d',\r\n $listTextColor: 'white',\r\n};\r\n\r\nexport const THEME_DARKMODE_STYLES: IGisTheme = {\r\n // main app color\r\n 'main-background-color': DARKMODE_COLORS.$mainBackgroundColor,\r\n 'main-text-color': DARKMODE_COLORS.$mainTextColor,\r\n 'main-text-hover-color': DARKMODE_COLORS.$mainTextHoverColor,\r\n 'primary-text-color': DARKMODE_COLORS.$primaryMainColor,\r\n 'primary-text-color-deactivate': DARKMODE_COLORS.$primaryMainColorDeactivate,\r\n // isy-base-layers\r\n 'base-active-layer-color': 'rgba(0, 0, 0, 0.8)',\r\n 'base-layers-color': 'rgba(147, 147, 147, 0.47)',\r\n 'base-layers-hover-color': 'rgba(0, 0, 0, 0.47)',\r\n // isy-draggable-overlay\r\n 'header-color': DARKMODE_COLORS.$mainHeaderColor,\r\n 'header-text-color': DARKMODE_COLORS.$mainTextColor,\r\n 'header-icon-color': DARKMODE_COLORS.$primaryMainColor,\r\n 'header-icon-border-box-color': DARKMODE_COLORS.$mainBorderBoxColor,\r\n\r\n 'separator-color': DARKMODE_COLORS.$separatorColor,\r\n\r\n 'list-color': DARKMODE_COLORS.$listColor,\r\n 'list-deselected-color': DARKMODE_COLORS.$listDeselectedColor,\r\n 'list-border-color': DARKMODE_COLORS.$listColor,\r\n 'list-hover-color': DARKMODE_COLORS.$listHoverColor,\r\n 'list-text-color': DARKMODE_COLORS.$listTextColor,\r\n\r\n 'selected-list-item-color-secondary': '#cdce7c',\r\n 'selected-list-item-text-color-secondary': 'white',\r\n\r\n 'pin-hover-color': '#5d5d5d',\r\n\r\n 'shadow-color': 'rgba(0,0,0,0.10)',\r\n 'shadow-color-light': 'rgba(0,0,0,0.01)',\r\n\r\n 'search-input-container-shadow': 'rgba(0,0,0,0.2)',\r\n 'search-input-container-shadow-light': 'rgba(0,0,0,0.02)',\r\n 'search-bar-icon': '#b7b7b7',\r\n\r\n 'side-nav-footer-text-color': 'white',\r\n 'side-nav-overlay-layer': 'rgba(93,93,93,.33)',\r\n};\r\n","import { IGisTheme, IThemeColors } from '../gis-theme.model';\r\nimport { EGISTheme } from '../theme';\r\n\r\nexport const THEME_INNBYGGERDLG_NAME = EGISTheme.INNBYGGERDLG;\r\n\r\nexport const INNBYGGERDLG_COLORS: IThemeColors = {\r\n $primaryMainColor: '#2c5379',\r\n $primaryMainColorDeactivate: '#637c90',\r\n $mainBackgroundColor: '#2c53799c',\r\n $mainHeaderColor: '#2c5379a6',\r\n $mainTextColor: 'white',\r\n $mainTextHoverColor: 'grey',\r\n $mainBorderBoxColor: 'lightgrey',\r\n $separatorColor: '#ffffff',\r\n $listColor: 'black',\r\n $listDeselectedColor: 'black',\r\n $listHoverColor: '#0d2129',\r\n $listTextColor: 'white',\r\n};\r\n\r\nexport const THEME_INNBYGGERDLG_STYLES: IGisTheme = {\r\n // main app color\r\n 'main-background-color': INNBYGGERDLG_COLORS.$mainBackgroundColor,\r\n 'main-text-color': INNBYGGERDLG_COLORS.$mainTextColor,\r\n 'main-text-hover-color': INNBYGGERDLG_COLORS.$mainTextHoverColor,\r\n 'primary-text-color': INNBYGGERDLG_COLORS.$primaryMainColor,\r\n 'primary-text-color-deactivate':\r\n INNBYGGERDLG_COLORS.$primaryMainColorDeactivate,\r\n // isy-base-layers\r\n 'base-active-layer-color': INNBYGGERDLG_COLORS.$mainBackgroundColor,\r\n 'base-layers-color': 'rgba(131, 136, 137, 0.5)',\r\n 'base-layers-hover-color': 'rgba(0, 0, 0, 0.47)',\r\n 'base-active-layer-border': '#b1b5b5',\r\n // isy-draggable-overlay\r\n 'header-color': INNBYGGERDLG_COLORS.$mainHeaderColor,\r\n 'header-text-color': INNBYGGERDLG_COLORS.$mainTextColor,\r\n 'header-icon-color': '#ffffff',\r\n 'header-icon-border-box-color': INNBYGGERDLG_COLORS.$mainBorderBoxColor,\r\n // isy-feedback\r\n 'modal-body-box-color': '#e2e2e2',\r\n\r\n 'separator-color': INNBYGGERDLG_COLORS.$separatorColor,\r\n\r\n 'list-color': INNBYGGERDLG_COLORS.$listColor,\r\n 'list-deselected-color': INNBYGGERDLG_COLORS.$listDeselectedColor,\r\n 'list-border-color': INNBYGGERDLG_COLORS.$listColor,\r\n 'list-hover-color': INNBYGGERDLG_COLORS.$listHoverColor,\r\n 'list-text-color': INNBYGGERDLG_COLORS.$listTextColor,\r\n\r\n 'selected-list-item-color-secondary': '#cdce7c',\r\n 'selected-list-item-text-color-secondary': 'white',\r\n\r\n 'pin-hover-color': '#5d5d5d',\r\n\r\n 'shadow-color': 'rgba(0,0,0,0.10)',\r\n 'shadow-color-light': 'rgba(0,0,0,0.01)',\r\n\r\n 'search-input-container-shadow': 'rgba(0,0,0,0.2)',\r\n 'search-input-container-shadow-light': 'rgba(0,0,0,0.02)',\r\n 'search-bar-icon': '#b7b7b7',\r\n\r\n 'side-nav-footer-text-color': 'white',\r\n 'side-nav-overlay-layer': 'rgba(93,93,93,.33)',\r\n};\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\n\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-isy-help',\r\n template: `\r\n
    \r\n \r\n \r\n
    \r\n `,\r\n styles: [],\r\n})\r\nexport class IsyHelpComponent implements OnInit, OnDestroy {\r\n subscription: Subscription = new Subscription();\r\n helpFilePath = '';\r\n\r\n constructor(private commonService: IsyCommonService) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.commonService.helpId$.subscribe((value) => {\r\n if (value) {\r\n this.helpFilePath = 'assets/help/' + value + '.md';\r\n } else {\r\n this.helpFilePath = '';\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\r\n\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyHelpComponent } from './isy-help.component';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { Subscription } from 'rxjs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Directive({\r\n selector: '[libIsyHelp]',\r\n})\r\nexport class IsyHelpDirective implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n currentLang;\r\n\r\n @Input() lockBackground = false;\r\n\r\n @Input() selectedIcon = this.fontAwesomeIcons.faQuestionCircle;\r\n\r\n private subscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService,\r\n private translateService: IsyTranslateService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.currentLang = this.translateService.currentLang;\r\n this.subscription.add(\r\n this.commonService.helpId$.subscribe((value) => {\r\n if (value) {\r\n // console.log('HELP ID: ', value);\r\n this.bladeService.showBladeWithComponent(\r\n 'isyHelp',\r\n IsyHelpComponent,\r\n undefined,\r\n {\r\n position: 'right',\r\n showHeader: true,\r\n showBladeOverlay: this.lockBackground,\r\n showMinifyBtn: false,\r\n bladeHeader: {\r\n headerIcon: this.selectedIcon,\r\n headerTitle: this.currentLang === 'no' ? 'Hjelp' : 'Help',\r\n },\r\n }\r\n );\r\n } else {\r\n this.bladeService.hide('isyHelp');\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","import { HttpClient, HttpClientModule } from '@angular/common/http';\r\nimport { MarkdownModule, MarkedOptions, MarkedRenderer } from 'ngx-markdown';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyHelpComponent } from './isy-help.component';\r\nimport { IsyHelpDirective } from './isy-help.directive';\r\nimport { NgModule } from '@angular/core';\r\n\r\n// function that returns `MarkedOptions` with renderer override\r\nexport function markedOptionsFactory(): MarkedOptions {\r\n const renderer = new MarkedRenderer();\r\n\r\n renderer.blockquote = (text: string) => {\r\n return '

    ' + text + '

    ';\r\n };\r\n\r\n return {\r\n renderer,\r\n gfm: true,\r\n // tables: true,\r\n breaks: false,\r\n pedantic: false,\r\n // sanitize: false,\r\n smartLists: true,\r\n smartypants: false,\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n MarkdownModule.forRoot({\r\n loader: HttpClient,\r\n markedOptions: {\r\n provide: MarkedOptions,\r\n useFactory: markedOptionsFactory,\r\n },\r\n }),\r\n ],\r\n declarations: [IsyHelpComponent, IsyHelpDirective],\r\n exports: [IsyHelpComponent, IsyHelpDirective],\r\n})\r\nexport class IsyHelpModule {}\r\n","import {\r\n Directive,\r\n OnInit,\r\n OnDestroy,\r\n ElementRef,\r\n HostListener,\r\n NgZone,\r\n} from '@angular/core';\r\nimport { IsyInfoPanelService } from './isy-info-panel.service';\r\n\r\ndeclare let ResizeObserver;\r\n@Directive({\r\n selector: '[libInfoPanelHeight]',\r\n})\r\nexport class InfoPanelHeightDirective implements OnInit, OnDestroy {\r\n isMobile = false;\r\n marginTop = 80;\r\n marginTopMobile = 70;\r\n marginBottom = 20;\r\n marginBottomMobile = 10;\r\n widthInfoPanelInit;\r\n observer;\r\n\r\n constructor(\r\n private el: ElementRef,\r\n private zone: NgZone,\r\n private infoPanelService: IsyInfoPanelService\r\n ) {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event): void {\r\n this.isMobile = document.documentElement.clientWidth > 1024 ? false : true;\r\n if (!this.isMobile) {\r\n this.el.nativeElement.style.maxHeight =\r\n event.target.innerHeight - this.marginTop - this.marginBottom + 'px';\r\n } else {\r\n this.el.nativeElement.style.maxHeight =\r\n event.target.innerHeight -\r\n this.marginTopMobile -\r\n this.marginBottomMobile +\r\n 'px';\r\n }\r\n this.widthInfoPanelInit = this.el.nativeElement.clientWidth;\r\n }\r\n\r\n @HostListener('scroll', ['$event'])\r\n onScroll(event): void {\r\n this.infoPanelService.setScrollBarIsVisible(\r\n event.target.clientHeight + event.target.scrollTop <\r\n event.target.scrollHeight\r\n );\r\n }\r\n\r\n ngOnInit(): void {\r\n this.isMobile = document.documentElement.clientWidth > 1024 ? false : true;\r\n const clientHeight = document.documentElement.clientHeight;\r\n if (!this.isMobile) {\r\n this.el.nativeElement.style.maxHeight =\r\n clientHeight - this.marginTop - this.marginBottom + 'px';\r\n } else {\r\n this.el.nativeElement.style.maxHeight =\r\n clientHeight - this.marginTopMobile - this.marginBottomMobile + 'px';\r\n }\r\n this.observer = new ResizeObserver((entries) => {\r\n this.zone.run(() => {\r\n if (!this.widthInfoPanelInit) {\r\n this.widthInfoPanelInit = entries[0].contentRect.width;\r\n }\r\n const widthInfoPanel = entries[0].contentRect.width;\r\n this.infoPanelService.setScrollBarIsVisible(\r\n widthInfoPanel === this.widthInfoPanelInit ? false : true\r\n );\r\n });\r\n });\r\n this.observer.observe(this.el.nativeElement);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.observer.unobserve(this.el.nativeElement);\r\n }\r\n}\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { IsyInfoPanelService, EInfoPanelType } from '../isy-info-panel.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { IsyMapEmitterService, IsyMapService } from '@isygis/isy-map';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyAppFeatureInfoService } from '@isygis/isy-app-services';\r\n\r\n@Component({\r\n selector: 'lib-isy-info-panel-layout',\r\n templateUrl: './isy-info-panel-layout.component.html',\r\n styleUrls: [\r\n './isy-info-panel-layout.component.scss',\r\n '../isy-info-panel-header.scss',\r\n ],\r\n})\r\nexport class IsyInfoPanelLayoutComponent implements OnInit, OnDestroy {\r\n subscription = new Subscription();\r\n @Input() disableFeatureInfo = false;\r\n @Input() filterFeatureInfoLayers = [];\r\n @Input() showCadastreModalFromSearchResults = false;\r\n @Input() showCadastreModalFromFeatureInfoResults = false;\r\n hide = false;\r\n constructor(\r\n private infoPanelService: IsyInfoPanelService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private appFeatureInfoService: IsyAppFeatureInfoService,\r\n private commonService: IsyCommonService,\r\n ) {}\r\n\r\n // subscription: Subscription = new Subscription();\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n eInfoPanelType = EInfoPanelType;\r\n pointinfoenabledInConfig = false;\r\n activeInfoPanelType$ = this.infoPanelService.activeInfoPanelType$;\r\n hideResult$ = this.commonService.hideResult$;\r\n hideFeatureInfoResult$ = this.commonService.hideFeatureInfoResult$;\r\n\r\n vm$ = combineLatest([\r\n this.activeInfoPanelType$,\r\n this.hideResult$,\r\n this.hideFeatureInfoResult$,\r\n this.infoPanelService.pointinfoenabled$,\r\n this.appFeatureInfoService.showFeatureInfoSpinner$\r\n ]).pipe(\r\n map(\r\n ([\r\n activeInfoPanel,\r\n hideResult,\r\n hideFeatureInfoResult,\r\n pointInformationIsActive,\r\n showFeatureInfoSpinner\r\n ]: [EInfoPanelType, boolean, boolean, boolean, boolean]) => ({\r\n activeInfoPanel,\r\n hideResult,\r\n hideFeatureInfoResult,\r\n pointInformationIsActive,\r\n showFeatureInfoSpinner\r\n })\r\n ),\r\n tap((result) => {\r\n // console.log('vm: ', result);\r\n })\r\n );\r\n\r\n ngOnInit(): void {\r\n this.mapEmitterService.emitGetClickCoordinates(undefined);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.infoPanelService.setScrollBarIsVisible(false);\r\n // this.subscription.unsubscribe();\r\n }\r\n\r\n setHideResult(): void {\r\n this.commonService.setHideResult();\r\n }\r\n\r\n closeInfoPanel(): void {\r\n this.mapEmitterService.emitGetClickCoordinates(undefined);\r\n this.commonService.activateFeatureInfoSelectorWithLayerName(false);\r\n this.commonService.activateFeatureInfoSelectorWithLayerName(true);\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    {{vm.activeInfoPanel | translate }}
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    ","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n ElementRef,\r\n OnInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyInfoPanelService } from './isy-info-panel.service';\r\n\r\n@Component({\r\n selector: 'lib-isy-info-panel',\r\n templateUrl: './isy-info-panel.component.html',\r\n styleUrls: [\r\n './isy-info-panel.component.scss',\r\n './isy-info-panel-header.scss',\r\n ],\r\n})\r\nexport class IsyInfoPanelComponent implements OnInit, OnDestroy {\r\n subscription: Subscription = new Subscription();\r\n\r\n @Input() disableFeatureInfo = false;\r\n @Input() filterFeatureInfoLayers = [];\r\n @Input() showCadastreModalFromSearchResults = false;\r\n @Input() showCadastreModalFromFeatureInfoResults = false;\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n @ViewChild('divScroll') divScroll: ElementRef;\r\n inputPosition = '';\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private infoPanelService: IsyInfoPanelService\r\n ) {}\r\n\r\n @Input() set position(value: string) {\r\n this.commonService.infoPanelSetPosition(value);\r\n this.inputPosition = value;\r\n }\r\n\r\n @Input() set hideInfoPanel(val: boolean) {\r\n this.commonService.hideInfoPanel(val);\r\n }\r\n\r\n infoPanelPosition$ = this.commonService.infoPanelPosition$;\r\n hideInfoPanel$ = this.commonService.hideInfoPanel$;\r\n scrollBarIsVisible$ = this.infoPanelService.scrollBarIsVisible$;\r\n\r\n vm$ = combineLatest([\r\n this.infoPanelPosition$,\r\n this.hideInfoPanel$,\r\n this.scrollBarIsVisible$,\r\n ]).pipe(\r\n map(\r\n ([infoPanelPosition, hideInfoPanel, scrollBarIsVisible]: [\r\n string,\r\n boolean,\r\n boolean\r\n ]) => ({\r\n infoPanelPosition,\r\n hideInfoPanel,\r\n scrollBarIsVisible,\r\n })\r\n )\r\n );\r\n\r\n scrollDiv(): void {\r\n this.divScroll.nativeElement.scrollTop +=\r\n this.divScroll.nativeElement.clientHeight;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.commonService.componentPosition$.subscribe((value) => {\r\n if (this.inputPosition === '') {\r\n this.commonService.infoPanelSetPosition(value);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n \r\n
    \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyInfoPanelComponent } from './isy-info-panel.component';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { IsyFeatureInfoModule } from '@isygis/isy-feature-info';\r\nimport { IsySearchModule } from '@isygis/isy-search';\r\nimport { IsyPositionInfoModule } from '@isygis/isy-position-info';\r\nimport { IsyInfoPanelLayoutComponent } from './isy-info-panel-layout/isy-info-panel-layout.component';\r\nimport { InfoPanelHeightDirective } from './info-panel-height.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n IsyTranslateModule,\r\n FontAwesomeModule,\r\n IsySpinnerModule,\r\n IsyFeatureInfoModule,\r\n IsySearchModule,\r\n IsyPositionInfoModule,\r\n ],\r\n declarations: [\r\n IsyInfoPanelComponent,\r\n IsyInfoPanelLayoutComponent,\r\n InfoPanelHeightDirective,\r\n ],\r\n exports: [IsyInfoPanelComponent],\r\n})\r\nexport class IsyInfoPanelModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsySearchBarService } from '@isygis/isy-search';\r\nimport { IsyMapEmitterService, IsyMapService } from '@isygis/isy-map';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\nexport enum EInfoPanelType {\r\n SEARCHRESULTS = 'searchResults',\r\n POINTINFORMATION = 'pointInformation',\r\n NONE = '',\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyInfoPanelService {\r\n constructor(\r\n private searchBarService: IsySearchBarService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private commonService: IsyCommonService,\r\n private mapService: IsyMapService\r\n ) {}\r\n\r\n private scrollBarIsVisibleAction = new BehaviorSubject(false);\r\n scrollBarIsVisible$ = this.scrollBarIsVisibleAction.asObservable();\r\n\r\n searchIsActive$ = this.searchBarService.searchIsActive$;\r\n getClickCoordinatesEmitter$ =\r\n this.mapEmitterService.getClickCoordinatesEmitter$;\r\n featureInfoLayersLength$ = this.commonService.featureInfoLayersLength$;\r\n\r\n pointinfoenabled$ = combineLatest([\r\n this.mapService.projectConfig$,\r\n this.commonService.visibleTools$,\r\n ]).pipe(\r\n map(([projectConfig, visibleTools]: [any, any]) => {\r\n if (\r\n projectConfig?.config?.project?.pointinfoenabled === 'true' &&\r\n visibleTools && visibleTools.find((tool) => tool.id === 'PointInformation')\r\n ) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n );\r\n\r\n activeInfoPanelType$ = combineLatest([\r\n this.searchIsActive$,\r\n this.getClickCoordinatesEmitter$,\r\n this.mapEmitterService.featureInfoEndEmitter$,\r\n this.pointinfoenabled$,\r\n this.featureInfoLayersLength$,\r\n ]).pipe(\r\n map(\r\n ([\r\n searchIsActive,\r\n getClickCoordinatesEmitter,\r\n featureInfoEndEmitter,\r\n pointinfoenabled,\r\n featureInfoLayersLength,\r\n ]: [boolean, any, any, boolean, number]) => {\r\n if (searchIsActive) {\r\n this.commonService.setHideResult(false);\r\n return EInfoPanelType.SEARCHRESULTS;\r\n }\r\n if (getClickCoordinatesEmitter) {\r\n if (!featureInfoEndEmitter && !pointinfoenabled && featureInfoLayersLength <=0) {\r\n return EInfoPanelType.NONE;\r\n } else {\r\n if (!pointinfoenabled && featureInfoLayersLength === 0) {\r\n setTimeout(() => {\r\n this.commonService.setFeatureInfoLayersLength(-1);\r\n });\r\n return EInfoPanelType.NONE;\r\n } else {\r\n this.commonService.setHideResult(false);\r\n return EInfoPanelType.POINTINFORMATION;\r\n }\r\n }\r\n }\r\n return EInfoPanelType.NONE;\r\n }\r\n )\r\n );\r\n\r\n setScrollBarIsVisible(state: boolean): void {\r\n this.scrollBarIsVisibleAction.next(state);\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n AfterContentInit,\r\n} from '@angular/core';\r\nimport { IsyMapEmitterService, MapLibNgService } from '@isygis/isy-map';\r\nimport { IJobtechQueryParams, EMainMenuNavBar } from '@isygis/isy-configs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { combineLatest, BehaviorSubject, Subscription } from 'rxjs';\r\nimport { map, tap, mergeMap, shareReplay } from 'rxjs/operators';\r\nimport { IsyJobtechService } from './isy-jobtech.service';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyDynamicNavLoaderService } from '@isygis/isy-dynamic-nav-loader';\r\n\r\n@Component({\r\n selector: 'lib-isy-jobtech',\r\n templateUrl: './isy-jobtech.component.html',\r\n styles: [],\r\n})\r\nexport class IsyJobtechComponent\r\n implements OnInit, OnDestroy, AfterContentInit\r\n{\r\n @Input() data: IJobtechQueryParams;\r\n\r\n first = true;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n feature;\r\n featuretype = 'Polygon';\r\n token;\r\n subscription: Subscription;\r\n adding = false;\r\n selectedFeatureId: any;\r\n deleteFeature = false;\r\n originalFeaturetype: string;\r\n modified: boolean;\r\n\r\n constructor(\r\n private jobtechService: IsyJobtechService,\r\n private toasterService: IsyToasterService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private commonService: IsyCommonService,\r\n private dynamicNavLoaderService: IsyDynamicNavLoaderService\r\n ) {}\r\n\r\n private initReadyAction = new BehaviorSubject(false);\r\n isyVerifyToken$ = combineLatest([this.initReadyAction]).pipe(\r\n mergeMap(([ready]: [boolean]) => {\r\n if (ready) {\r\n return this.jobtechService.getIsyVerifyToken();\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n }),\r\n map((value) => {\r\n if (value && value['Token'] !== 'null') {\r\n this.token = value['Token'];\r\n return value['Token'];\r\n }\r\n return undefined;\r\n }),\r\n shareReplay(1)\r\n );\r\n private saveAction = new BehaviorSubject(undefined);\r\n saveResult$ = combineLatest([this.saveAction]).pipe(\r\n mergeMap(([geoJson]: [string]) => {\r\n if (geoJson && this.token) {\r\n return this.jobtechService.updateGeometry(geoJson, this.token);\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n }),\r\n map((result) => {\r\n if (result && result.NoOfRowsHandled === 1) {\r\n this.mapActionDialogService.hide('JobTech-Integrasjon');\r\n }\r\n })\r\n );\r\n\r\n private jtObjectIdAction = new BehaviorSubject(undefined);\r\n geometry$ = combineLatest([this.jtObjectIdAction, this.isyVerifyToken$]).pipe(\r\n mergeMap(([objId, token]: [string, string]) => {\r\n if (objId && token) {\r\n return this.jobtechService.getGeometry(objId, token);\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n }),\r\n map((geometry) => {\r\n if (geometry) {\r\n const geoJson = {\r\n id: this.jtObjectIdAction.getValue(),\r\n type: 'Feature',\r\n geometry,\r\n };\r\n console.log('jobtechFeature', geoJson);\r\n this.feature = geoJson;\r\n if (geometry.type) {\r\n switch (geometry.type.toLowerCase()) {\r\n case 'multipolygon': {\r\n this.featuretype = 'Polygon';\r\n this.originalFeaturetype = 'MultiPolygon';\r\n if (geometry.coordinates && geometry.coordinates[0].length) {\r\n this.mapLibNgService.map().setCenter({\r\n lon: Number(geometry.coordinates[0][0][0][0]),\r\n lat: Number(geometry.coordinates[0][0][0][1]),\r\n epsg: 'EPSG:4326',\r\n });\r\n this.convertToFeatureCollections();\r\n this.modifyGeometry(\r\n JSON.stringify(this.feature),\r\n this.featuretype\r\n );\r\n } else {\r\n this.toasterService.warning(\r\n '',\r\n 'jobtech_object_without_geometry_toaster_title'\r\n );\r\n this.drawGeometry(this.featuretype);\r\n }\r\n break;\r\n }\r\n case 'polygon': {\r\n this.featuretype = this.originalFeaturetype = 'Polygon';\r\n if (geometry.coordinates && geometry.coordinates[0].length) {\r\n this.mapLibNgService.map().setCenter({\r\n lon: Number(geometry.coordinates[0][0][0]),\r\n lat: Number(geometry.coordinates[0][0][1]),\r\n epsg: 'EPSG:4326',\r\n });\r\n this.modifyGeometry(JSON.stringify(geoJson), this.featuretype);\r\n } else {\r\n this.toasterService.warning(\r\n '',\r\n 'jobtech_object_without_geometry_toaster_title'\r\n );\r\n this.drawGeometry(this.featuretype);\r\n }\r\n break;\r\n }\r\n case 'multilinestring': {\r\n this.featuretype = 'LineString';\r\n this.originalFeaturetype = 'MultiLineString';\r\n if (geometry.coordinates && geometry.coordinates[0].length) {\r\n this.mapLibNgService.map().setCenter({\r\n lon: Number(geometry.coordinates[0][0][0]),\r\n lat: Number(geometry.coordinates[0][0][1]),\r\n epsg: 'EPSG:4326',\r\n });\r\n this.convertToFeatureCollections();\r\n this.modifyGeometry(\r\n JSON.stringify(this.feature),\r\n this.featuretype\r\n );\r\n } else {\r\n this.toasterService.warning(\r\n '',\r\n 'jobtech_object_without_geometry_toaster_title'\r\n );\r\n this.drawGeometry(this.featuretype);\r\n }\r\n break;\r\n }\r\n case 'linestring': {\r\n this.featuretype = this.originalFeaturetype = 'LineString';\r\n if (geometry.coordinates && geometry.coordinates[0].length) {\r\n this.mapLibNgService.map().setCenter({\r\n lon: Number(geometry.coordinates[0][0]),\r\n lat: Number(geometry.coordinates[0][1]),\r\n epsg: 'EPSG:4326',\r\n });\r\n this.modifyGeometry(JSON.stringify(geoJson), this.featuretype);\r\n } else {\r\n this.toasterService.warning(\r\n '',\r\n 'jobtech_object_without_geometry_toaster_title'\r\n );\r\n this.drawGeometry(this.featuretype);\r\n }\r\n break;\r\n }\r\n case 'multipoint': {\r\n this.featuretype = 'Point';\r\n this.originalFeaturetype = 'MultiPoint';\r\n if (\r\n geometry.coordinates &&\r\n geometry.coordinates[0].length === 2\r\n ) {\r\n this.mapLibNgService.map().setCenter({\r\n lon: Number(geometry.coordinates[0][0]),\r\n lat: Number(geometry.coordinates[0][1]),\r\n epsg: 'EPSG:4326',\r\n });\r\n this.convertToFeatureCollections();\r\n this.modifyGeometry(\r\n JSON.stringify(this.feature),\r\n this.featuretype\r\n );\r\n } else {\r\n this.toasterService.warning(\r\n '',\r\n 'jobtech_object_without_geometry_toaster_title'\r\n );\r\n this.drawGeometry(this.featuretype);\r\n }\r\n break;\r\n }\r\n case 'point': {\r\n this.featuretype = this.originalFeaturetype = 'Point';\r\n if (geometry.coordinates && geometry.coordinates.length === 2) {\r\n this.mapLibNgService.map().setCenter({\r\n lon: Number(geometry.coordinates[0]),\r\n lat: Number(geometry.coordinates[1]),\r\n epsg: 'EPSG:4326',\r\n });\r\n this.modifyGeometry(JSON.stringify(geoJson), this.featuretype);\r\n } else {\r\n this.toasterService.warning(\r\n '',\r\n 'jobtech_object_without_geometry_toaster_title'\r\n );\r\n this.drawGeometry(this.featuretype);\r\n }\r\n break;\r\n }\r\n }\r\n return geoJson;\r\n } else {\r\n this.toasterService.error(\r\n '',\r\n 'jobtech_objectId_miss_geometry_toaster_title'\r\n );\r\n this.mapActionDialogService.hide('JobTech-Integrasjon');\r\n }\r\n }\r\n throw new Error('No geometry');\r\n })\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.isyVerifyToken$,\r\n this.geometry$,\r\n this.saveResult$,\r\n ]).pipe(\r\n map(([isyVerifyToken, geometry, saveResult]: [any, any, any]) => ({\r\n isyVerifyToken,\r\n geometry,\r\n saveResult,\r\n })),\r\n tap((result) => {\r\n console.log('Jobtech vm: ', result);\r\n })\r\n );\r\n\r\n ngOnInit(): void {\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.TOOLS,\r\n true\r\n );\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.LOGIN,\r\n true\r\n );\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.PROJECTS,\r\n true\r\n );\r\n\r\n this.mapEmitterService.mapMoveEndEmitter$.subscribe((value) => {\r\n if (value) {\r\n if (this.first) {\r\n this.first = false;\r\n this.initReadyAction.next(true);\r\n this.mapReady();\r\n }\r\n }\r\n });\r\n }\r\n ngOnDestroy(): void {\r\n this.cleanupFromDrawing(false);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .unRegisterEvent(\r\n this.mapLibNgService.eventTypes().ModifyFeatureEnd,\r\n 'ModifyFeatureEndFromRouting',\r\n // this.modifyFinished.bind(this) // Function only takes 2 args - why was this here?\r\n );\r\n this.subscription.unsubscribe();\r\n this.commonService.hideSideNav(true);\r\n this.commonService.removeJtQueryParams();\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.TOOLS,\r\n false\r\n );\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.LOGIN,\r\n false\r\n );\r\n this.dynamicNavLoaderService.hideNavElement(\r\n EMainMenuNavBar.ID,\r\n EMainMenuNavBar.PROJECTS,\r\n false\r\n );\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.subscription = this.vm$.subscribe();\r\n }\r\n\r\n mapReady(): void {\r\n if (this.data.jtfunksjon) {\r\n if (\r\n this.data.jtfunksjon.toLowerCase() === 'redigere' &&\r\n this.data.jtobjektid\r\n ) {\r\n this.jtObjectIdAction.next(this.data.jtobjektid);\r\n // console.log('Found jtFunksjon:', this.data.jtfunksjon);\r\n }\r\n }\r\n }\r\n\r\n delete(): void {\r\n // dont delete modified object that has id\r\n if (this.selectedFeatureId && !this.modified) {\r\n this.mapLibNgService\r\n .eventHandler()\r\n .registerSingleEvent(\r\n this.mapLibNgService.eventTypes().DrawFeatureEnd,\r\n 'DrawFeatureEndFromRouting',\r\n this.drawFinished3.bind(this)\r\n );\r\n this.deleteFeature = true;\r\n this.mapLibNgService\r\n .map()\r\n .reactivateDrawingManager(\r\n this.createModifyOptions(\r\n JSON.stringify(this.feature),\r\n this.featuretype\r\n )\r\n );\r\n this.deleteFeature = false;\r\n this.mapLibNgService\r\n .map()\r\n .reactivateDrawingManager(\r\n this.createModifyOptions(\r\n JSON.stringify(this.feature),\r\n this.featuretype\r\n )\r\n );\r\n }\r\n }\r\n add(): void {\r\n this.adding = true;\r\n this.mapLibNgService\r\n .map()\r\n .activateDrawingManager(this.createDrawOptions(this.featuretype));\r\n this.mapLibNgService\r\n .map()\r\n .reactivateDrawingManager(\r\n this.createAddOptions(JSON.stringify(this.feature), this.featuretype)\r\n );\r\n this.mapLibNgService\r\n .eventHandler()\r\n .registerSingleEvent(\r\n this.mapLibNgService.eventTypes().DrawFeatureEnd,\r\n 'DrawFeatureEndFromRouting',\r\n this.drawFinished2.bind(this)\r\n );\r\n }\r\n\r\n createAddOptions(geojson, type): any {\r\n return {\r\n style: {\r\n fill: {\r\n color: 'rgba(235, 52, 201, 0.9)',\r\n },\r\n stroke: {\r\n color: 'rgba(36, 252, 3, 1)',\r\n width: 2,\r\n },\r\n image: {\r\n radius: 7,\r\n fill: {\r\n color: 'rgba(235, 52, 201,1)',\r\n },\r\n },\r\n },\r\n GeoJSON: geojson ? geojson : 'remove',\r\n mode: 'draw',\r\n modify: false,\r\n snapGuides: false,\r\n showMeasurements: false,\r\n type: type,\r\n selectedFeatureId: undefined,\r\n selectionActive: false,\r\n };\r\n }\r\n\r\n createDrawOptions(type: string): any {\r\n return {\r\n mode: 'draw',\r\n type: type,\r\n snapGuides: false,\r\n style: {\r\n fill: {\r\n color: 'rgba(235, 52, 201, 0.9)',\r\n },\r\n stroke: {\r\n color: 'rgba(36, 252, 3, 1)',\r\n width: 2,\r\n },\r\n image: {\r\n radius: 7,\r\n fill: {\r\n color: 'rgba(235, 52, 201,1)',\r\n },\r\n },\r\n },\r\n };\r\n }\r\n createModifyOptions(geojson, type): any {\r\n return {\r\n GeoJSON: geojson ? geojson : 'remove',\r\n mode: 'modify',\r\n modify: true,\r\n snapGuides: false,\r\n showMeasurements: false,\r\n type,\r\n styleDef: 'modifyStyle',\r\n selectedFeatureId: this.selectedFeatureId,\r\n selectionActive: this.selectedFeatureId === undefined ? false : true,\r\n deleteFeature: this.deleteFeature,\r\n };\r\n }\r\n\r\n private pauseEvents(): void {\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureHoverStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureHoverEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureHoverMove);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().GetClickCoordinates);\r\n }\r\n\r\n private drawGeometry(type): void {\r\n this.pauseEvents();\r\n this.mapLibNgService\r\n .map()\r\n .activateDrawingManager(this.createDrawOptions(type));\r\n this.mapLibNgService\r\n .eventHandler()\r\n .registerSingleEvent(\r\n this.mapLibNgService.eventTypes().DrawFeatureEnd,\r\n 'DrawFeatureEndFromRouting',\r\n this.drawFinished.bind(this)\r\n );\r\n }\r\n\r\n private modifyGeometry(geojson, type): void {\r\n this.pauseEvents();\r\n\r\n // this.idAdded = false;\r\n this.mapLibNgService\r\n .map()\r\n .activateDrawingManager(this.createDrawOptions(type));\r\n this.mapLibNgService\r\n .map()\r\n .reactivateDrawingManager(this.createModifyOptions(geojson, type));\r\n this.mapLibNgService\r\n .eventHandler()\r\n .registerSingleEvent(\r\n this.mapLibNgService.eventTypes().DrawFeatureEnd,\r\n 'DrawFeatureEndFromRouting',\r\n this.drawFinished4.bind(this)\r\n );\r\n this.mapLibNgService\r\n .eventHandler()\r\n .registerEvent(\r\n this.mapLibNgService.eventTypes().ModifyFeatureEnd,\r\n 'ModifyFeatureEndFromRouting',\r\n this.modifyFinished.bind(this)\r\n );\r\n this.mapLibNgService\r\n .eventHandler()\r\n .registerEvent(\r\n this.mapLibNgService.eventTypes().DrawFeatureSelect,\r\n 'DrawFeatureSelectFromRouting',\r\n this.drawFeatureSelect.bind(this)\r\n );\r\n // console.log('FirstDraw', this.feature);\r\n }\r\n drawFeatureSelect(value): void {\r\n this.modified = false;\r\n console.log('selected', value);\r\n this.selectedFeatureId = value.id;\r\n }\r\n private modifyFinished(geoJson): void {\r\n if (geoJson) {\r\n // if (this.featuretype !== this.originalFeaturetype) {\r\n if (this.feature?.features?.length > 1) {\r\n // replacing modified feature, using id of the feature found from drawFinished4\r\n const tempfeature = JSON.parse(geoJson).features[0];\r\n const featureIndex = this.feature.features.indexOf(\r\n this.feature.features.find((f) => f?.id === this.selectedFeatureId)\r\n );\r\n if (featureIndex !== -1) {\r\n this.feature.features[featureIndex] = tempfeature;\r\n }\r\n } else {\r\n this.feature = JSON.parse(geoJson);\r\n // console.log('feature2', this.feature);\r\n }\r\n }\r\n this.modified = true;\r\n // if (geoJson) {\r\n // this.feature = JSON.parse(geoJson);\r\n // console.log('feature2', this.feature);\r\n // }\r\n }\r\n\r\n private drawFinished(geoJson): void {\r\n if (geoJson) {\r\n this.feature = JSON.parse(geoJson);\r\n // console.log('feature1', this.feature);\r\n this.feature.features[0].id = this.jtObjectIdAction.getValue(); // Keep id from jobtech\r\n // Go to modify\r\n this.modifyGeometry(JSON.stringify(this.feature), this.featuretype);\r\n }\r\n }\r\n\r\n private drawFinished2(geoJson): void {\r\n // save new feature after adding\r\n if (geoJson && this.adding) {\r\n this.feature = JSON.parse(geoJson);\r\n // console.log('TESTfeature1', this.feature);\r\n this.adding = false;\r\n this.modifyGeometry(JSON.stringify(this.feature), this.featuretype);\r\n }\r\n }\r\n private drawFinished3(geoJson): void {\r\n // save new feature after removing\r\n if (geoJson) {\r\n this.feature = JSON.parse(geoJson);\r\n // console.log('drawFinished3', this.feature);\r\n }\r\n }\r\n private drawFinished4(geoJson): void {\r\n // save feature after id's are added\r\n // if (geoJson && this.featuretype !== this.originalFeaturetype) {\r\n if (geoJson && JSON.parse(geoJson).features.length > 1) {\r\n this.feature = JSON.parse(geoJson);\r\n // console.log('drawFinished4', this.feature);\r\n }\r\n }\r\n convertToFeatureCollections(): void {\r\n // depart features\r\n let tempFeature = JSON.parse(JSON.stringify(this.feature));\r\n const newFeature = JSON.parse(`{\"type\":\"FeatureCollection\",\"features\":[]}`);\r\n\r\n if (tempFeature.type === 'FeatureCollection') {\r\n tempFeature = tempFeature.features[0];\r\n }\r\n for (const coor of tempFeature.geometry.coordinates) {\r\n const subFeature = JSON.parse(\r\n `{\"type\":\"Feature\",\"geometry\":{\"coordinates\": [], \"type\": \"${this.featuretype}\"}}`\r\n );\r\n switch (this.originalFeaturetype) {\r\n case 'MultiPoint':\r\n case 'MultiLineString': {\r\n subFeature.geometry.coordinates = coor;\r\n newFeature.features.push(subFeature);\r\n break;\r\n }\r\n case 'MultiPolygon': {\r\n subFeature.geometry.coordinates = [coor[0]];\r\n newFeature.features.push(subFeature);\r\n break;\r\n }\r\n }\r\n }\r\n console.log('test', newFeature);\r\n this.feature = newFeature;\r\n }\r\n\r\n convertToSingleFeature(): void {\r\n const newCoordinate = [];\r\n if (this.feature.features?.length > 1) {\r\n this.feature.features.forEach((f) => {\r\n switch (this.feature.features[0].geometry.type) {\r\n case 'Polygon': {\r\n newCoordinate.push([f.geometry.coordinates[0]]);\r\n this.originalFeaturetype = 'MultiPolygon';\r\n break;\r\n }\r\n case 'LineString': {\r\n newCoordinate.push(f.geometry.coordinates);\r\n this.originalFeaturetype = 'MultiLineString';\r\n break;\r\n }\r\n case 'Point': {\r\n newCoordinate.push(f.geometry.coordinates);\r\n this.originalFeaturetype = 'MultiPoint';\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n const id = this.jtObjectIdAction.getValue();\r\n this.feature = `{\"type\":\"Feature\",\"geometry\":{\"type\":\"${\r\n this.originalFeaturetype\r\n }\",\"coordinates\":${JSON.stringify(newCoordinate)}},\"id\":\"${id}\"}`;\r\n // this.feature =\r\n // `{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"MultiLineString\",\"coordinates\":${JSON.stringify(newCoordinate)},\"id\":\"${id}\"}}]}`;\r\n this.feature = JSON.parse(this.feature);\r\n // console.log('SingleFeature', this.feature);\r\n this.adding = false;\r\n }\r\n\r\n restartDrawing(): void {\r\n this.cleanupFromDrawing(true);\r\n }\r\n sendDrawing(): void {\r\n if (this.feature) {\r\n // if (this.originalFeaturetype !== this.featuretype) {\r\n if (this.feature.features.length > 1) {\r\n this.convertToSingleFeature();\r\n } else {\r\n const id = this.jtObjectIdAction.getValue();\r\n this.feature.features[0].id = id;\r\n }\r\n let geoJson;\r\n if (this.feature.type !== 'FeatureCollection') {\r\n const editedGeoJson = `{\"type\":\"FeatureCollection\",\"features\":[${JSON.stringify(\r\n this.feature\r\n )}]}`;\r\n geoJson = editedGeoJson;\r\n } else {\r\n geoJson = JSON.stringify(this.feature);\r\n }\r\n console.log('jobtechFeatureEdited', this.feature);\r\n this.saveAction.next(geoJson);\r\n } else {\r\n // Save empty geometry\r\n const id = this.jtObjectIdAction.getValue();\r\n const emptyGeoJson = `{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"${this.featuretype}\",\"coordinates\":[[]]},\"id\":\"${id}\"}]}`;\r\n this.saveAction.next(emptyGeoJson);\r\n }\r\n }\r\n\r\n abort(): void {\r\n this.mapActionDialogService.hide('JobTech-Integrasjon');\r\n }\r\n\r\n cleanupFromDrawing(restart: boolean): void {\r\n setTimeout(() => {\r\n const cleanupOptions = {\r\n GeoJSON: 'remove',\r\n deleteFeature: true,\r\n };\r\n this.mapLibNgService.map().reactivateDrawingManager(cleanupOptions);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureHoverStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureHoverEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureHoverMove);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().GetClickCoordinates);\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n this.feature = undefined;\r\n\r\n if (restart) {\r\n setTimeout(() => {\r\n this.drawGeometry(this.featuretype);\r\n }, 100);\r\n }\r\n }, 100);\r\n }\r\n}\r\n","\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n\r\n ","import { NgModule } from '@angular/core';\r\nimport { IsyJobtechComponent } from './isy-jobtech.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { JobtechDirective } from './jobtech.directive';\r\n\r\n@NgModule({\r\n imports: [CommonModule, IsyTranslateModule, FontAwesomeModule],\r\n declarations: [IsyJobtechComponent, JobtechDirective],\r\n exports: [JobtechDirective],\r\n})\r\nexport class IsyJobtechModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { catchError, timeout, map } from 'rxjs/operators';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IConfigJson } from '@isygis/isymap-config';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyJobtechService {\r\n private _instance = '';\r\n private _url = '';\r\n private _token = '';\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService,\r\n private translateService: IsyTranslateService,\r\n private toasterService: IsyToasterService\r\n ) {\r\n (this._url =\r\n this.mapService.getProjectConfig().config.project.isyexternalapi +\r\n '/isyverify'),\r\n (this._instance = this.mapService.getMapConfig().instance);\r\n }\r\n\r\n getIsyVerifyToken() {\r\n if (this._url && this._instance) {\r\n this.toasterService.info(\r\n '',\r\n this.translateService.instant('jobtech_connecting_toaster')\r\n );\r\n return this.httpClient\r\n .post(this._url + '/token', {\r\n instance: this._instance,\r\n })\r\n .pipe(\r\n map((result) => {\r\n if (result) {\r\n this._token = result['Token'];\r\n return result;\r\n }\r\n throw new Error('No token')\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n }\r\n throw new Error('Missing url or instance');\r\n }\r\n getGeometry(id: string, token: string) {\r\n const config: IConfigJson = this.mapService.getConfig();\r\n\r\n if (id && token) {\r\n this.toasterService.info(\r\n '',\r\n this.translateService.instant('jobtech_get_geometry_toaster')\r\n );\r\n const url =\r\n config.externalServices.jobtechapi +\r\n 'geodata/equipmentgeometry' +\r\n '?id=' +\r\n id;\r\n const headers = { Authorization: 'Bearer ' + token };\r\n return this.httpClient\r\n .get(encodeURI(url), { headers: headers })\r\n .pipe(timeout(2000));\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n updateGeometry(geojson: string, token: string) {\r\n const config: IConfigJson = this.mapService.getConfig();\r\n\r\n //test\r\n // const testgeojson = JSON.parse(geojson);\r\n // testgeojson.features[0].geometry = {\r\n // \"type\": \"MultiPoint\",\r\n // \"coordinates\": [\r\n // [\r\n // 10.3718226637064,\r\n // 63.39743576818357\r\n // ],\r\n // [\r\n // 10.375761088106255,\r\n // 63.39787266341669\r\n // ]\r\n // ]\r\n // };\r\n // geojson = JSON.stringify(testgeojson);\r\n //test\r\n\r\n if (geojson && token) {\r\n const url =\r\n config.externalServices.jobtechapi + 'geodata/updateequipmentgeometry';\r\n const headers = {\r\n 'Content-type': 'application/json',\r\n Authorization: 'Bearer ' + token,\r\n };\r\n return this.httpClient\r\n .post(encodeURI(url), geojson, { headers: headers })\r\n .pipe(\r\n map((result) => {\r\n if (result && result.NoOfRowsHandled === 1) {\r\n this.toasterService.info(\r\n '',\r\n this.translateService.instant('jobtech_geometry_update_toaster')\r\n );\r\n } else if (result && result.NoOfRowsHandled < 1) {\r\n this.toasterService.error(\r\n '',\r\n this.translateService.instant(\r\n 'jobtech_geometry_update_failure_toaster'\r\n )\r\n );\r\n }\r\n return result;\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private handleErrorWithPromise(err) {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n this.toasterService.error(errorMessage, 'ERROR');\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n}\r\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IsyJobtechComponent } from './isy-jobtech.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[libJobtech]',\r\n})\r\nexport class JobtechDirective implements OnInit, OnDestroy {\r\n subscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private translateService: IsyTranslateService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.commonService.jtQueryParams$.subscribe((value) => {\r\n if (\r\n value &&\r\n value.jtfunksjon &&\r\n value.jtfunksjon.toLowerCase() === 'redigere'\r\n ) {\r\n setTimeout(() => {\r\n this.mapActionDialogService.show(\r\n 'JobTech-Integrasjon',\r\n this.translateService.instant(\r\n 'jobtech_edit_geometry_description'\r\n ),\r\n IsyJobtechComponent,\r\n value,\r\n { longText: true, noUpperCase: true, position: 'right' }\r\n );\r\n console.log('JobTechQueryParams', value);\r\n }, 200);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { ELogin, ELoginType, ESessionStorageId } from '@isygis/isy-configs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyMapEmitterService, IsyMapService, MapLibNgService } from '@isygis/isy-map';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { Subscription } from 'rxjs';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { IsyLoginService } from '@isygis/isy-login';\r\nimport { IsyKeycloakService } from './isy-keycloak.service';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\n\r\n@Component({\r\n selector: 'lib-isy-keycloak',\r\n templateUrl: './isy-keycloak.component.html',\r\n styleUrls: ['./isy-keycloak.component.scss'],\r\n})\r\nexport class IsyKeycloakComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n userName;\r\n email;\r\n subscription: Subscription = new Subscription();\r\n keycloakLogin = false;\r\n userIsLoggedIn = false;\r\n constructor(\r\n private sessionStorageService: SessionStorageService,\r\n private commonService: IsyCommonService,\r\n private mapService: IsyMapService,\r\n private keycloak: KeycloakService,\r\n private loginService: IsyLoginService,\r\n private keycloakService: IsyKeycloakService,\r\n private maplibng: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private toasterService: IsyToasterService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(this.keycloakService.getResources$.subscribe());\r\n this.subscription.add(\r\n // this triggers from auth.guard\r\n this.sessionStorageService\r\n .observe(ESessionStorageId.LOGINTYPEINPROGRESS)\r\n .subscribe((value) => {\r\n if (\r\n value === ELoginType.KEYCLOAK &&\r\n this.commonService.getKcToken() !== ''\r\n ) {\r\n this.userIsLoggedIn = true;\r\n this.keycloakService.setKcUserLoggedIn(true);\r\n this.commonService.setKcUsed(true);\r\n this.userName = this.sessionStorageService.retrieve(\r\n ELogin.USERNAME\r\n );\r\n this.email = this.sessionStorageService.retrieve(ELogin.EMAIL);\r\n this.keycloakLogin = true;\r\n }\r\n })\r\n );\r\n\r\n // Refresh token\r\n this.subscription.add(\r\n this.keycloak.keycloakEvents$.subscribe((event) => {\r\n // console.log('KC EVENT', event);\r\n // when token expired\r\n if (event.type === 6) {\r\n this.keycloak.updateToken(1).then((refreshed) => {\r\n if (refreshed) {\r\n console.log('Token refreshed!');\r\n this.keycloak\r\n .getToken()\r\n .then((token) => this.commonService.setKcToken(token));\r\n }\r\n });\r\n }\r\n if (event.type === 1) {\r\n console.log('Session has expired!');\r\n this.logOutKeycloak();\r\n }\r\n })\r\n );\r\n this.subscription.add(this.keycloakService.setKcBearertoken$.subscribe());\r\n if (\r\n this.sessionStorageService.retrieve('loginTypeInProgess') === 'keycloak' &&\r\n localStorage.getItem('loginTypeInProgess') !== 'keycloak'\r\n ) {\r\n this.toasterService.error('Du må lukke dette vinduet og logge på igjen', 'Innlogging utløpt');\r\n }\r\n }\r\n\r\n logOutKeycloak(): void {\r\n this.keycloakService.logOutKeycloak();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","
    \r\n \r\n \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { IsyKeycloakComponent } from './isy-keycloak.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { KeycloakAngularModule } from 'keycloak-angular';\r\n\r\n@NgModule({\r\n declarations: [IsyKeycloakComponent],\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n FormsModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n KeycloakAngularModule,\r\n BsDropdownModule.forRoot(),\r\n ],\r\n exports: [IsyKeycloakComponent],\r\n})\r\nexport class IsyKeycloakModule {}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport {\r\n ELogin,\r\n ESessionStorageId,\r\n} from '@isygis/isy-configs';\r\nimport {\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport {\r\n BehaviorSubject,\r\n catchError,\r\n combineLatest,\r\n map,\r\n switchMap,\r\n tap,\r\n} from 'rxjs';\r\nimport { KeycloakService } from 'keycloak-angular';\r\nimport { IConfigJson, IProjectConfig } from '@isygis/isymap-config';\r\nimport { IsyLoginService } from '@isygis/isy-login';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyKeycloakService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapLibNgService: MapLibNgService,\r\n private toasterService: IsyToasterService,\r\n private translateService: IsyTranslateService,\r\n private sessionStorageService: SessionStorageService,\r\n private commonService: IsyCommonService,\r\n private keycloak: KeycloakService,\r\n private maplibng: MapLibNgService,\r\n private loginService: IsyLoginService,\r\n ) {}\r\n\r\n private config$ = this.mapEmitterService.configLoadEmitter$;\r\n private projectConfig$ = this.mapService.projectConfig$;\r\n private kcUserLoggedInAction = new BehaviorSubject(false);\r\n\r\n getResources$ = combineLatest([\r\n this.config$,\r\n this.projectConfig$,\r\n this.kcUserLoggedInAction,\r\n ]).pipe(\r\n switchMap(\r\n ([config, projectConfig, userLoggedInAction]: [\r\n IConfigJson,\r\n IProjectConfig,\r\n boolean\r\n ]) => {\r\n if (projectConfig && config && userLoggedInAction) {\r\n // const token = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n const project = projectConfig.config.project;\r\n const formData = new FormData();\r\n formData.append('instance', config.instance);\r\n // formData.append('token', token);\r\n return this.httpClient\r\n .post(project.isyauth + '/authjson/readresourcesfortoken', formData)\r\n .pipe(\r\n map((resources) => {\r\n this.sessionStorageService.store(ELogin.RESOURCES, resources);\r\n // this.commonService.setShowMainSpinner(false);\r\n // this.loginInProgessAction.next(false);\r\n return true;\r\n })\r\n );\r\n }\r\n return Promise.resolve();\r\n }\r\n ),\r\n // tap((result) => console.log('Get RESOURCES: ', result)),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n\r\n setKcBearertoken$ = combineLatest([this.commonService.keycloaktToken$, this.mapEmitterService.mapLoadEmitter$]).pipe(\r\n switchMap(([token, mapLoaded]: [string, unknown]) => {\r\n if (token && token !== '' && mapLoaded) {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n this.maplibng.map().setIsyToken('', this.commonService.getKcToken());\r\n resolve();\r\n }, 1000);\r\n });\r\n }\r\n return Promise.resolve();\r\n })\r\n );\r\n logOutKeycloak(): void {\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.sessionStorageService.clear(ESessionStorageId.ACTIVENAVBAR);\r\n this.sessionStorageService.clear(ELogin.USERNAME);\r\n this.sessionStorageService.clear(ELogin.EMAIL);\r\n this.sessionStorageService.clear(ELogin.RESOURCES);\r\n this.sessionStorageService.clear(ELogin.USERISLOGGEDIN);\r\n // this.sessionStorageService.clear('realm');\r\n // this.sessionStorageService.clear('clientid');\r\n // this.sessionStorageService.clear('realmaddress');\r\n localStorage.removeItem('realm');\r\n localStorage.removeItem('clientid');\r\n localStorage.removeItem('realmaddress');\r\n localStorage.removeItem(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.loginService.setActiveLoginType(undefined);\r\n this.commonService.setKcLoginActive(false);\r\n this.commonService.setKcUsed(false);\r\n this.mapService.initProjectList();\r\n this.mapLibNgService.map().setIsyToken('', undefined);\r\n this.keycloak.logout();\r\n }\r\n\r\n private handleErrorWithPromise(err): any {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `${this.translateService.instant(\r\n 'backend_return_code'\r\n )} ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n this.toasterService.error(\r\n errorMessage,\r\n this.translateService.instant('error')\r\n );\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n\r\n setKcUserLoggedIn(value: boolean): void {\r\n this.kcUserLoggedInAction.next(value);\r\n }\r\n}\r\n","import { Component, HostBinding, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n IGroup,\r\n IIsyLayer,\r\n LegendElt,\r\n AddGeoJsonOptions\r\n} from '@isygis/isy-configs';\r\nimport {\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\nimport { filter, map, tap } from 'rxjs/operators';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyLayersService } from './isy-layers.service';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport {\r\n BehaviorSubject,\r\n combineLatest,\r\n firstValueFrom,\r\n Subscription, \r\n debounceTime\r\n} from 'rxjs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { getHeight, getWidth } from 'ol/extent';\r\nimport { PermissionService } from '@isygis/permission';\r\nimport { FmeEpsgCode, FormatConvertService, GisFormat } from '@isygis/isy-utils';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { add } from 'date-fns'; // Import date-fns for date manipulation\r\n@Component({\r\n selector: 'lib-isy-layers',\r\n templateUrl: './isy-layers.component.html',\r\n styleUrls: ['./isy-layers.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class IsyLayersComponent implements OnInit, OnDestroy {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n menuIsOpen = false;\r\n snapping = false;\r\n showActiveLegends = false;\r\n visibleLayers: IIsyLayer[];\r\n private _describeFeatureAction = new BehaviorSubject('none');\r\n waitingForDescribeFeature$ = this._describeFeatureAction.asObservable();\r\n currentTime: Date; // Current time displayed in the slider\r\n currentStep = 0; // Slider step position\r\n // sliderSteps: Date[] = []; // Array of dates for the slider\r\n\r\n searchTextAction$ = new BehaviorSubject('');\r\n layerGroups$ = this.layersService.getLayerGroups$;\r\n showLegend$ = this.layersService.showLegend$;\r\n showSettings$ = this.layersService.showSettings$;\r\n editSubGroup: IIsyLayer;\r\n projectConfig$ = this.mapService.projectConfig$.pipe(\r\n filter((x) => x !== undefined)\r\n );\r\n subscription: Subscription = new Subscription();\r\n hasKcToken = false;\r\n \r\n formatOptions = Object.values(GisFormat);\r\n selectedFormat = GisFormat.GEOJSON;\r\n\r\n helpIsOpen = false;\r\n\r\n searchText: string;\r\n\r\n filteredLayerGroups$ = combineLatest([\r\n this.layerGroups$,\r\n this.searchTextAction$.pipe(debounceTime(300))\r\n ]).pipe(\r\n map(([layerGroups, searchText]) => {\r\n const searchTextActive = !!searchText.trim(); // Check if search text is non-empty\r\n\r\n // Filter and map groups based on search text\r\n const groups = Array.isArray(layerGroups)\r\n ? layerGroups.map(group => ({\r\n ...group,\r\n isyLayers: group.isyLayers.filter(layer => \r\n layer.name?.toLowerCase().includes(searchText.toLowerCase()) || layer.subLayers.some(subLayer => subLayer.name?.toLowerCase().includes(searchText.toLowerCase()))\r\n )\r\n }))\r\n : [];\r\n\r\n // Filter groups with visible layers and set `isOpen` based on search text\r\n const filteredGroups = groups\r\n .filter(group => group.isyLayers.length > 0)\r\n .map(group => ({\r\n ...group,\r\n isOpen: searchTextActive // Only open if there's search text\r\n }));\r\n\r\n return { groups: filteredGroups, searchTextActive };\r\n })\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.filteredLayerGroups$,\r\n this.showLegend$,\r\n this.showSettings$,\r\n this.projectConfig$,\r\n this.waitingForDescribeFeature$,\r\n ]).pipe(\r\n map(([filteredData, showLegend, showSettings, projectConfig, describeFeature]) => {\r\n const { groups: layerGroups, searchTextActive } = filteredData;\r\n\r\n // Filter `supermaplayers` based on `layerGroups`, and open only if search is active\r\n const filteredSupermaplayers = projectConfig.config.supermaplayers?.map(supermaplayer => ({\r\n ...supermaplayer,\r\n isOpen: searchTextActive && layerGroups.some(group => group.supergroupid === supermaplayer.supergroupid)\r\n })).filter(supermaplayer => layerGroups.some(group => group.supergroupid === supermaplayer.supergroupid));\r\n\r\n // Return the final view model\r\n return {\r\n layerGroups,\r\n showLegend,\r\n showSettings,\r\n projectConfig: {\r\n ...projectConfig,\r\n config: {\r\n ...projectConfig.config,\r\n supermaplayers: filteredSupermaplayers\r\n }\r\n },\r\n describeFeature\r\n };\r\n }),\r\n tap(result => {\r\n // console.log('ISY LAYERS: ', result);\r\n if (result.layerGroups && result.layerGroups.length) {\r\n setTimeout(() => {\r\n // Wait a little before updating\r\n result.layerGroups.forEach(g => this.updateCountVisibleLayers(g));\r\n }, 1000);\r\n }\r\n })\r\n );\r\n selecetdTime;\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private permissionService: PermissionService,\r\n private layersService: IsyLayersService,\r\n private mapService: IsyMapService,\r\n private commonService: IsyCommonService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private translateService: IsyTranslateService,\r\n private convertService: FormatConvertService,\r\n private toasterService: IsyToasterService\r\n ) {\r\n // Empty constructor\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapEmitterService.snappingEnabledEmitter$.subscribe(\r\n (status) => (this.snapping = status)\r\n )\r\n );\r\n this.commonService.getKcToken() !== '' ? this.hasKcToken = true : this.hasKcToken = false;\r\n this.subscription.add(\r\n this.commonService.helpId$.subscribe((id) => {\r\n if (id === undefined) {\r\n this.helpIsOpen = false;\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.commonService.setHelpId(undefined);\r\n }\r\n\r\n calculateSliderSteps(layer: IIsyLayer): void {\r\n const timeoptions = layer.timeoptions;\r\n const sliderSteps = []; // Array of dates for the slider\r\n if (!!timeoptions?.starttime && !!timeoptions?.endtime && !!timeoptions?.increment) {\r\n const start = new Date(timeoptions?.starttime);\r\n const end = new Date(timeoptions?.endtime);\r\n \r\n let current = start;\r\n const incrementParts = timeoptions.increment.split(' ');\r\n const incrementValue = parseInt(incrementParts[0]);\r\n const incrementUnit = incrementParts[1].toLowerCase();\r\n \r\n while (current <= end) {\r\n sliderSteps.push(current);\r\n // for example: current = add(current, { days: incrementValue });\r\n current = add(current, { [incrementUnit + 's']: incrementValue }); // Add the increment\r\n }\r\n timeoptions['sliderSteps'] = sliderSteps;\r\n console.log('timeoptions: ', timeoptions);\r\n // Initialize current time and slider position\r\n if (layer.subLayers[0]['time'] !== undefined) {\r\n this.currentTime = layer.subLayers[0]['time'];\r\n }\r\n else {\r\n this.currentTime = sliderSteps[0] || null;\r\n this.currentStep = 0;\r\n }\r\n }\r\n }\r\n\r\n toggleGroup(layerGroup: IGroup): void {\r\n layerGroup.isOpen = !layerGroup.isOpen;\r\n }\r\n\r\n toggleSubGroup(subGroup: IIsyLayer): void {\r\n subGroup.isSettingsOpen = !subGroup.isSettingsOpen;\r\n }\r\n\r\n addEnabled(): boolean {\r\n return this.permissionService.hasResource('GeoInnsynCreate');\r\n }\r\n\r\n startAddFeature(subGroup: IIsyLayer): Promise {\r\n this.commonService.hideSideNav(true);\r\n if (subGroup && subGroup.subLayers.length > 0) {\r\n this.editSubGroup = subGroup;\r\n this.layersService.startAddFeature();\r\n if (subGroup.subLayers[0].subLayerName === undefined) {\r\n subGroup.subLayers[0].subLayerName = subGroup.subLayers[0].name;\r\n }\r\n this._describeFeatureAction.next(subGroup.subLayers[0].subLayerName);\r\n return this.mapLibNgService\r\n .map()\r\n .describeFeature(subGroup.subLayers[0], 'not in use')\r\n .then(() => {\r\n firstValueFrom(this.waitingForDescribeFeature$).then((str) => {\r\n if (str === subGroup.subLayers[0].subLayerName) {\r\n this._describeFeatureAction.next('none');\r\n }\r\n });\r\n })\r\n .catch((err) => {\r\n // TODO: Error is caught in maplib for now.\r\n // Error handling should maybe be moved here to IsyComponents so we can fire a error-toaster?\r\n // Einar 21.02.2023\r\n console.error('an error occured: ', err);\r\n });\r\n } else {\r\n return Promise.resolve();\r\n }\r\n }\r\n\r\n toggleLayer(groupLayer: IGroup, layer: IIsyLayer): void {\r\n const layerPromise: Promise = layer.isDisabled || layer.isVisible\r\n ? Promise.resolve(this.mapLibNgService.map().hideLayer(layer))\r\n : this.mapLibNgService.map().showLayer(layer);\r\n\r\n layerPromise.then(() => {\r\n this.updateCountVisibleLayers(groupLayer);\r\n this.layersService.generateMissingLegends(layer);\r\n\r\n if (layer.isVisible) {\r\n const kcToken = this.commonService.getKcToken();\r\n if (kcToken && kcToken !== '') {\r\n this.mapLibNgService.map().setIsyToken('', kcToken);\r\n }\r\n // if truthy timeoptions, calculate the slider steps (faulsy: null, undefined, 0, '', NaN)\r\n // if (!!layer.timeoptions && !!layer.timeoptions.starttime && !!layer.timeoptions.endtime && !!layer.timeoptions.increment) {\r\n // this.calculateSliderSteps(layer);\r\n // }\r\n }\r\n // else {\r\n // if (layer.timeoptions) {\r\n // layer.timeoptions.sliderSteps = [];\r\n // }\r\n // }\r\n });\r\n }\r\n\r\n uploadFiles(files: File[], format: GisFormat, epsg = FmeEpsgCode.INFER): void {\r\n if (files.length > 0) { \r\n this.toasterService.info('uploadingInProgress_toaster_msg'); \r\n this.convertFiles(files, format, epsg); \r\n }\r\n }\r\n\r\n convertFiles(files: File[], format: GisFormat, epsg: FmeEpsgCode): void {\r\n const filesArray = Array.from(files); // Assert is array of files not FilesList - for access to methods as reduce\r\n const maxFileSize = 20 * 1000 * 1000; // 20Mb\r\n if (filesArray?.length > 0) {\r\n if (filesArray.reduce((acc, curr) => acc + curr.size, 0) > maxFileSize) {\r\n this.toasterService.error('drawAddFileToLarge_toaster_msg');\r\n console.error('drawAddFileToLarge_toaster_msg');\r\n return;\r\n }\r\n if (format === GisFormat.GEOJSON || format === GisFormat.SOSI || format === GisFormat.GML) {\r\n filesArray.forEach((file) => {\r\n this.startToConvert([file], format, epsg);\r\n });\r\n } else {\r\n this.startToConvert(filesArray, format, epsg); \r\n } \r\n }\r\n }\r\n\r\n private startToConvert(files: File[], format: GisFormat, epsg: FmeEpsgCode): void {\r\n this.convertService.convert(files, format, epsg)\r\n .then((geojson) => {\r\n if (!geojson) {\r\n throw Error(\"Empty result from API\");\r\n }\r\n // console.log('Success: ', geojson, filesArray);\r\n const layerName = files[0].name.split('.')[0];\r\n const uploadGeoJson: AddGeoJsonOptions = {\r\n features: JSON.stringify(geojson),\r\n layerName: layerName,\r\n cluster: false,\r\n clustercount: false,\r\n jsonStyle: {\r\n fill: {\r\n // color: 'rgba(0,0,0,0.55)'\r\n color: 'rgba(211,55,73, 0.55)'\r\n },\r\n stroke: {\r\n // color: 'rgba(0,0,0,1)',\r\n color: 'rgb(211,55,73)',\r\n width: 2\r\n },\r\n image: {\r\n radius: 7,\r\n fill: {\r\n // color: 'rgba(0,0,0,1)'\r\n color: 'rgb(211,55,73)'\r\n }\r\n },\r\n // hover: false\r\n },\r\n featureInfoTitle: layerName,\r\n };\r\n this.mapService.addGeoJson(uploadGeoJson);\r\n this.toasterService.success('layerAddSuccess_toaster_msg');\r\n })\r\n .catch(() => {\r\n this.toasterService.error('drawErrorConverting_toaster_msg');\r\n console.error('drawErrorConverting_toaster_msg');\r\n });\r\n }\r\n\r\n selectFormat(format: GisFormat) {\r\n this.selectedFormat = format;\r\n }\r\n\r\n private activateLayersInGroup(groupLayer: IGroup, value: boolean): void {\r\n groupLayer.isyLayers.forEach((layer) => (layer.isVisible = value));\r\n }\r\n\r\n private updateCountVisibleLayers(groupLayer: IGroup): void {\r\n const disabledLayersLength = groupLayer.isyLayers.filter(\r\n (isyLayer) => isyLayer.isDisabled\r\n ).length;\r\n const disabledVisibleLayersLength = groupLayer.isyLayers.filter(\r\n (isyLayer) => isyLayer.isVisible || isyLayer.isDisabled\r\n ).length;\r\n groupLayer.isyLayers.forEach((layer) => {\r\n // if truthy timeoptions, calculate the slider steps (faulsy: null, undefined, 0, '', NaN)\r\n if (layer.isVisible && !!layer.timeoptions && !!layer.timeoptions.starttime && !!layer.timeoptions.endtime && !!layer.timeoptions.increment) {\r\n this.calculateSliderSteps(layer);\r\n } \r\n else {\r\n if (layer.timeoptions) {\r\n layer.timeoptions.sliderSteps = [];\r\n }\r\n }\r\n });\r\n groupLayer.countVisibleLayers = disabledLayersLength === disabledVisibleLayersLength ? 0 : disabledVisibleLayersLength;\r\n }\r\n\r\n toggleLayers(groupLayer: IGroup): void {\r\n this.activateLayersInGroup(\r\n groupLayer,\r\n groupLayer.countVisibleLayers === groupLayer.isyLayers.length\r\n );\r\n\r\n const ps = groupLayer.isyLayers.map((layer) => {\r\n const layerPromise: Promise =\r\n layer.isDisabled || layer.isVisible\r\n ? Promise.resolve(this.mapLibNgService.map().hideLayer(layer))\r\n : this.mapLibNgService.map().showLayer(layer);\r\n return layerPromise.then(() => {\r\n this.layersService.generateMissingLegends(layer);\r\n if (layer.isVisible) {\r\n const kcToken = this.commonService.getKcToken();\r\n if (kcToken && kcToken !== '') {\r\n this.mapLibNgService.map().setIsyToken('', kcToken);\r\n }\r\n // if truthy timeoptions, calculate the slider steps (faulsy: null, undefined, 0, '', NaN)\r\n // if (!!layer.timeoptions && !!layer.timeoptions.starttime && !!layer.timeoptions.endtime && !!layer.timeoptions.increment) {\r\n // this.calculateSliderSteps(layer);\r\n // }\r\n }\r\n // else {\r\n // if (layer.timeoptions) {\r\n // layer.timeoptions.sliderSteps = [];\r\n // }\r\n // }\r\n });\r\n });\r\n Promise.all(ps).then(() => this.updateCountVisibleLayers(groupLayer));\r\n }\r\n setTime(layer: any, value: any): void {\r\n const steps = layer.subLayers[0].timeoptions.sliderSteps;\r\n if (steps.length > 0) {\r\n this.currentTime = steps[this.currentStep];\r\n }\r\n this.mapLibNgService.map().setLayerTime(layer, value);\r\n }\r\n setOpacity(layer: any, value: any): void {\r\n layer.opacity = value / 100;\r\n this.mapLibNgService.map().setLayerOpacity(layer, layer.opacity);\r\n }\r\n getOpacity(subGroup: IIsyLayer) {\r\n return Number(subGroup.opacity) * 100;\r\n }\r\n\r\n getRadius(currentStyle) {\r\n if (currentStyle?.pointRadius) {\r\n return currentStyle.pointRadius;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n getTrianglePoints(currentStyle) {\r\n return `5, ${5 + currentStyle.pointRadius * 2} ${\r\n 5 + currentStyle.pointRadius * 2\r\n }, ${5 + currentStyle.pointRadius * 2} ${\r\n 5 + currentStyle.pointRadius\r\n },5 5, ${5 + currentStyle.pointRadius * 2}`;\r\n }\r\n\r\n // getStarPoints(currentStyle) {\r\n // return '5,30 30,10 0,10 25,30 15,0';\r\n // }\r\n\r\n //\r\n // SAMLET TEGNFORKLARING\r\n //\r\n\r\n // Har ingen funksjonalitet for å korte ned på wfs-tegnforklaringene\r\n\r\n // Update button that updates the layers\r\n\r\n // Fetch all turned on layers\r\n\r\n toggleLegendLayer(subGroup: IIsyLayer): void {\r\n subGroup.isLegendOpen = !subGroup.isLegendOpen;\r\n }\r\n\r\n showAllLayers(): void {\r\n this.showActiveLegends = false;\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n showActiveLayers(): void {\r\n this.showActiveLegends = true;\r\n this.subscription.unsubscribe();\r\n this.subscription = new Subscription(); // create a new subscription object\r\n this.subscription.add(\r\n this.mapEmitterService.mapMoveEndEmitter$.subscribe((value) => {\r\n if (value) {\r\n this.updateActiveLegends();\r\n // console.log('Move', value);\r\n }\r\n })\r\n );\r\n }\r\n\r\n updateActiveLegends(): void {\r\n const mapExtent = this.mapLibNgService.getExtent();\r\n const mapHeight = Math.round(getHeight(mapExtent.extent));\r\n const mapWidth = Math.round(getWidth(mapExtent.extent));\r\n const windowWidth = window.innerWidth;\r\n const windowHeight = window.innerHeight;\r\n\r\n const specificParams = {\r\n geoserver: `&WIDTH=${25}&HEIGHT=${25}&srcwidth=${windowWidth}&srcheight=${windowHeight}&srs=${\r\n mapExtent.epsg\r\n }&crs=${mapExtent.epsg}&BBOX=${mapExtent.extent.join(\r\n ','\r\n )}&legend_options=countMatched:true;hideEmptyRules:true`,\r\n mapserver: `&WIDTH=${windowWidth}&HEIGHT=${windowHeight}&srs=${\r\n mapExtent.epsg\r\n }&crs=${mapExtent.epsg}&BBOX=${mapExtent.extent.join(',')}`,\r\n qgisserver: `&WIDTH=${25}&HEIGHT=${25}&srcwidth=${mapWidth}&srcheight=${mapHeight}&srs=${\r\n mapExtent.epsg\r\n }&crs=${mapExtent.epsg}&BBOX=${mapExtent.extent.join(',')}`,\r\n webinnsyn: `&WIDTH=${25}&HEIGHT=${25}&srcwidth=${windowWidth}&srcheight=${windowHeight}&srs=${\r\n mapExtent.epsg\r\n }&crs=${mapExtent.epsg}&BBOX=${mapExtent.extent.join(',')}`,\r\n };\r\n // console.log('Specific params for filtered legendgraphic: ', specificParams);\r\n\r\n const overlayLayers: IIsyLayer[] = this.mapLibNgService\r\n .map()\r\n .getOverlayLayers();\r\n const visibleLayers: IIsyLayer[] = overlayLayers\r\n .filter((lyr: IIsyLayer) => lyr.isVisible)\r\n .map((lyr: IIsyLayer) => {\r\n this.updateBboxLegendUrls(lyr, specificParams);\r\n if (lyr.isLegendOpen === null || lyr.isLegendOpen === undefined) {\r\n lyr.isLegendOpen = true;\r\n }\r\n return lyr;\r\n })\r\n .sort(\r\n (lyrA: IIsyLayer, lyrB: IIsyLayer) =>\r\n lyrB.subLayers[0].sortingIndex - lyrA.subLayers[0].sortingIndex\r\n );\r\n this.visibleLayers = visibleLayers;\r\n // console.log('Visible layers: ', this.visibleLayers);\r\n }\r\n\r\n updateBboxLegendUrls(layer: IIsyLayer, specificParams): void {\r\n const bboxUrls: LegendElt[] = [];\r\n layer.legendGraphicUrls.forEach((legend) => {\r\n let urlString = legend.url;\r\n /*\r\n if (legend.url.toLocaleLowerCase().includes('arcgis')) {\r\n urlString = legend.url;\r\n legend.isFiltered = false;\r\n } else if (legend.url.toLocaleLowerCase().includes('geoserver') || legend.url.toLocaleLowerCase().includes('vegvesen.no/kart/ogc')) {\r\n urlString = specialCases.geoserver.url;\r\n } else if (legend.url.toLocaleLowerCase().includes('mapserver') || legend.url.toLocaleLowerCase().includes('kart.ra.no') || legend.url.toLocaleLowerCase().includes('wms.geonorge.no/skwms1') || legend.url.toLocaleLowerCase().includes('openwms.statkart.no/skwms1') || legend.url.toLocaleLowerCase().includes('reindrift.nibio.no') || legend.url.toLocaleLowerCase().includes('nibio.no') || legend.url.toLocaleLowerCase().includes('services.kystverket.no') || legend.url.toLocaleLowerCase().includes('wms.artsdatabanken.no')) {\r\n urlString = specialCases.mapserver.url;\r\n } else if (legend.url.toLocaleLowerCase().includes('qgis')) {\r\n urlString = specialCases.qgisserver.url;\r\n } else {\r\n urlString = legend.url;\r\n legend.isFiltered = false;\r\n }*/\r\n\r\n const urlMappings = {\r\n arcgis: '',\r\n // GEOSERVER\r\n geoserver: specificParams.geoserver,\r\n 'vegvesen.no/kart/ogc': specificParams.geoserver,\r\n // MAPSERVER\r\n mapserver: specificParams.mapserver,\r\n 'kart.ra.no': specificParams.mapserver,\r\n 'wms.geonorge.no/skwms1': specificParams.mapserver,\r\n 'openwms.statkart.no/skwms1': specificParams.mapserver,\r\n 'reindrift.nibio.no': specificParams.mapserver,\r\n 'nibio.no': specificParams.mapserver,\r\n 'services.kystverket.no': specificParams.mapserver,\r\n 'wms.artsdatabanken.no': specificParams.mapserver,\r\n // WEBINNSYN\r\n webinnsyn: specificParams.webinnsyn,\r\n 'nois.no': specificParams.webinnsyn,\r\n 'datalake/api/wms': specificParams.webinnsyn,\r\n 'valdreskart.no': specificParams.webinnsyn,\r\n 'glokart.no': specificParams.webinnsyn,\r\n 'kart.regiondata.no': specificParams.webinnsyn,\r\n // QGIS\r\n qgis: specificParams.qgisserver,\r\n };\r\n\r\n const url = legend.url.toLocaleLowerCase();\r\n\r\n const matchingKey = Object.keys(urlMappings).find((key) =>\r\n url.includes(key)\r\n );\r\n\r\n if (matchingKey) {\r\n urlString = legend.url + urlMappings[matchingKey];\r\n legend.isFiltered = matchingKey !== 'arcgis';\r\n } else {\r\n urlString = legend.url;\r\n legend.isFiltered = false;\r\n }\r\n\r\n try {\r\n const validUrl = new URL(urlString);\r\n const bboxUrl = validUrl.toString();\r\n bboxUrls.push({\r\n title: legend.title,\r\n url: bboxUrl,\r\n isLoading: true,\r\n numTries: 0,\r\n isFiltered: legend.isFiltered,\r\n });\r\n } catch (error) {\r\n console.error(`Unable to create url ${urlString}`);\r\n }\r\n });\r\n\r\n layer.legendGraphicUrlsBbox = bboxUrls;\r\n }\r\n\r\n hasWfsStyles(lyr: IIsyLayer): boolean {\r\n return lyr.styles && lyr.styles.length > 0;\r\n }\r\n\r\n hasValidHttpUrl(lyr: IIsyLayer): boolean {\r\n return this.isValidHttpUrl(lyr.subLayers[0].legendGraphicUrl);\r\n }\r\n\r\n isValidHttpUrl(str: string): boolean {\r\n let url;\r\n try {\r\n url = new URL(str);\r\n } catch (_) {\r\n return false;\r\n }\r\n return url.protocol === 'http:' || url.protocol === 'https:';\r\n }\r\n\r\n imgErrorHandler(evt, legend: LegendElt): void {\r\n legend.numTries = Number.isInteger(legend.numTries)\r\n ? legend.numTries + 1\r\n : 0;\r\n if (legend.numTries >= 4) {\r\n evt.target.alt = this.translateService.instant(\r\n 'error_bbox_legendgraphic'\r\n );\r\n legend.isLoading = false;\r\n evt.target.style.display = 'block';\r\n return;\r\n }\r\n setTimeout(() => {\r\n evt.target.src = legend.url;\r\n }, 2000);\r\n }\r\n\r\n imgLoadHandler(evt, legend: LegendElt): void {\r\n legend.isLoading = false;\r\n evt.target.style.display = 'block';\r\n }\r\n\r\n toggleSnapping() {\r\n this.mapEmitterService.emitSnappingEnabled(!this.snapping);\r\n }\r\n\r\n showHelp(): void {\r\n this.helpIsOpen = !this.helpIsOpen;\r\n this.commonService.setHelpId(this.helpIsOpen ? 'uploadCustomMapLayer' : undefined);\r\n }\r\n\r\n keyUpSearch(event: KeyboardEvent): void {\r\n this.searchText = (event.target as HTMLInputElement).value;\r\n this.searchTextAction$.next(this.searchText); \r\n }\r\n\r\n removeSearch(): void {\r\n this.searchText = '';\r\n this.searchTextAction$.next(this.searchText);\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    0\" class=\"accordion page-animations list-layers\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{superGroup.name}}\r\n
    \r\n
    \r\n
    \r\n
    0\" class=\"collapse show\" [@toggleHeight]=\"superGroup.isOpen ? superGroup.isOpen : false\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{layerGroup.name}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{subLayer.name}}\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n Tid\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Current Time: {{currentTime ? (currentTime | date: 'yyyy-MM-dd HH:mm:ss') : (subLayer.timeoptions?.starttime | date: 'yyyy-MM-dd HH:mm:ss') }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n 0\">Opacity\r\n
    \r\n
    \r\n 0%\r\n \r\n 100%\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n 0) && subLayer['styles'] && subLayer['styles'].length > 0\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {{style.filterName | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n
    \r\n {{u.title}}\r\n
    \r\n
    \r\n \r\n \"tegnforklaring\"Tegnforklaring er ikke tilgjengelig'\"/>\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{layerGroup.name}}\r\n
    \r\n
    \r\n {{layerGroup.name | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{subLayer.name}} \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    0\">\r\n
    \r\n Tid\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Current Time: {{currentTime ? (currentTime | date: 'yyyy-MM-dd HH:mm:ss') : (subLayer.timeoptions?.starttime | date: 'yyyy-MM-dd HH:mm:ss') }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n 0\">Opacity\r\n \r\n
    \r\n
    \r\n 0%\r\n \r\n 100%\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n 0) && subLayer['styles'] && subLayer['styles'].length > 0\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {{style.filterName | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n
    \r\n {{u.title}}\r\n
    \r\n
    \r\n \"tegnforklaring\"Tegnforklaring er ikke tilgjengelig'\"/>\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{subLayer.name}}\r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n Tid\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Current Time: {{currentTime ? (currentTime | date: 'yyyy-MM-dd HH:mm:ss') : (subLayer.timeoptions?.starttime | date: 'yyyy-MM-dd HH:mm:ss') }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n 0\">Opacity\r\n
    \r\n
    \r\n 0%\r\n \r\n 100%\r\n
    \r\n
    \r\n
    \r\n 0) && subLayer['styles'] && subLayer['styles'].length > 0\">\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n {{style.filterName | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n
    \r\n
    \r\n WMS {{u.title}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \"tegnforklaring\"\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n
    \r\n
    \r\n
    \r\n {{'layers' | translate}}\r\n
    \r\n
    \r\n {{'active_legends' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'uploadOwnLayer' | translate}} \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{format | formatOptionDescription}}\r\n
    • \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyLayersComponent } from './isy-layers.component';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { FilterGroupsWithSubLayers } from './isy-layers.pipe';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { IsyUtilsModule } from '@isygis/isy-utils';\r\nimport { StyleLegendComponent } from './style-legend/style-legend.component';\r\nimport { ProtectedImageComponent } from './protected-image.component';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n IsyUtilsModule,\r\n IsySpinnerModule,\r\n BsDropdownModule.forRoot(),\r\n FormsModule\r\n ],\r\n declarations: [\r\n IsyLayersComponent,\r\n FilterGroupsWithSubLayers,\r\n StyleLegendComponent,\r\n ProtectedImageComponent,\r\n ],\r\n exports: [IsyLayersComponent, FilterGroupsWithSubLayers],\r\n})\r\nexport class IsyLayersModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { IGroup } from '@isygis/isy-configs';\r\n\r\n@Pipe({\r\n name: 'filterGroupsWithSubLayers',\r\n})\r\nexport class FilterGroupsWithSubLayers implements PipeTransform {\r\n transform(groups: IGroup[]): IGroup[] {\r\n return groups.filter((group) => group.isyLayers.length > 0);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MapLibNgService, IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { IGroup, IIsyLayer, MapConfig } from '@isygis/isy-configs';\r\nimport { BehaviorSubject, combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { PermissionService } from '@isygis/permission';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\nexport interface ISldStyle {\r\n type?: string;\r\n subtype?: string;\r\n fontColor?: string;\r\n fontFamily?: string;\r\n fontSize?: number;\r\n fontStyle?: string;\r\n fontWeight?: string;\r\n fillPattern?: string;\r\n fill?: string;\r\n fillOpacity?: string;\r\n stroke?: string;\r\n strokeOpacity?: string;\r\n strokeWidth?: number;\r\n strokeDashStyle?: string;\r\n name?: string;\r\n pointRadius?: number;\r\n externalGraphic?: string;\r\n points?: string;\r\n rotation?: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyLayersService {\r\n private _showSettings = new BehaviorSubject(true);\r\n showSettings$ = this._showSettings.asObservable();\r\n\r\n private _showLegend = new BehaviorSubject(true);\r\n showLegend$ = this._showLegend.asObservable();\r\n\r\n private _addFeatureAction = new BehaviorSubject(false);\r\n addFeatureAction$ = this._addFeatureAction.asObservable();\r\n\r\n layerGroupsShouldBeExpand = false;\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private permissionService: PermissionService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n private mapConfigLoaded$ = this.mapEmitterService.mapConfigLoadEmitter$;\r\n private updateLayerGroups$ = this.commonService.updateLayerGroups$;\r\n\r\n getLayerGroups$ = combineLatest([\r\n this.mapConfigLoaded$,\r\n this.updateLayerGroups$,\r\n ]).pipe(\r\n map(([mapConfigLoaded, updateLayerGroups]: [MapConfig, boolean]) => {\r\n if (mapConfigLoaded || updateLayerGroups) {\r\n const groups = this.mapLibNgService.map().getGroups();\r\n const overlays = this.mapLibNgService.map().getOverlayLayers();\r\n return groups.map((g: IGroup) => {\r\n const layers = overlays.filter((overlay: IIsyLayer) =>\r\n overlay.groupId.find((id) => id === g.groupId)\r\n );\r\n layers.map((layer: IIsyLayer) => {\r\n layer.isSettingsOpen = false;\r\n this.generateMissingLegends(layer);\r\n this.checkIfLayerNeedsResource(layer);\r\n });\r\n layers.sort((layer1, layer2) => {\r\n const layerIndex1 = layer1.subLayers[0]['layerorder'];\r\n const layerIndex2 = layer2.subLayers[0]['layerorder'];\r\n if (layerIndex1 > layerIndex2) {\r\n return 1;\r\n }\r\n if (layerIndex1 < layerIndex2) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n const visibleLayers = layers.filter((layer) => layer.isVisible);\r\n return {\r\n ...g,\r\n isyLayers: layers,\r\n isOpen: this.layerGroupsShouldBeExpand ? true : g.isOpen,\r\n countVisibleLayers: visibleLayers.length,\r\n };\r\n });\r\n } else {\r\n return Promise.resolve();\r\n }\r\n }) \r\n );\r\n\r\n checkIfLayerNeedsResource(layer: IIsyLayer): void {\r\n layer.subLayers.forEach((sub) => {\r\n if (sub.url) {\r\n if (Array.isArray(sub.url)) {\r\n sub.url.forEach((url) => {\r\n const resource = this.getResourceFromUrl(url);\r\n if (resource) {\r\n layer.isDisabled = !this.permissionService.hasResource(resource);\r\n }\r\n });\r\n } else {\r\n const resource = this.getResourceFromUrl(sub.url);\r\n if (resource) {\r\n layer.isDisabled = !this.permissionService.hasResource(resource);\r\n }\r\n }\r\n const resources = layer.subLayers[0].neededResources;\r\n if (resources?.length) {\r\n layer.isDisabled = resources.some((r) => !this.permissionService.hasResource(r));\r\n }\r\n }\r\n });\r\n }\r\n getResourceFromUrl(url): string {\r\n const resourceStart = url.toLowerCase().indexOf('resource=');\r\n if (resourceStart >= 0) {\r\n const resourceMatch = url.match(/resource=(.*?)(&|$)/i);\r\n if (resourceMatch && resourceMatch.length > 2) {\r\n const resource = resourceMatch[1];\r\n return resource;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n generateMissingLegends(layer: IIsyLayer): void {\r\n if (layer.legendGraphicUrls.length > 0 || layer['styles']) {\r\n return;\r\n }\r\n\r\n layer.subLayers.forEach((sub) => {\r\n if (!sub.legendGraphicUrl) {\r\n if (sub.source === 'WMS' && sub.layers.length >= 1) {\r\n sub.layers.forEach((lyr) => {\r\n const url = this.mapLibNgService\r\n .map()\r\n .getLayerLegendUrl(sub, lyr.name);\r\n if (url && url !== '') {\r\n layer.legendGraphicUrls.push({\r\n title: lyr.title || lyr.name,\r\n url: url,\r\n });\r\n }\r\n });\r\n } else {\r\n const url = this.mapLibNgService.map().getLayerLegendUrl(sub);\r\n sub.legendGraphicUrl = url;\r\n }\r\n }\r\n if (sub.legendGraphicUrl && sub.legendGraphicUrl !== '') {\r\n layer.legendGraphicUrls.push({ title: '', url: sub.legendGraphicUrl });\r\n }\r\n });\r\n\r\n if (layer.legendGraphicUrls.length === 0) {\r\n layer['styles'] = this.generateSldStyles(\r\n this.mapLibNgService.map().getLegendStyles(layer)\r\n );\r\n }\r\n }\r\n\r\n generateSldStyles(legendStyles): any {\r\n if (!legendStyles) {\r\n return;\r\n }\r\n let sldStyles = [];\r\n\r\n // Check if filter and / or style is created in style editor\r\n const filterStyle = legendStyles.filter\r\n ? legendStyles.filter[0]?.style\r\n : null;\r\n const style = legendStyles.style;\r\n\r\n if (this.isStyleFromEditor(style)) {\r\n sldStyles = this.styleFromEditorStyles(legendStyles, sldStyles);\r\n } else if (this.isFilterFromEditor(filterStyle)) {\r\n sldStyles = this.filterFromEditorStyles(legendStyles, sldStyles);\r\n } else {\r\n sldStyles = this.otherStyles(legendStyles, sldStyles);\r\n }\r\n return sldStyles;\r\n }\r\n\r\n calculateStarPoints(cx, cy, spikes, outerRadius, innerRadius): string {\r\n let results = '';\r\n let x;\r\n let y;\r\n let rot = (Math.PI / 2) * 3;\r\n const step = Math.PI / spikes;\r\n\r\n for (let i = 0; i < spikes; i++) {\r\n x = cx + Math.cos(rot) * outerRadius;\r\n y = cy + Math.sin(rot) * outerRadius;\r\n if (i === 0) {\r\n results = x + ',' + y;\r\n } else {\r\n results += ', ' + x + ',' + y;\r\n }\r\n rot += step;\r\n\r\n x = cx + Math.cos(rot) * innerRadius;\r\n y = cy + Math.sin(rot) * innerRadius;\r\n rot += step;\r\n results += ', ' + x + ',' + y;\r\n }\r\n\r\n return results;\r\n }\r\n\r\n showSettings(value: boolean): void {\r\n this._showSettings.next(value);\r\n }\r\n\r\n showLegend(value: boolean): void {\r\n this._showLegend.next(value);\r\n }\r\n\r\n expandAllLayerGroups(): void {\r\n this.layerGroupsShouldBeExpand = true;\r\n }\r\n\r\n startAddFeature(): void {\r\n this._addFeatureAction.next(true);\r\n }\r\n\r\n stopAddFeature(): void {\r\n this._addFeatureAction.next(false);\r\n }\r\n\r\n private convertStyle(style, geomType, label?): ISldStyle {\r\n if (!style) {\r\n return null;\r\n }\r\n const fillOpacity = '0.9';\r\n const strokeOpacity = '0.9';\r\n const sldStyle: ISldStyle = {\r\n type: geomType,\r\n fill: style?.fill?.color,\r\n fillPattern: style?.fillPattern,\r\n fillOpacity,\r\n stroke: style?.stroke?.color,\r\n strokeOpacity,\r\n strokeWidth: style?.stroke?.width,\r\n strokeDashStyle: style?.stroke?.lineDash,\r\n name: label ?? geomType,\r\n pointRadius: style.radius,\r\n externalGraphic: '',\r\n points: style.points,\r\n rotation: style.rotation ? (style.rotation / Math.PI) * -180 : 0,\r\n };\r\n\r\n sldStyle.strokeWidth = this.updateStrokeWidth(sldStyle, geomType);\r\n\r\n return sldStyle;\r\n }\r\n\r\n private updateStrokeWidth(sldStyle, geomType) {\r\n // Return default stroke sizes so the legend style can not be out of bounds..\r\n if (geomType === 'Line' || geomType === 'Polygon') {\r\n sldStyle.strokeWidth = Math.min(sldStyle.strokeWidth, 8);\r\n } else {\r\n const defaultSizes = [2, 4, 8];\r\n const radius = sldStyle.pointRadius ? sldStyle.pointRadius : 10;\r\n const width = sldStyle.strokeWidth ? sldStyle.strokeWidth : 0;\r\n if (width === 0) {\r\n sldStyle.strokeWidth = width;\r\n } else if (width / radius < 0.4) {\r\n sldStyle.strokeWidth = defaultSizes[0];\r\n } else if (width / radius <= 0.9) {\r\n sldStyle.strokeWidth = defaultSizes[1];\r\n } else if (width / radius > 0.9) {\r\n sldStyle.strokeWidth = defaultSizes[2];\r\n } else {\r\n sldStyle.strokeWidth = defaultSizes[0];\r\n }\r\n }\r\n return sldStyle.strokeWidth;\r\n }\r\n\r\n private isStyleFromEditor(style) {\r\n return (\r\n style &&\r\n (style.find((s) => s.geometryType === 'Point') ||\r\n style.find((s) => s.geometryType === 'Line') ||\r\n style.find((s) => s.geometryType === 'Polygon'))\r\n );\r\n }\r\n\r\n private isFilterFromEditor(filterStyle) {\r\n return (\r\n filterStyle &&\r\n (filterStyle.find((s) => s.geometryType === 'Point') ||\r\n filterStyle.find((s) => s.geometryType === 'Line') ||\r\n filterStyle.find((s) => s.geometryType === 'Polygon'))\r\n );\r\n }\r\n\r\n private pointStyle2pointType(pointStyle) {\r\n let pointType;\r\n if (pointStyle.points === 3) {\r\n pointType = 'Triangle';\r\n } else if (pointStyle.points === 4) {\r\n pointType = pointStyle.radius2 === 0 ? 'Cross' : 'Square';\r\n } else if (pointStyle.points === 5) {\r\n pointType = 'Star';\r\n } else {\r\n pointType = 'Point';\r\n }\r\n return pointType;\r\n }\r\n\r\n private styleFromEditorStyles(legendStyles, sldStyles) {\r\n let pointStyle = legendStyles.style.find((s) => s.geometryType === 'Point');\r\n if (pointStyle) {\r\n if (pointStyle.icon) {\r\n sldStyles.push({\r\n name: pointStyle.label ? pointStyle.label : 'Point',\r\n type: 'Icon',\r\n externalGraphic: pointStyle.icon.src,\r\n fillOpacity: pointStyle.icon.opacity,\r\n });\r\n } else {\r\n const label = pointStyle.label;\r\n pointStyle = pointStyle.image\r\n ? pointStyle.image\r\n : pointStyle.regularShape;\r\n const pointType = this.pointStyle2pointType(pointStyle);\r\n sldStyles.push(this.convertStyle(pointStyle, pointType, label));\r\n }\r\n }\r\n const lineStyle = legendStyles.style.find((s) => s.geometryType === 'Line');\r\n const polygonStyle = legendStyles.style.find(\r\n (s) => s.geometryType === 'Polygon'\r\n );\r\n if (lineStyle) {\r\n sldStyles.push(this.convertStyle(lineStyle, 'Line', lineStyle.label));\r\n }\r\n if (polygonStyle) {\r\n sldStyles.push(\r\n this.convertStyle(polygonStyle, 'Polygon', polygonStyle.label)\r\n );\r\n }\r\n return sldStyles;\r\n }\r\n\r\n private filterFromEditorStyles(legendStyles, sldStyles) {\r\n for (const filter of legendStyles.filter) {\r\n const filterStyles = [];\r\n let pointStyle = filter.style.find((s) => s.geometryType === 'Point');\r\n if (pointStyle) {\r\n let pointType;\r\n if (pointStyle.icon) {\r\n pointType = 'Icon';\r\n filterStyles.push({\r\n name: 'Point',\r\n type: 'Icon',\r\n externalGraphic: pointStyle.icon.src,\r\n fillOpacity: pointStyle.icon.opacity,\r\n });\r\n } else {\r\n pointStyle = pointStyle.image\r\n ? pointStyle.image\r\n : pointStyle.regularShape;\r\n pointType = this.pointStyle2pointType(pointStyle);\r\n filterStyles.push(this.convertStyle(pointStyle, pointType));\r\n }\r\n }\r\n const lineStyle = filter.style.find((s) => s.geometryType === 'Line');\r\n const polygonStyle = filter.style.find(\r\n (s) => s.geometryType === 'Polygon'\r\n );\r\n if (lineStyle) {\r\n filterStyles.push(this.convertStyle(lineStyle, 'Line'));\r\n }\r\n if (polygonStyle) {\r\n filterStyles.push(this.convertStyle(polygonStyle, 'Polygon'));\r\n }\r\n sldStyles.push({ filterName: filter.name, filterStyles });\r\n }\r\n return sldStyles;\r\n }\r\n\r\n private otherStyles(legendStyles, sldStyles) {\r\n let defaultStyleExists = false;\r\n for (const legendStyle of legendStyles) {\r\n if (legendStyle.isDefault) {\r\n defaultStyleExists = true;\r\n break;\r\n }\r\n }\r\n\r\n for (const legendStyle of legendStyles) {\r\n if (defaultStyleExists && !legendStyle.isDefault) {\r\n // If there are default styles defined and this isn't one, skip to the next iteration. If !defaultStyleExists, assume all default\r\n continue;\r\n }\r\n\r\n const symbolizerObj = this.getSldSymbolizerObject(legendStyle);\r\n const typeStyle = this.getSldTypeStyle(legendStyle, symbolizerObj);\r\n const sldStyle: ISldStyle = {\r\n type: typeStyle,\r\n subtype: this.getSldSubTypeStyle(symbolizerObj),\r\n fontColor: symbolizerObj?.fontColor,\r\n fontFamily: symbolizerObj?.fontFamily,\r\n fontSize: symbolizerObj?.fontSize,\r\n fontStyle: symbolizerObj?.fontStyle,\r\n fontWeight: symbolizerObj?.fontWeight,\r\n ...this.getSldFillColorAndOpacity(legendStyle),\r\n ...this.getSldStrokeColorAndOpacity(legendStyle),\r\n strokeWidth: this.getSldWidth(legendStyle),\r\n strokeDashStyle: this.getDashStyle(symbolizerObj),\r\n name: legendStyle.rule.name,\r\n pointRadius: this.getSldPointRadius(legendStyle, symbolizerObj),\r\n externalGraphic: this.getExternalGraphic(symbolizerObj),\r\n points: this.getSldPoints(symbolizerObj, typeStyle),\r\n };\r\n sldStyles.push(sldStyle);\r\n }\r\n return sldStyles;\r\n }\r\n\r\n private getExternalGraphic(symbolizerObj) {\r\n let externalGraphic = '';\r\n if (symbolizerObj.externalGraphic) {\r\n externalGraphic = symbolizerObj.externalGraphic;\r\n }\r\n return externalGraphic;\r\n }\r\n\r\n private getSldSymbolizerObject(legendStyle) {\r\n let symbolizerObj;\r\n if (Object.prototype.hasOwnProperty.call(legendStyle.rule.symbolizer, 'Point' )) {\r\n symbolizerObj = legendStyle.rule.symbolizer.Point;\r\n }\r\n if (Object.prototype.hasOwnProperty.call(legendStyle.rule.symbolizer, 'Line' )) {\r\n symbolizerObj = legendStyle.rule.symbolizer.Line;\r\n }\r\n if (Object.prototype.hasOwnProperty.call(legendStyle.rule.symbolizer, 'Polygon' )) {\r\n symbolizerObj = legendStyle.rule.symbolizer.Polygon;\r\n }\r\n return symbolizerObj;\r\n }\r\n\r\n private getSldTypeStyle(legendStyle, symbolizerObj) {\r\n let typeStyle;\r\n if (Object.prototype.hasOwnProperty.call(legendStyle.rule.symbolizer, 'Point' )) {\r\n if (symbolizerObj) {\r\n typeStyle = this.getPointTypeStyle(symbolizerObj);\r\n }\r\n }\r\n if (Object.prototype.hasOwnProperty.call(legendStyle.rule.symbolizer, 'Line' )) {\r\n typeStyle = 'Line';\r\n } \r\n if (Object.prototype.hasOwnProperty.call(legendStyle.rule.symbolizer, 'Polygon' )) {\r\n typeStyle = 'Polygon';\r\n }\r\n return typeStyle;\r\n }\r\n\r\n private getSldSubTypeStyle(symbolizerObj) {\r\n return symbolizerObj?.label ? 'Label' : undefined;\r\n }\r\n\r\n private getSldPointRadius(legendStyle, symbolizerObj) {\r\n return Object.prototype.hasOwnProperty.call(legendStyle.rule.symbolizer, 'Point' ) && symbolizerObj\r\n ? symbolizerObj.pointRadius\r\n : 7;\r\n }\r\n\r\n private getSldFillColorAndOpacity(legendStyle) {\r\n let fillColor = 'none';\r\n let styleFillColor = 'none';\r\n let fillOpacity = 'none';\r\n if (legendStyle.style.getFill() !== null) {\r\n styleFillColor = legendStyle.style.getFill().getColor();\r\n if (Array.isArray(styleFillColor)) {\r\n fillColor =\r\n 'rgb(' +\r\n styleFillColor[0] +\r\n ', ' +\r\n styleFillColor[1] +\r\n ', ' +\r\n styleFillColor[2] +\r\n ')';\r\n fillOpacity = styleFillColor[3];\r\n } else {\r\n fillColor = styleFillColor;\r\n fillOpacity = '1';\r\n }\r\n }\r\n if (Object.prototype.hasOwnProperty.call(legendStyle.rule.symbolizer, 'Point' )) {\r\n const symbolizerObj = legendStyle.rule.symbolizer.Point;\r\n if (symbolizerObj) {\r\n if (legendStyle.style.getStroke() === null) {\r\n fillColor = symbolizerObj.fillColor;\r\n fillOpacity = symbolizerObj.fillOpacity;\r\n }\r\n }\r\n }\r\n return {\r\n fill: fillColor,\r\n fillOpacity,\r\n };\r\n }\r\n\r\n private getSldStrokeColorAndOpacity(legendStyle) {\r\n let styleStrokeColor = 'none';\r\n let strokeColor = 'none';\r\n let strokeOpacity = 'none';\r\n if (legendStyle.style.getStroke() !== null) {\r\n styleStrokeColor = legendStyle.style.getStroke().getColor();\r\n if (Array.isArray(styleStrokeColor)) {\r\n strokeColor =\r\n 'rgb(' +\r\n styleStrokeColor[0] +\r\n ', ' +\r\n styleStrokeColor[1] +\r\n ', ' +\r\n styleStrokeColor[2] +\r\n ')';\r\n strokeOpacity = styleStrokeColor[3];\r\n } else {\r\n strokeColor = styleStrokeColor;\r\n strokeOpacity = '1';\r\n }\r\n }\r\n return {\r\n stroke: strokeColor,\r\n strokeOpacity,\r\n };\r\n }\r\n\r\n private getSldWidth(legendStyle) {\r\n return legendStyle.style.getStroke() !== null\r\n ? legendStyle.style.getStroke().getWidth()\r\n : 'none';\r\n }\r\n\r\n private getSldPoints(symbolizerObj, typeStyle) {\r\n return typeStyle == 'Star'\r\n ? this.calculateStarPoints(\r\n 10,\r\n 10,\r\n 5,\r\n symbolizerObj.pointRadius,\r\n symbolizerObj.pointRadius / 2.0\r\n )\r\n : undefined;\r\n }\r\n\r\n private getDashStyle(symbolizerObj) {\r\n return Object.prototype.hasOwnProperty.call(symbolizerObj, 'strokeDashstyle' )\r\n ? symbolizerObj.strokeDashstyle\r\n : '';\r\n }\r\n\r\n private getPointTypeStyle(symbolizerObj) {\r\n let typeStyle = '';\r\n switch (symbolizerObj.graphicName) {\r\n case 'triangle':\r\n case 'triangel':\r\n typeStyle = 'Triangle';\r\n break;\r\n case 'square':\r\n typeStyle = 'Square';\r\n break;\r\n case 'star':\r\n typeStyle = 'Star';\r\n break;\r\n case 'cross':\r\n typeStyle = 'Cross';\r\n break;\r\n case 'x':\r\n typeStyle = 'X';\r\n break;\r\n default:\r\n typeStyle = 'Point';\r\n }\r\n return typeStyle;\r\n }\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Component({\r\n selector: 'lib-protected-image',\r\n template: `\r\n \"tegnforklaring\"\r\n `\r\n})\r\nexport class ProtectedImageComponent implements OnInit {\r\n @Input() u: { url: string };\r\n imageUrl: string;\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private http: HttpClient) { }\r\n\r\n ngOnInit() {\r\n if (this.u && this.u.url) {\r\n this.fetchImage(this.u.url).then(dataUrl => {\r\n this.imageUrl = dataUrl;\r\n }).catch(error => {\r\n console.error('Error fetching image', error);\r\n });\r\n }\r\n }\r\n\r\n fetchImage(url: string): Promise {\r\n const kcToken = this.commonService.getKcToken()\r\n const headers = new HttpHeaders({\r\n 'Authorization': 'Bearer ' + kcToken // Replace with your actual token\r\n });\r\n\r\n return this.http.get(url, { headers, responseType: 'blob' }).toPromise().then(blob => {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onloadend = () => resolve(reader.result as string);\r\n reader.onerror = reject;\r\n reader.readAsDataURL(blob);\r\n });\r\n });\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n T\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{ style.name ? (style.name | translate) : 'Navn mangler' }}\r\n
    \r\n
    ","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-style-legend',\r\n templateUrl: './style-legend.component.html',\r\n styleUrls: ['./style-legend.component.scss', '../isy-layers.component.scss'],\r\n})\r\nexport class StyleLegendComponent {\r\n @Input() style: any;\r\n @Input() isFilterLegends: boolean;\r\n @Input() defIndex: number;\r\n\r\n\r\n /* THIS WAS USED TO CALCULATE STAR COORDINATES.. NOT IN USE\r\n getStarPath(currentStyle) {\r\n const radius = 10;\r\n const height = 30;\r\n const width = 40;\r\n let starPath = \"M \"\r\n for (let angle = 180; angle < 540; angle += 72) {\r\n let x = radius * Math.sin(angle * Math.PI / 180) + width / 2;\r\n let y = radius * Math.cos(angle * Math.PI / 180) + height / 2;\r\n\r\n let x1 = (radius / 2) * Math.sin((angle + 36) * Math.PI / 180) + width / 2;\r\n let y1 = (radius / 2) * Math.cos((angle + 36) * Math.PI / 180) + height / 2;\r\n starPath += `${x},${y} ${x1},${y1} `;\r\n }\r\n starPath += \"Z\";\r\n console.log(starPath)\r\n return starPath;\r\n }*/\r\n\r\n getLabelStyle(pointObject): string {\r\n if (pointObject?.subtype) {\r\n let styleobject =\r\n 'text-shadow: 2px 2px 0px #ffffff, -2px -2px 0px #ffffff, -2px 2px 0px #ffffff, 2px -2px 0px #ffffff;';\r\n if (pointObject.fontColor) {\r\n styleobject += 'color:' + pointObject.fontColor + ';';\r\n }\r\n if (pointObject.fontFamily) {\r\n styleobject += 'font-family:' + pointObject.fontFamily + ';';\r\n }\r\n // legend is a bit smaller...\r\n // if (pointObject.fontSize){\r\n // styleobject += \"font-size:\" + pointObject.fontSize + \"px;\";\r\n // }\r\n if (pointObject.fontStyle) {\r\n styleobject += 'font-style:' + pointObject.fontStyle + ';';\r\n }\r\n if (pointObject.fontWeight) {\r\n styleobject += 'font-weight:' + pointObject.fontWeight + ';';\r\n }\r\n return styleobject;\r\n }\r\n return '';\r\n }\r\n}\r\n","import * as FileSaver from 'file-saver';\r\n\r\n// tslint:disable:max-line-length\r\nconst mapping = {\r\n knr: { header: 'Knr', value: (n) => safeAccess(() => n?.knr, ''), isOwnerField: false },\r\n gnr: { header: 'Gnr', value: (n) => safeAccess(() => n?.gnr, ''), isOwnerField: false },\r\n bnr: { header: 'Bnr', value: (n) => safeAccess(() => n?.bnr, ''), isOwnerField: false },\r\n fnr: { header: 'Fnr', value: (n) => safeAccess(() => n?.fnr, ''), isOwnerField: false },\r\n snr: { header: 'Snr', value: (n) => safeAccess(() => n?.snr, ''), isOwnerField: false },\r\n bruksnavn: { header: 'Bruksnavn', value: (n) => safeAccess(() => n?.bruksnavn?.trim(), ''), isOwnerField: false },\r\n adresser: {\r\n header: 'Adresse(r)',\r\n value: (n) => safeAccess(() => n?.addresser?.map(adr => `${adr?.navn}, ${adr?.postnummer} ${adr?.poststed}`).join(', '), ''),\r\n isOwnerField: false\r\n },\r\n eierNavn: { header: 'Eiers navn', value: (o) => safeAccess(() => `${o?.navn}${o?.erDød ? ' (død)' : ''}`, ''), isOwnerField: true },\r\n eierAdresse: {\r\n header: 'Eiers adresse',\r\n value: (o) => safeAccess(() => `${o?.postAdresse?.adresselinje2}, ${o?.postAdresse?.postnummer} ${o?.postAdresse?.poststed}`, ''),\r\n isOwnerField: true\r\n },\r\n eierRolle: { header: 'Eiers rolle', value: (o) => safeAccess(() => o?.OwnerDescription, ''), isOwnerField: true },\r\n eierGateadresse: { header: 'Eiers gateadresse', value: (o) => safeAccess(() => o?.postAdresse?.adresselinje2, ''), isOwnerField: true },\r\n eierPostnr: {\r\n header: 'Eiers postnummer',\r\n value: (o) => safeAccess(() => String('0000' + o?.postAdresse?.postnummer).slice(-4), ''),\r\n isOwnerField: true\r\n },\r\n eierPoststed: { header: 'Eiers poststed', value: (o) => safeAccess(() => o?.postAdresse?.poststed, ''), isOwnerField: true },\r\n eierPnr: { header: 'Eiers personnummer', value: (o) => safeAccess(() => o?.personnummer, ''), isOwnerField: true },\r\n eierOrgnr: { header: 'Eiers organisasjonsnummer', value: (o) => safeAccess(() => o?.organisasjonsnummer, ''), isOwnerField: true },\r\n};\r\n\r\nconst mappingHT = {\r\n knr: { header: 'Knr', value: (n) => n.Knr, isOwnerField: false },\r\n gnr: { header: 'Gnr', value: (n) => n.Gnr, isOwnerField: false },\r\n bnr: { header: 'Bnr', value: (n) => n.Bnr, isOwnerField: false },\r\n fnr: { header: 'Fnr', value: (n) => n.Fnr, isOwnerField: false },\r\n snr: { header: 'Snr', value: (n) => n.Snr, isOwnerField: false },\r\n bruksnavn: { header: 'Bruksnavn', value: (n) => n.Bruksnavn?.trim() || '', isOwnerField: false },\r\n adresser: { header: 'Adresse(r)', value: (n) => n.Addresser?.map(adr => `${adr.Name}, ${adr.ZipCode} ${adr.PostalCode}`).join(', ') || '', isOwnerField: false },\r\n eierNavn: { header: 'Eiers navn', value: (o) => `${o.Name}${o.IsDead ? ' (død)' : ''}`, isOwnerField: true },\r\n eierAdresse: { header: 'Eiers adresse', value: (o) => `${o.Address.Name}, ${o.Address.ZipCode} ${o.Address.PostalCode}`, isOwnerField: true },\r\n eierRolle: { header: 'Eiers rolle', value: (o) => o.OwnerDescription, isOwnerField: true },\r\n eierGateadresse: { header: 'Eiers gateadresse', value: (o) => o.Address.Name, isOwnerField: true },\r\n eierPostnr: { header: 'Eiers postnummer', value: (o) => String('0000' + o.Address.ZipCode).slice(-4), isOwnerField: true },\r\n eierPoststed: { header: 'Eiers poststed', value: (o) => o.Address.PostalCode || '', isOwnerField: true },\r\n eierPnr: { header: 'Eiers personnummer', value: (o) => o.Personnummer || '', isOwnerField: true },\r\n eierOrgnr: { header: 'Eiers organisasjonsnummer', value: (o) => o.OrgNummer || '', isOwnerField: true },\r\n};\r\n\r\n// Helper function to handle errors, if any of the properties are undefined so that the application does not crash, default value is returned\r\nconst safeAccess = (fn, defaultValue) => {\r\n try {\r\n return fn();\r\n } catch (error) {\r\n console.error(\"Error accessing property:\", error);\r\n return defaultValue;\r\n }\r\n};\r\n\r\nexport const IdportenOwnerList2CSV = (neighbors: any[], title: string, neighborlistformat?: string[], mainProperty?: any): void => {\r\n if (!neighbors) {\r\n return;\r\n }\r\n\r\n const order = getOrder(neighborlistformat);\r\n const headers = getHeaders(order);\r\n const data = parseNeighbors(neighbors, order);\r\n if (mainProperty) {\r\n const mainPropertyData = parseHovedTeig(mainProperty, order);\r\n\r\n const mainPropertyExists = data.some(item =>\r\n item[0] === mainPropertyData[0][0] &&\r\n item[1] === mainPropertyData[0][1] &&\r\n item[2] === mainPropertyData[0][2]\r\n );\r\n \r\n if (!mainPropertyExists) {\r\n data.unshift(mainPropertyData[0]);\r\n }\r\n }\r\n\r\n const csv = convertToCsv([headers, ...data]);\r\n downloadCsv(csv, title);\r\n};\r\n\r\nconst getOrder = (format?: string[]): string[] => {\r\n // Ensure that only valid keys are present in neighborlistcsvformats\r\n const filteredOrder = format?.filter(a => Object.keys(mapping).includes(a));\r\n if (filteredOrder && filteredOrder.length > 0) {\r\n return filteredOrder;\r\n }\r\n return Object.keys(mapping);\r\n};\r\n\r\nconst getHeaders = (order: string[]): string[] => {\r\n return order.map(key => mapping[key].header).filter(Boolean);\r\n};\r\n\r\nconst parseNeighbors = (neighbors: any[], order: string[]): any[] => {\r\n return neighbors.flatMap(neighbor => parseNeighbor(neighbor, order));\r\n};\r\n\r\nconst parseNeighbor = (neighbor: any, order: string[]): any[] => {\r\n let neighborList = [];\r\n if (neighbor.eiere == null) {\r\n neighborList = [order.map(a => !mapping[a].isOwnerField ? mapping[a].value(neighbor) : '')];\r\n } else {\r\n neighborList = neighbor.eiere.map(owner =>\r\n order.map(a => mapping[a].isOwnerField ? mapping[a].value(owner) : mapping[a].value(neighbor))\r\n );\r\n }\r\n return neighborList;\r\n};\r\n\r\nconst parseHovedTeig = (neighbor: any, order: string[]): any[] => {\r\n let neighborList = [];\r\n if (neighbor.Owners == null) {\r\n neighborList = [order.map(a => !mappingHT[a].isOwnerField ? mappingHT[a].value(neighbor) : '')];\r\n } else {\r\n neighborList = neighbor.Owners.map(owner =>\r\n order.map(a => mappingHT[a].isOwnerField ? mappingHT[a].value(owner) : mappingHT[a].value(neighbor))\r\n );\r\n }\r\n return neighborList;\r\n};\r\n\r\nconst convertToCsv = (data: any[][]): string => {\r\n return data.map(row => row.join(';')).join('\\r\\n');\r\n};\r\n\r\nconst downloadCsv = (csvContent: string, title: string): void => {\r\n const blob = new Blob([`\\ufeff${csvContent}`], { type: 'text/csv' });\r\n FileSaver.saveAs(blob, title);\r\n};\r\n\r\n","import { Component, OnInit, Input } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { IKommuneInfo } from '@isygis/isy-configs';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-id-porten-print-neighbor',\r\n templateUrl: './isy-id-porten-print-neighbor.component.html',\r\n styleUrls: ['./isy-id-porten-print-neighbor.component.scss'],\r\n})\r\nexport class IsyIdPortenPrintNeighborComponent implements OnInit {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription = new Subscription();\r\n @Input() data: any;\r\n projectConfig$ = this.mapService.projectConfig$;\r\n projectIcon$ = this.mapService.projectConfig$.pipe(\r\n map((projectConfig: IProjectConfig) => {\r\n if (projectConfig && projectConfig.config.project.headericon) {\r\n const headerIcon = projectConfig.config.project.headericon;\r\n if (headerIcon.includes('https://')) {\r\n return headerIcon;\r\n }\r\n const url = this.mapService.getHeaderIconBaseUrl();\r\n return url + headerIcon;\r\n }\r\n return undefined;\r\n })\r\n );\r\n\r\n constructor(private mapService: IsyMapService) {}\r\n\r\n vm$ = combineLatest([this.mapService.kommuneInfoWithVaapenUrl$, this.projectIcon$]).pipe(\r\n map(([kommuneInfoWithVaapenUrl, projectIcon]: [IKommuneInfo, string]) => ({\r\n kommuneInfo: kommuneInfoWithVaapenUrl,\r\n kommunenavn: kommuneInfoWithVaapenUrl\r\n ? kommuneInfoWithVaapenUrl.kommunenavn\r\n : undefined,\r\n showHeraldry: true,\r\n projectIcon,\r\n })),\r\n tap((result) => console.log('POSITION INFO: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n console.log('DATA: ', this.data);\r\n }\r\n\r\n printPreview(): void {\r\n window.print();\r\n }\r\n}\r\n","
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{vm.kommuneInfo.kommunenavn}} / {{vm.kommuneInfo.fylkesnavn}} \r\n \r\n
    \r\n \"\"/\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n Hovedeiendom\r\n

    \r\n
    \r\n
    \r\n
    Komm-Gnr/Bnr/Fnr/Snr
    \r\n
    {{data?.feature?.knr + '-' + data?.feature?.gnr + '/' +\r\n data.feature.bnr + '/' +\r\n (data?.feature?.fnr === null ? 0 : data?.feature?.fnr) + '/' +\r\n (data?.feature?.snr === null ? 0 : data?.feature?.snr)}}\r\n
    \r\n
    \r\n
    \r\n
    Bruksnavn
    \r\n
    {{(data?.feature?.bruksnavn)}}\r\n
    \r\n
    \r\n
    \r\n
    Adresse(r)
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{(address.navn ? address.navn : '') + (address.postnummer ? ', ' + address.postnummer: '') + (address.poststed ? ' ' + address.poststed: '') }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Naboeiendommer\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    Gnr/Bnr/Fnr/Snr
    \r\n
    {{neighbor?.gnr + '/' + neighbor?.bnr + '/' +\r\n (neighbor?.fnr === null ? 0 : neighbor?.fnr) + '/' +\r\n (neighbor?.snr === null ? 0 : neighbor?.snr)}}\r\n
    \r\n
    \r\n
    \r\n
    Bruksnavn
    \r\n
    {{(neighbor.bruksnavn === null ? '' : neighbor.bruksnavn)}}
    \r\n
    \r\n
    \r\n
    Adresse(r)
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{(address.navn ? address.navn : '') + (address.postnummer ? ', ' + address.postnummer: '') + (address.poststed ? ' ' + address.poststed: '') }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Eiere
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Eiere ikke tilgjengelig\r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n
    \r\n
    \r\n {{eiere.navn}}\r\n
    \r\n ({{eiere.organisasjonsnummer}})\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {{(eiere?.postAdresse?.adresselinje2 ? eiere.postAdresse.adresselinje2 : '') + (eiere?.postAdresse?.adresselinje3 ? ', ' + eiere.postAdresse.adresselinje3 : '')}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport {\r\n ELogin, ESessionStorageId\r\n} from '@isygis/isy-configs';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyLoginService } from '../isy-login.service';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyIdPortenService } from './isy-id-porten.service';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Component({\r\n selector: 'lib-isy-id-porten',\r\n templateUrl: './isy-id-porten.component.html',\r\n styleUrls: ['./isy-id-porten.component.scss', '../isy-login.component.scss'],\r\n})\r\nexport class IsyIdPortenComponent implements OnInit, OnDestroy {\r\n subscription = new Subscription();\r\n loggedMe = false;\r\n showLoggedMeSpinner = true;\r\n // activeLoginType;\r\n constructor(\r\n private loginService: IsyLoginService,\r\n private sessionStorageService: SessionStorageService,\r\n private idPortenService: IsyIdPortenService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n matrikkelPersonMe$ = this.idPortenService.matrikkelPersonMe$;\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.matrikkelPersonMe$.subscribe((value) => {\r\n if (value === false) {\r\n this.logoutIdPorten();\r\n } else {\r\n this.loggedMe = true;\r\n this.showLoggedMeSpinner = false;\r\n this.sessionStorageService.store(ELogin.USERNAME, value.navn);\r\n this.sessionStorageService.store(ELogin.USERISLOGGEDIN, true);\r\n }\r\n // console.log('matrikkelPersonMe: ', value);\r\n })\r\n );\r\n\r\n this.sessionStorageService.observe(ELogin.USERISLOGGEDIN).subscribe(() => {\r\n const userName = this.sessionStorageService.retrieve(ELogin.USERNAME);\r\n if (userName === null) {\r\n this.logoutIdPorten();\r\n }\r\n });\r\n\r\n // this.subscription.add(\r\n // this.commonService.idLogginActive$.subscribe(value => {\r\n // if (value === false) {\r\n // this.logoutIdPorten();\r\n // }\r\n // })\r\n // );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.sessionStorageService.clear(ESessionStorageId.SIDENAVOPEN);\r\n this.sessionStorageService.clear(ESessionStorageId.ACTIVENAVBAR);\r\n }\r\n\r\n logoutIdPorten(): void {\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.sessionStorageService.clear(ELogin.RESOURCES);\r\n this.sessionStorageService.clear(ELogin.USERNAME);\r\n this.sessionStorageService.clear(ELogin.USERISLOGGEDIN);\r\n this.sessionStorageService.clear(ELogin.IDPORTENPOSTREDIRECTURL);\r\n this.loginService.setLoginParam();\r\n // this.oidcSecurityService.logoff();\r\n this.loginService.setActiveLoginType(undefined);\r\n this.loginService.loginInProgess(false);\r\n this.loggedMe = false;\r\n this.commonService.setIdLogginActive(false);\r\n this.commonService.setIdPortenUsed(false);\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n\r\n \r\n\r\n
    \r\n \r\n
    ","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, combineLatest } from 'rxjs';\r\nimport { catchError, filter, switchMap } from 'rxjs/operators';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IMatrikkelenhet, IPersonMe } from './idporten';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { IEnvironment } from '@isygis/isy-configs';\r\nimport { IConfigJson } from '@isygis/isymap-config';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyIdPortenService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private toasterService: IsyToasterService,\r\n private translateService: IsyTranslateService,\r\n private commonService: IsyCommonService,\r\n private mapEmitterService: IsyMapEmitterService\r\n ) {}\r\n\r\n config$ = this.mapEmitterService.configLoadEmitter$;\r\n activeEnvironment$ = this.commonService.activeEnvironment$;\r\n\r\n private matrikkelenhetDataAction = new BehaviorSubject(\r\n undefined\r\n );\r\n\r\n matrikkelPersonMe$ = combineLatest([\r\n this.config$,\r\n this.activeEnvironment$,\r\n ]).pipe(\r\n filter((value) => !!(value[0] && value[1])), // check that inputs are defined\r\n switchMap(([config, activeEnvironment]: [IConfigJson, IEnvironment]) => {\r\n const url = activeEnvironment.useInMemoryDatabase\r\n ? 'api/personMe'\r\n : config.externalServices.idporten + 'Matrikkel/Person/Me';\r\n return this.httpClient.get(url, { withCredentials: true }).pipe(\r\n filter((value) => !!value),\r\n // tap(console.table),\r\n catchError(this.handleErrorLoginMeWithPromise.bind(this))\r\n );\r\n })\r\n );\r\n\r\n matrikkelenhetMe$ = combineLatest([\r\n this.config$,\r\n this.activeEnvironment$,\r\n ]).pipe(\r\n filter((value) => !!(value[0] && value[1])), // check that inputs are defined\r\n switchMap(([config, activeEnvironment]: [IConfigJson, IEnvironment]) => {\r\n const url = activeEnvironment.useInMemoryDatabase\r\n ? 'api/matrikkelenhetMe'\r\n : config.externalServices.idporten + 'Matrikkel/Matrikkelenhet/Me';\r\n return this.httpClient.get(url, { withCredentials: true }).pipe(\r\n // tap(console.table),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n })\r\n );\r\n\r\n matrikkelenhetNaboliste$ = combineLatest([\r\n this.config$,\r\n this.activeEnvironment$,\r\n this.matrikkelenhetDataAction,\r\n ]).pipe(\r\n filter((value) => !!(value[0] && value[1] && value[2])), // check that inputs are defined\r\n switchMap(\r\n ([config, activeEnvironment, matrikkelenhetDataAction]: [\r\n IConfigJson,\r\n IEnvironment,\r\n IMatrikkelenhet\r\n ]) => {\r\n const url = activeEnvironment.useInMemoryDatabase\r\n ? 'api/matrikkelenhetNaboliste'\r\n : config.externalServices.idporten +\r\n 'Matrikkel/Matrikkelenhet/' +\r\n matrikkelenhetDataAction.knr +\r\n '/' +\r\n matrikkelenhetDataAction.gnr +\r\n '/' +\r\n matrikkelenhetDataAction.bnr +\r\n '/' +\r\n matrikkelenhetDataAction.fnr +\r\n '/' +\r\n matrikkelenhetDataAction.snr +\r\n '/Naboliste';\r\n return this.httpClient.get(url , { withCredentials: true }).pipe(\r\n // tap(console.table),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n }\r\n )\r\n );\r\n\r\n setMatrikkelenhetData(data: IMatrikkelenhet): void {\r\n this.matrikkelenhetDataAction.next(data);\r\n }\r\n\r\n private handleErrorLoginMeWithPromise(err): Promise {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `${this.translateService.instant(\r\n 'backend_return_code'\r\n )} ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n this.toasterService.error(\r\n errorMessage,\r\n this.translateService.instant('error')\r\n );\r\n return Promise.resolve();\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `${this.translateService.instant(\r\n 'backend_return_code'\r\n )} ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n this.toasterService.error(\r\n errorMessage,\r\n this.translateService.instant('error')\r\n );\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { fadeIn, fadeOut } from '@isygis/isy-animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyIdPortenService } from '../isy-id-porten.service';\r\nimport { BehaviorSubject, combineLatest, Observable, Subscription, throwError } from 'rxjs';\r\nimport { catchError, map, mergeMap } from 'rxjs/operators';\r\nimport { IMatrikkelenhet, ITeigFeature } from '../idporten';\r\nimport {\r\n GeoJsonUtilsService,\r\n MapLibNgService,\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n} from '@isygis/isy-map';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyIdPortenPrintNeighborComponent } from '../isy-id-porten-print-neighbor/isy-id-porten-print-neighbor.component';\r\nimport { IdportenOwnerList2CSV } from '../idporten-neighborlist-csv';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ICadastre } from '@isygis/isy-configs';\r\n\r\n\r\n@Component({\r\n selector: 'lib-isy-user-properties',\r\n templateUrl: './isy-user-properties.component.html',\r\n styleUrls: ['./isy-user-properties.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n // pageAnimation\r\n trigger('fadeOut', fadeOut()),\r\n trigger('fadeIn', fadeIn(':enter')),\r\n ],\r\n})\r\nexport class IsyUserPropertiesComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n mainPropertyIsOpen = false;\r\n\r\n drawIsActivated = false;\r\n deleteFeature = false;\r\n features;\r\n deleteFeatures = false;\r\n // modify = false;\r\n selectedFeatureId = undefined;\r\n nabolisteFeatures: ITeigFeature[] = [];\r\n neighbors: IMatrikkelenhet[] = [];\r\n\r\n subscription = new Subscription();\r\n drawing = {\r\n type: 'FeatureCollection',\r\n features: [],\r\n };\r\n\r\n showSpinner = true;\r\n showSpinnerNaboliste = true;\r\n mainProperty;\r\n private propertyInfoAction = new BehaviorSubject(undefined);\r\n propertyInfoAction$ = this.propertyInfoAction.asObservable();\r\n\r\n constructor(\r\n private idPortenService: IsyIdPortenService,\r\n private geoJsonUtilsService: GeoJsonUtilsService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private bladeService: IsyBladeService,\r\n private mapService: IsyMapService,\r\n private httpClient: HttpClient,\r\n ) {}\r\n\r\n matrikkelenhetMe$ = this.idPortenService.matrikkelenhetMe$.pipe(\r\n map((matrikkelenhetMe: IMatrikkelenhet[]) => {\r\n matrikkelenhetMe.forEach((m) => {\r\n m.isOpen = false;\r\n m.nabolisteIsOpen = false;\r\n });\r\n this.showSpinner = false;\r\n return matrikkelenhetMe;\r\n })\r\n );\r\n matrikkelenhetNaboliste$ = this.idPortenService.matrikkelenhetNaboliste$.pipe(\r\n map((matrikkelenhetNaboliste: IMatrikkelenhet[]) => {\r\n // const drawing = {\r\n // type: 'FeatureCollection',\r\n // features: []\r\n // };\r\n this.neighbors = matrikkelenhetNaboliste;\r\n matrikkelenhetNaboliste.forEach((m) => {\r\n m.teiger.forEach((t) => {\r\n t.feature.properties['style'] = {\r\n fill: {\r\n color: 'rgba(0, 0, 160, 0.2)',\r\n },\r\n stroke: {\r\n color: 'green',\r\n width: 2,\r\n },\r\n };\r\n this.nabolisteFeatures.push(t.feature);\r\n this.drawing.features.push(t.feature);\r\n });\r\n });\r\n console.log('DRAWING XXX: ', this.drawing);\r\n this.geoJsonUtilsService.uploadGeoJson(JSON.stringify(this.drawing));\r\n this.showSpinnerNaboliste = false;\r\n return matrikkelenhetNaboliste;\r\n })\r\n );\r\n\r\n vm$ = combineLatest([this.matrikkelenhetMe$]).pipe(\r\n map(([matrikkelenhetMe]: [IMatrikkelenhet[]]) => ({\r\n matrikkelenhetMe,\r\n }))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapEmitterService.drawFeatureEndEmitter$.subscribe((featureJson) => {\r\n if (featureJson) {\r\n this.features = featureJson;\r\n // SET EXTENT\r\n const extent = this.mapLibNgService\r\n .map()\r\n .getExtentForLayerById('drawing');\r\n console.log('ExtentTest: ', extent);\r\n this.mapLibNgService.map().setExtent(extent);\r\n // SET EXTENT\r\n }\r\n })\r\n );\r\n this.subscription.add(\r\n this.getMainProperty().subscribe((data) => {\r\n this.mainProperty = data;\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.mapLibNgService.map().activateHoverInfo();\r\n this.mapEmitterService.emitDrawFeatureEnd(undefined);\r\n this.deleteDraw(true);\r\n }\r\n \r\n // Getting hovedteig\r\n getMainProperty(): Observable {\r\n return combineLatest([this.propertyInfoAction$]).pipe(\r\n mergeMap(([propertyInfo]: [ICadastre]) => {\r\n if (propertyInfo) {\r\n return this.httpClient\r\n .post(this.mapService.getProjectConfig().config.project.isyexternalapi +\r\n '/matrikkel' + '/findMatrikkelenhetForIdent', {\r\n instance: this.mapService.getMapConfig().instance,\r\n visadresser: true,\r\n eiendom: {\r\n knr: propertyInfo.komm,\r\n gnr: propertyInfo.gnr,\r\n bnr: propertyInfo.bnr,\r\n fnr: propertyInfo.fnr,\r\n snr: propertyInfo.snr,\r\n },\r\n })\r\n .pipe(\r\n map((result) => {\r\n const Matrikkelenheter = result['Matrikkelenheter'][0];\r\n // Update keys tolowercase\r\n // Matrikkelenheter = Object.keys(Matrikkelenheter).reduce((acc, key) => {\r\n // acc[key.toLowerCase()] = Matrikkelenheter[key];\r\n // return acc;\r\n // }, {});\r\n return Matrikkelenheter;\r\n }),\r\n catchError(this.handleError)\r\n );\r\n } else {\r\n return new Observable((observer) => observer.next(undefined));\r\n }\r\n })\r\n );\r\n }\r\n\r\n showMatrikkelEnhetMe(\r\n matrikkelenhet: IMatrikkelenhet,\r\n allMatrikkelEnhetMe: IMatrikkelenhet[]\r\n ): void {\r\n allMatrikkelEnhetMe.forEach((m) => {\r\n if (matrikkelenhet.id !== m.id) {\r\n m.nabolisteIsOpen = false;\r\n m.isOpen = false;\r\n }\r\n });\r\n matrikkelenhet.isOpen = !matrikkelenhet.isOpen;\r\n if (matrikkelenhet.isOpen) {\r\n // const drawing = {\r\n // type: 'FeatureCollection',\r\n // features: []\r\n // };\r\n // matrikkelenhetNaboliste.forEach(m => {\r\n matrikkelenhet.teiger.forEach((t) => {\r\n t.feature.properties = {\r\n style: {\r\n fill: {\r\n color: 'rgba(200,200,200,0.5)',\r\n },\r\n stroke: {\r\n color: 'rgba(255,0,0,1)',\r\n width: 5,\r\n },\r\n image: {\r\n radius: '13',\r\n fill: {\r\n color: 'rgba(200,200,200,0.5)',\r\n },\r\n },\r\n text: null,\r\n textSize: 0,\r\n },\r\n };\r\n this.drawing.features.push(t.feature);\r\n // const extent = this.mapLibNgService.map().getExtentForLayerById('drawing');\r\n // console.log('LayerTest: ', extent);\r\n // this.mapLibNgService.map().setExtent(extent);\r\n });\r\n // });\r\n // console.log('DRAWING XXX: ', drawing);\r\n this.geoJsonUtilsService.uploadGeoJson(JSON.stringify(this.drawing));\r\n } else {\r\n this.drawing.features = [];\r\n this.nabolisteFeatures = [];\r\n matrikkelenhet.nabolisteIsOpen = false;\r\n this.deleteDraw(true);\r\n }\r\n }\r\n\r\n setNabolisteData(result: IMatrikkelenhet): void {\r\n result.nabolisteIsOpen = !result.nabolisteIsOpen;\r\n if (result.nabolisteIsOpen) {\r\n this.showSpinnerNaboliste = true;\r\n this.idPortenService.setMatrikkelenhetData(result);\r\n this.propertyInfoAction.next({\r\n komm: result?.knr,\r\n gnr: result?.gnr.toString(),\r\n bnr: result?.bnr.toString(), \r\n fnr: result?.fnr.toString(),\r\n snr: result?.snr.toString(),\r\n });\r\n } else {\r\n this.nabolisteFeatures.forEach((f) => {\r\n this.selectedFeatureId = f.id;\r\n const findIndex = this.drawing.features.findIndex(\r\n (df) => df.id === f.id\r\n );\r\n this.drawing.features.splice(findIndex, 1);\r\n console.log('DELETE FEATURE');\r\n this.deleteDraw(false);\r\n });\r\n this.nabolisteFeatures = [];\r\n this.idPortenService.setMatrikkelenhetData(undefined);\r\n }\r\n }\r\n\r\n centerToNeighbor(neighbor: IMatrikkelenhet): void {\r\n const mapCenter = this.mapLibNgService.map().getCenter();\r\n let neighborCenter = neighbor.teiger[0].feature.properties.reppkt;\r\n neighborCenter = neighborCenter.substring(\r\n neighborCenter.indexOf('(') + 1,\r\n neighborCenter.lastIndexOf(')')\r\n );\r\n neighborCenter = neighborCenter.split(' ').map(Number);\r\n\r\n const transformCoord = this.mapLibNgService\r\n .map()\r\n .transformFromGeographic(neighborCenter, mapCenter.epsg);\r\n\r\n const showCenter = {\r\n lon: transformCoord[0],\r\n lat: transformCoord[1],\r\n zoom: 13,\r\n };\r\n\r\n this.mapLibNgService.setCenter(showCenter);\r\n }\r\n\r\n clearHighlitedNeighbor(): void {\r\n this.mapLibNgService.map().clearHighlightedFeatures();\r\n }\r\n\r\n showNeighborInMap(neighbor: IMatrikkelenhet): void {\r\n // this.mapLibNgService.map().hideMarker();\r\n // const mapCenter = this.mapLibNgService.map().getCenter();\r\n // let neighborCenter = neighbor.teiger[0].feature.properties.reppkt;\r\n // neighborCenter = neighborCenter.substring(\r\n // neighborCenter.indexOf('(') + 1,\r\n // neighborCenter.lastIndexOf(')'));\r\n // neighborCenter = neighborCenter.split(' ').map(Number);\r\n\r\n // const transformCoord = this.mapLibNgService.map().transformFromGeographic(neighborCenter, mapCenter.epsg);\r\n\r\n // const showCenter = {\r\n // lon: transformCoord[0],\r\n // lat: transformCoord[1],\r\n // zoom: 13\r\n // };\r\n\r\n // this.mapLibNgService.setCenter(showCenter);\r\n // this.mapLibNgService.map().showMarker(showCenter, STYLE);\r\n\r\n // // SET EXTENT\r\n // const extent = this.mapLibNgService.map().getExtentForLayerById('drawing');\r\n // console.log('LayerTest: ', extent);\r\n // this.mapLibNgService.map().setExtent(extent);\r\n // // SET EXTENT\r\n\r\n const olFeatures = [];\r\n neighbor.teiger.forEach((t) => {\r\n const feature = this.mapLibNgService.map().getOlFeatureById(t.feature.id);\r\n olFeatures.push(feature);\r\n });\r\n this.mapLibNgService.map().highlightFeatures(olFeatures);\r\n }\r\n\r\n deleteDraw(deleteAll): void {\r\n if (deleteAll) {\r\n this.features = undefined;\r\n }\r\n this.deleteFeature = true;\r\n this.mapLibNgService\r\n .map()\r\n .reactivateDrawingManager(this.createAdditionalOptions());\r\n this.deleteFeature = false;\r\n // this.mapLibNgService.map().reactivateDrawingManager(this.createAdditionalOptions());\r\n if (deleteAll) {\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n }\r\n }\r\n\r\n showReport(feature): void {\r\n console.log('SHOW REPORT');\r\n this.bladeService.showBladeWithComponent(\r\n 'printIdPortenNeighbor',\r\n IsyIdPortenPrintNeighborComponent,\r\n { feature, neighbors: this.neighbors },\r\n { fullScreen: true, position: 'top' }\r\n );\r\n }\r\n\r\n naboliste2CSV(feature): void {\r\n const title =\r\n 'Naboliste_' +\r\n feature?.knr +\r\n '-' +\r\n feature?.gnr +\r\n '_' +\r\n feature?.bnr +\r\n '_' +\r\n feature?.fnr +\r\n '_' +\r\n feature?.snr +\r\n '.csv';\r\n if (this.neighbors) {\r\n const neighborlistFormat = this.mapService.getProjectConfig().config.project.neighborlistcsvformat;\r\n IdportenOwnerList2CSV(this.neighbors, title, neighborlistFormat, this.mainProperty);\r\n }\r\n }\r\n\r\n private createAdditionalOptions(): any {\r\n return {\r\n GeoJSON: this.features ? this.features : 'remove',\r\n deleteFeature: this.deleteFeature,\r\n mode: 'modify',\r\n style: {\r\n fill: {\r\n color: 'rgba(0, 0, 160, 0.2)',\r\n },\r\n stroke: {\r\n color: 'green',\r\n width: 2,\r\n },\r\n },\r\n modify: false,\r\n showMeasurements: false,\r\n selectedFeatureId: this.selectedFeatureId\r\n ? this.selectedFeatureId\r\n : undefined,\r\n selectionActive: this.selectedFeatureId ? true : false,\r\n snapGuides: false,\r\n textValue: '',\r\n };\r\n }\r\n \r\n private handleError(err): Observable {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.error(err);\r\n return throwError(errorMessage);\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n EIENDOM\r\n
    \r\n
    \r\n {{vm.matrikkelenhetMe.length}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{result.knr + '-' + result.gnr + '/' + result.bnr + '/' + result.fnr + '/' + result.snr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n KNR: \r\n
    \r\n
    \r\n {{result.knr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n GNR: \r\n
    \r\n
    \r\n {{result.gnr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n BNR: \r\n
    \r\n
    \r\n {{result.bnr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n FNR: \r\n
    \r\n
    \r\n {{result.fnr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n SNR: \r\n
    \r\n
    \r\n {{result.snr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{'makeNeighborList' | translate }}\r\n
    \r\n
    0\" (click)=\"$event.stopPropagation()\">\r\n \r\n
    \r\n
    0\" (click)=\"$event.stopPropagation()\">\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{neighbor.gnr + '/' + neighbor.bnr + '/' +\r\n (neighbor.fnr === null ? 0 : neighbor.fnr) + '/' +\r\n (neighbor.snr === null ? 0 : neighbor.snr) + ': ' +\r\n (neighbor.bruksnavn === null ? '' : neighbor.bruksnavn) | uppercase}}\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { IMatrikkelenhet } from '../idporten';\r\n\r\nexport class MatrikkelenhetMe {\r\n static matrikkelenhetMe: IMatrikkelenhet[] = \r\n [\r\n {\r\n \"id\": 91023765,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 77,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"VESTGÅRD\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474463743,\r\n \"navn\": \"BAGASJE FANTASIFULL\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Folldalsvegen 4512\",\r\n \"adresselinje3\": \"2582 GRIMSBU\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"2582\",\r\n \"poststed\": \"GRIMSBU\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"FANTASIFULL\",\r\n \"etternavn\": \"BAGASJE\",\r\n \"personStatusKode\": \"10\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 91398185,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91398185\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3518108540429,\r\n 67.2503372739089\r\n ],\r\n [\r\n 15.3516670052737,\r\n 67.2505472245672\r\n ],\r\n [\r\n 15.350570448236,\r\n 67.2534096165685\r\n ],\r\n [\r\n 15.3504086743236,\r\n 67.2538705933789\r\n ],\r\n [\r\n 15.3504124263917,\r\n 67.2538417906091\r\n ],\r\n [\r\n 15.3504086187579,\r\n 67.2537872596559\r\n ],\r\n [\r\n 15.350399387099,\r\n 67.2537581264179\r\n ],\r\n [\r\n 15.3503928433581,\r\n 67.2537384958023\r\n ],\r\n [\r\n 15.3503729987404,\r\n 67.253680860258\r\n ],\r\n [\r\n 15.3503382943014,\r\n 67.2536213733865\r\n ],\r\n [\r\n 15.3502797347658,\r\n 67.2535630149986\r\n ],\r\n [\r\n 15.3502517689625,\r\n 67.2535365240118\r\n ],\r\n [\r\n 15.3502121383279,\r\n 67.2535047660089\r\n ],\r\n [\r\n 15.3501797836726,\r\n 67.2534792713153\r\n ],\r\n [\r\n 15.3501422599272,\r\n 67.2534489439427\r\n ],\r\n [\r\n 15.3500667942994,\r\n 67.2534073070646\r\n ],\r\n [\r\n 15.3500376394688,\r\n 67.2533946328561\r\n ],\r\n [\r\n 15.3499992679968,\r\n 67.2533856565514\r\n ],\r\n [\r\n 15.3499181674813,\r\n 67.25337085301\r\n ],\r\n [\r\n 15.3498344512076,\r\n 67.2533514802889\r\n ],\r\n [\r\n 15.3496880608882,\r\n 67.2533253369629\r\n ],\r\n [\r\n 15.3495543199243,\r\n 67.2533084053399\r\n ],\r\n [\r\n 15.3493981537325,\r\n 67.253295289936\r\n ],\r\n [\r\n 15.3492406141222,\r\n 67.2532833435042\r\n ],\r\n [\r\n 15.3490811243091,\r\n 67.2532807302439\r\n ],\r\n [\r\n 15.3489849645803,\r\n 67.2532821951769\r\n ],\r\n [\r\n 15.348872170598,\r\n 67.2532872843162\r\n ],\r\n [\r\n 15.3487252566623,\r\n 67.2532888593972\r\n ],\r\n [\r\n 15.3485956748585,\r\n 67.2532869880002\r\n ],\r\n [\r\n 15.348501531961,\r\n 67.2532836940187\r\n ],\r\n [\r\n 15.3483399811258,\r\n 67.2532827888487\r\n ],\r\n [\r\n 15.3482382202715,\r\n 67.2532815744075\r\n ],\r\n [\r\n 15.3481572796351,\r\n 67.2532777133649\r\n ],\r\n [\r\n 15.3481284577158,\r\n 67.2532719451996\r\n ],\r\n [\r\n 15.3481053491504,\r\n 67.2532606030695\r\n ],\r\n [\r\n 15.34804182132,\r\n 67.2532268331963\r\n ],\r\n [\r\n 15.3479177345008,\r\n 67.253220284796\r\n ],\r\n [\r\n 15.3478619332774,\r\n 67.2532079370566\r\n ],\r\n [\r\n 15.3478127029433,\r\n 67.2532012263318\r\n ],\r\n [\r\n 15.3477759886125,\r\n 67.2531945781776\r\n ],\r\n [\r\n 15.3477471941255,\r\n 67.2531906936419\r\n ],\r\n [\r\n 15.3477276970168,\r\n 67.2531886727174\r\n ],\r\n [\r\n 15.3477195752762,\r\n 67.2531879726897\r\n ],\r\n [\r\n 15.3477398873985,\r\n 67.2531662206266\r\n ],\r\n [\r\n 15.3502856769955,\r\n 67.2504389240625\r\n ],\r\n [\r\n 15.3515765239423,\r\n 67.2505400671642\r\n ],\r\n [\r\n 15.3516421367098,\r\n 67.2503837508772\r\n ],\r\n [\r\n 15.3520431753542,\r\n 67.250092503799\r\n ],\r\n [\r\n 15.3521429025371,\r\n 67.2501153864116\r\n ],\r\n [\r\n 15.352130967135,\r\n 67.2501218234271\r\n ],\r\n [\r\n 15.3518108540429,\r\n 67.2503372739089\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3499685472145 67.2520692632194)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 395121240,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"395121240\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3501814618323,\r\n 67.2803918387145\r\n ],\r\n [\r\n 15.3494419564254,\r\n 67.2800855900582\r\n ],\r\n [\r\n 15.3499606224026,\r\n 67.2799014681452\r\n ],\r\n [\r\n 15.3531787022205,\r\n 67.2788118967664\r\n ],\r\n [\r\n 15.3559695138781,\r\n 67.277825019905\r\n ],\r\n [\r\n 15.3560149003616,\r\n 67.2778505742485\r\n ],\r\n [\r\n 15.3564739249592,\r\n 67.27810951423\r\n ],\r\n [\r\n 15.3565904379275,\r\n 67.2781752767013\r\n ],\r\n [\r\n 15.3506074094014,\r\n 67.2802297144771\r\n ],\r\n [\r\n 15.3501814618323,\r\n 67.2803918387145\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3530505071352 67.2791172965359)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91398140,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91398140\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3618940202965,\r\n 67.2772220786\r\n ],\r\n [\r\n 15.3639140669195,\r\n 67.2782842581739\r\n ],\r\n [\r\n 15.3639323079674,\r\n 67.2782938150266\r\n ],\r\n [\r\n 15.3638192876867,\r\n 67.2783221479144\r\n ],\r\n [\r\n 15.3636113042112,\r\n 67.2783916000468\r\n ],\r\n [\r\n 15.3634469467509,\r\n 67.2784157431323\r\n ],\r\n [\r\n 15.3628660047861,\r\n 67.2784308705356\r\n ],\r\n [\r\n 15.3627194599241,\r\n 67.2784516536468\r\n ],\r\n [\r\n 15.3624731609549,\r\n 67.2785344667756\r\n ],\r\n [\r\n 15.3620831148242,\r\n 67.2785930250668\r\n ],\r\n [\r\n 15.3616742678042,\r\n 67.2786357473844\r\n ],\r\n [\r\n 15.3613334450524,\r\n 67.2786970635082\r\n ],\r\n [\r\n 15.3610260756301,\r\n 67.2787768721563\r\n ],\r\n [\r\n 15.3608291216208,\r\n 67.2788554455329\r\n ],\r\n [\r\n 15.3605307247609,\r\n 67.2790540889184\r\n ],\r\n [\r\n 15.3602744017261,\r\n 67.2791501074099\r\n ],\r\n [\r\n 15.3599194882251,\r\n 67.2792472434124\r\n ],\r\n [\r\n 15.3595481273517,\r\n 67.2793307806514\r\n ],\r\n [\r\n 15.3593396489982,\r\n 67.2793685633265\r\n ],\r\n [\r\n 15.3592076667215,\r\n 67.2792777207185\r\n ],\r\n [\r\n 15.3591045478439,\r\n 67.2792086112004\r\n ],\r\n [\r\n 15.3590560563079,\r\n 67.279177503107\r\n ],\r\n [\r\n 15.3589990411417,\r\n 67.2791349321242\r\n ],\r\n [\r\n 15.3588587401787,\r\n 67.2790461709777\r\n ],\r\n [\r\n 15.3586964688812,\r\n 67.2789309965226\r\n ],\r\n [\r\n 15.3585145681872,\r\n 67.2787907490063\r\n ],\r\n [\r\n 15.3584293882994,\r\n 67.2787263532584\r\n ],\r\n [\r\n 15.3583611189036,\r\n 67.2786757339328\r\n ],\r\n [\r\n 15.358199526298,\r\n 67.2785435139878\r\n ],\r\n [\r\n 15.3581695427869,\r\n 67.2784931680239\r\n ],\r\n [\r\n 15.3581321289722,\r\n 67.2784735168781\r\n ],\r\n [\r\n 15.3580922414448,\r\n 67.2784435554484\r\n ],\r\n [\r\n 15.3580194686899,\r\n 67.2783708791977\r\n ],\r\n [\r\n 15.3610080437396,\r\n 67.2771605626093\r\n ],\r\n [\r\n 15.3601985189623,\r\n 67.2768442048135\r\n ],\r\n [\r\n 15.3590993921838,\r\n 67.2769087396663\r\n ],\r\n [\r\n 15.3571120754338,\r\n 67.2774172978913\r\n ],\r\n [\r\n 15.3593121071168,\r\n 67.276628302401\r\n ],\r\n [\r\n 15.3595002871434,\r\n 67.2765223911967\r\n ],\r\n [\r\n 15.3600037837044,\r\n 67.2767139447197\r\n ],\r\n [\r\n 15.3601572523423,\r\n 67.2767686780888\r\n ],\r\n [\r\n 15.3603202576485,\r\n 67.2768095757296\r\n ],\r\n [\r\n 15.3618940202965,\r\n 67.2772220786\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3606514312232 67.2781015028402)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 6259311776,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"6259311776\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3571120754338,\r\n 67.2774172978913\r\n ],\r\n [\r\n 15.357391804118,\r\n 67.2777720772096\r\n ],\r\n [\r\n 15.3574784091345,\r\n 67.2778702881818\r\n ],\r\n [\r\n 15.357406162987,\r\n 67.2778951171184\r\n ],\r\n [\r\n 15.3573841700068,\r\n 67.2778670891578\r\n ],\r\n [\r\n 15.3571377334692,\r\n 67.2775514358211\r\n ],\r\n [\r\n 15.3570511762968,\r\n 67.2774406662071\r\n ],\r\n [\r\n 15.3571120754338,\r\n 67.2774172978913\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.357263735105 67.2776603079341)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91398199,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91398199\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3683195978309,\r\n 67.2846698308391\r\n ],\r\n [\r\n 15.3690137344318,\r\n 67.2849436250222\r\n ],\r\n [\r\n 15.3646914561177,\r\n 67.286378147467\r\n ],\r\n [\r\n 15.36198223433,\r\n 67.2872770814414\r\n ],\r\n [\r\n 15.3617217312577,\r\n 67.2873629750308\r\n ],\r\n [\r\n 15.361106628302,\r\n 67.2870965068886\r\n ],\r\n [\r\n 15.3611696690646,\r\n 67.2870752851471\r\n ],\r\n [\r\n 15.3683195978309,\r\n 67.2846698308391\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.365081916387 67.2860047264048)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 167888757,\r\n \"knr\": \"1103\",\r\n \"gnr\": 16,\r\n \"bnr\": 113,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"Strandly\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474575969,\r\n \"navn\": \"BAKERI MATEMATISK\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Frydentoppveien 16\",\r\n \"adresselinje3\": \"4844 ARENDAL\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"4844\",\r\n \"poststed\": \"ARENDAL\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"MATEMATISK\",\r\n \"etternavn\": \"BAKERI\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6475007062,\r\n \"navn\": \"OLJE UTØRST\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Eugenies gate 9\",\r\n \"adresselinje3\": \"0168 OSLO\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"0168\",\r\n \"poststed\": \"OSLO\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"UTØRST\",\r\n \"etternavn\": \"OLJE\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6475161461,\r\n \"navn\": \"VURDERING LIKEGYLDIG\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Myra 13\",\r\n \"adresselinje3\": \"7533 KOPPERÅ\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"7533\",\r\n \"poststed\": \"KOPPERÅ\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"LIKEGYLDIG\",\r\n \"etternavn\": \"VURDERING\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474892677,\r\n \"navn\": \"BAUG SNAR\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Tuftene 8\",\r\n \"adresselinje3\": \"4993 SUNDEBRU\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"4993\",\r\n \"poststed\": \"SUNDEBRU\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"SNAR\",\r\n \"etternavn\": \"BAUG\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474409163,\r\n \"navn\": \"KOMPETANSE TØRST\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Dalsbottenlia 43A\",\r\n \"adresselinje3\": \"3726 SKIEN\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"3726\",\r\n \"poststed\": \"SKIEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"TØRST\",\r\n \"etternavn\": \"KOMPETANSE\",\r\n \"personStatusKode\": \"10\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474431812,\r\n \"navn\": \"REKE KUL JEGER\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Fjellvegen 46\",\r\n \"adresselinje3\": \"7873 HARRAN\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"7873\",\r\n \"poststed\": \"HARRAN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"KUL JEGER\",\r\n \"etternavn\": \"REKE\",\r\n \"personStatusKode\": \"10\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6475221222,\r\n \"navn\": \"BÅND TRIST\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Tunesvegen 51\",\r\n \"adresselinje3\": \"5264 GARNES\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"5264\",\r\n \"poststed\": \"GARNES\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"TRIST\",\r\n \"etternavn\": \"BÅND\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474657986,\r\n \"navn\": \"PERIODE FUNKSJONELL\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Bjørkhaugen 20\",\r\n \"adresselinje3\": \"6030 LANGEVÅG\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"6030\",\r\n \"poststed\": \"LANGEVÅG\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"FUNKSJONELL\",\r\n \"etternavn\": \"PERIODE\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6475419045,\r\n \"navn\": \"KLIPPFISK KOMPLETT\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Skrenten 60\",\r\n \"adresselinje3\": \"5955 LINDÅS\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"5955\",\r\n \"poststed\": \"LINDÅS\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"KOMPLETT\",\r\n \"etternavn\": \"KLIPPFISK\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6475149427,\r\n \"navn\": \"BUKK USANNFERDIG\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Granbergstubben 10\",\r\n \"adresselinje3\": \"1275 OSLO\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"1275\",\r\n \"poststed\": \"OSLO\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"USANNFERDIG\",\r\n \"etternavn\": \"BUKK\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474463743,\r\n \"navn\": \"BAGASJE FANTASIFULL\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Folldalsvegen 4512\",\r\n \"adresselinje3\": \"2582 GRIMSBU\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"2582\",\r\n \"poststed\": \"GRIMSBU\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"FANTASIFULL\",\r\n \"etternavn\": \"BAGASJE\",\r\n \"personStatusKode\": \"10\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 169759299,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"169759299\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 5.73233475516487,\r\n 58.9133021162369\r\n ],\r\n [\r\n 5.73099718563223,\r\n 58.9127290247385\r\n ],\r\n [\r\n 5.73101527096047,\r\n 58.9127160009285\r\n ],\r\n [\r\n 5.73434931878143,\r\n 58.9141364088525\r\n ],\r\n [\r\n 5.73442578275728,\r\n 58.9141747572298\r\n ],\r\n [\r\n 5.73448094522661,\r\n 58.9142218821667\r\n ],\r\n [\r\n 5.73233475516487,\r\n 58.9133021162369\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(5.73282154103635 58.9134982329653)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 440205827,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"440205827\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 5.73309799250579,\r\n 58.9131446311859\r\n ],\r\n [\r\n 5.73305452117198,\r\n 58.9131725619119\r\n ],\r\n [\r\n 5.73303411109585,\r\n 58.9131642266261\r\n ],\r\n [\r\n 5.73297038774606,\r\n 58.9131546196492\r\n ],\r\n [\r\n 5.73291218048703,\r\n 58.913171119689\r\n ],\r\n [\r\n 5.73268924069279,\r\n 58.9133146761133\r\n ],\r\n [\r\n 5.73267053836864,\r\n 58.913347460032\r\n ],\r\n [\r\n 5.73270188983435,\r\n 58.9133775496265\r\n ],\r\n [\r\n 5.73251413309428,\r\n 58.9132977550599\r\n ],\r\n [\r\n 5.73257823343446,\r\n 58.913307803082\r\n ],\r\n [\r\n 5.73263707035155,\r\n 58.913291247325\r\n ],\r\n [\r\n 5.73285801027405,\r\n 58.9131486290535\r\n ],\r\n [\r\n 5.73287650609701,\r\n 58.9131156460498\r\n ],\r\n [\r\n 5.73284451117657,\r\n 58.9130855543124\r\n ],\r\n [\r\n 5.73282428301444,\r\n 58.9130771337159\r\n ],\r\n [\r\n 5.73286777135651,\r\n 58.9130490237443\r\n ],\r\n [\r\n 5.73298279086571,\r\n 58.9130968701543\r\n ],\r\n [\r\n 5.73309799250579,\r\n 58.9131446311859\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(5.73283227946845 58.9131938139253)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 440205824,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"440205824\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 5.73400118277396,\r\n 58.9146156350962\r\n ],\r\n [\r\n 5.73410418787792,\r\n 58.9146097173133\r\n ],\r\n [\r\n 5.73420771157189,\r\n 58.9146071943457\r\n ],\r\n [\r\n 5.73391938129331,\r\n 58.9146336096441\r\n ],\r\n [\r\n 5.73350053589192,\r\n 58.9146915067261\r\n ],\r\n [\r\n 5.73357781707131,\r\n 58.9146739597929\r\n ],\r\n [\r\n 5.73365689215896,\r\n 58.9146587003086\r\n ],\r\n [\r\n 5.73400118277396,\r\n 58.9146156350962\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(5.73384090796504 58.9146420063757)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 440205823,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"440205823\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 5.73450859971424,\r\n 58.9144386426034\r\n ],\r\n [\r\n 5.73451015923736,\r\n 58.9144423669274\r\n ],\r\n [\r\n 5.73450923867449,\r\n 58.9144888993415\r\n ],\r\n [\r\n 5.73450285182322,\r\n 58.9145079911449\r\n ],\r\n [\r\n 5.73448786058521,\r\n 58.9145257473826\r\n ],\r\n [\r\n 5.73416574887203,\r\n 58.914532705127\r\n ],\r\n [\r\n 5.73427969820854,\r\n 58.9145210385359\r\n ],\r\n [\r\n 5.73439393919517,\r\n 58.914510161848\r\n ],\r\n [\r\n 5.73447664209422,\r\n 58.9144852852081\r\n ],\r\n [\r\n 5.73450859971424,\r\n 58.9144386426034\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(5.73441550966345 58.9145085869125)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 440205826,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"440205826\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 5.73382898986279,\r\n 58.9134478393175\r\n ],\r\n [\r\n 5.73378550177834,\r\n 58.9134759496136\r\n ],\r\n [\r\n 5.73376510828866,\r\n 58.9134674351169\r\n ],\r\n [\r\n 5.7337013841675,\r\n 58.9134578284939\r\n ],\r\n [\r\n 5.73364317673061,\r\n 58.9134743288608\r\n ],\r\n [\r\n 5.73341317652732,\r\n 58.9136227410696\r\n ],\r\n [\r\n 5.73339448661645,\r\n 58.9136554574877\r\n ],\r\n [\r\n 5.7334256622129,\r\n 58.9136855204784\r\n ],\r\n [\r\n 5.73323808393195,\r\n 58.9136056416569\r\n ],\r\n [\r\n 5.73330213619149,\r\n 58.9136156022328\r\n ],\r\n [\r\n 5.73336085730553,\r\n 58.9135990391982\r\n ],\r\n [\r\n 5.73358917043104,\r\n 58.9134519325679\r\n ],\r\n [\r\n 5.73360757587665,\r\n 58.9134189962334\r\n ],\r\n [\r\n 5.73357566142564,\r\n 58.913388947554\r\n ],\r\n [\r\n 5.73355542443446,\r\n 58.9133806167307\r\n ],\r\n [\r\n 5.73359892105273,\r\n 58.9133524168505\r\n ],\r\n [\r\n 5.73371377772308,\r\n 58.9134001685827\r\n ],\r\n [\r\n 5.73382898986279,\r\n 58.9134478393175\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(5.73355988246149 58.9134993435899)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 440205825,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"440205825\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 5.73447406666347,\r\n 58.9136582766959\r\n ],\r\n [\r\n 5.73450115692673,\r\n 58.9136694768545\r\n ],\r\n [\r\n 5.73430067759643,\r\n 58.9137941904815\r\n ],\r\n [\r\n 5.73404940192692,\r\n 58.9139507840144\r\n ],\r\n [\r\n 5.73395585430327,\r\n 58.9139110309738\r\n ],\r\n [\r\n 5.73401913033983,\r\n 58.9139210778291\r\n ],\r\n [\r\n 5.7340776941718,\r\n 58.9139051232278\r\n ],\r\n [\r\n 5.73431770946475,\r\n 58.9137555249788\r\n ],\r\n [\r\n 5.73433721062452,\r\n 58.9137223893611\r\n ],\r\n [\r\n 5.7343052983681,\r\n 58.9136919386858\r\n ],\r\n [\r\n 5.73425248774065,\r\n 58.9136697526563\r\n ],\r\n [\r\n 5.73429680005246,\r\n 58.9136421124178\r\n ],\r\n [\r\n 5.73435098045425,\r\n 58.9136645128026\r\n ],\r\n [\r\n 5.73441504820051,\r\n 58.9136747271308\r\n ],\r\n [\r\n 5.73447406666347,\r\n 58.9136582766959\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(5.73428062734603 58.9137675296007)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 440205822,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"440205822\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 5.73514207396193,\r\n 58.9145145984457\r\n ],\r\n [\r\n 5.73521419407702,\r\n 58.9145163309352\r\n ],\r\n [\r\n 5.73521667855245,\r\n 58.914589372863\r\n ],\r\n [\r\n 5.73491125490455,\r\n 58.9145535790447\r\n ],\r\n [\r\n 5.73460221368472,\r\n 58.9145273792102\r\n ],\r\n [\r\n 5.73459809236903,\r\n 58.9145213432479\r\n ],\r\n [\r\n 5.73470976961721,\r\n 58.9145200313274\r\n ],\r\n [\r\n 5.73496233926185,\r\n 58.9145171568375\r\n ],\r\n [\r\n 5.73514207396193,\r\n 58.9145145984457\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(5.73500069100272 58.9145410021356)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 130164015,\r\n \"knr\": \"1531\",\r\n \"gnr\": 65,\r\n \"bnr\": 139,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \" \",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474350612,\r\n \"navn\": \"TREGRENSE ERFAREN\",\r\n \"postAdresse\": null,\r\n \"fornavn\": \"ERFAREN\",\r\n \"etternavn\": \"TREGRENSE\",\r\n \"personStatusKode\": \"D\",\r\n \"personnummer\": null,\r\n \"erDød\": true,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474463743,\r\n \"navn\": \"BAGASJE FANTASIFULL\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Folldalsvegen 4512\",\r\n \"adresselinje3\": \"2582 GRIMSBU\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"2582\",\r\n \"poststed\": \"GRIMSBU\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"FANTASIFULL\",\r\n \"etternavn\": \"BAGASJE\",\r\n \"personStatusKode\": \"10\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Bjørkavågsvegen 20\",\r\n \"postnummer\": \"6037\",\r\n \"poststed\": \"EIDSNES\",\r\n \"gatenavn\": \"Bjørkavågsvegen\",\r\n \"bokstav\": null,\r\n \"nummer\": 20,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 130306919,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"130306919\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 6.30354512208532,\r\n 62.4263048344435\r\n ],\r\n [\r\n 6.30342813118898,\r\n 62.4261473664011\r\n ],\r\n [\r\n 6.3034072147474,\r\n 62.4261192979315\r\n ],\r\n [\r\n 6.30354478660483,\r\n 62.4261020209507\r\n ],\r\n [\r\n 6.30357720724726,\r\n 62.4261551015477\r\n ],\r\n [\r\n 6.30372388246938,\r\n 62.4262067106308\r\n ],\r\n [\r\n 6.30374137929882,\r\n 62.4262039056142\r\n ],\r\n [\r\n 6.30387091695619,\r\n 62.4261833292412\r\n ],\r\n [\r\n 6.30389725483089,\r\n 62.4261791683892\r\n ],\r\n [\r\n 6.30416702104513,\r\n 62.4263678843318\r\n ],\r\n [\r\n 6.30425833795523,\r\n 62.4264318044922\r\n ],\r\n [\r\n 6.30420109114221,\r\n 62.4264409865976\r\n ],\r\n [\r\n 6.30414425726416,\r\n 62.4264507043221\r\n ],\r\n [\r\n 6.30407304612895,\r\n 62.4264640677394\r\n ],\r\n [\r\n 6.30400257648248,\r\n 62.4264809092247\r\n ],\r\n [\r\n 6.3039330180923,\r\n 62.4265011882054\r\n ],\r\n [\r\n 6.30386453853067,\r\n 62.4265248558276\r\n ],\r\n [\r\n 6.30379730277085,\r\n 62.4265518550739\r\n ],\r\n [\r\n 6.30374633004352,\r\n 62.4265749459753\r\n ],\r\n [\r\n 6.30362223045994,\r\n 62.4264081792281\r\n ],\r\n [\r\n 6.30354512208532,\r\n 62.4263048344435\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(6.30381036329714 62.4263387596747)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 280436024,\r\n \"knr\": \"4014\",\r\n \"gnr\": 11,\r\n \"bnr\": 274,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": null,\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474463743,\r\n \"navn\": \"BAGASJE FANTASIFULL\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Folldalsvegen 4512\",\r\n \"adresselinje3\": \"2582 GRIMSBU\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"2582\",\r\n \"poststed\": \"GRIMSBU\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"FANTASIFULL\",\r\n \"etternavn\": \"BAGASJE\",\r\n \"personStatusKode\": \"10\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Gevirveien 31\",\r\n \"postnummer\": \"3788\",\r\n \"poststed\": \"STABBESTAD\",\r\n \"gatenavn\": \"Gevirveien\",\r\n \"bokstav\": null,\r\n \"nummer\": 31,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 280436023,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"280436023\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 9.38902990066774,\r\n 58.8457315513971\r\n ],\r\n [\r\n 9.38902857705759,\r\n 58.8457062290829\r\n ],\r\n [\r\n 9.38946352702635,\r\n 58.8457067146725\r\n ],\r\n [\r\n 9.38946484932388,\r\n 58.8457936463565\r\n ],\r\n [\r\n 9.38946544462616,\r\n 58.8459393156931\r\n ],\r\n [\r\n 9.3894655887711,\r\n 58.8459521580277\r\n ],\r\n [\r\n 9.38911972180855,\r\n 58.8459532003226\r\n ],\r\n [\r\n 9.38910120306391,\r\n 58.8459397846682\r\n ],\r\n [\r\n 9.38902921664706,\r\n 58.8458869240202\r\n ],\r\n [\r\n 9.38902990066774,\r\n 58.8457315513971\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(9.38925227116761 58.8458268278888)\"\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n]\r\n\r\n // [\r\n // {\r\n // id: 6404353805,\r\n // knr: '5037',\r\n // gnr: 223,\r\n // bnr: 70,\r\n // fnr: 0,\r\n // snr: 0,\r\n // bruksnavn: null,\r\n // utgått: false,\r\n // eiere: [\r\n // {\r\n // id: 5679490,\r\n // navn: 'KIRKNES KARI',\r\n // postAdresse: {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: 'Åsensentret 1',\r\n // adresselinje3: '7630 ÅSEN',\r\n // landkode: '000',\r\n // navn: null,\r\n // postnummer: '7630',\r\n // poststed: 'ÅSEN',\r\n // gatenavn: null,\r\n // bokstav: null,\r\n // nummer: null,\r\n // undernummer: null,\r\n // },\r\n // fornavn: 'KARI',\r\n // etternavn: 'KIRKNES',\r\n // personStatusKode: 'B',\r\n // personnummer: null,\r\n // erDød: false,\r\n // organisasjonsnummer: null,\r\n // slettetDato: null,\r\n // nummer: null,\r\n // personIdKode: null,\r\n // personKategoriKode: null,\r\n // },\r\n // {\r\n // id: 6606361,\r\n // navn: 'KIRKNES MAGNE JOHAN',\r\n // postAdresse: {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: 'Åsensentret 1',\r\n // adresselinje3: '7630 ÅSEN',\r\n // landkode: '000',\r\n // navn: null,\r\n // postnummer: '7630',\r\n // poststed: 'ÅSEN',\r\n // gatenavn: null,\r\n // bokstav: null,\r\n // nummer: null,\r\n // undernummer: null,\r\n // },\r\n // fornavn: 'MAGNE JOHAN',\r\n // etternavn: 'KIRKNES',\r\n // personStatusKode: 'B',\r\n // personnummer: null,\r\n // erDød: false,\r\n // organisasjonsnummer: null,\r\n // slettetDato: null,\r\n // nummer: null,\r\n // personIdKode: null,\r\n // personKategoriKode: null,\r\n // },\r\n // ],\r\n // addresser: [],\r\n // teiger: [\r\n // {\r\n // id: 6404353804,\r\n // hovedteig: true,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '6404353804',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9705058029817, 63.5945794488538],\r\n // [10.9698563519864, 63.5945587600026],\r\n // [10.9698898835984, 63.5943554121221],\r\n // [10.9704831313479, 63.594360200379],\r\n // [10.9705058029817, 63.5945794488538],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9700451840434 63.5944599071804)',\r\n // },\r\n // },\r\n // },\r\n // ],\r\n // },\r\n // ];\r\n}\r\n","import { IMatrikkelenhet } from '../idporten';\r\n\r\nexport class MatrikkelenhetNaboliste {\r\n static matrikkelenhetNaboliste: IMatrikkelenhet[] = \r\n [\r\n {\r\n \"id\": 91023692,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 6,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"GRØNVOLL\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6475075703,\r\n \"navn\": \"STØVEL FALSK\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Øvervegen 38\",\r\n \"adresselinje3\": \"7877 HØYLANDET\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"7877\",\r\n \"poststed\": \"HØYLANDET\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"FALSK\",\r\n \"etternavn\": \"STØVEL\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Erikstadveien 12\",\r\n \"postnummer\": \"8206\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Erikstadveien\",\r\n \"bokstav\": null,\r\n \"nummer\": 12,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 91393728,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393728\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3555667769883,\r\n 67.2670440223167\r\n ],\r\n [\r\n 15.3556253072726,\r\n 67.2669249470311\r\n ],\r\n [\r\n 15.3555373052279,\r\n 67.2667761458223\r\n ],\r\n [\r\n 15.3555480919236,\r\n 67.26675288896\r\n ],\r\n [\r\n 15.3556967029237,\r\n 67.2667507658117\r\n ],\r\n [\r\n 15.3557958275553,\r\n 67.2667579915443\r\n ],\r\n [\r\n 15.3560486661384,\r\n 67.2667944783537\r\n ],\r\n [\r\n 15.3564263072978,\r\n 67.2668339171131\r\n ],\r\n [\r\n 15.3567912691241,\r\n 67.2668939250608\r\n ],\r\n [\r\n 15.357150316714,\r\n 67.2668991370237\r\n ],\r\n [\r\n 15.3572202943152,\r\n 67.2669266994948\r\n ],\r\n [\r\n 15.3573197652359,\r\n 67.2670351080939\r\n ],\r\n [\r\n 15.3573610834302,\r\n 67.2688622586728\r\n ],\r\n [\r\n 15.3573947392709,\r\n 67.2707975175137\r\n ],\r\n [\r\n 15.3558964961109,\r\n 67.2706271802155\r\n ],\r\n [\r\n 15.3558380075043,\r\n 67.2691053258734\r\n ],\r\n [\r\n 15.3555667769883,\r\n 67.2670440223167\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3565541373706 67.2687186734908)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393693,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393693\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3675589311013,\r\n 67.2843693648226\r\n ],\r\n [\r\n 15.3683195978309,\r\n 67.2846698308391\r\n ],\r\n [\r\n 15.3611696690646,\r\n 67.2870752851471\r\n ],\r\n [\r\n 15.361106628302,\r\n 67.2870965068886\r\n ],\r\n [\r\n 15.3610650090443,\r\n 67.2870914873649\r\n ],\r\n [\r\n 15.3606215954592,\r\n 67.2868359340446\r\n ],\r\n [\r\n 15.3606329106723,\r\n 67.2868321411498\r\n ],\r\n [\r\n 15.3610701034183,\r\n 67.286689519284\r\n ],\r\n [\r\n 15.3635602678068,\r\n 67.2858094853175\r\n ],\r\n [\r\n 15.3674237465487,\r\n 67.2844218808519\r\n ],\r\n [\r\n 15.3675589311013,\r\n 67.2843693648226\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.364579589952 67.2856880950416)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393775,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393775\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3554860369375,\r\n 67.2664299174664\r\n ],\r\n [\r\n 15.3573053925979,\r\n 67.2663960087572\r\n ],\r\n [\r\n 15.3573158810468,\r\n 67.2668674625055\r\n ],\r\n [\r\n 15.3572611052105,\r\n 67.2668329591545\r\n ],\r\n [\r\n 15.3570528382348,\r\n 67.2668623065953\r\n ],\r\n [\r\n 15.3569208864088,\r\n 67.2668619720012\r\n ],\r\n [\r\n 15.3568108931928,\r\n 67.2668412260128\r\n ],\r\n [\r\n 15.3564078774502,\r\n 67.266795206479\r\n ],\r\n [\r\n 15.3560655742769,\r\n 67.2667461808495\r\n ],\r\n [\r\n 15.3558231650659,\r\n 67.266693614188\r\n ],\r\n [\r\n 15.3557195817978,\r\n 67.2666828102439\r\n ],\r\n [\r\n 15.3555827468259,\r\n 67.2666814986398\r\n ],\r\n [\r\n 15.3555478054612,\r\n 67.266686509649\r\n ],\r\n [\r\n 15.3555223411293,\r\n 67.2667051344697\r\n ],\r\n [\r\n 15.3554860369375,\r\n 67.2664299174664\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3565067938738 67.2666026618561)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393764,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393764\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3685654341629,\r\n 67.2719759920343\r\n ],\r\n [\r\n 15.3688282307571,\r\n 67.2718253162347\r\n ],\r\n [\r\n 15.3694388319114,\r\n 67.2714870794182\r\n ],\r\n [\r\n 15.3701570515524,\r\n 67.2726252776391\r\n ],\r\n [\r\n 15.3694975169832,\r\n 67.2730406842562\r\n ],\r\n [\r\n 15.3694484845203,\r\n 67.2730197169183\r\n ],\r\n [\r\n 15.3693345756405,\r\n 67.2729127842054\r\n ],\r\n [\r\n 15.3693690642011,\r\n 67.2727723202428\r\n ],\r\n [\r\n 15.3693557040985,\r\n 67.2726878510622\r\n ],\r\n [\r\n 15.3691251131949,\r\n 67.2725950903841\r\n ],\r\n [\r\n 15.3688958308447,\r\n 67.2724816947609\r\n ],\r\n [\r\n 15.3688224628083,\r\n 67.2724316297595\r\n ],\r\n [\r\n 15.368800091111,\r\n 67.2723794741821\r\n ],\r\n [\r\n 15.3688198687586,\r\n 67.2723230955006\r\n ],\r\n [\r\n 15.3688726063959,\r\n 67.272298485569\r\n ],\r\n [\r\n 15.3691241310945,\r\n 67.2722443552444\r\n ],\r\n [\r\n 15.369265713935,\r\n 67.27220536796\r\n ],\r\n [\r\n 15.3693402406791,\r\n 67.2721648304069\r\n ],\r\n [\r\n 15.3693876364813,\r\n 67.2721096439788\r\n ],\r\n [\r\n 15.3693822918679,\r\n 67.2720486584582\r\n ],\r\n [\r\n 15.3693087473652,\r\n 67.2720021821892\r\n ],\r\n [\r\n 15.3691780461036,\r\n 67.2719794290714\r\n ],\r\n [\r\n 15.3688168369831,\r\n 67.2720047477229\r\n ],\r\n [\r\n 15.3686646998305,\r\n 67.2719907445666\r\n ],\r\n [\r\n 15.3685654341629,\r\n 67.2719759920343\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3694504708275 67.2722809111566)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393750,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393750\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3462125018022,\r\n 67.271461320822\r\n ],\r\n [\r\n 15.3442862265342,\r\n 67.2714908472233\r\n ],\r\n [\r\n 15.3434823820331,\r\n 67.2713969454211\r\n ],\r\n [\r\n 15.3430233103795,\r\n 67.2713432976888\r\n ],\r\n [\r\n 15.3430641023402,\r\n 67.2712113478987\r\n ],\r\n [\r\n 15.3458507615904,\r\n 67.2713058383822\r\n ],\r\n [\r\n 15.3458495998679,\r\n 67.2713218079309\r\n ],\r\n [\r\n 15.3462542623322,\r\n 67.2713334047184\r\n ],\r\n [\r\n 15.3462125018022,\r\n 67.271461320822\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3446037217663 67.2713609426742)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393785,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393785\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3543487731974,\r\n 67.2484169841801\r\n ],\r\n [\r\n 15.3544323199389,\r\n 67.2484257699749\r\n ],\r\n [\r\n 15.3544685746619,\r\n 67.2484330455355\r\n ],\r\n [\r\n 15.3545591322268,\r\n 67.2484458524069\r\n ],\r\n [\r\n 15.3545895797855,\r\n 67.2484521540386\r\n ],\r\n [\r\n 15.3547068248649,\r\n 67.2484676826479\r\n ],\r\n [\r\n 15.3547478662141,\r\n 67.2484695653967\r\n ],\r\n [\r\n 15.3548416972063,\r\n 67.2484686403406\r\n ],\r\n [\r\n 15.3548845313465,\r\n 67.2484663927604\r\n ],\r\n [\r\n 15.3549030692757,\r\n 67.2484664414697\r\n ],\r\n [\r\n 15.354722530654,\r\n 67.2485742148938\r\n ],\r\n [\r\n 15.3535758707809,\r\n 67.2492590248219\r\n ],\r\n [\r\n 15.3522710979269,\r\n 67.2500381820252\r\n ],\r\n [\r\n 15.3522334238248,\r\n 67.2500606904089\r\n ],\r\n [\r\n 15.3521655865658,\r\n 67.2500331211094\r\n ],\r\n [\r\n 15.3519720108434,\r\n 67.2499800828749\r\n ],\r\n [\r\n 15.351664047657,\r\n 67.2498695264852\r\n ],\r\n [\r\n 15.3515189393737,\r\n 67.2498188034783\r\n ],\r\n [\r\n 15.3513169174305,\r\n 67.2497584273279\r\n ],\r\n [\r\n 15.3513638462986,\r\n 67.2497349121678\r\n ],\r\n [\r\n 15.3518609669792,\r\n 67.2494859742563\r\n ],\r\n [\r\n 15.3528234485141,\r\n 67.2490050276865\r\n ],\r\n [\r\n 15.3534252027442,\r\n 67.2487038271575\r\n ],\r\n [\r\n 15.3539264911224,\r\n 67.2484575646452\r\n ],\r\n [\r\n 15.3540702730549,\r\n 67.2483869204837\r\n ],\r\n [\r\n 15.3541266850786,\r\n 67.2483153925683\r\n ],\r\n [\r\n 15.3541605792656,\r\n 67.2482725295269\r\n ],\r\n [\r\n 15.3541051466129,\r\n 67.2483948270931\r\n ],\r\n [\r\n 15.3541833731745,\r\n 67.2484042526755\r\n ],\r\n [\r\n 15.3542272173169,\r\n 67.2484076543197\r\n ],\r\n [\r\n 15.3543285908929,\r\n 67.2484154140892\r\n ],\r\n [\r\n 15.3543487731974,\r\n 67.2484169841801\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3530429575685 67.2492201583169)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393715,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393715\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3637166218167,\r\n 67.2739174455116\r\n ],\r\n [\r\n 15.3639980915037,\r\n 67.2738628966601\r\n ],\r\n [\r\n 15.3643538538561,\r\n 67.273812753645\r\n ],\r\n [\r\n 15.3644801830014,\r\n 67.2737763168909\r\n ],\r\n [\r\n 15.3647037033104,\r\n 67.2736940904675\r\n ],\r\n [\r\n 15.3649130434807,\r\n 67.2735946730421\r\n ],\r\n [\r\n 15.3652450774226,\r\n 67.2734793681405\r\n ],\r\n [\r\n 15.3655406256395,\r\n 67.2733749995979\r\n ],\r\n [\r\n 15.3658247750309,\r\n 67.2732990921989\r\n ],\r\n [\r\n 15.3660645338726,\r\n 67.2732327939438\r\n ],\r\n [\r\n 15.3662783539673,\r\n 67.2731539961104\r\n ],\r\n [\r\n 15.3664237797489,\r\n 67.2730925769331\r\n ],\r\n [\r\n 15.3665102444343,\r\n 67.2730282422801\r\n ],\r\n [\r\n 15.3665761236697,\r\n 67.2729221531326\r\n ],\r\n [\r\n 15.3665473049777,\r\n 67.2728272238089\r\n ],\r\n [\r\n 15.3664707777823,\r\n 67.2726762494856\r\n ],\r\n [\r\n 15.3663126591558,\r\n 67.2724831215772\r\n ],\r\n [\r\n 15.3661774092447,\r\n 67.2723293208381\r\n ],\r\n [\r\n 15.3660474644295,\r\n 67.2722343528271\r\n ],\r\n [\r\n 15.3659441659166,\r\n 67.2721984380443\r\n ],\r\n [\r\n 15.3658196402541,\r\n 67.2721698374565\r\n ],\r\n [\r\n 15.3656464085635,\r\n 67.2721565971066\r\n ],\r\n [\r\n 15.3655110767389,\r\n 67.2721494598103\r\n ],\r\n [\r\n 15.3654652339005,\r\n 67.2721243576844\r\n ],\r\n [\r\n 15.3654637452501,\r\n 67.2720569943913\r\n ],\r\n [\r\n 15.365559217171,\r\n 67.2719597188764\r\n ],\r\n [\r\n 15.3656315019978,\r\n 67.2718781940491\r\n ],\r\n [\r\n 15.3656524408743,\r\n 67.2718214543133\r\n ],\r\n [\r\n 15.3656434733187,\r\n 67.2716894324391\r\n ],\r\n [\r\n 15.3656871586031,\r\n 67.2716033081488\r\n ],\r\n [\r\n 15.3657674615978,\r\n 67.271545805307\r\n ],\r\n [\r\n 15.3659003305068,\r\n 67.2714980499727\r\n ],\r\n [\r\n 15.3660757475514,\r\n 67.2714723541112\r\n ],\r\n [\r\n 15.3664026317722,\r\n 67.2713866603328\r\n ],\r\n [\r\n 15.3664423661033,\r\n 67.2713762538793\r\n ],\r\n [\r\n 15.3664598147493,\r\n 67.2713949619236\r\n ],\r\n [\r\n 15.3665285347475,\r\n 67.2714449488998\r\n ],\r\n [\r\n 15.366648315081,\r\n 67.2714971515651\r\n ],\r\n [\r\n 15.3668387149189,\r\n 67.2716021174309\r\n ],\r\n [\r\n 15.3669875513749,\r\n 67.2717039487493\r\n ],\r\n [\r\n 15.3671031181048,\r\n 67.2717534696259\r\n ],\r\n [\r\n 15.367221236784,\r\n 67.2717878248372\r\n ],\r\n [\r\n 15.3673471043491,\r\n 67.2718131919745\r\n ],\r\n [\r\n 15.3678369266757,\r\n 67.27184113462\r\n ],\r\n [\r\n 15.3681517222513,\r\n 67.2718899292534\r\n ],\r\n [\r\n 15.3685361416851,\r\n 67.271971574115\r\n ],\r\n [\r\n 15.3685654341629,\r\n 67.2719759920343\r\n ],\r\n [\r\n 15.3686646998305,\r\n 67.2719907445666\r\n ],\r\n [\r\n 15.3688168369831,\r\n 67.2720047477229\r\n ],\r\n [\r\n 15.3691780461036,\r\n 67.2719794290714\r\n ],\r\n [\r\n 15.3693087473652,\r\n 67.2720021821892\r\n ],\r\n [\r\n 15.3693822918679,\r\n 67.2720486584582\r\n ],\r\n [\r\n 15.3693876364813,\r\n 67.2721096439788\r\n ],\r\n [\r\n 15.3693402406791,\r\n 67.2721648304069\r\n ],\r\n [\r\n 15.369265713935,\r\n 67.27220536796\r\n ],\r\n [\r\n 15.3691241310945,\r\n 67.2722443552444\r\n ],\r\n [\r\n 15.3688726063959,\r\n 67.272298485569\r\n ],\r\n [\r\n 15.3688198687586,\r\n 67.2723230955006\r\n ],\r\n [\r\n 15.368800091111,\r\n 67.2723794741821\r\n ],\r\n [\r\n 15.3688224628083,\r\n 67.2724316297595\r\n ],\r\n [\r\n 15.3688958308447,\r\n 67.2724816947609\r\n ],\r\n [\r\n 15.3691251131949,\r\n 67.2725950903841\r\n ],\r\n [\r\n 15.3693557040985,\r\n 67.2726878510622\r\n ],\r\n [\r\n 15.3693690642011,\r\n 67.2727723202428\r\n ],\r\n [\r\n 15.3693345756405,\r\n 67.2729127842054\r\n ],\r\n [\r\n 15.3694484845203,\r\n 67.2730197169183\r\n ],\r\n [\r\n 15.3694975169832,\r\n 67.2730406842562\r\n ],\r\n [\r\n 15.3685598220833,\r\n 67.2736209721217\r\n ],\r\n [\r\n 15.3664942718451,\r\n 67.2749156219142\r\n ],\r\n [\r\n 15.3660129368323,\r\n 67.2752051132598\r\n ],\r\n [\r\n 15.3655020990317,\r\n 67.2749133076965\r\n ],\r\n [\r\n 15.363824961522,\r\n 67.2739796331718\r\n ],\r\n [\r\n 15.3637166218167,\r\n 67.2739174455116\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3668746640912 67.2732701225399)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91023758,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 71,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"REITAN\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6475019723,\r\n \"navn\": \"FRYNSE SØT\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Postvegen 101\",\r\n \"adresselinje3\": \"4341 BRYNE\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"4341\",\r\n \"poststed\": \"BRYNE\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"SØT\",\r\n \"etternavn\": \"FRYNSE\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474915645,\r\n \"navn\": \"TANN HUSLØS\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Skarvfjordhamn 1\",\r\n \"adresselinje3\": \"9651 LANGSTRAND\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"9651\",\r\n \"poststed\": \"LANGSTRAND\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"HUSLØS\",\r\n \"etternavn\": \"TANN\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 91398074,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91398074\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3480906974083,\r\n 67.2723558114766\r\n ],\r\n [\r\n 15.3506537302221,\r\n 67.2719927719299\r\n ],\r\n [\r\n 15.3506429166874,\r\n 67.2721259140998\r\n ],\r\n [\r\n 15.3503647684401,\r\n 67.2736652781771\r\n ],\r\n [\r\n 15.3501887734946,\r\n 67.2747673881711\r\n ],\r\n [\r\n 15.3501215860048,\r\n 67.2753778704266\r\n ],\r\n [\r\n 15.3473061542846,\r\n 67.2752525680701\r\n ],\r\n [\r\n 15.347459978713,\r\n 67.274741200383\r\n ],\r\n [\r\n 15.347714850351,\r\n 67.273727369535\r\n ],\r\n [\r\n 15.3480906974083,\r\n 67.2723558114766\r\n ]\r\n ],\r\n [\r\n [\r\n 15.3486750973895,\r\n 67.2727163141776\r\n ],\r\n [\r\n 15.3487073491701,\r\n 67.2727010844381\r\n ],\r\n [\r\n 15.3486796166436,\r\n 67.2726920846882\r\n ],\r\n [\r\n 15.3486473661593,\r\n 67.2727074041219\r\n ],\r\n [\r\n 15.3486750973895,\r\n 67.2727163141776\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3490656930699 67.2737743000046)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91398028,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91398028\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.350570448236,\r\n 67.2534096165685\r\n ],\r\n [\r\n 15.3522075353442,\r\n 67.2532614319447\r\n ],\r\n [\r\n 15.3522401692748,\r\n 67.2532584001439\r\n ],\r\n [\r\n 15.3538464509729,\r\n 67.253112867743\r\n ],\r\n [\r\n 15.354678572656,\r\n 67.2530413321562\r\n ],\r\n [\r\n 15.3547341255676,\r\n 67.2530366345528\r\n ],\r\n [\r\n 15.3548967809683,\r\n 67.2532695022231\r\n ],\r\n [\r\n 15.3549090929815,\r\n 67.2532871464477\r\n ],\r\n [\r\n 15.3550175710787,\r\n 67.2532880726956\r\n ],\r\n [\r\n 15.3550826321214,\r\n 67.2534249946257\r\n ],\r\n [\r\n 15.3552072497683,\r\n 67.253686920116\r\n ],\r\n [\r\n 15.3545979050216,\r\n 67.2540146957387\r\n ],\r\n [\r\n 15.3531996878277,\r\n 67.2540175989971\r\n ],\r\n [\r\n 15.3514880785792,\r\n 67.2543665321697\r\n ],\r\n [\r\n 15.3514818248711,\r\n 67.2543668149713\r\n ],\r\n [\r\n 15.3513257676196,\r\n 67.2543775621203\r\n ],\r\n [\r\n 15.3512787783718,\r\n 67.2543817015798\r\n ],\r\n [\r\n 15.35123603949,\r\n 67.2543912138897\r\n ],\r\n [\r\n 15.351213136706,\r\n 67.2543941344891\r\n ],\r\n [\r\n 15.3511845379304,\r\n 67.2543879178676\r\n ],\r\n [\r\n 15.3511698044381,\r\n 67.2543788901239\r\n ],\r\n [\r\n 15.3511635008327,\r\n 67.2543598869337\r\n ],\r\n [\r\n 15.3511582485328,\r\n 67.2543176484342\r\n ],\r\n [\r\n 15.3511232924367,\r\n 67.2542569961469\r\n ],\r\n [\r\n 15.3511077484946,\r\n 67.2542400763294\r\n ],\r\n [\r\n 15.3510680697762,\r\n 67.2542210564306\r\n ],\r\n [\r\n 15.3510240596468,\r\n 67.2542069796447\r\n ],\r\n [\r\n 15.3509493246423,\r\n 67.2541839100476\r\n ],\r\n [\r\n 15.3508872293115,\r\n 67.2541693345469\r\n ],\r\n [\r\n 15.3508161502849,\r\n 67.2541585461715\r\n ],\r\n [\r\n 15.3507381014399,\r\n 67.2541466068583\r\n ],\r\n [\r\n 15.3507094991565,\r\n 67.2541401210522\r\n ],\r\n [\r\n 15.3506107469287,\r\n 67.2540911796791\r\n ],\r\n [\r\n 15.3505457731231,\r\n 67.2540540052444\r\n ],\r\n [\r\n 15.3504787532348,\r\n 67.2540036489488\r\n ],\r\n [\r\n 15.350452179878,\r\n 67.2539773343622\r\n ],\r\n [\r\n 15.350414938523,\r\n 67.2539187500745\r\n ],\r\n [\r\n 15.3504056096836,\r\n 67.2538988564314\r\n ],\r\n [\r\n 15.3504086743236,\r\n 67.2538705933789\r\n ],\r\n [\r\n 15.350570448236,\r\n 67.2534096165685\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3527583480845 67.2536760129355)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91025870,\r\n \"knr\": \"1841\",\r\n \"gnr\": 105,\r\n \"bnr\": 7,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"LUNDLIE\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 9241494,\r\n \"navn\": \"OMYA HUSTADMARMOR AS\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": \"Sjøvegen 69\",\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"6440\",\r\n \"poststed\": \"ELNESVÅGEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": null,\r\n \"etternavn\": null,\r\n \"personStatusKode\": null,\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": \"912864227\",\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Tortenliveien 1\",\r\n \"postnummer\": \"8218\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Tortenliveien\",\r\n \"bokstav\": null,\r\n \"nummer\": 1,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 91419015,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91419015\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3746269922464,\r\n 67.2829662399724\r\n ],\r\n [\r\n 15.3746774545595,\r\n 67.2829285369293\r\n ],\r\n [\r\n 15.3747146820804,\r\n 67.2828903265195\r\n ],\r\n [\r\n 15.3747685350771,\r\n 67.2828468745742\r\n ],\r\n [\r\n 15.3748449297809,\r\n 67.2827758313315\r\n ],\r\n [\r\n 15.374904712576,\r\n 67.2827109265876\r\n ],\r\n [\r\n 15.3750305759828,\r\n 67.282627837378\r\n ],\r\n [\r\n 15.3751496506191,\r\n 67.2825409964092\r\n ],\r\n [\r\n 15.37531526247,\r\n 67.2824178965084\r\n ],\r\n [\r\n 15.3753323201208,\r\n 67.2823660982682\r\n ],\r\n [\r\n 15.3753807969344,\r\n 67.2823351273293\r\n ],\r\n [\r\n 15.3754900317051,\r\n 67.2822572793475\r\n ],\r\n [\r\n 15.3756187668151,\r\n 67.2821652126933\r\n ],\r\n [\r\n 15.375830500865,\r\n 67.2820093526704\r\n ],\r\n [\r\n 15.3758984222716,\r\n 67.2819606646753\r\n ],\r\n [\r\n 15.375971405923,\r\n 67.2819092737271\r\n ],\r\n [\r\n 15.3760400863127,\r\n 67.2818498195821\r\n ],\r\n [\r\n 15.3761736489741,\r\n 67.2817551397962\r\n ],\r\n [\r\n 15.3763905451113,\r\n 67.2815885923171\r\n ],\r\n [\r\n 15.3764347440877,\r\n 67.2815513518903\r\n ],\r\n [\r\n 15.3764916424428,\r\n 67.2814953338481\r\n ],\r\n [\r\n 15.3765962560275,\r\n 67.2814192002699\r\n ],\r\n [\r\n 15.3767131885847,\r\n 67.2813296720492\r\n ],\r\n [\r\n 15.3769223700063,\r\n 67.2811747135543\r\n ],\r\n [\r\n 15.376945139993,\r\n 67.2811471214321\r\n ],\r\n [\r\n 15.3769985914192,\r\n 67.2811081547876\r\n ],\r\n [\r\n 15.3770645531467,\r\n 67.2810531916994\r\n ],\r\n [\r\n 15.3771575591416,\r\n 67.2809769055799\r\n ],\r\n [\r\n 15.3772666875645,\r\n 67.280893046528\r\n ],\r\n [\r\n 15.3785036490798,\r\n 67.2814241369808\r\n ],\r\n [\r\n 15.3785961376571,\r\n 67.2814624014984\r\n ],\r\n [\r\n 15.384336470056,\r\n 67.2831323122276\r\n ],\r\n [\r\n 15.3851406996948,\r\n 67.2842716733419\r\n ],\r\n [\r\n 15.3859888303042,\r\n 67.2854808930293\r\n ],\r\n [\r\n 15.3857583126899,\r\n 67.2856932344866\r\n ],\r\n [\r\n 15.3746269922464,\r\n 67.2829662399724\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3803869264795 67.2832649235144)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91419032,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91419032\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3675589311013,\r\n 67.2843693648226\r\n ],\r\n [\r\n 15.3663348931062,\r\n 67.283903643851\r\n ],\r\n [\r\n 15.3694679105581,\r\n 67.2829392547463\r\n ],\r\n [\r\n 15.3717331779583,\r\n 67.2821907545467\r\n ],\r\n [\r\n 15.3720454614911,\r\n 67.2821280472765\r\n ],\r\n [\r\n 15.3767796258147,\r\n 67.2806838368243\r\n ],\r\n [\r\n 15.3771164789342,\r\n 67.2808284544673\r\n ],\r\n [\r\n 15.3770107330355,\r\n 67.2809504290938\r\n ],\r\n [\r\n 15.3769177266763,\r\n 67.2810267151287\r\n ],\r\n [\r\n 15.3768517365313,\r\n 67.2810798841706\r\n ],\r\n [\r\n 15.3767934673583,\r\n 67.2811223604665\r\n ],\r\n [\r\n 15.376770929243,\r\n 67.2811499520233\r\n ],\r\n [\r\n 15.3765665647004,\r\n 67.2813014006287\r\n ],\r\n [\r\n 15.3764540402024,\r\n 67.2813909184141\r\n ],\r\n [\r\n 15.3763448138979,\r\n 67.2814688567562\r\n ],\r\n [\r\n 15.3762830694236,\r\n 67.2815265904449\r\n ],\r\n [\r\n 15.376243716107,\r\n 67.2815621151333\r\n ],\r\n [\r\n 15.3760316355895,\r\n 67.2817250630388\r\n ],\r\n [\r\n 15.3758934600415,\r\n 67.2818215475501\r\n ],\r\n [\r\n 15.3758247793693,\r\n 67.2818810016329\r\n ],\r\n [\r\n 15.3757566400448,\r\n 67.2819305871331\r\n ],\r\n [\r\n 15.375688486405,\r\n 67.2819792756112\r\n ],\r\n [\r\n 15.3754769837294,\r\n 67.2821351349055\r\n ],\r\n [\r\n 15.3753480162037,\r\n 67.2822272019887\r\n ],\r\n [\r\n 15.3752389865091,\r\n 67.2823033450454\r\n ],\r\n [\r\n 15.3751760554235,\r\n 67.2823448448957\r\n ],\r\n [\r\n 15.3751585628123,\r\n 67.2823985278889\r\n ],\r\n [\r\n 15.3750076352651,\r\n 67.2825110084504\r\n ],\r\n [\r\n 15.3748885588628,\r\n 67.2825977596151\r\n ],\r\n [\r\n 15.3747578783401,\r\n 67.2826844480518\r\n ],\r\n [\r\n 15.374693277009,\r\n 67.282752862378\r\n ],\r\n [\r\n 15.3746217001592,\r\n 67.2828203959147\r\n ],\r\n [\r\n 15.374563000724,\r\n 67.2828655634573\r\n ],\r\n [\r\n 15.3745255969256,\r\n 67.2829073623458\r\n ],\r\n [\r\n 15.3743881135665,\r\n 67.283063944637\r\n ],\r\n [\r\n 15.3743243378277,\r\n 67.2831556795537\r\n ],\r\n [\r\n 15.374293054567,\r\n 67.2832477872706\r\n ],\r\n [\r\n 15.3742785452555,\r\n 67.2833292710052\r\n ],\r\n [\r\n 15.3742532205986,\r\n 67.2834017199688\r\n ],\r\n [\r\n 15.3742462580919,\r\n 67.2834760996175\r\n ],\r\n [\r\n 15.3742296027541,\r\n 67.2835539105377\r\n ],\r\n [\r\n 15.3742316381411,\r\n 67.2835951689796\r\n ],\r\n [\r\n 15.37423081072,\r\n 67.2836463013714\r\n ],\r\n [\r\n 15.3742348829201,\r\n 67.2837289079532\r\n ],\r\n [\r\n 15.3742468531296,\r\n 67.2837971437283\r\n ],\r\n [\r\n 15.3742822099818,\r\n 67.2838620957368\r\n ],\r\n [\r\n 15.3743159775542,\r\n 67.2839144033777\r\n ],\r\n [\r\n 15.3743621249057,\r\n 67.2839569942923\r\n ],\r\n [\r\n 15.3743952271348,\r\n 67.283981495671\r\n ],\r\n [\r\n 15.3745007416358,\r\n 67.2841107802944\r\n ],\r\n [\r\n 15.374583264642,\r\n 67.284164499184\r\n ],\r\n [\r\n 15.3746400666322,\r\n 67.2842206102689\r\n ],\r\n [\r\n 15.3747221962206,\r\n 67.2842788151332\r\n ],\r\n [\r\n 15.3748537459752,\r\n 67.2843661477116\r\n ],\r\n [\r\n 15.3749713426095,\r\n 67.2844515392876\r\n ],\r\n [\r\n 15.3750752961971,\r\n 67.2844954303362\r\n ],\r\n [\r\n 15.3751216079964,\r\n 67.2845335355222\r\n ],\r\n [\r\n 15.3751847254265,\r\n 67.2845629900107\r\n ],\r\n [\r\n 15.3753253300162,\r\n 67.2846503907668\r\n ],\r\n [\r\n 15.375425678179,\r\n 67.2847159083302\r\n ],\r\n [\r\n 15.3755323920554,\r\n 67.2847877798371\r\n ],\r\n [\r\n 15.3755874470447,\r\n 67.2848358214417\r\n ],\r\n [\r\n 15.3756246525009,\r\n 67.2848702699631\r\n ],\r\n [\r\n 15.3756591842366,\r\n 67.2849118112294\r\n ],\r\n [\r\n 15.3756919386832,\r\n 67.2849435790638\r\n ],\r\n [\r\n 15.3758063669406,\r\n 67.2850782241495\r\n ],\r\n [\r\n 15.3758516951647,\r\n 67.2851719470168\r\n ],\r\n [\r\n 15.3758910322077,\r\n 67.2852090815681\r\n ],\r\n [\r\n 15.3759305733437,\r\n 67.2852444215811\r\n ],\r\n [\r\n 15.3759686233149,\r\n 67.2853030877398\r\n ],\r\n [\r\n 15.3759993443859,\r\n 67.2853679605151\r\n ],\r\n [\r\n 15.3760109420081,\r\n 67.2854416688841\r\n ],\r\n [\r\n 15.3760234597868,\r\n 67.2855000359606\r\n ],\r\n [\r\n 15.3760372023321,\r\n 67.2855773274101\r\n ],\r\n [\r\n 15.3760401624892,\r\n 67.2856033342257\r\n ],\r\n [\r\n 15.3760437888588,\r\n 67.2856570575731\r\n ],\r\n [\r\n 15.376069047096,\r\n 67.2857731632783\r\n ],\r\n [\r\n 15.376071535475,\r\n 67.2858431254503\r\n ],\r\n [\r\n 15.3760895399172,\r\n 67.2859257890721\r\n ],\r\n [\r\n 15.3760922323384,\r\n 67.285993956714\r\n ],\r\n [\r\n 15.3761054056546,\r\n 67.2860793227161\r\n ],\r\n [\r\n 15.3760778952316,\r\n 67.2861454081816\r\n ],\r\n [\r\n 15.3760494912601,\r\n 67.2862285392177\r\n ],\r\n [\r\n 15.3759608629121,\r\n 67.2863487686083\r\n ],\r\n [\r\n 15.3758877594199,\r\n 67.2864378348486\r\n ],\r\n [\r\n 15.3758187137468,\r\n 67.2865044659265\r\n ],\r\n [\r\n 15.3757459043785,\r\n 67.2865530755617\r\n ],\r\n [\r\n 15.3756049882657,\r\n 67.2867284146561\r\n ],\r\n [\r\n 15.3755203317618,\r\n 67.2868209164192\r\n ],\r\n [\r\n 15.3754667582322,\r\n 67.2868975578678\r\n ],\r\n [\r\n 15.3753976679915,\r\n 67.2869614977842\r\n ],\r\n [\r\n 15.3753509873472,\r\n 67.2870040361246\r\n ],\r\n [\r\n 15.3753083388314,\r\n 67.2870521265917\r\n ],\r\n [\r\n 15.375221468507,\r\n 67.287181321697\r\n ],\r\n [\r\n 15.3751979354663,\r\n 67.2872645308933\r\n ],\r\n [\r\n 15.3752046564325,\r\n 67.2873381609831\r\n ],\r\n [\r\n 15.3752587665418,\r\n 67.2873996602812\r\n ],\r\n [\r\n 15.3753221336176,\r\n 67.2874594335938\r\n ],\r\n [\r\n 15.3753820133851,\r\n 67.2875039655966\r\n ],\r\n [\r\n 15.3754442142171,\r\n 67.2875484921547\r\n ],\r\n [\r\n 15.3756423971077,\r\n 67.2876804299719\r\n ],\r\n [\r\n 15.3757170337676,\r\n 67.287748339718\r\n ],\r\n [\r\n 15.3757943449596,\r\n 67.2878091566754\r\n ],\r\n [\r\n 15.3758842415639,\r\n 67.2878584622353\r\n ],\r\n [\r\n 15.375923569024,\r\n 67.2878946997719\r\n ],\r\n [\r\n 15.3759970273043,\r\n 67.2879465553918\r\n ],\r\n [\r\n 15.3761928801678,\r\n 67.2880775112593\r\n ],\r\n [\r\n 15.3762816391461,\r\n 67.2881429657179\r\n ],\r\n [\r\n 15.3763306465595,\r\n 67.2881747850665\r\n ],\r\n [\r\n 15.3763951577335,\r\n 67.2882184088241\r\n ],\r\n [\r\n 15.3764548655646,\r\n 67.2882665289345\r\n ],\r\n [\r\n 15.3765089105332,\r\n 67.2882939410046\r\n ],\r\n [\r\n 15.3765722858143,\r\n 67.2883390922959\r\n ],\r\n [\r\n 15.3765620948808,\r\n 67.2883404617129\r\n ],\r\n [\r\n 15.3765025626435,\r\n 67.2883479568014\r\n ],\r\n [\r\n 15.3749494954004,\r\n 67.2887289662596\r\n ],\r\n [\r\n 15.3739230843261,\r\n 67.2881895544851\r\n ],\r\n [\r\n 15.3726818593242,\r\n 67.2873250143826\r\n ],\r\n [\r\n 15.3706177405464,\r\n 67.2859179601456\r\n ],\r\n [\r\n 15.3690137344318,\r\n 67.2849436250222\r\n ],\r\n [\r\n 15.3683195978309,\r\n 67.2846698308391\r\n ],\r\n [\r\n 15.3675589311013,\r\n 67.2843693648226\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3726502573998 67.2846399334538)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91419004,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91419004\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3762030769895,\r\n 67.2862845129408\r\n ],\r\n [\r\n 15.3831604768567,\r\n 67.2876133444677\r\n ],\r\n [\r\n 15.3823195736797,\r\n 67.2878447166932\r\n ],\r\n [\r\n 15.3819418793325,\r\n 67.2879421347568\r\n ],\r\n [\r\n 15.3816393526582,\r\n 67.2880231372729\r\n ],\r\n [\r\n 15.381258291067,\r\n 67.2881280967291\r\n ],\r\n [\r\n 15.3810808151565,\r\n 67.2881769570567\r\n ],\r\n [\r\n 15.3808266288147,\r\n 67.2882477070046\r\n ],\r\n [\r\n 15.3777121721761,\r\n 67.2890055085107\r\n ],\r\n [\r\n 15.3776724917236,\r\n 67.2889766278455\r\n ],\r\n [\r\n 15.3775862803476,\r\n 67.2889112578656\r\n ],\r\n [\r\n 15.377492128027,\r\n 67.2888574781193\r\n ],\r\n [\r\n 15.3773605863254,\r\n 67.2887728387409\r\n ],\r\n [\r\n 15.3771751604967,\r\n 67.2886563019215\r\n ],\r\n [\r\n 15.3771069243435,\r\n 67.2885973480817\r\n ],\r\n [\r\n 15.3770575480688,\r\n 67.2885717193082\r\n ],\r\n [\r\n 15.3770297830227,\r\n 67.2885329432505\r\n ],\r\n [\r\n 15.3769676189545,\r\n 67.2884911082908\r\n ],\r\n [\r\n 15.3768610459714,\r\n 67.288414752273\r\n ],\r\n [\r\n 15.3766455670557,\r\n 67.2882611484696\r\n ],\r\n [\r\n 15.3765961652283,\r\n 67.2882338152672\r\n ],\r\n [\r\n 15.3765409231929,\r\n 67.2881892728468\r\n ],\r\n [\r\n 15.3764719725815,\r\n 67.2881437757938\r\n ],\r\n [\r\n 15.3764227329547,\r\n 67.2881119570318\r\n ],\r\n [\r\n 15.3763342072021,\r\n 67.2880465918067\r\n ],\r\n [\r\n 15.3761381203275,\r\n 67.2879155469552\r\n ],\r\n [\r\n 15.376069361197,\r\n 67.2878673582066\r\n ],\r\n [\r\n 15.3760253342156,\r\n 67.2878274538975\r\n ],\r\n [\r\n 15.375935874921,\r\n 67.2877764430448\r\n ],\r\n [\r\n 15.3758626212912,\r\n 67.2877227928677\r\n ],\r\n [\r\n 15.3757884203863,\r\n 67.2876530881187\r\n ],\r\n [\r\n 15.3755853056175,\r\n 67.2875174842025\r\n ],\r\n [\r\n 15.3755277757409,\r\n 67.2874748305369\r\n ],\r\n [\r\n 15.375467923835,\r\n 67.2874320925735\r\n ],\r\n [\r\n 15.3754132290891,\r\n 67.2873777709135\r\n ],\r\n [\r\n 15.375367643296,\r\n 67.2873271057627\r\n ],\r\n [\r\n 15.3753599577821,\r\n 67.2872660362868\r\n ],\r\n [\r\n 15.3753829623353,\r\n 67.2871935926048\r\n ],\r\n [\r\n 15.3754650409368,\r\n 67.2870697010561\r\n ],\r\n [\r\n 15.3755026676127,\r\n 67.2870270044338\r\n ],\r\n [\r\n 15.3755493746941,\r\n 67.2869861703355\r\n ],\r\n [\r\n 15.3756186138739,\r\n 67.2869169375553\r\n ],\r\n [\r\n 15.3756768285088,\r\n 67.2868402852057\r\n ],\r\n [\r\n 15.3757568429483,\r\n 67.2867477942138\r\n ],\r\n [\r\n 15.3758976102605,\r\n 67.2865778374857\r\n ],\r\n [\r\n 15.3759655725256,\r\n 67.2865309434701\r\n ],\r\n [\r\n 15.3760396405919,\r\n 67.2864590081256\r\n ],\r\n [\r\n 15.3761175623062,\r\n 67.286366432139\r\n ],\r\n [\r\n 15.3761736417984,\r\n 67.2862870038167\r\n ],\r\n [\r\n 15.3762030769895,\r\n 67.2862845129408\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3785333849818 67.2876208263041)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91025871,\r\n \"knr\": \"1841\",\r\n \"gnr\": 105,\r\n \"bnr\": 8,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"LUNDLIE\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 9241494,\r\n \"navn\": \"OMYA HUSTADMARMOR AS\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": \"Sjøvegen 69\",\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"6440\",\r\n \"poststed\": \"ELNESVÅGEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": null,\r\n \"etternavn\": null,\r\n \"personStatusKode\": null,\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": \"912864227\",\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 91419032,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91419032\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3675589311013,\r\n 67.2843693648226\r\n ],\r\n [\r\n 15.3663348931062,\r\n 67.283903643851\r\n ],\r\n [\r\n 15.3694679105581,\r\n 67.2829392547463\r\n ],\r\n [\r\n 15.3717331779583,\r\n 67.2821907545467\r\n ],\r\n [\r\n 15.3720454614911,\r\n 67.2821280472765\r\n ],\r\n [\r\n 15.3767796258147,\r\n 67.2806838368243\r\n ],\r\n [\r\n 15.3771164789342,\r\n 67.2808284544673\r\n ],\r\n [\r\n 15.3770107330355,\r\n 67.2809504290938\r\n ],\r\n [\r\n 15.3769177266763,\r\n 67.2810267151287\r\n ],\r\n [\r\n 15.3768517365313,\r\n 67.2810798841706\r\n ],\r\n [\r\n 15.3767934673583,\r\n 67.2811223604665\r\n ],\r\n [\r\n 15.376770929243,\r\n 67.2811499520233\r\n ],\r\n [\r\n 15.3765665647004,\r\n 67.2813014006287\r\n ],\r\n [\r\n 15.3764540402024,\r\n 67.2813909184141\r\n ],\r\n [\r\n 15.3763448138979,\r\n 67.2814688567562\r\n ],\r\n [\r\n 15.3762830694236,\r\n 67.2815265904449\r\n ],\r\n [\r\n 15.376243716107,\r\n 67.2815621151333\r\n ],\r\n [\r\n 15.3760316355895,\r\n 67.2817250630388\r\n ],\r\n [\r\n 15.3758934600415,\r\n 67.2818215475501\r\n ],\r\n [\r\n 15.3758247793693,\r\n 67.2818810016329\r\n ],\r\n [\r\n 15.3757566400448,\r\n 67.2819305871331\r\n ],\r\n [\r\n 15.375688486405,\r\n 67.2819792756112\r\n ],\r\n [\r\n 15.3754769837294,\r\n 67.2821351349055\r\n ],\r\n [\r\n 15.3753480162037,\r\n 67.2822272019887\r\n ],\r\n [\r\n 15.3752389865091,\r\n 67.2823033450454\r\n ],\r\n [\r\n 15.3751760554235,\r\n 67.2823448448957\r\n ],\r\n [\r\n 15.3751585628123,\r\n 67.2823985278889\r\n ],\r\n [\r\n 15.3750076352651,\r\n 67.2825110084504\r\n ],\r\n [\r\n 15.3748885588628,\r\n 67.2825977596151\r\n ],\r\n [\r\n 15.3747578783401,\r\n 67.2826844480518\r\n ],\r\n [\r\n 15.374693277009,\r\n 67.282752862378\r\n ],\r\n [\r\n 15.3746217001592,\r\n 67.2828203959147\r\n ],\r\n [\r\n 15.374563000724,\r\n 67.2828655634573\r\n ],\r\n [\r\n 15.3745255969256,\r\n 67.2829073623458\r\n ],\r\n [\r\n 15.3743881135665,\r\n 67.283063944637\r\n ],\r\n [\r\n 15.3743243378277,\r\n 67.2831556795537\r\n ],\r\n [\r\n 15.374293054567,\r\n 67.2832477872706\r\n ],\r\n [\r\n 15.3742785452555,\r\n 67.2833292710052\r\n ],\r\n [\r\n 15.3742532205986,\r\n 67.2834017199688\r\n ],\r\n [\r\n 15.3742462580919,\r\n 67.2834760996175\r\n ],\r\n [\r\n 15.3742296027541,\r\n 67.2835539105377\r\n ],\r\n [\r\n 15.3742316381411,\r\n 67.2835951689796\r\n ],\r\n [\r\n 15.37423081072,\r\n 67.2836463013714\r\n ],\r\n [\r\n 15.3742348829201,\r\n 67.2837289079532\r\n ],\r\n [\r\n 15.3742468531296,\r\n 67.2837971437283\r\n ],\r\n [\r\n 15.3742822099818,\r\n 67.2838620957368\r\n ],\r\n [\r\n 15.3743159775542,\r\n 67.2839144033777\r\n ],\r\n [\r\n 15.3743621249057,\r\n 67.2839569942923\r\n ],\r\n [\r\n 15.3743952271348,\r\n 67.283981495671\r\n ],\r\n [\r\n 15.3745007416358,\r\n 67.2841107802944\r\n ],\r\n [\r\n 15.374583264642,\r\n 67.284164499184\r\n ],\r\n [\r\n 15.3746400666322,\r\n 67.2842206102689\r\n ],\r\n [\r\n 15.3747221962206,\r\n 67.2842788151332\r\n ],\r\n [\r\n 15.3748537459752,\r\n 67.2843661477116\r\n ],\r\n [\r\n 15.3749713426095,\r\n 67.2844515392876\r\n ],\r\n [\r\n 15.3750752961971,\r\n 67.2844954303362\r\n ],\r\n [\r\n 15.3751216079964,\r\n 67.2845335355222\r\n ],\r\n [\r\n 15.3751847254265,\r\n 67.2845629900107\r\n ],\r\n [\r\n 15.3753253300162,\r\n 67.2846503907668\r\n ],\r\n [\r\n 15.375425678179,\r\n 67.2847159083302\r\n ],\r\n [\r\n 15.3755323920554,\r\n 67.2847877798371\r\n ],\r\n [\r\n 15.3755874470447,\r\n 67.2848358214417\r\n ],\r\n [\r\n 15.3756246525009,\r\n 67.2848702699631\r\n ],\r\n [\r\n 15.3756591842366,\r\n 67.2849118112294\r\n ],\r\n [\r\n 15.3756919386832,\r\n 67.2849435790638\r\n ],\r\n [\r\n 15.3758063669406,\r\n 67.2850782241495\r\n ],\r\n [\r\n 15.3758516951647,\r\n 67.2851719470168\r\n ],\r\n [\r\n 15.3758910322077,\r\n 67.2852090815681\r\n ],\r\n [\r\n 15.3759305733437,\r\n 67.2852444215811\r\n ],\r\n [\r\n 15.3759686233149,\r\n 67.2853030877398\r\n ],\r\n [\r\n 15.3759993443859,\r\n 67.2853679605151\r\n ],\r\n [\r\n 15.3760109420081,\r\n 67.2854416688841\r\n ],\r\n [\r\n 15.3760234597868,\r\n 67.2855000359606\r\n ],\r\n [\r\n 15.3760372023321,\r\n 67.2855773274101\r\n ],\r\n [\r\n 15.3760401624892,\r\n 67.2856033342257\r\n ],\r\n [\r\n 15.3760437888588,\r\n 67.2856570575731\r\n ],\r\n [\r\n 15.376069047096,\r\n 67.2857731632783\r\n ],\r\n [\r\n 15.376071535475,\r\n 67.2858431254503\r\n ],\r\n [\r\n 15.3760895399172,\r\n 67.2859257890721\r\n ],\r\n [\r\n 15.3760922323384,\r\n 67.285993956714\r\n ],\r\n [\r\n 15.3761054056546,\r\n 67.2860793227161\r\n ],\r\n [\r\n 15.3760778952316,\r\n 67.2861454081816\r\n ],\r\n [\r\n 15.3760494912601,\r\n 67.2862285392177\r\n ],\r\n [\r\n 15.3759608629121,\r\n 67.2863487686083\r\n ],\r\n [\r\n 15.3758877594199,\r\n 67.2864378348486\r\n ],\r\n [\r\n 15.3758187137468,\r\n 67.2865044659265\r\n ],\r\n [\r\n 15.3757459043785,\r\n 67.2865530755617\r\n ],\r\n [\r\n 15.3756049882657,\r\n 67.2867284146561\r\n ],\r\n [\r\n 15.3755203317618,\r\n 67.2868209164192\r\n ],\r\n [\r\n 15.3754667582322,\r\n 67.2868975578678\r\n ],\r\n [\r\n 15.3753976679915,\r\n 67.2869614977842\r\n ],\r\n [\r\n 15.3753509873472,\r\n 67.2870040361246\r\n ],\r\n [\r\n 15.3753083388314,\r\n 67.2870521265917\r\n ],\r\n [\r\n 15.375221468507,\r\n 67.287181321697\r\n ],\r\n [\r\n 15.3751979354663,\r\n 67.2872645308933\r\n ],\r\n [\r\n 15.3752046564325,\r\n 67.2873381609831\r\n ],\r\n [\r\n 15.3752587665418,\r\n 67.2873996602812\r\n ],\r\n [\r\n 15.3753221336176,\r\n 67.2874594335938\r\n ],\r\n [\r\n 15.3753820133851,\r\n 67.2875039655966\r\n ],\r\n [\r\n 15.3754442142171,\r\n 67.2875484921547\r\n ],\r\n [\r\n 15.3756423971077,\r\n 67.2876804299719\r\n ],\r\n [\r\n 15.3757170337676,\r\n 67.287748339718\r\n ],\r\n [\r\n 15.3757943449596,\r\n 67.2878091566754\r\n ],\r\n [\r\n 15.3758842415639,\r\n 67.2878584622353\r\n ],\r\n [\r\n 15.375923569024,\r\n 67.2878946997719\r\n ],\r\n [\r\n 15.3759970273043,\r\n 67.2879465553918\r\n ],\r\n [\r\n 15.3761928801678,\r\n 67.2880775112593\r\n ],\r\n [\r\n 15.3762816391461,\r\n 67.2881429657179\r\n ],\r\n [\r\n 15.3763306465595,\r\n 67.2881747850665\r\n ],\r\n [\r\n 15.3763951577335,\r\n 67.2882184088241\r\n ],\r\n [\r\n 15.3764548655646,\r\n 67.2882665289345\r\n ],\r\n [\r\n 15.3765089105332,\r\n 67.2882939410046\r\n ],\r\n [\r\n 15.3765722858143,\r\n 67.2883390922959\r\n ],\r\n [\r\n 15.3765620948808,\r\n 67.2883404617129\r\n ],\r\n [\r\n 15.3765025626435,\r\n 67.2883479568014\r\n ],\r\n [\r\n 15.3749494954004,\r\n 67.2887289662596\r\n ],\r\n [\r\n 15.3739230843261,\r\n 67.2881895544851\r\n ],\r\n [\r\n 15.3726818593242,\r\n 67.2873250143826\r\n ],\r\n [\r\n 15.3706177405464,\r\n 67.2859179601456\r\n ],\r\n [\r\n 15.3690137344318,\r\n 67.2849436250222\r\n ],\r\n [\r\n 15.3683195978309,\r\n 67.2846698308391\r\n ],\r\n [\r\n 15.3675589311013,\r\n 67.2843693648226\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3726502573998 67.2846399334538)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91419004,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91419004\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3762030769895,\r\n 67.2862845129408\r\n ],\r\n [\r\n 15.3831604768567,\r\n 67.2876133444677\r\n ],\r\n [\r\n 15.3823195736797,\r\n 67.2878447166932\r\n ],\r\n [\r\n 15.3819418793325,\r\n 67.2879421347568\r\n ],\r\n [\r\n 15.3816393526582,\r\n 67.2880231372729\r\n ],\r\n [\r\n 15.381258291067,\r\n 67.2881280967291\r\n ],\r\n [\r\n 15.3810808151565,\r\n 67.2881769570567\r\n ],\r\n [\r\n 15.3808266288147,\r\n 67.2882477070046\r\n ],\r\n [\r\n 15.3777121721761,\r\n 67.2890055085107\r\n ],\r\n [\r\n 15.3776724917236,\r\n 67.2889766278455\r\n ],\r\n [\r\n 15.3775862803476,\r\n 67.2889112578656\r\n ],\r\n [\r\n 15.377492128027,\r\n 67.2888574781193\r\n ],\r\n [\r\n 15.3773605863254,\r\n 67.2887728387409\r\n ],\r\n [\r\n 15.3771751604967,\r\n 67.2886563019215\r\n ],\r\n [\r\n 15.3771069243435,\r\n 67.2885973480817\r\n ],\r\n [\r\n 15.3770575480688,\r\n 67.2885717193082\r\n ],\r\n [\r\n 15.3770297830227,\r\n 67.2885329432505\r\n ],\r\n [\r\n 15.3769676189545,\r\n 67.2884911082908\r\n ],\r\n [\r\n 15.3768610459714,\r\n 67.288414752273\r\n ],\r\n [\r\n 15.3766455670557,\r\n 67.2882611484696\r\n ],\r\n [\r\n 15.3765961652283,\r\n 67.2882338152672\r\n ],\r\n [\r\n 15.3765409231929,\r\n 67.2881892728468\r\n ],\r\n [\r\n 15.3764719725815,\r\n 67.2881437757938\r\n ],\r\n [\r\n 15.3764227329547,\r\n 67.2881119570318\r\n ],\r\n [\r\n 15.3763342072021,\r\n 67.2880465918067\r\n ],\r\n [\r\n 15.3761381203275,\r\n 67.2879155469552\r\n ],\r\n [\r\n 15.376069361197,\r\n 67.2878673582066\r\n ],\r\n [\r\n 15.3760253342156,\r\n 67.2878274538975\r\n ],\r\n [\r\n 15.375935874921,\r\n 67.2877764430448\r\n ],\r\n [\r\n 15.3758626212912,\r\n 67.2877227928677\r\n ],\r\n [\r\n 15.3757884203863,\r\n 67.2876530881187\r\n ],\r\n [\r\n 15.3755853056175,\r\n 67.2875174842025\r\n ],\r\n [\r\n 15.3755277757409,\r\n 67.2874748305369\r\n ],\r\n [\r\n 15.375467923835,\r\n 67.2874320925735\r\n ],\r\n [\r\n 15.3754132290891,\r\n 67.2873777709135\r\n ],\r\n [\r\n 15.375367643296,\r\n 67.2873271057627\r\n ],\r\n [\r\n 15.3753599577821,\r\n 67.2872660362868\r\n ],\r\n [\r\n 15.3753829623353,\r\n 67.2871935926048\r\n ],\r\n [\r\n 15.3754650409368,\r\n 67.2870697010561\r\n ],\r\n [\r\n 15.3755026676127,\r\n 67.2870270044338\r\n ],\r\n [\r\n 15.3755493746941,\r\n 67.2869861703355\r\n ],\r\n [\r\n 15.3756186138739,\r\n 67.2869169375553\r\n ],\r\n [\r\n 15.3756768285088,\r\n 67.2868402852057\r\n ],\r\n [\r\n 15.3757568429483,\r\n 67.2867477942138\r\n ],\r\n [\r\n 15.3758976102605,\r\n 67.2865778374857\r\n ],\r\n [\r\n 15.3759655725256,\r\n 67.2865309434701\r\n ],\r\n [\r\n 15.3760396405919,\r\n 67.2864590081256\r\n ],\r\n [\r\n 15.3761175623062,\r\n 67.286366432139\r\n ],\r\n [\r\n 15.3761736417984,\r\n 67.2862870038167\r\n ],\r\n [\r\n 15.3762030769895,\r\n 67.2862845129408\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3785333849818 67.2876208263041)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91419015,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91419015\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3746269922464,\r\n 67.2829662399724\r\n ],\r\n [\r\n 15.3746774545595,\r\n 67.2829285369293\r\n ],\r\n [\r\n 15.3747146820804,\r\n 67.2828903265195\r\n ],\r\n [\r\n 15.3747685350771,\r\n 67.2828468745742\r\n ],\r\n [\r\n 15.3748449297809,\r\n 67.2827758313315\r\n ],\r\n [\r\n 15.374904712576,\r\n 67.2827109265876\r\n ],\r\n [\r\n 15.3750305759828,\r\n 67.282627837378\r\n ],\r\n [\r\n 15.3751496506191,\r\n 67.2825409964092\r\n ],\r\n [\r\n 15.37531526247,\r\n 67.2824178965084\r\n ],\r\n [\r\n 15.3753323201208,\r\n 67.2823660982682\r\n ],\r\n [\r\n 15.3753807969344,\r\n 67.2823351273293\r\n ],\r\n [\r\n 15.3754900317051,\r\n 67.2822572793475\r\n ],\r\n [\r\n 15.3756187668151,\r\n 67.2821652126933\r\n ],\r\n [\r\n 15.375830500865,\r\n 67.2820093526704\r\n ],\r\n [\r\n 15.3758984222716,\r\n 67.2819606646753\r\n ],\r\n [\r\n 15.375971405923,\r\n 67.2819092737271\r\n ],\r\n [\r\n 15.3760400863127,\r\n 67.2818498195821\r\n ],\r\n [\r\n 15.3761736489741,\r\n 67.2817551397962\r\n ],\r\n [\r\n 15.3763905451113,\r\n 67.2815885923171\r\n ],\r\n [\r\n 15.3764347440877,\r\n 67.2815513518903\r\n ],\r\n [\r\n 15.3764916424428,\r\n 67.2814953338481\r\n ],\r\n [\r\n 15.3765962560275,\r\n 67.2814192002699\r\n ],\r\n [\r\n 15.3767131885847,\r\n 67.2813296720492\r\n ],\r\n [\r\n 15.3769223700063,\r\n 67.2811747135543\r\n ],\r\n [\r\n 15.376945139993,\r\n 67.2811471214321\r\n ],\r\n [\r\n 15.3769985914192,\r\n 67.2811081547876\r\n ],\r\n [\r\n 15.3770645531467,\r\n 67.2810531916994\r\n ],\r\n [\r\n 15.3771575591416,\r\n 67.2809769055799\r\n ],\r\n [\r\n 15.3772666875645,\r\n 67.280893046528\r\n ],\r\n [\r\n 15.3785036490798,\r\n 67.2814241369808\r\n ],\r\n [\r\n 15.3785961376571,\r\n 67.2814624014984\r\n ],\r\n [\r\n 15.384336470056,\r\n 67.2831323122276\r\n ],\r\n [\r\n 15.3851406996948,\r\n 67.2842716733419\r\n ],\r\n [\r\n 15.3859888303042,\r\n 67.2854808930293\r\n ],\r\n [\r\n 15.3857583126899,\r\n 67.2856932344866\r\n ],\r\n [\r\n 15.3746269922464,\r\n 67.2829662399724\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3803869264795 67.2832649235144)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91023691,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 5,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"SØRVOLL\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474576708,\r\n \"navn\": \"ASSOSIASJON DOGMATISK\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Rennsjøvegen 30\",\r\n \"adresselinje3\": \"6699 KJØRSVIKBUGEN\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"6699\",\r\n \"poststed\": \"KJØRSVIKBUGEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"DOGMATISK\",\r\n \"etternavn\": \"ASSOSIASJON\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Erikstadveien 17\",\r\n \"postnummer\": \"8206\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Erikstadveien\",\r\n \"bokstav\": null,\r\n \"nummer\": 17,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 91393413,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393413\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3506537302221,\r\n 67.2719927719299\r\n ],\r\n [\r\n 15.3511504560188,\r\n 67.2719070075405\r\n ],\r\n [\r\n 15.3518375872825,\r\n 67.2719628237619\r\n ],\r\n [\r\n 15.3529510758007,\r\n 67.272053222929\r\n ],\r\n [\r\n 15.3530291011117,\r\n 67.2721226606339\r\n ],\r\n [\r\n 15.3528321964415,\r\n 67.2747926407253\r\n ],\r\n [\r\n 15.3528186298119,\r\n 67.2749587098857\r\n ],\r\n [\r\n 15.3529377982464,\r\n 67.2759805185308\r\n ],\r\n [\r\n 15.3501215860048,\r\n 67.2753778704266\r\n ],\r\n [\r\n 15.3501887734946,\r\n 67.2747673881711\r\n ],\r\n [\r\n 15.3503647684401,\r\n 67.2736652781771\r\n ],\r\n [\r\n 15.3506429166874,\r\n 67.2721259140998\r\n ],\r\n [\r\n 15.3506537302221,\r\n 67.2719927719299\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.351664729908 67.2738776804338)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393526,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393526\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3638995035491,\r\n 67.2826362095059\r\n ],\r\n [\r\n 15.3639892838017,\r\n 67.2826654285708\r\n ],\r\n [\r\n 15.3641429948963,\r\n 67.2827177356624\r\n ],\r\n [\r\n 15.3641455609156,\r\n 67.2827186268721\r\n ],\r\n [\r\n 15.364229809599,\r\n 67.2827502803073\r\n ],\r\n [\r\n 15.3644323718004,\r\n 67.2828257990316\r\n ],\r\n [\r\n 15.3646522642244,\r\n 67.2829116836643\r\n ],\r\n [\r\n 15.3648051138698,\r\n 67.2829834575262\r\n ],\r\n [\r\n 15.3649198510769,\r\n 67.2830514605975\r\n ],\r\n [\r\n 15.3650715692886,\r\n 67.2831402802543\r\n ],\r\n [\r\n 15.3651539995239,\r\n 67.2832047684587\r\n ],\r\n [\r\n 15.3652074426549,\r\n 67.2832552392136\r\n ],\r\n [\r\n 15.3652267607058,\r\n 67.2832895513662\r\n ],\r\n [\r\n 15.3652451082573,\r\n 67.2833363343713\r\n ],\r\n [\r\n 15.3652630968629,\r\n 67.2833900252833\r\n ],\r\n [\r\n 15.3653007203777,\r\n 67.2835293374505\r\n ],\r\n [\r\n 15.3653328844158,\r\n 67.2836605887947\r\n ],\r\n [\r\n 15.3653321731356,\r\n 67.2837358508142\r\n ],\r\n [\r\n 15.3653546420211,\r\n 67.2839466903147\r\n ],\r\n [\r\n 15.3653691341939,\r\n 67.2840755598588\r\n ],\r\n [\r\n 15.3653709960612,\r\n 67.2840911638606\r\n ],\r\n [\r\n 15.3642268066027,\r\n 67.2845562675175\r\n ],\r\n [\r\n 15.3598686170598,\r\n 67.2861794752309\r\n ],\r\n [\r\n 15.3596377765291,\r\n 67.2862621594472\r\n ],\r\n [\r\n 15.3575390181712,\r\n 67.2850426736556\r\n ],\r\n [\r\n 15.3580241640814,\r\n 67.2848797702651\r\n ],\r\n [\r\n 15.3612856002769,\r\n 67.2836441746092\r\n ],\r\n [\r\n 15.3638696700012,\r\n 67.2826428253526\r\n ],\r\n [\r\n 15.3638995035491,\r\n 67.2826362095059\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3617650516847 67.2844482698065)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393617,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393617\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.352130967135,\r\n 67.2501218234271\r\n ],\r\n [\r\n 15.3521429025371,\r\n 67.2501153864116\r\n ],\r\n [\r\n 15.3521508283785,\r\n 67.2501172050081\r\n ],\r\n [\r\n 15.3524599651563,\r\n 67.2502125981208\r\n ],\r\n [\r\n 15.3526688177237,\r\n 67.2502800443528\r\n ],\r\n [\r\n 15.3527683209008,\r\n 67.2503177699627\r\n ],\r\n [\r\n 15.353074003976,\r\n 67.2504301233187\r\n ],\r\n [\r\n 15.3532117685158,\r\n 67.2504852565268\r\n ],\r\n [\r\n 15.3532566105881,\r\n 67.2505090187803\r\n ],\r\n [\r\n 15.3533197882151,\r\n 67.2505347141206\r\n ],\r\n [\r\n 15.3535725673303,\r\n 67.2506420699261\r\n ],\r\n [\r\n 15.353736815157,\r\n 67.2507172377698\r\n ],\r\n [\r\n 15.3538465778686,\r\n 67.2507747644216\r\n ],\r\n [\r\n 15.3541123078179,\r\n 67.2508957256556\r\n ],\r\n [\r\n 15.3541878708543,\r\n 67.2509283004457\r\n ],\r\n [\r\n 15.3541716094795,\r\n 67.2509413432351\r\n ],\r\n [\r\n 15.3530804034329,\r\n 67.2518130571104\r\n ],\r\n [\r\n 15.3530071894595,\r\n 67.2518774453377\r\n ],\r\n [\r\n 15.3530746997913,\r\n 67.2519138955804\r\n ],\r\n [\r\n 15.3533334178897,\r\n 67.2520459966711\r\n ],\r\n [\r\n 15.354762220419,\r\n 67.252788813387\r\n ],\r\n [\r\n 15.354797552038,\r\n 67.2528116095027\r\n ],\r\n [\r\n 15.3547225504677,\r\n 67.2528803978946\r\n ],\r\n [\r\n 15.3547300997795,\r\n 67.2530308127693\r\n ],\r\n [\r\n 15.3547341255676,\r\n 67.2530366345528\r\n ],\r\n [\r\n 15.354678572656,\r\n 67.2530413321562\r\n ],\r\n [\r\n 15.3538464509729,\r\n 67.253112867743\r\n ],\r\n [\r\n 15.3522401692748,\r\n 67.2532584001439\r\n ],\r\n [\r\n 15.3522075353442,\r\n 67.2532614319447\r\n ],\r\n [\r\n 15.350570448236,\r\n 67.2534096165685\r\n ],\r\n [\r\n 15.3516670052737,\r\n 67.2505472245672\r\n ],\r\n [\r\n 15.3518108540429,\r\n 67.2503372739089\r\n ],\r\n [\r\n 15.352130967135,\r\n 67.2501218234271\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3524876261964 67.2519705364085)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393453,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393453\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3664942718451,\r\n 67.2749156219142\r\n ],\r\n [\r\n 15.3685598220833,\r\n 67.2736209721217\r\n ],\r\n [\r\n 15.3694975169832,\r\n 67.2730406842562\r\n ],\r\n [\r\n 15.3696065594666,\r\n 67.2730875272737\r\n ],\r\n [\r\n 15.3697504383197,\r\n 67.2731220904688\r\n ],\r\n [\r\n 15.3699345172186,\r\n 67.2731462451506\r\n ],\r\n [\r\n 15.3701199635158,\r\n 67.27318385187\r\n ],\r\n [\r\n 15.3704537409127,\r\n 67.2732587914623\r\n ],\r\n [\r\n 15.370641536036,\r\n 67.2732981862182\r\n ],\r\n [\r\n 15.371024386969,\r\n 67.2733663733891\r\n ],\r\n [\r\n 15.3710997036378,\r\n 67.2733919440643\r\n ],\r\n [\r\n 15.3711493717802,\r\n 67.2734088728127\r\n ],\r\n [\r\n 15.3713525334992,\r\n 67.273496850077\r\n ],\r\n [\r\n 15.3714505902306,\r\n 67.2735229062305\r\n ],\r\n [\r\n 15.371568702118,\r\n 67.2735258623488\r\n ],\r\n [\r\n 15.3716653621419,\r\n 67.273536582447\r\n ],\r\n [\r\n 15.3717085169757,\r\n 67.2735522702569\r\n ],\r\n [\r\n 15.3717189739642,\r\n 67.2735684822402\r\n ],\r\n [\r\n 15.3716614487896,\r\n 67.2735984863401\r\n ],\r\n [\r\n 15.3715834092118,\r\n 67.2736218998797\r\n ],\r\n [\r\n 15.3713799746774,\r\n 67.2736514340229\r\n ],\r\n [\r\n 15.3713777029833,\r\n 67.2736845395571\r\n ],\r\n [\r\n 15.3714145182697,\r\n 67.2737252691452\r\n ],\r\n [\r\n 15.3714794039317,\r\n 67.2737662029181\r\n ],\r\n [\r\n 15.3715540583951,\r\n 67.2737938380749\r\n ],\r\n [\r\n 15.371716897697,\r\n 67.2738240499322\r\n ],\r\n [\r\n 15.3719018103048,\r\n 67.273871612837\r\n ],\r\n [\r\n 15.3720649048806,\r\n 67.273933219684\r\n ],\r\n [\r\n 15.3723003704911,\r\n 67.2739498073123\r\n ],\r\n [\r\n 15.3724160379625,\r\n 67.2739894568671\r\n ],\r\n [\r\n 15.3725377703566,\r\n 67.2740462254824\r\n ],\r\n [\r\n 15.3726476151019,\r\n 67.2741441054053\r\n ],\r\n [\r\n 15.3727459171649,\r\n 67.2742006591106\r\n ],\r\n [\r\n 15.3728654276224,\r\n 67.2742187707868\r\n ],\r\n [\r\n 15.373043510208,\r\n 67.2742294804434\r\n ],\r\n [\r\n 15.3731545258056,\r\n 67.2742681535439\r\n ],\r\n [\r\n 15.3731670600097,\r\n 67.2743284046177\r\n ],\r\n [\r\n 15.3730903896863,\r\n 67.2743653608072\r\n ],\r\n [\r\n 15.3728630719238,\r\n 67.2743658886249\r\n ],\r\n [\r\n 15.3728153951378,\r\n 67.2743877970338\r\n ],\r\n [\r\n 15.3728119257985,\r\n 67.2745528579843\r\n ],\r\n [\r\n 15.3727869570596,\r\n 67.2746180400639\r\n ],\r\n [\r\n 15.372674027483,\r\n 67.2747550986587\r\n ],\r\n [\r\n 15.3726445674035,\r\n 67.2748149089739\r\n ],\r\n [\r\n 15.3725805573173,\r\n 67.2749802897458\r\n ],\r\n [\r\n 15.3725262682731,\r\n 67.2749797877373\r\n ],\r\n [\r\n 15.3725259448502,\r\n 67.2749888484555\r\n ],\r\n [\r\n 15.372533810407,\r\n 67.2750323360017\r\n ],\r\n [\r\n 15.3725254009683,\r\n 67.2750734393194\r\n ],\r\n [\r\n 15.3725428667816,\r\n 67.2750927745871\r\n ],\r\n [\r\n 15.3725545971452,\r\n 67.2751012691339\r\n ],\r\n [\r\n 15.3717393311754,\r\n 67.2752437219188\r\n ],\r\n [\r\n 15.3674128912535,\r\n 67.2759934531791\r\n ],\r\n [\r\n 15.3660129368323,\r\n 67.2752051132598\r\n ],\r\n [\r\n 15.3664942718451,\r\n 67.2749156219142\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3695814195544 67.2746049044939)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393350,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393350\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3581695427869,\r\n 67.2784931680239\r\n ],\r\n [\r\n 15.358199526298,\r\n 67.2785435139878\r\n ],\r\n [\r\n 15.3583611189036,\r\n 67.2786757339328\r\n ],\r\n [\r\n 15.3584293882994,\r\n 67.2787263532584\r\n ],\r\n [\r\n 15.3585145681872,\r\n 67.2787907490063\r\n ],\r\n [\r\n 15.3586964688812,\r\n 67.2789309965226\r\n ],\r\n [\r\n 15.3588587401787,\r\n 67.2790461709777\r\n ],\r\n [\r\n 15.3589990411417,\r\n 67.2791349321242\r\n ],\r\n [\r\n 15.3590560563079,\r\n 67.279177503107\r\n ],\r\n [\r\n 15.3591045478439,\r\n 67.2792086112004\r\n ],\r\n [\r\n 15.3592076667215,\r\n 67.2792777207185\r\n ],\r\n [\r\n 15.3593396489982,\r\n 67.2793685633265\r\n ],\r\n [\r\n 15.3593412918276,\r\n 67.2793698154873\r\n ],\r\n [\r\n 15.3594580752041,\r\n 67.2794527084693\r\n ],\r\n [\r\n 15.359629057511,\r\n 67.2795758461857\r\n ],\r\n [\r\n 15.3597403857604,\r\n 67.2796506779488\r\n ],\r\n [\r\n 15.3598912272279,\r\n 67.2797611227281\r\n ],\r\n [\r\n 15.3600556403093,\r\n 67.279894590498\r\n ],\r\n [\r\n 15.3601089194181,\r\n 67.2799508042644\r\n ],\r\n [\r\n 15.3601772297612,\r\n 67.2800036653237\r\n ],\r\n [\r\n 15.3602541100546,\r\n 67.2800555204104\r\n ],\r\n [\r\n 15.3569201425723,\r\n 67.2813463349442\r\n ],\r\n [\r\n 15.354428657164,\r\n 67.2823105901171\r\n ],\r\n [\r\n 15.3543198315464,\r\n 67.282373621846\r\n ],\r\n [\r\n 15.3541266873788,\r\n 67.2819745129549\r\n ],\r\n [\r\n 15.3513489165125,\r\n 67.2808617526952\r\n ],\r\n [\r\n 15.3519151687557,\r\n 67.2806630783307\r\n ],\r\n [\r\n 15.3540712820318,\r\n 67.2799322894748\r\n ],\r\n [\r\n 15.3580553314484,\r\n 67.2785666198611\r\n ],\r\n [\r\n 15.3581695427869,\r\n 67.2784931680239\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3560178319206 67.2804253304618)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393665,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393665\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3536738559855,\r\n 67.2502022133439\r\n ],\r\n [\r\n 15.3533151128976,\r\n 67.2504373071762\r\n ],\r\n [\r\n 15.3531880697093,\r\n 67.2503863664954\r\n ],\r\n [\r\n 15.3528823603351,\r\n 67.250272219358\r\n ],\r\n [\r\n 15.3527784280838,\r\n 67.250232709498\r\n ],\r\n [\r\n 15.3525605094557,\r\n 67.2501633098622\r\n ],\r\n [\r\n 15.3522604652944,\r\n 67.2500716645041\r\n ],\r\n [\r\n 15.3522334238248,\r\n 67.2500606904089\r\n ],\r\n [\r\n 15.3522710979269,\r\n 67.2500381820252\r\n ],\r\n [\r\n 15.3535758707809,\r\n 67.2492590248219\r\n ],\r\n [\r\n 15.354722530654,\r\n 67.2485742148938\r\n ],\r\n [\r\n 15.3549030692757,\r\n 67.2484664414697\r\n ],\r\n [\r\n 15.3549985579999,\r\n 67.2484208406465\r\n ],\r\n [\r\n 15.3550329181826,\r\n 67.2484253394829\r\n ],\r\n [\r\n 15.3550582312035,\r\n 67.2484291407052\r\n ],\r\n [\r\n 15.3550823525896,\r\n 67.2484307019892\r\n ],\r\n [\r\n 15.3551124732041,\r\n 67.2484305456414\r\n ],\r\n [\r\n 15.3551881831798,\r\n 67.2484264311757\r\n ],\r\n [\r\n 15.3552204024004,\r\n 67.2484271671914\r\n ],\r\n [\r\n 15.3552433983805,\r\n 67.2484309735129\r\n ],\r\n [\r\n 15.3552810740749,\r\n 67.2484403089103\r\n ],\r\n [\r\n 15.3552947739572,\r\n 67.2484422520439\r\n ],\r\n [\r\n 15.3553355279428,\r\n 67.2484403677597\r\n ],\r\n [\r\n 15.3553505928936,\r\n 67.2484406035124\r\n ],\r\n [\r\n 15.3553675645161,\r\n 67.2484444231551\r\n ],\r\n [\r\n 15.3553859515707,\r\n 67.2484499440155\r\n ],\r\n [\r\n 15.3554087092639,\r\n 67.2484533023269\r\n ],\r\n [\r\n 15.3554884643476,\r\n 67.2484563549882\r\n ],\r\n [\r\n 15.3555232403549,\r\n 67.2484576234968\r\n ],\r\n [\r\n 15.3555531690729,\r\n 67.2484601585765\r\n ],\r\n [\r\n 15.3555738414313,\r\n 67.2484635214845\r\n ],\r\n [\r\n 15.3555975923028,\r\n 67.2484713627104\r\n ],\r\n [\r\n 15.3556190327443,\r\n 67.2484796575666\r\n ],\r\n [\r\n 15.3556373933569,\r\n 67.2484833844003\r\n ],\r\n [\r\n 15.3556731095066,\r\n 67.2484855478215\r\n ],\r\n [\r\n 15.3557135009428,\r\n 67.2484904816602\r\n ],\r\n [\r\n 15.3557675445821,\r\n 67.2484941293858\r\n ],\r\n [\r\n 15.3557907458824,\r\n 67.2484961411173\r\n ],\r\n [\r\n 15.3558229784848,\r\n 67.2484977740109\r\n ],\r\n [\r\n 15.3558554122751,\r\n 67.2484973432868\r\n ],\r\n [\r\n 15.3558845782639,\r\n 67.2484953051514\r\n ],\r\n [\r\n 15.3559033173965,\r\n 67.2484932901338\r\n ],\r\n [\r\n 15.3559542559429,\r\n 67.248490665484\r\n ],\r\n [\r\n 15.3559797544193,\r\n 67.2484913265506\r\n ],\r\n [\r\n 15.3559923157628,\r\n 67.2484946176928\r\n ],\r\n [\r\n 15.3559967646798,\r\n 67.2484977474236\r\n ],\r\n [\r\n 15.3559940771219,\r\n 67.2485040325837\r\n ],\r\n [\r\n 15.3560008245326,\r\n 67.2485059013761\r\n ],\r\n [\r\n 15.356017061348,\r\n 67.2485070314952\r\n ],\r\n [\r\n 15.3560344354595,\r\n 67.2485067238443\r\n ],\r\n [\r\n 15.3560413747469,\r\n 67.2485059011242\r\n ],\r\n [\r\n 15.3560552865175,\r\n 67.2485064981805\r\n ],\r\n [\r\n 15.3560632190317,\r\n 67.2485101583978\r\n ],\r\n [\r\n 15.3560638152399,\r\n 67.2485191273588\r\n ],\r\n [\r\n 15.3560733232377,\r\n 67.2485196444809\r\n ],\r\n [\r\n 15.3560869568286,\r\n 67.2485171025523\r\n ],\r\n [\r\n 15.3561120642562,\r\n 67.2485070001252\r\n ],\r\n [\r\n 15.3561253797982,\r\n 67.2484986282147\r\n ],\r\n [\r\n 15.3561485007047,\r\n 67.2484795599061\r\n ],\r\n [\r\n 15.3561604525389,\r\n 67.2484729850756\r\n ],\r\n [\r\n 15.3561697288129,\r\n 67.2484735027062\r\n ],\r\n [\r\n 15.356179786553,\r\n 67.2484798492865\r\n ],\r\n [\r\n 15.356193885617,\r\n 67.2484930940152\r\n ],\r\n [\r\n 15.3562088046959,\r\n 67.2485147689894\r\n ],\r\n [\r\n 15.3562107447105,\r\n 67.248520595368\r\n ],\r\n [\r\n 15.3562113542586,\r\n 67.2485304613272\r\n ],\r\n [\r\n 15.3562157978968,\r\n 67.2485332322522\r\n ],\r\n [\r\n 15.3562424416804,\r\n 67.2485329937068\r\n ],\r\n [\r\n 15.356250532866,\r\n 67.2485317199066\r\n ],\r\n [\r\n 15.3562713972304,\r\n 67.2485323912136\r\n ],\r\n [\r\n 15.3562769927733,\r\n 67.2485347110657\r\n ],\r\n [\r\n 15.3562713847574,\r\n 67.2485471922096\r\n ],\r\n [\r\n 15.3562781521326,\r\n 67.2485504064887\r\n ],\r\n [\r\n 15.3562932158326,\r\n 67.2485505524529\r\n ],\r\n [\r\n 15.3563188995793,\r\n 67.2485480734552\r\n ],\r\n [\r\n 15.3563307260061,\r\n 67.2485486751175\r\n ],\r\n [\r\n 15.3563434282982,\r\n 67.2485614744203\r\n ],\r\n [\r\n 15.3563490491055,\r\n 67.2485654985677\r\n ],\r\n [\r\n 15.3563650662303,\r\n 67.248567436465\r\n ],\r\n [\r\n 15.3563940218187,\r\n 67.2485668339498\r\n ],\r\n [\r\n 15.3564056298401,\r\n 67.24856833312\r\n ],\r\n [\r\n 15.3564214817258,\r\n 67.2485747565206\r\n ],\r\n [\r\n 15.3564456166395,\r\n 67.2485772145985\r\n ],\r\n [\r\n 15.3564716916412,\r\n 67.2485854990479\r\n ],\r\n [\r\n 15.3564854116447,\r\n 67.2485887875782\r\n ],\r\n [\r\n 15.3565012383035,\r\n 67.2485935066731\r\n ],\r\n [\r\n 15.3565397029459,\r\n 67.2486091192223\r\n ],\r\n [\r\n 15.3565534229721,\r\n 67.2486124077467\r\n ],\r\n [\r\n 15.3565775712355,\r\n 67.2486157628035\r\n ],\r\n [\r\n 15.3566258425119,\r\n 67.2486207686084\r\n ],\r\n [\r\n 15.3566360589896,\r\n 67.2486221811513\r\n ],\r\n [\r\n 15.3566659960102,\r\n 67.2486252542226\r\n ],\r\n [\r\n 15.356694793117,\r\n 67.2486295856616\r\n ],\r\n [\r\n 15.3567770376842,\r\n 67.2486442038172\r\n ],\r\n [\r\n 15.3568067550173,\r\n 67.2486480846762\r\n ],\r\n [\r\n 15.3568382940947,\r\n 67.2486498086111\r\n ],\r\n [\r\n 15.3568672630794,\r\n 67.2486501030093\r\n ],\r\n [\r\n 15.3568927431153,\r\n 67.2486495081324\r\n ],\r\n [\r\n 15.3569089720827,\r\n 67.2486500999619\r\n ],\r\n [\r\n 15.3569273064019,\r\n 67.2486520326502\r\n ],\r\n [\r\n 15.3569873456899,\r\n 67.2486693014635\r\n ],\r\n [\r\n 15.3570240689652,\r\n 67.2486768445151\r\n ],\r\n [\r\n 15.357049144197,\r\n 67.248680197439\r\n ],\r\n [\r\n 15.3570630627515,\r\n 67.2486812429073\r\n ],\r\n [\r\n 15.3570827607298,\r\n 67.248681378487\r\n ],\r\n [\r\n 15.3571177089214,\r\n 67.2486786096398\r\n ],\r\n [\r\n 15.3571373882506,\r\n 67.2486774894146\r\n ],\r\n [\r\n 15.3571594193059,\r\n 67.2486786962273\r\n ],\r\n [\r\n 15.357175449892,\r\n 67.2486815310425\r\n ],\r\n [\r\n 15.3571912887364,\r\n 67.2486870573681\r\n ],\r\n [\r\n 15.3572102463908,\r\n 67.2486997529779\r\n ],\r\n [\r\n 15.3572309406112,\r\n 67.2487201591645\r\n ],\r\n [\r\n 15.3572394633652,\r\n 67.2487323397803\r\n ],\r\n [\r\n 15.3572385313088,\r\n 67.2487475913381\r\n ],\r\n [\r\n 15.3572342473895,\r\n 67.2487555844267\r\n ],\r\n [\r\n 15.3572278980582,\r\n 67.248764927655\r\n ],\r\n [\r\n 15.3572251974698,\r\n 67.2487703158366\r\n ],\r\n [\r\n 15.3572164977198,\r\n 67.2487774217251\r\n ],\r\n [\r\n 15.3572047510902,\r\n 67.2487822021207\r\n ],\r\n [\r\n 15.3571916088637,\r\n 67.2487866268101\r\n ],\r\n [\r\n 15.3571835243029,\r\n 67.2487883491571\r\n ],\r\n [\r\n 15.3571647783879,\r\n 67.2487899158247\r\n ],\r\n [\r\n 15.3571315785034,\r\n 67.248785594267\r\n ],\r\n [\r\n 15.3571025827161,\r\n 67.2487835059191\r\n ],\r\n [\r\n 15.3570831137012,\r\n 67.2487831904265\r\n ],\r\n [\r\n 15.3570738239712,\r\n 67.2487817758499\r\n ],\r\n [\r\n 15.3570477552074,\r\n 67.248773939998\r\n ],\r\n [\r\n 15.3570317245747,\r\n 67.2487711051701\r\n ],\r\n [\r\n 15.3570062177845,\r\n 67.2487699060715\r\n ],\r\n [\r\n 15.3568942496194,\r\n 67.2487822649857\r\n ],\r\n [\r\n 15.3568436287746,\r\n 67.2487907199109\r\n ],\r\n [\r\n 15.356820070142,\r\n 67.2487958853526\r\n ],\r\n [\r\n 15.3567988419135,\r\n 67.2488019426383\r\n ],\r\n [\r\n 15.3567762832864,\r\n 67.2488120395064\r\n ],\r\n [\r\n 15.3567654913376,\r\n 67.2488187015069\r\n ],\r\n [\r\n 15.3567620675652,\r\n 67.2488222075285\r\n ],\r\n [\r\n 15.3567443440273,\r\n 67.2488458387723\r\n ],\r\n [\r\n 15.3567407883218,\r\n 67.2488560727995\r\n ],\r\n [\r\n 15.3567396441902,\r\n 67.2488726703676\r\n ],\r\n [\r\n 15.356735454545,\r\n 67.2488870321342\r\n ],\r\n [\r\n 15.3567277466455,\r\n 67.2488985312301\r\n ],\r\n [\r\n 15.3567163326802,\r\n 67.2489101282658\r\n ],\r\n [\r\n 15.3566968460357,\r\n 67.248924254922\r\n ],\r\n [\r\n 15.3566787044125,\r\n 67.2489353286901\r\n ],\r\n [\r\n 15.3566592563004,\r\n 67.2489520566382\r\n ],\r\n [\r\n 15.3566455584067,\r\n 67.2489659013151\r\n ],\r\n [\r\n 15.3566326075074,\r\n 67.2489832427414\r\n ],\r\n [\r\n 15.3566262578825,\r\n 67.2489925859458\r\n ],\r\n [\r\n 15.3566100496764,\r\n 67.2490090375799\r\n ],\r\n [\r\n 15.3566025348219,\r\n 67.2490179348582\r\n ],\r\n [\r\n 15.356586306634,\r\n 67.2490330409916\r\n ],\r\n [\r\n 15.356572647218,\r\n 67.2490494869586\r\n ],\r\n [\r\n 15.3565643451156,\r\n 67.2490678047817\r\n ],\r\n [\r\n 15.3565599289378,\r\n 67.2490825258578\r\n ],\r\n [\r\n 15.3565593867253,\r\n 67.2490928428883\r\n ],\r\n [\r\n 15.3565680555544,\r\n 67.2491148905259\r\n ],\r\n [\r\n 15.356569460145,\r\n 67.2491314824295\r\n ],\r\n [\r\n 15.3565607933163,\r\n 67.2491408307791\r\n ],\r\n [\r\n 15.3565451670788,\r\n 67.2491496563723\r\n ],\r\n [\r\n 15.3565368705815,\r\n 67.2491527246996\r\n ],\r\n [\r\n 15.3565179378344,\r\n 67.2491573416024\r\n ],\r\n [\r\n 15.3564779589701,\r\n 67.2491646963358\r\n ],\r\n [\r\n 15.3564474404871,\r\n 67.2491693389635\r\n ],\r\n [\r\n 15.3564381838792,\r\n 67.2491701668472\r\n ],\r\n [\r\n 15.3564321845645,\r\n 67.2491718845248\r\n ],\r\n [\r\n 15.3564005340761,\r\n 67.2491783237141\r\n ],\r\n [\r\n 15.3563698356815,\r\n 67.2491864651369\r\n ],\r\n [\r\n 15.3563449327879,\r\n 67.2491947730916\r\n ],\r\n [\r\n 15.3563246841039,\r\n 67.2492044162517\r\n ],\r\n [\r\n 15.3562991724069,\r\n 67.2492185562349\r\n ],\r\n [\r\n 15.3562822075562,\r\n 67.2492308831843\r\n ],\r\n [\r\n 15.3562698663587,\r\n 67.2492424822454\r\n ],\r\n [\r\n 15.3562643046802,\r\n 67.2492581028837\r\n ],\r\n [\r\n 15.356263543909,\r\n 67.2492693174262\r\n ],\r\n [\r\n 15.3562685574193,\r\n 67.2492792633112\r\n ],\r\n [\r\n 15.3562834425063,\r\n 67.2492986060792\r\n ],\r\n [\r\n 15.356305295036,\r\n 67.2493190098118\r\n ],\r\n [\r\n 15.3563383736302,\r\n 67.2493463854377\r\n ],\r\n [\r\n 15.3563580464398,\r\n 67.2493604251019\r\n ],\r\n [\r\n 15.3564090949242,\r\n 67.2493963722838\r\n ],\r\n [\r\n 15.3564269007897,\r\n 67.2494095190571\r\n ],\r\n [\r\n 15.356436945696,\r\n 67.2494149686216\r\n ],\r\n [\r\n 15.3564577931567,\r\n 67.2494300820987\r\n ],\r\n [\r\n 15.3564652825456,\r\n 67.249435088823\r\n ],\r\n [\r\n 15.3563659180632,\r\n 67.2495007028474\r\n ],\r\n [\r\n 15.354916692915,\r\n 67.250457455096\r\n ],\r\n [\r\n 15.35435733175,\r\n 67.250334721774\r\n ],\r\n [\r\n 15.3543323630879,\r\n 67.2503544218132\r\n ],\r\n [\r\n 15.3536738559855,\r\n 67.2502022133439\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.354757040352 67.249460356891)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393573,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393573\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3458441912008,\r\n 67.2674980696898\r\n ],\r\n [\r\n 15.3477723796201,\r\n 67.2675268265417\r\n ],\r\n [\r\n 15.3492760998383,\r\n 67.2675488592676\r\n ],\r\n [\r\n 15.3493755019412,\r\n 67.2687712890883\r\n ],\r\n [\r\n 15.3489729187907,\r\n 67.2687243529081\r\n ],\r\n [\r\n 15.3475089867703,\r\n 67.2689730431273\r\n ],\r\n [\r\n 15.3471344731166,\r\n 67.2691674311525\r\n ],\r\n [\r\n 15.3458441912008,\r\n 67.2674980696898\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3477813074854 67.268170961433)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91023686,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 2,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"BAKKEN\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474321952,\r\n \"navn\": \"GLADIATOR PÅTROPPENDE\",\r\n \"postAdresse\": null,\r\n \"fornavn\": \"PÅTROPPENDE\",\r\n \"etternavn\": \"GLADIATOR\",\r\n \"personStatusKode\": \"D\",\r\n \"personnummer\": null,\r\n \"erDød\": true,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Erikstadveien 11\",\r\n \"postnummer\": \"8206\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Erikstadveien\",\r\n \"bokstav\": null,\r\n \"nummer\": 11,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 91392244,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392244\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3431236172356,\r\n 67.27102625422\r\n ],\r\n [\r\n 15.345860197129,\r\n 67.2711395993078\r\n ],\r\n [\r\n 15.3458507615904,\r\n 67.2713058383822\r\n ],\r\n [\r\n 15.3430641023402,\r\n 67.2712113478987\r\n ],\r\n [\r\n 15.3431236172356,\r\n 67.27102625422\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3444476512726 67.27116998912)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392118,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392118\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3653709960612,\r\n 67.2840911638606\r\n ],\r\n [\r\n 15.3659540294942,\r\n 67.2838541886004\r\n ],\r\n [\r\n 15.3663348931062,\r\n 67.283903643851\r\n ],\r\n [\r\n 15.3675589311013,\r\n 67.2843693648226\r\n ],\r\n [\r\n 15.3674237465487,\r\n 67.2844218808519\r\n ],\r\n [\r\n 15.3635602678068,\r\n 67.2858094853175\r\n ],\r\n [\r\n 15.3610701034183,\r\n 67.286689519284\r\n ],\r\n [\r\n 15.3606329106723,\r\n 67.2868321411498\r\n ],\r\n [\r\n 15.3606215954592,\r\n 67.2868359340446\r\n ],\r\n [\r\n 15.3603216306244,\r\n 67.2866430290438\r\n ],\r\n [\r\n 15.3596377765291,\r\n 67.2862621594472\r\n ],\r\n [\r\n 15.3598686170598,\r\n 67.2861794752309\r\n ],\r\n [\r\n 15.3642268066027,\r\n 67.2845562675175\r\n ],\r\n [\r\n 15.3653709960612,\r\n 67.2840911638606\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3635830036347 67.285300353292)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392379,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392379\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3529656185532,\r\n 67.2483819981459\r\n ],\r\n [\r\n 15.3533147290482,\r\n 67.2482343864425\r\n ],\r\n [\r\n 15.3533141512029,\r\n 67.2482423712657\r\n ],\r\n [\r\n 15.3533116551486,\r\n 67.2482459648736\r\n ],\r\n [\r\n 15.3533018288435,\r\n 67.2482553155992\r\n ],\r\n [\r\n 15.3532921736283,\r\n 67.2482605396178\r\n ],\r\n [\r\n 15.3532680052698,\r\n 67.2482715365635\r\n ],\r\n [\r\n 15.35325510089,\r\n 67.2482764089206\r\n ],\r\n [\r\n 15.3532572323524,\r\n 67.2482795438277\r\n ],\r\n [\r\n 15.3532743943925,\r\n 67.2482805824844\r\n ],\r\n [\r\n 15.3532875449695,\r\n 67.2482766963148\r\n ],\r\n [\r\n 15.3532958481678,\r\n 67.2482740766547\r\n ],\r\n [\r\n 15.3533184077532,\r\n 67.2482639802747\r\n ],\r\n [\r\n 15.3533448601924,\r\n 67.248250735722\r\n ],\r\n [\r\n 15.3533649381854,\r\n 67.248245219643\r\n ],\r\n [\r\n 15.3533802004353,\r\n 67.2482431228727\r\n ],\r\n [\r\n 15.3533929534611,\r\n 67.2482437227108\r\n ],\r\n [\r\n 15.3534000970488,\r\n 67.2482568035924\r\n ],\r\n [\r\n 15.3533997258955,\r\n 67.2482630836072\r\n ],\r\n [\r\n 15.3534062927334,\r\n 67.248268451316\r\n ],\r\n [\r\n 15.3534132649928,\r\n 67.2482698712075\r\n ],\r\n [\r\n 15.3534285272541,\r\n 67.2482677744325\r\n ],\r\n [\r\n 15.3534414592748,\r\n 67.2482647857598\r\n ],\r\n [\r\n 15.3534896827394,\r\n 67.2482508653156\r\n ],\r\n [\r\n 15.3535045540808,\r\n 67.2482537030496\r\n ],\r\n [\r\n 15.3535203918006,\r\n 67.2482592297382\r\n ],\r\n [\r\n 15.3535387545573,\r\n 67.2482631362121\r\n ],\r\n [\r\n 15.3536364912296,\r\n 67.2482757483816\r\n ],\r\n [\r\n 15.3536789659303,\r\n 67.2482805884378\r\n ],\r\n [\r\n 15.3537617996852,\r\n 67.248288210015\r\n ],\r\n [\r\n 15.3538230399741,\r\n 67.2482928292616\r\n ],\r\n [\r\n 15.3539230556984,\r\n 67.2483028348505\r\n ],\r\n [\r\n 15.353949726971,\r\n 67.248304480384\r\n ],\r\n [\r\n 15.3540686661116,\r\n 67.2483092413825\r\n ],\r\n [\r\n 15.3541125259123,\r\n 67.2483137194571\r\n ],\r\n [\r\n 15.3541266850786,\r\n 67.2483153925683\r\n ],\r\n [\r\n 15.3540702730549,\r\n 67.2483869204837\r\n ],\r\n [\r\n 15.3539264911224,\r\n 67.2484575646452\r\n ],\r\n [\r\n 15.3534252027442,\r\n 67.2487038271575\r\n ],\r\n [\r\n 15.3528234485141,\r\n 67.2490050276865\r\n ],\r\n [\r\n 15.3518609669792,\r\n 67.2494859742563\r\n ],\r\n [\r\n 15.3513638462986,\r\n 67.2497349121678\r\n ],\r\n [\r\n 15.3513169174305,\r\n 67.2497584273279\r\n ],\r\n [\r\n 15.3512202191302,\r\n 67.2497220402277\r\n ],\r\n [\r\n 15.3514275463638,\r\n 67.2496221956962\r\n ],\r\n [\r\n 15.3519583948867,\r\n 67.249366366205\r\n ],\r\n [\r\n 15.3515132566601,\r\n 67.2492714494737\r\n ],\r\n [\r\n 15.351080675119,\r\n 67.2491792848322\r\n ],\r\n [\r\n 15.3529656185532,\r\n 67.2483819981459\r\n ]\r\n ],\r\n [\r\n [\r\n 15.3516724058145,\r\n 67.2489356123521\r\n ],\r\n [\r\n 15.3512033132879,\r\n 67.2491356003586\r\n ],\r\n [\r\n 15.3520491337144,\r\n 67.2493122558087\r\n ],\r\n [\r\n 15.3524798255331,\r\n 67.249101136819\r\n ],\r\n [\r\n 15.3516724058145,\r\n 67.2489356123521\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3527314172366 67.2487771499022)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392328,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392328\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3538534250798,\r\n 67.2662959193821\r\n ],\r\n [\r\n 15.3554860369375,\r\n 67.2664299174664\r\n ],\r\n [\r\n 15.3555223411293,\r\n 67.2667051344697\r\n ],\r\n [\r\n 15.3554918270709,\r\n 67.2667272688671\r\n ],\r\n [\r\n 15.355446344611,\r\n 67.2667878291147\r\n ],\r\n [\r\n 15.3554437343773,\r\n 67.2668621983697\r\n ],\r\n [\r\n 15.3555018502977,\r\n 67.2669345494501\r\n ],\r\n [\r\n 15.3554947673533,\r\n 67.266973047556\r\n ],\r\n [\r\n 15.3554183118889,\r\n 67.2670090978345\r\n ],\r\n [\r\n 15.3553299870675,\r\n 67.2670109079369\r\n ],\r\n [\r\n 15.3552041308154,\r\n 67.266983737359\r\n ],\r\n [\r\n 15.35495394168,\r\n 67.2669068771833\r\n ],\r\n [\r\n 15.3547815476803,\r\n 67.2668845633706\r\n ],\r\n [\r\n 15.3545203942733,\r\n 67.2668345478287\r\n ],\r\n [\r\n 15.3540673745896,\r\n 67.2667782273073\r\n ],\r\n [\r\n 15.3539792658717,\r\n 67.2667631720995\r\n ],\r\n [\r\n 15.3538534250798,\r\n 67.2662959193821\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3547388836348 67.2666229087058)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392439,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392439\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3479239137515,\r\n 67.2503957113728\r\n ],\r\n [\r\n 15.3488314967753,\r\n 67.2505953035014\r\n ],\r\n [\r\n 15.349765885718,\r\n 67.2501513044193\r\n ],\r\n [\r\n 15.3492483583572,\r\n 67.2499389388066\r\n ],\r\n [\r\n 15.3494903981712,\r\n 67.2498511401034\r\n ],\r\n [\r\n 15.3502992055878,\r\n 67.2495094840189\r\n ],\r\n [\r\n 15.3512394515255,\r\n 67.249809243073\r\n ],\r\n [\r\n 15.3505793310958,\r\n 67.2501099079366\r\n ],\r\n [\r\n 15.3503905383397,\r\n 67.2503197492887\r\n ],\r\n [\r\n 15.3502856769955,\r\n 67.2504389240625\r\n ],\r\n [\r\n 15.3477398873985,\r\n 67.2531662206266\r\n ],\r\n [\r\n 15.3477195752762,\r\n 67.2531879726897\r\n ],\r\n [\r\n 15.3476378956869,\r\n 67.253181063094\r\n ],\r\n [\r\n 15.3475756911853,\r\n 67.2531746495034\r\n ],\r\n [\r\n 15.3475341529277,\r\n 67.2531709719296\r\n ],\r\n [\r\n 15.3474988629412,\r\n 67.2531666528993\r\n ],\r\n [\r\n 15.3474607582319,\r\n 67.2531600076832\r\n ],\r\n [\r\n 15.3474254086586,\r\n 67.2531515624403\r\n ],\r\n [\r\n 15.3473739930087,\r\n 67.2531379492014\r\n ],\r\n [\r\n 15.3473230240792,\r\n 67.253123168844\r\n ],\r\n [\r\n 15.3472119586979,\r\n 67.253087438337\r\n ],\r\n [\r\n 15.3471845044348,\r\n 67.2530800523953\r\n ],\r\n [\r\n 15.3471640480787,\r\n 67.2530757909093\r\n ],\r\n [\r\n 15.3471385436849,\r\n 67.2530750387443\r\n ],\r\n [\r\n 15.3471281264912,\r\n 67.2530758685973\r\n ],\r\n [\r\n 15.3470798430611,\r\n 67.2530865579293\r\n ],\r\n [\r\n 15.3470645836606,\r\n 67.2530891026003\r\n ],\r\n [\r\n 15.3470470183849,\r\n 67.2530924595798\r\n ],\r\n [\r\n 15.3470211617983,\r\n 67.2530994225918\r\n ],\r\n [\r\n 15.3469771093575,\r\n 67.2531142290709\r\n ],\r\n [\r\n 15.3469630151628,\r\n 67.2531172197269\r\n ],\r\n [\r\n 15.3469488886091,\r\n 67.2531179678836\r\n ],\r\n [\r\n 15.3469259218084,\r\n 67.2531164028752\r\n ],\r\n [\r\n 15.3469133799936,\r\n 67.2531145462246\r\n ],\r\n [\r\n 15.3468868890327,\r\n 67.2531096698265\r\n ],\r\n [\r\n 15.3468664210588,\r\n 67.2531046010032\r\n ],\r\n [\r\n 15.3468428807963,\r\n 67.2530954124907\r\n ],\r\n [\r\n 15.3468272149543,\r\n 67.2530858481496\r\n ],\r\n [\r\n 15.3468142848711,\r\n 67.2530731383007\r\n ],\r\n [\r\n 15.3468080639674,\r\n 67.2530596066306\r\n ],\r\n [\r\n 15.3468032206455,\r\n 67.2530451749565\r\n ],\r\n [\r\n 15.3467970139854,\r\n 67.2530326299851\r\n ],\r\n [\r\n 15.3467920359461,\r\n 67.2530249263061\r\n ],\r\n [\r\n 15.3467812123758,\r\n 67.2530136471469\r\n ],\r\n [\r\n 15.3467647853875,\r\n 67.2529995096053\r\n ],\r\n [\r\n 15.3467183851388,\r\n 67.2529639978577\r\n ],\r\n [\r\n 15.3467064093421,\r\n 67.2529531696961\r\n ],\r\n [\r\n 15.3466958046627,\r\n 67.2529409930312\r\n ],\r\n [\r\n 15.3466843741263,\r\n 67.2529197581742\r\n ],\r\n [\r\n 15.3466822495737,\r\n 67.2529170716812\r\n ],\r\n [\r\n 15.3466688807271,\r\n 67.25290606712\r\n ],\r\n [\r\n 15.3466385540255,\r\n 67.2528923183958\r\n ],\r\n [\r\n 15.3466217361106,\r\n 67.2528832050364\r\n ],\r\n [\r\n 15.3466064952077,\r\n 67.2528709486746\r\n ],\r\n [\r\n 15.3465993604022,\r\n 67.252858315997\r\n ],\r\n [\r\n 15.3465987611477,\r\n 67.2528488985049\r\n ],\r\n [\r\n 15.3466052753474,\r\n 67.2528184752149\r\n ],\r\n [\r\n 15.3466071985019,\r\n 67.252791111731\r\n ],\r\n [\r\n 15.3466043011462,\r\n 67.2527830447422\r\n ],\r\n [\r\n 15.3465967739782,\r\n 67.2527753465615\r\n ],\r\n [\r\n 15.346576871024,\r\n 67.2527612165064\r\n ],\r\n [\r\n 15.3465616172939,\r\n 67.2527480631408\r\n ],\r\n [\r\n 15.3465434391057,\r\n 67.2527249590851\r\n ],\r\n [\r\n 15.3465333756658,\r\n 67.2527181634044\r\n ],\r\n [\r\n 15.3465076971766,\r\n 67.2527053016477\r\n ],\r\n [\r\n 15.3464818011834,\r\n 67.2526934270865\r\n ],\r\n [\r\n 15.3464727229266,\r\n 67.2526906658981\r\n ],\r\n [\r\n 15.3464338723187,\r\n 67.2526804339408\r\n ],\r\n [\r\n 15.3464112841817,\r\n 67.2526729476623\r\n ],\r\n [\r\n 15.3463986896601,\r\n 67.2526674132739\r\n ],\r\n [\r\n 15.3463857923311,\r\n 67.2526569458881\r\n ],\r\n [\r\n 15.3463793930034,\r\n 67.252647092398\r\n ],\r\n [\r\n 15.3463734421446,\r\n 67.2526201047193\r\n ],\r\n [\r\n 15.3463689342823,\r\n 67.2526128485262\r\n ],\r\n [\r\n 15.3463546206703,\r\n 67.2526005901396\r\n ],\r\n [\r\n 15.3463380477339,\r\n 67.2525923732493\r\n ],\r\n [\r\n 15.3463142764275,\r\n 67.2525831851585\r\n ],\r\n [\r\n 15.3462211538439,\r\n 67.2525539635558\r\n ],\r\n [\r\n 15.3461803979346,\r\n 67.2525401475382\r\n ],\r\n [\r\n 15.3461486802014,\r\n 67.2525263120195\r\n ],\r\n [\r\n 15.3461309279943,\r\n 67.2525166624075\r\n ],\r\n [\r\n 15.3460795538314,\r\n 67.2524896829611\r\n ],\r\n [\r\n 15.3460673726304,\r\n 67.2524806492494\r\n ],\r\n [\r\n 15.3460619379011,\r\n 67.2524733950461\r\n ],\r\n [\r\n 15.346057875581,\r\n 67.2524648820455\r\n ],\r\n [\r\n 15.3460474567226,\r\n 67.2524494756393\r\n ],\r\n [\r\n 15.3460387388374,\r\n 67.2524395374316\r\n ],\r\n [\r\n 15.3460213805318,\r\n 67.2524250430112\r\n ],\r\n [\r\n 15.3459912207325,\r\n 67.2524067189668\r\n ],\r\n [\r\n 15.3459531558201,\r\n 67.2523866179005\r\n ],\r\n [\r\n 15.3459340210642,\r\n 67.2523775094632\r\n ],\r\n [\r\n 15.3458185046986,\r\n 67.252321963289\r\n ],\r\n [\r\n 15.3457972520945,\r\n 67.2523106168302\r\n ],\r\n [\r\n 15.3457860419237,\r\n 67.2523046308981\r\n ],\r\n [\r\n 15.3457620969976,\r\n 67.2522833332321\r\n ],\r\n [\r\n 15.3457456775565,\r\n 67.2522696440843\r\n ],\r\n [\r\n 15.345713208457,\r\n 67.2522518631786\r\n ],\r\n [\r\n 15.3457031506079,\r\n 67.2522454262452\r\n ],\r\n [\r\n 15.3456977431212,\r\n 67.2522400557281\r\n ],\r\n [\r\n 15.3456967710123,\r\n 67.2522369182264\r\n ],\r\n [\r\n 15.3456934608309,\r\n 67.2522323505167\r\n ],\r\n [\r\n 15.3456950246489,\r\n 67.2522121640354\r\n ],\r\n [\r\n 15.3456921405642,\r\n 67.2522049940289\r\n ],\r\n [\r\n 15.3456669919744,\r\n 67.2521805593458\r\n ],\r\n [\r\n 15.3456609907982,\r\n 67.2521661301308\r\n ],\r\n [\r\n 15.345653238829,\r\n 67.2521588809039\r\n ],\r\n [\r\n 15.3456258283321,\r\n 67.2521383083025\r\n ],\r\n [\r\n 15.345626428159,\r\n 67.2521316690092\r\n ],\r\n [\r\n 15.3456337420877,\r\n 67.2521245667445\r\n ],\r\n [\r\n 15.3456366064821,\r\n 67.2521142447629\r\n ],\r\n [\r\n 15.345641654545,\r\n 67.2521107354861\r\n ],\r\n [\r\n 15.3456733001722,\r\n 67.2521034911188\r\n ],\r\n [\r\n 15.3456736991879,\r\n 67.2520990051232\r\n ],\r\n [\r\n 15.3456680587086,\r\n 67.2520935454042\r\n ],\r\n [\r\n 15.3456591802809,\r\n 67.2520885411716\r\n ],\r\n [\r\n 15.3456209669166,\r\n 67.2520741813214\r\n ],\r\n [\r\n 15.345587156704,\r\n 67.2520598119818\r\n ],\r\n [\r\n 15.3455603104011,\r\n 67.2520462349673\r\n ],\r\n [\r\n 15.3455357609281,\r\n 67.2520312177601\r\n ],\r\n [\r\n 15.3455139137731,\r\n 67.2520107228659\r\n ],\r\n [\r\n 15.3454942116125,\r\n 67.251994349677\r\n ],\r\n [\r\n 15.345477613615,\r\n 67.251984338698\r\n ],\r\n [\r\n 15.3454549697323,\r\n 67.251972905486\r\n ],\r\n [\r\n 15.345442808356,\r\n 67.2519652172255\r\n ],\r\n [\r\n 15.3454341166667,\r\n 67.2519570729832\r\n ],\r\n [\r\n 15.345426770335,\r\n 67.2519457862497\r\n ],\r\n [\r\n 15.3454240201808,\r\n 67.2519317985429\r\n ],\r\n [\r\n 15.3454157662237,\r\n 67.2519218593031\r\n ],\r\n [\r\n 15.3454055039075,\r\n 67.2519173065483\r\n ],\r\n [\r\n 15.3453887051789,\r\n 67.2519094488576\r\n ],\r\n [\r\n 15.3453707155504,\r\n 67.2518993511594\r\n ],\r\n [\r\n 15.3453620239093,\r\n 67.2518912069131\r\n ],\r\n [\r\n 15.3453330445956,\r\n 67.2518743154495\r\n ],\r\n [\r\n 15.3453297358215,\r\n 67.251869837432\r\n ],\r\n [\r\n 15.3453370690804,\r\n 67.2518640806799\r\n ],\r\n [\r\n 15.3453316797949,\r\n 67.2518599659496\r\n ],\r\n [\r\n 15.3452584818511,\r\n 67.2518300730046\r\n ],\r\n [\r\n 15.3452381942518,\r\n 67.2518213257756\r\n ],\r\n [\r\n 15.3452124993865,\r\n 67.2518072080103\r\n ],\r\n [\r\n 15.3451746098763,\r\n 67.2517830697608\r\n ],\r\n [\r\n 15.3451612951372,\r\n 67.2517757427703\r\n ],\r\n [\r\n 15.3451176418494,\r\n 67.2517536800647\r\n ],\r\n [\r\n 15.3450871179292,\r\n 67.2517421740417\r\n ],\r\n [\r\n 15.3450293544209,\r\n 67.251721935703\r\n ],\r\n [\r\n 15.3449920573901,\r\n 67.2517067664097\r\n ],\r\n [\r\n 15.3449700821948,\r\n 67.2516934479353\r\n ],\r\n [\r\n 15.3449430036242,\r\n 67.2516797816147\r\n ],\r\n [\r\n 15.3449322445716,\r\n 67.2516728976265\r\n ],\r\n [\r\n 15.3449254328017,\r\n 67.2516665433715\r\n ],\r\n [\r\n 15.344926947052,\r\n 67.2516428585975\r\n ],\r\n [\r\n 15.3449236370989,\r\n 67.2516382908715\r\n ],\r\n [\r\n 15.3449024101347,\r\n 67.2516125021009\r\n ],\r\n [\r\n 15.3448941050446,\r\n 67.2515989748352\r\n ],\r\n [\r\n 15.3448869393567,\r\n 67.2515840995799\r\n ],\r\n [\r\n 15.3448700769034,\r\n 67.2515556103449\r\n ],\r\n [\r\n 15.3448689441349,\r\n 67.2515412603424\r\n ],\r\n [\r\n 15.3448705019786,\r\n 67.2515367718588\r\n ],\r\n [\r\n 15.3448660603774,\r\n 67.2515340903203\r\n ],\r\n [\r\n 15.3448627568826,\r\n 67.2515299710928\r\n ],\r\n [\r\n 15.3448525077014,\r\n 67.251526315302\r\n ],\r\n [\r\n 15.344842721998,\r\n 67.2515226585148\r\n ],\r\n [\r\n 15.3448181398413,\r\n 67.2515214554889\r\n ],\r\n [\r\n 15.3447854854651,\r\n 67.2515229608814\r\n ],\r\n [\r\n 15.3447202281326,\r\n 67.251529559645\r\n ],\r\n [\r\n 15.3447014638371,\r\n 67.2515300484578\r\n ],\r\n [\r\n 15.3446408232131,\r\n 67.251535381436\r\n ],\r\n [\r\n 15.3445888741919,\r\n 67.2515327121889\r\n ],\r\n [\r\n 15.3445304536623,\r\n 67.2515150764613\r\n ],\r\n [\r\n 15.3445484404875,\r\n 67.2515088483629\r\n ],\r\n [\r\n 15.3463982980276,\r\n 67.2508704889289\r\n ],\r\n [\r\n 15.3479239137515,\r\n 67.2503957113728\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3477736236639 67.2514375085394)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392180,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392180\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3571120754338,\r\n 67.2774172978913\r\n ],\r\n [\r\n 15.3570511762968,\r\n 67.2774406662071\r\n ],\r\n [\r\n 15.3567126458528,\r\n 67.277562247542\r\n ],\r\n [\r\n 15.3552874623677,\r\n 67.2769797380764\r\n ],\r\n [\r\n 15.3540102034847,\r\n 67.2764656919612\r\n ],\r\n [\r\n 15.3559117547441,\r\n 67.2758686462674\r\n ],\r\n [\r\n 15.3572158112118,\r\n 67.2754541964753\r\n ],\r\n [\r\n 15.3590619192994,\r\n 67.2748521233616\r\n ],\r\n [\r\n 15.3608570862107,\r\n 67.2742776819549\r\n ],\r\n [\r\n 15.3637458842658,\r\n 67.2714687668813\r\n ],\r\n [\r\n 15.3648032390117,\r\n 67.2712213011988\r\n ],\r\n [\r\n 15.3652817612437,\r\n 67.2712087316802\r\n ],\r\n [\r\n 15.3657796789369,\r\n 67.2711143077489\r\n ],\r\n [\r\n 15.3660539450713,\r\n 67.2710765460065\r\n ],\r\n [\r\n 15.3660894318809,\r\n 67.2711070537292\r\n ],\r\n [\r\n 15.3661346282283,\r\n 67.2711354761496\r\n ],\r\n [\r\n 15.3662086018114,\r\n 67.2711802485317\r\n ],\r\n [\r\n 15.3662550496895,\r\n 67.2712146781426\r\n ],\r\n [\r\n 15.3662757518853,\r\n 67.2712338273008\r\n ],\r\n [\r\n 15.3662919545047,\r\n 67.2712468869377\r\n ],\r\n [\r\n 15.3662954744372,\r\n 67.2712495699898\r\n ],\r\n [\r\n 15.3663685920916,\r\n 67.2712990087887\r\n ],\r\n [\r\n 15.3664423661033,\r\n 67.2713762538793\r\n ],\r\n [\r\n 15.3664026317722,\r\n 67.2713866603328\r\n ],\r\n [\r\n 15.3660757475514,\r\n 67.2714723541112\r\n ],\r\n [\r\n 15.3659003305068,\r\n 67.2714980499727\r\n ],\r\n [\r\n 15.3657674615978,\r\n 67.271545805307\r\n ],\r\n [\r\n 15.3656871586031,\r\n 67.2716033081488\r\n ],\r\n [\r\n 15.3656434733187,\r\n 67.2716894324391\r\n ],\r\n [\r\n 15.3656524408743,\r\n 67.2718214543133\r\n ],\r\n [\r\n 15.3656315019978,\r\n 67.2718781940491\r\n ],\r\n [\r\n 15.365559217171,\r\n 67.2719597188764\r\n ],\r\n [\r\n 15.3654637452501,\r\n 67.2720569943913\r\n ],\r\n [\r\n 15.3654652339005,\r\n 67.2721243576844\r\n ],\r\n [\r\n 15.3655110767389,\r\n 67.2721494598103\r\n ],\r\n [\r\n 15.3656464085635,\r\n 67.2721565971066\r\n ],\r\n [\r\n 15.3658196402541,\r\n 67.2721698374565\r\n ],\r\n [\r\n 15.3659441659166,\r\n 67.2721984380443\r\n ],\r\n [\r\n 15.3660474644295,\r\n 67.2722343528271\r\n ],\r\n [\r\n 15.3661774092447,\r\n 67.2723293208381\r\n ],\r\n [\r\n 15.3663126591558,\r\n 67.2724831215772\r\n ],\r\n [\r\n 15.3664707777823,\r\n 67.2726762494856\r\n ],\r\n [\r\n 15.3665473049777,\r\n 67.2728272238089\r\n ],\r\n [\r\n 15.3665761236697,\r\n 67.2729221531326\r\n ],\r\n [\r\n 15.3665102444343,\r\n 67.2730282422801\r\n ],\r\n [\r\n 15.3664237797489,\r\n 67.2730925769331\r\n ],\r\n [\r\n 15.3662783539673,\r\n 67.2731539961104\r\n ],\r\n [\r\n 15.3660645338726,\r\n 67.2732327939438\r\n ],\r\n [\r\n 15.3658247750309,\r\n 67.2732990921989\r\n ],\r\n [\r\n 15.3655406256395,\r\n 67.2733749995979\r\n ],\r\n [\r\n 15.3652450774226,\r\n 67.2734793681405\r\n ],\r\n [\r\n 15.3649130434807,\r\n 67.2735946730421\r\n ],\r\n [\r\n 15.3647037033104,\r\n 67.2736940904675\r\n ],\r\n [\r\n 15.3644801830014,\r\n 67.2737763168909\r\n ],\r\n [\r\n 15.3643538538561,\r\n 67.273812753645\r\n ],\r\n [\r\n 15.3639980915037,\r\n 67.2738628966601\r\n ],\r\n [\r\n 15.3637166218167,\r\n 67.2739174455116\r\n ],\r\n [\r\n 15.3637115337942,\r\n 67.2739184437611\r\n ],\r\n [\r\n 15.3636199821333,\r\n 67.2739539041578\r\n ],\r\n [\r\n 15.363549535441,\r\n 67.2740044764763\r\n ],\r\n [\r\n 15.3635140361566,\r\n 67.2740498566309\r\n ],\r\n [\r\n 15.3634104210977,\r\n 67.2741466110814\r\n ],\r\n [\r\n 15.3631999900993,\r\n 67.2742666605847\r\n ],\r\n [\r\n 15.3631301735794,\r\n 67.2743436935548\r\n ],\r\n [\r\n 15.3630841206949,\r\n 67.2744275798805\r\n ],\r\n [\r\n 15.36312097586,\r\n 67.2744871487959\r\n ],\r\n [\r\n 15.363179823957,\r\n 67.2745284583532\r\n ],\r\n [\r\n 15.3632624609546,\r\n 67.27457823584\r\n ],\r\n [\r\n 15.3633253384323,\r\n 67.2746712049259\r\n ],\r\n [\r\n 15.3634140835902,\r\n 67.2747873484381\r\n ],\r\n [\r\n 15.3634406985219,\r\n 67.2748446081795\r\n ],\r\n [\r\n 15.3634057851168,\r\n 67.2748828107698\r\n ],\r\n [\r\n 15.3615378541197,\r\n 67.2748756335255\r\n ],\r\n [\r\n 15.3615059761041,\r\n 67.2749153538091\r\n ],\r\n [\r\n 15.3614659090917,\r\n 67.2749504279793\r\n ],\r\n [\r\n 15.3614408858264,\r\n 67.2749832257259\r\n ],\r\n [\r\n 15.3613784190599,\r\n 67.2749942202803\r\n ],\r\n [\r\n 15.3613098241485,\r\n 67.2750141988516\r\n ],\r\n [\r\n 15.3612618442094,\r\n 67.2750321575759\r\n ],\r\n [\r\n 15.3612221205208,\r\n 67.2750592473825\r\n ],\r\n [\r\n 15.3612090753195,\r\n 67.2750864565967\r\n ],\r\n [\r\n 15.3611915877541,\r\n 67.2751422012166\r\n ],\r\n [\r\n 15.3611761163501,\r\n 67.2752240447495\r\n ],\r\n [\r\n 15.361155104618,\r\n 67.2752922659452\r\n ],\r\n [\r\n 15.3611443883187,\r\n 67.2753355266771\r\n ],\r\n [\r\n 15.361107498842,\r\n 67.275366018779\r\n ],\r\n [\r\n 15.361058975857,\r\n 67.2753942047539\r\n ],\r\n [\r\n 15.360998834166,\r\n 67.2754210712864\r\n ],\r\n [\r\n 15.3609270238698,\r\n 67.2754432994804\r\n ],\r\n [\r\n 15.3608616088184,\r\n 67.2754588752856\r\n ],\r\n [\r\n 15.3608079553292,\r\n 67.275469849816\r\n ],\r\n [\r\n 15.3607426845316,\r\n 67.2754795945817\r\n ],\r\n [\r\n 15.3605421412876,\r\n 67.2754873107217\r\n ],\r\n [\r\n 15.3603708972242,\r\n 67.2754997151207\r\n ],\r\n [\r\n 15.3602614956905,\r\n 67.2755057911783\r\n ],\r\n [\r\n 15.3601400976497,\r\n 67.2755162894826\r\n ],\r\n [\r\n 15.36000097237,\r\n 67.2755357976799\r\n ],\r\n [\r\n 15.3599118566817,\r\n 67.2755488248354\r\n ],\r\n [\r\n 15.3598348046175,\r\n 67.2755619146213\r\n ],\r\n [\r\n 15.3597156657706,\r\n 67.2755838894706\r\n ],\r\n [\r\n 15.3595936292777,\r\n 67.2756137645426\r\n ],\r\n [\r\n 15.3594502206589,\r\n 67.2756571427288\r\n ],\r\n [\r\n 15.3593576315773,\r\n 67.275686144402\r\n ],\r\n [\r\n 15.3592614836934,\r\n 67.2757253800714\r\n ],\r\n [\r\n 15.3591771485674,\r\n 67.2757634231375\r\n ],\r\n [\r\n 15.3590926683687,\r\n 67.2758072971486\r\n ],\r\n [\r\n 15.359061627145,\r\n 67.275841274099\r\n ],\r\n [\r\n 15.3591032104824,\r\n 67.2758917733852\r\n ],\r\n [\r\n 15.3591277366181,\r\n 67.27593405816\r\n ],\r\n [\r\n 15.3591314670981,\r\n 67.275981861279\r\n ],\r\n [\r\n 15.3591289866185,\r\n 67.2760331766824\r\n ],\r\n [\r\n 15.3591448279824,\r\n 67.2760686634759\r\n ],\r\n [\r\n 15.3591438089981,\r\n 67.2760936030625\r\n ],\r\n [\r\n 15.3591637521204,\r\n 67.2761086285028\r\n ],\r\n [\r\n 15.3591861504892,\r\n 67.2761327084082\r\n ],\r\n [\r\n 15.3592175462751,\r\n 67.2761534491969\r\n ],\r\n [\r\n 15.3592371275033,\r\n 67.276175292831\r\n ],\r\n [\r\n 15.3592665660301,\r\n 67.2762357762158\r\n ],\r\n [\r\n 15.3592907496148,\r\n 67.2762861349604\r\n ],\r\n [\r\n 15.3593007731964,\r\n 67.2763203789144\r\n ],\r\n [\r\n 15.3593075197785,\r\n 67.2763681752818\r\n ],\r\n [\r\n 15.3592974726401,\r\n 67.2763943908972\r\n ],\r\n [\r\n 15.3592776866105,\r\n 67.276436415941\r\n ],\r\n [\r\n 15.3595002871434,\r\n 67.2765223911967\r\n ],\r\n [\r\n 15.3593121071168,\r\n 67.276628302401\r\n ],\r\n [\r\n 15.3571120754338,\r\n 67.2774172978913\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3610238183672 67.2744303664064)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392298,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392298\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3565904379275,\r\n 67.2781752767013\r\n ],\r\n [\r\n 15.3567488303509,\r\n 67.2782646275581\r\n ],\r\n [\r\n 15.3573793703991,\r\n 67.2780434549797\r\n ],\r\n [\r\n 15.357491074124,\r\n 67.2780041858558\r\n ],\r\n [\r\n 15.357406162987,\r\n 67.2778951171184\r\n ],\r\n [\r\n 15.3574784091345,\r\n 67.2778702881818\r\n ],\r\n [\r\n 15.3575170084795,\r\n 67.2779073391285\r\n ],\r\n [\r\n 15.3575733104857,\r\n 67.2779647131361\r\n ],\r\n [\r\n 15.3576351819196,\r\n 67.2780221644284\r\n ],\r\n [\r\n 15.357747752566,\r\n 67.2781345801505\r\n ],\r\n [\r\n 15.357840710521,\r\n 67.2782229992068\r\n ],\r\n [\r\n 15.3579733563632,\r\n 67.2783435329836\r\n ],\r\n [\r\n 15.3580194686899,\r\n 67.2783708791977\r\n ],\r\n [\r\n 15.3580922414448,\r\n 67.2784435554484\r\n ],\r\n [\r\n 15.3581321289722,\r\n 67.2784735168781\r\n ],\r\n [\r\n 15.3581695427869,\r\n 67.2784931680239\r\n ],\r\n [\r\n 15.3580553314484,\r\n 67.2785666198611\r\n ],\r\n [\r\n 15.3540712820318,\r\n 67.2799322894748\r\n ],\r\n [\r\n 15.3519151687557,\r\n 67.2806630783307\r\n ],\r\n [\r\n 15.3513489165125,\r\n 67.2808617526952\r\n ],\r\n [\r\n 15.3501814618323,\r\n 67.2803918387145\r\n ],\r\n [\r\n 15.3506074094014,\r\n 67.2802297144771\r\n ],\r\n [\r\n 15.3565904379275,\r\n 67.2781752767013\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3542434739063 67.2794280556524)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392222,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392222\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3540680887713,\r\n 67.2670942480497\r\n ],\r\n [\r\n 15.3539964359398,\r\n 67.2668268231099\r\n ],\r\n [\r\n 15.3540064360499,\r\n 67.2668287745235\r\n ],\r\n [\r\n 15.3541823000749,\r\n 67.2668663309584\r\n ],\r\n [\r\n 15.3546438562259,\r\n 67.2669352803765\r\n ],\r\n [\r\n 15.3550650668641,\r\n 67.2670200156396\r\n ],\r\n [\r\n 15.3552962662383,\r\n 67.2670671363875\r\n ],\r\n [\r\n 15.3554203671486,\r\n 67.2670853405164\r\n ],\r\n [\r\n 15.3555080748716,\r\n 67.2670888241858\r\n ],\r\n [\r\n 15.3555559715996,\r\n 67.2670660233837\r\n ],\r\n [\r\n 15.3555667769883,\r\n 67.2670440223167\r\n ],\r\n [\r\n 15.3558380075043,\r\n 67.2691053258734\r\n ],\r\n [\r\n 15.3558964961109,\r\n 67.2706271802155\r\n ],\r\n [\r\n 15.3550637528184,\r\n 67.2705877601354\r\n ],\r\n [\r\n 15.3546398688623,\r\n 67.2691477142984\r\n ],\r\n [\r\n 15.3545987391694,\r\n 67.268890807176\r\n ],\r\n [\r\n 15.3540680887713,\r\n 67.2670942480497\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3551169950934 67.2686197418956)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91026726,\r\n \"knr\": \"1841\",\r\n \"gnr\": 105,\r\n \"bnr\": 21,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"LAUVLI\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474486615,\r\n \"navn\": \"SITRON BETYDELIG\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Skagegata 12\",\r\n \"adresselinje3\": \"5523 HAUGESUND\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"5523\",\r\n \"poststed\": \"HAUGESUND\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"BETYDELIG\",\r\n \"etternavn\": \"SITRON\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6475229982,\r\n \"navn\": \"MAKTPERSON SKYFRI\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Sjusjøvegen 2033\",\r\n \"adresselinje3\": \"2612 SJUSJØEN\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"2612\",\r\n \"poststed\": \"SJUSJØEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"SKYFRI\",\r\n \"etternavn\": \"MAKTPERSON\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 91420370,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91420370\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3595002871434,\r\n 67.2765223911967\r\n ],\r\n [\r\n 15.3592776866105,\r\n 67.276436415941\r\n ],\r\n [\r\n 15.3592974726401,\r\n 67.2763943908972\r\n ],\r\n [\r\n 15.3593075197785,\r\n 67.2763681752818\r\n ],\r\n [\r\n 15.3593007731964,\r\n 67.2763203789144\r\n ],\r\n [\r\n 15.3592907496148,\r\n 67.2762861349604\r\n ],\r\n [\r\n 15.3592665660301,\r\n 67.2762357762158\r\n ],\r\n [\r\n 15.3592371275033,\r\n 67.276175292831\r\n ],\r\n [\r\n 15.3592175462751,\r\n 67.2761534491969\r\n ],\r\n [\r\n 15.3591861504892,\r\n 67.2761327084082\r\n ],\r\n [\r\n 15.3591637521204,\r\n 67.2761086285028\r\n ],\r\n [\r\n 15.3591438089981,\r\n 67.2760936030625\r\n ],\r\n [\r\n 15.3591448279824,\r\n 67.2760686634759\r\n ],\r\n [\r\n 15.3591289866185,\r\n 67.2760331766824\r\n ],\r\n [\r\n 15.3591314670981,\r\n 67.275981861279\r\n ],\r\n [\r\n 15.3591277366181,\r\n 67.27593405816\r\n ],\r\n [\r\n 15.3591032104824,\r\n 67.2758917733852\r\n ],\r\n [\r\n 15.359061627145,\r\n 67.275841274099\r\n ],\r\n [\r\n 15.3590926683687,\r\n 67.2758072971486\r\n ],\r\n [\r\n 15.3591771485674,\r\n 67.2757634231375\r\n ],\r\n [\r\n 15.3592614836934,\r\n 67.2757253800714\r\n ],\r\n [\r\n 15.3593576315773,\r\n 67.275686144402\r\n ],\r\n [\r\n 15.3594502206589,\r\n 67.2756571427288\r\n ],\r\n [\r\n 15.3595936292777,\r\n 67.2756137645426\r\n ],\r\n [\r\n 15.3597156657706,\r\n 67.2755838894706\r\n ],\r\n [\r\n 15.3598348046175,\r\n 67.2755619146213\r\n ],\r\n [\r\n 15.3599118566817,\r\n 67.2755488248354\r\n ],\r\n [\r\n 15.36000097237,\r\n 67.2755357976799\r\n ],\r\n [\r\n 15.3601400976497,\r\n 67.2755162894826\r\n ],\r\n [\r\n 15.3602614956905,\r\n 67.2755057911783\r\n ],\r\n [\r\n 15.3603708972242,\r\n 67.2754997151207\r\n ],\r\n [\r\n 15.3605421412876,\r\n 67.2754873107217\r\n ],\r\n [\r\n 15.3607426845316,\r\n 67.2754795945817\r\n ],\r\n [\r\n 15.3608079553292,\r\n 67.275469849816\r\n ],\r\n [\r\n 15.3608616088184,\r\n 67.2754588752856\r\n ],\r\n [\r\n 15.3609270238698,\r\n 67.2754432994804\r\n ],\r\n [\r\n 15.360998834166,\r\n 67.2754210712864\r\n ],\r\n [\r\n 15.361058975857,\r\n 67.2753942047539\r\n ],\r\n [\r\n 15.361107498842,\r\n 67.275366018779\r\n ],\r\n [\r\n 15.3611443883187,\r\n 67.2753355266771\r\n ],\r\n [\r\n 15.361155104618,\r\n 67.2752922659452\r\n ],\r\n [\r\n 15.3611761163501,\r\n 67.2752240447495\r\n ],\r\n [\r\n 15.3611915877541,\r\n 67.2751422012166\r\n ],\r\n [\r\n 15.3612090753195,\r\n 67.2750864565967\r\n ],\r\n [\r\n 15.3612221205208,\r\n 67.2750592473825\r\n ],\r\n [\r\n 15.3612618442094,\r\n 67.2750321575759\r\n ],\r\n [\r\n 15.3613098241485,\r\n 67.2750141988516\r\n ],\r\n [\r\n 15.3613784190599,\r\n 67.2749942202803\r\n ],\r\n [\r\n 15.3614408858264,\r\n 67.2749832257259\r\n ],\r\n [\r\n 15.3614659090917,\r\n 67.2749504279793\r\n ],\r\n [\r\n 15.3615059761041,\r\n 67.2749153538091\r\n ],\r\n [\r\n 15.3615378541197,\r\n 67.2748756335255\r\n ],\r\n [\r\n 15.3634057851168,\r\n 67.2748828107698\r\n ],\r\n [\r\n 15.3634406985219,\r\n 67.2748446081795\r\n ],\r\n [\r\n 15.3634140835902,\r\n 67.2747873484381\r\n ],\r\n [\r\n 15.3633253384323,\r\n 67.2746712049259\r\n ],\r\n [\r\n 15.3632624609546,\r\n 67.27457823584\r\n ],\r\n [\r\n 15.363179823957,\r\n 67.2745284583532\r\n ],\r\n [\r\n 15.36312097586,\r\n 67.2744871487959\r\n ],\r\n [\r\n 15.3630841206949,\r\n 67.2744275798805\r\n ],\r\n [\r\n 15.3631301735794,\r\n 67.2743436935548\r\n ],\r\n [\r\n 15.3631999900993,\r\n 67.2742666605847\r\n ],\r\n [\r\n 15.3634104210977,\r\n 67.2741466110814\r\n ],\r\n [\r\n 15.3635140361566,\r\n 67.2740498566309\r\n ],\r\n [\r\n 15.363549535441,\r\n 67.2740044764763\r\n ],\r\n [\r\n 15.3636199821333,\r\n 67.2739539041578\r\n ],\r\n [\r\n 15.3637115337942,\r\n 67.2739184437611\r\n ],\r\n [\r\n 15.3637166218167,\r\n 67.2739174455116\r\n ],\r\n [\r\n 15.363824961522,\r\n 67.2739796331718\r\n ],\r\n [\r\n 15.3655020990317,\r\n 67.2749133076965\r\n ],\r\n [\r\n 15.3660129368323,\r\n 67.2752051132598\r\n ],\r\n [\r\n 15.3674128912535,\r\n 67.2759934531791\r\n ],\r\n [\r\n 15.3698453327274,\r\n 67.2773723415312\r\n ],\r\n [\r\n 15.3690457451935,\r\n 67.2775900048149\r\n ],\r\n [\r\n 15.367135664852,\r\n 67.278117616487\r\n ],\r\n [\r\n 15.3648139995434,\r\n 67.2787572818743\r\n ],\r\n [\r\n 15.3639323079674,\r\n 67.2782938150266\r\n ],\r\n [\r\n 15.3639140669195,\r\n 67.2782842581739\r\n ],\r\n [\r\n 15.3618940202965,\r\n 67.2772220786\r\n ],\r\n [\r\n 15.3603202576485,\r\n 67.2768095757296\r\n ],\r\n [\r\n 15.3601572523423,\r\n 67.2767686780888\r\n ],\r\n [\r\n 15.3600037837044,\r\n 67.2767139447197\r\n ],\r\n [\r\n 15.3595002871434,\r\n 67.2765223911967\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3643596129228 67.2765004770625)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91023687,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 3,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"EIVINDGÅRD\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6475267682,\r\n \"navn\": \"FASTLEGEORDNING PARODISK\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Høgmyrvegen 2\",\r\n \"adresselinje3\": \"6622 ÅLVUNDFJORD\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"6622\",\r\n \"poststed\": \"ÅLVUNDFJORD\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"PARODISK\",\r\n \"etternavn\": \"FASTLEGEORDNING\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474502366,\r\n \"navn\": \"BÆR UFØLSOM\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Strykerveien 99\",\r\n \"adresselinje3\": \"1892 DEGERNES\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"1892\",\r\n \"poststed\": \"DEGERNES\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"UFØLSOM\",\r\n \"etternavn\": \"BÆR\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Erikstadveien 42\",\r\n \"postnummer\": \"8206\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Erikstadveien\",\r\n \"bokstav\": null,\r\n \"nummer\": 42,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 91392471,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392471\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3471344731166,\r\n 67.2691674311525\r\n ],\r\n [\r\n 15.3459151354287,\r\n 67.2698004914524\r\n ],\r\n [\r\n 15.3446934573127,\r\n 67.2689169468021\r\n ],\r\n [\r\n 15.342891872828,\r\n 67.2675454842224\r\n ],\r\n [\r\n 15.343139179946,\r\n 67.2674552534588\r\n ],\r\n [\r\n 15.3432886674291,\r\n 67.2674004845398\r\n ],\r\n [\r\n 15.3458441912008,\r\n 67.2674980696898\r\n ],\r\n [\r\n 15.3471344731166,\r\n 67.2691674311525\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3452428325867 67.268404975434)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392499,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392499\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3654192128028,\r\n 67.2703949056755\r\n ],\r\n [\r\n 15.3655336687648,\r\n 67.2703872896068\r\n ],\r\n [\r\n 15.3655336510237,\r\n 67.2703861235126\r\n ],\r\n [\r\n 15.3655608590132,\r\n 67.2703604066275\r\n ],\r\n [\r\n 15.3655666146644,\r\n 67.2703576127447\r\n ],\r\n [\r\n 15.3655810591191,\r\n 67.2703618855942\r\n ],\r\n [\r\n 15.3672584265682,\r\n 67.270852320486\r\n ],\r\n [\r\n 15.3660774171159,\r\n 67.2709730653506\r\n ],\r\n [\r\n 15.3659143972136,\r\n 67.2709597123254\r\n ],\r\n [\r\n 15.3658785111995,\r\n 67.2709334214984\r\n ],\r\n [\r\n 15.3658494384696,\r\n 67.2709128561138\r\n ],\r\n [\r\n 15.3658101338378,\r\n 67.2708905199754\r\n ],\r\n [\r\n 15.365798210137,\r\n 67.2708842679466\r\n ],\r\n [\r\n 15.3657217007318,\r\n 67.2708403981777\r\n ],\r\n [\r\n 15.3656722120423,\r\n 67.2708041812839\r\n ],\r\n [\r\n 15.3656289144217,\r\n 67.2707632857433\r\n ],\r\n [\r\n 15.3655800261445,\r\n 67.2707055388176\r\n ],\r\n [\r\n 15.3655626387378,\r\n 67.2706907774557\r\n ],\r\n [\r\n 15.3655453154084,\r\n 67.2706649825197\r\n ],\r\n [\r\n 15.3655311462119,\r\n 67.270633080623\r\n ],\r\n [\r\n 15.365527210301,\r\n 67.2706182886427\r\n ],\r\n [\r\n 15.3655112293933,\r\n 67.270574011901\r\n ],\r\n [\r\n 15.3655047041718,\r\n 67.2705567141384\r\n ],\r\n [\r\n 15.365480170919,\r\n 67.2704990911604\r\n ],\r\n [\r\n 15.3654456529788,\r\n 67.2704406835737\r\n ],\r\n [\r\n 15.3654422901393,\r\n 67.2704330664996\r\n ],\r\n [\r\n 15.3654192128028,\r\n 67.2703949056755\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3661532853726 67.2707152047139)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392678,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392678\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3664423661033,\r\n 67.2713762538793\r\n ],\r\n [\r\n 15.3663685920916,\r\n 67.2712990087887\r\n ],\r\n [\r\n 15.3662954744372,\r\n 67.2712495699898\r\n ],\r\n [\r\n 15.3662919545047,\r\n 67.2712468869377\r\n ],\r\n [\r\n 15.3662757518853,\r\n 67.2712338273008\r\n ],\r\n [\r\n 15.3662550496895,\r\n 67.2712146781426\r\n ],\r\n [\r\n 15.3662086018114,\r\n 67.2711802485317\r\n ],\r\n [\r\n 15.3661346282283,\r\n 67.2711354761496\r\n ],\r\n [\r\n 15.3660894318809,\r\n 67.2711070537292\r\n ],\r\n [\r\n 15.3660539450713,\r\n 67.2710765460065\r\n ],\r\n [\r\n 15.3661152781591,\r\n 67.271068063864\r\n ],\r\n [\r\n 15.3671317255094,\r\n 67.2712122281186\r\n ],\r\n [\r\n 15.3684428540396,\r\n 67.2711972056349\r\n ],\r\n [\r\n 15.3694388319114,\r\n 67.2714870794182\r\n ],\r\n [\r\n 15.3688282307571,\r\n 67.2718253162347\r\n ],\r\n [\r\n 15.3685654341629,\r\n 67.2719759920343\r\n ],\r\n [\r\n 15.3685361416851,\r\n 67.271971574115\r\n ],\r\n [\r\n 15.3681517222513,\r\n 67.2718899292534\r\n ],\r\n [\r\n 15.3678369266757,\r\n 67.27184113462\r\n ],\r\n [\r\n 15.3673471043491,\r\n 67.2718131919745\r\n ],\r\n [\r\n 15.367221236784,\r\n 67.2717878248372\r\n ],\r\n [\r\n 15.3671031181048,\r\n 67.2717534696259\r\n ],\r\n [\r\n 15.3669875513749,\r\n 67.2717039487493\r\n ],\r\n [\r\n 15.3668387149189,\r\n 67.2716021174309\r\n ],\r\n [\r\n 15.366648315081,\r\n 67.2714971515651\r\n ],\r\n [\r\n 15.3665285347475,\r\n 67.2714449488998\r\n ],\r\n [\r\n 15.3664598147493,\r\n 67.2713949619236\r\n ],\r\n [\r\n 15.3664423661033,\r\n 67.2713762538793\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3678413100041 67.2715032754014)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392648,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392648\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3573158810468,\r\n 67.2668674625055\r\n ],\r\n [\r\n 15.3573053925979,\r\n 67.2663960087572\r\n ],\r\n [\r\n 15.3577782576014,\r\n 67.2663834740045\r\n ],\r\n [\r\n 15.3585812017435,\r\n 67.2669994652422\r\n ],\r\n [\r\n 15.3589431513015,\r\n 67.2671056719024\r\n ],\r\n [\r\n 15.3593913884009,\r\n 67.2670425951743\r\n ],\r\n [\r\n 15.3606630120887,\r\n 67.2670523924155\r\n ],\r\n [\r\n 15.3607950677198,\r\n 67.2676464655947\r\n ],\r\n [\r\n 15.3607104323957,\r\n 67.2676470145264\r\n ],\r\n [\r\n 15.3606148183493,\r\n 67.2676577244663\r\n ],\r\n [\r\n 15.3603037629611,\r\n 67.2678072393351\r\n ],\r\n [\r\n 15.3602384643535,\r\n 67.2678137547104\r\n ],\r\n [\r\n 15.3602156674754,\r\n 67.267809051605\r\n ],\r\n [\r\n 15.3601939809494,\r\n 67.2677855981525\r\n ],\r\n [\r\n 15.3601579767221,\r\n 67.2676578526262\r\n ],\r\n [\r\n 15.3601128571811,\r\n 67.267602696975\r\n ],\r\n [\r\n 15.3600204070716,\r\n 67.267561461632\r\n ],\r\n [\r\n 15.3599233527929,\r\n 67.2675534265355\r\n ],\r\n [\r\n 15.3598136309885,\r\n 67.2675666792904\r\n ],\r\n [\r\n 15.3595976056579,\r\n 67.2676821619455\r\n ],\r\n [\r\n 15.3594751493632,\r\n 67.2677123070788\r\n ],\r\n [\r\n 15.3591536868264,\r\n 67.2677711536293\r\n ],\r\n [\r\n 15.3590539685566,\r\n 67.2677711074993\r\n ],\r\n [\r\n 15.3589281175162,\r\n 67.2677448368422\r\n ],\r\n [\r\n 15.3587925597541,\r\n 67.2676897035234\r\n ],\r\n [\r\n 15.3586828594019,\r\n 67.2676267979143\r\n ],\r\n [\r\n 15.3585890949453,\r\n 67.2676061065919\r\n ],\r\n [\r\n 15.3582849391142,\r\n 67.2675037171181\r\n ],\r\n [\r\n 15.3579072257784,\r\n 67.2674292091377\r\n ],\r\n [\r\n 15.3576214370677,\r\n 67.2673296479636\r\n ],\r\n [\r\n 15.3575863242571,\r\n 67.2671517561204\r\n ],\r\n [\r\n 15.3575485265194,\r\n 67.267089496946\r\n ],\r\n [\r\n 15.357352628465,\r\n 67.2668903446134\r\n ],\r\n [\r\n 15.3573158810468,\r\n 67.2668674625055\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3589353451606 67.2672068373328)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392917,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392917\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3573197652359,\r\n 67.2670351080939\r\n ],\r\n [\r\n 15.3573440430517,\r\n 67.2670615163513\r\n ],\r\n [\r\n 15.3574488589755,\r\n 67.2672329739304\r\n ],\r\n [\r\n 15.3574929859606,\r\n 67.2673777454621\r\n ],\r\n [\r\n 15.3575829469775,\r\n 67.2674234729257\r\n ],\r\n [\r\n 15.357829416401,\r\n 67.2674832041106\r\n ],\r\n [\r\n 15.3581704313118,\r\n 67.267553757508\r\n ],\r\n [\r\n 15.35830406353,\r\n 67.2676043208104\r\n ],\r\n [\r\n 15.35856217406,\r\n 67.2676668953876\r\n ],\r\n [\r\n 15.3586472938774,\r\n 67.2677143374181\r\n ],\r\n [\r\n 15.3587128865333,\r\n 67.2677741122833\r\n ],\r\n [\r\n 15.358821022141,\r\n 67.2678253600253\r\n ],\r\n [\r\n 15.3589387210953,\r\n 67.2678337084592\r\n ],\r\n [\r\n 15.3591135639403,\r\n 67.2678174402148\r\n ],\r\n [\r\n 15.3595886517537,\r\n 67.2677501765996\r\n ],\r\n [\r\n 15.3597614978514,\r\n 67.2676935459277\r\n ],\r\n [\r\n 15.3597931283698,\r\n 67.267668717136\r\n ],\r\n [\r\n 15.3598328812842,\r\n 67.2676288000939\r\n ],\r\n [\r\n 15.3599356439119,\r\n 67.2676153835187\r\n ],\r\n [\r\n 15.3600325685838,\r\n 67.2676611837141\r\n ],\r\n [\r\n 15.3600664769739,\r\n 67.2678193431638\r\n ],\r\n [\r\n 15.3601550417216,\r\n 67.2678488361475\r\n ],\r\n [\r\n 15.3602427945992,\r\n 67.2678550979179\r\n ],\r\n [\r\n 15.3605233692977,\r\n 67.2678533021631\r\n ],\r\n [\r\n 15.3606634279889,\r\n 67.2677290186179\r\n ],\r\n [\r\n 15.3607273647982,\r\n 67.2677090507299\r\n ],\r\n [\r\n 15.3608087511453,\r\n 67.2677083296839\r\n ],\r\n [\r\n 15.36083535383,\r\n 67.2678274847396\r\n ],\r\n [\r\n 15.3610765302073,\r\n 67.2690002533012\r\n ],\r\n [\r\n 15.3627037047804,\r\n 67.2694965893028\r\n ],\r\n [\r\n 15.3650572738536,\r\n 67.2701877082955\r\n ],\r\n [\r\n 15.3654384060242,\r\n 67.2703149369393\r\n ],\r\n [\r\n 15.3654312479457,\r\n 67.2703170163871\r\n ],\r\n [\r\n 15.3653929200489,\r\n 67.2703740647759\r\n ],\r\n [\r\n 15.3653914084704,\r\n 67.2703966732839\r\n ],\r\n [\r\n 15.3654192128028,\r\n 67.2703949056755\r\n ],\r\n [\r\n 15.3654422901393,\r\n 67.2704330664996\r\n ],\r\n [\r\n 15.3654456529788,\r\n 67.2704406835737\r\n ],\r\n [\r\n 15.365480170919,\r\n 67.2704990911604\r\n ],\r\n [\r\n 15.3655047041718,\r\n 67.2705567141384\r\n ],\r\n [\r\n 15.3655112293933,\r\n 67.270574011901\r\n ],\r\n [\r\n 15.365527210301,\r\n 67.2706182886427\r\n ],\r\n [\r\n 15.3655311462119,\r\n 67.270633080623\r\n ],\r\n [\r\n 15.3655453154084,\r\n 67.2706649825197\r\n ],\r\n [\r\n 15.3655626387378,\r\n 67.2706907774557\r\n ],\r\n [\r\n 15.3655800261445,\r\n 67.2707055388176\r\n ],\r\n [\r\n 15.3656289144217,\r\n 67.2707632857433\r\n ],\r\n [\r\n 15.3656722120423,\r\n 67.2708041812839\r\n ],\r\n [\r\n 15.3657217007318,\r\n 67.2708403981777\r\n ],\r\n [\r\n 15.365798210137,\r\n 67.2708842679466\r\n ],\r\n [\r\n 15.3658101338378,\r\n 67.2708905199754\r\n ],\r\n [\r\n 15.3658494384696,\r\n 67.2709128561138\r\n ],\r\n [\r\n 15.3658785111995,\r\n 67.2709334214984\r\n ],\r\n [\r\n 15.3659143972136,\r\n 67.2709597123254\r\n ],\r\n [\r\n 15.3655477166682,\r\n 67.2709295101753\r\n ],\r\n [\r\n 15.3643716654641,\r\n 67.2707815717739\r\n ],\r\n [\r\n 15.3633939925431,\r\n 67.2707758929601\r\n ],\r\n [\r\n 15.3617378726787,\r\n 67.270828429719\r\n ],\r\n [\r\n 15.3612302418526,\r\n 67.2708945169229\r\n ],\r\n [\r\n 15.3580114601182,\r\n 67.2708765175288\r\n ],\r\n [\r\n 15.3574938616543,\r\n 67.2708969564994\r\n ],\r\n [\r\n 15.3573947392709,\r\n 67.2707975175137\r\n ],\r\n [\r\n 15.3573610834302,\r\n 67.2688622586728\r\n ],\r\n [\r\n 15.3573197652359,\r\n 67.2670351080939\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3602947677142 67.2695606258742)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392829,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392829\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3593396489982,\r\n 67.2793685633265\r\n ],\r\n [\r\n 15.3595481273517,\r\n 67.2793307806514\r\n ],\r\n [\r\n 15.3599194882251,\r\n 67.2792472434124\r\n ],\r\n [\r\n 15.3602744017261,\r\n 67.2791501074099\r\n ],\r\n [\r\n 15.3605307247609,\r\n 67.2790540889184\r\n ],\r\n [\r\n 15.3608291216208,\r\n 67.2788554455329\r\n ],\r\n [\r\n 15.3610260756301,\r\n 67.2787768721563\r\n ],\r\n [\r\n 15.3613334450524,\r\n 67.2786970635082\r\n ],\r\n [\r\n 15.3616742678042,\r\n 67.2786357473844\r\n ],\r\n [\r\n 15.3620831148242,\r\n 67.2785930250668\r\n ],\r\n [\r\n 15.3624731609549,\r\n 67.2785344667756\r\n ],\r\n [\r\n 15.3627194599241,\r\n 67.2784516536468\r\n ],\r\n [\r\n 15.3628660047861,\r\n 67.2784308705356\r\n ],\r\n [\r\n 15.3634469467509,\r\n 67.2784157431323\r\n ],\r\n [\r\n 15.3636113042112,\r\n 67.2783916000468\r\n ],\r\n [\r\n 15.3638192876867,\r\n 67.2783221479144\r\n ],\r\n [\r\n 15.3639323079674,\r\n 67.2782938150266\r\n ],\r\n [\r\n 15.3648139995434,\r\n 67.2787572818743\r\n ],\r\n [\r\n 15.3650668022111,\r\n 67.278889018891\r\n ],\r\n [\r\n 15.3667295754968,\r\n 67.2800414979379\r\n ],\r\n [\r\n 15.3652210270946,\r\n 67.2806699815826\r\n ],\r\n [\r\n 15.3626732942792,\r\n 67.2820315165757\r\n ],\r\n [\r\n 15.3627233710532,\r\n 67.2820900689737\r\n ],\r\n [\r\n 15.3628189827987,\r\n 67.2821829643023\r\n ],\r\n [\r\n 15.3628984387759,\r\n 67.2822508690654\r\n ],\r\n [\r\n 15.3629866758828,\r\n 67.2823163319843\r\n ],\r\n [\r\n 15.3630701277634,\r\n 67.2823568683718\r\n ],\r\n [\r\n 15.3631560712072,\r\n 67.2824087016006\r\n ],\r\n [\r\n 15.3632485052209,\r\n 67.2824447324694\r\n ],\r\n [\r\n 15.3633530067174,\r\n 67.2824808256991\r\n ],\r\n [\r\n 15.3635100070302,\r\n 67.282520657306\r\n ],\r\n [\r\n 15.3637832006587,\r\n 67.2826023859118\r\n ],\r\n [\r\n 15.3638995035491,\r\n 67.2826362095059\r\n ],\r\n [\r\n 15.3638696700012,\r\n 67.2826428253526\r\n ],\r\n [\r\n 15.3612856002769,\r\n 67.2836441746092\r\n ],\r\n [\r\n 15.3580241640814,\r\n 67.2848797702651\r\n ],\r\n [\r\n 15.3575390181712,\r\n 67.2850426736556\r\n ],\r\n [\r\n 15.3553663756903,\r\n 67.2837712966627\r\n ],\r\n [\r\n 15.3548533273321,\r\n 67.2834747978175\r\n ],\r\n [\r\n 15.3543198315464,\r\n 67.282373621846\r\n ],\r\n [\r\n 15.354428657164,\r\n 67.2823105901171\r\n ],\r\n [\r\n 15.3569201425723,\r\n 67.2813463349442\r\n ],\r\n [\r\n 15.3602541100546,\r\n 67.2800555204104\r\n ],\r\n [\r\n 15.3601772297612,\r\n 67.2800036653237\r\n ],\r\n [\r\n 15.3601089194181,\r\n 67.2799508042644\r\n ],\r\n [\r\n 15.3600556403093,\r\n 67.279894590498\r\n ],\r\n [\r\n 15.3598912272279,\r\n 67.2797611227281\r\n ],\r\n [\r\n 15.3597403857604,\r\n 67.2796506779488\r\n ],\r\n [\r\n 15.359629057511,\r\n 67.2795758461857\r\n ],\r\n [\r\n 15.3594580752041,\r\n 67.2794527084693\r\n ],\r\n [\r\n 15.3593412918276,\r\n 67.2793698154873\r\n ],\r\n [\r\n 15.3593396489982,\r\n 67.2793685633265\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3603630632551 67.2816246954568)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392571,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392571\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3609624137489,\r\n 67.2517082440355\r\n ],\r\n [\r\n 15.3612876892447,\r\n 67.2515012853713\r\n ],\r\n [\r\n 15.3616787914175,\r\n 67.2512646654766\r\n ],\r\n [\r\n 15.3618351719094,\r\n 67.2511692279971\r\n ],\r\n [\r\n 15.3621339286167,\r\n 67.2509873544533\r\n ],\r\n [\r\n 15.3627085712704,\r\n 67.2506292189233\r\n ],\r\n [\r\n 15.3627495908566,\r\n 67.2506447345171\r\n ],\r\n [\r\n 15.3627938249253,\r\n 67.2506582693716\r\n ],\r\n [\r\n 15.3628428901577,\r\n 67.250669461018\r\n ],\r\n [\r\n 15.3628554603444,\r\n 67.2506732001202\r\n ],\r\n [\r\n 15.3628770896085,\r\n 67.2506783539858\r\n ],\r\n [\r\n 15.3629166729911,\r\n 67.2506908228871\r\n ],\r\n [\r\n 15.3630015394783,\r\n 67.2507248974612\r\n ],\r\n [\r\n 15.3630590920904,\r\n 67.2507456680519\r\n ],\r\n [\r\n 15.3630991134051,\r\n 67.2507564315635\r\n ],\r\n [\r\n 15.3631639867064,\r\n 67.2507709063549\r\n ],\r\n [\r\n 15.3631935369258,\r\n 67.250778823044\r\n ],\r\n [\r\n 15.3632161542397,\r\n 67.250788011257\r\n ],\r\n [\r\n 15.3632341302004,\r\n 67.2507967614566\r\n ],\r\n [\r\n 15.3632598291358,\r\n 67.2508105175353\r\n ],\r\n [\r\n 15.3632747370853,\r\n 67.2508155968568\r\n ],\r\n [\r\n 15.36328239366,\r\n 67.250816207447\r\n ],\r\n [\r\n 15.3633217267774,\r\n 67.2508274209753\r\n ],\r\n [\r\n 15.3633794398076,\r\n 67.2508434368371\r\n ],\r\n [\r\n 15.3634153187472,\r\n 67.2508560934086\r\n ],\r\n [\r\n 15.3634585805648,\r\n 67.2508665803852\r\n ],\r\n [\r\n 15.3634991524923,\r\n 67.2508830835338\r\n ],\r\n [\r\n 15.3635353920995,\r\n 67.2509042610337\r\n ],\r\n [\r\n 15.3635731996444,\r\n 67.2509218468593\r\n ],\r\n [\r\n 15.3636113974705,\r\n 67.2509345878374\r\n ],\r\n [\r\n 15.3636597698095,\r\n 67.250945870508\r\n ],\r\n [\r\n 15.3636974730561,\r\n 67.2509565494205\r\n ],\r\n [\r\n 15.3637320229938,\r\n 67.250973245562\r\n ],\r\n [\r\n 15.3637664063748,\r\n 67.250994247811\r\n ],\r\n [\r\n 15.3638098165042,\r\n 67.2510145119692\r\n ],\r\n [\r\n 15.3638356001403,\r\n 67.2510338293419\r\n ],\r\n [\r\n 15.3638768026585,\r\n 67.2510460252288\r\n ],\r\n [\r\n 15.3639198387161,\r\n 67.251056871405\r\n ],\r\n [\r\n 15.3639462131568,\r\n 67.2510692803001\r\n ],\r\n [\r\n 15.363975121749,\r\n 67.2510806967126\r\n ],\r\n [\r\n 15.3640170454135,\r\n 67.2510945952829\r\n ],\r\n [\r\n 15.3640730681618,\r\n 67.2511060398842\r\n ],\r\n [\r\n 15.3641126189154,\r\n 67.2511162659948\r\n ],\r\n [\r\n 15.364142930265,\r\n 67.2511284865208\r\n ],\r\n [\r\n 15.3641867269921,\r\n 67.2511436366375\r\n ],\r\n [\r\n 15.3642464644602,\r\n 67.2511555212641\r\n ],\r\n [\r\n 15.3643167305452,\r\n 67.2511740199826\r\n ],\r\n [\r\n 15.3643844395139,\r\n 67.2511919862587\r\n ],\r\n [\r\n 15.3644342683825,\r\n 67.2512075711279\r\n ],\r\n [\r\n 15.3645057002314,\r\n 67.2512265156315\r\n ],\r\n [\r\n 15.3645473274549,\r\n 67.2512361089997\r\n ],\r\n [\r\n 15.3645978177246,\r\n 67.2512494497446\r\n ],\r\n [\r\n 15.3646416408003,\r\n 67.2512663040325\r\n ],\r\n [\r\n 15.364684219569,\r\n 67.2512775098552\r\n ],\r\n [\r\n 15.3647513595147,\r\n 67.2512884804467\r\n ],\r\n [\r\n 15.3648068978231,\r\n 67.2512984906482\r\n ],\r\n [\r\n 15.3648756355287,\r\n 67.2513078429048\r\n ],\r\n [\r\n 15.3649288742807,\r\n 67.251319024429\r\n ],\r\n [\r\n 15.3649869904064,\r\n 67.2513309124676\r\n ],\r\n [\r\n 15.3650477019696,\r\n 67.2513458444798\r\n ],\r\n [\r\n 15.3650847698092,\r\n 67.2513603817366\r\n ],\r\n [\r\n 15.3651049441653,\r\n 67.2513764823627\r\n ],\r\n [\r\n 15.3651208560626,\r\n 67.2513865825906\r\n ],\r\n [\r\n 15.3651512787822,\r\n 67.2513908191189\r\n ],\r\n [\r\n 15.3652044388381,\r\n 67.251396797965\r\n ],\r\n [\r\n 15.3652483730922,\r\n 67.25140566828\r\n ],\r\n [\r\n 15.3653059566218,\r\n 67.2514129825694\r\n ],\r\n [\r\n 15.3653867001339,\r\n 67.2514193470878\r\n ],\r\n [\r\n 15.3654593083983,\r\n 67.2514241154377\r\n ],\r\n [\r\n 15.3655031909899,\r\n 67.2514295770918\r\n ],\r\n [\r\n 15.3655405754521,\r\n 67.2514344256131\r\n ],\r\n [\r\n 15.3655684437564,\r\n 67.2514383090686\r\n ],\r\n [\r\n 15.3656097854851,\r\n 67.2514443146979\r\n ],\r\n [\r\n 15.3656801719873,\r\n 67.2514553672099\r\n ],\r\n [\r\n 15.3657514295646,\r\n 67.2514627398885\r\n ],\r\n [\r\n 15.365816754829,\r\n 67.2514762258515\r\n ],\r\n [\r\n 15.3658813385564,\r\n 67.2514866635808\r\n ],\r\n [\r\n 15.3659800544937,\r\n 67.2515014189012\r\n ],\r\n [\r\n 15.3660782114958,\r\n 67.2515098962349\r\n ],\r\n [\r\n 15.3661678339178,\r\n 67.2515209943625\r\n ],\r\n [\r\n 15.3662460125218,\r\n 67.2515262878666\r\n ],\r\n [\r\n 15.3663230379417,\r\n 67.2515319427761\r\n ],\r\n [\r\n 15.3664155227981,\r\n 67.2515331669166\r\n ],\r\n [\r\n 15.3664688660094,\r\n 67.2515359156234\r\n ],\r\n [\r\n 15.3664995249928,\r\n 67.251540420466\r\n ],\r\n [\r\n 15.3665337078927,\r\n 67.2515480568561\r\n ],\r\n [\r\n 15.3665677137692,\r\n 67.2515592817583\r\n ],\r\n [\r\n 15.3666137194144,\r\n 67.2515671602386\r\n ],\r\n [\r\n 15.3666661904815,\r\n 67.2515734989871\r\n ],\r\n [\r\n 15.3667056254733,\r\n 67.2515760102787\r\n ],\r\n [\r\n 15.3667383674516,\r\n 67.251580330911\r\n ],\r\n [\r\n 15.3667805518434,\r\n 67.251580772736\r\n ],\r\n [\r\n 15.3668232407589,\r\n 67.2515839044831\r\n ],\r\n [\r\n 15.3668597247764,\r\n 67.2515904591106\r\n ],\r\n [\r\n 15.3668968862351,\r\n 67.2515958460438\r\n ],\r\n [\r\n 15.3669351626002,\r\n 67.2515983599276\r\n ],\r\n [\r\n 15.3669779573719,\r\n 67.2515932387269\r\n ],\r\n [\r\n 15.367002381905,\r\n 67.2515840331877\r\n ],\r\n [\r\n 15.3670158568927,\r\n 67.251586244948\r\n ],\r\n [\r\n 15.3670182837845,\r\n 67.2515934156288\r\n ],\r\n [\r\n 15.3670172291398,\r\n 67.2516002354591\r\n ],\r\n [\r\n 15.3670258883044,\r\n 67.251605777237\r\n ],\r\n [\r\n 15.3670515125922,\r\n 67.2515992600332\r\n ],\r\n [\r\n 15.3670782681689,\r\n 67.2515909461804\r\n ],\r\n [\r\n 15.3671183299764,\r\n 67.2515889707933\r\n ],\r\n [\r\n 15.367170672486,\r\n 67.2515868776006\r\n ],\r\n [\r\n 15.3672293239448,\r\n 67.2515881786657\r\n ],\r\n [\r\n 15.3672678950856,\r\n 67.2515948181283\r\n ],\r\n [\r\n 15.3673092416169,\r\n 67.2516010924187\r\n ],\r\n [\r\n 15.3673512861229,\r\n 67.2516075445068\r\n ],\r\n [\r\n 15.3673989156501,\r\n 67.2516155087489\r\n ],\r\n [\r\n 15.3674328041598,\r\n 67.2516190192896\r\n ],\r\n [\r\n 15.3674794711475,\r\n 67.2516246534364\r\n ],\r\n [\r\n 15.3675006799052,\r\n 67.251632498731\r\n ],\r\n [\r\n 15.3674864081156,\r\n 67.2516388106092\r\n ],\r\n [\r\n 15.3674798809886,\r\n 67.2516514736594\r\n ],\r\n [\r\n 15.3674733099929,\r\n 67.2516612663176\r\n ],\r\n [\r\n 15.3674599199004,\r\n 67.2516646159797\r\n ],\r\n [\r\n 15.3674001095527,\r\n 67.2516633176512\r\n ],\r\n [\r\n 15.3673571391888,\r\n 67.2516721171842\r\n ],\r\n [\r\n 15.3673098591277,\r\n 67.2516718665775\r\n ],\r\n [\r\n 15.3673018250153,\r\n 67.2516769083242\r\n ],\r\n [\r\n 15.3672893082048,\r\n 67.2516919173478\r\n ],\r\n [\r\n 15.3672935943704,\r\n 67.251714602368\r\n ],\r\n [\r\n 15.3672985305492,\r\n 67.2517343257055\r\n ],\r\n [\r\n 15.367303717656,\r\n 67.2517553043089\r\n ],\r\n [\r\n 15.3673190793723,\r\n 67.2517748243819\r\n ],\r\n [\r\n 15.367343938315,\r\n 67.2517940536092\r\n ],\r\n [\r\n 15.3673474801755,\r\n 67.2517983512412\r\n ],\r\n [\r\n 15.3672502007681,\r\n 67.2518626217063\r\n ],\r\n [\r\n 15.3669257846723,\r\n 67.2520773050136\r\n ],\r\n [\r\n 15.3658882907311,\r\n 67.2527813291683\r\n ],\r\n [\r\n 15.3657324000094,\r\n 67.2528933645001\r\n ],\r\n [\r\n 15.3654539088108,\r\n 67.2530817468744\r\n ],\r\n [\r\n 15.365301452258,\r\n 67.2531912622774\r\n ],\r\n [\r\n 15.3650132842593,\r\n 67.2533991314066\r\n ],\r\n [\r\n 15.3652235669159,\r\n 67.2534802826745\r\n ],\r\n [\r\n 15.3647735826919,\r\n 67.2537466468944\r\n ],\r\n [\r\n 15.3647099530051,\r\n 67.2537841975622\r\n ],\r\n [\r\n 15.3643690815918,\r\n 67.2539868030636\r\n ],\r\n [\r\n 15.364304290475,\r\n 67.2540242665006\r\n ],\r\n [\r\n 15.3641263555537,\r\n 67.2541202934482\r\n ],\r\n [\r\n 15.3628215840869,\r\n 67.2537116913641\r\n ],\r\n [\r\n 15.3594556285326,\r\n 67.2526560168394\r\n ],\r\n [\r\n 15.3598667704742,\r\n 67.2523932530627\r\n ],\r\n [\r\n 15.3599595093816,\r\n 67.2523338412525\r\n ],\r\n [\r\n 15.3603096688944,\r\n 67.2521160644719\r\n ],\r\n [\r\n 15.3606343369723,\r\n 67.2519142215877\r\n ],\r\n [\r\n 15.3607250577902,\r\n 67.2518595681091\r\n ],\r\n [\r\n 15.3609624137489,\r\n 67.2517082440355\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3634077931965 67.2523476401772)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392614,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392614\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3415162434689,\r\n 67.2706778668983\r\n ],\r\n [\r\n 15.3419616397472,\r\n 67.2705865888016\r\n ],\r\n [\r\n 15.3433166130459,\r\n 67.2703465247513\r\n ],\r\n [\r\n 15.3431236172356,\r\n 67.27102625422\r\n ],\r\n [\r\n 15.3430641023402,\r\n 67.2712113478987\r\n ],\r\n [\r\n 15.3430233103795,\r\n 67.2713432976888\r\n ],\r\n [\r\n 15.3426710705749,\r\n 67.2713157035879\r\n ],\r\n [\r\n 15.3425259010416,\r\n 67.2712847070713\r\n ],\r\n [\r\n 15.3415162434689,\r\n 67.2706778668983\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3425855077984 67.2708277955348)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91392707,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91392707\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3577427395841,\r\n 67.2711472108074\r\n ],\r\n [\r\n 15.3588471867181,\r\n 67.2711612523046\r\n ],\r\n [\r\n 15.3595963298423,\r\n 67.2711454934978\r\n ],\r\n [\r\n 15.3611310227211,\r\n 67.2711599906873\r\n ],\r\n [\r\n 15.3616014856201,\r\n 67.2712591300173\r\n ],\r\n [\r\n 15.3626083839751,\r\n 67.2712790165178\r\n ],\r\n [\r\n 15.3648032390117,\r\n 67.2712213011988\r\n ],\r\n [\r\n 15.3637458842658,\r\n 67.2714687668813\r\n ],\r\n [\r\n 15.3608570862107,\r\n 67.2742776819549\r\n ],\r\n [\r\n 15.3577427395841,\r\n 67.2711472108074\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3608690603424 67.2722166000507)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91027808,\r\n \"knr\": \"1841\",\r\n \"gnr\": 117,\r\n \"bnr\": 3,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"KLUNGSET ØSTRE\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6475128569,\r\n \"navn\": \"FJELL SAKTE\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Sørstrandveien 133\",\r\n \"adresselinje3\": \"4076 VASSØY\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"4076\",\r\n \"poststed\": \"VASSØY\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"SAKTE\",\r\n \"etternavn\": \"FJELL\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474731352,\r\n \"navn\": \"BLANKETT TAUS\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Meierlia 15\",\r\n \"adresselinje3\": \"3744 SKIEN\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"3744\",\r\n \"poststed\": \"SKIEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"TAUS\",\r\n \"etternavn\": \"BLANKETT\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Bentevasslia 1\",\r\n \"postnummer\": \"8214\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Bentevasslia\",\r\n \"bokstav\": null,\r\n \"nummer\": 1,\r\n \"undernummer\": null\r\n },\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Klungsetlia 1\",\r\n \"postnummer\": \"8214\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Klungsetlia\",\r\n \"bokstav\": null,\r\n \"nummer\": 1,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 91458185,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91458185\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3416866569752,\r\n 67.2693856987621\r\n ],\r\n [\r\n 15.3417900605903,\r\n 67.2693835052821\r\n ],\r\n [\r\n 15.3419177087439,\r\n 67.2693738148138\r\n ],\r\n [\r\n 15.342073148637,\r\n 67.2693940256903\r\n ],\r\n [\r\n 15.3419660157383,\r\n 67.269411207612\r\n ],\r\n [\r\n 15.3419920450002,\r\n 67.2694313352516\r\n ],\r\n [\r\n 15.3420061116691,\r\n 67.2694908677623\r\n ],\r\n [\r\n 15.3419608576538,\r\n 67.2695539352832\r\n ],\r\n [\r\n 15.3419592670634,\r\n 67.2695888329447\r\n ],\r\n [\r\n 15.3420326304683,\r\n 67.2696431261446\r\n ],\r\n [\r\n 15.3421030824674,\r\n 67.2696558035502\r\n ],\r\n [\r\n 15.3421823593963,\r\n 67.269653033292\r\n ],\r\n [\r\n 15.3422413353635,\r\n 67.2696578412665\r\n ],\r\n [\r\n 15.3423520537384,\r\n 67.2697620190125\r\n ],\r\n [\r\n 15.3418550179217,\r\n 67.2700532653267\r\n ],\r\n [\r\n 15.3417856367417,\r\n 67.2701811493478\r\n ],\r\n [\r\n 15.3415162434689,\r\n 67.2706778668983\r\n ],\r\n [\r\n 15.3413193097962,\r\n 67.2708882790517\r\n ],\r\n [\r\n 15.3407986558533,\r\n 67.2708087421199\r\n ],\r\n [\r\n 15.3405259923156,\r\n 67.2709457579201\r\n ],\r\n [\r\n 15.3403201738897,\r\n 67.2710209163221\r\n ],\r\n [\r\n 15.3397322956552,\r\n 67.2713047236788\r\n ],\r\n [\r\n 15.3393978058846,\r\n 67.2712526857893\r\n ],\r\n [\r\n 15.339695866018,\r\n 67.271139568776\r\n ],\r\n [\r\n 15.3396154037457,\r\n 67.2711080739589\r\n ],\r\n [\r\n 15.3392563555864,\r\n 67.2712219475735\r\n ],\r\n [\r\n 15.3392074785936,\r\n 67.27120985127\r\n ],\r\n [\r\n 15.3390803609108,\r\n 67.2711264272802\r\n ],\r\n [\r\n 15.3383171925028,\r\n 67.2709063190442\r\n ],\r\n [\r\n 15.3386084781154,\r\n 67.2707386881833\r\n ],\r\n [\r\n 15.3394784615006,\r\n 67.2702374959315\r\n ],\r\n [\r\n 15.3402204158145,\r\n 67.2686932583139\r\n ],\r\n [\r\n 15.3402287587119,\r\n 67.2686764662715\r\n ],\r\n [\r\n 15.3402360543911,\r\n 67.268683985826\r\n ],\r\n [\r\n 15.3403006593219,\r\n 67.268693447114\r\n ],\r\n [\r\n 15.3403865434734,\r\n 67.2686989163669\r\n ],\r\n [\r\n 15.3406718519723,\r\n 67.2687358070618\r\n ],\r\n [\r\n 15.3408728985516,\r\n 67.2687834610136\r\n ],\r\n [\r\n 15.3411500677257,\r\n 67.2688513155025\r\n ],\r\n [\r\n 15.3411797423926,\r\n 67.2688832762604\r\n ],\r\n [\r\n 15.3412738166491,\r\n 67.2689264923973\r\n ],\r\n [\r\n 15.3412848308138,\r\n 67.268967193931\r\n ],\r\n [\r\n 15.3412889973888,\r\n 67.2690319502876\r\n ],\r\n [\r\n 15.3413417408304,\r\n 67.2691042281198\r\n ],\r\n [\r\n 15.3413597048213,\r\n 67.2691770283741\r\n ],\r\n [\r\n 15.3413745903536,\r\n 67.2692290241881\r\n ],\r\n [\r\n 15.3414817680391,\r\n 67.2692966114331\r\n ],\r\n [\r\n 15.3415834417127,\r\n 67.2693685160337\r\n ],\r\n [\r\n 15.3416866569752,\r\n 67.2693856987621\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.340478292964 67.2700745446054)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 6273022388,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"6273022388\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3389065616445,\r\n 67.2716961356496\r\n ],\r\n [\r\n 15.3392185886317,\r\n 67.271306796175\r\n ],\r\n [\r\n 15.3395300049235,\r\n 67.2714017699662\r\n ],\r\n [\r\n 15.3393349003784,\r\n 67.2714953741785\r\n ],\r\n [\r\n 15.3390925064679,\r\n 67.2716090009112\r\n ],\r\n [\r\n 15.3389065616445,\r\n 67.2716961356496\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3392186160544 67.2714686232718)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91458326,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91458326\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3317385081898,\r\n 67.2669604591108\r\n ],\r\n [\r\n 15.3317459310328,\r\n 67.2669606231819\r\n ],\r\n [\r\n 15.3320031228395,\r\n 67.2669622445338\r\n ],\r\n [\r\n 15.3322187747594,\r\n 67.2669616191494\r\n ],\r\n [\r\n 15.3324560663853,\r\n 67.2669495564641\r\n ],\r\n [\r\n 15.3326676519319,\r\n 67.2669399686473\r\n ],\r\n [\r\n 15.3328742339763,\r\n 67.2669374774185\r\n ],\r\n [\r\n 15.3330829278195,\r\n 67.2669367755934\r\n ],\r\n [\r\n 15.3332939293144,\r\n 67.2669352613854\r\n ],\r\n [\r\n 15.3334794898259,\r\n 67.266972012989\r\n ],\r\n [\r\n 15.333666157002,\r\n 67.2669882202114\r\n ],\r\n [\r\n 15.3338316104709,\r\n 67.2670130827552\r\n ],\r\n [\r\n 15.3339647658977,\r\n 67.2670332580674\r\n ],\r\n [\r\n 15.334032141618,\r\n 67.2670590419569\r\n ],\r\n [\r\n 15.3339124639176,\r\n 67.2671076404806\r\n ],\r\n [\r\n 15.3322858102901,\r\n 67.2677679056464\r\n ],\r\n [\r\n 15.3319014591222,\r\n 67.2677277064164\r\n ],\r\n [\r\n 15.3317119204592,\r\n 67.2677054033003\r\n ],\r\n [\r\n 15.3314480611844,\r\n 67.2676749110378\r\n ],\r\n [\r\n 15.331057444376,\r\n 67.2676341845088\r\n ],\r\n [\r\n 15.3309808084998,\r\n 67.26762626925\r\n ],\r\n [\r\n 15.330798043301,\r\n 67.2676073597912\r\n ],\r\n [\r\n 15.3308335087333,\r\n 67.2675725718838\r\n ],\r\n [\r\n 15.3305716586478,\r\n 67.2675025152633\r\n ],\r\n [\r\n 15.3313209419764,\r\n 67.2671507727554\r\n ],\r\n [\r\n 15.3317385081898,\r\n 67.2669604591108\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3322395490068 67.267310736199)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 108915309,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"108915309\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3336762521281,\r\n 67.2740610573491\r\n ],\r\n [\r\n 15.3344185130303,\r\n 67.2736166708883\r\n ],\r\n [\r\n 15.3349439601841,\r\n 67.2732702217718\r\n ],\r\n [\r\n 15.337041497979,\r\n 67.2715839403303\r\n ],\r\n [\r\n 15.3376265399643,\r\n 67.2711879938771\r\n ],\r\n [\r\n 15.3378191610185,\r\n 67.271192935121\r\n ],\r\n [\r\n 15.3388256005987,\r\n 67.2712675286812\r\n ],\r\n [\r\n 15.3387744532078,\r\n 67.2716865470767\r\n ],\r\n [\r\n 15.3386857423832,\r\n 67.2717280869958\r\n ],\r\n [\r\n 15.3387296039406,\r\n 67.271779214606\r\n ],\r\n [\r\n 15.3384286772294,\r\n 67.2719202332994\r\n ],\r\n [\r\n 15.33975380398,\r\n 67.2726780229117\r\n ],\r\n [\r\n 15.339623979767,\r\n 67.2727976017324\r\n ],\r\n [\r\n 15.3395228355823,\r\n 67.2729607152154\r\n ],\r\n [\r\n 15.3392779495328,\r\n 67.2731287968371\r\n ],\r\n [\r\n 15.339110061413,\r\n 67.2732141892879\r\n ],\r\n [\r\n 15.3391057348865,\r\n 67.2733513534613\r\n ],\r\n [\r\n 15.3391328818694,\r\n 67.2734340915041\r\n ],\r\n [\r\n 15.3391720770132,\r\n 67.2735815692658\r\n ],\r\n [\r\n 15.3391848524284,\r\n 67.2737799640904\r\n ],\r\n [\r\n 15.3391718113449,\r\n 67.2738748968089\r\n ],\r\n [\r\n 15.3391695379314,\r\n 67.2739438827849\r\n ],\r\n [\r\n 15.3391677817524,\r\n 67.2741152181489\r\n ],\r\n [\r\n 15.3391396210323,\r\n 67.2741414707185\r\n ],\r\n [\r\n 15.3389754632302,\r\n 67.2742944907638\r\n ],\r\n [\r\n 15.3388687118612,\r\n 67.2744719680071\r\n ],\r\n [\r\n 15.3387259568838,\r\n 67.2745638552782\r\n ],\r\n [\r\n 15.3385582051843,\r\n 67.2745774848867\r\n ],\r\n [\r\n 15.3384233521795,\r\n 67.2746541058173\r\n ],\r\n [\r\n 15.3383685441153,\r\n 67.2746989827879\r\n ],\r\n [\r\n 15.3382044020307,\r\n 67.2747219334732\r\n ],\r\n [\r\n 15.3380435771376,\r\n 67.2747828211339\r\n ],\r\n [\r\n 15.3376932122084,\r\n 67.2749742654116\r\n ],\r\n [\r\n 15.3373059534734,\r\n 67.2751158221409\r\n ],\r\n [\r\n 15.3370949515753,\r\n 67.2752711811308\r\n ],\r\n [\r\n 15.3370529728111,\r\n 67.2752883126751\r\n ],\r\n [\r\n 15.3367807783085,\r\n 67.2751164755398\r\n ],\r\n [\r\n 15.3361290237147,\r\n 67.2752552647335\r\n ],\r\n [\r\n 15.3348287914706,\r\n 67.2746212725447\r\n ],\r\n [\r\n 15.3348250550992,\r\n 67.2746194862848\r\n ],\r\n [\r\n 15.3336762521281,\r\n 67.2740610573491\r\n ]\r\n ],\r\n [\r\n [\r\n 15.3370060757678,\r\n 67.2739793837001\r\n ],\r\n [\r\n 15.3378341448744,\r\n 67.2741750792986\r\n ],\r\n [\r\n 15.3381036181184,\r\n 67.2742197223489\r\n ],\r\n [\r\n 15.3382903432745,\r\n 67.2740546355503\r\n ],\r\n [\r\n 15.3376270367905,\r\n 67.2738474729697\r\n ],\r\n [\r\n 15.3370060757678,\r\n 67.2739793837001\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3370409750108 67.2733924300166)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91458063,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91458063\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3434783799581,\r\n 67.2887177694422\r\n ],\r\n [\r\n 15.3409561381336,\r\n 67.2878044991291\r\n ],\r\n [\r\n 15.3385282617171,\r\n 67.2869532440907\r\n ],\r\n [\r\n 15.337961125309,\r\n 67.2867282983352\r\n ],\r\n [\r\n 15.3379767625979,\r\n 67.2867180393877\r\n ],\r\n [\r\n 15.3486322698754,\r\n 67.2797863077118\r\n ],\r\n [\r\n 15.3494419564254,\r\n 67.2800855900582\r\n ],\r\n [\r\n 15.3501814618323,\r\n 67.2803918387145\r\n ],\r\n [\r\n 15.3513489165125,\r\n 67.2808617526952\r\n ],\r\n [\r\n 15.3541266873788,\r\n 67.2819745129549\r\n ],\r\n [\r\n 15.3543198315464,\r\n 67.282373621846\r\n ],\r\n [\r\n 15.3548533273321,\r\n 67.2834747978175\r\n ],\r\n [\r\n 15.3553663756903,\r\n 67.2837712966627\r\n ],\r\n [\r\n 15.3552655649806,\r\n 67.2838901062014\r\n ],\r\n [\r\n 15.3529237046876,\r\n 67.2859937649646\r\n ],\r\n [\r\n 15.3508124231626,\r\n 67.2877515310525\r\n ],\r\n [\r\n 15.3488384360506,\r\n 67.2895864733279\r\n ],\r\n [\r\n 15.349100686515,\r\n 67.2906692388412\r\n ],\r\n [\r\n 15.3499225410352,\r\n 67.2935766767849\r\n ],\r\n [\r\n 15.350265405304,\r\n 67.2947999176887\r\n ],\r\n [\r\n 15.3426620465685,\r\n 67.2939351606369\r\n ],\r\n [\r\n 15.3435018868628,\r\n 67.291252526423\r\n ],\r\n [\r\n 15.3437132254028,\r\n 67.2905788590172\r\n ],\r\n [\r\n 15.3436555931537,\r\n 67.2896663511957\r\n ],\r\n [\r\n 15.3434783799581,\r\n 67.2887177694422\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3471567843599 67.2867784979065)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 395100060,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 846,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": null,\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 293015242,\r\n \"navn\": \"FAUSKE IL LANGRENN\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": \"Postboks 240\",\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"8201\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": null,\r\n \"etternavn\": null,\r\n \"personStatusKode\": null,\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": \"894036192\",\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 395100061,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"395100061\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3565904379275,\r\n 67.2781752767013\r\n ],\r\n [\r\n 15.357406162987,\r\n 67.2778951171184\r\n ],\r\n [\r\n 15.357491074124,\r\n 67.2780041858558\r\n ],\r\n [\r\n 15.3573793703991,\r\n 67.2780434549797\r\n ],\r\n [\r\n 15.3567488303509,\r\n 67.2782646275581\r\n ],\r\n [\r\n 15.3565904379275,\r\n 67.2781752767013\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3570556194915 67.2780849999935)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 395112733,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 847,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": null,\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 293015242,\r\n \"navn\": \"FAUSKE IL LANGRENN\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": \"Postboks 240\",\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"8201\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": null,\r\n \"etternavn\": null,\r\n \"personStatusKode\": null,\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": \"894036192\",\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 395113772,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"395113772\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3570511762968,\r\n 67.2774406662071\r\n ],\r\n [\r\n 15.3571377334692,\r\n 67.2775514358211\r\n ],\r\n [\r\n 15.3560149003616,\r\n 67.2778505742485\r\n ],\r\n [\r\n 15.3559695138781,\r\n 67.277825019905\r\n ],\r\n [\r\n 15.3567126458528,\r\n 67.277562247542\r\n ],\r\n [\r\n 15.3570511762968,\r\n 67.2774406662071\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3566452138561 67.2776354588504)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 395112734,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"395112734\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.357406162987,\r\n 67.2778951171184\r\n ],\r\n [\r\n 15.3565904379275,\r\n 67.2781752767013\r\n ],\r\n [\r\n 15.3564739249592,\r\n 67.27810951423\r\n ],\r\n [\r\n 15.3573841700068,\r\n 67.2778670891578\r\n ],\r\n [\r\n 15.357406162987,\r\n 67.2778951171184\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3568931798819 67.2780329176353)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91027807,\r\n \"knr\": \"1841\",\r\n \"gnr\": 117,\r\n \"bnr\": 2,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"KLUNGSET ØSTRE\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474493542,\r\n \"navn\": \"AKTUALITET BESKJEDEN\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Båhusveien 11B\",\r\n \"adresselinje3\": \"3186 HORTEN\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"3186\",\r\n \"poststed\": \"HORTEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"BESKJEDEN\",\r\n \"etternavn\": \"AKTUALITET\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 91457839,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91457839\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3617217312577,\r\n 67.2873629750308\r\n ],\r\n [\r\n 15.364144691654,\r\n 67.2883990381716\r\n ],\r\n [\r\n 15.3620785196402,\r\n 67.2906448317437\r\n ],\r\n [\r\n 15.3568071409733,\r\n 67.2963052666541\r\n ],\r\n [\r\n 15.3566195982262,\r\n 67.2964496550101\r\n ],\r\n [\r\n 15.3563119396407,\r\n 67.2963074414646\r\n ],\r\n [\r\n 15.3544084966593,\r\n 67.2953919315797\r\n ],\r\n [\r\n 15.3558183263288,\r\n 67.2933165140801\r\n ],\r\n [\r\n 15.3575135643812,\r\n 67.2907669995219\r\n ],\r\n [\r\n 15.3603216306244,\r\n 67.2866430290438\r\n ],\r\n [\r\n 15.3606215954592,\r\n 67.2868359340446\r\n ],\r\n [\r\n 15.3610650090443,\r\n 67.2870914873649\r\n ],\r\n [\r\n 15.361106628302,\r\n 67.2870965068886\r\n ],\r\n [\r\n 15.3617217312577,\r\n 67.2873629750308\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3591559098247 67.2913897209409)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 534736902,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"534736902\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.340303961002,\r\n 67.2683862090327\r\n ],\r\n [\r\n 15.3402889210999,\r\n 67.2684049887252\r\n ],\r\n [\r\n 15.3402887336612,\r\n 67.2684081287102\r\n ],\r\n [\r\n 15.3402853154299,\r\n 67.2684287675298\r\n ],\r\n [\r\n 15.3402776061153,\r\n 67.2684411628105\r\n ],\r\n [\r\n 15.3402701198017,\r\n 67.2684529297008\r\n ],\r\n [\r\n 15.3402622611358,\r\n 67.2684711559602\r\n ],\r\n [\r\n 15.3402389133567,\r\n 67.2684928237296\r\n ],\r\n [\r\n 15.3401921948127,\r\n 67.2685345446615\r\n ],\r\n [\r\n 15.3401947751848,\r\n 67.2685857593263\r\n ],\r\n [\r\n 15.3401837883923,\r\n 67.2686287500989\r\n ],\r\n [\r\n 15.3402287587119,\r\n 67.2686764662715\r\n ],\r\n [\r\n 15.3402204158145,\r\n 67.2686932583139\r\n ],\r\n [\r\n 15.3394784615006,\r\n 67.2702374959315\r\n ],\r\n [\r\n 15.3386084781154,\r\n 67.2707386881833\r\n ],\r\n [\r\n 15.3383171925028,\r\n 67.2709063190442\r\n ],\r\n [\r\n 15.3374754242549,\r\n 67.270683627477\r\n ],\r\n [\r\n 15.3374617146792,\r\n 67.2706322567708\r\n ],\r\n [\r\n 15.3373134444385,\r\n 67.2705613444774\r\n ],\r\n [\r\n 15.3377825015062,\r\n 67.2702879322854\r\n ],\r\n [\r\n 15.3379491023496,\r\n 67.2685292337715\r\n ],\r\n [\r\n 15.3379761543204,\r\n 67.2685399411429\r\n ],\r\n [\r\n 15.337996416817,\r\n 67.2685460879719\r\n ],\r\n [\r\n 15.3380242816034,\r\n 67.2685486306979\r\n ],\r\n [\r\n 15.3380924594181,\r\n 67.268548397483\r\n ],\r\n [\r\n 15.3381365358732,\r\n 67.2685493811178\r\n ],\r\n [\r\n 15.3381810988595,\r\n 67.2685519783608\r\n ],\r\n [\r\n 15.3382103702332,\r\n 67.2685555945225\r\n ],\r\n [\r\n 15.3382303365059,\r\n 67.2685571671188\r\n ],\r\n [\r\n 15.338252815818,\r\n 67.2685560433449\r\n ],\r\n [\r\n 15.3382820164881,\r\n 67.2685546363029\r\n ],\r\n [\r\n 15.3383065424964,\r\n 67.2685506377306\r\n ],\r\n [\r\n 15.3383315310367,\r\n 67.2685465484777\r\n ],\r\n [\r\n 15.3383523200784,\r\n 67.2685406740185\r\n ],\r\n [\r\n 15.3383869448783,\r\n 67.2685292088503\r\n ],\r\n [\r\n 15.3384245199301,\r\n 67.2685131626305\r\n ],\r\n [\r\n 15.3384429204187,\r\n 67.2685023595555\r\n ],\r\n [\r\n 15.3384597721301,\r\n 67.2684968521896\r\n ],\r\n [\r\n 15.3385014208195,\r\n 67.2684901264259\r\n ],\r\n [\r\n 15.3385467950671,\r\n 67.2684844692279\r\n ],\r\n [\r\n 15.3385866428542,\r\n 67.2684816044457\r\n ],\r\n [\r\n 15.3386415427014,\r\n 67.2684771829729\r\n ],\r\n [\r\n 15.338698945391,\r\n 67.2684693475081\r\n ],\r\n [\r\n 15.3388102506455,\r\n 67.2684521589583\r\n ],\r\n [\r\n 15.3389034877438,\r\n 67.2684364437003\r\n ],\r\n [\r\n 15.3389335854657,\r\n 67.2684328817864\r\n ],\r\n [\r\n 15.3390148344632,\r\n 67.268422215103\r\n ],\r\n [\r\n 15.3390574762868,\r\n 67.2684201516282\r\n ],\r\n [\r\n 15.3390841372329,\r\n 67.2684195571243\r\n ],\r\n [\r\n 15.3391448913267,\r\n 67.268419159731\r\n ],\r\n [\r\n 15.3392116684957,\r\n 67.2684183010805\r\n ],\r\n [\r\n 15.3392751800572,\r\n 67.2684161037636\r\n ],\r\n [\r\n 15.3394139266525,\r\n 67.268412572333\r\n ],\r\n [\r\n 15.3395076907453,\r\n 67.2683980845337\r\n ],\r\n [\r\n 15.3396645110774,\r\n 67.2683639709745\r\n ],\r\n [\r\n 15.3396878378513,\r\n 67.2683571939491\r\n ],\r\n [\r\n 15.339715386997,\r\n 67.268353816684\r\n ],\r\n [\r\n 15.3397441679259,\r\n 67.2683555498511\r\n ],\r\n [\r\n 15.3397817483644,\r\n 67.2683563673709\r\n ],\r\n [\r\n 15.3397849898868,\r\n 67.2683560017027\r\n ],\r\n [\r\n 15.3398862082576,\r\n 67.2683471760786\r\n ],\r\n [\r\n 15.3399012411298,\r\n 67.2683442737826\r\n ],\r\n [\r\n 15.3399269324961,\r\n 67.268340721008\r\n ],\r\n [\r\n 15.3399980875868,\r\n 67.2683378793086\r\n ],\r\n [\r\n 15.3400221987925,\r\n 67.2683373797492\r\n ],\r\n [\r\n 15.3400437819517,\r\n 67.2683385001841\r\n ],\r\n [\r\n 15.3401011792142,\r\n 67.2683467209769\r\n ],\r\n [\r\n 15.3401095237918,\r\n 67.2683464341978\r\n ],\r\n [\r\n 15.3401441009612,\r\n 67.2683480653156\r\n ],\r\n [\r\n 15.340188233009,\r\n 67.2683529951794\r\n ],\r\n [\r\n 15.3401989219842,\r\n 67.2683544974798\r\n ],\r\n [\r\n 15.3402342736178,\r\n 67.2683616884931\r\n ],\r\n [\r\n 15.3402703590797,\r\n 67.2683715690192\r\n ],\r\n [\r\n 15.340303961002,\r\n 67.2683862090327\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3388137169439 67.2695110827736)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91457973,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91457973\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.337041497979,\r\n 67.2715839403303\r\n ],\r\n [\r\n 15.3349439601841,\r\n 67.2732702217718\r\n ],\r\n [\r\n 15.3344185130303,\r\n 67.2736166708883\r\n ],\r\n [\r\n 15.3336762521281,\r\n 67.2740610573491\r\n ],\r\n [\r\n 15.3348250550992,\r\n 67.2746194862848\r\n ],\r\n [\r\n 15.3348287914706,\r\n 67.2746212725447\r\n ],\r\n [\r\n 15.3361290237147,\r\n 67.2752552647335\r\n ],\r\n [\r\n 15.3363192291678,\r\n 67.2753869085603\r\n ],\r\n [\r\n 15.335202360461,\r\n 67.2758420606958\r\n ],\r\n [\r\n 15.3293748999344,\r\n 67.2782331107338\r\n ],\r\n [\r\n 15.3293297043702,\r\n 67.2782532967095\r\n ],\r\n [\r\n 15.3293149464428,\r\n 67.2782598752315\r\n ],\r\n [\r\n 15.327997614824,\r\n 67.2769330919784\r\n ],\r\n [\r\n 15.3274112792148,\r\n 67.2763131890949\r\n ],\r\n [\r\n 15.3275040467118,\r\n 67.2762602550213\r\n ],\r\n [\r\n 15.3290674585929,\r\n 67.275368647964\r\n ],\r\n [\r\n 15.3295981776458,\r\n 67.2750615851455\r\n ],\r\n [\r\n 15.3304277656887,\r\n 67.2745768335506\r\n ],\r\n [\r\n 15.3330998180416,\r\n 67.2730566897899\r\n ],\r\n [\r\n 15.3338640234855,\r\n 67.2726005810354\r\n ],\r\n [\r\n 15.3351086681686,\r\n 67.2718566613319\r\n ],\r\n [\r\n 15.3355573099173,\r\n 67.2719081019274\r\n ],\r\n [\r\n 15.3359020818584,\r\n 67.2719108348184\r\n ],\r\n [\r\n 15.3361178295907,\r\n 67.271829337323\r\n ],\r\n [\r\n 15.3363112857791,\r\n 67.2716301517518\r\n ],\r\n [\r\n 15.336128748926,\r\n 67.2715405264231\r\n ],\r\n [\r\n 15.3369735964086,\r\n 67.2715168418446\r\n ],\r\n [\r\n 15.3371471851442,\r\n 67.2713900778338\r\n ],\r\n [\r\n 15.3362710107613,\r\n 67.2711687349209\r\n ],\r\n [\r\n 15.3367364845254,\r\n 67.2708977732547\r\n ],\r\n [\r\n 15.3368650850759,\r\n 67.27082296084\r\n ],\r\n [\r\n 15.3369035031159,\r\n 67.270800544346\r\n ],\r\n [\r\n 15.3372345408542,\r\n 67.2709710019082\r\n ],\r\n [\r\n 15.3376265399643,\r\n 67.2711879938771\r\n ],\r\n [\r\n 15.337041497979,\r\n 67.2715839403303\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3321518938592 67.2752402492212)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 304847992,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 827,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": null,\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 293015242,\r\n \"navn\": \"FAUSKE IL LANGRENN\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": \"Postboks 240\",\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"8201\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": null,\r\n \"etternavn\": null,\r\n \"personStatusKode\": null,\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": \"894036192\",\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 304847993,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"304847993\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.357391804118,\r\n 67.2777720772096\r\n ],\r\n [\r\n 15.3571120754338,\r\n 67.2774172978913\r\n ],\r\n [\r\n 15.3580301472508,\r\n 67.2772663482577\r\n ],\r\n [\r\n 15.3581812748649,\r\n 67.2773975152794\r\n ],\r\n [\r\n 15.3596388795003,\r\n 67.2771640820859\r\n ],\r\n [\r\n 15.3598656223124,\r\n 67.2773711459973\r\n ],\r\n [\r\n 15.357391804118,\r\n 67.2777720772096\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3583532897168 67.2774546906249)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 6259310819,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 865,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": null,\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 293015242,\r\n \"navn\": \"FAUSKE IL LANGRENN\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": \"Postboks 240\",\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"8201\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": null,\r\n \"etternavn\": null,\r\n \"personStatusKode\": null,\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": \"894036192\",\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 6259310820,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"6259310820\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.357840710521,\r\n 67.2782229992068\r\n ],\r\n [\r\n 15.357747752566,\r\n 67.2781345801505\r\n ],\r\n [\r\n 15.3576351819196,\r\n 67.2780221644284\r\n ],\r\n [\r\n 15.3575733104857,\r\n 67.2779647131361\r\n ],\r\n [\r\n 15.3575170084795,\r\n 67.2779073391285\r\n ],\r\n [\r\n 15.3574784091345,\r\n 67.2778702881818\r\n ],\r\n [\r\n 15.357391804118,\r\n 67.2777720772096\r\n ],\r\n [\r\n 15.3598656223124,\r\n 67.2773711459973\r\n ],\r\n [\r\n 15.3596388795003,\r\n 67.2771640820859\r\n ],\r\n [\r\n 15.3581812748649,\r\n 67.2773975152794\r\n ],\r\n [\r\n 15.3580301472508,\r\n 67.2772663482577\r\n ],\r\n [\r\n 15.3571120754338,\r\n 67.2774172978913\r\n ],\r\n [\r\n 15.3590993921838,\r\n 67.2769087396663\r\n ],\r\n [\r\n 15.3601985189623,\r\n 67.2768442048135\r\n ],\r\n [\r\n 15.3610080437396,\r\n 67.2771605626093\r\n ],\r\n [\r\n 15.3580194686899,\r\n 67.2783708791977\r\n ],\r\n [\r\n 15.3579733563632,\r\n 67.2783435329836\r\n ],\r\n [\r\n 15.357840710521,\r\n 67.2782229992068\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3590616781443 67.2774959666001)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91024725,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 302,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"WAALERHAUGEN B\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6475315547,\r\n \"navn\": \"KATALYSATOR DYNAMISK\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Busterudkleiva 23\",\r\n \"adresselinje3\": \"1782 HALDEN\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"1782\",\r\n \"poststed\": \"HALDEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"DYNAMISK\",\r\n \"etternavn\": \"KATALYSATOR\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 91515241,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91515241\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3509057565707,\r\n 67.2504520117075\r\n ],\r\n [\r\n 15.3503905383397,\r\n 67.2503197492887\r\n ],\r\n [\r\n 15.3505793310958,\r\n 67.2501099079366\r\n ],\r\n [\r\n 15.3512394515255,\r\n 67.249809243073\r\n ],\r\n [\r\n 15.351698307534,\r\n 67.2499779917922\r\n ],\r\n [\r\n 15.3509057565707,\r\n 67.2504520117075\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3510236729853 67.2501326304512)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91025872,\r\n \"knr\": \"1841\",\r\n \"gnr\": 105,\r\n \"bnr\": 9,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"Løgavlen\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 9241494,\r\n \"navn\": \"OMYA HUSTADMARMOR AS\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": \"Sjøvegen 69\",\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"6440\",\r\n \"poststed\": \"ELNESVÅGEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": null,\r\n \"etternavn\": null,\r\n \"personStatusKode\": null,\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": \"912864227\",\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Løvgavlveien 15\",\r\n \"postnummer\": \"8218\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Løvgavlveien\",\r\n \"bokstav\": null,\r\n \"nummer\": 15,\r\n \"undernummer\": null\r\n },\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": null,\r\n \"postnummer\": \"8218\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": \"1\"\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 91419004,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91419004\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3762030769895,\r\n 67.2862845129408\r\n ],\r\n [\r\n 15.3831604768567,\r\n 67.2876133444677\r\n ],\r\n [\r\n 15.3823195736797,\r\n 67.2878447166932\r\n ],\r\n [\r\n 15.3819418793325,\r\n 67.2879421347568\r\n ],\r\n [\r\n 15.3816393526582,\r\n 67.2880231372729\r\n ],\r\n [\r\n 15.381258291067,\r\n 67.2881280967291\r\n ],\r\n [\r\n 15.3810808151565,\r\n 67.2881769570567\r\n ],\r\n [\r\n 15.3808266288147,\r\n 67.2882477070046\r\n ],\r\n [\r\n 15.3777121721761,\r\n 67.2890055085107\r\n ],\r\n [\r\n 15.3776724917236,\r\n 67.2889766278455\r\n ],\r\n [\r\n 15.3775862803476,\r\n 67.2889112578656\r\n ],\r\n [\r\n 15.377492128027,\r\n 67.2888574781193\r\n ],\r\n [\r\n 15.3773605863254,\r\n 67.2887728387409\r\n ],\r\n [\r\n 15.3771751604967,\r\n 67.2886563019215\r\n ],\r\n [\r\n 15.3771069243435,\r\n 67.2885973480817\r\n ],\r\n [\r\n 15.3770575480688,\r\n 67.2885717193082\r\n ],\r\n [\r\n 15.3770297830227,\r\n 67.2885329432505\r\n ],\r\n [\r\n 15.3769676189545,\r\n 67.2884911082908\r\n ],\r\n [\r\n 15.3768610459714,\r\n 67.288414752273\r\n ],\r\n [\r\n 15.3766455670557,\r\n 67.2882611484696\r\n ],\r\n [\r\n 15.3765961652283,\r\n 67.2882338152672\r\n ],\r\n [\r\n 15.3765409231929,\r\n 67.2881892728468\r\n ],\r\n [\r\n 15.3764719725815,\r\n 67.2881437757938\r\n ],\r\n [\r\n 15.3764227329547,\r\n 67.2881119570318\r\n ],\r\n [\r\n 15.3763342072021,\r\n 67.2880465918067\r\n ],\r\n [\r\n 15.3761381203275,\r\n 67.2879155469552\r\n ],\r\n [\r\n 15.376069361197,\r\n 67.2878673582066\r\n ],\r\n [\r\n 15.3760253342156,\r\n 67.2878274538975\r\n ],\r\n [\r\n 15.375935874921,\r\n 67.2877764430448\r\n ],\r\n [\r\n 15.3758626212912,\r\n 67.2877227928677\r\n ],\r\n [\r\n 15.3757884203863,\r\n 67.2876530881187\r\n ],\r\n [\r\n 15.3755853056175,\r\n 67.2875174842025\r\n ],\r\n [\r\n 15.3755277757409,\r\n 67.2874748305369\r\n ],\r\n [\r\n 15.375467923835,\r\n 67.2874320925735\r\n ],\r\n [\r\n 15.3754132290891,\r\n 67.2873777709135\r\n ],\r\n [\r\n 15.375367643296,\r\n 67.2873271057627\r\n ],\r\n [\r\n 15.3753599577821,\r\n 67.2872660362868\r\n ],\r\n [\r\n 15.3753829623353,\r\n 67.2871935926048\r\n ],\r\n [\r\n 15.3754650409368,\r\n 67.2870697010561\r\n ],\r\n [\r\n 15.3755026676127,\r\n 67.2870270044338\r\n ],\r\n [\r\n 15.3755493746941,\r\n 67.2869861703355\r\n ],\r\n [\r\n 15.3756186138739,\r\n 67.2869169375553\r\n ],\r\n [\r\n 15.3756768285088,\r\n 67.2868402852057\r\n ],\r\n [\r\n 15.3757568429483,\r\n 67.2867477942138\r\n ],\r\n [\r\n 15.3758976102605,\r\n 67.2865778374857\r\n ],\r\n [\r\n 15.3759655725256,\r\n 67.2865309434701\r\n ],\r\n [\r\n 15.3760396405919,\r\n 67.2864590081256\r\n ],\r\n [\r\n 15.3761175623062,\r\n 67.286366432139\r\n ],\r\n [\r\n 15.3761736417984,\r\n 67.2862870038167\r\n ],\r\n [\r\n 15.3762030769895,\r\n 67.2862845129408\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3785333849818 67.2876208263041)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91419015,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91419015\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3746269922464,\r\n 67.2829662399724\r\n ],\r\n [\r\n 15.3746774545595,\r\n 67.2829285369293\r\n ],\r\n [\r\n 15.3747146820804,\r\n 67.2828903265195\r\n ],\r\n [\r\n 15.3747685350771,\r\n 67.2828468745742\r\n ],\r\n [\r\n 15.3748449297809,\r\n 67.2827758313315\r\n ],\r\n [\r\n 15.374904712576,\r\n 67.2827109265876\r\n ],\r\n [\r\n 15.3750305759828,\r\n 67.282627837378\r\n ],\r\n [\r\n 15.3751496506191,\r\n 67.2825409964092\r\n ],\r\n [\r\n 15.37531526247,\r\n 67.2824178965084\r\n ],\r\n [\r\n 15.3753323201208,\r\n 67.2823660982682\r\n ],\r\n [\r\n 15.3753807969344,\r\n 67.2823351273293\r\n ],\r\n [\r\n 15.3754900317051,\r\n 67.2822572793475\r\n ],\r\n [\r\n 15.3756187668151,\r\n 67.2821652126933\r\n ],\r\n [\r\n 15.375830500865,\r\n 67.2820093526704\r\n ],\r\n [\r\n 15.3758984222716,\r\n 67.2819606646753\r\n ],\r\n [\r\n 15.375971405923,\r\n 67.2819092737271\r\n ],\r\n [\r\n 15.3760400863127,\r\n 67.2818498195821\r\n ],\r\n [\r\n 15.3761736489741,\r\n 67.2817551397962\r\n ],\r\n [\r\n 15.3763905451113,\r\n 67.2815885923171\r\n ],\r\n [\r\n 15.3764347440877,\r\n 67.2815513518903\r\n ],\r\n [\r\n 15.3764916424428,\r\n 67.2814953338481\r\n ],\r\n [\r\n 15.3765962560275,\r\n 67.2814192002699\r\n ],\r\n [\r\n 15.3767131885847,\r\n 67.2813296720492\r\n ],\r\n [\r\n 15.3769223700063,\r\n 67.2811747135543\r\n ],\r\n [\r\n 15.376945139993,\r\n 67.2811471214321\r\n ],\r\n [\r\n 15.3769985914192,\r\n 67.2811081547876\r\n ],\r\n [\r\n 15.3770645531467,\r\n 67.2810531916994\r\n ],\r\n [\r\n 15.3771575591416,\r\n 67.2809769055799\r\n ],\r\n [\r\n 15.3772666875645,\r\n 67.280893046528\r\n ],\r\n [\r\n 15.3785036490798,\r\n 67.2814241369808\r\n ],\r\n [\r\n 15.3785961376571,\r\n 67.2814624014984\r\n ],\r\n [\r\n 15.384336470056,\r\n 67.2831323122276\r\n ],\r\n [\r\n 15.3851406996948,\r\n 67.2842716733419\r\n ],\r\n [\r\n 15.3859888303042,\r\n 67.2854808930293\r\n ],\r\n [\r\n 15.3857583126899,\r\n 67.2856932344866\r\n ],\r\n [\r\n 15.3746269922464,\r\n 67.2829662399724\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3803869264795 67.2832649235144)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91419032,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91419032\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3675589311013,\r\n 67.2843693648226\r\n ],\r\n [\r\n 15.3663348931062,\r\n 67.283903643851\r\n ],\r\n [\r\n 15.3694679105581,\r\n 67.2829392547463\r\n ],\r\n [\r\n 15.3717331779583,\r\n 67.2821907545467\r\n ],\r\n [\r\n 15.3720454614911,\r\n 67.2821280472765\r\n ],\r\n [\r\n 15.3767796258147,\r\n 67.2806838368243\r\n ],\r\n [\r\n 15.3771164789342,\r\n 67.2808284544673\r\n ],\r\n [\r\n 15.3770107330355,\r\n 67.2809504290938\r\n ],\r\n [\r\n 15.3769177266763,\r\n 67.2810267151287\r\n ],\r\n [\r\n 15.3768517365313,\r\n 67.2810798841706\r\n ],\r\n [\r\n 15.3767934673583,\r\n 67.2811223604665\r\n ],\r\n [\r\n 15.376770929243,\r\n 67.2811499520233\r\n ],\r\n [\r\n 15.3765665647004,\r\n 67.2813014006287\r\n ],\r\n [\r\n 15.3764540402024,\r\n 67.2813909184141\r\n ],\r\n [\r\n 15.3763448138979,\r\n 67.2814688567562\r\n ],\r\n [\r\n 15.3762830694236,\r\n 67.2815265904449\r\n ],\r\n [\r\n 15.376243716107,\r\n 67.2815621151333\r\n ],\r\n [\r\n 15.3760316355895,\r\n 67.2817250630388\r\n ],\r\n [\r\n 15.3758934600415,\r\n 67.2818215475501\r\n ],\r\n [\r\n 15.3758247793693,\r\n 67.2818810016329\r\n ],\r\n [\r\n 15.3757566400448,\r\n 67.2819305871331\r\n ],\r\n [\r\n 15.375688486405,\r\n 67.2819792756112\r\n ],\r\n [\r\n 15.3754769837294,\r\n 67.2821351349055\r\n ],\r\n [\r\n 15.3753480162037,\r\n 67.2822272019887\r\n ],\r\n [\r\n 15.3752389865091,\r\n 67.2823033450454\r\n ],\r\n [\r\n 15.3751760554235,\r\n 67.2823448448957\r\n ],\r\n [\r\n 15.3751585628123,\r\n 67.2823985278889\r\n ],\r\n [\r\n 15.3750076352651,\r\n 67.2825110084504\r\n ],\r\n [\r\n 15.3748885588628,\r\n 67.2825977596151\r\n ],\r\n [\r\n 15.3747578783401,\r\n 67.2826844480518\r\n ],\r\n [\r\n 15.374693277009,\r\n 67.282752862378\r\n ],\r\n [\r\n 15.3746217001592,\r\n 67.2828203959147\r\n ],\r\n [\r\n 15.374563000724,\r\n 67.2828655634573\r\n ],\r\n [\r\n 15.3745255969256,\r\n 67.2829073623458\r\n ],\r\n [\r\n 15.3743881135665,\r\n 67.283063944637\r\n ],\r\n [\r\n 15.3743243378277,\r\n 67.2831556795537\r\n ],\r\n [\r\n 15.374293054567,\r\n 67.2832477872706\r\n ],\r\n [\r\n 15.3742785452555,\r\n 67.2833292710052\r\n ],\r\n [\r\n 15.3742532205986,\r\n 67.2834017199688\r\n ],\r\n [\r\n 15.3742462580919,\r\n 67.2834760996175\r\n ],\r\n [\r\n 15.3742296027541,\r\n 67.2835539105377\r\n ],\r\n [\r\n 15.3742316381411,\r\n 67.2835951689796\r\n ],\r\n [\r\n 15.37423081072,\r\n 67.2836463013714\r\n ],\r\n [\r\n 15.3742348829201,\r\n 67.2837289079532\r\n ],\r\n [\r\n 15.3742468531296,\r\n 67.2837971437283\r\n ],\r\n [\r\n 15.3742822099818,\r\n 67.2838620957368\r\n ],\r\n [\r\n 15.3743159775542,\r\n 67.2839144033777\r\n ],\r\n [\r\n 15.3743621249057,\r\n 67.2839569942923\r\n ],\r\n [\r\n 15.3743952271348,\r\n 67.283981495671\r\n ],\r\n [\r\n 15.3745007416358,\r\n 67.2841107802944\r\n ],\r\n [\r\n 15.374583264642,\r\n 67.284164499184\r\n ],\r\n [\r\n 15.3746400666322,\r\n 67.2842206102689\r\n ],\r\n [\r\n 15.3747221962206,\r\n 67.2842788151332\r\n ],\r\n [\r\n 15.3748537459752,\r\n 67.2843661477116\r\n ],\r\n [\r\n 15.3749713426095,\r\n 67.2844515392876\r\n ],\r\n [\r\n 15.3750752961971,\r\n 67.2844954303362\r\n ],\r\n [\r\n 15.3751216079964,\r\n 67.2845335355222\r\n ],\r\n [\r\n 15.3751847254265,\r\n 67.2845629900107\r\n ],\r\n [\r\n 15.3753253300162,\r\n 67.2846503907668\r\n ],\r\n [\r\n 15.375425678179,\r\n 67.2847159083302\r\n ],\r\n [\r\n 15.3755323920554,\r\n 67.2847877798371\r\n ],\r\n [\r\n 15.3755874470447,\r\n 67.2848358214417\r\n ],\r\n [\r\n 15.3756246525009,\r\n 67.2848702699631\r\n ],\r\n [\r\n 15.3756591842366,\r\n 67.2849118112294\r\n ],\r\n [\r\n 15.3756919386832,\r\n 67.2849435790638\r\n ],\r\n [\r\n 15.3758063669406,\r\n 67.2850782241495\r\n ],\r\n [\r\n 15.3758516951647,\r\n 67.2851719470168\r\n ],\r\n [\r\n 15.3758910322077,\r\n 67.2852090815681\r\n ],\r\n [\r\n 15.3759305733437,\r\n 67.2852444215811\r\n ],\r\n [\r\n 15.3759686233149,\r\n 67.2853030877398\r\n ],\r\n [\r\n 15.3759993443859,\r\n 67.2853679605151\r\n ],\r\n [\r\n 15.3760109420081,\r\n 67.2854416688841\r\n ],\r\n [\r\n 15.3760234597868,\r\n 67.2855000359606\r\n ],\r\n [\r\n 15.3760372023321,\r\n 67.2855773274101\r\n ],\r\n [\r\n 15.3760401624892,\r\n 67.2856033342257\r\n ],\r\n [\r\n 15.3760437888588,\r\n 67.2856570575731\r\n ],\r\n [\r\n 15.376069047096,\r\n 67.2857731632783\r\n ],\r\n [\r\n 15.376071535475,\r\n 67.2858431254503\r\n ],\r\n [\r\n 15.3760895399172,\r\n 67.2859257890721\r\n ],\r\n [\r\n 15.3760922323384,\r\n 67.285993956714\r\n ],\r\n [\r\n 15.3761054056546,\r\n 67.2860793227161\r\n ],\r\n [\r\n 15.3760778952316,\r\n 67.2861454081816\r\n ],\r\n [\r\n 15.3760494912601,\r\n 67.2862285392177\r\n ],\r\n [\r\n 15.3759608629121,\r\n 67.2863487686083\r\n ],\r\n [\r\n 15.3758877594199,\r\n 67.2864378348486\r\n ],\r\n [\r\n 15.3758187137468,\r\n 67.2865044659265\r\n ],\r\n [\r\n 15.3757459043785,\r\n 67.2865530755617\r\n ],\r\n [\r\n 15.3756049882657,\r\n 67.2867284146561\r\n ],\r\n [\r\n 15.3755203317618,\r\n 67.2868209164192\r\n ],\r\n [\r\n 15.3754667582322,\r\n 67.2868975578678\r\n ],\r\n [\r\n 15.3753976679915,\r\n 67.2869614977842\r\n ],\r\n [\r\n 15.3753509873472,\r\n 67.2870040361246\r\n ],\r\n [\r\n 15.3753083388314,\r\n 67.2870521265917\r\n ],\r\n [\r\n 15.375221468507,\r\n 67.287181321697\r\n ],\r\n [\r\n 15.3751979354663,\r\n 67.2872645308933\r\n ],\r\n [\r\n 15.3752046564325,\r\n 67.2873381609831\r\n ],\r\n [\r\n 15.3752587665418,\r\n 67.2873996602812\r\n ],\r\n [\r\n 15.3753221336176,\r\n 67.2874594335938\r\n ],\r\n [\r\n 15.3753820133851,\r\n 67.2875039655966\r\n ],\r\n [\r\n 15.3754442142171,\r\n 67.2875484921547\r\n ],\r\n [\r\n 15.3756423971077,\r\n 67.2876804299719\r\n ],\r\n [\r\n 15.3757170337676,\r\n 67.287748339718\r\n ],\r\n [\r\n 15.3757943449596,\r\n 67.2878091566754\r\n ],\r\n [\r\n 15.3758842415639,\r\n 67.2878584622353\r\n ],\r\n [\r\n 15.375923569024,\r\n 67.2878946997719\r\n ],\r\n [\r\n 15.3759970273043,\r\n 67.2879465553918\r\n ],\r\n [\r\n 15.3761928801678,\r\n 67.2880775112593\r\n ],\r\n [\r\n 15.3762816391461,\r\n 67.2881429657179\r\n ],\r\n [\r\n 15.3763306465595,\r\n 67.2881747850665\r\n ],\r\n [\r\n 15.3763951577335,\r\n 67.2882184088241\r\n ],\r\n [\r\n 15.3764548655646,\r\n 67.2882665289345\r\n ],\r\n [\r\n 15.3765089105332,\r\n 67.2882939410046\r\n ],\r\n [\r\n 15.3765722858143,\r\n 67.2883390922959\r\n ],\r\n [\r\n 15.3765620948808,\r\n 67.2883404617129\r\n ],\r\n [\r\n 15.3765025626435,\r\n 67.2883479568014\r\n ],\r\n [\r\n 15.3749494954004,\r\n 67.2887289662596\r\n ],\r\n [\r\n 15.3739230843261,\r\n 67.2881895544851\r\n ],\r\n [\r\n 15.3726818593242,\r\n 67.2873250143826\r\n ],\r\n [\r\n 15.3706177405464,\r\n 67.2859179601456\r\n ],\r\n [\r\n 15.3690137344318,\r\n 67.2849436250222\r\n ],\r\n [\r\n 15.3683195978309,\r\n 67.2846698308391\r\n ],\r\n [\r\n 15.3675589311013,\r\n 67.2843693648226\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3726502573998 67.2846399334538)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91023729,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 43,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"SOLVOLL\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474787142,\r\n \"navn\": \"SÅPE VARSOM\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Grønnåsen 112\",\r\n \"adresselinje3\": \"8073 BODØ\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"8073\",\r\n \"poststed\": \"BODØ\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"VARSOM\",\r\n \"etternavn\": \"SÅPE\",\r\n \"personStatusKode\": \"10\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n },\r\n {\r\n \"id\": 6474414747,\r\n \"navn\": \"OLJE DEMOKRATISK\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Finnlandsvegen 9\",\r\n \"adresselinje3\": \"9101 KVALØYSLETTA\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"9101\",\r\n \"poststed\": \"KVALØYSLETTA\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"DEMOKRATISK\",\r\n \"etternavn\": \"OLJE\",\r\n \"personStatusKode\": \"10\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 91396393,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91396393\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3690137344318,\r\n 67.2849436250222\r\n ],\r\n [\r\n 15.3706177405464,\r\n 67.2859179601456\r\n ],\r\n [\r\n 15.369190854123,\r\n 67.2865618102702\r\n ],\r\n [\r\n 15.3685734098815,\r\n 67.2868422920636\r\n ],\r\n [\r\n 15.3674098292701,\r\n 67.2873945636746\r\n ],\r\n [\r\n 15.3647151398311,\r\n 67.2886092629763\r\n ],\r\n [\r\n 15.3644380547013,\r\n 67.2884899593827\r\n ],\r\n [\r\n 15.364144691654,\r\n 67.2883990381716\r\n ],\r\n [\r\n 15.3617217312577,\r\n 67.2873629750308\r\n ],\r\n [\r\n 15.36198223433,\r\n 67.2872770814414\r\n ],\r\n [\r\n 15.3646914561177,\r\n 67.286378147467\r\n ],\r\n [\r\n 15.3690137344318,\r\n 67.2849436250222\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3662721901674 67.2867935821152)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91396364,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91396364\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3743961278041,\r\n 67.2795002211846\r\n ],\r\n [\r\n 15.3718691958947,\r\n 67.2783277565508\r\n ],\r\n [\r\n 15.36993975016,\r\n 67.2774323145857\r\n ],\r\n [\r\n 15.3698898479856,\r\n 67.2774006747687\r\n ],\r\n [\r\n 15.3699310836396,\r\n 67.2774118823479\r\n ],\r\n [\r\n 15.3699645504765,\r\n 67.2774157521939\r\n ],\r\n [\r\n 15.3700055360727,\r\n 67.2774107241576\r\n ],\r\n [\r\n 15.3700397594981,\r\n 67.2774034691219\r\n ],\r\n [\r\n 15.3701255771178,\r\n 67.2773569848786\r\n ],\r\n [\r\n 15.3701498402476,\r\n 67.2773507394956\r\n ],\r\n [\r\n 15.3702367931287,\r\n 67.2773327780067\r\n ],\r\n [\r\n 15.3702708314046,\r\n 67.2773285732368\r\n ],\r\n [\r\n 15.3703068099151,\r\n 67.2773298358466\r\n ],\r\n [\r\n 15.3703443670654,\r\n 67.2773432046618\r\n ],\r\n [\r\n 15.3703488093729,\r\n 67.2773454369862\r\n ],\r\n [\r\n 15.3703671749769,\r\n 67.2773479063193\r\n ],\r\n [\r\n 15.370385906343,\r\n 67.2773440059215\r\n ],\r\n [\r\n 15.3704087041593,\r\n 67.2773330096391\r\n ],\r\n [\r\n 15.3704442362552,\r\n 67.2773203693424\r\n ],\r\n [\r\n 15.3705096118866,\r\n 67.2773173480934\r\n ],\r\n [\r\n 15.3705519351408,\r\n 67.2773088184301\r\n ],\r\n [\r\n 15.3705932805977,\r\n 67.2772970617171\r\n ],\r\n [\r\n 15.3706131939596,\r\n 67.2772945938078\r\n ],\r\n [\r\n 15.3706603852507,\r\n 67.2773008538167\r\n ],\r\n [\r\n 15.3706884333223,\r\n 67.2772993538575\r\n ],\r\n [\r\n 15.3707038752706,\r\n 67.2772927699342\r\n ],\r\n [\r\n 15.3706974995294,\r\n 67.2772855187346\r\n ],\r\n [\r\n 15.370700172595,\r\n 67.2772783363572\r\n ],\r\n [\r\n 15.3707156352943,\r\n 67.277273097924\r\n ],\r\n [\r\n 15.3708362308153,\r\n 67.2772554172812\r\n ],\r\n [\r\n 15.3708911239625,\r\n 67.2772496392926\r\n ],\r\n [\r\n 15.371017790437,\r\n 67.2772495262099\r\n ],\r\n [\r\n 15.3710951347679,\r\n 67.2772403773017\r\n ],\r\n [\r\n 15.371163731547,\r\n 67.2772356439952\r\n ],\r\n [\r\n 15.3711776533994,\r\n 67.2772357912345\r\n ],\r\n [\r\n 15.3712089394431,\r\n 67.2772336557845\r\n ],\r\n [\r\n 15.3713271018369,\r\n 67.2772236948197\r\n ],\r\n [\r\n 15.371454327862,\r\n 67.2772297695801\r\n ],\r\n [\r\n 15.3716007073673,\r\n 67.2772292516448\r\n ],\r\n [\r\n 15.3716684246585,\r\n 67.2772276597487\r\n ],\r\n [\r\n 15.3716966420981,\r\n 67.2772221226034\r\n ],\r\n [\r\n 15.3717611312569,\r\n 67.2771918332975\r\n ],\r\n [\r\n 15.3717731208485,\r\n 67.2771870513124\r\n ],\r\n [\r\n 15.3718619514592,\r\n 67.2771556292007\r\n ],\r\n [\r\n 15.3719099013107,\r\n 67.277135963028\r\n ],\r\n [\r\n 15.3719182193875,\r\n 67.2771337909078\r\n ],\r\n [\r\n 15.3719481258354,\r\n 67.2771174854924\r\n ],\r\n [\r\n 15.3719790087988,\r\n 67.2771043174022\r\n ],\r\n [\r\n 15.3720167109401,\r\n 67.277097053888\r\n ],\r\n [\r\n 15.3721122018981,\r\n 67.2770912711641\r\n ],\r\n [\r\n 15.3721358197154,\r\n 67.2770883459715\r\n ],\r\n [\r\n 15.3721877685196,\r\n 67.2770722585565\r\n ],\r\n [\r\n 15.3722113446065,\r\n 67.2770666423705\r\n ],\r\n [\r\n 15.3722440111137,\r\n 67.2770637858987\r\n ],\r\n [\r\n 15.3723495967414,\r\n 67.2770656940683\r\n ],\r\n [\r\n 15.3723915648015,\r\n 67.277064251249\r\n ],\r\n [\r\n 15.3724290625899,\r\n 67.277058782164\r\n ],\r\n [\r\n 15.3725082515456,\r\n 67.2770340200387\r\n ],\r\n [\r\n 15.3725611766112,\r\n 67.2770210698306\r\n ],\r\n [\r\n 15.3725952279523,\r\n 67.2770177615624\r\n ],\r\n [\r\n 15.3726312200344,\r\n 67.2770199206459\r\n ],\r\n [\r\n 15.3726714504401,\r\n 67.2770261065077\r\n ],\r\n [\r\n 15.3726863140288,\r\n 67.2770271484577\r\n ],\r\n [\r\n 15.3726955933333,\r\n 67.2770271269302\r\n ],\r\n [\r\n 15.3727062464383,\r\n 67.2770259360807\r\n ],\r\n [\r\n 15.3727379779406,\r\n 67.2770226331644\r\n ],\r\n [\r\n 15.3727723345165,\r\n 67.2770090980502\r\n ],\r\n [\r\n 15.37280187598,\r\n 67.276984271571\r\n ],\r\n [\r\n 15.3728234776287,\r\n 67.2769710351527\r\n ],\r\n [\r\n 15.3728528404854,\r\n 67.2769645981183\r\n ],\r\n [\r\n 15.3728936484284,\r\n 67.2769631578601\r\n ],\r\n [\r\n 15.3729363762903,\r\n 67.2769658394556\r\n ],\r\n [\r\n 15.3729665534523,\r\n 67.276967025234\r\n ],\r\n [\r\n 15.3730038955928,\r\n 67.2769664900205\r\n ],\r\n [\r\n 15.3730170224448,\r\n 67.2769602700589\r\n ],\r\n [\r\n 15.3730175735097,\r\n 67.2769509397052\r\n ],\r\n [\r\n 15.372995707315,\r\n 67.2769471332634\r\n ],\r\n [\r\n 15.3729831092553,\r\n 67.2769425876793\r\n ],\r\n [\r\n 15.3730119035911,\r\n 67.2769294242379\r\n ],\r\n [\r\n 15.3730180222149,\r\n 67.2769200809565\r\n ],\r\n [\r\n 15.3730073504057,\r\n 67.2769051253958\r\n ],\r\n [\r\n 15.3730081264891,\r\n 67.2768953460064\r\n ],\r\n [\r\n 15.3730316757408,\r\n 67.2768880254114\r\n ],\r\n [\r\n 15.3730864121708,\r\n 67.2768871806787\r\n ],\r\n [\r\n 15.3731159789666,\r\n 67.2768789490695\r\n ],\r\n [\r\n 15.3731620999033,\r\n 67.276846190182\r\n ],\r\n [\r\n 15.3731868354442,\r\n 67.2768405711585\r\n ],\r\n [\r\n 15.3732454381792,\r\n 67.2768496743826\r\n ],\r\n [\r\n 15.3732711364781,\r\n 67.2768462956752\r\n ],\r\n [\r\n 15.3732951551394,\r\n 67.2768393327611\r\n ],\r\n [\r\n 15.3733484317675,\r\n 67.2768192052636\r\n ],\r\n [\r\n 15.3733762364791,\r\n 67.2768020971399\r\n ],\r\n [\r\n 15.3734026623113,\r\n 67.2767709089017\r\n ],\r\n [\r\n 15.3734209613287,\r\n 67.2767541816753\r\n ],\r\n [\r\n 15.3734508872041,\r\n 67.276739221471\r\n ],\r\n [\r\n 15.3735326104826,\r\n 67.2767134662152\r\n ],\r\n [\r\n 15.3735513352589,\r\n 67.2767092066508\r\n ],\r\n [\r\n 15.3735902310813,\r\n 67.2767041825552\r\n ],\r\n [\r\n 15.3735983517579,\r\n 67.2767042533725\r\n ],\r\n [\r\n 15.3736055235877,\r\n 67.2767029808564\r\n ],\r\n [\r\n 15.373644769978,\r\n 67.2767055806569\r\n ],\r\n [\r\n 15.3736973676045,\r\n 67.2767164020335\r\n ],\r\n [\r\n 15.3737302933521,\r\n 67.276715338708\r\n ],\r\n [\r\n 15.3737499111178,\r\n 67.2767088344768\r\n ],\r\n [\r\n 15.3738005655031,\r\n 67.2766842277963\r\n ],\r\n [\r\n 15.3738301038822,\r\n 67.2766742020677\r\n ],\r\n [\r\n 15.373859499615,\r\n 67.2766699176349\r\n ],\r\n [\r\n 15.3739461325699,\r\n 67.2766764436935\r\n ],\r\n [\r\n 15.3739656174253,\r\n 67.2766763086331\r\n ],\r\n [\r\n 15.3739836461583,\r\n 67.2766720506385\r\n ],\r\n [\r\n 15.3740498721487,\r\n 67.2766492913824\r\n ],\r\n [\r\n 15.374119217175,\r\n 67.2766182721913\r\n ],\r\n [\r\n 15.3742261578456,\r\n 67.2765583708435\r\n ],\r\n [\r\n 15.3742561109291,\r\n 67.276545204477\r\n ],\r\n [\r\n 15.3742820127821,\r\n 67.2765400310796\r\n ],\r\n [\r\n 15.3743607301716,\r\n 67.2765447813033\r\n ],\r\n [\r\n 15.3743910689427,\r\n 67.2765414813041\r\n ],\r\n [\r\n 15.3744169581779,\r\n 67.2765355005905\r\n ],\r\n [\r\n 15.3744437681654,\r\n 67.2765141785732\r\n ],\r\n [\r\n 15.3744873708412,\r\n 67.2764539761573\r\n ],\r\n [\r\n 15.3745087502964,\r\n 67.2764414576479\r\n ],\r\n [\r\n 15.3745858388882,\r\n 67.2764161611693\r\n ],\r\n [\r\n 15.374687465044,\r\n 67.2763874884249\r\n ],\r\n [\r\n 15.3747144873327,\r\n 67.2763798006695\r\n ],\r\n [\r\n 15.374724168763,\r\n 67.2763758311695\r\n ],\r\n [\r\n 15.3747312984516,\r\n 67.2763718676215\r\n ],\r\n [\r\n 15.3747814871691,\r\n 67.2763472617136\r\n ],\r\n [\r\n 15.3748560538269,\r\n 67.2763090538051\r\n ],\r\n [\r\n 15.3749000881557,\r\n 67.2762914590277\r\n ],\r\n [\r\n 15.3749874135715,\r\n 67.276268111922\r\n ],\r\n [\r\n 15.3749934183192,\r\n 67.2762663935545\r\n ],\r\n [\r\n 15.3750484785504,\r\n 67.2762566668313\r\n ],\r\n [\r\n 15.3750614299376,\r\n 67.276254124919\r\n ],\r\n [\r\n 15.3751485847296,\r\n 67.2762347250404\r\n ],\r\n [\r\n 15.375185497548,\r\n 67.2762216319477\r\n ],\r\n [\r\n 15.3752026322304,\r\n 67.276204727828\r\n ],\r\n [\r\n 15.3752506385489,\r\n 67.2761444252097\r\n ],\r\n [\r\n 15.3752869386656,\r\n 67.2761218250423\r\n ],\r\n [\r\n 15.3752590695775,\r\n 67.2761198269859\r\n ],\r\n [\r\n 15.3752252714691,\r\n 67.276124391068\r\n ],\r\n [\r\n 15.3751728557971,\r\n 67.2761400320519\r\n ],\r\n [\r\n 15.3751612697076,\r\n 67.2761408664344\r\n ],\r\n [\r\n 15.3751370981817,\r\n 67.2761379626948\r\n ],\r\n [\r\n 15.3751134838986,\r\n 67.2761261770871\r\n ],\r\n [\r\n 15.3750976026579,\r\n 67.2761045061269\r\n ],\r\n [\r\n 15.3750942508125,\r\n 67.2760829853149\r\n ],\r\n [\r\n 15.3751019160198,\r\n 67.2760539037545\r\n ],\r\n [\r\n 15.3751057643074,\r\n 67.2760477949877\r\n ],\r\n [\r\n 15.3751149964334,\r\n 67.2760299226003\r\n ],\r\n [\r\n 15.3751123825265,\r\n 67.2760110911452\r\n ],\r\n [\r\n 15.3750974726777,\r\n 67.2759921986989\r\n ],\r\n [\r\n 15.3750782786403,\r\n 67.2759812100887\r\n ],\r\n [\r\n 15.3750670515184,\r\n 67.2759753159267\r\n ],\r\n [\r\n 15.3750165589481,\r\n 67.2759506758755\r\n ],\r\n [\r\n 15.3749694905269,\r\n 67.2759373303511\r\n ],\r\n [\r\n 15.3749201780455,\r\n 67.2759288339942\r\n ],\r\n [\r\n 15.3748809397873,\r\n 67.2759266830015\r\n ],\r\n [\r\n 15.3748316249528,\r\n 67.2759328978592\r\n ],\r\n [\r\n 15.3747995316376,\r\n 67.275927769987\r\n ],\r\n [\r\n 15.374773046249,\r\n 67.2759252304023\r\n ],\r\n [\r\n 15.3747426943141,\r\n 67.2759276334795\r\n ],\r\n [\r\n 15.3747212440692,\r\n 67.2759355773514\r\n ],\r\n [\r\n 15.3746815018966,\r\n 67.2759606073912\r\n ],\r\n [\r\n 15.3746625333396,\r\n 67.2759640603338\r\n ],\r\n [\r\n 15.3746511569034,\r\n 67.2759634589481\r\n ],\r\n [\r\n 15.3746073866324,\r\n 67.2759533349215\r\n ],\r\n [\r\n 15.3745835813858,\r\n 67.2759441510589\r\n ],\r\n [\r\n 15.3745806844133,\r\n 67.2759368918988\r\n ],\r\n [\r\n 15.3746074963867,\r\n 67.2759157492516\r\n ],\r\n [\r\n 15.3746080244275,\r\n 67.2759049837012\r\n ],\r\n [\r\n 15.3745902504911,\r\n 67.2758957857747\r\n ],\r\n [\r\n 15.3744662110576,\r\n 67.2758705097118\r\n ],\r\n [\r\n 15.37441611349,\r\n 67.2758562740606\r\n ],\r\n [\r\n 15.3743448533956,\r\n 67.2758237883689\r\n ],\r\n [\r\n 15.3742293290288,\r\n 67.2757940968507\r\n ],\r\n [\r\n 15.3741873367556,\r\n 67.2757789452195\r\n ],\r\n [\r\n 15.3741790920265,\r\n 67.2757708911851\r\n ],\r\n [\r\n 15.3741863012899,\r\n 67.2757422592446\r\n ],\r\n [\r\n 15.3741766158468,\r\n 67.2757310689729\r\n ],\r\n [\r\n 15.3741744847992,\r\n 67.2757282931543\r\n ],\r\n [\r\n 15.3740631353277,\r\n 67.275668720808\r\n ],\r\n [\r\n 15.3740746877775,\r\n 67.2756508430776\r\n ],\r\n [\r\n 15.3740770845276,\r\n 67.2756110992188\r\n ],\r\n [\r\n 15.3740851588056,\r\n 67.2755933192897\r\n ],\r\n [\r\n 15.3740988911239,\r\n 67.2755813568565\r\n ],\r\n [\r\n 15.3741332504616,\r\n 67.2755681802476\r\n ],\r\n [\r\n 15.3741850255536,\r\n 67.2755561291992\r\n ],\r\n [\r\n 15.3742362374554,\r\n 67.2755526011987\r\n ],\r\n [\r\n 15.3742954341074,\r\n 67.2755553337635\r\n ],\r\n [\r\n 15.3743807007085,\r\n 67.2755637465207\r\n ],\r\n [\r\n 15.3744213021753,\r\n 67.2755641004038\r\n ],\r\n [\r\n 15.3744879916118,\r\n 67.2755564099243\r\n ],\r\n [\r\n 15.3745295740893,\r\n 67.2755601701942\r\n ],\r\n [\r\n 15.3746965460821,\r\n 67.275601492549\r\n ],\r\n [\r\n 15.3747613580905,\r\n 67.2756221523769\r\n ],\r\n [\r\n 15.3749195417252,\r\n 67.2756800002939\r\n ],\r\n [\r\n 15.3749940357432,\r\n 67.2757115811561\r\n ],\r\n [\r\n 15.3750267552092,\r\n 67.2757271130364\r\n ],\r\n [\r\n 15.3750447737629,\r\n 67.2757371176678\r\n ],\r\n [\r\n 15.3750573715794,\r\n 67.275741663091\r\n ],\r\n [\r\n 15.3750685775796,\r\n 67.2757462117629\r\n ],\r\n [\r\n 15.3750776832458,\r\n 67.2757499580142\r\n ],\r\n [\r\n 15.3751038011875,\r\n 67.2757586878902\r\n ],\r\n [\r\n 15.3751217903789,\r\n 67.2757668088257\r\n ],\r\n [\r\n 15.375138622532,\r\n 67.2757751118665\r\n ],\r\n [\r\n 15.3751533431452,\r\n 67.2757818948915\r\n ],\r\n [\r\n 15.3751671162699,\r\n 67.2757874242907\r\n ],\r\n [\r\n 15.3751976697503,\r\n 67.2757979378457\r\n ],\r\n [\r\n 15.3752056071956,\r\n 67.2758011486024\r\n ],\r\n [\r\n 15.3752125957421,\r\n 67.275803016035\r\n ],\r\n [\r\n 15.3752205121725,\r\n 67.2758048813001\r\n ],\r\n [\r\n 15.3752284258017,\r\n 67.2758065671659\r\n ],\r\n [\r\n 15.3752354031411,\r\n 67.2758077170024\r\n ],\r\n [\r\n 15.375244704393,\r\n 67.2758091305182\r\n ],\r\n [\r\n 15.3752549377332,\r\n 67.275810810964\r\n ],\r\n [\r\n 15.3752711967103,\r\n 67.2758121185221\r\n ],\r\n [\r\n 15.3752802519806,\r\n 67.2758126355837\r\n ],\r\n [\r\n 15.3753137524868,\r\n 67.2758187468015\r\n ],\r\n [\r\n 15.3753216885529,\r\n 67.275821867853\r\n ],\r\n [\r\n 15.3753296204161,\r\n 67.275824719806\r\n ],\r\n [\r\n 15.3753547826118,\r\n 67.2758316578212\r\n ],\r\n [\r\n 15.3754138007334,\r\n 67.2758526000335\r\n ],\r\n [\r\n 15.375491413128,\r\n 67.2758758310311\r\n ],\r\n [\r\n 15.3755532760052,\r\n 67.2758858228177\r\n ],\r\n [\r\n 15.3756391770071,\r\n 67.2758901968066\r\n ],\r\n [\r\n 15.3758083839098,\r\n 67.2758961699351\r\n ],\r\n [\r\n 15.3759052311799,\r\n 67.275903298956\r\n ],\r\n [\r\n 15.3759855074187,\r\n 67.2759040081125\r\n ],\r\n [\r\n 15.3761157729645,\r\n 67.2758971548724\r\n ],\r\n [\r\n 15.3761800066221,\r\n 67.2758955692229\r\n ],\r\n [\r\n 15.3762285167842,\r\n 67.27589724967\r\n ],\r\n [\r\n 15.3762735909393,\r\n 67.2759017189336\r\n ],\r\n [\r\n 15.376395839953,\r\n 67.2759162334793\r\n ],\r\n [\r\n 15.3764201871502,\r\n 67.2759155485109\r\n ],\r\n [\r\n 15.3764412586252,\r\n 67.2759130771616\r\n ],\r\n [\r\n 15.3764493551432,\r\n 67.2759116229454\r\n ],\r\n [\r\n 15.3753994024334,\r\n 67.2795919781109\r\n ],\r\n [\r\n 15.3745605851607,\r\n 67.2795719587599\r\n ],\r\n [\r\n 15.3743961278041,\r\n 67.2795002211846\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3739890824434 67.2776962422416)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91396484,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91396484\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3511504560188,\r\n 67.2719070075405\r\n ],\r\n [\r\n 15.3533230915141,\r\n 67.2715314125663\r\n ],\r\n [\r\n 15.3547207687132,\r\n 67.2713286539569\r\n ],\r\n [\r\n 15.3576809376756,\r\n 67.2725576525016\r\n ],\r\n [\r\n 15.3567819756304,\r\n 67.2733430243599\r\n ],\r\n [\r\n 15.3550675338778,\r\n 67.2748139981084\r\n ],\r\n [\r\n 15.353524413585,\r\n 67.2762126345599\r\n ],\r\n [\r\n 15.3540102034847,\r\n 67.2764656919612\r\n ],\r\n [\r\n 15.3552874623677,\r\n 67.2769797380764\r\n ],\r\n [\r\n 15.3567126458528,\r\n 67.277562247542\r\n ],\r\n [\r\n 15.3559695138781,\r\n 67.277825019905\r\n ],\r\n [\r\n 15.3531787022205,\r\n 67.2788118967664\r\n ],\r\n [\r\n 15.3499606224026,\r\n 67.2799014681452\r\n ],\r\n [\r\n 15.3494419564254,\r\n 67.2800855900582\r\n ],\r\n [\r\n 15.3486322698754,\r\n 67.2797863077118\r\n ],\r\n [\r\n 15.3482461695073,\r\n 67.2795926701991\r\n ],\r\n [\r\n 15.3483165971499,\r\n 67.2795374402302\r\n ],\r\n [\r\n 15.3529377982464,\r\n 67.2759805185308\r\n ],\r\n [\r\n 15.3528186298119,\r\n 67.2749587098857\r\n ],\r\n [\r\n 15.3528321964415,\r\n 67.2747926407253\r\n ],\r\n [\r\n 15.3530291011117,\r\n 67.2721226606339\r\n ],\r\n [\r\n 15.3529510758007,\r\n 67.272053222929\r\n ],\r\n [\r\n 15.3518375872825,\r\n 67.2719628237619\r\n ],\r\n [\r\n 15.3511504560188,\r\n 67.2719070075405\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3534357411815 67.2756996540426)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91396444,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91396444\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3496853975966,\r\n 67.2646801765736\r\n ],\r\n [\r\n 15.349872129086,\r\n 67.264685331389\r\n ],\r\n [\r\n 15.3498279618695,\r\n 67.2646935905533\r\n ],\r\n [\r\n 15.3498106112282,\r\n 67.26469631943\r\n ],\r\n [\r\n 15.3496769239389,\r\n 67.2647193053649\r\n ],\r\n [\r\n 15.349537043889,\r\n 67.2647469692038\r\n ],\r\n [\r\n 15.3494591507115,\r\n 67.2647640028282\r\n ],\r\n [\r\n 15.3493748212762,\r\n 67.2647849076303\r\n ],\r\n [\r\n 15.3492970399808,\r\n 67.2648096553564\r\n ],\r\n [\r\n 15.3492458435433,\r\n 67.2648288733679\r\n ],\r\n [\r\n 15.3491750557386,\r\n 67.2648562071995\r\n ],\r\n [\r\n 15.3490864584499,\r\n 67.2649025966692\r\n ],\r\n [\r\n 15.3490236305821,\r\n 67.264951172646\r\n ],\r\n [\r\n 15.3489984834718,\r\n 67.2649758955179\r\n ],\r\n [\r\n 15.3489597225241,\r\n 67.2650371569304\r\n ],\r\n [\r\n 15.3489463158188,\r\n 67.2650719906741\r\n ],\r\n [\r\n 15.3489460643446,\r\n 67.265102579808\r\n ],\r\n [\r\n 15.3489589980829,\r\n 67.2651469544902\r\n ],\r\n [\r\n 15.3489941548131,\r\n 67.2652047362653\r\n ],\r\n [\r\n 15.3490058094977,\r\n 67.2652248940209\r\n ],\r\n [\r\n 15.3490399113572,\r\n 67.2653058213495\r\n ],\r\n [\r\n 15.3491442680951,\r\n 67.265450284781\r\n ],\r\n [\r\n 15.3492224499298,\r\n 67.2655327308707\r\n ],\r\n [\r\n 15.3493106261032,\r\n 67.2656008027667\r\n ],\r\n [\r\n 15.349383661601,\r\n 67.2657279318669\r\n ],\r\n [\r\n 15.3494630785135,\r\n 67.2658632996851\r\n ],\r\n [\r\n 15.3495200293279,\r\n 67.2659526092286\r\n ],\r\n [\r\n 15.3495514571178,\r\n 67.2660408081766\r\n ],\r\n [\r\n 15.3496439738899,\r\n 67.2661520173903\r\n ],\r\n [\r\n 15.3498492193704,\r\n 67.2662812803331\r\n ],\r\n [\r\n 15.3498506084339,\r\n 67.2663289093848\r\n ],\r\n [\r\n 15.3498220914636,\r\n 67.2663770520989\r\n ],\r\n [\r\n 15.3496974466706,\r\n 67.2665121465712\r\n ],\r\n [\r\n 15.3494978804266,\r\n 67.2666618461312\r\n ],\r\n [\r\n 15.3493746904483,\r\n 67.266737733469\r\n ],\r\n [\r\n 15.3493554047566,\r\n 67.2668945755453\r\n ],\r\n [\r\n 15.3493913999519,\r\n 67.2669459865196\r\n ],\r\n [\r\n 15.3495195826581,\r\n 67.2669741433058\r\n ],\r\n [\r\n 15.3497346690528,\r\n 67.2669824658888\r\n ],\r\n [\r\n 15.3499045280192,\r\n 67.2669742917557\r\n ],\r\n [\r\n 15.3500310378598,\r\n 67.2669512316018\r\n ],\r\n [\r\n 15.350333706401,\r\n 67.2668590749636\r\n ],\r\n [\r\n 15.3506627607955,\r\n 67.2668272299823\r\n ],\r\n [\r\n 15.3510827560112,\r\n 67.2667505136419\r\n ],\r\n [\r\n 15.3513105191311,\r\n 67.2667060612687\r\n ],\r\n [\r\n 15.3513802504886,\r\n 67.2667014235771\r\n ],\r\n [\r\n 15.3514865370867,\r\n 67.2667069319465\r\n ],\r\n [\r\n 15.3515982664055,\r\n 67.2667357510058\r\n ],\r\n [\r\n 15.351718096996,\r\n 67.2667476881555\r\n ],\r\n [\r\n 15.3518176027708,\r\n 67.2667493539453\r\n ],\r\n [\r\n 15.3518012793736,\r\n 67.2669807327153\r\n ],\r\n [\r\n 15.3513077860293,\r\n 67.2681528803547\r\n ],\r\n [\r\n 15.3516616349741,\r\n 67.2690376498018\r\n ],\r\n [\r\n 15.3493755019412,\r\n 67.2687712890883\r\n ],\r\n [\r\n 15.3492760998383,\r\n 67.2675488592676\r\n ],\r\n [\r\n 15.3477723796201,\r\n 67.2675268265417\r\n ],\r\n [\r\n 15.3458441912008,\r\n 67.2674980696898\r\n ],\r\n [\r\n 15.3432886674291,\r\n 67.2674004845398\r\n ],\r\n [\r\n 15.3453621433864,\r\n 67.2665025116612\r\n ],\r\n [\r\n 15.3470309404972,\r\n 67.2657403890685\r\n ],\r\n [\r\n 15.3474720977829,\r\n 67.2654599218378\r\n ],\r\n [\r\n 15.3483094967016,\r\n 67.2656417288815\r\n ],\r\n [\r\n 15.3483491929703,\r\n 67.2655808244168\r\n ],\r\n [\r\n 15.3485418023984,\r\n 67.2653033151603\r\n ],\r\n [\r\n 15.3483665562444,\r\n 67.2652269997152\r\n ],\r\n [\r\n 15.3480317063866,\r\n 67.2651775820413\r\n ],\r\n [\r\n 15.3485705522875,\r\n 67.2649034482689\r\n ],\r\n [\r\n 15.3489846315724,\r\n 67.2646607106658\r\n ],\r\n [\r\n 15.3496853975966,\r\n 67.2646801765736\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.348435172345 67.2670084352273)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91400228,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91400228\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3433166130459,\r\n 67.2703465247513\r\n ],\r\n [\r\n 15.3445396228125,\r\n 67.2701245831602\r\n ],\r\n [\r\n 15.344562301764,\r\n 67.2701211258118\r\n ],\r\n [\r\n 15.3454297378867,\r\n 67.2704788799156\r\n ],\r\n [\r\n 15.3458478590868,\r\n 67.2706530794253\r\n ],\r\n [\r\n 15.345860197129,\r\n 67.2711395993078\r\n ],\r\n [\r\n 15.3431236172356,\r\n 67.27102625422\r\n ],\r\n [\r\n 15.3433166130459,\r\n 67.2703465247513\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.344486298572 67.2706909015597)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91024689,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 266,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \"WAALERHAUGEN\",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6475012155,\r\n \"navn\": \"LOMME ERFAREN\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Sonja Henies vei 31\",\r\n \"adresselinje3\": \"1311 HØVIKODDEN\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"1311\",\r\n \"poststed\": \"HØVIKODDEN\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"ERFAREN\",\r\n \"etternavn\": \"LOMME\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Erikstadveien 13\",\r\n \"postnummer\": \"8206\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Erikstadveien\",\r\n \"bokstav\": null,\r\n \"nummer\": 13,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 91498468,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91498468\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.351698307534,\r\n 67.2499779917922\r\n ],\r\n [\r\n 15.3520431753542,\r\n 67.250092503799\r\n ],\r\n [\r\n 15.3516421367098,\r\n 67.2503837508772\r\n ],\r\n [\r\n 15.3515765239423,\r\n 67.2505400671642\r\n ],\r\n [\r\n 15.3502856769955,\r\n 67.2504389240625\r\n ],\r\n [\r\n 15.3503905383397,\r\n 67.2503197492887\r\n ],\r\n [\r\n 15.3509057565707,\r\n 67.2504520117075\r\n ],\r\n [\r\n 15.351698307534,\r\n 67.2499779917922\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3513583125255 67.2503047922554)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 305232876,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 828,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": null,\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 293015242,\r\n \"navn\": \"FAUSKE IL LANGRENN\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": \"Postboks 240\",\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"8201\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": null,\r\n \"etternavn\": null,\r\n \"personStatusKode\": null,\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": \"894036192\",\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [\r\n {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": null,\r\n \"adresselinje3\": null,\r\n \"landkode\": null,\r\n \"navn\": \"Markaveien 1\",\r\n \"postnummer\": \"8218\",\r\n \"poststed\": \"FAUSKE\",\r\n \"gatenavn\": \"Markaveien\",\r\n \"bokstav\": null,\r\n \"nummer\": 1,\r\n \"undernummer\": null\r\n }\r\n ],\r\n \"teiger\": [\r\n {\r\n \"id\": 305232877,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"305232877\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3560149003616,\r\n 67.2778505742485\r\n ],\r\n [\r\n 15.3571377334692,\r\n 67.2775514358211\r\n ],\r\n [\r\n 15.3573841700068,\r\n 67.2778670891578\r\n ],\r\n [\r\n 15.3564739249592,\r\n 67.27810951423\r\n ],\r\n [\r\n 15.3560149003616,\r\n 67.2778505742485\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3567465516155 67.2778396396391)\"\r\n }\r\n }\r\n }\r\n ]\r\n },\r\n {\r\n \"id\": 91023698,\r\n \"knr\": \"1841\",\r\n \"gnr\": 104,\r\n \"bnr\": 12,\r\n \"fnr\": 0,\r\n \"snr\": 0,\r\n \"bruksnavn\": \" \",\r\n \"utgått\": false,\r\n \"eiere\": [\r\n {\r\n \"id\": 6474681757,\r\n \"navn\": \"SKOLE ORIGINAL\",\r\n \"postAdresse\": {\r\n \"id\": 0,\r\n \"adresselinje1\": null,\r\n \"adresselinje2\": \"Vikavegen 35B\",\r\n \"adresselinje3\": \"7340 OPPDAL\",\r\n \"landkode\": \"000\",\r\n \"navn\": null,\r\n \"postnummer\": \"7340\",\r\n \"poststed\": \"OPPDAL\",\r\n \"gatenavn\": null,\r\n \"bokstav\": null,\r\n \"nummer\": null,\r\n \"undernummer\": null\r\n },\r\n \"fornavn\": \"ORIGINAL\",\r\n \"etternavn\": \"SKOLE\",\r\n \"personStatusKode\": \"B\",\r\n \"personnummer\": null,\r\n \"erDød\": false,\r\n \"organisasjonsnummer\": null,\r\n \"slettetDato\": null,\r\n \"nummer\": null,\r\n \"personIdKode\": null,\r\n \"personKategoriKode\": null\r\n }\r\n ],\r\n \"addresser\": [],\r\n \"teiger\": [\r\n {\r\n \"id\": 91393665,\r\n \"hovedteig\": false,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393665\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.3536738559855,\r\n 67.2502022133439\r\n ],\r\n [\r\n 15.3533151128976,\r\n 67.2504373071762\r\n ],\r\n [\r\n 15.3531880697093,\r\n 67.2503863664954\r\n ],\r\n [\r\n 15.3528823603351,\r\n 67.250272219358\r\n ],\r\n [\r\n 15.3527784280838,\r\n 67.250232709498\r\n ],\r\n [\r\n 15.3525605094557,\r\n 67.2501633098622\r\n ],\r\n [\r\n 15.3522604652944,\r\n 67.2500716645041\r\n ],\r\n [\r\n 15.3522334238248,\r\n 67.2500606904089\r\n ],\r\n [\r\n 15.3522710979269,\r\n 67.2500381820252\r\n ],\r\n [\r\n 15.3535758707809,\r\n 67.2492590248219\r\n ],\r\n [\r\n 15.354722530654,\r\n 67.2485742148938\r\n ],\r\n [\r\n 15.3549030692757,\r\n 67.2484664414697\r\n ],\r\n [\r\n 15.3549985579999,\r\n 67.2484208406465\r\n ],\r\n [\r\n 15.3550329181826,\r\n 67.2484253394829\r\n ],\r\n [\r\n 15.3550582312035,\r\n 67.2484291407052\r\n ],\r\n [\r\n 15.3550823525896,\r\n 67.2484307019892\r\n ],\r\n [\r\n 15.3551124732041,\r\n 67.2484305456414\r\n ],\r\n [\r\n 15.3551881831798,\r\n 67.2484264311757\r\n ],\r\n [\r\n 15.3552204024004,\r\n 67.2484271671914\r\n ],\r\n [\r\n 15.3552433983805,\r\n 67.2484309735129\r\n ],\r\n [\r\n 15.3552810740749,\r\n 67.2484403089103\r\n ],\r\n [\r\n 15.3552947739572,\r\n 67.2484422520439\r\n ],\r\n [\r\n 15.3553355279428,\r\n 67.2484403677597\r\n ],\r\n [\r\n 15.3553505928936,\r\n 67.2484406035124\r\n ],\r\n [\r\n 15.3553675645161,\r\n 67.2484444231551\r\n ],\r\n [\r\n 15.3553859515707,\r\n 67.2484499440155\r\n ],\r\n [\r\n 15.3554087092639,\r\n 67.2484533023269\r\n ],\r\n [\r\n 15.3554884643476,\r\n 67.2484563549882\r\n ],\r\n [\r\n 15.3555232403549,\r\n 67.2484576234968\r\n ],\r\n [\r\n 15.3555531690729,\r\n 67.2484601585765\r\n ],\r\n [\r\n 15.3555738414313,\r\n 67.2484635214845\r\n ],\r\n [\r\n 15.3555975923028,\r\n 67.2484713627104\r\n ],\r\n [\r\n 15.3556190327443,\r\n 67.2484796575666\r\n ],\r\n [\r\n 15.3556373933569,\r\n 67.2484833844003\r\n ],\r\n [\r\n 15.3556731095066,\r\n 67.2484855478215\r\n ],\r\n [\r\n 15.3557135009428,\r\n 67.2484904816602\r\n ],\r\n [\r\n 15.3557675445821,\r\n 67.2484941293858\r\n ],\r\n [\r\n 15.3557907458824,\r\n 67.2484961411173\r\n ],\r\n [\r\n 15.3558229784848,\r\n 67.2484977740109\r\n ],\r\n [\r\n 15.3558554122751,\r\n 67.2484973432868\r\n ],\r\n [\r\n 15.3558845782639,\r\n 67.2484953051514\r\n ],\r\n [\r\n 15.3559033173965,\r\n 67.2484932901338\r\n ],\r\n [\r\n 15.3559542559429,\r\n 67.248490665484\r\n ],\r\n [\r\n 15.3559797544193,\r\n 67.2484913265506\r\n ],\r\n [\r\n 15.3559923157628,\r\n 67.2484946176928\r\n ],\r\n [\r\n 15.3559967646798,\r\n 67.2484977474236\r\n ],\r\n [\r\n 15.3559940771219,\r\n 67.2485040325837\r\n ],\r\n [\r\n 15.3560008245326,\r\n 67.2485059013761\r\n ],\r\n [\r\n 15.356017061348,\r\n 67.2485070314952\r\n ],\r\n [\r\n 15.3560344354595,\r\n 67.2485067238443\r\n ],\r\n [\r\n 15.3560413747469,\r\n 67.2485059011242\r\n ],\r\n [\r\n 15.3560552865175,\r\n 67.2485064981805\r\n ],\r\n [\r\n 15.3560632190317,\r\n 67.2485101583978\r\n ],\r\n [\r\n 15.3560638152399,\r\n 67.2485191273588\r\n ],\r\n [\r\n 15.3560733232377,\r\n 67.2485196444809\r\n ],\r\n [\r\n 15.3560869568286,\r\n 67.2485171025523\r\n ],\r\n [\r\n 15.3561120642562,\r\n 67.2485070001252\r\n ],\r\n [\r\n 15.3561253797982,\r\n 67.2484986282147\r\n ],\r\n [\r\n 15.3561485007047,\r\n 67.2484795599061\r\n ],\r\n [\r\n 15.3561604525389,\r\n 67.2484729850756\r\n ],\r\n [\r\n 15.3561697288129,\r\n 67.2484735027062\r\n ],\r\n [\r\n 15.356179786553,\r\n 67.2484798492865\r\n ],\r\n [\r\n 15.356193885617,\r\n 67.2484930940152\r\n ],\r\n [\r\n 15.3562088046959,\r\n 67.2485147689894\r\n ],\r\n [\r\n 15.3562107447105,\r\n 67.248520595368\r\n ],\r\n [\r\n 15.3562113542586,\r\n 67.2485304613272\r\n ],\r\n [\r\n 15.3562157978968,\r\n 67.2485332322522\r\n ],\r\n [\r\n 15.3562424416804,\r\n 67.2485329937068\r\n ],\r\n [\r\n 15.356250532866,\r\n 67.2485317199066\r\n ],\r\n [\r\n 15.3562713972304,\r\n 67.2485323912136\r\n ],\r\n [\r\n 15.3562769927733,\r\n 67.2485347110657\r\n ],\r\n [\r\n 15.3562713847574,\r\n 67.2485471922096\r\n ],\r\n [\r\n 15.3562781521326,\r\n 67.2485504064887\r\n ],\r\n [\r\n 15.3562932158326,\r\n 67.2485505524529\r\n ],\r\n [\r\n 15.3563188995793,\r\n 67.2485480734552\r\n ],\r\n [\r\n 15.3563307260061,\r\n 67.2485486751175\r\n ],\r\n [\r\n 15.3563434282982,\r\n 67.2485614744203\r\n ],\r\n [\r\n 15.3563490491055,\r\n 67.2485654985677\r\n ],\r\n [\r\n 15.3563650662303,\r\n 67.248567436465\r\n ],\r\n [\r\n 15.3563940218187,\r\n 67.2485668339498\r\n ],\r\n [\r\n 15.3564056298401,\r\n 67.24856833312\r\n ],\r\n [\r\n 15.3564214817258,\r\n 67.2485747565206\r\n ],\r\n [\r\n 15.3564456166395,\r\n 67.2485772145985\r\n ],\r\n [\r\n 15.3564716916412,\r\n 67.2485854990479\r\n ],\r\n [\r\n 15.3564854116447,\r\n 67.2485887875782\r\n ],\r\n [\r\n 15.3565012383035,\r\n 67.2485935066731\r\n ],\r\n [\r\n 15.3565397029459,\r\n 67.2486091192223\r\n ],\r\n [\r\n 15.3565534229721,\r\n 67.2486124077467\r\n ],\r\n [\r\n 15.3565775712355,\r\n 67.2486157628035\r\n ],\r\n [\r\n 15.3566258425119,\r\n 67.2486207686084\r\n ],\r\n [\r\n 15.3566360589896,\r\n 67.2486221811513\r\n ],\r\n [\r\n 15.3566659960102,\r\n 67.2486252542226\r\n ],\r\n [\r\n 15.356694793117,\r\n 67.2486295856616\r\n ],\r\n [\r\n 15.3567770376842,\r\n 67.2486442038172\r\n ],\r\n [\r\n 15.3568067550173,\r\n 67.2486480846762\r\n ],\r\n [\r\n 15.3568382940947,\r\n 67.2486498086111\r\n ],\r\n [\r\n 15.3568672630794,\r\n 67.2486501030093\r\n ],\r\n [\r\n 15.3568927431153,\r\n 67.2486495081324\r\n ],\r\n [\r\n 15.3569089720827,\r\n 67.2486500999619\r\n ],\r\n [\r\n 15.3569273064019,\r\n 67.2486520326502\r\n ],\r\n [\r\n 15.3569873456899,\r\n 67.2486693014635\r\n ],\r\n [\r\n 15.3570240689652,\r\n 67.2486768445151\r\n ],\r\n [\r\n 15.357049144197,\r\n 67.248680197439\r\n ],\r\n [\r\n 15.3570630627515,\r\n 67.2486812429073\r\n ],\r\n [\r\n 15.3570827607298,\r\n 67.248681378487\r\n ],\r\n [\r\n 15.3571177089214,\r\n 67.2486786096398\r\n ],\r\n [\r\n 15.3571373882506,\r\n 67.2486774894146\r\n ],\r\n [\r\n 15.3571594193059,\r\n 67.2486786962273\r\n ],\r\n [\r\n 15.357175449892,\r\n 67.2486815310425\r\n ],\r\n [\r\n 15.3571912887364,\r\n 67.2486870573681\r\n ],\r\n [\r\n 15.3572102463908,\r\n 67.2486997529779\r\n ],\r\n [\r\n 15.3572309406112,\r\n 67.2487201591645\r\n ],\r\n [\r\n 15.3572394633652,\r\n 67.2487323397803\r\n ],\r\n [\r\n 15.3572385313088,\r\n 67.2487475913381\r\n ],\r\n [\r\n 15.3572342473895,\r\n 67.2487555844267\r\n ],\r\n [\r\n 15.3572278980582,\r\n 67.248764927655\r\n ],\r\n [\r\n 15.3572251974698,\r\n 67.2487703158366\r\n ],\r\n [\r\n 15.3572164977198,\r\n 67.2487774217251\r\n ],\r\n [\r\n 15.3572047510902,\r\n 67.2487822021207\r\n ],\r\n [\r\n 15.3571916088637,\r\n 67.2487866268101\r\n ],\r\n [\r\n 15.3571835243029,\r\n 67.2487883491571\r\n ],\r\n [\r\n 15.3571647783879,\r\n 67.2487899158247\r\n ],\r\n [\r\n 15.3571315785034,\r\n 67.248785594267\r\n ],\r\n [\r\n 15.3571025827161,\r\n 67.2487835059191\r\n ],\r\n [\r\n 15.3570831137012,\r\n 67.2487831904265\r\n ],\r\n [\r\n 15.3570738239712,\r\n 67.2487817758499\r\n ],\r\n [\r\n 15.3570477552074,\r\n 67.248773939998\r\n ],\r\n [\r\n 15.3570317245747,\r\n 67.2487711051701\r\n ],\r\n [\r\n 15.3570062177845,\r\n 67.2487699060715\r\n ],\r\n [\r\n 15.3568942496194,\r\n 67.2487822649857\r\n ],\r\n [\r\n 15.3568436287746,\r\n 67.2487907199109\r\n ],\r\n [\r\n 15.356820070142,\r\n 67.2487958853526\r\n ],\r\n [\r\n 15.3567988419135,\r\n 67.2488019426383\r\n ],\r\n [\r\n 15.3567762832864,\r\n 67.2488120395064\r\n ],\r\n [\r\n 15.3567654913376,\r\n 67.2488187015069\r\n ],\r\n [\r\n 15.3567620675652,\r\n 67.2488222075285\r\n ],\r\n [\r\n 15.3567443440273,\r\n 67.2488458387723\r\n ],\r\n [\r\n 15.3567407883218,\r\n 67.2488560727995\r\n ],\r\n [\r\n 15.3567396441902,\r\n 67.2488726703676\r\n ],\r\n [\r\n 15.356735454545,\r\n 67.2488870321342\r\n ],\r\n [\r\n 15.3567277466455,\r\n 67.2488985312301\r\n ],\r\n [\r\n 15.3567163326802,\r\n 67.2489101282658\r\n ],\r\n [\r\n 15.3566968460357,\r\n 67.248924254922\r\n ],\r\n [\r\n 15.3566787044125,\r\n 67.2489353286901\r\n ],\r\n [\r\n 15.3566592563004,\r\n 67.2489520566382\r\n ],\r\n [\r\n 15.3566455584067,\r\n 67.2489659013151\r\n ],\r\n [\r\n 15.3566326075074,\r\n 67.2489832427414\r\n ],\r\n [\r\n 15.3566262578825,\r\n 67.2489925859458\r\n ],\r\n [\r\n 15.3566100496764,\r\n 67.2490090375799\r\n ],\r\n [\r\n 15.3566025348219,\r\n 67.2490179348582\r\n ],\r\n [\r\n 15.356586306634,\r\n 67.2490330409916\r\n ],\r\n [\r\n 15.356572647218,\r\n 67.2490494869586\r\n ],\r\n [\r\n 15.3565643451156,\r\n 67.2490678047817\r\n ],\r\n [\r\n 15.3565599289378,\r\n 67.2490825258578\r\n ],\r\n [\r\n 15.3565593867253,\r\n 67.2490928428883\r\n ],\r\n [\r\n 15.3565680555544,\r\n 67.2491148905259\r\n ],\r\n [\r\n 15.356569460145,\r\n 67.2491314824295\r\n ],\r\n [\r\n 15.3565607933163,\r\n 67.2491408307791\r\n ],\r\n [\r\n 15.3565451670788,\r\n 67.2491496563723\r\n ],\r\n [\r\n 15.3565368705815,\r\n 67.2491527246996\r\n ],\r\n [\r\n 15.3565179378344,\r\n 67.2491573416024\r\n ],\r\n [\r\n 15.3564779589701,\r\n 67.2491646963358\r\n ],\r\n [\r\n 15.3564474404871,\r\n 67.2491693389635\r\n ],\r\n [\r\n 15.3564381838792,\r\n 67.2491701668472\r\n ],\r\n [\r\n 15.3564321845645,\r\n 67.2491718845248\r\n ],\r\n [\r\n 15.3564005340761,\r\n 67.2491783237141\r\n ],\r\n [\r\n 15.3563698356815,\r\n 67.2491864651369\r\n ],\r\n [\r\n 15.3563449327879,\r\n 67.2491947730916\r\n ],\r\n [\r\n 15.3563246841039,\r\n 67.2492044162517\r\n ],\r\n [\r\n 15.3562991724069,\r\n 67.2492185562349\r\n ],\r\n [\r\n 15.3562822075562,\r\n 67.2492308831843\r\n ],\r\n [\r\n 15.3562698663587,\r\n 67.2492424822454\r\n ],\r\n [\r\n 15.3562643046802,\r\n 67.2492581028837\r\n ],\r\n [\r\n 15.356263543909,\r\n 67.2492693174262\r\n ],\r\n [\r\n 15.3562685574193,\r\n 67.2492792633112\r\n ],\r\n [\r\n 15.3562834425063,\r\n 67.2492986060792\r\n ],\r\n [\r\n 15.356305295036,\r\n 67.2493190098118\r\n ],\r\n [\r\n 15.3563383736302,\r\n 67.2493463854377\r\n ],\r\n [\r\n 15.3563580464398,\r\n 67.2493604251019\r\n ],\r\n [\r\n 15.3564090949242,\r\n 67.2493963722838\r\n ],\r\n [\r\n 15.3564269007897,\r\n 67.2494095190571\r\n ],\r\n [\r\n 15.356436945696,\r\n 67.2494149686216\r\n ],\r\n [\r\n 15.3564577931567,\r\n 67.2494300820987\r\n ],\r\n [\r\n 15.3564652825456,\r\n 67.249435088823\r\n ],\r\n [\r\n 15.3563659180632,\r\n 67.2495007028474\r\n ],\r\n [\r\n 15.354916692915,\r\n 67.250457455096\r\n ],\r\n [\r\n 15.35435733175,\r\n 67.250334721774\r\n ],\r\n [\r\n 15.3543323630879,\r\n 67.2503544218132\r\n ],\r\n [\r\n 15.3536738559855,\r\n 67.2502022133439\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.354757040352 67.249460356891)\"\r\n }\r\n }\r\n },\r\n {\r\n \"id\": 91393617,\r\n \"hovedteig\": true,\r\n \"feature\": {\r\n \"type\": \"Feature\",\r\n \"id\": \"91393617\",\r\n \"geometry\": {\r\n \"type\": \"Polygon\",\r\n \"coordinates\": [\r\n [\r\n [\r\n 15.352130967135,\r\n 67.2501218234271\r\n ],\r\n [\r\n 15.3521429025371,\r\n 67.2501153864116\r\n ],\r\n [\r\n 15.3521508283785,\r\n 67.2501172050081\r\n ],\r\n [\r\n 15.3524599651563,\r\n 67.2502125981208\r\n ],\r\n [\r\n 15.3526688177237,\r\n 67.2502800443528\r\n ],\r\n [\r\n 15.3527683209008,\r\n 67.2503177699627\r\n ],\r\n [\r\n 15.353074003976,\r\n 67.2504301233187\r\n ],\r\n [\r\n 15.3532117685158,\r\n 67.2504852565268\r\n ],\r\n [\r\n 15.3532566105881,\r\n 67.2505090187803\r\n ],\r\n [\r\n 15.3533197882151,\r\n 67.2505347141206\r\n ],\r\n [\r\n 15.3535725673303,\r\n 67.2506420699261\r\n ],\r\n [\r\n 15.353736815157,\r\n 67.2507172377698\r\n ],\r\n [\r\n 15.3538465778686,\r\n 67.2507747644216\r\n ],\r\n [\r\n 15.3541123078179,\r\n 67.2508957256556\r\n ],\r\n [\r\n 15.3541878708543,\r\n 67.2509283004457\r\n ],\r\n [\r\n 15.3541716094795,\r\n 67.2509413432351\r\n ],\r\n [\r\n 15.3530804034329,\r\n 67.2518130571104\r\n ],\r\n [\r\n 15.3530071894595,\r\n 67.2518774453377\r\n ],\r\n [\r\n 15.3530746997913,\r\n 67.2519138955804\r\n ],\r\n [\r\n 15.3533334178897,\r\n 67.2520459966711\r\n ],\r\n [\r\n 15.354762220419,\r\n 67.252788813387\r\n ],\r\n [\r\n 15.354797552038,\r\n 67.2528116095027\r\n ],\r\n [\r\n 15.3547225504677,\r\n 67.2528803978946\r\n ],\r\n [\r\n 15.3547300997795,\r\n 67.2530308127693\r\n ],\r\n [\r\n 15.3547341255676,\r\n 67.2530366345528\r\n ],\r\n [\r\n 15.354678572656,\r\n 67.2530413321562\r\n ],\r\n [\r\n 15.3538464509729,\r\n 67.253112867743\r\n ],\r\n [\r\n 15.3522401692748,\r\n 67.2532584001439\r\n ],\r\n [\r\n 15.3522075353442,\r\n 67.2532614319447\r\n ],\r\n [\r\n 15.350570448236,\r\n 67.2534096165685\r\n ],\r\n [\r\n 15.3516670052737,\r\n 67.2505472245672\r\n ],\r\n [\r\n 15.3518108540429,\r\n 67.2503372739089\r\n ],\r\n [\r\n 15.352130967135,\r\n 67.2501218234271\r\n ]\r\n ]\r\n ]\r\n },\r\n \"properties\": {\r\n \"reppkt\": \"POINT(15.3524876261964 67.2519705364085)\"\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n]\r\n\r\n\r\n // [\r\n // {\r\n // id: 107176875,\r\n // knr: '5037',\r\n // gnr: 223,\r\n // bnr: 7,\r\n // fnr: 0,\r\n // snr: 0,\r\n // bruksnavn: 'BERGHEIM',\r\n // utgått: false,\r\n // eiere: [\r\n // {\r\n // id: 1788920,\r\n // navn: 'ØYEN TOM KRISTIAN BACH',\r\n // postAdresse: {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: 'Solhaugvegen 163',\r\n // adresselinje3: '7632 ÅSENFJORD',\r\n // landkode: '000',\r\n // navn: null,\r\n // postnummer: '7632',\r\n // poststed: 'ÅSENFJORD',\r\n // gatenavn: null,\r\n // bokstav: null,\r\n // nummer: null,\r\n // undernummer: null,\r\n // },\r\n // fornavn: 'TOM KRISTIAN BACH',\r\n // etternavn: 'ØYEN',\r\n // personStatusKode: 'B',\r\n // personnummer: null,\r\n // erDød: false,\r\n // organisasjonsnummer: null,\r\n // slettetDato: null,\r\n // nummer: null,\r\n // personIdKode: null,\r\n // personKategoriKode: null,\r\n // },\r\n // ],\r\n // addresser: [\r\n // {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: null,\r\n // adresselinje3: null,\r\n // landkode: null,\r\n // navn: 'Solhaugvegen 163',\r\n // postnummer: '7632',\r\n // poststed: 'ÅSENFJORD',\r\n // gatenavn: 'Solhaugvegen',\r\n // bokstav: null,\r\n // nummer: 163,\r\n // undernummer: null,\r\n // },\r\n // ],\r\n // teiger: [\r\n // {\r\n // id: 107745355,\r\n // hovedteig: true,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '107745355',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9698563519864, 63.5945587600026],\r\n // [10.9705058029817, 63.5945794488538],\r\n // [10.9712480910102, 63.594646684782],\r\n // [10.9713878933092, 63.5948430838461],\r\n // [10.9713792668951, 63.5951203451562],\r\n // [10.9711916038714, 63.595094641498],\r\n // [10.9706069311532, 63.5950391936626],\r\n // [10.9705301837342, 63.5950284860271],\r\n // [10.9702600172502, 63.5949904467059],\r\n // [10.9700724964779, 63.5949755129368],\r\n // [10.9700633644586, 63.5949746506724],\r\n // [10.9700702625041, 63.5949432237317],\r\n // [10.9700952710564, 63.5948267984789],\r\n // [10.9698495466204, 63.5945999803727],\r\n // [10.9698563519864, 63.5945587600026],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9704490742936 63.5947857636655)',\r\n // },\r\n // },\r\n // },\r\n // ],\r\n // },\r\n // {\r\n // id: 107178555,\r\n // knr: '5037',\r\n // gnr: 236,\r\n // bnr: 1,\r\n // fnr: 0,\r\n // snr: 0,\r\n // bruksnavn: 'BRAKSTAD NEDRE',\r\n // utgått: false,\r\n // eiere: [\r\n // {\r\n // id: 4374910,\r\n // navn: 'FØLKE ANNAR',\r\n // postAdresse: {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: 'GRENNEGRENDA 3',\r\n // adresselinje3: '7630 ÅSEN',\r\n // landkode: '000',\r\n // navn: null,\r\n // postnummer: '7630',\r\n // poststed: 'ÅSEN',\r\n // gatenavn: null,\r\n // bokstav: null,\r\n // nummer: null,\r\n // undernummer: null,\r\n // },\r\n // fornavn: 'ANNAR',\r\n // etternavn: 'FØLKE',\r\n // personStatusKode: 'B',\r\n // personnummer: null,\r\n // erDød: false,\r\n // organisasjonsnummer: null,\r\n // slettetDato: null,\r\n // nummer: null,\r\n // personIdKode: null,\r\n // personKategoriKode: null,\r\n // },\r\n // ],\r\n // addresser: [],\r\n // teiger: [\r\n // {\r\n // id: 107772658,\r\n // hovedteig: false,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '107772658',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9661045325039, 63.591539985123],\r\n // [10.96665390855, 63.5917014222704],\r\n // [10.9690414001688, 63.5922338497236],\r\n // [10.9699345284531, 63.5925382440449],\r\n // [10.9704583486998, 63.5927900643882],\r\n // [10.970107235606, 63.5929424763305],\r\n // [10.9699429648739, 63.5930477945596],\r\n // [10.9694670643573, 63.5934684658237],\r\n // [10.9699518069936, 63.5940615292544],\r\n // [10.9698898835984, 63.5943554121221],\r\n // [10.9698563519864, 63.5945587600026],\r\n // [10.9698495466204, 63.5945999803727],\r\n // [10.969101894067, 63.5945635505874],\r\n // [10.9690901248417, 63.5946120121888],\r\n // [10.9690929178087, 63.5946873868586],\r\n // [10.9679499198191, 63.5946014281048],\r\n // [10.9680108696781, 63.5945265265009],\r\n // [10.9673557256884, 63.5945304764384],\r\n // [10.9671052790038, 63.5946843742508],\r\n // [10.967066071294, 63.5946800633772],\r\n // [10.9667272921017, 63.5946438551502],\r\n // [10.9661567422519, 63.5945882857209],\r\n // [10.9655681168358, 63.5945336796897],\r\n // [10.9651220475589, 63.5944852003779],\r\n // [10.9650012974151, 63.5944619845298],\r\n // [10.964910806208, 63.5944361100993],\r\n // [10.9647892474064, 63.5943836377727],\r\n // [10.9645871314795, 63.5942885460181],\r\n // [10.9643024638106, 63.5941306619284],\r\n // [10.9641678308366, 63.5940552054329],\r\n // [10.9639465763347, 63.5938842435558],\r\n // [10.9636856201437, 63.5936374239268],\r\n // [10.9635505521762, 63.5934883555527],\r\n // [10.9635057666455, 63.5934148120234],\r\n // [10.9634182000586, 63.5933172545199],\r\n // [10.9633309529736, 63.5932213983655],\r\n // [10.9631921770238, 63.5930711235058],\r\n // [10.9631537222694, 63.5930045857192],\r\n // [10.9630048392307, 63.592865581248],\r\n // [10.9629156719912, 63.5927622996104],\r\n // [10.9627632492032, 63.5925719009863],\r\n // [10.962543754201, 63.5923237944922],\r\n // [10.9624316393667, 63.5921741421085],\r\n // [10.9622303767145, 63.5919506542656],\r\n // [10.9619303014813, 63.5917236684067],\r\n // [10.9618210410328, 63.5916592648747],\r\n // [10.9617185579363, 63.5915761848008],\r\n // [10.9616423207779, 63.5914819728319],\r\n // [10.9616284278207, 63.5912890520135],\r\n // [10.9616595083565, 63.5911491137103],\r\n // [10.9617132705528, 63.591057524716],\r\n // [10.9617025000587, 63.5909713960336],\r\n // [10.9620959273296, 63.5908272247469],\r\n // [10.9628288806654, 63.590584683831],\r\n // [10.9638917344963, 63.5902330365259],\r\n // [10.9624333808234, 63.5897420548018],\r\n // [10.9613670282977, 63.5889247508536],\r\n // [10.9620055944993, 63.5884625614052],\r\n // [10.9631951643734, 63.5885905721885],\r\n // [10.9645114725937, 63.588726535056],\r\n // [10.9668415702179, 63.5889195255125],\r\n // [10.9665642559459, 63.5890047522671],\r\n // [10.9665239597927, 63.5892327101654],\r\n // [10.9666691006985, 63.5894810212931],\r\n // [10.9669090390416, 63.5902117538853],\r\n // [10.9654612182015, 63.5907533660956],\r\n // [10.9648251666491, 63.5910298770781],\r\n // [10.9661045325039, 63.591539985123],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9645208112893 63.5918982373001)',\r\n // },\r\n // },\r\n // },\r\n // {\r\n // id: 107772751,\r\n // hovedteig: false,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '107772751',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9555944601423, 63.5934901865702],\r\n // [10.9565773067233, 63.5935967396565],\r\n // [10.9616269928048, 63.5939840911055],\r\n // [10.9616464766102, 63.5940006132548],\r\n // [10.9617667877445, 63.5940877591792],\r\n // [10.9626312828884, 63.5941671594424],\r\n // [10.9628516111813, 63.5942077795271],\r\n // [10.962846315669, 63.5942450196523],\r\n // [10.9628238612541, 63.5944047707977],\r\n // [10.9624401377089, 63.5943890974143],\r\n // [10.9624224085511, 63.5944331509491],\r\n // [10.962031452192, 63.5944032109797],\r\n // [10.9617438040435, 63.5944593913053],\r\n // [10.9615668363931, 63.5945009516865],\r\n // [10.9609287983271, 63.5945629937233],\r\n // [10.9582501300398, 63.5946633799169],\r\n // [10.9574992896152, 63.594721109365],\r\n // [10.9571405831876, 63.5947145073506],\r\n // [10.9567814648322, 63.5946667024377],\r\n // [10.954681876825, 63.5944835145243],\r\n // [10.9548243377211, 63.594276883916],\r\n // [10.9549875320557, 63.5940433969009],\r\n // [10.9552317821142, 63.5938483078295],\r\n // [10.9555944601423, 63.5934901865702],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9576278090508 63.5940949584719)',\r\n // },\r\n // },\r\n // },\r\n // {\r\n // id: 107772722,\r\n // hovedteig: true,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '107772722',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9584369079653, 63.591050360094],\r\n // [10.958909424973, 63.5905992484898],\r\n // [10.9592193082931, 63.5903071052536],\r\n // [10.9592805119963, 63.5901536490531],\r\n // [10.9591962686027, 63.5899545957443],\r\n // [10.9592944582464, 63.5899051353447],\r\n // [10.9593963088769, 63.5897829054755],\r\n // [10.9596690190039, 63.5896479294288],\r\n // [10.9596570176049, 63.5894119794756],\r\n // [10.9598412152853, 63.5894846984617],\r\n // [10.9602059062548, 63.5896729202321],\r\n // [10.9603320660599, 63.589745802538],\r\n // [10.9605063162045, 63.5898437941197],\r\n // [10.9607925684207, 63.5900256340152],\r\n // [10.960874024158, 63.590099126373],\r\n // [10.9610645964611, 63.5903462835467],\r\n // [10.9612391733247, 63.5905074729362],\r\n // [10.9613022141775, 63.5905594007666],\r\n // [10.9615083547262, 63.5907398198838],\r\n // [10.961604502271, 63.5908919354817],\r\n // [10.9616109913258, 63.590959808125],\r\n // [10.9615720886069, 63.5910505656355],\r\n // [10.9615184816494, 63.5911385613662],\r\n // [10.961487420179, 63.5912875668622],\r\n // [10.9615245539352, 63.5914901354503],\r\n // [10.961597960135, 63.5916076384316],\r\n // [10.9617085470064, 63.5916971616028],\r\n // [10.9618138510901, 63.5917597339554],\r\n // [10.9621258474984, 63.5919754247795],\r\n // [10.9623161511133, 63.5921949327846],\r\n // [10.9624109945406, 63.5923455395209],\r\n // [10.9626306121889, 63.5925954400738],\r\n // [10.9628034711845, 63.5927898687794],\r\n // [10.962848297455, 63.5928435711952],\r\n // [10.9630251575611, 63.5930316605624],\r\n // [10.9630827136449, 63.5931033238679],\r\n // [10.9631980660867, 63.5932413502789],\r\n // [10.9632855601352, 63.5933407942198],\r\n // [10.9633729311201, 63.5934384442518],\r\n // [10.9634197117333, 63.5934912220122],\r\n // [10.9635924754302, 63.5936694912691],\r\n // [10.9638099949103, 63.5938915879549],\r\n // [10.9640347124951, 63.5940660039775],\r\n // [10.9636260782448, 63.5941304864307],\r\n // [10.9628586162013, 63.5941573187926],\r\n // [10.9626834549587, 63.5941109640734],\r\n // [10.9618785536018, 63.5940654936803],\r\n // [10.9617058676226, 63.5939262744377],\r\n // [10.9616561964626, 63.5938080881214],\r\n // [10.9618453149556, 63.5933664942729],\r\n // [10.9625330075553, 63.5932092338731],\r\n // [10.962564155131, 63.5930790801762],\r\n // [10.9626379671783, 63.5929946683276],\r\n // [10.9622619111386, 63.592355656923],\r\n // [10.9620400220495, 63.5920697862548],\r\n // [10.9609880528051, 63.591772810118],\r\n // [10.9601527072028, 63.5916208220196],\r\n // [10.9601725817809, 63.5915786247979],\r\n // [10.9602113024025, 63.5913972851266],\r\n // [10.9591197813594, 63.5911810963827],\r\n // [10.9584369079653, 63.591050360094],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9605195693561 63.5910817293073)',\r\n // },\r\n // },\r\n // },\r\n // ],\r\n // },\r\n // {\r\n // id: 107178558,\r\n // knr: '5037',\r\n // gnr: 236,\r\n // bnr: 4,\r\n // fnr: 0,\r\n // snr: 0,\r\n // bruksnavn: 'HEIMTUN',\r\n // utgått: false,\r\n // eiere: [\r\n // {\r\n // id: 3285613,\r\n // navn: 'THRONÆS EINAR',\r\n // postAdresse: {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: 'SOLHAUGVEGEN 177',\r\n // adresselinje3: '7632 ÅSENFJORD',\r\n // landkode: '000',\r\n // navn: null,\r\n // postnummer: '7632',\r\n // poststed: 'ÅSENFJORD',\r\n // gatenavn: null,\r\n // bokstav: null,\r\n // nummer: null,\r\n // undernummer: null,\r\n // },\r\n // fornavn: 'EINAR',\r\n // etternavn: 'THRONÆS',\r\n // personStatusKode: 'B',\r\n // personnummer: null,\r\n // erDød: false,\r\n // organisasjonsnummer: null,\r\n // slettetDato: null,\r\n // nummer: null,\r\n // personIdKode: null,\r\n // personKategoriKode: null,\r\n // },\r\n // ],\r\n // addresser: [\r\n // {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: null,\r\n // adresselinje3: null,\r\n // landkode: null,\r\n // navn: 'Solhaugvegen 177',\r\n // postnummer: '7632',\r\n // poststed: 'ÅSENFJORD',\r\n // gatenavn: 'Solhaugvegen',\r\n // bokstav: null,\r\n // nummer: 177,\r\n // undernummer: null,\r\n // },\r\n // ],\r\n // teiger: [\r\n // {\r\n // id: 107772847,\r\n // hovedteig: true,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '107772847',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9698495466204, 63.5945999803727],\r\n // [10.9700952710564, 63.5948267984789],\r\n // [10.9690929178087, 63.5946873868586],\r\n // [10.9690901248417, 63.5946120121888],\r\n // [10.969101894067, 63.5945635505874],\r\n // [10.9698495466204, 63.5945999803727],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9696416666194 63.5946608281198)',\r\n // },\r\n // },\r\n // },\r\n // ],\r\n // },\r\n // {\r\n // id: 107176869,\r\n // knr: '5037',\r\n // gnr: 223,\r\n // bnr: 1,\r\n // fnr: 0,\r\n // snr: 0,\r\n // bruksnavn: 'VOLD',\r\n // utgått: false,\r\n // eiere: [\r\n // {\r\n // id: 4014564,\r\n // navn: 'AARNSETH MAGNY SOFIE',\r\n // postAdresse: {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: 'VOLLAVEGEN 246',\r\n // adresselinje3: '7630 ÅSEN',\r\n // landkode: '000',\r\n // navn: null,\r\n // postnummer: '7630',\r\n // poststed: 'ÅSEN',\r\n // gatenavn: null,\r\n // bokstav: null,\r\n // nummer: null,\r\n // undernummer: null,\r\n // },\r\n // fornavn: 'MAGNY SOFIE',\r\n // etternavn: 'AARNSETH',\r\n // personStatusKode: 'B',\r\n // personnummer: null,\r\n // erDød: false,\r\n // organisasjonsnummer: null,\r\n // slettetDato: null,\r\n // nummer: null,\r\n // personIdKode: null,\r\n // personKategoriKode: null,\r\n // },\r\n // ],\r\n // addresser: [\r\n // {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: null,\r\n // adresselinje3: null,\r\n // landkode: null,\r\n // navn: 'Vollavegen 246',\r\n // postnummer: '7630',\r\n // poststed: 'ÅSEN',\r\n // gatenavn: 'Vollavegen',\r\n // bokstav: null,\r\n // nummer: 246,\r\n // undernummer: null,\r\n // },\r\n // ],\r\n // teiger: [\r\n // {\r\n // id: 416488555,\r\n // hovedteig: true,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '416488555',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9792322483473, 63.5959250892992],\r\n // [10.9789170821003, 63.595831665034],\r\n // [10.978676409997, 63.595722220779],\r\n // [10.9784897104446, 63.5956263969391],\r\n // [10.9782451185237, 63.5954836984986],\r\n // [10.978035033809, 63.5953327136817],\r\n // [10.9778553034963, 63.5952413717191],\r\n // [10.9776436715258, 63.5951115951945],\r\n // [10.9776069202891, 63.5950585040995],\r\n // [10.9776031995148, 63.5949207466978],\r\n // [10.9776695544442, 63.5947614651145],\r\n // [10.9779022061606, 63.5944421536728],\r\n // [10.9781070815811, 63.594161290153],\r\n // [10.9782067077648, 63.5939847614936],\r\n // [10.9782621399343, 63.5939382112147],\r\n // [10.9782609157425, 63.5938799623843],\r\n // [10.9783494845788, 63.5937532329811],\r\n // [10.9784646040826, 63.5936662683015],\r\n // [10.9786360607602, 63.5935864276563],\r\n // [10.9796944028554, 63.5932753941088],\r\n // [10.9807136535174, 63.5929794357518],\r\n // [10.9809016095709, 63.5929282731203],\r\n // [10.9839593071199, 63.5938761273329],\r\n // [10.986199337841, 63.594070322959],\r\n // [10.9868169095146, 63.5939758617362],\r\n // [10.98698237794, 63.5940069695128],\r\n // [10.9881352146258, 63.5942650145958],\r\n // [10.9889741795828, 63.5943701972756],\r\n // [10.9899624813944, 63.5944831812165],\r\n // [10.9913640095315, 63.5946267885006],\r\n // [10.9919730295794, 63.5946983335665],\r\n // [10.9929116997006, 63.5948795888663],\r\n // [10.9941216681845, 63.5950136182262],\r\n // [10.9946589722501, 63.5949533660389],\r\n // [10.9953208688782, 63.5950571111492],\r\n // [10.9958437733558, 63.595182626173],\r\n // [10.9963327610561, 63.595333299882],\r\n // [10.9970144852981, 63.5956217946579],\r\n // [10.9973598959696, 63.5957000354833],\r\n // [10.9983367075579, 63.5958865610593],\r\n // [10.9985573705341, 63.5959884409319],\r\n // [10.9988643495752, 63.5960532974614],\r\n // [10.9993767678041, 63.5961294780694],\r\n // [10.9995926686088, 63.5961720792368],\r\n // [11.0001938924721, 63.5962409154141],\r\n // [11.0008338322227, 63.5962638715879],\r\n // [10.9998889525456, 63.5970031610652],\r\n // [10.9990046086268, 63.5976490396691],\r\n // [10.9981263182371, 63.5982840547359],\r\n // [10.997871618839, 63.5984128390094],\r\n // [10.9958985236514, 63.5985638099279],\r\n // [10.9957309364202, 63.5987417450984],\r\n // [10.9951071923999, 63.5988326486794],\r\n // [10.994599273795, 63.598818336888],\r\n // [10.994193191667, 63.5987034043924],\r\n // [10.9937515455644, 63.5986737150628],\r\n // [10.9912780650138, 63.5987600150295],\r\n // [10.9907569931971, 63.5990102682923],\r\n // [10.9904180383201, 63.5988372061238],\r\n // [10.9900489325432, 63.5986712045816],\r\n // [10.9894977888265, 63.5984999134483],\r\n // [10.9894743609324, 63.5984935944378],\r\n // [10.9894283779309, 63.5984472775769],\r\n // [10.9889553526581, 63.5982078380961],\r\n // [10.9889347175127, 63.5981318126287],\r\n // [10.9886834255949, 63.5979635475449],\r\n // [10.9884618591621, 63.5979841223556],\r\n // [10.9883793248317, 63.5979918189403],\r\n // [10.9882131834292, 63.5980322748613],\r\n // [10.9881433972202, 63.5979828756041],\r\n // [10.9879209479609, 63.5978839673799],\r\n // [10.9875147928786, 63.5977009657579],\r\n // [10.987114948468, 63.5975389735213],\r\n // [10.9868612751008, 63.5974634789217],\r\n // [10.986432560877, 63.5974308950999],\r\n // [10.986085292396, 63.5973894627203],\r\n // [10.9857944583285, 63.5973448251317],\r\n // [10.9856335333853, 63.5973039569787],\r\n // [10.9853872063718, 63.5972267422549],\r\n // [10.9850757328087, 63.5971318436639],\r\n // [10.9847958455528, 63.5970417149688],\r\n // [10.9845338039601, 63.5969674991352],\r\n // [10.9841032514221, 63.5968794511808],\r\n // [10.9837750932327, 63.596808302157],\r\n // [10.9836094983286, 63.5967900305339],\r\n // [10.982707695246, 63.5966112578525],\r\n // [10.9820684409369, 63.5964879297632],\r\n // [10.9800401700779, 63.5960852472459],\r\n // [10.9792322483473, 63.5959250892992],\r\n // ],\r\n // [\r\n // [10.9868540981456, 63.5942805921332],\r\n // [10.9868164244508, 63.5942434066797],\r\n // [10.9867307372848, 63.5942288811274],\r\n // [10.9866470389106, 63.5942457502824],\r\n // [10.9866146217208, 63.5942839055079],\r\n // [10.9866522952075, 63.5943210910149],\r\n // [10.9867381840228, 63.5943356138263],\r\n // [10.9868216811951, 63.5943187474045],\r\n // [10.9868540981456, 63.5942805921332],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9810205596982 63.595000408117)',\r\n // },\r\n // },\r\n // },\r\n // {\r\n // id: 107744858,\r\n // hovedteig: false,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '107744858',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9729267335931, 63.5949212431166],\r\n // [10.9722150423382, 63.5948686242694],\r\n // [10.9722835549966, 63.5946469205232],\r\n // [10.9712237401562, 63.5946123649829],\r\n // [10.9710241451419, 63.5943647156282],\r\n // [10.9704831313479, 63.594360200379],\r\n // [10.9698898835984, 63.5943554121221],\r\n // [10.9699518069936, 63.5940615292544],\r\n // [10.9694670643573, 63.5934684658237],\r\n // [10.9699429648739, 63.5930477945596],\r\n // [10.970107235606, 63.5929424763305],\r\n // [10.9704583486998, 63.5927900643882],\r\n // [10.9709804131991, 63.5930513336382],\r\n // [10.9722676058771, 63.5935084921333],\r\n // [10.9726552783814, 63.5933804409787],\r\n // [10.9728800763157, 63.5932875750202],\r\n // [10.9741144310684, 63.5932145888489],\r\n // [10.9747967049515, 63.593137155708],\r\n // [10.9755602140881, 63.5931555614137],\r\n // [10.9761360772664, 63.5931222302178],\r\n // [10.9772252301098, 63.5930341576592],\r\n // [10.9771328896583, 63.5928539885847],\r\n // [10.9769458857256, 63.5926169469435],\r\n // [10.9767314754728, 63.5923393437923],\r\n // [10.979446696315, 63.5927628566332],\r\n // [10.9805920043903, 63.592873829382],\r\n // [10.9804723588322, 63.5929071712178],\r\n // [10.9791119954545, 63.5932899764728],\r\n // [10.9781933450021, 63.5935747514985],\r\n // [10.9779537463491, 63.5937648794415],\r\n // [10.9778361878955, 63.5939676904372],\r\n // [10.9777217550135, 63.594259068787],\r\n // [10.9775600066663, 63.594499117398],\r\n // [10.9774091114375, 63.594715494601],\r\n // [10.9772080873767, 63.5949997155114],\r\n // [10.9773154698872, 63.5951147682295],\r\n // [10.9776571768931, 63.5952973386409],\r\n // [10.9781407618527, 63.5955689884163],\r\n // [10.9784812222597, 63.5957856896428],\r\n // [10.9783836224912, 63.5958028351873],\r\n // [10.9767374114896, 63.5956368831387],\r\n // [10.9757608232151, 63.5955297520224],\r\n // [10.9746485562537, 63.5954225948279],\r\n // [10.9744156307743, 63.5953838715608],\r\n // [10.9741703142525, 63.5953728799675],\r\n // [10.9734373847856, 63.5952991022043],\r\n // [10.9736111951688, 63.5949707313937],\r\n // [10.9729267335931, 63.5949212431166],\r\n // ],\r\n // [\r\n // [10.9764944629384, 63.5952243775623],\r\n // [10.9769430068795, 63.5950931428233],\r\n // [10.9767811659282, 63.5950067603745],\r\n // [10.9760167194055, 63.5949232848064],\r\n // [10.9757836207756, 63.594931430048],\r\n // [10.9757198477504, 63.5951309852413],\r\n // [10.9764944629384, 63.5952243775623],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9738788232761 63.5941402917998)',\r\n // },\r\n // },\r\n // },\r\n // {\r\n // id: 107745046,\r\n // hovedteig: false,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '107745046',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9777238198442, 63.5987821258777],\r\n // [10.9769368609163, 63.5987127899384],\r\n // [10.9764099974792, 63.598666444585],\r\n // [10.9763051109454, 63.5986572045052],\r\n // [10.9762149946459, 63.5986370775708],\r\n // [10.9754041675383, 63.5984561092074],\r\n // [10.9749357821425, 63.5983515862978],\r\n // [10.9746637445786, 63.5983539804903],\r\n // [10.9746856254194, 63.5987130588872],\r\n // [10.9747887640981, 63.5987116406606],\r\n // [10.9747894752741, 63.598765497372],\r\n // [10.9749182572786, 63.5987674970847],\r\n // [10.9751375173495, 63.5987762654534],\r\n // [10.9753533217526, 63.5987956289048],\r\n // [10.9753441226073, 63.5990495564327],\r\n // [10.9759723591321, 63.5992200199501],\r\n // [10.9760670996952, 63.5992457394079],\r\n // [10.9759001019761, 63.5996489835308],\r\n // [10.9772518805978, 63.5996921457551],\r\n // [10.9772632125734, 63.5997943361497],\r\n // [10.9768818528935, 63.5998022794845],\r\n // [10.9758951239668, 63.5998242079417],\r\n // [10.9758615985378, 63.6000936426003],\r\n // [10.9741872610351, 63.5999325348207],\r\n // [10.9743151213493, 63.5995228283749],\r\n // [10.97307531191, 63.599454129783],\r\n // [10.9718668003852, 63.59858247076],\r\n // [10.9717915879133, 63.5981748367788],\r\n // [10.9728430824084, 63.5975723533694],\r\n // [10.9737296554946, 63.5975726500499],\r\n // [10.9738745877323, 63.5975633860427],\r\n // [10.9741161202571, 63.5973072525786],\r\n // [10.9746562897501, 63.5966272128955],\r\n // [10.9747936957616, 63.5964484616836],\r\n // [10.9748310557898, 63.5963999169386],\r\n // [10.9747416873333, 63.5963759184414],\r\n // [10.9746561629642, 63.596369553199],\r\n // [10.9745661866365, 63.5963426002962],\r\n // [10.9743830105306, 63.5963352433901],\r\n // [10.9742893287954, 63.5963362620643],\r\n // [10.9742414961694, 63.5963297374801],\r\n // [10.9742146018419, 63.5963198725891],\r\n // [10.974205677307, 63.5962813011832],\r\n // [10.9741816551701, 63.5962692421402],\r\n // [10.9739972575268, 63.5962704304024],\r\n // [10.9739874149915, 63.596268051932],\r\n // [10.9739257079273, 63.5962707854924],\r\n // [10.9738555062752, 63.5962847681959],\r\n // [10.9738308358645, 63.5963389737871],\r\n // [10.9737870008829, 63.596346489168],\r\n // [10.9737368307864, 63.5963353281162],\r\n // [10.9736887594922, 63.5963137240136],\r\n // [10.9735964989442, 63.5962945227718],\r\n // [10.973560145325, 63.5962761691281],\r\n // [10.973525449185, 63.5962410043096],\r\n // [10.9735344101494, 63.5962219381111],\r\n // [10.973593545816, 63.5961646553543],\r\n // [10.9736008430951, 63.5961477666752],\r\n // [10.9735972534714, 63.596113431237],\r\n // [10.9735781293276, 63.5960934941402],\r\n // [10.9735314884196, 63.5960779751993],\r\n // [10.9734537896667, 63.5960710528157],\r\n // [10.9733182672688, 63.5960676183245],\r\n // [10.9732550126728, 63.596062562227],\r\n // [10.9731901915741, 63.5960494476554],\r\n // [10.973124092242, 63.5960440714801],\r\n // [10.9730635418587, 63.59604894344],\r\n // [10.9730324279131, 63.5960567326933],\r\n // [10.9730109549095, 63.5960669032459],\r\n // [10.9729833156872, 63.5960957424488],\r\n // [10.9729816192294, 63.5961207238896],\r\n // [10.9729942030324, 63.5961335687262],\r\n // [10.9713670343014, 63.5960444123982],\r\n // [10.9711215742065, 63.5958421018902],\r\n // [10.9706179892335, 63.5953970741317],\r\n // [10.9705625841678, 63.5953480977838],\r\n // [10.9705749697218, 63.5953173137304],\r\n // [10.9706584768872, 63.5951926340581],\r\n // [10.9707851767378, 63.5951502260728],\r\n // [10.9708085198376, 63.5951525092444],\r\n // [10.972250283735, 63.5952959297551],\r\n // [10.9740987352421, 63.5954774672478],\r\n // [10.9746169687375, 63.5955398297399],\r\n // [10.9759298221843, 63.595678612076],\r\n // [10.9777784562106, 63.5958649481698],\r\n // [10.9788341547043, 63.5959874049314],\r\n // [10.9791156052197, 63.5960308390286],\r\n // [10.9798199166782, 63.5961709693032],\r\n // [10.9827482555326, 63.5967536240379],\r\n // [10.9832262424273, 63.5968454200191],\r\n // [10.9840001910241, 63.5970034217956],\r\n // [10.984297892462, 63.5970483271733],\r\n // [10.9845989131683, 63.5971437309859],\r\n // [10.9852241700585, 63.5973464256291],\r\n // [10.9854464462734, 63.5973938975815],\r\n // [10.985972477546, 63.5975238043958],\r\n // [10.9864241546347, 63.5976051804664],\r\n // [10.9873454399771, 63.5978282803644],\r\n // [10.9877299671276, 63.5979758502233],\r\n // [10.9881555261131, 63.5981652262188],\r\n // [10.9881981683903, 63.5981810652175],\r\n // [10.9881697366316, 63.5981925913065],\r\n // [10.9878244111955, 63.5983322181724],\r\n // [10.987720180622, 63.5983988396606],\r\n // [10.9876563857124, 63.5984554747309],\r\n // [10.9876727615451, 63.598499418807],\r\n // [10.9866474578587, 63.598748016298],\r\n // [10.9859911936133, 63.5987546693334],\r\n // [10.985235184047, 63.5987622493729],\r\n // [10.9843778286706, 63.5986436515916],\r\n // [10.9841443968821, 63.598696613832],\r\n // [10.9819211795566, 63.5992008007717],\r\n // [10.981269046276, 63.5993336025295],\r\n // [10.9810423388799, 63.5991037569085],\r\n // [10.980847952935, 63.5989065931127],\r\n // [10.9805027377699, 63.5988571286029],\r\n // [10.9797498008101, 63.5987494526261],\r\n // [10.9795194562287, 63.5987164474895],\r\n // [10.9781575855334, 63.598521632149],\r\n // [10.9777238198442, 63.5987821258777],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9778719188473 63.5973758749325)',\r\n // },\r\n // },\r\n // },\r\n // ],\r\n // },\r\n // {\r\n // id: 107176900,\r\n // knr: '5037',\r\n // gnr: 223,\r\n // bnr: 32,\r\n // fnr: 0,\r\n // snr: 0,\r\n // bruksnavn: 'HAUGEN',\r\n // utgått: false,\r\n // eiere: [\r\n // {\r\n // id: 1807204,\r\n // navn: 'KIRKNES FRODE',\r\n // postAdresse: {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: 'SOLHAUGVEGEN 165',\r\n // adresselinje3: '7632 ÅSENFJORD',\r\n // landkode: '000',\r\n // navn: null,\r\n // postnummer: '7632',\r\n // poststed: 'ÅSENFJORD',\r\n // gatenavn: null,\r\n // bokstav: null,\r\n // nummer: null,\r\n // undernummer: null,\r\n // },\r\n // fornavn: 'FRODE',\r\n // etternavn: 'KIRKNES',\r\n // personStatusKode: 'B',\r\n // personnummer: null,\r\n // erDød: false,\r\n // organisasjonsnummer: null,\r\n // slettetDato: null,\r\n // nummer: null,\r\n // personIdKode: null,\r\n // personKategoriKode: null,\r\n // },\r\n // ],\r\n // addresser: [\r\n // {\r\n // id: 0,\r\n // adresselinje1: null,\r\n // adresselinje2: null,\r\n // adresselinje3: null,\r\n // landkode: null,\r\n // navn: 'Solhaugvegen 165',\r\n // postnummer: '7632',\r\n // poststed: 'ÅSENFJORD',\r\n // gatenavn: 'Solhaugvegen',\r\n // bokstav: null,\r\n // nummer: 165,\r\n // undernummer: null,\r\n // },\r\n // ],\r\n // teiger: [\r\n // {\r\n // id: 107746210,\r\n // hovedteig: true,\r\n // feature: {\r\n // type: 'Feature',\r\n // id: '107746210',\r\n // geometry: {\r\n // type: 'Polygon',\r\n // coordinates: [\r\n // [\r\n // [10.9704831313479, 63.594360200379],\r\n // [10.9710241451419, 63.5943647156282],\r\n // [10.9712237401562, 63.5946123649829],\r\n // [10.9712480910102, 63.594646684782],\r\n // [10.9705058029817, 63.5945794488538],\r\n // [10.9704831313479, 63.594360200379],\r\n // ],\r\n // ],\r\n // },\r\n // properties: {\r\n // reppkt: 'POINT(10.9708871611726 63.5945614128263)',\r\n // },\r\n // },\r\n // },\r\n // ],\r\n // },\r\n // ];\r\n}\r\n","import { IPersonMe } from '../idporten';\r\n\r\nexport class Person {\r\n static personMe: IPersonMe = {\r\n id: 5679490,\r\n navn: 'KIRKNES KARI',\r\n postAdresse: {\r\n id: 0,\r\n adresselinje1: null,\r\n adresselinje2: 'Åsensentret 1',\r\n adresselinje3: '7630 ÅSEN',\r\n landkode: '000',\r\n navn: null,\r\n postnummer: '7630',\r\n poststed: 'ÅSEN',\r\n gatenavn: null,\r\n bokstav: null,\r\n nummer: null,\r\n undernummer: null,\r\n },\r\n fornavn: 'KARI',\r\n etternavn: 'KIRKNES',\r\n personStatusKode: 'B',\r\n personnummer: null,\r\n erDød: false,\r\n organisasjonsnummer: null,\r\n slettetDato: null,\r\n nummer: null,\r\n personIdKode: null,\r\n personKategoriKode: null,\r\n };\r\n}\r\n","import { Component, OnInit, OnDestroy, HostBinding } from '@angular/core';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n ELogin, ESessionStorageId\r\n} from '@isygis/isy-configs';\r\nimport { IsyLoginService } from '../isy-login.service';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyMapService, MapLibNgService } from '@isygis/isy-map';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { KeycloakService } from 'keycloak-angular';\r\n\r\n// import { IsyKeycloakService } from '@isygis/isy-keycloak';\r\n\r\n@Component({\r\n selector: 'lib-isy-kc',\r\n templateUrl: './isy-kc.component.html',\r\n styleUrls: ['./isy-kc.component.scss', '../isy-login.component.scss'],\r\n animations: [pageAnimation],\r\n})\r\nexport class IsyKcComponent implements OnInit, OnDestroy {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n sessionStorageServiceSubscription = new Subscription();\r\n subscription = new Subscription();\r\n userName;\r\n\r\n constructor(\r\n private sessionStorageService: SessionStorageService,\r\n private loginService: IsyLoginService,\r\n private toasterService: IsyToasterService,\r\n private commonService: IsyCommonService,\r\n private mapService: IsyMapService,\r\n private mapLibNgService: MapLibNgService,\r\n private keycloak: KeycloakService // private keycloakService: IsyKeycloakService\r\n ) {}\r\n\r\n loginInProgress$ = this.loginService.loginInProgess$;\r\n // activeLoginType;\r\n\r\n ngOnInit(): void {\r\n this.sessionStorageServiceSubscription.add(\r\n this.sessionStorageService\r\n .observe(ELogin.USERISLOGGEDIN)\r\n .subscribe(() => { \r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME); \r\n })\r\n );\r\n this.subscription.add(\r\n this.commonService.kcLoginActive$.subscribe((value) => { \r\n if (value) {\r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME); \r\n }\r\n })\r\n );\r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.sessionStorageServiceSubscription.unsubscribe();\r\n // this.loginTypeSubscription.unsubscribe();\r\n }\r\n\r\n logOutKeycloak(): void {\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.sessionStorageService.clear(ESessionStorageId.ACTIVENAVBAR);\r\n this.sessionStorageService.clear(ELogin.USERNAME);\r\n this.sessionStorageService.clear(ELogin.EMAIL);\r\n this.sessionStorageService.clear(ELogin.RESOURCES);\r\n this.sessionStorageService.clear(ELogin.USERISLOGGEDIN);\r\n // this.sessionStorageService.clear('realm');\r\n // this.sessionStorageService.clear('clientid');\r\n // this.sessionStorageService.clear('realmaddress');\r\n localStorage.removeItem('realm');\r\n localStorage.removeItem('clientid');\r\n localStorage.removeItem('realmaddress');\r\n localStorage.removeItem(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.loginService.setActiveLoginType(undefined);\r\n this.commonService.setKcLoginActive(false);\r\n this.commonService.setKcUsed(false);\r\n this.mapService.initProjectList();\r\n this.mapLibNgService.map().setIsyToken('', undefined);\r\n this.keycloak.logout();\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n","import { Component, OnInit, OnDestroy, HostBinding } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { IsyLoginService, ILoginType } from './isy-login.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport {\r\n ELogin,\r\n ELoginType,\r\n EMainMenuNavBar,\r\n ESessionStorageId,\r\n} from '@isygis/isy-configs';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { OidcSecurityService } from 'angular-auth-oidc-client';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-login',\r\n templateUrl: './isy-login.component.html',\r\n styleUrls: ['./isy-login.component.scss'],\r\n animations: [pageAnimation],\r\n})\r\nexport class IsyLoginComponent implements OnInit, OnDestroy {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n subscription: Subscription = new Subscription();\r\n projectConfig: IProjectConfig;\r\n // config: IConfigJson = this.mapService.getConfig();\r\n // idPortenConfigId = '';\r\n\r\n loginTypes: ILoginType[] = [\r\n {\r\n id: ELoginType.KEYCLOAK,\r\n name: 'continueWithKeycloak',\r\n description: 'keycloakDescription',\r\n icon: fontAwesomeIcons.faKey,\r\n isVisible: false,\r\n },\r\n {\r\n id: ELoginType.IDPORTEN,\r\n name: 'continueWithIDPort',\r\n description: 'idPortenDescription',\r\n icon: fontAwesomeIcons.faHome,\r\n isVisible: false,\r\n },\r\n {\r\n id: ELoginType.ADFS,\r\n name: 'continueWithMicrosoft',\r\n description: 'microsoftDescription',\r\n icon: fontAwesomeIcons.faWindows,\r\n isVisible: false,\r\n },\r\n {\r\n id: ELoginType.ISYUSERADMIN,\r\n name: 'continueAsDifferentUser',\r\n description: 'differentUserDescription',\r\n icon: fontAwesomeIcons.faUser,\r\n isVisible: false,\r\n },\r\n ];\r\n\r\n activeLoginType: ILoginType = undefined;\r\n idLoginActive = false;\r\n adfsLoginActive = false;\r\n kcLoginActive = false;\r\n\r\n constructor(\r\n private loginService: IsyLoginService,\r\n private sessionStorageService: SessionStorageService,\r\n private mapService: IsyMapService,\r\n public oidcSecurityService: OidcSecurityService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapService.projectConfig$.subscribe(\r\n (projectConfig: IProjectConfig) => {\r\n this.projectConfig = projectConfig;\r\n if (!projectConfig) return;\r\n if (projectConfig.config.project.isyuseradmin) {\r\n const loginTypeUserAdmin = this.loginTypes.find(\r\n (l) => l.id === ELoginType.ISYUSERADMIN\r\n );\r\n loginTypeUserAdmin.isVisible = true;\r\n }\r\n if (projectConfig.config.project.useadfs) {\r\n const loginTypeDFS = this.loginTypes.find(\r\n (l) => l.id === ELoginType.ADFS\r\n );\r\n loginTypeDFS.isVisible = true;\r\n }\r\n if (projectConfig.config.project.useidporten) {\r\n const loginTypeIDporten = this.loginTypes.find(\r\n (l) => l.id === ELoginType.IDPORTEN\r\n );\r\n loginTypeIDporten.isVisible = true;\r\n }\r\n if (projectConfig.config.project.usekeycloak === 'true') {\r\n const loginTypeKeycloak = this.loginTypes.find(\r\n (l) => l.id === ELoginType.KEYCLOAK\r\n );\r\n // this.commonService.setKcUsed(true);\r\n loginTypeKeycloak.isVisible = true;\r\n }\r\n }\r\n )\r\n );\r\n\r\n this.subscription.add(\r\n this.loginService.activeLoginType$.subscribe((loginType) => {\r\n this.activeLoginType = loginType;\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.commonService.idLogginActive$.subscribe((value) => {\r\n this.idLoginActive = value;\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.commonService.adfsLoginActive$.subscribe((value) => {\r\n this.adfsLoginActive = value;\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.commonService.kcLoginActive$.subscribe((value) => {\r\n this.kcLoginActive = value;\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.sessionStorageService\r\n .observe(ESessionStorageId.LOGINTYPEINPROGRESS)\r\n .subscribe((value) => {\r\n this.loginService.setActiveLoginType(\r\n value ? this.loginTypes.find((l) => l.id === value) : undefined\r\n );\r\n })\r\n );\r\n\r\n const loginTypeInProgress = this.sessionStorageService.retrieve(\r\n ESessionStorageId.LOGINTYPEINPROGRESS\r\n );\r\n this.loginService.setActiveLoginType(\r\n loginTypeInProgress\r\n ? this.loginTypes.find((l) => l.id === loginTypeInProgress)\r\n : undefined\r\n );\r\n // if (this.config) {\r\n // if (this.config?.environment === 'test') {\r\n // this.idPortenConfigId = 'idporten-test';\r\n // } else {\r\n // this.idPortenConfigId = 'idporten-prod';\r\n // }\r\n // }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n loginWithLoginType(loginType: ILoginType): void {\r\n this.loginService.setActiveLoginType(loginType);\r\n if (loginType === undefined) {\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n }\r\n if (this.activeLoginType && this.activeLoginType.id === ELoginType.ADFS) {\r\n this.sessionStorageService.store(\r\n ESessionStorageId.ACTIVENAVBAR,\r\n EMainMenuNavBar.LOGIN\r\n );\r\n this.sessionStorageService.store(\r\n ESessionStorageId.LOGINTYPEINPROGRESS,\r\n ELoginType.ADFS\r\n );\r\n }\r\n if (\r\n this.activeLoginType &&\r\n this.activeLoginType.id === ELoginType.IDPORTEN\r\n ) {\r\n // this.oidcSecurityService.authorize(this.idPortenConfigId);\r\n this.oidcSecurityService.authorize();\r\n\r\n this.sessionStorageService.store(\r\n ELogin.IDPORTENPOSTREDIRECTURL,\r\n window.location.href\r\n );\r\n this.sessionStorageService.store(\r\n ESessionStorageId.LOGINTYPEINPROGRESS,\r\n ELoginType.IDPORTEN\r\n );\r\n }\r\n if (\r\n this.activeLoginType &&\r\n this.activeLoginType.id === ELoginType.KEYCLOAK\r\n ) {\r\n this.sessionStorageService.store(\r\n ESessionStorageId.LOGINTYPEINPROGRESS,\r\n ELoginType.KEYCLOAK\r\n );\r\n localStorage.setItem(ESessionStorageId.LOGINTYPEINPROGRESS, ELoginType.KEYCLOAK);\r\n this.sessionStorageService.store(\r\n ESessionStorageId.ACTIVENAVBAR,\r\n EMainMenuNavBar.LOGIN\r\n );\r\n // this.sessionStorageService.store(\r\n // 'realm',\r\n // this.projectConfig.config.project.isykeycloakrealm\r\n // );\r\n // this.sessionStorageService.store(\r\n // 'clientid',\r\n // this.projectConfig.config.project.isykeycloakclientid\r\n // );\r\n // this.sessionStorageService.store(\r\n // 'realmaddress',\r\n // this.projectConfig.config.project.isykeycloakaddress\r\n // );\r\n localStorage.setItem('realm', this.projectConfig.config.project.isykeycloakrealm);\r\n localStorage.setItem('clientid', this.projectConfig.config.project.isykeycloakclientid);\r\n localStorage.setItem('realmaddress', this.projectConfig.config.project.isykeycloakaddress);\r\n window.location.reload();\r\n }\r\n }\r\n}\r\n","
    \r\n
      \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n {{loginType.name | translate }}\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n

      {{loginType.description | translate}}

      \r\n
    • \r\n
      \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    ","import {\r\n Directive,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n AfterContentInit,\r\n Optional,\r\n} from '@angular/core';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport {\r\n MsalService,\r\n} from '@azure/msal-angular';\r\nimport {\r\n RedirectRequest, EventType, AccountInfo, AuthenticationResult\r\n} from '@azure/msal-browser';\r\nimport {\r\n IsyMapService,\r\n IsyMapEmitterService,\r\n} from '@isygis/isy-map';\r\nimport {\r\n EMainMenuNavBar,\r\n ESessionStorageId,\r\n ELoginType,\r\n ELogin,\r\n} from '@isygis/isy-configs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map, take, switchMap, catchError } from 'rxjs/operators';\r\nimport { combineLatest, Subscription, interval, of } from 'rxjs';\r\nimport { LoginResponse, OidcSecurityService } from 'angular-auth-oidc-client';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IConfigJson, IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Directive({\r\n selector: '[libIsyLogin]',\r\n})\r\nexport class IsyLoginDirective implements OnInit, OnDestroy, AfterContentInit {\r\n @Input() adLoginType;\r\n\r\n projectConfig;\r\n toasterTimer;\r\n subscription = new Subscription();\r\n touchTokenSubscription = new Subscription();\r\n getIsytokenSubscription = new Subscription();\r\n mapLoadSubscription: Subscription = Subscription.EMPTY;\r\n\r\n projectConfig$ = this.mapService.projectConfig$;\r\n generalConfig$ = this.mapEmitterService.configLoadEmitter$;\r\n getIsyToken$ = this.generalConfig$.pipe(\r\n switchMap((config) => {\r\n if (config) {\r\n const userAdmin = config.geoinnsynAuth;\r\n // Initialize spinner while fetching isytoken.\r\n this.commonService.setShowMainSpinner(true);\r\n // Display blue toaster if it takes more than x seconds to fetch isytoken.\r\n if (!this.toasterTimer) {\r\n this.toasterTimer = setTimeout(() => {\r\n this.toasterService.info(\r\n this.translateService.instant('load_fetch_isytoken'),\r\n this.translateService.instant('please_wait')\r\n );\r\n }, 4000);\r\n }\r\n\r\n return this.httpClient\r\n .get(userAdmin)\r\n .pipe(take(1), catchError(this.handleErrorWithPromise.bind(this)));\r\n } else {\r\n return Promise.resolve({});\r\n }\r\n })\r\n );\r\n\r\n private config$ = this.mapEmitterService.configLoadEmitter$;\r\n touchToken$ = combineLatest([this.config$]).pipe(\r\n switchMap(([config]: [IConfigJson]) => {\r\n if (config && this.projectConfig) {\r\n const project = this.projectConfig.config.project;\r\n const formData = new FormData();\r\n formData.append('instance', config.instance);\r\n formData.append(\r\n 'token',\r\n this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n );\r\n return this.httpClient\r\n .post(project.isyauth + '/authjson/touchtoken', formData)\r\n .pipe(\r\n map((value) => {\r\n return value;\r\n })\r\n );\r\n }\r\n return Promise.resolve();\r\n })\r\n );\r\n\r\n checkIDPortenAuth$ = this.oidcSecurityService ? this.oidcSecurityService.checkAuth() : of(null);\r\n\r\n idPortenLoginWithIdToken$ = combineLatest([\r\n this.checkIDPortenAuth$,\r\n this.config$,\r\n ]).pipe(\r\n switchMap(([checkIDPortenAuth, config]: [LoginResponse, IConfigJson]) => {\r\n if (checkIDPortenAuth.isAuthenticated && config) {\r\n this.commonService.setIdPortenUsed(true);\r\n this.commonService.setIdPortenToken(checkIDPortenAuth.idToken);\r\n return this.httpClient\r\n .get(\r\n config.externalServices.idporten +\r\n 'Authorization/Login?idToken=' +\r\n checkIDPortenAuth.idToken, { withCredentials: true }\r\n )\r\n .pipe(catchError(this.handleErrorWithPromise.bind(this)));\r\n } else {\r\n return Promise.resolve();\r\n }\r\n })\r\n );\r\n\r\n \r\n // matrikkelPersonMe$ = this.idPortenService.matrikkelPersonMe$;\r\n\r\n // loginViaIdPorten$ = combineLatest([this.idPortenLoginWithIdToken$, this.matrikkelPersonMe$]).pipe(\r\n // map(([idPortenLoginWithIdToken, matrikkelPersonMe]: [any, IPersonMe]) => {\r\n // if (idPortenLoginWithIdToken === null) {\r\n // console.log('Matrikkel person me: ', matrikkelPersonMe);\r\n // }\r\n // })\r\n // );\r\n\r\n constructor(\r\n private authService: MsalService,\r\n private sessionStorageService: SessionStorageService,\r\n private mapService: IsyMapService,\r\n private httpClient: HttpClient,\r\n private mapEmitterService: IsyMapEmitterService,\r\n @Optional() public oidcSecurityService: OidcSecurityService,\r\n private commonService: IsyCommonService,\r\n private toasterService: IsyToasterService,\r\n private translateService: IsyTranslateService // private idPortenService: IsyIdPortenService\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n if (this.oidcSecurityService) {\r\n this.handleIdPortenLoginWithIdToken();\r\n } \r\n this.handleProjectConfig();\r\n this.handleAdLoginType();\r\n this.handleUrlRedirect();\r\n this.handleLoginTypeInProgress();\r\n this.handlePageReload();\r\n this.handleLoginType();\r\n }\r\n\r\n private handleIdPortenLoginWithIdToken(): void {\r\n this.subscription.add(\r\n this.idPortenLoginWithIdToken$.subscribe((value) => {\r\n if (value !== false) {\r\n this.handleIdPortenRedirect();\r\n }\r\n })\r\n );\r\n }\r\n\r\n private handleIdPortenRedirect(): void {\r\n const postRedirectUrl = this.sessionStorageService.retrieve(ELogin.IDPORTENPOSTREDIRECTURL);\r\n if (postRedirectUrl) {\r\n this.sessionStorageService.store(ESessionStorageId.ACTIVENAVBAR, EMainMenuNavBar.LOGIN);\r\n this.sessionStorageService.store(ESessionStorageId.SIDENAVOPEN, true);\r\n window.location.href = postRedirectUrl;\r\n this.sessionStorageService.clear(ELogin.IDPORTENPOSTREDIRECTURL);\r\n }\r\n }\r\n\r\n private handleProjectConfig(): void {\r\n this.subscription.add(\r\n this.mapService.projectConfig$.subscribe(\r\n (projectConfig: IProjectConfig) => {\r\n this.projectConfig = projectConfig;\r\n }\r\n )\r\n );\r\n }\r\n\r\n private handleAdLoginType(): void {\r\n if (this.adLoginType === 'auto') {\r\n this.sessionStorageService.store(ESessionStorageId.LOGINTYPEINPROGRESS, ELoginType.ADFS);\r\n }\r\n }\r\n\r\n private handleUrlRedirect(): void {\r\n const urlRedirect = this.sessionStorageService.retrieve(ELogin.URLREDIRECT);\r\n if (urlRedirect && window.location.href !== urlRedirect) {\r\n window.location.href = urlRedirect;\r\n this.sessionStorageService.clear(ELogin.URLREDIRECT);\r\n }\r\n }\r\n private handleLoginTypeInProgress(): void {\r\n this.subscription.add(\r\n this.sessionStorageService\r\n .observe(ESessionStorageId.LOGINTYPEINPROGRESS)\r\n .subscribe((value) => {\r\n if (value === ELoginType.ADFS) {\r\n this.sessionStorageService.store(\r\n ESessionStorageId.LOGININPROGRESS,\r\n true\r\n );\r\n this.touchTokenSubscription.unsubscribe();\r\n this.touchTokenSubscription = new Subscription();\r\n this.getIsytokenSubscription.unsubscribe();\r\n this.getIsytokenSubscription = new Subscription();\r\n this.loginAzureManualDirective();\r\n }\r\n if (value === ELoginType.ISYUSERADMIN) {\r\n this.holdTokenActive();\r\n }\r\n if (!value) {\r\n this.logOut();\r\n }\r\n })\r\n );\r\n }\r\n\r\n private handlePageReload(): void {\r\n const loginTypeInProgress = this.sessionStorageService.retrieve(\r\n ESessionStorageId.LOGINTYPEINPROGRESS\r\n );\r\n const loginInProgress = this.sessionStorageService.retrieve(\r\n ESessionStorageId.LOGININPROGRESS\r\n );\r\n\r\n if (!loginInProgress) {\r\n // this.subscription.add(\r\n this.mapLoadSubscription =\r\n this.mapEmitterService.mapLoadEmitter$.subscribe((value) => {\r\n if (value) {\r\n const isyToken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n if (isyToken) {\r\n if (\r\n loginTypeInProgress === ELoginType.ADFS ||\r\n loginTypeInProgress === ELoginType.ISYUSERADMIN\r\n ) {\r\n this.touchToken();\r\n }\r\n }\r\n this.mapLoadSubscription.unsubscribe();\r\n }\r\n })\r\n // );\r\n }\r\n }\r\n\r\n private handleLoginType(): void {\r\n const loginTypeInProgress = this.sessionStorageService.retrieve(\r\n ESessionStorageId.LOGINTYPEINPROGRESS\r\n );\r\n\r\n if (loginTypeInProgress === ELoginType.ADFS) {\r\n this.loginAzureManualDirective();\r\n }\r\n\r\n if (loginTypeInProgress === ELoginType.ISYUSERADMIN) {\r\n const isyToken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n if (isyToken) {\r\n this.commonService.setIsyTokenToMaplibNg(isyToken);\r\n }\r\n this.holdTokenActive();\r\n }\r\n\r\n if (loginTypeInProgress === ELoginType.IDPORTEN) {\r\n this.commonService.setIdLogginActive(true);\r\n this.sessionStorageService.store(ELogin.USERISLOGGEDIN, true);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private loginAzureManualDirective(): void {\r\n const accounts = this.authService.instance.getAllAccounts();\r\n if (accounts.length > 0) {\r\n this.commonService.setAdfsLoginActive(true);\r\n this.acquireToken(accounts[0]);\r\n }\r\n\r\n this.addEventCallback();\r\n this.handleAuthRedirect();\r\n }\r\n\r\n private acquireToken(account: AccountInfo): void {\r\n this.subscription.add(\r\n this.authService\r\n .acquireTokenSilent({\r\n scopes: ['User.Read'],\r\n account: account,\r\n })\r\n .subscribe({\r\n next: () => this.handleSuccessfulTokenAcquisition(account),\r\n error: error => console.error('Failed to acquire token', error)\r\n })\r\n );\r\n }\r\n\r\n private handleSuccessfulTokenAcquisition(account: AccountInfo): void {\r\n // console.log('acquireTokenSilent');\r\n this.authService.instance.setActiveAccount(account);\r\n this.storeUserInfoInSession(account);\r\n this.handleIsyToken();\r\n }\r\n\r\n private storeUserInfoInSession(account: AccountInfo): void {\r\n this.sessionStorageService.store(ELogin.USERNAME, account.name);\r\n this.sessionStorageService.store(ELogin.EMAIL, account.username);\r\n this.sessionStorageService.store(ELogin.USERISLOGGEDIN, true);\r\n }\r\n\r\n private handleIsyToken(): void {\r\n const isyToken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n if (!isyToken) {\r\n this.getIsyToken();\r\n } else {\r\n this.commonService.setIsyTokenToMaplibNg(isyToken);\r\n this.holdTokenActive();\r\n this.mapService.initProjectList();\r\n }\r\n }\r\n\r\n private addEventCallback(): void {\r\n this.authService.instance.addEventCallback((event) => {\r\n if (\r\n (event.eventType === EventType.LOGIN_SUCCESS ||\r\n event.eventType === EventType.ACQUIRE_TOKEN_SUCCESS) &&\r\n event.payload.account\r\n ) {\r\n this.handleSuccessfulEventCallback(event.payload.account);\r\n } else if (\r\n event.EventType === EventType.ACQUIRE_TOKEN_FAILURE ||\r\n event.EventType === EventType.LOGIN_FAILURE\r\n ) {\r\n this.logoutAzure();\r\n }\r\n });\r\n }\r\n\r\n private handleSuccessfulEventCallback(account: AccountInfo): void {\r\n this.commonService.setAdfsLoginActive(true);\r\n this.authService.instance.setActiveAccount(account);\r\n this.storeUserInfoInSession(account);\r\n if (!this.sessionStorageService.retrieve(ELogin.TOKEN)) {\r\n this.getIsyToken();\r\n }\r\n this.sessionStorageService.clear(ESessionStorageId.LOGININPROGRESS);\r\n }\r\n\r\n private handleAuthRedirect(): void {\r\n this.authService.instance\r\n .handleRedirectPromise()\r\n .then((authResult) => this.handleSuccessfulRedirect(authResult))\r\n .catch((err) => console.log(err));\r\n }\r\n\r\n private handleSuccessfulRedirect(authResult: AuthenticationResult): void {\r\n if (\r\n authResult &&\r\n authResult.state &&\r\n window.location.href !== authResult.state\r\n ) {\r\n window.location.href = authResult.state;\r\n } \r\n const account = this.authService.instance.getActiveAccount();\r\n \r\n if (!account) {\r\n this.redirectAnonymousUser();\r\n } \r\n }\r\n\r\n private redirectAnonymousUser(): void {\r\n const loginHasBeenCalled = this.sessionStorageService.retrieve(ELogin.LOGINHASBEENCALLED);\r\n if (loginHasBeenCalled === null) {\r\n const instance = this.authService.instance.getConfiguration();\r\n if (instance.auth.authority === '') {\r\n window.location.reload();\r\n } else {\r\n const args: RedirectRequest = {\r\n scopes: ['user.read'],\r\n state: window.location.href, // set state parameter (type: string)\r\n prompt: 'select_account',\r\n };\r\n this.authService.instance.loginRedirect(args);\r\n this.sessionStorageService.store(ELogin.LOGINHASBEENCALLED, 'true');\r\n }\r\n } else {\r\n const args: RedirectRequest = {\r\n scopes: ['user.read'],\r\n state: window.location.href, // set state parameter (type: string)\r\n // prompt: 'select_account',\r\n };\r\n this.authService.instance.loginRedirect(args);\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n // check if side nav should be open\r\n const sideNavOpen = this.sessionStorageService.retrieve(\r\n ESessionStorageId.SIDENAVOPEN\r\n );\r\n if (sideNavOpen) {\r\n this.commonService.hideSideNav(false);\r\n }\r\n const activeNavBar = this.sessionStorageService.retrieve(\r\n ESessionStorageId.ACTIVENAVBAR\r\n );\r\n if (activeNavBar && activeNavBar === EMainMenuNavBar.LOGIN) {\r\n this.commonService.setActiveNavBarId(EMainMenuNavBar.LOGIN);\r\n }\r\n }\r\n\r\n private getIsyToken(): void {\r\n this.getIsytokenSubscription.add(\r\n this.getIsyToken$.subscribe((value) => {\r\n clearTimeout(this.toasterTimer);\r\n if (Object.keys(value).length > 0) {\r\n this.commonService.setShowMainSpinner(false);\r\n this.sessionStorageService.clear(ELogin.URLREDIRECT);\r\n this.sessionStorageService.store(ELogin.TOKEN, value['isyToken']);\r\n this.sessionStorageService.store(\r\n ELogin.RESOURCES,\r\n value['resources']\r\n );\r\n this.commonService.setIsyTokenToMaplibNg(value['isyToken']);\r\n this.holdTokenActive();\r\n this.mapService.initProjectList();\r\n this.toasterService.success(\r\n this.translateService.instant('login_success')\r\n );\r\n this.commonService.setIframeSessionLogout(false);\r\n this.getIsytokenSubscription.unsubscribe();\r\n this.sessionStorageService.clear(ELogin.LOGINHASBEENCALLED);\r\n } else {\r\n // Failed to fetch isy token - log out\r\n // this.sessionStorageService.clear(ELogin.USERISLOGGEDIN);\r\n // TODO: Show blue toaster if it takes too long. \r\n setTimeout(() => {\r\n if (Object.keys(value).length > 0) {\r\n this.toasterService.error(\r\n this.translateService.instant('fail_fetch_isytoken'),\r\n this.translateService.instant('error')\r\n );\r\n this.commonService.setShowMainSpinner(false);\r\n this.logoutAzure();\r\n this.sessionStorageService.clear(ELogin.LOGINHASBEENCALLED);\r\n } \r\n }, 4000);\r\n }\r\n })\r\n );\r\n }\r\n\r\n private holdTokenActive(): void {\r\n const source = interval(60 * 1000 * 10); // touch each 10 minute\r\n this.touchTokenSubscription.unsubscribe();\r\n this.touchTokenSubscription = new Subscription();\r\n this.touchTokenSubscription.add(\r\n source.subscribe(() => {\r\n // this.touchTokenSubscription.add(\r\n this.touchToken();\r\n // );\r\n })\r\n );\r\n }\r\n\r\n private touchToken(): void {\r\n this.touchToken$\r\n .pipe(\r\n map((value) => {\r\n // console.log(\r\n // 'Touch token: ',\r\n // value,\r\n // ', timestamp: ',\r\n // Math.floor(Date.now() / 1000)\r\n // );\r\n if (value === false) {\r\n if (\r\n this.sessionStorageService.retrieve(\r\n ESessionStorageId.LOGINTYPEINPROGRESS\r\n ) === ELoginType.ADFS\r\n ) {\r\n this.logoutAzure();\r\n } else {\r\n this.logOut();\r\n }\r\n } else {\r\n if (\r\n this.sessionStorageService.retrieve(\r\n ESessionStorageId.LOGINTYPEINPROGRESS\r\n ) === ELoginType.ADFS\r\n ) {\r\n const accounts = this.authService.instance.getAllAccounts();\r\n // this.subscription.add(\r\n this.authService\r\n .acquireTokenSilent({\r\n scopes: [],\r\n account: accounts[0],\r\n })\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n // console.log('acquireTokenSilent fra touch token');\r\n });\r\n // );\r\n }\r\n }\r\n }),\r\n take(1)\r\n )\r\n .subscribe();\r\n }\r\n\r\n private logOut(): void {\r\n this.sessionStorageService.store(ELogin.URLREDIRECT, window.location.href);\r\n this.sessionStorageService.clear(ELogin.USERNAME);\r\n this.sessionStorageService.clear(ELogin.EMAIL);\r\n this.sessionStorageService.clear(ELogin.TOKEN);\r\n this.sessionStorageService.clear(ELogin.RESOURCES);\r\n this.sessionStorageService.clear(ELogin.USERISLOGGEDIN);\r\n this.commonService.setIsyTokenToMaplibNg('');\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.sessionStorageService.clear(ESessionStorageId.LOGININPROGRESS);\r\n this.sessionStorageService.clear(ESessionStorageId.ACTIVENAVBAR);\r\n this.touchTokenSubscription.unsubscribe();\r\n this.touchTokenSubscription = new Subscription();\r\n this.getIsytokenSubscription.unsubscribe();\r\n this.getIsytokenSubscription = new Subscription();\r\n this.sessionStorageService.clear(ELogin.LOGINHASBEENCALLED);\r\n }\r\n\r\n private logoutAzure(): void {\r\n this.authService.logout();\r\n this.logOut();\r\n this.commonService.setAdfsLoginActive(false);\r\n }\r\n\r\n private handleErrorWithPromise(err): any {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n // errorMessage = `${this.translateService.instant('backend_return_code')} ${err.status}: ${err.name}`;\r\n console.log('errorMsg: ', errorMessage);\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n // this.toasterService.error(errorMessage, this.translateService.instant('error'));\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { IsyLoginComponent } from './isy-login.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { IsyToasterModule } from '@isygis/isy-toaster';\r\n\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { IsyLoginDirective } from './isy-login.directive';\r\nimport { IsyUserAdminComponent } from './isy-user-admin/isy-user-admin.component';\r\nimport { IsyMsalComponent } from './isy-msal/isy-msal.component';\r\nimport { IsyIdPortenComponent } from './isy-id-porten/isy-id-porten.component';\r\nimport { IsyUserPropertiesComponent } from './isy-id-porten/isy-user-properties/isy-user-properties.component';\r\nimport { IsyIdPortenPrintNeighborComponent } from './isy-id-porten/isy-id-porten-print-neighbor/isy-id-porten-print-neighbor.component';\r\nimport { IsyUtilsModule } from '@isygis/isy-utils';\r\nimport { IsyPrintModule } from '@isygis/isy-print';\r\nimport { IsyKcComponent } from './isy-kc/isy-kc.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n HttpClientModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n IsySpinnerModule,\r\n IsyToasterModule.forRoot(),\r\n IsyUtilsModule,\r\n IsyPrintModule,\r\n ],\r\n declarations: [\r\n IsyLoginComponent,\r\n IsyLoginDirective,\r\n IsyUserAdminComponent,\r\n IsyMsalComponent,\r\n IsyIdPortenComponent,\r\n IsyUserPropertiesComponent,\r\n IsyIdPortenPrintNeighborComponent,\r\n IsyKcComponent,\r\n ],\r\n exports: [IsyLoginComponent, IsyLoginDirective],\r\n})\r\nexport class IsyLoginModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n IsyMapService,\r\n IsyMapEmitterService,\r\n} from '@isygis/isy-map';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { combineLatest, BehaviorSubject } from 'rxjs';\r\nimport { map, switchMap, catchError } from 'rxjs/operators';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IConfigJson, IProjectConfig } from '@isygis/isymap-config';\r\n\r\nexport interface ILoginType {\r\n id: string;\r\n icon: IconDefinition;\r\n name: string;\r\n description?: string;\r\n isVisible: boolean;\r\n}\r\nexport interface IUser {\r\n userName: string;\r\n password: string;\r\n}\r\n\r\nexport class User implements IUser {\r\n userName: string;\r\n password: string;\r\n constructor(userName: string, password: string) {\r\n this.userName = userName;\r\n this.password = password;\r\n }\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyLoginService {\r\n constructor(\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private toasterService: IsyToasterService,\r\n private translateService: IsyTranslateService,\r\n private sessionStorageService: SessionStorageService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n private config$ = this.mapEmitterService.configLoadEmitter$;\r\n private projectConfig$ = this.mapService.projectConfig$;\r\n private loginParamAction = new BehaviorSubject(undefined);\r\n private tryToLoginAgain = new BehaviorSubject(false);\r\n private loginInProgessAction = new BehaviorSubject(false);\r\n loginInProgess$ = this.loginInProgessAction.asObservable();\r\n private loginSuccessAction = new BehaviorSubject(false);\r\n private userLoggedInAction = new BehaviorSubject(false);\r\n\r\n private activeLoginTypeAction = new BehaviorSubject(undefined);\r\n activeLoginType$ = this.activeLoginTypeAction.asObservable();\r\n\r\n private getToken$ = combineLatest([this.config$, this.projectConfig$]).pipe(\r\n switchMap(([config, projectConfig]: [IConfigJson, IProjectConfig]) => {\r\n if (config && projectConfig) {\r\n const project = projectConfig.config.project;\r\n const formData = new FormData();\r\n formData.append('instance', config.instance);\r\n return this.httpClient\r\n .post(project.isyauth + '/authjson/readtoken', formData)\r\n .pipe(\r\n map((token: string) => {\r\n return token;\r\n })\r\n );\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n\r\n private loginWithToken$ = combineLatest([\r\n this.getToken$,\r\n this.config$,\r\n this.projectConfig$,\r\n this.loginParamAction,\r\n this.tryToLoginAgain,\r\n ]).pipe(\r\n switchMap(\r\n ([getToken, config, projectConfig, loginParam, tryToLoginAgain]: [\r\n string,\r\n IConfigJson,\r\n IProjectConfig,\r\n IUser,\r\n boolean\r\n ]) => {\r\n if (!getToken || !loginParam) {\r\n return new Promise((resolve) => resolve(false));\r\n }\r\n const project = projectConfig.config.project;\r\n const formData = new FormData();\r\n formData.append('instance', config.instance);\r\n formData.append('token', getToken);\r\n formData.append('username', loginParam.userName);\r\n formData.append('password', loginParam.password);\r\n return this.httpClient\r\n .post(project.isyauth + '/authjson/login', formData)\r\n .pipe(\r\n map((value) => {\r\n const loginValue = Boolean(JSON.parse(value.toLowerCase()));\r\n if (!tryToLoginAgain) {\r\n setTimeout(() => {\r\n this.tryToLoginAgain.next(true);\r\n }, 2000);\r\n }\r\n if (loginValue) {\r\n this.sessionStorageService.store(ELogin.TOKEN, getToken);\r\n this.commonService.setIsyTokenToMaplibNg(getToken);\r\n }\r\n if (tryToLoginAgain && !loginValue) {\r\n this.toasterService.error(\r\n this.translateService.instant('login_error'),\r\n this.translateService.instant('error')\r\n );\r\n this.sessionStorageService.store(ELogin.USERISLOGGEDIN, false);\r\n this.commonService.setShowMainSpinner(false);\r\n this.loginInProgessAction.next(false);\r\n }\r\n this.loginSuccessAction.next(loginValue);\r\n return loginValue;\r\n })\r\n );\r\n }\r\n )\r\n );\r\n\r\n private getUser$ = combineLatest([\r\n this.config$,\r\n this.projectConfig$,\r\n this.loginSuccessAction,\r\n ]).pipe(\r\n switchMap(\r\n ([config, projectConfig, loginSuccessAction]: [\r\n IConfigJson,\r\n IProjectConfig,\r\n boolean\r\n ]) => {\r\n const token = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n const login = loginSuccessAction; // this.sessionStorageService.retrieve(ELogin.USERISLOGGEDIN);\r\n if (token && projectConfig && config && login) {\r\n const project = projectConfig.config.project;\r\n const formData = new FormData();\r\n formData.append('instance', config.instance);\r\n formData.append('token', token);\r\n return this.httpClient\r\n .post(project.isyauth + '/authjson/readuser', formData)\r\n .pipe(\r\n map((value) => {\r\n if (value) {\r\n this.toasterService.success(\r\n this.translateService.instant('login_success')\r\n );\r\n const userName = value['Name']\r\n ? value['Name']\r\n : value['Username'];\r\n const email = value['Email'] ? value['Email'] : '';\r\n this.sessionStorageService.store(ELogin.USERNAME, userName);\r\n this.sessionStorageService.store(ELogin.EMAIL, email);\r\n this.sessionStorageService.store(ELogin.USERISLOGGEDIN, true);\r\n this.mapService.initProjectList();\r\n this.userLoggedInAction.next(true);\r\n this.commonService.setIframeSessionLogout(false);\r\n }\r\n return value;\r\n })\r\n );\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n ),\r\n // tap(result => console.log('Get USER: ', result)),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n\r\n getResourcesForToken$ = combineLatest([\r\n this.config$,\r\n this.projectConfig$,\r\n this.userLoggedInAction,\r\n ]).pipe(\r\n switchMap(\r\n ([config, projectConfig, userLoggedInAction]: [\r\n IConfigJson,\r\n IProjectConfig,\r\n boolean\r\n ]) => {\r\n if (projectConfig && config && userLoggedInAction) {\r\n const token = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n const project = projectConfig.config.project;\r\n const formData = new FormData();\r\n formData.append('instance', config.instance);\r\n formData.append('token', token);\r\n return this.httpClient\r\n .post(project.isyauth + '/authjson/readresourcesfortoken', formData)\r\n .pipe(\r\n map((resources) => {\r\n this.sessionStorageService.store(ELogin.RESOURCES, resources);\r\n this.commonService.setShowMainSpinner(false);\r\n this.loginInProgessAction.next(false);\r\n return true;\r\n })\r\n );\r\n }\r\n return Promise.resolve();\r\n }\r\n ),\r\n // tap(result => console.log('Get RESOURCES: ', result)),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n\r\n login$ = combineLatest([\r\n this.loginWithToken$,\r\n this.getUser$,\r\n this.getResourcesForToken$,\r\n ]).pipe(\r\n map(([loginWithToken, getUser, getResourcesForToken]: [any, any, any]) => {\r\n if (loginWithToken && getUser && getResourcesForToken) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n );\r\n\r\n setLoginParam(user?: IUser): void {\r\n if (!user) {\r\n this.sessionStorageService.clear(ELogin.USERNAME);\r\n this.sessionStorageService.clear(ELogin.EMAIL);\r\n this.sessionStorageService.clear(ELogin.RESOURCES);\r\n this.sessionStorageService.clear(ELogin.TOKEN);\r\n this.sessionStorageService.clear(ELogin.USERISLOGGEDIN);\r\n }\r\n this.loginParamAction.next(user ? user : undefined);\r\n this.loginSuccessAction.next(false);\r\n this.userLoggedInAction.next(false);\r\n this.tryToLoginAgain.next(false);\r\n }\r\n\r\n loginInProgess(value): void {\r\n this.loginInProgessAction.next(value);\r\n }\r\n\r\n private handleErrorWithPromise(err): any {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `${this.translateService.instant(\r\n 'backend_return_code'\r\n )} ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n this.toasterService.error(\r\n errorMessage,\r\n this.translateService.instant('error')\r\n );\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n\r\n setActiveLoginType(loginType: ILoginType): void {\r\n this.activeLoginTypeAction.next(loginType);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport {\r\n ELogin,\r\n ELoginType, ESessionStorageId\r\n} from '@isygis/isy-configs';\r\nimport { IsyLoginService } from '../isy-login.service';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Component({\r\n selector: 'lib-isy-msal',\r\n templateUrl: './isy-msal.component.html',\r\n styleUrls: ['./isy-msal.component.scss', '../isy-login.component.scss'],\r\n})\r\nexport class IsyMsalComponent implements OnInit, OnDestroy {\r\n isAzureLogin = false;\r\n subscription = new Subscription();\r\n\r\n constructor(\r\n private sessionStorageService: SessionStorageService,\r\n private loginService: IsyLoginService,\r\n private authService: MsalService,\r\n private commonService: IsyCommonService,\r\n private mapService: IsyMapService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.loginService.activeLoginType$.subscribe((loginTypeInProgress) => {\r\n this.isAzureLogin = loginTypeInProgress?.id === ELoginType.ADFS;\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n logoutAzure(): void {\r\n this.sessionStorageService.store(ELogin.URLREDIRECT, window.location.href);\r\n this.loginService.setLoginParam();\r\n this.sessionStorageService.clear(ELogin.USERNAME);\r\n this.sessionStorageService.clear(ELogin.EMAIL);\r\n this.sessionStorageService.clear(ELogin.TOKEN);\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.sessionStorageService.clear(ELogin.RESOURCES);\r\n this.sessionStorageService.clear(ESessionStorageId.ACTIVENAVBAR);\r\n this.commonService.setIsyTokenToMaplibNg('');\r\n this.commonService.setAdfsLoginActive(false);\r\n this.authService.logout();\r\n this.mapService.initProjectList();\r\n }\r\n}\r\n","
    \r\n \r\n
    ","import { Component, OnInit, OnDestroy, HostBinding } from '@angular/core';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { Subscription } from 'rxjs';\r\nimport {\r\n ELogin,\r\n ELoginType, ESessionStorageId\r\n} from '@isygis/isy-configs';\r\nimport { IsyLoginService, User } from '../isy-login.service';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Component({\r\n selector: 'lib-isy-user-admin',\r\n templateUrl: './isy-user-admin.component.html',\r\n styleUrls: ['./isy-user-admin.component.scss', '../isy-login.component.scss'],\r\n animations: [pageAnimation],\r\n})\r\nexport class IsyUserAdminComponent implements OnInit, OnDestroy {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n sessionStorageServiceSubscription = new Subscription();\r\n subscription = new Subscription();\r\n // loginTypeSubscription = new Subscription();\r\n userName;\r\n\r\n constructor(\r\n private sessionStorageService: SessionStorageService,\r\n private loginService: IsyLoginService,\r\n private toasterService: IsyToasterService,\r\n private commonService: IsyCommonService,\r\n private mapService: IsyMapService\r\n ) {}\r\n\r\n loginInProgress$ = this.loginService.loginInProgess$;\r\n // activeLoginType;\r\n\r\n ngOnInit(): void {\r\n this.sessionStorageServiceSubscription.add(\r\n this.sessionStorageService\r\n .observe(ELogin.USERISLOGGEDIN)\r\n .subscribe(() => {\r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME);\r\n })\r\n );\r\n // this.loginTypeSubscription.add(\r\n // this.loginService.activeLoginType$.subscribe(loginType => {\r\n // this.activeLoginType = loginType;\r\n // })\r\n // );\r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.sessionStorageServiceSubscription.unsubscribe();\r\n // this.loginTypeSubscription.unsubscribe();\r\n }\r\n\r\n login(userName: string, password: string): void {\r\n this.commonService.setShowMainSpinner(true);\r\n this.sessionStorageService.store(\r\n ESessionStorageId.LOGINTYPEINPROGRESS,\r\n ELoginType.ISYUSERADMIN\r\n );\r\n this.subscription.unsubscribe();\r\n this.subscription = new Subscription();\r\n this.loginService.loginInProgess(true);\r\n this.loginService.setLoginParam(new User(userName, password));\r\n this.subscription.add(this.loginService.login$.subscribe());\r\n }\r\n\r\n logout(): void {\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.subscription.unsubscribe();\r\n this.subscription = new Subscription();\r\n this.loginService.setLoginParam();\r\n this.loginService.loginInProgess(false);\r\n this.toasterService.success('logout_succes_toaster_msg');\r\n this.commonService.setIsyTokenToMaplibNg('');\r\n this.commonService.setIframeSessionLogout(true);\r\n this.mapService.initProjectList();\r\n }\r\n\r\n backToLoginList(): void {\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.loginService.setActiveLoginType(undefined);\r\n }\r\n}\r\n","
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n
      \r\n
      Tilbake
      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { trigger, style, transition, animate } from '@angular/animations';\r\n\r\nexport const topEnter = [\r\n style({ transform: 'translateY(-100%)' }),\r\n animate('300ms ease-in', style({ transform: 'translateY(0%)' })),\r\n];\r\n\r\nexport const topLeave = [\r\n animate('300ms ease-in', style({ transform: 'translateY(-100%)' })),\r\n];\r\n\r\nexport const bottomEnter = [\r\n style({ transform: 'translateY(100%)' }),\r\n animate('300ms ease-in', style({ transform: 'translateY(0%)' })),\r\n];\r\n\r\nexport const bottomLeave = [\r\n animate('300ms ease-in', style({ transform: 'translateY(100%)' })),\r\n];\r\n\r\nexport const leftEnter = [\r\n style({ transform: 'translateX(-100%)' }),\r\n animate('300ms ease-in', style({ transform: 'translateX(0%)' })),\r\n];\r\n\r\nexport const leftLeave = [\r\n animate('300ms ease-in', style({ transform: 'translateX(-100%)' })),\r\n];\r\n\r\nexport const rightEnter = [\r\n style({ transform: 'translateX(100%)' }),\r\n animate('300ms ease-in', style({ transform: 'translateX(0%)' })),\r\n];\r\n\r\nexport const rightLeave = [\r\n animate('300ms ease-in', style({ transform: 'translateX(100%)' })),\r\n];\r\n\r\nexport const SlideInOutGeneral = [\r\n trigger('slideInOutGeneral', [\r\n transition('* => topLeave', topEnter),\r\n transition('topLeave => *', topLeave),\r\n transition('* => bottomLeave', bottomEnter),\r\n transition('bottomLeave => *', bottomLeave),\r\n transition('* => rightLeave', rightEnter),\r\n transition('rightLeave => *', rightLeave),\r\n transition('* => leftLeave', leftEnter),\r\n transition('leftLeave => *', leftLeave),\r\n ]),\r\n];\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n OnInit,\r\n EventEmitter,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { MapActionDialogItem } from './mapActionDialogItem';\r\nimport { MapActionDialogHostDirective } from './map-action-dialog-host.directive';\r\nimport { MapActionDialogComponent } from './map-action-dialog.component';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { SlideInOutGeneral } from './animations';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-isy-dynamic-map-action-dialog',\r\n templateUrl: 'isy-map-action-dialog.component.html',\r\n styleUrls: ['isy-map-action-dialog.component.scss'],\r\n animations: [SlideInOutGeneral],\r\n})\r\nexport class IsyDynamicMapActionDialogComponent implements OnInit, OnDestroy {\r\n @ViewChild(MapActionDialogHostDirective, { static: false })\r\n libMapActionDialogHost: MapActionDialogHostDirective;\r\n @Input() name: string;\r\n @Input() dialogText: string;\r\n @Input() longText = false;\r\n @Input() noUpperCase = true;\r\n @Input() position = 'right';\r\n\r\n animationState;\r\n isShowing = false;\r\n\r\n mapActionItem: MapActionDialogItem;\r\n\r\n subscription: Subscription = new Subscription();\r\n blockShowingMapActionDialog = false;\r\n\r\n @Input()\r\n set mapActionDlgItem(mapActionItem: MapActionDialogItem) {\r\n this.mapActionItem = mapActionItem;\r\n }\r\n\r\n // get mapActionDlgItem(): MapActionDialogItem {\r\n // return this.mapActionItem;\r\n // }\r\n\r\n @Input() set show(val: boolean) {\r\n this.isShowing = val;\r\n switch (this.position) {\r\n case 'top': {\r\n this.animationState = this.isShowing ? 'topLeave' : 'topEnter';\r\n break;\r\n }\r\n case 'bottom': {\r\n this.animationState = this.isShowing ? 'bottomLeave' : 'bottomEnter';\r\n break;\r\n }\r\n case 'left': {\r\n this.animationState = this.isShowing ? 'leftLeave' : 'leftEnter';\r\n break;\r\n }\r\n case 'right': {\r\n this.animationState = this.isShowing ? 'rightLeave' : 'rightEnter';\r\n break;\r\n }\r\n case 'bottomRight': {\r\n this.animationState = this.isShowing ? 'rightLeave' : 'rightEnter';\r\n break;\r\n }\r\n default: {\r\n this.animationState = this.isShowing ? 'topLeave' : 'rightEnter';\r\n break;\r\n }\r\n }\r\n this.showChange.emit(this.isShowing);\r\n setTimeout(() => {\r\n if (this.libMapActionDialogHost) {\r\n const viewContainerRef = this.libMapActionDialogHost.viewContainerRef;\r\n if (!this.mapActionItem || this.mapActionItem.component === undefined) {\r\n viewContainerRef.clear();\r\n return;\r\n }\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(\r\n this.mapActionItem.component\r\n );\r\n viewContainerRef.clear();\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n (componentRef.instance).data =\r\n this.mapActionItem.data;\r\n }\r\n }, 100);\r\n }\r\n get show(): boolean {\r\n return this.isShowing;\r\n }\r\n\r\n @Input() showCloseBtn = false;\r\n\r\n @Output() showChange = new EventEmitter();\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n if (!this.name) {\r\n throw new Error('Map action dialog must have a \"name\" attribute.');\r\n }\r\n this.subscription.add(\r\n this.commonService.hideAndBlockShowMapActionDialog$.subscribe((value) => {\r\n this.blockShowingMapActionDialog = value;\r\n console.log('Should deactivate map action dialog');\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n hideMapActionDialog(): void {\r\n this.show = false;\r\n this.commonService.mapActionDialogCloseButtonClick(this.name);\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n {{dialogText | translate | uppercase }}\r\n {{dialogText | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { Component, Input, Output, OnInit, EventEmitter } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { SlideInOutGeneral } from './animations';\r\n\r\n@Component({\r\n selector: 'lib-isy-map-action-dialog',\r\n templateUrl: 'isy-map-action-dialog.component.html',\r\n styleUrls: ['isy-map-action-dialog.component.scss'],\r\n animations: [SlideInOutGeneral],\r\n})\r\nexport class IsyMapActionDialogComponent implements OnInit {\r\n @Input() name: string;\r\n @Input() dialogText: string;\r\n @Input() longText = false;\r\n @Input() noUpperCase = true;\r\n @Input() position = 'right';\r\n\r\n animationState;\r\n isShowing = false;\r\n mapActionItem = false;\r\n blockShowingMapActionDialog = false;\r\n\r\n @Input() set show(val: boolean) {\r\n this.isShowing = val;\r\n switch (this.position) {\r\n case 'top': {\r\n this.animationState = this.isShowing ? 'topLeave' : 'topEnter';\r\n break;\r\n }\r\n case 'bottom': {\r\n this.animationState = this.isShowing ? 'bottomLeave' : 'bottomEnter';\r\n break;\r\n }\r\n case 'left': {\r\n this.animationState = this.isShowing ? 'leftLeave' : 'leftEnter';\r\n break;\r\n }\r\n case 'right': {\r\n this.animationState = this.isShowing ? 'rightLeave' : 'rightEnter';\r\n break;\r\n }\r\n case 'bottomRight': {\r\n this.animationState = this.isShowing ? 'rightLeave' : 'rightEnter';\r\n break;\r\n }\r\n default: {\r\n this.animationState = this.isShowing ? 'topLeave' : 'rightEnter';\r\n break;\r\n }\r\n }\r\n this.showChange.emit(this.isShowing);\r\n }\r\n get show(): boolean {\r\n return this.isShowing;\r\n }\r\n\r\n @Input() showCloseBtn = false;\r\n\r\n @Output() showChange = new EventEmitter();\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n ngOnInit(): void {\r\n if (!this.name) {\r\n throw new Error('Map action dialog must have a \"name\" attribute.');\r\n }\r\n }\r\n\r\n hideMapActionDialog(): void {\r\n this.show = false;\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyMapActionDialogComponent } from './isy-map-action-dialog.component';\r\nimport { IsyDynamicMapActionDialogComponent } from './isy-dynamic-map-action-dialog.component';\r\nimport { MapActionDialogHostDirective } from './map-action-dialog-host.directive';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyMapActionDialogService } from './isy-map-action-dialog.service';\r\nimport {\r\n IsyTranslateModule,\r\n TRANSLATION_PROVIDERS,\r\n IsyTranslateService,\r\n} from '@isygis/isy-translate';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FontAwesomeModule, IsyTranslateModule],\r\n declarations: [\r\n IsyMapActionDialogComponent,\r\n IsyDynamicMapActionDialogComponent,\r\n MapActionDialogHostDirective,\r\n ],\r\n exports: [IsyMapActionDialogComponent],\r\n providers: [TRANSLATION_PROVIDERS, IsyTranslateService],\r\n})\r\nexport class IsyMapActionDialogModule {\r\n public static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: IsyMapActionDialogModule,\r\n providers: [IsyMapActionDialogService],\r\n };\r\n }\r\n}\r\n","import {\r\n Injectable,\r\n Type,\r\n ViewContainerRef,\r\n ComponentFactoryResolver,\r\n ApplicationRef,\r\n ReflectiveInjector,\r\n ComponentRef,\r\n} from '@angular/core';\r\nimport { IsyDynamicMapActionDialogComponent } from './isy-dynamic-map-action-dialog.component';\r\nimport { MapActionDialogOptions } from './map-action-dialog-options';\r\nimport { MapActionDialogItem } from './mapActionDialogItem';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyMapActionDialogService {\r\n private dynamicMapActionDialogCache = new Set<\r\n ComponentRef\r\n >();\r\n private _rootViewContainerRef: ViewContainerRef;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private appRef: ApplicationRef,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n setRootViewContainerRef(vRef: ViewContainerRef): void {\r\n this._rootViewContainerRef = vRef;\r\n }\r\n\r\n private init(name: string) {\r\n if (!this._rootViewContainerRef) {\r\n try {\r\n this._rootViewContainerRef =\r\n this.appRef['_rootComponents'][0]['_hostElement'].vcRef;\r\n } catch (e) {\r\n console.error(\r\n 'Please set root ViewContainerRef using setRootViewContainerRef(vRef: ViewContainerRef) method.'\r\n );\r\n return;\r\n }\r\n }\r\n const providers = ReflectiveInjector.resolve([]);\r\n const mapActionDialogFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(\r\n IsyDynamicMapActionDialogComponent\r\n );\r\n const childInjector = ReflectiveInjector.fromResolvedProviders(\r\n providers,\r\n this._rootViewContainerRef.parentInjector\r\n );\r\n const container = this._rootViewContainerRef.createComponent(\r\n mapActionDialogFactory,\r\n this._rootViewContainerRef.length,\r\n childInjector\r\n );\r\n container.instance.name = name;\r\n this.registerDynamic(container);\r\n }\r\n\r\n private registerDynamic(\r\n dialog: ComponentRef\r\n ): void {\r\n this.dynamicMapActionDialogCache.add(dialog);\r\n }\r\n\r\n private showDynamic(dialogName: string, dialogText: string): void {\r\n this.dynamicMapActionDialogCache.forEach((dialog) => {\r\n if (dialog.instance.name === dialogName) {\r\n dialog.instance.show = true;\r\n dialog.instance.dialogText = dialogText;\r\n }\r\n });\r\n }\r\n\r\n show(\r\n dialogName: string,\r\n dialogText: string,\r\n component?: Type,\r\n data?: any,\r\n options?: MapActionDialogOptions\r\n ): void {\r\n let dialogExist = false;\r\n this.dynamicMapActionDialogCache.forEach((dialog) => {\r\n if (dialog.instance.name === dialogName) {\r\n if (component) {\r\n this.addComponent(dialogName, component, data, options);\r\n }\r\n if (!component && options) {\r\n this.addOptions(dialog, options);\r\n }\r\n this.showDynamic(dialogName, dialogText);\r\n dialogExist = true;\r\n this.commonService.setGIComplete();\r\n }\r\n });\r\n if (!dialogExist) {\r\n this.init(dialogName);\r\n setTimeout(() => {\r\n if (component) {\r\n this.addComponent(dialogName, component, data, options);\r\n }\r\n if (!component && options) {\r\n this.dynamicMapActionDialogCache.forEach((dialog) => {\r\n if (dialog.instance.name === dialogName) {\r\n this.addOptions(dialog, options);\r\n }\r\n });\r\n }\r\n }, 100);\r\n setTimeout(() => {\r\n this.showDynamic(dialogName, dialogText);\r\n this.commonService.setGIComplete();\r\n }, 200);\r\n }\r\n }\r\n\r\n changeDialogText(dialogName: string, dialogText: string): void {\r\n this.dynamicMapActionDialogCache.forEach((dialog) => {\r\n if (dialog.instance.name === dialogName) {\r\n dialog.instance.dialogText = dialogText;\r\n }\r\n });\r\n }\r\n\r\n hide(dialogName: string): void {\r\n this.dynamicMapActionDialogCache.forEach((dialog) => {\r\n if (dialog.instance.name === dialogName) {\r\n dialog.instance.show = false;\r\n this.commonService.mapActionDialogCloseButtonClick(undefined);\r\n }\r\n });\r\n }\r\n\r\n private addComponent(\r\n dialogName: string,\r\n component: Type,\r\n data?: any,\r\n options?: MapActionDialogOptions\r\n ): void {\r\n this.dynamicMapActionDialogCache.forEach((dialog) => {\r\n if (dialog.instance.name === dialogName) {\r\n const newDialogItem = new MapActionDialogItem(component, data);\r\n dialog.instance.mapActionDlgItem = newDialogItem;\r\n if (options) {\r\n this.addOptions(dialog, options);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private addOptions(\r\n dialog: ComponentRef,\r\n options?: MapActionDialogOptions\r\n ): void {\r\n dialog.instance.longText =\r\n options.longText !== undefined ? options.longText : false;\r\n dialog.instance.noUpperCase =\r\n options.noUpperCase !== undefined ? options.noUpperCase : true;\r\n dialog.instance.position =\r\n options.position !== undefined ? options.position : 'right';\r\n dialog.instance.showCloseBtn =\r\n options.showCloseBtn !== undefined ? options.showCloseBtn : false;\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libMapActionDialogHost]',\r\n})\r\nexport class MapActionDialogHostDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import { Type } from '@angular/core';\r\n\r\nexport class MapActionDialogItem {\r\n constructor(public component: Type, public data: any) {}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { IConfigJson, ProjectListItem } from '@isygis/isymap-config';\r\nimport { MapConfig } from '@isygis/isy-configs';\r\n\r\nexport enum EReInitType {\r\n NONE,\r\n REINIT_WITH_PROJECT_CONFIG,\r\n REINIT_WITH_TEMP_CONFIG,\r\n REINIT_WITH_CACHED_ORIGINAL_CONFIG,\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyMapEmitterService {\r\n private addLayerFeatureEnd = new BehaviorSubject(undefined);\r\n addLayerFeatureEndEmitter$ = this.addLayerFeatureEnd.asObservable();\r\n\r\n private changeCenter = new Subject();\r\n changeCenterEmitter$ = this.changeCenter.asObservable();\r\n\r\n private changeLayers = new BehaviorSubject(undefined);\r\n changeLayersEmitter$ = this.changeLayers.asObservable();\r\n\r\n private changeResolution = new BehaviorSubject(undefined);\r\n changeResolutionEmitter$ = this.changeResolution.asObservable();\r\n\r\n private drawBoxEnd = new Subject();\r\n drawBoxEndEmitter$ = this.drawBoxEnd.asObservable();\r\n\r\n private drawFeatureEnd = new BehaviorSubject(undefined);\r\n drawFeatureEndEmitter$ = this.drawFeatureEnd.asObservable();\r\n\r\n private drawFeatureMouseMove = new Subject();\r\n drawFeatureMouseMoveEmitter$ = this.drawFeatureMouseMove.asObservable();\r\n\r\n private drawFeatureSelect = new BehaviorSubject(undefined);\r\n drawFeatureSelectEmitter$ = this.drawFeatureSelect.asObservable();\r\n\r\n private drawFeatureStart = new Subject();\r\n drawFeatureStartEmitter$ = this.drawFeatureStart.asObservable();\r\n\r\n private drawGeoJsonEnd = new BehaviorSubject(undefined);\r\n drawGeoJsonEndEmitter$ = this.drawGeoJsonEnd.asObservable();\r\n\r\n private elevationProfileLine = new Subject();\r\n elevationProfileLineEmitter$ = this.elevationProfileLine.asObservable();\r\n\r\n private featureClick = new BehaviorSubject(undefined);\r\n featureClickEmitter$ = this.featureClick.asObservable();\r\n\r\n private featureDeselected = new BehaviorSubject(undefined);\r\n featureDeselectedEmitter$ = this.featureDeselected.asObservable();\r\n\r\n private featureHasBeenDescribed = new BehaviorSubject(undefined);\r\n featureHasBeenDescribedEmitter$ = this.featureHasBeenDescribed.asObservable();\r\n\r\n private featureUrlHasBeenDescribed = new BehaviorSubject(undefined);\r\n featureUrlHasBeenDescribedEmitter$ =\r\n this.featureUrlHasBeenDescribed.asObservable();\r\n\r\n private featureHoverEnd = new Subject();\r\n featureHoverEndEmitter$ = this.featureHoverEnd.asObservable();\r\n\r\n private featureHoverMove = new BehaviorSubject(undefined);\r\n featureHoverMoveEmitter$ = this.featureHoverMove.asObservable();\r\n\r\n private featureHoverStart = new BehaviorSubject(undefined);\r\n featureHoverStartEmitter$ = this.featureHoverStart.asObservable();\r\n\r\n private featurePopoverEnd = new Subject();\r\n featurePopoverEndEmitter$ = this.featurePopoverEnd.asObservable();\r\n\r\n private featurePopoverStart = new BehaviorSubject(undefined);\r\n featurePopoverStartEmitter$ = this.featurePopoverStart.asObservable();\r\n\r\n private featureInfoEnd = new BehaviorSubject(undefined);\r\n featureInfoEndEmitter$ = this.featureInfoEnd.asObservable();\r\n\r\n private featureInfoStart = new BehaviorSubject(undefined);\r\n featureInfoStartEmitter$ = this.featureInfoStart.asObservable();\r\n\r\n private featureSelected = new BehaviorSubject(undefined);\r\n featureSelectedEmitter$ = this.featureSelected.asObservable();\r\n\r\n private geolocationUpdated = new Subject();\r\n geolocationUpdatedEmitter$ = this.geolocationUpdated.asObservable();\r\n\r\n private getCapabilitiesFromUrl = new BehaviorSubject(undefined);\r\n getCapabilitiesFromUrlEmitter$ = this.getCapabilitiesFromUrl.asObservable();\r\n\r\n private getClickCoordinates = new BehaviorSubject(undefined);\r\n getClickCoordinatesEmitter$ = this.getClickCoordinates.asObservable();\r\n\r\n private layerCreated = new Subject();\r\n layerCreatedEmitter$ = this.layerCreated.asObservable();\r\n\r\n private linePositionMarkerCoordinates = new BehaviorSubject(undefined);\r\n linePositionMarkerCoordinatesEmitter$ =\r\n this.linePositionMarkerCoordinates.asObservable();\r\n\r\n private exportDone = new Subject();\r\n exportDoneEmitter$ = this.exportDone.asObservable();\r\n\r\n private featureValues = new BehaviorSubject(undefined);\r\n featureValuesEmitter$ = this.featureValues.asObservable();\r\n\r\n private loadingLayerEnd = new Subject();\r\n loadingLayerEndEmitter$ = this.loadingLayerEnd.asObservable();\r\n\r\n private loggedIn = new Subject();\r\n loggedInEmitter$ = this.loggedIn.asObservable();\r\n\r\n private loggedOut = new Subject();\r\n loggedOutEmitter$ = this.loggedOut.asObservable();\r\n\r\n private configLoaded = new BehaviorSubject(undefined);\r\n configLoadEmitter$ = this.configLoaded.asObservable();\r\n\r\n private mapConfigLoaded = new BehaviorSubject(undefined);\r\n mapConfigLoadEmitter$ = this.mapConfigLoaded.asObservable();\r\n\r\n private mapLoaded = new BehaviorSubject(undefined);\r\n mapLoadEmitter$ = this.mapLoaded.asObservable();\r\n\r\n private mapMoveEnd = new BehaviorSubject(undefined);\r\n mapMoveEndEmitter$ = this.mapMoveEnd.asObservable();\r\n\r\n private mapMoveStart = new Subject();\r\n mapMoveStartEmitter$ = this.mapMoveStart.asObservable();\r\n\r\n private pointerDrag = new Subject();\r\n pointerDragEmitter$ = this.pointerDrag.asObservable();\r\n\r\n private mapProgressEnd = new Subject();\r\n mapProgressEndEmitter$ = this.mapProgressEnd.asObservable();\r\n\r\n private mapVectorProgressEnd = new Subject();\r\n mapVectorProgressEndEmitter$ = this.mapVectorProgressEnd.asObservable();\r\n\r\n private measureEnd = new Subject();\r\n measureEndEmitter$ = this.measureEnd.asObservable();\r\n\r\n private measureMouseMove = new Subject();\r\n measureMouseMoveEmitter$ = this.measureMouseMove.asObservable();\r\n\r\n private modifyFeatureEnd = new BehaviorSubject(undefined);\r\n modifyFeatureEndEmitter$ = this.modifyFeatureEnd.asObservable();\r\n\r\n private printBoxSelectReturnValue = new Subject();\r\n printBoxSelectReturnValueEmitter$ =\r\n this.printBoxSelectReturnValue.asObservable();\r\n\r\n private projectsListUpdated = new BehaviorSubject(undefined);\r\n projectsListUpdatedEmitter$ = this.projectsListUpdated.asObservable();\r\n\r\n private refreshSourceDone = new Subject();\r\n refreshSourceDoneEmitter$ = this.refreshSourceDone.asObservable();\r\n\r\n private reInitMapLibNg = new Subject();\r\n reInitMapLibNg$ = this.reInitMapLibNg.asObservable();\r\n\r\n private reInitIsyMap = new BehaviorSubject(EReInitType.NONE);\r\n reInitIsyMap$ = this.reInitIsyMap.asObservable();\r\n\r\n private showExportPanel = new Subject();\r\n showExportPanelEmitter$ = this.showExportPanel.asObservable();\r\n\r\n private snappingEnabled = new BehaviorSubject(false);\r\n snappingEnabledEmitter$ = this.snappingEnabled.asObservable();\r\n\r\n private transactionFailed = new Subject();\r\n transactionFailedEmitter$ = this.transactionFailed.asObservable();\r\n\r\n private transactionInsertEnd = new BehaviorSubject(undefined);\r\n transactionInsertEndEmitter$ = this.transactionInsertEnd.asObservable();\r\n\r\n private transactionRemoveEnd = new BehaviorSubject(undefined);\r\n transactionRemoveEndEmitter$ = this.transactionRemoveEnd.asObservable();\r\n\r\n private transactionSuccessful = new Subject();\r\n transactionSuccessfulEmitter$ = this.transactionSuccessful.asObservable();\r\n\r\n private transactionUpdateEnd = new BehaviorSubject(undefined);\r\n transactionUpdateEndEmitter$ = this.transactionUpdateEnd.asObservable();\r\n\r\n private zoomIn = new Subject();\r\n zoomInEmitter$ = this.zoomIn.asObservable();\r\n\r\n private zoomOut = new Subject();\r\n zoomOutEmitter$ = this.zoomOut.asObservable();\r\n\r\n private loadingGeoJsonFeatures = new BehaviorSubject(false);\r\n loadingGeoJsonFeaturesEmitter$ = this.loadingGeoJsonFeatures.asObservable();\r\n\r\n private extentFitted = new Subject();\r\n extentFittedEmitter$ = this.extentFitted.asObservable();\r\n\r\n emitAddLayerFeatureEnd(value): void {\r\n this.addLayerFeatureEnd.next(value);\r\n }\r\n\r\n emitChangeCenter(): void {\r\n this.changeCenter.next(true);\r\n }\r\n\r\n emitChangeLayers(value): void {\r\n this.changeLayers.next(value);\r\n }\r\n\r\n emitChangeResolution(value): void {\r\n this.changeResolution.next(value);\r\n }\r\n\r\n emitDrawBoxEnd(): void {\r\n this.drawBoxEnd.next(true);\r\n }\r\n\r\n emitDrawFeatureEnd(value): void {\r\n this.drawFeatureEnd.next(value);\r\n }\r\n\r\n emitDrawFeatureMouseMove(): void {\r\n this.drawFeatureMouseMove.next(true);\r\n }\r\n\r\n emitDrawFeatureSelect(value): void {\r\n this.drawFeatureSelect.next(value);\r\n }\r\n\r\n emitDrawFeatureStart(): void {\r\n this.drawFeatureStart.next(true);\r\n }\r\n\r\n emitDrawGeoJsonEnd(value): void {\r\n this.drawGeoJsonEnd.next(value);\r\n }\r\n\r\n emitElevationProfileLine(): void {\r\n this.elevationProfileLine.next(true);\r\n }\r\n\r\n emitFeatureClick(value): void {\r\n this.featureClick.next(value);\r\n }\r\n\r\n emitFeatureDeselected(value): void {\r\n this.featureDeselected.next(value);\r\n }\r\n\r\n emitFeatureHasBeenDescribed(value): void {\r\n this.featureHasBeenDescribed.next(value);\r\n }\r\n\r\n emitFeatureUrlHasBeenDescribed(value): void {\r\n this.featureUrlHasBeenDescribed.next(value);\r\n }\r\n\r\n emitFeatureHoverEnd(): void {\r\n this.featureHoverEnd.next(true);\r\n }\r\n\r\n emitFeatureHoverMove(value): void {\r\n this.featureHoverMove.next(value);\r\n }\r\n\r\n emitFeatureHoverStart(value): void {\r\n this.featureHoverStart.next(value);\r\n }\r\n\r\n emitFeaturePopoverEnd(): void {\r\n this.featurePopoverEnd.next(true);\r\n }\r\n\r\n emitFeaturePopoverStart(value): void {\r\n this.featurePopoverStart.next(value);\r\n }\r\n\r\n emitFeatureInfoEnd(value): void {\r\n this.featureInfoEnd.next(value);\r\n }\r\n\r\n emitFeatureInfoStart(value): void {\r\n this.featureInfoStart.next(value);\r\n }\r\n\r\n emitFeatureSelected(value): void {\r\n this.featureSelected.next(value);\r\n }\r\n\r\n emitGeolocationUpdated(): void {\r\n this.geolocationUpdated.next(true);\r\n }\r\n\r\n emitGetCapabilitiesFromUrl(value): void {\r\n this.getCapabilitiesFromUrl.next(value);\r\n }\r\n\r\n emitGetClickCoordinates(value): void {\r\n if (this.getClickCoordinates.getValue() !== value) {\r\n this.getClickCoordinates.next(value);\r\n }\r\n }\r\n\r\n emitLayerCreated(): void {\r\n this.layerCreated.next(true);\r\n }\r\n\r\n emitLinePositionMarkerCoordinates(value): void {\r\n this.linePositionMarkerCoordinates.next(value);\r\n }\r\n\r\n emitExportDone(): void {\r\n this.exportDone.next(true);\r\n }\r\n\r\n emitLoadingLayerEnd(): void {\r\n this.loadingLayerEnd.next(true);\r\n }\r\n\r\n emitFeatureValues(value: any): void {\r\n this.featureValues.next(value);\r\n }\r\n\r\n emitLoggedIn(): void {\r\n this.loggedIn.next(true);\r\n }\r\n\r\n emitLoggedOut(): void {\r\n this.loggedOut.next(true);\r\n }\r\n\r\n emitConfigLoaded(config: IConfigJson): void {\r\n this.configLoaded.next(config);\r\n }\r\n\r\n emitMapConfigLoaded(config: MapConfig): void {\r\n this.mapConfigLoaded.next(config);\r\n }\r\n\r\n emitMapLoaded(config?: IProjectConfig): void {\r\n this.mapLoaded.next(config ?? undefined);\r\n }\r\n\r\n emitMapMoveEnd(value: any): void {\r\n this.mapMoveEnd.next(value);\r\n }\r\n\r\n emitMapMoveStart(): void {\r\n this.mapMoveStart.next(true);\r\n }\r\n\r\n emitPointerDrag(): void {\r\n this.pointerDrag.next(true);\r\n }\r\n\r\n emitMapProgressEnd(): void {\r\n this.mapProgressEnd.next(true);\r\n }\r\n\r\n emitMapVectorProgressEnd(): void {\r\n this.mapVectorProgressEnd.next(true);\r\n }\r\n\r\n emitMeasureEnd(): void {\r\n this.measureEnd.next(true);\r\n }\r\n\r\n emitMeasureMouseMove(): void {\r\n this.measureMouseMove.next(true);\r\n }\r\n\r\n emitModifyFeatureEnd(value): void {\r\n this.modifyFeatureEnd.next(value);\r\n }\r\n\r\n emitPrintBoxSelectReturnValue(): void {\r\n this.printBoxSelectReturnValue.next(true);\r\n }\r\n\r\n emitProjectsList(projectList: ProjectListItem[]): void {\r\n this.projectsListUpdated.next(projectList);\r\n }\r\n\r\n emitRefreshSourceDone(): void {\r\n this.refreshSourceDone.next(true);\r\n }\r\n\r\n emitReInitMapLibNg(): void {\r\n this.reInitMapLibNg.next(true);\r\n }\r\n\r\n emitReInitIsyMap(value: EReInitType): void {\r\n this.reInitIsyMap.next(value);\r\n }\r\n\r\n emitShowExportPanel(): void {\r\n this.showExportPanel.next(true);\r\n }\r\n\r\n emitSnappingEnabled(status: boolean) {\r\n this.snappingEnabled.next(status);\r\n }\r\n\r\n emitTransactionFailed(): void {\r\n this.transactionFailed.next(true);\r\n }\r\n\r\n emitTransactionInsertEnd(value): void {\r\n this.transactionInsertEnd.next(value);\r\n }\r\n\r\n emitTransactionRemoveEnd(value): void {\r\n this.transactionRemoveEnd.next(value);\r\n }\r\n\r\n emitTransactionSuccessful(): void {\r\n this.transactionSuccessful.next(true);\r\n }\r\n\r\n emitTransactionUpdateEnd(value): void {\r\n this.transactionUpdateEnd.next(value);\r\n }\r\n\r\n emitZoomIn(): void {\r\n this.zoomIn.next(true);\r\n }\r\n\r\n emitZoomOut(): void {\r\n this.zoomOut.next(true);\r\n }\r\n\r\n emitLoadingGeoJsonFeatures(value): void {\r\n this.loadingGeoJsonFeatures.next(value);\r\n }\r\n\r\n emitExtentFitted(): void {\r\n this.extentFitted.next(true);\r\n }\r\n\r\n destroyMapEmitter(): void {\r\n this.emitAddLayerFeatureEnd(undefined);\r\n this.emitConfigLoaded(undefined);\r\n this.emitDrawFeatureEnd(undefined);\r\n this.emitFeatureClick(undefined);\r\n this.emitFeatureHasBeenDescribed(undefined);\r\n this.emitFeatureUrlHasBeenDescribed(undefined);\r\n this.emitFeatureHoverMove(undefined);\r\n this.emitFeatureHoverStart(undefined);\r\n this.emitFeaturePopoverStart(undefined);\r\n this.emitFeatureInfoEnd(undefined);\r\n this.emitFeatureInfoStart(undefined);\r\n this.emitGetCapabilitiesFromUrl(undefined);\r\n this.emitGetClickCoordinates(undefined);\r\n this.emitTransactionInsertEnd(undefined);\r\n this.emitTransactionRemoveEnd(undefined);\r\n this.emitTransactionUpdateEnd(undefined);\r\n }\r\n\r\n destroyAllEmitter(): void {\r\n this.emitAddLayerFeatureEnd(undefined);\r\n this.emitConfigLoaded(undefined);\r\n this.emitDrawFeatureEnd(undefined);\r\n this.emitFeatureClick(undefined);\r\n this.emitFeatureHasBeenDescribed(undefined);\r\n this.emitFeatureUrlHasBeenDescribed(undefined);\r\n this.emitFeatureHoverMove(undefined);\r\n this.emitFeatureHoverStart(undefined);\r\n this.emitFeaturePopoverStart(undefined);\r\n this.emitFeatureInfoEnd(undefined);\r\n this.emitFeatureInfoStart(undefined);\r\n this.emitGetCapabilitiesFromUrl(undefined);\r\n this.emitGetClickCoordinates(undefined);\r\n this.emitMapConfigLoaded(undefined);\r\n this.emitMapLoaded();\r\n this.emitProjectsList(undefined);\r\n this.emitReInitIsyMap(undefined);\r\n this.emitTransactionInsertEnd(undefined);\r\n this.emitTransactionRemoveEnd(undefined);\r\n this.emitTransactionUpdateEnd(undefined);\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n AfterViewInit, OnDestroy, ViewChild,\r\n Input\r\n} from '@angular/core';\r\nimport { MapLibNgService } from './maplibng.service';\r\nimport { IsyMapService } from './isy-map.service';\r\n// import { LayersService } from 'layers';\r\nimport { IsyMapEmitterService, EReInitType } from './isy-map-emitter.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IGisCoordinate } from '@isygis/isy-configs';\r\nimport { ConfigService } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-map',\r\n templateUrl: './isy-map.component.html',\r\n styleUrls: ['./isy-map.component.scss'],\r\n})\r\nexport class IsyMapComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n reInitActive = false;\r\n @ViewChild('pop', { static: true }) pop;\r\n @ViewChild('popOver', { static: true }) popOver;\r\n subscriptions: Subscription = new Subscription();\r\n boxSelectIsActive = false;\r\n boxInfoClickIsActive = false;\r\n @Input() showScaleLine = false;\r\n @Input() configJsonUrl = ConfigService.DEFAULT_CONFIG_URL;\r\n @Input() mapId = 'map';\r\n // @HostListener('mousedown', ['$event'])\r\n // onMouseDown(event): void {\r\n // console.log('MOUSE DOWN');\r\n // // if (!this.boxSelectIsActive && !this.boxInfoClickIsActive) {\r\n // this.maplibng.map().deactivateBoxSelect();\r\n // this.maplibng.map().activateInfoClick();\r\n // this.boxInfoClickIsActive = true;\r\n // // }\r\n // }\r\n\r\n // @HostListener('mousemove', ['$event'])\r\n // onMouseMove(event): void {\r\n // console.log('MOUSE MOVE');\r\n // // if (!this.boxSelectIsActive) {\r\n // this.maplibng.map().deactivateInfoClick();\r\n // this.maplibng.map().activateBoxSelect();\r\n // this.boxSelectIsActive = true;\r\n // // }\r\n // }\r\n\r\n // @HostListener('mouseup', ['$event'])\r\n // onMouseUp(event): void {\r\n // console.log('MOUSE UP');\r\n // // this.boxSelectIsActive = false;\r\n // // this.maplibng.map().deactivateBoxSelect();\r\n // // this.maplibng.map().activateInfoClick();\r\n // }\r\n\r\n constructor(\r\n private maplibng: MapLibNgService,\r\n private mapService: IsyMapService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private commonService: IsyCommonService // private layerService: LayersService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.maplibng.init();\r\n this.mapService.initMaplibMap();\r\n // this.subscriptions.add(\r\n // this.mapEmitterService.configLoadEmitter$.subscribe((value) =>\r\n // console.log('config_loaded', value)\r\n // )\r\n // );\r\n // this.subscriptions.add(\r\n // this.mapEmitterService.mapConfigLoadEmitter$.subscribe((value) =>\r\n // console.log('mapconfig_loaded', value)\r\n // )\r\n // );\r\n // this.subscriptions.add(\r\n // this.mapEmitterService.mapLoadEmitter$.subscribe((value) => {\r\n // console.log('project_loaded', value);\r\n // })\r\n // );\r\n // this.maplibng.init();\r\n this.registerEvents();\r\n this.mapService.initConfig(this.configJsonUrl);\r\n this.subscriptions.add(\r\n this.mapEmitterService.reInitIsyMap$.subscribe((change) => {\r\n if (\r\n change === EReInitType.REINIT_WITH_PROJECT_CONFIG ||\r\n change === EReInitType.REINIT_WITH_CACHED_ORIGINAL_CONFIG ||\r\n change === EReInitType.REINIT_WITH_TEMP_CONFIG\r\n ) {\r\n this.reInit();\r\n }\r\n })\r\n );\r\n\r\n this.subscriptions.add(\r\n this.commonService.setIsyTokenToMaplibNg$.subscribe((isyToken) => {\r\n // console.log('SEND ISY TOKEN TO MAPLIBNG: ', isyToken);\r\n this.maplibng.map().setIsyToken(isyToken);\r\n })\r\n );\r\n this.subscriptions.add(\r\n this.commonService.setCenterAction$.subscribe(\r\n (coordinate: IGisCoordinate | undefined) => {\r\n if (coordinate) {\r\n const config = this.mapService.getMapConfig();\r\n const epsg = coordinate.epsg || config.coordinate_system; // get project coord system\r\n const epsgCode = epsg.replace(/\\D/g, ''); // get project coord system code\r\n const bbox = this.mapService.epsgBBox[epsgCode];\r\n if (\r\n bbox &&\r\n coordinate.lat > bbox.latMin &&\r\n coordinate.lat < bbox.latMax &&\r\n coordinate.lon > bbox.lonMin &&\r\n coordinate.lon < bbox.lonMax\r\n ) {\r\n // console.log(\r\n // 'SETTING CENTER: ',\r\n // coordinate.lon,\r\n // coordinate.lat,\r\n // epsg\r\n // );\r\n this.maplibng\r\n .map()\r\n .setCenter({\r\n lat: coordinate.lat,\r\n lon: coordinate.lon,\r\n epsg: epsg,\r\n });\r\n }\r\n }\r\n }\r\n )\r\n );\r\n }\r\n\r\n reInit(): void {\r\n const eventHandler = this.maplibng.eventHandler();\r\n eventHandler.unRegisterAllEvents();\r\n this.registerEvents();\r\n this.reInitActive = true;\r\n this.mapEmitterService.destroyMapEmitter();\r\n this.mapService.initConfig(this.configJsonUrl);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.subscriptions.add(\r\n this.mapEmitterService.mapLoadEmitter$.subscribe((value) => {\r\n if (value && this.showScaleLine) {\r\n this.maplibng.map().addScaleLine();\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n const eventHandler = this.maplibng.eventHandler();\r\n eventHandler.unRegisterAllEvents();\r\n this.subscriptions.unsubscribe();\r\n this.mapService.destroyIsyMapService();\r\n this.mapEmitterService.destroyAllEmitter();\r\n }\r\n\r\n registerEvents(): void {\r\n const eventHandler = this.maplibng.eventHandler();\r\n const eventTypes = this.maplibng.eventTypes();\r\n\r\n eventHandler.registerSingleEvent(\r\n eventTypes.MapConfigLoaded,\r\n 'MapConfigLoaded',\r\n this.mapConfigLoaded.bind(this)\r\n );\r\n eventHandler.registerSingleEvent(\r\n eventTypes.MapLoaded,\r\n 'MapLoaded',\r\n this.mapLoaded.bind(this)\r\n );\r\n\r\n eventHandler.registerEvent(\r\n eventTypes.AddLayerFeatureEnd,\r\n 'AddLayerFeatureEnd',\r\n this.addLayerFeatureEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ChangeCenter,\r\n 'ChangeCenter',\r\n this.changeCenter.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ChangeLayers,\r\n 'ChangeLayers',\r\n this.changeLayers.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ChangeResolution,\r\n 'ChangeResolution',\r\n this.changeResolution.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.DrawBoxEnd,\r\n 'DrawBoxEnd',\r\n this.drawBoxEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.DrawFeatureEnd,\r\n 'DrawFeatureEnd',\r\n this.drawFeatureEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.DrawFeatureMouseMove,\r\n 'DrawFeatureMouseMove',\r\n this.drawFeatureMouseMove.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.DrawFeatureSelect,\r\n 'DrawFeatureSelect',\r\n this.drawFeatureSelect.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.DrawFeatureStart,\r\n 'DrawFeatureStart',\r\n this.drawFeatureStart.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.DrawGeoJsonEnd,\r\n 'DrawGeoJsonEnd',\r\n this.drawGeoJsonEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ElevationProfileLine,\r\n 'ElevationProfileLine',\r\n this.elevationProfileLine.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureClick,\r\n 'FeatureClick',\r\n this.featureClick.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureDeselected,\r\n 'FeatureDeselected',\r\n this.featureDeselected.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureHasBeenDescribed,\r\n 'FeatureHasBeenDescribed',\r\n this.featureHasBeenDescribed.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureUrlHasBeenDescribed,\r\n 'FeatureUrlHasBeenDescribed',\r\n this.featureUrlHasBeenDescribed.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureHoverEnd,\r\n 'FeatureHoverEnd',\r\n this.featureHoverEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureHoverMove,\r\n 'FeatureHoverMove',\r\n this.featureHoverMove.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureHoverStart,\r\n 'FeatureHoverStart',\r\n this.featureHoverStart.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeaturePopoverEnd,\r\n 'FeaturePopoverEnd',\r\n this.featurePopoverEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeaturePopoverStart,\r\n 'FeaturePopoverStart',\r\n this.featurePopoverStart.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureInfoEnd,\r\n 'FeatureInfoEnd',\r\n this.featureInfoEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureInfoStart,\r\n 'FeatureInfoStart',\r\n this.featureInfoStart.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureSelected,\r\n 'FeatureSelected',\r\n this.featureSelected.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.GeolocationUpdated,\r\n 'GeolocationUpdated',\r\n this.geolocationUpdated.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.GetCapabilitiesFromUrl,\r\n 'GetCapabilitiesFromUrl',\r\n this.getCapabilitiesFromUrl.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.GetClickCoordinates,\r\n 'GetClickCoordinates',\r\n this.getClickCoordinates.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.LayerCreated,\r\n 'LayerCreated',\r\n this.layerCreated.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.LinePositionMarkerCoordinates,\r\n 'LinePositionMarkerCoordinates',\r\n this.linePositionMarkerCoordinates.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ExportDone,\r\n 'ExportDone',\r\n this.exportDone.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.LoadingLayerEnd,\r\n 'LoadingLayerEnd',\r\n this.loadingLayerEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.FeatureValues,\r\n 'FeatureValues',\r\n this.featureValues.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.LoggedIn,\r\n 'LoggedIn',\r\n this.loggedIn.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.LoggedOut,\r\n 'LoggedOut',\r\n this.loggedOut.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.MapMoveend,\r\n 'MapMoveend',\r\n this.mapMoveEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.MapMoveStart,\r\n 'MapMoveStart',\r\n this.mapMoveStart.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.PointerDrag,\r\n 'PointerDrag',\r\n this.pointerDrag.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.MapProgressEnd,\r\n 'MapProgressEnd',\r\n this.mapProgressEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.MapVectorProgressEnd,\r\n 'MapVectorProgressEnd',\r\n this.mapVectorProgressEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.MeasureEnd,\r\n 'MeasureEnd',\r\n this.measureEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.MeasureMouseMove,\r\n 'MeasureMouseMove',\r\n this.measureMouseMove.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ModifyFeatureEnd,\r\n 'ModifyFeatureEnd',\r\n this.modifyFeatureEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.PrintBoxSelectReturnValue,\r\n 'PrintBoxSelectReturnValue',\r\n this.printBoxSelectReturnValue.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.RefreshSourceDone,\r\n 'RefreshSourceDone',\r\n this.refreshSourceDone.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ReInitMap,\r\n 'ReInitMap',\r\n this.reInitMapLibNg.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ShowExportPanel,\r\n 'ShowExportPanel',\r\n this.showExportPanel.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.TransactionFailed,\r\n 'TransactionFailed',\r\n this.transactionFailed.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.TransactionInsertEnd,\r\n 'TransactionInsertEnd',\r\n this.transactionInsertEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.TransactionRemoveEnd,\r\n 'TransactionRemoveEnd',\r\n this.transactionRemoveEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.TransactionSuccessful,\r\n 'TransactionSuccessful',\r\n this.transactionSuccessful.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.TransactionUpdateEnd,\r\n 'TransactionUpdateEnd',\r\n this.transactionUpdateEnd.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ZoomIn,\r\n 'ZoomIn',\r\n this.zoomIn.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ZoomOut,\r\n 'ZoomOut',\r\n this.zoomOut.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.LoadingGeoJsonFeatures,\r\n 'LoadingGeoJsonFeatures',\r\n this.loadingGeoJsonFeatures.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ExtentFitted,\r\n 'ExtentFitted',\r\n this.extentFitted.bind(this)\r\n );\r\n }\r\n\r\n addLayerFeatureEnd(value): void {\r\n this.mapEmitterService.emitAddLayerFeatureEnd(value);\r\n }\r\n\r\n changeCenter(): void {\r\n this.mapEmitterService.emitChangeCenter();\r\n }\r\n\r\n changeLayers(value): void {\r\n this.mapEmitterService.emitChangeLayers(value);\r\n }\r\n\r\n changeResolution(value): void {\r\n this.mapEmitterService.emitChangeResolution(value);\r\n }\r\n\r\n drawBoxEnd(): void {\r\n this.mapEmitterService.emitDrawBoxEnd();\r\n }\r\n\r\n drawFeatureEnd(value): void {\r\n this.mapEmitterService.emitDrawFeatureEnd(value);\r\n }\r\n\r\n drawFeatureMouseMove(): void {\r\n this.mapEmitterService.emitDrawFeatureMouseMove();\r\n }\r\n\r\n drawFeatureSelect(value): void {\r\n this.mapEmitterService.emitDrawFeatureSelect(value);\r\n }\r\n\r\n drawFeatureStart(): void {\r\n this.mapEmitterService.emitDrawFeatureStart();\r\n }\r\n\r\n drawGeoJsonEnd(value): void {\r\n this.mapEmitterService.emitDrawGeoJsonEnd(value);\r\n }\r\n\r\n elevationProfileLine(): void {\r\n this.mapEmitterService.emitElevationProfileLine();\r\n }\r\n\r\n featureClick(): void {\r\n this.mapEmitterService.emitFeatureClick(undefined);\r\n }\r\n\r\n featureDeselected(value): void {\r\n this.mapEmitterService.emitFeatureDeselected(value);\r\n }\r\n\r\n featureHasBeenDescribed(value): void {\r\n this.mapEmitterService.emitFeatureHasBeenDescribed(value);\r\n }\r\n\r\n featureUrlHasBeenDescribed(value): void {\r\n this.mapEmitterService.emitFeatureUrlHasBeenDescribed(value);\r\n }\r\n\r\n featureHoverEnd(): void {\r\n this.mapEmitterService.emitFeatureHoverEnd();\r\n }\r\n\r\n featureHoverMove(value): void {\r\n // console.log(data);\r\n this.mapEmitterService.emitFeatureHoverMove(value);\r\n }\r\n\r\n featureHoverStart(value): void {\r\n this.mapEmitterService.emitFeatureHoverStart(value);\r\n }\r\n\r\n featurePopoverStart(value): void {\r\n this.mapEmitterService.emitFeaturePopoverStart(value);\r\n }\r\n\r\n featurePopoverEnd(): void {\r\n this.mapEmitterService.emitFeaturePopoverEnd();\r\n }\r\n\r\n featureInfoEnd(resultSet): void {\r\n // const layers = this.layerService.getLayerGroups();\r\n // console.log(resultSet);\r\n this.mapEmitterService.emitFeatureInfoEnd(resultSet);\r\n }\r\n\r\n featureInfoStart(resultSet): void {\r\n // console.log(resultSet);\r\n this.mapEmitterService.emitFeatureInfoStart(resultSet);\r\n }\r\n\r\n featureSelected(value): void {\r\n this.mapEmitterService.emitFeatureSelected(value);\r\n }\r\n\r\n geolocationUpdated(): void {\r\n this.mapEmitterService.emitGeolocationUpdated();\r\n }\r\n\r\n getCapabilitiesFromUrl(value): void {\r\n this.mapEmitterService.emitGetCapabilitiesFromUrl(value);\r\n }\r\n\r\n getClickCoordinates(coordinate): void {\r\n // console.log(coordinate);\r\n this.mapEmitterService.emitGetClickCoordinates(coordinate);\r\n }\r\n\r\n layerCreated(): void {\r\n this.mapEmitterService.emitLayerCreated();\r\n }\r\n\r\n linePositionMarkerCoordinates(coordinates): void {\r\n this.mapEmitterService.emitLinePositionMarkerCoordinates(coordinates);\r\n }\r\n\r\n exportDone(): void {\r\n this.mapEmitterService.emitExportDone();\r\n }\r\n\r\n loadingLayerEnd(): void {\r\n this.mapEmitterService.emitLoadingLayerEnd();\r\n }\r\n\r\n featureValues(value: any): void {\r\n this.mapEmitterService.emitFeatureValues(value);\r\n }\r\n\r\n loggedIn(): void {\r\n this.mapEmitterService.emitLoggedIn();\r\n }\r\n\r\n loggedOut(): void {\r\n this.mapEmitterService.emitLoggedOut();\r\n }\r\n\r\n mapConfigLoaded(): Promise {\r\n if (!this.reInitActive) {\r\n const mapConfig = this.mapService.getMapConfig();\r\n const ps = this.maplibng.map().init(this.mapId, mapConfig);\r\n return ps.then(() => {\r\n this.mapEmitterService.emitMapConfigLoaded(mapConfig);\r\n });\r\n } else {\r\n const mapConfig = this.mapService.getMapConfig();\r\n const ps = this.maplibng.map().reInit(mapConfig);\r\n return ps.then(() => {\r\n this.reInitActive = false;\r\n this.mapEmitterService.emitMapConfigLoaded(mapConfig);\r\n });\r\n }\r\n }\r\n\r\n mapLoaded(): void {\r\n const config = this.mapService.getProjectConfig();\r\n this.mapEmitterService.emitMapLoaded(config);\r\n this.maplibng.map().activateHoverInfo();\r\n this.maplibng.map().activateInfoClick();\r\n this.maplibng.map().activateGetClickCoordinates();\r\n const extraMapConfigParams = this.mapService.getExtraMapConfigParams();\r\n if (extraMapConfigParams && extraMapConfigParams.activatePopoverInfo) {\r\n this.maplibng.map().activatePopoverInfo();\r\n }\r\n }\r\n\r\n mapMoveEnd(value): void {\r\n this.mapEmitterService.emitMapMoveEnd(value);\r\n }\r\n\r\n mapMoveStart(): void {\r\n this.mapEmitterService.emitMapMoveStart();\r\n }\r\n\r\n pointerDrag(): void {\r\n this.mapEmitterService.emitPointerDrag();\r\n }\r\n\r\n mapProgressEnd(): void {\r\n this.mapEmitterService.emitMapProgressEnd();\r\n }\r\n\r\n mapVectorProgressEnd(): void {\r\n this.mapEmitterService.emitMapVectorProgressEnd();\r\n }\r\n\r\n measureEnd(): void {\r\n this.mapEmitterService.emitMeasureEnd();\r\n }\r\n\r\n measureMouseMove(): void {\r\n this.mapEmitterService.emitMeasureMouseMove();\r\n }\r\n\r\n modifyFeatureEnd(value): void {\r\n this.mapEmitterService.emitModifyFeatureEnd(value);\r\n }\r\n\r\n printBoxSelectReturnValue(): void {\r\n this.mapEmitterService.emitPrintBoxSelectReturnValue();\r\n }\r\n\r\n refreshSourceDone(): void {\r\n this.mapEmitterService.emitRefreshSourceDone();\r\n }\r\n\r\n reInitMapLibNg(): void {\r\n this.mapEmitterService.emitReInitMapLibNg();\r\n }\r\n\r\n showExportPanel(): void {\r\n this.mapEmitterService.emitShowExportPanel();\r\n }\r\n\r\n transactionFailed(): void {\r\n this.mapEmitterService.emitTransactionFailed();\r\n }\r\n\r\n transactionInsertEnd(value): void {\r\n this.mapEmitterService.emitTransactionInsertEnd(value);\r\n }\r\n\r\n transactionRemoveEnd(value): void {\r\n this.mapEmitterService.emitTransactionRemoveEnd(value);\r\n }\r\n\r\n transactionSuccessful(): void {\r\n this.mapEmitterService.emitTransactionSuccessful();\r\n }\r\n\r\n transactionUpdateEnd(value): void {\r\n this.mapEmitterService.emitTransactionUpdateEnd(value);\r\n }\r\n\r\n zoomIn(): void {\r\n this.mapEmitterService.emitZoomIn();\r\n }\r\n\r\n zoomOut(): void {\r\n this.mapEmitterService.emitZoomOut();\r\n }\r\n\r\n loadingGeoJsonFeatures(value): void {\r\n this.mapEmitterService.emitLoadingGeoJsonFeatures(value);\r\n }\r\n\r\n extentFitted(): void {\r\n this.mapEmitterService.emitExtentFitted();\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyMapComponent } from './isy-map.component';\r\nimport { MapTooltipDirective } from './map-tooltip.directive';\r\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\r\nimport { PopoverModule } from 'ngx-bootstrap/popover';\r\nimport { MapPopoverTooltipDirective } from './map-popover-tooltip.directive';\r\n\r\n@NgModule({\r\n imports: [CommonModule, TooltipModule, PopoverModule],\r\n declarations: [\r\n IsyMapComponent,\r\n MapTooltipDirective,\r\n MapPopoverTooltipDirective,\r\n ],\r\n exports: [IsyMapComponent, MapTooltipDirective, MapPopoverTooltipDirective],\r\n})\r\nexport class IsyMapModule {}\r\n","import { BehaviorSubject, catchError, combineLatest, map, ReplaySubject, share, switchMap, timeout } from 'rxjs';\r\nimport {\r\n DomainLayer,\r\n MapAPIMap,\r\n RepositoryMapConfig,\r\n} from '@isygis/maplibng';\r\nimport {\r\n ELogin,\r\n EUrlParam,\r\n ILayer,\r\n MapConfig,\r\n IPopover,\r\n IExtraMapConfigParams,\r\n AddGeoJsonOptions,\r\n ICoordinate,\r\n IKommuneInfo,\r\n IElevationResult,\r\n IGroup,\r\n ESessionStorageId,\r\n} from '@isygis/isy-configs';\r\nimport { EReInitType, IsyMapEmitterService } from './isy-map-emitter.service';\r\nimport { IsyOverlaysService, OverlayId } from '@isygis/isy-app-services';\r\n\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { MapLibNgService } from './maplibng.service';\r\nimport { Router } from '@angular/router';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { getUniqueId } from '@isygis/isy-utils';\r\nimport { IClickCoordinate } from './isy-map-emitter-interfaces.model';\r\nimport {\r\n IConfigJson,\r\n FeatureInfoElement,\r\n FeatureInfoProjectConfig,\r\n Params,\r\n Protocol,\r\n ProjectListItem,\r\n IProjectConfig,\r\n IConfig,\r\n IMapBound,\r\n IVector,\r\n IWms,\r\n Vector,\r\n VectorOptions,\r\n ConfigService,\r\n} from '@isygis/isymap-config';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyMapService {\r\n groupIds: string[] = [];\r\n instance: string;\r\n mapConfig: MapConfig = new MapConfig();\r\n maplibMap: MapAPIMap;\r\n nameProject = 'opencache';\r\n notDummyGroup = false;\r\n projectConfig: IProjectConfig;\r\n configJson: IConfigJson;\r\n configUrl: string;\r\n private reInitType: EReInitType = EReInitType.NONE;\r\n private originalProjectConfig: IProjectConfig = undefined;\r\n private tempProjectConfig: IProjectConfig = undefined;\r\n private tempProjectName = '';\r\n newProjectName = '';\r\n newApplicationName = '';\r\n\r\n // BBox for Norway in different coordinate systems,\r\n epsgBBox = {\r\n 25832: {\r\n latMin: 6300000,\r\n lonMin: 130000,\r\n latMax: 8000000,\r\n lonMax: 1400000,\r\n },\r\n 32632: {\r\n latMin: 6300000,\r\n lonMin: 130000,\r\n latMax: 8000000,\r\n lonMax: 1400000,\r\n },\r\n 32633: {\r\n latMin: 5381922,\r\n lonMin: 117698,\r\n latMax: 6913203,\r\n lonMax: 1217875,\r\n },\r\n 32634: {\r\n latMin: 4542519,\r\n lonMin: 108632,\r\n latMax: 5948539,\r\n lonMax: 1087970,\r\n },\r\n 32635: { latMin: 3761321, lonMin: 101914, latMax: 5073753, lonMax: 992791 },\r\n 3857: {\r\n latMin: 7983694,\r\n lonMin: 469629,\r\n latMax: 3600489,\r\n lonMax: 11554832,\r\n },\r\n 4326: { latMin: 58, lonMin: 4, latMax: 72, lonMax: 32 },\r\n };\r\n newNibWmtsUrl =\r\n '://opencache.statkart.no/gatekeeper/gk/gk.open_nib_utm32_wmts_v2';\r\n newNibUrl = 'geonorge.no/BaatGatekeeper/gk/gk.nib_utm';\r\n oldNibUrl = 'geonorge.no/BaatGatekeeper/gk/gk.nibcache';\r\n oldGwcUrl = [\r\n 'gwc.nois.no',\r\n 'kart2.nois.no:8080',\r\n 'kart11.nois.no:8080',\r\n 'cache1.nois.no',\r\n 'cache2.nois.no',\r\n 'cache3.nois.no',\r\n ];\r\n newGwcUrl = ['cache1.nois.no'];\r\n\r\n oldTopoUrl = 'geonorge.no/BaatGatekeeper/gk/gk.cache';\r\n oldTopoLayers = ['topo2', 'topo2graatone'];\r\n newTopoLayers = ['topo4', 'topo4graatone'];\r\n projectsList: ProjectListItem[];\r\n\r\n private configAction = new BehaviorSubject(undefined);\r\n config$ = this.configAction.asObservable();\r\n private projectConfigAction = new BehaviorSubject(undefined);\r\n projectConfig$ = this.projectConfigAction.asObservable();\r\n private originalProjectConfigAction = new BehaviorSubject(\r\n undefined\r\n );\r\n originalProjectConfig$ = this.originalProjectConfigAction.asObservable();\r\n private projectNameAction = new BehaviorSubject('');\r\n projectName$ = this.projectNameAction.asObservable();\r\n private projectListInfoAction = new BehaviorSubject(undefined);\r\n projectListInfo$ = this.projectListInfoAction.asObservable();\r\n private instanceAction = new BehaviorSubject('');\r\n instance$ = this.instanceAction.asObservable();\r\n private layersParamAction = new BehaviorSubject('');\r\n layersParam$ = this.layersParamAction.asObservable();\r\n private popoverParamsAction = new BehaviorSubject(undefined);\r\n popoverParams$ = this.popoverParamsAction.asObservable();\r\n extraMapConfigParams: IExtraMapConfigParams;\r\n\r\n clickCoordinates$ = combineLatest([this.mapEmitterService.getClickCoordinatesEmitter$]).pipe(\r\n map(([coordinate]: [IClickCoordinate]) => {\r\n if (coordinate?.coordinate && coordinate.epsg) {\r\n // Elevation service expect epsg as just the number\r\n const epsgpattern = /\\d+/;\r\n const epsgResult = epsgpattern.exec(coordinate.epsg);\r\n if (epsgResult) {\r\n const currentCoordinate = {\r\n lat: coordinate.coordinate[1],\r\n lon: coordinate.coordinate[0],\r\n epsg: epsgResult[0],\r\n crs: coordinate.epsg,\r\n } as ICoordinate;\r\n\r\n // to cut two digits after '.' for lat and lon\r\n let index = String(currentCoordinate.lat).indexOf('.');\r\n currentCoordinate.lat = Number(\r\n String(currentCoordinate.lat).substring(0, index + 3)\r\n );\r\n index = String(currentCoordinate.lon).indexOf('.');\r\n currentCoordinate.lon = Number(\r\n String(currentCoordinate.lon).substring(0, index + 3)\r\n );\r\n\r\n return currentCoordinate;\r\n }\r\n }\r\n return undefined;\r\n }),\r\n share({\r\n connector: () => new ReplaySubject(1),\r\n resetOnError: false,\r\n resetOnComplete: false,\r\n resetOnRefCountZero: false,\r\n }),\r\n );\r\n\r\n elevationResult$ = combineLatest([this.clickCoordinates$]).pipe(\r\n switchMap(([changeCoordinate]: [ICoordinate]) => {\r\n if (\r\n changeCoordinate &&\r\n Object.keys(changeCoordinate).length > 0 &&\r\n 'lon' in changeCoordinate\r\n ) {\r\n const elevationBaseUrl =\r\n this.getMapConfig().proxyHost +\r\n (this.getConfig().externalServices.elevation ||\r\n 'https://ws.geonorge.no/hoydedata/v1/punkt');\r\n const url =\r\n elevationBaseUrl +\r\n '?nord=' +\r\n changeCoordinate.lat +\r\n '&ost=' +\r\n changeCoordinate.lon +\r\n '&koordsys=' +\r\n changeCoordinate.epsg;\r\n return this.httpClient\r\n .get(encodeURI(url))\r\n .pipe(\r\n timeout(2000),\r\n map((result) => {\r\n return result.punkter[0] as IElevationResult;\r\n }),\r\n );\r\n }\r\n return new Promise((resolve) => resolve({}));\r\n }),\r\n catchError(() => {return new Promise((resolve) => resolve({}));})\r\n );\r\n\r\n kommuneInfo$ = combineLatest([this.clickCoordinates$]).pipe(\r\n switchMap(([changeCoordinate]: [ICoordinate]) => {\r\n if (\r\n changeCoordinate &&\r\n Object.keys(changeCoordinate).length > 0 &&\r\n 'lon' in changeCoordinate\r\n ) {\r\n const kommuneInfoBaseUrl =\r\n this.getConfig().externalServices.kommuneinfo ||\r\n 'https://ws.geonorge.no/kommuneinfo/v1/punkt';\r\n const url =\r\n kommuneInfoBaseUrl +\r\n '?nord=' +\r\n changeCoordinate.lat +\r\n '&ost=' +\r\n changeCoordinate.lon +\r\n '&koordsys=' +\r\n changeCoordinate.epsg;\r\n return this.httpClient\r\n .get(encodeURI(url))\r\n .pipe(timeout(2000));\r\n }\r\n return new Promise((resolve) => resolve({}));\r\n }),\r\n catchError(() => {return new Promise((resolve) => resolve({}));})\r\n );\r\n\r\n kommuneInfoWithVaapenUrl$ = combineLatest([this.kommuneInfo$]).pipe(\r\n map(([kommuneInfo]: [IKommuneInfo]) => {\r\n const config: IConfigJson = this.getConfig();\r\n if (kommuneInfo && kommuneInfo.fylkesnavn && config) {\r\n return {\r\n ...kommuneInfo,\r\n kommunevaapenurl:\r\n config.externalServices.heraldry +\r\n kommuneInfo.kommunenummer +\r\n '.png',\r\n };\r\n } else {\r\n return undefined;\r\n }\r\n })\r\n );\r\n\r\n constructor(\r\n private maplibng: MapLibNgService,\r\n private overlaysService: IsyOverlaysService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private httpClient: HttpClient,\r\n private commonService: IsyCommonService,\r\n private sessionStorageService: SessionStorageService,\r\n private router: Router,\r\n private configService: ConfigService,\r\n ) {}\r\n\r\n initMaplibMap(): void {\r\n this.maplibMap = this.maplibng.map();\r\n }\r\n\r\n initConfig(configJsonUrl: string): Promise {\r\n this.configService.setConfigUrl(configJsonUrl);\r\n return this.configService.isymapConfig()\r\n .then((configJson) => {\r\n // TODO: check instance from url\r\n this.sessionStorageService.store(ESessionStorageId.CONFIG, configJson);\r\n this.configAction.next(configJson);\r\n this.configJson = configJson;\r\n this.commonService.setExternalServices(this.configJson.externalServices);\r\n this.configUrl = configJson.configurl;\r\n if (this.newProjectName && this.nameProject !== 'opencache') {\r\n this.nameProject = this.newProjectName;\r\n this.projectNameAction.next(this.nameProject);\r\n }\r\n this.instance =\r\n this.newApplicationName === ''\r\n ? configJson.instance\r\n : this.newApplicationName; \r\n this.configJson.instance = this.instance;\r\n this.mapEmitterService.emitConfigLoaded(configJson);\r\n this.instanceAction.next(this.instance);\r\n const token = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n if (token) {\r\n this.maplibng.map().setIsyToken(token);\r\n }\r\n\r\n if (this.projectsList) {\r\n this.configService.projectConfig(this.instance, this.nameProject)\r\n .then(projConfig => this._getProjectCallback(projConfig));\r\n } else {\r\n this.configService.listProjects(this.instance, token)\r\n .then(lst => this._getProjectsListCallback(lst));\r\n }\r\n });\r\n }\r\n\r\n setPopoverParams(popoverParams: IPopover): void {\r\n const value = this.popoverParamsAction.getValue();\r\n if (value === undefined) {\r\n this.popoverParamsAction.next([popoverParams]);\r\n } else {\r\n if (!value.find((p) => p.layerName === popoverParams.layerName)) {\r\n value.push(popoverParams);\r\n }\r\n this.popoverParamsAction.next(value);\r\n }\r\n }\r\n\r\n initProjectList(): void {\r\n const token = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n if (this.maplibMap) {\r\n this.configService.listProjects(this.instance, token).then(lst => this._getNewProjectsListCallback(lst));\r\n }\r\n }\r\n\r\n destroyIsyMapService(): void {\r\n this.groupIds = [];\r\n this.instance = '';\r\n this.mapConfig = new MapConfig();\r\n this.maplibMap = undefined;\r\n this.nameProject = 'opencache';\r\n this.notDummyGroup = false;\r\n this.projectConfig = undefined;\r\n this.configJson = undefined;\r\n this.configUrl = '';\r\n\r\n this.newProjectName = '';\r\n this.newApplicationName = '';\r\n\r\n this.projectsList = undefined;\r\n this.mapEmitterService.emitReInitIsyMap(EReInitType.NONE);\r\n }\r\n\r\n getMapConfig(): MapConfig {\r\n return this.mapConfig;\r\n }\r\n\r\n getConfig(): IConfigJson {\r\n return this.configJson;\r\n }\r\n\r\n getProjectConfig(): IProjectConfig {\r\n return this.projectConfig;\r\n }\r\n\r\n getInstanceName(): string {\r\n return this.instance;\r\n }\r\n\r\n getProjectsList(): ProjectListItem[] {\r\n return this.projectsList;\r\n }\r\n\r\n reInit(reInitType: EReInitType): void {\r\n this.reInitType = reInitType;\r\n this.instance = '';\r\n\r\n this.projectConfig = undefined;\r\n this.groupIds = [];\r\n this.notDummyGroup = false;\r\n this.mapConfig = new MapConfig();\r\n this.mapEmitterService.emitReInitIsyMap(reInitType);\r\n }\r\n\r\n showMapOverlayLayer(): void {\r\n this.overlaysService.show(OverlayId.mapOverlayLayer);\r\n }\r\n\r\n hideMapOverlayLayer(): void {\r\n this.overlaysService.hide(OverlayId.mapOverlayLayer);\r\n }\r\n\r\n getHeaderIconBaseUrl(): string {\r\n return (\r\n this.configUrl +\r\n '/api/v1/headericon?application=' +\r\n this.instance +\r\n '&headericon='\r\n );\r\n }\r\n\r\n getHeaderIconUrl(): string {\r\n if (this.projectConfig?.config?.project?.headericon) {\r\n return (\r\n this.configUrl +\r\n '/api/v1/headericon?application=' +\r\n this.instance +\r\n '&headericon=' +\r\n this.projectConfig.config.project.headericon\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n updateNewProjectExtent(): void {\r\n const params = {};\r\n params[EUrlParam.ZOOM] = this.projectConfig?.config?.project?.zoom;\r\n params[EUrlParam.LAT] = this.projectConfig?.config?.project?.lat;\r\n params[EUrlParam.LON] = this.projectConfig?.config?.project?.lon;\r\n this.router.navigate([], {\r\n queryParams: params,\r\n queryParamsHandling: 'merge',\r\n });\r\n this.maplibng.map().setCenter({\r\n lon: Number(this.projectConfig?.config?.project?.lon),\r\n lat: Number(this.projectConfig?.config?.project?.lat),\r\n zoom: Number(this.projectConfig?.config?.project?.zoom),\r\n epsg: this.projectConfig?.config?.project?.epsg,\r\n });\r\n }\r\n\r\n setNewProject(project: ProjectListItem): void {\r\n this.projectListInfoAction.next(project);\r\n this.setNewProjectName(project.ProjectName);\r\n }\r\n\r\n setNewProjectName(nameProject: string): void {\r\n this.newProjectName = nameProject;\r\n }\r\n\r\n setNewApplicationName(instance: string): void {\r\n this.newApplicationName = instance;\r\n this.projectsList = undefined; // Need new projectlist when instance is changed\r\n }\r\n\r\n setTempProjectConfig(tempProjectConfig: IProjectConfig): void {\r\n this.tempProjectConfig = tempProjectConfig;\r\n }\r\n\r\n setTempProjectName(tempProjectName: string): void {\r\n this.tempProjectName = tempProjectName;\r\n }\r\n\r\n removeTempProjectConfig(): void {\r\n this.tempProjectConfig = undefined;\r\n }\r\n\r\n getOriginalProjectConfig(): IProjectConfig {\r\n return JSON.parse(JSON.stringify(this.originalProjectConfig));\r\n }\r\n\r\n uuidv4(): string {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16) | 0;\r\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n showTemporaryWmsLayer(url: string, layer: string): void {\r\n let layers;\r\n let filterLayer;\r\n const wms = {\r\n guid: this.uuidv4(),\r\n layerindex: null,\r\n name: layer,\r\n provider: 'Datalake',\r\n display: 'true',\r\n gatekeeper: 'false',\r\n hidden: 'false',\r\n url: url + '?LAYERS=' + layer,\r\n zindex: null,\r\n groupid: null,\r\n grouptitle: null,\r\n options: {\r\n isbaselayer: 'false',\r\n minscale: null,\r\n opacity: '1',\r\n timeoptions: {starttime: '', endtime: '', increment: ''},\r\n singletile: 'true',\r\n transitioneffect: 'resize',\r\n visibility: 'true',\r\n },\r\n params: {\r\n format: 'image/png',\r\n layers: layer,\r\n bgcolor: '0x000000',\r\n transparent: 'true',\r\n getfeatureinfo: 'true',\r\n featureinfoformats: null,\r\n },\r\n legendgraphicurl: null,\r\n layers: {\r\n layer: [\r\n {\r\n title: 'Temporary',\r\n name: 'Temporary',\r\n queryable: 'false',\r\n },\r\n ],\r\n },\r\n type: 'overlay',\r\n layerorder: null,\r\n sortingIndex: null,\r\n neededResources: []\r\n };\r\n layers = this.maplibng.map().getOverlayLayers();\r\n filterLayer = layers.find((l: ILayer) => l['name'] === layer);\r\n // dont add layer if it currently exists, just show it\r\n if (filterLayer) {\r\n this.maplibng.map().showLayer(filterLayer);\r\n }\r\n // add layer and show it\r\n else {\r\n this._addWms(wms);\r\n layers = this.maplibng.map().getOverlayLayers();\r\n filterLayer = layers.find((l: ILayer) => l['guid'] === wms.guid);\r\n if (filterLayer) {\r\n filterLayer.subLayers[0].opacity = 0.5;\r\n filterLayer.subLayers[0].sortingIndex = 999;\r\n this.maplibng.map().showLayer(filterLayer);\r\n }\r\n }\r\n }\r\n\r\n hideTemporaryWmsLayer(layer: string): void {\r\n const layers = this.maplibng.map().getOverlayLayers();\r\n const filterLayer = layers.find((l: ILayer) => l['name'] === layer);\r\n if (filterLayer) {\r\n this.maplibng.map().hideLayer(filterLayer);\r\n }\r\n }\r\n\r\n removeTemporaryWmsLayer(layer: string): void {\r\n if (layer) {\r\n this._removeWms(layer);\r\n }\r\n }\r\n\r\n setExtraMapConfigParams(params: IExtraMapConfigParams): void {\r\n this.extraMapConfigParams = params;\r\n }\r\n\r\n getExtraMapConfigParams(): IExtraMapConfigParams {\r\n return this.extraMapConfigParams;\r\n }\r\n\r\n private _getProjectsListCallback(value: ProjectListItem[]): void {\r\n this.projectsList = value;\r\n this.nameProject = this.newProjectName\r\n ? this.newProjectName\r\n : this.projectsList.length\r\n ? this.projectsList[0].ProjectName\r\n : '';\r\n this.projectNameAction.next(this.nameProject);\r\n\r\n this.mapEmitterService.emitProjectsList(value as ProjectListItem[]);\r\n\r\n this.configService.projectConfig(this.instance, this.nameProject)\r\n .then(projConfig => this._getProjectCallback(projConfig));\r\n }\r\n\r\n private _getNewProjectsListCallback(value: any): void {\r\n this.mapEmitterService.emitProjectsList(value as ProjectListItem[]);\r\n }\r\n\r\n private _getProjectCallback(projectConfig: IProjectConfig): void {\r\n // console.log('PROJECT CALL BACK');\r\n if (\r\n this.reInitType === EReInitType.NONE ||\r\n this.reInitType === EReInitType.REINIT_WITH_PROJECT_CONFIG\r\n ) {\r\n // console.log('NORMAL project config');\r\n if (!projectConfig) {\r\n this.router.navigate(['/', 'project-not-found']);\r\n throw new Error('Project config load error');\r\n }\r\n this.projectConfig = projectConfig;\r\n this.originalProjectConfig = JSON.parse(JSON.stringify(projectConfig));\r\n this.originalProjectConfigAction.next(this.originalProjectConfig);\r\n } else if (\r\n this.reInitType === EReInitType.REINIT_WITH_CACHED_ORIGINAL_CONFIG\r\n ) {\r\n // console.log('ORIGINAL project config');\r\n this.projectConfig = JSON.parse(\r\n JSON.stringify(this.originalProjectConfig)\r\n );\r\n } else {\r\n // reinit with temp project config\r\n // console.log('TEMP project config');\r\n if (this.tempProjectName) {\r\n this.projectNameAction.next(this.tempProjectName);\r\n this.instanceAction.next(this.instance);\r\n }\r\n this.projectConfig = this.tempProjectConfig;\r\n }\r\n this.projectConfig.config.project.obliqueenabled = Boolean(\r\n this.projectConfig.config.project.obliqueenabled\r\n );\r\n this.projectConfig.config.project.obliqueblomurbex = Boolean(\r\n this.projectConfig.config.project.obliqueblomurbex\r\n );\r\n this.projectConfig.config.project.dokExcludeDekByggPlan = Boolean(\r\n this.projectConfig.config.project.dokExcludeDekByggPlan === 'true'\r\n );\r\n this.mapConfig = new RepositoryMapConfig(this.mapConfig) as MapConfig // TODO: better type checking;\r\n this.mapConfig.project.epsg = this.projectConfig.config.project.epsg;\r\n this.mapConfig.project.lat = Number(this.projectConfig.config.project.lat);\r\n this.mapConfig.project.lon = Number(this.projectConfig.config.project.lon);\r\n this.mapConfig.project.zoom = Number(\r\n this.projectConfig.config.project.zoom\r\n );\r\n this.mapConfig.zoom = Number(this.projectConfig.config.project.zoom);\r\n this.mapConfig.numZoomLevels =\r\n Number(this.projectConfig.config.project.numzoomlevels || 0) ||\r\n this.mapConfig.numZoomLevels;\r\n this.mapConfig.instance = this.instance;\r\n this.mapConfig.projectName = this.nameProject.toLowerCase();\r\n\r\n this.mapConfig.coordinate_system = this.projectConfig.config.project.epsg;\r\n this.mapConfig.mouseProjectionPrefix =\r\n this.projectConfig.config.project.displayprojectionprefix;\r\n this.mapConfig.headerTitle = this.projectConfig.config.project.headertitle;\r\n this.mapConfig.searchParams =\r\n this.projectConfig.config.project.searchparams;\r\n this.mapConfig.proxyHost =\r\n this.projectConfig.config.project.isyproxy + '/?';\r\n this.mapConfig.attachmentHost =\r\n this.projectConfig.config.project.isyattachment;\r\n if (this.instance) {\r\n this.mapConfig.proxyHost += 'instance=' + this.instance + '&';\r\n }\r\n if (this.nameProject) {\r\n this.mapConfig.proxyHost += 'project=' + this.nameProject + '&';\r\n }\r\n this.mapConfig.proxyHost += 'url=';\r\n this.mapConfig.searchHost = this.projectConfig.config.project.isysearch;\r\n this.mapConfig.tokenHost = this.projectConfig.config.project.isygatekeeper;\r\n this.mapConfig.updateExtent =\r\n this.projectConfig.config.project.updateExtent;\r\n this.mapConfig.useMultiWorld = this.projectConfig.config.project.useMultiWorld ? this.projectConfig.config.project.useMultiWorld : false;\r\n this.mapConfig.hoverhighlightmode = this.projectConfig.config.project.hoverhighlightmode;\r\n if (this.extraMapConfigParams) {\r\n this.mapConfig.constrainedExtent =\r\n this.extraMapConfigParams.constrainedExtent;\r\n this.mapConfig.pageScrolling = this.extraMapConfigParams.pageScrolling;\r\n this.mapConfig.pageScrollingShowInfoText =\r\n this.extraMapConfigParams.pageScrollingShowInfoText;\r\n this.mapConfig.pageScrollingInfoTextAndOverlay =\r\n this.extraMapConfigParams.pageScrollingInfoTextAndOverlay;\r\n }\r\n\r\n this._updateMapConfigWithCoordinateAndExtend(\r\n this.projectConfig.config.mapbound\r\n );\r\n this._updateMapConfigWithGroups(this.projectConfig.config);\r\n this._updateMapConfigWithImageLayers(this.projectConfig.config);\r\n this._updateMapConfigWithWfs(this.projectConfig.config);\r\n this._updateLayersSortingIndex();\r\n\r\n this.maplibng.repository().getMapConfigFromJson(this.mapConfig);\r\n\r\n this.projectConfigAction.next(this.projectConfig);\r\n }\r\n\r\n private _updateMapConfigWithCoordinateAndExtend(\r\n coordinateAndExtent: IMapBound[]\r\n ): any {\r\n if (coordinateAndExtent === undefined) {\r\n return;\r\n }\r\n const bound = this._getBound(coordinateAndExtent);\r\n if (bound === undefined) {\r\n // console.log(\r\n // 'Coordinatesystem is not defined. Maybe missing in file app.config'\r\n // );\r\n } else {\r\n this.mapConfig.extent = bound.extent\r\n .toString()\r\n .split(',')\r\n .map((item) => {\r\n return parseInt(item, 10);\r\n });\r\n }\r\n }\r\n\r\n private _getBound(coordinateAndExtent: IMapBound[]): any {\r\n return coordinateAndExtent.find(\r\n (bound) => bound.epsg === this.mapConfig.coordinate_system\r\n );\r\n }\r\n\r\n private _updateMapConfigWithGroups(project: IConfig): void {\r\n if (project.maplayer != null) {\r\n // this.groupIds = [];\r\n // this.mapConfig.groups = [];\r\n for (const group of project.maplayer) {\r\n const groupId = group.groupid;\r\n this._createGroup(\r\n groupId,\r\n group.name,\r\n group.name, // skulle vært en id her vel?\r\n group.display,\r\n group.supergroupid\r\n );\r\n }\r\n }\r\n }\r\n\r\n private _createGroup(\r\n groupId,\r\n name,\r\n parentId,\r\n visibleOnLoad,\r\n supergroupid\r\n ): void {\r\n const newGroup: IGroup = {\r\n catId: '',\r\n groupId,\r\n isOpen: false,\r\n name,\r\n parentId,\r\n subCategories: [],\r\n supergroupid,\r\n visibleOnLoad: this._getBoolean(visibleOnLoad),\r\n\r\n };\r\n this.groupIds.push(groupId);\r\n this.mapConfig.groups.push(newGroup);\r\n }\r\n\r\n private _getBoolean(value): boolean {\r\n return typeof value === 'boolean'\r\n ? value\r\n : value === 'true';\r\n }\r\n\r\n private _updateMapConfigWithImageLayers(project: IConfig): void {\r\n if (project.wms != null) {\r\n for (const wms of project.wms) {\r\n this._addWms(wms);\r\n }\r\n }\r\n if (project.wmts != null) {\r\n for (const wmts of project.wmts) {\r\n this._addWmts(wmts);\r\n }\r\n }\r\n if (project.base != null) {\r\n for (const base of project.base) {\r\n if (base?.type === 'WMTS') {\r\n this._addWmts(base);\r\n } else {\r\n this._addWms(base);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _updateMapConfigWithWfs(project: IConfig): void {\r\n if (project.vector != null) {\r\n for (const wfs of project.vector) {\r\n if (Array.isArray(wfs.options.protocol)) {\r\n wfs.options.protocol = wfs.options.protocol[0];\r\n }\r\n this._addWfs(wfs);\r\n }\r\n }\r\n }\r\n\r\n private _updateLayersSortingIndex(): void {\r\n let sortingIndex = this.mapConfig.layers.length;\r\n for (const group of this.mapConfig.groups) {\r\n for (const layer of this.mapConfig.layers) {\r\n for (const layerGroupId of layer.groupId) {\r\n if (group.groupId === layerGroupId) {\r\n for (const sublayer of layer.subLayers) {\r\n if (layer.isBaseLayer) {\r\n sublayer.sortingIndex = 0;\r\n } else {\r\n if (sublayer.layerorder !== null) {\r\n sublayer.sortingIndex = sortingIndex - sublayer.layerorder;\r\n } else {\r\n sublayer.sortingIndex = sortingIndex;\r\n sortingIndex = sortingIndex - 1;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _addWfs(wfs: IVector): void {\r\n let featuretype = wfs.options.protocol.featuretype;\r\n if (featuretype == null) {\r\n featuretype = wfs.options.protocol.params.typename;\r\n }\r\n const version =\r\n wfs.options.protocol.version ||\r\n wfs.options.protocol.params['version'] ||\r\n '1.1.0'; // default\r\n let clusterstyle;\r\n if (wfs.clusterstyleurl && wfs.clusterstyleurl.length > 0) {\r\n clusterstyle = wfs.clusterstyleurl.replace(/&/g, '&');\r\n }\r\n if (wfs.clusterstyle && wfs.clusterstyle.length > 0) {\r\n clusterstyle = wfs.clusterstyle;\r\n }\r\n let stylesld;\r\n let jsonstyleurl;\r\n let jsonstyle;\r\n if (wfs.stylemapjson != null) {\r\n jsonstyleurl = wfs.stylemapjson;\r\n } else if (wfs.jsonstyle != null) {\r\n jsonstyle = wfs.jsonstyle;\r\n } else if (wfs.stylemapsld != null && wfs.stylemapsld.length > 0) {\r\n stylesld = 'assets/styles/' + wfs.stylemapsld + '.sld';\r\n } else if (wfs.stylemapurl != null && wfs.stylemapurl.length > 0) {\r\n stylesld = wfs.stylemapurl.replace(/&/g, '&');\r\n }\r\n\r\n const featureElementInfo = [];\r\n if (wfs.featureinfo && wfs.featureinfo.featureinfoelement != null) {\r\n const featureElement =\r\n wfs.featureinfo.featureinfoelement instanceof Array\r\n ? wfs.featureinfo.featureinfoelement\r\n : [wfs.featureinfo.featureinfoelement];\r\n\r\n let element = {};\r\n for (let i = 0; i < wfs.featureinfo.featureinfoelement.length; i++) {\r\n element = {\r\n name: featureElement[i].name,\r\n text: featureElement[i].text,\r\n hascodelist: featureElement[i].hascodelist\r\n ? featureElement[i].hascodelist\r\n : 'false',\r\n codevalue: featureElement[i].codevalue\r\n ? [...featureElement[i].codevalue]\r\n : [],\r\n codelistid: wfs.featureinfo.codelistid,\r\n datatype: featureElement[i].datatype,\r\n editable: featureElement[i].editable\r\n ? featureElement[i].editable\r\n : 'false',\r\n attachment: featureElement[i].attachment\r\n ? featureElement[i].attachment\r\n : 'false',\r\n };\r\n featureElementInfo.push(element);\r\n }\r\n }\r\n const showDialog = this._getConfigValue(wfs.featureinfo.showdialog, true);\r\n const openNewWindow = this._getConfigValue(\r\n wfs.featureinfo.opennewwindow,\r\n false\r\n );\r\n const openParentWindow = this._getConfigValue(\r\n wfs.featureinfo.openparentwindow,\r\n false\r\n );\r\n const featureEditable = this._getConfigValue(\r\n wfs.featureinfo.editable,\r\n false\r\n );\r\n const featureAttachment = this._getConfigValue(\r\n wfs.featureinfo.attachment,\r\n false\r\n );\r\n const showpopupwithdata = this._getConfigValue(\r\n wfs.featureinfo.showpopupwithdata,\r\n false\r\n );\r\n const showpopuplibrary = this._getConfigValue(\r\n wfs.featureinfo.showpopuplibrary,\r\n false\r\n );\r\n const showneighborlist = this._getConfigValue(\r\n wfs.featureinfo.showneighborlist,\r\n false\r\n );\r\n const advancedfilter = this._getConfigValue(\r\n wfs.featureinfo.advancedfilter,\r\n false\r\n );\r\n\r\n let catIds = ['999'];\r\n if (wfs.groupid != null) {\r\n catIds = wfs.groupid.toString().split(',');\r\n this._createNotExistGroup(catIds, wfs.subname, wfs.subname);\r\n } else {\r\n this._createDummyGroup();\r\n }\r\n\r\n let srsDim = '';\r\n if (\r\n wfs.options.protocol.params != null &&\r\n wfs.options.protocol.params.srsdimension != null\r\n ) {\r\n srsDim = wfs.options.protocol.params.srsdimension.toString();\r\n }\r\n\r\n let sourceWfs = 'WFS';\r\n if (wfs.options.protocol.type === 'VECTOR') {\r\n sourceWfs = wfs.options.protocol.type;\r\n }\r\n if (wfs.options.protocol.type === 'GeoJSON') {\r\n sourceWfs = wfs.options.protocol.type;\r\n }\r\n if (wfs.options.protocol.type === 'VectorTileLayer') {\r\n sourceWfs = wfs.options.protocol.type;\r\n }\r\n\r\n const newIsyLayer = new DomainLayer({\r\n id: this.mapConfig.layers.length + 8001,\r\n isBaseLayer: wfs.options.isbaselayer === 'true',\r\n subLayers: [\r\n {\r\n title: wfs.name,\r\n source: sourceWfs,\r\n url:\r\n wfs.options.protocol.type === 'VECTOR' ||\r\n wfs.options.protocol.type === 'VectorTileLayer'\r\n ? wfs.options.protocol.url\r\n : wfs.options.protocol.url\r\n .substring(wfs.options.protocol.url.indexOf('http'))\r\n .replace(/&/g, '&') + '&',\r\n cluster: wfs.cluster === 'true', // Default is false\r\n clustercount: wfs.clustercount === 'true',\r\n clusterdistance: wfs.clusterdistance\r\n ? parseInt(wfs.clusterdistance, 10)\r\n : 0,\r\n clusterstyle: clusterstyle ? clusterstyle : stylesld,\r\n clustertooltip: wfs.clustertooltip,\r\n clusterwrapx: wfs.clusterwrapx !== 'false', // Default is true\r\n name: featuretype,\r\n providerName: wfs.subname,\r\n provider: wfs.provider,\r\n format: 'application/json',\r\n version,\r\n coordinate_system: this.mapConfig.coordinate_system,\r\n dataprojection: wfs.options.dataprojection,\r\n srs_dimension: srsDim,\r\n minScale: wfs.options.minscale,\r\n maxScale: wfs.options.maxscale,\r\n extent: this.mapConfig.extent,\r\n extentUnits: 'm',\r\n id: this.mapConfig.layers.length + 8001,\r\n legendGraphicUrl: '',\r\n sortingIndex: -1,\r\n layerorder: wfs.layerorder,\r\n tiled: wfs.options.singletile !== 'true',\r\n noProxy: wfs.noproxy === 'true',\r\n style: stylesld,\r\n jsonstyleurl,\r\n jsonstyle,\r\n featureInfoTitle:\r\n wfs.featureinfo.title === undefined ? '' : wfs.featureinfo.title,\r\n tooltipTemplate:\r\n wfs.featureinfo.tooltiptemplate === undefined\r\n ? ''\r\n : wfs.featureinfo.tooltiptemplate,\r\n showDialog,\r\n featureInfoElement: featureElementInfo,\r\n openNewWindow,\r\n openParentWindow,\r\n windowWidth: wfs.featureinfo.width,\r\n editable: featureEditable,\r\n attachment: featureAttachment,\r\n showpopupwithdata,\r\n showpopuplibrary,\r\n showneighborlist,\r\n advancedfilter,\r\n popupwithdatatitle: wfs.featureinfo.popupwithdatatitle,\r\n metadataurl: wfs.featureinfo.metadataurl,\r\n metadataservices: wfs.featureinfo.metadataservices || [],\r\n layertype: wfs.featureinfo.layertype || '',\r\n customparameters: wfs.options?.protocol?.params?.customparams,\r\n geometryType: wfs.featureinfo.geometrytype,\r\n sendUserName: wfs.featureinfo.sendusername,\r\n useexternaluri: wfs.featureinfo.useexternaluri,\r\n loadingstrategy: wfs.featureinfo.loadingstrategy, \r\n },\r\n ],\r\n guid: wfs.guid,\r\n name: wfs.subname,\r\n visibleOnLoad: wfs.display === 'true',\r\n groupId: catIds,\r\n temporaryLayer: wfs.temporaryLayer ? wfs.temporaryLayer : false\r\n });\r\n this.mapConfig.layers.push(newIsyLayer);\r\n }\r\n\r\n private _getConfigValue(attribute, value): any {\r\n if (attribute != null) {\r\n switch (typeof attribute) {\r\n case 'boolean':\r\n value = attribute;\r\n break;\r\n case 'string':\r\n switch (attribute.toLowerCase()) {\r\n case 'true':\r\n value = true;\r\n break;\r\n case 'false':\r\n value = false;\r\n break;\r\n }\r\n break;\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n private _addWms(wms: IWms): void {\r\n this._addLayer('WMS', wms);\r\n }\r\n\r\n private _addWmts(wmts): void {\r\n this._addLayer('WMTS', wmts);\r\n }\r\n\r\n private _removeWms(wmsName: string): void {\r\n this._removeLayer(wmsName);\r\n }\r\n\r\n private _removeLayer(wmsName: string): void {\r\n this.mapConfig.layers = this.mapConfig.layers.filter(\r\n (obj) => obj.name !== wmsName\r\n );\r\n }\r\n\r\n private _addLayer(sourceType: string, wms: IWms): void {\r\n if (!(wms && wms.layers && wms.layers.layer)) {\r\n // not valid\r\n console.error(`Layer '${wms.name}' is not valid`);\r\n return;\r\n }\r\n\r\n let catIds = ['999'];\r\n if (wms.groupid != null) {\r\n catIds = wms.groupid.toString().split(',');\r\n this._createNotExistGroup(catIds, wms.name, wms.name);\r\n } else {\r\n if (wms.options.isbaselayer === 'false') {\r\n this._createDummyGroup();\r\n }\r\n }\r\n\r\n wms.sourceType = sourceType;\r\n this._initializeWmsUrl(wms);\r\n\r\n // Find preferred featureInfoFormat:\r\n const preferredFeatureInfoFormats = [\r\n 'application/json',\r\n 'application/geojson',\r\n 'text/xml',\r\n 'application/vnd.ogc.gml',\r\n ];\r\n let preferredFeatureInfoFormat = '';\r\n\r\n const featureElementInfo = [];\r\n let featureInfoTitle = '';\r\n if (\r\n wms.layers &&\r\n wms.layers.layer &&\r\n wms.layers.layer[0] &&\r\n wms.layers.layer[0].featureinfo\r\n ) {\r\n const featureInfo = wms.layers.layer[0].featureinfo;\r\n const featureElements =\r\n featureInfo.featureinfoelement instanceof Array\r\n ? featureInfo.featureinfoelement\r\n : [featureInfo.featureinfoelement];\r\n featureInfoTitle = featureInfo.title;\r\n let element = {};\r\n for (const featureElement of featureElements) {\r\n element = {\r\n name: featureElement.name,\r\n text: featureElement.text,\r\n hascodelist: featureElement.hascodelist\r\n ? featureElement.hascodelist\r\n : 'false',\r\n codevalue: [...featureElement.codevalue],\r\n codelistid: wms.layers.layer[0].featureinfo.codelistid,\r\n datatype: featureElement.datatype,\r\n editable: featureElement.editable ? featureElement.editable : 'false',\r\n attachment: featureElement.attachment\r\n ? featureElement.attachment\r\n : 'false',\r\n };\r\n featureElementInfo.push(element);\r\n }\r\n }\r\n\r\n if (wms.params && wms.params.getfeatureinfo) {\r\n if (\r\n wms.params.featureinfoformats &&\r\n wms.params.featureinfoformats.format\r\n ) {\r\n const formats = wms.params.featureinfoformats.format;\r\n preferredFeatureInfoFormat = formats['0'];\r\n for (const format of preferredFeatureInfoFormats) {\r\n if (this._supportsFeatureInfoFormat(formats, format)) {\r\n preferredFeatureInfoFormat = format;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n const newIsyLayer = new DomainLayer({\r\n subLayers: [\r\n {\r\n title: wms.name,\r\n name: this._getNewLayers(wms.params?.layers, wms.url),\r\n providerName: this._getNewLayers(wms.params?.layers, wms.url),\r\n provider: wms.provider,\r\n source: wms.sourceType,\r\n gatekeeper: wms.gatekeeper === 'true',\r\n url: wms.url,\r\n format: wms.params?.format,\r\n coordinate_system: this.mapConfig.coordinate_system,\r\n extent: this.mapConfig.extent,\r\n extentUnits: this.mapConfig.extentUnits,\r\n matrixPrefix: wms.matrixprefix,\r\n matrixSet: wms.matrixset,\r\n numberOfZoomLevels: wms.numberofzoomlevels,\r\n neededResources: wms.neededResources,\r\n numZoomLevels: this.mapConfig.numZoomLevels,\r\n id: this.mapConfig.layers.length + 1001,\r\n transparent: true,\r\n opacity: wms.options.opacity,\r\n timeoptions: wms.options.timeoptions,\r\n layers: wms.layers.layer,\r\n layerIndex: -1,\r\n legendGraphicUrl: this._getLegendGraphicUrlWms(wms),\r\n minScale: wms.options.minscale,\r\n maxScale: wms.options.maxscale,\r\n sortingIndex: -1,\r\n layerorder: wms.layerorder,\r\n featureInfoElement: featureElementInfo,\r\n featureInfoTitle,\r\n featureInfo: {\r\n supportsGetFeatureInfo: wms.params?.getfeatureinfo === 'true',\r\n getFeatureInfoFormat: preferredFeatureInfoFormat,\r\n getFeatureInfoCrs: '',\r\n supportsGetFeature: true,\r\n getFeatureBaseUrl: '',\r\n getFeatureFormat: preferredFeatureInfoFormat,\r\n getFeatureCrs: 'EPSG:4326',\r\n },\r\n customparameters: wms?.params?.customparams,\r\n tiled: wms.options.singletile !== 'true',\r\n crossOrigin: 'anonymous', \r\n attribution: wms.attribution, \r\n },\r\n ],\r\n guid: wms.guid,\r\n name: wms.name,\r\n groupId: catIds,\r\n visibleOnLoad: wms.options.visibility === 'true',\r\n id: this.mapConfig.layers.length + 1001,\r\n isBaseLayer: wms.options.isbaselayer === 'true',\r\n previewActive: false,\r\n opacity: 1,\r\n timeoptions: wms.options.timeoptions,\r\n mapLayerIndex: wms.layerorder,\r\n legendGraphicUrls: [],\r\n selectedLayerOpen: false,\r\n noProxy: wms.noproxy === 'true',\r\n });\r\n this.mapConfig.layers.push(newIsyLayer);\r\n }\r\n private _getLegendGraphicUrlWms(wms: any) {\r\n const url =\r\n wms.layers.layer.length > 0\r\n ? wms.layers.layer[0].legendurl || wms.legendgraphicurl || ''\r\n : wms.legendgraphicurl || '';\r\n return url;\r\n }\r\n\r\n private _supportsFeatureInfoFormat(formats, format): boolean {\r\n let retval = false;\r\n formats.forEach((supportedFormat) => {\r\n if (format.toLowerCase() === supportedFormat.toLowerCase()) {\r\n retval = true;\r\n }\r\n });\r\n return retval;\r\n }\r\n\r\n private _getNewLayers(layers, urls): any {\r\n if (urls?.length) {\r\n if (\r\n urls[0].indexOf(this.oldNibUrl) > 0 ||\r\n urls[0].indexOf(this.newNibUrl) > 0\r\n ) {\r\n layers = '0';\r\n }\r\n }\r\n return layers;\r\n }\r\n\r\n private _createNotExistGroup(grpIds, name, parentId): void {\r\n const notExistGroups = this._findGroupExistance(grpIds);\r\n for (const grpId of notExistGroups) {\r\n this._createGroup(\r\n grpId,\r\n name,\r\n parentId,\r\n undefined,\r\n undefined\r\n );\r\n }\r\n }\r\n\r\n private _findGroupExistance(grpIds): any {\r\n const notExistGroups = [];\r\n for (const grpId of grpIds) {\r\n if (this.groupIds.indexOf(grpId) === -1) {\r\n notExistGroups.push(grpId);\r\n }\r\n }\r\n return notExistGroups;\r\n }\r\n\r\n private _createDummyGroup(): void {\r\n // dummy category for layers without group id\r\n if (this.notDummyGroup === false) {\r\n this._createGroup(\r\n '999',\r\n 'other_layers',\r\n 'Andre lag',\r\n undefined,\r\n undefined\r\n );\r\n this.notDummyGroup = true;\r\n }\r\n }\r\n\r\n private _initializeWmsUrl(wms): void {\r\n if (typeof wms.url !== 'object') {\r\n wms.url = wms.url.replace(/&/g, '&');\r\n } else if (wms.url.indexOf('|') > 0) {\r\n const urls = wms.url.split('|');\r\n for (let i = 0; i < urls.length; i++) {\r\n urls[i] = this._fixNibUrl(urls[i]);\r\n }\r\n wms.url = urls[0]; // WM-4274\r\n this._fixTopoUrls(wms);\r\n } else {\r\n this._fixSpecialUrl(wms);\r\n }\r\n }\r\n\r\n private _fixNibUrl(url): any {\r\n const iPos = url.indexOf(this.oldNibUrl);\r\n if (iPos > 0) {\r\n url =\r\n url.substr(0, iPos) +\r\n this.newNibUrl +\r\n url.substr(iPos + this.oldNibUrl.length);\r\n switch (this.mapConfig.coordinate_system) {\r\n case 'EPSG:25832':\r\n case 'EPSG:32632':\r\n url += '32';\r\n break;\r\n case 'EPSG:25833':\r\n case 'EPSG:32633':\r\n url += '33';\r\n break;\r\n case 'EPSG:25835':\r\n case 'EPSG:32635':\r\n url += '35';\r\n break;\r\n default:\r\n console.error(\r\n url + ' støtter ikke ' + this.mapConfig.coordinate_system\r\n );\r\n break;\r\n }\r\n url += '_v2';\r\n } else if (url.indexOf(this.newNibUrl) > 0 && url.indexOf('_v2') < 0) {\r\n url += '_v2';\r\n }\r\n return url;\r\n }\r\n\r\n private _fixTopoUrls(wms): void {\r\n const iPos = wms.url[0].indexOf(this.oldTopoUrl);\r\n if (iPos > 0) {\r\n const params = {};\r\n const regex = /([^?=&]+)(=([^&]*))?/g;\r\n let match;\r\n while ((match = regex.exec(wms.url[0])) !== null) {\r\n params[match[1].toLowerCase()] = match[3];\r\n }\r\n for (let i = 0; i < this.oldTopoLayers.length; i++) {\r\n if (params['layers'] === this.oldTopoLayers[i]) {\r\n if (Array.isArray(wms.url)) {\r\n for (let j = 0; j < wms.url.length; j++) {\r\n if (\r\n this._stringEndsWith(wms.url[j], '=' + this.oldTopoLayers[i])\r\n ) {\r\n wms.url[j] = wms.url[j].replace(\r\n '=' + this.oldTopoLayers[i],\r\n '=' + this.newTopoLayers[i]\r\n );\r\n }\r\n }\r\n }\r\n wms.params.layers = this.newTopoLayers[i];\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _fixSpecialUrl(wms): void {\r\n let iPos = wms.url.indexOf(this.oldNibUrl);\r\n if (iPos > 0) {\r\n wms.url = this._fixNibUrl(wms.url);\r\n return;\r\n }\r\n iPos = wms.url.indexOf(this.newNibWmtsUrl);\r\n if (iPos > 0) {\r\n wms.matrixset = 'default028mm';\r\n const theUrl = wms.url.substr(0, wms.url.indexOf('gk.open_nib_utm'));\r\n switch (this.mapConfig.coordinate_system) {\r\n case 'EPSG:25832':\r\n case 'EPSG:32632':\r\n wms.params.layers = 'Nibcache_UTM32_EUREF89_v2';\r\n wms.url = `${theUrl}gk.open_nib_utm32_wmts_v2`;\r\n break;\r\n case 'EPSG:25833':\r\n case 'EPSG:32633':\r\n wms.params.layers = 'Nibcache_UTM33_EUREF89_v2';\r\n wms.url = `${theUrl}gk.open_nib_utm33_wmts_v2`;\r\n break;\r\n case 'EPSG:25835':\r\n case 'EPSG:32635':\r\n wms.params.layers = 'Nibcache_UTM35_EUREF89_v2';\r\n wms.url = `${theUrl}gk.open_nib_utm35_wmts_v2`;\r\n break;\r\n default:\r\n console.error(\r\n `${wms.url} støtter ikke ${this.mapConfig.coordinate_system}`\r\n );\r\n break;\r\n }\r\n return;\r\n }\r\n for (const oldUrl of this.oldGwcUrl) {\r\n iPos = wms.url.indexOf(oldUrl);\r\n if (iPos > 0) {\r\n const urls = this.newGwcUrl.map(\r\n (newUrl) => `https://${newUrl}${wms.url.substr(iPos + oldUrl.length)}`\r\n );\r\n wms.url = urls[0]; // WM-4274\r\n }\r\n }\r\n }\r\n\r\n private _stringEndsWith(str, endstr): boolean {\r\n return str.substring(str.length - endstr.length, str.length) === endstr;\r\n }\r\n\r\n addGeoJson(geoJson: AddGeoJsonOptions) {\r\n let layerExist;\r\n this.mapConfig.layers.forEach((l) => {\r\n if (l.name === geoJson.layerName) {\r\n layerExist = l;\r\n }\r\n });\r\n if (layerExist) {\r\n if (layerExist.subLayers[0].url !== geoJson.features) {\r\n layerExist.subLayers[0].url = geoJson.features;\r\n }\r\n if (layerExist.subLayers[0].jsonstyle !== geoJson.jsonStyle) {\r\n layerExist.subLayers[0].jsonstyle = geoJson.jsonStyle;\r\n }\r\n this.maplibng.map().reloadLayer(layerExist);\r\n return;\r\n }\r\n const geoJsonFeatureInfoElements = [];\r\n if (geoJson.featureInfoElements) {\r\n const featureElements = JSON.parse(geoJson.featureInfoElements);\r\n featureElements.forEach((f) => {\r\n const newFeatureInfoElement = new FeatureInfoElement(\r\n f['name'],\r\n f['text']\r\n );\r\n geoJsonFeatureInfoElements.push(newFeatureInfoElement);\r\n });\r\n }\r\n const newFeatureInfo = new FeatureInfoProjectConfig(\r\n geoJsonFeatureInfoElements\r\n );\r\n newFeatureInfo.title = geoJson.featureInfoTitle;\r\n const newParams = new Params(\r\n undefined,\r\n undefined,\r\n geoJson.typeName ? geoJson.typeName : geoJson.layerName\r\n );\r\n const newProtocol = new Protocol(\r\n newParams,\r\n geoJson.features,\r\n geoJson.version ? geoJson.version : '1.0.0'\r\n );\r\n newProtocol.type = 'VECTOR';\r\n const newVectorOptions = new VectorOptions(newProtocol);\r\n const newVector = new Vector(\r\n geoJson.layerName,\r\n getUniqueId(4),\r\n newFeatureInfo,\r\n newVectorOptions\r\n );\r\n newVector.jsonstyle = geoJson.jsonStyle;\r\n newVector.noproxy = 'true';\r\n newVector.display = 'true';\r\n\r\n newVector.cluster = String(geoJson.cluster);\r\n newVector.clustercount = String(geoJson.clustercount);\r\n newVector.clusterdistance = String(geoJson.clusterdistance);\r\n newVector.clusterstyleurl = geoJson.clusterstyleurl;\r\n newVector.clusterstyle = geoJson.clusterstyle;\r\n // console.log('geoJson.layerOrder', geoJson.layerOrder);\r\n newVector.layerorder = geoJson.layerOrder ? Number(geoJson.layerOrder) : 0;\r\n newVector.temporaryLayer = true;\r\n this._addWfs(newVector);\r\n // this.projectConfig.config.vector.push(newVector);\r\n this._updateLayersSortingIndex();\r\n let activateLayer;\r\n this.mapConfig.layers.forEach((l) => {\r\n if (l.guid === newVector.guid) {\r\n activateLayer = l;\r\n }\r\n });\r\n this.maplibng.repository().getMapConfigFromJson(this.mapConfig);\r\n\r\n // this.projectConfigAction.next(this.projectConfig);\r\n this.maplibng.map().showLayer(activateLayer);\r\n this.commonService.updateLayerGroups();\r\n }\r\n\r\n}\r\n","import {\r\n AfterContentInit,\r\n ContentChild,\r\n Directive,\r\n OnInit,\r\n} from '@angular/core';\r\nimport { IPopover } from '@isygis/isy-configs';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyMapEmitterService } from './isy-map-emitter.service';\r\nimport { IsyMapComponent } from './isy-map.component';\r\nimport { IsyMapService } from './isy-map.service';\r\nimport { MapLibNgService } from './maplibng.service';\r\n\r\ninterface ITooltipData {\r\n properties: any;\r\n template: string;\r\n layer: any;\r\n}\r\n\r\ninterface ITooltipMapPosition {\r\n client: number[];\r\n coordinate: number[];\r\n epsg: string;\r\n pixel: number[];\r\n zoom: number;\r\n}\r\n\r\ninterface ITooltip {\r\n data: ITooltipData[];\r\n mapPosition: ITooltipMapPosition;\r\n}\r\n\r\n@Directive({\r\n selector: '[libMapPopoverTooltip]',\r\n})\r\nexport class MapPopoverTooltipDirective implements OnInit, AfterContentInit {\r\n subscription: Subscription = new Subscription();\r\n popoverHtml: string;\r\n featurePopover;\r\n popoverParams: IPopover[];\r\n\r\n @ContentChild(IsyMapComponent) popChild;\r\n\r\n constructor(\r\n private mapEmitterService: IsyMapEmitterService,\r\n private isyMapService: IsyMapService,\r\n private mapLibNgService: MapLibNgService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapEmitterService.featurePopoverStartEmitter$.subscribe(\r\n (value: ITooltip) => {\r\n if (value) {\r\n if (value.data?.length === 0) {\r\n this._hidePopover();\r\n return;\r\n }\r\n if (value.data?.length === 1) {\r\n this._showPopover(value);\r\n } else {\r\n this._hidePopover();\r\n }\r\n }\r\n }\r\n )\r\n );\r\n\r\n this.subscription.add(\r\n this.mapEmitterService.featurePopoverEndEmitter$.subscribe(\r\n () => {\r\n this._hidePopover();\r\n }\r\n )\r\n );\r\n\r\n this.subscription.add(\r\n this.isyMapService.popoverParams$.subscribe((value: any) => {\r\n this.popoverParams = value;\r\n })\r\n );\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n // This is not working\r\n this.featurePopover = document.getElementById('popover');\r\n }\r\n\r\n private _showPopover(value: ITooltip): void {\r\n this.generateHtmlPopover(value);\r\n const popoverElement = document.getElementById('popover');\r\n const element = document.getElementById('popup-content');\r\n\r\n if (\r\n this.popoverHtml &&\r\n this.popoverHtml.length > 0 &&\r\n popoverElement &&\r\n element\r\n ) {\r\n // Show popover with content\r\n popoverElement.style.display = 'block';\r\n element.innerHTML = this.popoverHtml;\r\n // if (featureInfoEnd.features && featureInfoEnd.features.length === 1) {\r\n // Set center to feature\r\n const epsgKode = value.mapPosition.epsg;\r\n const coords = value.mapPosition.coordinate;\r\n const lon = coords[0];\r\n const lat = coords[1];\r\n const zoom = this.mapLibNgService.map().getZoom();\r\n this.mapLibNgService.map().setAnimationActive(true);\r\n this.mapLibNgService\r\n .map()\r\n .setCenter({ lon: lon, lat: lat, epsg: epsgKode, zoom: zoom });\r\n // }\r\n } else {\r\n // Hide popover\r\n if (popoverElement && element) {\r\n popoverElement.style.display = 'none';\r\n element.innerHTML = '';\r\n }\r\n }\r\n }\r\n\r\n private _hidePopover(): void {\r\n this.popoverHtml = '';\r\n const element = document.getElementById('popover');\r\n if (element) {\r\n element.style.display = 'none';\r\n }\r\n }\r\n\r\n private generateHtmlPopover(value: ITooltip): void {\r\n let replacedHtml = '';\r\n value.data.forEach((t) => {\r\n this.popoverParams.forEach((p) => {\r\n // If popoverparam layer name matches clicked layer name, generate html\r\n if (p.layerName === t.layer.name) {\r\n const regex = /{(\\w+)}/g;\r\n replacedHtml = p.template.replace(regex, (match, key) => {\r\n // console.log(match, key);\r\n return t.properties[key] || '';\r\n });\r\n }\r\n });\r\n // console.log(t, index);\r\n });\r\n this.popoverHtml = replacedHtml;\r\n\r\n // Self defined popover background color\r\n const popoverBgColor = document.querySelector('.ol-popup');\r\n if (popoverBgColor) {\r\n popoverBgColor['style'].setProperty(\r\n '--popoverCustomColor',\r\n this.popoverParams[0].popoverColor\r\n );\r\n }\r\n }\r\n}\r\n","import {\r\n Directive,\r\n OnInit,\r\n ContentChild,\r\n AfterContentInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { IsyMapEmitterService } from './isy-map-emitter.service';\r\nimport { IsyMapComponent } from './isy-map.component';\r\nimport { objectKeysToLowerCase } from '@isygis/isy-utils';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyPicklistService, IPicklistResult } from '@isygis/isy-app-services';\r\n\r\ninterface ITooltipData {\r\n properties: any;\r\n template: string;\r\n layer: any;\r\n}\r\n\r\nexport interface ITooltipMapPosition {\r\n client: number[];\r\n coordinate: number[];\r\n epsg: string;\r\n pixel: number[];\r\n zoom: number;\r\n}\r\n\r\ninterface ITooltip {\r\n data: ITooltipData[];\r\n mapPosition: ITooltipMapPosition;\r\n}\r\n\r\n@Directive({\r\n selector: '[libMapTooltip]',\r\n})\r\nexport class MapTooltipDirective\r\n implements OnInit, AfterContentInit, OnDestroy\r\n{\r\n featureTooltip;\r\n tooltipHtml: string;\r\n subscription: Subscription = new Subscription();\r\n picklistResult: IPicklistResult[];\r\n\r\n @ContentChild(IsyMapComponent) popChild;\r\n\r\n constructor(\r\n private mapEmitterService: IsyMapEmitterService,\r\n private picklistService: IsyPicklistService\r\n ) {\r\n this.picklistResult = this.picklistService.picklistResult;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.picklistService.picklistResult$.subscribe(\r\n (result: IPicklistResult[]) => {\r\n if (result && Array.isArray(result)) {\r\n result.forEach((item: IPicklistResult) => {\r\n const exists = this.picklistService.picklistLookup(\r\n item.objektkatalognavn,\r\n item.egenskapsnavn,\r\n item.verdi\r\n );\r\n if (!exists) {\r\n this.picklistResult.push(item);\r\n }\r\n });\r\n }\r\n }\r\n )\r\n );\r\n\r\n this.subscription.add(\r\n this.mapEmitterService.featureHoverStartEmitter$.subscribe(\r\n (value: ITooltip) => {\r\n if (!value) {\r\n return;\r\n }\r\n if (value.data.length === 0) {\r\n this._hideTooltip();\r\n return;\r\n }\r\n\r\n if (this.popChild.pop) {\r\n this.popChild.pop.tooltip = ' ';\r\n }\r\n this.generateHtmlTooltip(value, true);\r\n this._updateTooltipPosition(value.mapPosition.client);\r\n this._showTooltip();\r\n }\r\n )\r\n );\r\n\r\n this.subscription.add(\r\n this.mapEmitterService.featureHoverEndEmitter$.subscribe(() => {\r\n this._hideTooltip();\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.mapEmitterService.mapMoveStartEmitter$.subscribe(() => {\r\n this._hideTooltip();\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.mapEmitterService.featureHoverMoveEmitter$.subscribe(\r\n (value: ITooltip) => {\r\n if (!value) {\r\n return;\r\n }\r\n if (value.data.length === 0) {\r\n this._hideTooltip();\r\n return;\r\n }\r\n\r\n this.generateHtmlTooltip(value, false);\r\n this._updateTooltipPosition(value.mapPosition.client);\r\n this._showTooltip();\r\n }\r\n )\r\n );\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.featureTooltip = document.getElementById('featureTooltip');\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private generateHtmlTooltip(value: ITooltip, hoverStart: boolean): void {\r\n // get picklist values\r\n const codelistId = new Array(value.data.length).fill('');\r\n value.data.forEach((t, index) => {\r\n if (\r\n t?.layer?.featureInfoElement &&\r\n t.layer.featureInfoElement.length > 0\r\n ) {\r\n t.layer.featureInfoElement.forEach((infoElement) => {\r\n if (infoElement.hascodelist === 'true') {\r\n codelistId[index] = infoElement.codelistid; // Assume same codelistId for all data in same feature\r\n if (hoverStart) {\r\n this.picklistService.picklistRetrieve(\r\n infoElement.codelistid,\r\n infoElement.name,\r\n t.properties[infoElement.name]\r\n );\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n const htmlData = [];\r\n value.data.forEach((tooltipData, index) => {\r\n if (!tooltipData.template) {\r\n return;\r\n }\r\n if (tooltipData.template.indexOf('{') !== -1) {\r\n const splitTemplate = this.extract(['{', '}'])(tooltipData.template);\r\n let text = tooltipData.template;\r\n const properties = objectKeysToLowerCase(tooltipData.properties);\r\n splitTemplate.forEach((data: string) => {\r\n const regex = new RegExp('{' + data.toLowerCase() + '}', 'gi');\r\n const lookedUp = this.picklistService.picklistLookup(\r\n codelistId[index],\r\n data.toLowerCase(),\r\n properties[data.toLowerCase()]\r\n );\r\n text = text.replace(\r\n regex,\r\n lookedUp\r\n ? lookedUp.forklaring\r\n : properties[data.toLowerCase()] || ''\r\n ); // Todo: Lookup codelists?\r\n });\r\n htmlData.push(text);\r\n } else if (tooltipData.template.indexOf('<') !== -1) {\r\n if (tooltipData.template.indexOf('\\n') !== -1) {\r\n const re = /\\n/gi;\r\n tooltipData.template = tooltipData.template.replace(re, '
    ');\r\n }\r\n htmlData.push(tooltipData.template);\r\n } else {\r\n htmlData.push(tooltipData.template);\r\n }\r\n });\r\n if (htmlData.length > 0) {\r\n this.tooltipHtml = `
      \r\n ${htmlData\r\n .map(\r\n (data) =>\r\n `
    • ${data}
    • `\r\n )\r\n .join('')}\r\n
    `;\r\n } else {\r\n this._hideTooltip();\r\n }\r\n }\r\n\r\n private extract([beg, end]): any {\r\n const matcher = new RegExp(`${beg}(.*?)${end}`, 'gm');\r\n const normalise = (str) => str.slice(beg.length, end.length * -1);\r\n return (str): any => str.match(matcher).map(normalise);\r\n }\r\n\r\n private _showTooltip(): void {\r\n if (this.tooltipHtml === '') {\r\n return;\r\n }\r\n if (this.popChild.pop) {\r\n this.popChild.pop.show();\r\n }\r\n this._fixHtmlTooltip();\r\n }\r\n\r\n private _hideTooltip(): void {\r\n this.tooltipHtml = '';\r\n if (this.popChild.pop) {\r\n this.popChild.pop.hide();\r\n }\r\n }\r\n\r\n private _fixHtmlTooltip(): void {\r\n if (this.tooltipHtml && this.tooltipHtml.length > 0) {\r\n const element = document.getElementsByClassName('tooltip-inner');\r\n if (element && element.length > 0) {\r\n element[0].innerHTML = this.tooltipHtml;\r\n }\r\n }\r\n }\r\n\r\n private _updateTooltipPosition(client): void {\r\n const isyMap = document.getElementById('map');\r\n if (this.featureTooltip) {\r\n this.featureTooltip.style.top = client[1] - isyMap.offsetTop + 'px';\r\n this.featureTooltip.style.left = client[0] - isyMap.offsetLeft + 'px';\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n EventsEventHandler,\r\n RepositoryConfigRepository,\r\n MapAPIMap,\r\n MapAPIFeatureInfo,\r\n MapAPILayers,\r\n MapAPIGroups,\r\n MapAPICategories,\r\n MapAPIToolsTools,\r\n MapAPIToolsToolFactory,\r\n MapAPIParsersBase,\r\n MapAPIParsersGeoJSON,\r\n MapAPIParsersGML,\r\n MapAPIParsersFactory,\r\n MapImplementationMap,\r\n MapImplementationUtilities,\r\n MapImplementationMeasure,\r\n MapImplementationFeatureInfo,\r\n MapImplementationExport,\r\n MapImplementationHoverInfo,\r\n MapImplementationMeasureLine,\r\n MapImplementationDrawFeature,\r\n MapImplementationAddLayerFeature,\r\n MapImplementationModifyFeature,\r\n MapImplementationDrawingManager,\r\n MapImplementationPrintBoxSelect,\r\n MapImplementationFeatureSelector,\r\n MapImplementationGetClickCoordinates,\r\n MapImplementationDrawBox,\r\n MapImplementationLinePositionMarker,\r\n MapImplementationPopoverInfo,\r\n MapImplementationFeatureHighlighter,\r\n EventsEventTypes,\r\n GisExtent,\r\n} from '@isygis/maplibng';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { GisCoordinate } from '@isygis/isy-configs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MapLibNgService {\r\n eventsEventHandler: EventsEventHandler;\r\n repositoryConfigRepository: RepositoryConfigRepository;\r\n\r\n // MapImplementation\r\n mapImplementationMap: MapImplementationMap;\r\n mapImplementationUtilities: MapImplementationUtilities;\r\n mapImplementationMeasure: MapImplementationMeasure;\r\n mapImplementationFeatureInfo: MapImplementationFeatureInfo;\r\n mapImplementationExport: MapImplementationExport;\r\n mapImplementationHoverInfo: MapImplementationHoverInfo;\r\n mapImplementationMeasureLine: MapImplementationMeasureLine;\r\n mapImplementationDrawFeature: MapImplementationDrawFeature;\r\n mapImplementationAddLayerFeature: MapImplementationAddLayerFeature;\r\n mapImplementationModifyFeature: MapImplementationModifyFeature;\r\n mapImplementationDrawingManager: MapImplementationDrawingManager;\r\n mapImplementationPrintBoxSelect: MapImplementationPrintBoxSelect;\r\n mapImplementationFeatureSelector: MapImplementationFeatureSelector;\r\n mapImplementationGetClickCoordinates: MapImplementationGetClickCoordinates;\r\n mapImplementationDrawBox: MapImplementationDrawBox;\r\n mapImplementationLinePositionMarker: MapImplementationLinePositionMarker;\r\n mapImplementationPopoverInfo: MapImplementationPopoverInfo;\r\n mapImplementationFeatureHighlighter: MapImplementationFeatureHighlighter;\r\n\r\n // mapAPI\r\n mapAPIMap: MapAPIMap;\r\n mapAPIFeatureInfo: MapAPIFeatureInfo;\r\n mapAPILayers: MapAPILayers;\r\n mapAPIGroups: MapAPIGroups;\r\n mapAPICategories: MapAPICategories;\r\n mapAPIToolsTools: MapAPIToolsTools;\r\n mapAPIToolsToolFactory: MapAPIToolsToolFactory;\r\n mapAPIParsersBase: MapAPIParsersBase;\r\n mapAPIParsersGeoJSON: MapAPIParsersGeoJSON;\r\n mapAPIParsersGML: MapAPIParsersGML;\r\n mapAPIParsersFactory: MapAPIParsersFactory;\r\n\r\n eventsEventTypes = EventsEventTypes;\r\n\r\n constructor(private httpHelper: HttpClient) {}\r\n\r\n init(): void {\r\n this.eventsEventHandler = new EventsEventHandler();\r\n this.repositoryConfigRepository = new RepositoryConfigRepository(\r\n this.eventsEventHandler,\r\n this.httpHelper\r\n );\r\n this.mapImplementationUtilities = new MapImplementationUtilities();\r\n this.mapImplementationMeasure = new MapImplementationMeasure(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationFeatureInfo = new MapImplementationFeatureInfo();\r\n this.mapImplementationExport = new MapImplementationExport(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationHoverInfo = new MapImplementationHoverInfo(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationPopoverInfo = new MapImplementationPopoverInfo(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationMeasureLine = new MapImplementationMeasureLine(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationDrawFeature = new MapImplementationDrawFeature(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationAddLayerFeature =\r\n new MapImplementationAddLayerFeature(this.eventsEventHandler);\r\n this.mapImplementationModifyFeature = new MapImplementationModifyFeature(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationDrawingManager = new MapImplementationDrawingManager(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationPrintBoxSelect = new MapImplementationPrintBoxSelect(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationFeatureSelector =\r\n new MapImplementationFeatureSelector(this.eventsEventHandler);\r\n this.mapImplementationGetClickCoordinates =\r\n new MapImplementationGetClickCoordinates(this.eventsEventHandler);\r\n this.mapImplementationDrawBox = new MapImplementationDrawBox(\r\n this.eventsEventHandler\r\n );\r\n this.mapImplementationLinePositionMarker =\r\n new MapImplementationLinePositionMarker(this.eventsEventHandler);\r\n this.mapImplementationFeatureHighlighter = new MapImplementationFeatureHighlighter(this.eventsEventHandler);\r\n\r\n this.mapImplementationMap = new MapImplementationMap(\r\n this.repositoryConfigRepository,\r\n this.eventsEventHandler,\r\n this.httpHelper,\r\n this.mapImplementationMeasure,\r\n this.mapImplementationFeatureInfo,\r\n this.mapImplementationExport,\r\n this.mapImplementationHoverInfo,\r\n this.mapImplementationMeasureLine,\r\n this.mapImplementationDrawFeature,\r\n this.mapImplementationAddLayerFeature,\r\n this.mapImplementationModifyFeature,\r\n this.mapImplementationDrawingManager,\r\n this.mapImplementationPrintBoxSelect,\r\n this.mapImplementationFeatureSelector,\r\n this.mapImplementationGetClickCoordinates,\r\n this.mapImplementationDrawBox,\r\n this.mapImplementationLinePositionMarker,\r\n this.mapImplementationPopoverInfo,\r\n this.mapImplementationFeatureHighlighter\r\n );\r\n\r\n // init mapApi\r\n this.mapAPILayers = new MapAPILayers(this.mapImplementationMap);\r\n this.mapAPIGroups = new MapAPIGroups();\r\n this.mapAPICategories = new MapAPICategories();\r\n this.mapAPIParsersGeoJSON = new MapAPIParsersGeoJSON();\r\n this.mapAPIParsersGML = new MapAPIParsersGML(null, null, null); // er denne i bruk?\r\n this.mapAPIParsersFactory = new MapAPIParsersFactory(\r\n this.mapAPIParsersGeoJSON,\r\n this.mapAPIParsersGML,\r\n null,\r\n null\r\n );\r\n this.mapAPIParsersBase = new MapAPIParsersBase(this.mapAPIParsersFactory);\r\n this.mapAPIFeatureInfo = new MapAPIFeatureInfo(\r\n this.mapImplementationMap,\r\n this.httpHelper,\r\n this.eventsEventHandler,\r\n this.mapAPIParsersBase\r\n );\r\n this.mapAPIMap = new MapAPIMap(\r\n this.mapImplementationMap,\r\n this.eventsEventHandler,\r\n this.mapAPIFeatureInfo,\r\n this.mapAPILayers,\r\n this.mapAPIGroups,\r\n this.mapAPICategories\r\n );\r\n this.mapAPIToolsTools = new MapAPIToolsTools(\r\n this.mapAPIMap,\r\n // this.eventsEventHandler\r\n );\r\n this.mapAPIToolsToolFactory = new MapAPIToolsToolFactory(\r\n this.mapImplementationMap,\r\n this.mapAPIToolsTools\r\n );\r\n }\r\n\r\n map(): MapAPIMap {\r\n return this.mapAPIMap;\r\n }\r\n\r\n eventHandler(): EventsEventHandler {\r\n return this.eventsEventHandler;\r\n }\r\n\r\n eventTypes() {\r\n return this.eventsEventTypes;\r\n }\r\n\r\n repository(): RepositoryConfigRepository {\r\n return this.repositoryConfigRepository;\r\n }\r\n\r\n getCenter(epsg?: string): GisCoordinate | undefined {\r\n if (this.mapAPIMap) {\r\n return this.mapAPIMap.getCenter(epsg);\r\n }\r\n return undefined;\r\n }\r\n\r\n setCenter(coordinate: GisCoordinate): void {\r\n if (this.mapAPIMap) {\r\n this.mapAPIMap.setCenter(coordinate);\r\n }\r\n }\r\n\r\n getExtent(epsg?: string): GisExtent|undefined {\r\n return (this.mapAPIMap) \r\n ? this.mapAPIMap.getExtent(epsg)\r\n : undefined;\r\n }\r\n\r\n setExtent(extent: GisExtent): void {\r\n if (this.mapAPIMap) {\r\n this.mapAPIMap.setExtent(extent);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { MapLibNgService } from '../maplibng.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GeoJsonUtilsService {\r\n features;\r\n deleteFeature = false;\r\n geometryTypes = ['Point', 'LineString', 'Polygon', 'Text'];\r\n activeDrawPanelIndex = 0;\r\n color: string;\r\n fillColor: string;\r\n linedashValue;\r\n linewidthValue = 2;\r\n image;\r\n regularshape;\r\n drawTextValue = '';\r\n textsizeValue = 16;\r\n snapGuides = false;\r\n modify = false;\r\n selectedFeatureId;\r\n showMeasurements = false;\r\n opacityValue = 75;\r\n\r\n red = 0;\r\n blue = 0;\r\n green = 0;\r\n\r\n constructor(private mapLibNgService: MapLibNgService) {\r\n this.initStyle();\r\n }\r\n\r\n initStyle(): void {\r\n this.color = `rgba(${this.red},${this.green},${this.blue},1)`;\r\n this.fillColor = `rgba(${this.red},${this.green},${this.blue},${\r\n this.opacityValue / 100\r\n })`;\r\n this.image = {\r\n radius: 7,\r\n fill: {\r\n color: this.color,\r\n },\r\n };\r\n }\r\n setSearchResultStyle(): void {\r\n this.red = 255;\r\n this.opacityValue = 30;\r\n this.linewidthValue = 4;\r\n this.initStyle();\r\n }\r\n setVisPlanStyle(): void {\r\n this.blue = 0;\r\n this.red = 255;\r\n this.green = 0;\r\n this.opacityValue = 20;\r\n this.linewidthValue = 5;\r\n this.initStyle();\r\n }\r\n\r\n uploadGeoJson(data: any, showFeatureInfo?: boolean): void {\r\n // TODO: decide if tooltipTemplate will came as param or will be included inside GeoJson properties.\r\n this.features = data;\r\n try {\r\n this.mapLibNgService\r\n .map()\r\n .activateDrawingManager(this.createAdditionalOptions(showFeatureInfo));\r\n } catch {\r\n console.warn('something failed in drawingmanager on data: ', data);\r\n } finally {\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n }\r\n }\r\n\r\n private createAdditionalOptions(showFeatureInfo?: boolean): any {\r\n if (this.regularshape) {\r\n this.regularshape.fill = {\r\n color: this.color,\r\n };\r\n this.regularshape.stroke = {\r\n color: this.color,\r\n };\r\n }\r\n if (this.image) {\r\n this.image.fill = {\r\n color: this.color,\r\n };\r\n }\r\n return {\r\n GeoJSON: this.features ? this.features : 'remove',\r\n deleteFeature: this.deleteFeature,\r\n type: this.geometryTypes[this.activeDrawPanelIndex],\r\n style: {\r\n fill: {\r\n color: this.fillColor,\r\n },\r\n stroke: {\r\n color: this.color,\r\n lineDash: this.linedashValue,\r\n width: this.linewidthValue,\r\n },\r\n image: this.image,\r\n regularshape: this.regularshape,\r\n text:\r\n this.geometryTypes[this.activeDrawPanelIndex] === 'Text'\r\n ? this.drawTextValue\r\n : '',\r\n textSize: this.textsizeValue,\r\n },\r\n snapGuides: this.snapGuides,\r\n transformObj: false, // _transformObj,\r\n mode: this.modify ? 'modify' : 'draw', // _mode,\r\n selectedFeatureId: this.selectedFeatureId\r\n ? this.selectedFeatureId\r\n : undefined,\r\n selectionActive: this.selectedFeatureId ? true : false, // _selectedFeature === undefined ? false : true,\r\n showMeasurements: this.showMeasurements,\r\n textValue:\r\n this.geometryTypes[this.activeDrawPanelIndex] === 'Text'\r\n ? this.drawTextValue\r\n : '',\r\n modify: this.modify,\r\n showFeatureInfo,\r\n };\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'getAddressString',\r\n})\r\nexport class GetAddressStringPipe implements PipeTransform {\r\n transform(value: any, ...args: any[]): any {\r\n if (value) {\r\n return value.Name + ', ' + value.ZipCode + ' ' + value.PostalCode;\r\n }\r\n return null;\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IKommuneInfo } from '@isygis/isy-configs';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\n\r\n@Component({\r\n selector: 'lib-neighbor-print',\r\n templateUrl: './isy-neighbor-print.component.html',\r\n styleUrls: ['./isy-neighbor-print.component.scss'],\r\n})\r\nexport class IsyNeighborPrintComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n @Input() data: any;\r\n\r\n constructor(private mapService: IsyMapService) {}\r\n\r\n vm$ = combineLatest([this.mapService.kommuneInfoWithVaapenUrl$]).pipe(\r\n map(([kommuneInfoWithVaapenUrl]: [IKommuneInfo]) => ({\r\n kommuneInfo: kommuneInfoWithVaapenUrl,\r\n kommunenavn: kommuneInfoWithVaapenUrl\r\n ? kommuneInfoWithVaapenUrl.kommunenavn\r\n : undefined,\r\n showHeraldry: true,\r\n }))\r\n // tap(result => console.log('POSITION INFO: ', result))\r\n );\r\n\r\n printPreview(): void {\r\n window.print();\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {{vm.kommuneInfo.kommunenavn}} / {{vm.kommuneInfo.fylkesnavn}} \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Hovedeiendom\r\n

    \r\n
    \r\n
    \r\n
    Komm-Gnr/Bnr/Fnr/Snr
    \r\n
    {{data.feature.properties.KOMM + '-' + data.feature.properties.GNR + '/' + data.feature.properties.BNR + '/' +\r\n (data.feature.properties.FNR === null ? 0 : data.feature.properties.FNR) + '/' +\r\n (data.feature.properties.SNR === null ? 0 : data.feature.properties.SNR)}}\r\n
    \r\n
    \r\n
    \r\n
    Bruksnavn
    \r\n
    {{(data.feature.properties.BRUKSNAVN === null ? '' : data.feature.properties.BRUKSNAVN)}}
    \r\n
    \r\n
    \r\n
    Adresse(r)
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{(address.Name ? address.Name : '') + (address.ZipCode ? ', ' + address.ZipCode: '') + (address.PostalCode ? ' ' + address.PostalCode: '') }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n Naboeiendommer\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    Gnr/Bnr/Fnr/Snr
    \r\n
    {{neighbor.Gnr + '/' + neighbor.Bnr + '/' +\r\n (neighbor.Fnr === null ? 0 : neighbor.Fnr) + '/' +\r\n (neighbor.Snr === null ? 0 : neighbor.Snr)}}\r\n
    \r\n
    \r\n
    \r\n
    Bruksnavn
    \r\n
    {{(neighbor.Bruksnavn === null ? '' : neighbor.Bruksnavn)}}
    \r\n
    \r\n
    \r\n
    Adresse(r)
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{(address.Name ? address.Name : '') + (address.ZipCode ? ', ' + address.ZipCode: '') + (address.PostalCode ? ' ' + address.PostalCode: '') }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Eiere
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Eiere ikke tilgjengelig\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{owner.Name}}\r\n \r\n
    \r\n ({{owner.OrgNummer}})\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{owner.OwnerDescription}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{owner.Address | getAddressString}}\r\n
    \r\n
    \r\n {{owner.Ownership}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { fadeIn, fadeOut } from '@isygis/isy-animations';\r\nimport {\r\n IDomainFeature,\r\n IDomainLayer,\r\n ICadastre,\r\n} from '@isygis/isy-configs';\r\nimport {\r\n combineLatest,\r\n Subscription,\r\n BehaviorSubject\r\n} from 'rxjs';\r\nimport { map, tap, mergeMap, shareReplay } from 'rxjs/operators';\r\nimport { IsyMapService, MapLibNgService } from '@isygis/isy-map';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyAppMatrikkelService } from '@isygis/isy-app-services';\r\nimport { IsyNeighborService } from './isy-neighbor.service';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyNeighborPrintComponent } from './isy-neighbor-print/isy-neighbor-print.component';\r\nimport { IConfigJson } from '@isygis/isymap-config';\r\nimport { OwnerList2CSV } from '@isygis/isy-utils';\r\n\r\n@Component({\r\n selector: 'lib-isy-neighbor',\r\n templateUrl: './isy-neighbor.component.html',\r\n styleUrls: ['isy-neighbor.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n // pageAnimation\r\n trigger('fadeOut', fadeOut()),\r\n trigger('fadeIn', fadeIn(':enter')),\r\n ],\r\n})\r\nexport class IsyNeighborComponent implements OnInit, OnDestroy {\r\n isFeatureUrl = {};\r\n config: IConfigJson = this.mapService.getConfig();\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n featureResponse;\r\n maplibMap;\r\n eventHandler;\r\n eventTypes;\r\n spinnerShowing = true;\r\n private subscription: Subscription = new Subscription();\r\n neighbors;\r\n mainProperty;\r\n @Input() neighborsMapactionPosition = 'right';\r\n @Input() mode = 'featureInfo';\r\n @Output() neighborEmitter = new EventEmitter();\r\n constructor(\r\n private mapService: IsyMapService,\r\n private mapLibNgService: MapLibNgService,\r\n private matrikkelService: IsyAppMatrikkelService,\r\n private neighborService: IsyNeighborService,\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService,\r\n ) {\r\n this.maplibMap = this.mapLibNgService.map();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n }\r\n\r\n feature;\r\n featureInfoLayer;\r\n\r\n getAddressesFromCadastre$ = combineLatest([\r\n this.neighborService.propertyInfoAction$,\r\n ]).pipe(\r\n mergeMap(([propertyInfo]: [ICadastre]) => {\r\n if (propertyInfo) {\r\n this.neighborService.setSpinnerStatus(true);\r\n return this.matrikkelService.getAddressesFromCadastre(\r\n propertyInfo.komm,\r\n propertyInfo.gnr,\r\n propertyInfo.bnr,\r\n propertyInfo.fnr,\r\n propertyInfo.snr\r\n );\r\n } else {\r\n return Promise.resolve(undefined);\r\n }\r\n }),\r\n map((value) => {\r\n if (value && value['Addresser']) {\r\n return value['Addresser'];\r\n }\r\n return undefined;\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n private newCadastreAction = new BehaviorSubject(undefined);\r\n findMatrikkelenhetForUnikId$ = combineLatest([this.newCadastreAction]).pipe(\r\n mergeMap(([newCadastre]: [any]) => {\r\n if (newCadastre) {\r\n this.neighborService.setSpinnerStatus(true);\r\n const komm = newCadastre.KOMM || newCadastre.komm;\r\n const gnr = newCadastre.GNR || newCadastre.gnr;\r\n const bnr = newCadastre.BNR || newCadastre.bnr;\r\n const fnr = newCadastre.FNR || newCadastre.fnr;\r\n const snr = newCadastre.SNR || newCadastre.snr;\r\n const unikid = newCadastre.UNIKID || newCadastre.unikid;\r\n if (komm && gnr && bnr) {\r\n return this.matrikkelService.findMatrikkelenhetForUnikId(\r\n komm,\r\n gnr,\r\n bnr,\r\n fnr,\r\n snr,\r\n unikid,\r\n true\r\n );\r\n }\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n }),\r\n map((value) => {\r\n this.neighborService.setSpinnerStatus(false);\r\n\r\n if (value && value['Matrikkelenheter']) {\r\n this.neighborService.handleReceivedUnits(value['Matrikkelenheter']);\r\n return value['Matrikkelenheter'];\r\n }\r\n return undefined;\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.neighborService.getNeighbors$,\r\n this.neighborService.getMainProperty$,\r\n this.findMatrikkelenhetForUnikId$,\r\n this.getAddressesFromCadastre$,\r\n this.neighborService.spinnerShowingAction,\r\n ]).pipe(\r\n map(\r\n ([\r\n getNeighbors,\r\n getMainProperty,\r\n findMatrikkelenhetForUnikId,\r\n mainPropertyAddresses,\r\n spinnerShowing,\r\n ]: [any, any, any, any, boolean]) => ({\r\n neighbors: this.featureInfoLayer?.neighbors || getNeighbors,\r\n mainProperty: getMainProperty,\r\n matrikkelenhet: findMatrikkelenhetForUnikId,\r\n mainPropertyAddresses,\r\n spinnerShowing,\r\n })\r\n ),\r\n tap((result) => {\r\n // console.log('Feature-Info-Neighbor vm: ', result);\r\n if (result['neighbors'] && !result['matrikkelenhet']) {\r\n if (this.mode === 'featureInfo') {\r\n this.eventHandler.registerEvent(\r\n this.eventTypes.FeatureSelected,\r\n 'FeatureSelected',\r\n this.featureSelected.bind(this)\r\n );\r\n this.eventHandler.registerEvent(\r\n this.eventTypes.FeatureDeselected,\r\n 'FeatureDeselected',\r\n this.featureDeselected.bind(this)\r\n );\r\n }\r\n this.neighbors = result['neighbors'];\r\n this.mainProperty = result['mainProperty'];\r\n this.neighborEmitter.emit(result['neighbors']);\r\n }\r\n this.spinnerShowing = false;\r\n })\r\n );\r\n\r\n mouseOver(featureInfoLayer: IDomainLayer, neighbor): void {\r\n if (featureInfoLayer && neighbor && neighbor.Id) {\r\n const feature = this.maplibMap.getFeatureByUnikId(\r\n featureInfoLayer,\r\n neighbor.Id\r\n );\r\n if (feature) {\r\n this.maplibMap.highlightFeature(feature);\r\n }\r\n }\r\n }\r\n\r\n mouseOut(): void {\r\n this.maplibMap.clearHighlightedFeatures();\r\n }\r\n\r\n findKeyFields(properties: any): any[] {\r\n const keyFields = [];\r\n const keyFieldCandidates = [\r\n ['KOMM', 'KNR', 'KOMMUNENR', 'komm', 'knr', 'kommunenr'],\r\n ['GNR', 'GARDSNR', 'gnr', 'gardsnr'],\r\n ['BNR', 'BRUKSNR', 'bnr', 'bruksnr'],\r\n ['FNR', 'FESTENR', 'fnr', 'festenr'],\r\n ['SNR', 'SEKSJONSNR', 'snr', 'seksjonsnr'],\r\n ['UNIKID', 'unikid'],\r\n ];\r\n keyFieldCandidates.forEach((propGroup) => {\r\n let found = false;\r\n propGroup.forEach((prop) => {\r\n if (!found && properties.find((p) => p.name === prop)) {\r\n keyFields.push(prop);\r\n found = true;\r\n }\r\n });\r\n });\r\n return keyFields;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.feature = this.neighborService.featureAction.getValue();\r\n if (this.mode === 'featureInfo') {\r\n this.commonService.activateFeatureInfoSelectorWithLayerName(false);\r\n this.neighborService.setNeighborsMapactionPosition(\r\n this.neighborsMapactionPosition\r\n );\r\n this.featureInfoLayer =\r\n this.neighborService.featureInfoLayerAction.getValue();\r\n\r\n this.neighborService.register(this);\r\n this.subscription.add(\r\n this.commonService.mapActionDialogCloseButtonClick$.subscribe(\r\n (actionDialogId) => {\r\n if (actionDialogId === 'neighborListDialog') {\r\n this.neighborService.hide(this.feature.olFeature.getId());\r\n this.neighborService.unregister(this);\r\n // this.commonService.setFeatureInfoNeighborActive(false);\r\n }\r\n }\r\n )\r\n );\r\n this.toggleNeighborlist(this.feature);\r\n }\r\n\r\n this.subscription.add(\r\n this.neighborService.showReport$.subscribe(() => {\r\n this.showReport(this.feature, this.neighbors);\r\n })\r\n );\r\n this.subscription.add(\r\n this.neighborService.naboliste2CSV$.subscribe(() => {\r\n if (this.feature) {\r\n this.naboliste2CSV();\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.neighborService.unregister(this);\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n unsubscribe(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n toggleNeighborlist(feature: IDomainFeature): void {\r\n if (feature) {\r\n this.neighborService.show(this.feature.olFeature.getId());\r\n }\r\n // }\r\n }\r\n\r\n naboliste2CSV(): void {\r\n const featureInfoLayer = this.featureInfoLayer;\r\n const propertyInfo = this.getPropertyInfo(this.feature);\r\n const title =\r\n 'Naboliste_' +\r\n propertyInfo.komm +\r\n '-' +\r\n propertyInfo.gnr +\r\n '_' +\r\n propertyInfo.bnr +\r\n '_' +\r\n propertyInfo.fnr +\r\n '_' +\r\n propertyInfo.snr +\r\n '.csv';\r\n\r\n if (featureInfoLayer['neighbors']) {\r\n const neighborlistFormat = this.mapService.getProjectConfig().config.project.neighborlistcsvformat;\r\n OwnerList2CSV(featureInfoLayer['neighbors'], title, neighborlistFormat, this.mainProperty.Matrikkelenheter[0]\r\n );\r\n }\r\n }\r\n\r\n showReport(feature: any, neighbors: any): void {\r\n console.log('FEATURE AND NEIGHBORS: ', feature, neighbors);\r\n if (feature && neighbors) {\r\n this.bladeService.showBladeWithComponent(\r\n 'printNeighbor',\r\n IsyNeighborPrintComponent,\r\n { feature, neighbors, mainPropertyAddresses: this.mainProperty['Matrikkelenheter'][0].Addresser },\r\n { fullScreen: true, position: 'top' }\r\n );\r\n }\r\n }\r\n\r\n reportChanged(feature: IDomainFeature, value): void {\r\n feature['showReport'] = value;\r\n }\r\n\r\n getPropertyInfo(feature: any): ICadastre {\r\n if (feature?.properties) {\r\n const komm =\r\n feature.properties['KOMM'] ||\r\n feature.properties['KNR'] ||\r\n feature.properties['KOMMUNENR'] ||\r\n feature.properties['komm'] ||\r\n feature.properties['knr'] ||\r\n feature.properties['kommunenr'];\r\n const gnr =\r\n feature.properties['GARDSNR'] ||\r\n feature.properties['GNR'] ||\r\n feature.properties['gardsnr'] ||\r\n feature.properties['gnr'];\r\n const bnr =\r\n feature.properties['BRUKSNR'] ||\r\n feature.properties['BNR'] ||\r\n feature.properties['bruksnr'] ||\r\n feature.properties['bnr'];\r\n // tslint:disable-next-line:max-line-length\r\n const fnr =\r\n feature.properties['FESTENR'] ||\r\n feature.properties['FNR'] ||\r\n feature.properties['festenr'] ||\r\n feature.properties['fnr'] ||\r\n 0;\r\n const snr =\r\n feature.properties['SEKSJONSNR'] ||\r\n feature.properties['SNR'] ||\r\n feature.properties['seksjonsnr'] ||\r\n feature.properties['snr'] ||\r\n 0;\r\n\r\n if (komm && gnr && bnr) {\r\n return {\r\n komm,\r\n gnr,\r\n bnr,\r\n fnr,\r\n snr,\r\n } as ICadastre;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n startNeighborlist(): void {\r\n const featureInfoLayer = this.featureInfoLayer;\r\n const propertyInfo = this.getPropertyInfo(this.feature);\r\n\r\n if (propertyInfo) {\r\n // for getting neighbor list\r\n this.neighborService.setpropertyInfoAction(propertyInfo);\r\n // for highlighting on th map\r\n this.neighborService.neighborSelect(featureInfoLayer);\r\n }\r\n }\r\n\r\n featureDeselected(result): void {\r\n const featureInfoLayer = this.featureInfoLayer;\r\n if (\r\n result.properties &&\r\n featureInfoLayer &&\r\n featureInfoLayer['neighbors']\r\n ) {\r\n\r\n const newFeatures = []\r\n \r\n featureInfoLayer['neighbors'].forEach(function (existingelement, index) {\r\n let foundIndex = -1;\r\n if (\r\n existingelement.Knr === Number(result.properties.KOMM) &&\r\n existingelement.Gnr === Number(result.properties.GNR) &&\r\n existingelement.Bnr === Number(result.properties.BNR) &&\r\n existingelement.Fnr === Number(result.properties.FNR) &&\r\n (existingelement.Teiger.length == 0 || existingelement.Teiger.find( a => a.Id === Number(result.properties.EIENDOMSTEIGID)))\r\n ) {\r\n foundIndex = index;\r\n }\r\n if (foundIndex < 0) {\r\n newFeatures.push(existingelement);\r\n }\r\n });\r\n\r\n featureInfoLayer['neighbors'].splice(0, featureInfoLayer['neighbors'].length, ...newFeatures);\r\n }\r\n }\r\n\r\n featureSelected(result): void {\r\n // result is always a single \"feature\". result.properties is an object from feature.getProperties()\r\n const featureInfoLayer = this.featureInfoLayer;\r\n\r\n if (\r\n result.properties &&\r\n featureInfoLayer &&\r\n featureInfoLayer['neighbors']\r\n ) {\r\n let found = false;\r\n featureInfoLayer['neighbors'].forEach((existingelement) => {\r\n if (existingelement.Id === Number(result.id)) {\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n this.newCadastreAction.next(result.properties);\r\n }\r\n }\r\n }\r\n\r\n stopNeighborlist(): void {\r\n const featureInfoLayer = this.featureInfoLayer;\r\n if (featureInfoLayer && featureInfoLayer['neighbors']) {\r\n for (let k = 0; k < featureInfoLayer['neighbors'].length; k++) {\r\n this.maplibMap.deselectFeatures(\r\n [\r\n {\r\n property: 'UNIKID',\r\n value: String(featureInfoLayer['neighbors'][k].Id),\r\n },\r\n ],\r\n {\r\n subLayers: [featureInfoLayer],\r\n },\r\n undefined,\r\n false\r\n );\r\n }\r\n featureInfoLayer['neighbors'] = [];\r\n }\r\n if (this.mode === 'featureInfo') {\r\n this.maplibMap.deactivateFeatureSelector();\r\n this.eventHandler.unRegisterEvent(\r\n this.eventTypes.FeatureSelected,\r\n 'FeatureSelected',\r\n this.featureSelected.bind(this)\r\n );\r\n this.eventHandler.unRegisterEvent(\r\n this.eventTypes.FeatureDeselected,\r\n 'FeatureDeselected',\r\n this.featureDeselected.bind(this)\r\n );\r\n }\r\n this.maplibMap.deactivateDrawingManager();\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoStart);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoEnd);\r\n \r\n this.neighborService.setpropertyInfoAction(undefined);\r\n this.newCadastreAction.next(undefined);\r\n this.neighborService.polygonGeometryAction.next(undefined);\r\n }\r\n\r\n polygonSelect(): void {\r\n this.neighborService.polygonSelect();\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {{neighbor.Gnr + '/' + neighbor.Bnr + '/' +\r\n (neighbor.Fnr === null ? 0 : neighbor.Fnr) + '/' +\r\n (neighbor.Snr === null ? 0 : neighbor.Snr) + ': ' + \r\n (neighbor.Bruksnavn === null ? '' : neighbor.Bruksnavn) | uppercase}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n {{neighbor.Owners && neighbor.Owners.length ? neighbor.Owners.length : ''}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {{'ownerNotAvailable' | translate}}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_name' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.Name}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_number' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.Personnummer}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_orgnumber' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.OrgNummer}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_address' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.Address | getAddressString}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_description' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.OwnerDescription}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_ownership' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.Ownership}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n ","import { NgModule } from '@angular/core';\r\nimport { IsyNeighborComponent } from './isy-neighbor.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { IsyUtilsModule } from '@isygis/isy-utils';\r\nimport { GetAddressStringPipe } from './get-address-string.pipe';\r\nimport { IsyNeighborPrintComponent } from './isy-neighbor-print/isy-neighbor-print.component';\r\nimport { IsyPrintModule } from '@isygis/isy-print';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n IsySpinnerModule,\r\n IsyUtilsModule,\r\n IsyPrintModule,\r\n BsDropdownModule.forRoot(),\r\n ],\r\n declarations: [\r\n IsyNeighborComponent,\r\n IsyNeighborPrintComponent,\r\n GetAddressStringPipe,\r\n ],\r\n exports: [IsyNeighborComponent],\r\n})\r\nexport class IsyNeighborModule {}\r\n","import {\r\n BehaviorSubject,\r\n ReplaySubject,\r\n Subject, combineLatest\r\n} from 'rxjs';\r\nimport {\r\n ELogin,\r\n ICadastre, IDomainFeature,\r\n IDomainLayer\r\n} from '@isygis/isy-configs';\r\nimport {\r\n IsyAppMatrikkelService\r\n} from '@isygis/isy-app-services';\r\nimport {\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { map, mergeMap, share, tap } from 'rxjs/operators';\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyNeighborComponent } from './isy-neighbor.component';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyNeighborService {\r\n private propertyInfoAction = new BehaviorSubject(undefined);\r\n propertyInfoAction$ = this.propertyInfoAction.asObservable();\r\n featureInfoLayerAction = new BehaviorSubject(undefined);\r\n featureAction = new BehaviorSubject(undefined);\r\n spinnerShowingAction = new BehaviorSubject(false);\r\n neighborCache = new Set();\r\n polygonGeometryAction = new BehaviorSubject(undefined);\r\n private showReportAction = new Subject();\r\n showReport$ = this.showReportAction.asObservable();\r\n private naboliste2CSVAction = new Subject();\r\n naboliste2CSV$ = this.naboliste2CSVAction.asObservable();\r\n\r\n eventHandler;\r\n eventTypes;\r\n maplibMap;\r\n neighborsMapactionPosition;\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private toasterService: IsyToasterService,\r\n private matrikkelService: IsyAppMatrikkelService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private translateService: IsyTranslateService,\r\n private commonService: IsyCommonService,\r\n private mapService: IsyMapService,\r\n private bladeService: IsyBladeService,\r\n private sessionStorageService: SessionStorageService,\r\n private mapEmitterService: IsyMapEmitterService\r\n ) {\r\n this.maplibMap = this.mapLibNgService.map();\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n }\r\n ownersFromPolygon$ = combineLatest([this.polygonGeometryAction]).pipe(\r\n mergeMap(([polygonFeature]: [any]) => {\r\n if (polygonFeature) {\r\n this.setSpinnerStatus(true);\r\n this.toasterService.info(\r\n this.translateService.instant('owner_list_generates')\r\n );\r\n\r\n this.matrikkelService.init(\r\n this.mapService.getProjectConfig().config.project.isyexternalapi +\r\n '/matrikkel',\r\n this.mapService.getMapConfig().instance,\r\n 'EPSG:4326',\r\n this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n );\r\n return this.matrikkelService.ownersFromPolygon(\r\n polygonFeature.features[0].geometry.coordinates,\r\n true,\r\n polygonFeature.features[0].geometry.type\r\n );\r\n } else {\r\n return Promise.resolve(undefined);\r\n }\r\n }),\r\n map((value) => {\r\n if (value && value['Matrikkelenheter']) {\r\n this.handleReceivedUnits(value['Matrikkelenheter']);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureSelected);\r\n return value['Matrikkelenheter'];\r\n }\r\n return undefined;\r\n }),\r\n tap((result) => console.log('ownersFromPolygon', result))\r\n );\r\n\r\n getNeighbors$ = combineLatest([this.propertyInfoAction$]).pipe(\r\n mergeMap(([propertyInfo]: [ICadastre]) => {\r\n if (propertyInfo) {\r\n this.matrikkelService.init(\r\n this.mapService.getProjectConfig().config.project.isyexternalapi +\r\n '/matrikkel',\r\n this.mapService.getMapConfig().instance,\r\n 'EPSG:4326',\r\n this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n );\r\n\r\n this.setSpinnerStatus(true);\r\n this.toasterService.info(\r\n this.translateService.instant('neighbor_list_generates')\r\n );\r\n return this.matrikkelService.getNeighbors(\r\n propertyInfo.komm,\r\n propertyInfo.gnr,\r\n propertyInfo.bnr,\r\n propertyInfo.fnr,\r\n propertyInfo.snr,\r\n true\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n }),\r\n map((value) => {\r\n this.setSpinnerStatus(false);\r\n if (value && value['Matrikkelenheter']) {\r\n this.handleReceivedUnits(value['Matrikkelenheter']);\r\n return value['Matrikkelenheter'];\r\n }\r\n return undefined;\r\n }),\r\n share({\r\n connector: () => new ReplaySubject(1),\r\n resetOnError: false,\r\n resetOnComplete: false,\r\n resetOnRefCountZero: false,\r\n }),\r\n );\r\n\r\n getMainProperty$ = combineLatest([this.propertyInfoAction$]).pipe(\r\n mergeMap(([propertyInfo]: [ICadastre]) => {\r\n if (propertyInfo) {\r\n return this.matrikkelService.getMainProperty(\r\n propertyInfo.komm,\r\n propertyInfo.gnr,\r\n propertyInfo.bnr,\r\n propertyInfo.fnr,\r\n propertyInfo.snr,\r\n true\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n })\r\n );\r\n\r\n private getString(value?: any, defaultValue?: any): string {\r\n return String(value ?? defaultValue);\r\n }\r\n\r\n register(neighbor: IsyNeighborComponent): void {\r\n this.neighborCache.add(neighbor);\r\n }\r\n\r\n unregister(neighborToRemove: IsyNeighborComponent): void {\r\n this.neighborCache.forEach((neighbor) => {\r\n if (neighbor === neighborToRemove) {\r\n if (this.neighborCache.size === 1) {\r\n neighbor.stopNeighborlist();\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n setTimeout(() => {\r\n this.mapActionDialogService.hide('neighborListDialog');\r\n });\r\n this.commonService.activateFeatureInfoSelectorWithLayerName(true);\r\n neighbor.unsubscribe();\r\n }\r\n this.neighborCache.delete(neighbor);\r\n }\r\n });\r\n }\r\n hide(featureId: string): void {\r\n this.neighborCache.forEach((neighbor) => {\r\n const neighborFeature = neighbor.feature;\r\n if (neighborFeature?.olFeature) {\r\n if (neighborFeature.olFeature.getId() === featureId) {\r\n neighborFeature['neighborlistOpen'] = false;\r\n neighbor.stopNeighborlist();\r\n }\r\n }\r\n });\r\n }\r\n\r\n show(featureId: string): void {\r\n this.neighborCache.forEach((neighbor) => {\r\n const neighborFeature = neighbor.feature;\r\n if (neighborFeature?.olFeature) {\r\n if (neighborFeature.olFeature.getId() === featureId) {\r\n neighborFeature['neighborlistOpen'] = true;\r\n neighbor.startNeighborlist();\r\n } else {\r\n neighborFeature['neighborlistOpen'] = false;\r\n neighbor.stopNeighborlist();\r\n }\r\n }\r\n });\r\n }\r\n\r\n createAdditionalOptions(): any {\r\n return {\r\n mode: 'draw',\r\n type: 'Polygon',\r\n style: {\r\n fill: {\r\n color: 'rgba(0, 0, 160, 0.2)',\r\n },\r\n stroke: {\r\n color: 'green',\r\n width: 2,\r\n },\r\n },\r\n };\r\n }\r\n\r\n polygonSelect(): void {\r\n this.maplibMap.activateDrawingManager(this.createAdditionalOptions());\r\n this.maplibMap.deactivateFeatureSelector();\r\n\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureInfoStart);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureInfoEnd);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureSelected);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureDeselected);\r\n this.eventHandler.registerEvent(\r\n this.eventTypes.DrawFeatureEnd,\r\n 'DrawFeatureEnd',\r\n this.polygonCreated.bind(this)\r\n );\r\n }\r\n\r\n polygonCreated(polygonFeature): void {\r\n if (!polygonFeature) {\r\n return;\r\n }\r\n const cleanupOptions = {\r\n GeoJSON: 'remove',\r\n deleteFeature: true,\r\n };\r\n this.maplibMap.reactivateDrawingManager(cleanupOptions); // To remove polygon\r\n\r\n this.eventHandler.unRegisterEvent(\r\n this.eventTypes.DrawFeatureEnd,\r\n this.polygonCreated.bind(this)\r\n );\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureDeselected);\r\n this.maplibMap.deactivateDrawingManager();\r\n const visibleSubLayers = this.maplibMap.getVisibleSubLayers();\r\n console.log('Visible subLayers: ', visibleSubLayers);\r\n this.mapLibNgService\r\n .map()\r\n .describeFeatureUrl(visibleSubLayers[0].url, visibleSubLayers[0])\r\n .then(() => {\r\n if (polygonFeature) {\r\n polygonFeature = JSON.parse(polygonFeature);\r\n }\r\n if (\r\n polygonFeature &&\r\n polygonFeature.features &&\r\n polygonFeature.features[0] &&\r\n polygonFeature.features[0].geometry\r\n ) {\r\n this.polygonGeometryAction.next(polygonFeature);\r\n }\r\n });\r\n }\r\n\r\n neighborSelect(featureInfoLayer: IDomainLayer): void {\r\n const options = {\r\n // feature: this.featureAction.getValue().olFeature,\r\n feature: featureInfoLayer.features[0].olFeature,\r\n mode: 'multi',\r\n style: 'neighbor',\r\n keyFields: this.findKeyFieldsFromFeatureInfoLayer(featureInfoLayer),\r\n layerName: featureInfoLayer.name,\r\n };\r\n\r\n this.mapLibNgService.map().activateFeatureSelector(options);\r\n }\r\n\r\n private findKeyFieldsFromFeatureInfoLayer(\r\n featureInfoLayer: IDomainLayer\r\n ): string[] {\r\n if (\r\n featureInfoLayer &&\r\n featureInfoLayer.features[0] &&\r\n featureInfoLayer.features[0].properties\r\n ) {\r\n return this.findKeyFields(featureInfoLayer.features[0].properties);\r\n }\r\n return [];\r\n }\r\n\r\n findKeyFields(properties: any): any[] {\r\n const keyFields = [];\r\n const keyFieldCandidates = [\r\n ['KOMM', 'KNR', 'KOMMUNENR', 'komm', 'knr', 'kommunenr'],\r\n ['GNR', 'GARDSNR', 'gnr', 'gardsnr'],\r\n ['BNR', 'BRUKSNR', 'bnr', 'bruksnr'],\r\n ['FNR', 'FESTENR', 'fnr', 'festenr'],\r\n ['SNR', 'SEKSJONSNR', 'snr', 'seksjonsnr'],\r\n ['UNIKID', 'unikid'],\r\n ];\r\n keyFieldCandidates.forEach((propGroup) => {\r\n let found = false;\r\n propGroup.forEach((prop) => {\r\n if (!found && properties[prop] !== undefined) {\r\n keyFields.push(prop);\r\n found = true;\r\n }\r\n });\r\n });\r\n return keyFields;\r\n }\r\n\r\n handleReceivedUnits(result: any): void {\r\n if (result.length === 0) {\r\n return;\r\n }\r\n const featureInfoLayer = this.featureInfoLayerAction.getValue();\r\n // Dont show mapActionDialoge for neighbors if neighbor is active from pointInfo\r\n if (featureInfoLayer && !this.commonService.getPointInfoNeighborActive()) {\r\n if (result) {\r\n if (!featureInfoLayer['neighbors']) {\r\n featureInfoLayer['neighbors'] = result;\r\n } else {\r\n result.forEach((newFeature) => {\r\n let found = false;\r\n featureInfoLayer['neighbors'].forEach((existingelement) => {\r\n if (existingelement.Id === Number(newFeature.Id)) {\r\n found = true;\r\n }\r\n });\r\n if (!found) {\r\n featureInfoLayer['neighbors'].push(newFeature);\r\n }\r\n });\r\n }\r\n this.setSpinnerStatus(false);\r\n this.mapActionDialogService.show(\r\n 'neighborListDialog',\r\n this.translateService.instant('neighbor_list_addremove'),\r\n undefined,\r\n undefined,\r\n { position: this.getNeighborsMapactionPosition() }\r\n );\r\n }\r\n\r\n // select neighbors\r\n for (let k = 0; k < featureInfoLayer['neighbors'].length; k++) {\r\n this.mapLibNgService.map().selectFeatures(\r\n [\r\n {\r\n property: 'KOMM',\r\n value: this.getString(featureInfoLayer['neighbors'][k].Knr, 0),\r\n },\r\n {\r\n property: 'GNR',\r\n value: this.getString(featureInfoLayer['neighbors'][k].Gnr, 0),\r\n },\r\n {\r\n property: 'BNR',\r\n value: this.getString(featureInfoLayer['neighbors'][k].Bnr, 0),\r\n },\r\n {\r\n property: 'SNR',\r\n value: this.getString(featureInfoLayer['neighbors'][k].Snr, 0),\r\n },\r\n {\r\n property: 'FNR',\r\n value: this.getString(featureInfoLayer['neighbors'][k].Fnr, 0),\r\n },\r\n {\r\n property: 'UNIKID',\r\n value: this.getString(featureInfoLayer['neighbors'][k].Id),\r\n },\r\n ],\r\n {\r\n subLayers: [featureInfoLayer],\r\n },\r\n undefined,\r\n false\r\n );\r\n }\r\n } else {\r\n const visibleSubLayers = this.maplibMap?.getVisibleSubLayers();\r\n if (visibleSubLayers?.length) {\r\n const visibleSubLayer = visibleSubLayers[0];\r\n const mapConfig = this.mapService.getMapConfig();\r\n const subLayer = mapConfig.layers.find((l) => l.id === visibleSubLayer.id);\r\n for (const feature of result) {\r\n this.mapLibNgService.map().selectFeatures(\r\n [\r\n { property: 'KOMM', value: this.getString(feature.Knr, 0) },\r\n { property: 'GNR', value: this.getString(feature.Gnr, 0) },\r\n { property: 'BNR', value: this.getString(feature.Bnr, 0) },\r\n { property: 'SNR', value: this.getString(feature.Snr, 0) },\r\n { property: 'FNR', value: this.getString(feature.Fnr, 0) },\r\n { property: 'UNIKID', value: this.getString(feature.Id) },\r\n ],\r\n {\r\n subLayers: [subLayer],\r\n },\r\n undefined,\r\n false\r\n );\r\n }\r\n }\r\n }\r\n\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n }\r\n\r\n setFeatureInfoLayerAction(val: IDomainLayer): void {\r\n this.featureInfoLayerAction.next(val);\r\n }\r\n\r\n setFeatureAction(val: IDomainFeature): void {\r\n this.featureAction.next(val);\r\n }\r\n\r\n setpropertyInfoAction(val): void {\r\n this.propertyInfoAction.next(val);\r\n }\r\n\r\n getpropertyInfoAction(): any {\r\n return this.propertyInfoAction.getValue();\r\n }\r\n\r\n setSpinnerStatus(val): void {\r\n this.spinnerShowingAction.next(val);\r\n }\r\n\r\n showReport(): void {\r\n this.showReportAction.next(true);\r\n }\r\n\r\n naboliste2CSV(): void {\r\n this.naboliste2CSVAction.next(true);\r\n }\r\n\r\n setNeighborsMapactionPosition(val: string): void {\r\n this.neighborsMapactionPosition = val;\r\n }\r\n\r\n getNeighborsMapactionPosition(): string {\r\n return this.neighborsMapactionPosition;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { Component, Input } from '@angular/core';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map, switchMap, shareReplay, catchError } from 'rxjs/operators';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\ninterface ISearchParams {\r\n komm: string; // number?\r\n planid: string;\r\n metadataurl: string;\r\n}\r\n\r\ndeclare global {\r\n interface Navigator {\r\n msSaveBlob: (blob: Blob, fileName: string) => boolean;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-isy-position-info-areaplan-doc',\r\n templateUrl: './isy-position-info-areaplan-doc.component.html',\r\n styleUrls: ['./isy-position-info-areaplan-doc.component.scss'],\r\n})\r\nexport class IsyPositionInfoAreaplanDocComponent {\r\n constructor(\r\n private mapService: IsyMapService,\r\n private httpClient: HttpClient\r\n ) {}\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n plandocs = [];\r\n base64elements = {};\r\n private projectConfig$ = this.mapService.projectConfig$;\r\n\r\n @Input() planid: string;\r\n @Input() komm: string;\r\n\r\n // Observable function\r\n checkPlanBestemelser$ = combineLatest([\r\n this.projectConfig$,\r\n ]).pipe(\r\n map(\r\n ([projectConfig]: [\r\n IProjectConfig\r\n ]) => {\r\n if (this.planid && this.komm && projectConfig?.config?.project?.webinnsynurl) {\r\n const metadataurl =\r\n projectConfig.config.project.webinnsynurl +\r\n '/Content/plandialog/planinfo.aspx';\r\n const planid = this.planid;\r\n const komm = String(this.komm);\r\n const currentParam = {\r\n komm,\r\n planid,\r\n metadataurl,\r\n } as ISearchParams\r\n return currentParam;\r\n }\r\n return undefined;\r\n }\r\n )\r\n // tap(result => console.log('test', result))\r\n );\r\n\r\n featureDocResult$ = combineLatest([this.checkPlanBestemelser$]).pipe(\r\n // the previos result is canceled, switch to a new observable (we always want the latest result)\r\n switchMap(([changeSearchParams]: [ISearchParams]) => {\r\n if (changeSearchParams) {\r\n const mapConfig = this.mapService.getMapConfig();\r\n // tslint:disable-next-line: max-line-length\r\n const searchUrl =\r\n mapConfig.searchHost +\r\n '/api/searchgi/getplanbestemmelser/?instance=' +\r\n mapConfig.instance +\r\n '&project=' +\r\n mapConfig.projectName +\r\n '&plan=' +\r\n JSON.stringify(changeSearchParams) +\r\n '×tamp=' +\r\n new Date().getTime();\r\n return this.httpClient.get(searchUrl).pipe(\r\n map((result: any) => {\r\n let key = 0;\r\n const plandocs = [];\r\n if (result && result.length > 0) {\r\n result.forEach((item) => {\r\n const planDoc = this.processPlandokument(item, key++);\r\n if (planDoc) {\r\n plandocs.push(planDoc);\r\n }\r\n });\r\n } else {\r\n const planDoc = this.processPlandokument(result, key++);\r\n if (planDoc) {\r\n plandocs.push(planDoc);\r\n }\r\n }\r\n plandocs.sort(this.orderByPlanDocType);\r\n // console.log(plandocs);\r\n return plandocs.length > 0 ? plandocs : undefined;\r\n })\r\n );\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n }),\r\n // share and replay the last emitted value\r\n shareReplay(1),\r\n catchError(this.handleErrorWithPromise)\r\n // tap(result => console.log('test2', result))\r\n );\r\n\r\n vm$ = combineLatest([this.featureDocResult$]).pipe(\r\n map(([featureDocResult]: [any]) => ({ featureDocResult }))\r\n // , tap(result => console.log('docs: ', result))\r\n );\r\n\r\n private processPlandokument(plandokument, key) {\r\n if (plandokument) {\r\n // console.log('plandokument', plandokument);\r\n const plandoc = {\r\n key,\r\n filename: plandokument.filnavn,\r\n type: plandokument.type,\r\n title: plandokument.tittel,\r\n url: plandokument.url,\r\n hasbase64: plandokument.base64 ? true : false,\r\n mimetype: plandokument.mimetype,\r\n image: '',\r\n };\r\n switch (plandokument.type.toLowerCase()) {\r\n case 'planbeskr':\r\n plandoc.image = 'assets/img/plan-document/iconDokument.png';\r\n break;\r\n case 'planbest':\r\n plandoc.image = 'assets/img/plan-document/iconBestemmelser.png';\r\n break;\r\n case 'plankart':\r\n plandoc.image = 'assets/img/plan-document/iconPlan.png';\r\n break;\r\n default:\r\n plandoc.image = 'assets/img/plan-document/iconDokument.png';\r\n break;\r\n }\r\n this.base64elements[key] = plandokument.base64;\r\n // console.log('plandok', plandok);\r\n\r\n // plandocs.push(plandoc);\r\n return plandoc;\r\n }\r\n return undefined;\r\n }\r\n\r\n private orderByPlanDocType(planA, planB): number {\r\n const sortingValue = [\r\n 'PLANBEST',\r\n 'PLANKART',\r\n 'VEDTAK',\r\n 'PLANBESKR',\r\n 'JURILLUST',\r\n ].reverse();\r\n const idxA = sortingValue.indexOf(planA.type);\r\n const idxB = sortingValue.indexOf(planB.type);\r\n return idxB - idxA;\r\n }\r\n\r\n private handleErrorWithPromise() {\r\n // TODO: Unhandled error!\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n private base64toByteArray(b64Data, contentType?, sliceSize?) {\r\n if (contentType === undefined) {\r\n contentType = '';\r\n }\r\n if (sliceSize === undefined) {\r\n sliceSize = 512;\r\n }\r\n const startText = contentType + ';base64, ';\r\n if (b64Data.indexOf(startText) >= 0) {\r\n b64Data = b64Data.substr(b64Data.indexOf(startText) + startText.length);\r\n }\r\n const byteCharacters = atob(b64Data);\r\n const byteArrays = [];\r\n\r\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n const slice = byteCharacters.slice(offset, offset + sliceSize);\r\n\r\n const byteNumbers = new Array(slice.length);\r\n for (let i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\r\n\r\n const byteArray = new Uint8Array(byteNumbers);\r\n byteArrays.push(byteArray);\r\n }\r\n\r\n return byteArrays;\r\n }\r\n\r\n openDocument(plandoc) {\r\n const base64 = this.base64elements[plandoc.key];\r\n\r\n const byteArray = this.base64toByteArray(base64, plandoc.mimetype);\r\n let blob;\r\n if (typeof File === 'function') {\r\n try {\r\n blob = new File(byteArray, plandoc.filename, {\r\n type: plandoc.mimetype,\r\n });\r\n } catch (e) {\r\n /* Edge */\r\n }\r\n }\r\n if (typeof blob === 'undefined') {\r\n blob = new Blob(byteArray, { type: plandoc.mimetype });\r\n }\r\n\r\n if (typeof navigator.msSaveBlob !== 'undefined') {\r\n // IE workaround for \"HTML7007:\r\n // One or more blob URLs were revoked by closing the blob for which they were created. These URLs will no longer resolve as the data backing the URL has been freed.\"\r\n navigator.msSaveBlob(blob, plandoc.filename);\r\n } else {\r\n const URL = window['URL'] || window['webkitURL'];\r\n const downloadUrl = URL.createObjectURL(blob);\r\n\r\n // use HTML5 a[download] attribute to specify filename\r\n const a = document.createElement('a');\r\n // safari doesn't support this yet\r\n if (typeof a.download === 'undefined') {\r\n window.location.href = downloadUrl;\r\n } else {\r\n a.href = downloadUrl;\r\n a.download = plandoc.filename;\r\n document.body.appendChild(a);\r\n a.click();\r\n }\r\n\r\n setTimeout(() => {\r\n URL.revokeObjectURL(downloadUrl);\r\n }, 100); // cleanup\r\n }\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'planDocuments_txt' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, Input, OnInit } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { Subscription } from 'rxjs';\r\nimport { IProjectConfig, IMetadataService, IPointInfo } from '@isygis/isymap-config';\r\nimport { IsyPositionInfoService } from '../isy-position-info.service';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { ELogin } from '@isygis/isy-configs';\r\n\r\n@Component({\r\n selector: 'lib-isy-position-info-areaplan',\r\n templateUrl: './isy-position-info-areaplan.component.html',\r\n styleUrls: ['./isy-position-info-areaplan.component.scss'],\r\n})\r\nexport class IsyPositionInfoAreaplanComponent implements OnInit {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n planInfoExtended;\r\n showPlanUpdated: IPointInfo;\r\n \r\n @Input() set planInfo(info) {\r\n this.planInfoExtended = info;\r\n if (this.planInfoExtended?.length > 0) {\r\n if (this.planInfoExtended?.length === 1) {\r\n this.planInfoExtended.map((item) => (item['isSelected'] = true));\r\n } else {\r\n this.planInfoExtended.map((item) => (item['isSelected'] = false));\r\n }\r\n }\r\n }\r\n @Input() set showPlan (plan:IPointInfo) {\r\n const resources = this.sessionStorageService.retrieve(ELogin.RESOURCES);\r\n plan.customintegrations.forEach((element: IMetadataService) => {\r\n element.visible = true;\r\n if (element.restricted !== '') {\r\n element.visible = false;\r\n if (resources && resources.includes(element.restricted)) {\r\n element.visible = true;\r\n }\r\n }\r\n });\r\n this.showPlanUpdated = plan;\r\n }\r\n // @Input() showPlan: IPointInfo;\r\n @Input() coordinate: any;\r\n projectConfig: IProjectConfig;\r\n subscription = new Subscription();\r\n \r\n constructor(\r\n private mapService: IsyMapService,\r\n private positionInfoService: IsyPositionInfoService,\r\n private sessionStorageService: SessionStorageService\r\n ) {}\r\n \r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapService.projectConfig$.subscribe(\r\n (projectConfig: IProjectConfig) => {\r\n this.projectConfig = projectConfig;\r\n }\r\n )\r\n );\r\n }\r\n\r\n showItem(item): void {\r\n item.isSelected = !item.isSelected;\r\n }\r\n openBladeOrWindow(\r\n customintegration: IMetadataService,\r\n plan: any,\r\n newWindow\r\n ): void {\r\n this.positionInfoService.openBladeOrWindow(customintegration, plan, newWindow, this.coordinate, this.projectConfig)\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{plan.plantype}}: {{plan.plannavn}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Kommunenr.\r\n {{plan?.komm}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Planid\r\n {{plan?.planid}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Navn\r\n {{plan?.plannavn}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Type\r\n {{plan?.plantype}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Status\r\n {{plan?.planstatus}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Vertikalnivå\r\n {{plan?.vertikalniva}}\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{customintegration.title }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { IsyIframeComponent } from '@isygis/isy-utils';\r\nimport { IMetadataService, IPointInfo, IProjectConfig } from '@isygis/isymap-config';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyPositionInfoService } from '../isy-position-info.service';\r\n\r\n@Component({\r\n selector: 'lib-isy-position-info-building',\r\n templateUrl: './isy-position-info-building.component.html',\r\n styleUrls: ['./isy-position-info-building.component.scss'],\r\n})\r\nexport class IsyPositionInfoBuildingComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n showBuildingUpdated: IPointInfo;\r\n\r\n @Input() buildingInfo: any;\r\n @Input() utilityUnits: any;\r\n @Input() set showBuilding(building: IPointInfo) {\r\n const resources = this.sessionStorageService.retrieve(ELogin.RESOURCES);\r\n building.customintegrations.forEach((element: IMetadataService) => {\r\n element.visible = true;\r\n if (element.restricted !== '') {\r\n element.visible = false;\r\n if (resources && resources.includes(element.restricted)) {\r\n element.visible = true;\r\n }\r\n }\r\n });\r\n this.showBuildingUpdated = building;\r\n };\r\n // @Input() showBuilding: IPointInfo;\r\n @Input() coordinate: any;\r\n subscription = new Subscription();\r\n projectConfig: IProjectConfig;\r\n\r\n constructor(\r\n private bladeService: IsyBladeService,\r\n private mapService: IsyMapService,\r\n private sessionStorageService: SessionStorageService,\r\n private commonService: IsyCommonService,\r\n private positionInfoService: IsyPositionInfoService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapService.projectConfig$.subscribe(\r\n (projectConfig: IProjectConfig) => {\r\n this.projectConfig = projectConfig;\r\n }\r\n )\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n showInfo(): void {\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n ? `&isytoken=${this.sessionStorageService.retrieve(ELogin.TOKEN)}`\r\n : '';\r\n let urlWithParam = this.projectConfig.config.project.webinnsynurl;\r\n urlWithParam =\r\n urlWithParam +\r\n '/Content/report/bygning2html.aspx?k=' +\r\n this.buildingInfo.kommunenummer +\r\n '&b=' +\r\n this.buildingInfo.bygningsnr +\r\n isytoken;\r\n\r\n // applied for kc and idporten\r\n let data;\r\n const webinnsynurl = this.projectConfig.config.project.webinnsynurl;\r\n const webinnsyniframelandingpage = `${webinnsynurl}${webinnsynurl.charAt(webinnsynurl.length - 1) === '/' ? '' : '/'}framed.htm`;\r\n this.commonService.getKcUsed() || this.commonService.getIdPortenUsed()\r\n ? (data = { url: webinnsyniframelandingpage, postMsgUrl: urlWithParam })\r\n : (data = { url: urlWithParam });\r\n //\r\n\r\n this.bladeService.showBladeWithComponent(\r\n 'metadataService',\r\n IsyIframeComponent,\r\n data,\r\n {\r\n position: 'top',\r\n fullScreen: true,\r\n offset: 100,\r\n showBladeOverlay: true,\r\n }\r\n );\r\n // console.log('TEST', urlWithParam);\r\n }\r\n openBladeOrWindow(\r\n customintegration: IMetadataService,\r\n buildingInfo: any,\r\n newWindow\r\n ): void {\r\n this.positionInfoService.openBladeOrWindow(customintegration, buildingInfo, newWindow, this.coordinate, this.projectConfig)\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n Kommunenr.\r\n {{buildingInfo?.komm}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Bygningstypekode\r\n {{buildingInfo?.bygningstypekode}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Nummer\r\n {{buildingInfo?.bygningsnr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Tilbyggsnr\r\n {{buildingInfo?.tilbyggsnr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Status\r\n {{buildingInfo?.bygningstatuskode}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Bruksenheter\r\n {{utilityUnits}}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'Hent informasjon om bygningen' | translate }}\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{customintegration.title }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyMapService, MapLibNgService } from '@isygis/isy-map';\r\n// import { IsyNeighborPrintComponent, IsyNeighborService } from '@isygis/isy-neighbor';\r\nimport { IsyIframeComponent } from '@isygis/isy-utils';\r\nimport { IMetadataService, IPointInfo, IProjectConfig } from '@isygis/isymap-config';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyPositionInfoService } from '../isy-position-info.service';\r\n\r\n@Component({\r\n selector: 'lib-isy-position-info-property',\r\n templateUrl: './isy-position-info-property.component.html',\r\n styleUrls: ['./isy-position-info-property.component.scss'],\r\n})\r\nexport class IsyPositionInfoPropertyComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription = new Subscription();\r\n projectConfig: IProjectConfig;\r\n showPropertyUpdated: IPointInfo;\r\n\r\n @Input() propertyInfo: any;\r\n @Input() set showProperty(property: IPointInfo) {\r\n const resources = this.sessionStorageService.retrieve(ELogin.RESOURCES);\r\n property.customintegrations.forEach((element: IMetadataService) => {\r\n element.visible = true;\r\n if (element.restricted !== '') {\r\n element.visible = false;\r\n if (resources && resources.includes(element.restricted)) {\r\n element.visible = true;\r\n }\r\n }\r\n });\r\n this.showPropertyUpdated = property;\r\n };\r\n // @Input() showProperty: IPointInfo;\r\n @Input() coordinate: any;\r\n customintegrations: IMetadataService[] = [];\r\n // neighbors$ = this.neighborService.getNeighbors$;\r\n mainProperty;\r\n // neighborList;\r\n // showNeighborList = false;\r\n // forceHideNeighborlist = false;\r\n\r\n constructor(\r\n private bladeService: IsyBladeService,\r\n private mapService: IsyMapService,\r\n private sessionStorageService: SessionStorageService,\r\n // private neighborService: IsyNeighborService,\r\n private commonService: IsyCommonService,\r\n private positionInfoService: IsyPositionInfoService,\r\n private mapLibNgService: MapLibNgService\r\n ) {}\r\n \r\n // ngOnChanges(): void {\r\n \r\n // this.showNeighborList = false;\r\n // this.neighborList = undefined;\r\n // if (!this.showNeighborList) {\r\n // this.unPauseEvents();\r\n // }\r\n // this.neighborService.setpropertyInfoAction(undefined);\r\n // // if (this.neighborService.featureInfoLayerAction.getValue()) {\r\n // // this.forceHideNeighborlist = true;\r\n // // }\r\n // }\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapService.projectConfig$.subscribe(\r\n (projectConfig: IProjectConfig) => {\r\n this.projectConfig = projectConfig;\r\n }\r\n )\r\n );\r\n // this.subscription.add(\r\n // this.neighborService.getNeighbors$.subscribe(\r\n // (neighbors) => {\r\n // this.neighborList = neighbors;\r\n // }\r\n // )\r\n // );\r\n // this.subscription.add(\r\n // this.neighborService.getMainProperty$.subscribe(\r\n // (p) => {\r\n // if (p) {\r\n // this.mainProperty = p.Matrikkelenheter[0];\r\n // }\r\n // }\r\n // )\r\n // );\r\n // this.subscription.add(\r\n // this.commonService.featureInfoNeighborActive$.subscribe(\r\n // (featureInfoNeighborActive) => {\r\n // this.forceHideNeighborlist = featureInfoNeighborActive;\r\n // }\r\n // )\r\n // );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n // this.neighborService.setpropertyInfoAction(undefined);\r\n }\r\n showInfo(): void {\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n ? `&isytoken=${this.sessionStorageService.retrieve(ELogin.TOKEN)}`\r\n : '';\r\n let urlWithParam = this.projectConfig.config.project.webinnsynurl;\r\n urlWithParam =\r\n urlWithParam +\r\n `/Content/report/matrikkel2html.aspx?k=${this.propertyInfo.komm}&g=${this.propertyInfo.gnr}&b=${this.propertyInfo.bnr}&f=${this.propertyInfo.fnr}&s=${this.propertyInfo.snr}${isytoken}`;\r\n\r\n // applied for kc and idporten\r\n let data;\r\n const webinnsynurl = this.projectConfig.config.project.webinnsynurl;\r\n const webinnsyniframelandingpage = `${webinnsynurl}${webinnsynurl.charAt(webinnsynurl.length - 1) === '/' ? '' : '/'}framed.htm`;\r\n this.commonService.getKcUsed() || this.commonService.getIdPortenUsed()\r\n ? (data = { url: webinnsyniframelandingpage, postMsgUrl: urlWithParam })\r\n : (data = { url: urlWithParam });\r\n //\r\n\r\n this.bladeService.showBladeWithComponent(\r\n 'metadataService',\r\n IsyIframeComponent,\r\n data,\r\n {\r\n position: 'top',\r\n fullScreen: true,\r\n offset: 100,\r\n showBladeOverlay: true,\r\n }\r\n );\r\n // console.log('TEST', urlWithParam);\r\n }\r\n\r\n // toggleNeighborList() {\r\n // this.showNeighborList = !this.showNeighborList;\r\n // this.setNabolisteData(this.showNeighborList ? this.propertyInfo : undefined); \r\n // if (this.showNeighborList) {\r\n // this.commonService.setPointInfoNeighborActive(true)\r\n // } else {\r\n // this.unPauseEvents();\r\n // }\r\n // // else\r\n // // {\r\n // // this.commonService.setPointInfoNeighborActive(false) \r\n // // };\r\n // }\r\n\r\n // unPauseEvents(): void {\r\n // this.mapLibNgService\r\n // .eventHandler()\r\n // .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n // this.mapLibNgService\r\n // .eventHandler()\r\n // .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n // }\r\n\r\n // setNabolisteData(result: any): void {\r\n // this.neighborService.setpropertyInfoAction(result);\r\n // }\r\n\r\n toFixed(num: number): string {\r\n return Number(num).toFixed(2);\r\n }\r\n\r\n openBladeOrWindow(\r\n customintegration: IMetadataService,\r\n propertyInfo: any,\r\n newWindow\r\n ): void {\r\n this.positionInfoService.openBladeOrWindow(customintegration, propertyInfo, newWindow, this.coordinate, this.projectConfig)\r\n }\r\n\r\n // showReport(): void {\r\n // if (this.neighborList) {\r\n // // console.log('FEATURE AND NEIGHBORS: ', feature, neighbors);\r\n // const feature = {\r\n // 'properties': {\r\n // 'KOMM': this.mainProperty.Knr,\r\n // 'GNR': this.mainProperty.Gnr,\r\n // 'BNR': this.mainProperty.Bnr,\r\n // 'FNR': this.mainProperty.Fnr,\r\n // 'SNR': this.mainProperty.Snr,\r\n // 'BRUKSNAVN': this.mainProperty.Bruksnavn,\r\n // }\r\n // };\r\n // if (feature && this.neighborList) {\r\n // this.bladeService.showBladeWithComponent(\r\n // 'printNeighbor',\r\n // IsyNeighborPrintComponent,\r\n // { feature, neighbors: this.neighborList, mainPropertyAddresses: this.mainProperty.Addresser },\r\n // { fullScreen: true, position: 'top' }\r\n // );\r\n // }\r\n // }\r\n // }\r\n\r\n // naboliste2CSV(): void {\r\n // const propertyInfo = this.propertyInfo;\r\n // const title =\r\n // 'Naboliste_' +\r\n // propertyInfo.komm +\r\n // '-' +\r\n // propertyInfo.gnr +\r\n // '_' +\r\n // propertyInfo.bnr +\r\n // '_' +\r\n // propertyInfo.fnr +\r\n // '_' +\r\n // propertyInfo.snr +\r\n // '.csv';\r\n\r\n // if (this.neighborList) {\r\n // const neighborlistFormat = this.mapService.getProjectConfig().config.project.neighborlistcsvformat;\r\n // OwnerList2CSV(this.neighborList, title, neighborlistFormat, this.mainProperty);\r\n // }\r\n // }\r\n}\r\n","
    \r\n
    \r\n Kommunenr.\r\n {{propertyInfo?.komm}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n GÃ¥rdsnr.\r\n {{propertyInfo?.gnr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Bruksnr.\r\n {{propertyInfo?.bnr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Festenr\r\n {{propertyInfo?.fnr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Seksjonsnr.\r\n {{propertyInfo?.snr}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Type\r\n {{propertyInfo?.type}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Seksjonert\r\n {{propertyInfo?.seksjonert === true ? 'Ja' : 'Nei'}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Beregnet areal\r\n {{toFixed(propertyInfo?.beregnet_areal)}} m² \r\n
    \r\n
    \r\n
    \r\n
    \r\n Etablert dato\r\n {{propertyInfo?.etdato | date:'dd. MMM yyyy':''}} \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'Hent mer informasjon om eiendommen' | translate }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{customintegration.title }}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport {\r\n IsyPositionInfoService,\r\n} from './isy-position-info.service';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { IElevationResult, IKommuneInfo, IPositionInfo } from '@isygis/isy-configs';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { fadeIn, fadeOut } from '@isygis/isy-animations';\r\nimport {\r\n GeoJsonUtilsService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IconDefinition } from '@fortawesome/fontawesome-svg-core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\nexport interface IPositionInfoBtns {\r\n name: string;\r\n icon: IconDefinition;\r\n isSelected: boolean;\r\n}\r\n\r\nexport const positionInfoBtns: IPositionInfoBtns[] = [\r\n {\r\n name: 'property',\r\n icon: fontAwesomeIcons.faBookOpen,\r\n isSelected: false,\r\n },\r\n {\r\n name: 'building',\r\n icon: fontAwesomeIcons.faHome,\r\n isSelected: false,\r\n },\r\n {\r\n name: 'area_plan',\r\n icon: fontAwesomeIcons.faVectorSquare,\r\n isSelected: false,\r\n },\r\n];\r\n@Component({\r\n selector: 'lib-isy-position-info',\r\n templateUrl: 'isy-position-info.component.html',\r\n styleUrls: ['isy-position-info.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n// pageAnimation\r\n trigger('fadeOut', fadeOut()),\r\n trigger('fadeIn', fadeIn(':enter')),\r\n ],\r\n})\r\nexport class IsyPositionInfoComponent implements OnInit, OnDestroy {\r\n @Input() place = true;\r\n @Input() heraldry = true;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n positionInfoBtns = positionInfoBtns;\r\n closing: boolean;\r\n feature: string;\r\n utilityUnits: string;\r\n constructor(\r\n private positionInfoService: IsyPositionInfoService,\r\n private mapLibNgService: MapLibNgService,\r\n private geoJsonUtilsService: GeoJsonUtilsService,\r\n private mapService: IsyMapService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n elevationResult$ = this.mapService.elevationResult$;\r\n clickCoordinates$ = this.positionInfoService.clickCoordinates$;\r\n\r\n pointInfo$ = this.positionInfoService.getPointInfo$.pipe(\r\n tap((d: any) => {\r\n if (d !== undefined && JSON.stringify(d) !== '{}' && d.bygning[0]) {\r\n this.utilityUnits = '';\r\n this.getUnits(d.bygning[0]);\r\n }\r\n this.highlightProperty(d);\r\n }),\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.elevationResult$,\r\n this.mapService.kommuneInfoWithVaapenUrl$,\r\n this.pointInfo$,\r\n this.clickCoordinates$,\r\n this.mapService.projectConfig$\r\n ]).pipe(\r\n map(\r\n ([\r\n elevationResult,\r\n kommuneInfoWithVaapenUrl,\r\n pointInfo,\r\n clickCoordinates,\r\n projectConfig\r\n ]: [IElevationResult, IKommuneInfo, IPositionInfo, any, IProjectConfig]) => ({\r\n elevationResult,\r\n kommuneInfo: kommuneInfoWithVaapenUrl,\r\n kommunenavn: kommuneInfoWithVaapenUrl\r\n ? kommuneInfoWithVaapenUrl.kommunenavn\r\n : undefined,\r\n showPlace: this.place,\r\n showHeraldry: this.heraldry,\r\n // send undefined when the object is empty\r\n pointInfo: Object.keys(pointInfo).length === 0 ? undefined : pointInfo,\r\n clickCoordinates,\r\n lat: Number(clickCoordinates.lat).toFixed(),\r\n lon: Number(clickCoordinates.lon).toFixed(),\r\n showAddress: projectConfig?.config?.project?.pointinfo?.find(p => p.name === 'address'),\r\n showElevation: projectConfig?.config?.project?.pointinfo?.find(p => p.name === 'elevation'),\r\n showProperty: projectConfig?.config?.project?.pointinfo?.find(p => p.name === 'property'),\r\n showBuilding: projectConfig?.config?.project?.pointinfo?.find(p => p.name === 'building'),\r\n showPlan: projectConfig?.config?.project?.pointinfo?.find(p => p.name === 'plan'),\r\n })\r\n ),\r\n // tap((result) => { console.log('POSITION INFO: ', result);})\r\n );\r\n\r\n ngOnInit(): void {\r\n // PositionInfo activated\r\n this.positionInfoService.setPositionInfoAction(true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n // this.commonService.setHideFeatureInfoResult(false);\r\n this.positionInfoBtns.forEach((btn) => (btn.isSelected = false));\r\n this.mapLibNgService.map().hideMarker();\r\n this.geoJsonUtilsService.uploadGeoJson('remove');\r\n // PositionInfo deactivated\r\n this.positionInfoService.setPositionInfoAction(false);\r\n this.commonService.setFeatureInfoNeighborActive(false);\r\n this.commonService.setPointInfoNeighborActive(false);\r\n }\r\n itemSelected(item, geojson): void {\r\n item.isSelected = !item.isSelected;\r\n if (item.isSelected && item.name === 'property') {\r\n if (geojson) {\r\n this.feature = `{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":${geojson}}]}`;\r\n this.geoJsonUtilsService.setSearchResultStyle();\r\n this.geoJsonUtilsService.uploadGeoJson(this.feature);\r\n }\r\n }\r\n if (!item.isSelected) {\r\n this.geoJsonUtilsService.uploadGeoJson('remove');\r\n }\r\n }\r\n\r\n highlightProperty(result): void {\r\n // for checking if object is not empty\r\n if (JSON.stringify(result) !== '{}') {\r\n if (\r\n result.eiendom && result.eiendom[0]?.geojson &&\r\n this.positionInfoBtns[0].isSelected\r\n ) {\r\n this.feature = `{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":${result.eiendom[0].geojson}}]}`;\r\n this.geoJsonUtilsService.setSearchResultStyle();\r\n this.geoJsonUtilsService.uploadGeoJson(this.feature);\r\n }\r\n }\r\n }\r\n getUnits(buildingInfo): void {\r\n if (buildingInfo?.bruksenheter !== null) {\r\n buildingInfo.bruksenheter.forEach((b) => {\r\n if (b.bruksenhet.etasjeplankode !== '' && b.bruksenhet.etasjeplankode !== ' ') {\r\n this.utilityUnits = this.utilityUnits + b.bruksenhet.etasjeplankode + \r\n (b.bruksenhet.etasjenr < 10 ? '0' + b.bruksenhet.etasjenr : b.bruksenhet.etasjenr ) +\r\n (b.bruksenhet.lopenr < 10 ? '0' + b.bruksenhet.lopenr : b.bruksenhet.lopenr ) + ' '\r\n }\r\n })\r\n }\r\n }\r\n}\r\n","
    \r\n\r\n
    \r\n
    \r\n Adresse\r\n \r\n {{vm.pointInfo?.adresse[0].adressetext}}, \r\n {{vm.kommuneInfo?.kommunenavn}}\r\n \r\n \r\n
    \r\n
    \r\n Koordinat\r\n {{vm.lat}}, {{vm.lon}}, {{vm.clickCoordinates?.crs}}\r\n
    \r\n
    \r\n Høyde\r\n {{vm.elevationResult?.z}} m.o.h\r\n
    \r\n
    \r\n\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{positionInfoBtns[0].name | translate}}: {{vm.pointInfo.eiendom[0].gnr}}/{{vm.pointInfo.eiendom[0].bnr}}/{{vm.pointInfo.eiendom[0].snr}}/{{vm.pointInfo.eiendom[0].fnr}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{positionInfoBtns[1].name | translate}}: {{vm.pointInfo.bygning[0].bygningstypekode}} ({{vm.pointInfo.bygning[0].bygningsnr}})\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{positionInfoBtns[2].name | translate}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyPositionInfoComponent } from './isy-position-info.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { IsyPositionInfoPropertyComponent } from './isy-position-info-property/isy-position-info-property.component';\r\nimport { IsyPositionInfoBuildingComponent } from './isy-position-info-building/isy-position-info-building.component';\r\nimport { IsyPositionInfoAreaplanComponent } from './isy-position-info-areaplan/isy-position-info-areaplan.component';\r\nimport { IsyNeighborModule } from '@isygis/isy-neighbor';\r\nimport { IsyPositionInfoAreaplanDocComponent } from './isy-position-info-areaplan/isy-position-info-areaplan-doc/isy-position-info-areaplan-doc.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n IsyNeighborModule,\r\n ],\r\n declarations: [\r\n IsyPositionInfoComponent,\r\n IsyPositionInfoPropertyComponent,\r\n IsyPositionInfoBuildingComponent,\r\n IsyPositionInfoAreaplanComponent,\r\n IsyPositionInfoAreaplanDocComponent,\r\n ],\r\n exports: [IsyPositionInfoComponent],\r\n})\r\nexport class IsyPositionInfoModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, combineLatest } from 'rxjs';\r\nimport {\r\n catchError, switchMap,\r\n map\r\n} from 'rxjs/operators';\r\nimport {\r\n IsyMapService, MapLibNgService\r\n} from '@isygis/isy-map';\r\nimport { ELogin, ICoordinate, NestedProperties } from '@isygis/isy-configs';\r\nimport { IMetadataService } from '@isygis/isymap-config';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyIframeComponent } from '@isygis/isy-utils';\r\n\r\nexport const PINICONSTYLE: any[] = [\r\n {\r\n stroke: {\r\n color: 'rgba(255, 255, 255, 1)',\r\n width: 7,\r\n },\r\n },\r\n {\r\n fill: {\r\n color: 'rgba(255, 0, 0, .3)',\r\n },\r\n\r\n stroke: {\r\n color: 'rgba(44, 83, 121, 1)',\r\n width: 3,\r\n },\r\n image: {\r\n src:\r\n 'data:image/svg+xml;utf8,' +\r\n '' +\r\n '',\r\n\r\n scale: 0.08,\r\n anchor: [0.4, 512],\r\n anchorXUnits: 'fraction',\r\n anchorYUnits: 'pixels',\r\n },\r\n },\r\n];\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyPositionInfoService {\r\n private positionInfoAction = new BehaviorSubject(false);\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService,\r\n private mapLibNgService: MapLibNgService,\r\n private sessionStorageService: SessionStorageService,\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService,\r\n ) {}\r\n\r\n clickCoordinates$ = combineLatest([\r\n this.mapService.clickCoordinates$,\r\n ]).pipe(\r\n map(([coordinate]: [ICoordinate]) => {\r\n if (coordinate && coordinate.epsg) {\r\n // Show marker only if PositionInfo activated\r\n if (this.positionInfoAction.getValue()) {\r\n this.mapLibNgService.map().hideMarker();\r\n const center = {\r\n lon: coordinate.lon,\r\n lat: coordinate.lat,\r\n epsg: 'EPSG:' + coordinate.epsg,\r\n };\r\n this.showMarker(center);\r\n }\r\n\r\n return coordinate;\r\n } else {\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n })\r\n // tap(result => console.log('Isy Components XXX click coordinates XXX: ', result))\r\n );\r\n\r\n getPropertyAndPlan$ = combineLatest([this.clickCoordinates$]).pipe(\r\n switchMap(([changeCoordinate]: [ICoordinate]) => {\r\n if (\r\n changeCoordinate &&\r\n Object.keys(changeCoordinate).length > 0 &&\r\n 'lon' in changeCoordinate &&\r\n this.mapService.getConfig()\r\n ) {\r\n let picklistUrl = this.mapService.getConfig().externalServices.picklist;\r\n picklistUrl += 'rpc/pointinfo?';\r\n picklistUrl += 'x=' + changeCoordinate.lon;\r\n picklistUrl += '&y=' + changeCoordinate.lat;\r\n picklistUrl += '&srid=' + changeCoordinate.epsg;\r\n return this.httpClient.get(encodeURI(picklistUrl));\r\n } else {\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n })\r\n // tap(result => console.log('Property AND PLAN: ', result))\r\n );\r\n\r\n getPropertyInfo$ = combineLatest([this.clickCoordinates$]).pipe(\r\n // Fetch building, address, property and plan information from coordinates.\r\n switchMap(([changeCoordinate]: [ICoordinate]) => {\r\n if (\r\n changeCoordinate &&\r\n Object.keys(changeCoordinate).length > 0 &&\r\n 'lon' in changeCoordinate &&\r\n this.mapService.getConfig()\r\n ) {\r\n let picklistUrl = this.mapService.getConfig().externalServices.picklist;\r\n picklistUrl += 'rpc/pointinfo?';\r\n picklistUrl += 'x=' + changeCoordinate.lon;\r\n picklistUrl += '&y=' + changeCoordinate.lat;\r\n picklistUrl += '&srid=' + changeCoordinate.epsg;\r\n const headers = { 'Accept-Profile': 'api_v2' };\r\n return this.httpClient.get(encodeURI(picklistUrl), { headers });\r\n } else {\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n })\r\n );\r\n\r\n getPointInfo$ = this.clickCoordinates$.pipe(\r\n switchMap((changeCoordinate: ICoordinate) => {\r\n if (\r\n changeCoordinate &&\r\n Object.keys(changeCoordinate).length > 0 &&\r\n 'lon' in changeCoordinate\r\n ) {\r\n let pointInfoUrl = 'https://gd-datalake-postgrest.azurewebsites.net/';\r\n pointInfoUrl += 'rpc/pointinfo?';\r\n pointInfoUrl += 'x=' + changeCoordinate.lon;\r\n pointInfoUrl += '&y=' + changeCoordinate.lat;\r\n pointInfoUrl += '&srid=' + changeCoordinate.epsg;\r\n pointInfoUrl += '&codelist=true';\r\n const headers = { 'Accept-Profile': 'api_v3' };\r\n return this.httpClient.get(encodeURI(pointInfoUrl), { headers }).pipe(\r\n map((result) => {\r\n return result;\r\n }),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n })\r\n );\r\n\r\n private showMarker(mapSetCenter): void {\r\n this.mapLibNgService.map().showMarker(mapSetCenter, PINICONSTYLE);\r\n }\r\n\r\n setPositionInfoAction(value): void {\r\n this.positionInfoAction.next(value);\r\n }\r\n\r\n recursiveReplace(properties: NestedProperties, url: string, coordinate: any): string {\r\n for (const key in properties) {\r\n if (url.includes('{' + key.toUpperCase() + '}')) {\r\n const value = properties[key].toString();\r\n url = url.replace('{' + key.toUpperCase() + '}', value);\r\n }\r\n }\r\n if (url.includes('{x}')) {\r\n url = url.replace('{x}', coordinate.lon.toString());\r\n }\r\n if (url.includes('{y}')) {\r\n url = url.replace('{y}', coordinate.lat.toString());\r\n }\r\n return url;\r\n }\r\n openBladeOrWindow(\r\n customintegration: IMetadataService,\r\n item: any,\r\n newWindow, \r\n coordinate,\r\n projectConfig\r\n ): void {\r\n let url = this.recursiveReplace(item, customintegration.metadataurl, coordinate);\r\n if (\r\n customintegration.useisytoken === 'true' &&\r\n this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n ) {\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n if (url.indexOf('?') > 0) {\r\n url = url + '&isytoken=' + isytoken;\r\n } else {\r\n url = url + '?isytoken=' + isytoken;\r\n }\r\n }\r\n if (newWindow === 'true') {\r\n window.open(url);\r\n } else {\r\n // applied for kc and idporten\r\n const webinnsynurl = projectConfig.config.project.webinnsynurl;\r\n const webinnsyniframelandingpage = `${webinnsynurl}${webinnsynurl.charAt(webinnsynurl.length - 1) === '/' ? '' : '/'}framed.htm`;\r\n const data = this.commonService.getKcUsed() || this.commonService.getIdPortenUsed()\r\n ? { url: webinnsyniframelandingpage, postMsgUrl: url }\r\n : { url };\r\n this.bladeService.showBladeWithComponent(\r\n 'metadataService',\r\n IsyIframeComponent,\r\n data,\r\n {\r\n position: 'top',\r\n fullScreen: true,\r\n offset: 100,\r\n showBladeOverlay: true,\r\n }\r\n );\r\n }\r\n }\r\n private handleErrorWithPromise(): Promise {\r\n return Promise.resolve({});\r\n }\r\n}\r\n","import { Directive, HostListener, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'button[libIsyPrint]',\r\n})\r\nexport class IsyPrintDirective {\r\n public _printStyle = [];\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() printSectionId: string;\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() printTitle: string;\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() useExistingCss = false;\r\n\r\n /**\r\n * A delay in milliseconds to force the print dialog to wait before opened. Default: 0\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input() printDelay = 0;\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @Input()\r\n set printStyle(values: { [key: string]: { [key: string]: string } }) {\r\n for (const key in values) {\r\n if (Object.prototype.hasOwnProperty.call(values, key)) {\r\n this._printStyle.push(\r\n (key + JSON.stringify(values[key])).replace(/['\"]+/g, '')\r\n );\r\n }\r\n }\r\n this.returnStyleValues();\r\n }\r\n /**\r\n *\r\n *\r\n * @returns html for the given tag\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n private _styleSheetFile = '';\r\n\r\n /**\r\n *\r\n *\r\n * @returns the string that create the stylesheet which will be injected\r\n * later within tag.\r\n *\r\n * -join/replace to transform an array objects to css-styled string\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n public returnStyleValues() {\r\n return ``;\r\n }\r\n\r\n /**\r\n * @memberof NgxPrintDirective\r\n * @param cssList\r\n */\r\n @Input()\r\n set styleSheetFile(cssList: string) {\r\n const linkTagFn = function (cssFileName) {\r\n return ``;\r\n };\r\n if (cssList.indexOf(',') !== -1) {\r\n const valueArr = cssList.split(',');\r\n for (const val of valueArr) {\r\n this._styleSheetFile = this._styleSheetFile + linkTagFn(val);\r\n }\r\n } else {\r\n this._styleSheetFile = linkTagFn(cssList);\r\n }\r\n }\r\n\r\n /**\r\n * @returns string which contains the link tags containing the css which will\r\n * be injected later within tag.\r\n *\r\n */\r\n private returnStyleSheetLinkTags() {\r\n return this._styleSheetFile;\r\n }\r\n private getElementTag(tag: keyof HTMLElementTagNameMap): string {\r\n const html: string[] = [];\r\n const elements = document.getElementsByTagName(tag);\r\n for (let index = 0; index < elements.length; index++) {\r\n html.push(elements[index].outerHTML);\r\n }\r\n return html.join('\\r\\n');\r\n }\r\n\r\n /**\r\n * @returns html section to be printed along with some associated inputs\r\n *\r\n */\r\n private getHtmlContents() {\r\n const printContents = document.getElementById(this.printSectionId);\r\n const innards = printContents.getElementsByTagName('input');\r\n for (let i = 0; i < innards.length; i++) {\r\n innards[i].defaultValue = innards[i].value;\r\n }\r\n return printContents.innerHTML;\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @memberof NgxPrintDirective\r\n */\r\n @HostListener('click')\r\n public print(): void {\r\n let styles = '',\r\n links = '';\r\n\r\n if (this.useExistingCss) {\r\n styles = this.getElementTag('style');\r\n links = this.getElementTag('link');\r\n }\r\n\r\n const printContents = this.getHtmlContents();\r\n const popupWin = window.open(\r\n '',\r\n '_blank',\r\n 'top=0,left=0,height=auto,width=auto'\r\n );\r\n popupWin.document.open();\r\n popupWin.document.write(`\r\n \r\n \r\n ${this.printTitle ? this.printTitle : ''}\r\n ${this.returnStyleValues()}\r\n ${this.returnStyleSheetLinkTags()}\r\n ${styles}\r\n ${links}\r\n \r\n \r\n \r\n ${printContents}\r\n \r\n \r\n `);\r\n popupWin.document.close();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { IsyPrintDirective } from './isy-print.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [IsyPrintDirective],\r\n exports: [IsyPrintDirective],\r\n})\r\nexport class IsyPrintModule {}\r\n","import { Component } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { EUrlParam } from '@isygis/isy-configs';\r\n\r\n@Component({\r\n selector: 'lib-isy-project-not-found',\r\n templateUrl: './isy-project-not-found.component.html',\r\n styleUrls: ['./isy-project-not-found.component.scss'],\r\n})\r\nexport class IsyProjectNotFoundComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(private route: ActivatedRoute, private router: Router) {}\r\n\r\n goToDefault(): void {\r\n const param = {};\r\n if (\r\n this.route.snapshot.queryParams['application'] &&\r\n this.route.snapshot.queryParams['application'] !== ''\r\n ) {\r\n param[EUrlParam.APPLICATION] =\r\n this.route.snapshot.queryParams['application'];\r\n } else {\r\n param[EUrlParam.APPLICATION] = '';\r\n }\r\n\r\n this.router.navigate(['/'], {\r\n queryParams: param,\r\n });\r\n }\r\n}\r\n","\r\n
    \r\n \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyProjectNotFoundComponent } from './isy-project-not-found.component';\r\nimport { IsyEmptyContentModule } from '@isygis/isy-empty-content';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n IsyEmptyContentModule,\r\n IsyTranslateModule,\r\n ],\r\n declarations: [IsyProjectNotFoundComponent],\r\n exports: [IsyProjectNotFoundComponent],\r\n})\r\nexport class IsyProjectNotFoundModule {}\r\n","import { Component, HostBinding, OnDestroy } from '@angular/core';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport {\r\n Location,\r\n LocationStrategy,\r\n PathLocationStrategy,\r\n} from '@angular/common';\r\nimport { IsyProjectsListService } from './isy-projects-list.service';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { ProjectListItem } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-projects-list',\r\n templateUrl: './isy-projects-list.component.html',\r\n styleUrls: ['./isy-projects-list.component.scss'],\r\n providers: [\r\n Location,\r\n { provide: LocationStrategy, useClass: PathLocationStrategy },\r\n ],\r\n animations: [pageAnimation],\r\n})\r\nexport class IsyProjectsListComponent implements OnDestroy {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n private activeProjectName = '';\r\n\r\n constructor(\r\n private mapService: IsyMapService,\r\n private projectsListService: IsyProjectsListService\r\n ) {}\r\n\r\n projectsList$ = this.projectsListService.getProjectList$;\r\n activeProjectName$ = this.projectsListService.activeProjectName$;\r\n projectName$ = this.mapService.projectName$.pipe(\r\n map((value) => (this.activeProjectName = value))\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.projectsList$,\r\n this.activeProjectName$,\r\n this.projectName$,\r\n ]).pipe(\r\n map(\r\n ([projectsList, activeProjectName, projectName]: [\r\n ProjectListItem[],\r\n string,\r\n string\r\n ]) => ({\r\n projectsList,\r\n activeProjectName: activeProjectName ? activeProjectName : projectName,\r\n })\r\n )\r\n );\r\n\r\n ngOnDestroy() {\r\n this.projectsListService.removeActiveProjectName();\r\n }\r\n\r\n changeProject(projectList: ProjectListItem[], project: ProjectListItem) {\r\n if (project.ProjectName.toLowerCase() !== this.activeProjectName) {\r\n this.projectsListService.changeProject(projectList, project);\r\n }\r\n }\r\n}\r\n","
      \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \"\"/\r\n
      \r\n
      \r\n {{project.ProjectName | titlecase}}\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
    • \r\n
      \r\n
    \r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyProjectsListComponent } from './isy-projects-list.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FontAwesomeModule],\r\n declarations: [IsyProjectsListComponent],\r\n exports: [IsyProjectsListComponent],\r\n})\r\nexport class IsyProjectsListModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n IsyMapService,\r\n IsyMapEmitterService,\r\n EReInitType,\r\n} from '@isygis/isy-map';\r\nimport { BehaviorSubject, combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { ProjectListItem } from '@isygis/isymap-config';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyProjectsListService {\r\n constructor(\r\n private mapService: IsyMapService,\r\n private translateService: IsyTranslateService,\r\n private toasterService: IsyToasterService,\r\n private mapEmitterService: IsyMapEmitterService\r\n ) {}\r\n\r\n private _activeProjectNameAction = new BehaviorSubject(undefined);\r\n activeProjectName$ = this._activeProjectNameAction.asObservable();\r\n private projectList$ = this.mapEmitterService.projectsListUpdatedEmitter$;\r\n\r\n getProjectList$ = combineLatest([this.projectList$]).pipe(\r\n map(([projectList]: [ProjectListItem[]]) => {\r\n if (projectList) {\r\n const iconUrl = this.mapService.getHeaderIconBaseUrl();\r\n return projectList.map((p: ProjectListItem) => {\r\n let imageUrl = '';\r\n if (p.HeaderIcon === null) {\r\n imageUrl = 'assets/WinMap_64.png';\r\n } else if (p.HeaderIcon.includes('https://')) {\r\n imageUrl = p.HeaderIcon;\r\n } else {\r\n imageUrl = iconUrl + p.HeaderIcon;\r\n }\r\n return {\r\n ...p,\r\n projectImageUrl: imageUrl,\r\n ProjectName: p.ProjectName.toLocaleLowerCase(),\r\n } as ProjectListItem;\r\n });\r\n } else {\r\n return Promise.resolve([]);\r\n }\r\n })\r\n );\r\n\r\n changeProject(projectList: ProjectListItem[], project: ProjectListItem): void {\r\n const projectName =\r\n typeof project === 'object' ? project.ProjectName : project;\r\n const projectExist = projectList.find(\r\n (projectList) =>\r\n projectList.ProjectName.toLowerCase() === projectName.toLowerCase()\r\n );\r\n if (projectExist) {\r\n this.mapService.setNewProject(project);\r\n this.mapService.reInit(EReInitType.REINIT_WITH_PROJECT_CONFIG);\r\n if (project.UpdateExtent) {\r\n this.mapService.updateNewProjectExtent();\r\n }\r\n this._activeProjectNameAction.next(projectName);\r\n this.toasterService.info(\r\n this.translateService.instant('project') +\r\n ' ' +\r\n projectName +\r\n this.translateService.instant('project_loaded')\r\n );\r\n } else {\r\n this.toasterService.info(\r\n this.translateService.instant('project') +\r\n ' ' +\r\n projectName +\r\n this.translateService.instant('project_does_not_exist')\r\n );\r\n }\r\n }\r\n\r\n removeActiveProjectName() {\r\n this._activeProjectNameAction.next(undefined);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RoadProfileComponent } from './road-profile/road-profile.component';\r\nimport { RoadCrossSectionComponent } from './road-cross-section/road-cross-section.component';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { IsyToasterModule } from '@isygis/isy-toaster';\r\nimport { IsyEmptyContentModule } from '@isygis/isy-empty-content';\r\nimport { RoadProfileDirective } from './road-profile.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n BsDropdownModule.forRoot(),\r\n IsySpinnerModule,\r\n IsyToasterModule,\r\n IsyTranslateModule,\r\n IsyEmptyContentModule,\r\n ],\r\n declarations: [\r\n RoadProfileComponent,\r\n RoadCrossSectionComponent,\r\n RoadProfileDirective,\r\n ],\r\n exports: [RoadProfileDirective],\r\n})\r\nexport class IsyRoadProfileModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyRoadProfileService {\r\n\r\n cachedClickCoordinateAction = new BehaviorSubject(undefined);\r\n cachedClickCoordinate$ = this.cachedClickCoordinateAction.asObservable();\r\n\r\n cacheClickCoordinate(coordinate?: any): void {\r\n this.cachedClickCoordinateAction.next(coordinate ? coordinate : undefined);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { IRefreshed } from './refreshed';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RoadCrossSectionEmitterService {\r\n private initialized = new BehaviorSubject(undefined);\r\n initializedEmitter$ = this.initialized.asObservable();\r\n\r\n private refreshed = new BehaviorSubject(undefined);\r\n refreshedEmitter$ = this.refreshed.asObservable();\r\n\r\n private errorEventAction = new BehaviorSubject(undefined);\r\n errorEventEmitter$ = this.errorEventAction.asObservable();\r\n\r\n emitInitialized(value): void {\r\n this.initialized.next(value);\r\n }\r\n\r\n emitRefreshed(value: IRefreshed): void {\r\n this.refreshed.next(value);\r\n }\r\n\r\n emitErrorEvent(value: string): void {\r\n this.errorEventAction.next(value);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n EventsEventHandler,\r\n RoadCrossSectionAPI,\r\n RoadCrossSectionImplementation,\r\n EventsEventTypes,\r\n} from '@isygis/roadprofile';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RoadCrossSectionService {\r\n eventsEventHandler;\r\n\r\n // RoadCrossSectionImplementation\r\n roadCrossSectionImplementation;\r\n // RoadCrossSectionApi\r\n roadCrossSectionAPI;\r\n\r\n eventsEventTypes = EventsEventTypes;\r\n\r\n init(): void {\r\n this.eventsEventHandler = new EventsEventHandler();\r\n\r\n this.roadCrossSectionImplementation = new RoadCrossSectionImplementation(\r\n this.eventsEventHandler\r\n );\r\n this.roadCrossSectionAPI = new RoadCrossSectionAPI(\r\n this.roadCrossSectionImplementation\r\n );\r\n }\r\n\r\n roadCrossSection(): any {\r\n return this.roadCrossSectionAPI;\r\n }\r\n\r\n eventHandler(): any {\r\n return this.eventsEventHandler;\r\n }\r\n\r\n eventTypes(): any {\r\n return this.eventsEventTypes;\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { RoadCrossSectionService } from '../road-cross-section.service';\r\nimport { RoadCrossSectionEmitterService } from '../road-cross-section-emitter.service';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { debounceTime, take, map } from 'rxjs/operators';\r\nimport { Subscription, combineLatest } from 'rxjs';\r\nimport {\r\n IsyMapEmitterService,\r\n MapLibNgService,\r\n IsyMapService,\r\n} from '@isygis/isy-map';\r\nimport { IRefreshed } from '../refreshed';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IDomainFeature } from '@isygis/isy-configs';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IsyRoadProfileService } from '../isy-road-profile.service';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\n\r\n@Component({\r\n selector: 'lib-road-cross-section',\r\n templateUrl: './road-cross-section.component.html',\r\n styleUrls: ['../isy-road-profile.component.scss'],\r\n})\r\nexport class RoadCrossSectionComponent\r\n implements OnInit, AfterViewInit, OnDestroy\r\n{\r\n constructor(\r\n private roadCrossSectionService: RoadCrossSectionService,\r\n private commonService: IsyCommonService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapLibNgService: MapLibNgService,\r\n private roadCrossSectionEmitterService: RoadCrossSectionEmitterService,\r\n private bladeService: IsyBladeService,\r\n private translateService: IsyTranslateService,\r\n private isyRoadProfileService: IsyRoadProfileService,\r\n private toasterService: IsyToasterService,\r\n private mapService: IsyMapService\r\n ) {}\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription: Subscription = new Subscription();\r\n drawCrossSection$;\r\n vegnavn: string;\r\n cachedDomainFeature: IDomainFeature;\r\n private projectConfig$ = this.mapService.projectConfig$;\r\n\r\n // init$ = this.roadCrossSectionEmitterService.initializedEmitter$;\r\n refreshed$ = this.roadCrossSectionEmitterService.refreshedEmitter$.pipe(\r\n map((refreshed: IRefreshed) => {\r\n if (refreshed) {\r\n const allLayersSelected = !refreshed.layers.find(\r\n (l) => l.display === false\r\n )\r\n ? true\r\n : false;\r\n const partiallySelected = refreshed.layers.find(\r\n (l) => l.display === true\r\n )\r\n ? true\r\n : false;\r\n setTimeout(() => {\r\n this.changeBladeHeaderTitle(this.vegnavn, refreshed.profilenumber);\r\n });\r\n return { ...refreshed, allLayersSelected, partiallySelected };\r\n } else {\r\n return refreshed;\r\n }\r\n })\r\n );\r\n\r\n loadError$ = this.roadCrossSectionEmitterService.errorEventEmitter$.pipe(\r\n map((value: string) => {\r\n if (value) {\r\n this.toasterService.error(value, 'Error');\r\n }\r\n return value;\r\n })\r\n );\r\n\r\n vm$ = combineLatest([this.refreshed$, this.loadError$]).pipe(\r\n map(([refreshed, loadError]: [IRefreshed, string]) => ({\r\n refreshed,\r\n loadError,\r\n }))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.roadCrossSectionService.init();\r\n this.registerEvents();\r\n this.commonService.hideInfoPanel(true);\r\n this.commonService.hideSearchBar(true);\r\n this.commonService.forceHideSideNav(true);\r\n this.subscription.add(\r\n this.roadCrossSectionEmitterService.initializedEmitter$.subscribe(\r\n (value) => {\r\n if (value) {\r\n this.roadCrossSectionEmitterService.emitErrorEvent(undefined);\r\n }\r\n }\r\n )\r\n );\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const clickCoordinates$ =\r\n this.mapEmitterService.getClickCoordinatesEmitter$;\r\n const cachedClickCoordinates$ =\r\n this.isyRoadProfileService.cachedClickCoordinate$;\r\n const roadCrossSectionData$ = this.commonService.roadCrossSectionData$;\r\n\r\n const positionMarker$ = combineLatest([\r\n roadCrossSectionData$,\r\n clickCoordinates$,\r\n cachedClickCoordinates$,\r\n ]).pipe(\r\n map(\r\n ([roadCrossSectionData, clickCoordinates, cachedClickCoordinates]: [\r\n IDomainFeature,\r\n any,\r\n any\r\n ]) => ({\r\n featureInfo: roadCrossSectionData,\r\n clickCoordinates: clickCoordinates\r\n ? clickCoordinates\r\n : cachedClickCoordinates,\r\n showArrow: true,\r\n })\r\n ),\r\n take(1)\r\n );\r\n\r\n this.subscription.add(\r\n positionMarker$.subscribe((data) => {\r\n this.mapLibNgService.map().deactivateHoverInfo();\r\n this.mapLibNgService.map().clearHighlightedFeatures();\r\n this.mapLibNgService.map().activateLinePositionMarker(data);\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.commonService.bladeIsResized$\r\n .pipe(debounceTime(200))\r\n .subscribe(() => {\r\n this.roadCrossSectionEmitterService.emitErrorEvent(undefined);\r\n this.roadCrossSectionEmitterService.emitRefreshed(undefined);\r\n setTimeout(() => {\r\n this.roadCrossSectionService.roadCrossSection().refresh();\r\n }, 100);\r\n })\r\n );\r\n this.subscription.add(\r\n clickCoordinates$.pipe(take(1)).subscribe((value) => {\r\n if (value) {\r\n this.isyRoadProfileService.cacheClickCoordinate(value);\r\n }\r\n })\r\n );\r\n\r\n const linePositionMarkerCoordinates$ =\r\n this.mapEmitterService.linePositionMarkerCoordinatesEmitter$.pipe(\r\n map((value: any) => {\r\n if (value) {\r\n this.roadCrossSectionEmitterService.emitRefreshed(undefined);\r\n }\r\n return value;\r\n })\r\n );\r\n\r\n this.drawCrossSection$ = combineLatest([\r\n linePositionMarkerCoordinates$,\r\n roadCrossSectionData$,\r\n ]).pipe(\r\n map(([linePositionMarkerCoordinates, feature]: [any, IDomainFeature]) => {\r\n if (linePositionMarkerCoordinates && feature) {\r\n this.cachedDomainFeature = feature;\r\n const projectConfig = this.mapService.getProjectConfig();\r\n const properties = feature.properties;\r\n const config = {\r\n targetId: 'roadcrosssection',\r\n roadapiurl: projectConfig.config.project.roadProfileApiUrl,\r\n projectid: typeof properties['prosjektid'] === \"string\" ? properties['prosjektid'] : '',\r\n roadlineid: typeof properties['id'] === \"string\" ? properties['id'] : '',\r\n srs: 25832,\r\n east: linePositionMarkerCoordinates[0],\r\n north: linePositionMarkerCoordinates[1],\r\n };\r\n const options = {\r\n feature: feature.olFeature,\r\n style: 'neighbor',\r\n };\r\n this.mapLibNgService.map().activateFeatureSelector(options);\r\n setTimeout(() => {\r\n this.vegnavn = typeof properties['vegnavn'] === \"string\" ? properties['vegnavn'] : '';\r\n this.changeBladeHeaderTitle(this.vegnavn);\r\n });\r\n return config;\r\n }\r\n return undefined;\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.drawCrossSection$.subscribe((config) => {\r\n if (config) {\r\n this.roadCrossSectionService.roadCrossSection().init(config);\r\n this.roadCrossSectionService.roadCrossSection().draw();\r\n }\r\n })\r\n );\r\n }\r\n\r\n registerEvents(): void {\r\n const eventHandler = this.roadCrossSectionService.eventHandler();\r\n const eventTypes = this.roadCrossSectionService.eventTypes();\r\n\r\n eventHandler.registerEvent(\r\n eventTypes.Initialized,\r\n 'Initialized',\r\n this.initialized.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.Refreshed,\r\n 'Refreshed',\r\n this.refreshed.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ErrorEvent,\r\n 'ErrorEvent',\r\n this.errorEvent.bind(this)\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.commonService.setRoadCrossSectionData();\r\n this.commonService.hideInfoPanel(false);\r\n this.commonService.hideSearchBar(false);\r\n this.commonService.forceHideSideNav(false);\r\n this.commonService.hideSideNav(true);\r\n this.mapLibNgService.map().deactivateLinePositionMarker();\r\n this.mapLibNgService.map().activateHoverInfo();\r\n this.mapLibNgService.map().deactivateFeatureSelector();\r\n this.roadCrossSectionEmitterService.emitErrorEvent(undefined);\r\n this.roadCrossSectionEmitterService.emitRefreshed(undefined);\r\n }\r\n\r\n // Registred events\r\n\r\n initialized(value: any): void {\r\n this.roadCrossSectionEmitterService.emitInitialized(value);\r\n }\r\n\r\n refreshed(value: IRefreshed): void {\r\n this.roadCrossSectionEmitterService.emitRefreshed(value);\r\n }\r\n\r\n errorEvent(value: string): void {\r\n this.roadCrossSectionEmitterService.emitErrorEvent(value);\r\n }\r\n\r\n // Component functions\r\n\r\n showHideAll(refreshed: IRefreshed): void {\r\n refreshed.layers.forEach((l) => (l.display = !refreshed.allLayersSelected));\r\n refreshed.allLayersSelected = !refreshed.layers.find(\r\n (l) => l.display === false\r\n )\r\n ? true\r\n : false;\r\n refreshed.partiallySelected = refreshed.layers.find(\r\n (l) => l.display === true\r\n )\r\n ? true\r\n : false;\r\n this.roadCrossSectionService\r\n .roadCrossSection()\r\n .toggleLayers(refreshed.layers);\r\n }\r\n\r\n showHideLayer(refreshed: IRefreshed, i: number): void {\r\n refreshed.layers[i].display = !refreshed.layers[i].display;\r\n refreshed.allLayersSelected = !refreshed.layers.find(\r\n (l) => l.display === false\r\n )\r\n ? true\r\n : false;\r\n refreshed.partiallySelected = refreshed.layers.find(\r\n (l) => l.display === true\r\n )\r\n ? true\r\n : false;\r\n this.roadCrossSectionService\r\n .roadCrossSection()\r\n .toggleLayers(refreshed.layers);\r\n }\r\n\r\n mirrorView(refreshed: IRefreshed): void {\r\n refreshed.mirroredview = !refreshed.mirroredview;\r\n this.roadCrossSectionService\r\n .roadCrossSection()\r\n .mirrorview(refreshed.mirroredview);\r\n this.mapLibNgService\r\n .map()\r\n .showMirrorViewPositionMarker(refreshed.mirroredview);\r\n }\r\n\r\n refresh(): void {\r\n this.roadCrossSectionService.roadCrossSection().refresh();\r\n }\r\n\r\n showRoadProfile(): void {\r\n this.bladeService.hide('roadCrossSection');\r\n this.commonService.setRoadProfileData(this.cachedDomainFeature);\r\n this.commonService.showRoadProfile();\r\n }\r\n\r\n private changeBladeHeaderTitle(\r\n vegnavn: string,\r\n profilenumber?: number\r\n ): void {\r\n const profileNum =\r\n profilenumber !== undefined ? ' - ' + String(profilenumber) : '';\r\n this.bladeService.changeDynamicBladeHeaderTitle(\r\n 'roadCrossSection',\r\n this.translateService.instant('road_cross_section_header') +\r\n ' - ' +\r\n vegnavn +\r\n profileNum\r\n );\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n
      \r\n \r\n {{'road_profile_show_all_layers' | translate}}\r\n
      \r\n
    • \r\n
    • \r\n
    • \r\n
      \r\n \r\n {{layer.name | lowercase}}\r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { Directive, OnInit, OnDestroy } from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { RoadProfileComponent } from './road-profile/road-profile.component';\r\nimport { RoadCrossSectionComponent } from './road-cross-section/road-cross-section.component';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[libRoadProfile]',\r\n})\r\nexport class RoadProfileDirective implements OnInit, OnDestroy {\r\n subscriptions: Subscription = new Subscription();\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.add(\r\n this.commonService.showRoadProfile$.subscribe(() => {\r\n this.bladeService.showBladeWithComponent(\r\n 'roadprofile',\r\n RoadProfileComponent,\r\n undefined,\r\n {\r\n showHeader: true,\r\n bladeHeader: {\r\n headerTitle: 'road_profile_header',\r\n headerImgIconClass: 'lengdeProfil',\r\n expandBladeBtn: true,\r\n },\r\n }\r\n );\r\n })\r\n );\r\n\r\n this.subscriptions.add(\r\n this.commonService.showRoadCrossSection$.subscribe(() => {\r\n this.bladeService.showBladeWithComponent(\r\n 'roadCrossSection',\r\n RoadCrossSectionComponent,\r\n undefined,\r\n {\r\n showHeader: true,\r\n bladeHeader: {\r\n headerTitle: 'road_cross_section_header',\r\n headerImgIconClass: 'tverrProfil',\r\n expandBladeBtn: true,\r\n },\r\n }\r\n );\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { RoadProfileService } from '../roadprofile.service';\r\nimport { RoadProfileEmitterService } from '../roadprofile-emitter.service';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { debounceTime, map } from 'rxjs/operators';\r\nimport { Subscription, combineLatest } from 'rxjs';\r\nimport {\r\n IsyMapEmitterService,\r\n MapLibNgService,\r\n IsyMapService,\r\n} from '@isygis/isy-map';\r\nimport { IDomainLayer, IDomainFeature } from '@isygis/isy-configs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { IsyRoadProfileService } from '../isy-road-profile.service';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\n\r\n@Component({\r\n selector: 'lib-road-profile',\r\n templateUrl: './road-profile.component.html',\r\n styleUrls: ['../isy-road-profile.component.scss'],\r\n})\r\nexport class RoadProfileComponent implements OnInit, AfterViewInit, OnDestroy {\r\n isActivated = false;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n activeRoadFeature = 0;\r\n\r\n constructor(\r\n private roadProfileService: RoadProfileService,\r\n private roadProfileEmitterService: RoadProfileEmitterService,\r\n private commonService: IsyCommonService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapLibNgService: MapLibNgService,\r\n private bladeService: IsyBladeService,\r\n private translateService: IsyTranslateService,\r\n private isyRoadProfileService: IsyRoadProfileService,\r\n private toasterService: IsyToasterService,\r\n private mapService: IsyMapService\r\n ) {}\r\n\r\n private subscription: Subscription = new Subscription();\r\n private cachedFeatures;\r\n\r\n featureInforEnd$ = this.mapEmitterService.featureInfoEndEmitter$.pipe(\r\n map((value: IDomainLayer) => {\r\n if (value && value.features && this.isActivated) {\r\n this.roadProfileEmitterService.emitRefreshed(undefined);\r\n this.activeRoadFeature = 0;\r\n this.cachedFeatures = value.features;\r\n this.drawRoadProfile(this.cachedFeatures[0]);\r\n return value.features.length;\r\n }\r\n return 1;\r\n })\r\n );\r\n\r\n loadError$ = this.roadProfileEmitterService.errorEventEmitter$.pipe(\r\n map((value: string) => {\r\n if (value) {\r\n this.toasterService.error(value, 'Error');\r\n }\r\n return value;\r\n })\r\n );\r\n refreshed$ = this.roadProfileEmitterService.refreshedEmitter$.pipe(\r\n map((value: any) => {\r\n return value ? true : false;\r\n })\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.featureInforEnd$,\r\n this.loadError$,\r\n this.refreshed$,\r\n ]).pipe(\r\n map(([features, loadError, refreshed]: [number, any, any]) => ({\r\n features,\r\n loadError,\r\n refreshed,\r\n }))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.roadProfileService.init();\r\n this.registerEvents();\r\n this.commonService.hideInfoPanel(true);\r\n this.commonService.hideSearchBar(true);\r\n this.commonService.forceHideSideNav(true);\r\n this.subscription.add(\r\n this.roadProfileEmitterService.initializedEmitter$.subscribe((value) => {\r\n if (value) {\r\n this.roadProfileEmitterService.emitErrorEvent(undefined);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.subscription.add(\r\n this.commonService.bladeIsResized$\r\n .pipe(debounceTime(200))\r\n .subscribe(() => {\r\n this.roadProfileEmitterService.emitErrorEvent(undefined);\r\n this.roadProfileEmitterService.emitRefreshed(undefined);\r\n setTimeout(() => {\r\n this.roadProfileService.roadprofile().refresh();\r\n }, 100);\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.commonService.roadProfileData$.subscribe((data) => {\r\n if (data) {\r\n this.drawRoadProfile(data);\r\n this.cachedFeatures = [data];\r\n this.activeRoadFeature = 0;\r\n this.isActivated = true;\r\n }\r\n })\r\n );\r\n this.subscription.add(\r\n this.mapEmitterService.getClickCoordinatesEmitter$.subscribe((value) => {\r\n if (value) {\r\n this.isyRoadProfileService.cacheClickCoordinate(value);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.commonService.hideInfoPanel(false);\r\n this.commonService.hideSearchBar(false);\r\n this.commonService.forceHideSideNav(false);\r\n this.commonService.hideSideNav(true);\r\n this.commonService.setRoadProfileData();\r\n this.mapLibNgService.map().deactivateFeatureSelector();\r\n this.roadProfileEmitterService.emitErrorEvent(undefined);\r\n this.roadProfileEmitterService.emitRefreshed(undefined);\r\n }\r\n\r\n registerEvents(): void {\r\n const eventHandler = this.roadProfileService.eventHandler();\r\n const eventTypes = this.roadProfileService.eventTypes();\r\n\r\n eventHandler.registerEvent(\r\n eventTypes.Initialized,\r\n 'Initialized',\r\n this.initialized.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.Refreshed,\r\n 'Refreshed',\r\n this.refreshed.bind(this)\r\n );\r\n eventHandler.registerEvent(\r\n eventTypes.ErrorEvent,\r\n 'ErrorEvent',\r\n this.errorEvent.bind(this)\r\n );\r\n }\r\n\r\n // Registred events\r\n\r\n initialized(value: any): void {\r\n this.roadProfileEmitterService.emitInitialized(value);\r\n }\r\n\r\n refreshed(value: any): void {\r\n this.roadProfileEmitterService.emitRefreshed(value);\r\n }\r\n\r\n errorEvent(value: string): void {\r\n this.roadProfileEmitterService.emitErrorEvent(value);\r\n }\r\n\r\n // Component functions\r\n\r\n refresh(): void {\r\n this.roadProfileService.roadprofile().refresh();\r\n }\r\n\r\n showRoadProfile(arrayItem: number): void {\r\n this.roadProfileEmitterService.emitRefreshed(undefined);\r\n this.drawRoadProfile(this.cachedFeatures[arrayItem]);\r\n this.activeRoadFeature = arrayItem;\r\n }\r\n\r\n showRoadCrossSection(): void {\r\n this.bladeService.hide('roadprofile');\r\n this.commonService.setRoadCrossSectionData(\r\n this.cachedFeatures[this.activeRoadFeature]\r\n );\r\n this.commonService.showRoadCrossSection();\r\n }\r\n\r\n private drawRoadProfile(feature: IDomainFeature): void {\r\n this.mapLibNgService.map().deactivateFeatureSelector();\r\n const projectConfig = this.mapService.getProjectConfig();\r\n const properties = feature.properties;\r\n const config = {\r\n targetId: 'roadprofile',\r\n roadapiurl: projectConfig.config.project.roadProfileApiUrl,\r\n projectid: properties['prosjektid'],\r\n roadlineid: properties['id'],\r\n };\r\n this.roadProfileService.roadprofile().init(config);\r\n this.roadProfileService.roadprofile().draw();\r\n const options = {\r\n feature: feature.olFeature,\r\n mode: 'multi',\r\n style: 'neighbor',\r\n };\r\n this.mapLibNgService.map().activateFeatureSelector(options);\r\n setTimeout(() => {\r\n this.bladeService.changeDynamicBladeHeaderTitle(\r\n 'roadprofile',\r\n this.translateService.instant('road_profile_header') +\r\n ' - ' +\r\n properties['vegnavn']\r\n );\r\n });\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {{'road_profile_header' | translate}} {{activeRoadFeature + 1}} av {{vm.features}}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RoadProfileEmitterService {\r\n private initializedAction = new BehaviorSubject(undefined);\r\n initializedEmitter$ = this.initializedAction.asObservable();\r\n\r\n private refreshedAction = new BehaviorSubject(undefined);\r\n refreshedEmitter$ = this.refreshedAction.asObservable();\r\n\r\n private errorEventAction = new BehaviorSubject(undefined);\r\n errorEventEmitter$ = this.errorEventAction.asObservable();\r\n\r\n emitInitialized(value: any): void {\r\n this.initializedAction.next(value);\r\n }\r\n\r\n emitRefreshed(value: any): void {\r\n this.refreshedAction.next(value);\r\n }\r\n\r\n emitErrorEvent(value: string): void {\r\n this.errorEventAction.next(value);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n EventsEventHandler, RoadProfileAPIRoadProfile, RoadProfileImplementationRoadProfile, EventsEventTypes\r\n} from '@isygis/roadprofile';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class RoadProfileService {\r\n eventsEventHandler;\r\n\r\n // RoadImplementation\r\n roadProfileImplementationRoadProfile;\r\n // RoadProfileAPI\r\n roadProfileAPIRoadProfile;\r\n\r\n eventsEventTypes = EventsEventTypes;\r\n\r\n init(): void {\r\n this.eventsEventHandler = new EventsEventHandler();\r\n\r\n this.roadProfileImplementationRoadProfile =\r\n new RoadProfileImplementationRoadProfile(this.eventsEventHandler);\r\n this.roadProfileAPIRoadProfile = new RoadProfileAPIRoadProfile(\r\n this.roadProfileImplementationRoadProfile\r\n );\r\n }\r\n\r\n roadprofile(): any {\r\n return this.roadProfileAPIRoadProfile;\r\n }\r\n\r\n eventHandler(): any {\r\n return this.eventsEventHandler;\r\n }\r\n\r\n eventTypes(): any {\r\n return this.eventsEventTypes;\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyMapService, IsyMapEmitterService } from '@isygis/isy-map';\r\nimport {\r\n ELogin,\r\n IGisCoordinate,\r\n} from '@isygis/isy-configs';\r\nimport { IsySearchResultsService } from '../../isy-search-results/isy-search-results.service';\r\nimport { ISearchGroup } from '@isygis/isy-configs';\r\nimport {\r\n IsySearchBarService,\r\n ISearchBarValue,\r\n} from '../isy-search-bar.service';\r\nimport { combineLatest, Subscription, Subject } from 'rxjs';\r\nimport { map, debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IProject, IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-search-bar-layout',\r\n templateUrl: './isy-search-bar-layout.component.html',\r\n styleUrls: ['./isy-search-bar-layout.component.scss'],\r\n})\r\nexport class IsySearchBarLayoutComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n hamburgerMenuDisabled = false;\r\n searchParams = [];\r\n\r\n subscriptions: Subscription[] = [];\r\n\r\n private project: IProject;\r\n private searchObject: ISearchGroup[] = [];\r\n\r\n public keyUpSearch = new Subject();\r\n\r\n searchTextValue = '';\r\n\r\n @Input() filterSearchParams: string[] = [];\r\n\r\n constructor(\r\n private mapService: IsyMapService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private searchResultsService: IsySearchResultsService,\r\n private sessionStorageService: SessionStorageService,\r\n private commonService: IsyCommonService,\r\n private searchBarService: IsySearchBarService\r\n ) {\r\n this.subscriptions.push(\r\n this.keyUpSearch\r\n .pipe(\r\n map((value) => {\r\n if (!value) {\r\n this.searchBarService.deactivateSearchResult();\r\n this.searchResultsService.updateSearchParams(undefined);\r\n } else {\r\n if (this.searchTextValue !== value) {\r\n this.searchBarService.activateSearchResult();\r\n this.searchResultsService.startLoading();\r\n }\r\n }\r\n this.searchTextValue = value;\r\n this.searchBarService.setSearchBarValue(value);\r\n return value;\r\n }),\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n )\r\n .subscribe((result) => {\r\n this.search(result);\r\n })\r\n );\r\n }\r\n\r\n searchTextValue$ = this.searchBarService.searchTextValue$.pipe(\r\n map((value: ISearchBarValue) => {\r\n if (value.clickCoordinates) {\r\n // return value.clickCoordinates;\r\n }\r\n if (value.searchValue) {\r\n this.searchBarService.activateSearchResult();\r\n this.searchResultsService.startLoading();\r\n this.searchTextValue = value.searchValue;\r\n return value.searchValue;\r\n }\r\n return '';\r\n })\r\n );\r\n\r\n hideMenuIcon$ = this.commonService.hideMenuIcon$;\r\n\r\n vm$ = combineLatest([this.searchTextValue$, this.hideMenuIcon$]).pipe(\r\n map(([searchTextValue, hideMenuIcon]: [string, boolean]) => ({\r\n searchTextValue,\r\n hideMenuIcon,\r\n }))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.push(\r\n this.mapEmitterService.mapLoadEmitter$.subscribe(\r\n (projectConfig: IProjectConfig) => {\r\n if (projectConfig) {\r\n // console.log('FILTER SEARCH PARAMS: ', this.filterSearchParams);\r\n this.project = projectConfig.config.project;\r\n if (\r\n this.project &&\r\n this.project.searchparams &&\r\n this.project.searchparams.searchparam\r\n ) {\r\n this.searchParams = this.project.searchparams.searchparam;\r\n if (this.filterSearchParams.length > 0) {\r\n this.searchParams = this.searchParams.filter((searchParam) => {\r\n const findParam = this.filterSearchParams.find(\r\n (filterSearchParam) =>\r\n filterSearchParam === searchParam.name\r\n );\r\n return findParam ? searchParam : undefined;\r\n });\r\n }\r\n }\r\n this.setProjectParams();\r\n if (this.searchTextValue) {\r\n this.search(this.searchTextValue);\r\n } else {\r\n this.searchBarService.deactivateSearchResult();\r\n }\r\n }\r\n }\r\n )\r\n );\r\n this.subscriptions.push(\r\n this.mapEmitterService.getClickCoordinatesEmitter$.subscribe(() =>\r\n this.searchBarService.deactivateSearchResult()\r\n )\r\n );\r\n this.searchBarService.setSearchBarValue(undefined);\r\n this.searchResultsService.updateSearchParams(undefined);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n this.searchBarService.deactivateSearchResult();\r\n this.mapEmitterService.emitFeatureInfoStart(undefined);\r\n }\r\n\r\n private getSearchTextValue(value: any): string {\r\n if (value && value.coordinate) {\r\n const pattern = /\\d+\\.?\\d{0,2}/;\r\n return (\r\n pattern.exec(value.coordinate[0])[0] +\r\n ', ' +\r\n pattern.exec(value.coordinate[1])[0]\r\n );\r\n }\r\n return '';\r\n }\r\n\r\n private setProjectParams(): void {\r\n if (!this.project && !this.project.searchparams) {\r\n console.error('Could not initialize searchparameters');\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.searchParams.length; i++) {\r\n if (\r\n this.searchParams[i].hasurl &&\r\n this.searchParams[i].hasurl === 'true'\r\n ) {\r\n // ToDo - need to look into this. Url is a part of the object...\r\n console.log('ToDo: Check with project with custom search');\r\n // continue;\r\n }\r\n const prefix = this.searchParams[i].name;\r\n this.searchObject[i] = {\r\n prefix,\r\n title: this.searchParams[i].title,\r\n url: this.project.isysearch + '/api/search' + prefix + 'v2/',\r\n };\r\n }\r\n }\r\n\r\n toggleMenu(): void {\r\n this.commonService.searchBarMenuButtonClick();\r\n }\r\n\r\n private search(value): void {\r\n if (value) {\r\n let urlpar = '?search=' + value;\r\n if (this.project.defaultmunicipality) {\r\n urlpar += '&kommune=' + this.project.defaultmunicipality;\r\n }\r\n urlpar += '&instance=' + this.mapService.getInstanceName();\r\n urlpar += '&project=' + this.project.name;\r\n urlpar += '&epsg=' + this.project.epsg;\r\n urlpar +=\r\n '&isytoken=' + this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n this.searchObject.forEach((searchGroup, idx) => {\r\n if (searchGroup.prefix === 'coordinate') {\r\n // detect coordinate\r\n const coordinate = this.detectCoordinates(value);\r\n if (coordinate) {\r\n if (!coordinate.epsg) {\r\n const config = this.mapService.getMapConfig();\r\n coordinate.epsg = config.coordinate_system; // get project coord system\r\n }\r\n\r\n const epsgCode = coordinate.epsg.replace(/\\D/g, ''); // get project coord system code\r\n const bbox = this.mapService.epsgBBox[epsgCode];\r\n if (\r\n bbox &&\r\n coordinate.lat > bbox.latMin &&\r\n coordinate.lat < bbox.latMax &&\r\n coordinate.lon > bbox.lonMin &&\r\n coordinate.lon < bbox.lonMax\r\n ) {\r\n // this.commonService.setCenter(coordinate);\r\n // this.searchResultsService.updateSearchParams(undefined);\r\n this.searchResultsService.setSearchParams(undefined);\r\n this.searchResultsService.setCoordinateAction(coordinate);\r\n //return;\r\n }\r\n\r\n // this.searchResultsService.endLoading();\r\n } else {\r\n this.searchResultsService.setCoordinateAction(undefined);\r\n }\r\n } else {\r\n this.doSearch(\r\n urlpar + '&index=' + Number(idx),\r\n searchGroup,\r\n Number(idx)\r\n );\r\n }\r\n });\r\n }\r\n }\r\n private detectCoordinates(input: string): IGisCoordinate | null {\r\n // Regular expression to match two numbers (integer or decimal) separated by a comma\r\n // and an optional integer at the end of the string after an @ sign\r\n const numberPattern =\r\n /^\\s*(\\d+\\.?\\d*)\\s*,\\s*(\\d+\\.?\\d*)\\s*(?:@\\s*(\\d+))?\\s*$/;\r\n const match = input.match(numberPattern);\r\n\r\n // If there's a match, parse the numbers and return them in an array\r\n if (match) {\r\n const number1 = parseFloat(match[1]);\r\n const number2 = parseFloat(match[2]);\r\n const result =\r\n // { numbers: [number1, number2], epsgCode: undefined };\r\n {\r\n lat: number1,\r\n lon: number2,\r\n epsg: undefined,\r\n };\r\n // If there's an epsgCode, parse it and add it to the result\r\n if (match[3]) {\r\n result.epsg = 'EPSG:' + parseInt(match[3]);\r\n }\r\n return result;\r\n }\r\n // If no match, return null\r\n return null;\r\n }\r\n\r\n removeSearch(): void {\r\n this.searchResultsService.updateSearchParams(undefined);\r\n this.searchResultsService.setCoordinateAction(undefined);\r\n this.keyUpSearch.next(undefined);\r\n this.searchBarService.setSearchBarValue(undefined);\r\n this.mapEmitterService.emitGetClickCoordinates(undefined);\r\n this.commonService.activateFeatureInfoSelectorWithLayerName(false);\r\n this.commonService.activateFeatureInfoSelectorWithLayerName(true);\r\n }\r\n\r\n private doSearch(\r\n urlpar: string,\r\n searchObject: ISearchGroup,\r\n searchIndex: number\r\n ): void {\r\n this.searchResultsService.updateSearchParams({\r\n searchGroup: searchObject,\r\n urlPar: urlpar,\r\n searchIndex,\r\n searchParamsLength: this.searchParams.length,\r\n });\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    ","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Component({\r\n selector: 'lib-isy-search-bar',\r\n templateUrl: './isy-search-bar.component.html',\r\n styleUrls: ['./isy-search-bar.component.scss'],\r\n})\r\nexport class IsySearchBarComponent implements OnInit, OnDestroy {\r\n subscription: Subscription = new Subscription();\r\n inputPosition = '';\r\n\r\n constructor(private commonService: IsyCommonService) {}\r\n\r\n @Input() filterSearchParams: string[] = [];\r\n\r\n @Input() set position(val: string) {\r\n this.commonService.searchBarSetPosition(val);\r\n this.inputPosition = val;\r\n }\r\n @Input() set hideMenuIcon(val: boolean) {\r\n this.commonService.hideMenuIcon(val);\r\n }\r\n @Input() set hideSearchBar(val: boolean) {\r\n this.commonService.hideSearchBar(val);\r\n }\r\n\r\n searchBarPosition$ = this.commonService.searchBarPosition$;\r\n\r\n hideSearchBar$ = this.commonService.hideSearchBar$;\r\n\r\n vm$ = combineLatest([this.searchBarPosition$, this.hideSearchBar$]).pipe(\r\n map(([searchBarPosition, hideSearchBar]: [string, boolean]) => ({\r\n searchBarPosition,\r\n hideSearchBar,\r\n }))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.commonService.componentPosition$.subscribe((value) => {\r\n if (this.inputPosition === '') {\r\n this.commonService.searchBarSetPosition(value);\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    ","import { Injectable } from '@angular/core';\r\nimport { IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { combineLatest, BehaviorSubject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\nexport interface ISearchBarValue {\r\n clickCoordinates: string;\r\n searchValue: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsySearchBarService {\r\n constructor(private mapEmitterService: IsyMapEmitterService) {}\r\n\r\n private searchIsActiveAction = new BehaviorSubject(false);\r\n private searchBarValueAction = new BehaviorSubject('');\r\n\r\n searchIsActive$ = this.searchIsActiveAction.asObservable();\r\n\r\n getClickCoordinates$ =\r\n this.mapEmitterService.getClickCoordinatesEmitter$.pipe(\r\n map((value) => {\r\n if (value) {\r\n this.searchBarValueAction.next(undefined);\r\n }\r\n return value;\r\n })\r\n );\r\n\r\n searchTextValue$ = combineLatest([\r\n this.getClickCoordinates$,\r\n this.searchBarValueAction,\r\n ]).pipe(\r\n map(([getClickCoordinates, searchBarValue]: [any, string]) => {\r\n const searchObject: ISearchBarValue = {\r\n clickCoordinates: undefined,\r\n searchValue: undefined,\r\n };\r\n if (getClickCoordinates && getClickCoordinates.coordinate) {\r\n const clickValue = this.getSearchTextValue(getClickCoordinates);\r\n searchObject.clickCoordinates = clickValue;\r\n return searchObject;\r\n } else if (searchBarValue) {\r\n searchObject.searchValue = searchBarValue;\r\n return searchObject;\r\n } else {\r\n return searchObject;\r\n }\r\n })\r\n );\r\n\r\n activateSearchResult(): void {\r\n this.searchIsActiveAction.next(true);\r\n }\r\n\r\n deactivateSearchResult(): void {\r\n this.searchIsActiveAction.next(false);\r\n }\r\n\r\n setSearchBarValue(value: string): void {\r\n this.searchBarValueAction.next(value);\r\n }\r\n\r\n private getSearchTextValue(value: any): string {\r\n if (value && value.coordinate) {\r\n const pattern = /\\d+\\.?\\d{0,2}/;\r\n return (\r\n pattern.exec(value.coordinate[0])[0] +\r\n ', ' +\r\n pattern.exec(value.coordinate[1])[0]\r\n );\r\n }\r\n return '';\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport {\r\n ISearchGroup,\r\n ISearchResult,\r\n Matrikkelenhet,\r\n} from '@isygis/isy-configs';\r\n\r\n@Pipe({\r\n name: 'isySearchResultsFilter',\r\n})\r\nexport class IsySearchResultsFilterPipe implements PipeTransform {\r\n transform(searchGroup: { [key: string]: ISearchGroup }, args?: any): any {\r\n if (!searchGroup) {\r\n return null;\r\n }\r\n return (\r\n Object.values(searchGroup)[0].results !== undefined &&\r\n Object.values(searchGroup)[0].results.length > 0\r\n );\r\n }\r\n\r\n transformSearchGroup(value: ISearchGroup): any[] {\r\n if (!value) {\r\n return [];\r\n }\r\n const results = [];\r\n for (const result of value.results) {\r\n if (result.Matrikkelenheter) {\r\n for (const matrikkelenhet of result.Matrikkelenheter) {\r\n const transformed = this.transformSearchResultMatrikkel(\r\n result,\r\n matrikkelenhet\r\n );\r\n if (transformed) {\r\n results.push(transformed);\r\n }\r\n }\r\n } else {\r\n const transformed = this.transformSearchResult(result);\r\n if (transformed) {\r\n results.push(transformed);\r\n }\r\n }\r\n }\r\n return results;\r\n }\r\n\r\n transformSearchResult(value: Partial): any {\r\n if (!value) {\r\n return;\r\n }\r\n return {\r\n epsg: value.EpsgKode,\r\n lat: Number(value.Latitude) || null,\r\n lon: Number(value.Longitude) || null,\r\n extent:\r\n value.Extent && value.Extent.length === 4\r\n ? [value.Extent[0], value.Extent[1], value.Extent[2], value.Extent[3]]\r\n : null,\r\n geoJson: value.GeoJson,\r\n };\r\n }\r\n\r\n transformSearchResultMatrikkel(\r\n value: Partial,\r\n matrikellenhet: Matrikkelenhet\r\n ): any {\r\n if (!value || !matrikellenhet || !matrikellenhet.TeigerRepPunkt) {\r\n return;\r\n }\r\n return {\r\n epsg: value.EpsgKode,\r\n lat: Number(matrikellenhet.TeigerRepPunkt[0].Y) || null,\r\n lon: Number(matrikellenhet.TeigerRepPunkt[0].X) || null,\r\n };\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n HostBinding,\r\n Input,\r\n} from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { IsySearchResultsService } from './isy-search-results.service';\r\nimport {\r\n ISearchGroup,\r\n ISearchResult,\r\n Matrikkelenhet,\r\n} from '@isygis/isy-configs';\r\nimport {\r\n IsyMapService,\r\n MapLibNgService,\r\n GeoJsonUtilsService,\r\n IsyMapEmitterService,\r\n} from '@isygis/isy-map';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsySearchResultsFilterPipe } from './isy-search-results-filter.pipe';\r\nimport { STYLE, HOVERSTYLE } from './styles';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyIframeComponent } from '@isygis/isy-utils';\r\n\r\nexport interface ITest {\r\n key: string;\r\n data: ISearchGroup;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-isy-search-results',\r\n templateUrl: './isy-search-results.component.html',\r\n styleUrls: ['./isy-search-results.component.scss'],\r\n providers: [IsySearchResultsFilterPipe],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n pageAnimation,\r\n ],\r\n})\r\nexport class IsySearchResultsComponent implements OnInit, OnDestroy {\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n hoverstyle = HOVERSTYLE;\r\n style = STYLE;\r\n projectConfig: IProjectConfig;\r\n\r\n searchResult$ = this.searchResultsService.searchResult$;\r\n searchLoading$ = this.searchResultsService.searchLoadingAction;\r\n\r\n @Input() showCadastreInModal = false;\r\n @Input() showSearchHelp = true;\r\n subscription: Subscription = new Subscription();\r\n\r\n vm$ = combineLatest([this.searchResult$, this.searchLoading$]).pipe(\r\n map(([searchResult, searchLoading]: [ISearchGroup[], boolean]) => ({\r\n searchResultGroups: searchResult,\r\n spinnerShowing: searchLoading,\r\n }))\r\n );\r\n\r\n constructor(\r\n private searchResultsService: IsySearchResultsService,\r\n private mapLibNgService: MapLibNgService,\r\n private searchResultsFilterPipe: IsySearchResultsFilterPipe,\r\n private geoJsonUtilsService: GeoJsonUtilsService,\r\n private commonService: IsyCommonService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapService: IsyMapService,\r\n private sessionStorageService: SessionStorageService,\r\n private bladeService: IsyBladeService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.mapLibNgService.map().activateMarker();\r\n this.subscription.add(\r\n this.mapService.projectConfig$.subscribe(\r\n (projectConfig: IProjectConfig) => {\r\n this.projectConfig = projectConfig;\r\n }\r\n )\r\n );\r\n this.subscription.add(\r\n this.searchResult$.subscribe((searchResultGroups) => {\r\n this.mapLibNgService.map().hideMarker();\r\n searchResultGroups.forEach((searchResultGroup) => {\r\n this.previewGroup(searchResultGroup);\r\n });\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.mapLibNgService.map().deactivateMarker();\r\n this.geoJsonUtilsService.uploadGeoJson('remove');\r\n this.searchResultsService.setCadastreData(undefined);\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n gotoResult(result: Partial): void {\r\n if (result.Extent) {\r\n this.mapLibNgService\r\n .map()\r\n .fitExtent(\r\n [\r\n result.Extent[0],\r\n result.Extent[1],\r\n result.Extent[2],\r\n result.Extent[3],\r\n ],\r\n undefined,\r\n result.EpsgKode\r\n );\r\n // return;\r\n } else if (\r\n result.Longitude &&\r\n result.Latitude &&\r\n Number(result.Longitude) &&\r\n Number(result.Latitude) &&\r\n result.ZoomLevel\r\n ) {\r\n // don't go to null-island\r\n this.commonService.gotoSearchResultWithCoordinates(result);\r\n this.mapLibNgService.map().setCenter({\r\n lon: Number(result.Longitude),\r\n lat: Number(result.Latitude),\r\n zoom: result.ZoomLevel,\r\n epsg: result.EpsgKode,\r\n });\r\n }\r\n if (this.showCadastreInModal && result.ObjektType === 'Eiendom') {\r\n this.searchResultsService.setCadastreData(result);\r\n }\r\n }\r\n\r\n toggleGroup(value: ISearchGroup): void {\r\n value.isOpen = !value.isOpen;\r\n }\r\n toggleResult(value: Partial): void {\r\n value.isOpen = !value.isOpen;\r\n }\r\n shouldDisplayResult(result: any): boolean {\r\n const groupOn = result.ObjectValues && Object.prototype.hasOwnProperty.call(result.ObjectValues, 'GroupOn') && result.ObjectValues['GroupOn'] === 'True';\r\n const nullGeoJsonEiendom = result.ObjectValues && Object.prototype.hasOwnProperty.call(result.ObjectValues, 'GeoJson') && result['GeoJson'] === null && result.ObjektType === 'Eiendom';\r\n const isEier = result.ObjektType === 'Eier';\r\n const isArealplan = result.ObjektType === 'Arealplan';\r\n const isVeg = result.ObjektType === 'Veg';\r\n const isKoordinat = result.ObjektType === 'Koordinat';\r\n const isBygning = result.ObjektType === 'Bygning';\r\n const isUtgatt = result.Feature?.properties?.utgatt;\r\n const isSeksjon = result.Feature?.properties?.klasse === 'Seksjon';\r\n\r\n const shouldDisplay = groupOn || nullGeoJsonEiendom || isEier || isArealplan || isVeg || isKoordinat || isBygning || isUtgatt || isSeksjon;\r\n\r\n // for debugging\r\n // if (shouldDisplay) {\r\n // console.log('The following conditions are true:');\r\n // if (groupOn) console.log(' - GroupOn is true');\r\n // if (nullGeoJsonEiendom) console.log(' - GeoJson is null and ObjektType is Eiendom');\r\n // if (isEier) console.log(' - ObjektType is Eier');\r\n // if (isArealplan) console.log(' - ObjektType is Arealplan');\r\n // if (isVeg) console.log(' - ObjektType is Veg');\r\n // if (isKoordinat) console.log(' - ObjektType is Koordinat');\r\n // if (isBygning) console.log(' - ObjektType is Bygning');\r\n // if (isUtgatt) console.log(' - Feature properties utgatt is true');\r\n // if (isSeksjon) console.log(' - Feature properties klasse is Seksjon');\r\n // }\r\n\r\n return shouldDisplay;\r\n }\r\n previewResult(value: Partial): void {\r\n this.mapLibNgService.map().hideMarker();\r\n const result = this.searchResultsFilterPipe.transformSearchResult(value);\r\n if (result.geoJson) {\r\n this.geoJsonUtilsService.setSearchResultStyle();\r\n this.geoJsonUtilsService.uploadGeoJson(result.geoJson);\r\n }\r\n if (result) {\r\n this.mapLibNgService.map().showMarker(result, this.hoverstyle);\r\n }\r\n }\r\n\r\n previewMatrikkelenhet(\r\n value: Partial,\r\n matrikkelenhet: Matrikkelenhet\r\n ): void {\r\n if (!matrikkelenhet.TeigerRepPunkt) {\r\n return;\r\n }\r\n this.mapLibNgService.map().hideMarker();\r\n const result = this.searchResultsFilterPipe.transformSearchResultMatrikkel(\r\n value,\r\n matrikkelenhet\r\n );\r\n if (result) {\r\n this.mapLibNgService.map().showMarker(result, this.hoverstyle);\r\n }\r\n }\r\n\r\n gotoMatrikkelenhet(\r\n value: Partial,\r\n matrikkelenhet: Matrikkelenhet\r\n ): void {\r\n if (!matrikkelenhet.TeigerRepPunkt) {\r\n return;\r\n }\r\n const result = this.searchResultsFilterPipe.transformSearchResultMatrikkel(\r\n value,\r\n matrikkelenhet\r\n );\r\n if (result.lon && result.lat && value.ZoomLevel) {\r\n this.commonService.gotoSearchResultWithCoordinates(result);\r\n this.mapLibNgService.map().setCenter({\r\n lon: result.lon,\r\n lat: result.lat,\r\n zoom: value.ZoomLevel,\r\n epsg: result.epsg,\r\n });\r\n }\r\n }\r\n\r\n previewGroup(value: ISearchGroup): void {\r\n const results = this.searchResultsFilterPipe.transformSearchGroup(value);\r\n if (results) {\r\n this.mapLibNgService.map().showMarkers(results, this.style, false);\r\n }\r\n }\r\n previewFirstInGroup(value: ISearchGroup, hover: boolean): void {\r\n const results = this.searchResultsFilterPipe.transformSearchGroup(value);\r\n if (results) {\r\n this.geoJsonUtilsService.uploadGeoJson('remove');\r\n this.mapLibNgService\r\n .map()\r\n .showMarker(results[0], hover ? this.hoverstyle : this.style);\r\n }\r\n }\r\n\r\n previewMultiPolygon(result: Partial): void {\r\n this.geoJsonUtilsService.uploadGeoJson('remove');\r\n this.mapLibNgService.map().hideMarker();\r\n if (result.multiPolygon && result?.Feature?.geometry) {\r\n this.geoJsonUtilsService.setSearchResultStyle();\r\n this.geoJsonUtilsService.uploadGeoJson(\r\n JSON.stringify(result.multiPolygon)\r\n );\r\n }\r\n if (result) {\r\n this.mapLibNgService\r\n .map()\r\n .showMarker(\r\n this.searchResultsFilterPipe.transformSearchResult(result),\r\n this.hoverstyle\r\n );\r\n }\r\n }\r\n\r\n sendGeojson(result: ISearchResult): void {\r\n let hasOlfeature = false;\r\n // send geojson of the result to common service\r\n if (result.Feature) {\r\n const geoJsonObj = result.Feature;\r\n // add olfeatures to geojeson object\r\n this.subscription.add(\r\n this.mapEmitterService.drawGeoJsonEndEmitter$.subscribe((value) => {\r\n // do this only once\r\n if (value && !hasOlfeature) {\r\n hasOlfeature = true;\r\n console.log('olFeature: ', value);\r\n geoJsonObj['olFeature'] = value;\r\n this.commonService.setFeaturesFromSearch(geoJsonObj);\r\n console.log('GeoJson for this searchresult:', geoJsonObj);\r\n }\r\n })\r\n );\r\n }\r\n }\r\n\r\n showReport(result: Partial): void {\r\n let url = this.projectConfig.config.project.webinnsynurl;\r\n if (!url) {\r\n console.error('Missing webinnsyn-url in config!');\r\n return;\r\n }\r\n if (!url.endsWith('/')) {\r\n url = url + '/';\r\n }\r\n if (result.Feature && result.Feature.properties) {\r\n const komm =\r\n result.Feature.properties['KOMM'] || result.Feature.properties['komm'];\r\n const gnr =\r\n result.Feature.properties['GNR'] || result.Feature.properties['gnr'];\r\n const bnr =\r\n result.Feature.properties['BNR'] || result.Feature.properties['bnr'];\r\n const fnr =\r\n result.Feature.properties['FNR'] || result.Feature.properties['fnr'];\r\n const snr =\r\n result.Feature.properties['SNR'] || result.Feature.properties['snr'];\r\n const isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n ? `&isytoken=${this.sessionStorageService.retrieve(ELogin.TOKEN)}`\r\n : '';\r\n // check if it is a building or a cadastre object\r\n const reportUrl = result?.ObjektType?.toLowerCase() === 'bygning'\r\n ? `${url}Content/report/bygning2html.aspx?k=${komm}&b=${result.ObjectValues['bygningsnr']}&t=0`\r\n : `${url}Content/report/matrikkel2html.aspx?k=${komm}&g=${gnr}&b=${bnr}&f=${fnr}&s=${snr}${isytoken}`;\r\n\r\n // applied for kc\r\n let data;\r\n const webinnsyniframelandingpage = `${url}${\r\n url.charAt(url.length - 1) === '/' ? '' : '/'\r\n }framed.htm`;\r\n this.commonService.getKcUsed() || this.commonService.getIdPortenUsed()\r\n ? (data = { url: webinnsyniframelandingpage, postMsgUrl: reportUrl })\r\n : (data = { url: reportUrl });\r\n //\r\n\r\n this.bladeService.showBladeWithComponent(\r\n `MatrikkelRapport ${komm}-${gnr}/${bnr}/${fnr}/${snr}`,\r\n IsyIframeComponent,\r\n data,\r\n {\r\n position: 'top',\r\n fullScreen: true,\r\n showBladeOverlay: true,\r\n offset: 100,\r\n showHeader: true,\r\n bladeHeader: {\r\n headerTitle: `MatrikkelRapport ${komm}-${gnr}/${bnr}/${fnr}/${snr}`,\r\n },\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'noResults' | translate}}
    \r\n {{'searchHelp' | translate}}
    \r\n
    \r\n {{param.title}} - {{param.example ? param.example : ('searchExample_' + param.name |\r\n translate)}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {{searchGroup.title }}\r\n
    \r\n
    \r\n {{searchGroup.results.length}}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n {{result.hasSubItems && result.Adressenavn\r\n ? result.Adressenavn + ', ' + result.Kommunenavn\r\n : result.Navn}}\r\n {{result.Feature?.properties?.utgatt\r\n ? '(Utgått)'\r\n : ''}}\r\n {{result.Feature?.properties?.klasse\r\n ? ' (' + result.Feature.properties.klasse + ')'\r\n : ''}}\r\n {{((result.Latitude && result.Longitude) || result.Extent)\r\n ? (result.ObjektType === 'Koordinat' ? (result.Latitude + 'N, ' + result.Longitude + 'E @' + result.EpsgKode) : '') \r\n : 'noPosition' | translate}}\r\n \r\n
    \r\n\r\n \r\n
    \r\n Bygningsnummer: {{result.ObjectValues['bygningsnr']}}
    \r\n Klasse: {{result.ObjectValues['bygningsklasse']}}
    \r\n Tilbyggsnummer: {{result.ObjectValues['tilbyggsnr']}}
    \r\n status: {{result.ObjectValues['bygningsstatuskode']}}
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {{matrikkelenhet.Knr + \" - \" + matrikkelenhet.Gnr + '/' + matrikkelenhet.Bnr + '/' + matrikkelenhet.Fnr + '/' + matrikkelenhet.Snr}}\r\n {{matrikkelenhet.TeigerRepPunkt ? '' : 'noPosition' | translate}}\r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n Teig {{item.Feature?.properties?.hovedteig ?\r\n ' (Hovedteig)' : ''}}\r\n
    \r\n \r\n \r\n {{\r\n item.Adressenavn +\r\n (item.Nummer ? ' ' + item.Nummer : '') +\r\n (item.Bokstav ? ' ' + item.Bokstav : '')\r\n }}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n ({{result.ObjektType}})\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, combineLatest } from 'rxjs';\r\nimport {\r\n catchError,\r\n map,\r\n shareReplay,\r\n tap,\r\n mergeMap,\r\n timeout,\r\n} from 'rxjs/operators';\r\nimport {\r\n ISearchParams,\r\n ISearchResult,\r\n ISearchGroup,\r\n ISearchResultWithParams,\r\n IGisCoordinate,\r\n} from '@isygis/isy-configs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsySearchResultsService {\r\n searchLoadingAction = new BehaviorSubject(false);\r\n\r\n private searchParamsAction = new BehaviorSubject(\r\n undefined\r\n );\r\n private searchCoordinateAction = new BehaviorSubject(\r\n undefined\r\n );\r\n private cleanGroupsAction = new BehaviorSubject(false);\r\n\r\n private cadastreDataAction = new BehaviorSubject>(\r\n undefined\r\n );\r\n cadastreData$ = this.cadastreDataAction.asObservable();\r\n private searchUrlResult$ = this.searchParamsAction.pipe(\r\n mergeMap((searchParamsAction: ISearchParams) => {\r\n if (searchParamsAction) {\r\n const urlWithParams = encodeURI(\r\n searchParamsAction.searchGroup.url + searchParamsAction.urlPar\r\n );\r\n return this.httpClient.get(urlWithParams).pipe(\r\n map((results: ISearchResult[]) =>\r\n this.combineSearchResultsWithParams(results, searchParamsAction)\r\n ),\r\n tap((result) => console.log('searchresult: ', result)),\r\n timeout(5000),\r\n catchError(() =>\r\n Promise.resolve(this.emptySearchResults(searchParamsAction))\r\n )\r\n );\r\n } else {\r\n return Promise.resolve(this.emptySearchResults(searchParamsAction));\r\n }\r\n }),\r\n shareReplay(1)\r\n );\r\n\r\n searchResult$ = combineLatest([\r\n this.searchUrlResult$,\r\n this.searchCoordinateAction,\r\n this.cleanGroupsAction,\r\n ]).pipe(\r\n map(\r\n ([searchResultWithParams, searchCoordinateResult, cleanGroupsAction]: [\r\n ISearchResultWithParams,\r\n IGisCoordinate | undefined,\r\n boolean\r\n ]) => {\r\n let searchGroup: ISearchGroup;\r\n\r\n if (searchResultWithParams) {\r\n searchGroup = {\r\n prefix: searchResultWithParams.searchParams\r\n ? searchResultWithParams.searchParams.searchGroup.prefix\r\n : '',\r\n title: searchResultWithParams.searchParams\r\n ? searchResultWithParams.searchParams.searchGroup.title\r\n : '',\r\n results: searchResultWithParams.urlResult,\r\n isOpen: false,\r\n };\r\n if (\r\n searchResultWithParams.searchParams &&\r\n searchResultWithParams.searchParams.searchIndex + 1 ===\r\n searchResultWithParams.searchParams.searchParamsLength\r\n ) {\r\n this.endLoading();\r\n }\r\n }\r\n if (cleanGroupsAction) {\r\n this.searchGroups = [];\r\n searchGroup.results = [];\r\n }\r\n\r\n if (searchCoordinateResult) {\r\n this.searchGroups = [];\r\n searchGroup.results = [];\r\n searchGroup = {\r\n prefix: 'coordinate',\r\n title: 'Koordinat',\r\n results: [\r\n {\r\n EpsgKode: searchCoordinateResult.epsg,\r\n Latitude: searchCoordinateResult.lat,\r\n Longitude: searchCoordinateResult.lon,\r\n ZoomLevel: 14,\r\n ObjektType: 'Koordinat',\r\n },\r\n ],\r\n isOpen: false,\r\n };\r\n this.endLoading();\r\n }\r\n return searchGroup;\r\n }\r\n ),\r\n map((result) => {\r\n const searchGroup = this.searchGroups.find(\r\n (value) => value.title === result.title\r\n );\r\n if (!searchGroup) {\r\n if (result.results.length > 0) {\r\n this.searchGroups.push(result);\r\n }\r\n } else {\r\n if (result.results.length === 0) {\r\n this.searchGroups = this.searchGroups.filter(\r\n (data) => data.prefix !== result.prefix\r\n );\r\n } else {\r\n searchGroup.results = result.results;\r\n }\r\n }\r\n return this.searchGroups;\r\n }),\r\n tap(() => this.endLoading()),\r\n );\r\n \r\n private searchGroups: ISearchGroup[] = [];\r\n\r\n private hasMultipleMatrikkelenheter(result: ISearchResult): boolean {\r\n return (\r\n result.ObjektType === 'Eier' &&\r\n result.Matrikkelenheter &&\r\n result.Matrikkelenheter.length > 1\r\n );\r\n }\r\n\r\n private combineSearchResultsWithParams(\r\n results: ISearchResult[],\r\n searchParamsAction: ISearchParams\r\n ): ISearchResultWithParams {\r\n return {\r\n urlResult: results.map((r) => {\r\n return {\r\n ...r,\r\n Feature: JSON.parse(r.GeoJson),\r\n isOpen: false,\r\n hasSubItems:\r\n this.hasMultipleMatrikkelenheter(r) ||\r\n results.filter(\r\n (res) =>\r\n (res.ObjektType === 'Eiendom' && res.Navn === r.Navn) ||\r\n (r.Adressenavn &&\r\n res.Adressenavn + res.Kommunenavn ===\r\n r.Adressenavn + r.Kommunenavn)\r\n ).length > 1,\r\n multiPolygon: this.combinePolygons(\r\n results.filter(\r\n (res) => res.Navn === r.Navn && res.ObjektType === r.ObjektType\r\n )\r\n ),\r\n };\r\n }),\r\n searchParams: searchParamsAction,\r\n };\r\n }\r\n\r\n private emptySearchResults(searchParamsAction): ISearchResultWithParams {\r\n return {\r\n urlResult: [],\r\n searchParams: searchParamsAction,\r\n };\r\n }\r\n\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n startLoading(): void {\r\n this.searchLoadingAction.next(true);\r\n }\r\n\r\n endLoading(): void {\r\n this.searchLoadingAction.next(false);\r\n }\r\n\r\n setSearchParams(searchParams: ISearchParams | undefined): void {\r\n this.searchParamsAction.next(searchParams);\r\n }\r\n\r\n updateSearchParams(searchParams: ISearchParams): void {\r\n this.searchParamsAction.next(searchParams);\r\n this.cleanGroupsAction.next(searchParams ? false : true);\r\n }\r\n\r\n combinePolygons(teiger: ISearchResult[]): any {\r\n const multi = {\r\n type: 'FeatureCollection',\r\n features: [\r\n {\r\n type: 'Feature',\r\n properties: {},\r\n geometry: {\r\n type: 'MultiPolygon',\r\n coordinates: [],\r\n },\r\n },\r\n ],\r\n };\r\n\r\n teiger.forEach((t) => {\r\n if (t.GeoJson) {\r\n const tObj = JSON.parse(t.GeoJson);\r\n if (tObj.geometry && tObj.geometry.type === 'Polygon') {\r\n multi.features[0].geometry.coordinates.push(\r\n tObj.geometry.coordinates\r\n );\r\n }\r\n if (tObj.geometry && tObj.geometry.type === 'MultiPolygon') {\r\n tObj.geometry.coordinates.forEach((c) => {\r\n multi.features[0].geometry.coordinates.push(c);\r\n });\r\n }\r\n }\r\n });\r\n return multi;\r\n }\r\n setCadastreData(result: Partial): void {\r\n this.cadastreDataAction.next(result);\r\n }\r\n setCoordinateAction(coordinate: IGisCoordinate) {\r\n this.searchCoordinateAction.next(coordinate);\r\n }\r\n}\r\n","export const HOVERSTYLE: any[] = [\r\n {\r\n stroke: {\r\n color: 'rgba(255, 255, 255, 1)',\r\n width: 7,\r\n },\r\n },\r\n {\r\n fill: {\r\n color: 'rgba(255, 0, 0, .3)',\r\n },\r\n\r\n stroke: {\r\n color: 'rgba(44, 83, 121, 1)',\r\n width: 3,\r\n },\r\n image: {\r\n src:\r\n 'data:image/svg+xml;utf8,' +\r\n '' +\r\n '',\r\n\r\n scale: 0.08,\r\n anchor: [0.5, 512],\r\n anchorXUnits: 'fraction',\r\n anchorYUnits: 'pixels',\r\n },\r\n },\r\n];\r\n\r\nexport const STYLE: any[] = [\r\n {\r\n stroke: {\r\n color: 'rgba(255, 255, 255, 1)',\r\n width: 9,\r\n },\r\n },\r\n {\r\n stroke: {\r\n color: 'rgba(44, 83, 121, 1)',\r\n width: 5,\r\n },\r\n image: {\r\n src:\r\n 'data:image/svg+xml;utf8,' +\r\n '' +\r\n '',\r\n\r\n scale: 0.08,\r\n anchor: [0.5, 512],\r\n anchorXUnits: 'fraction',\r\n anchorYUnits: 'pixels',\r\n },\r\n },\r\n];\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { IsySearchBarComponent } from './isy-search-bar/isy-search-bar.component';\r\nimport { IsySearchResultsComponent } from './isy-search-results/isy-search-results.component';\r\nimport { IsySearchResultsFilterPipe } from './isy-search-results/isy-search-results-filter.pipe';\r\nimport { IsySearchBarLayoutComponent } from './isy-search-bar/isy-search-bar-layout/isy-search-bar-layout.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n IsySpinnerModule,\r\n ModalModule.forRoot(),\r\n ],\r\n declarations: [\r\n IsySearchBarComponent,\r\n IsySearchResultsComponent,\r\n IsySearchResultsFilterPipe,\r\n IsySearchBarLayoutComponent,\r\n ],\r\n exports: [IsySearchBarComponent, IsySearchResultsComponent],\r\n})\r\nexport class IsySearchModule {}\r\n","import { Component, Input, OnInit, OnDestroy } from '@angular/core';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n// import { IsyToolsService, ITool } from '@isygis/isy-tools';\r\nimport { IsyMapService, MapLibNgService } from '@isygis/isy-map';\r\nimport { IsyOverlaysService, OverlayId } from '@isygis/isy-app-services';\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsySideNavService } from '../isy-side-nav.service';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { TempCompHelpComponent } from './temp-comp-help/temp-comp-help.component';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { ProjectListItem } from '@isygis/isymap-config';\r\n@Component({\r\n selector: 'lib-isy-side-nav-content',\r\n templateUrl: './isy-side-nav-content.component.html',\r\n styleUrls: ['./isy-side-nav-content.component.scss'],\r\n})\r\nexport class IsySideNavContentComponent implements OnInit, OnDestroy {\r\n currentLang;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n mainMenuNavBarName = 'mainMenuNavBar';\r\n hideMainMenuNavBar = false;\r\n subscription: Subscription = new Subscription();\r\n\r\n @Input() headerName;\r\n @Input() subHeaderName;\r\n\r\n activeTool$ = this.commonService.toolsIsActive$;\r\n pinMenu$ = this.commonService.sideNavPin$;\r\n projectName$ = this.mapService.projectName$;\r\n projectConfig$ = this.mapService.projectConfig$;\r\n projectListInfo$ = this.mapService.projectListInfo$;\r\n headerIconBaseUrl = this.mapService.getHeaderIconBaseUrl();\r\n hideTranslateBar$ = this.commonService.hideTranslateBar$;\r\n projectIcon$ = this.mapService.projectConfig$.pipe(\r\n map((projectConfig: IProjectConfig) => {\r\n if (projectConfig && projectConfig.config.project.headericon) {\r\n const headerIcon = projectConfig.config.project.headericon;\r\n if (headerIcon.includes('https://')) {\r\n return headerIcon;\r\n }\r\n const url = this.mapService.getHeaderIconBaseUrl();\r\n return url + headerIcon;\r\n }\r\n return undefined;\r\n })\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.activeTool$,\r\n this.pinMenu$,\r\n this.projectName$,\r\n this.projectListInfo$,\r\n this.hideTranslateBar$,\r\n this.projectConfig$,\r\n this.projectIcon$,\r\n ]).pipe(\r\n map(\r\n ([\r\n activeTool,\r\n pinMenu,\r\n projectName,\r\n projectInfo,\r\n hideTranslateBar,\r\n config,\r\n projectIcon,\r\n ]: [\r\n boolean,\r\n boolean,\r\n string,\r\n ProjectListItem,\r\n boolean,\r\n IProjectConfig,\r\n string\r\n ]) => ({\r\n isActiveTool: activeTool,\r\n pinMenu,\r\n projectName,\r\n projectIcon,\r\n projectInfo,\r\n hideTranslateBar,\r\n config,\r\n })\r\n )\r\n // tap(result => console.log('SIDE NAV CONTENT: ', result))\r\n );\r\n\r\n constructor(\r\n private overlaysService: IsyOverlaysService,\r\n private translateService: IsyTranslateService,\r\n private mapService: IsyMapService,\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService,\r\n private mapLibNgService: MapLibNgService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.currentLang = this.translateService.currentLang;\r\n this.subscription.add(\r\n this.commonService.useLanguage$.subscribe((value) => {\r\n this.currentLang = value;\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n closeMenu(menuIsPinned: boolean) {\r\n if (!menuIsPinned) {\r\n this.overlaysService.hide(OverlayId.mapOverlayLayer);\r\n // this.sideNavService.hide();\r\n this.commonService.hideSideNav(true);\r\n }\r\n }\r\n\r\n changeLang(lang: string) {\r\n this.translateService.use(lang);\r\n this.currentLang = this.translateService.currentLang;\r\n }\r\n\r\n showHelp(): void {\r\n // this.commonService.hideSearchBar(true);\r\n // this.commonService.hideInfoPanel(true);\r\n this.commonService.setHelpId(undefined);\r\n this.bladeService.showBladeWithComponent(\r\n 'sideNavHelp',\r\n TempCompHelpComponent,\r\n undefined,\r\n {\r\n position: 'right',\r\n showHeader: true,\r\n showBladeOverlay: true,\r\n bladeHeader: {\r\n headerIcon: this.fontAwesomeIcons.faQuestionCircle,\r\n headerTitle: this.currentLang === 'no' ? 'Om' : 'About',\r\n },\r\n }\r\n );\r\n }\r\n\r\n setMapCenter(): void {\r\n const config = this.mapService.getProjectConfig();\r\n const zoom = parseInt(config?.config?.project?.zoom, 10);\r\n const lat = parseInt(config?.config?.project?.lat, 10);\r\n const lon = parseInt(config?.config?.project?.lon, 10);\r\n if (lat && lon) {\r\n this.mapLibNgService.setCenter({ lon, lat, zoom });\r\n }\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n {{( vm.config?.config?.project?.headertitle || vm.projectName || vm.projectInfo?.ProjectName || headerName)}} \r\n
    \r\n
    \r\n {{vm.config?.config?.project?.headersubtitle}}\r\n
    \r\n
    \r\n
    \r\n \"\"/\r\n
    \r\n
    \r\n \r\n
    \r\n
    ×
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Bokmål\r\n |\r\n English\r\n
    \r\n
    \r\n {{currentLang === 'no' ? \"Om\" : \"About\"}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { Component } from '@angular/core';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-temp-comp-help',\r\n templateUrl: './temp-comp-help.component.html',\r\n styleUrls: ['./temp-comp-help.component.scss'],\r\n})\r\nexport class TempCompHelpComponent {\r\n private projectConfig$ = this.mapService.projectConfig$;\r\n\r\n vm$ = combineLatest([this.projectConfig$]).pipe(\r\n map(([projectConfig]: [IProjectConfig]) => ({\r\n projectConfig,\r\n })),\r\n tap((result) => console.log(result))\r\n );\r\n\r\n constructor(private mapService: IsyMapService) {}\r\n}\r\n","
    \r\n \r\n \r\n
    ","import {\r\n Component,\r\n Input,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { overlayAnimation } from '@isygis/isy-animations';\r\nimport { IsySideNavService } from '../isy-side-nav.service';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'lib-isy-side-nav-overlay-layer',\r\n templateUrl: './isy-side-nav-overlay-layer.component.html',\r\n styleUrls: ['./isy-side-nav-overlay-layer.component.scss'],\r\n animations: [overlayAnimation],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class IsySideNavOverlayLayerComponent {\r\n showOverlayLayer$ = this.sideNavService.showOverlayLayer$;\r\n vm$ = combineLatest([this.showOverlayLayer$]).pipe(\r\n map(([showOverlay]: [boolean]) => ({\r\n show: showOverlay,\r\n }))\r\n );\r\n\r\n constructor(private sideNavService: IsySideNavService) {}\r\n\r\n @Input()\r\n set show(val: boolean) {\r\n val === true\r\n ? this.sideNavService.showOverlayLayer()\r\n : this.sideNavService.hideOverlayLayer();\r\n }\r\n\r\n}\r\n","
    \r\n
    \r\n
    ","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n HostBinding,\r\n Input,\r\n} from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { IsySideNavService } from './isy-side-nav.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { combineLatest, Subscription } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyMapEmitterService } from '@isygis/isy-map';\r\n\r\n@Component({\r\n selector: 'lib-isy-side-nav',\r\n templateUrl: './isy-side-nav.component.html',\r\n styleUrls: ['./isy-side-nav.component.scss'],\r\n animations: [\r\n trigger('slideInOut', [\r\n state(\r\n 'in',\r\n style({\r\n // transform: 'translate3d(0, 0, 0)'\r\n transform: '{{transform_value}}',\r\n }),\r\n { params: { transform_value: 'translate3d(0, 0, 0)' } }\r\n ),\r\n state(\r\n 'out',\r\n style({\r\n // transform: 'translate3d(-200%, 0, 0)',\r\n transform: '{{transform_value}}',\r\n }),\r\n { params: { transform_value: 'translate3d(-110%, 0, 0)' } }\r\n ),\r\n transition('in => out', animate('400ms ease-in-out')),\r\n transition('out => in', animate('400ms ease-in-out')),\r\n\r\n state(\r\n 'inStatic',\r\n style({\r\n transform: '{{transform_value}}',\r\n }),\r\n { params: { transform_value: 'translate3d(0, 0, 0)' } }\r\n ),\r\n state(\r\n 'outStatic',\r\n style({\r\n display: 'none',\r\n transform: '{{transform_value}}',\r\n }),\r\n { params: { transform_value: 'translate3d(-110%, 0, 0)' } }\r\n ),\r\n ]),\r\n ],\r\n})\r\nexport class IsySideNavComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscriptions = new Subscription();\r\n\r\n constructor(\r\n private sideNavService: IsySideNavService,\r\n private commonService: IsyCommonService,\r\n private mapEmitterService: IsyMapEmitterService\r\n ) {}\r\n\r\n @Input() set show(val: boolean) {\r\n val === true\r\n ? this.commonService.hideSideNav(false)\r\n : this.commonService.hideSideNav(true);\r\n }\r\n\r\n @Input() set hide(val: boolean) {\r\n if (val === true) {\r\n this.show = false;\r\n }\r\n }\r\n\r\n @Input() staticAnimation = false;\r\n\r\n pinMenu$ = this.commonService.sideNavPin$;\r\n\r\n mapLoaded$ = this.mapEmitterService.mapLoadEmitter$;\r\n\r\n forceHide$ = this.commonService.forceHideSideNav$;\r\n // sideNavWidth$ = this.sideNavService.sideNavWidth$; // deprecated\r\n showPinStyle$ = this.sideNavService.showPinStyle$;\r\n hideSideNav$ = this.commonService.hideSideNav$.pipe(\r\n map((value) => {\r\n this.slideInOut =\r\n this.staticAnimation === false\r\n ? value\r\n ? 'out'\r\n : 'in'\r\n : value\r\n ? 'outStatic'\r\n : 'inStatic';\r\n this.slideInOut === 'out' || this.slideInOut === 'outStatic'\r\n ? (this.activeTranslateParam = this.translateStateOut)\r\n : (this.activeTranslateParam = this.translateStateIn);\r\n return value;\r\n })\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.pinMenu$,\r\n this.showPinStyle$,\r\n this.hideSideNav$,\r\n this.forceHide$ \r\n ]).pipe(\r\n map(\r\n ([pinMenu, showPinStyle, hideSideNav, forceHide]: \r\n [ boolean, string, boolean, boolean ]) => ({\r\n pinMenu,\r\n showPinStyle,\r\n hideSideNav,\r\n forceHide \r\n })\r\n ),\r\n );\r\n translateStateIn = 'translate3d(0, 0, 0)';\r\n translateStateOut = 'translate3d(-110%, 0, 0)';\r\n\r\n slideInOut = 'out';\r\n activeTranslateParam = this.translateStateOut;\r\n @HostBinding('@slideInOut')\r\n get fn() {\r\n return {\r\n value: this.slideInOut,\r\n params: {\r\n transform_value: this.activeTranslateParam,\r\n },\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.add(\r\n this.commonService.searchBarMenuButtonClick$.subscribe(() =>\r\n this.commonService.hideSideNav(false)\r\n )\r\n ); \r\n\r\n this.subscriptions.add(\r\n combineLatest([this.mapLoaded$, this.pinMenu$]).subscribe(([mapLoaded, pinMenu]) => {\r\n if (mapLoaded) {\r\n const olAttribution = document.querySelector('.ol-attribution'); \r\n if (olAttribution !== null) {\r\n olAttribution['style'].left = pinMenu ? '500px' : '30px';\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n pinMainMenu(value: boolean): void {\r\n this.commonService.sideNavPin(!value);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsySideNavComponent } from './isy-side-nav.component';\r\nimport { IsySideNavOverlayLayerComponent } from './isy-side-nav-overlay-layer/isy-side-nav-overlay-layer.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsySideNavContentComponent } from './isy-side-nav-content/isy-side-nav-content.component';\r\nimport { TempCompHelpComponent } from './isy-side-nav-content/temp-comp-help/temp-comp-help.component';\r\nimport { MarkdownModule, MarkedOptions, MarkedRenderer } from 'ngx-markdown';\r\nimport { HttpClientModule, HttpClient } from '@angular/common/http';\r\nimport { SideNavOpenerDirective } from './side-nav-opener.directive';\r\n\r\n// function that returns `MarkedOptions` with renderer override\r\nexport function markedOptionsFactory(): MarkedOptions {\r\n const renderer = new MarkedRenderer();\r\n\r\n renderer.blockquote = (text: string) => {\r\n return '

    ' + text + '

    ';\r\n };\r\n\r\n return {\r\n renderer,\r\n gfm: true,\r\n // tables: true,\r\n breaks: false,\r\n pedantic: false,\r\n // sanitize: false,\r\n smartLists: true,\r\n smartypants: false,\r\n };\r\n}\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FontAwesomeModule,\r\n HttpClientModule,\r\n MarkdownModule.forRoot({\r\n loader: HttpClient,\r\n markedOptions: {\r\n provide: MarkedOptions,\r\n useFactory: markedOptionsFactory,\r\n },\r\n }),\r\n ],\r\n declarations: [\r\n IsySideNavComponent,\r\n IsySideNavOverlayLayerComponent,\r\n IsySideNavContentComponent,\r\n TempCompHelpComponent,\r\n SideNavOpenerDirective,\r\n ],\r\n\r\n exports: [\r\n IsySideNavComponent,\r\n IsySideNavOverlayLayerComponent,\r\n IsySideNavContentComponent,\r\n SideNavOpenerDirective,\r\n ],\r\n})\r\nexport class IsySideNavModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsySideNavService {\r\n private _showOverlayLayer = new BehaviorSubject(false);\r\n showOverlayLayer$ = this._showOverlayLayer.asObservable();\r\n\r\n private _showPinStyle = new BehaviorSubject('initial');\r\n showPinStyle$ = this._showPinStyle.asObservable();\r\n\r\n showOverlayLayer() {\r\n this._showOverlayLayer.next(true);\r\n }\r\n\r\n hideOverlayLayer() {\r\n this._showOverlayLayer.next(false);\r\n }\r\n\r\n showPin() {\r\n this._showPinStyle.next('initial');\r\n }\r\n\r\n hidePin() {\r\n this._showPinStyle.next('none');\r\n }\r\n}\r\n","import { Directive, HostListener, OnInit } from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Directive({\r\n selector: '[libSideNavOpener]',\r\n})\r\nexport class SideNavOpenerDirective implements OnInit {\r\n @HostListener('window:resize', ['$event'])\r\n onResize(): void {\r\n this.openSideNavOnDesktop();\r\n }\r\n\r\n constructor(private commonService: IsyCommonService) {}\r\n\r\n ngOnInit(): void {\r\n this.openSideNavOnDesktop();\r\n }\r\n\r\n private openSideNavOnDesktop(): void {\r\n const isMobile = document.documentElement.clientWidth > 1024 ? false : true;\r\n if (!isMobile) {\r\n this.commonService.hideSideNav(false);\r\n this.commonService.sideNavPin(true);\r\n } else {\r\n this.commonService.hideSideNav(true);\r\n this.commonService.sideNavPin(false);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport { IsySpinnerService } from './isy-spinner.service';\r\n\r\n@Component({\r\n selector: 'lib-isy-spinner',\r\n template: `\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n `,\r\n styleUrls: ['./isy-spinner.scss'],\r\n})\r\nexport class IsySpinnerComponent implements OnInit, OnDestroy {\r\n constructor(private spinnerService: IsySpinnerService) {}\r\n\r\n @Input() name: string;\r\n @Input() group: string;\r\n @Input() loadingImage: string;\r\n @Input() colorPalete: string;\r\n\r\n private isShowing = false;\r\n @Output() showChange = new EventEmitter();\r\n\r\n @Input()\r\n get show(): boolean {\r\n return this.isShowing;\r\n }\r\n set show(val: boolean) {\r\n this.isShowing = val;\r\n this.showChange.emit(this.isShowing);\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.name) {\r\n throw new Error('Spinner must have a \"name\" attribute.');\r\n }\r\n\r\n this.spinnerService._register(this);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.spinnerService._unregister(this);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsySpinnerComponent } from './isy-spinner.component';\r\nimport { IsySpinnerService } from './isy-spinner.service';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [IsySpinnerComponent],\r\n exports: [IsySpinnerComponent],\r\n providers: [IsySpinnerService],\r\n})\r\nexport class IsySpinnerModule {}\r\n","import { Injectable } from '@angular/core';\r\nimport { IsySpinnerComponent } from './isy-spinner.component';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsySpinnerService {\r\n private spinnerCache = new Set();\r\n\r\n _register(spinner: IsySpinnerComponent): void {\r\n this.spinnerCache.add(spinner);\r\n }\r\n\r\n _unregister(spinnerToRemove: IsySpinnerComponent): void {\r\n this.spinnerCache.forEach((spinner) => {\r\n if (spinner === spinnerToRemove) {\r\n this.spinnerCache.delete(spinner);\r\n }\r\n });\r\n }\r\n\r\n _unregisterGroup(spinnerGroup: string): void {\r\n this.spinnerCache.forEach((spinner) => {\r\n if (spinner.group === spinnerGroup) {\r\n this.spinnerCache.delete(spinner);\r\n }\r\n });\r\n }\r\n\r\n _unregisterAll(): void {\r\n this.spinnerCache.clear();\r\n }\r\n\r\n show(spinnerName: string): void {\r\n this.spinnerCache.forEach((spinner) => {\r\n if (spinner.name === spinnerName) {\r\n spinner.show = true;\r\n }\r\n });\r\n }\r\n\r\n hide(spinnerName: string): void {\r\n this.spinnerCache.forEach((spinner) => {\r\n if (spinner.name === spinnerName) {\r\n spinner.show = false;\r\n }\r\n });\r\n }\r\n\r\n showGroup(spinnerGroup: string): void {\r\n this.spinnerCache.forEach((spinner) => {\r\n if (spinner.group === spinnerGroup) {\r\n spinner.show = true;\r\n }\r\n });\r\n }\r\n\r\n hideGroup(spinnerGroup: string): void {\r\n this.spinnerCache.forEach((spinner) => {\r\n if (spinner.group === spinnerGroup) {\r\n spinner.show = false;\r\n }\r\n });\r\n }\r\n\r\n showAll(): void {\r\n this.spinnerCache.forEach((spinner) => (spinner.show = true));\r\n }\r\n\r\n hideAll(): void {\r\n this.spinnerCache.forEach((spinner) => (spinner.show = false));\r\n }\r\n\r\n isShowing(spinnerName: string): boolean | undefined {\r\n let showing;\r\n this.spinnerCache.forEach((spinner) => {\r\n if (spinner.name === spinnerName) {\r\n showing = spinner.show;\r\n }\r\n });\r\n return showing;\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef, NgZone, OnDestroy } from '@angular/core';\r\nimport { Toast } from './toast';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport {\r\n AnimationEvent,\r\n transition,\r\n state,\r\n trigger,\r\n style,\r\n animate,\r\n} from '@angular/animations';\r\nimport { ToasterOptions } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-toaster',\r\n template: `\r\n \r\n \r\n \r\n ×\r\n \r\n \r\n {{ toast.title | translate }}\r\n \r\n
    \r\n \r\n {{ toast.message | translate }}\r\n
    \r\n \r\n \r\n `,\r\n styleUrls: ['./isy-toaster.component.scss'],\r\n animations: [\r\n trigger('inOut', [\r\n state(\r\n 'flyRight, flyLeft',\r\n style({ opacity: 1, transform: 'translateX(0)' })\r\n ),\r\n state('fade', style({ opacity: 1 })),\r\n state(\r\n 'slideDown, slideUp',\r\n style({ opacity: 1, transform: 'translateY(0)' })\r\n ),\r\n transition('void => flyRight', [\r\n style({\r\n opacity: 0,\r\n transform: 'translateX(100%)',\r\n }),\r\n animate('0.2s ease-in'),\r\n ]),\r\n transition('flyRight => void', [\r\n animate(\r\n '0.2s 10ms ease-out',\r\n style({\r\n opacity: 0,\r\n transform: 'translateX(100%)',\r\n })\r\n ),\r\n ]),\r\n transition('void => flyLeft', [\r\n style({\r\n opacity: 0,\r\n transform: 'translateX(-100%)',\r\n }),\r\n animate('0.2s ease-in'),\r\n ]),\r\n transition('flyLeft => void', [\r\n animate(\r\n '0.2s 10ms ease-out',\r\n style({\r\n opacity: 0,\r\n transform: 'translateX(-100%)',\r\n })\r\n ),\r\n ]),\r\n transition('void => fade', [\r\n style({\r\n opacity: 0,\r\n }),\r\n animate('0.3s ease-in'),\r\n ]),\r\n transition('fade => void', [\r\n animate(\r\n '0.3s 10ms ease-out',\r\n style({\r\n opacity: 0,\r\n })\r\n ),\r\n ]),\r\n transition('void => slideDown', [\r\n style({\r\n opacity: 0,\r\n transform: 'translateY(-200%)',\r\n }),\r\n animate('0.3s ease-in'),\r\n ]),\r\n transition('slideDown => void', [\r\n animate(\r\n '0.3s 10ms ease-out',\r\n style({\r\n opacity: 0,\r\n transform: 'translateY(-200%)',\r\n })\r\n ),\r\n ]),\r\n transition('void => slideUp', [\r\n style({\r\n opacity: 0,\r\n transform: 'translateY(200%)',\r\n }),\r\n animate('0.3s ease-in'),\r\n ]),\r\n transition('slideUp => void', [\r\n animate(\r\n '0.3s 10ms ease-out',\r\n style({\r\n opacity: 0,\r\n transform: 'translateY(200%)',\r\n })\r\n ),\r\n ]),\r\n ]),\r\n ],\r\n})\r\nexport class IsyToasterComponent implements OnDestroy {\r\n position = 'absolute';\r\n messageClass: string;\r\n titleClass: string;\r\n positionClass: string;\r\n maxShown: number;\r\n newestOnTop: boolean;\r\n animate: string;\r\n toasts: Toast[] = [];\r\n\r\n private _fresh = true;\r\n public onToastClicked: (toast: Toast) => void;\r\n\r\n private _onEnter: Subject = new Subject();\r\n private _onExit: Subject = new Subject();\r\n\r\n constructor(\r\n public sanitizer: DomSanitizer,\r\n private cdr: ChangeDetectorRef,\r\n private _zone: NgZone,\r\n options: ToasterOptions\r\n ) {\r\n const isMobile = document.documentElement.clientWidth > 1024 ? false : true;\r\n if (isMobile) {\r\n options.positionClass = 'isy-toast-bottom-full-width';\r\n }\r\n Object.assign(this, options);\r\n }\r\n\r\n onEnter(): Observable {\r\n return this._onEnter.asObservable();\r\n }\r\n\r\n onExit(): Observable {\r\n return this._onExit.asObservable();\r\n }\r\n\r\n addToast(toast: Toast) {\r\n if (this.positionClass.indexOf('top') > 0) {\r\n if (this.newestOnTop) {\r\n this.toasts.unshift(toast);\r\n } else {\r\n this.toasts.push(toast);\r\n }\r\n\r\n if (this.toasts.length > this.maxShown) {\r\n const diff = this.toasts.length - this.maxShown;\r\n\r\n if (this.newestOnTop) {\r\n this.toasts.splice(this.maxShown);\r\n } else {\r\n this.toasts.splice(0, diff);\r\n }\r\n }\r\n } else {\r\n this.toasts.unshift(toast);\r\n if (this.toasts.length > this.maxShown) {\r\n this.toasts.splice(this.maxShown);\r\n }\r\n }\r\n\r\n if (this.animate === null && this._fresh) {\r\n this._fresh = false;\r\n this._onEnter.next(true);\r\n this._onEnter.complete();\r\n }\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n removeToast(toast: Toast) {\r\n if (toast.timeoutId) {\r\n clearTimeout(toast.timeoutId);\r\n toast.timeoutId = null;\r\n }\r\n\r\n this.toasts = this.toasts.filter((t) => {\r\n return t.id !== toast.id;\r\n });\r\n }\r\n\r\n removeAllToasts() {\r\n this.toasts = [];\r\n }\r\n\r\n clicked(toast: Toast) {\r\n if (this.onToastClicked) {\r\n this.onToastClicked(toast);\r\n }\r\n }\r\n\r\n anyToast(): boolean {\r\n return this.toasts.length > 0;\r\n }\r\n\r\n findToast(toastId: number): Toast | void {\r\n for (const toast of this.toasts) {\r\n if (toast.id === toastId) {\r\n return toast;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n onAnimationEnd(event: AnimationEvent) {\r\n if (event.toState === 'void' && !this.anyToast()) {\r\n this._ngExit();\r\n } else if (this._fresh && event.fromState === 'void') {\r\n // notify when first animation is done\r\n this._fresh = false;\r\n this._zone.run(() => {\r\n this._onEnter.next(true);\r\n this._onEnter.complete();\r\n });\r\n }\r\n }\r\n\r\n private _ngExit() {\r\n this._zone.onMicrotaskEmpty.subscribe(() => {\r\n this._onExit.next(true);\r\n this._onExit.complete();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._ngExit();\r\n }\r\n}\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyToasterComponent } from './isy-toaster.component';\r\nimport { IsyToasterService } from './isy-toaster.service';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { ToasterOptions } from '@isygis/isymap-config';\r\n\r\n@NgModule({\r\n imports: [CommonModule, IsyTranslateModule],\r\n declarations: [IsyToasterComponent],\r\n exports: [IsyToasterComponent],\r\n})\r\nexport class IsyToasterModule {\r\n public static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: IsyToasterModule,\r\n providers: [IsyToasterService, ToasterOptions],\r\n };\r\n }\r\n}\r\n","import {\r\n Injectable,\r\n ComponentRef,\r\n ApplicationRef,\r\n NgZone,\r\n ViewContainerRef,\r\n ComponentFactoryResolver,\r\n Injector,\r\n} from '@angular/core';\r\nimport { IsyToasterComponent } from './isy-toaster.component';\r\nimport { Toast } from './toast';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { ToasterOptions } from '@isygis/isymap-config';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n/**\r\n * Service for managing and displaying toasts.\r\n */\r\nexport class IsyToasterService {\r\n private container: ComponentRef;\r\n\r\n private index = 0;\r\n private toastClicked: Subject = new Subject();\r\n private rootViewContainerRef: ViewContainerRef;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private ngZone: NgZone,\r\n private appRef: ApplicationRef,\r\n private options: ToasterOptions\r\n ) {}\r\n\r\n setRootViewContainerRef(vRef: ViewContainerRef): void {\r\n this.rootViewContainerRef = vRef;\r\n }\r\n\r\n onClickToast(): Observable {\r\n return this.toastClicked.asObservable();\r\n }\r\n\r\n show(toast: Toast, options?: ToasterOptions): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (!this.container) {\r\n // get app root view component ref\r\n if (!this.rootViewContainerRef) {\r\n try {\r\n this.rootViewContainerRef =\r\n this.appRef['_rootComponents'][0]['_hostElement'].vcRef;\r\n } catch (e) {\r\n reject(\r\n new Error(\r\n 'Please set root ViewContainerRef using setRootViewContainerRef(vRef: ViewContainerRef) method.'\r\n )\r\n );\r\n }\r\n }\r\n\r\n // create and load ToastContainer\r\n const toastFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(\r\n IsyToasterComponent\r\n );\r\n const injector = Injector.create({\r\n providers: [{ provide: ToasterOptions, useValue: this.options }],\r\n parent: this.rootViewContainerRef.parentInjector,\r\n });\r\n this.container = toastFactory.create(injector);\r\n this.rootViewContainerRef.insert(this.container.hostView);\r\n this.container.instance.onToastClicked = (toastItem: Toast) => {\r\n this._onToastClicked(toastItem);\r\n };\r\n\r\n this.container.instance.onExit().subscribe(() => {\r\n this.dispose();\r\n });\r\n }\r\n\r\n resolve(this.setupToast(toast, options));\r\n });\r\n }\r\n\r\n createTimeout(toast: Toast): number {\r\n let task: number;\r\n this.ngZone.runOutsideAngular(() => {\r\n task = setTimeout(\r\n () => this.ngZone.run(() => this.clearToast(toast)),\r\n toast.config.toastLife\r\n );\r\n });\r\n\r\n return task;\r\n }\r\n\r\n setupToast(toast: Toast, options?: ToasterOptions): Toast {\r\n toast.id = ++this.index;\r\n\r\n const customConfig: ToasterOptions = { ...this.options, ...options };\r\n\r\n toast.config = Object.keys(toast.config).reduce(\r\n (config, key) => {\r\n if (key in customConfig) {\r\n config[key] = customConfig[key];\r\n }\r\n return config;\r\n },\r\n { ...toast.config }\r\n );\r\n\r\n if (toast.config.dismiss === 'auto') {\r\n toast.timeoutId = this.createTimeout(toast);\r\n }\r\n\r\n this.container.instance.addToast(toast);\r\n return toast;\r\n }\r\n\r\n private _onToastClicked(toast: Toast): void {\r\n this.toastClicked.next(toast);\r\n if (toast.config.dismiss === 'click') {\r\n this.clearToast(toast);\r\n }\r\n }\r\n\r\n private dispose(): void {\r\n if (this.container) {\r\n this.container.destroy();\r\n this.container = null;\r\n }\r\n }\r\n\r\n /**\r\n * Dismisses a toast.\r\n *\r\n * @param toast The toast to dismiss.\r\n */\r\n dismissToast(toast: Toast): void {\r\n this.clearToast(toast);\r\n }\r\n\r\n /**\r\n * Clears a specific toast from the toaster container.\r\n *\r\n * @param toast - The toast to be cleared.\r\n */\r\n clearToast(toast: Toast): void {\r\n if (this.container) {\r\n const instance = this.container.instance;\r\n instance.removeToast(toast);\r\n }\r\n }\r\n\r\n /**\r\n * Clears all the toasts from the toaster container.\r\n */\r\n clearAllToasts(): void {\r\n if (this.container) {\r\n const instance = this.container.instance;\r\n instance.removeAllToasts();\r\n this.dispose();\r\n }\r\n }\r\n\r\n /**\r\n * Displays an error toast message.\r\n *\r\n * @param message - The error message to display.\r\n * @param title - The title of the error toast (optional).\r\n * @param options - Additional options for the error toast (optional).\r\n * @returns A promise that resolves to the displayed toast.\r\n */\r\n error(\r\n message: string,\r\n title?: string,\r\n options?: ToasterOptions\r\n ): Promise {\r\n const toast = new Toast('error', message, title, options);\r\n return this.show(toast, options);\r\n }\r\n\r\n /**\r\n * Displays an information toast message.\r\n *\r\n * @param message - The message to display in the toast.\r\n * @param title - The title of the toast (optional).\r\n * @param options - Additional options for the toast (optional).\r\n * @returns A promise that resolves to the created toast.\r\n */\r\n info(\r\n message: string,\r\n title?: string,\r\n options?: ToasterOptions\r\n ): Promise {\r\n const toast = new Toast('info', message, title, options);\r\n return this.show(toast, options);\r\n }\r\n\r\n /**\r\n * Displays a success toast message.\r\n *\r\n * @param message - The message to be displayed in the toast.\r\n * @param title - The title of the toast (optional).\r\n * @param options - Additional options for the toast (optional).\r\n * @returns A promise that resolves to the created toast.\r\n */\r\n success(\r\n message: string,\r\n title?: string,\r\n options?: ToasterOptions\r\n ): Promise {\r\n const toast = new Toast('success', message, title, options);\r\n return this.show(toast, options);\r\n }\r\n\r\n /**\r\n * Displays a warning toast message.\r\n *\r\n * @param message - The message to display in the toast.\r\n * @param title - The title of the toast (optional).\r\n * @param options - Additional options for the toast (optional).\r\n * @returns A promise that resolves to the created toast.\r\n */\r\n warning(\r\n message: string,\r\n title?: string,\r\n options?: ToasterOptions\r\n ): Promise {\r\n const toast = new Toast('warning', message, title, options);\r\n return this.show(toast, options);\r\n }\r\n\r\n /**\r\n * Creates a custom toast with the specified message, title, and options,\r\n * allow user define custom background color and image\r\n * @param message - The message to display in the toast.\r\n * @param title - The title of the toast (optional).\r\n * @param options - The options for the toast (optional).\r\n * @returns A promise that resolves to the created toast.\r\n */\r\n custom(\r\n message: string,\r\n title?: string,\r\n options?: ToasterOptions\r\n ): Promise {\r\n const toast = new Toast('custom', message, title, options);\r\n return this.show(toast, options);\r\n }\r\n}\r\n","import { ToasterOptions } from '@isygis/isymap-config';\r\n\r\nexport class Toast {\r\n id: number;\r\n config: ToasterOptions = new ToasterOptions();\r\n timeoutId: number;\r\n\r\n constructor(\r\n public type: 'error' | 'success' | 'info' | 'warning' | 'custom',\r\n public message: string,\r\n public title?: string,\r\n public data?: ToasterOptions\r\n ) {\r\n if (data) {\r\n Object.assign(this.config, data);\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { IsyToolsService } from '../isy-tools.service';\r\nimport { IsyToolDirective } from '../isy-tool.directive';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-isy-active-tool',\r\n templateUrl: './isy-active-tool.component.html',\r\n styleUrls: ['./isy-active-tool.component.scss'],\r\n})\r\nexport class IsyActiveToolComponent implements OnInit, OnDestroy {\r\n subscription: Subscription;\r\n @ViewChild(IsyToolDirective, { static: true }) libIsyTool: IsyToolDirective;\r\n\r\n constructor(\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private toolsService: IsyToolsService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription = this.toolsService.activeTool$.subscribe((tool) => {\r\n const viewContainerRef = this.libIsyTool.viewContainerRef;\r\n if (tool === undefined || tool.component === undefined) {\r\n viewContainerRef.clear();\r\n return;\r\n }\r\n\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(tool.component);\r\n viewContainerRef.clear();\r\n viewContainerRef.createComponent(componentFactory);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n const viewContainerRef = this.libIsyTool.viewContainerRef;\r\n viewContainerRef.clear();\r\n this.subscription.unsubscribe();\r\n this.toolsService.setActiveToolId(undefined);\r\n }\r\n}\r\n","","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { IsyAdvancedSearchService } from './isy-advanced-search.service';\r\n\r\n@Pipe({\r\n name: 'columnDefsChanged',\r\n})\r\nexport class ColumnDefsChangedPipe implements PipeTransform {\r\n constructor(private searchService: IsyAdvancedSearchService) {}\r\n\r\n transform(value: any, agGrid: any): any {\r\n if (value) {\r\n if (this.searchService.getFilterModel() && agGrid) {\r\n setTimeout(() => {\r\n agGrid.api.setFilterModel(this.searchService.getFilterModel());\r\n }, 200);\r\n }\r\n }\r\n return value;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'columnIds',\r\n})\r\nexport class ColumnIdsPipe implements PipeTransform {\r\n transform(columns: any[], ...args: any[]): any {\r\n const columnIds = [];\r\n columns.forEach((c) => {\r\n if (c.isVisible()) {\r\n columnIds.push(c.getColId());\r\n }\r\n });\r\n return columnIds;\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n HostListener,\r\n Input,\r\n AfterViewInit,\r\n} from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libContentSize]',\r\n})\r\nexport class ContentSizeDirective implements AfterViewInit {\r\n @Input('libContentSize') id: string;\r\n\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize() {\r\n this.resizeContent();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.resizeContent();\r\n }\r\n\r\n private resizeContent() {\r\n const content = document.getElementById(this.id);\r\n if (content === null) {\r\n return;\r\n }\r\n const clientHeight = content.offsetHeight;\r\n this.el.nativeElement.style.height = clientHeight - 20 + 'px';\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { take } from 'rxjs/operators';\r\nimport { EToolId } from '@isygis/isy-configs';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyAdvancedSearchService } from '../isy-advanced-search.service';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { MapLibNgService, IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Component({\r\n selector: 'lib-isy-advanced-search-buttons',\r\n templateUrl: './isy-advanced-search-buttons.component.html',\r\n styleUrls: ['./isy-advanced-search-buttons.component.scss'],\r\n})\r\nexport class IsyAdvancedSearchButtonsComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(\r\n private bladeService: IsyBladeService,\r\n private searchService: IsyAdvancedSearchService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private mapLibNgService: MapLibNgService,\r\n private commonService: IsyCommonService,\r\n private mapEmitterService: IsyMapEmitterService\r\n ) {}\r\n\r\n goToFilter(): void {\r\n const getCurrSearchMode = this.searchService.getCurrSearchMode();\r\n if (getCurrSearchMode !== 3) {\r\n if (this.searchService.getLayer()) {\r\n this.searchService.getFeature(this.searchService.getLayer());\r\n }\r\n\r\n this.searchService.layers$.pipe(take(1)).subscribe((layers) => {\r\n if (layers) {\r\n layers.forEach((l) =>\r\n this.mapLibNgService.map().removeLayerFilter(l)\r\n );\r\n this.searchService.setShowAdvancedSearchSpinner(true);\r\n this.bladeService.temporaryHide(EToolId.ADVANCED_SEARCH, false);\r\n this.searchService.setSearchMode(\r\n this.searchService.getCurrSearchMode()\r\n );\r\n this.mapActionDialogService.hide(EToolId.ADVANCED_SEARCH);\r\n this.mapEmitterService.emitGetClickCoordinates(undefined);\r\n }\r\n });\r\n } else {\r\n this.searchService.layers$.pipe(take(1)).subscribe((layers) => {\r\n if (layers) {\r\n layers.forEach((l) =>\r\n this.mapLibNgService.map().removeLayerFilter(l)\r\n );\r\n this.searchService.setShowAdvancedSearchSpinner(true);\r\n this.bladeService.temporaryHide(EToolId.ADVANCED_SEARCH, false);\r\n this.searchService.showHiddenBlade();\r\n this.mapActionDialogService.hide(EToolId.ADVANCED_SEARCH);\r\n this.mapEmitterService.emitGetClickCoordinates(undefined);\r\n }\r\n });\r\n }\r\n }\r\n\r\n removeFilter(): void {\r\n this.searchService.layers$.pipe(take(1)).subscribe((layers) => {\r\n if (layers) {\r\n layers.forEach((l) => this.mapLibNgService.map().removeLayerFilter(l));\r\n this.mapActionDialogService.hide(EToolId.ADVANCED_SEARCH);\r\n this.bladeService.temporaryHide(EToolId.ADVANCED_SEARCH, false);\r\n this.bladeService.hide(EToolId.ADVANCED_SEARCH);\r\n this.commonService.hideMenuIcon(false);\r\n this.searchService.setLayer(undefined);\r\n this.mapEmitterService.emitFeatureValues(undefined);\r\n }\r\n });\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyAdvancedSearchService } from './isy-advanced-search.service';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { EToolId } from '@isygis/isy-configs';\r\n\r\n@Component({\r\n selector: 'lib-isy-advanced-search',\r\n templateUrl: './isy-advanced-search.component.html',\r\n styleUrls: ['./isy-advanced-search.component.scss'],\r\n})\r\nexport class IsyAdvancedSearchComponent implements OnDestroy {\r\n currentSearchMode$ = this.searchService.searchMode$.pipe(\r\n map((value) => {\r\n if (value === 2) {\r\n this.bladeService.changeDynamicBladeHeaderTitle(\r\n EToolId.ADVANCED_SEARCH,\r\n 'advancedSearchObjectTypeTxt'\r\n );\r\n }\r\n if (value === 3) {\r\n this.bladeService.changeDynamicBladeHeaderTitle(\r\n EToolId.ADVANCED_SEARCH,\r\n 'advancedSearchCommonTypeTxt'\r\n );\r\n }\r\n return value;\r\n })\r\n );\r\n\r\n constructor(\r\n private searchService: IsyAdvancedSearchService,\r\n private bladeService: IsyBladeService\r\n ) {}\r\n\r\n ngOnDestroy(): void {\r\n this.searchService.setSearchMode(1);\r\n }\r\n}\r\n","
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { Injectable } from '@angular/core';\r\nimport { combineLatest, BehaviorSubject, Subject } from 'rxjs';\r\nimport { map, tap, shareReplay } from 'rxjs/operators';\r\nimport { IsyMapEmitterService, MapLibNgService } from '@isygis/isy-map';\r\nimport { IVector, IProjectConfig } from '@isygis/isymap-config';\r\n\r\nexport enum ESearchMode {\r\n WELCOME_PAGE = 1,\r\n OBJECT_TYPE_SEARCH,\r\n COMMON_PROPERTIES_SEARCH,\r\n}\r\n\r\nexport interface IFeatureValues {\r\n layer: any;\r\n values: any[];\r\n}\r\ninterface ILayer {\r\n layerName: string;\r\n layerMet: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyAdvancedSearchService {\r\n currSearchMode;\r\n layerObj: ILayer[] = [];\r\n allFeatures: any[] = [];\r\n editFilterMode;\r\n selectedLayer;\r\n featureObj;\r\n filterModel;\r\n noFeatures = true;\r\n // editFilterISActive = false;\r\n\r\n featureUrlHasBeenDescribedEmitter$ =\r\n this.mapEmitterService.featureUrlHasBeenDescribedEmitter$;\r\n featureValuesEmitter$ = this.mapEmitterService.featureValuesEmitter$;\r\n private searchModeAction = new BehaviorSubject(\r\n ESearchMode.WELCOME_PAGE\r\n );\r\n searchMode$ = this.searchModeAction.asObservable();\r\n private showAdvancedSearchSpinnerAction = new BehaviorSubject(false);\r\n showAdvancedSearchSpinner$ =\r\n this.showAdvancedSearchSpinnerAction.asObservable();\r\n\r\n private showHiddenBladeAction = new Subject();\r\n showHiddenBlade$ = this.showHiddenBladeAction.asObservable();\r\n\r\n constructor(\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapLibNgService: MapLibNgService\r\n ) {}\r\n\r\n // using both objects for getting 'layers' and merge them later\r\n mapConfig$ = this.mapEmitterService.mapConfigLoadEmitter$;\r\n mapConfig1$ = this.mapEmitterService.mapLoadEmitter$;\r\n\r\n layers$ = combineLatest([this.mapConfig$, this.mapConfig1$]).pipe(\r\n map(([mapConfig, mapConfig1]: [any, IProjectConfig]) => {\r\n // map(([mapConfig]: [any]) => {\r\n if (mapConfig && mapConfig1) {\r\n const layersWithAdvancedFilter = mapConfig.layers.filter(\r\n (layer) => layer.subLayers[0].source === 'WFS'\r\n );\r\n const vector: IVector[] = mapConfig1.config.vector;\r\n // merging two objects for having options in the sublayer\r\n layersWithAdvancedFilter.forEach((layer) => {\r\n layer.subLayers[0]['options'] = vector.find(\r\n (v) => v.guid === layer.guid\r\n ).options;\r\n });\r\n console.log('mapConfig', layersWithAdvancedFilter);\r\n // return undefined;\r\n return layersWithAdvancedFilter;\r\n }\r\n return undefined;\r\n }),\r\n shareReplay(1),\r\n tap((t) => console.log('projectConfig', t))\r\n );\r\n // for editiing emitted features\r\n layerFeaturesEdittedComProp$ = combineLatest([\r\n this.featureValuesEmitter$,\r\n ]).pipe(\r\n map(([featureValues]) => {\r\n const featureHeaders = [\r\n 'FABRIKAT',\r\n 'TYPE_BET',\r\n 'SERIENR',\r\n 'FARBIKASJONSAAR',\r\n 'IDRIFTSATT_AAR',\r\n 'LEVERANDOR',\r\n ];\r\n if (featureValues && featureValues.values.length > 0) {\r\n // todo fix the interface\r\n const featureValuesEditted: IFeatureValues = { layer: {}, values: [] };\r\n // const featureValuesEditted = {values: [] , layer: {}};\r\n featureValues.values.forEach((feature) => {\r\n const featureEdited = {};\r\n featureHeaders.forEach((header) => {\r\n let hasObj = false;\r\n for (const key in feature) {\r\n if (key === header) {\r\n featureEdited[key] = feature[key];\r\n hasObj = true;\r\n break;\r\n }\r\n }\r\n if (!hasObj) {\r\n featureEdited[header] = null;\r\n }\r\n });\r\n featureValuesEditted.values.push(featureEdited);\r\n featureValuesEditted.layer = featureValues.layer;\r\n });\r\n this.noFeatures = false;\r\n return featureValuesEditted;\r\n }\r\n if (!this.noFeatures) {\r\n this.noFeatures = true;\r\n }\r\n return undefined;\r\n }),\r\n shareReplay(1)\r\n // , tap(r => (console.log('layerFeaturesEdittedComProp', r)))\r\n );\r\n // for looping through layers\r\n loopFeaturesForLayer$ = combineLatest([this.layers$]).pipe(\r\n map(([layers]) => {\r\n if (layers) {\r\n layers.forEach((layer) => {\r\n if (layer) {\r\n this.allFeatures = [];\r\n this.layerObj.push({ layerName: layer.name, layerMet: false });\r\n setTimeout(() => {\r\n this.getFeature(layer);\r\n }, 200);\r\n }\r\n // return undefined;\r\n return new Promise((resolve) => resolve(undefined));\r\n });\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n // return undefined;\r\n })\r\n // shareReplay(1)\r\n // , tap(r => (console.log('layers', r)))\r\n );\r\n // for collecting all features\r\n getFeaturesForAllLayers$ = combineLatest([\r\n this.layerFeaturesEdittedComProp$,\r\n ]).pipe(\r\n map(([layerFeatures]) => {\r\n if (layerFeatures) {\r\n if (\r\n this.layerObj.some(\r\n (layer) =>\r\n layer.layerName === layerFeatures.layer.name &&\r\n layer.layerMet === false\r\n )\r\n ) {\r\n layerFeatures.values.forEach((element) => {\r\n if (element) {\r\n this.allFeatures.push(element);\r\n }\r\n });\r\n this.layerObj.forEach((l) => {\r\n if (l.layerName === layerFeatures.layer.name) {\r\n l.layerMet = true;\r\n }\r\n });\r\n }\r\n console.log(\r\n 'getFeaturesForAllLayers',\r\n layerFeatures.layer.name,\r\n layerFeatures.values\r\n );\r\n console.log('allFeatures', this.allFeatures, this.layerObj);\r\n return this.allFeatures;\r\n }\r\n return undefined;\r\n }),\r\n shareReplay(1)\r\n );\r\n featureValuesEmitterEditted$ = combineLatest([\r\n this.featureUrlHasBeenDescribedEmitter$,\r\n this.featureValuesEmitter$,\r\n ]).pipe(\r\n map(([featureHeaders, featureValues]) => {\r\n if (featureHeaders && featureValues && featureValues.values.length > 0) {\r\n const featureValuesEditted = [];\r\n featureValues.values.forEach((feature) => {\r\n const featureEdited = {};\r\n featureHeaders.featureElements.forEach((header) => {\r\n let hasObj = false;\r\n for (const key in feature) {\r\n if (key === header.name) {\r\n featureEdited[key] = feature[key];\r\n hasObj = true;\r\n break;\r\n }\r\n }\r\n if (!hasObj) {\r\n featureEdited[header.name] = null;\r\n }\r\n });\r\n featureValuesEditted.push(featureEdited);\r\n });\r\n this.noFeatures = false;\r\n console.log('featureValuesEmitterEditted$ - JURAJ');\r\n return featureValuesEditted;\r\n }\r\n if (!this.noFeatures) {\r\n this.noFeatures = true;\r\n }\r\n return undefined;\r\n }),\r\n shareReplay(1),\r\n tap((r) => console.log('featureValuesEditted', r))\r\n );\r\n\r\n setSearchMode(searchMode: ESearchMode): void {\r\n this.searchModeAction.next(searchMode);\r\n }\r\n\r\n // the 'featureUrlHasBeenDescribedEmitter' function will be fired when the result of 'describeFeature'\r\n // is ready, so it is connected to the view\r\n // describeFeature(layer: IVector): void {\r\n describeFeature(layer: any): Promise {\r\n const params = {\r\n service: layer.subLayers[0].source,\r\n name: layer.subLayers[0].options.protocol.params.typename,\r\n title: layer.subLayers[0].name,\r\n guid: layer.guid,\r\n catalogLayerId: undefined,\r\n version: layer.subLayers[0].version,\r\n outputFormat: 'text/xml;%20subtype=gml/3.2',\r\n };\r\n let url = layer.subLayers[0].url;\r\n\r\n if (url.endsWith('&')) {\r\n url = url.substr(0, url.length - 1);\r\n }\r\n return this.mapLibNgService.map().describeFeatureUrl(url, params);\r\n }\r\n\r\n getFeature(layer: any): Promise {\r\n console.log('getFeature - changed from sync to async promise - issues?');\r\n return this.mapLibNgService.map().queryLayerFilter(layer, undefined, true);\r\n }\r\n\r\n setLayer(obj) {\r\n this.selectedLayer = obj;\r\n }\r\n\r\n getLayer() {\r\n return this.selectedLayer;\r\n }\r\n\r\n setMapAcitionDialogActive(searchmode: number): void {\r\n // this.mapActionDialogActive = value;\r\n this.currSearchMode = searchmode;\r\n }\r\n\r\n getCurrSearchMode(): number {\r\n return this.currSearchMode;\r\n }\r\n\r\n setFilterModel(data: any) {\r\n this.filterModel = data;\r\n }\r\n\r\n getFilterModel() {\r\n return this.filterModel;\r\n }\r\n\r\n getFeaturStatus() {\r\n return this.noFeatures;\r\n }\r\n\r\n // setEditFilterStatus(status) {\r\n // this.editFilterISActive = status;\r\n // }\r\n\r\n // getEditFilterStatus() {\r\n // return this.editFilterISActive;\r\n // }\r\n\r\n setShowAdvancedSearchSpinner(value: boolean): void {\r\n this.showAdvancedSearchSpinnerAction.next(value);\r\n }\r\n\r\n showHiddenBlade(): void {\r\n this.showHiddenBladeAction.next(true);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { IsyAdvancedSearchService } from '../isy-advanced-search.service';\r\nimport { combineLatest, Subscription, BehaviorSubject } from 'rxjs';\r\nimport { map, tap, take } from 'rxjs/operators';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { MapLibNgService, IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { EToolId } from '@isygis/isy-configs';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyAdvancedSearchButtonsComponent } from '../isy-advanced-search-buttons/isy-advanced-search-buttons.component';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { ITableHeader } from '../tableHeader';\r\n\r\n@Component({\r\n selector: 'lib-isy-obj-search',\r\n templateUrl: './isy-obj-search.component.html',\r\n styleUrls: ['./isy-obj-search.component.scss'],\r\n})\r\nexport class IsyObjSearchComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscriptions: Subscription = new Subscription();\r\n public headerWithSearch = new BehaviorSubject(undefined);\r\n selectedLayerName: string;\r\n selectedLayer: any;\r\n noFeature = false;\r\n isShowingColumns = false;\r\n showAdvancedSpinner = false;\r\n\r\n @ViewChild('agGrid', { static: false }) agGrid: AgGridAngular;\r\n\r\n constructor(\r\n private searchService: IsyAdvancedSearchService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService,\r\n private mapActionDialogService: IsyMapActionDialogService\r\n ) {}\r\n\r\n layerFeaturesEditted$ = this.searchService.featureValuesEmitterEditted$;\r\n\r\n headerTable$ = combineLatest([this.layerFeaturesEditted$]).pipe(\r\n map((values) => {\r\n if (values) {\r\n if (values[0]) {\r\n const header: ITableHeader[] = [];\r\n // use this for looping through key-value objects\r\n for (const key in values[0][0]) {\r\n if (key) {\r\n header.push({\r\n headerName: key,\r\n field: key,\r\n sortable: true,\r\n filter: true,\r\n floatingFilter: true,\r\n });\r\n }\r\n }\r\n this.searchService.setShowAdvancedSearchSpinner(false);\r\n return header;\r\n } else {\r\n return undefined;\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n })\r\n );\r\n\r\n filteredFeatures$ = combineLatest([\r\n this.layerFeaturesEditted$,\r\n this.headerWithSearch,\r\n ]).pipe(\r\n map(([features, headerWithSearch]: [any, ITableHeader[]]) => {\r\n if (!features || !headerWithSearch) {\r\n this.noFeature = this.searchService.getFeaturStatus();\r\n }\r\n return features;\r\n })\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.searchService.layers$,\r\n this.filteredFeatures$,\r\n this.headerTable$,\r\n ]).pipe(\r\n map(([layers, features, tableHeader]) => ({\r\n layers,\r\n features,\r\n tableHeader: tableHeader ? tableHeader : undefined,\r\n })),\r\n tap((t) => console.log('test', t))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.commonService.hideMenuIcon(true);\r\n this.commonService.toolsIsActive(false);\r\n this.subscriptions.add(\r\n this.searchService.showAdvancedSearchSpinner$.subscribe((value) => {\r\n this.showAdvancedSpinner = value;\r\n })\r\n );\r\n this.subscriptions.add(\r\n this.mapEmitterService.extentFittedEmitter$.subscribe(() => {\r\n this.commonService.setShowMainSpinner(false);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.commonService.hideMenuIcon(false);\r\n this.searchService.setFilterModel(undefined);\r\n this.searchService.layers$.pipe(take(1)).subscribe((layers) => {\r\n if (layers) {\r\n layers.forEach((l) =>\r\n // loop through layerlist and remove filter for each\r\n this.mapLibNgService.map().removeLayerFilter(l)\r\n );\r\n }\r\n this.mapEmitterService.emitFeatureValues(undefined);\r\n });\r\n this.searchService.setShowAdvancedSearchSpinner(false);\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n layerSelected(layer): Promise {\r\n this.searchService.setShowAdvancedSearchSpinner(true);\r\n this.searchService.setFilterModel(undefined);\r\n\r\n this.selectedLayerName = layer.name;\r\n this.selectedLayer = layer;\r\n\r\n this.mapEmitterService.emitFeatureValues(undefined);\r\n\r\n return this.searchService\r\n .describeFeature(layer)\r\n .then(() => this.searchService.getFeature(layer))\r\n .then(() => this.searchService.setLayer(layer));\r\n }\r\n\r\n showFilterDataInMap(): void {\r\n this.commonService.setShowMainSpinner(true);\r\n const filterData = {};\r\n const filterModel = this.agGrid.api.getFilterModel();\r\n\r\n this.searchService.setFilterModel(filterModel);\r\n\r\n const keys = Object.keys(filterModel);\r\n if (keys) {\r\n keys.forEach((k) => {\r\n filterData[k] = '*' + filterModel[k].filter + '*';\r\n });\r\n }\r\n const style = {\r\n style: [\r\n {\r\n image: {\r\n radius: 5,\r\n stroke: {\r\n color: '#9b05d4',\r\n width: 3,\r\n },\r\n fill: {\r\n color: 'rgba(221, 7, 225, 1)',\r\n },\r\n },\r\n stroke: {\r\n color: 'rgba(221, 7, 225, 1)',\r\n width: 10.0,\r\n },\r\n fill: {\r\n color: 'rgba(0,255,0,0.1)',\r\n },\r\n },\r\n ],\r\n };\r\n this.mapLibNgService\r\n .map()\r\n .setLayerFilter(this.selectedLayer, filterData, true, false, style);\r\n this.searchService.setMapAcitionDialogActive(2);\r\n this.bladeService.temporaryHide(EToolId.ADVANCED_SEARCH, true);\r\n this.mapActionDialogService.show(\r\n EToolId.ADVANCED_SEARCH,\r\n 'Avansert Søk - Objekttype: ' + this.selectedLayerName,\r\n IsyAdvancedSearchButtonsComponent\r\n );\r\n }\r\n\r\n showHideAllColumns(): void {\r\n const allColumns = this.agGrid.columnApi.getAllColumns();\r\n const columnVisibleIds = [];\r\n const columnIds = [];\r\n allColumns.forEach((c) => {\r\n if (c.isVisible()) {\r\n columnVisibleIds.push(c.getColId());\r\n }\r\n columnIds.push(c.getColId());\r\n });\r\n this.agGrid.columnApi.setColumnsVisible(\r\n columnIds,\r\n columnIds.length !== columnVisibleIds.length\r\n );\r\n }\r\n}\r\n","\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{layer.name}}\r\n
    • \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Columns

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Show/Hide columns\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {{column.getDefinition().headerName}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Columns\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';\r\nimport { IsyAdvancedSearchService } from '../isy-advanced-search.service';\r\nimport { combineLatest, Subscription, BehaviorSubject } from 'rxjs';\r\nimport { map, tap, take } from 'rxjs/operators';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { MapLibNgService, IsyMapEmitterService } from '@isygis/isy-map';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { EToolId } from '@isygis/isy-configs';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyAdvancedSearchButtonsComponent } from '../isy-advanced-search-buttons/isy-advanced-search-buttons.component';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { ITableHeader } from '../tableHeader';\r\n\r\n@Component({\r\n selector: 'lib-isy-prop-search',\r\n templateUrl: './isy-prop-search.component.html',\r\n styleUrls: ['./isy-prop-search.component.scss'],\r\n})\r\nexport class IsyPropSearchComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscriptions: Subscription = new Subscription();\r\n public headerWithSearch = new BehaviorSubject(undefined);\r\n selectedLayerName: string;\r\n selectedLayer: any;\r\n isShowingColumns = false;\r\n showAdvancedSpinner = false;\r\n\r\n @ViewChild('agGrid', { static: false }) agGrid: AgGridAngular;\r\n\r\n constructor(\r\n private searchService: IsyAdvancedSearchService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService,\r\n private mapActionDialogService: IsyMapActionDialogService\r\n ) {}\r\n\r\n getFeaturesForAllLayers$ = this.searchService.getFeaturesForAllLayers$;\r\n\r\n headerTable$ = combineLatest([this.getFeaturesForAllLayers$]).pipe(\r\n map((values) => {\r\n if (values) {\r\n if (values[0]) {\r\n const header: ITableHeader[] = [];\r\n // use this for looping through key-value objects\r\n for (const key in values[0][0]) {\r\n if (key) {\r\n header.push({\r\n headerName: key,\r\n field: key,\r\n sortable: true,\r\n filter: true,\r\n floatingFilter: true,\r\n });\r\n }\r\n }\r\n this.searchService.setShowAdvancedSearchSpinner(false);\r\n return header;\r\n } else {\r\n return undefined;\r\n }\r\n } else {\r\n return undefined;\r\n }\r\n })\r\n );\r\n\r\n filteredFeatures$ = combineLatest([\r\n this.getFeaturesForAllLayers$,\r\n ]).pipe(\r\n map(([features]: [any]) => {\r\n if (features) {\r\n if (this.agGrid) {\r\n setTimeout(() => {\r\n this.agGrid.api.setRowData(features);\r\n }, 200);\r\n }\r\n return features;\r\n } else {\r\n return features;\r\n }\r\n })\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.filteredFeatures$,\r\n this.headerTable$,\r\n this.searchService.layers$,\r\n ]).pipe(\r\n map(([features, tableHeader, layers]: [any[], ITableHeader[], any]) => ({\r\n features,\r\n tableHeader: tableHeader ? tableHeader : undefined,\r\n layers,\r\n })),\r\n tap((t) => console.log('test', t))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.commonService.hideMenuIcon(true);\r\n this.commonService.toolsIsActive(false);\r\n this.mapEmitterService.emitFeatureValues(undefined);\r\n this.searchService.setShowAdvancedSearchSpinner(true);\r\n this.searchService.loopFeaturesForLayer$.pipe(take(1)).subscribe();\r\n\r\n this.subscriptions.add(\r\n this.searchService.showAdvancedSearchSpinner$.subscribe((value) => {\r\n this.showAdvancedSpinner = value;\r\n })\r\n );\r\n\r\n this.subscriptions.add(\r\n this.mapEmitterService.extentFittedEmitter$.subscribe(() => {\r\n this.commonService.setShowMainSpinner(false);\r\n })\r\n );\r\n this.subscriptions.add(\r\n this.searchService.showHiddenBlade$.subscribe(() => {\r\n this.searchService.loopFeaturesForLayer$.pipe(take(1)).subscribe();\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.commonService.hideMenuIcon(false);\r\n this.searchService.setFilterModel(undefined);\r\n this.subscriptions.add(\r\n this.searchService.layers$.subscribe((layers) => {\r\n if (layers) {\r\n layers.forEach((l) => {\r\n this.mapLibNgService.map().removeLayerFilter(l);\r\n });\r\n }\r\n this.mapEmitterService.emitFeatureValues(undefined);\r\n })\r\n );\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n showFilterDataInMap(layers: any): void {\r\n this.commonService.setShowMainSpinner(true);\r\n const filterData = {};\r\n const filterModel = this.agGrid.api.getFilterModel();\r\n\r\n this.searchService.setFilterModel(filterModel);\r\n\r\n const keys = Object.keys(filterModel);\r\n if (keys) {\r\n keys.forEach((k) => {\r\n filterData[k] = '*' + filterModel[k].filter + '*';\r\n });\r\n }\r\n\r\n layers.forEach((l) => {\r\n // setTimeout(() => {\r\n const style = {\r\n style: [\r\n {\r\n image: {\r\n radius: 5,\r\n stroke: {\r\n color: '#9b05d4',\r\n width: 3,\r\n },\r\n fill: {\r\n color: 'rgba(221, 7, 225, 1)',\r\n },\r\n },\r\n stroke: {\r\n color: 'rgba(221, 7, 225, 1)',\r\n width: 10.0,\r\n },\r\n fill: {\r\n color: 'rgba(0,255,0,0.1)',\r\n },\r\n },\r\n ],\r\n };\r\n this.mapLibNgService\r\n .map()\r\n .setLayerFilter(l, filterData, true, false, style);\r\n });\r\n this.searchService.setMapAcitionDialogActive(3);\r\n this.bladeService.temporaryHide(EToolId.ADVANCED_SEARCH, true);\r\n this.mapActionDialogService.show(\r\n EToolId.ADVANCED_SEARCH,\r\n 'Avansert Søk - Felles egenskaper: ',\r\n IsyAdvancedSearchButtonsComponent\r\n );\r\n }\r\n\r\n showHideAllColumns(): void {\r\n const allColumns = this.agGrid.columnApi.getAllColumns();\r\n const columnVisibleIds = [];\r\n const columnIds = [];\r\n allColumns.forEach((c) => {\r\n if (c.isVisible()) {\r\n columnVisibleIds.push(c.getColId());\r\n }\r\n columnIds.push(c.getColId());\r\n });\r\n this.agGrid.columnApi.setColumnsVisible(\r\n columnIds,\r\n columnIds.length !== columnVisibleIds.length\r\n );\r\n }\r\n}\r\n","\r\n
    \r\n\t
    \r\n\t\t
    \r\n\t\t\r\n\t\t\t\r\n\t\t
    \r\n\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t

    Columns

    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\tShow/Hide columns\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{{column.getDefinition().headerName}}\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tColumns\r\n\t\t\t\t
    \r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t\t
    \r\n\t\t
    \r\n\t
    \r\n
    ","import {\r\n ESearchMode,\r\n IsyAdvancedSearchService,\r\n} from '../isy-advanced-search.service';\r\nimport { Component } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { EEmptyContentColorPalete } from '@isygis/isy-empty-content';\r\n\r\n@Component({\r\n selector: 'lib-isy-search-welcome-page',\r\n templateUrl: './isy-search-welcome-page.component.html',\r\n styleUrls: ['./isy-search-welcome-page.component.scss'],\r\n})\r\nexport class IsySearchWelcomePageComponent {\r\n EEmptyContentColorPalete = EEmptyContentColorPalete;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n eSearchMode = ESearchMode;\r\n\r\n constructor(private searchService: IsyAdvancedSearchService) {}\r\n\r\n setSearchMode(selectedMode: ESearchMode): void {\r\n this.searchService.setSearchMode(selectedMode);\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {{'objectTypeSearch_mainTxt' | translate}}
    \r\n
    \r\n
    {{'objectTypeSearch_innerTxt' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    {{'commonPropertySearch_mainTxt' | translate}}
    \r\n
    \r\n
    {{'commonPropertySearch_innerTxt' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Feature, GeoJSON } from 'geojson';\r\nimport {\r\n GeoJsonUtilsService,\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { BehaviorSubject, Subject, Subscription, combineLatest, from } from 'rxjs';\r\nimport {\r\n concatAll,\r\n debounceTime,\r\n filter,\r\n map,\r\n publishReplay,\r\n refCount,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs/operators';\r\n\r\nimport { EToolId } from '@isygis/isy-configs';\r\nimport { IsyAnalysesAndReportsService } from './isy-analyses-and-reports.service';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { TitleLabelPipe } from '@isygis/isy-utils';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { getUniqueId } from '@isygis/isy-utils';\r\nimport simplify from '@turf/simplify';\r\nimport buffer from '@turf/buffer';\r\nexport interface IAnalyseMethod {\r\n id: string;\r\n name: string;\r\n bufferDistance?: number;\r\n}\r\n\r\ntype Position = number[];\r\n\r\nexport type PropertyArea = {\r\n geometryObject: {\r\n properties: {\r\n KOMM: any;\r\n GNR: any;\r\n BNR: any;\r\n FNR: any;\r\n SNR: any;\r\n };\r\n };\r\n};\r\n\r\nexport const ANALYSEMETHODS: IAnalyseMethod[] = [\r\n {\r\n id: 'Point',\r\n name: 'pointWithBuffer_txt',\r\n bufferDistance: 10,\r\n },\r\n {\r\n id: 'LineString',\r\n name: 'lineWithBuffer_txt',\r\n bufferDistance: 10,\r\n },\r\n {\r\n id: 'Polygon',\r\n name: 'Polygon',\r\n },\r\n {\r\n id: 'Feature',\r\n name: 'chooseFeature_txt',\r\n bufferDistance: 10,\r\n },\r\n];\r\n\r\n@Component({\r\n selector: 'lib-isy-analyses-and-reports',\r\n templateUrl: './isy-analyses-and-reports.component.html',\r\n styleUrls: ['./isy-analyses-and-reports.component.scss'],\r\n})\r\nexport class IsyAnalysesAndReportsComponent implements OnInit, OnDestroy {\r\n destroy$: Subject = new Subject();\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription: Subscription = new Subscription();\r\n mapLibNgServiceMap: { activateDrawingManager: (arg0: any) => void };\r\n eventHandler: {\r\n continueEvent: (arg0: any) => void;\r\n pauseEvent: (arg0: any) => void;\r\n };\r\n eventTypes: {\r\n FeatureInfoStart: any;\r\n FeatureInfoEnd: any;\r\n FeatureSelected: any;\r\n FeatureDeselected: any;\r\n };\r\n chosenFeatureArr: any[] = [];\r\n chosenLayerId: number;\r\n epsg = 'EPSG:25833';\r\n\r\n methodsForAnalyseArea = ANALYSEMETHODS;\r\n selectedMethodForAnalyseArea: BehaviorSubject =\r\n new BehaviorSubject(this.methodsForAnalyseArea[0]);\r\n areaIsDrawn = false;\r\n drawIsActivated = false;\r\n deleteFeature = false;\r\n features: any;\r\n deleteFeatures = false;\r\n selectedFeatureId = undefined;\r\n showSpinner = true;\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private toasterService: IsyToasterService,\r\n private analysesAndReportsService: IsyAnalysesAndReportsService,\r\n private geoJsonUtilsService: GeoJsonUtilsService,\r\n private mapService: IsyMapService,\r\n private titleLabelPipe: TitleLabelPipe\r\n ) {\r\n this.mapLibNgServiceMap = this.mapLibNgService.map();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n }\r\n\r\n reportTypeResults$ = this.analysesAndReportsService.reportTypeResults$.pipe(\r\n map((reportType: any) => {\r\n if (reportType.length === 0) {\r\n this.toasterService.error('noReportType_toaster_msg');\r\n // * For killing the result from drawFeatureEndEmitter$\r\n this.mapEmitterService.emitDrawFeatureEnd(undefined);\r\n // * For killing the result from featureInfoEndEmitter$\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n // * For removing the drawing polygon\r\n // * this.mapLibNgService.map().reactivateDrawingManager(this.cleanupOptions);\r\n this.showSpinner = false;\r\n return false;\r\n } else {\r\n this.showSpinner = false;\r\n return true;\r\n }\r\n })\r\n );\r\n\r\n reports$ = this.mapEmitterService.drawFeatureEndEmitter$.pipe(\r\n takeUntil(this.destroy$),\r\n map((featureJson: any) => {\r\n if (featureJson) {\r\n this.analysesAndReportsService.setFeatureJson(featureJson);\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n this.features = featureJson;\r\n this.areaIsDrawn = true;\r\n this.drawIsActivated = false;\r\n }\r\n return Promise.resolve();\r\n }),\r\n publishReplay(1),\r\n refCount()\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.reportTypeResults$,\r\n this.selectedMethodForAnalyseArea]).pipe(\r\n map(([reportTypeResults, area]: [boolean, IAnalyseMethod] ) => ({\r\n reportTypeResults,\r\n area\r\n }))\r\n );\r\n\r\n clearFeatureArr$ = this.mapEmitterService.featureInfoStartEmitter$.pipe(\r\n takeUntil(this.destroy$),\r\n tap(() => (this.chosenFeatureArr = []))\r\n );\r\n\r\n pushChosenFeature$ = this.mapEmitterService.featureInfoEndEmitter$.pipe(\r\n takeUntil(this.destroy$),\r\n filter((layerResp: any) => layerResp !== undefined),\r\n filter((layerResp: any) => layerResp.name !== undefined),\r\n map((layerResp: any) => {\r\n layerResp.features?.forEach((feat: PropertyArea) => {\r\n layerResp.name = this.titleLabelPipe.transform([\r\n layerResp.featureInfoTitle,\r\n feat.geometryObject.properties,\r\n layerResp.featureInfoElement,\r\n ]);\r\n });\r\n this.chosenFeatureArr.push(layerResp);\r\n this.chosenLayerId = layerResp.id;\r\n return layerResp;\r\n }),\r\n debounceTime(200),\r\n map((layerResp: any) => this.pickFromRadioButtonList(layerResp))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.reports$.subscribe();\r\n this.clearFeatureArr$.subscribe();\r\n this.pushChosenFeature$.subscribe();\r\n this.mapLibNgService.map().deactivateHoverInfo();\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n this.epsg = this.mapService.getProjectConfig().config.project.epsg;\r\n this.selectMethodForAnalysis(this.selectedMethodForAnalyseArea.getValue());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.deleteDraw();\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n this.mapActionDialogService.hide(EToolId.ANALYSES_AND_REPORTS);\r\n // * Unpause events stopped when draw() was called\r\n this.unPause();\r\n this.mapLibNgService.map().activateHoverInfo();\r\n }\r\n\r\n private unPause(): void {\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoStart);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoEnd);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureSelected);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureDeselected);\r\n }\r\n\r\n updateBufferDistance(bufferDistance: string): void {\r\n const old = this.selectedMethodForAnalyseArea.getValue();\r\n if (old.bufferDistance !== parseInt(bufferDistance, 10)) {\r\n this.selectedMethodForAnalyseArea.next({\r\n ...old,\r\n bufferDistance: bufferDistance === '' ? 0 : parseInt(bufferDistance, 10),\r\n });\r\n this.selectMethodForAnalysis(\r\n this.selectedMethodForAnalyseArea.getValue()\r\n );\r\n }\r\n }\r\n\r\n draw(): void {\r\n this.drawIsActivated = true;\r\n this.mapLibNgService.map().deactivateHoverInfo();\r\n this.mapLibNgServiceMap.activateDrawingManager(\r\n this.createAdditionalOptions()\r\n );\r\n // * We want to stop other events\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureInfoStart);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureInfoEnd);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureSelected);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureDeselected);\r\n }\r\n\r\n deleteDraw(): void {\r\n this.features = undefined;\r\n this.deleteFeature = true;\r\n this.selectedMethodForAnalyseArea.next(this.methodsForAnalyseArea[0]);\r\n this.mapLibNgService\r\n .map()\r\n .reactivateDrawingManager(this.createAdditionalOptions());\r\n this.deleteFeature = false;\r\n this.areaIsDrawn = false;\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n }\r\n\r\n private createAdditionalOptions(): any {\r\n const area = this.selectedMethodForAnalyseArea.getValue();\r\n\r\n return {\r\n GeoJSON: this.features ? this.features : 'remove',\r\n deleteFeature: this.deleteFeature,\r\n mode: 'draw',\r\n type: area.id,\r\n buffer: area.bufferDistance,\r\n style: {\r\n fill: {\r\n color: 'rgba(0, 0, 160, 0.2)',\r\n },\r\n stroke: {\r\n color: 'green',\r\n width: 2,\r\n },\r\n },\r\n modify: false,\r\n showMeasurements: false,\r\n selectedFeatureId: this.selectedFeatureId\r\n ? this.selectedFeatureId\r\n : undefined,\r\n selectionActive: this.selectedFeatureId ? true : false,\r\n snapGuides: false,\r\n textValue: '',\r\n };\r\n }\r\n\r\n geoJsonify(coordinates: Position[][]): GeoJSON {\r\n const template: any | GeoJSON = {\r\n type: 'FeatureCollection',\r\n features: [\r\n {\r\n type: 'Feature',\r\n geometry: {\r\n type: 'Polygon',\r\n coordinates: [[[10.683531445194882, 60.79074320760564]]],\r\n },\r\n properties: {\r\n measurement: 'unknown m²',\r\n style: {\r\n fill: {\r\n color: 'rgba(200, 0, 0, 0.4)',\r\n },\r\n stroke: {\r\n color: 'red',\r\n width: 5,\r\n },\r\n },\r\n },\r\n id: 'd9cd216a-c6ee-0fb6-f625-74701e121fd8',\r\n },\r\n ],\r\n };\r\n\r\n const geoJson: any | GeoJSON = { ...template, id: getUniqueId(5) };\r\n geoJson.features.forEach((feature: any | Feature) => {\r\n feature.geometry.coordinates = coordinates;\r\n });\r\n const buffered = buffer(\r\n template.features[0],\r\n this.selectedMethodForAnalyseArea.getValue().bufferDistance,\r\n { units: 'meters' }\r\n );\r\n return buffered;\r\n }\r\n\r\n cleanUp(geoJson: any): GeoJSON {\r\n return simplify(geoJson);\r\n }\r\n\r\n selectAreaOnMap(): any {\r\n this.chosenFeatureArr = [];\r\n this.mapLibNgService.map().activateHoverInfo();\r\n }\r\n\r\n pickFromRadioButtonList(layerObject: any): void {\r\n this.chosenLayerId = layerObject.id;\r\n this.subscription.add(\r\n from(this.chosenFeatureArr)\r\n .pipe(\r\n filter((layer: any) => layer.id === this.chosenLayerId),\r\n map((layer) => layer.features),\r\n concatAll(),\r\n map((mapFeature: any) => {\r\n const transformCoordinate = (coord) => {\r\n return this.mapLibNgService\r\n .map()\r\n .transformToGeographic([coord[0], coord[1]], this.epsg);\r\n };\r\n const createBufferPolygon = (coords, type) => {\r\n // Create GeoJSON feature based on type\r\n let feature;\r\n const properties = {\r\n measurement: 'unknown m²',\r\n style: {\r\n fill: {\r\n color: 'rgba(200, 0, 0, 0.4)',\r\n },\r\n stroke: {\r\n color: 'red',\r\n width: 5,\r\n },\r\n },\r\n };\r\n if (type === 'Point') {\r\n feature = {\r\n type: 'Feature',\r\n properties: properties,\r\n geometry: {\r\n type: 'Point',\r\n coordinates: coords,\r\n },\r\n };\r\n } else if (type === 'LineString') {\r\n feature = {\r\n type: 'Feature',\r\n properties: properties,\r\n geometry: {\r\n type: 'LineString',\r\n coordinates: coords,\r\n },\r\n };\r\n }\r\n\r\n // Create buffer with n meter radius\r\n const buffered = buffer(\r\n feature,\r\n this.selectedMethodForAnalyseArea.getValue().bufferDistance,\r\n { units: 'meters' }\r\n );\r\n return buffered;\r\n };\r\n\r\n let geographicCoords;\r\n\r\n const geometry = mapFeature.geometryObject.geometry;\r\n const geometryType = geometry.type;\r\n switch (geometryType) {\r\n case 'Point':\r\n case 'LineString': {\r\n geographicCoords =\r\n geometryType === 'Point'\r\n ? transformCoordinate(geometry.coordinates)\r\n : geometry.coordinates.map(transformCoordinate);\r\n return createBufferPolygon(geographicCoords, geometryType);\r\n }\r\n case 'Polygon':\r\n // Transform each point in each linear ring of the polygon to geographic\r\n geographicCoords = geometry.coordinates.map((ring) =>\r\n ring.map(transformCoordinate)\r\n );\r\n return this.geoJsonify(geographicCoords); // this.cleanUp(this.geoJsonify(geographicCoords));\r\n default:\r\n // Not sure how to handle MultiLineStrings and MultiPolygons?\r\n throw new Error(`Invalid geometry type ${geometryType}`);\r\n }\r\n }),\r\n map((geoJson: GeoJSON) => JSON.stringify(geoJson)),\r\n map((geoJson: string) =>\r\n this.geoJsonUtilsService.uploadGeoJson(geoJson)\r\n )\r\n )\r\n .subscribe()\r\n );\r\n }\r\n\r\n selectMethodForAnalysis(methodForAnalysis: IAnalyseMethod): void {\r\n this.deleteDraw();\r\n this.selectedMethodForAnalyseArea.next(methodForAnalysis);\r\n switch (methodForAnalysis.id) {\r\n case 'Feature':\r\n this.unPause();\r\n this.selectAreaOnMap();\r\n break;\r\n\r\n default:\r\n this.draw();\r\n break;\r\n }\r\n }\r\n}\r\n","\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n \r\n {{methodForAnalyseArea.name| translate}}\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{chosenFeature.name}}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n IsyMapService, IsyMapEmitterService\r\n} from '@isygis/isy-map';\r\nimport {\r\n combineLatest, BehaviorSubject,\r\n ReplaySubject\r\n} from 'rxjs';\r\nimport {\r\n catchError, switchMap, map, refCount,\r\n multicast\r\n} from 'rxjs/operators';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { IConfigJson } from '@isygis/isymap-config';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport {\r\n IconDefinition,\r\n} from '@fortawesome/fontawesome-svg-core';\r\n\r\nexport interface IReportType {\r\n Id: string;\r\n Title: string;\r\n ProcessingType: string;\r\n Category: string;\r\n Selected: boolean;\r\n icon: IconDefinition;\r\n GetMapUrl: string;\r\n Layernames: string[];\r\n showLegend: boolean;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyAnalysesAndReportsService {\r\n featureJson;\r\n project;\r\n // isytoken;\r\n private config$ = this.mapEmitterService.configLoadEmitter$;\r\n projectConfig$ = this.mapService.projectConfig$;\r\n private projectName$ = this.mapService.projectName$;\r\n // private isytoken$ = this.commonService.loginToken$;\r\n private knrAction = new BehaviorSubject(undefined);\r\n private knr$ = this.knrAction.asObservable();\r\n constructor(\r\n private mapService: IsyMapService,\r\n private httpClient: HttpClient,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private sessionStorageService: SessionStorageService\r\n ) {}\r\n\r\n reportTypeResults$ = combineLatest([\r\n this.config$,\r\n this.projectConfig$,\r\n this.projectName$,\r\n this.knr$,\r\n ]).pipe(\r\n switchMap(\r\n ([config, projectConfig, projectName, knr]: [\r\n IConfigJson,\r\n IProjectConfig,\r\n string,\r\n string\r\n ]) => {\r\n this.project = projectConfig.config.project;\r\n const headers = {\r\n 'Content-type': 'application/json',\r\n };\r\n const body = {\r\n instance: config.instance,\r\n project: projectName || config.defaultproject,\r\n knr: knr || this.project.defaultkommune,\r\n isytoken: this.sessionStorageService.retrieve(ELogin.TOKEN),\r\n };\r\n console.log('ReportType body:', body);\r\n // return this.httpClient.post(this.project.isyexternalapi + '/WebInnsyn/allreporttypes', body, {headers}).pipe(\r\n return this.httpClient\r\n .post(this.project.isyexternalapi + '/WebInnsyn/reporttypes', body, {\r\n headers,\r\n })\r\n .pipe(\r\n map((result: any) => {\r\n if (result && result.reporttypes) {\r\n // return result.reporttypes.filter(i => i.ProcessingType === 'GetKeysAndAppend');\r\n return result.reporttypes;\r\n }\r\n return new Promise((resolve) => resolve([]));\r\n })\r\n );\r\n }\r\n ),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount(),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n setFeatureJson(featureJson): void {\r\n this.featureJson = featureJson;\r\n }\r\n\r\n getFeatureJson(): any {\r\n return this.featureJson;\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n}\r\n","import {\r\n Component,\r\n OnDestroy,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport {\r\n catchError, mergeMap,\r\n map, multicast,\r\n refCount, concatMap\r\n} from 'rxjs/operators';\r\nimport {\r\n IsyMapService,\r\n MapLibNgService,\r\n IsyMapEmitterService,\r\n} from '@isygis/isy-map';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport {\r\n IProjectConfig, IProject\r\n} from '@isygis/isymap-config';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n combineLatest,\r\n Subscription,\r\n of,\r\n BehaviorSubject,\r\n ReplaySubject,\r\n Observable,\r\n} from 'rxjs';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IReportType, IsyAnalysesAndReportsService } from '../isy-analyses-and-reports.service';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\n\r\nimport {\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger,\r\n} from '@angular/animations';\r\nimport { fadeIn, fadeOut } from '@isygis/isy-animations';\r\n\r\n@Component({\r\n selector: 'lib-isy-analyses-reports-list',\r\n templateUrl: './isy-analyses-reports-list.component.html',\r\n styleUrls: ['./isy-analyses-reports-list.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n // pageAnimation\r\n trigger('fadeOut', fadeOut()),\r\n trigger('fadeIn', fadeIn(':enter')),\r\n ],\r\n})\r\nexport class IsyAnalysReportListComponent implements OnInit, OnDestroy {\r\n @Input() useDropdown = false;\r\n @Input() scrollHeighExternal = false;\r\n @Input() showWmsLayer = false;\r\n @Input() showPdfReports = true;\r\n @Input() showExcelReports = true;\r\n @Input() sendInvoice = false;\r\n @Input() maxHeight = '715px';\r\n @Input() disableDownload = false;\r\n @Input() tokenNeeded = false;\r\n @Output() invoiceEmitter = new EventEmitter();\r\n mapLibNgServiceMap;\r\n eventHandler;\r\n eventTypes;\r\n allReportTypes: IReportType[] = [];\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n projectConfig: IProjectConfig;\r\n ReportWithKeysAction = new BehaviorSubject(undefined);\r\n ReportAction = new BehaviorSubject(undefined);\r\n processReportAction = new BehaviorSubject(false);\r\n selectedReportCountAction = new BehaviorSubject(0);\r\n projectConfig$ = this.mapService.projectConfig$;\r\n isytoken;\r\n subscription: Subscription = new Subscription();\r\n project: IProject | undefined = undefined;\r\n countSelectedReports = 0;\r\n firstSelectedItem = '';\r\n showLegend = false;\r\n featureExist = false;\r\n reportTitle = '';\r\n reportFailExist = false;\r\n tokenObjectString = '';\r\n\r\n constructor(\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapService: IsyMapService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private httpClient: HttpClient,\r\n private commonService: IsyCommonService,\r\n private analysesAndReportsService: IsyAnalysesAndReportsService,\r\n private toasterService: IsyToasterService,\r\n private sessionStorageService: SessionStorageService\r\n ) {\r\n this.mapLibNgServiceMap = this.mapLibNgService.map();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n }\r\n\r\n reportTypeResults$ = combineLatest([\r\n this.analysesAndReportsService.reportTypeResults$,\r\n ]).pipe(\r\n map(([reportTypes]: [any]) => {\r\n if (reportTypes) {\r\n reportTypes.forEach((r) => {\r\n const report = r;\r\n report['Selected'] = false;\r\n report['showLegend'] = false;\r\n this.findIconTittle(report);\r\n if (report.Title.includes('DOK-Analyse')) {\r\n report.Title = report.Title.replace('DOK-Analyse - ', '');\r\n }\r\n if (report.ProcessingType === 'SimpleGet' && this.showPdfReports) {\r\n this.allReportTypes.push(report);\r\n }\r\n if (\r\n report.ProcessingType === 'GetKeysAndAppend' &&\r\n this.showExcelReports\r\n ) {\r\n this.allReportTypes.push(report);\r\n }\r\n // this.allReportTypes.push(report);\r\n });\r\n // Sorting reports alphabetic\r\n return this.allReportTypes.sort((a, b) => {\r\n const textA = a.Title.toUpperCase();\r\n const textB = b.Title.toUpperCase();\r\n return textA < textB ? -1 : textA > textB ? 1 : 0;\r\n });\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n }),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount()\r\n );\r\n\r\n dokanalysepdf$ = combineLatest([this.projectConfig$, this.ReportAction]).pipe(\r\n concatMap(([projectConfig, ReportAction]: [IProjectConfig, any]) => {\r\n if (ReportAction && ReportAction.processingType === 'SimpleGet') {\r\n this.reportTitle = ReportAction.reportTitle;\r\n this.processReportAction.next(true);\r\n this.project = projectConfig.config.project;\r\n let features = JSON.parse(\r\n this.analysesAndReportsService.getFeatureJson()\r\n );\r\n const headers = {\r\n 'Content-type': 'application/json',\r\n Accept: 'application/pdf',\r\n };\r\n // for transforming geographic coordinates\r\n features =\r\n this.mapLibNgServiceMap.transformGeoJsonFeaturesFromGeographic(\r\n features,\r\n 'EPSG:25833'\r\n );\r\n const coords = features.features[0].geometry.coordinates;\r\n const Coordinates = coords.join().split(',');\r\n const body = {\r\n Coordinates,\r\n Isytoken: this.isytoken,\r\n ReportId: ReportAction.reportId,\r\n SRS: 'EPSG:25833',\r\n ExcludeDekByggPlan: !!this.project.dokExcludeDekByggPlan,\r\n Filtertype: 'Polygon',\r\n };\r\n // console.log('dokanalysepdf body', JSON.stringify(body));\r\n // return this.httpClient.post('https://kart5.nois.no/trondheim/api/report/getkeys', body, {headers}).pipe(\r\n return this.httpClient\r\n .post(this.project.gisdokapiurl + '/report/dokanalysepdf', body, {\r\n headers,\r\n responseType: 'blob',\r\n })\r\n .pipe(\r\n map((result: any) => {\r\n if (result) {\r\n // console.log('result:', result);\r\n // console.log('ReportAction:', ReportAction);\r\n const newBlob = new Blob([result], { type: 'application/pdf' });\r\n const nav = window.navigator as any;\r\n if (nav && nav.msSaveOrOpenBlob) {\r\n nav.msSaveOrOpenBlob(newBlob);\r\n this.toasterService.success(\r\n ReportAction.reportTitle,\r\n 'fileDownloadSuccess_toaster_msg'\r\n );\r\n return;\r\n }\r\n const data = window.URL.createObjectURL(newBlob);\r\n const link = document.createElement('a');\r\n link.href = data;\r\n link.download = ReportAction.reportTitle + '.pdf';\r\n link.dispatchEvent(\r\n new MouseEvent('click', {\r\n bubbles: true,\r\n cancelable: true,\r\n view: window,\r\n })\r\n );\r\n setTimeout(() => {\r\n window.URL.revokeObjectURL(data);\r\n link.remove();\r\n }, 100);\r\n this.toasterService.success(\r\n ReportAction.reportTitle,\r\n 'fileDownloadSuccess_toaster_msg'\r\n );\r\n this.countSelectedReports--;\r\n if (this.countSelectedReports === 0) {\r\n this.processReportAction.next(false);\r\n // If all repports downloaded successfully so send invoice emitter\r\n if (!this.reportFailExist && this.sendInvoice) {\r\n this.invoiceEmitter.emit(true);\r\n // console.log('SendInvoiceEmitter');\r\n }\r\n }\r\n return result;\r\n }\r\n this.toasterService.error(\r\n this.reportTitle,\r\n 'fileDownloadError_toaster_msg'\r\n );\r\n this.processReportAction.next(false);\r\n this.reportFailExist = true;\r\n return Promise.resolve();\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n }),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount()\r\n );\r\n\r\n getKeys$ = combineLatest([\r\n this.projectConfig$,\r\n this.ReportWithKeysAction,\r\n ]).pipe(\r\n concatMap(\r\n ([projectConfig, ReportWithKeysAction]: [IProjectConfig, any]) => {\r\n if (\r\n ReportWithKeysAction &&\r\n ReportWithKeysAction.processingType === 'GetKeysAndAppend'\r\n ) {\r\n this.reportTitle = ReportWithKeysAction.reportTitle;\r\n this.processReportAction.next(true);\r\n this.project = projectConfig.config.project;\r\n const features = JSON.parse(\r\n this.analysesAndReportsService.getFeatureJson()\r\n );\r\n const headers = {\r\n 'Content-type': 'application/json',\r\n };\r\n const coords = features.features[0].geometry.coordinates;\r\n const Coordinates = coords.join().split(',');\r\n const getKeysbody = {\r\n Coordinates,\r\n SRS: 'EPSG:4326',\r\n Isytoken: this.isytoken,\r\n ReportId: ReportWithKeysAction.reportId,\r\n Filtertype: 'Polygon',\r\n };\r\n // console.log('GetKeys body', JSON.stringify(getKeysbody));\r\n // return this.httpClient.post('https://kart5.nois.no/trondheim/api/report/getkeys', body, {headers}).pipe(\r\n return this.httpClient\r\n .post(this.project.gisdokapiurl + '/report/getkeys', getKeysbody, {\r\n headers,\r\n })\r\n .pipe(\r\n mergeMap((result: any) => {\r\n if (result) {\r\n // console.log('Keys:', result);\r\n // return {result, reportId: ReportWithKeysAction.reportId};\r\n const splitInGroupsOf = (lst, n) =>\r\n [...Array(Math.ceil(lst.length / n)).keys()].map((i) =>\r\n lst.slice(i * n, i * n + n)\r\n );\r\n\r\n const appendBody = (keys) => {\r\n return {\r\n FileId: result.FileId,\r\n Isytoken: this.isytoken,\r\n ReportId: ReportWithKeysAction.reportId,\r\n Keys: keys,\r\n };\r\n };\r\n\r\n if (result.Keys && result.Keys.length > 0) {\r\n const keyGroups = splitInGroupsOf(result.Keys, 100);\r\n\r\n return keyGroups\r\n .reduce(\r\n (\r\n acc: Observable,\r\n keyGroup: number[]\r\n ): Observable =>\r\n acc.pipe(\r\n concatMap(() =>\r\n this.httpClient.post(\r\n this.project.gisdokapiurl + '/report/append',\r\n appendBody(keyGroup),\r\n { headers }\r\n )\r\n )\r\n ),\r\n of({})\r\n )\r\n .pipe(map(() => this.getReportForKeys(result.FileId)));\r\n }\r\n }\r\n this.toasterService.error(\r\n ReportWithKeysAction.reportTitle,\r\n 'noReportType_toaster_msg'\r\n );\r\n this.countSelectedReports--;\r\n if (this.countSelectedReports === 0) {\r\n this.processReportAction.next(false);\r\n }\r\n this.reportFailExist = true;\r\n return Promise.resolve();\r\n }),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n } else {\r\n return Promise.resolve();\r\n }\r\n }\r\n ),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount(),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.reportTypeResults$,\r\n this.processReportAction,\r\n this.selectedReportCountAction,\r\n this.projectConfig$,\r\n ]).pipe(\r\n map(\r\n ([\r\n reportTypeResults,\r\n processReportAction,\r\n selectedReportCountAction,\r\n projectConfig,\r\n ]: [any, any, any, any]) => ({\r\n reportTypeResults,\r\n processReportAction: processReportAction ? processReportAction : false,\r\n selectedReportCountAction,\r\n projectConfig,\r\n })\r\n )\r\n // , tap(result => console.log('reportTypeResults: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n this.subscription.add(\r\n this.mapEmitterService.drawFeatureEndEmitter$.subscribe((featureJson) => {\r\n if (featureJson) {\r\n this.featureExist = true;\r\n } else {\r\n this.featureExist = false;\r\n }\r\n })\r\n );\r\n // this.analysesAndReportsService.getFeatureJson() ? this.featureExist = true : this.featureExist = false;\r\n this.commonService.hideSearchBar(true);\r\n this.commonService.hideInfoPanel(true);\r\n if (this.tokenNeeded) {\r\n this.tokenObjectString =\r\n '&isytoken=' + this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n console.log('tokenObjectString', this.tokenObjectString);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.commonService.hideSearchBar(false);\r\n this.commonService.hideInfoPanel(false);\r\n this.processReportAction.next(false);\r\n // wms layers -> hide from map and remove from config\r\n if (this.showWmsLayer) {\r\n this.allReportTypes.forEach((r) => {\r\n if (r.Layernames.length > 0) {\r\n r.Layernames.forEach((l) => this.mapService.hideTemporaryWmsLayer(l));\r\n r.Layernames.forEach((l) =>\r\n this.mapService.removeTemporaryWmsLayer(l)\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n showReport(reportTypeResults: IReportType[]): void {\r\n // if (this.sendInvoice) {\r\n // this.invoiceEmitter.emit(true);\r\n // }\r\n this.reportFailExist = false;\r\n this.subscription.unsubscribe();\r\n this.subscription = new Subscription();\r\n this.ReportWithKeysAction.next(undefined);\r\n this.ReportAction.next(undefined);\r\n this.subscription.add(this.getKeys$.subscribe());\r\n // this.subscription.add( this.append$.subscribe());\r\n this.subscription.add(this.dokanalysepdf$.subscribe());\r\n reportTypeResults.forEach((r) =>\r\n r.Selected ? this.countSelectedReports++ : this.countSelectedReports\r\n );\r\n reportTypeResults.forEach((r) => {\r\n if (r.Selected) {\r\n this.processReportAction.next(true);\r\n if (r.ProcessingType === 'GetKeysAndAppend') {\r\n this.ReportWithKeysAction.next({\r\n processingType: 'GetKeysAndAppend',\r\n reportId: r.Id,\r\n reportTitle: r.Title,\r\n icon: r.icon,\r\n });\r\n }\r\n if (r.ProcessingType === 'SimpleGet') {\r\n this.processReportAction.next(true);\r\n this.ReportAction.next({\r\n processingType: 'SimpleGet',\r\n reportId: r.Id,\r\n reportTitle: r.Title,\r\n icon: r.icon,\r\n });\r\n }\r\n }\r\n });\r\n // this.processReportAction.next(false);\r\n }\r\n\r\n getReportForKeys(fileId): void {\r\n if (fileId) {\r\n const url = this.project.gisdokapiurl + '/report/pickup?fileid=' + fileId;\r\n // use HTML5 a[download] attribute to specify filename\r\n const a = document.createElement('a');\r\n // safari doesn't support this yet\r\n if (typeof a.download === 'undefined') {\r\n // window.location = url;\r\n } else {\r\n a.href = url;\r\n a.download = fileId;\r\n document.body.appendChild(a);\r\n a.click();\r\n this.countSelectedReports--;\r\n if (this.countSelectedReports === 0) {\r\n this.processReportAction.next(false);\r\n }\r\n // If all repports downloaded successfully so send invoice emitter\r\n if (!this.reportFailExist && this.sendInvoice) {\r\n this.invoiceEmitter.emit(true);\r\n }\r\n this.toasterService.success(\r\n this.reportTitle,\r\n 'fileDownloadSuccess_toaster_msg'\r\n );\r\n }\r\n }\r\n }\r\n\r\n findIconTittle(report: IReportType): void {\r\n if (report) {\r\n switch (report.Title) {\r\n case 'Eiendomsinfo': {\r\n report.icon = fontAwesomeIcons.faHome;\r\n break;\r\n }\r\n case 'Bygningsinformasjon': {\r\n report.icon = fontAwesomeIcons.faDraftingCompass;\r\n break;\r\n }\r\n case 'Eiere': {\r\n report.icon = fontAwesomeIcons.faHouseUser;\r\n break;\r\n }\r\n case 'Befolkningsdata': {\r\n report.icon = fontAwesomeIcons.faUsers;\r\n report.Title = 'Befolkning';\r\n break;\r\n }\r\n case 'DOK-Analyse - Samfunnssikkerhet og energi': {\r\n report.icon = fontAwesomeIcons.faUserLock;\r\n break;\r\n }\r\n case 'DOK-Analyse - Landbruk, fiskeri': {\r\n report.icon = fontAwesomeIcons.faTractor;\r\n break;\r\n }\r\n case 'DOK-Analyse - Natur, geologi og forurensning': {\r\n report.icon = fontAwesomeIcons.faTree;\r\n break;\r\n }\r\n case 'DOK-Analyse - Kulturminner': {\r\n report.icon = fontAwesomeIcons.faUniversity;\r\n break;\r\n }\r\n case 'DOK-Analyse - Friluftsliv': {\r\n report.icon = fontAwesomeIcons.faHiking;\r\n break;\r\n }\r\n case 'DOK-Analyse - Samlet': {\r\n report.icon = fontAwesomeIcons.faCalendarCheck;\r\n report.Title = 'Full rapport';\r\n break;\r\n }\r\n default: {\r\n report.icon = fontAwesomeIcons.faBookReader;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private handleErrorWithPromise(err): Promise {\r\n this.toasterService.error(\r\n this.reportTitle,\r\n 'fileDownloadError_toaster_msg'\r\n );\r\n this.reportFailExist = true;\r\n // console.log('Feil**');\r\n this.countSelectedReports--;\r\n if (this.countSelectedReports === 0) {\r\n this.processReportAction.next(false);\r\n }\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return new Promise((resolve) => resolve({}));\r\n }\r\n\r\n toggleReport(report: IReportType): void {\r\n report.Selected = !report.Selected;\r\n // for show/hide wms layers in map\r\n if (this.showWmsLayer) {\r\n if (report.Selected) {\r\n report.Layernames.forEach((l) =>\r\n this.mapService.showTemporaryWmsLayer(report.GetMapUrl, l)\r\n );\r\n } else {\r\n report.Layernames.forEach((l) =>\r\n this.mapService.hideTemporaryWmsLayer(l)\r\n );\r\n }\r\n }\r\n let count = 0;\r\n this.allReportTypes.forEach((r) => {\r\n if (r.Selected) {\r\n count++;\r\n // this.firstSelectedItem = r.Title;\r\n }\r\n });\r\n this.selectedReportCountAction.next(count);\r\n }\r\n\r\n toggleShowLegend(reportType): void {\r\n reportType.showLegend = !reportType.showLegend;\r\n }\r\n}\r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'selectReportType' | translate}}
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{reportType.Title}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { IsyMapService, MapLibNgService } from '@isygis/isy-map';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyIframeComponent } from '@isygis/isy-utils';\r\nimport { IConfigJson } from '@isygis/isymap-config';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { EToolId } from '@isygis/isy-configs';\r\n\r\n@Component({\r\n selector: 'lib-isy-bbox',\r\n templateUrl: './isy-bbox.component.html',\r\n styleUrls: ['./isy-bbox.component.scss'],\r\n})\r\nexport class IsyBboxComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n maplibMap;\r\n eventHandler;\r\n eventTypes;\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private bladeService: IsyBladeService,\r\n private mapService: IsyMapService,\r\n private mapActionDialogService: IsyMapActionDialogService\r\n ) {\r\n this.maplibMap = this.mapLibNgService.map();\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n }\r\n\r\n ngOnInit() {\r\n this.maplibMap.activateDrawingManager(this.createAdditionalOptions());\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureInfoStart);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureInfoEnd);\r\n this.eventHandler.registerSingleEvent(\r\n this.eventTypes.DrawFeatureEnd,\r\n 'DrawFeatureEnd',\r\n this.bboxCreated.bind(this)\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n const cleanupOptions = {\r\n GeoJSON: 'remove',\r\n deleteFeature: true,\r\n };\r\n this.maplibMap.reactivateDrawingManager(cleanupOptions);\r\n\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoStart);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoEnd);\r\n this.maplibMap.deactivateDrawingManager();\r\n }\r\n\r\n createAdditionalOptions() {\r\n return {\r\n geometryFunction: 'Box',\r\n mode: 'draw',\r\n type: 'Circle',\r\n style: {\r\n fill: {\r\n color: 'rgba(0, 0, 160, 0.2)',\r\n },\r\n stroke: {\r\n color: 'rgba(0, 160, 0, 0.8)',\r\n width: 2,\r\n },\r\n },\r\n };\r\n }\r\n hideMapActionDialog() {\r\n this.mapActionDialogService.hide(EToolId.BBOX);\r\n }\r\n\r\n bboxCreated(polygonFeature) {\r\n if (!polygonFeature) {\r\n return;\r\n }\r\n\r\n if (polygonFeature) {\r\n polygonFeature = JSON.parse(polygonFeature);\r\n }\r\n if (\r\n polygonFeature &&\r\n polygonFeature.features &&\r\n polygonFeature.features[0] &&\r\n polygonFeature.features[0].geometry\r\n ) {\r\n const coords = polygonFeature.features[0].geometry.coordinates;\r\n if (coords.length === 1 && coords[0].length >= 5) {\r\n // Square, find minX,maxX,minY,maxY\r\n const square = coords[0];\r\n let minX = square[0][0];\r\n let minY = square[0][1];\r\n let maxX = square[0][0];\r\n let maxY = square[0][1];\r\n for (let i = 1; i < square.length; i++) {\r\n if (square[i][0] < minX) {\r\n minX = square[i][0];\r\n }\r\n if (square[i][0] > maxX) {\r\n maxX = square[i][0];\r\n }\r\n if (square[i][1] < minY) {\r\n minY = square[i][1];\r\n }\r\n if (square[i][1] > maxY) {\r\n maxY = square[i][1];\r\n }\r\n }\r\n const bbox = `@${this._round(minX)},${this._round(minY)}@${this._round(\r\n maxX\r\n )},${this._round(maxY)}`;\r\n const config: IConfigJson = this.mapService.getConfig();\r\n\r\n const url = config.externalServices.jobtech + bbox;\r\n this.openBlade(url);\r\n this.mapActionDialogService.hide(EToolId.BBOX);\r\n }\r\n } else {\r\n console.error('No valid bbox created, could not continue!');\r\n }\r\n setTimeout(() => {\r\n this.maplibMap.deactivateDrawingManager();\r\n }, 100);\r\n }\r\n _round(num: number) {\r\n return Math.round((num + Number.EPSILON) * 100000) / 100000;\r\n }\r\n\r\n openBlade(url: string): void {\r\n console.log(url);\r\n this.bladeService.showBladeWithComponent(\r\n 'JobTech',\r\n IsyIframeComponent,\r\n { url: url },\r\n { position: 'top', fullScreen: true, offset: 100, showBladeOverlay: true }\r\n );\r\n }\r\n}\r\n","\r\n","export enum EDrawPanelId {\r\n POINT = 'pointTab',\r\n LINE = 'lineTab',\r\n POLYGON = 'polygonTab',\r\n TEXT = 'textTab',\r\n}\r\n","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { FileSaverService } from 'ngx-filesaver';\r\nimport {\r\n trigger,\r\n style,\r\n transition,\r\n animate,\r\n query,\r\n stagger,\r\n} from '@angular/animations';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { MapLibNgService } from '@isygis/isy-map';\r\nimport { IsyDrawService } from './isy-draw.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { EDrawPanelId } from './draw-panel.model';\r\nimport { FmeEpsgCode, FormatConvertService, GisFormat } from '@isygis/isy-utils';\r\n\r\n// ToDo: ColorPicker: https://github.com/dancornilov/color-picker/tree/master/src/app/color-picker\r\n\r\n@Component({\r\n selector: 'lib-isy-draw',\r\n templateUrl: './isy-draw.component.html',\r\n styleUrls: ['./isy-draw.component.scss'],\r\n animations: [\r\n trigger('pageAnimation', [\r\n transition(':enter', [\r\n query(\r\n '.page-animations > div',\r\n [\r\n style({ transform: 'translateY(100px)', opacity: 0 }),\r\n stagger(50, [\r\n animate(\r\n '500ms ease-out',\r\n style({ transform: 'none', opacity: '*' })\r\n ),\r\n ]),\r\n ],\r\n { optional: true }\r\n ),\r\n ]),\r\n ]),\r\n ],\r\n})\r\nexport class IsyDrawComponent implements OnInit, OnDestroy {\r\n private features;\r\n EDrawPanelId = EDrawPanelId;\r\n maplibMap;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n drawPanels: EDrawPanelId[] = [\r\n EDrawPanelId.POINT,\r\n EDrawPanelId.LINE,\r\n EDrawPanelId.POLYGON,\r\n EDrawPanelId.TEXT,\r\n ];\r\n\r\n activeDrawPanelIndex: EDrawPanelId = EDrawPanelId.POINT;\r\n drawTextValue = '';\r\n selectedFeatureId;\r\n\r\n deleteFeature = false;\r\n showMeasurements = false;\r\n snapGuides = false;\r\n modify = false;\r\n\r\n pointType = 'circle';\r\n red = 0;\r\n blue = 0;\r\n green = 0;\r\n fillRed = 0;\r\n fillBlue = 0;\r\n fillGreen = 0;\r\n color: string;\r\n fillColor: string;\r\n strokeColor: string;\r\n image;\r\n regularshape;\r\n\r\n opacityValue = 75;\r\n\r\n linewidthValue = 2;\r\n\r\n pointsizeValue = 5;\r\n\r\n textsizeValue = 16;\r\n\r\n linedashValue;\r\n\r\n eventHandler;\r\n eventTypes;\r\n subscriptions: Subscription[] = [];\r\n\r\n quietToaster = false;\r\n\r\n formatOptions = Object.values(GisFormat);\r\n\r\n selectedFormat = GisFormat.GEOJSON;\r\n\r\n private hasData;\r\n\r\n @Input() set data(value: any) {\r\n this.activeDrawPanelIndex =\r\n value.drawPanels && value.drawPanels.length > 0\r\n ? value.drawPanels[0]\r\n : EDrawPanelId.POINT;\r\n this.hasData = value;\r\n }\r\n\r\n get data(): any {\r\n return this.hasData;\r\n }\r\n\r\n constructor(\r\n private fileSaver: FileSaverService,\r\n private toaster: IsyToasterService,\r\n private maplibng: MapLibNgService,\r\n private isyDrawService: IsyDrawService,\r\n private convertService: FormatConvertService,\r\n ) {\r\n this.maplibMap = this.maplibng.map();\r\n this.eventHandler = this.maplibng.eventHandler();\r\n this.eventTypes = this.maplibng.eventTypes();\r\n this.color = `rgba(${this.red},${this.green},${this.blue},1)`;\r\n this.fillColor = `rgba(${this.red},${this.green},${this.blue},${\r\n this.opacityValue / 100\r\n })`;\r\n this.image = {\r\n radius: 7,\r\n fill: {\r\n color: this.color,\r\n },\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.push(\r\n this.isyDrawService.features$.subscribe((features) => {\r\n this.features = features;\r\n })\r\n );\r\n this.subscriptions.push(\r\n this.isyDrawService.deleteObjects$.subscribe(() =>\r\n this.deleteObjects(true)\r\n )\r\n );\r\n this.subscriptions.push(\r\n this.isyDrawService.deleteObject$.subscribe((id) => {\r\n if (id) {\r\n this.deleteObjectById(id);\r\n }\r\n })\r\n );\r\n this.subscriptions.push(\r\n this.isyDrawService.quietToaster$.subscribe(\r\n (value) => (this.quietToaster = value)\r\n )\r\n );\r\n this.maplibMap.activateDrawingManager(this.createAdditionalOptions());\r\n this.registerEvents();\r\n this.maplibMap.deactivateHoverInfo();\r\n if (this.data?.drawPanels) {\r\n this.drawPanels = this.data.drawPanels;\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n this.maplibMap.deactivateDrawingManager();\r\n this.isyDrawService.removeObjectById(undefined);\r\n this.unRegisterEvents();\r\n this.maplibMap.activateHoverInfo();\r\n }\r\n\r\n registerEvents(): void {\r\n this.eventHandler.registerEvent(\r\n this.eventTypes.DrawFeatureSelect,\r\n 'IsyDrawComponent',\r\n this.drawFeatureSelect.bind(this)\r\n );\r\n this.eventHandler.registerEvent(\r\n this.eventTypes.DrawFeatureEnd,\r\n 'IsyDrawComponent',\r\n this.drawFeatureEnd.bind(this)\r\n );\r\n }\r\n\r\n unRegisterEvents(): void {\r\n this.eventHandler.unRegisterEvent(\r\n this.eventTypes.DrawFeatureSelect,\r\n 'IsyDrawComponent',\r\n this.drawFeatureSelect.bind(this)\r\n );\r\n this.eventHandler.unRegisterEvent(\r\n this.eventTypes.DrawFeatureEnd,\r\n 'IsyDrawComponent',\r\n this.drawFeatureEnd.bind(this)\r\n );\r\n }\r\n\r\n drawFeatureSelect(value): void {\r\n if (value?.style?.text) {\r\n // Text objects also has value type Point, so need to differentiate\r\n value.type = 'Text';\r\n }\r\n this.selectedFeatureId = value.id;\r\n this.linewidthValue =\r\n value.style?.stroke?.width || value.style?.text?.stroke?.width;\r\n const strokeRgb = this._getRGBfromStyle(\r\n value.style?.stroke?.color || value.style?.text?.stroke?.color\r\n );\r\n const fillRgb = this._getRGBfromStyle(\r\n value.style?.fill?.color || value.style?.text?.fill?.color\r\n );\r\n this.red = strokeRgb.red;\r\n this.green = strokeRgb.green;\r\n this.blue = strokeRgb.blue;\r\n this.opacityValue = strokeRgb.opacity;\r\n this.fillRed = fillRgb.red;\r\n this.fillGreen = fillRgb.green;\r\n this.fillBlue = fillRgb.blue;\r\n this.color = `rgba(${this.red},${this.green},${this.blue},1)`;\r\n this.fillColor = `rgba(${this.fillRed},${this.fillGreen},${this.fillBlue},${\r\n this.opacityValue / 100\r\n })`;\r\n for (const drawPanelId of this.drawPanels) {\r\n if (this.getGeometryType(drawPanelId) !== value.type) {\r\n continue;\r\n }\r\n this.activeDrawPanelIndex = drawPanelId;\r\n }\r\n } \r\n\r\n private _getRGBfromStyle(rgb: string): RGBA | null {\r\n if (!rgb) {\r\n return null;\r\n }\r\n rgb = rgb.substr(rgb.indexOf('(') + 1);\r\n rgb = rgb.substr(0, rgb.indexOf(')'));\r\n const values = rgb.split(',');\r\n return {\r\n red: parseInt(values[0], 10),\r\n green: parseInt(values[1], 10),\r\n blue: parseInt(values[2], 10),\r\n opacity: values[3] ? Math.round(100 * parseFloat(values[3])) : 100,\r\n };\r\n }\r\n\r\n private getGeometryType(panelId: EDrawPanelId): string {\r\n switch (panelId) {\r\n case EDrawPanelId.POINT:\r\n return 'Point';\r\n case EDrawPanelId.LINE:\r\n return 'LineString';\r\n case EDrawPanelId.POLYGON:\r\n return 'Polygon';\r\n case EDrawPanelId.TEXT:\r\n return 'Text';\r\n }\r\n }\r\n\r\n private drawFeatureEnd(value): void {\r\n this.isyDrawService.setFeatures(value);\r\n }\r\n\r\n reactivateTool(): void {\r\n this.maplibMap.reactivateDrawingManager(this.createAdditionalOptions());\r\n }\r\n\r\n createAdditionalOptions(): any {\r\n if (this.regularshape) {\r\n this.regularshape.fill = {\r\n color: this.color,\r\n };\r\n this.regularshape.stroke = {\r\n color: this.color,\r\n };\r\n }\r\n if (this.image) {\r\n this.image.fill = {\r\n color: this.color,\r\n };\r\n }\r\n return {\r\n GeoJSON: this.features ? this.features : 'remove',\r\n deleteFeature: this.deleteFeature,\r\n type: this.getGeometryType(this.activeDrawPanelIndex), //this.geometryTypes[this.activeDrawPanelIndex],\r\n style: {\r\n fill: {\r\n color: this.fillColor,\r\n },\r\n stroke: {\r\n color: this.color,\r\n lineDash: this.linedashValue,\r\n width: this.linewidthValue,\r\n },\r\n image: this.image,\r\n regularshape: this.regularshape,\r\n text:\r\n this.getGeometryType(this.activeDrawPanelIndex) === 'Text'\r\n ? this.drawTextValue\r\n : '',\r\n textSize: this.textsizeValue,\r\n },\r\n snapGuides: this.snapGuides,\r\n transformObj: false, // _transformObj,\r\n mode: this.modify ? 'modify' : 'draw', // _mode,\r\n selectedFeatureId: this.selectedFeatureId\r\n ? this.selectedFeatureId\r\n : undefined,\r\n selectionActive: this.selectedFeatureId ? true : false, // _selectedFeature === undefined ? false : true,\r\n showMeasurements: this.showMeasurements,\r\n textValue:\r\n this.getGeometryType(this.activeDrawPanelIndex) === 'Text'\r\n ? this.drawTextValue\r\n : '',\r\n modify: this.modify,\r\n };\r\n }\r\n\r\n toggleDrawPanel(panelId: EDrawPanelId): void {\r\n this.activeDrawPanelIndex = panelId;\r\n this.selectedFeatureId = undefined;\r\n this.reactivateTool();\r\n }\r\n\r\n selectFormat(format: GisFormat) {\r\n this.selectedFormat = format;\r\n }\r\n\r\n uploadFiles(files: File[], format: GisFormat, epsg = FmeEpsgCode.INFER): void {\r\n if (files.length > 0) { \r\n this.toaster.info('uploadingInProgress_toaster_msg');\r\n this.convertFiles(files, format, epsg);\r\n }\r\n }\r\n\r\n convertFiles(files: File[], format: GisFormat, epsg: FmeEpsgCode): void {\r\n const filesArray = Array.from(files); // Assert is array of files not FilesList - for access to methods as reduce\r\n const maxFileSize = 20 * 1000 * 1000; // 20Mb\r\n if (filesArray?.length > 0) {\r\n if (filesArray.reduce((acc, curr) => acc + curr.size, 0) > maxFileSize) {\r\n this.toaster.error('drawAddFileToLarge_toaster_msg');\r\n return;\r\n }\r\n this.convertService.convert(filesArray, format, epsg)\r\n .then((geojson) => {\r\n if (!geojson) {\r\n throw Error(\"Empty result from API\");\r\n }\r\n this.isyDrawService.setFeatures(JSON.stringify(geojson));\r\n this.reactivateTool();\r\n if (!this.quietToaster) {\r\n this.toaster.success('drawAddSuccess_toaster_msg');\r\n }\r\n })\r\n .catch(() => {\r\n this.toaster.error('drawErrorConverting_toaster_msg');\r\n });\r\n }\r\n }\r\n\r\n downloadDrawing(): void {\r\n if (!this.features) {\r\n if (!this.quietToaster) {\r\n this.toaster.error('drawNoDrawing_toaster_msg', 'error_toaster_title');\r\n }\r\n return;\r\n }\r\n this.fileSaver.saveText(\r\n this.features,\r\n `drawing_${new Date().getTime()}.json`\r\n );\r\n if (!this.quietToaster) {\r\n this.toaster.success('drawDownloadSuccess_toaster_msg');\r\n }\r\n }\r\n\r\n editDraw(): void {\r\n this.modify = !this.modify;\r\n if (!this.modify) {\r\n this.selectedFeatureId = undefined;\r\n }\r\n // this.toaster.warning('Sorry you can not edit drawing', 'Warning');\r\n this.reactivateTool();\r\n }\r\n\r\n getActiveStyle(): any {\r\n if (\r\n this.activeDrawPanelIndex === EDrawPanelId.POLYGON ||\r\n this.activeDrawPanelIndex === EDrawPanelId.TEXT\r\n ) {\r\n return {\r\n 'border-color': this.color,\r\n 'border-width': `${this.linewidthValue}px`,\r\n 'background-color': this.fillColor,\r\n };\r\n }\r\n return { 'background-color': this.color };\r\n }\r\n\r\n setText(value): void {\r\n if (this.drawTextValue !== value) {\r\n this.drawTextValue = value;\r\n this.reactivateTool();\r\n }\r\n }\r\n\r\n setColor(red, green, blue): void {\r\n this.red = red;\r\n this.green = green;\r\n this.blue = blue;\r\n this.color = `rgba(${this.red},${this.green},${this.blue},1)`;\r\n this.fillColor = `rgba(${this.fillRed},${this.fillGreen},${this.fillBlue},${\r\n this.opacityValue / 100\r\n })`;\r\n this.reactivateTool();\r\n }\r\n\r\n setFillColor(red, green, blue): void {\r\n this.fillRed = red;\r\n this.fillGreen = green;\r\n this.fillBlue = blue;\r\n this.fillColor = `rgba(${this.fillRed},${this.fillGreen},${this.fillBlue},${\r\n this.opacityValue / 100\r\n })`;\r\n this.reactivateTool();\r\n }\r\n\r\n setOpacity(value): void {\r\n this.opacityValue = value;\r\n this.color = `rgba(${this.red},${this.green},${this.blue},1)`;\r\n this.fillColor = `rgba(${this.fillRed},${this.fillGreen},${this.fillBlue},${\r\n this.opacityValue / 100\r\n })`;\r\n this.reactivateTool();\r\n }\r\n\r\n setLineWidth(value): void {\r\n this.linewidthValue = parseInt(value, 10);\r\n if (this.linedashValue) {\r\n this.linedashValue[1] = 2 * this.linewidthValue;\r\n }\r\n this.reactivateTool();\r\n }\r\n\r\n setLineType(value): void {\r\n this.linedashValue = value;\r\n if (this.linedashValue) {\r\n this.linedashValue[1] = 2 * this.linewidthValue;\r\n }\r\n this.reactivateTool();\r\n }\r\n\r\n setTextSize(value): void {\r\n this.textsizeValue = value;\r\n this.reactivateTool();\r\n }\r\n getTextSize(): number {\r\n return this.textsizeValue || 32;\r\n }\r\n\r\n setPointType(value): void {\r\n this.pointType = value;\r\n if (value === 'circle') {\r\n // do something\r\n this.image = {\r\n radius: this.pointsizeValue,\r\n };\r\n this.regularshape = undefined;\r\n } else if (value === 'triangle') {\r\n // do something\r\n this.image = undefined;\r\n this.regularshape = {\r\n points: 3,\r\n radius: this.pointsizeValue,\r\n rotation: 0, // Math.PI / 4,\r\n angle: 0,\r\n };\r\n } else if (value === 'square') {\r\n // do something\r\n this.image = undefined;\r\n this.regularshape = {\r\n points: 4,\r\n radius: this.pointsizeValue,\r\n angle: Math.PI / 4,\r\n };\r\n }\r\n this.reactivateTool();\r\n }\r\n\r\n setPointSize(value): void {\r\n this.pointsizeValue = value;\r\n this.setPointType(this.pointType);\r\n }\r\n\r\n setShowMeasurements(): void {\r\n this.showMeasurements = !this.showMeasurements;\r\n this.reactivateTool();\r\n }\r\n\r\n setSnapGuides(): void {\r\n this.snapGuides = !this.snapGuides;\r\n this.reactivateTool();\r\n }\r\n\r\n deleteObjectById(id: string): void {\r\n this.selectedFeatureId = id;\r\n this.deleteObjects(false);\r\n }\r\n\r\n deleteObjects(deleteAll): void {\r\n if (!deleteAll) {\r\n this.deleteFeature = true;\r\n this.reactivateTool();\r\n this.deleteFeature = false;\r\n this.reactivateTool();\r\n if (!this.quietToaster) {\r\n this.toaster.success('drawDeleteSuccess_toaster_msg');\r\n }\r\n return;\r\n }\r\n this.isyDrawService.setFeatures(undefined);\r\n this.deleteFeature = true;\r\n this.reactivateTool();\r\n // setTimeout(() => {\r\n this.deleteFeature = false;\r\n this.modify = false;\r\n this.selectedFeatureId = undefined;\r\n this.isyDrawService.setFeatures(undefined);\r\n this.reactivateTool();\r\n if (!this.quietToaster) {\r\n this.toaster.success('drawDeleteSuccess_toaster_msg');\r\n }\r\n // }, 100);\r\n }\r\n}\r\n\r\nexport type RGBA = {\r\n red: number;\r\n green:number;\r\n blue: number;\r\n opacity: number;\r\n}","\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'pointType_txt' | translate }}
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    {{'size_txt' | translate }}
    \r\n
    \r\n S\r\n \r\n L\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'lineType_txt' | translate }}
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    {{'lineWidth_txt' | translate }}
    \r\n
    \r\n S\r\n \r\n L\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'transparency_txt' | translate }}
    \r\n
    \r\n 0%\r\n \r\n 100%\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'size_txt' | translate }}
    \r\n
    \r\n S\r\n \r\n L\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'transparency_txt' | translate }}
    \r\n
    \r\n 0%\r\n \r\n 100%\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    {{'color_txt' | translate }}
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    {{'fill_color_txt' | translate }}
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    {{'active_txt' | translate }}
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'showMeasurements_txt' | translate }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'snapGuides_txt' | translate }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{format|formatOptionDescription}}\r\n
    • \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyDrawService {\r\n private features = new BehaviorSubject(undefined);\r\n features$ = this.features.asObservable();\r\n\r\n private deleteObjects = new Subject();\r\n deleteObjects$ = this.deleteObjects.asObservable();\r\n\r\n private deleteObject = new BehaviorSubject(undefined);\r\n deleteObject$ = this.deleteObject.asObservable();\r\n\r\n private quietToaster = new BehaviorSubject(false);\r\n quietToaster$ = this.quietToaster.asObservable();\r\n\r\n setFeatures(features): void {\r\n this.features.next(features);\r\n }\r\n\r\n removeAllObjects(): void {\r\n this.deleteObjects.next(true);\r\n }\r\n\r\n removeObjectById(id: string): void {\r\n this.deleteObject.next(id);\r\n }\r\n\r\n setQuietToaster(value: boolean) {\r\n this.quietToaster.next(value);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n MapLibNgService,\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n} from '@isygis/isy-map';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyIframeComponent } from '@isygis/isy-utils';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\n\r\nexport interface IElevationDropOption {\r\n id: string;\r\n name: string;\r\n}\r\nexport interface IElevationCheckbox {\r\n id: string;\r\n name: string;\r\n isCheck: boolean;\r\n}\r\nexport interface IElevationProfile {\r\n scaleLengths: IElevationDropOption[];\r\n scaleHeights: IElevationDropOption[];\r\n formats: IElevationDropOption[];\r\n checkboxes: IElevationCheckbox[];\r\n}\r\n\r\n@Component({\r\n selector: 'lib-isy-elevation-profile',\r\n templateUrl: './isy-elevation-profile.component.html',\r\n styleUrls: ['./isy-elevation-profile.component.scss'],\r\n})\r\nexport class IsyElevationProfileComponent implements OnInit, OnDestroy {\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private bladeService: IsyBladeService,\r\n private mapService: IsyMapService,\r\n private toasterService: IsyToasterService\r\n ) {}\r\n\r\n subscription: Subscription = new Subscription();\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n elevationProfile: IElevationProfile = {\r\n scaleLengths: [\r\n { id: 'auto', name: 'Auto' },\r\n { id: '50', name: '1:50' },\r\n { id: '200', name: '1:200' },\r\n { id: '500', name: '1:500' },\r\n { id: '1000', name: '1:1000' },\r\n { id: '2000', name: '1:2000' },\r\n ],\r\n scaleHeights: [\r\n { id: 'sameAsX', name: 'equal_scale_length_txt' },\r\n { id: 'auto', name: 'Auto' },\r\n { id: '10', name: '1:10' },\r\n { id: '100', name: '1:100' },\r\n { id: '200', name: '1:200' },\r\n { id: '500', name: '1:500' },\r\n ],\r\n formats: [\r\n { id: 'A4Landscape', name: 'a4_landscape_txt' },\r\n { id: 'A3Landscape', name: 'a3_landscape_txt' },\r\n ],\r\n checkboxes: [\r\n { id: 'grid', name: 'grid_lbl', isCheck: true },\r\n { id: 'textpoints', name: 'inscription_of_heights_lbl', isCheck: true },\r\n { id: 'backgroundcolors', name: 'background_colors_lbl', isCheck: false },\r\n { id: 'drawwallandroof', name: 'draw_walls_lbl', isCheck: false },\r\n { id: 'includetiltak', name: 'include_measures_lbl', isCheck: true },\r\n { id: 'gradient', name: 'incline_percentage_lbl', isCheck: false },\r\n ],\r\n };\r\n\r\n activeScaleLength: IElevationDropOption =\r\n this.elevationProfile.scaleLengths[0];\r\n activeScaleHeight: IElevationDropOption =\r\n this.elevationProfile.scaleHeights[0];\r\n activeFormat: IElevationDropOption = this.elevationProfile.formats[0];\r\n isLineDraw = false;\r\n feature;\r\n\r\n ngOnInit(): void {\r\n this.mapLibNgService\r\n .map()\r\n .activateDrawingManager(this.createAdditionalOptions());\r\n this.mapLibNgService.map().deactivateFeatureSelector();\r\n this.mapLibNgService.map().deactivateHoverInfo();\r\n\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureSelected);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureDeselected);\r\n\r\n this.subscription.add(\r\n this.mapEmitterService.drawFeatureEndEmitter$.subscribe((value) => {\r\n console.log('VALUE: ', value);\r\n if (value) {\r\n this.feature = JSON.parse(value).features[0];\r\n let length = this.feature.properties.measurement;\r\n if (length) {\r\n length = Number(length.split('.')[0]);\r\n if (length > 5000) {\r\n this.toasterService.error(\r\n 'max_length_is_msg',\r\n 'invalid_length_msg'\r\n );\r\n this.isLineDraw = false;\r\n return;\r\n }\r\n }\r\n this.isLineDraw = true;\r\n this.feature = this.mapLibNgService\r\n .map()\r\n .transformGeoJsonFeaturesFromGeographic(this.feature, 'EPSG:25832');\r\n }\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n this.mapLibNgService.map().deactivateFeatureSelector();\r\n\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n this.mapLibNgService.map().activateHoverInfo();\r\n\r\n const cleanupOptions = {\r\n GeoJSON: 'remove',\r\n deleteFeature: true,\r\n };\r\n\r\n this.mapLibNgService.map().reactivateDrawingManager(cleanupOptions);\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n }\r\n\r\n private createAdditionalOptions(): any {\r\n return {\r\n mode: 'draw',\r\n type: 'LineString',\r\n style: {\r\n fill: {\r\n color: 'rgba(0, 0, 160, 0.2)',\r\n },\r\n stroke: {\r\n color: 'red',\r\n width: 4,\r\n },\r\n text: '',\r\n textSize: 16,\r\n },\r\n showMeasurements: true,\r\n onlyOneFeature: true,\r\n };\r\n }\r\n\r\n createElevationProfile(): void {\r\n const projectConfig = this.mapService.getProjectConfig();\r\n let url = projectConfig.config.project.webinnsynurl;\r\n const knr = projectConfig.config.project.defaultkommune;\r\n const apiUrl = '/api/crosssection/';\r\n url += apiUrl + 'create?srs=EPSG:25832';\r\n url += '&coords=' + this.feature.geometry.coordinates.toString();\r\n url +=\r\n '&grid=' +\r\n this.elevationProfile.checkboxes.find(\r\n (checkbox) => checkbox.id === 'grid'\r\n ).isCheck;\r\n url +=\r\n '&textpoints=' +\r\n this.elevationProfile.checkboxes.find(\r\n (checkbox) => checkbox.id === 'textpoints'\r\n ).isCheck;\r\n url +=\r\n '&backgroundcolors=' +\r\n this.elevationProfile.checkboxes.find(\r\n (checkbox) => checkbox.id === 'backgroundcolors'\r\n ).isCheck;\r\n url +=\r\n '&drawwallandroof=' +\r\n this.elevationProfile.checkboxes.find(\r\n (checkbox) => checkbox.id === 'drawwallandroof'\r\n ).isCheck;\r\n url +=\r\n '&includetiltak=' +\r\n this.elevationProfile.checkboxes.find(\r\n (checkbox) => checkbox.id === 'includetiltak'\r\n ).isCheck;\r\n url +=\r\n '&gradient=' +\r\n this.elevationProfile.checkboxes.find(\r\n (checkbox) => checkbox.id === 'gradient'\r\n ).isCheck;\r\n url += '&scalex=' + this.activeScaleLength.id;\r\n url += '&scaley=' + this.activeScaleHeight.id;\r\n url += '&format=' + this.activeFormat.id;\r\n url += '&knr=' + knr;\r\n this.bladeService.showBladeWithComponent(\r\n 'elevationProfileResult',\r\n IsyIframeComponent,\r\n { url },\r\n {\r\n position: 'top',\r\n fullScreen: true,\r\n showHeader: true,\r\n bladeHeader: { headerTitle: 'elevationProfileTxt' },\r\n showBladeInBody: true\r\n }\r\n );\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{scaleLength.name | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{scaleHeight.name | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{format.name | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    ","import { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n MapLibNgService,\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n} from '@isygis/isy-map';\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n catchError,\r\n map,\r\n multicast,\r\n refCount,\r\n switchMap,\r\n tap,\r\n} from 'rxjs/operators';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport {\r\n BehaviorSubject,\r\n combineLatest,\r\n ReplaySubject,\r\n Subscription,\r\n} from 'rxjs';\r\n\r\ninterface IGetPriceParams {\r\n Coordinates?: any[];\r\n SRS?: string;\r\n ConnectionNames?: any[];\r\n ProductId?: string;\r\n}\r\n\r\ninterface Coordinate {\r\n x: number;\r\n y: number;\r\n}\r\n\r\ninterface CenterCoordinate extends Coordinate {\r\n size: number; // Size in degrees to calculate square\r\n}\r\n\r\ninterface ISendOrderParams {\r\n // required\r\n Coordinates?: any[];\r\n SRS?: string;\r\n OutputSRS?: string;\r\n Isytoken?: string;\r\n Format?: string;\r\n FormatType?: string;\r\n Email?: string;\r\n Connections?: any[];\r\n ProductId?: string;\r\n Name?: string;\r\n Address?: string;\r\n Zip?: string;\r\n City?: string;\r\n Company?: string;\r\n Phone?: string;\r\n Orgnr?: string;\r\n Note?: string;\r\n KommunenrResponsible?: number;\r\n SosiVersion?: string;\r\n}\r\n\r\nenum EPanelId {\r\n COORDINATES = 'exportCoordinateTab',\r\n POLYGON = 'exportPolygonTab',\r\n}\r\n@Component({\r\n selector: 'lib-isy-export',\r\n templateUrl: './isy-export.component.html',\r\n styleUrls: ['./isy-export.component.scss'],\r\n})\r\nexport class IsyExportComponent implements OnInit, OnDestroy {\r\n orderSent = false;\r\n features;\r\n subscription = new Subscription();\r\n drawFeatureEndEmitterSubscription: Subscription = Subscription.EMPTY;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n mapLibNgServiceMap;\r\n areaDefined = false;\r\n firstPage = true;\r\n secondPage = false;\r\n showPreviousBtn = false;\r\n showNextBtn = false;\r\n showVerifyBtn = false;\r\n allDatasetSelected = false;\r\n email = '';\r\n company = '';\r\n name = '';\r\n tel = '';\r\n adress = '';\r\n postnr = '';\r\n postCity = '';\r\n orgnr = '';\r\n note = '';\r\n upperNorth = 0;\r\n upperEast = 0;\r\n lowerNorth = 0;\r\n lowerEast = 0;\r\n productTypes = [\r\n { id: 'Datasett', selected: true },\r\n { id: 'Produkt', selected: false },\r\n ];\r\n selectedFormat;\r\n selectedCrs;\r\n selectedVersion;\r\n selectedFileStructure;\r\n selectedOrderAcceptence;\r\n priceParams: IGetPriceParams;\r\n orderParams: ISendOrderParams = {};\r\n cleanupOptions = {\r\n GeoJSON: 'remove',\r\n deleteFeature: true,\r\n };\r\n projectConfig$ = this.mapService.projectConfig$;\r\n private getConfigsAction = new BehaviorSubject(false);\r\n private getPriceAction = new BehaviorSubject(false);\r\n private sendOrderAction = new BehaviorSubject(false);\r\n Coordinates: any;\r\n isytoken: any;\r\n defaultkommune: number;\r\n\r\n EPanelId = EPanelId;\r\n exportAreaPanels: EPanelId[] = [EPanelId.POLYGON, EPanelId.COORDINATES]; \r\n activeExportAreaPanelIndex: EPanelId = EPanelId.POLYGON;\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private sessionStorageService: SessionStorageService,\r\n private toasterService: IsyToasterService,\r\n private httpClient: HttpClient,\r\n private mapService: IsyMapService\r\n ) {\r\n this.mapLibNgServiceMap = this.mapLibNgService.map();\r\n }\r\n\r\n configurations$ = combineLatest([\r\n this.getConfigsAction,\r\n this.projectConfig$,\r\n ]).pipe(\r\n switchMap(([Configs, projectConfig]: [any, IProjectConfig]) => {\r\n if (Configs && projectConfig) {\r\n this.defaultkommune = Number(\r\n projectConfig.config.project.defaultkommune\r\n );\r\n return this.httpClient\r\n .get(\r\n projectConfig.config.project.webinnsynurl +\r\n '/api/export/configuration'\r\n )\r\n .pipe(\r\n map((result: any) => {\r\n if (result) {\r\n // console.log('Configs', result);\r\n return result;\r\n }\r\n })\r\n );\r\n }\r\n return Promise.resolve();\r\n }),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount(),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n\r\n getPrice$ = combineLatest([this.getPriceAction, this.projectConfig$]).pipe(\r\n switchMap(([getPrice, projectConfig]: [any, IProjectConfig]) => {\r\n if (getPrice) {\r\n return this.httpClient\r\n .post(\r\n projectConfig.config.project.webinnsynurl + '/api/export/price',\r\n this.priceParams\r\n )\r\n .pipe(\r\n map((result: any) => {\r\n if (result) {\r\n // console.log('PriceResult', result);\r\n return result;\r\n }\r\n })\r\n );\r\n }\r\n return Promise.resolve();\r\n }),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount(),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n\r\n sendOrder$ = combineLatest([this.sendOrderAction, this.projectConfig$]).pipe(\r\n switchMap(([sendOrder, projectConfig]: [any, IProjectConfig]) => {\r\n if (sendOrder) {\r\n return this.httpClient\r\n .post(\r\n projectConfig.config.project.webinnsynurl + '/api/export/submit',\r\n this.orderParams\r\n )\r\n .pipe(\r\n map((result: any) => {\r\n // console.log('OrderResult', result);\r\n this.toasterService.success('Bestilling sendt!');\r\n this.orderSent = true;\r\n return result;\r\n })\r\n );\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n }),\r\n multicast(() => new ReplaySubject(1)),\r\n refCount(),\r\n catchError(this.handleErrorWithPromise.bind(this))\r\n );\r\n\r\n vm$ = combineLatest([this.configurations$]).pipe(\r\n map(([configurations]: [any]) => ({\r\n productList: configurations ? configurations.Products : undefined,\r\n datasetList: configurations ? configurations.Connections : undefined,\r\n formatList: configurations ? configurations.Formats : undefined,\r\n sosiVersionList: configurations ? configurations.SosiVersions : undefined,\r\n crsList: configurations ? configurations.CoordinateSystems : undefined,\r\n invoiceDetailsRequired: configurations\r\n ? configurations.invoiceDetailsRequired\r\n : false,\r\n // fileStructureList: is part of formatList\r\n orderAcceptenceList: configurations\r\n ? configurations.KommuneResponsible\r\n : undefined,\r\n })),\r\n tap((data) => {\r\n if (data.productList) {\r\n this.selectedFormat = data.formatList[0];\r\n this.selectedVersion = data.sosiVersionList[0];\r\n const mapCrs = this.mapLibNgService.map().getEpsgCode();\r\n const crsIdx = data.crsList.findIndex((x) => x.Value === mapCrs);\r\n this.selectedCrs = data.crsList[Math.max(crsIdx, 0)];\r\n this.selectedFileStructure = data.formatList[0].FormatTypes[0];\r\n this.selectedOrderAcceptence = data.orderAcceptenceList[0];\r\n data.productList.map((p) => (p['selected'] = false));\r\n data.datasetList.map((d) => (d['selected'] = false));\r\n }\r\n })\r\n );\r\n\r\n ngOnInit(): void {\r\n this.getConfigsAction.next(true);\r\n this.isytoken = this.sessionStorageService.retrieve(ELogin.TOKEN);\r\n this.email = this.sessionStorageService.retrieve(ELogin.EMAIL);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n this.drawFeatureEndEmitterSubscription.unsubscribe();\r\n const cleanupOptions = {\r\n GeoJSON: 'remove',\r\n deleteFeature: true,\r\n };\r\n\r\n // For killing the result from drawFeatureEndEmitter$\r\n this.mapEmitterService.emitDrawFeatureEnd(undefined);\r\n // For killing the result from featureInfoEndEmitter$\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n // For removing the drawin polygon\r\n this.mapLibNgService.map().reactivateDrawingManager(cleanupOptions);\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n // For starting other events again\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureSelected);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .continueEvent(this.mapLibNgService.eventTypes().FeatureDeselected);\r\n this.mapLibNgService.map().activateHoverInfo();\r\n }\r\n\r\n polygonSelect(activateDrawingManager: boolean = true): void {\r\n // this.subscription.add(\r\n if (this.drawFeatureEndEmitterSubscription.closed) {\r\n this.drawFeatureEndEmitterSubscription = this.mapEmitterService.drawFeatureEndEmitter$.subscribe((featureJson) => {\r\n if (featureJson) {\r\n this.areaDefined = true;\r\n this.showNextBtn = true;\r\n this.features = featureJson;\r\n let parsedFeatures = JSON.parse(this.features);\r\n // for transforming geographic coordinates\r\n parsedFeatures =\r\n this.mapLibNgServiceMap.transformGeoJsonFeaturesFromGeographic(\r\n parsedFeatures,\r\n this.selectedCrs.Value\r\n );\r\n const coords = parsedFeatures.features[0].geometry.coordinates || [];\r\n this.Coordinates = coords.flat(2);\r\n }\r\n })\r\n };\r\n if (activateDrawingManager) { \r\n this.mapLibNgServiceMap.activateDrawingManager(\r\n this.createAdditionalOptions()\r\n );\r\n }\r\n // For stopping other events to happen\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureSelected);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureDeselected);\r\n }\r\n\r\n private createAdditionalOptions(): any {\r\n return {\r\n mode: 'draw',\r\n type: 'Polygon',\r\n style: {\r\n fill: {\r\n color: 'rgba(0, 0, 160, 0.2)',\r\n },\r\n stroke: {\r\n color: 'green',\r\n width: 2,\r\n },\r\n },\r\n };\r\n }\r\n\r\n toggleProductType(productTypes, productType): void {\r\n productTypes.forEach((value) => {\r\n if (value.id === productType.id) {\r\n value.selected = true;\r\n } else {\r\n value.selected = false;\r\n }\r\n });\r\n }\r\n goToPrevious(): void {\r\n this.firstPage = true;\r\n this.secondPage = false;\r\n this.showNextBtn = true;\r\n this.showPreviousBtn = false;\r\n this.showVerifyBtn = false;\r\n this.orderSent = false;\r\n }\r\n\r\n goToNext(productList, datasetList): void {\r\n let dataSelected = false;\r\n // dataset\r\n if (this.productTypes[0].selected) {\r\n datasetList.forEach((d) => (d.selected ? (dataSelected = true) : ''));\r\n // product\r\n } else {\r\n productList.forEach((p) => (p.selected ? (dataSelected = true) : ''));\r\n }\r\n\r\n if (!dataSelected) {\r\n this.toasterService.warning('Data skal velges!');\r\n } else {\r\n this.firstPage = false;\r\n this.secondPage = true;\r\n this.showNextBtn = false;\r\n this.showPreviousBtn = true;\r\n this.showVerifyBtn = true;\r\n this.priceParams = {\r\n Coordinates: this.Coordinates,\r\n SRS: this.selectedCrs.Value,\r\n };\r\n // product\r\n if (this.productTypes[1].selected) {\r\n productList.forEach((p) =>\r\n p.selected ? (this.priceParams.ProductId = p.Id) : ''\r\n );\r\n // dataset\r\n } else {\r\n const dataList = [];\r\n datasetList.forEach((d) => (d.selected ? dataList.push(d.Name) : ''));\r\n this.priceParams.ConnectionNames = dataList;\r\n }\r\n this.subscription.add(this.getPrice$.subscribe());\r\n this.getPriceAction.next(true);\r\n }\r\n }\r\n\r\n sendOrder(productList, datasetList): void {\r\n this.orderParams = {};\r\n const dataList = [];\r\n let productId = '';\r\n // product\r\n if (this.productTypes[1].selected) {\r\n productList.forEach((p) => (p.selected ? (productId = p.Id) : ''));\r\n this.orderParams.ProductId = productId;\r\n this.orderParams.Format = 'sosi';\r\n this.orderParams.FormatType = 'fileordir';\r\n // dataset\r\n } else {\r\n datasetList.forEach((d) =>\r\n d.selected ? dataList.push({ Name: d.Name }) : ''\r\n );\r\n this.orderParams.Connections = dataList;\r\n this.orderParams.Format = this.selectedFormat.Value;\r\n\r\n this.orderParams.SosiVersion =\r\n this.selectedFormat.Value === 'sosi' && this.selectedVersion\r\n ? this.selectedVersion.Value\r\n : '';\r\n\r\n this.orderParams.FormatType = this.selectedFileStructure.Value;\r\n }\r\n this.orderParams.Address = this.adress;\r\n this.orderParams.City = this.postCity;\r\n this.orderParams.Company = this.company;\r\n this.orderParams.Coordinates = this.Coordinates;\r\n this.orderParams.Email = this.email;\r\n this.orderParams.Isytoken = this.isytoken;\r\n this.orderParams.Name = this.name;\r\n this.orderParams.Orgnr = this.orgnr;\r\n this.orderParams.Note = this.note;\r\n this.orderParams.Phone = this.tel;\r\n this.orderParams.Zip = '';\r\n this.orderParams.OutputSRS = this.selectedCrs.Value;\r\n this.orderParams.SRS = this.selectedCrs.Value;\r\n this.orderParams.KommunenrResponsible = this.selectedOrderAcceptence\r\n ? this.selectedOrderAcceptence?.Value\r\n : this.defaultkommune;\r\n\r\n // console.log('orderParams', this.orderParams);\r\n this.subscription.add(this.sendOrder$.subscribe());\r\n this.sendOrderAction.next(true);\r\n }\r\n\r\n // one product can be selected each time\r\n toggleProduct(product, productList): void {\r\n productList.map((p) => (p.selected = false));\r\n product.selected = true;\r\n }\r\n\r\n // more than one dataset can be selected each time\r\n toggleDataset(dataset, datasetList): void {\r\n dataset.selected = !dataset.selected;\r\n // If all datasets are checked and one dataset is manually unselected, set allDatasetSelected to false\r\n if (this.allDatasetSelected && !dataset.selected) {\r\n this.allDatasetSelected = false;\r\n }\r\n // If all datasets are manually checked, set allDatasetSelected to true\r\n let allSelected = true;\r\n for (const dSet of datasetList) {\r\n allSelected = allSelected && dSet.selected;\r\n }\r\n this.allDatasetSelected = allSelected;\r\n }\r\n\r\n selectAllDatasets(datasetList): void {\r\n this.allDatasetSelected = !this.allDatasetSelected;\r\n for (const dataset of datasetList) {\r\n dataset.selected = this.allDatasetSelected;\r\n }\r\n }\r\n\r\n private createAdditionalOptionsModify(): any {\r\n return {\r\n GeoJSON: this.features ? this.features : 'remove',\r\n deleteFeature: false,\r\n type: 'Polygon',\r\n style: {\r\n fill: {\r\n color: 'rgba(0, 0, 160, 0.2)',\r\n },\r\n stroke: {\r\n color: 'green',\r\n width: 2,\r\n },\r\n },\r\n transformObj: false,\r\n mode: 'modify',\r\n selectedFeatureId: undefined,\r\n selectionActive: false,\r\n showMeasurements: false,\r\n snapGuides: false,\r\n textValue: '',\r\n modify: true,\r\n };\r\n }\r\n\r\n editPolygon(): void {\r\n this.mapLibNgService\r\n .map()\r\n .reactivateDrawingManager(this.createAdditionalOptionsModify());\r\n }\r\n\r\n removePolygon(): void {\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n // For killing the result from drawFeatureEndEmitter$\r\n this.mapEmitterService.emitDrawFeatureEnd(undefined);\r\n // For killing the result from featureInfoEndEmitter$\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n // For removing the drawing polygon\r\n this.mapLibNgService.map().reactivateDrawingManager(this.cleanupOptions);\r\n this.polygonSelect();\r\n this.areaDefined = false;\r\n }\r\n\r\n handleErrorWithPromise(err): Promise {\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n errorMessage = `Backend returned code ${err.status}: ${err.statusText}`;\r\n }\r\n }\r\n this.toasterService.error(err.error, 'catchError_toaster_title');\r\n console.error('ERROR: ', err, errorMessage);\r\n return Promise.resolve();\r\n }\r\n\r\n toggleExportAreaPanel(panelId: EPanelId): void {\r\n this.activeExportAreaPanelIndex = panelId;\r\n // For killing the result from drawFeatureEndEmitter$\r\n this.mapEmitterService.emitDrawFeatureEnd(undefined);\r\n // For killing the result from featureInfoEndEmitter$\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n // For removing the drawin polygon\r\n this.mapLibNgService.map().reactivateDrawingManager(this.cleanupOptions);\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n this.areaDefined = false;\r\n // this.removePolygon();\r\n if (this.activeExportAreaPanelIndex === EPanelId.COORDINATES) {\r\n this.mapLibNgService.map().deactivateHoverInfo(); \r\n this.polygonSelect(false);\r\n this.setExtentWithCoordinates();\r\n }\r\n } \r\n\r\n calculateSquareCoordinates(center: CenterCoordinate | null, bbox: Coordinate[] | null): Coordinate[] {\r\n if (center) {\r\n const halfSizeX = center.size / 2;\r\n const halfSizeY = center.size / 3;\r\n\r\n return [\r\n { x: center.x - halfSizeX, y: center.y + halfSizeY }, // upper-left\r\n { x: center.x + halfSizeX, y: center.y + halfSizeY }, // upper-right\r\n { x: center.x + halfSizeX, y: center.y - halfSizeY }, // lower-right\r\n { x: center.x - halfSizeX, y: center.y - halfSizeY }, // lower-left\r\n { x: center.x - halfSizeX, y: center.y + halfSizeY }, // close loop\r\n ];\r\n } else if (bbox && bbox.length === 2) {\r\n const [upperRight, lowerLeft] = bbox;\r\n\r\n // Calculate the other two corners\r\n const upperLeft: Coordinate = {\r\n x: lowerLeft.x, // Use the same X (longitude) as lower-left\r\n y: upperRight.y, // Use the same Y (latitude) as upper-right\r\n };\r\n\r\n const lowerRight: Coordinate = {\r\n x: upperRight.x, // Use the same X (longitude) as upper-right\r\n y: lowerLeft.y, // Use the same Y (latitude) as lower-left\r\n };\r\n\r\n return [upperLeft, upperRight, lowerRight, lowerLeft, upperLeft]; // Return square coordinates\r\n } else {\r\n throw new Error(\"Either center or bbox must be provided.\");\r\n }\r\n }\r\n\r\ncreateFeatures(coordinates: Coordinate[]): any {\r\n return {\r\n type: \"FeatureCollection\",\r\n features: [\r\n {\r\n type: \"Feature\",\r\n geometry: {\r\n type: \"Polygon\",\r\n coordinates: [[\r\n ...coordinates.map(coord => [coord.x, coord.y])\r\n ]],\r\n },\r\n properties: {\r\n style: {\r\n fill: { color: \"rgba(245,166,35,0.75)\" },\r\n stroke: { color: \"rgba(245,166,35,1)\", width: 2 },\r\n image: {\r\n radius: 7,\r\n fill: { color: \"rgba(245,166,35,1)\" }\r\n },\r\n text: \"\",\r\n textSize: 16\r\n }\r\n },\r\n id: \"6b8daf46-50d1-a149-e9f2-a1c391cba514\"\r\n }\r\n ]\r\n };\r\n}\r\n\r\nactivateDrawingManager(features: any) {\r\n const additionalOptions = {\r\n GeoJSON: JSON.stringify(features),\r\n deleteFeature: false,\r\n mode: 'draw',\r\n type: 'Polygon',\r\n };\r\n\r\n this.mapLibNgService.map().activateDrawingManager(additionalOptions);\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n}\r\n\r\nsetExtentWithCoordinates(): void {\r\n const center = this.mapLibNgService.getCenter();\r\n const transformedCrd = this.mapLibNgService.map().transformToGeographic([center.lon, center.lat], center.epsg);\r\n\r\n const centerCoordinates: CenterCoordinate = {\r\n x: transformedCrd[0],\r\n y: transformedCrd[1],\r\n size: 0.002,\r\n };\r\n\r\n const coordinates = this.calculateSquareCoordinates(centerCoordinates, null);\r\n const features = this.createFeatures(coordinates);\r\n // console.log('Features: ', features);\r\n\r\n this.activateDrawingManager(features);\r\n\r\n const transformUpperLeft = this.mapLibNgService.map().transformFromGeographic(\r\n [coordinates[0].x, coordinates[0].y], this.selectedCrs.Value\r\n );\r\n const transformLowerRight = this.mapLibNgService.map().transformFromGeographic(\r\n [coordinates[2].x, coordinates[2].y], this.selectedCrs.Value\r\n );\r\n\r\n this.upperEast = transformUpperLeft[0];\r\n this.upperNorth = transformUpperLeft[1];\r\n this.lowerEast = transformLowerRight[0];\r\n this.lowerNorth = transformLowerRight[1];\r\n}\r\n\r\nupdateGeometry(): void {\r\n const transformedUpperCrdToGeographic = this.mapLibNgService.map().transformToGeographic(\r\n [this.upperEast, this.upperNorth], this.selectedCrs.Value\r\n );\r\n const transformedLowerCrdToGeographic = this.mapLibNgService.map().transformToGeographic(\r\n [this.lowerEast, this.lowerNorth], this.selectedCrs.Value\r\n );\r\n\r\n const upperCoordinates = {\r\n x: transformedUpperCrdToGeographic[0],\r\n y: transformedUpperCrdToGeographic[1],\r\n };\r\n const lowerCoordinates = {\r\n x: transformedLowerCrdToGeographic[0],\r\n y: transformedLowerCrdToGeographic[1],\r\n };\r\n\r\n const coordinates = this.calculateSquareCoordinates(null, [upperCoordinates, lowerCoordinates]);\r\n const features = this.createFeatures(coordinates);\r\n // console.log('Features: ', features);\r\n\r\n this.activateDrawingManager(features);\r\n}\r\n \r\n}\r\n","
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    0\">\r\n
    \r\n \r\n
    \r\n
    \r\n {{productType.id}}\r\n
    \r\n
    \r\n
    0\">\r\n
    \r\n \r\n
    \r\n
    \r\n {{productType.id}}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{product.Title}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{dataset.Title}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{format.Text}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    0\" class=\"form-group mb-3\">\r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{version.Text}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{structure.Text}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{crs.Text}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Areal:\r\n
    \r\n
    \r\n {{getPrice.Area}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n Pris:\r\n
    \r\n
    \r\n {{getPrice.Price}}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    0\" class=\"form-group mb-3\">\r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{orderAcceptence.Text}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n
      \r\n \r\n
      \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n \r\n Tilbake\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n\r\n\r\n\r\n\r\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport {\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n MapLibNgService,\r\n IClickCoordinate,\r\n} from '@isygis/isy-map';\r\nimport { combineLatest, Subscription, BehaviorSubject } from 'rxjs';\r\nimport {\r\n map,\r\n switchMap, mergeMap,\r\n timeout, catchError,\r\n take\r\n} from 'rxjs/operators';\r\nimport { IKommuneInfo, MapConfig, ICoordinate } from '@isygis/isy-configs';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { NgxFileDropEntry, FileSystemFileEntry } from 'ngx-file-drop';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\n// import { IsyToolsService, IsyDrawService } from '@isygis/isy-tools';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { EToolId } from '@isygis/isy-configs';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IConfigJson } from '@isygis/isymap-config';\r\n\r\nexport interface IElevationResult {\r\n datakilde: string;\r\n terreng: string;\r\n x: number\r\n y: number;\r\n z: number;\r\n}\r\nexport interface IFeedback {\r\n email: string;\r\n name: string;\r\n phone: string;\r\n text: string;\r\n featureCollection: any;\r\n data: any;\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'lib-isy-feedback-modal',\r\n templateUrl: './isy-feedback-modal.component.html',\r\n styleUrls: ['./isy-feedback-modal.component.scss'],\r\n})\r\nexport class IsyFeedbackModalComponent\r\n implements OnInit, OnDestroy, AfterViewInit\r\n{\r\n planid;\r\n knr;\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscriptions: Subscription[] = [];\r\n feedback: IFeedback = {\r\n email: '',\r\n name: '',\r\n phone: '',\r\n text: '',\r\n featureCollection: {\r\n features: [],\r\n },\r\n data: {\r\n content: {\r\n knr: 0,\r\n planid: '',\r\n },\r\n },\r\n };\r\n attachments = [];\r\n featureCollection = {\r\n features: [],\r\n };\r\n attachmentFileInput = {\r\n value: '',\r\n };\r\n shouldRemoveDrawnObject = true;\r\n constructor(\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapService: IsyMapService,\r\n private httpClient: HttpClient,\r\n private toasterService: IsyToasterService,\r\n private modalService: IsyDynamicModalService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n private changeCoordinateAction = new BehaviorSubject(undefined);\r\n private postFeedbackAction = new BehaviorSubject(undefined);\r\n private postFeedbackAttachmentAction = new BehaviorSubject([]);\r\n private startUploadAction = new BehaviorSubject(false);\r\n projectConfig$ = this.mapService.projectConfig$;\r\n config = this.mapService.getConfig() as IConfigJson;\r\n mapConfig = this.mapService.getMapConfig() as MapConfig;\r\n\r\n kommuneInfo$ = combineLatest([this.changeCoordinateAction]).pipe(\r\n mergeMap(([changeCoordinate]: [ICoordinate]) => {\r\n if (changeCoordinate) {\r\n const url =\r\n this.config.externalServices.kommuneinfo +\r\n '?nord=' +\r\n changeCoordinate.lat +\r\n '&ost=' +\r\n changeCoordinate.lon +\r\n '&koordsys=' +\r\n changeCoordinate.epsg;\r\n return this.httpClient\r\n .get(encodeURI(url))\r\n .pipe(timeout(2000));\r\n }\r\n return new Promise((resolve) => resolve({}));\r\n }),\r\n // shareReplay(1),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n\r\n elevationResult$ = combineLatest([this.changeCoordinateAction]).pipe(\r\n mergeMap(([changeCoordinate]: [ICoordinate]) => {\r\n if (changeCoordinate) {\r\n const url =\r\n this.mapConfig.proxyHost +\r\n this.config.externalServices.elevation +\r\n '?nord=' +\r\n changeCoordinate.lat +\r\n '&ost=' +\r\n changeCoordinate.lon +\r\n '&koordsys=' +\r\n changeCoordinate.epsg;\r\n return this.httpClient\r\n .get(encodeURI(url))\r\n .pipe(timeout(2000),\r\n map((result) => {\r\n return result.punkter[0] as IElevationResult;\r\n }),);\r\n }\r\n return new Promise((resolve) => resolve({}));\r\n }),\r\n // shareReplay(1),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n\r\n // uploadInProgress$ = combineLatest([this.startUploadAction]).pipe(\r\n // map(([startUploadAction]: [boolean]) => {\r\n // return startUploadAction ? true : false;\r\n // }),\r\n // shareReplay(1)\r\n // );\r\n\r\n // tslint:disable-next-line: variable-name\r\n postFeedback_v2$ = combineLatest([\r\n this.postFeedbackAction,\r\n this.postFeedbackAttachmentAction,\r\n this.projectConfig$,\r\n ]).pipe(\r\n switchMap(\r\n ([postFeedbackAction, postFeedbackAttachmentAction, projectConfig]: [\r\n IFeedback,\r\n any[],\r\n IProjectConfig\r\n ]) => {\r\n if (postFeedbackAction && postFeedbackAttachmentAction) {\r\n // console.log(JSON.stringify(postFeedbackAction));\r\n const formData = new FormData();\r\n\r\n formData.append('feedback', JSON.stringify(postFeedbackAction));\r\n\r\n postFeedbackAttachmentAction.forEach((attachment) => {\r\n formData.append('files', attachment, attachment.name);\r\n });\r\n return this.httpClient\r\n .post(\r\n `${projectConfig.config.project.isyfeedbackurl}/api/v3/feedback/${projectConfig.config.project.isyfeedbackapplicationid}`,\r\n // `https://geoinnsyn3.nois.no/gi_giinnspill/api/v2/feedback/7fe73b9a-ecd5-4e12-8705-9705e44e7c1b`,\r\n formData,\r\n {\r\n headers: {\r\n Accept: 'application/json, text/plain, */*',\r\n },\r\n }\r\n )\r\n .pipe(\r\n map((result) => {\r\n this.startUploadAction.next(false);\r\n return result;\r\n }),\r\n take(1),\r\n catchError(this.handlePostAttachmentError.bind(this))\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n }\r\n ),\r\n // tap(result => console.log('postFeedback: ', result)),\r\n catchError(this.handleErrorWithPromise)\r\n );\r\n\r\n vm$ = combineLatest([this.elevationResult$, this.kommuneInfo$]).pipe(\r\n map(\r\n ([elevationResult, admEnhetResult]: [\r\n IElevationResult,\r\n IKommuneInfo\r\n ]) => ({\r\n elevationResult,\r\n admEnhetResult,\r\n })\r\n )\r\n // , tap(result => console.log('FEEDBACK result: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.push(\r\n this.mapEmitterService.drawFeatureEndEmitter$.subscribe(\r\n (featureCollection) => {\r\n if (featureCollection) {\r\n this.featureCollection = JSON.parse(featureCollection);\r\n // console.log('featureCollection', this.featureCollection);\r\n }\r\n }\r\n )\r\n );\r\n this.subscriptions.push(\r\n this.commonService.feature$.subscribe((feature) => {\r\n if (feature) {\r\n this.planid = feature.lowercaseprops['planid'];\r\n this.knr = feature.lowercaseprops['komm'];\r\n }\r\n })\r\n );\r\n }\r\n ngAfterViewInit(): void {\r\n this.subscriptions.push(\r\n this.mapEmitterService.getClickCoordinatesEmitter$.subscribe(\r\n (coordinate: IClickCoordinate) => {\r\n this.changedCoordinates(coordinate);\r\n // console.log('coordinate', coordinate);\r\n }\r\n )\r\n );\r\n }\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n this.resetFeedbackService();\r\n this.commonService.setFeature(undefined);\r\n setTimeout(() => {\r\n this.mapActionDialogService.hide(EToolId.FEEDBACK);\r\n }, 200);\r\n }\r\n\r\n postFeedback(): void {\r\n this.feedback.featureCollection = { ...this.featureCollection };\r\n this.feedback.featureCollection.features = [];\r\n this.feedback.featureCollection.features.push(\r\n this.featureCollection.features[\r\n this.featureCollection.features.length - 1\r\n ]\r\n );\r\n\r\n this.feedback.data.content.planid = this.planid;\r\n this.feedback.data.content.knr = this.knr;\r\n\r\n this.shouldRemoveDrawnObject = false;\r\n console.log('feedback:', this.feedback);\r\n this.postFeedbackStart_v2(this.feedback, this.attachments);\r\n this.subscriptions.push(\r\n this.postFeedback_v2$.subscribe((feedback) => {\r\n if (feedback === 'UploadError') {\r\n this.uploadError();\r\n } else {\r\n if (feedback) {\r\n this.uploadFinished(this.startUploadAction);\r\n }\r\n }\r\n })\r\n );\r\n }\r\n postFeedbackStart_v2(feedback: IFeedback, attachments: any[]): void {\r\n this.startUploadAction.next(true);\r\n this.postFeedbackAttachmentAction.next(attachments);\r\n this.postFeedbackAction.next(feedback);\r\n }\r\n\r\n // tslint:disable-next-line: typedef\r\n private handlePostAttachmentError(err) {\r\n this.startUploadAction.next(false);\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return new Promise((resolve) => resolve('UploadError'));\r\n }\r\n private handleErrorWithPromise(err): Promise {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.log('ERROR: ', err, errorMessage);\r\n // return throwError(errorMessage);\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n resetFeedbackService(): void {\r\n this.changeCoordinateAction.next(undefined);\r\n this.postFeedbackAction.next(undefined);\r\n }\r\n changedCoordinates(coordinate: IClickCoordinate): void {\r\n if (coordinate && coordinate.coordinate && coordinate.epsg) {\r\n // Elevation service expect epsg as just the number\r\n const epsgpattern = /\\d+/;\r\n const epsgResult = epsgpattern.exec(coordinate.epsg);\r\n if (epsgResult) {\r\n const currentCoordinate = {\r\n lat: coordinate.coordinate[1],\r\n lon: coordinate.coordinate[0],\r\n epsg: epsgResult[0],\r\n crs: coordinate.epsg,\r\n } as ICoordinate;\r\n this.changeCoordinateAction.next(currentCoordinate);\r\n }\r\n }\r\n }\r\n\r\n uploadFiles(files: any): void {\r\n if (files && files.length) {\r\n // tslint:disable-next-line: prefer-for-of\r\n for (const file of files) {\r\n this.attachments.push(file);\r\n // console.log(files[i]);\r\n }\r\n }\r\n }\r\n\r\n public dropped(files: NgxFileDropEntry[]): void {\r\n for (const droppedFile of files) {\r\n if (droppedFile.fileEntry.isFile) {\r\n const fileEntry = droppedFile.fileEntry as FileSystemFileEntry;\r\n fileEntry.file((file: File) => {\r\n this.attachments.push(file);\r\n });\r\n }\r\n }\r\n }\r\n\r\n uploadFinished(val): void {\r\n if (!val.getValue()) {\r\n if (this.shouldRemoveDrawnObject) {\r\n this.toasterService.warning('feedbackCanceled_toaster_msg');\r\n } else {\r\n this.toasterService.success('feedbackRegistered_toaster_msg');\r\n const overlayLayers = this.mapLibNgService.map().getOverlayLayers();\r\n if (overlayLayers && overlayLayers.length > 0) {\r\n overlayLayers.forEach((layer) => {\r\n if (layer.isVisible) {\r\n this.mapLibNgService.map().refreshLayerByGuid(layer.id);\r\n }\r\n });\r\n }\r\n }\r\n this.feedback.featureCollection.features = [];\r\n this.feedback.text = ''; // reset text-field, leave the name/email/phone\r\n this.attachments = []; // clear attachments\r\n this.shouldRemoveDrawnObject = true;\r\n\r\n this.modalService.hide('feedbackModal');\r\n }\r\n }\r\n\r\n uploadError(): void {\r\n this.shouldRemoveDrawnObject = true;\r\n this.toasterService.error('uploadFailed_toaster_msg');\r\n this.modalService.hide('feedbackModal');\r\n }\r\n\r\n removeAttachment(index: any): void {\r\n this.attachments.splice(index, 1);\r\n this.attachmentFileInput.value = '';\r\n }\r\n}\r\n","\r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n

    \r\n {{(vm.elevationResult?.terreng || vm.admEnhetResult?.kommunenavn) ? ('youSelectedPoint' | translate) + ' ' : ''}} \r\n {{vm.elevationResult?.terreng ? vm.elevationResult.terreng : ''}}{{(vm.elevationResult?.terreng && vm.admEnhetResult?.kommunenavn) ? ', ' : ''}}\r\n {{vm.admEnhetResult?.kommunenavn ? vm.admEnhetResult.kommunenavn + ', ': ''}} \r\n {{vm.admEnhetResult?.fylkesnavn}}

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n {{'attachmentsInput' | translate}}\r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{'select_file_for_upload' | translate}}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{file.name}}\r\n \r\n
    \r\n
    \r\n

    {{'personalInfoTxt' | translate}} {{'linkTxt' | translate }}

    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    ","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport {\r\n IsyMapEmitterService, MapLibNgService\r\n} from '@isygis/isy-map';\r\nimport { Subscription } from 'rxjs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { EToolId } from '@isygis/isy-configs';\r\nimport { IsyFeedbackModalComponent } from './isy-feedback-modal/isy-feedback-modal.component';\r\n\r\n@Component({\r\n selector: 'lib-isy-feedback',\r\n templateUrl: './isy-feedback.component.html',\r\n styleUrls: ['./isy-feedback.component.scss'],\r\n})\r\nexport class IsyFeedbackComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private dynamicModalService: IsyDynamicModalService\r\n ) {}\r\n\r\n drawFeatureEnd$ = this.mapEmitterService.drawFeatureEndEmitter$;\r\n\r\n ngOnInit(): void {\r\n setTimeout(() => {\r\n this.mapLibNgService\r\n .map()\r\n .activateDrawingManager(this.createAdditionalOptions());\r\n }, 500);\r\n // this.mapActionDialogService.hide('feedbackDialog');\r\n this.subscriptions.push(\r\n this.mapEmitterService.drawFeatureEndEmitter$.subscribe(\r\n (featureCollection) => {\r\n if (featureCollection) {\r\n // this.mapActionDialogService.hide(EToolId.FEEDBACK);\r\n this.dynamicModalService.showModalWithComponent(\r\n 'feedbackModal',\r\n IsyFeedbackModalComponent,\r\n undefined,\r\n {\r\n showHeader: true,\r\n modalHeader: {\r\n headerTitle: 'feedback_header',\r\n },\r\n }\r\n );\r\n // setTimeout(() => {\r\n // this.mapActionDialogService.hide(EToolId.FEEDBACK);\r\n // }, 1000);\r\n }\r\n }\r\n )\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n // For removing the drawin point GeoJSON: 'remove'\r\n this.mapLibNgService\r\n .map()\r\n .reactivateDrawingManager(this.createAdditionalOptions());\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n this.mapActionDialogService.hide(EToolId.FEEDBACK);\r\n console.log('DEACTIVATE MAP ACTION FEEDBACK');\r\n // this.drawService.removeAllObjects();\r\n }\r\n\r\n deactivateDraw(): void {\r\n this.mapActionDialogService.hide(EToolId.FEEDBACK);\r\n }\r\n createAdditionalOptions(): any {\r\n return {\r\n GeoJSON: 'remove',\r\n mode: 'draw',\r\n type: 'Point',\r\n style: {\r\n image: {\r\n radius: 5,\r\n stroke: {\r\n color: '#474a4c',\r\n width: 3,\r\n },\r\n fill: {\r\n color: '#474a4c',\r\n },\r\n },\r\n },\r\n };\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n","
    \r\n
    \r\n \r\n
    \r\n
    \r\n no oblique for you\r\n
    \r\n
    \r\n","import {\r\n Component,\r\n OnInit,\r\n OnDestroy\r\n} from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport {\r\n IsyMapService,\r\n IsyMapEmitterService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'lib-isy-oblique',\r\n templateUrl: './isy-oblique.component.html',\r\n styleUrls: ['./isy-oblique.component.scss'],\r\n})\r\nexport class IsyObliqueComponent implements OnInit, OnDestroy {\r\n // @ViewChild('isyOblique') isyOblique: any;\r\n projectConfig: IProjectConfig;\r\n hasoblique = false;\r\n obliqueurl: SafeResourceUrl;\r\n configloadSubscription: Subscription;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private mapService: IsyMapService,\r\n private maplibng: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.projectConfig = this.mapService.getProjectConfig();\r\n this.initObliqueSrc();\r\n this.configloadSubscription =\r\n this.mapEmitterService.mapConfigLoadEmitter$.subscribe(() =>\r\n this.reInit()\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.configloadSubscription.unsubscribe();\r\n }\r\n\r\n reInit() {\r\n console.log('oblique reinit');\r\n this.hasoblique = false;\r\n this.obliqueurl = undefined;\r\n this.initObliqueSrc();\r\n }\r\n\r\n initObliqueSrc() {\r\n if (\r\n this.projectConfig &&\r\n this.projectConfig.config &&\r\n this.projectConfig.config.project &&\r\n this.projectConfig.config.project.webinnsynurl\r\n ) {\r\n if (this.obliqueurl) {\r\n return;\r\n }\r\n const webinnsynurl = this.projectConfig.config.project.webinnsynurl;\r\n if (\r\n this.projectConfig.config.project.obliqueenabled &&\r\n this.projectConfig.config.project.obliqueblomurbex\r\n ) {\r\n const center = this.maplibng.map().getCenter();\r\n let obliqueurl = webinnsynurl;\r\n if (!obliqueurl) {\r\n this.obliqueurl = '';\r\n this.hasoblique = false;\r\n return;\r\n }\r\n const pos = obliqueurl.indexOf('?');\r\n if (pos > 0) {\r\n obliqueurl = obliqueurl.slice(0, pos);\r\n }\r\n const coord = this.maplibng\r\n .map()\r\n .transformToGeographic([center.lon, center.lat], center.epsg);\r\n obliqueurl += '/Content/blom/UrbEx.aspx?east=';\r\n obliqueurl += coord[0];\r\n obliqueurl += '&north=';\r\n obliqueurl += coord[1];\r\n obliqueurl += '&komm=';\r\n obliqueurl += this.projectConfig.config.project.defaultmunicipality;\r\n this.obliqueurl =\r\n this.sanitizer.bypassSecurityTrustResourceUrl(obliqueurl);\r\n this.hasoblique = true;\r\n }\r\n }\r\n console.log('oblique?', this.hasoblique);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { MapLibNgService, IsyMapEmitterService, IsyMapService } from '@isygis/isy-map';\r\nimport { BehaviorSubject, combineLatest, Subscription } from 'rxjs';\r\nimport {\r\n IKommuneInfo,\r\n IconType,\r\n ISubLayers,\r\n IIsyLayer,\r\n} from '@isygis/isy-configs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\nexport interface IPrintMapSheetSizeOption {\r\n id: 'a0' | 'a1' | 'a2' | 'a3' | 'a4' | 'a5' | 'a6';\r\n name: string;\r\n}\r\nexport interface IPrintMapFormatOption {\r\n id: 'landscape' | 'portrait';\r\n name: string;\r\n}\r\nexport interface IPrintMapScaleOption {\r\n id: string;\r\n name: string;\r\n value?: number;\r\n}\r\nexport interface IPrintMapCheckbox {\r\n id: string;\r\n name: string;\r\n isCheck: boolean;\r\n}\r\nexport interface IIsyLayersOption {\r\n data: IIsyLayer;\r\n isCheck: boolean;\r\n}\r\n\r\nexport interface IPrintMap {\r\n checkboxes: IPrintMapCheckbox[];\r\n formats: IPrintMapFormatOption[];\r\n sheetSizes: IPrintMapSheetSizeOption[];\r\n scales: IPrintMapScaleOption[];\r\n dpis: IPrintMapScaleOption[];\r\n legendLayers: IIsyLayersOption[];\r\n}\r\n@Component({\r\n selector: 'lib-isy-print-map',\r\n templateUrl: './isy-print-map.component.html',\r\n styleUrls: ['./isy-print-map.component.scss'],\r\n})\r\nexport class IsyPrintMapComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription: Subscription = new Subscription();\r\n invalidCombinationSheetSizeDpi = new BehaviorSubject(false);\r\n\r\n showSpinner = false;\r\n\r\n printMapOptions: IPrintMap = {\r\n checkboxes: [\r\n // Scale disabled due to WM-6143\r\n { id: 'scale', name: 'scale_lbl', isCheck: true },\r\n { id: 'graticule', name: 'graticule_lbl', isCheck: false },\r\n { id: 'legends_new_page', name: 'legends_new_page_lbl', isCheck: true },\r\n { id: 'no_info', name: 'no_info_lbl', isCheck: false },\r\n ],\r\n formats: [\r\n { id: 'landscape', name: 'landscape_lbl' },\r\n { id: 'portrait', name: 'portrait_lbl' },\r\n ],\r\n sheetSizes: [\r\n { id: 'a5', name: 'A5' },\r\n { id: 'a4', name: 'A4' },\r\n { id: 'a3', name: 'A3' },\r\n { id: 'a2', name: 'A2' },\r\n { id: 'a1', name: 'A1' },\r\n { id: 'a0', name: 'A0' },\r\n ],\r\n dpis: [\r\n { id: '72', name: '72 dpi (rask)', value: 72 },\r\n { id: '150', name: '150 dpi', value: 150 },\r\n { id: '200', name: '200 dpi', value: 200 },\r\n { id: '300', name: '300 dpi (langsom)', value: 300 },\r\n ],\r\n scales: [\r\n { id: '0.05', name: '1: 50', value: 50 },\r\n { id: '0.075', name: '1: 75', value: 75 },\r\n { id: '0.1', name: '1: 100', value: 100 },\r\n { id: '0.125', name: '1: 125', value: 125 },\r\n { id: '0.150', name: '1: 150', value: 150 },\r\n { id: '0.5', name: '1: 500', value: 500 },\r\n { id: '1', name: '1: 1000', value: 1000 },\r\n { id: '2', name: '1: 2000', value: 2000 },\r\n { id: '5', name: '1: 5000', value: 5000 },\r\n { id: '10', name: '1: 10000', value: 10000 },\r\n { id: '20', name: '1: 20000', value: 20000 },\r\n { id: '25', name: '1: 25000', value: 25000 },\r\n { id: '50', name: '1: 50000', value: 50000 },\r\n { id: '100', name: '1: 100000', value: 100000 },\r\n { id: '250', name: '1: 250000', value: 250000 },\r\n { id: '500', name: '1: 500000', value: 500000 },\r\n ],\r\n legendLayers: [],\r\n };\r\n\r\n constructor(\r\n private mapService: IsyMapService,\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private toasterService: IsyToasterService\r\n ) {}\r\n math = Math;\r\n number = Number;\r\n\r\n activeFormat: IPrintMapFormatOption = this.printMapOptions.formats[1];\r\n activeSheetSize: IPrintMapSheetSizeOption =\r\n this.printMapOptions.sheetSizes[1];\r\n activeScale: IPrintMapScaleOption = this.printMapOptions.scales[6];\r\n activeDpi: IPrintMapScaleOption = this.printMapOptions.dpis[1];\r\n mapTitle = 'Kartutsnitt';\r\n mapText = '';\r\n iconText = '';\r\n activeScaleText = this.activeScale?.value || 1000;\r\n allLayersCheck = false;\r\n\r\n projectConfig$ = this.mapService.projectConfig$;\r\n projectIcon$ = this.mapService.projectConfig$.pipe(\r\n map((projectConfig: IProjectConfig) => {\r\n if (projectConfig && projectConfig.config.project.headericon) {\r\n const headerIcon = projectConfig.config.project.headericon;\r\n if (headerIcon.includes('https://')) {\r\n return headerIcon;\r\n }\r\n const url = this.mapService.getHeaderIconBaseUrl();\r\n return url + headerIcon;\r\n }\r\n return undefined;\r\n })\r\n );\r\n projectMinScalePrDpi$ = this.mapService.projectConfig$.pipe(\r\n map((projectConfig: IProjectConfig) => {\r\n const numzoomlevelsForProject =\r\n Number(projectConfig?.config?.project?.numzoomlevels) || 19;\r\n const base = 510525440 / 300; // calculated min scale for level 0 divided by dpi used in calculation\r\n const projectMinScalePrDpi = base / Math.pow(2, numzoomlevelsForProject);\r\n return projectMinScalePrDpi; //\r\n })\r\n );\r\n\r\n vm$ = combineLatest([\r\n this.mapService.kommuneInfoWithVaapenUrl$,\r\n this.projectIcon$,\r\n this.projectMinScalePrDpi$,\r\n ]).pipe(\r\n map(\r\n ([kommuneInfoWithVaapenUrl, projectIcon, projectMinScalePrDpi]: [\r\n IKommuneInfo,\r\n string,\r\n number\r\n ]) => ({\r\n kommuneInfo: kommuneInfoWithVaapenUrl,\r\n kommunenavn: kommuneInfoWithVaapenUrl\r\n ? kommuneInfoWithVaapenUrl.kommunenavn\r\n : undefined,\r\n projectIcon,\r\n projectMinScalePrDpi,\r\n })\r\n )\r\n );\r\n\r\n ngOnInit(): void {\r\n this.mapLibNgService.map().deactivateFeatureSelector();\r\n this.mapLibNgService.map().deactivateHoverInfo();\r\n this.updatePrintBox();\r\n this.subscription.add(\r\n this.mapEmitterService.exportDoneEmitter$.subscribe(() => {\r\n this.updatePrintBox();\r\n this.showSpinner = false;\r\n })\r\n );\r\n this.subscription.add(\r\n this.mapEmitterService.changeLayersEmitter$.subscribe(() => {\r\n this.updateVisibleLayerList();\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.mapLibNgService.map().deactivatePrintBoxSelect();\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n this.mapLibNgService.map().activateHoverInfo();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n async getOptions(kommuneInfo?: IKommuneInfo, icon?: string) {\r\n const noInfo = this.printMapOptions.checkboxes.find((o) => o.id === 'no_info')?.isCheck;\r\n const options = {\r\n sheetSize: this.activeSheetSize.id,\r\n noInfo: noInfo,\r\n format: this.activeFormat.id,\r\n resolutionDpi: this.activeDpi.id,\r\n graticule: {\r\n show: this.printMapOptions.checkboxes.find((o) => o.id === 'graticule')\r\n ?.isCheck,\r\n showDebug: this.printMapOptions.checkboxes.find(\r\n (o) => o.id === 'graticule_debug'\r\n )?.isCheck,\r\n },\r\n scale: {\r\n show: this.printMapOptions.checkboxes.find((o) => o.id === 'scale')\r\n ?.isCheck,\r\n title: `Målestokk: 1:${this.activeScaleText}`,\r\n value: Number(this.activeScaleText) / 1000, // 10 = 1:10000\r\n },\r\n northArrow: {\r\n show: true,\r\n url: './assets/img/northArrow1.png',\r\n type: 'PNG',\r\n width: 60, // px\r\n height: 120, // px\r\n },\r\n icon: await this.getIconSize(kommuneInfo, icon),\r\n margins: {\r\n // mm\r\n top: noInfo ? 0 : 10,\r\n bottom: noInfo ? 0 : 10,\r\n left: noInfo ? 0 : 10,\r\n right: noInfo ? 0 : 10,\r\n },\r\n title: this.mapTitle,\r\n text: this.mapText,\r\n disclaimer:\r\n 'Det tas forbehold om evt. feil/mangler i kartgrunnlaget. I forbindelse med prosjektering/anleggsarbeid må aktuelle faginstans kontaktes.',\r\n dateTitle: 'Dato:',\r\n signTitle: 'Sign:',\r\n formatTitle: 'Format',\r\n legendLayers: this.printMapOptions.legendLayers\r\n .filter((x) => x.isCheck)\r\n .map((x) => x.data),\r\n legendsOnNewPage: this.printMapOptions.checkboxes.find(\r\n (o) => o.id === 'legends_new_page'\r\n )?.isCheck,\r\n errorLogger: this.errorLoggCreator(),\r\n infoLogger: this.infoLoggCreator(),\r\n kommuneNavn: this.iconText,\r\n };\r\n return options;\r\n }\r\n\r\n private async getIconSize(kommuneInfo?: IKommuneInfo, icon?: string) {\r\n const heraldryUrl = kommuneInfo?.kommunevaapenurl?.replace(/%C3%A5/g, 'å');\r\n const emptyPixel =\r\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAA1JREFUGFdj6OU58x8ABPQCZXZnkoQAAAAASUVORK5CYII=';\r\n const iconUrls = [\r\n icon,\r\n this.mapService.getHeaderIconUrl(),\r\n heraldryUrl,\r\n emptyPixel,\r\n ];\r\n let iconUrl: string;\r\n let iconType: IconType;\r\n let img: HTMLImageElement;\r\n for (const url of iconUrls) {\r\n try {\r\n iconType = this.getIconType(url);\r\n img = await this.getMeta(url);\r\n iconUrl = url;\r\n break; // working url found - exiting loop\r\n } catch (e) {\r\n console.log('failed finding icon at url: ', url);\r\n }\r\n }\r\n const w = img.width;\r\n const h = img.height;\r\n\r\n const standardIcon = {\r\n show: true,\r\n url: iconUrl,\r\n type: iconType,\r\n width: w === 418 ? 418 : Math.min(w, 220), // px\r\n height: h === 307 ? 307 : Math.min(h, 161), // px\r\n // height: h === 307 ? 307 : Math.min(h, 307), // px\r\n };\r\n\r\n const smallIcon = {\r\n show: true,\r\n url: iconUrl,\r\n type: iconType,\r\n width: Math.min(w, 220), // px\r\n height: Math.min(h, 161), // px\r\n };\r\n\r\n const a5: boolean = this.activeSheetSize.id.includes('a5');\r\n const smallIconFitsBetter: boolean = a5; // (portrait && a4) || a5;\r\n\r\n if (smallIconFitsBetter) {\r\n return smallIcon;\r\n } else {\r\n return standardIcon;\r\n }\r\n }\r\n\r\n private getMeta(url): Promise {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = () => resolve(img);\r\n img.onerror = () => reject();\r\n img.src = url;\r\n });\r\n }\r\n\r\n private getIconType(url: string): IconType {\r\n const fileEnding: string = url.split('.').pop();\r\n const includesSvg: boolean = fileEnding.includes('svg');\r\n if (includesSvg) {\r\n return IconType.Svg;\r\n } else {\r\n return IconType.Png;\r\n }\r\n }\r\n\r\n selectAllLegends(): void {\r\n this.allLayersCheck = !this.allLayersCheck;\r\n for (const layer of this.printMapOptions.legendLayers) {\r\n layer.isCheck = this.allLayersCheck;\r\n }\r\n }\r\n\r\n selectSingleLegend(lyr): void {\r\n lyr.isCheck = !lyr.isCheck;\r\n // If all layers are checked and one layer is manually unselected, set allLayersChecked to false\r\n if (this.allLayersCheck && !lyr.isCheck) {\r\n this.allLayersCheck = false;\r\n }\r\n // If all layers are manually checked, set allLayersCheck to true\r\n let allChecked = true;\r\n for (const layer of this.printMapOptions.legendLayers) {\r\n allChecked = allChecked && layer.isCheck;\r\n }\r\n this.allLayersCheck = allChecked;\r\n }\r\n\r\n async printMap(kommuneInfo: IKommuneInfo, icon: string): Promise {\r\n this.showSpinner = true;\r\n this.mapLibNgService.map().deactivatePrintBoxSelect();\r\n this.mapLibNgService\r\n .map()\r\n .activateExportPdf(await this.getOptions(kommuneInfo, icon));\r\n }\r\n\r\n updatePrintBox(): void {\r\n const options = {\r\n scale: this.activeScaleText,\r\n orientation: this.activeFormat.id,\r\n sheetSize: this.activeSheetSize.id,\r\n };\r\n this.mapLibNgService.map().deactivatePrintBoxSelect();\r\n this.mapLibNgService.map().activatePrintBoxSelect(options);\r\n this.invalidCombinationSheetSizeDpi.next(this.activeSheetSize.id === 'a0' && this.activeDpi.id === '300')\r\n\r\n }\r\n\r\n updateScale(value: string): void {\r\n const updateScaleValue = Number(value);\r\n this.activeScale = {\r\n id: `${updateScaleValue / 1000}`,\r\n name: `1: ${updateScaleValue}`,\r\n value: updateScaleValue,\r\n };\r\n }\r\n\r\n updateVisibleLayerList(): void {\r\n const layers: IIsyLayer[] = this.mapLibNgService.map().getOverlayLayers();\r\n const isyLayers: IIsyLayersOption[] = layers\r\n .filter((lyr: IIsyLayer) => lyr.isVisible)\r\n .map((lyr: IIsyLayer) => {\r\n const newSubLyr = lyr.subLayers.map((sublyr) =>\r\n this.updateMissingLayerLegends(sublyr)\r\n );\r\n lyr.subLayers = newSubLyr;\r\n return lyr;\r\n })\r\n .filter(\r\n (lyr: IIsyLayer) => this.hasValidHttpUrl(lyr) || this.hasWfsStyles(lyr)\r\n )\r\n .map((sublyr: IIsyLayer) => ({\r\n data: sublyr,\r\n isCheck: false,\r\n }));\r\n this.printMapOptions.legendLayers = isyLayers;\r\n }\r\n\r\n updateMissingLayerLegends(sublyr: ISubLayers) {\r\n if (!sublyr.legendGraphicUrl) {\r\n sublyr.legendGraphicUrl = this.mapLibNgService\r\n .map()\r\n .getLayerLegendUrl(sublyr);\r\n }\r\n return sublyr;\r\n }\r\n\r\n hasWfsStyles(lyr: IIsyLayer) {\r\n return lyr.styles && lyr.styles.length > 0;\r\n }\r\n\r\n hasValidHttpUrl(lyr: IIsyLayer) {\r\n return this.isValidHttpUrl(lyr.subLayers[0].legendGraphicUrl);\r\n }\r\n\r\n isValidHttpUrl(str: string) {\r\n let url;\r\n try {\r\n url = new URL(str);\r\n } catch (_) {\r\n return false;\r\n }\r\n return url.protocol === 'http:' || url.protocol === 'https:';\r\n }\r\n\r\n errorLoggCreator(): (string) => void {\r\n const toaster = this.toasterService;\r\n return (err: string) => {\r\n toaster.error(err);\r\n console.log('error: ', err);\r\n };\r\n }\r\n\r\n infoLoggCreator(): (string) => void {\r\n const toaster = this.toasterService;\r\n return (info: string) => {\r\n toaster.info(info);\r\n console.log('info: ', info);\r\n };\r\n }\r\n}\r\n","
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    60\">\r\n Teksten kan være for lang til å få plass i tittelfeltet\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    350 || mapText.split('\\n').length > 8\">\r\n Teksten kan være for lang til å få plass i kommentarfeltet\r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    25\">\r\n Teksten kan være for lang til å få plass under ikonet\r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{format.name | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{dpi.name | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n {{activeScale.name | translate}} \r\n \r\n
      \r\n
    • \r\n vm.projectMinScalePrDpi * activeDpi.value\" class=\"dropdown-item\">{{scale.name | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n \r\n
    \r\n \r\n
      \r\n
    • \r\n {{sheetSize.name | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {{'printMapDisabled' | translate}}\r\n {{'printMapDisabledSheetSizeDpi' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'getAddressString',\r\n})\r\nexport class GetAddressStringPipe implements PipeTransform {\r\n transform(value: any, ...args: any[]): any {\r\n if (value && value.Name) {\r\n return (\r\n value.Name +\r\n (value.ZipCode ? ', ' + value.ZipCode : '') +\r\n (value.PostalCode ? ' ' + value.PostalCode : '')\r\n );\r\n }\r\n return '';\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\nimport { fadeIn, fadeOut } from '@isygis/isy-animations';\r\nimport { combineLatest, of } from 'rxjs';\r\nimport { map, catchError, shareReplay } from 'rxjs/operators';\r\nimport { IsyPropertyReportService } from '../isy-property-report.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyMapService, MapLibNgService } from '@isygis/isy-map';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyPropertyReportPrintComponent } from '../isy-property-report-print/isy-property-report-print.component';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { EToolId } from '@isygis/isy-configs';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { OwnerList2CSV } from '@isygis/isy-utils';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n\r\n@Component({\r\n selector: 'lib-isy-property-report-list',\r\n templateUrl: './isy-property-report-list.component.html',\r\n styleUrls: ['./isy-property-report-list.component.scss'],\r\n animations: [\r\n trigger('toggleHeight', [\r\n state(\r\n 'false',\r\n style({\r\n height: '0px',\r\n opacity: '0',\r\n overflow: 'hidden',\r\n })\r\n ),\r\n state(\r\n 'true',\r\n style({\r\n maxHeight: '100%',\r\n opacity: '1',\r\n })\r\n ),\r\n transition('false => true', animate('200ms ease-in')),\r\n transition('true => false', animate('200ms ease-out')),\r\n ]),\r\n // pageAnimation\r\n trigger('fadeOut', fadeOut()),\r\n trigger('fadeIn', fadeIn(':enter')),\r\n ],\r\n})\r\nexport class IsyPropertyReportListComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n mapLibNgServiceMap;\r\n eventHandler;\r\n eventTypes;\r\n showSpinner = true;\r\n eventRegistered = false;\r\n choosenFeature;\r\n\r\n constructor(\r\n private propertyReportService: IsyPropertyReportService,\r\n private mapLibNgService: MapLibNgService,\r\n private bladeService: IsyBladeService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private toasterService: IsyToasterService,\r\n private mapService: IsyMapService,\r\n private commonService: IsyCommonService\r\n ) {\r\n this.mapLibNgServiceMap = this.mapLibNgService.map();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n }\r\n\r\n neighbors$ = this.propertyReportService.ownersFromPolygon$.pipe(\r\n map((value) => {\r\n if (value && !this.eventRegistered) {\r\n // this.bladeService.showBladeWithComponent('propertyRaportList',\r\n // IsyPropertyReportListComponent, undefined, { position: 'left', showHeader: true,\r\n // bladeHeader: {headerTitle: 'Property report', headerIcon: this.fontAwesomeIcons.faDrawPolygon}});\r\n this.eventHandler.registerEvent(\r\n this.eventTypes.FeatureSelected,\r\n 'FeatureSelected',\r\n this.featureSelected.bind(this)\r\n );\r\n this.eventHandler.registerEvent(\r\n this.eventTypes.FeatureDeselected,\r\n 'FeatureDeselected',\r\n this.featureDeselected.bind(this)\r\n );\r\n this.showSpinner = false;\r\n this.eventRegistered = true;\r\n this.mapActionDialogService.changeDialogText(\r\n EToolId.PROPERTY_REPORT,\r\n 'select_polygon'\r\n );\r\n }\r\n return value;\r\n }),\r\n shareReplay(1),\r\n catchError((error) => {\r\n this.toasterService.error(error, 'catchError_toaster_title');\r\n setTimeout(() => {\r\n this.bladeService.hide(EToolId.PROPERTY_REPORT);\r\n }, 100);\r\n return of(undefined);\r\n })\r\n );\r\n findMatrikkelenhetForUnikId$ =\r\n this.propertyReportService.findMatrikkelenhetForUnikId$;\r\n deselectMatrikkelenhet$ = this.propertyReportService.deselectCadastre$;\r\n neighbors;\r\n\r\n vm$ = combineLatest([\r\n this.neighbors$,\r\n this.findMatrikkelenhetForUnikId$,\r\n this.deselectMatrikkelenhet$,\r\n this.propertyReportService.choosenFeature$,\r\n ]).pipe(\r\n map(\r\n ([neighbors, findMatrikkelenhetForUnikId, deselectMatrikkelenhet, choosenFeature]: [\r\n any[],\r\n any,\r\n number,\r\n any\r\n ]) => {\r\n if (!this.neighbors) {\r\n this.neighbors = neighbors;\r\n }\r\n if (\r\n findMatrikkelenhetForUnikId &&\r\n neighbors &&\r\n deselectMatrikkelenhet === -1\r\n ) {\r\n const findEnhetIndex = neighbors.findIndex(\r\n (n) => n.Id === findMatrikkelenhetForUnikId[0].Id\r\n );\r\n if (findEnhetIndex === -1) {\r\n neighbors.push(findMatrikkelenhetForUnikId[0]);\r\n this.neighbors = neighbors;\r\n this.showSpinner = neighbors ? false : true;\r\n }\r\n }\r\n if (deselectMatrikkelenhet && deselectMatrikkelenhet !== -1) {\r\n const findEnhetIndex = this.neighbors.findIndex(\r\n (n) => n.Id === deselectMatrikkelenhet\r\n );\r\n if (findEnhetIndex !== -1) {\r\n this.neighbors.splice(findEnhetIndex, 1);\r\n this.showSpinner = false;\r\n }\r\n }\r\n this.choosenFeature = choosenFeature;\r\n return {\r\n neighbors,\r\n findMatrikkelenhetForUnikId,\r\n };\r\n }\r\n )\r\n // tap(result => console.log('REPORT LIST: ', result))\r\n );\r\n\r\n ngOnInit(): void {\r\n this.commonService.toolsIsActive(true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.eventHandler.unRegisterEvent(\r\n this.eventTypes.FeatureSelected,\r\n 'FeatureSelected',\r\n this.featureSelected.bind(this)\r\n );\r\n this.eventHandler.unRegisterEvent(\r\n this.eventTypes.FeatureDeselected,\r\n 'FeatureDeselected',\r\n this.featureDeselected.bind(this)\r\n );\r\n this.propertyReportService.newCadastreAction.next(undefined);\r\n this.propertyReportService.deselectCadastreAction.next(undefined);\r\n this.propertyReportService.setActivatedFeatureSelector(false);\r\n this.mapLibNgServiceMap.deactivateFeatureSelector();\r\n this.commonService.toolsIsActive(false);\r\n setTimeout(() => {\r\n this.mapActionDialogService.hide(EToolId.PROPERTY_REPORT);\r\n }, 100);\r\n\r\n this.propertyReportService.setChoosenFeature(undefined);\r\n }\r\n\r\n featureDeselected(result): void {\r\n const id = result ? Number(result.properties.UNIKID) : -1;\r\n this.propertyReportService.deselectCadastreAction.next(id);\r\n this.propertyReportService.newCadastreAction.next(undefined);\r\n }\r\n\r\n featureSelected(result): void {\r\n console.log('Feature selected: ', result);\r\n this.propertyReportService.newCadastreAction.next(result.properties);\r\n this.showSpinner = true;\r\n }\r\n\r\n mouseOver(neighbor: any): void {\r\n const visibleSubLayers = this.mapLibNgServiceMap.getVisibleSubLayers();\r\n const layerWithShowNeighborList = visibleSubLayers.find(\r\n (l) => l.showneighborlist === true\r\n );\r\n if (layerWithShowNeighborList) {\r\n const feature = this.mapLibNgServiceMap.getFeatureByUnikId(\r\n layerWithShowNeighborList,\r\n neighbor.Id\r\n );\r\n if (feature) {\r\n this.mapLibNgServiceMap.highlightFeature(feature);\r\n }\r\n }\r\n }\r\n\r\n mouseOut(): void {\r\n this.mapLibNgServiceMap.clearHighlightedFeatures();\r\n }\r\n\r\n showReport(): void {\r\n if (this.neighbors) {\r\n let feature;\r\n if (this.choosenFeature?.features[0]?.properties['KOMM'] && this.choosenFeature?.features[0]?.properties['GNR'] && this.choosenFeature?.features[0]?.properties['BNR']) {\r\n feature = {\r\n 'properties': {\r\n 'KOMM': this.choosenFeature?.features[0]?.properties['KOMM'],\r\n 'GNR': this.choosenFeature?.features[0]?.properties['GNR'],\r\n 'BNR': this.choosenFeature?.features[0]?.properties['BNR'],\r\n 'FNR': this.choosenFeature?.features[0]?.properties['FNR'],\r\n 'SNR': this.choosenFeature?.features[0]?.properties['SNR'],\r\n }\r\n };\r\n }\r\n this.bladeService.showBladeWithComponent(\r\n 'printPropertyReport',\r\n IsyPropertyReportPrintComponent,\r\n { neighbors: this.neighbors , feature },\r\n { fullScreen: true, position: 'top' }\r\n );\r\n }\r\n }\r\n\r\n // private getPropertyInfo(feature: any): ICadastre {\r\n // if (feature && feature.properties) {\r\n // const komm = feature.properties['KOMM'] || feature.properties['KNR'] || feature.properties['KOMMUNENR'];\r\n // const gnr = feature.properties['GARDSNR'] || feature.properties['GNR'];\r\n // const bnr = feature.properties['BRUKSNR'] || feature.properties['BNR'];\r\n // const fnr = feature.properties['FESTENR'] || feature.properties['FNR'] || 0;\r\n // const snr = feature.properties['SEKSJONSNR'] || feature.properties['SNR'] || 0;\r\n\r\n // if (komm && gnr && bnr) {\r\n // return {\r\n // komm,\r\n // gnr,\r\n // bnr,\r\n // fnr,\r\n // snr\r\n // } as ICadastre;\r\n // }\r\n // }\r\n // return undefined;\r\n // }\r\n\r\n naboliste2CSV(): void {\r\n const neighborlistFormat = this.mapService.getProjectConfig().config.project.neighborlistcsvformat;\r\n OwnerList2CSV(this.neighbors, 'eierrapport.csv', neighborlistFormat);\r\n }\r\n}\r\n","
    \r\n
    \r\n {{'selectedNeighbors' | translate}}: {{neighbors.length}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {{neighbor.Gnr + '/' + neighbor.Bnr + '/' +\r\n (neighbor.Fnr === null ? 0 : neighbor.Fnr) + '/' +\r\n (neighbor.Snr === null ? 0 : neighbor.Snr) + ': ' + \r\n (neighbor.Bruksnavn === null ? '' : neighbor.Bruksnavn) | uppercase}}\r\n
    \r\n
    \r\n \r\n \r\n {{neighbor.Owners && neighbor.Owners.length ? neighbor.Owners.length : ''}}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'ownerNotAvailable' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_name' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.Name}}\r\n
    \r\n ({{owner.Personnummer}})\r\n
    \r\n
    \r\n ({{owner.OrgNummer}})\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_address' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.Address | getAddressString}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_description' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.OwnerDescription}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'neighbor_ownership' | translate | uppercase}}\r\n
    \r\n
    \r\n {{owner.Ownership}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    ","import { Component, Input } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IKommuneInfo } from '@isygis/isy-configs';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\n\r\n@Component({\r\n selector: 'lib-isy-property-report-print',\r\n templateUrl: './isy-property-report-print.component.html',\r\n styleUrls: ['./isy-property-report-print.component.scss'],\r\n})\r\nexport class IsyPropertyReportPrintComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n @Input() data: any;\r\n\r\n constructor(\r\n private mapService: IsyMapService\r\n ) {}\r\n\r\n // TODO: IT HAS TO BE FIX - WHEN USER NOT CLICK TO THE MAP FIRST kommuneInfo is UNDEFINED!\r\n vm$ = combineLatest([this.mapService.kommuneInfoWithVaapenUrl$]).pipe(\r\n map(([kommuneInfoWithVaapenUrl]: [IKommuneInfo]) => ({\r\n kommuneInfo: kommuneInfoWithVaapenUrl,\r\n kommunenavn: kommuneInfoWithVaapenUrl\r\n ? kommuneInfoWithVaapenUrl.kommunenavn\r\n : undefined,\r\n showHeraldry: true,\r\n }))\r\n // tap(result => console.log('POSITION INFO: ', result))\r\n );\r\n\r\n printPreview(): void {\r\n window.print();\r\n }\r\n}\r\n","
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {{vm.kommuneInfo.kommunenavn}} / {{vm.kommuneInfo.fylkesnavn}} \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n

    \r\n Hovedeiendom\r\n

    \r\n
    \r\n
    \r\n
    Komm-Gnr/Bnr/Fnr/Snr
    \r\n
    {{data.feature.properties.KOMM + '-' + data.feature.properties.GNR + '/' + data.feature.properties.BNR + '/' +\r\n (data.feature.properties.FNR === null ? 0 : data.feature.properties.FNR) + '/' +\r\n (data.feature.properties.SNR === null ? 0 : data.feature.properties.SNR)}}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n

    \r\n Eiendommer\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    Gnr/Bnr/Fnr/Snr
    \r\n
    {{neighbor.Gnr + '/' + neighbor.Bnr + '/' +\r\n (neighbor.Fnr === null ? 0 : neighbor.Fnr) + '/' +\r\n (neighbor.Snr === null ? 0 : neighbor.Snr)}}\r\n
    \r\n
    \r\n
    \r\n
    Bruksnavn
    \r\n
    {{(neighbor.Bruksnavn === null ? '' : neighbor.Bruksnavn)}}
    \r\n
    \r\n
    \r\n
    Adresse(r)
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{(address.Name ? address.Name : '') + (address.ZipCode ? ', ' + address.ZipCode: '') + (address.PostalCode ? ' ' + address.PostalCode: '') }}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    Eiere
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{'ownerNotAvailable' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {{owner.Name}}\r\n
    \r\n ({{owner.OrgNummer}})\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{owner.OwnerDescription}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {{owner.Address | getAddressString}}\r\n
    \r\n
    \r\n {{owner.Ownership}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n","import { Component, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport {\r\n GeoJsonUtilsService,\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport {\r\n BehaviorSubject,\r\n Subject,\r\n Subscription,\r\n concatAll,\r\n debounceTime,\r\n filter,\r\n from,\r\n map,\r\n takeUntil,\r\n tap,\r\n} from 'rxjs';\r\nimport { Feature, GeoJSON } from 'geojson';\r\n\r\nimport { EToolId } from '@isygis/isy-configs';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyPropertyReportListComponent } from './isy-property-report-list/isy-property-report-list.component';\r\nimport { IsyPropertyReportService } from './isy-property-report.service';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport {\r\n IAnalyseMethod,\r\n PropertyArea,\r\n} from '../isy-analyses-and-reports/isy-analyses-and-reports.component';\r\nimport { Position } from 'geojson';\r\nimport { TitleLabelPipe, getUniqueId } from '@isygis/isy-utils';\r\nimport simplify from '@turf/simplify';\r\nimport buffer from '@turf/buffer';\r\n\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Component({\r\n selector: 'lib-isy-property-report',\r\n templateUrl: './isy-property-report.component.html',\r\n styleUrls: ['./isy-property-report.component.scss'],\r\n})\r\nexport class IsyPropertyReportComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n subscription: Subscription = new Subscription();\r\n mapLibNgServiceMap;\r\n eventHandler;\r\n eventTypes;\r\n areaIsDrawn = false;\r\n chosenFeatureArr: any[] = [];\r\n chosenLayerId: number;\r\n deleteFeature = false;\r\n drawIsActivated = false;\r\n featureJson = null;\r\n epsg = 'EPSG:25833';\r\n features: any;\r\n destroy$: Subject = new Subject();\r\n methodsForAnalyseArea: IAnalyseMethod[] = [\r\n {\r\n id: 'Point',\r\n name: 'pointWithBuffer_txt',\r\n bufferDistance: 10,\r\n },\r\n {\r\n id: 'LineString',\r\n name: 'lineWithBuffer_txt',\r\n bufferDistance: 10,\r\n },\r\n {\r\n id: 'Polygon',\r\n name: 'Polygon'\r\n },\r\n {\r\n id: 'Feature',\r\n name: 'chooseFeature_txt',\r\n bufferDistance: 0,\r\n },\r\n ];\r\n selectedMethodForAnalyseArea: BehaviorSubject =\r\n new BehaviorSubject(this.methodsForAnalyseArea[0]);\r\n\r\n @Input() filterFeatureInfoLayers = [];\r\n @Input() showCadastreInModal = false;\r\n\r\n constructor(\r\n private propertyReportService: IsyPropertyReportService,\r\n private mapLibNgService: MapLibNgService,\r\n private bladeService: IsyBladeService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private commonService: IsyCommonService,\r\n private geoJsonUtilsService: GeoJsonUtilsService,\r\n private toasterService: IsyToasterService,\r\n private mapService: IsyMapService,\r\n private titleLabelPipe: TitleLabelPipe\r\n ) {\r\n this.mapLibNgServiceMap = this.mapLibNgService.map();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n }\r\n\r\n pushChosenFeature$ = this.mapEmitterService.featureInfoEndEmitter$.pipe(\r\n takeUntil(this.destroy$),\r\n filter((layerResp: any) => layerResp !== undefined),\r\n filter((layerResp: any) => layerResp.name !== undefined),\r\n map((layerResp: any) => {\r\n layerResp.features?.forEach((feat: PropertyArea) => {\r\n layerResp.name = this.titleLabelPipe.transform([\r\n layerResp.featureInfoTitle,\r\n feat.geometryObject.properties,\r\n layerResp.featureInfoElement,\r\n ]);\r\n });\r\n this.chosenFeatureArr.push(layerResp);\r\n this.chosenLayerId = layerResp.id;\r\n this.propertyReportService.setChoosenFeature(layerResp);\r\n return layerResp;\r\n }),\r\n debounceTime(200),\r\n map((layerResp: any) => this.pickFromRadioButtonList(layerResp))\r\n );\r\n clearFeatureArr$ = this.mapEmitterService.featureInfoStartEmitter$.pipe(\r\n takeUntil(this.destroy$),\r\n tap(() => (this.chosenFeatureArr = []))\r\n );\r\n\r\n findKeyFields(properties: any): any[] {\r\n const keyFields = [];\r\n const keyFieldCandidates = [\r\n ['KOMM', 'KNR', 'KOMMUNENR', 'komm', 'knr', 'kommunenr'],\r\n ['GNR', 'GARDSNR', 'gnr', 'gardsnr'],\r\n ['BNR', 'BRUKSNR', 'bnr', 'bruksnr'],\r\n ['FNR', 'FESTENR', 'fnr', 'festenr'],\r\n ['SNR', 'SEKSJONSNR', 'snr', 'seksjonsnr'],\r\n ['UNIKID', 'unikid'],\r\n ];\r\n keyFieldCandidates.forEach((propGroup) => {\r\n let found = false;\r\n propGroup.forEach((prop) => {\r\n if (!found && properties.find((p) => p.name === prop)) {\r\n keyFields.push(prop);\r\n found = true;\r\n }\r\n });\r\n });\r\n return keyFields;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.mapEmitterService.drawFeatureEndEmitter$.subscribe((featureJson) => {\r\n if (featureJson) {\r\n this.features = featureJson;\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n this.areaIsDrawn = true;\r\n this.drawIsActivated = false;\r\n }\r\n })\r\n );\r\n this.commonService.hideSearchBar(true);\r\n this.commonService.hideInfoPanel(true);\r\n\r\n this.subscription.add(this.clearFeatureArr$.subscribe());\r\n this.subscription.add(this.pushChosenFeature$.subscribe());\r\n this.mapLibNgService.map().deactivateHoverInfo();\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n this.epsg = this.mapService.getProjectConfig().config.project.epsg;\r\n this.selectMethodForAnalysis(this.selectedMethodForAnalyseArea.getValue());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.deleteDraw();\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n this.mapEmitterService.emitFeatureInfoEnd(undefined);\r\n this.mapLibNgServiceMap.deactivateDrawingManager();\r\n this.commonService.hideSearchBar(false);\r\n this.commonService.hideInfoPanel(false);\r\n // * Unpause events stopped when draw() was called\r\n this.unPause();\r\n this.mapLibNgService.map().activateHoverInfo();\r\n // Just in case..\r\n this.stopNeighborlist();\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n private stopNeighborlist(): void {\r\n this.mapLibNgServiceMap.deactivateFeatureSelector();\r\n this.propertyReportService.setActivatedFeatureSelector(false);\r\n this.mapLibNgServiceMap.deactivateDrawingManager();\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoStart);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoEnd);\r\n this.propertyReportService.polygonGeometryAction.next(undefined);\r\n }\r\n\r\n updateBufferDistance(bufferDistance: string): void {\r\n const old = this.selectedMethodForAnalyseArea.getValue();\r\n if (old.bufferDistance !== parseInt(bufferDistance, 10)) {\r\n this.selectedMethodForAnalyseArea.next({\r\n ...old,\r\n bufferDistance: bufferDistance === '' ? 0 : parseInt(bufferDistance, 10),\r\n });\r\n this.selectMethodForAnalysis(\r\n this.selectedMethodForAnalyseArea.getValue()\r\n );\r\n }\r\n }\r\n\r\n private createAdditionalOptions(): any {\r\n const area = this.selectedMethodForAnalyseArea.getValue();\r\n return {\r\n GeoJSON: this.features ? this.features : 'remove',\r\n deleteFeature: this.deleteFeature,\r\n mode: 'draw',\r\n type: area.id,\r\n buffer: area.bufferDistance,\r\n style: {\r\n fill: {\r\n color: 'rgba(0, 0, 160, 0.2)',\r\n },\r\n stroke: {\r\n color: 'green',\r\n width: 2,\r\n },\r\n },\r\n modify: false,\r\n showMeasurements: false,\r\n snapGuides: false,\r\n textValue: '',\r\n };\r\n }\r\n\r\n polygonCreated(polygonFeature): void {\r\n if (!polygonFeature) {\r\n return;\r\n }\r\n // const cleanupOptions = {\r\n // GeoJSON: 'remove',\r\n // deleteFeature: true,\r\n // };\r\n // this.mapLibNgServiceMap.reactivateDrawingManager(cleanupOptions); // To remove polygon\r\n\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureDeselected);\r\n this.mapLibNgServiceMap.deactivateDrawingManager();\r\n const visibleSubLayers = this.mapLibNgServiceMap.getVisibleSubLayers();\r\n let layerWithShowNeighborList = visibleSubLayers.find(\r\n (l) => l.showneighborlist === true\r\n );\r\n\r\n if (!layerWithShowNeighborList) {\r\n const overlayLayers = this.mapLibNgServiceMap.getOverlayLayers();\r\n layerWithShowNeighborList = overlayLayers.find(\r\n (l) => l.subLayers[0]?.showneighborlist === true\r\n );\r\n if (layerWithShowNeighborList) {\r\n this.mapLibNgServiceMap.showLayer(layerWithShowNeighborList);\r\n }\r\n }\r\n\r\n if (layerWithShowNeighborList) {\r\n this.bladeService.showBladeWithComponent(\r\n EToolId.PROPERTY_REPORT,\r\n IsyPropertyReportListComponent,\r\n undefined,\r\n {\r\n position: 'left',\r\n showHeader: true,\r\n bladeHeader: {\r\n headerTitle: 'propertyReport_header',\r\n showHelpBtn: true,\r\n headerIcon: this.fontAwesomeIcons.faDrawPolygon,\r\n },\r\n }\r\n );\r\n this.mapLibNgService\r\n .map()\r\n .describeFeatureUrl(\r\n layerWithShowNeighborList.url,\r\n layerWithShowNeighborList\r\n )\r\n .then(() => {\r\n if (polygonFeature) {\r\n polygonFeature = JSON.parse(polygonFeature);\r\n }\r\n if (\r\n polygonFeature &&\r\n polygonFeature.features &&\r\n polygonFeature.features[0] &&\r\n polygonFeature.features[0].geometry\r\n ) {\r\n this.propertyReportService.polygonGeometryAction.next(\r\n polygonFeature\r\n );\r\n }\r\n });\r\n } else {\r\n this.toasterService.warning(\r\n 'layerWithoutNeighborList_toaster_msg',\r\n 'layerWithoutNeighborList_toaster_title'\r\n );\r\n }\r\n }\r\n \r\n cleanUp(geoJson: any): GeoJSON {\r\n return simplify(geoJson);\r\n }\r\n geoJsonify(coordinates: Position[][]): GeoJSON {\r\n const template: any | GeoJSON = {\r\n type: 'FeatureCollection',\r\n features: [\r\n {\r\n type: 'Feature',\r\n geometry: {\r\n type: 'Polygon',\r\n coordinates: [[[10.683531445194882, 60.79074320760564]]],\r\n },\r\n properties: {\r\n measurement: 'unknown m²',\r\n style: {\r\n fill: {\r\n color: 'rgba(200, 0, 0, 0.4)',\r\n },\r\n stroke: {\r\n color: 'red',\r\n width: 5,\r\n },\r\n },\r\n },\r\n id: 'd9cd216a-c6ee-0fb6-f625-74701e121fd8',\r\n },\r\n ],\r\n };\r\n\r\n const geoJson: any | GeoJSON = { ...template, id: getUniqueId(5) };\r\n geoJson.features.forEach((feature: any | Feature) => {\r\n feature.geometry.coordinates = coordinates;\r\n });\r\n const buffered = buffer(\r\n template.features[0],\r\n this.selectedMethodForAnalyseArea.getValue().bufferDistance ? this.selectedMethodForAnalyseArea.getValue().bufferDistance : 0,\r\n { units: 'meters' }\r\n );\r\n return buffered;\r\n }\r\n private unPause(): void {\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoStart);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureInfoEnd);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureSelected);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureDeselected);\r\n }\r\n\r\n draw(): void {\r\n this.drawIsActivated = true;\r\n this.mapLibNgService.map().deactivateHoverInfo();\r\n this.mapLibNgServiceMap.activateDrawingManager(\r\n this.createAdditionalOptions()\r\n );\r\n // * We want to stop other events\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureInfoStart);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureInfoEnd);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureSelected);\r\n this.eventHandler.pauseEvent(this.eventTypes.FeatureDeselected);\r\n }\r\n\r\n deleteDraw(): void {\r\n this.features = undefined;\r\n this.deleteFeature = true;\r\n this.selectedMethodForAnalyseArea.next(this.methodsForAnalyseArea[0]);\r\n this.mapLibNgService\r\n .map()\r\n .reactivateDrawingManager(this.createAdditionalOptions());\r\n this.deleteFeature = false;\r\n this.areaIsDrawn = false;\r\n this.mapLibNgService.map().deactivateDrawingManager({});\r\n }\r\n selectAreaOnMap(): any {\r\n this.chosenFeatureArr = [];\r\n this.mapLibNgService.map().activateHoverInfo();\r\n }\r\n pickFromRadioButtonList(layerObject: any): void {\r\n this.chosenLayerId = layerObject.id;\r\n this.subscription.add(\r\n from(this.chosenFeatureArr)\r\n .pipe(\r\n filter((layer: any) => layer.id === this.chosenLayerId),\r\n map((layer) => layer.features),\r\n concatAll(),\r\n map((mapFeature: any) => {\r\n const transformCoordinate = (coord) => {\r\n return this.mapLibNgService\r\n .map()\r\n .transformToGeographic([coord[0], coord[1]], this.epsg);\r\n };\r\n const createBufferPolygon = (coords, type) => {\r\n // Create GeoJSON feature based on type\r\n let feature;\r\n const properties = {\r\n measurement: 'unknown m²',\r\n style: {\r\n fill: {\r\n color: 'rgba(200, 0, 0, 0.4)',\r\n },\r\n stroke: {\r\n color: 'red',\r\n width: 5,\r\n },\r\n },\r\n };\r\n if (type === 'Point') {\r\n feature = {\r\n type: 'Feature',\r\n properties: properties,\r\n geometry: {\r\n type: 'Point',\r\n coordinates: coords,\r\n },\r\n };\r\n } else if (type === 'LineString') {\r\n feature = {\r\n type: 'Feature',\r\n properties: properties,\r\n geometry: {\r\n type: 'LineString',\r\n coordinates: coords,\r\n },\r\n };\r\n }\r\n\r\n // Create buffer with n meter radius\r\n const buffered = buffer(\r\n feature,\r\n this.selectedMethodForAnalyseArea.getValue().bufferDistance,\r\n { units: 'meters' }\r\n );\r\n return buffered;\r\n };\r\n\r\n let geographicCoords;\r\n\r\n const geometry = mapFeature.geometryObject.geometry;\r\n const geometryType = geometry.type;\r\n switch (geometryType) {\r\n case 'Point':\r\n case 'LineString': {\r\n geographicCoords =\r\n geometryType === 'Point'\r\n ? transformCoordinate(geometry.coordinates)\r\n : geometry.coordinates.map(transformCoordinate);\r\n return createBufferPolygon(geographicCoords, geometryType);\r\n }\r\n case 'Polygon':\r\n // Transform each point in each linear ring of the polygon to geographic\r\n geographicCoords = geometry.coordinates.map((ring) =>\r\n ring.map(transformCoordinate)\r\n );\r\n return this.geoJsonify(geographicCoords); // this.cleanUp(this.geoJsonify(geographicCoords));\r\n default:\r\n // Not sure how to handle MultiLineStrings and MultiPolygons?\r\n throw new Error(`Invalid geometry type ${geometryType}`);\r\n }\r\n }),\r\n map((geoJson: GeoJSON) => JSON.stringify(geoJson)),\r\n map((geoJson: string) =>\r\n this.geoJsonUtilsService.uploadGeoJson(geoJson)\r\n )\r\n )\r\n .subscribe()\r\n );\r\n }\r\n selectMethodForAnalysis(methodForAnalysis: IAnalyseMethod): void {\r\n this.deleteDraw();\r\n this.selectedMethodForAnalyseArea.next(methodForAnalysis);\r\n switch (methodForAnalysis.id) {\r\n case 'Feature':\r\n this.unPause();\r\n this.selectAreaOnMap();\r\n break;\r\n\r\n default:\r\n this.draw();\r\n break;\r\n }\r\n }\r\n\r\n showReport(): void {\r\n if (this.features) {\r\n this.polygonCreated(this.features);\r\n }\r\n }\r\n // showReportForPlan(planId, kommunenummer): any {\r\n // this.propertyReportService.kommPlanParamsAction.next({planId, kommunenummer});\r\n // this.propertyReportService.getNeighborsForPlan$.subscribe();\r\n // }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n \r\n {{methodForAnalyseArea.name| translate}}\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    0\">\r\n\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {{chosenFeature.name}}\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n combineLatest,\r\n throwError,\r\n BehaviorSubject, Observable\r\n} from 'rxjs';\r\nimport { map, mergeMap, shareReplay, catchError, switchMap } from 'rxjs/operators';\r\nimport {\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport {\r\n IsyAppMatrikkelService\r\n} from '@isygis/isy-app-services';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { ELogin, IkommPlanParams } from '@isygis/isy-configs';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyPropertyReportService {\r\n eventHandler;\r\n eventTypes;\r\n mapLibNgServiceMap;\r\n activatedFeatureSelector = false;\r\n\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private mapService: IsyMapService,\r\n private toasterService: IsyToasterService,\r\n private matrikkelService: IsyAppMatrikkelService,\r\n private sessionStorageService: SessionStorageService,\r\n private httpClient: HttpClient,\r\n ) {\r\n this.mapLibNgServiceMap = this.mapLibNgService.map();\r\n this.eventHandler = this.mapLibNgService.eventHandler();\r\n this.eventTypes = this.mapLibNgService.eventTypes();\r\n }\r\n\r\n deselectCadastreAction = new BehaviorSubject(-1);\r\n deselectCadastre$ = this.deselectCadastreAction.asObservable();\r\n\r\n polygonGeometryAction = new BehaviorSubject(undefined);\r\n private choosenFeatureAction = new BehaviorSubject(undefined);\r\n choosenFeature$ = this.choosenFeatureAction.asObservable();\r\n kommPlanParamsAction = new BehaviorSubject(undefined);\r\n\r\n // private isytoken$ = this.commonService.loginToken$;\r\n ownersFromPolygon$ = combineLatest([this.polygonGeometryAction]).pipe(\r\n mergeMap(([polygonFeature]: [any]) => {\r\n if (polygonFeature) {\r\n this.toasterService.info('owner_list_generates');\r\n this.matrikkelService.init(\r\n this.mapService.getProjectConfig().config.project.isyexternalapi +\r\n '/matrikkel',\r\n this.mapService.getMapConfig().instance,\r\n 'EPSG:4326',\r\n this.sessionStorageService.retrieve(ELogin.TOKEN)\r\n );\r\n return this.matrikkelService.ownersFromPolygon(\r\n polygonFeature.features[0].geometry.coordinates,\r\n true,\r\n polygonFeature.features[0].geometry.type\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n }),\r\n map((value) => {\r\n // console.log('ownersFromPolygon', value);\r\n if (value && value['Matrikkelenheter']) {\r\n this.handleReceivedUnits(value['Matrikkelenheter']);\r\n this.eventHandler.continueEvent(this.eventTypes.FeatureSelected);\r\n return value['Matrikkelenheter'];\r\n }\r\n return undefined;\r\n }),\r\n catchError(this.handleError),\r\n // tap(result => console.log('ownersFromPolygon', result)),\r\n shareReplay(1)\r\n );\r\n\r\n newCadastreAction = new BehaviorSubject(undefined);\r\n findMatrikkelenhetForUnikId$ = combineLatest([this.newCadastreAction]).pipe(\r\n mergeMap(([newCadastre]: [any]) => {\r\n if (newCadastre) {\r\n const komm = newCadastre.KOMM || newCadastre.komm;\r\n const gnr = newCadastre.GNR || newCadastre.gnr;\r\n const bnr = newCadastre.BNR || newCadastre.bnr;\r\n const fnr = newCadastre.FNR || newCadastre.fnr;\r\n const snr = newCadastre.SNR || newCadastre.snr;\r\n const unikid = newCadastre.UNIKID || newCadastre.unikid;\r\n\r\n return this.matrikkelService.findMatrikkelenhetForUnikId(\r\n komm,\r\n gnr,\r\n bnr,\r\n fnr,\r\n snr,\r\n unikid,\r\n true\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n }),\r\n map((value) => {\r\n if (value && value['Matrikkelenheter']) {\r\n this.deselectCadastreAction.next(-1);\r\n this.handleReceivedUnits(value['Matrikkelenheter']);\r\n return value['Matrikkelenheter'];\r\n }\r\n return undefined;\r\n })\r\n );\r\n\r\n getFeaturesForPlan$ = combineLatest([this.kommPlanParamsAction]).pipe(\r\n switchMap(([kommPlanParams]: [IkommPlanParams]) => {\r\n const planUrl = this.mapService.getProjectConfig().config.project.isysearch + '/api/searchplannoisv2/';\r\n if (kommPlanParams) {\r\n return this.httpClient\r\n .get(\r\n planUrl +\r\n '?search=' +\r\n kommPlanParams.planId +\r\n '&kommune=' +\r\n kommPlanParams.kommunenummer +\r\n '&instance=&epsg=&project='\r\n )\r\n .pipe(\r\n map((result) => {\r\n if (result && result[0] && result[0].GeoJson) {\r\n const feature = result[0].GeoJson\r\n const features = {type: \"FeatureCollection\", features: [JSON.parse(feature)]};\r\n return features;\r\n }\r\n return new Promise((resolve) => resolve(undefined));\r\n }),\r\n catchError(this.handleError)\r\n );\r\n } else {\r\n return new Promise((resolve) => resolve(undefined));\r\n }\r\n })\r\n );\r\n\r\n private getString(value?: any, defaultValue?: any): string {\r\n defaultValue = value ? value : defaultValue;\r\n return String(defaultValue);\r\n }\r\n\r\n handleReceivedUnits(result: any): void {\r\n if (result.length === 0) {\r\n return;\r\n }\r\n const visibleSubLayers = this.mapLibNgServiceMap.getVisibleSubLayers();\r\n const layerWithShowNeighborList = visibleSubLayers.find(\r\n (l) => l.showneighborlist === true\r\n );\r\n if (layerWithShowNeighborList) {\r\n // const a = this.mapLibNgServiceMap.getFeatureByUnikId(layerWithShowNeighborList, result[0].Id);\r\n const mapConfig = this.mapService.getMapConfig();\r\n // console.log('FEATURE BY UNIK ID: ', a);\r\n // console.log('MAP CONFIG', b);\r\n const subLayer = mapConfig.layers.find(\r\n (l) => l.id === layerWithShowNeighborList.id\r\n );\r\n if (!this.activatedFeatureSelector) {\r\n const options = {\r\n feature: undefined,\r\n mode: 'multi',\r\n style: 'neighbor',\r\n layerName: subLayer.name,\r\n };\r\n this.mapLibNgService.map().activateFeatureSelector(options);\r\n this.activatedFeatureSelector = true;\r\n }\r\n\r\n for (const feature of result) {\r\n this.mapLibNgService.map().selectFeatures(\r\n [\r\n { property: 'KOMM', value: this.getString(feature.Knr, 0) },\r\n { property: 'GNR', value: this.getString(feature.Gnr, 0) },\r\n { property: 'BNR', value: this.getString(feature.Bnr, 0) },\r\n { property: 'SNR', value: this.getString(feature.Snr, 0) },\r\n { property: 'FNR', value: this.getString(feature.Fnr, 0) },\r\n { property: 'UNIKID', value: this.getString(feature.Id) },\r\n ],\r\n {\r\n subLayers: [subLayer],\r\n },\r\n undefined,\r\n false\r\n );\r\n }\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoStart);\r\n this.mapLibNgService\r\n .eventHandler()\r\n .pauseEvent(this.mapLibNgService.eventTypes().FeatureInfoEnd);\r\n }\r\n }\r\n\r\n setActivatedFeatureSelector(value: boolean): void {\r\n this.activatedFeatureSelector = value;\r\n }\r\n\r\n setKommPlanParams(value: IkommPlanParams): void {\r\n this.kommPlanParamsAction.next(value);\r\n }\r\n\r\n setChoosenFeature(value: any): void {\r\n this.choosenFeatureAction.next(value);\r\n }\r\n\r\n private handleError(err): Observable {\r\n // in a real world app, we may send the server to some remote logging infrastructure\r\n // instead of just logging it to the console\r\n let errorMessage: string;\r\n if (typeof err === 'string') {\r\n errorMessage = err;\r\n } else {\r\n if (err.error instanceof ErrorEvent) {\r\n // A client-side or network error occurred. Handle it accordingly.\r\n errorMessage = `An error occurred: ${err.error.message}`;\r\n } else {\r\n // The backend returned an unsuccessful response code.\r\n // The response body may contain clues as to what went wrong,\r\n errorMessage = `Backend returned code ${err.status}: ${err.name}`;\r\n }\r\n }\r\n console.error(err);\r\n return throwError(errorMessage);\r\n }\r\n}\r\n","import {\r\n Circle,\r\n Fill,\r\n RegularShape,\r\n Stroke,\r\n Style,\r\n} from 'ol/style';\r\nimport { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport {\r\n ITooltipMapPosition,\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { catchError, finalize, of, skip, take } from 'rxjs';\r\n\r\nimport { FileSaverService } from 'ngx-filesaver';\r\nimport { IsyRoutingService } from '../isy-routing.service';\r\nimport { IsyToasterService } from '@isygis/isy-toaster';\r\nimport { TabsetComponent } from 'ngx-bootstrap/tabs';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\ninterface StepColor {\r\n upper: number;\r\n color: number[];\r\n}\r\n\r\ninterface IPosition {\r\n coordinate: number[];\r\n epsg: string;\r\n}\r\n\r\ninterface InputPoint {\r\n point: IPosition;\r\n name: string;\r\n}\r\n\r\nclass AnalysisPoint implements InputPoint {\r\n point: IPosition;\r\n name: string;\r\n cost: number;\r\n\r\n constructor(position: IPosition, name: string = 'Analysepunkt', cost = 10) {\r\n this.point = position;\r\n this.name = name;\r\n this.cost = cost;\r\n }\r\n}\r\n\r\nclass InterestPoint implements InputPoint {\r\n point: IPosition;\r\n name: string;\r\n color: string;\r\n\r\n constructor(position: IPosition, name: string, color: string) {\r\n this.point = position;\r\n this.name = name;\r\n this.color = color;\r\n }\r\n}\r\n\r\ninterface IRoadAnalysisPoints {\r\n analysepunkt: AnalysisPoint;\r\n interessepunkt: InterestPoint[];\r\n}\r\n\r\nclass RoadAnalysisPoints implements IRoadAnalysisPoints {\r\n analysepunkt: AnalysisPoint;\r\n interessepunkt: InterestPoint[];\r\n constructor(\r\n analysepunkt: AnalysisPoint,\r\n interessepunkt: InterestPoint[] = []\r\n ) {\r\n this.analysepunkt = analysepunkt;\r\n this.interessepunkt = interessepunkt;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'lib-isy-road-analysis',\r\n templateUrl: './isy-road-analysis.component.html',\r\n styleUrls: ['./isy-road-analysis.component.css'],\r\n})\r\nexport class IsyRoadAnalysisComponent implements OnInit, OnDestroy {\r\n inputdata: RoadAnalysisPoints = new RoadAnalysisPoints(\r\n new AnalysisPoint(undefined)\r\n );\r\n resultdata: RoadAnalysisPoints = undefined;\r\n resultPrepTime = undefined;\r\n\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n waitingForResult$ = this.routingService.loading$;\r\n\r\n selectedPrepTime = 0;\r\n selectedTotalTime = 30;\r\n selectedStyle = 'steps';\r\n\r\n BLUE = '#1982c4';\r\n GREEN = '#8ac926';\r\n YELLOW = '#ffca3a';\r\n INDIGO = '#4B0082';\r\n\r\n DEFAULT_ANALYSISPOINT_COLOR = '#0000FF';\r\n\r\n DEFAULT_STROKE_COLOR = '#000000';\r\n\r\n DEFAULT_INTERESTPOINT_COLOR = this.INDIGO;\r\n DEFAULT_INTERESTPOINT_NAME = 'Interessepunkt';\r\n\r\n color_solid = this.BLUE;\r\n color_gradient_beg = this.GREEN;\r\n color_gradient_end = this.BLUE;\r\n color_steps = [\r\n { upper: 10, color: this.GREEN },\r\n { upper: 20, color: this.YELLOW },\r\n { upper: 30, color: this.BLUE },\r\n ];\r\n\r\n isochron = {\r\n name: 'ISOKRON',\r\n };\r\n\r\n availableMethods = [this.isochron];\r\n\r\n activeOption = this.isochron;\r\n\r\n jsonStyleTemp = {\r\n stroke: {\r\n color: this.color_solid,\r\n width: 2,\r\n },\r\n };\r\n\r\n punktStil = {\r\n fill: {\r\n color: 'rgba(0,0,0,0.75)',\r\n },\r\n stroke: {\r\n color: 'rgba(0,0,0,1)',\r\n width: 2,\r\n },\r\n image: {\r\n radius: 5,\r\n fill: {\r\n color: 'rgba(0,1,0,1)',\r\n },\r\n },\r\n text: '${name}',\r\n label: '${name}',\r\n textSize: 16,\r\n };\r\n\r\n @ViewChild('staticTabs', { static: false }) staticTabs?: TabsetComponent;\r\n\r\n constructor(\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapService: IsyMapService,\r\n private maplibService: MapLibNgService,\r\n private routingService: IsyRoutingService,\r\n private fileSaver: FileSaverService,\r\n private toasterService: IsyToasterService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.updateInputDatalayer();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.removeInput();\r\n this.removeResults();\r\n }\r\n\r\n runRoadAnalysis(): void {\r\n const point = this.inputdata.analysepunkt.point;\r\n const x = point.coordinate[0];\r\n const y = point.coordinate[1];\r\n const epsg = this.extractEpsgNumberFromString(point.epsg);\r\n const cost = this.selectedCost();\r\n const input = this.inputdata;\r\n this.routingService\r\n .isochron(x, y, epsg, cost)\r\n .pipe(\r\n catchError((err) => {\r\n this.handleError(err);\r\n return of(null);\r\n })\r\n )\r\n .subscribe((res) => this.handleResults(res, input));\r\n }\r\n\r\n editPoint(input: InputPoint): void {\r\n const prevCursor = document.body.style.cursor;\r\n document.body.style.cursor = 'crosshair';\r\n this.mapEmitterService.getClickCoordinatesEmitter$\r\n .pipe(\r\n skip(1), // skip current value in observable\r\n take(1), // only first click after function\r\n finalize(() => (document.body.style.cursor = prevCursor))\r\n )\r\n .subscribe((coords) => {\r\n this.setSelectedCoords(coords, input);\r\n });\r\n }\r\n\r\n selectedCost(): number {\r\n return this.selectedTotalTime - this.selectedPrepTime;\r\n }\r\n\r\n removePoint(input: InputPoint): void {\r\n const removeIdx = this.inputdata.interessepunkt.findIndex(\r\n (elt) => elt === input\r\n );\r\n this.inputdata.interessepunkt.splice(removeIdx, 1);\r\n this.updateInputDatalayer();\r\n }\r\n\r\n downloadRoute(): void {\r\n const data = this.maplibService\r\n .map()\r\n .getVectorDataAsString('routing.layer');\r\n this.fileSaver.saveText(data, `routingResult_${new Date().getTime()}.json`);\r\n }\r\n\r\n private extractEpsgNumberFromString(epsg: string): string {\r\n const matches = RegExp(/^(EPSG:)(\\d+)$/).exec(epsg);\r\n return matches.length === 3 ? matches[2] : undefined;\r\n }\r\n\r\n private setSelectedCoords(coords: ITooltipMapPosition, input: InputPoint) {\r\n input.point = coords as IPosition;\r\n if (input instanceof AnalysisPoint) {\r\n this.removeResults();\r\n }\r\n this.updateInputDatalayer();\r\n }\r\n\r\n private removeResults() {\r\n this.resultdata = undefined;\r\n this.resultPrepTime = undefined;\r\n this.maplibService.map().hideLayerByName('routing.layer');\r\n }\r\n\r\n private removeInput() {\r\n this.inputdata = new RoadAnalysisPoints(new AnalysisPoint(undefined));\r\n this.maplibService.map().hideLayerByName('inputpoint.layer');\r\n }\r\n\r\n updateStyle(styleStr): void {\r\n if (this.selectedStyle === styleStr) {\r\n this.selectStyle(styleStr);\r\n }\r\n }\r\n\r\n selectStyle(styleStr: string): void {\r\n this.selectedStyle = styleStr;\r\n if (!this.resultdata) {\r\n return;\r\n }\r\n switch (styleStr) {\r\n case 'gradient': {\r\n const colorBeg = this.hexToColorArr(this.color_gradient_beg, 1);\r\n const colorEnd = this.hexToColorArr(this.color_gradient_end, 1);\r\n this.maplibService\r\n .map()\r\n .setVectorStyle(\r\n 'routing.layer',\r\n this.gradientStyle(0, this.selectedCost(), colorBeg, colorEnd)\r\n );\r\n break;\r\n }\r\n case 'steps': {\r\n const colorSteps = this.color_steps.map((step) => {\r\n return {\r\n upper: step.upper,\r\n color: this.hexToColorArr(step.color, 1),\r\n };\r\n });\r\n this.maplibService\r\n .map()\r\n .setVectorStyle('routing.layer', this.stepStyle(colorSteps));\r\n break;\r\n }\r\n case 'solid': {\r\n const solidColor = this.hexToColorArr(this.color_solid, 1);\r\n this.maplibService\r\n .map()\r\n .setVectorStyle('routing.layer', this.solidStyle(solidColor));\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n colorArrToStr(colorArr: number[]): string {\r\n return `rgba(${colorArr[0]},${colorArr[1]},${colorArr[2]},${colorArr[3]})`;\r\n }\r\n\r\n strToColorArr(rgbaStr: string): number[] {\r\n return rgbaStr.match(/\\d+/g).map(Number);\r\n }\r\n\r\n hexToRgba(hex: string, alpha: number): string {\r\n const r = parseInt(hex.slice(1, 3), 16);\r\n const g = parseInt(hex.slice(3, 5), 16);\r\n const b = parseInt(hex.slice(5, 7), 16);\r\n\r\n if (alpha) {\r\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + alpha + ')';\r\n } else {\r\n return 'rgb(' + r + ', ' + g + ', ' + b + ')';\r\n }\r\n }\r\n\r\n hexToColorArr(hex: string, alpha: number): number[] {\r\n const r = parseInt(hex.slice(1, 3), 16);\r\n const g = parseInt(hex.slice(3, 5), 16);\r\n const b = parseInt(hex.slice(5, 7), 16);\r\n return [r, g, b, alpha];\r\n }\r\n\r\n private handleResults(res: any, inputdata: RoadAnalysisPoints): void {\r\n if (res === null) return;\r\n this.resultdata = inputdata;\r\n this.resultPrepTime = this.selectedPrepTime;\r\n console.log('Road analysis result: ', res);\r\n res.features.shift(); // TODO: First feature not valid - to fix in API\r\n this.mapService.addGeoJson({\r\n layerName: 'routing.layer',\r\n features: JSON.stringify(res),\r\n jsonStyle: JSON.stringify(this.jsonStyleTemp),\r\n layerOrder: 3,\r\n });\r\n // TODO: This should not be a timeout but on event.\r\n setTimeout(() => {\r\n this.updateStyle(this.selectedStyle);\r\n }, 500);\r\n }\r\n\r\n addInterestPoint(): void {\r\n this.inputdata.interessepunkt.push(\r\n new InterestPoint(\r\n undefined,\r\n this.DEFAULT_INTERESTPOINT_NAME,\r\n this.DEFAULT_INTERESTPOINT_COLOR\r\n )\r\n );\r\n }\r\n\r\n private handleError(err: any): void {\r\n this.toasterService\r\n .error('Routing request failed') // TODO: translate;\r\n .catch((err) => console.error('Toaster failed: ', err));\r\n console.error('Error: ', err);\r\n }\r\n\r\n downloadInput() {\r\n const data = this.roadAnalysisPointsToGeoJSON(this.inputdata);\r\n this.fileSaver.saveText(data, `routingInput_${new Date().getTime()}.json`);\r\n }\r\n\r\n uploadInput(files: any) {\r\n const reader = new FileReader();\r\n reader.onloadend = (evt) => {\r\n const jsonString = String.fromCharCode.apply(\r\n null,\r\n new Uint8Array(evt.target['result'] as ArrayBuffer)\r\n );\r\n this.inputdata = this.geoJSONToRoadAnalysisPoints(jsonString);\r\n this.updateInputDatalayer();\r\n };\r\n reader.readAsArrayBuffer(files[0]);\r\n }\r\n\r\n private costColorFnToStyle(fn): any {\r\n return (e) => {\r\n const cost = e.get('agg_cost');\r\n const colorArr = fn(cost);\r\n return new Style({\r\n stroke: new Stroke({\r\n width: 2,\r\n color: this.colorArrToStr(colorArr),\r\n }),\r\n });\r\n };\r\n }\r\n\r\n private pointStyle(): any {\r\n return (e) => {\r\n const isAnalysisPoint = (e) => e.id_ === 'a0';\r\n const stroke = new Stroke({\r\n width: 2,\r\n color: this.DEFAULT_STROKE_COLOR,\r\n });\r\n const AnalysisPointStyle = new RegularShape({\r\n radius1: 15,\r\n radius2: 7,\r\n points: 5,\r\n fill: new Fill({\r\n color: this.DEFAULT_ANALYSISPOINT_COLOR,\r\n }),\r\n });\r\n const InterestPointStyle = (e) => {\r\n const color = e.values_.color || this.DEFAULT_INTERESTPOINT_COLOR;\r\n return new Circle({\r\n radius: 8,\r\n fill: new Fill({\r\n color: color,\r\n }),\r\n });\r\n };\r\n return new Style({\r\n image: isAnalysisPoint(e) ? AnalysisPointStyle : InterestPointStyle(e),\r\n stroke: stroke, // TODO: virker ikke?\r\n });\r\n };\r\n }\r\n\r\n private solidStyle(color: number[]): any {\r\n return this.costColorFnToStyle(() => color);\r\n }\r\n\r\n private stepStyle(steps: StepColor[]): any {\r\n return this.costColorFnToStyle((cost) => {\r\n for (const step of steps) {\r\n if (cost + this.resultPrepTime <= step.upper) {\r\n return step.color;\r\n }\r\n }\r\n return steps[steps.length - 1].color;\r\n });\r\n }\r\n\r\n private gradientStyle(rangeStart, rangeEnd, colorStart, colorEnd): any {\r\n return this.costColorFnToStyle((cost) => {\r\n if (cost <= rangeStart) return colorStart;\r\n if (cost >= rangeEnd) return colorEnd;\r\n\r\n const range = rangeEnd - rangeStart;\r\n const percentEnd = (cost - rangeStart) / range;\r\n const percentStart = 1 - percentEnd;\r\n return [\r\n colorStart[0] * percentStart + colorEnd[0] * percentEnd,\r\n colorStart[1] * percentStart + colorEnd[1] * percentEnd,\r\n colorStart[2] * percentStart + colorEnd[2] * percentEnd,\r\n colorStart[3] * percentStart + colorEnd[3] * percentEnd,\r\n ];\r\n });\r\n }\r\n\r\n private iPositionToGeoJsonGeomeryString(ipos: IPosition): string {\r\n const punkt = this.maplibService\r\n .map()\r\n .transformToGeographic(ipos.coordinate, ipos.epsg);\r\n return `{\r\n \"type\": \"Point\",\r\n \"coordinates\": [${punkt.toString()}]\r\n }`;\r\n }\r\n\r\n private getAnalysisPoint(rap: RoadAnalysisPoints): string {\r\n return rap.analysepunkt.point === undefined\r\n ? ''\r\n : `{\r\n \"type\": \"Feature\",\r\n \"geometry\": ${this.iPositionToGeoJsonGeomeryString(\r\n rap.analysepunkt.point\r\n )},\r\n \"properties\": {\r\n \"name\": \"${rap.analysepunkt.name}\",\r\n \"cost\": \"${rap.analysepunkt.cost}\"\r\n },\r\n \"id\": \"a0\"\r\n }`;\r\n }\r\n\r\n private getInterestPoints(rap: RoadAnalysisPoints): string[] {\r\n return rap.interessepunkt\r\n .filter((ip) => ip.point !== undefined)\r\n .map(\r\n (ip, idx) => `{\r\n \"type\": \"Feature\",\r\n \"geometry\": ${this.iPositionToGeoJsonGeomeryString(ip.point)},\r\n \"properties\": {\r\n \"name\": \"${ip.name}\",\r\n \"color\": \"${ip.color}\"\r\n },\r\n \"id\": \"i${idx}\"\r\n }`\r\n );\r\n }\r\n\r\n private roadAnalysisPointsToGeoJSON(rap: RoadAnalysisPoints): string {\r\n const analysepunkt = this.getAnalysisPoint(rap);\r\n const interessepunkter = this.getInterestPoints(rap);\r\n return `{\r\n \"type\": \"FeatureCollection\",\r\n \"features\": [\r\n ${analysepunkt}\r\n ${analysepunkt !== '' && interessepunkter.length > 0 ? ',' : ''}\r\n ${interessepunkter}\r\n ]\r\n }`;\r\n }\r\n\r\n updateInputDatalayer(): void {\r\n const json = this.roadAnalysisPointsToGeoJSON(this.inputdata);\r\n this.mapService.addGeoJson({\r\n layerName: 'inputpoint.layer',\r\n features: json,\r\n jsonStyle: JSON.stringify(this.punktStil), //this.pointStyle(),\r\n layerOrder: -1,\r\n });\r\n // TODO: This should not be a timeout but on event.\r\n setTimeout(() => {\r\n this.updateInputStyle();\r\n }, 500);\r\n }\r\n\r\n private updateInputStyle(): void {\r\n this.maplibService\r\n .map()\r\n .setVectorStyle('inputpoint.layer', this.pointStyle());\r\n }\r\n\r\n private geoJSONToRoadAnalysisPoints(jsonString: string): RoadAnalysisPoints {\r\n try {\r\n const json = JSON.parse(jsonString);\r\n const analysisPoint = json.features.filter((f) => f.id === 'a0')[0];\r\n const newAnalysisPoint = new AnalysisPoint(\r\n this.geoJsonToIPosition(analysisPoint.geometry),\r\n analysisPoint.properties.name,\r\n analysisPoint.properties.cost\r\n );\r\n const interestPoints = json.features.filter((f) => f.id !== 'a0');\r\n const newInterestPoints = interestPoints.map(\r\n (ip) =>\r\n new InterestPoint(\r\n this.geoJsonToIPosition(ip.geometry),\r\n ip.properties.name,\r\n ip.properties.color\r\n )\r\n );\r\n return new RoadAnalysisPoints(newAnalysisPoint, newInterestPoints);\r\n } catch (err) {\r\n console.error(err);\r\n this.toasterService\r\n .error('Loading inputdata failed') // TODO: translate;\r\n .catch((err) => console.error('Toaster failed: ', err));\r\n return this.inputdata;\r\n }\r\n }\r\n\r\n private geoJsonToIPosition(jsonGeom): IPosition {\r\n return {\r\n coordinate: jsonGeom.coordinates,\r\n epsg: 'EPSG:4326',\r\n } as IPosition;\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
      \r\n
    • \r\n {{method.name | translate}}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n {{'prepTime' | translate}}\r\n \r\n
    \r\n
    \r\n {{'totalTime' | translate}}\r\n \r\n
    \r\n
    \r\n {{'driveTime' | translate}}\r\n {{this.selectedCost()}}\r\n
    \r\n \r\n
    45\">\r\n {{'isochronCostWarning' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {{'addInterestPoint' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n {{'runRoadAnalysisDisabled' | translate}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n","import {\r\n BehaviorSubject,\r\n Observable,\r\n concatMap,\r\n finalize,\r\n map,\r\n of,\r\n tap,\r\n} from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyRoutingService {\r\n // ROUTING_API = 'https://routing.norwayeast.cloudapp.azure.com/rpc/';\r\n ROUTING_API = 'https://gd-datalake-postgrest.azurewebsites.net/rpc/';\r\n\r\n private loadingSubject = new BehaviorSubject(false);\r\n loading$: Observable = this.loadingSubject.asObservable();\r\n\r\n constructor(private httpClient: HttpClient) {\r\n // empty\r\n }\r\n\r\n isochron(x, y, epsg, cost) {\r\n const postgrestFunctionName = 'isochron_opt';\r\n const requestUrl =\r\n `${this.ROUTING_API}${postgrestFunctionName}?` +\r\n `from_x=${x}&` +\r\n `from_y=${y}&` +\r\n `srid=${epsg}&` +\r\n `rcost=${cost}`;\r\n const options = {\r\n headers: new HttpHeaders({\r\n 'Accept-Profile': 'api_v2',\r\n }),\r\n };\r\n const request$ = this.httpClient.get(requestUrl, options).pipe(\r\n map((res: any) => {\r\n // https://github.com/PostgREST/postgrest/issues/1376\r\n const postrestBugActive = Array.isArray(res) && res[0] && res[0][postgrestFunctionName];\r\n return postrestBugActive ? res[0][postgrestFunctionName] : res;\r\n })\r\n );\r\n return this.addLoadingInfo(request$);\r\n }\r\n\r\n private addLoadingInfo(obs$: Observable): Observable {\r\n return of(null).pipe(\r\n tap(() => this.loadingOn()),\r\n concatMap(() => obs$),\r\n finalize(() => this.loadingOff())\r\n );\r\n }\r\n\r\n private loadingOn() {\r\n this.loadingSubject.next(true);\r\n }\r\n\r\n private loadingOff() {\r\n this.loadingSubject.next(false);\r\n }\r\n}\r\n","import { Component, OnInit, OnDestroy, AfterViewInit } from '@angular/core';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport {\r\n IsyMapService,\r\n IsyMapEmitterService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport { Subscription } from 'rxjs';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Component({\r\n selector: 'lib-isy-three-d',\r\n templateUrl: './isy-three-d.component.html',\r\n styleUrls: ['./isy-three-d.component.scss'],\r\n})\r\nexport class IsyThreeDComponent implements OnInit, OnDestroy, AfterViewInit {\r\n projectConfig: IProjectConfig;\r\n has3d = false;\r\n threedurl: SafeResourceUrl;\r\n configloadSubscription: Subscription;\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer,\r\n private mapService: IsyMapService,\r\n private maplibng: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private bladeService: IsyBladeService,\r\n ) {}\r\n\r\n ngOnInit() {\r\n console.log('init');\r\n this.projectConfig = this.mapService.getProjectConfig();\r\n this.init3dSrc();\r\n this.configloadSubscription =\r\n this.mapEmitterService.mapConfigLoadEmitter$.subscribe(() =>\r\n this.reInit()\r\n );\r\n }\r\n\r\n ngOnDestroy() {\r\n this.configloadSubscription.unsubscribe();\r\n }\r\n\r\n ngAfterViewInit() {\r\n // const iframe3d = document.getElementById('iframe3d');\r\n // if (iframe3d !== null) {\r\n // iframe3d.style.height = document.documentElement.clientHeight - 70 + 'px';\r\n // }\r\n\r\n // open url in a new window instead of iframe\r\n setTimeout(() => {\r\n this.bladeService.hide('3DView');\r\n }, 200);\r\n if (this.has3d) {\r\n window.open(this.get3dUrl());\r\n }\r\n else { \r\n const page = window.open(\"about:blank\",\"myChild\");\r\n page.document.write(`\r\n

    no 3D for you

    \r\n `);\r\n page.document.close();\r\n }\r\n }\r\n\r\n reInit() {\r\n console.log('3d reinit');\r\n this.has3d = false;\r\n this.threedurl = undefined;\r\n this.init3dSrc();\r\n }\r\n\r\n init3dSrc() {\r\n if (\r\n this.projectConfig &&\r\n this.projectConfig.config &&\r\n this.projectConfig.config.project &&\r\n this.projectConfig.config.project.isy3dflyurl\r\n ) {\r\n if (this.threedurl) {\r\n return;\r\n }\r\n this.threedurl = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.get3dUrl()\r\n );\r\n this.has3d = true;\r\n } else {\r\n if (this.threedurl) {\r\n return;\r\n }\r\n this.threedurl = this.sanitizer.bypassSecurityTrustResourceUrl(\r\n this.get3dUrl()\r\n );\r\n }\r\n }\r\n\r\n private get3dUrl(): string {\r\n let threedurl = this.projectConfig.config.project.isy3dflyurl;\r\n if (threedurl) {\r\n const center = this.maplibng.map().getCenter();\r\n const coord = this.maplibng\r\n .map()\r\n .transformToGeographic([center.lon, center.lat], center.epsg);\r\n const distance = 0;\r\n const yaw = 0;\r\n const pitch = -90;\r\n const name = 'Start';\r\n const type = 14; //jump to\r\n threedurl += `&position=${coord[0]},${coord[1]},${this.getHeight(center.zoom)},${distance},${yaw},${pitch},${name},${type}`;\r\n }\r\n return threedurl;\r\n }\r\n\r\n private getHeight(zoom): number {\r\n const initialHeight = 5000000;\r\n let theHeight = initialHeight;\r\n for (let i = 0; i < zoom; ++i) {\r\n theHeight = theHeight / 2;\r\n }\r\n return zoom > 7 ? 2 * theHeight : theHeight;\r\n }\r\n}\r\n","import { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libIsyTool]',\r\n})\r\nexport class IsyToolDirective {\r\n constructor(public viewContainerRef: ViewContainerRef) {}\r\n}\r\n","import {\r\n Component,\r\n HostBinding,\r\n Input,\r\n ViewChild,\r\n AfterViewInit,\r\n ComponentFactoryResolver,\r\n} from '@angular/core';\r\nimport { IsyToolsService } from '../isy-tools.service';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { pageAnimation } from '@isygis/isy-animations';\r\nimport { ICustomTool, ITool, NavLoaderDataComponent } from '@isygis/isy-configs';\r\nimport { IsyToolDirective } from '../isy-tool.directive';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyIframeComponent } from '@isygis/isy-utils';\r\nimport { MapLibNgService } from '@isygis/isy-map';\r\n\r\n@Component({\r\n selector: 'lib-isy-tools-list',\r\n templateUrl: './isy-tools-list.component.html',\r\n styleUrls: ['./isy-tools-list.component.scss'],\r\n animations: [pageAnimation],\r\n})\r\nexport class IsyToolsListComponent\r\n implements NavLoaderDataComponent, AfterViewInit\r\n{\r\n @Input() childComponent: any;\r\n @ViewChild(IsyToolDirective, { static: true }) libIsyTool: IsyToolDirective;\r\n @HostBinding('@pageAnimation')\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(\r\n private toolsService: IsyToolsService,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private commonService: IsyCommonService,\r\n private bladeService: IsyBladeService,\r\n private mapLibNgService: MapLibNgService\r\n ) {}\r\n\r\n tools$ = this.toolsService.tools$.pipe(\r\n map((tools) => tools.filter((tool) => tool.isVisible))\r\n // tap(tools => console.log('tools; ', tools))\r\n );\r\n customTools$ = this.toolsService.customTools$;\r\n\r\n vm$ = combineLatest([this.tools$, this.customTools$]).pipe(\r\n map(([tools, customTools]: [ITool[], ICustomTool[]]) => ({\r\n tools,\r\n customTools,\r\n }))\r\n // tap(result => console.log('VM TOOLS LIST: ', result))\r\n );\r\n\r\n ngAfterViewInit(): void {\r\n const viewContainerRef = this.libIsyTool.viewContainerRef;\r\n if (this.childComponent) {\r\n const componentFactory =\r\n this.componentFactoryResolver.resolveComponentFactory(\r\n this.childComponent\r\n );\r\n viewContainerRef.clear();\r\n const child = viewContainerRef.createComponent(componentFactory);\r\n child.changeDetectorRef.detectChanges();\r\n } else {\r\n viewContainerRef.clear();\r\n }\r\n }\r\n\r\n selectTool(tool: ITool): void {\r\n this.commonService.activateToolById(tool.id);\r\n }\r\n\r\n selectCutomTool(customTool: ICustomTool): void {\r\n const center = this.mapLibNgService.map().getCenter();\r\n let customToolUrl = customTool.url;\r\n if (customToolUrl.indexOf('{scale}') >= 0) {\r\n if (customTool.scale === 'SCALE') {\r\n customToolUrl = customToolUrl.replace('{scale}', center.scale.toString());\r\n } else {\r\n customToolUrl = customToolUrl.replace('{scale}', center.zoom.toString());\r\n }\r\n }\r\n if (customToolUrl.indexOf('{epsg}') >= 0) {\r\n if (customTool.coordinatesystem === 'DEFAULT') {\r\n customToolUrl = customToolUrl.replace('{epsg}', center.epsg);\r\n } else {\r\n customToolUrl = customToolUrl.replace('{epsg}', 'EPSG:4326');\r\n }\r\n }\r\n let transformedCenterCoordToGeographic;\r\n if (customTool.coordinatesystem === 'GEOGRAPHICAL') {\r\n transformedCenterCoordToGeographic = this.mapLibNgService\r\n .map()\r\n .transformToGeographic([center.lon, center.lat], center.epsg);\r\n }\r\n\r\n if (customToolUrl.indexOf('{x}') >= 0) {\r\n if (customTool.coordinatesystem === 'DEFAULT') {\r\n customToolUrl = customToolUrl.replace('{x}', center.lon.toString());\r\n } else {\r\n customToolUrl = customToolUrl.replace(\r\n '{x}',\r\n transformedCenterCoordToGeographic[0]\r\n );\r\n }\r\n }\r\n\r\n if (customToolUrl.indexOf('{y}') >= 0) {\r\n if (customTool.coordinatesystem === 'DEFAULT') {\r\n customToolUrl = customToolUrl.replace('{y}', center.lat.toString());\r\n } else {\r\n customToolUrl = customToolUrl.replace(\r\n '{y}',\r\n transformedCenterCoordToGeographic[1]\r\n );\r\n }\r\n }\r\n\r\n if (customTool.opennewwindow) {\r\n window.open(customToolUrl);\r\n } else {\r\n this.bladeService.showBladeWithComponent(\r\n 'customTool',\r\n IsyIframeComponent,\r\n { url: customToolUrl },\r\n {\r\n position: 'top',\r\n showBladeOverlay: true,\r\n fullScreen: true,\r\n showHeader: true,\r\n offset: 100,\r\n bladeHeader: { headerTitle: customTool.title },\r\n }\r\n );\r\n }\r\n }\r\n}\r\n","
    \r\n
      \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n {{tool.toolName | translate }}\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
    • \r\n
      \r\n
      \r\n
    • \r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n {{customTool.title | translate }}\r\n
      \r\n
      \r\n \r\n
      \r\n
      \r\n
    • \r\n
      \r\n
    \r\n \r\n
    \r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AgGridModule } from 'ag-grid-angular';\r\nimport { FileSaverModule } from 'ngx-filesaver';\r\nimport {\r\n FaIconLibrary,\r\n FontAwesomeModule,\r\n} from '@fortawesome/angular-fontawesome';\r\nimport { fas } from '@fortawesome/free-solid-svg-icons';\r\nimport { far } from '@fortawesome/free-regular-svg-icons';\r\nimport { IsyToolsListComponent } from './isy-tools-list/isy-tools-list.component';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\nimport { IsyToasterModule } from '@isygis/isy-toaster';\r\nimport { IsyDrawComponent } from './isy-draw/isy-draw.component';\r\nimport { IsyActiveToolComponent } from './isy-active-tool/isy-active-tool.component';\r\nimport { IsyToolDirective } from './isy-tool.directive';\r\nimport { IsyObliqueComponent } from './isy-oblique/isy-oblique.component';\r\nimport { IsyThreeDComponent } from './isy-three-d/isy-three-d.component';\r\nimport { IsyBboxComponent } from './isy-bbox/isy-bbox.component';\r\nimport { IsyAdvancedSearchComponent } from './isy-advanced-search/isy-advanced-search.component';\r\nimport { IsySearchWelcomePageComponent } from './isy-advanced-search/isy-search-welcome-page/isy-search-welcome-page.component';\r\nimport { IsyObjSearchComponent } from './isy-advanced-search/isy-obj-search/isy-obj-search.component';\r\nimport { IsyPropSearchComponent } from './isy-advanced-search/isy-prop-search/isy-prop-search.component';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IsyUtilsModule, TitleLabelPipe } from '@isygis/isy-utils';\r\nimport { IsyAdvancedSearchButtonsComponent } from './isy-advanced-search/isy-advanced-search-buttons/isy-advanced-search-buttons.component';\r\nimport { ColumnDefsChangedPipe } from './isy-advanced-search/column-defs-changed.pipe';\r\nimport { ColumnIdsPipe } from './isy-advanced-search/column-ids.pipe';\r\nimport { ContentSizeDirective } from './isy-advanced-search/content-size.directive';\r\nimport { IsyPropertyReportComponent } from './isy-property-report/isy-property-report.component';\r\nimport { IsyPropertyReportListComponent } from './isy-property-report/isy-property-report-list/isy-property-report-list.component';\r\nimport { GetAddressStringPipe } from './isy-property-report/isy-property-report-list/get-address-string.pipe';\r\nimport { IsyPropertyReportPrintComponent } from './isy-property-report/isy-property-report-print/isy-property-report-print.component';\r\nimport { IsyPrintModule } from '@isygis/isy-print';\r\nimport { IsySpinnerModule } from '@isygis/isy-spinner';\r\nimport { NgxFileDropModule } from 'ngx-file-drop';\r\nimport { IsyFeedbackComponent } from './isy-feedback/isy-feedback.component';\r\nimport { IsyFeedbackModalComponent } from './isy-feedback/isy-feedback-modal/isy-feedback-modal.component';\r\nimport { IsyAnalysesAndReportsComponent } from './isy-analyses-and-reports/isy-analyses-and-reports.component';\r\nimport { IsyAnalysReportListComponent } from './isy-analyses-and-reports/isy-analyses-reports-list/isy-analyses-reports-list.component';\r\nimport { IsyEmptyContentModule } from '@isygis/isy-empty-content';\r\nimport { ToolsDirective } from './tools.directive';\r\nimport { IsyPrintMapComponent } from './isy-print-map/isy-print-map.component';\r\nimport { IsyElevationProfileComponent } from './isy-elevation-profile/isy-elevation-profile.component';\r\nimport { IsyExportComponent } from './isy-export/isy-export.component';\r\nimport { IsyRoadAnalysisComponent } from './isy-road-analysis/isy-road-analysis.component';\r\nimport { ColorPickerModule } from 'ngx-color-picker';\r\nimport { TabsModule } from 'ngx-bootstrap/tabs';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n AgGridModule.withComponents([]),\r\n IsyToasterModule,\r\n FileSaverModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n BsDropdownModule.forRoot(),\r\n FormsModule,\r\n IsyUtilsModule,\r\n IsyPrintModule,\r\n IsySpinnerModule,\r\n NgxFileDropModule,\r\n IsyEmptyContentModule,\r\n ColorPickerModule,\r\n TabsModule.forRoot(),\r\n ],\r\n declarations: [\r\n IsyToolsListComponent,\r\n IsyDrawComponent,\r\n IsyActiveToolComponent,\r\n IsyToolDirective,\r\n IsyObliqueComponent,\r\n IsyThreeDComponent,\r\n IsyBboxComponent,\r\n IsyAdvancedSearchComponent,\r\n IsySearchWelcomePageComponent,\r\n IsyObjSearchComponent,\r\n IsyPropSearchComponent,\r\n IsyAdvancedSearchButtonsComponent,\r\n ColumnDefsChangedPipe,\r\n ColumnIdsPipe,\r\n ContentSizeDirective,\r\n IsyPropertyReportComponent,\r\n IsyPropertyReportListComponent,\r\n GetAddressStringPipe,\r\n IsyPropertyReportPrintComponent,\r\n IsyFeedbackComponent,\r\n IsyFeedbackModalComponent,\r\n IsyAnalysesAndReportsComponent,\r\n IsyAnalysReportListComponent,\r\n ToolsDirective,\r\n IsyPrintMapComponent,\r\n IsyElevationProfileComponent,\r\n IsyExportComponent,\r\n IsyRoadAnalysisComponent,\r\n ],\r\n exports: [\r\n ToolsDirective,\r\n IsyToolsListComponent,\r\n IsyDrawComponent,\r\n IsyActiveToolComponent,\r\n IsyObliqueComponent,\r\n IsyBboxComponent,\r\n IsyAdvancedSearchComponent,\r\n IsyThreeDComponent,\r\n IsyPropertyReportComponent,\r\n IsyPropertyReportPrintComponent,\r\n IsyAnalysReportListComponent,\r\n ],\r\n providers: [TitleLabelPipe],\r\n})\r\nexport class IsyToolsModule {\r\n constructor(library: FaIconLibrary) {\r\n library.addIconPacks(fas, far);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, of, combineLatest } from 'rxjs';\r\nimport { shareReplay, map } from 'rxjs/operators';\r\nimport { TOOLS } from './tools';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { ICustomTool, ITool } from '@isygis/isy-configs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class IsyToolsService {\r\n constructor(private commonService: IsyCommonService) {}\r\n\r\n private activeToolIdAction = new BehaviorSubject('');\r\n private toolsListAction = new BehaviorSubject([]);\r\n tools$ = this.toolsListAction.asObservable();\r\n private customToolsListAction = new BehaviorSubject([]);\r\n customTools$ = this.customToolsListAction.asObservable();\r\n private allTools$ = of(TOOLS);\r\n\r\n activeTool$ = combineLatest([this.allTools$, this.activeToolIdAction]).pipe(\r\n map(([tools, activeToolId]: [ITool[], string]) =>\r\n tools.find(\r\n (tool) =>\r\n tool.id.toLowerCase() ===\r\n (activeToolId ? activeToolId.toLowerCase() : '')\r\n )\r\n ),\r\n map((tool) => {\r\n this.commonService.activateFeatureInfoSelectorWithLayerName(\r\n tool ? false : true\r\n );\r\n this.commonService.toolsIsActive(tool ? true : false);\r\n return tool;\r\n }),\r\n // tap(data => console.log('active tool: ', data)),\r\n shareReplay(1)\r\n );\r\n\r\n setActiveToolId(id: string): void {\r\n this.activeToolIdAction.next(id);\r\n }\r\n\r\n getActiveToolId(): string {\r\n return this.activeToolIdAction.getValue();\r\n }\r\n\r\n showTools(resources: string[]): void {\r\n TOOLS.forEach((tool) => {\r\n if (resources && resources.includes(tool.usingUserResource.resourceId)) {\r\n tool.isVisible = true;\r\n } else {\r\n if (!tool.usingUserResource.hasUserResource) {\r\n tool.isVisible = true;\r\n }\r\n }\r\n });\r\n this.setToolsList(TOOLS);\r\n }\r\n\r\n hideTools(): void {\r\n TOOLS.forEach((tool) => {\r\n tool.isVisible = false;\r\n });\r\n this.setToolsList([]);\r\n }\r\n\r\n setToolsList(toolsList: ITool[]): void {\r\n this.commonService.visibleTools(toolsList);\r\n this.toolsListAction.next(toolsList);\r\n }\r\n\r\n setCustomToolsList(customToolsList: ICustomTool[]): void {\r\n this.customToolsListAction.next(customToolsList);\r\n }\r\n}\r\n","import { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\r\nimport { Directive, OnDestroy, OnInit } from '@angular/core';\r\nimport { ELogin } from '@isygis/isy-configs';\r\n\r\nimport { EToolId } from '@isygis/isy-configs';\r\nimport { IsyActiveToolComponent } from './isy-active-tool/isy-active-tool.component';\r\nimport { IsyBladeService } from '@isygis/isy-blade';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyDraggableOverlayService } from '@isygis/isy-draggable-overlay';\r\nimport { IsyDynamicModalService } from '@isygis/isy-dynamic-modal';\r\nimport { IsyMapActionDialogService } from '@isygis/isy-map-action-dialog';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { IsyToolsService } from './isy-tools.service';\r\nimport { IsyTranslateService } from '@isygis/isy-translate';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { TOOLS } from './tools';\r\nimport { map } from 'rxjs/operators';\r\nimport { IProjectConfig } from '@isygis/isymap-config';\r\n\r\n@Directive({\r\n selector: '[libTools]',\r\n})\r\nexport class ToolsDirective implements OnInit, OnDestroy {\r\n subscriptions: Subscription = new Subscription();\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private toolsService: IsyToolsService,\r\n private bladeService: IsyBladeService,\r\n private draggableOverlayService: IsyDraggableOverlayService,\r\n private mapActionDialogService: IsyMapActionDialogService,\r\n private translateService: IsyTranslateService,\r\n private dynamicModalService: IsyDynamicModalService,\r\n private mapService: IsyMapService,\r\n private sessionStorageService: SessionStorageService\r\n ) {}\r\n\r\n private loginResourcesAction = new BehaviorSubject(undefined);\r\n projectConfig$ = this.mapService.projectConfig$;\r\n\r\n availableTools$ = combineLatest([\r\n this.loginResourcesAction,\r\n this.projectConfig$,\r\n ]).pipe(\r\n map(([loginResources, projectConfig]: [string[], IProjectConfig]) => {\r\n if (projectConfig) {\r\n this.toolsService.hideTools();\r\n if (projectConfig.config.project.availableTools) {\r\n projectConfig.config.project.availableTools.forEach((tool) => {\r\n for (const enumMember in EToolId) {\r\n // Checking that the tool exists\r\n if (EToolId[enumMember] === tool) {\r\n const isyTool = TOOLS.find((t) => t.id === EToolId[enumMember]);\r\n if (!isyTool.usingUserResource.hasUserResource) {\r\n isyTool.isVisible = true;\r\n } else {\r\n if (\r\n loginResources &&\r\n loginResources.includes(\r\n isyTool.usingUserResource.resourceId\r\n )\r\n ) {\r\n isyTool.isVisible = true;\r\n }\r\n }\r\n }\r\n }\r\n });\r\n this.toolsService.setCustomToolsList(\r\n projectConfig.config.project.availableCustomTools\r\n );\r\n this.toolsService.setToolsList(TOOLS.filter((t) => t.isVisible));\r\n } else {\r\n this.toolsService.showTools(loginResources);\r\n }\r\n }\r\n })\r\n );\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.add(\r\n this.sessionStorageService.observe(ELogin.RESOURCES).subscribe(() => {\r\n this.loginResources(\r\n this.sessionStorageService.retrieve(ELogin.RESOURCES)\r\n );\r\n })\r\n );\r\n this.loginResources(this.sessionStorageService.retrieve(ELogin.RESOURCES));\r\n\r\n this.subscriptions.add(\r\n this.commonService.activateToolById$.subscribe((toolId: EToolId) => {\r\n const tool = TOOLS.find((isyTool) => isyTool.id === toolId);\r\n if (tool) {\r\n this.toolsService.setActiveToolId(toolId);\r\n\r\n if (tool.showInBlade) {\r\n tool.bladeOptions.bladeHeader.showHelpBtn = tool.helpButton;\r\n this.bladeService.showBladeWithComponent(\r\n tool.id,\r\n IsyActiveToolComponent,\r\n undefined,\r\n tool.bladeOptions\r\n );\r\n }\r\n if (tool.showInDraggable) {\r\n this.draggableOverlayService.showDraggableWithComponent(\r\n tool.id,\r\n IsyActiveToolComponent,\r\n undefined,\r\n {\r\n headerIcon: tool.icon,\r\n headerName: tool.toolName,\r\n helpButton: tool.helpButton,\r\n closeOnEscape: tool.closeOnEscape,\r\n }\r\n );\r\n }\r\n if (tool.showInMapActionDialog) {\r\n this.mapActionDialogService.show(\r\n tool.id,\r\n this.translateService.instant(tool.mapActionDialogText),\r\n IsyActiveToolComponent,\r\n undefined,\r\n { longText: true, noUpperCase: true }\r\n );\r\n }\r\n if (tool.showInModal) {\r\n this.dynamicModalService.showModalWithComponent(\r\n tool.id,\r\n IsyActiveToolComponent,\r\n undefined,\r\n tool.modalOptions\r\n );\r\n }\r\n }\r\n })\r\n );\r\n\r\n this.subscriptions.add(this.availableTools$.subscribe());\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.unsubscribe();\r\n }\r\n\r\n private loginResources(resources: string[]): void {\r\n this.loginResourcesAction.next(resources);\r\n }\r\n}\r\n","import { EToolId, ITool } from '@isygis/isy-configs';\r\nimport { IsyAdvancedSearchComponent } from './isy-advanced-search/isy-advanced-search.component';\r\nimport { IsyAnalysesAndReportsComponent } from './isy-analyses-and-reports/isy-analyses-and-reports.component';\r\nimport { IsyBboxComponent } from './isy-bbox/isy-bbox.component';\r\nimport { IsyDrawComponent } from './isy-draw/isy-draw.component';\r\nimport { IsyElevationProfileComponent } from './isy-elevation-profile/isy-elevation-profile.component';\r\nimport { IsyExportComponent } from './isy-export/isy-export.component';\r\nimport { IsyFeedbackComponent } from './isy-feedback/isy-feedback.component';\r\nimport { IsyObliqueComponent } from './isy-oblique/isy-oblique.component';\r\nimport { IsyPrintMapComponent } from './isy-print-map/isy-print-map.component';\r\nimport { IsyPropertyReportComponent } from './isy-property-report/isy-property-report.component';\r\nimport { IsyThreeDComponent } from './isy-three-d/isy-three-d.component';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { IsyRoadAnalysisComponent } from './isy-road-analysis/isy-road-analysis.component';\r\n\r\nexport const TOOLS: ITool[] = [\r\n {\r\n id: EToolId.DRAW,\r\n toolName: 'drawMenuTxt',\r\n icon: fontAwesomeIcons.faPalette,\r\n showInDraggable: true,\r\n component: IsyDrawComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: true,\r\n closeOnEscape: true,\r\n },\r\n {\r\n id: EToolId.PRINT_PROTOCOL,\r\n toolName: 'printProtocolTxt',\r\n icon: fontAwesomeIcons.faPrint,\r\n showInDraggable: true,\r\n component: undefined,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: false,\r\n },\r\n {\r\n id: EToolId.ELEVATION_PROFILE,\r\n toolName: 'elevationProfileTxt',\r\n icon: fontAwesomeIcons.faChartArea,\r\n showInDraggable: true,\r\n component: IsyElevationProfileComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: true,\r\n },\r\n {\r\n id: EToolId.EXPORT_DATA,\r\n toolName: 'exportDataTxt',\r\n icon: fontAwesomeIcons.faFileExport,\r\n showInBlade: true,\r\n bladeOptions: {\r\n position: 'left',\r\n fullScreen: false,\r\n showHeader: true,\r\n showBladeOverlay: false,\r\n bladeHeader: {\r\n headerTitle: 'exportDataTxt',\r\n headerIcon: fontAwesomeIcons.faFileExport,\r\n },\r\n },\r\n component: IsyExportComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: true,\r\n resourceId: 'export',\r\n },\r\n helpButton: false,\r\n },\r\n {\r\n id: EToolId.THREE_D_VIEW,\r\n toolName: 'threeDViewTxt',\r\n icon: fontAwesomeIcons.faCubes,\r\n showInBlade: true,\r\n bladeOptions: {\r\n position: 'top',\r\n fullScreen: true,\r\n showHeader: true,\r\n showBladeOverlay: true,\r\n bladeHeader: {\r\n headerTitle: 'threeDViewTxt',\r\n headerIcon: fontAwesomeIcons.faCubes,\r\n },\r\n },\r\n component: IsyThreeDComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: false,\r\n },\r\n {\r\n id: EToolId.OBLIQUE_VIEW,\r\n toolName: 'obliqueViewTxt',\r\n icon: fontAwesomeIcons.faPlane,\r\n showInBlade: true,\r\n bladeOptions: {\r\n position: 'top',\r\n fullScreen: true,\r\n showHeader: true,\r\n showBladeOverlay: true,\r\n bladeHeader: {\r\n headerTitle: 'obliqueViewTxt',\r\n headerIcon: fontAwesomeIcons.faPlane,\r\n },\r\n },\r\n component: IsyObliqueComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: false,\r\n },\r\n {\r\n id: EToolId.BBOX,\r\n toolName: 'mapLookUpTxt',\r\n icon: fontAwesomeIcons.faSquare,\r\n showInMapActionDialog: true,\r\n mapActionDialogText: 'jobtech_bbox_description',\r\n component: IsyBboxComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: false,\r\n },\r\n {\r\n id: EToolId.ADVANCED_SEARCH,\r\n toolName: 'advancedSearchTxt',\r\n icon: fontAwesomeIcons.faSearch,\r\n showInBlade: true,\r\n bladeOptions: {\r\n position: 'top',\r\n fullScreen: true,\r\n showHeader: true,\r\n showBladeOverlay: true,\r\n bladeHeader: {\r\n headerTitle: 'advancedSearchTxt',\r\n headerIcon: fontAwesomeIcons.faSearch,\r\n },\r\n },\r\n component: IsyAdvancedSearchComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: true,\r\n },\r\n {\r\n id: EToolId.PROPERTY_REPORT,\r\n toolName: 'propertyReportTxt',\r\n icon: fontAwesomeIcons.faUser,\r\n showInBlade: true,\r\n bladeOptions: {\r\n position: 'left',\r\n fullScreen: false,\r\n showHeader: true,\r\n showBladeOverlay: false,\r\n bladeHeader: {\r\n headerTitle: 'propertyReportDialog_txt',\r\n headerIcon: fontAwesomeIcons.faUser,\r\n },\r\n },\r\n component: IsyPropertyReportComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: true,\r\n },\r\n {\r\n id: EToolId.FEEDBACK,\r\n toolName: 'feedbackTxt',\r\n icon: fontAwesomeIcons.farComment,\r\n showInMapActionDialog: true,\r\n mapActionDialogText: 'feedbackDialog_txt',\r\n component: IsyFeedbackComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: false,\r\n },\r\n {\r\n id: EToolId.ANALYSES_AND_REPORTS,\r\n toolName: 'analysesAndReportsTxt',\r\n icon: fontAwesomeIcons.faBook,\r\n showInBlade: true,\r\n bladeOptions: {\r\n position: 'left',\r\n fullScreen: false,\r\n showHeader: true,\r\n showBladeOverlay: false,\r\n bladeHeader: {\r\n headerTitle: 'analysesAndReportsTxt',\r\n headerIcon: fontAwesomeIcons.faBook,\r\n },\r\n },\r\n component: IsyAnalysesAndReportsComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: true,\r\n },\r\n {\r\n id: EToolId.PRINT_MAP,\r\n toolName: 'printMapTxt',\r\n icon: fontAwesomeIcons.faPrint,\r\n showInBlade: true,\r\n bladeOptions: {\r\n position: 'left',\r\n fullScreen: false,\r\n showHeader: true,\r\n showBladeOverlay: false,\r\n bladeHeader: {\r\n headerTitle: 'printMapTxt',\r\n headerIcon: fontAwesomeIcons.faPrint,\r\n },\r\n },\r\n component: IsyPrintMapComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: true,\r\n },\r\n {\r\n id: EToolId.ROAD_ANALYSIS,\r\n toolName: 'roadAnalysisTxt',\r\n icon: fontAwesomeIcons.faRoute,\r\n showInBlade: true,\r\n bladeOptions: {\r\n position: 'left',\r\n fullScreen: false,\r\n showHeader: true,\r\n showBladeOverlay: false,\r\n bladeHeader: {\r\n headerTitle: 'roadAnalysisTxt',\r\n headerIcon: fontAwesomeIcons.faRoute,\r\n },\r\n },\r\n component: IsyRoadAnalysisComponent,\r\n isVisible: false,\r\n buttonAvailable: true,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: true,\r\n },\r\n {\r\n id: EToolId.POINT_INFORMATION,\r\n toolName: 'pointInformationTxt',\r\n icon: fontAwesomeIcons.faInfoCircle,\r\n showInDraggable: true,\r\n component: undefined,\r\n isVisible: false,\r\n buttonAvailable: false,\r\n usingUserResource: {\r\n hasUserResource: false,\r\n resourceId: undefined,\r\n },\r\n helpButton: false,\r\n },\r\n];\r\n","import { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { TranslatePipe } from './translate.pipe';\r\nimport { TranslateDirective } from './translate.directive';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule],\r\n declarations: [TranslatePipe, TranslateDirective],\r\n exports: [TranslatePipe, TranslateDirective],\r\n})\r\nexport class IsyTranslateModule {}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { TRANSLATIONS } from './translations';\r\n\r\n@Injectable()\r\nexport class IsyTranslateService {\r\n private _currentLang: string;\r\n\r\n public get currentLang() {\r\n return this._currentLang;\r\n }\r\n // inject our translations\r\n constructor(@Inject(TRANSLATIONS) private _translations: Record>[]) {}\r\n\r\n public use(lang: string): void {\r\n // set current language\r\n this._currentLang = lang;\r\n }\r\n\r\n private translate(key: string): string {\r\n // private perform translation\r\n const translation = key;\r\n if (\r\n this._translations[this.currentLang] &&\r\n this._translations[this.currentLang][key]\r\n ) {\r\n return this._translations[this.currentLang][key];\r\n }\r\n\r\n return translation;\r\n }\r\n\r\n public instant(key: string) {\r\n // public perform translation\r\n return this.translate(key);\r\n }\r\n\r\n public extendTranslate(key: string, trans: object) {\r\n Object.assign(this._translations[key], trans);\r\n }\r\n}\r\n","export const LANG_EN_NAME = 'en';\r\n\r\nexport const LANG_EN_TRANS = {\r\n // Public\r\n yes: 'Yes',\r\n no: 'No',\r\n search: 'Search',\r\n searchMapLayer: 'Search map layer',\r\n back: 'Back',\r\n close: 'Close',\r\n cancel: 'Cancel',\r\n error: 'Error',\r\n success: 'Success',\r\n add: 'Add',\r\n save: 'Save',\r\n please_wait: 'Please wait...',\r\n delete: 'Delete',\r\n delete_all: 'Delete all',\r\n select_file_for_upload: 'Select file for upload or \"drag and drop\"',\r\n project_name_not_found: 'Project name not found',\r\n move_up: 'Move up',\r\n move_down: 'Move down',\r\n download: 'Download',\r\n Polygon: 'Polygon',\r\n Point: 'Point',\r\n Line: 'Line',\r\n Square: 'Point',\r\n Triangle: 'Point',\r\n Cross: 'Point',\r\n Star: 'Point',\r\n update: 'Update',\r\n zoom_in: 'Zoom in',\r\n zoom_out: 'Zoom out',\r\n other_layers: 'Other layers',\r\n error_bbox_legendgraphic: 'Failed to fetch filtered legend graphic',\r\n no_bbox_legendgraphic:\r\n 'Filtered legend graphic is not supported for this WMS',\r\n address: 'Address',\r\n elevation: 'Elevation',\r\n plan: 'Plan',\r\n service: 'Service',\r\n // Main menu footer\r\n about: 'About',\r\n help: 'Help',\r\n feedback: 'Feedback',\r\n // Main menu login\r\n userName: 'User name',\r\n password: 'Password',\r\n signIn: 'Sign in',\r\n signOut: 'Sign out',\r\n // Dynamic nav loader\r\n layers: 'Layers',\r\n tools: 'Tools',\r\n log_in: 'Log in',\r\n projects: 'Projects',\r\n project: 'Project',\r\n legend: 'Legend',\r\n active_legends: 'Legends',\r\n // Tools\r\n drawMenuTxt: 'Draw and measure menu',\r\n printProtocolTxt: 'Print protocol',\r\n elevationProfileTxt: 'Elevation profile',\r\n exportDataTxt: 'Eksport of data',\r\n threeDViewTxt: '3D view',\r\n obliqueViewTxt: 'Oblique',\r\n advancedSearchTxt: 'Advanced search',\r\n propertyReportTxt: 'Owner report',\r\n feedbackTxt: 'Provide feedback',\r\n analysesAndReportsTxt: 'Analyses and reports',\r\n printMapTxt: 'Print map',\r\n roadAnalysisTxt: 'Road Analysis',\r\n WebinnsynTxt: 'Go to ISY Map Server',\r\n mapLookUpTxt: 'Map lookup',\r\n pointInformationTxt: 'Point information',\r\n // Tools / Export\r\n export_select_all_datasets: 'Select all',\r\n export_select_data: 'Select data:',\r\n uploadOwnLayer: 'Add custom layer',\r\n // Tools/Draw\r\n pointTab: 'Point',\r\n lineTab: 'Line',\r\n polygonTab: 'Polygon',\r\n textTab: 'Text',\r\n pointType_txt: 'Point type:',\r\n size_txt: 'Size:',\r\n admin_style_toggle_hover: 'Expand style on hover',\r\n pointTypeEditor_txt: 'Point type:',\r\n sizeEditor_txt: 'Point size:',\r\n textSize_txt: 'Text size:',\r\n color_txt: 'Color:',\r\n stroke_color_txt: 'Color:',\r\n line_stroke_type_txt: 'Line type:',\r\n line_stroke_width_txt: 'Line Width:',\r\n fill_color_txt: 'Fill color:',\r\n fill_color_editor_txt: 'Fill color:',\r\n admin_fill_type_txt: 'Fill type:',\r\n admin_pattern_type_txt: 'Pattern type:',\r\n admin_pattern_color_txt: 'Pattern color:',\r\n admin_color_combination_txt: 'Color combination:',\r\n admin_vertical_title: 'Vertical pattern',\r\n admin_horizontal_title: 'Horizontal pattern',\r\n admin_grid_title: 'Grid pattern',\r\n admin_downright_title: 'Diagonal pattern',\r\n admin_upright_title: 'Flipped diagonal pattern',\r\n admin_cross_title: 'Cross pattern',\r\n admin_add_color_txt: 'Add color',\r\n admin_remove_color_txt: 'Remove color',\r\n admin_pattern_line_distance_txt: 'Line distance:',\r\n admin_pattern_line_width_txt: 'Line thickness:',\r\n active_txt: 'Active:',\r\n normal_txt: 'Normal:',\r\n hover_txt: 'Hover:',\r\n showMeasurements_txt: 'Show measurements on the map',\r\n snapGuides_txt: 'Snap guides',\r\n toggleSnapping: 'Snap to active layers',\r\n lineType_txt: 'Line type:',\r\n lineTypeEditor_txt: 'Outline type:',\r\n outlineTypeDashed_txt: 'Dashed',\r\n outlineTypeSolid_txt: 'Solid',\r\n lineTypeLine_txt: 'Line',\r\n lineTypeSpacing_txt: 'Spacing',\r\n lineWidth_txt: 'Width:',\r\n lineWidthEditor_txt: 'Outline width',\r\n line_stroke_linecap_txt: 'Line cap',\r\n linecap_round_title: 'Round',\r\n linecap_square_title: 'Butt',\r\n linecap_butt_title: 'Square',\r\n pointRotation_txt: 'Rotation (degrees):',\r\n text_stroke_width_txt: 'Outline width:',\r\n transparency_txt: 'Transparency:',\r\n text: 'Text',\r\n number: 'Number',\r\n decimal: 'Decimal',\r\n textarea: 'Text area',\r\n boolean: 'Boolean',\r\n draw_enter_text: 'Text',\r\n circle_title: 'Circle',\r\n triangle_title: 'Triangle',\r\n square_title: 'Square',\r\n star_title: 'Star',\r\n cross_title: 'Cross',\r\n icon_title: 'Add icon',\r\n line_title: 'Line',\r\n dash_title: 'Dash line',\r\n dot_title: 'Dot line',\r\n download_title: 'Download',\r\n download_description: 'Download GeoJSON',\r\n upload_title: 'Upload',\r\n edit_title: 'Edit',\r\n stop_edit_title: 'Stop editing',\r\n remove: 'Remove',\r\n drawAddSuccess_toaster_msg: 'Draw successfully added',\r\n layerAddSuccess_toaster_msg: 'Layer successfully added',\r\n drawNoDrawing_toaster_msg: 'No drawing in map',\r\n drawErrorConverting_toaster_msg: 'Error converting file',\r\n error_toaster_title: 'Error',\r\n drawDownloadSuccess_toaster_msg: 'Downloaded drawing',\r\n drawDeleteSuccess_toaster_msg: 'Deleted drawing',\r\n drawAddFileToLarge_toaster_msg: 'Uploaded file cannot extend 20 MB',\r\n collapse_draw: 'Maximize',\r\n uncollapse_draw: 'Minimize',\r\n uploadingInProgress_toaster_msg: 'Uploading in progress...',\r\n // Style editor\r\n saveStyle_txt: 'Upload style',\r\n pointStyle_txt: 'Point style',\r\n lineStyle_txt: 'Line style',\r\n polygonStyle_txt: 'Polygon style',\r\n admin_offset_x_txt: 'Offset X',\r\n admin_offset_y_txt: 'Offset Y',\r\n admin_placement_point: 'In Center of Gravity',\r\n admin_placement_line: 'On Line',\r\n admin_placement_txt: 'Text Placement',\r\n admin_download_json_sld: 'Download style file',\r\n admin_delete_json_sld: 'Delete style file',\r\n admin_delete_layer: 'Delete layer',\r\n admin_simple_fill_txt: 'Monochromatic',\r\n admin_thin_pattern_fill_txt: 'Simple pattern',\r\n admin_thick_pattern_fill_txt: 'Fully covered pattern',\r\n styleIconUpload_txt: 'Use icon',\r\n enter_filename: 'File name',\r\n filename_empty_error: '- Please write a style name.',\r\n filtervalue_empty_error:\r\n '- One of the filtering options are empty. Please fill in before continuing.',\r\n show_filter_button: 'Show Filter Editor',\r\n show_style_button: 'Show Style Editor',\r\n admin_service_filter_attribute: 'Choose Attribute',\r\n admin_service_select_operator_type: 'Choose Operator',\r\n admin_service_filter_value: 'Value (free-text)',\r\n admin_service_add_filter_editor: '+ Add filter editor',\r\n admin_service_add_filter: '+ Add Filter',\r\n admin_service_filter_matching: 'Match Filters By',\r\n admin_service_filtering_header: 'Filtering',\r\n admin_service_change_filter_name: 'Change Filter Name',\r\n admin_service_change_style_name: 'Change Style Label',\r\n admin_style_editor_point_label: 'Point',\r\n admin_style_editor_line_label: 'Line',\r\n admin_style_editor_polygon_label: 'Polygon',\r\n admin_number_of_zoom_levels: 'Antall zoom nivå',\r\n admin_matrixset: 'Matrixset',\r\n and_filter_operator: 'And',\r\n or_filter_operator: 'Or',\r\n equalTo_filter_operator: 'Equal',\r\n notEqualTo_filter_operator: 'Not equal',\r\n greaterThan_filter_operator: 'Greater than',\r\n lessThan_filter_operator: 'Less than',\r\n contains_filter_operator: 'Contains',\r\n notContains_filter_operator: 'Not contains',\r\n inArray_filter_operator: 'Included in',\r\n notInArray_filter_operator: 'Not included in',\r\n delete_style_file_success: 'Successfully deleted the file',\r\n delete_style_file_error: 'Error: Could not delete file',\r\n // Tools/Advanced search\r\n advancedSearch_mainTxt: 'Advanced search',\r\n advancedSearch_innerTxt: 'Search for object types or common properties',\r\n objectTypeSearch_mainTxt: 'Search for object types',\r\n objectTypeSearch_innerTxt: 'Map object',\r\n commonPropertySearch_mainTxt: 'Search for common properties',\r\n commonPropertySearch_innerTxt: 'Common properties',\r\n selectObjectType: 'Select object type',\r\n advancedSearchEmptyContentText: 'nothing to see here',\r\n advancedSearchEmptyContentInnerText:\r\n 'There are no records to show you right now. There may be no entries or you have not selected a layer.',\r\n loadDataInMap: 'Show data in the map',\r\n advancedSearchObjectTypeTxt: 'Advanced search - object type',\r\n advancedSearchCommonTypeTxt: 'Advanced search - common features',\r\n // Tools/property report\r\n propertyReportDialog_txt: 'Select area that you want to get information from',\r\n propertyReport_header: 'Owner report',\r\n selectedNeighbors: 'Selected neighbors',\r\n ownerNotAvailable: 'Owner not available',\r\n showReport_title: 'Show, save and print out report',\r\n downloadReport_title: 'Download report as CSV',\r\n printReport_title: 'Print report',\r\n layerWithoutNeighborList_toaster_msg:\r\n 'No layer with show neighbor list parameter is activated. ',\r\n layerWithoutNeighborList_toaster_title: 'Nothing to show',\r\n catchError_toaster_title: 'Something bad happend',\r\n select_polygon: 'SELECT POLYGON',\r\n // Tools/Feedback\r\n feedbackDialog_txt: 'Set a point',\r\n feedback_header: 'Send your feedback',\r\n youSelectedPoint: 'You have selected a point in',\r\n nameInput: 'Name',\r\n emailInput: 'Email',\r\n teleInput: 'Telephone',\r\n feedbackInput: 'Feedback',\r\n attachmentsInput: 'Attachments',\r\n emailNotValidInput: 'Email not valid',\r\n personalInfoTxt:\r\n 'Your personal info saves when you send feedback. See more about our privacy policy',\r\n linkTxt: 'here.',\r\n saveTxt: 'Save',\r\n removeAttachment_title: 'Remove attachment',\r\n feedbackCanceled_toaster_msg: 'Feedback canceled',\r\n feedbackRegistered_toaster_msg: 'Feedback registered',\r\n uploadFailed_toaster_msg: 'Upload failed',\r\n // Tools/Analyses and reports\r\n analysesReportsDialog_txt:\r\n 'Define the area that you want to see the report for',\r\n selectReportType: 'Select report type',\r\n showReport: 'Show',\r\n fileDownloadSuccess_toaster_msg: 'File downloaded successfully!',\r\n fileDownloadError_toaster_msg: 'File download failed!',\r\n noReportType_toaster_msg:\r\n 'Selected report is not available, possibly due to missing priviliges. Report type: ',\r\n noReportType_toaster_title: 'Nothing to show',\r\n reports_selected: 'reports selected',\r\n pointWithBuffer_txt: 'Point with buffer',\r\n lineWithBuffer_txt: 'Line with buffer',\r\n bufferDistance_txt: 'Buffer distance in meter',\r\n chooseFeature_txt: 'Use map to choose',\r\n selectAnalysisArea_txt: 'Select analysis area',\r\n drawAreOnMap_txt: 'Draw the area on the map',\r\n selectFeature_txt: 'Select area',\r\n bufferMinValue_txt: 'Min buffer value is 1 meter',\r\n bufferMinValue_zero_txt: 'Min buffer value is 0 meter',\r\n // Tools/Print map\r\n printMap_txt: 'PRINT MAP',\r\n title_lbl: 'Title',\r\n text_lbl: 'Comment',\r\n iconText_lbl: 'Icon text',\r\n legend_lbl: 'Legend',\r\n icon_lbl: 'Icon/logo/municipality armorial',\r\n northArrow_lbl: 'North arrow',\r\n scale_lbl: 'Scale',\r\n custom_scale_lbl: 'Custom Scale',\r\n graticule_lbl: 'Graticule',\r\n graticule_debug: 'Graticule debug',\r\n landscape_lbl: 'landscape',\r\n portrait_lbl: 'portrait',\r\n sheetSize_lbl: 'Sheet size',\r\n saveMap: 'Save map',\r\n printMap: 'Print map',\r\n print_select_all_legends: 'Select all',\r\n printMapDisabled: 'Can not print with selected combination of scale and dpi',\r\n printMapDisabledSheetSizeDpi: 'Can not print with selected combination of sheet size and dpi',\r\n choose_legend_lbl: 'Select legend layers',\r\n legends_new_page_lbl: 'Print legends on new page',\r\n no_info_lbl: 'Hide map info',\r\n // Tools/Elevation profile\r\n scaleLength_lbl: 'Scale length',\r\n scaleHeight_lbl: 'Scale height',\r\n format_lbl: 'Format',\r\n dpi_lbl: 'Quality',\r\n grid_lbl: 'Grid',\r\n inscription_of_heights_lbl: 'Inscription of heights on point',\r\n background_colors_lbl: 'Background colors',\r\n draw_walls_lbl: 'Draw walls',\r\n include_measures_lbl: 'Include measures in the calculation',\r\n incline_percentage_lbl: 'Incline percentage',\r\n equal_scale_length_txt: 'Equal scale length',\r\n a4_landscape_txt: 'A4 landscape',\r\n a3_landscape_txt: 'A3 landscape',\r\n clarify_btn_txt: 'Clarify',\r\n invalid_length_msg: 'Invalid length',\r\n max_length_is_msg: 'Max length is 5000',\r\n // Tools/Road Analysis\r\n prepTime: 'Preparation time:',\r\n totalTime: 'Total time:',\r\n driveTime: 'Drive time:',\r\n addInterestPoint: 'Add interest point',\r\n downloadInput: 'Donwload input',\r\n uploadInput: 'Upload input',\r\n runRoadAnalysis: 'Run road analysis',\r\n isochronCostWarning:\r\n 'Warning: Drive time higher than 45min might, in central areas, cause the program to be unresponsive.',\r\n colorSteps: 'Steps',\r\n singleColor: 'Solid',\r\n gradientColor: 'Gradient',\r\n downloadRoute: 'Download road data',\r\n // edit wfst\r\n objectSaved_toaster_msg: 'Object is saved.',\r\n objectUpdated_toaster_msg: 'Object is updated.',\r\n objectDeleted_toaster_msg: 'Object is deleted.',\r\n objectNotUpdated_toaster_msg: 'Object is not updated.',\r\n objectNotSaved_toaster_msg: 'Object is not saved.',\r\n wfst_createNew: 'Create new',\r\n wfst_update: 'Update',\r\n wfst_attachments: 'Attachments',\r\n wfst_cancel: 'Cancel',\r\n wfst_save: 'save',\r\n wfst_editGeometri: 'Edit geometri',\r\n wfst_removeAttachment_title: 'Remove attachment',\r\n wfst_add_feature: 'Add feature',\r\n wfst_dropdown_select: 'Select a value',\r\n // Info panel\r\n noResults: 'Your search contained no results.',\r\n searchHelp: 'You can search for:',\r\n admin_search_example: 'Example',\r\n searchExample_ssr: 'Galdhøpiggen',\r\n searchExample_matr: '5001-13/13',\r\n searchExample_gi: '202201',\r\n searchExample_giname: 'Midtbyplanen',\r\n searchExample_gidnois: '5001-13/13',\r\n searchExample_address: 'Slottsplassen 1',\r\n searchExample_owners: 'Ola Nordmann',\r\n searchExample_buildingnumber: '123456',\r\n searchExample_plannois: 'Kommuneplanens arealdel 2012-2024',\r\n coordinate: 'Coordinate (north, east)',\r\n searchExample_coordinate: '6643445, 596587',\r\n searchExample_custom: ' ',\r\n searchResults: 'Search results',\r\n pointInformation: 'Point information',\r\n noPosition: ' (No position)',\r\n // Position info\r\n property: 'Property',\r\n building: 'Building',\r\n area_plan: 'Area plan',\r\n // Feature info\r\n showInfo_txt: 'Show info',\r\n showInfo_tooltip: 'Cadastre information',\r\n show_road_profile: 'Show road profile',\r\n show_road_cross_section: 'Show road cross section',\r\n neighbor_name: 'Name:',\r\n neighbor_address: 'Address:',\r\n neighbor_description: 'Description:',\r\n neighbor_number: 'Person-id number',\r\n neighbor_orgnumber: 'Organization number',\r\n neighbor_ownership: 'Ownership:',\r\n getReports: 'Get property reports',\r\n makeNeighborList: 'Create neighbor list',\r\n showProceedings: 'Show proceedings',\r\n showProceedings_sendFeedback: 'Send feedback',\r\n editTextAndGeometri: 'Edit text and geometri',\r\n getCasesFromSystem_toaster_msg: 'Geting cases from system ...',\r\n getCasesFromSystem_toaster_title: 'getting cases',\r\n planDocuments_txt: 'Planning documents:',\r\n noConnecteionToSakssystem_toaster_msg: 'No connecteion to sakssystem',\r\n // Blade\r\n compress_blade_title: 'Compress',\r\n expand_blade_title: 'Expand',\r\n // Administrator\r\n admin_title: 'ISY Map Administrator',\r\n admin_subtitle: 'Select a button to proceed',\r\n admin_createNew: 'Create new project',\r\n admin_emptyFromTemplate: 'Empty project from template',\r\n admin_copyProject: 'Copy project',\r\n admin_editProject: 'Edit current project',\r\n admin_base_description:\r\n 'Here you can choose base layers from predefined base maps list or add your custom base map. In preview mode you will see result from the selected base layers.',\r\n admin_base_select_info: 'Select/deselect base layer.',\r\n admin_base_mark_main_info:\r\n 'Mark for main base layer. Only selected base layer can be mark.',\r\n admin_base_edit_info:\r\n 'Edit base layer. Use for change title, image format etc...',\r\n admin_base_add_custom_info: 'Add new custom base map via url.',\r\n admin_base_delete_info: 'Delete base layer from project and library.',\r\n admin_base_details: 'Base map details',\r\n admin_base_predefined: 'Base maps',\r\n admin_base_custom: 'Custom base maps',\r\n admin_base_custom_add: 'Add new custom base map',\r\n admin_base_add: 'Add base map',\r\n admin_base_name: 'Name',\r\n admin_base_edit: 'Edit base layer',\r\n admin_base_no_preview:\r\n 'Preview is not available at the moment. Choose base layer(s) from the details section to enable preview.',\r\n admin_choose_icon: 'Choose icon',\r\n admin_custom_tool_title: 'Title',\r\n admin_custom_tool_icon: 'Icon',\r\n admin_custom_tool_new_window: 'New window',\r\n admin_details_title: 'DETAILS',\r\n admin_preview_title: 'PREVIEW',\r\n admin_order_map_layers: 'Order map layers',\r\n admin_data_source_title: 'Data source',\r\n admin_services_title: 'Services',\r\n admin_catalog_service_custom_add: 'Add custom WMS/WFS-service',\r\n admin_catalog_service_custom_add_success:\r\n 'Success adding custom WMS/WFS-service',\r\n admin_catalog_service_custom_add_error: 'Error adding custom WMS/WFS-service',\r\n admin_catalog_service_custom_upload: 'Upload local data (SOSI/Shape)',\r\n admin_catalog_service_local_layer_warning:\r\n 'Layer is not present in shared source-list',\r\n admin_layers_description:\r\n 'Define layers and groups. Click preview to see the result from selected layers.',\r\n admin_layers_no_preview:\r\n 'Preview is not available at the moment. Choose layer(s) from the details section to enable preview.',\r\n admin_layers_alias: 'Alias',\r\n admin_layers_value: 'Value',\r\n admin_layers_select: 'Select',\r\n admin_layers_select_all: 'Select all',\r\n admin_select: 'Select',\r\n admin_tools: 'Tool',\r\n admin_layers_value_name: 'Value name',\r\n admin_layers_alias_name: 'Alias name',\r\n admin_layers_select_group: 'Select group from dropdown',\r\n admin_layers_select_datatype: 'Select datatype',\r\n admin_layers_no_group:\r\n 'No groups exists. Go to the group layers tab to define groups.',\r\n admin_layers_selected_group_title: 'Selected group:',\r\n admin_layers_custom_url_parameters: 'Custom URL parameters',\r\n admin_layers_selected_style_title: 'Selected style:',\r\n admin_layers_legend_url_title: 'Legend graphic url:',\r\n admin_layers_min_scale_title: 'Min scale',\r\n admin_layers_max_scale_title: 'Max scale',\r\n admin_layers_edit_node: 'Edit layer node',\r\n admin_layers_expand_tree_info:\r\n 'Expand service node to get list of available layers.',\r\n admin_layers_count_info: 'Layer-count in selected service.',\r\n admin_layers_edit_service_info: 'Show/Edit service information settings.',\r\n admin_layers_select_info: 'Select layer from layers list.',\r\n admin_layers_no_feature_warning_info:\r\n 'Warning sign indicating a selected layer with no selected features.',\r\n admin_layers_edit_features_info:\r\n 'Select group layer and features for selected layer.',\r\n admin_predefined_tools_list: 'Predefined tools list',\r\n admin_predefined_integrations_list: 'Predefined integrations list',\r\n admin_custom_tools_list: 'Custom tools list',\r\n dmin_custom_integrations_list: 'Custom integrations list',\r\n admin_custom_tools_list_is_empty: 'Custom tools list is empty',\r\n admin_add_new_custom_tool: 'Add new custom tool',\r\n admin_add_new_custom_integration: 'Add new custom integration',\r\n admin_service_list_no_service:\r\n 'No services available. Select service(s) from the list in the catalog view.',\r\n admin_service_list_no_service_match: 'No services match the current search.',\r\n admin_service_wfs_layers: 'WFS layers',\r\n admin_service_ogc_layers: 'OGC layers',\r\n admin_service_wms_layers: 'WMS layers',\r\n admin_modal_title: 'Administrator',\r\n admin_modal_cancel: 'CANCEL',\r\n admin_modal_save: 'SAVE',\r\n admin_modal_preview: 'PREVIEW',\r\n admin_modal_admin_preview: 'ADMINISTRATOR PREVIEW',\r\n admin_group_create: 'Create group',\r\n admin_group_create_new: 'Create new group',\r\n admin_group_name: 'Group name',\r\n admin_group_exist: 'already exist',\r\n admin_group_list: 'Group list',\r\n admin_group_layers_inside: 'layers inside group',\r\n admin_group_unread_msg: 'unread messages',\r\n admin_layers_define_subtitle: 'Select file to upload or \"drag and drop\"',\r\n admin_layers_add_service: 'Add service',\r\n admin_layers_replace_service: 'Delete existing and upload new service',\r\n admin_layers_provider: 'Provider',\r\n admin_layers_category: 'Category',\r\n admin_layers_title: 'Title',\r\n admin_layers_url: 'Url',\r\n admin_layers_order: 'Order',\r\n admin_base_layer_credits_to: 'Credits to',\r\n admin_layers_version: 'Version',\r\n admin_layers_service_type: 'Service type',\r\n admin_layers_subname: 'Abstract',\r\n admin_layers_service_name: 'Service name',\r\n admin_layers_select_version: 'Select versjon',\r\n admin_layers_select_service_type: 'Select service type',\r\n admin_layers_get_capabilities: 'Get capabilities',\r\n admin_layers_get_capabilities_starting: 'Starting get capabilities ',\r\n admin_layers_get_capabilities_error: 'Get capabilities failed with error: ',\r\n admin_layers_get_capabilities_ok: 'capabilities retrieved',\r\n admin_unable_to_retrive_properties: 'Unable to retrieve properties',\r\n admin_schema_title: 'Schema',\r\n admin_schema_filename: 'File name',\r\n admin_schema_description: 'Description',\r\n admin_schema_time_created: 'Time created',\r\n admin_schema_tables: 'Tables',\r\n admin_layers_select_schema: 'Select schema to overwrite',\r\n admin_layers_new_schema: 'New schema',\r\n admin_layers_delete_schema: 'Delete schema',\r\n admin_service_select_props: 'SELECT PROPERTIES',\r\n admin_service_define_styles: 'DEFINE CARTOGRAPHY',\r\n admin_settings_center: 'Display center',\r\n admin_settings_coordinates: 'Map coordinates',\r\n admin_settings_get_coordinates: 'Get map coordinates',\r\n admin_settings_restricted: 'Hide in project list',\r\n admin_settings_update_extent: 'Update extent when project selected',\r\n admin_settings_hover_info_first_layer: 'Hover info only for the first layer',\r\n admin_settings_zoom: 'Zoom',\r\n admin_settings_num_zoom_levels: 'Number of zoom-levels',\r\n admin_settings_project_name: 'Project name',\r\n admin_settings_project_headertitle: 'Title',\r\n admin_settings_project_headersubtitle: 'Subtitle',\r\n admin_settings_project_headericon: 'Icon',\r\n admin_settings_project_municipality_nr: 'Municipality No. for search',\r\n admin_settings_coordinate_system: 'Coordinate system',\r\n admin_settings_site_title: 'Site title',\r\n admin_settings_epsg: 'EPSG',\r\n admin_settings_webinnsyn_url: 'Url to ISY Map Server ',\r\n admin_settings_single_gi_url: 'Single GI-Plan WebService?',\r\n admin_settings_gi_plan_url: 'Single GI-Plan url',\r\n admin_settings_gi_plan_kart_url: 'Plan webservice url - Map',\r\n admin_settings_gi_plan_basis_url: 'Plan webservice url - Basic',\r\n admin_settings_gi_plan_utvidet_url: 'Plan webservice url - Extended',\r\n admin_catalog_info:\r\n 'Catalog with available services. Selected service will be added to selected services list (tab services).',\r\n admin_catalog_add_info: 'Add service from catalog',\r\n admin_catalog_remove_info: 'Remove selected service',\r\n admin_catalog_service_added_info:\r\n 'Service has been added to selected services list',\r\n admin_catalog_new_info: 'Add new custom service',\r\n admin_catalog_edit: 'Edit catalog layer',\r\n admin_remove_filter: 'Remove filter',\r\n admin_remove_filter_warnings: 'Remove filter for warnings',\r\n admin_set_filter: 'Filter selected layers',\r\n admin_set_filter_warnings: 'Filter layers with warnings',\r\n admin_set_filter_features: 'Filter and reorder',\r\n admin_edit_enabled: 'Edit map layer enabled?',\r\n admin_send_username: 'Send user name?',\r\n admin_select_geometry_type: 'Geometry type',\r\n admin_has_code_list: 'Has code list',\r\n admin_codevalues: 'Code values',\r\n admin_editable: 'Editable',\r\n admin_transactions: 'Laget støtter transaksjoner',\r\n admin_datatype: 'Datatype',\r\n admin_attachment: 'Attachment',\r\n admin_basic_title: 'Basic',\r\n admin_search_title: 'Search',\r\n admin_integration_title: 'Integration',\r\n admin_tool_title: 'Tool',\r\n admin_pointinfo_title: 'Point information',\r\n admin_name_title: 'Name',\r\n admin_hasurl_title: 'Has url',\r\n admin_remove_title: 'Remove',\r\n admin_feature_info_title: 'Feature info title',\r\n admin_subname_title: 'Title',\r\n admin_groups_title: 'Groups',\r\n admin_project_name_exists_toaster_msg:\r\n 'Project name currently exists! Saving canceled',\r\n admin_project_name_exists_toaster_title: 'Could not save!',\r\n admin_saving_failed_toaster_msg: 'Saving failed',\r\n admin_saving_failed_toaster_title: 'Could not save!',\r\n admin_validating_failed_toaster_title: 'Validation failed!',\r\n admin_validating_project_name: 'Missing project name',\r\n admin_validating_project_epsg: 'Missing coordinate system',\r\n admin_validating_project_center: 'Missing center coordinate',\r\n admin_validating_project_zoom: 'Missing zoom level',\r\n admin_validating_project_base_layer: 'Missing base layer',\r\n admin_saving_success_toaster_msg: 'Project saved',\r\n admin_saving_success_toaster_title: 'Saving of project',\r\n admin_upload_failed_toaster_msg: 'Upload failed',\r\n admin_remove_success_toaster_msg: 'Reload to default project',\r\n admin_remove_success_toaster_title: 'Project removed',\r\n admin_layer_copy_created_toaster_msg: 'Copy of layer has been created!',\r\n admin_project_settings: 'PROJECT SETTINGS',\r\n admin_base_layers: 'BASE LAYERS',\r\n admin_empty_layers_correct_service_q:\r\n 'Service has no layers. Wrong service type?',\r\n admin_layers_crs_not_supported: 'The WMS service does not support the selected project coordinate system',\r\n admin_imagetype: 'Image type',\r\n admin_use_gatekeeper: 'Use gatekeeper',\r\n admin_opacity: 'Opacity',\r\n admin_layers_group: 'LAYER GROUP',\r\n admin_map_layers: 'LAYERS',\r\n admin_groups_with_supergroup: 'Groups with super group',\r\n admin_modify_group_name: 'Change name',\r\n admin_groups_without_supergroup: 'Groups without super group',\r\n admin_cant_download_schema_toaster_msg: 'Can not download schema: ',\r\n admin_schema_deleted_toaster_msg: 'Schema is deleted. Id: ',\r\n admin_url_valid_toaster_msg: 'Url is valid',\r\n admin_layer_upload_toaster_msg: 'Layer upload',\r\n admin_select_layer: 'Select layer',\r\n admin_service_activate_advanced_filter: 'Activate advanced filter: ',\r\n admin_service_show_neighbor_list: 'Show neighbor list: ',\r\n admin_service_get_feature_info: 'Get feature info: ',\r\n admin_service_transparent: 'Transparent: ',\r\n admin_service_use_single_tile: 'Use \"single tile\": ',\r\n admin_service_use_time_slider: 'Use \"time slider\": ',\r\n admin_service_use_gatekeeper: 'Use gatekeeper: ',\r\n admin_service_get_without_proxy: 'Get without proxy: ',\r\n admin_service_select_dimension: 'Select dimension',\r\n admin_service_dimension: 'Dimension 2D/3D: ',\r\n admin_service_select_layer_type: 'Select layer type',\r\n admin_service_select_codelist: 'Select codelist',\r\n admin_service_layer_type: 'Type layer: ',\r\n admin_service_format: 'Format',\r\n admin_service_advanced: 'Advanced',\r\n admin_service_select_style_file: 'Select style file',\r\n admin_service_cartogeraphy: 'CARTOGRAPHY',\r\n admin_service_opens_as: 'Opens as:',\r\n admin_service_send_isytoken: 'Include isytoken',\r\n admin_service_restricted: 'Need resource',\r\n admin_service_title: 'Service title',\r\n admin_service_address: 'Service address',\r\n admin_service_integeration: 'INTEGRATION',\r\n admin_service_schema_with_no_data: 'Schema contains no data: ',\r\n admin_service_schema_uploaded: 'Schema is uploaded: ',\r\n admin_service_delete_from_list: 'Remove service from list',\r\n admin_service_copy_selected_layer: 'Copy selected layer',\r\n admin_service_file_error_toaster_title: 'File is not valid',\r\n admin_service_file_success_toaster_title: 'File is uploaded',\r\n admin_service_filename_special_characters:\r\n 'Spacing and special characters in the filename was replaced with underscore',\r\n admin_delete_project: 'Delete project',\r\n admin_delete_permission: 'Are you sure you want to delete?',\r\n admin_select_file_json_sld_for_upload:\r\n 'Select file (.json, .sld) for upload or \"drag and drop\"',\r\n admin_select_file_png_jpg_for_upload:\r\n 'Select file (.png, .jpg) for upload or \"drag and drop\"',\r\n admin_url_exist:\r\n 'Url already exist in the data source list, if you will continue existing data source will be rewrite.',\r\n admin_service_removed_toaster_msg: 'Service has been removed',\r\n admin_service_remove_fail_toaster_msg:\r\n 'Service did not exist or could not be removed from server',\r\n admin_group_txt: 'Group',\r\n admin_super_group_txt: 'Super group',\r\n admin_move_to_super_group: 'Move to supergroup',\r\n admin_remove_from_super_group: 'Remove from super group',\r\n admin_move_to_group: 'Move to group',\r\n admin_custom_tool_scale_zoom_level: 'Zoom level',\r\n admin_custom_tool_scale_height: 'Height above the ground',\r\n admin_custom_tool_scale: 'Scale',\r\n admin_custom_tool_scale_select_type: 'Select scale type',\r\n admin_custom_tool_coordinate_sytem_default: 'Default - project coord sys',\r\n admin_custom_tool_coordinate_sytem_geographical: 'Geographical',\r\n admin_custom_tool_coordinate_sytem_select_type: 'Select coordinate sytem',\r\n // Jobtech\r\n jobtech_bbox_description:\r\n 'Select a map area to get detailed object info from JobTech',\r\n jobtech_edit_geometry_description:\r\n 'Select geometry to edit or select + / - for add or remove geometry, select delete to start drawing a new geometry',\r\n jobtech_remove_restart: 'Delete geometry and restart',\r\n jobtech_update_geometry: 'Save to JobTech',\r\n jobtech_add_geometry: 'Add geometry',\r\n jobtech_remove_geometry: 'Remove geometry',\r\n jobtech_get_geometry_toaster: 'Fetching geometry from JobTech',\r\n jobtech_geometry_update_toaster: 'Geometry updated',\r\n jobtech_geometry_update_failure_toaster: 'Geometry update failure',\r\n jobtech_connecting_toaster: 'Connecting to JobTech',\r\n jobtech_object_without_geometry_toaster_title: 'Object has not geometry',\r\n jobtech_objectId_miss_geometry_toaster_title:\r\n 'Object Id missing geometry type',\r\n // Owners\r\n owner_list_generates: 'Generating report of owners',\r\n owner_list_failed: 'Failed to generate report of owners',\r\n // Neigbor\r\n neighbor_list_generates: 'Generating list of neighbors',\r\n neighbor_list_addremove: 'Click properties to add/remove',\r\n // Road profile and Road cross section\r\n road_profile_header: 'Road profile',\r\n road_cross_section_header: 'Road cross section',\r\n emptyContentText: 'Nothing to see here',\r\n errorLoadRoadProfileText: 'Error load road profile',\r\n road_profile_show_all_layers: 'Show all layers',\r\n errorLoadCrossSectionProfileText: 'Error load cross section profile',\r\n refresh_title: 'Refresh',\r\n show_road_profile_title: 'Show road profile',\r\n show_road_cross_section_title: 'Show road cross section',\r\n show_previous_profile_title: 'Show previous road profile',\r\n show_next_profile_title: 'Show previous road profile',\r\n mirrow_view_title: 'Mirror view',\r\n show_road_cross_section_layers: 'Show layers',\r\n // login\r\n login_error: 'Wrong user name or password!',\r\n login_success: 'Login successful!',\r\n fail_fetch_isytoken: 'Failed to fetch token, logging out of Azure..',\r\n load_fetch_isytoken: 'This is taking longer than expected',\r\n backend_return_code: 'Backend returned code:',\r\n logout_succes_toaster_msg: 'Successfully signed out',\r\n continueWithIDPort: 'Login for residents',\r\n continueWithMicrosoft: 'Login for employees',\r\n continueAsDifferentUser: 'Different user',\r\n continueWithKeycloak: 'Continue with Keycloak',\r\n idPortenDescription:\r\n 'Log in with IDporten for access to extended content info on property you have the legal rights to',\r\n microsoftDescription:\r\n 'Log in with AzureAD for access to extended content. Be advised! Only applicable if your organization is registered',\r\n differentUserDescription:\r\n 'Login with another registered user for access to extended content and functionality.',\r\n keycloakDescription:\r\n 'Log in with Keycloak for access to extended content. Be advised! Only applicable if your organization is registered',\r\n // gi-vis\r\n vis_plan_activated_toaster_title: 'GI show Plan activated',\r\n vis_property_activated_toaster_title: 'GI show Eiendom activated',\r\n vis_address_activated_toaster_title: 'GI show Adresse activated',\r\n vis_building_activated_toaster_title: 'GI show Bygning activated',\r\n no_result_toaster_msg: 'No result found',\r\n map_layer_not_found_toaster_mag: 'Arealplan map layer not found',\r\n // Geolocation\r\n get_location_title: 'Get location',\r\n get_location_is_activated_title: 'Get location is activated',\r\n geolocation_is_active_map_will_be_updated_msg: 'Map will be updated',\r\n position_is_updated_title: 'Position is updated',\r\n get_location_is_deactivate_title: 'Get location is deactivated',\r\n // Project list\r\n project_loaded:\r\n ' has been loaded - go to layer menu to change the map content',\r\n project_does_not_exist: ' does not exist!',\r\n // Project not found\r\n goToDeafultProject_txt: 'Go to default project',\r\n // Layers\r\n temporaryLayer: 'Temporary map layer that disappears when refreshing the website',\r\n uploadTemporaryLayerHelp: 'Click for tips on uploading your own map layer',\r\n temporaryLayerFormat: 'Select file format',\r\n // Export of data\r\n exportCoordinateTab: 'Coordinates',\r\n exportPolygonTab: 'Drawn area',\r\n};\r\n","export const LANG_NO_NAME = 'no';\r\n\r\nexport const LANG_NO_TRANS = {\r\n // Public\r\n yes: 'Ja',\r\n no: 'Nei',\r\n search: 'Søk',\r\n searchMapLayer: 'Søk kartlag',\r\n back: 'Tilbake',\r\n close: 'Lukk',\r\n cancel: 'Avbryt',\r\n error: 'Feil',\r\n success: 'Vellykket',\r\n add: 'Legg til',\r\n save: 'Lagre',\r\n please_wait: 'Vent litt...',\r\n delete: 'Slett',\r\n delete_all: 'Slette alle',\r\n select_file_for_upload: 'Velg fil for opplastning eller \"dra og slipp\"',\r\n project_name_not_found: 'Prosjektet ble ikke funnet!',\r\n move_up: 'Flytte opp',\r\n move_down: 'Flytte ned',\r\n download: 'Last ned',\r\n Polygon: 'Flate',\r\n Point: 'Punkt',\r\n Line: 'Linje',\r\n Square: 'Punkt',\r\n Triangle: 'Punkt',\r\n Cross: 'Punkt',\r\n Star: 'Punkt',\r\n update: 'Oppdater',\r\n zoom_in: 'Zoome inn',\r\n zoom_out: 'Zoome ut',\r\n other_layers: 'Andre lag',\r\n error_bbox_legendgraphic: 'Kunne ikke hente filtrert tegnforklaring',\r\n no_bbox_legendgraphic: 'Filtrert tegnforklaring støttes ikke av denne WMSen',\r\n address: 'Adresse',\r\n elevation: 'Høyde',\r\n plan: 'Plan',\r\n service: 'Tjeneste',\r\n // Main menu footer\r\n about: 'Om',\r\n help: 'Hjelp',\r\n feedback: 'Tilbakemelding',\r\n // Main menu login\r\n userName: 'Brukernavn',\r\n password: 'Passord',\r\n signIn: 'Logg inn',\r\n signOut: 'Logg ut',\r\n // Dynamic nav loader\r\n layers: 'Kartlag',\r\n tools: 'Verktøy',\r\n log_in: 'Logg inn',\r\n projects: 'Prosjekter',\r\n project: 'Prosjektet',\r\n legend: 'Tegnforklaring',\r\n active_legends: 'Tegnforklaring',\r\n // Tools\r\n drawMenuTxt: 'Tegne og målemeny',\r\n printProtocolTxt: 'Utskriftsrapport',\r\n elevationProfileTxt: 'Terrengprofil',\r\n exportDataTxt: 'Eksport av data',\r\n threeDViewTxt: '3D visning',\r\n obliqueViewTxt: 'Skråfoto',\r\n advancedSearchTxt: 'Avansert søk',\r\n propertyReportTxt: 'Eierrapport',\r\n feedbackTxt: 'Gi innspill',\r\n analysesAndReportsTxt: 'Analyser og rapporter',\r\n printMapTxt: 'Utskrift kart',\r\n roadAnalysisTxt: 'Veianalyse',\r\n WebinnsynTxt: 'Gå til ISY Map Server',\r\n mapLookUpTxt: 'Geografisk oppslag',\r\n pointInformationTxt: 'Punktinformasjon',\r\n // Tools / Export\r\n export_select_all_datasets: 'Velg alle',\r\n export_select_data: 'Velg data:',\r\n uploadOwnLayer: 'Last opp kartlag',\r\n // Tools/Draw\r\n pointTab: 'Punkt',\r\n lineTab: 'Linje',\r\n polygonTab: 'Flate',\r\n textTab: 'Tekst',\r\n pointType_txt: 'Punkttype:',\r\n size_txt: 'Størrelse:',\r\n admin_style_toggle_hover: 'Expand style on hover',\r\n pointTypeEditor_txt: 'Type punkt:',\r\n sizeEditor_txt: 'Størrelse punkt:',\r\n textSize_txt: 'Størrelse tekst:',\r\n color_txt: 'Farge:',\r\n stroke_color_txt: 'Farge:',\r\n line_stroke_type_txt: 'Type linje:',\r\n line_stroke_width_txt: 'Tykkelse linje:',\r\n fill_color_txt: 'Fyllfarge:',\r\n fill_color_editor_txt: 'Farge fyll:',\r\n admin_fill_type_txt: 'Type fyll:',\r\n admin_pattern_type_txt: 'Type skravur:',\r\n admin_pattern_color_txt: 'Farge skravur:',\r\n admin_color_combination_txt: 'Fargekombinasjon:',\r\n admin_vertical_title: 'Vertikal skravur',\r\n admin_horizontal_title: 'Horisontal skravur',\r\n admin_grid_title: 'Rutenett-skravur',\r\n admin_downright_title: 'Diagonal skravur',\r\n admin_upright_title: 'Omvendt diagonal skravur',\r\n admin_cross_title: 'Kryss-skravur',\r\n admin_add_color_txt: 'Legg til farge',\r\n admin_remove_color_txt: 'Fjern farge',\r\n admin_pattern_line_distance_txt: 'Linjeavstand:',\r\n admin_pattern_line_width_txt: 'Linjetykkelse:',\r\n active_txt: 'Aktiv:',\r\n normal_txt: 'Normal:',\r\n hover_txt: 'Hover:',\r\n showMeasurements_txt: 'Vis mål på kartet',\r\n snapGuides_txt: 'Snapp og hjelpelinjer',\r\n toggleSnapping: 'Snap til aktive kartlag',\r\n lineType_txt: 'Linjetype:',\r\n lineTypeEditor_txt: 'Type omriss:',\r\n outlineTypeDashed_txt: 'Stiplet',\r\n outlineTypeSolid_txt: 'Heltrukken',\r\n lineTypeLine_txt: 'Linje',\r\n line_stroke_linecap_txt: 'Linjeslutt',\r\n linecap_round_title: 'Rund',\r\n linecap_square_title: 'Kvadrat',\r\n linecap_butt_title: 'Flat',\r\n lineTypeSpacing_txt: 'Mellomrom',\r\n lineWidth_txt: 'Tykkelse:',\r\n lineWidthEditor_txt: 'Tykkelse omriss:',\r\n pointRotation_txt: 'Rotasjon (grader):',\r\n text_stroke_width_txt: 'Tykkelse omriss',\r\n transparency_txt: 'Synlighet (fyll):',\r\n text: 'Tekst',\r\n number: 'Tall',\r\n decimal: 'Desimal',\r\n textarea: 'Tekstområde',\r\n boolean: 'Ja/Nei',\r\n draw_enter_text: 'Tekst',\r\n circle_title: 'Sirkel',\r\n triangle_title: 'Triangel',\r\n square_title: 'Kvadrat',\r\n star_title: 'Stjerne',\r\n cross_title: 'Kors',\r\n icon_title: 'Ikon',\r\n line_title: 'Linje',\r\n dash_title: 'Dash linje',\r\n dot_title: 'Dot linje',\r\n download_title: 'Last ned',\r\n download_description: 'Last ned GeoJSON',\r\n upload_title: 'Last opp',\r\n edit_title: 'Rediger',\r\n stop_edit_title: 'Avslutt rediger',\r\n remove: 'Tøm',\r\n drawAddSuccess_toaster_msg: 'Tegning ble lastet opp',\r\n layerAddSuccess_toaster_msg: 'Kartlag ble lagt til',\r\n drawNoDrawing_toaster_msg: 'Ingen tegning å laste ned',\r\n drawErrorConverting_toaster_msg: 'Feil under konvertering',\r\n error_toaster_title: 'Feil',\r\n drawDownloadSuccess_toaster_msg: 'Tegningen ble lastet ned',\r\n drawDeleteSuccess_toaster_msg: 'Tegningen ble slettet',\r\n drawAddFileToLarge_toaster_msg: 'Opplastet fil kan ikke overstige 20 MB',\r\n collapse_draw: 'Maksimer',\r\n uncollapse_draw: 'Minimer',\r\n uploadingInProgress_toaster_msg: 'Opplasting pågår...',\r\n // Style / Filter Editor\r\n saveStyle_txt: 'Last opp stil',\r\n pointStyle_txt: 'Punktstil',\r\n lineStyle_txt: 'Linjestil',\r\n polygonStyle_txt: 'Polygonstil',\r\n admin_offset_x_txt: 'Forskyvning X',\r\n admin_offset_y_txt: 'Forskyvning Y',\r\n admin_placement_point: 'I tyngdepunkt',\r\n admin_placement_line: 'På linje',\r\n admin_placement_txt: 'Tekstplassering',\r\n admin_download_json_sld: 'Last ned stilfil',\r\n admin_delete_json_sld: 'Slett stilfil',\r\n admin_delete_layer: 'Slett kartlag',\r\n admin_delete_source: 'Slett datakilde',\r\n admin_simple_fill_txt: 'Ensfarget',\r\n admin_thin_pattern_fill_txt: 'Enkel skravur',\r\n admin_thick_pattern_fill_txt: 'Heldekkende skravur',\r\n styleIconUpload_txt: 'Bruk ikon',\r\n enter_filename: 'Filnavn',\r\n filename_empty_error: '- Vennligst skriv inn et stilnavn.',\r\n filtervalue_empty_error:\r\n '- Et av filtreringsmulighetene er tomme. Vennligst fyll inn før du fortsetter.',\r\n show_filter_button: 'Vis Filtereditor',\r\n show_style_button: 'Vis Stileditor',\r\n admin_service_filter_attribute: 'Velg egenskap',\r\n admin_service_select_operator_type: 'Velg operator',\r\n admin_service_filter_value: 'Verdi (fritekst)',\r\n admin_service_add_filter_editor: '+ Legg til filter editor',\r\n admin_service_add_filter: '+ Legg til filter',\r\n admin_service_filter_matching: 'Matche filtere med',\r\n admin_service_filtering_header: 'Filtrering',\r\n admin_service_change_filter_name: 'Endre Filternavn',\r\n admin_service_change_style_name: 'Endre Stilnavn',\r\n admin_style_editor_point_label: 'Punkt',\r\n admin_style_editor_line_label: 'Linje',\r\n admin_style_editor_polygon_label: 'Polygon',\r\n admin_number_of_zoom_levels: 'Antall zoom nivå',\r\n admin_matrixset: 'Matrixset',\r\n and_filter_operator: 'Og',\r\n or_filter_operator: 'Eller',\r\n equalTo_filter_operator: 'Lik',\r\n notEqualTo_filter_operator: 'Ulik',\r\n greaterThan_filter_operator: 'Større enn',\r\n lessThan_filter_operator: 'Mindre enn',\r\n contains_filter_operator: 'Inneholder',\r\n notContains_filter_operator: 'Inneholder ikke',\r\n inArray_filter_operator: 'Inkludert i',\r\n notInArray_filter_operator: 'Ikke inkludert i',\r\n delete_style_file_success: 'Stilfilen ble slettet',\r\n delete_style_file_error: 'Feil: Kunne ikke slette stilfilen',\r\n // Tools/Advanced search\r\n advancedSearch_mainTxt: 'Avansert søk',\r\n advancedSearch_innerTxt: 'Søk på objekttype eller felles egenskaper',\r\n objectTypeSearch_mainTxt: 'Søk på objekttype',\r\n objectTypeSearch_innerTxt: 'Kartobjekt',\r\n commonPropertySearch_mainTxt: 'Søk på felles egenskaper',\r\n commonPropertySearch_innerTxt: 'Felles egenskaper',\r\n selectObjectType: 'Velg objekttype',\r\n advancedSearchEmptyContentText: 'Ingen ting å vise',\r\n advancedSearchEmptyContentInnerText:\r\n 'Det er ingen poster å vise. Resultatsettet er tomt eller du har ikke valgt kartlag.',\r\n loadDataInMap: 'Last inn data i kartet',\r\n advancedSearchObjectTypeTxt: 'Avansert søk - Objekttype',\r\n advancedSearchCommonTypeTxt: 'Avansert søk - Felles egenskaper',\r\n // Tools/property report\r\n propertyReportDialog_txt: 'Velg område du ønsker å hente informasjon fra',\r\n propertyReport_header: 'Eierrapport',\r\n selectedNeighbors: 'Valgte eiendommer',\r\n ownerNotAvailable: 'Eiere er ikke tilgjengelig',\r\n showReport_title: 'Se, lagre og skriv ut rapport',\r\n downloadReport_title: 'Last ned data som CSV',\r\n printReport_title: 'Utskrift av rapport',\r\n layerWithoutNeighborList_toaster_msg:\r\n 'Ingen lag med \"Vis naboliste\" er slått på i prosjektet. ',\r\n layerWithoutNeighborList_toaster_title: 'Ingen ting å vise',\r\n catchError_toaster_title: 'En feil har oppstått',\r\n select_polygon: 'VELG POLYGON',\r\n // Tools/Feedback\r\n feedbackDialog_txt: 'Sett et punkt',\r\n feedback_header: 'Gi ditt innspill',\r\n youSelectedPoint: 'Du har valgt et punkt i',\r\n nameInput: 'Navn',\r\n emailInput: 'Epost',\r\n teleInput: 'Telefon',\r\n feedbackInput: 'Tilbakemelding',\r\n attachmentsInput: 'Vedlegg',\r\n emailNotValidInput: 'Epost er ikke gyldig',\r\n personalInfoTxt:\r\n 'Din personinfo lagres når du sender inn innspillet. Se mer om vår behandling av personvern',\r\n linkTxt: 'her.',\r\n saveTxt: 'Lagre',\r\n removeAttachment_title: 'Fjern vedlegg',\r\n feedbackCanceled_toaster_msg: 'Innspill avbrutt',\r\n feedbackRegistered_toaster_msg: 'Innspill registrert',\r\n uploadFailed_toaster_msg: 'Opplastning feilet',\r\n // Tools/Analyses and reports\r\n analysesReportsDialog_txt: 'Definer område for rapport',\r\n selectReportType: 'Velg rapporttype',\r\n showReport: 'Vis',\r\n fileDownloadSuccess_toaster_msg: 'Filen ble lastet ned!',\r\n fileDownloadError_toaster_msg: 'Filnedlastning feilet!',\r\n noReportType_toaster_msg:\r\n 'Valgt rapport er ikke tilgjengelig, sjekk om du har tilstrekkelige rettigheter. Rapporttype: ',\r\n noReportType_toaster_title: 'Ingen ting å vise',\r\n reports_selected: 'rapporter valgt',\r\n pointWithBuffer_txt: 'Punkt med buffer',\r\n lineWithBuffer_txt: 'Linje med buffer',\r\n bufferDistance_txt: 'Bufferavstand i meter',\r\n chooseFeature_txt: 'Velg kartobjekt',\r\n selectAnalysisArea_txt: 'Velg analyseområde',\r\n drawAreOnMap_txt: 'Tegn området i kartet',\r\n selectFeature_txt: 'Trykk på valgt areal',\r\n bufferMinValue_txt: 'Min bufferverdi er 1 meter',\r\n bufferMinValue_zero_txt: 'Min bufferverdi er 0 meter',\r\n // Tools/Print map\r\n printMap_txt: 'UTSKRIFT KART',\r\n title_lbl: 'Tittel',\r\n text_lbl: 'Kommentarfelt',\r\n iconText_lbl: 'Ikon-tekst',\r\n legend_lbl: 'Tegnforklaring',\r\n icon_lbl: 'Ikon/logo/kommunevåpen',\r\n northArrow_lbl: 'Nordpil',\r\n scale_lbl: 'Målestokk',\r\n custom_scale_lbl: 'Egendefinert målestokk',\r\n graticule_lbl: 'Rutenett',\r\n graticule_debug: 'Rutenett-test',\r\n landscape_lbl: 'Liggende',\r\n portrait_lbl: 'Stående',\r\n sheetSize_lbl: 'Arkstørrelse',\r\n saveMap: 'Last ned kart',\r\n printMap: 'Skriv ut kart',\r\n print_select_all_legends: 'Velg alle',\r\n printMapDisabled:\r\n 'Kan ikke skrive ut kart med valgt kombinasjon av målestokk og kvalitet',\r\n printMapDisabledSheetSizeDpi: 'Kan ikke skrive ut kart med valgt kombinasjon av arkstørrelse og kvalitet',\r\n choose_legend_lbl: 'Velg tegnforklaring',\r\n legends_new_page_lbl: 'Tegnforklaringer på nytt ark',\r\n no_info_lbl: 'Skjul info/signaturfelt',\r\n // Tools/Elevation profile\r\n scaleLength_lbl: 'Målestokk lengde',\r\n scaleHeight_lbl: 'Målestokk høyde',\r\n format_lbl: 'Format',\r\n dpi_lbl: 'Kvalitet',\r\n grid_lbl: 'Rutenett',\r\n inscription_of_heights_lbl: 'Påskrift av høyder på punkt',\r\n background_colors_lbl: 'Bakgrunnsfarger',\r\n draw_walls_lbl: 'Tegn vegger og tak',\r\n include_measures_lbl: 'Inkluder tiltak i beregningen',\r\n incline_percentage_lbl: 'Stigningsprosent',\r\n equal_scale_length_txt: 'Lik målestokk lengde',\r\n a4_landscape_txt: 'A4 liggende',\r\n a3_landscape_txt: 'A3 liggende',\r\n clarify_btn_txt: 'Klargjør',\r\n invalid_length_msg: 'Ugyldig lengde',\r\n max_length_is_msg: 'Maks lengde er 5000',\r\n // Tools/Road Analysis\r\n prepTime: 'Forspenningstid:',\r\n totalTime: 'Utrykningstid:',\r\n driveTime: 'Kjøretid:',\r\n addInterestPoint: 'Legg til interessepunkt',\r\n downloadInput: 'Last ned punkter',\r\n uploadInput: 'Last opp punkter',\r\n runRoadAnalysis: 'Kjør veianalyse',\r\n isochronCostWarning:\r\n 'Advarsel: Kjøretid over 45min kan i enkelte sentrale områder føre til store datamengder, og at programmet henger.',\r\n colorSteps: 'Steg',\r\n singleColor: 'Ensfarget',\r\n gradientColor: 'Gradient',\r\n downloadRoute: 'Last ned vegdata',\r\n // edit wfst\r\n objectSaved_toaster_msg: 'Objektet er lagret.',\r\n objectUpdated_toaster_msg: 'Objektet er oppdatert.',\r\n objectDeleted_toaster_msg: 'Objektet er slettet.',\r\n objectNotUpdated_toaster_msg: 'Objektet er ikke oppdatert.',\r\n objectNotSaved_toaster_msg: 'Objektet er ikke lagret.',\r\n wfst_createNew: 'Opprett ny',\r\n wfst_update: 'Oppdater',\r\n wfst_attachments: 'Vedlegg',\r\n wfst_cancel: 'Avbryt',\r\n wfst_save: 'Lagre',\r\n wfst_editGeometri: 'Rediger geometri',\r\n wfst_removeAttachment_title: 'Fjern vedlegg',\r\n wfst_add_feature: 'Legg til geometri',\r\n wfst_dropdown_select: 'Velg en verdi',\r\n // Info panel\r\n noResults: 'Søket ditt ga ingen treff.',\r\n searchHelp: 'Du kan søke på:',\r\n admin_search_example: 'Eksempel',\r\n searchExample_ssr: 'Galdhøpiggen',\r\n searchExample_matr: '5001-13/13',\r\n searchExample_gi: '202201',\r\n searchExample_giname: 'Midtbyplanen',\r\n searchExample_gidnois: '5001-13/13',\r\n searchExample_address: 'Slottsplassen 1',\r\n searchExample_owners: 'Ola Nordmann',\r\n searchExample_buildingnumber: '123456',\r\n searchExample_plannois: 'Kommuneplanens arealdel 2012-2024',\r\n coordinate: 'Koordinat (nord, øst)',\r\n searchExample_coordinate: '6643445, 596587',\r\n searchExample_custom: ' ',\r\n searchResults: 'Søkeresultater',\r\n pointInformation: 'Punktinformasjon',\r\n noPosition: ' (Ikke kartfestet)',\r\n // Position info\r\n property: 'Eiendom',\r\n building: 'Bygning',\r\n area_plan: 'Arealplan',\r\n // Feature info\r\n showInfo_txt: 'Vis info',\r\n showInfo_tooltip: 'Matrikkelrapport',\r\n show_road_profile: 'Vis lengdeprofil',\r\n show_road_cross_section: 'Vis tverrprofil',\r\n neighbor_name: 'Navn:',\r\n neighbor_address: 'Adresse:',\r\n neighbor_description: 'Beskrivelse:',\r\n neighbor_orgnumber: 'Org. nummer',\r\n neighbor_number: 'Personnummer',\r\n neighbor_ownership: 'Eiendom:',\r\n getReports: 'Hent rapporter for eiendom',\r\n makeNeighborList: 'Lag naboliste',\r\n showProceedings: 'Vis saksgang',\r\n showProceedings_sendFeedback: 'Gi uttalelse',\r\n editTextAndGeometri: 'Rediger tekst og geometri',\r\n getCasesFromSystem_toaster_msg: 'Henter saksfaser fra sakssystem...',\r\n getCasesFromSystem_toaster_title: 'Henter saksfaser',\r\n planDocuments_txt: 'Plandokumenter:',\r\n noConnecteionToSakssystem_toaster_msg: 'Kobling til sakssystem mangler',\r\n // Blade\r\n compress_blade_title: 'Komprimere',\r\n expand_blade_title: 'Utvide',\r\n // Administrator\r\n admin_title: 'ISY Map Administrator',\r\n admin_subtitle: 'Velg fremgangsmåte',\r\n admin_createNew: 'Opprett nytt prosjekt',\r\n admin_emptyFromTemplate: 'Tomt prosjekt',\r\n admin_copyProject: 'Kopier prosjekt',\r\n admin_editProject: 'Rediger gjeldende prosjekt',\r\n admin_base_description:\r\n 'Velg bakgrunnslag fra listen med forhådsdefinerte, eller legg til ditt eget lag. Trykk på forhåndsvisning for å se hvordan det vil bli seende ut.',\r\n admin_base_select_info: 'Styr hvilke bakgrunnslag som er valgt.',\r\n admin_base_mark_main_info:\r\n 'Velg laget som skal vises når applikasjonen startes.',\r\n admin_base_edit_info: 'Rediger lagets tittel, bildeformat osv.',\r\n admin_base_add_custom_info: 'Legg til et egendefinert bakgrunnslag via url.',\r\n admin_base_delete_info: 'Slett bakgrunnslag fra prosjekt og bibliotek.',\r\n admin_base_details: 'Detaljer',\r\n admin_base_predefined: 'Bakgrunnslag',\r\n admin_base_custom: 'Egendefinerte bakgrunnslag',\r\n admin_base_custom_add: 'Legg til egendefinert bakgrunnslag',\r\n admin_base_add: 'Legg til bakgrunnslag',\r\n admin_base_name: 'Navn',\r\n admin_base_edit: 'Rediger bakgrunnslag',\r\n admin_base_no_preview:\r\n 'Forhåndsvisning er ikke tilgjengelig. Velg bakgrunnslag på detaljfanen for å aktivere forhåndsvisning.',\r\n admin_choose_icon: 'Velg ikon',\r\n admin_custom_tool_title: 'Tittel',\r\n admin_custom_tool_icon: 'Ikon',\r\n admin_custom_tool_new_window: 'Nytt vindu',\r\n admin_details_title: 'Detaljer',\r\n admin_preview_title: 'Forhåndsvisning',\r\n admin_order_map_layers: 'Kartlagsrekkefølge',\r\n admin_data_source_title: 'Datakilde',\r\n admin_services_title: 'Tjenester',\r\n admin_catalog_service_custom_add: 'Legg til WMS/WFS-tjeneste',\r\n admin_catalog_service_custom_add_success:\r\n 'Lagring av ny WMS/WFS-tjeneste vellykket',\r\n admin_catalog_service_custom_add_error:\r\n 'Lagring av ny WMS/WFS-tjeneste feilet',\r\n admin_catalog_service_custom_upload: 'Last opp lokale data (SOSI/Shape)',\r\n admin_catalog_service_local_layer_warning:\r\n 'Kilden ligger ikke i delt datakildeliste',\r\n admin_layers_description:\r\n 'Definer lag og grupper. Trykk på forhåndsvisning for å se hvordan det vil bli seende ut.',\r\n admin_layers_no_preview:\r\n 'Forhåndsvisning er ikke tilgjengelig. Velg lag på detaljfanen for å aktivere forhåndsvisning.',\r\n admin_layers_alias: 'Alias',\r\n admin_layers_value: 'Verdi',\r\n admin_layers_select: 'Velg',\r\n admin_layers_select_all: 'Velg alle',\r\n admin_select: 'Velg',\r\n admin_tools: 'Verktøy',\r\n admin_layers_value_name: 'Navn på verdi',\r\n admin_layers_alias_name: 'Alias',\r\n admin_layers_select_group: 'Velg gruppelag',\r\n admin_layers_select_datatype: 'Velg datatype',\r\n admin_layers_no_group:\r\n 'Ingen grupper er definert. Definer grupper på fanen Gruppelag.',\r\n admin_layers_selected_group_title: 'Valgt gruppe:',\r\n admin_layers_custom_url_parameters: 'Egne parameter til URL',\r\n admin_layers_selected_style_title: 'Valgt kartografi:',\r\n admin_layers_min_scale_title: 'Minste målestokk for visning',\r\n admin_layers_max_scale_title: 'Største målestokk for visning',\r\n admin_layers_legend_url_title: 'Tegnforklaringsgrafikk',\r\n admin_layers_edit_node: 'Rediger lag',\r\n admin_layers_expand_tree_info:\r\n 'Utvid tjenestenoden for å se en liste over tilgjengelige lag.',\r\n admin_layers_count_info: 'Viser antall lag i valgte tjeneste.',\r\n admin_layers_edit_service_info: 'Vis/rediger innstillinger for tjenesten.',\r\n admin_layers_select_info: 'Velg lag fra listen.',\r\n admin_layers_no_feature_warning_info:\r\n 'Advarsel om at du har valgt et lag, men ingen av feltene i laget.',\r\n admin_layers_edit_features_info: 'Velg gruppelag og felter for et lag.',\r\n admin_predefined_tools_list: 'Forhåndsdefinert verktøyliste',\r\n admin_predefined_integrations_list: 'Forhåndsdefinerte integrasjoner',\r\n admin_custom_tools_list: 'Egendefinerte verktøyliste',\r\n admin_custom_integrations_list: 'Egendefinerte integrasjoner',\r\n admin_custom_tools_list_is_empty: 'Listen med egendefinerte verktøy er tom',\r\n admin_add_new_custom_tool: 'Legg til egendefinerte verktøy',\r\n admin_add_new_custom_integration: 'Legg til egendefinert integrasjon',\r\n admin_service_list_no_service:\r\n 'Ingen tjenester er lagt til. Velg tjenester fra katalog-lista.',\r\n admin_service_list_no_service_match:\r\n 'Ingen tjenester ble funnet med valgte søk.',\r\n admin_service_wfs_layers: 'WFS-lag',\r\n admin_service_ogc_layers: 'OGC-lag',\r\n admin_service_wms_layers: 'WMS-lag',\r\n admin_modal_title: 'Administrator',\r\n admin_modal_cancel: 'Avbryt',\r\n admin_modal_save: 'Lagre',\r\n admin_modal_preview: 'Forhåndsvisning',\r\n admin_modal_admin_preview: 'Administrator-forhåndsvisning',\r\n admin_group_create: 'Opprett gruppe',\r\n admin_group_create_new: 'Opprett ny gruppe',\r\n admin_group_name: 'Gruppenavn ',\r\n admin_group_exist: ' finnes allerede',\r\n admin_group_list: 'Gruppeliste',\r\n admin_group_layers_inside: 'lag i gruppa',\r\n admin_group_unread_msg: 'uleste meldinger',\r\n admin_layers_define_subtitle: 'Velg fil for opplastning eller \"dra og slipp\"',\r\n admin_layers_add_service: 'Last inn data',\r\n admin_layers_replace_service: 'Slett eksisterende og last inn nye data',\r\n admin_layers_provider: 'Leverandør',\r\n admin_layers_category: 'Kategori',\r\n admin_layers_title: 'Tittel',\r\n admin_layers_url: 'Url',\r\n admin_layers_order: 'Rekkefølge',\r\n admin_base_layer_credits_to: 'Krediterer til',\r\n admin_layers_version: 'Versjon',\r\n admin_layers_service_type: 'Tjenestetype',\r\n admin_layers_subname: 'Abstract/Beskrivelse',\r\n admin_layers_service_name: 'Tjenestenavn',\r\n admin_layers_select_version: 'Velg versjon',\r\n admin_layers_select_service_type: 'Velg tjenestetype',\r\n admin_layers_get_capabilities: 'Hent egenskaper',\r\n admin_layers_get_capabilities_starting: 'Henter egenskaper ',\r\n admin_layers_get_capabilities_error: 'Egenskaper ble ikke hentet: ',\r\n admin_layers_get_capabilities_ok: 'Egenskaper ble hentet',\r\n admin_unable_to_retrive_properties: 'Kan ikke hente egenskaper',\r\n admin_schema_title: 'Skjema',\r\n admin_schema_filename: 'Filnavn',\r\n admin_schema_description: 'Beskrivelse',\r\n admin_schema_time_created: 'Dato opprettet',\r\n admin_schema_tables: 'Tabeller',\r\n admin_layers_select_schema: 'Velg skjema dersom du vil overskrive',\r\n admin_layers_new_schema: 'Nytt skjema',\r\n admin_layers_delete_schema: 'Slett skjema',\r\n admin_service_select_props: 'Velg egenskaper',\r\n admin_service_define_styles: 'Kartografi',\r\n admin_settings_center: 'Senterkoordinat',\r\n admin_settings_coordinates: 'Koordinater fra kart',\r\n admin_settings_get_coordinates: 'Hent koordinater fra kart',\r\n admin_settings_restricted: 'Skjul i prosjektlisten',\r\n admin_settings_update_extent: 'Oppdater utsnitt når prosjekt velges',\r\n admin_settings_hover_info_first_layer: 'Hoverstyle kun for øverste kartlag',\r\n admin_settings_zoom: 'Zoom-nivå',\r\n admin_settings_num_zoom_levels: 'Antall zoom-nivåer',\r\n admin_settings_project_name: 'Prosjektnavn',\r\n admin_settings_project_headertitle: 'Tittel',\r\n admin_settings_project_headersubtitle: 'Undertittel',\r\n admin_settings_project_headericon: 'Ikon',\r\n admin_settings_project_municipality_nr: 'Kommunenr for søk',\r\n admin_settings_coordinate_system: 'Koordinatsystem',\r\n admin_settings_site_title: 'Nettstedtittel',\r\n admin_settings_epsg: 'EPSG',\r\n admin_settings_webinnsyn_url: 'Url til ISY Map Server ',\r\n admin_settings_single_gi_url: 'Samlet GI-PlanWebService?',\r\n admin_settings_gi_plan_url: 'Url til samlet webservice for plan',\r\n admin_settings_gi_plan_kart_url: 'Url til webservice for plan - Kart',\r\n admin_settings_gi_plan_basis_url: 'Url til webservice for plan - Basis',\r\n admin_settings_gi_plan_utvidet_url: 'Url til webservice for plan - Utvidet',\r\n admin_catalog_info:\r\n 'Katalog med tilgjengelige tjenester. Valgte tjenester vill bli lagt til i lista på tjenestefanen.',\r\n admin_catalog_add_info: 'Legg til tjeneste fra katalogen',\r\n admin_catalog_remove_info: 'Fjern valgt tjeneste',\r\n admin_catalog_service_added_info: 'Tjenesten er lagt til',\r\n admin_catalog_new_info: 'Legg til egendefinert tjeneste',\r\n admin_catalog_edit: 'Rediger datakilde',\r\n admin_remove_filter: 'Fjern filter',\r\n admin_remove_filter_warnings: 'Fjern filter advarsel',\r\n admin_set_filter: 'Vis bare valgte kartlag',\r\n admin_set_filter_warnings: 'Vis kartlag med advarsler',\r\n admin_set_filter_features: 'Vis valgte og endre rekkefølge',\r\n admin_edit_enabled: 'Skal kartlaget redigeres?',\r\n admin_send_username: 'Skal brukernavn sendes med?',\r\n admin_select_geometry_type: 'Geometritype',\r\n admin_has_code_list: 'Kodeliste',\r\n admin_codevalues: 'Kodeverdier',\r\n admin_editable: 'Redigerbar',\r\n admin_transactions: 'Laget støtter transaksjoner',\r\n admin_attachment: 'Vedlegg',\r\n admin_datatype: 'Datatype',\r\n admin_basic_title: 'Basis',\r\n admin_search_title: 'Søk',\r\n admin_integration_title: 'Integrasjon',\r\n admin_tool_title: 'Verktøy',\r\n admin_pointinfo_title: 'Punktinformasjon',\r\n admin_name_title: 'Navn',\r\n admin_hasurl_title: 'Har url',\r\n admin_remove_title: 'Slett',\r\n admin_feature_info_title: 'Egenskaper tittel',\r\n admin_subname_title: 'Tittel',\r\n admin_groups_title: 'Grupper',\r\n admin_project_name_exists_toaster_msg:\r\n 'Prosjektnavnet eksisterer allerede! Lagring avbrutt',\r\n admin_project_name_exists_toaster_title: 'Kunne ikke lagre!',\r\n admin_saving_failed_toaster_msg: 'Lagring feilet',\r\n admin_saving_failed_toaster_title: 'Kunne ikke lagre!',\r\n admin_validating_failed_toaster_title: 'Prosjektvalidering feilet!',\r\n admin_validating_project_name: 'Prosjektnavn mangler',\r\n admin_validating_project_epsg: 'Koordinatystem mangler',\r\n admin_validating_project_center: 'Senterkoordinat mangler',\r\n admin_validating_project_zoom: 'Zoomnivå mangler',\r\n admin_validating_project_base_layer: 'Bakgrunnslag mangler',\r\n admin_saving_success_toaster_msg: 'Prosjektet ble lagret',\r\n admin_saving_success_toaster_title: 'Lagring av prosjekt',\r\n admin_upload_failed_toaster_msg: 'Opplastning feilet: ',\r\n admin_remove_success_toaster_msg: 'Last på nytt til standardprosjekt',\r\n admin_remove_success_toaster_title: 'Prosjektet ble fjernet',\r\n admin_layer_copy_created_toaster_msg: 'Laget ble kopiert',\r\n admin_project_settings: 'Prosjektinnstillinger',\r\n admin_base_layers: 'Bakgrunnskart',\r\n admin_empty_layers_correct_service_q:\r\n 'Tjenesten har ingen lag. Feil tjenestetype?',\r\n admin_layers_crs_not_supported: 'Tjenesten støtter ikke prosjektets standard koordinatsystem',\r\n admin_imagetype: 'Bildeformat',\r\n admin_use_gatekeeper: 'Bruk gatekeeper',\r\n admin_opacity: 'Ugjennomsiktighet',\r\n admin_layers_group: 'GRUPPELAG',\r\n admin_map_layers: 'Kartlag',\r\n admin_groups_with_supergroup: 'Grupper med supergruppe',\r\n admin_modify_group_name: 'Endre navn',\r\n admin_groups_without_supergroup: 'Grupper uten supergruppe',\r\n admin_cant_download_schema_toaster_msg: 'Kunne ikke laste skjema: ',\r\n admin_schema_deleted_toaster_msg: 'Skjema ble slettet. Id: ',\r\n admin_url_valid_toaster_msg: 'Url er gyldig',\r\n admin_layer_upload_toaster_msg: 'Lagopplasting',\r\n admin_select_layer: 'Velg lag',\r\n admin_service_activate_advanced_filter: 'Aktiver avansert filter: ',\r\n admin_service_show_neighbor_list: 'Vis naboliste: ',\r\n admin_service_get_feature_info: 'Hent egenskaper: ',\r\n admin_service_transparent: 'Transparent: ',\r\n admin_service_use_single_tile: 'Bruk \"single tile\": ',\r\n admin_service_use_time_slider: 'Bruk \"time slider\": ',\r\n admin_service_use_gatekeeper: 'Bruk gatekeeper: ',\r\n admin_service_get_without_proxy: 'Hent uten proxy: ',\r\n admin_service_select_dimension: 'Velg dimensjon',\r\n admin_service_dimension: 'Dimensjon 2D/3D: ',\r\n admin_service_select_layer_type: 'Velg type kartlag',\r\n admin_service_select_codelist: 'Velg kodeliste',\r\n admin_service_layer_type: 'Type kartlag: ',\r\n admin_service_format: 'Format',\r\n admin_service_advanced: 'Avansert',\r\n admin_service_select_style_file: 'Velg stilfil',\r\n admin_service_cartogeraphy: 'Kartografi',\r\n admin_service_opens_as: 'Åpnes som:',\r\n admin_service_send_isytoken: 'Send med isytoken',\r\n admin_service_restricted: 'Bak autentisering',\r\n admin_service_title: 'Tittel på tjeneste',\r\n admin_service_address: 'Adresse til tjeneste',\r\n admin_service_integeration: 'Integrasjon',\r\n admin_service_schema_with_no_data: 'Skjema inneholdt ikke noe data: ',\r\n admin_service_schema_uploaded: 'Skjema ble lastet opp: ',\r\n admin_service_delete_from_list: 'Fjern tjenesten fra listen',\r\n admin_service_copy_selected_layer: 'Kopier valgt lag',\r\n admin_service_file_error_toaster_title: 'Filen er ikke gyldig!',\r\n admin_service_file_success_toaster_title: 'Filen ble lastet opp',\r\n admin_service_filename_special_characters:\r\n 'Mellomrom og spesialkarakterer i filnavnet ble erstattet med understrek',\r\n admin_delete_project: 'Slett prosjekt',\r\n admin_delete_permission: 'Er du sikker på at du vil slette?',\r\n admin_select_file_json_sld_for_upload:\r\n 'Velg fil (.json, .sld) for opplastning eller \"dra og slipp\"',\r\n admin_select_file_png_jpg_for_upload:\r\n 'Velg fil (.png, .jpg) for opplastning eller \"dra og slipp\". Anbefalt størrelse 224 x 280 pixel',\r\n admin_url_exist:\r\n 'URL finnes allerede i datakildelisten, hvis du fortsetter vil den eksisterende datakilden skrives over.',\r\n admin_service_removed_toaster_msg: 'Tjeneste ble slettet',\r\n admin_service_remove_fail_toaster_msg:\r\n 'Tjenesten fantes ikke eller kunne ikke fjernes fra server.',\r\n admin_group_txt: 'Gruppe',\r\n admin_super_group_txt: 'Supergruppe',\r\n admin_move_to_super_group: 'Flytte til supergruppe',\r\n admin_remove_from_super_group: 'Fjerne fra supergruppe',\r\n admin_move_to_group: 'Flytte til gruppe',\r\n admin_custom_tool_scale_zoom_level: 'Zoomnivå',\r\n admin_custom_tool_scale_height: 'Høyde over bakken',\r\n admin_custom_tool_scale: 'Målestokk',\r\n admin_custom_tool_scale_select_type: 'Velg målestokk type',\r\n admin_custom_tool_coordinate_sytem_default: 'Default - prosjektkoordsys',\r\n admin_custom_tool_coordinate_sytem_geographical: 'Geografiske',\r\n admin_custom_tool_coordinate_sytem_select_type: 'Velg koordinatsystemer',\r\n // Jobtech\r\n jobtech_bbox_description:\r\n 'Velg et område i kartet og hent utvidet informasjon om objekter fra JobTech',\r\n jobtech_edit_geometry_description:\r\n 'Velg geometri i kartet for å rediger, trykk på + / - for å legge til eller fjerne geometri, velg slett for å starte på nytt',\r\n jobtech_remove_restart: 'Slett geometri og start på nytt',\r\n jobtech_update_geometry: 'Lagre til JobTech',\r\n jobtech_add_geometry: 'Legg til geometri',\r\n jobtech_remove_geometry: 'Ta bort geometri',\r\n jobtech_get_geometry_toaster: 'Henter geometri fra JobTech',\r\n jobtech_geometry_update_toaster: 'Geometrien ble oppdatert',\r\n jobtech_geometry_update_failure_toaster: 'Geometrien ble ikke oppdatert',\r\n jobtech_connecting_toaster: 'Kobler til JobTech',\r\n jobtech_object_without_geometry_toaster_title: 'Objektet har ingen geometri',\r\n jobtech_objectId_miss_geometry_toaster_title: 'ObjektId mangler geometritype',\r\n // Owners\r\n owner_list_generates: 'Genererer eierrapport',\r\n owner_list_failed: 'Feil ved henting av eierinformasjon',\r\n // Neighbor\r\n neighbor_list_generates: 'Genererer naboliste',\r\n neighbor_list_addremove: 'Klikk på eiendommer for å legge til/fjerne',\r\n // Road profile and Road cross section\r\n road_profile_header: 'Lengdeprofil',\r\n road_cross_section_header: 'Tverrprofil',\r\n emptyContentText: 'Ingen ting å vise',\r\n errorLoadRoadProfileText: 'Feil ved innlasting av lengdeprofil',\r\n road_profile_show_all_layers: 'Vis alle lag',\r\n errorLoadCrossSectionProfileText: 'Feil ved innlasting av tverrprofil',\r\n refresh_title: 'Oppfrisk',\r\n show_road_profile_title: 'Vis lengdeprofil',\r\n show_road_cross_section_title: 'Vis tverrprofil',\r\n show_previous_profile_title: 'Vis forrige lengdeprofil',\r\n show_next_profile_title: 'Vis neste lengdeprofil',\r\n mirrow_view_title: 'Speilvisning',\r\n show_road_cross_section_layers: 'Vis lag',\r\n // login\r\n login_error: 'Feil brukernavn eller passord!',\r\n login_success: 'Du er nå innlogget!',\r\n fail_fetch_isytoken: 'Kunne ikke hente token, logger av Azure..',\r\n load_fetch_isytoken: 'Dette tar lenger tid enn forventet',\r\n backend_return_code: 'Server returnerte følgende feilkode: ',\r\n logout_succes_toaster_msg: 'Du er nå logget ut',\r\n continueWithIDPort: 'Pålogging for innbyggere',\r\n continueWithMicrosoft: 'Pålogging for ansatte',\r\n continueAsDifferentUser: 'Annen bruker',\r\n continueWithKeycloak: 'Fortsett med Keycloak',\r\n idPortenDescription:\r\n 'Innlogging med IDporten for å få informasjon om eiendommer du er hjemmelshaver for',\r\n microsoftDescription:\r\n 'Innlogging med Entra ID for å få utvidet informasjon. NB! Krever at din organisasjon er registrert',\r\n differentUserDescription:\r\n 'Innlogging med annen registrert bruker for tilgang til utvidet innhold og funksjonalitet.',\r\n keycloakDescription:\r\n 'Innlogging med Keycloak for å få utvidet informasjon. NB! Krever at din organisasjon er registrert',\r\n // gi-vis\r\n vis_plan_activated_toaster_title: 'GI Vis Plan aktivert',\r\n vis_property_activated_toaster_title: 'GI Vis Eiendom aktivert',\r\n vis_address_activated_toaster_title: 'GI Vis Adresse aktivert',\r\n vis_building_activated_toaster_title: 'GI Vis Bygning aktivert',\r\n no_result_toaster_msg: 'Fant ingen treff',\r\n map_layer_not_found_toaster_mag: 'Arealplankartlag ikke funnet',\r\n // Geolocation\r\n get_location_title: 'Hent posisjon',\r\n get_location_is_activated_title: 'Hent posisjon er aktivert',\r\n geolocation_is_active_map_will_be_updated_msg: 'Kartet vil bli oppdatert',\r\n position_is_updated_title: 'Posisjonen er oppdatert',\r\n get_location_is_deactivate_title: 'Hent posisjon er deaktivert',\r\n // Project list\r\n project_loaded: ' er lastet inn - gå til kartlagsmenyen for å endre innhold',\r\n project_does_not_exist: ' finnes ikke!',\r\n // Project not found\r\n goToDeafultProject_txt: 'Gå tilbake til standard prosjekt',\r\n // Layers\r\n temporaryLayer: 'Midlertidig kartlag som forsvinner ved oppfrisking av nettsiden',\r\n uploadTemporaryLayerHelp: 'Trykk for tips ang opplasting av eget kartlag',\r\n temporaryLayerFormat: 'Velg filformat',\r\n // Export of data\r\n exportCoordinateTab: 'Koordinater',\r\n exportPolygonTab: 'Tegne ny flate'\r\n};\r\n","import { Directive, OnInit, OnDestroy } from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyTranslateService } from './isy-translate.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[libTranslate]',\r\n})\r\nexport class TranslateDirective implements OnInit, OnDestroy {\r\n subscription: Subscription = new Subscription();\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n private translateService: IsyTranslateService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.commonService.useLanguage$.subscribe((value) => {\r\n this.translateService.use(value);\r\n })\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { IsyTranslateService } from './isy-translate.service'; // our translate service\r\n\r\n@Pipe({\r\n name: 'translate',\r\n pure: false, // impure pipe, update value when we change language\r\n})\r\nexport class TranslatePipe implements PipeTransform {\r\n constructor(private _translate: IsyTranslateService) {}\r\n\r\n transform(value: string): string {\r\n return value ? this._translate.instant(value) : '';\r\n }\r\n}\r\n","// app/translate/translation.ts\r\n\r\nimport { InjectionToken } from '@angular/core';\r\n\r\n// import translations\r\nimport { LANG_EN_NAME, LANG_EN_TRANS } from './lang-en';\r\nimport { LANG_NO_NAME, LANG_NO_TRANS } from './lang-no';\r\n\r\n// translation token\r\nexport const TRANSLATIONS = new InjectionToken('translations');\r\n\r\n// all traslations\r\nexport const dictionary = {\r\n [LANG_EN_NAME]: LANG_EN_TRANS,\r\n [LANG_NO_NAME]: LANG_NO_TRANS,\r\n};\r\n\r\n// providers\r\nexport const TRANSLATION_PROVIDERS = [\r\n { provide: TRANSLATIONS, useValue: dictionary },\r\n];\r\n","import { AfterViewInit, Directive, OnDestroy, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport {\r\n EUrlParam,\r\n IGIVisAdresseQueryParams,\r\n IGIVisBygningQueryParams,\r\n IGIVisEiendomQueryParams,\r\n IGIVisPlanQueryParams,\r\n IJobtechQueryParams,\r\n UrlParams,\r\n} from '@isygis/isy-configs';\r\nimport {\r\n EReInitType,\r\n IClickCoordinate,\r\n IsyMapEmitterService,\r\n IsyMapService,\r\n MapLibNgService,\r\n} from '@isygis/isy-map';\r\nimport {\r\n IsySearchBarService,\r\n IsySearchResultsService,\r\n} from '@isygis/isy-search';\r\n\r\nimport { IsyBaseLayersService } from '@isygis/isy-base-layers';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyLayersService } from '@isygis/isy-layers';\r\nimport { filter, map, Subscription } from 'rxjs';\r\nimport { PINICONSTYLE } from './styles';\r\n\r\n@Directive({\r\n selector: '[libIsyUrlParams]',\r\n})\r\nexport class IsyUrlParamsDirective implements OnInit, AfterViewInit, OnDestroy {\r\n data: any;\r\n subscriptions: Subscription[] = [];\r\n getClickCoordinatesSubscription: Subscription = Subscription.EMPTY;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private mapLibNgService: MapLibNgService,\r\n private mapEmitterService: IsyMapEmitterService,\r\n private mapService: IsyMapService,\r\n private commonService: IsyCommonService,\r\n private layersService: IsyLayersService,\r\n private baseLayersService: IsyBaseLayersService,\r\n private searchBarService: IsySearchBarService,\r\n private searchResultsService: IsySearchResultsService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscriptions.push(\r\n this.mapEmitterService.mapMoveEndEmitter$.subscribe((value) => {\r\n if (value) {\r\n this.updateLatLonZoomParams(value);\r\n }\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this.mapService.projectName$.subscribe((value) => {\r\n setTimeout(() => {\r\n this.updateProjectParam(value);\r\n }, 100);\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this.mapService.instance$.subscribe((value) => {\r\n setTimeout(() => {\r\n this.updateInstanceParam(value);\r\n }, 200);\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this.commonService.removeJtQueryParams$.subscribe(() => {\r\n this.router.navigate([], {\r\n queryParams: {\r\n jtFunksjon: null,\r\n jtObjektId: null,\r\n jtfunksjon: null,\r\n jtobjektid: null,\r\n },\r\n queryParamsHandling: 'merge',\r\n });\r\n setTimeout(() => {\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigateByUrl(this.router.url, {\r\n replaceUrl: true,\r\n });\r\n this.mapService.reInit(EReInitType.REINIT_WITH_PROJECT_CONFIG);\r\n }, 400);\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n this.commonService.removeGiQueryParams$.subscribe(() => {\r\n this.router.navigate([], {\r\n queryParams: {\r\n funksjon: null,\r\n kommunenummer: null,\r\n gaardsnummer: null,\r\n gnr: null,\r\n bruksnummer: null,\r\n bnr: null,\r\n adressenavn: null,\r\n husnummer: null,\r\n bokstav: null,\r\n festenummer: null,\r\n seksjonsnummer: null,\r\n undernummer: null,\r\n endringsloepenummer: null,\r\n bygningsnummer: null,\r\n plan: null,\r\n planidentifikasjon: null,\r\n },\r\n queryParamsHandling: 'merge',\r\n });\r\n setTimeout(() => {\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigateByUrl(this.router.url, {\r\n replaceUrl: true,\r\n });\r\n this.mapService.reInit(EReInitType.REINIT_WITH_PROJECT_CONFIG);\r\n }, 400);\r\n })\r\n );\r\n\r\n this.data = this.route.snapshot.data;\r\n const routing = this.data.routingData as UrlParams;\r\n if (routing.project) {\r\n let projName = routing.project;\r\n if (typeof routing.project === 'object') {\r\n projName = Array.from(routing.project)[0].toString();\r\n }\r\n this.mapService.setNewProjectName(projName);\r\n }\r\n if (routing.application) {\r\n this.mapService.setNewApplicationName(routing.application);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.data = this.route.snapshot.data;\r\n if (this.data && this.data.routingData) {\r\n const routing = this.data.routingData as UrlParams;\r\n if (routing.layers) {\r\n const overlays = this.mapLibNgService.map().getOverlayLayers();\r\n overlays.forEach((overlay: any) => {\r\n if (overlay.isVisible) {\r\n this.mapLibNgService.map().hideLayerByGuid(overlay.guid);\r\n }\r\n });\r\n const layersList = routing.layers.split(',');\r\n this.subscriptions.push(\r\n this.layersService.getLayerGroups$.subscribe((layergroups: any[]) => {\r\n if (layergroups.length && layersList.length) {\r\n layersList.forEach((layer) => {\r\n const layerLC = layer.toLowerCase();\r\n layergroups.forEach((g) => {\r\n if (Array.isArray(layergroups)) {\r\n if (\r\n layerLC === g.name.toLowerCase() ||\r\n layerLC === g.parentId.toLowerCase() ||\r\n layerLC === g.groupId\r\n ) {\r\n g.isyLayers.map((layer) => {\r\n if (layer.isVisible === false) {\r\n this.mapLibNgService.map().showLayer(layer);\r\n }\r\n });\r\n // how to update layer groups with the new visible layers that gui understands and don't strart looping?\r\n // this.commonService.updateLayerGroups()\r\n }\r\n }\r\n });\r\n });\r\n }\r\n })\r\n );\r\n }\r\n\r\n if (routing.baselayers) {\r\n this.subscriptions.push(\r\n this.baseLayersService.baseLayers$.subscribe((baseLayergroups) => {\r\n const baselayersList = routing.baselayers.split(',');\r\n baselayersList.forEach((blayer) => {\r\n const blayerLC = blayer.toLowerCase();\r\n baseLayergroups.forEach((g) => {\r\n if (blayerLC === g.name.toLowerCase()) {\r\n this.baseLayersService.setActiveBaseLayer(g);\r\n }\r\n });\r\n });\r\n })\r\n );\r\n }\r\n if (routing.tool) {\r\n this.subscriptions.push(\r\n this.commonService.visibleTools$.subscribe((toolList) => {\r\n if (toolList) {\r\n const toolLC = routing.tool.toLowerCase();\r\n toolList.forEach((t) => {\r\n if (toolLC === t.id.toLowerCase()) {\r\n setTimeout(() => {\r\n this.commonService.activateToolById(t.id);\r\n }, 200);\r\n }\r\n });\r\n }\r\n })\r\n );\r\n }\r\n if (routing.search) {\r\n this.searchBarService.activateSearchResult();\r\n this.searchResultsService.startLoading();\r\n this.searchBarService.setSearchBarValue(routing.search);\r\n }\r\n if (routing.project && !routing.lat && !routing.lon && !routing.zoom) {\r\n this.subscriptions.push(\r\n this.mapEmitterService.mapLoadEmitter$.subscribe((projectConfig) => {\r\n if (projectConfig) {\r\n this.mapLibNgService.map().setCenter({\r\n lon: Number(projectConfig.config.project.lon),\r\n lat: Number(projectConfig.config.project.lat),\r\n zoom: Number(projectConfig.config.project.zoom),\r\n epsg: projectConfig.config.project.epsg,\r\n });\r\n }\r\n })\r\n );\r\n }\r\n if (routing.lat && routing.lon && routing.zoom) {\r\n this.subscriptions.push(\r\n this.mapEmitterService.mapLoadEmitter$.subscribe((projectConfig) => {\r\n if (projectConfig) {\r\n this.mapLibNgService.map().setCenter({\r\n lon: Number(routing.lon),\r\n lat: Number(routing.lat),\r\n zoom: Number(routing.zoom),\r\n epsg: projectConfig.config.project.epsg,\r\n });\r\n }\r\n })\r\n );\r\n }\r\n if (routing.jtfunksjon && routing.jtobjektid) {\r\n const params: IJobtechQueryParams = {\r\n jtfunksjon: routing.jtfunksjon,\r\n jtobjektid: routing.jtobjektid,\r\n };\r\n this.commonService.setJobtechQueryParams(params);\r\n }\r\n if (routing.funksjon) {\r\n switch (routing.funksjon.toLowerCase()) {\r\n case 'visplan': {\r\n if (routing.plan) {\r\n routing.planidentifikasjon = routing.plan;\r\n }\r\n const params: IGIVisPlanQueryParams = {\r\n funksjon: routing.funksjon,\r\n kommunenummer: routing.kommunenummer,\r\n planidentifikasjon: routing.planidentifikasjon,\r\n };\r\n this.commonService.setGIVisPlanQueryParams(params);\r\n break;\r\n }\r\n case 'viseiendom': {\r\n const params: IGIVisEiendomQueryParams = {\r\n funksjon: routing.funksjon,\r\n kommunenummer: routing.kommunenummer,\r\n gaardsnummer: routing.gaardsnummer,\r\n bruksnummer: routing.bruksnummer,\r\n festenummer: routing.festenummer,\r\n seksjonsnummer: routing.seksjonsnummer,\r\n };\r\n this.commonService.setGIVisEiendomQueryParams(params);\r\n break;\r\n }\r\n case 'visbygning': {\r\n const params: IGIVisBygningQueryParams = {\r\n funksjon: routing.funksjon,\r\n kommunenummer: routing.kommunenummer,\r\n bygningsnummer: routing.bygningsnummer,\r\n endringsloepenummer: routing.endringsloepenummer,\r\n };\r\n this.commonService.setGIVisBygningQueryParams(params);\r\n break;\r\n }\r\n case 'visadresse': {\r\n const params: IGIVisAdresseQueryParams = {\r\n funksjon: routing.funksjon,\r\n kommunenummer: routing.kommunenummer,\r\n adressenavn: routing.adressenavn,\r\n husnummer: routing.husnummer,\r\n bokstav: routing.bokstav,\r\n gaardsnummer: routing.gaardsnummer,\r\n bruksnummer: routing.bruksnummer,\r\n festenummer: routing.festenummer,\r\n seksjonsnummer: routing.seksjonsnummer,\r\n undernummer: routing.undernummer,\r\n };\r\n this.commonService.setGIVisAdresseQueryParams(params);\r\n break;\r\n }\r\n }\r\n }\r\n if (routing.theme) {\r\n this.commonService.changeTheme(routing.theme);\r\n }\r\n if (routing.onlymap && routing.onlymap === 'true') {\r\n this.commonService.hideSearchBar(true);\r\n this.commonService.hideInfoPanel(true);\r\n this.commonService.hideGeolocation(true);\r\n this.commonService.hideBaseLayersLayout(true);\r\n this.commonService.hideAndBlockShowMapActionDialog(true);\r\n this.commonService.hideZoomInOutBtn(true);\r\n this.commonService.forceHideSideNav(true);\r\n }\r\n if (routing.opennav) {\r\n const shouldBeOpen = routing.opennav === 'true';\r\n const isMobile =\r\n document.documentElement.clientWidth > 1024 ? false : true;\r\n if (!isMobile) {\r\n this.commonService.forceHideSideNav(!shouldBeOpen);\r\n this.commonService.sideNavPin(shouldBeOpen);\r\n }\r\n }\r\n if (routing.marker && routing.marker === 'true') {\r\n if (this.getClickCoordinatesSubscription.closed) {\r\n this.getClickCoordinatesSubscription =\r\n this.mapEmitterService.getClickCoordinatesEmitter$.subscribe(\r\n (coordinates: IClickCoordinate) => {\r\n this.mapLibNgService.map().hideMarker();\r\n if (coordinates) {\r\n const center = {\r\n lon: coordinates.coordinate[0],\r\n lat: coordinates.coordinate[1],\r\n zoom: coordinates.zoom,\r\n epsg: coordinates.epsg,\r\n };\r\n this.mapLibNgService.map().showMarker(center, PINICONSTYLE);\r\n } else {\r\n if (routing.funksjon) {\r\n this.subscriptions.push(\r\n this.commonService.giCompleteAction$.subscribe(\r\n (giComplete) => {\r\n if (giComplete) {\r\n this.setMarkerOnMoveEnd();\r\n }\r\n }\r\n )\r\n );\r\n } else {\r\n this.setMarkerOnMoveEnd();\r\n }\r\n }\r\n }\r\n );\r\n }\r\n }\r\n if (routing.marker && routing.marker === 'false') {\r\n if (!this.getClickCoordinatesSubscription.closed) {\r\n this.getClickCoordinatesSubscription.unsubscribe();\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\r\n }\r\n private setMarkerOnMoveEnd() {\r\n const mapMoveEndSubscription =\r\n this.mapEmitterService.mapMoveEndEmitter$.subscribe((value) => {\r\n // console.log('MapMoveEnd: ', value);\r\n if (value) {\r\n const center = {\r\n lon: value.lon,\r\n lat: value.lat,\r\n zoom: value.zoom,\r\n };\r\n this.mapLibNgService.map().hideMarker();\r\n\r\n this.mapLibNgService.map().showMarker(center, PINICONSTYLE);\r\n\r\n setTimeout(() => {\r\n // Can still take some time to finish moving the map, eventually unsubscribe\r\n mapMoveEndSubscription.unsubscribe();\r\n }, 1000);\r\n }\r\n });\r\n }\r\n private updateLatLonZoomParams(value: any): void {\r\n const params = {};\r\n params[EUrlParam.ZOOM] = value[EUrlParam.ZOOM];\r\n params[EUrlParam.LAT] = value[EUrlParam.LAT];\r\n params[EUrlParam.LON] = value[EUrlParam.LON];\r\n this.router.navigate([], {\r\n queryParams: params,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n private updateProjectParam(value: string): void {\r\n const param = {};\r\n param[EUrlParam.PROJECT] = value;\r\n this.router.navigate([], {\r\n queryParams: param,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n private updateInstanceParam(value: string): void {\r\n const param = {};\r\n param[EUrlParam.APPLICATION] = value;\r\n this.router.navigate([], {\r\n queryParams: param,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n\r\n private updateLayersParam(value: string): void {\r\n const param = {};\r\n param[EUrlParam.LAYERS] = value;\r\n this.router.navigate([], {\r\n queryParams: param,\r\n queryParamsHandling: 'merge',\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { IsyUrlParamsDirective } from './isy-url-params.directive';\r\n\r\n@NgModule({\r\n imports: [],\r\n declarations: [IsyUrlParamsDirective],\r\n exports: [IsyUrlParamsDirective],\r\n})\r\nexport class IsyUrlParamsModule {}\r\n","export const PINICONSTYLE: any[] = [\r\n {\r\n stroke: {\r\n color: 'rgba(255, 255, 255, 1)',\r\n width: 7,\r\n },\r\n },\r\n {\r\n fill: {\r\n color: 'rgba(255, 0, 0, .3)',\r\n },\r\n\r\n stroke: {\r\n color: 'rgba(44, 83, 121, 1)',\r\n width: 3,\r\n },\r\n image: {\r\n src:\r\n 'data:image/svg+xml;utf8,' +\r\n '' +\r\n '',\r\n\r\n scale: 0.08,\r\n anchor: [0.5, 512],\r\n anchorXUnits: 'fraction',\r\n anchorYUnits: 'pixels',\r\n },\r\n },\r\n];\r\n\r\nexport const PINICONHOVERSTYLE: any[] = [\r\n {\r\n stroke: {\r\n color: 'rgba(255, 255, 255, 1)',\r\n width: 9,\r\n },\r\n },\r\n {\r\n stroke: {\r\n color: 'rgba(44, 83, 121, 1)',\r\n width: 5,\r\n },\r\n image: {\r\n src:\r\n 'data:image/svg+xml;utf8,' +\r\n '' +\r\n '',\r\n\r\n scale: 0.08,\r\n anchor: [0.5, 512],\r\n anchorXUnits: 'fraction',\r\n anchorYUnits: 'pixels',\r\n },\r\n },\r\n];\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { Subscription } from 'rxjs';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\nimport { ELogin, ESessionStorageId, ELoginType } from '@isygis/isy-configs';\r\nimport { MsalService } from '@azure/msal-angular';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { IsyMapService } from '@isygis/isy-map';\r\nimport { ThrottlingUtils } from '@azure/msal-common';\r\n\r\n@Component({\r\n selector: 'lib-isy-user-info-msal',\r\n templateUrl: './isy-user-info-msal.component.html',\r\n styleUrls: ['./isy-user-info-msal.component.scss'],\r\n})\r\nexport class IsyUserInfoMsalComponent implements OnInit, OnDestroy {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n userName;\r\n email;\r\n subscription: Subscription = new Subscription();\r\n adfsLogin = false;\r\n idPortenLogin = false;\r\n userAdminLogin = false;\r\n userIsLoggedIn = false;\r\n keycloakLogin = false;\r\n\r\n constructor(\r\n private authService: MsalService,\r\n private sessionStorageService: SessionStorageService,\r\n private commonService: IsyCommonService,\r\n private mapService: IsyMapService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.subscription.add(\r\n this.sessionStorageService\r\n .observe(ELogin.USERISLOGGEDIN)\r\n .subscribe((value) => {\r\n this.userIsLoggedIn = value;\r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME);\r\n this.email = this.sessionStorageService.retrieve(ELogin.EMAIL);\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.sessionStorageService\r\n .observe(ESessionStorageId.LOGINTYPEINPROGRESS)\r\n .subscribe((value) => {\r\n if (value === ELoginType.KEYCLOAK) {\r\n this.keycloakLogin = true;\r\n }\r\n if (value === ELoginType.ADFS) {\r\n this.userName = this.sessionStorageService.retrieve(\r\n ELogin.USERNAME\r\n );\r\n this.email = this.sessionStorageService.retrieve(ELogin.EMAIL);\r\n this.adfsLogin = true;\r\n // }\r\n // else if (value === ELoginType.IDPORTEN) {\r\n // this.idPortenLogin = true;\r\n }\r\n // else {\r\n // this.userAdminLogin = true;\r\n // }\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.sessionStorageService.observe(ELogin.USERNAME).subscribe((value) => {\r\n if (value) {\r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME);\r\n // if (this.sessionStorageService.retrieve(ESessionStorageId.LOGINTYPEINPROGRESS) === ELoginType.ADFS) {\r\n // this.adfsLogin = true;\r\n // }\r\n // if (this.sessionStorageService.retrieve(ESessionStorageId.LOGINTYPEINPROGRESS) === ELoginType.IDPORTEN) {\r\n // this.idPortenLogin = true;\r\n // }\r\n if (\r\n this.sessionStorageService.retrieve(\r\n ESessionStorageId.LOGINTYPEINPROGRESS\r\n ) === ELoginType.ISYUSERADMIN\r\n ) {\r\n this.userAdminLogin = true;\r\n }\r\n // this.adfsLogin = this.sessionStorageService.retrieve(ESessionStorageId.LOGINTYPEINPROGRESS) === ELoginType.ADFS;\r\n }\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.commonService.idLogginActive$.subscribe((value) => {\r\n this.idPortenLogin = value;\r\n })\r\n );\r\n\r\n this.subscription.add(\r\n this.commonService.adfsLoginActive$.subscribe((value) => {\r\n this.adfsLogin = value;\r\n })\r\n );\r\n\r\n this.userIsLoggedIn = this.sessionStorageService.retrieve(\r\n ELogin.USERISLOGGEDIN\r\n );\r\n this.userName = this.sessionStorageService.retrieve(ELogin.USERNAME);\r\n this.email = this.sessionStorageService.retrieve(ELogin.EMAIL);\r\n this.adfsLogin =\r\n this.sessionStorageService.retrieve(\r\n ESessionStorageId.LOGINTYPEINPROGRESS\r\n ) === ELoginType.ADFS;\r\n this.userAdminLogin =\r\n this.sessionStorageService.retrieve(\r\n ESessionStorageId.LOGINTYPEINPROGRESS\r\n ) === ELoginType.ISYUSERADMIN;\r\n }\r\n\r\n logOut(): void {\r\n this.sessionStorageService.store(ELogin.URLREDIRECT, window.location.href);\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.sessionStorageService.clear(ELogin.USERNAME);\r\n this.sessionStorageService.clear(ELogin.EMAIL);\r\n this.sessionStorageService.clear(ELogin.TOKEN);\r\n this.sessionStorageService.clear(ELogin.RESOURCES);\r\n this.sessionStorageService.clear(ELogin.USERISLOGGEDIN);\r\n this.sessionStorageService.clear(ESessionStorageId.ACTIVENAVBAR);\r\n this.commonService.setIsyTokenToMaplibNg('');\r\n this.commonService.setIframeSessionLogout(true);\r\n this.mapService.initProjectList();\r\n }\r\n\r\n logoutAzure(): void {\r\n this.logOut();\r\n this.authService.logout();\r\n this.commonService.setAdfsLoginActive(false);\r\n }\r\n\r\n logoutIdPorten(): void {\r\n this.sessionStorageService.clear(ELogin.USERNAME);\r\n this.sessionStorageService.clear(ESessionStorageId.LOGINTYPEINPROGRESS);\r\n this.sessionStorageService.clear(ELogin.USERISLOGGEDIN);\r\n this.commonService.setIdLogginActive(false);\r\n this.commonService.setIdPortenUsed(false);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n","
    \r\n \r\n \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IsyUserInfoMsalComponent } from './isy-user-info-msal.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n FormsModule,\r\n FontAwesomeModule,\r\n IsyTranslateModule,\r\n BsDropdownModule.forRoot(),\r\n ],\r\n declarations: [IsyUserInfoMsalComponent],\r\n exports: [IsyUserInfoMsalComponent],\r\n})\r\nexport class IsyUserInfoMsalModule {}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'createUrl',\r\n})\r\nexport class CreateUrlPipe implements PipeTransform {\r\n constructor(private domSanitizer: DomSanitizer) {}\r\n\r\n transform(value: any, ...args: any[]): any {\r\n return this.domSanitizer.bypassSecurityTrustResourceUrl(value.url);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'filterLayerGroups',\r\n pure: false,\r\n})\r\nexport class FilterLayerGroupsPipe implements PipeTransform {\r\n // when filter param is hasSuperGroups pipe will return groups which has superGroupId\r\n // when filter param is withoutSuperGroups pipe will return ONLY groups without superGroupId\r\n // when filter param is --some-name-- pipe will exclude groupe with specific name\r\n\r\n transform(groups: any, ...filterParam: string[]): any {\r\n if (filterParam[0] === 'hasSuperGroups') {\r\n if (\r\n filterParam[1] &&\r\n filterParam[1] === 'supergroupid' &&\r\n filterParam[2]\r\n ) {\r\n return groups.filter((g) => g.supergroupid === filterParam[2]);\r\n }\r\n return groups.filter(\r\n (g) => g.supergroupid !== undefined && g.supergroupid !== null\r\n );\r\n }\r\n if (filterParam[0] === 'withoutSuperGroups') {\r\n return groups.filter(\r\n (g) => g.supergroupid === undefined || g.supergroupid === null\r\n );\r\n }\r\n if (filterParam[0] === 'name') {\r\n return groups.filter(\r\n (g) => g.name.toLowerCase() !== filterParam[1].toLowerCase()\r\n );\r\n }\r\n // if (filterParam[0] === 'supergroupid') {\r\n // return groups.filter(g => g.supergroupid === filterParam[1]);\r\n // }\r\n return null;\r\n }\r\n}\r\n","import { Directive, OnInit, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[libFixIframeSize]',\r\n})\r\nexport class FixIframeSizeDirective implements OnInit {\r\n constructor(private el: ElementRef) {}\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event): void {\r\n const hostHeight =\r\n this.el.nativeElement.parentNode.offsetParent.offsetHeight;\r\n const hostWidth = this.el.nativeElement.parentNode.offsetParent.offsetWidth;\r\n this.el.nativeElement.style.height = hostHeight - 52 + 'px';\r\n this.el.nativeElement.style.width = hostWidth + 'px';\r\n }\r\n\r\n ngOnInit(): void {\r\n const hostHeight =\r\n this.el.nativeElement.parentNode.offsetParent.offsetHeight;\r\n const hostWidth = this.el.nativeElement.parentNode.offsetParent.offsetWidth;\r\n\r\n this.el.nativeElement.style.height = hostHeight - 52 + 'px';\r\n this.el.nativeElement.style.width = hostWidth + 'px';\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { GeoJsonObject } from 'geojson'\r\nimport { ConfigService } from '@isygis/isymap-config';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormatConvertService {\r\n\r\n constructor(\r\n private httpClient: HttpClient,\r\n private configService: ConfigService,\r\n ) {\r\n // empty\r\n }\r\n\r\n convert(files: File[], format : GisFormat, epsg: FmeEpsgCode): Promise {\r\n switch (format) {\r\n case GisFormat.GEOJSON:\r\n return this.geojsonFormat(files);\r\n case GisFormat.SOSI:\r\n case GisFormat.GML:\r\n return this.gdalConvert(files);\r\n // case GisFormat.DWG_DXF:\r\n case GisFormat.ESRI_GDB:\r\n case GisFormat.GEOPACKAGE:\r\n case GisFormat.SHAPEFILE:\r\n case GisFormat.SOSI_GML:\r\n return this.fmeConvert(files, format, epsg);\r\n default:\r\n throw new Error(`Unsupported format: ${format}`);\r\n }\r\n }\r\n\r\n async gdalConvert(files: File[]): Promise {\r\n const gdalapi = (await this.configService.isymapConfig()).externalServices.gdalapi;\r\n const query = `${gdalapi}/convert2geojson`;\r\n const formData = new FormData();\r\n // API only handles one file\r\n formData.append('file', files[0]);\r\n return firstValueFrom(this.httpClient.post(query, formData));\r\n }\r\n\r\n async fmeConvert(files: File[], format: GisFormat, epsg: FmeEpsgCode): Promise {\r\n const fmeapi = (await this.configService.isymapConfig()).externalServices.fmeapi;\r\n const query = `${fmeapi}/convert2geojson/${format}/${epsg}`;\r\n const formData = new FormData();\r\n for (const file of files) {\r\n formData.append(file.name, file);\r\n }\r\n return firstValueFrom(this.httpClient.post(query, formData));\r\n }\r\n\r\n geojsonFormat(files: File[]): Promise {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const reader = new FileReader();\r\n\r\n reader.readAsText(files[0]);\r\n\r\n reader.onloadend = () => {\r\n try {\r\n const parsedJson = JSON.parse(reader.result as string) as GeoJsonObject;\r\n resolve(parsedJson);\r\n } catch (jsonError) {\r\n console.error(`Failed to parse JSON: ${jsonError.message}`);\r\n reject(new Error(`Failed to parse JSON: ${jsonError.message}`));\r\n }\r\n };\r\n\r\n reader.onerror = () => {\r\n console.error('File reading failed');\r\n reject(new Error(`File reading failed`));\r\n };\r\n\r\n } catch (error) {\r\n console.error(`Unexpected error: ${error.message}`);\r\n reject(new Error(`Unexpected error: ${error.message}`));\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport enum GisFormat {\r\n GEOJSON = \"GEOJSON\",\r\n SOSI = 'SOSI',\r\n GML = 'GML',\r\n GEOPACKAGE = 'OGCGEOPACKAGE',\r\n SHAPEFILE = 'SHAPEFILE',\r\n SOSI_GML = 'SOSI_GML',\r\n ESRI_GDB = 'FILEGDB',\r\n // TODO: implement possibility to set epsg for dxf\r\n // DWG_DXF = 'ACAD',\r\n}\r\n\r\nexport enum FmeEpsgCode {\r\n INFER = \"0\",\r\n UTM31 = \"EPSG:25831\",\r\n UTM32 = \"EPSG:25832\",\r\n UTM33 = \"EPSG:25833\",\r\n UTM34 = \"EPSG:25834\",\r\n UTM35 = \"EPSG:25835\",\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GisFormat } from './format-convert.service';\r\n\r\n@Pipe({\r\n name: 'formatFilterDescription',\r\n})\r\nexport class FormatFilterDescriptionPipe implements PipeTransform {\r\n transform(value: unknown, ...args: unknown[]): unknown { \r\n switch (value) {\r\n case GisFormat.GEOJSON:\r\n return '.json';\r\n case GisFormat.SOSI:\r\n return '.sos';\r\n case GisFormat.SHAPEFILE:\r\n return '.shp, .shx, .dbf, .prj, .csf';\r\n case GisFormat.ESRI_GDB:\r\n return '.gdb, .fgdb';\r\n case GisFormat.GEOPACKAGE:\r\n return '.gpkg';\r\n case GisFormat.GML: \r\n case GisFormat.SOSI_GML:\r\n return '.gml';\r\n default:\r\n return '*/*';\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { GisFormat } from './format-convert.service';\r\n\r\n@Pipe({\r\n name: 'formatOptionDescription',\r\n})\r\nexport class FormatOptionDescriptionPipe implements PipeTransform {\r\n transform(value: unknown, method: string = 'format', ...args: unknown[]): unknown {\r\n switch (value) {\r\n case GisFormat.GEOJSON:\r\n return 'GeoJson';\r\n case GisFormat.ESRI_GDB:\r\n return method === 'selectedFormat' ? 'Geodatabase' : 'ESRI Geodatabase';\r\n case GisFormat.GEOPACKAGE:\r\n return method === 'selectedFormat' ? 'OGC' : 'OGC GeoPackage';\r\n case GisFormat.GML:\r\n return \"GML\";\r\n case GisFormat.SHAPEFILE:\r\n return method === 'selectedFormat' ? 'Shapefile' : 'ESRI Shapefile';\r\n case GisFormat.SOSI:\r\n return \"SOSI-fil\";\r\n case GisFormat.SOSI_GML:\r\n return \"SOSI-GML\";\r\n default:\r\n return value;\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\n\r\n@Pipe({\r\n name: 'getFontIcon',\r\n})\r\nexport class GetFontIconPipe implements PipeTransform {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n transform(value: string, ...args: unknown[]): any {\r\n // [selectedCustomIcon.prefix, selectedCustomIcon.iconName]\r\n // console.log('GET FONT ICON PIPE: ', value);\r\n const iconDef = value.split('|');\r\n return [iconDef[0], [iconDef[1]]];\r\n }\r\n}\r\n","\r\n\r\n
    \r\n \r\n \"Loaded\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\n\r\n@Component({\r\n selector: 'lib-isy-iframe',\r\n templateUrl: './isy-iframe.component.html',\r\n styleUrls: ['./isy-iframe.component.scss'],\r\n})\r\nexport class IsyIframeComponent implements OnInit {\r\n @ViewChild('iframe') iframe: ElementRef;\r\n @Input() data: any;\r\n isLoading: boolean;\r\n kcInUse = false;\r\n idPortenInUse = false;\r\n postMsg: { token: string; framesrc: any };\r\n\r\n constructor(\r\n private commonService: IsyCommonService,\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.kcInUse = this.commonService.getKcUsed();\r\n this.idPortenInUse = this.commonService.getIdPortenUsed();\r\n this.isLoading = true;\r\n if (this.kcInUse && this.commonService.getKcToken() !== '') {\r\n this.postMsg = {\r\n token: this.commonService.getKcToken(),\r\n framesrc: this.data.postMsgUrl,\r\n };\r\n } else if (this.idPortenInUse && this.commonService.getIdPortenToken() !== '') {\r\n this.postMsg = {\r\n token: this.commonService.getIdPortenToken(),\r\n framesrc: this.data.postMsgUrl,\r\n };\r\n }\r\n this.commonService.iframeSessionLogout$.subscribe(value => {\r\n if (value){\r\n document.getElementById('iframe')?.setAttribute( 'src', 'https://drammenkart.nois.no/webinnsyn_keycloak/openid-connect/sessionlogout' );\r\n }\r\n })\r\n }\r\n\r\n public onIframeLoad(): void {\r\n setTimeout(() => {\r\n if (typeof this.iframe !== 'undefined' && (this.kcInUse || this.idPortenInUse)) {\r\n // Once iFrame Loaded\r\n if (this.commonService.getKcToken() !== '' || this.commonService.getIdPortenToken() !== '') {\r\n this.iframe.nativeElement.contentWindow.postMessage(this.postMsg, '*');\r\n }\r\n this.isLoading = false;\r\n }\r\n }, 500);\r\n }\r\n\r\n public isImageUrl(data: any): boolean {\r\n const url = data.url;\r\n if (url === undefined || url === null) {\r\n return false;\r\n }\r\n return /\\.(jpeg|jpg|gif|png)$/.test(url.toLowerCase());\r\n }\r\n }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IsyIframeComponent } from './isy-iframe/isy-iframe.component';\r\nimport { CreateUrlPipe } from './create-url.pipe';\r\nimport { FixIframeSizeDirective } from './fix-iframe-size.directive';\r\nimport { FilterLayerGroupsPipe } from './filter-layer-groups.pipe';\r\nimport { GetFontIconPipe } from './get-font-icon.pipe';\r\nimport { SortByPipe } from './sort-by.pipe';\r\nimport { TitleLabelPipe } from './title-label.pipe';\r\nimport { FormatOptionDescriptionPipe } from './format-option-description.pipe';\r\nimport { FormatFilterDescriptionPipe } from './format-filter-description.pipe';\r\n\r\n@NgModule({\r\n imports: [CommonModule],\r\n declarations: [\r\n IsyIframeComponent,\r\n CreateUrlPipe,\r\n FixIframeSizeDirective,\r\n FilterLayerGroupsPipe,\r\n GetFontIconPipe,\r\n SortByPipe,\r\n TitleLabelPipe,\r\n FormatOptionDescriptionPipe,\r\n FormatFilterDescriptionPipe,\r\n ],\r\n exports: [\r\n IsyIframeComponent,\r\n CreateUrlPipe,\r\n FixIframeSizeDirective,\r\n FilterLayerGroupsPipe,\r\n GetFontIconPipe,\r\n SortByPipe,\r\n TitleLabelPipe,\r\n FormatOptionDescriptionPipe,\r\n FormatFilterDescriptionPipe\r\n ],\r\n})\r\nexport class IsyUtilsModule {}\r\n","import * as FileSaver from 'file-saver';\r\n\r\n// tslint:disable:max-line-length\r\nconst mapping = {\r\n knr: { header: 'Knr', value: (n) => n.Knr, isOwnerField: false },\r\n gnr: { header: 'Gnr', value: (n) => n.Gnr, isOwnerField: false },\r\n bnr: { header: 'Bnr', value: (n) => n.Bnr, isOwnerField: false },\r\n fnr: { header: 'Fnr', value: (n) => n.Fnr, isOwnerField: false },\r\n snr: { header: 'Snr', value: (n) => n.Snr, isOwnerField: false },\r\n bruksnavn: { header: 'Bruksnavn', value: (n) => n.Bruksnavn?.trim() || '', isOwnerField: false },\r\n adresser: { header: 'Adresse(r)', value: (n) => n.Addresser?.map(adr => `${adr.Name}, ${adr.ZipCode} ${adr.PostalCode}`).join(', ') || '', isOwnerField: false },\r\n eierNavn: { header: 'Eiers navn', value: (o) => `${o.Name}${o.IsDead ? ' (død)' : ''}`, isOwnerField: true },\r\n eierAdresse: { header: 'Eiers adresse', value: (o) => `${o.Address.Name}, ${o.Address.ZipCode} ${o.Address.PostalCode}`, isOwnerField: true },\r\n eierRolle: { header: 'Eiers rolle', value: (o) => o.OwnerDescription, isOwnerField: true },\r\n eierGateadresse: { header: 'Eiers gateadresse', value: (o) => o.Address.Name, isOwnerField: true },\r\n eierPostnr: { header: 'Eiers postnummer', value: (o) => String('0000' + o.Address.ZipCode).slice(-4), isOwnerField: true },\r\n eierPoststed: { header: 'Eiers poststed', value: (o) => o.Address.PostalCode || '', isOwnerField: true },\r\n eierPnr: { header: 'Eiers personnummer', value: (o) => o.Personnummer || '', isOwnerField: true },\r\n eierOrgnr: { header: 'Eiers organisasjonsnummer', value: (o) => o.OrgNummer || '', isOwnerField: true },\r\n};\r\n\r\nexport const OwnerList2CSV = (neighbors: any[], title: string, neighborlistformat?: string[], mainProperty?: any): void => {\r\n if (!neighbors) {\r\n return;\r\n }\r\n\r\n const order = getOrder(neighborlistformat);\r\n const headers = getHeaders(order);\r\n const data = parseNeighbors(neighbors, order);\r\n if (mainProperty) {\r\n const mainPropertyData = parseNeighbor(mainProperty, order);\r\n\r\n const mainPropertyExists = data.some(item =>\r\n item[0] === mainPropertyData[0][0] &&\r\n item[1] === mainPropertyData[0][1] &&\r\n item[2] === mainPropertyData[0][2]\r\n );\r\n \r\n if (!mainPropertyExists) {\r\n data.unshift(mainPropertyData[0]);\r\n }\r\n }\r\n\r\n const csv = convertToCsv([headers, ...data]);\r\n downloadCsv(csv, title);\r\n};\r\n\r\nconst getOrder = (format?: string[]): string[] => {\r\n // Ensure that only valid keys are present in neighborlistcsvformats\r\n const filteredOrder = format?.filter(a => Object.keys(mapping).includes(a));\r\n if (filteredOrder && filteredOrder.length > 0) {\r\n return filteredOrder;\r\n }\r\n return Object.keys(mapping);\r\n};\r\n\r\nconst getHeaders = (order: string[]): string[] => {\r\n return order.map(key => mapping[key].header).filter(Boolean);\r\n};\r\n\r\nconst parseNeighbors = (neighbors: any[], order: string[]): any[] => {\r\n return neighbors.flatMap(neighbor => parseNeighbor(neighbor, order));\r\n};\r\n\r\nconst parseNeighbor = (neighbor: any, order: string[]): any[] => {\r\n let neighborList = [];\r\n if (neighbor.Owners == null) {\r\n neighborList = [order.map(a => !mapping[a].isOwnerField ? mapping[a].value(neighbor) : '')];\r\n } else {\r\n neighborList = neighbor.Owners.map(owner =>\r\n order.map(a => mapping[a].isOwnerField ? mapping[a].value(owner) : mapping[a].value(neighbor))\r\n );\r\n }\r\n return neighborList;\r\n};\r\n\r\nconst convertToCsv = (data: any[][]): string => {\r\n return data.map(row => row.join(';')).join('\\r\\n');\r\n};\r\n\r\nconst downloadCsv = (csvContent: string, title: string): void => {\r\n const blob = new Blob([`\\ufeff${csvContent}`], { type: 'text/csv' });\r\n FileSaver.saveAs(blob, title);\r\n};\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { orderBy } from 'lodash-es';\r\n\r\n@Pipe({\r\n name: 'sortBy',\r\n})\r\nexport class SortByPipe implements PipeTransform {\r\n transform(value: any[], order = '', column: string = ''): any[] {\r\n if (!value || order === '' || !order) {\r\n return value;\r\n } // no array\r\n if (value.length <= 1) {\r\n return value;\r\n } // array with only one item\r\n if (!column || column === '') {\r\n if (order === 'asc') {\r\n return value.sort();\r\n } else {\r\n return value.sort().reverse();\r\n }\r\n } // sort 1d array\r\n return orderBy(value, [column], [order]);\r\n }\r\n}\r\n","import { IPicklistResult, IsyPicklistService } from '@isygis/isy-app-services';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'titleLabel', pure: false })\r\nexport class TitleLabelPipe implements PipeTransform {\r\n picklistLookup;\r\n picklistResult: IPicklistResult[];\r\n\r\n constructor(private picklistService: IsyPicklistService) {\r\n this.picklistResult = this.picklistService.picklistResult;\r\n this.picklistLookup = this.picklistService.picklistLookup;\r\n }\r\n transform(value: any, args?: any): any {\r\n const pattern = /{([\\wØøÆæÅå]+)}/g;\r\n let result: any = value[0];\r\n let foundProps: any;\r\n\r\n if (value.length > 2) {\r\n while ((foundProps = pattern.exec(value[0]))) {\r\n const id: any = foundProps[0].substring(1, foundProps[0].length - 1);\r\n const infoElement: any = value[2].find((i) => i?.name === id);\r\n\r\n if (infoElement?.hascodelist === 'true') {\r\n const lookedUp: IPicklistResult = this.picklistLookup(\r\n infoElement.codelistid,\r\n infoElement.name,\r\n value[1][foundProps[1]]\r\n );\r\n result = result.replace(foundProps[0], lookedUp?.forklaring || value[1][foundProps[1]] || '');\r\n } else {\r\n result = result.replace(foundProps[0], value[1][foundProps[1]] || '');\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","export const objectKeysToLowerCase = (input: any) => {\r\n if (typeof input !== 'object') {\r\n return input;\r\n }\r\n if (Array.isArray(input)) {\r\n return input.map(objectKeysToLowerCase);\r\n }\r\n return Object.keys(input).reduce(\r\n (c, k) => ((c[k.toLowerCase()] = input[k]), c),\r\n {}\r\n );\r\n};\r\n\r\nexport const getUniqueId = (parts: number): string => {\r\n const stringArr = [];\r\n for (let i = 0; i < parts; i++) {\r\n // tslint:disable-next-line:no-bitwise\r\n const S4 = (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n stringArr.push(S4);\r\n }\r\n return stringArr.join('-');\r\n};\r\n\r\nexport const arrayMove = (arr, oldIndex, newIndex) => {\r\n while (oldIndex < 0) {\r\n oldIndex += arr.length;\r\n }\r\n while (newIndex < 0) {\r\n newIndex += arr.length;\r\n }\r\n if (newIndex >= arr.length) {\r\n let k = newIndex - arr.length + 1;\r\n while (k--) {\r\n arr.push(undefined);\r\n }\r\n }\r\n arr.splice(newIndex, 0, arr.splice(oldIndex, 1)[0]);\r\n return arr;\r\n};\r\n\r\nexport const calculateBoundingExtent = (extents: number[][]): number[] => {\r\n let minX = Infinity;\r\n let minY = Infinity;\r\n let maxX = -Infinity;\r\n let maxY = -Infinity;\r\n\r\n extents.forEach(extent => {\r\n minX = Math.min(minX, extent[0]);\r\n minY = Math.min(minY, extent[1]);\r\n maxX = Math.max(maxX, extent[2]);\r\n maxY = Math.max(maxY, extent[3]);\r\n });\r\n\r\n return [minX, minY, maxX, maxY];\r\n};\r\n","import { Component } from '@angular/core';\r\nimport { fontAwesomeIcons } from '@isygis/isy-font-awesome-icons';\r\nimport { MapLibNgService } from '@isygis/isy-map';\r\nimport { IsyCommonService } from '@isygis/isy-common';\r\nimport { combineLatest } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'lib-isy-zoom-in-out',\r\n templateUrl: './isy-zoom-in-out.component.html',\r\n styleUrls: ['./isy-zoom-in-out.component.scss'],\r\n})\r\nexport class IsyZoomInOutComponent {\r\n fontAwesomeIcons = fontAwesomeIcons;\r\n\r\n constructor(\r\n private mapLibNgService: MapLibNgService,\r\n private commonService: IsyCommonService\r\n ) {}\r\n\r\n hideZoomInOutBtn$ = this.commonService.hideZoomInOutBtn$;\r\n\r\n vm$ = combineLatest([this.hideZoomInOutBtn$]).pipe(\r\n map(([hideZoomInOutBtn]: [boolean]) => ({\r\n hideZoomInOutBtn,\r\n }))\r\n );\r\n\r\n zoomIn(): void {\r\n let center = this.mapLibNgService.map().getZoom();\r\n center++;\r\n this.mapLibNgService.map().setZoom(center);\r\n }\r\n\r\n zoomOut(): void {\r\n let center = this.mapLibNgService.map().getZoom();\r\n center--;\r\n this.mapLibNgService.map().setZoom(center);\r\n }\r\n}\r\n","
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    ","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { IsyZoomInOutComponent } from './isy-zoom-in-out.component';\r\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\r\nimport { IsyTranslateModule } from '@isygis/isy-translate';\r\n\r\n@NgModule({\r\n imports: [CommonModule, FormsModule, FontAwesomeModule, IsyTranslateModule],\r\n declarations: [IsyZoomInOutComponent],\r\n exports: [IsyZoomInOutComponent],\r\n})\r\nexport class IsyZoomInOutModule {}\r\n","export * from './lib/config.model';\r\nexport * from './lib/config.service';\r\nexport * from './lib/config.service.provider';\r\nexport * from './lib/project-config.model';\r\n","import { IConfigJson } from \"./config.model\";\r\nimport { IProjectConfig, ProjectListItem } from \"./project-config.model\";\r\n\r\nexport type cachableTypes = IConfigJson | IProjectConfig | ProjectListItem[];\r\nexport type cacheFn = (url: string) => Promise;\r\n\r\nexport interface ICacheService {\r\n fromCache: cacheFn; \r\n}\r\n\r\nexport class CacheService {\r\n private static cache: Record> = {};\r\n \r\n static async fromCache(url: string) {\r\n const lowerCaseUrl = url.toLowerCase();\r\n await CacheService.updateIfNotInCache(lowerCaseUrl);\r\n return CacheService.cache[lowerCaseUrl] as Promise;\r\n }\r\n\r\n private static async updateIfNotInCache(url: string) {\r\n if (!(url in this.cache)) {\r\n this.cache[url] = fetch(url).then((response) => {\r\n if (!response.ok) {\r\n throw new Error(response.statusText)\r\n }\r\n return response.json() as Promise;\r\n }); \r\n }\r\n }\r\n}\r\n","import { ConfigService } from \"./config.service\";\r\n\r\nexport const configServiceFactory = () => new ConfigService();","import { IConfigJson } from \"./config.model\";\r\nimport { IProjectConfig, ProjectListItem } from \"./project-config.model\";\r\nimport { CacheService, ICacheService } from \"./cache.service\";\r\n\r\nexport class ConfigService {\r\n private cacheService : ICacheService;\r\n private configUrl: string;\r\n static DEFAULT_CONFIG_URL = './config.json';\r\n\r\n constructor(configUrl?: string, cacheService?: ICacheService) {\r\n this.configUrl = configUrl ?? ConfigService.DEFAULT_CONFIG_URL;\r\n this.cacheService = cacheService ?? CacheService;\r\n }\r\n\r\n async isymapConfig(): Promise {\r\n return this.cacheService.fromCache(this.configUrl);\r\n }\r\n \r\n async projectConfig(application: string, name: string): Promise {\r\n const url = await this.projectConfigUrl(application, name);\r\n return this.cacheService.fromCache(url);\r\n }\r\n\r\n async projectConfigUrl(application: string, name: string): Promise {\r\n const projectConfigService = (await this.isymapConfig()).configurl;\r\n return `${projectConfigService}/api/v2/project?application=${application}&name=${name}`;\r\n }\r\n \r\n async listProjects(application: string, token: string | null): Promise {\r\n const projectConfigService = (await this.isymapConfig()).configurl;\r\n const tokenPart = token ? '&isytoken=' + token : '';\r\n const url = `${projectConfigService}/api/v2/listprojects?application=${application}${tokenPart}`;\r\n return this.cacheService.fromCache(url);\r\n }\r\n \r\n async projectTemplate(): Promise {\r\n const projectConfigService = (await this.isymapConfig()).configurl;\r\n const url = `${projectConfigService}/api/v2/project/template`;\r\n return this.cacheService.fromCache(url);\r\n }\r\n\r\n setConfigUrl(value: string):void {\r\n this.configUrl = value;\r\n }\r\n\r\n}\r\n","export interface ProjectListItem {\r\n ProjectName: string;\r\n HeaderIcon: string;\r\n Restricted: boolean;\r\n UpdateExtent: boolean;\r\n}\r\n\r\nexport interface IMapBound {\r\n epsg: string;\r\n extent: string;\r\n}\r\n\r\nexport interface IMapLayer {\r\n display?: string;\r\n groupid: string;\r\n index: string;\r\n name: string;\r\n supergroupid?: string;\r\n}\r\n\r\nexport class MapLayer implements IMapLayer {\r\n groupid: string;\r\n index: string;\r\n name: string;\r\n constructor(groupid: string, index: string, name: string) {\r\n this.groupid = groupid;\r\n this.index = index;\r\n this.name = name;\r\n }\r\n}\r\n\r\nexport interface ISuperMapLayer {\r\n name: string;\r\n supergroupid: string;\r\n index: string;\r\n isOpen?: boolean;\r\n}\r\n\r\nexport class SuperMapLayer implements ISuperMapLayer {\r\n name: string;\r\n supergroupid: string;\r\n index: string;\r\n constructor(supergroupid: string, index: string, name: string) {\r\n this.supergroupid = supergroupid;\r\n this.index = index;\r\n this.name = name;\r\n }\r\n}\r\n\r\nexport interface ICodeList {\r\n id: string;\r\n url: string;\r\n}\r\n\r\nexport interface ISearchParam {\r\n hasurl: string;\r\n name: string;\r\n title: string;\r\n example: string;\r\n}\r\n\r\nexport class SearchParam implements ISearchParam {\r\n hasurl: string;\r\n name: string;\r\n title: string;\r\n example: string;\r\n constructor(name: string, title: string, example: string) {\r\n this.name = name;\r\n this.title = title;\r\n this.hasurl = 'false';\r\n this.example = example;\r\n }\r\n}\r\n\r\nexport interface IFeatureInfoElement {\r\n attachment: string;\r\n datatype?: string;\r\n type?: string;\r\n editable: string;\r\n hascodelist: string;\r\n codevalue: string[];\r\n name: string;\r\n text: string;\r\n isSelected?: boolean;\r\n}\r\n\r\nexport interface IMetadataService {\r\n metadataurl: string;\r\n opennewwindow?: string;\r\n useisytoken?: string;\r\n restricted?: string;\r\n title?: string;\r\n visible?: boolean;\r\n}\r\n\r\nexport class FeatureInfoElement implements IFeatureInfoElement {\r\n attachment: string;\r\n datatype?: any;\r\n type?: string;\r\n editable: string;\r\n hascodelist: string;\r\n codevalue: string[];\r\n name: string;\r\n text: string;\r\n isSelected?: boolean;\r\n constructor(name: string, text: string, datatype?: string) {\r\n this.name = name;\r\n this.text = text ? text : this.name;\r\n\r\n this.attachment = 'false';\r\n this.datatype = datatype ? datatype : 'text';\r\n this.editable = 'false';\r\n this.hascodelist = 'false';\r\n this.codevalue = [];\r\n }\r\n}\r\n\r\nexport interface IFeatureInfoProjectConfig {\r\n attachment?: string;\r\n codelistid?: string;\r\n editable: string;\r\n featureinfoelement: IFeatureInfoElement[];\r\n metadataservices: IMetadataService[];\r\n metadataurl?: string;\r\n opennewwindow: string;\r\n openparentwindow: string;\r\n popupwithdatatitle?: string;\r\n showdialog: string;\r\n showneighborlist: string;\r\n advancedfilter: string;\r\n showpopup: string;\r\n showpopuplibrary: string;\r\n showpopupwithdata: string;\r\n title: string;\r\n tooltiptemplate: string;\r\n width?: string;\r\n layertype?: string;\r\n geometrytype: string;\r\n sendusername: string;\r\n useexternaluri?: string;\r\n loadingstrategy?: string;\r\n}\r\n\r\nexport class FeatureInfoProjectConfig implements IFeatureInfoProjectConfig {\r\n featureinfoelement: IFeatureInfoElement[];\r\n editable: string;\r\n layertype: string;\r\n metadataservices: IMetadataService[];\r\n opennewwindow: string;\r\n openparentwindow: string;\r\n showdialog: string;\r\n showneighborlist: string;\r\n advancedfilter: string;\r\n showpopup: string;\r\n showpopuplibrary: string;\r\n showpopupwithdata: string;\r\n tooltiptemplate: string;\r\n title: string;\r\n geometrytype: string;\r\n sendusername: string;\r\n constructor(featureinfoelement: IFeatureInfoElement[]) {\r\n this.featureinfoelement = featureinfoelement;\r\n this.opennewwindow = 'false';\r\n this.openparentwindow = 'false';\r\n this.showpopup = 'false';\r\n this.showpopuplibrary = 'false';\r\n this.showpopupwithdata = 'false';\r\n this.showneighborlist = 'false';\r\n this.advancedfilter = 'false';\r\n this.showdialog = 'true';\r\n this.editable = 'false';\r\n this.title = '';\r\n this.tooltiptemplate = '';\r\n this.metadataservices = [];\r\n this.layertype = '';\r\n this.geometrytype = '';\r\n this.sendusername = 'true';\r\n }\r\n}\r\n\r\nexport interface IParams {\r\n format: string;\r\n getfeatureinfo: string;\r\n request: string;\r\n service: string;\r\n srsdimension: string | null;\r\n transparent: string;\r\n typename: string;\r\n version?: string;\r\n customparams?: { Key: string; Value: string }[];\r\n}\r\n\r\nexport class Params implements IParams {\r\n format: string;\r\n getfeatureinfo: string;\r\n request: string;\r\n service: string;\r\n srsdimension: string | null;\r\n transparent: string;\r\n typename: string;\r\n constructor(format: string, service: string, typename: string) {\r\n this.format = format;\r\n this.getfeatureinfo = 'false';\r\n this.request = 'GetFeature';\r\n this.service = service;\r\n this.srsdimension = null;\r\n this.transparent = 'false';\r\n this.typename = typename;\r\n }\r\n}\r\n\r\nexport interface IProtocol {\r\n featuretype: string | null;\r\n params: IParams;\r\n type: string;\r\n url: string;\r\n version: string;\r\n}\r\n\r\nexport class Protocol implements IProtocol {\r\n featuretype: string | null;\r\n params: IParams;\r\n type: string;\r\n url: string;\r\n version: string;\r\n constructor(params: IParams, url: string, version: string) {\r\n this.featuretype = null;\r\n this.params = params;\r\n this.type = 'WFS';\r\n this.url = url;\r\n this.version = version;\r\n }\r\n}\r\n\r\nexport interface IVectorOptions {\r\n dataprojection?: string;\r\n isbaselayer: string;\r\n minscale: string | null;\r\n maxscale: string | null;\r\n opacity: string;\r\n protocol: IProtocol;\r\n ratio: string;\r\n singletile: string; // boolean\r\n visibility: string;\r\n}\r\n\r\nexport class VectorOptions implements IVectorOptions {\r\n protocol: IProtocol;\r\n visibility: string;\r\n isbaselayer: string;\r\n minscale: string | null;\r\n maxscale: string | null;\r\n opacity: string;\r\n ratio: string;\r\n singletile: string; // boolean\r\n constructor(protocol: IProtocol) {\r\n this.protocol = protocol;\r\n this.visibility = 'true';\r\n this.isbaselayer = 'false';\r\n this.minscale = null;\r\n this.maxscale = null;\r\n this.opacity = '1';\r\n this.ratio = '1';\r\n this.singletile = 'true';\r\n }\r\n}\r\n\r\nexport interface IVector {\r\n cluster?: string; // boolean\r\n clustercount?: string; // boolean\r\n clusterdistance?: string;\r\n clusterstyleurl?: string;\r\n clusterstyle?: string;\r\n clustertooltip?: string;\r\n clusterwrapx?: string;\r\n display?: string; // boolean\r\n featureinfo: IFeatureInfoProjectConfig;\r\n // gatekeeper?: string; // boolean\r\n groupid?: string;\r\n grouptitle?: string;\r\n jsonstyle?: object;\r\n guid: string;\r\n layerorder?: number;\r\n name?: string;\r\n noproxy?: string;\r\n options: IVectorOptions;\r\n provider?: string;\r\n stylemapsld: string | null; // default null\r\n stylemapurl: string | null; // deprecated default null\r\n stylemapjson: string | null; // deprecated default null\r\n subname: string;\r\n temporaryLayer?: boolean;\r\n}\r\n\r\nexport class Vector implements IVector {\r\n featureinfo: IFeatureInfoProjectConfig;\r\n guid: string;\r\n layerorder?: number;\r\n noproxy?: string;\r\n options: IVectorOptions;\r\n stylemapsld: string | null; // default null\r\n stylemapurl: string | null; // deprecated default null\r\n stylemapjson: string | null; // deprecated default null\r\n jsonstyle?: object;\r\n subname: string;\r\n display?: string; // boolean\r\n cluster?: string; // boolean\r\n clustercount?: string; // boolean\r\n clusterdistance?: string;\r\n clusterstyleurl?: string;\r\n clusterstyle?: string;\r\n clustertooltip?: string;\r\n clusterwrapx?: string;\r\n temporaryLayer?: boolean | false;\r\n constructor(\r\n subname: string,\r\n guid: string,\r\n featureinfo: IFeatureInfoProjectConfig,\r\n options: IVectorOptions\r\n ) {\r\n this.subname = subname;\r\n this.guid = guid;\r\n this.featureinfo = featureinfo;\r\n this.options = options;\r\n this.stylemapsld = null;\r\n this.stylemapurl = null;\r\n this.stylemapjson = null;\r\n }\r\n}\r\n\r\nexport interface IWmsLayer {\r\n name: string;\r\n queryable: string;\r\n title?: string;\r\n legendurl?: string;\r\n featureinfo?: any;\r\n isSelected?: boolean;\r\n}\r\n\r\nexport class WmsLayer implements IWmsLayer {\r\n name: string;\r\n queryable: string;\r\n title: string;\r\n constructor(name: string, title: string, queryable: string) {\r\n this.name = name;\r\n this.title = title;\r\n this.queryable = queryable;\r\n }\r\n}\r\n\r\nexport interface IWmsOptions {\r\n isbaselayer: string;\r\n minscale?: string;\r\n maxscale?: string;\r\n opacity: string;\r\n ratio?: string;\r\n singletile: string;\r\n transitioneffect: string;\r\n visibility: string;\r\n timeoptions?: TimeOptions;\r\n}\r\n\r\nexport class WmsOptions implements IWmsOptions {\r\n isbaselayer: string;\r\n opacity: string;\r\n singletile: string;\r\n transitioneffect: string;\r\n visibility: string;\r\n timeoptions: TimeOptions;\r\n constructor(\r\n isbaselayer: string,\r\n opacity?: string,\r\n singletile?: string,\r\n transitioneffect?: string,\r\n visibility?: string,\r\n timeoptions?: TimeOptions,\r\n ) {\r\n this.isbaselayer = isbaselayer;\r\n this.opacity = opacity ? opacity : '1';\r\n this.singletile = singletile ? singletile : 'true';\r\n this.transitioneffect = transitioneffect ? transitioneffect : 'resize';\r\n this.visibility = visibility ? visibility : 'false';\r\n this.timeoptions = timeoptions ? timeoptions : {starttime: '', endtime: '', increment: ''};\r\n }\r\n}\r\n\r\n// interface IFormat {\r\n// 0: string;\r\n// 1: string;\r\n// 2: string;\r\n// 3: string;\r\n// 4: string;\r\n// 5: string;\r\n// 6: string;\r\n// 7?: string;\r\n// }\r\n\r\ninterface TimeOptions {\r\n starttime?: string;\r\n endtime?: string;\r\n increment?: string; // Assuming increment is a string representation of TimeSpan\r\n sliderSteps?: Date[]; // Assuming sliderSteps is a list of Date objects\r\n}\r\nexport interface IFeatureInfoFormats {\r\n format: any;\r\n}\r\n\r\nexport class FeatureInfoFormats implements IFeatureInfoFormats {\r\n format: any;\r\n constructor(format: any) {\r\n this.format = format;\r\n }\r\n}\r\n\r\nexport interface IParamsWms {\r\n bgcolor: string;\r\n featureinfoformats?: IFeatureInfoFormats;\r\n format: string;\r\n getfeatureinfo: string;\r\n layers: string;\r\n transparent: string;\r\n customparams?: { Key: string; Value: string }[];\r\n}\r\n\r\nexport class ParamsWms implements IParamsWms {\r\n bgcolor: string;\r\n featureinfoformats?: IFeatureInfoFormats;\r\n format: string;\r\n getfeatureinfo: string;\r\n layers: string;\r\n transparent: string;\r\n constructor(layers: string, featureinfoformats?: IFeatureInfoFormats) {\r\n this.layers = layers;\r\n this.bgcolor = '0x000000';\r\n this.format = 'image/png';\r\n this.transparent = 'true';\r\n this.getfeatureinfo = 'false';\r\n this.featureinfoformats = featureinfoformats || undefined;\r\n }\r\n}\r\n\r\nexport interface ILayers {\r\n layer: IWmsLayer[];\r\n}\r\n\r\nexport class Layers implements ILayers {\r\n layer: IWmsLayer[];\r\n constructor(layer: IWmsLayer[]) {\r\n this.layer = layer;\r\n }\r\n}\r\n\r\nexport interface IWms {\r\n layers: ILayers;\r\n display: string;\r\n gatekeeper: string;\r\n groupid?: string;\r\n grouptitle?: string;\r\n guid: string;\r\n hidden: string;\r\n layerindex?: string;\r\n layerorder?: number;\r\n matrixprefix?: string;\r\n matrixset?: string;\r\n numberofzoomlevels?: number;\r\n name: string;\r\n noproxy?: string;\r\n options: IWmsOptions;\r\n params: IParamsWms;\r\n provider?: string;\r\n sourceType?: string;\r\n type?: string;\r\n url: any;\r\n zindex?: string;\r\n legendgraphicurl?: string;\r\n neededResources: string[];\r\n attribution?: string;\r\n}\r\n\r\nexport class CustomTool {\r\n url: string;\r\n title: string;\r\n icon: string;\r\n opennewwindow: boolean;\r\n scale: string | null;\r\n coordinatesystem: string | null;\r\n constructor(\r\n icon: string,\r\n title: string,\r\n url: string,\r\n opennewwindow: boolean\r\n ) {\r\n this.icon = icon;\r\n this.title = title;\r\n this.url = url;\r\n this.opennewwindow = opennewwindow;\r\n this.scale = null;\r\n this.coordinatesystem = null;\r\n }\r\n}\r\n\r\nexport class Wms implements IWms {\r\n layers: ILayers;\r\n display: string;\r\n gatekeeper: string;\r\n groupid?: string;\r\n grouptitle?: string;\r\n guid: string;\r\n hidden: string;\r\n layerindex: string;\r\n layerorder?: number;\r\n matrixprefix?: string;\r\n matrixset?: string;\r\n numberofzoomlevels?: number;\r\n name: string;\r\n noproxy?: string;\r\n options: IWmsOptions;\r\n params: IParamsWms;\r\n sourceType?: string;\r\n type?: string;\r\n url: any;\r\n zindex?: string;\r\n neededResources: string[];\r\n constructor(\r\n layers: ILayers,\r\n display: string,\r\n gatekeeper: string,\r\n guid: string,\r\n layerindex: string,\r\n name: string,\r\n options: IWmsOptions,\r\n params: IParamsWms,\r\n type: string,\r\n url: string,\r\n noproxy?: string,\r\n neededResources?: string[]\r\n ) {\r\n this.layers = layers;\r\n this.display = display;\r\n this.gatekeeper = gatekeeper;\r\n this.guid = guid;\r\n this.hidden = 'false';\r\n this.layerindex = layerindex;\r\n this.name = name;\r\n this.options = options;\r\n this.params = params;\r\n this.type = type;\r\n this.url = url;\r\n this.noproxy = noproxy;\r\n this.neededResources = neededResources || [];\r\n }\r\n}\r\n\r\nexport interface ICodeLists {\r\n codelist: ICodeList[];\r\n}\r\n\r\nexport interface IPointInfo {\r\n name: string;\r\n integrations?: string[];\r\n customintegrations?: IMetadataService[];\r\n}\r\n\r\nexport interface ISearchParamsConfig {\r\n searchparam: ISearchParam[];\r\n}\r\n\r\ninterface IWebservices {\r\n geointegrasjonplanurl: string;\r\n usesinglegiurl: boolean;\r\n geointegrasjonplankarturl: string;\r\n geointegrasjonplanbasisurl: string;\r\n geointegrasjonplanutvideturl: string;\r\n}\r\n\r\nexport interface IProject {\r\n codelists?: ICodeLists;\r\n defaultkommune?: string;\r\n defaultmunicipality?: string;\r\n displayprojectionprefix?: string;\r\n headericon?: string;\r\n headersubtitle?: string;\r\n headertitle?: string;\r\n isy3dflyurl?: string;\r\n isyattachment?: string;\r\n isyauth?: string;\r\n isyexternalapi?: string;\r\n isygatekeeper?: string;\r\n isypicklist?: string;\r\n isyproxy?: string;\r\n isysearch?: string;\r\n isyuseradmin?: string;\r\n isyfeedbackapplicationid?: string;\r\n isyfeedbackurl?: string;\r\n name: string;\r\n neighborlistcsvformat?: string[];\r\n numzoomlevels?: string;\r\n obliqueenabled?: boolean;\r\n obliqueblomurbex?: boolean;\r\n pointinfo?: IPointInfo[];\r\n pointinfoenabled?: string;\r\n sak?: string;\r\n searchparams?: ISearchParamsConfig;\r\n showcoordsportable?: string;\r\n useidporten?: string;\r\n useadfs?: string;\r\n usekeycloak?: string;\r\n isykeycloakrealm?: string;\r\n isykeycloakclientid?: string;\r\n isykeycloakaddress?: string;\r\n webinnsynurl?: string;\r\n helpurl?: string;\r\n webservices?: IWebservices;\r\n epsg: string;\r\n lat: string;\r\n lon: string;\r\n zoom: string;\r\n restricted?: boolean;\r\n roadProfileApiUrl?: string;\r\n roadProfileLayers?: string[];\r\n roadCrossSectionLayers?: string[];\r\n availableTools?: string[];\r\n availableCustomTools?: CustomTool[];\r\n updateExtent?: boolean;\r\n gisdokapiurl?: string;\r\n dokExcludeDekByggPlan?: string | boolean;\r\n useMultiWorld?: boolean;\r\n hoverhighlightmode?: string;\r\n}\r\nexport class Project implements IProject {\r\n name: string;\r\n epsg: string;\r\n lat: string;\r\n lon: string;\r\n zoom: string;\r\n constructor(\r\n name: string,\r\n epsg: string,\r\n lat: string,\r\n lon: string,\r\n zoom: string\r\n ) {\r\n this.name = name;\r\n this.epsg = epsg;\r\n this.lat = lat;\r\n this.lon = lon;\r\n this.zoom = zoom;\r\n }\r\n}\r\n\r\nexport interface IConfig {\r\n mapbound: IMapBound[];\r\n maplayer: IMapLayer[];\r\n supermaplayers: ISuperMapLayer[];\r\n project: IProject;\r\n vector: IVector[];\r\n wms: IWms[];\r\n base: IWms[];\r\n wmts: IWms[];\r\n}\r\n\r\nexport interface IProjectConfig {\r\n config: IConfig;\r\n}\r\n\r\nexport class ToasterOptions {\r\n positionClass: string;\r\n maxShown: number;\r\n newestOnTop: boolean;\r\n animate: string;\r\n\r\n // override-able properties\r\n toastLife: number;\r\n enableHTML: boolean;\r\n dismiss: 'auto' | 'click' | 'controlled';\r\n messageClass: string;\r\n titleClass: string;\r\n showCloseButton: boolean;\r\n\r\n constructor() {\r\n this.positionClass = 'isy-toast-top-right';\r\n this.maxShown = 5;\r\n this.newestOnTop = false;\r\n this.animate = 'fade';\r\n this.toastLife = 5000;\r\n this.enableHTML = false;\r\n this.dismiss = 'auto';\r\n this.messageClass = 'isy-toast-message';\r\n this.titleClass = 'isy-toast-title';\r\n this.showCloseButton = false;\r\n }\r\n}\r\n","export class DomainFeatureInfo {\r\n\r\n constructor(config) {\r\n const defaults = {\r\n // single select via WMS GetFeatureInfo\r\n supportsGetFeatureInfo: true,\r\n getFeatureInfoFormat: 'application/json',\r\n getFeatureInfoCrs: '',\r\n\r\n // multi select via WFS GetFeature\r\n supportsGetFeature: true,\r\n getFeatureBaseUrl: '',\r\n getFeatureFormat: 'application/json',\r\n getFeatureCrs: 'EPSG:4326'\r\n };\r\n const instance = {\r\n ...defaults,\r\n ...config,\r\n };\r\n\r\n return instance;\r\n }\r\n\r\n}\r\n","export class DomainFeatureResponse {\r\n geometryObject: '';\r\n crs: '';\r\n properties: any;\r\n olFeature: '';\r\n}\r\n","import { DomainSubLayer } from './SubLayer';\r\nimport { UtilsGuid } from '../Utils/Guid';\r\n\r\nexport class DomainLayer {\r\n\r\n constructor(config) {\r\n const defaults = {\r\n guid: '',\r\n subLayers: [],\r\n name: '',\r\n categoryId: 0,\r\n visibleOnLoad: true,\r\n isVisible: false, // Holds current state, will be set to true on factory.Init if VisibleOnLoad = true\r\n id: new UtilsGuid().newGuid(),\r\n isBaseLayer: false,\r\n previewActive: false,\r\n opacity: 1,\r\n // time: '',\r\n // timeinterval: 1,\r\n timeoptions: {\r\n starttiem: '',\r\n endtime: '',\r\n increment: ''\r\n },\r\n mapLayerIndex: -1,\r\n minResolution: 0,\r\n maxResolution: Infinity,\r\n legendGraphicUrls: [],\r\n selectedLayerOpen: false,\r\n temporaryLayer: false,\r\n };\r\n const layerInstance = {\r\n ...defaults,\r\n ...config,\r\n };\r\n\r\n const subLayers = [];\r\n for (const sublayer of config.subLayers) {\r\n subLayers.push(new DomainSubLayer(sublayer));\r\n }\r\n\r\n layerInstance.subLayers = subLayers;\r\n return layerInstance;\r\n }\r\n\r\n}\r\n","export class DomainLayerResponse {\r\n id: -1;\r\n isLoading = false;\r\n exception: '';\r\n features: any = [];\r\n name: '';\r\n featureInfoTitle: '';\r\n wms = false;\r\n featureInfoElement: '';\r\n showDialog = false;\r\n openNewWindow = false;\r\n metadataServices: any[] = [];\r\n metadataurl: string;\r\n openParentWindow = false;\r\n windowWidth: any;\r\n editable: any;\r\n showpopupwithdata = false;\r\n showpopuplibrary = false;\r\n showneighborlist = false;\r\n advancedfilter = false;\r\n popupwithdatatitle: any;\r\n featureUrl: '';\r\n version: '';\r\n subLayerName: '';\r\n coordinate_system: '';\r\n layertype: '';\r\n geometryType: 'Point';\r\n sendUserName: 'true';\r\n useexternaluri: '';\r\n cluster = false;\r\n}\r\n","import { KeyPair, KeyPairArray } from './Definitions';\r\n\r\nexport class DomainLegendGraphic {\r\n instance: {\r\n url: string;\r\n customparams: KeyPairArray | undefined;\r\n request: string;\r\n version: string;\r\n format: string;\r\n width: string;\r\n height: string;\r\n layer: string;\r\n sld_version: string;\r\n };\r\n\r\n constructor(config: { url: any; layer: any }) {\r\n const defaults = {\r\n width: '20',\r\n height: '20',\r\n format: 'image/png',\r\n request: 'GetLegendGraphic',\r\n version: '1.0.0',\r\n sld_version: '1.1.0',\r\n layer: '',\r\n url: '',\r\n customparams: undefined,\r\n };\r\n\r\n this.instance = {\r\n ...defaults,\r\n ...config,\r\n };\r\n }\r\n\r\n getLegendGraphicUrl(): string {\r\n if (this.instance.url === '?') {\r\n return '';\r\n }\r\n\r\n const customUrlArray = [\r\n this.instance.url,\r\n `Request=${this.instance.request}`,\r\n `Version=${this.instance.version}`,\r\n `Format=${this.instance.format}`,\r\n `Width=${this.instance.width}`,\r\n `Height=${this.instance.height}`,\r\n `Layer=${this.instance.layer}`,\r\n `SLD_VERSION=${this.instance.sld_version}`,\r\n ];\r\n\r\n if (this.instance.customparams !== undefined) {\r\n const customParameters = this.instance.customparams;\r\n customParameters.forEach((param: KeyPair) => {\r\n const customParameter = `${param.Key}=${param.Value}`;\r\n customUrlArray.push(customParameter);\r\n });\r\n }\r\n\r\n const urlString = customUrlArray.join('&');\r\n\r\n try {\r\n const validUrl = new URL(urlString);\r\n return validUrl.toString();\r\n } catch (error) {\r\n console.error(`\r\n Prøvde Ã¥ lage en url som ikke lot seg lage.\r\n ${error}\r\n `);\r\n }\r\n return '';\r\n }\r\n}\r\n","export class MapPosition {\r\n epsg: string;\r\n zoom: number;\r\n coordinate: any = [];\r\n pixel: any = [];\r\n client: any = [];\r\n\r\n constructor(coordinate, pixel, client, epsg, zoom) {\r\n this.coordinate = coordinate;\r\n this.pixel = pixel;\r\n this.client = client;\r\n this.epsg = epsg;\r\n this.zoom = zoom || 0;\r\n }\r\n}\r\n","import { DomainFeatureInfo } from './FeatureInfo';\r\nimport { DomainLegendGraphic } from './LegendGraphic';\r\nimport { UtilsGuid } from '../Utils/Guid';\r\nimport { GisExtent } from './Definitions';\r\nimport { getHeight, getWidth } from 'ol/extent';\r\n\r\nexport class DomainSubLayer {\r\n\r\n constructor(config) {\r\n const id = new UtilsGuid().newGuid();\r\n const defaults = {\r\n name: '',\r\n providerName: '', // f.eks Fiskeridirektoratet\r\n source: DomainSubLayerSOURCES.wmts,\r\n url: '',\r\n format: DomainSubLayerFORMATS.imagepng,\r\n coordinate_system: '',\r\n dataprojection: '',\r\n srs_dimension: '',\r\n matrixSet: '',\r\n extent: [-1, 1, -1, 1],\r\n extentUnits: 'm',\r\n id: id,\r\n transparent: true,\r\n layers: [],\r\n layerIndex: -1,\r\n legendGraphicUrl: '',\r\n crossOrigin: 'anonymous',\r\n featureInfoTitle: '',\r\n tooltipTemplate: '',\r\n showDialog: true,\r\n openNewWindow: false,\r\n openParentWindow: false,\r\n windowWidth: 500,\r\n featureInfoElement: [],\r\n editable: false,\r\n featureInfo: new DomainFeatureInfo(undefined),\r\n featureNS: '',\r\n geometryName: 'geometry',\r\n geometryType: 'Point',\r\n sendUserName: 'true',\r\n attribution: '' \r\n };\r\n const instance = {\r\n ...defaults,\r\n ...config,\r\n };\r\n\r\n if (instance.legendGraphicUrl.indexOf('?') === -1) {\r\n instance.legendGraphicUrl += '?';\r\n const layers = instance.layers.length > 0\r\n ? instance.layers.map((x) => x.name).join(',')\r\n : instance.name;\r\n const legendGraphic = new DomainLegendGraphic({ url: instance.legendGraphicUrl, layer: layers });\r\n instance.legendGraphicUrl = legendGraphic.getLegendGraphicUrl();\r\n }\r\n\r\n instance.legendGraphicUrlWithBBOX = (bbox: GisExtent): string => {\r\n if (instance.source === \"WMS\" && instance.legendGraphicUrl) {\r\n\r\n const mapExtent = bbox;\r\n const mapHeight = Math.round(getHeight(mapExtent.extent));\r\n const mapWidth = Math.round(getWidth(mapExtent.extent));\r\n const windowWidth = window.innerWidth;\r\n const windowHeight = window.innerHeight;\r\n\r\n const specificParams = {\r\n geoserver: `&WIDTH=${25}&HEIGHT=${25}&srcwidth=${windowWidth}&srcheight=${windowHeight}&srs=${mapExtent.epsg}&crs=${mapExtent.epsg}&BBOX=${mapExtent.extent.join(',')}&legend_options=countMatched:true;hideEmptyRules:true`,\r\n mapserver: `&WIDTH=${windowWidth}&HEIGHT=${windowHeight}&srs=${mapExtent.epsg}&crs=${mapExtent.epsg}&BBOX=${mapExtent.extent.join(',')}`,\r\n qgisserver: `&WIDTH=${25}&HEIGHT=${25}&srcwidth=${mapWidth}&srcheight=${mapHeight}&srs=${mapExtent.epsg}&crs=${mapExtent.epsg}&BBOX=${mapExtent.extent.join(',')}`,\r\n webinnsyn: `&WIDTH=${25}&HEIGHT=${25}&srcwidth=${windowWidth}&srcheight=${windowHeight}&srs=${mapExtent.epsg}&crs=${mapExtent.epsg}&BBOX=${mapExtent.extent.join(',')}`,\r\n };\r\n let urlString = instance.legendGraphicUrl;\r\n\r\n const urlMappings = {\r\n // tslint:disable:object-literal-key-quotes\r\n 'arcgis': urlString,\r\n // GEOSERVER\r\n 'geoserver': specificParams.geoserver,\r\n 'vegvesen.no/kart/ogc': specificParams.geoserver,\r\n // MAPSERVER\r\n 'mapserver': specificParams.mapserver,\r\n 'kart.ra.no': specificParams.mapserver,\r\n 'wms.geonorge.no/skwms1': specificParams.mapserver,\r\n 'openwms.statkart.no/skwms1': specificParams.mapserver,\r\n 'reindrift.nibio.no': specificParams.mapserver,\r\n 'nibio.no': specificParams.mapserver,\r\n 'services.kystverket.no': specificParams.mapserver,\r\n 'wms.artsdatabanken.no': specificParams.mapserver,\r\n // WEBINNSYN\r\n 'webinnsyn': specificParams.webinnsyn,\r\n 'nois.no': specificParams.webinnsyn,\r\n 'datalake/api/wms': specificParams.webinnsyn,\r\n 'valdreskart.no': specificParams.webinnsyn,\r\n 'glokart.no': specificParams.webinnsyn,\r\n 'kart.regiondata.no': specificParams.webinnsyn,\r\n // QGIS\r\n 'qgis': specificParams.qgisserver\r\n // tslint:enable:object-literal-key-quotes\r\n };\r\n\r\n const url = instance.legendGraphicUrl.toLocaleLowerCase();\r\n\r\n const matchingKey = Object.keys(urlMappings).find(key => url.includes(key));\r\n\r\n if (matchingKey) {\r\n urlString = urlString + urlMappings[matchingKey];\r\n }\r\n\r\n try {\r\n const validUrl = new URL(urlString);\r\n return validUrl.toString();\r\n } catch (error) {\r\n console.log(`Unable to create url ${urlString}`);\r\n }\r\n }\r\n return '';\r\n };\r\n\r\n return instance;\r\n }\r\n}\r\n\r\nexport const DomainSubLayerSOURCES = {\r\n wmts: 'WMTS',\r\n wms: 'WMS',\r\n vector: 'VECTOR',\r\n proxyWmts: 'proxyWmts',\r\n proxyWms: 'proxyWms',\r\n tms: 'TMS',\r\n wfs: 'WFS'\r\n\r\n};\r\n\r\nexport const DomainSubLayerFORMATS = {\r\n imagepng: 'image/png',\r\n imagejpeg: 'image/jpeg',\r\n geoJson: 'application/json'\r\n};\r\n","export class EventsEventHandler {\r\n\r\n callBacks = [];\r\n singleCallBacks = [];\r\n pausedEvents = [];\r\n\r\n // ToDo:\r\n // registerEvent - return guid\r\n // unRegisterEvent - input is a guid\r\n\r\n pauseEvent(eventType) {\r\n if (eventType) {\r\n const eventIndex = this.pausedEvents.findIndex(value => value === eventType);\r\n if ( eventIndex < 0) {\r\n this.pausedEvents.push(eventType);\r\n }\r\n }\r\n }\r\n continueEvent(eventType) {\r\n if (eventType) {\r\n const eventIndex = this.pausedEvents.findIndex(value => value === eventType);\r\n if ( eventIndex >= 0) {\r\n this.pausedEvents.splice(eventIndex, 1);\r\n }\r\n }\r\n }\r\n eventIsPaused(eventType) {\r\n return this.pausedEvents.findIndex(value => value === eventType) >= 0;\r\n }\r\n\r\n registerSingleEvent(eventType, guid, callBack) {\r\n this.singleCallBacks.push({\r\n eventType: eventType,\r\n guid: guid,\r\n callBack: callBack\r\n });\r\n }\r\n\r\n registerEvent(eventType, guid, callBack) {\r\n this.unRegisterEvent(eventType, guid);\r\n this.callBacks.push({\r\n eventType: eventType,\r\n guid: guid,\r\n callBack: callBack\r\n });\r\n }\r\n\r\n unRegisterEvent(eventType, guid) {\r\n for (let i = this.callBacks.length - 1; i >= 0; i--) {\r\n if ( this.callBacks[i].eventType === eventType && (this.callBacks[i].guid === guid)) {\r\n this.callBacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n unRegisterAllEvents() {\r\n this.callBacks = [];\r\n this.singleCallBacks = [];\r\n }\r\n\r\n triggerEvent(eventType, args) {\r\n // check for custom events...\r\n\r\n if (this.eventIsPaused(eventType)) {\r\n return;\r\n }\r\n for (const callBack of this.callBacks) {\r\n if (callBack.eventType === eventType) {\r\n if (callBack.callBack && (typeof callBack.callBack === 'function')) {\r\n callBack.callBack(args);\r\n }\r\n }\r\n }\r\n\r\n this.singleCallBacks.forEach((singleCallBack, idx) => {\r\n if (singleCallBack && singleCallBack.eventType === eventType) {\r\n if (singleCallBack.callBack && (typeof singleCallBack.callBack === 'function')) {\r\n singleCallBack.callBack(args);\r\n this.singleCallBacks[idx] = undefined;\r\n }\r\n }\r\n });\r\n\r\n for (let i = this.singleCallBacks.length - 1; i >= 0; --i) {\r\n if (this.singleCallBacks[i]) {\r\n continue;\r\n }\r\n this.singleCallBacks.splice(i, 1);\r\n }\r\n }\r\n}\r\n\r\nexport const EventsEventTypes = {\r\n ChangeCenter: 'ChangeCenter',\r\n ChangeResolution: 'ChangeResolution',\r\n ChangeLayers: 'ChangeLayers',\r\n FeatureInfoStart: 'FeatureInfoStart',\r\n FeatureInfoEnd: 'FeatureInfoEnd',\r\n FeatureHoverStart: 'FeatureHoverStart',\r\n FeatureHoverMove: 'FeatureHoverMove',\r\n FeatureHoverEnd: 'FeatureHoverEnd',\r\n FeaturePopoverStart: 'FeaturePopoverStart',\r\n FeaturePopoverEnd: 'FeaturePopoverEnd',\r\n MapConfigLoaded: 'MapConfigLoaded',\r\n MapLoaded: 'MapLoaded',\r\n MapMoveend: 'MapMoveend',\r\n PointerDrag: 'PointerDrag',\r\n MapProgress: 'MapProgress',\r\n MapProgressEnd: 'MapProgressEnd',\r\n MapVectorProgressEnd: 'MapVectorProgressEnd',\r\n ShowExportPanel: 'ShowExportPanel',\r\n MeasureMouseMove: 'MeasureMouseMove',\r\n LoadingLayerEnd: 'LoadingLayerEnd',\r\n LayerCreated: 'LayerCreated',\r\n LayerSourceReady: 'LayerSourceReady',\r\n CachingStart: 'CachingStart',\r\n CachingEnd: 'CachingEnd',\r\n CachingProgress: 'CachingProgress',\r\n StatusPouchDbChanged: 'StatusPouchDbChanged',\r\n MeasureEnd: 'MeasureEnd',\r\n DrawFeatureMouseMove: 'DrawFeatureMouseMove',\r\n DrawFeatureEnd: 'DrawFeatureEnd',\r\n DrawFeatureStart: 'DrawFeatureStart',\r\n DrawGeoJsonEnd: 'DrawGeoJsonEnd',\r\n GetClickCoordinates: 'GetClickCoordinates',\r\n AddLayerFeatureEnd: 'AddLayerFeatureEnd',\r\n ModifyFeatureEnd: 'ModifyFeatureEnd',\r\n RefreshSourceDone: 'RefreshSourceDone',\r\n ZoomIn: 'ZoomIn',\r\n ZoomOut: 'ZoomOut',\r\n TransactionSuccessful: 'TransactionSuccessful',\r\n TransactionFailed: 'TransactionFailed',\r\n TransactionInsertEnd: 'TransactionInsertEnd',\r\n TransactionUpdateEnd: 'TransactionUpdateEnd',\r\n TransactionRemoveEnd: 'TransactionRemoveEnd',\r\n FeatureHasBeenDescribed: 'FeatureHasBeenDescribed',\r\n FeatureUrlHasBeenDescribed: 'FeatureUrlHasBeenDescribed',\r\n GeolocationUpdated: 'GeolocationUpdated',\r\n PrintBoxSelectReturnValue: 'PrintBoxSelectReturnValue',\r\n FeatureSelected: 'FeatureSelected',\r\n FeatureDeselected: 'FeatureDeselected',\r\n DrawBoxEnd: 'DrawBoxEnd',\r\n DrawFeatureSelect: 'DrawFeatureSelect',\r\n ElevationProfileLine: 'ElevationProfileLine',\r\n FeatureClick: 'FeatureClick',\r\n LoggedIn: 'LoggedIn',\r\n LoggedOut: 'LoggedOut',\r\n MapMoveStart: 'MapMoveStart',\r\n ReInitMap: 'ReInitMap',\r\n GetCapabilitiesFromUrl: 'GetCapabilitiesFromUrl',\r\n FeatureValues: 'FeatureValues',\r\n LinePositionMarkerCoordinates: 'LinePositionMarkerCoordinates',\r\n ExportDone: 'ExportDone',\r\n LoadingGeoJsonFeatures: 'LoadingGeoJsonFeatures',\r\n ExtentFitted: 'ExtentFitted'\r\n};\r\n","export class MapAPICategories {\r\n\r\n categories = [];\r\n\r\n init(mapConfig) {\r\n this.categories = mapConfig.categories;\r\n }\r\n\r\n reInit(mapConfig) {\r\n this.categories = [];\r\n this.init(mapConfig);\r\n }\r\n\r\n getCategories() {\r\n return this.categories;\r\n }\r\n\r\n getCategoryById(catId) {\r\n for (const category of this.categories) {\r\n if (category.catId.toString() === catId.toString()) {\r\n return category;\r\n }\r\n for (const subcat of category.subCategories) {\r\n if (subcat.catId.toString() === catId.toString()) {\r\n return subcat;\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import * as proj4x from 'proj4';\r\nimport { register } from 'ol/proj/proj4';\r\n\r\nexport class MapAPICustomCrsLoader {\r\n\r\n proj4;\r\n projectionAliasPrefix = [\r\n 'urn:ogc:def:crs:EPSG::', // used in deegree\r\n 'http://www.opengis.net/gml/srs/epsg.xml#' // used in geoserver\r\n ];\r\n // From epsg.io (https://epsg.io/{code}.js)\r\n projectionDefinitions = {\r\n 4230: '+proj=longlat +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +no_defs',\r\n 3857: '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs',\r\n // SWEREF99:\r\n 3006: '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3007: '+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3008: '+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3009: '+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3010: '+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3011: '+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3012: '+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3013: '+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3014: '+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3015: '+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3016: '+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3017: '+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 3018: '+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n // UTM 31-36:\r\n 25831: '+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 25832: '+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 25833: '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 25834: '+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 25835: '+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 25836: '+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 32631: '+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs',\r\n 32632: '+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs',\r\n 32633: '+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs',\r\n 32634: '+proj=utm +zone=34 +datum=WGS84 +units=m +no_defs',\r\n 32635: '+proj=utm +zone=35 +datum=WGS84 +units=m +no_defs',\r\n 32636: '+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs',\r\n // North Pole\r\n 3575: '+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs',\r\n // NTM - 2D ( +axis=neu has no effect )\r\n 5105: '+proj=tmerc +lat_0=58 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5106: '+proj=tmerc +lat_0=58 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5107: '+proj=tmerc +lat_0=58 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5108: '+proj=tmerc +lat_0=58 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5109: '+proj=tmerc +lat_0=58 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5110: '+proj=tmerc +lat_0=58 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5111: '+proj=tmerc +lat_0=58 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5112: '+proj=tmerc +lat_0=58 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5113: '+proj=tmerc +lat_0=58 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5114: '+proj=tmerc +lat_0=58 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5115: '+proj=tmerc +lat_0=58 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5116: '+proj=tmerc +lat_0=58 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5117: '+proj=tmerc +lat_0=58 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5118: '+proj=tmerc +lat_0=58 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5119: '+proj=tmerc +lat_0=58 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5120: '+proj=tmerc +lat_0=58 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5121: '+proj=tmerc +lat_0=58 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5122: '+proj=tmerc +lat_0=58 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5123: '+proj=tmerc +lat_0=58 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5124: '+proj=tmerc +lat_0=58 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5125: '+proj=tmerc +lat_0=58 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5126: '+proj=tmerc +lat_0=58 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5127: '+proj=tmerc +lat_0=58 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5128: '+proj=tmerc +lat_0=58 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5129: '+proj=tmerc +lat_0=58 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n 5130: '+proj=tmerc +lat_0=58 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs',\r\n // NTM - 3D ( +axis=neu has no effect )\r\n 5945: '+proj=tmerc +lat_0=58 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5946: '+proj=tmerc +lat_0=58 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5947: '+proj=tmerc +lat_0=58 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5948: '+proj=tmerc +lat_0=58 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5949: '+proj=tmerc +lat_0=58 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5950: '+proj=tmerc +lat_0=58 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5951: '+proj=tmerc +lat_0=58 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5952: '+proj=tmerc +lat_0=58 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5953: '+proj=tmerc +lat_0=58 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5954: '+proj=tmerc +lat_0=58 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5955: '+proj=tmerc +lat_0=58 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5956: '+proj=tmerc +lat_0=58 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5957: '+proj=tmerc +lat_0=58 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5958: '+proj=tmerc +lat_0=58 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5959: '+proj=tmerc +lat_0=58 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5960: '+proj=tmerc +lat_0=58 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5961: '+proj=tmerc +lat_0=58 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5962: '+proj=tmerc +lat_0=58 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5963: '+proj=tmerc +lat_0=58 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5964: '+proj=tmerc +lat_0=58 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5965: '+proj=tmerc +lat_0=58 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5966: '+proj=tmerc +lat_0=58 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5967: '+proj=tmerc +lat_0=58 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5968: '+proj=tmerc +lat_0=58 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5969: '+proj=tmerc +lat_0=58 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5970: '+proj=tmerc +lat_0=58 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n // UTM 31-36 - 3D\r\n 5971: '+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5972: '+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5973: '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5974: '+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5975: '+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs',\r\n 5976: '+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +vunits=m +no_defs'\r\n };\r\n\r\n loadCustomCrs() {\r\n Object.keys(this.projectionDefinitions).forEach(key => {\r\n this._defineProjection(key, this.projectionDefinitions[key]);\r\n this._defineAlias(key);\r\n });\r\n\r\n // define alias for 4326\r\n this._defineAlias(4326);\r\n }\r\n\r\n register() {\r\n const proj4 = this._getProj4();\r\n register(proj4);\r\n }\r\n\r\n get3dEpsg(epsg: string): string {\r\n const proj4 = this._getProj4();\r\n const definition = proj4.defs(epsg);\r\n let returnEpsg;\r\n Object.keys(this.projectionDefinitions).forEach(key => {\r\n if (returnEpsg) {\r\n return;\r\n }\r\n // check system\r\n const def = proj4.defs('EPSG:' + key);\r\n if (def.vunits &&\r\n definition.projName === def.projName &&\r\n definition.zone === def.zone &&\r\n definition.ellps === def.ellps) {\r\n returnEpsg = 'EPSG:' + key;\r\n }\r\n });\r\n return returnEpsg ? returnEpsg : epsg;\r\n }\r\n\r\n private _getProj4 = function() {\r\n return this.proj4 ? this.proj4 : (proj4x as any).default;\r\n };\r\n\r\n private _defineAlias(code) {\r\n const proj4 = this._getProj4();\r\n\r\n this.projectionAliasPrefix.forEach(prefix => {\r\n proj4.defs(prefix + code, proj4.defs('EPSG:' + code));\r\n });\r\n }\r\n\r\n private _defineProjection(code, definition) {\r\n const proj4 = this._getProj4();\r\n\r\n // define projection\r\n proj4.defs('EPSG:' + code, definition);\r\n }\r\n}\r\n","import { DomainLayerResponse } from '../Domain/LayerResponse';\r\nimport { DomainSubLayerSOURCES } from '../Domain/SubLayer';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { WMSCapabilities } from 'ol/format';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\nexport class MapAPIFeatureInfo {\r\n\r\n mapImplementation;\r\n httpHelper;\r\n eventHandler;\r\n featureParser;\r\n\r\n /*\r\n The reference to document in this class is necessary due to offset.\r\n When the marker is placed onto the map for the first time offset does not work unless the image is already present in the DOM.\r\n A possible fix to this is to not use an image and instead use an icon.\r\n\r\n */\r\n\r\n infoMarker;\r\n infoMarkerPath = 'assets/img/pin-md-orange.png'; // This path is possible to change by API call.\r\n useInfoMarker = false;\r\n pixelTolerance = 8;\r\n\r\n constructor(mapImplementation, httpHelper, eventHandler, featureParser) {\r\n this.mapImplementation = mapImplementation;\r\n this.httpHelper = httpHelper;\r\n this.eventHandler = eventHandler;\r\n this.featureParser = featureParser;\r\n }\r\n\r\n /*\r\n Common feature info functions\r\n */\r\n\r\n _trigStartGetInfoRequest(layersToRequest) {\r\n const responseFeatureCollections = this._createResponseFeatureCollections(layersToRequest);\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureInfoStart, responseFeatureCollections);\r\n }\r\n\r\n _createResponseFeatureCollections(layersToRequest) {\r\n const responseFeatureCollections = [];\r\n for (const layerToRequest of layersToRequest) {\r\n const responseFeatureCollection = new DomainLayerResponse();\r\n responseFeatureCollection.id = layerToRequest.id;\r\n responseFeatureCollection.name = layerToRequest.providerName;\r\n responseFeatureCollection.isLoading = true;\r\n responseFeatureCollections.push(responseFeatureCollection);\r\n }\r\n return responseFeatureCollections;\r\n }\r\n\r\n _handleGetInfoRequest(url, subLayer) {\r\n if (!this.httpHelper) {\r\n console.error('Httphelper unavailable!');\r\n return;\r\n }\r\n const callback = (data) => {\r\n this._handleGetInfoResponse(subLayer, data, this);\r\n };\r\n\r\n this.httpHelper.get(url).subscribe((data: any) => {\r\n callback(data);\r\n });\r\n }\r\n\r\n _handleGetInfoResponse(subLayer: any, result: any, self: any) {\r\n let parsedResult: any;\r\n let exception: any;\r\n try {\r\n parsedResult = self.featureParser.parse(result);\r\n } catch (e) {\r\n exception = e;\r\n }\r\n\r\n const responseFeatureCollection: DomainLayerResponse = {\r\n id: subLayer.id,\r\n name: subLayer.providerName,\r\n isLoading: false,\r\n features: parsedResult,\r\n exception: exception,\r\n featureInfoTitle: subLayer.featureInfoTitle,\r\n wms: false,\r\n featureInfoElement: subLayer.featureInfoElement,\r\n showDialog: subLayer.showDialog,\r\n openNewWindow: subLayer.openNewWindow,\r\n metadataServices: subLayer.metadataservices,\r\n metadataurl: subLayer.metadataurl,\r\n openParentWindow: subLayer.openParentWindow,\r\n windowWidth: subLayer.windowWidth,\r\n editable: subLayer.editable,\r\n showpopupwithdata: subLayer.showpopupwithdata,\r\n showpopuplibrary: subLayer.showpopuplibrary,\r\n showneighborlist: subLayer.showneighborlist,\r\n advancedfilter: subLayer.advancedfilter,\r\n popupwithdatatitle: subLayer.popupwithdatatitle,\r\n featureUrl: subLayer.url,\r\n version: subLayer.version,\r\n subLayerName: subLayer.name,\r\n coordinate_system: subLayer.coordinate_system,\r\n layertype: subLayer.layertype,\r\n geometryType: subLayer.geometryType,\r\n sendUserName: subLayer.sendUserName,\r\n useexternaluri: subLayer.useexternaluri,\r\n cluster: result.containClusterFeatures\r\n };\r\n\r\n if (\r\n subLayer.source === DomainSubLayerSOURCES.proxyWms ||\r\n subLayer.source === DomainSubLayerSOURCES.proxyWmts ||\r\n subLayer.source === DomainSubLayerSOURCES.wms ||\r\n subLayer.source === DomainSubLayerSOURCES.wmts\r\n ) {\r\n responseFeatureCollection.wms = true;\r\n }\r\n\r\n self.eventHandler.triggerEvent(EventsEventTypes.FeatureInfoEnd, responseFeatureCollection);\r\n }\r\n\r\n _getSupportedFormatsForService(isySubLayer, service, callback) {\r\n const parseCallback = (data) => {\r\n const jsonCapabilities = this.parseGetCapabilities(data);\r\n callback(jsonCapabilities);\r\n };\r\n\r\n // TODO: This replace is too specific\r\n let wmsUrl = isySubLayer.url.replace('proxy/wms', 'proxy/');\r\n const questionMark = '?';\r\n const urlHasQuestionMark = wmsUrl.indexOf(questionMark) > -1;\r\n if (!urlHasQuestionMark) {\r\n wmsUrl = wmsUrl + encodeURIComponent(questionMark);\r\n }\r\n\r\n let request = 'SERVICE=' + service + '&REQUEST=GETCAPABILITIES';\r\n if (isySubLayer.source === DomainSubLayerSOURCES.proxyWms || isySubLayer.source === DomainSubLayerSOURCES.proxyWmts) {\r\n request = encodeURIComponent(request);\r\n }\r\n const getCapabilitiesUrl = wmsUrl + request;\r\n this.httpHelper.get(getCapabilitiesUrl).subscribe((data: any) => {\r\n parseCallback(data);\r\n });\r\n }\r\n\r\n parseGetCapabilities(getCapabilitiesXml) {\r\n const parser = new WMSCapabilities();\r\n const result = parser.read(getCapabilitiesXml);\r\n return result;\r\n }\r\n\r\n getClickPixelTolerance() {\r\n return this.pixelTolerance;\r\n }\r\n\r\n setClickPixelTolerance(pixelTolerance) {\r\n this.pixelTolerance = pixelTolerance;\r\n }\r\n\r\n /*\r\n Get Feature Info function\r\n */\r\n\r\n handlePointSelect(coordinate, layersSupportingGetFeatureInfo, useExtent, filter) {\r\n if (this.useInfoMarker === true) {\r\n this._showInfoMarker(coordinate);\r\n }\r\n\r\n this._trigStartGetInfoRequest(layersSupportingGetFeatureInfo);\r\n\r\n for (const subLayer of layersSupportingGetFeatureInfo) {\r\n switch (subLayer.source) {\r\n case DomainSubLayerSOURCES.wmts:\r\n case DomainSubLayerSOURCES.wms:\r\n case DomainSubLayerSOURCES.proxyWms:\r\n case DomainSubLayerSOURCES.proxyWmts:\r\n this._sendGetFeatureInfoRequest(subLayer, coordinate);\r\n break;\r\n case DomainSubLayerSOURCES.wfs:\r\n case DomainSubLayerSOURCES.vector:\r\n case 'GeoJSON': {\r\n const extent = useExtent ? this.mapImplementation.getExtent() : this.mapImplementation.getExtentForCoordinate(coordinate, this.pixelTolerance);\r\n const features = this.mapImplementation.getFeaturesInExtent(subLayer, extent);\r\n if (features?.features?.length > 0) {\r\n if (filter) {\r\n for (let j = features.features.length - 1; j >= 0; j--) {\r\n for (const key in filter) {\r\n if ((features.features[j].properties[key] === undefined) ||\r\n (filter[key] !== '' + features.features[j].properties[key])) {\r\n // could not find key, remove item\r\n features.features.splice(j, 1);\r\n }\r\n }\r\n }\r\n }\r\n if (subLayer.useexternaluri && subLayer.useexternaluri !== '') {\r\n const callback = function(index, self) {\r\n if (features.features.length === index + 1) {\r\n self._handleGetInfoResponse(subLayer, features, self);\r\n self.eventHandler.triggerEvent(EventsEventTypes.LoadingGeoJsonFeatures, false);\r\n }\r\n };\r\n this.eventHandler.triggerEvent(EventsEventTypes.LoadingGeoJsonFeatures, true);\r\n setTimeout(() => {\r\n features.features.forEach((feature, index) => {\r\n const header = { 'Authorization': 'Bearer ' + subLayer.bearerToken };\r\n let externalUri = subLayer.useexternaluri;\r\n const propKey = externalUri.substring(externalUri.indexOf('{') + 1, externalUri.lastIndexOf('}'));\r\n const anythingInBraces = /{[^{}]*}/;\r\n externalUri = externalUri.replace(anythingInBraces, '');\r\n firstValueFrom(this.httpHelper.get(externalUri + feature.properties[propKey], {headers: header}))\r\n .then(response => {\r\n features.features[index].properties = response[0];\r\n callback(index, this);\r\n })\r\n .catch(() => {\r\n this.eventHandler.triggerEvent(EventsEventTypes.LoadingGeoJsonFeatures, false);\r\n callback(index, this);\r\n });\r\n });\r\n }, 500);\r\n } else {\r\n this._handleGetInfoResponse(subLayer, features, this);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n _sendGetFeatureInfoRequest(subLayer, coordinate) {\r\n const infoUrl = this.mapImplementation.getFeatureInfoUrl(subLayer, coordinate);\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureInfoEnd, {\r\n layer: subLayer,\r\n url: infoUrl,\r\n coordinate: coordinate\r\n });\r\n }\r\n\r\n getSupportedGetFeatureInfoFormats(isySubLayer, callback) {\r\n const service = 'WMS';\r\n const getFormatCallback = function(jsonCapabilities) {\r\n const formats = jsonCapabilities.Capability.Request.GetFeatureInfo.Format;\r\n callback(formats);\r\n };\r\n this._getSupportedFormatsForService(isySubLayer, service, getFormatCallback);\r\n }\r\n\r\n /*\r\n Get Feature functions\r\n */\r\n\r\n handleBoxSelect(boxExtent, layersSupportingGetFeature) {\r\n this._trigStartGetInfoRequest(layersSupportingGetFeature);\r\n\r\n for (const subLayer of layersSupportingGetFeature) {\r\n switch (subLayer.source) {\r\n case DomainSubLayerSOURCES.wmts:\r\n case DomainSubLayerSOURCES.wms:\r\n case DomainSubLayerSOURCES.proxyWms:\r\n case DomainSubLayerSOURCES.proxyWmts:\r\n this._sendBoxSelectRequest(subLayer, boxExtent);\r\n break;\r\n case DomainSubLayerSOURCES.wfs:\r\n case DomainSubLayerSOURCES.vector: {\r\n const features = this.mapImplementation.getFeaturesInExtent(subLayer, boxExtent);\r\n this._handleGetInfoResponse(subLayer, features, this);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n _sendBoxSelectRequest(isySubLayer, boxExtent) {\r\n const proxyHost = this.mapImplementation.getProxyHost();\r\n const infoUrl = proxyHost + this._getFeatureUrl(isySubLayer, boxExtent);\r\n this._handleGetInfoRequest(infoUrl, isySubLayer);\r\n }\r\n\r\n _getFeatureUrl(isySubLayer, boxExtent) {\r\n const crs = isySubLayer.featureInfo.getFeatureCrs;\r\n const layers = isySubLayer.layers.length > 0\r\n ? isySubLayer.layers.map((x) => x.name).join(',')\r\n : isySubLayer.name;\r\n let url = 'service=WMS&version=1.3.0&request=GetFeatureInfo&TRANSPARENT=' + isySubLayer.transparent +\r\n '&QUERY_LAYERS=' + layers +\r\n '&INFO_FORMAT=' + isySubLayer.featureInfo.getFeatureInfoFormat +\r\n '&SRS=' + crs +\r\n '&bbox=' + boxExtent +\r\n '&width=' + 400 +\r\n '&height=' + 400 +\r\n '&x=' + 150 +\r\n '&y=' + 150;\r\n url = encodeURIComponent(url);\r\n // TODO: This replace is too specific\r\n return isySubLayer.url[0].replace('proxy/wms', 'proxy/') + url;\r\n }\r\n\r\n getSupportedGetFeatureFormats(isySubLayer, callback) {\r\n // TODO: Handle namespace behaviour, when colon is present the parser fails....Meanwhile, do not use\r\n const service = 'WFS';\r\n const getFormatCallback = function(jsonCapabilities) {\r\n const formats = jsonCapabilities.Capability.Request.GetFeature.Format;\r\n callback(formats);\r\n };\r\n this._getSupportedFormatsForService(isySubLayer, service, getFormatCallback);\r\n }\r\n\r\n /*\r\n Marker functions for Get Feature info click\r\n */\r\n\r\n createDefaultInfoMarker() {\r\n this.infoMarker = document.createElement('img');\r\n this.infoMarker.src = this.infoMarkerPath;\r\n this._hideInfoMarker();\r\n this._addInfoMarker();\r\n }\r\n\r\n _showInfoMarker(coordinate) {\r\n if (this.infoMarker === undefined) {\r\n this.createDefaultInfoMarker();\r\n }\r\n this.setInfoMarker(this.infoMarker, true);\r\n this.infoMarker.style.visibility = 'visible';\r\n this.mapImplementation.showInfoMarker(coordinate, this.infoMarker);\r\n }\r\n\r\n setInfoMarker(element, removeCurrent) {\r\n if (this.useInfoMarker === true) {\r\n if (removeCurrent === true) {\r\n if (this.infoMarker === undefined) {\r\n this.createDefaultInfoMarker();\r\n }\r\n this.mapImplementation.removeInfoMarker(this.infoMarker);\r\n this._hideInfoMarker();\r\n this.useInfoMarker = false;\r\n }\r\n this.infoMarker = element;\r\n }\r\n }\r\n _addInfoMarker() {\r\n document.body.appendChild(this.infoMarker);\r\n }\r\n\r\n removeInfoMarker() {\r\n this.useInfoMarker = true;\r\n this.setInfoMarker(this.infoMarker, true);\r\n }\r\n\r\n _hideInfoMarker() {\r\n this.infoMarker.style.visibility = 'hidden';\r\n }\r\n\r\n setInfoMarkerPath(path) {\r\n this.infoMarkerPath = path;\r\n }\r\n\r\n showInfoMarker(coordinate) {\r\n this._showInfoMarker(coordinate);\r\n }\r\n\r\n}\r\n","export class MapAPIGroups {\r\n groups = [];\r\n\r\n init(mapConfig) {\r\n this.groups = mapConfig.groups;\r\n }\r\n\r\n reInit(mapConfig) {\r\n this.groups = [];\r\n this.init(mapConfig);\r\n }\r\n\r\n getGroups() {\r\n return this.groups;\r\n }\r\n\r\n getGroupById(groupId) {\r\n for (const group of this.groups) {\r\n if (group.groupId.toString() === groupId.toString()) {\r\n return group;\r\n }\r\n for (const subcat of group.subCategories) {\r\n if (subcat.groupId.toString() === groupId.toString()) {\r\n return subcat;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","export class MapAPILayers {\r\n mapImplementation;\r\n config;\r\n layers;\r\n layersArranged;\r\n\r\n constructor(mapImplementation) {\r\n this.mapImplementation = mapImplementation;\r\n }\r\n\r\n init(mapConfig): Promise {\r\n this.config = mapConfig;\r\n this.layers = mapConfig.layers;\r\n\r\n this._setUpLayerIndex();\r\n\r\n let isBaseLayerVisible = false;\r\n for (const baseLayer of this.getBaseLayers()) {\r\n if (baseLayer.visibleOnLoad) {\r\n this.setBaseLayer(baseLayer);\r\n } else if (isBaseLayerVisible === false) {\r\n baseLayer.visibleOnLoad = true;\r\n this.setBaseLayer(baseLayer);\r\n isBaseLayerVisible = true;\r\n }\r\n }\r\n\r\n const ps = this.getOverlayLayers().map(overlayLayer =>\r\n overlayLayer.visibleOnLoad\r\n ? this.showLayer(overlayLayer)\r\n : Promise.resolve(this.hideLayer(overlayLayer))\r\n );\r\n\r\n return Promise.all(ps);\r\n }\r\n\r\n reInit(mapConfig): Promise {\r\n this.config = undefined;\r\n this.layers = undefined;\r\n this.layersArranged = undefined;\r\n return this.init(mapConfig);\r\n }\r\n\r\n arrangeLayers() {\r\n if (this.layersArranged) {\r\n return;\r\n }\r\n this.layersArranged = true;\r\n const rearrangeLayers = [];\r\n for (const overlayLayer of this.getOverlayLayers()) {\r\n if (overlayLayer.isVisible) {\r\n rearrangeLayers.push(overlayLayer);\r\n }\r\n }\r\n rearrangeLayers.sort(this._compare);\r\n rearrangeLayers.forEach(function(layer) {\r\n // This is a promise - do we need to wait for it? Einar 13.01.23\r\n this.showLayer(layer);\r\n });\r\n }\r\n\r\n getBaseLayers() {\r\n return this._getLayers().filter(function (elem) {\r\n return elem.isBaseLayer === true;\r\n });\r\n }\r\n\r\n getOverlayLayers() {\r\n return this._getLayers().filter(function (elem) {\r\n return elem.isBaseLayer === false;\r\n });\r\n }\r\n\r\n setBaseLayer(isyLayer): Promise {\r\n if (isyLayer) {\r\n for (const baseLayer of this.getVisibleBaseLayers()) {\r\n this.hideLayer(baseLayer);\r\n }\r\n }\r\n return this._showBaseLayer(isyLayer);\r\n }\r\n\r\n setBaseLayerByGuid(guid) {\r\n const baseLayers = this.getBaseLayers();\r\n const baseLayer = baseLayers.find(b => b.guid === guid);\r\n if (baseLayer) {\r\n this.setBaseLayer(baseLayer);\r\n }\r\n }\r\n\r\n showLayerByGuid(guid): Promise {\r\n const overlayLayers = this.getOverlayLayers();\r\n const overlayLayer = overlayLayers.find(o => o.guid === guid);\r\n return overlayLayer \r\n ? this.showLayer(overlayLayer)\r\n : Promise.resolve(undefined);\r\n }\r\n\r\n showLayerByName(name): Promise {\r\n const overlayLayers = this.getOverlayLayers();\r\n const overlayLayer = overlayLayers.find(o => o.name === name);\r\n return overlayLayer \r\n ? this.showLayer(overlayLayer)\r\n : Promise.resolve(undefined);\r\n }\r\n\r\n hideLayerByGuid(guid) {\r\n const overlayLayers = this.getOverlayLayers();\r\n const overlayLayer = overlayLayers.find(o => o.guid === guid);\r\n if (overlayLayer) {\r\n this.hideLayer(overlayLayer);\r\n }\r\n }\r\n\r\n hideLayerByName(name: string) {\r\n const overlayLayers = this.getOverlayLayers();\r\n const overlayLayer = overlayLayers.find(o => o.name === name);\r\n if (overlayLayer) {\r\n this.hideLayer(overlayLayer);\r\n }\r\n }\r\n\r\n updateSortingIndex() {\r\n let index = 1;\r\n for (const group of this.config.groups) {\r\n if (group.isyLayers) {\r\n for (const isyLayer of group.isyLayers) {\r\n for (const sublyr of isyLayer.subLayers) {\r\n if (sublyr.layerorder !== null) {\r\n sublyr.sortingIndex = sublyr.layerorder;\r\n } else {\r\n sublyr.sortingIndex = index;\r\n }\r\n index += 1;\r\n }\r\n }\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n addLayer(isyLayer) {\r\n this.showLayer(isyLayer)\r\n .then(() => this.layers.push(isyLayer));\r\n }\r\n\r\n showLayer(isyLayer): Promise {\r\n const ps = isyLayer.subLayers.map(isySubLayer =>\r\n this.mapImplementation.showLayer(isySubLayer)\r\n );\r\n return Promise.all(ps).then(() => {\r\n isyLayer.isVisible = true;\r\n this.updateSortingIndex();\r\n this.mapImplementation.updateLayerSortIndex(this.config.groups);\r\n this.mapImplementation.sortLayerBySortIndex();\r\n this.mapImplementation.resizeMap();\r\n });\r\n }\r\n\r\n hideLayer(isyLayer) {\r\n const subLayers = isyLayer.subLayers;\r\n isyLayer.isVisible = false;\r\n for (const isySubLayer of subLayers) {\r\n this.mapImplementation.hideLayer(isySubLayer);\r\n }\r\n\r\n isyLayer.mapLayerIndex = -1;\r\n }\r\n\r\n getVisibleSubLayers() {\r\n const subLayersOnly = [];\r\n for (const isyLayer of this._getVisibleOverlayLayers()) {\r\n for (const subLayer of isyLayer.subLayers) {\r\n subLayersOnly.push(subLayer);\r\n }\r\n }\r\n return subLayersOnly;\r\n }\r\n\r\n getVisibleBaseLayers() {\r\n return this.getBaseLayers().filter(function (elem) {\r\n return elem.isVisible === true;\r\n });\r\n }\r\n\r\n getLayerById(id) {\r\n if (this.layers) {\r\n for (const layer of this.layers) {\r\n if (layer.id.toString() === id.toString()) {\r\n return layer;\r\n }\r\n }\r\n }\r\n }\r\n\r\n getLayerByGuid(guid) {\r\n if (this.layers) {\r\n for (const layer of this.layers.length) {\r\n if (layer.guid.toString() === guid.toString()) {\r\n return layer;\r\n }\r\n }\r\n }\r\n }\r\n\r\n moveLayerToIndexInGroup() {\r\n this.updateSortingIndex();\r\n this.mapImplementation.updateLayerSortIndex(this.config.groups);\r\n this.mapImplementation.sortLayerBySortIndex();\r\n this.mapImplementation.resizeMap();\r\n }\r\n\r\n moveLayerToIndex(isyLayer, index) {\r\n for (const subLayer of isyLayer.subLayers) {\r\n this.mapImplementation.moveLayerToIndex(subLayer, index);\r\n }\r\n this.mapImplementation.resizeMap();\r\n }\r\n\r\n moveLayerAbove(isySourceLayer, isyTargetLayer) {\r\n const targetLayerIndex = this._getMaxLayerIndexForLayer(isyTargetLayer);\r\n for (const subLayer of isySourceLayer.subLayers) {\r\n this.mapImplementation.moveLayerToIndex(subLayer, targetLayerIndex);\r\n }\r\n }\r\n\r\n _showBaseLayer(isyLayer): Promise {\r\n const baseLayerPromises: Promise[] = isyLayer?.subLayers.map(isySubLayer =>\r\n this.mapImplementation.showBaseLayer(isySubLayer)\r\n );\r\n return Promise.all(baseLayerPromises).then(() => {\r\n isyLayer.isVisible = true;\r\n this._recalculateMapLayerIndexes();\r\n });\r\n }\r\n\r\n removeLayer(isyLayer) {\r\n this.config.layers = this.config.layers.filter(function (elem) {\r\n return elem.guid !== isyLayer.guid;\r\n });\r\n this.mapImplementation.removeLayer(isyLayer);\r\n this.updateSortingIndex();\r\n this.mapImplementation.updateLayerSortIndex(this.config.groups);\r\n this.mapImplementation.sortLayerBySortIndex();\r\n this.mapImplementation.resizeMap();\r\n }\r\n\r\n private _recalculateMapLayerIndexes() {\r\n for (const layer of this._getVisibleOverlayLayers()) {\r\n layer.mapLayerIndex = this._getMaxLayerIndexForLayer(layer);\r\n }\r\n }\r\n\r\n private _getVisibleOverlayLayers() {\r\n return this.getOverlayLayers().filter(function (elem) {\r\n return elem.isVisible === true;\r\n });\r\n }\r\n\r\n\r\n\r\n private _getMaxLayerIndexForLayer(isyLayer) {\r\n const indexes = [-1];\r\n for (const subLayer of isyLayer.subLayers) {\r\n const thisIndex = this.mapImplementation.getLayerIndex(subLayer);\r\n if (thisIndex != null) {\r\n indexes.push(thisIndex);\r\n }\r\n }\r\n return Math.max(...indexes);\r\n }\r\n\r\n private _setUpLayerIndex() {\r\n let layerIndex = 0;\r\n\r\n for (const baseLayer of this.getBaseLayers()) {\r\n for (const sublyr of baseLayer.subLayers) {\r\n sublyr.layerIndex = layerIndex;\r\n layerIndex++;\r\n }\r\n }\r\n\r\n for (const overlayLayer of this.getOverlayLayers()) {\r\n for (const sublyr of overlayLayer.subLayers) {\r\n sublyr.layerIndex = layerIndex;\r\n layerIndex++;\r\n }\r\n }\r\n }\r\n\r\n private _getLayers() {\r\n if (this.config) {\r\n return this.config.layers;\r\n }\r\n return [];\r\n }\r\n\r\n private _compare(a, b) {\r\n if (a.id < b.id) {\r\n return -1;\r\n }\r\n if (a.id > b.id) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n}\r\n","import { EventsEventTypes } from '../Events/EventHandler';\r\nimport { MapAPICustomCrsLoader } from './CustomCrsLoader';\r\nimport { GisCoordinate, GisExtent } from '../Domain/Definitions';\r\nimport { IGeolocation } from '../MapImplementation/Interfaces/Geolocation';\r\n\r\nexport class MapAPIMap {\r\n\r\n mapImplementation;\r\n mapImplementationMarker;\r\n eventHandler;\r\n featureInfo;\r\n layerHandler;\r\n groupHandler;\r\n categoryHandler;\r\n\r\n mapConfiguration;\r\n\r\n constructor(mapImplementation, eventHandler, featureInfo, layerHandler, groupHandler, categoryHandler) {\r\n this.mapImplementation = mapImplementation;\r\n this.eventHandler = eventHandler;\r\n this.featureInfo = featureInfo;\r\n this.layerHandler = layerHandler;\r\n this.groupHandler = groupHandler;\r\n this.categoryHandler = categoryHandler;\r\n }\r\n\r\n\r\n /*\r\n Start up functions Start\r\n */\r\n\r\n init(targetId, mapConfig): Promise {\r\n this._loadCustomCrs();\r\n\r\n this.mapConfiguration = mapConfig;\r\n this.mapImplementation.initMap(targetId, mapConfig);\r\n const ps = this.layerHandler.init(mapConfig);\r\n return ps.then(() => {\r\n this.groupHandler.init(mapConfig);\r\n this.categoryHandler.init(mapConfig);\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapLoaded);\r\n this.eventHandler.registerSingleEvent(EventsEventTypes.MapMoveend, 'MapAPIMap.MapMoveend', () => {\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapLoaded);\r\n });\r\n });\r\n }\r\n\r\n reInit(mapConfig): Promise {\r\n this._loadCustomCrs();\r\n this.mapConfiguration = mapConfig;\r\n this.mapImplementation.reInitMap(mapConfig);\r\n const ps = this.layerHandler.reInit(mapConfig);\r\n return ps.then(() => {\r\n this.groupHandler.reInit(mapConfig);\r\n this.categoryHandler.reInit(mapConfig);\r\n this.eventHandler.triggerEvent(EventsEventTypes.ReInitMap);\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapLoaded);\r\n });\r\n }\r\n\r\n _loadCustomCrs() {\r\n const customCrsLoader = new MapAPICustomCrsLoader();\r\n\r\n customCrsLoader.loadCustomCrs();\r\n customCrsLoader.register();\r\n }\r\n\r\n addCustomProj(code: string, definition?: string) {\r\n this.mapImplementation.addCustomProj(code, definition);\r\n }\r\n\r\n changeView(viewPropertyObject) {\r\n this.mapImplementation.changeView(viewPropertyObject);\r\n }\r\n\r\n resizeMap() {\r\n this.mapImplementation.resizeMap();\r\n }\r\n\r\n refreshMap(): Promise {\r\n return this.mapImplementation.refreshMap();\r\n }\r\n\r\n refreshLayerByGuid(guid, featureObj=undefined): Promise {\r\n return this.mapImplementation.refreshLayerByGuid(guid, featureObj);\r\n }\r\n\r\n /*\r\n Start up functions End\r\n */\r\n\r\n /*\r\n Layer functions Start\r\n */\r\n\r\n addLayer(isyLayer) {\r\n this.layerHandler.addLayer(isyLayer);\r\n }\r\n\r\n addLayerToOlMap(layer) {\r\n this.mapImplementation.addLayerToOlMap(layer);\r\n }\r\n\r\n removeLayerFromOlMap(layer) {\r\n this.mapImplementation.removeLayerFromOlMap(layer);\r\n }\r\n\r\n addDataToLayer(isyLayer, data) {\r\n this.mapImplementation.addDataToLayer(isyLayer.subLayers[0], data);\r\n }\r\n\r\n removeDataFromLayer(isyLayer, data) {\r\n this.mapImplementation.removeDataFromLayer(isyLayer.subLayers[0], data);\r\n }\r\n\r\n clearLayer(isyLayer) {\r\n this.mapImplementation.clearLayer(isyLayer.subLayers[0]);\r\n }\r\n\r\n showLayer(isyLayer): Promise {\r\n return this.layerHandler.showLayer(isyLayer);\r\n }\r\n\r\n showLayerByGuid(guid: string): Promise {\r\n return this.layerHandler.showLayerByGuid(guid);\r\n }\r\n\r\n showLayerByName(name: string): Promise {\r\n return this.layerHandler.showLayerByName(name);\r\n }\r\n\r\n hideLayer(isyLayer) {\r\n this.layerHandler.hideLayer(isyLayer);\r\n }\r\n\r\n hideLayerByGuid(guid: string) {\r\n this.layerHandler.hideLayerByGuid(guid);\r\n }\r\n\r\n hideLayerByName(name: string) {\r\n this.layerHandler.hideLayerByName(name);\r\n }\r\n\r\n reloadLayer(isyLayer) {\r\n this.mapImplementation.reloadLayer(isyLayer);\r\n }\r\n\r\n removeLayer(isyLayer) {\r\n this.layerHandler.removeLayer(isyLayer);\r\n }\r\n\r\n setLayerTime(isyLayer, value) {\r\n const subLayers = isyLayer.subLayers;\r\n for (const isySubLayer of subLayers) {\r\n this.mapImplementation.setLayerTime(isySubLayer, value);\r\n }\r\n this.mapImplementation.resizeMap();\r\n }\r\n\r\n setLayerOpacity(isyLayer, value) {\r\n const subLayers = isyLayer.subLayers;\r\n for (const isySubLayer of subLayers) {\r\n this.mapImplementation.setLayerOpacity(isySubLayer, value);\r\n }\r\n this.mapImplementation.resizeMap();\r\n }\r\n\r\n getFeatureById(isySubLayer, featureId) {\r\n return this.mapImplementation.getFeatureById(isySubLayer, featureId);\r\n }\r\n\r\n getOlFeatureById(featureId) {\r\n return this.mapImplementation.getOlFeatureById(featureId);\r\n }\r\n\r\n getExtentForLayerById(layerId) {\r\n return this.mapImplementation.getExtentForLayerById(layerId);\r\n }\r\n\r\n getFeatureByUnikId(isySubLayer, unikId) {\r\n return this.mapImplementation.getFeatureByUnikId(isySubLayer, unikId);\r\n }\r\n\r\n getLayerLegendUrl(isySubLayer, layerName = undefined): string {\r\n return this.mapImplementation.getLayerLegendUrl(isySubLayer, layerName);\r\n }\r\n\r\n setBaseLayer(isyLayer) {\r\n this.layerHandler.setBaseLayer(isyLayer);\r\n }\r\n\r\n setBaseLayerByGuid(guid: string) {\r\n this.layerHandler.setBaseLayerByGuid(guid);\r\n }\r\n\r\n getBaseLayers() {\r\n return this.layerHandler.getBaseLayers();\r\n }\r\n\r\n getFirstVisibleBaseLayer() {\r\n return this.layerHandler.getVisibleBaseLayers()[0];\r\n }\r\n\r\n getOverlayLayers() {\r\n return this.layerHandler.getOverlayLayers();\r\n }\r\n\r\n getVisibleSubLayers() {\r\n return this.layerHandler.getVisibleSubLayers();\r\n }\r\n\r\n getLayerById(id) {\r\n return this.layerHandler.getLayerById(id);\r\n }\r\n\r\n moveLayerToIndex(isyLayer, index) {\r\n this.layerHandler.moveLayerToIndex(isyLayer, index);\r\n }\r\n\r\n moveLayerToIndexInGroup() {\r\n this.layerHandler.moveLayerToIndexInGroup();\r\n }\r\n\r\n moveLayerAbove(isySourceLayer, isyTargetLayer) {\r\n this.layerHandler.moveLayerAbove(isySourceLayer, isyTargetLayer);\r\n }\r\n\r\n _shouldBeVisible(subLayer) {\r\n return this.layerHandler.shouldBeVisible(subLayer);\r\n }\r\n\r\n /*\r\n Layer functions End\r\n */\r\n\r\n /*\r\n Categories functions Start\r\n */\r\n\r\n getCategoryById(id) {\r\n return this.categoryHandler.getCategoryById(id);\r\n }\r\n\r\n getCategories() {\r\n return this.categoryHandler.getCategories();\r\n }\r\n\r\n /*\r\n Categories functions End\r\n */\r\n\r\n /*\r\n Groups functions Start\r\n */\r\n\r\n getGroupById(id) {\r\n return this.groupHandler.getGroupById(id);\r\n }\r\n\r\n getGroups() {\r\n return this.groupHandler.getGroups();\r\n }\r\n\r\n /*\r\n Groups functions End\r\n */\r\n\r\n /*\r\n Export functions Start\r\n */\r\n\r\n activateExportPdf(options) {\r\n this.mapImplementation.activateExportPdf(options);\r\n }\r\n\r\n activateExportImg(callback, options) {\r\n this.mapImplementation.activateExportImg(callback, options);\r\n }\r\n\r\n deactivateExport() {\r\n this.mapImplementation.deactivateExport();\r\n }\r\n\r\n renderSync() {\r\n return this.mapImplementation.renderSync();\r\n }\r\n\r\n /*\r\n Export functions End\r\n */\r\n\r\n /*\r\n Feature Info Start\r\n */\r\n\r\n setImageInfoMarker(path) {\r\n this.featureInfo.setInfoMarkerPath(path);\r\n this.featureInfo.createDefaultInfoMarker();\r\n }\r\n\r\n setInfoMarker(element, removeCurrent) {\r\n this.featureInfo.setInfoMarker(element, removeCurrent);\r\n }\r\n\r\n removeInfoMarker() {\r\n this.featureInfo.removeInfoMarker();\r\n }\r\n\r\n highlightFeature(olFeature, jsonStyle?, clearHighlighted?) {\r\n this.mapImplementation.highlightFeature(olFeature, jsonStyle, clearHighlighted);\r\n }\r\n\r\n highlightFeatures(olFeatures, jsonStyle?, clearHighlighted?) {\r\n this.mapImplementation.highlightFeatures(olFeatures, jsonStyle, clearHighlighted);\r\n }\r\n\r\n showHighlightedFeatures(layerguid, features) {\r\n this.mapImplementation.showHighlightedFeatures(layerguid, features);\r\n }\r\n\r\n clearHighlightedFeatures() {\r\n this.mapImplementation.clearHighlightedFeatures();\r\n }\r\n\r\n setHighlightStyle(style) {\r\n this.mapImplementation.setHighlightStyle(style);\r\n }\r\n\r\n activateInfoClick() {\r\n this.mapImplementation.activateInfoClick(this, this._handlePointSelect);\r\n }\r\n\r\n showInfoMarker(coordinate) {\r\n const toCrs = this.mapImplementation.getEpsgCode();\r\n\r\n if (coordinate.length > 2) {\r\n const coord = {\r\n 'lon': coordinate[0],\r\n 'lat': coordinate[1],\r\n 'epsg': coordinate[2]\r\n };\r\n\r\n this.mapImplementation.transformEpsgCoordinate(coord, toCrs);\r\n coordinate[0] = coord.lon;\r\n coordinate[1] = coord.lat;\r\n }\r\n\r\n this.featureInfo.showInfoMarker(coordinate);\r\n }\r\n\r\n deactivateInfoClick() {\r\n this.mapImplementation.deactivateInfoClick();\r\n }\r\n\r\n activateGetClickCoordinates() {\r\n this.mapImplementation.activateGetClickCoordinates();\r\n }\r\n\r\n deactivateGetClickCoordinates() {\r\n this.mapImplementation.deactivateGetClickCoordinates();\r\n }\r\n\r\n activateBoxSelect() {\r\n this.mapImplementation.activateBoxSelect(this, this._handleBoxSelect);\r\n }\r\n\r\n deactivateBoxSelect() {\r\n this.mapImplementation.deactivateBoxSelect();\r\n }\r\n\r\n initEdit(isySubLayer): Promise {\r\n return this.mapImplementation.initEdit(isySubLayer);\r\n }\r\n\r\n describeFeature(isySubLayer, geometryType): Promise {\r\n return this.mapImplementation.describeFeature(isySubLayer, geometryType);\r\n }\r\n\r\n describeFeatureUrl(url: string, params: any): Promise {\r\n return this.mapImplementation.describeFeatureUrl(url, params);\r\n }\r\n\r\n getCapabilitiesFromUrlAsync(url: string, params: any, callback: any): Promise {\r\n return this.mapImplementation.getCapabilitiesFromUrlAsync(url, params, callback);\r\n }\r\n\r\n activateEditClick() {\r\n this.mapImplementation.activateEditSelect(this._handleEditSelect);\r\n }\r\n\r\n deactivateEditClick() {\r\n this.mapImplementation.deactivateEditSelect();\r\n }\r\n\r\n updateFeature(feature) {\r\n this.mapImplementation.updateFeature(feature);\r\n }\r\n\r\n insertFeature(layerid, featureName, geometryName, feature, source): Promise {\r\n return this.mapImplementation.insertFeature(layerid, featureName, geometryName, feature, source);\r\n }\r\n\r\n deleteFeature(feature) {\r\n return this.mapImplementation.deleteFeature(feature);\r\n }\r\n\r\n getSupportedGetFeatureInfoFormats(isySubLayer, callback) {\r\n this.featureInfo.getSupportedGetFeatureInfoFormats(isySubLayer, callback);\r\n }\r\n\r\n getSupportedGetFeatureFormats(isySubLayer, callback) {\r\n this.featureInfo.getSupportedGetFeatureFormats(isySubLayer, callback);\r\n }\r\n\r\n arrangeLayers() {\r\n if (this.getConfigLayerCount() === this.getLayerCount()) {\r\n setTimeout(() => {\r\n this.layerHandler.arrangeLayers();\r\n }, 0);\r\n }\r\n }\r\n\r\n convertGmlToGeoJson(gml) {\r\n return this.mapImplementation.convertGmlToGeoJson(gml);\r\n }\r\n\r\n _handlePointSelect(coordinate, useExtent, filter, mapApi) {\r\n mapApi.featureInfo.handlePointSelect(coordinate, mapApi._getLayersSupportingGetFeatureInfo(), useExtent, filter);\r\n }\r\n\r\n _getLayersSupportingGetFeatureInfo() {\r\n const visibleSubLayers = this.getVisibleSubLayers();\r\n return visibleSubLayers.filter((subLayer) => {\r\n if (subLayer.featureInfo) {\r\n return subLayer.featureInfo.supportsGetFeatureInfo === true;\r\n } else {\r\n return false;\r\n }\r\n });\r\n }\r\n\r\n _handleBoxSelect(boxExtent, mapApi) {\r\n mapApi.featureInfo.handleBoxSelect(boxExtent, mapApi._getLayersSupportingGetFeatureInfo());\r\n }\r\n\r\n _getLayersSupportingGetFeature() {\r\n const visibleSubLayers = this.getVisibleSubLayers();\r\n return visibleSubLayers.filter((subLayer) => {\r\n return subLayer.featureInfo.supportsGetFeature === true;\r\n });\r\n }\r\n\r\n _handleEditSelect(coordinate) {\r\n this.mapImplementation.handlePointSelect(coordinate);\r\n }\r\n\r\n getImageUrl(guid): Promise {\r\n const isyLayer = this.layerHandler.getLayerById(guid) || this.layerHandler.getLayerByGuid(guid);\r\n if (!isyLayer) {\r\n return Promise.resolve('');\r\n }\r\n return this.mapImplementation.getImageUrl(isyLayer.subLayers[0]);\r\n }\r\n\r\n /*\r\n Feature Info End\r\n */\r\n\r\n /*\r\n Marker Start\r\n */\r\n\r\n markerIsInitialized() {\r\n return this.mapImplementation.markerIsInitialized();\r\n }\r\n\r\n activateMarker() {\r\n this.mapImplementation.activateMarker();\r\n }\r\n\r\n deactivateMarker() {\r\n this.mapImplementation.deactivateMarker();\r\n }\r\n\r\n hideMarker() {\r\n this.mapImplementation.hideMarker();\r\n }\r\n\r\n showMarker(marker, styles) {\r\n this.mapImplementation.showMarker(marker, styles);\r\n }\r\n\r\n showMarkers(markers, styles, hover=undefined) {\r\n this.mapImplementation.showMarkers(markers, styles, hover);\r\n }\r\n\r\n /*\r\n Marker End\r\n */\r\n\r\n /*\r\n Measure Start\r\n */\r\n\r\n activateMeasure(options) {\r\n this.mapImplementation.activateMeasure(options);\r\n }\r\n\r\n deactivateMeasure() {\r\n this.mapImplementation.deactivateMeasure();\r\n }\r\n\r\n /*\r\n Measure End\r\n */\r\n\r\n /*\r\n Measure line Start\r\n */\r\n\r\n activateMeasureLine(options) {\r\n this.mapImplementation.activateMeasureLine(options);\r\n }\r\n\r\n deactivateMeasureLine() {\r\n this.mapImplementation.deactivateMeasureLine();\r\n }\r\n\r\n /*\r\n Measure line End\r\n */\r\n\r\n /*\r\n Add Feature Start\r\n */\r\n\r\n activateAddLayerFeature(options) {\r\n this.mapImplementation.activateAddLayerFeature(options);\r\n }\r\n\r\n deactivateAddLayerFeature() {\r\n this.mapImplementation.deactivateAddLayerFeature();\r\n }\r\n\r\n /*\r\n Add Feature End\r\n */\r\n\r\n /*\r\n Add Feature Gps Start\r\n */\r\n\r\n activateAddFeatureGps(options) {\r\n this.mapImplementation.activateAddFeatureGps(options);\r\n }\r\n\r\n addCoordinatesGps(coordinates) {\r\n this.mapImplementation.addCoordinatesGps(coordinates);\r\n }\r\n\r\n deactivateAddFeatureGps() {\r\n this.mapImplementation.deactivateAddFeatureGps();\r\n }\r\n\r\n /*\r\n Add Feature Gps End\r\n */\r\n\r\n /*\r\n Modify Feature Start\r\n */\r\n\r\n activateModifyFeature(options) {\r\n this.mapImplementation.activateModifyFeature(options);\r\n }\r\n\r\n deactivateModifyFeature() {\r\n this.mapImplementation.deactivateModifyFeature();\r\n }\r\n\r\n /*\r\n Modify Feature End\r\n */\r\n\r\n /*\r\n DrawFeature Start\r\n */\r\n\r\n activateDrawFeature(options) {\r\n this.mapImplementation.activateDrawFeature(options);\r\n }\r\n\r\n deactivateDrawFeature(options) {\r\n this.mapImplementation.deactivateDrawFeature(options);\r\n }\r\n\r\n /*\r\n DrawFeature End\r\n */\r\n\r\n /*\r\n DrawBox Start\r\n */\r\n\r\n activateDrawBox(options) {\r\n this.mapImplementation.activateDrawBox(options);\r\n }\r\n\r\n deactivateDrawBox(options) {\r\n this.mapImplementation.deactivateDrawBox(options);\r\n }\r\n\r\n /*\r\n DrawBox End\r\n */\r\n\r\n /*\r\n DrawBox Start\r\n */\r\n\r\n activateDrawElevationProfileLine(options) {\r\n this.mapImplementation.activateDrawElevationProfileLine(options);\r\n }\r\n\r\n deactivateDrawElevationProfileLine(options) {\r\n this.mapImplementation.deactivateDrawElevationProfileLine(options);\r\n }\r\n\r\n /*\r\n DrawBox End\r\n */\r\n\r\n /*\r\n DrawingManager Start\r\n */\r\n\r\n activateDrawingManager(options) {\r\n this.mapImplementation.activateDrawingManager(options);\r\n }\r\n\r\n reactivateDrawingManager(options) {\r\n this.mapImplementation.reactivateDrawingManager(options);\r\n }\r\n\r\n deactivateDrawingManager(options) {\r\n this.mapImplementation.deactivateDrawingManager(options);\r\n }\r\n\r\n /*\r\n DrawingManager End\r\n */\r\n\r\n /*\r\n LinePositionMarker Start\r\n */\r\n\r\n activateLinePositionMarker(options) {\r\n this.mapImplementation.activateLinePositionMarker(options);\r\n }\r\n\r\n showMirrorViewPositionMarker(value: boolean) {\r\n this.mapImplementation.showMirrorViewPositionMarker(value);\r\n }\r\n\r\n deactivateLinePositionMarker() {\r\n this.mapImplementation.deactivateLinePositionMarker();\r\n }\r\n\r\n /*\r\n LinePositionMarker End\r\n */\r\n\r\n /*\r\n HoverInfo Start\r\n */\r\n\r\n activateHoverInfo() {\r\n this.mapImplementation.activateHoverInfo();\r\n }\r\n\r\n deactivateHoverInfo() {\r\n this.mapImplementation.deactivateHoverInfo();\r\n }\r\n\r\n pauseHoverInfo(value: boolean) {\r\n this.mapImplementation.pauseHoverInfo(value);\r\n }\r\n\r\n /*\r\n HoverInfo End\r\n */\r\n\r\n /*\r\n PopoverInfo Start\r\n */\r\n\r\n activatePopoverInfo() {\r\n this.mapImplementation.activatePopoverInfo();\r\n }\r\n\r\n deactivatePopoverInfo() {\r\n this.mapImplementation.deactivatePopoverInfo();\r\n }\r\n\r\n /*\r\n PopoverInfo End\r\n */\r\n\r\n /*\r\n PrintBoxSelect Start\r\n */\r\n activatePrintBoxSelect(options) {\r\n this.mapImplementation.activatePrintBoxSelect(options);\r\n }\r\n\r\n deactivatePrintBoxSelect() {\r\n this.mapImplementation.deactivatePrintBoxSelect();\r\n }\r\n\r\n /*\r\n PrintBoxSelect End\r\n */\r\n\r\n /*\r\n FeatureSelector Start\r\n */\r\n\r\n activateFeatureSelector(options) {\r\n this.mapImplementation.activateFeatureSelector(options);\r\n }\r\n\r\n deactivateFeatureSelector() {\r\n this.mapImplementation.deactivateFeatureSelector();\r\n }\r\n\r\n getSelectedFeatures() {\r\n return this.mapImplementation.getSelectedFeatures();\r\n }\r\n\r\n lockSelectedFeatures() {\r\n this.mapImplementation.lockSelectedFeatures();\r\n }\r\n\r\n unlockSelectedFeatures() {\r\n this.mapImplementation.unlockSelectedFeatures();\r\n }\r\n\r\n /*\r\n FeatureSelector End\r\n */\r\n\r\n /*\r\n Utility functions Start\r\n */\r\n\r\n extentToGeoJson(x, y) {\r\n this.mapImplementation.extentToGeoJson(x, y);\r\n }\r\n\r\n setStateFromUrlParams(viewPropertyObject) {\r\n this.mapImplementation.changeView(viewPropertyObject);\r\n }\r\n\r\n setLegendGraphics(isyLayer) {\r\n isyLayer.legendGraphicUrls = [];\r\n for (const subLayer of isyLayer.subLayers) {\r\n if (isyLayer.isVisible && this._shouldBeVisible(subLayer)) {\r\n isyLayer.legendGraphicUrls.push(subLayer.legendGraphicUrl);\r\n }\r\n }\r\n }\r\n\r\n addZoom() {\r\n this.mapImplementation.addZoom();\r\n }\r\n\r\n addZoomSlider() {\r\n this.mapImplementation.addZoomSlider();\r\n }\r\n\r\n addZoomToExtent(extent) {\r\n this.mapImplementation.addZoomToExtent(extent);\r\n }\r\n\r\n addScaleLine() {\r\n this.mapImplementation.addScaleLine();\r\n }\r\n\r\n removeScaleLine() {\r\n this.mapImplementation.removeScaleLine();\r\n }\r\n\r\n zoomToLayer(isySubLayer, maxZoom) {\r\n this.mapImplementation.zoomToLayer(isySubLayer, maxZoom);\r\n }\r\n\r\n zoomToLayers(isySubLayers, maxZoom) {\r\n this.mapImplementation.zoomToLayers(isySubLayers, maxZoom);\r\n }\r\n\r\n fitExtent(extent, optionalMapSize, epsg) {\r\n this.mapImplementation.fitExtent(extent, optionalMapSize, epsg);\r\n }\r\n\r\n setExtent(gisExtent: GisExtent) {\r\n this.mapImplementation.setExtent(gisExtent);\r\n }\r\n\r\n getCenter(epsg?: string): GisCoordinate {\r\n return this.mapImplementation.getCenter(epsg);\r\n }\r\n\r\n setCenter(center: GisCoordinate) {\r\n return this.mapImplementation.setCenter(center);\r\n }\r\n\r\n geoJson2Feature(geojson) {\r\n return this.mapImplementation.geoJson2Feature(geojson);\r\n }\r\n feature2GeoJson(feature) {\r\n return this.mapImplementation.feature2GeoJson(feature);\r\n }\r\n\r\n getZoom() {\r\n return this.mapImplementation.getZoom();\r\n }\r\n\r\n setZoom(zoom) {\r\n this.mapImplementation.setZoom(zoom);\r\n }\r\n\r\n getRotation() {\r\n return this.mapImplementation.getRotation();\r\n }\r\n\r\n setRotation(angle, anchor) {\r\n this.mapImplementation.setRotation(angle, anchor);\r\n }\r\n\r\n getEpsgCode() {\r\n return this.mapImplementation.getEpsgCode();\r\n }\r\n\r\n getVectorLayers(isySubLayer, source) {\r\n return this.mapImplementation.getVectorLayers(isySubLayer, source);\r\n }\r\n\r\n getConfigLayerCount() {\r\n if (this.mapConfiguration) {\r\n let totalCount = 0;\r\n this.mapConfiguration.layers.forEach((layer) => {\r\n if (layer.isVisible) {\r\n layer.subLayers.forEach(() => {\r\n totalCount++;\r\n });\r\n }\r\n });\r\n return totalCount;\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n getLayerCount() {\r\n return this.mapImplementation.getLayerCount();\r\n }\r\n\r\n getCenterFromExtent(extent) {\r\n return this.mapImplementation.getCenterFromExtent(extent);\r\n }\r\n\r\n getScale() {\r\n return this.mapImplementation.getScale();\r\n }\r\n\r\n getFeaturesInMap(isySubLayer) {\r\n return this.mapImplementation.getFeaturesInMap(isySubLayer);\r\n }\r\n\r\n getFeatureExtent(feature) {\r\n return this.mapImplementation.getFeatureExtent(feature);\r\n }\r\n\r\n getLegendStyles(isySubLayer) {\r\n return this.mapImplementation.getLegendStyles(isySubLayer);\r\n }\r\n\r\n getExtent(epsg?: string): GisExtent {\r\n return this.mapImplementation.getExtent(epsg);\r\n }\r\n\r\n getUrlObject() {\r\n return this.mapImplementation.getUrlObject();\r\n }\r\n\r\n getGeolocation(options?: IGeolocation) {\r\n return this.mapImplementation.getGeolocation(options);\r\n }\r\n\r\n updateGeolocation(center, accuracy, altitude, altitudeAccuracy, heading, speed) {\r\n return this.mapImplementation.updateGeolocation(center, accuracy, altitude, altitudeAccuracy, heading, speed);\r\n }\r\n\r\n removeGeolocation(bridge) {\r\n return this.mapImplementation.removeGeolocation(bridge);\r\n }\r\n\r\n infoClickSimulation(coordinate) {\r\n this._handlePointSelect(coordinate, undefined, undefined, this);\r\n }\r\n\r\n setTranslateOptions(translate) {\r\n this.mapImplementation.setTranslateOptions(translate);\r\n }\r\n\r\n transformCoordinates(fromEpsg: string, toEpsg: string, coordinates: number[]) {\r\n return this.mapImplementation.transformCoordinates(fromEpsg, toEpsg, coordinates);\r\n }\r\n\r\n transformFromGeographic(coordinates: number[], toEpsg: string) {\r\n return this.mapImplementation.transformFromGeographic(coordinates, toEpsg);\r\n }\r\n\r\n transformGeoJsonFeaturesFromGeographic(geoJsonFeatures: any, fromEpsg: string) {\r\n return this.mapImplementation.transformGeoJsonFeaturesFromGeographic(geoJsonFeatures, fromEpsg);\r\n }\r\n\r\n transformToGeographic(coordinates: number[], fromEpsg: string) {\r\n return this.mapImplementation.transformToGeographic(coordinates, fromEpsg);\r\n }\r\n\r\n transformGeoJsonFeaturesToGeographic(geoJsonFeatures: any, fromEpsg: string) {\r\n return this.mapImplementation.transformGeoJsonFeaturesToGeographic(geoJsonFeatures, fromEpsg);\r\n }\r\n\r\n setIsyToken(token: string, bearerToken?: string, extraParams?: object) {\r\n this.mapImplementation.setIsyToken(token, bearerToken, extraParams);\r\n }\r\n\r\n refreshVectorLayer(layerGuid, extraParams?) {\r\n const overlayLayers = this.layerHandler.getOverlayLayers();\r\n const overlayLayer = overlayLayers.find(o => o.guid === layerGuid);\r\n this.mapImplementation.refreshVectorLayer(overlayLayer, extraParams);\r\n }\r\n\r\n selectFeatures(filter, isyLayer, style, locked) {\r\n this.mapImplementation.selectFeatures(filter, isyLayer.subLayers[0], style, locked, true);\r\n }\r\n\r\n deselectFeatures(filter, isyLayer) {\r\n this.mapImplementation.deselectFeatures(filter, isyLayer.subLayers[0]);\r\n }\r\n\r\n getClickPixelTolerance() {\r\n return this.featureInfo.getClickPixelTolerance();\r\n }\r\n\r\n setClickPixelTolerance(pixelTolerance) {\r\n this.featureInfo.setClickPixelTolerance(pixelTolerance);\r\n }\r\n\r\n getViewport() {\r\n return this.mapImplementation.getViewport();\r\n }\r\n\r\n queryLayerFilter(isylayer: any, filter?: any, ignoreBbox?: boolean): Promise {\r\n return this.mapImplementation.queryLayerFilter(isylayer, filter, ignoreBbox);\r\n }\r\n\r\n getLayerFilter(isySubLayer: any): any {\r\n return this.mapImplementation.getLayerFilter(isySubLayer);\r\n }\r\n\r\n setLayerFilter(isySubLayer: any, filter?: any, ignoreBbox?: boolean, ignoreExtent?: boolean, style?: any) {\r\n this.mapImplementation.setLayerFilter(isySubLayer, filter, ignoreBbox, ignoreExtent, style);\r\n }\r\n\r\n removeLayerFilter(isySubLayer: any) {\r\n this.mapImplementation.removeLayerFilter(isySubLayer);\r\n }\r\n\r\n getGeoJsonFeaturesInExtent(coordinate, pixelTolerance?: number) {\r\n return this.mapImplementation.getGeoJsonFeaturesInExtent(coordinate, pixelTolerance);\r\n }\r\n\r\n getFeaturesInExtent(isySubLayer, extent) {\r\n return this.mapImplementation.getFeaturesInExtent(isySubLayer, extent);\r\n }\r\n\r\n setAnimationActive(value: boolean): void {\r\n this.mapImplementation.setAnimationActive(value);\r\n }\r\n\r\n setVectorStyle(id: string, styleFunction: any): void {\r\n return this.mapImplementation.setVectorStyle(id ,styleFunction);\r\n }\r\n\r\n getVectorDataAsString(id: string): string {\r\n return this.mapImplementation.getVectorDataAsString(id);\r\n }\r\n\r\n updateLayerMaxResolution(isySubLayer, zoomLevel) {\r\n this.mapImplementation.updateLayerMaxResolution(isySubLayer, zoomLevel);\r\n }\r\n\r\n revertMaxResolutionForLayers() {\r\n this.mapImplementation.revertMaxResolutionForLayers();\r\n }\r\n\r\n /*\r\n Utility functions End\r\n */\r\n\r\n}\r\n","import { MapAPIParsersException } from './Exception';\r\n\r\nexport class MapAPIParsersBase {\r\n factory;\r\n\r\n constructor(factory) {\r\n this.factory = factory;\r\n }\r\n\r\n parse(result) {\r\n const exception = 'exception';\r\n const xml = '= 1) {\r\n parserName = 'geoJson';\r\n }\r\n } else if (result.toLowerCase().indexOf(exception) > -1) {\r\n return this.parseAsException(result);\r\n } else if (result.toLowerCase().indexOf(xml) > -1) {\r\n parserName = 'kartKlifNo';\r\n } else if (result.toLowerCase().indexOf(html) > -1) {\r\n console.log('Parse as html not supported!');\r\n return null;\r\n } else if (result.toLowerCase().indexOf(msGMLOutput) > -1) {\r\n parserName = 'fisheryDirectory';\r\n } else {\r\n return null; // Should be empty collection\r\n }\r\n\r\n const parser = this.factory.createParser(parserName);\r\n return parser.parse(result);\r\n }\r\n\r\n parseAsException(exception) {\r\n const exceptionParser = new MapAPIParsersException();\r\n exceptionParser.parse(exception);\r\n }\r\n}\r\n","export class MapAPIParsersException {\r\n parse(exception) {\r\n const anythingInBracets = /<[^<>]+>/g;\r\n const message = exception.replace(anythingInBracets, '');\r\n throw message;\r\n }\r\n}\r\n","export class MapAPIParsersFactory {\r\n geoJson;\r\n gml;\r\n kartKlifNo;\r\n fiskeriDir;\r\n\r\n constructor(geoJson, gml, kartKlifNo, fiskeriDir) {\r\n this.geoJson = geoJson;\r\n this.gml = gml;\r\n this.kartKlifNo = kartKlifNo;\r\n this.fiskeriDir = fiskeriDir;\r\n }\r\n\r\n createParser(parserName) {\r\n let parser;\r\n switch (parserName) {\r\n case 'geoJson':\r\n parser = this.geoJson;\r\n break;\r\n case 'gml':\r\n parser = this.gml;\r\n break;\r\n case 'kartKlifNo':\r\n parser = this.kartKlifNo;\r\n break;\r\n case 'fisheryDirectory':\r\n parser = this.fiskeriDir;\r\n break;\r\n }\r\n return parser;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { GML, WFS } from 'ol/format';\r\nimport GML2 from 'ol/format/GML2';\r\nimport GML32 from 'ol/format/GML32';\r\nimport { get as getProjection } from 'ol/proj';\r\nimport { MapImplementationFilterSource } from '../../MapImplementation/FilterSource';\r\n\r\nexport class MapAPIParsersGML {\r\n\r\n private _isySubLayer;\r\n private _epsgCode;\r\n private _dataEpsgCode;\r\n private _transformService;\r\n private _dataProjection;\r\n private _featureProjection;\r\n private _srsDimension: boolean;\r\n private _filterSource = {};\r\n private _httpHelper;\r\n\r\n constructor(transformService, isySubLayer, httpHelper) {\r\n this._transformService = transformService;\r\n this._initialize(isySubLayer);\r\n this._httpHelper = httpHelper;\r\n }\r\n\r\n private _initialize(isySubLayer) {\r\n if (!this._isySubLayer && isySubLayer) {\r\n this._isySubLayer = isySubLayer;\r\n this._epsgCode = isySubLayer.coordinate_system;\r\n this._dataEpsgCode = this._isySubLayer.dataprojection ? this._isySubLayer.dataprojection : undefined;\r\n if (this._dataEpsgCode) {\r\n this._srsDimension = this._getSrsDimension(this._dataEpsgCode, isySubLayer.srs_dimension);\r\n }\r\n }\r\n }\r\n\r\n private _getSrsDimension(epsg: string, defaultDimension: string): boolean {\r\n const dimension = this._transformService.hasVerticalValues(epsg);\r\n if (dimension) {\r\n return true;\r\n }\r\n if (defaultDimension && defaultDimension === '3') {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private _createFilterSource(eventHandler, isySubLayer, source) {\r\n const filter = source.get('filter');\r\n if (!filter) {\r\n if (this._filterSource[isySubLayer.id]) {\r\n delete this._filterSource[isySubLayer.id];\r\n }\r\n return;\r\n }\r\n const filterSource = this._filterSource[isySubLayer.id];\r\n if (filterSource) {\r\n filterSource.setFilter(filter);\r\n } else {\r\n this._filterSource[isySubLayer.id] = new MapImplementationFilterSource(\r\n eventHandler,\r\n undefined,\r\n undefined,\r\n undefined,\r\n isySubLayer,\r\n filter,\r\n source,\r\n this._httpHelper,\r\n );\r\n }\r\n }\r\n\r\n parse(response, isySubLayer, source, _featureObj, eventHandler) {\r\n this._initialize(isySubLayer);\r\n let featureNamespace;\r\n let featureNamespaces = {};\r\n let firstElementChild;\r\n\r\n const getFirstElementChild = (childNodes) => {\r\n if (childNodes && childNodes.length < 1) {\r\n return undefined;\r\n }\r\n for (const childNode of childNodes) {\r\n if (childNode.nodeType === 1) {\r\n return childNode;\r\n }\r\n }\r\n };\r\n\r\n let srsurl = this._isySubLayer.url;\r\n if (Array.isArray(this._isySubLayer.url)) {\r\n srsurl = this._isySubLayer.url[0];\r\n }\r\n\r\n if (!source.format) {\r\n if (this._dataEpsgCode) {\r\n this._dataProjection = getProjection(this._dataEpsgCode);\r\n this._featureProjection = getProjection(this._epsgCode);\r\n } else if (srsurl.toLowerCase().indexOf('://dok.nois.no/deegree-webservices-3.4.5') > 0) {\r\n this._dataEpsgCode = 'EPSG:4326';\r\n this._dataProjection = getProjection(this._dataEpsgCode);\r\n this._featureProjection = getProjection(this._epsgCode);\r\n }\r\n const gmlFormat = ((version) => {\r\n switch (version) {\r\n case '1.0.0':\r\n return new GML2();\r\n case '1.1.0':\r\n return new GML();\r\n case '2.0.0':\r\n return new GML32();\r\n default:\r\n return new GML2();\r\n }\r\n })(this._isySubLayer.version);\r\n\r\n // TODO: Remove this gigahack when the number of returned coordinates is static\r\n // (or implement an algorithm that can find the dimension dynamically).\r\n if (this._isySubLayer.srs_dimension && this._isySubLayer.srs_dimension.length > 0) {\r\n firstElementChild = getFirstElementChild(response.firstChild.firstElementChild.childNodes);\r\n if (firstElementChild) {\r\n featureNamespace = firstElementChild.namespaceURI;\r\n source.format = new WFS({\r\n featureType: firstElementChild.localName,\r\n featureNS: featureNamespace,\r\n gmlFormat: gmlFormat\r\n });\r\n }\r\n }\r\n\r\n if (!firstElementChild) {\r\n if (this._isySubLayer.name.indexOf(':') > 0) {\r\n const validNamespaces = {};\r\n const namespaces = response.firstChild.getAttributeNames();\r\n for (const keyName of namespaces) {\r\n // deegree can have namespaces embedded in other tags,\r\n // either as a \"namespaces\" or \"namespace\" parameter, need to extract those\r\n if (keyName.toLowerCase().indexOf('xmlns') >= 0 || keyName.toLowerCase().indexOf(':') > 0) {\r\n if (response.firstChild.getAttribute(keyName).toLowerCase().indexOf('namespaces=') > 0) {\r\n let deegreeNamespaces = decodeURIComponent(response.firstChild.getAttribute(keyName));\r\n deegreeNamespaces = deegreeNamespaces.substr(deegreeNamespaces.toLowerCase().indexOf('namespaces='));\r\n if (deegreeNamespaces.indexOf('(') >= 0) {\r\n deegreeNamespaces = deegreeNamespaces.substr(deegreeNamespaces.indexOf('(') + 1);\r\n deegreeNamespaces = deegreeNamespaces.substr(0, deegreeNamespaces.indexOf(')'));\r\n const deegreeElements = deegreeNamespaces.split(',');\r\n validNamespaces[deegreeElements[0]] = deegreeElements[1];\r\n }\r\n continue;\r\n }\r\n\r\n if (response.firstChild.getAttribute(keyName).toLowerCase().indexOf('namespace=') > 0) {\r\n let deegreeNamespace = decodeURIComponent(response.firstChild.getAttribute(keyName));\r\n deegreeNamespace = deegreeNamespace.substr(deegreeNamespace.toLowerCase().indexOf('namespace='));\r\n if (deegreeNamespace.indexOf('(') >= 0) {\r\n deegreeNamespace = deegreeNamespace.substr(deegreeNamespace.indexOf('(') + 1);\r\n deegreeNamespace = deegreeNamespace.substr(0, deegreeNamespace.indexOf(')'));\r\n const deegreeElements = deegreeNamespace.split('=');\r\n validNamespaces[deegreeElements[0]] = deegreeElements[1];\r\n }\r\n continue;\r\n }\r\n const simpleNamespace = keyName.indexOf(':') > 0 ? keyName.substr(keyName.indexOf(':') + 1) : keyName;\r\n validNamespaces[simpleNamespace] = response.firstChild.getAttribute(keyName);\r\n }\r\n }\r\n if (Object.getOwnPropertyNames(validNamespaces).length > 0) {\r\n featureNamespace = validNamespaces;\r\n } else {\r\n featureNamespace = response.firstChild.namespaceURI;\r\n }\r\n } else {\r\n featureNamespace = response?.firstChild?.namespaceURI;\r\n }\r\n if ((typeof featureNamespace === 'object') ||\r\n (featureNamespace?.toLowerCase().indexOf('intergraph.com') > 0)) {\r\n source.format = new WFS({\r\n featureType: this._isySubLayer.name.indexOf(',') < 0 ? this._isySubLayer.name : this._isySubLayer.name.split(','),\r\n featureNS: featureNamespace,\r\n gmlFormat: gmlFormat\r\n });\r\n } else {\r\n featureNamespaces = {};\r\n const attributes = response.firstChild?.attributes || [];\r\n for (const attribute of attributes) {\r\n if (attribute.prefix === 'xmlns') {\r\n featureNamespaces[attribute.localName] = attribute.value;\r\n }\r\n }\r\n\r\n firstElementChild = getFirstElementChild(getFirstElementChild(getFirstElementChild(\r\n response?.childNodes)?.childNodes)?.childNodes);\r\n if (firstElementChild) {\r\n for (const attribute of firstElementChild.attributes) {\r\n if (attribute.prefix === 'xmlns') {\r\n featureNamespaces[attribute.localName] = attribute.value;\r\n featureNamespace = featureNamespaces[attribute.localName];\r\n }\r\n }\r\n }\r\n\r\n source.format = new WFS({\r\n featureType: this._isySubLayer.name.indexOf(',') < 0 ? this._isySubLayer.name : this._isySubLayer.name.split(','),\r\n featureNS: featureNamespaces,\r\n gmlFormat: gmlFormat\r\n });\r\n }\r\n }\r\n\r\n if (getFirstElementChild(response?.childNodes)?.getAttribute('xmlns:gml') === 'http://www.opengis.net/gml/3.2') {\r\n\r\n // Hack to make OpenLayers parse GML version 3.2.1. Probably not complete yet...\r\n const parsers = [];\r\n parsers.push('CURVEMEMBER_PARSERS_');\r\n parsers.push('CURVE_PARSERS_');\r\n parsers.push('ENVELOPE_PARSERS_');\r\n parsers.push('FEATURE_COLLECTION_PARSERS');\r\n parsers.push('FLAT_LINEAR_RINGS_PARSERS_');\r\n parsers.push('GEOMETRY_FLAT_COORDINATES_PARSERS_');\r\n parsers.push('GEOMETRY_PARSERS_');\r\n parsers.push('MULTICURVE_PARSERS_');\r\n parsers.push('MULTISURFACE_PARSERS_');\r\n parsers.push('PATCHES_PARSERS_');\r\n parsers.push('SEGMENTS_PARSERS_');\r\n parsers.push('SURFACEMEMBER_PARSERS_');\r\n parsers.push('SURFACE_PARSERS_');\r\n parsers.push('LINESTRINGMEMBER_PARSERS_');\r\n parsers.push('MULTILINESTRING_PARSERS_');\r\n parsers.push('MULTIPOINT_PARSERS_');\r\n parsers.push('MULTIPOLYGON_PARSERS_');\r\n parsers.push('POINTMEMBER_PARSERS_');\r\n parsers.push('POLYGONMEMBER_PARSERS_');\r\n parsers.push('RING_PARSERS');\r\n\r\n for (const key of Object.keys(parsers)) {\r\n if (gmlFormat[parsers[key]] && gmlFormat[parsers[key]]['http://www.opengis.net/gml/3.2']) {\r\n gmlFormat[parsers[key]]['http://www.opengis.net/gml'] = gmlFormat[parsers[key]]['http://www.opengis.net/gml/3.2'];\r\n gmlFormat[parsers[key]]['http://www.opengis.net/wfs/2.0'] = gmlFormat[parsers[key]]['http://www.opengis.net/gml/3.2'];\r\n }\r\n }\r\n\r\n source.format['GML3_2'] = true;\r\n }\r\n }\r\n if (this._srsDimension) {\r\n const dimension = '3';\r\n firstElementChild = getFirstElementChild(getFirstElementChild(response.firstChild?.childNodes)?.childNodes);\r\n featureNamespace = firstElementChild.namespaceURI;\r\n const prefix = response.firstChild?.prefix ? response.firstChild?.prefix : 'gml';\r\n if (response.firstChild?.nodeName.toLowerCase() === prefix + ':featurecollection') {\r\n const childNodes = response.firstChild?.childNodes || [];\r\n for (const member of childNodes) {\r\n if (member.nodeName.toLowerCase() === 'gml:featuremember'\r\n || member.nodeName.toLowerCase() === prefix + ':member') {\r\n for (const feature of member.childNodes) {\r\n if (feature.nodeName.toLowerCase() === this._isySubLayer.name.toLowerCase()) {\r\n for (const attribute of feature.childNodes) {\r\n for (const attributeChild of attribute.childNodes) {\r\n const attributeType = attributeChild.nodeName;\r\n if (attributeType.toLowerCase() === 'gml:linestring' ||\r\n attributeType.toLowerCase() === 'gml:point' ||\r\n attributeType.toLowerCase() === 'gml:multicurve') {\r\n const srsAttribute = document.createAttribute('srsDimension');\r\n srsAttribute.value = dimension;\r\n getFirstElementChild(attribute.childNodes)?.attributes?.setNamedItem(srsAttribute);\r\n } else {\r\n console.log('Unknown attributeType: ', attributeType);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n let url = this._isySubLayer.url;\r\n\r\n if (source.format.GML3_2 === true) {\r\n // wfs:member doesn't work. Use wfs:featureMember\r\n\r\n const serializer = new XMLSerializer();\r\n const parser = new DOMParser();\r\n response = parser.parseFromString(\r\n serializer.serializeToString(response)\r\n .replace(/srsdimension/g, 'srsDimension')\r\n .replace(/wfs:member/g, 'wfs:featureMember'),\r\n 'text/xml'\r\n );\r\n\r\n const childNodes = response.firstChild?.childNodes || [];\r\n for (const childNode of childNodes) {\r\n if (childNode.nodeType === 1) {\r\n firstElementChild = getFirstElementChild(childNode.childNodes);\r\n if (firstElementChild) {\r\n firstElementChild.setAttribute('fid', firstElementChild.getAttribute('gml:id'));\r\n\r\n // Special parsing of GeoNorge Planomriss WFS service:\r\n if (url.toLowerCase().indexOf('wfs.geonorge.no/skwms1/wfs.planomriss') > 0) {\r\n const arealPlanObject = firstElementChild.getElementsByTagName('app:arealplanId');\r\n\r\n if (arealPlanObject.length === 1) {\r\n const arealPlanId = getFirstElementChild(firstElementChild.getElementsByTagName('app:arealplanId')[0]\r\n .childNodes).getElementsByTagName('app:planidentifikasjon')[0].innerHTML;\r\n const kommunenr = getFirstElementChild(getFirstElementChild(getFirstElementChild(getFirstElementChild(\r\n firstElementChild.getElementsByTagName('app:arealplanId')[0].childNodes).childNodes).childNodes)\r\n .childNodes).innerHTML;\r\n firstElementChild.getElementsByTagName('app:arealplanId')[0].innerHTML = arealPlanId;\r\n firstElementChild.innerHTML += '' + kommunenr + '';\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n let features;\r\n if (this._dataProjection) {\r\n features = source.format.readFeatures(\r\n response,\r\n {\r\n dataProjection: this._dataProjection,\r\n featureProjection: this._featureProjection\r\n }\r\n );\r\n } else {\r\n features = source.format.readFeatures(response);\r\n }\r\n\r\n if (Array.isArray(this._isySubLayer.url)) {\r\n url = this._isySubLayer.url[0];\r\n }\r\n\r\n if (features && features.length > 0) {\r\n const filteredFeatures = [];\r\n this._createFilterSource(eventHandler, isySubLayer, source);\r\n const validfeatures = [];\r\n features.forEach((featureitem) => {\r\n if (featureitem.set) {\r\n // Setting geometry name to 'FLATE'... (if this is a matrikkel WFS...)\r\n if (url.toLowerCase().indexOf('matrikkelproxy') > 0 || url.toLowerCase().indexOf('matrikkel.no') > 0\r\n || url.toLowerCase().indexOf('matrikkelen') > 0) {\r\n if (featureitem.get('FLATE')) {\r\n featureitem.setGeometryName('FLATE');\r\n }\r\n let featureid = featureitem.getId();\r\n const matrikkelnummer = featureitem.get('matrikkelnummer')?.Matrikkelnummer;\r\n\r\n if (featureitem.get('KOMMUNENR')) {\r\n featureid += '.' + featureitem.get('KOMMUNENR');\r\n } else if (matrikkelnummer?.kommunenummer) {\r\n featureid += '.' + matrikkelnummer?.kommunenummer;\r\n featureitem.set('kommunenummer', matrikkelnummer?.kommunenummer);\r\n }\r\n if (featureitem.get('GARDSNR')) {\r\n featureid += '/' + featureitem.get('GARDSNR');\r\n } else if (matrikkelnummer?.gardsnummer) {\r\n featureid += '/' + matrikkelnummer.gardsnummer;\r\n featureitem.set('gardsnummer', matrikkelnummer.gardsnummer);\r\n }\r\n if (featureitem.get('BRUKSNR')) {\r\n featureid += '/' + featureitem.get('BRUKSNR');\r\n } else if (matrikkelnummer?.bruksnummer) {\r\n featureid += '/' + matrikkelnummer.bruksnummer;\r\n featureitem.set('bruksnummer', matrikkelnummer.bruksnummer);\r\n }\r\n if (featureitem.get('FESTENR')) {\r\n featureid += '/' + featureitem.get('FESTENR');\r\n }\r\n if (featureitem.get('SEKSJONSNR')) {\r\n featureid += '/' + featureitem.get('SEKSJONSNR');\r\n }\r\n featureitem.setId(featureid);\r\n }\r\n if (url.toLowerCase().indexOf('wfs.geonorge.no/skwms1/wfs.') > 0) {\r\n if (featureitem.get('omrÃ¥de')) {\r\n featureitem.setGeometryName('omrÃ¥de');\r\n }\r\n }\r\n\r\n if (this._filterSource[isySubLayer.id]) {\r\n if (this._filterSource[isySubLayer.id].featureIsValid(featureitem)) {\r\n validfeatures.push(featureitem);\r\n } else {\r\n filteredFeatures.push(featureitem);\r\n }\r\n } else {\r\n validfeatures.push(featureitem);\r\n }\r\n\r\n } else {\r\n if (console && console.error) {\r\n console.error('Illegal feature:');\r\n console.error(featureitem);\r\n }\r\n }\r\n });\r\n\r\n features = validfeatures;\r\n source.addFeatures(features);\r\n\r\n if (filteredFeatures.length > 0) {\r\n filteredFeatures.forEach(item => {\r\n const feature = source.getFeatureById(item.getId());\r\n if (feature) {\r\n source.removeFeature(feature);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (features.length > 0) {\r\n this._isySubLayer.geometryName = features[0].getGeometryName();\r\n }\r\n\r\n this._isySubLayer.featureNS = featureNamespace;\r\n\r\n source.dispatchEvent('vectorloadend');\r\n }\r\n}\r\n","import { DomainFeatureResponse } from '../../Domain/FeatureResponse';\r\n\r\nexport class MapAPIParsersGeoJSON {\r\n parse(result) {\r\n const responseFeatureCollection = [];\r\n\r\n let crs;\r\n if (result.crs) {\r\n const crsObject = result.crs;\r\n if (crsObject.properties.code) {\r\n crs = crsObject.type + ':' + crsObject.properties.code;\r\n } else if (crsObject.properties.name) {\r\n // pattern name=urn:ogc:def:crs:EPSG::32633\r\n crs = crsObject.properties.name.substring(crsObject.properties.name.indexOf('EPSG'), crsObject.properties.name.length);\r\n }\r\n }\r\n if (result.features) {\r\n for (const feature of result.features) {\r\n\r\n const responseFeature = new DomainFeatureResponse();\r\n responseFeature.crs = crs;\r\n responseFeature.geometryObject = feature;\r\n responseFeature.properties = feature.properties;\r\n responseFeature.olFeature = feature.olFeature;\r\n responseFeatureCollection.push(responseFeature);\r\n }\r\n } else if (result.length) {\r\n for (const subResult of result) {\r\n if (subResult.rows.length) {\r\n const responseFeatureWms = new DomainFeatureResponse();\r\n responseFeatureWms.crs = '';\r\n responseFeatureWms.geometryObject = '';\r\n responseFeatureWms.properties = subResult.rows[0];\r\n responseFeatureCollection.push(responseFeatureWms);\r\n }\r\n }\r\n }\r\n\r\n return responseFeatureCollection;\r\n }\r\n}\r\n","export class MapAPIToolsTool {\r\n\r\n constructor(config) {\r\n const defaults = {\r\n id: '',\r\n activate: function () { console.log('Not implemented'); },\r\n deactivate: function () { console.log('Not implemented'); },\r\n messageObject: [],\r\n description: '',\r\n isCommand: false\r\n };\r\n\r\n let instance = {\r\n ...defaults,\r\n ...config,\r\n };\r\n instance.Extend = function (properties) {\r\n instance = {\r\n ...instance,\r\n ...properties\r\n };\r\n return instance;\r\n };\r\n\r\n return instance;\r\n }\r\n\r\n}\r\n","import * as $ from 'jquery';\r\nexport class MapAPIToolsToolFactory {\r\n\r\n internalTools = [];\r\n externalTools = [];\r\n mapImplementation;\r\n toolOptions = {};\r\n\r\n constructor (map, tools) {\r\n this.mapImplementation = map;\r\n this.internalTools = tools.getTools();\r\n }\r\n\r\n addTool(tool) {\r\n this.externalTools.push(tool);\r\n }\r\n\r\n getAvailableTools() {\r\n const toolsId = [];\r\n for (const tool of this.externalTools) {\r\n toolsId.push(tool.id);\r\n }\r\n return toolsId;\r\n }\r\n\r\n activateTool(toolId) {\r\n let activeToolIsCommand = false;\r\n for (const tool of this.externalTools) {\r\n tool.deactivate();\r\n\r\n if (tool.id === toolId) {\r\n if (!$.isEmptyObject(this.toolOptions)) {\r\n tool.activate(this.toolOptions);\r\n } else {\r\n tool.activate();\r\n }\r\n activeToolIsCommand = tool.isCommand;\r\n }\r\n }\r\n return activeToolIsCommand;\r\n }\r\n\r\n setupTools(toolsConfig) {\r\n for (const configTool of toolsConfig) {\r\n const correspondingInternalTool = this._getInternalTool(configTool.id);\r\n if (correspondingInternalTool) {\r\n this.externalTools.push(correspondingInternalTool);\r\n }\r\n }\r\n }\r\n\r\n _getInternalTool(toolId) {\r\n for (const internalTool of this.internalTools) {\r\n if (internalTool.id === toolId) {\r\n return internalTool;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n deactivateTool(toolId) {\r\n const tool = this._getInternalTool(toolId);\r\n if (tool) {\r\n this.toolOptions = {};\r\n tool.deactivate(this.mapImplementation);\r\n }\r\n }\r\n\r\n additionalToolOptions(options) {\r\n this.toolOptions = options;\r\n }\r\n\r\n}\r\n","import { MapAPIToolsTool } from './Tool';\r\n\r\nexport class MapAPIToolsTools {\r\n\r\n tools = [];\r\n\r\n constructor(mapApi) {\r\n const getFeatureInfoConfig = {\r\n id: 'PointSelect',\r\n description: 'This tool activates a get feature info click on the map',\r\n activate: () => {\r\n mapApi.activateInfoClick();\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateInfoClick();\r\n },\r\n messageObject: []\r\n };\r\n const getFeatureInfo = new MapAPIToolsTool(getFeatureInfoConfig);\r\n\r\n this.tools.push(getFeatureInfo);\r\n\r\n const zoomAndPanConfig = {\r\n id: 'DefaultZoom',\r\n description: 'This is the default tool',\r\n\r\n messageObject: []\r\n };\r\n\r\n const zoomAndPan = new MapAPIToolsTool(zoomAndPanConfig);\r\n this.tools.push(zoomAndPan);\r\n\r\n const boxSelectConfig = {\r\n id: 'BoxSelect',\r\n description: 'This tool activates box select functionality to the map',\r\n activate: () => {\r\n mapApi.activateBoxSelect();\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateBoxSelect();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const boxSelect = new MapAPIToolsTool(boxSelectConfig);\r\n this.tools.push(boxSelect);\r\n\r\n const drawFeatureConfig = {\r\n id: 'DrawFeature',\r\n description: 'This tool lets the user draw a feature in the map',\r\n activate: (options) => {\r\n mapApi.activateDrawFeature(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateDrawFeature();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const drawFeature = new MapAPIToolsTool(drawFeatureConfig);\r\n this.tools.push(drawFeature);\r\n\r\n const modifyFeatureConfig = {\r\n id: 'ModifyFeature',\r\n description: 'This tool lets the user modify feature in the map.',\r\n activate: (options) => {\r\n mapApi.activateModifyFeature(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateModifyFeature();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const modifyFeature = new MapAPIToolsTool(modifyFeatureConfig);\r\n this.tools.push(modifyFeature);\r\n\r\n const addLayerFeatureConfig = {\r\n id: 'AddLayerFeature',\r\n description: 'This tool lets the user add feature to the map',\r\n activate: (options) => {\r\n mapApi.activateAddLayerFeature(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateAddLayerFeature();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const addLayerFeature = new MapAPIToolsTool(addLayerFeatureConfig);\r\n this.tools.push(addLayerFeature);\r\n\r\n const addFeatureGpsConfig = {\r\n id: 'AddFeatureGps',\r\n description: 'This tool lets the user add feature to the map with geolocation',\r\n activate: (options) => {\r\n mapApi.activateAddFeatureGps(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateAddFeatureGps();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const addFeatureGps = new MapAPIToolsTool(addFeatureGpsConfig);\r\n this.tools.push(addFeatureGps);\r\n\r\n\r\n const measureConfig = {\r\n id: 'Measure',\r\n description: 'This tool lets the user measure in the map',\r\n activate: (options) => {\r\n mapApi.activateMeasure(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateMeasure();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const measure = new MapAPIToolsTool(measureConfig);\r\n this.tools.push(measure);\r\n\r\n const measureLine = {\r\n id: 'MeasureLine',\r\n description: 'This tool lets the user measure line in the map',\r\n activate: (options) => {\r\n mapApi.activateMeasureLine(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateMeasureLine();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const measureLineObject = new MapAPIToolsTool(measureLine);\r\n this.tools.push(measureLineObject);\r\n\r\n const hoverInfoConfig = {\r\n id: 'FeatureHoverInfo',\r\n description: 'This tool allow user get info via mouse hover',\r\n activate: () => {\r\n mapApi.activateHoverInfo();\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateHoverInfo();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const hoverInfo = new MapAPIToolsTool(hoverInfoConfig);\r\n this.tools.push(hoverInfo);\r\n\r\n const featureEditorConfig = {\r\n id: 'FeatureEditor',\r\n description: 'This tool allow user to edit features',\r\n activate: () => {\r\n mapApi.activateEditClick();\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateEditClick();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const featureEditor = new MapAPIToolsTool(featureEditorConfig);\r\n this.tools.push(featureEditor);\r\n\r\n const drawingManagerConfig = {\r\n id: 'DrawingManager',\r\n description: 'This tool allow user to add features to the map',\r\n activate: (options) => {\r\n mapApi.activateDrawingManager(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateDrawingManager();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const drawingManager = new MapAPIToolsTool(drawingManagerConfig);\r\n this.tools.push(drawingManager);\r\n\r\n const printBoxSelectConfig = {\r\n id: 'PrintBoxSelect',\r\n description: 'This tool activates box select functionality for printing',\r\n activate: (options) => {\r\n mapApi.activatePrintBoxSelect(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivatePrintBoxSelect();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const printBoxSelect = new MapAPIToolsTool(printBoxSelectConfig);\r\n this.tools.push(printBoxSelect);\r\n\r\n const featureSelectorConfig = {\r\n id: 'FeatureSelector',\r\n description: 'This tool allow user select features on the map',\r\n activate: (options) => {\r\n mapApi.activateFeatureSelector(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateFeatureSelector();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const featureSelector = new MapAPIToolsTool(featureSelectorConfig);\r\n this.tools.push(featureSelector);\r\n\r\n const clickCoordinatesConfig = {\r\n id: 'GetClickCoordinates',\r\n description: 'This tool allow user get coordinates by clicking to map',\r\n activate: () => {\r\n mapApi.activateGetClickCoordinates();\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateGetClickCoordinates();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const clickCoordinates = new MapAPIToolsTool(clickCoordinatesConfig);\r\n this.tools.push(clickCoordinates);\r\n\r\n const drawBoxConfig = {\r\n id: 'DrawBox',\r\n description: 'This tool allow user draw/edit box over the map and get box coordinates',\r\n activate: (options) => {\r\n mapApi.activateDrawBox(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateDrawBox();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const drawBox = new MapAPIToolsTool(drawBoxConfig);\r\n this.tools.push(drawBox);\r\n\r\n const drawElevationProfileLineConfig = {\r\n id: 'DrawElevationProfileLine',\r\n description: 'This tool allow user draw/edit line and get line coordinates',\r\n activate: (options) => {\r\n mapApi.activateDrawElevationProfileLine(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateDrawElevationProfileLine();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const drawElevationProfileLine = new MapAPIToolsTool(drawElevationProfileLineConfig);\r\n this.tools.push(drawElevationProfileLine);\r\n\r\n const linePositionMarkerConfig = {\r\n id: 'LinePositionMarker',\r\n description: 'This tool allow user show, snap and move position marker on selected line',\r\n activate: (options) => {\r\n mapApi.activateLinePositionMarker(options);\r\n },\r\n deactivate: () => {\r\n mapApi.deactivateLinePositionMarker();\r\n },\r\n messageObject: []\r\n };\r\n\r\n const linePositionMarker = new MapAPIToolsTool(linePositionMarkerConfig);\r\n this.tools.push(linePositionMarker);\r\n }\r\n\r\n getTools() {\r\n return this.tools;\r\n }\r\n\r\n}\r\n","import { Vector as SourceVector } from 'ol/source';\r\nimport { Vector } from 'ol/layer';\r\nimport { DoubleClickZoom, Modify, Draw, Snap } from 'ol/interaction';\r\nimport { Polygon, LineString, Geometry } from 'ol/geom';\r\nimport { Collection, Feature, Overlay } from 'ol';\r\nimport { MapImplementationStylesMeasure } from './Styles/Measure';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { unByKey } from 'ol/Observable';\r\nimport { singleClick, shiftKeyOnly } from 'ol/events/condition';\r\nimport SnapGuides from 'ol-ext/interaction/SnapGuides';\r\nimport * as $ from 'jquery';\r\nimport VectorLayer from 'ol/layer/Vector';\r\n\r\nexport class MapImplementationAddLayerFeature {\r\n\r\n eventHandler;\r\n\r\n isActive = false;\r\n translate;\r\n typeObject;\r\n snappingFeatures;\r\n snappingEnabled = false;\r\n\r\n /**\r\n * Currently drawn feature.\r\n * @type {ol.Feature}\r\n */\r\n sketch;\r\n\r\n /**\r\n * The help tooltip element.\r\n * @type {Element}\r\n */\r\n helpTooltipElement;\r\n\r\n /**\r\n * Overlay to show the help messages.\r\n * @type {ol.Overlay}\r\n */\r\n helpTooltip;\r\n\r\n /**\r\n * Handle pointer move.\r\n * @param {ol.MapBrowserEvent} evt\r\n */\r\n startModify = false;\r\n\r\n draw; // global so we can remove it later\r\n drawLayer;\r\n modify;\r\n snapping;\r\n snapInteractions = [];\r\n snapGuides;\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n pointerMoveHandler(evt) {\r\n if (!this.isActive) {\r\n return;\r\n }\r\n /** @type {string} */\r\n let helpMsg = this.translate['add_layer_start_drawing']; // 'Click to start drawing';\r\n\r\n if (this.sketch && !this.startModify) {\r\n helpMsg = this.translate['add_layer_continue_drawing']; // continuePolygonMsg;\r\n }\r\n if (this.startModify) {\r\n helpMsg = this.translate['add_layer_modify_object']; // 'Click to start drawing';\r\n }\r\n this.helpTooltipElement.innerHTML = helpMsg;\r\n this.helpTooltip.setPosition(evt.coordinate);\r\n const $jq = $.noConflict();\r\n $jq(this.helpTooltipElement).removeClass('hidden');\r\n }\r\n\r\n addInteraction(map) {\r\n const source = new SourceVector();\r\n const drawStyle = new MapImplementationStylesMeasure();\r\n if (this.typeObject === 'Line') {\r\n this.typeObject = 'LineString';\r\n }\r\n\r\n this.draw = new Draw({\r\n source: source,\r\n style: drawStyle.styles(),\r\n type: /** @type {ol.geom.GeometryType} */ (this.typeObject)\r\n });\r\n this.drawLayer = new Vector({\r\n source: source,\r\n style: drawStyle.drawStyles()\r\n });\r\n\r\n map.addInteraction(this.draw);\r\n map.addLayer(this.drawLayer);\r\n\r\n if (this.snappingEnabled) {\r\n this.initSnapping(map);\r\n this.initSnapGuides(map);\r\n }\r\n\r\n this.createHelpTooltip(map);\r\n\r\n let listener;\r\n this.draw.on('drawstart',\r\n (evt) => {\r\n this._removeDoubleClickZoom(map);\r\n this.sketch = evt.feature;\r\n\r\n listener = this.sketch.getGeometry().on('change', (evtListener) => {\r\n const geom = evtListener.target;\r\n let output;\r\n if (geom instanceof Polygon) {\r\n output = ''; // formatArea(/** @type {ol.geom.Polygon} */ (geom));\r\n // tooltipCoord = geom.getInteriorPoint().getCoordinates();\r\n } else if (geom instanceof LineString) {\r\n output = ''; // formatLength( /** @type {ol.geom.LineString} */ (geom));\r\n // tooltipCoord = geom.getLastCoordinate();\r\n }\r\n // measureTooltipElement.innerHTML = output.string;\r\n this.eventHandler.triggerEvent(EventsEventTypes.MeasureMouseMove, output);\r\n // measureTooltip.setPosition(tooltipCoord);\r\n });\r\n }, this);\r\n\r\n this.draw.on('drawend',\r\n (evt) => {\r\n this.snapInteractions.forEach(snap => map.removeInteraction(snap));\r\n this.sketch = null;\r\n unByKey(listener);\r\n\r\n this.sketch = evt.feature;\r\n const newFeatures = new Collection([this.sketch]);\r\n this.modify = new Modify({\r\n features: newFeatures,\r\n\r\n deleteCondition: (event) => {\r\n return shiftKeyOnly(event) && singleClick(event);\r\n }\r\n });\r\n\r\n map.addInteraction(this.modify);\r\n\r\n this.initSnapping(map);\r\n\r\n this.eventHandler.triggerEvent(EventsEventTypes.AddLayerFeatureEnd, this.sketch);\r\n\r\n this.startModify = true;\r\n this.modify.on('modifyend',\r\n (evtModify) => {\r\n this.sketch = null;\r\n unByKey(listener);\r\n this.sketch = evtModify.features.getArray()[0]; // evt.feature;\r\n this.eventHandler.triggerEvent(EventsEventTypes.AddLayerFeatureEnd, this.sketch);\r\n }, this);\r\n map.removeInteraction(this.draw);\r\n\r\n }, this);\r\n }\r\n\r\n initSnapping(map) {\r\n const snappingFeaturesCollection = new Collection>(this.snappingFeatures);\r\n const snap = new Snap({\r\n features: snappingFeaturesCollection\r\n });\r\n this.snapInteractions.push(snap)\r\n map.addInteraction(snap);\r\n\r\n map.getLayers().forEach((layer) => {\r\n if (layer instanceof VectorLayer) {\r\n const snap = new Snap({\r\n source: layer.getSource()\r\n });\r\n this.snapInteractions.push(snap);\r\n map.addInteraction(snap);\r\n }\r\n });\r\n }\r\n\r\n initSnapGuides(map) {\r\n const snapGuideOptions = {\r\n pixelTolerance: 10\r\n };\r\n if (this.snapGuides) {\r\n this.snapGuides.clearGuides();\r\n this.snapGuides.setActive(true);\r\n } else {\r\n this.snapGuides = new SnapGuides(snapGuideOptions);\r\n }\r\n\r\n if (this.draw) {\r\n this.snapGuides.setDrawInteraction(this.draw);\r\n }\r\n map.addInteraction(this.snapGuides);\r\n }\r\n\r\n /**\r\n * Creates a new help tooltip\r\n */\r\n createHelpTooltip(map) {\r\n if (this.helpTooltipElement) {\r\n if (this.helpTooltipElement.parentNode !== null) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n }\r\n this.helpTooltipElement = document.createElement('div');\r\n this.helpTooltipElement.className = 'tooltip hidden';\r\n this.helpTooltip = new Overlay({\r\n element: this.helpTooltipElement,\r\n offset: [15, 0],\r\n positioning: 'center-left'\r\n });\r\n map.addOverlay(this.helpTooltip);\r\n }\r\n\r\n activate(map, options) {\r\n this.isActive = true;\r\n this.translate = options.translate;\r\n this.typeObject = options.toolType; // type;\r\n this.snappingFeatures = options.snappingFeatures;\r\n this.snappingEnabled = options.snappingEnabled;\r\n\r\n map.on('pointermove', this.pointerMoveHandler);\r\n const $jq = $.noConflict();\r\n\r\n $jq(map.getViewport()).on('mouseout', () => {\r\n $jq(this.helpTooltipElement).addClass('hidden');\r\n });\r\n this.addInteraction(map);\r\n }\r\n\r\n _removeOverlays(map) {\r\n map.removeInteraction(this.draw);\r\n\r\n map.removeOverlay(this.helpTooltip);\r\n if (this.helpTooltipElement !== null) {\r\n if (this.helpTooltipElement.parentNode !== null) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n }\r\n\r\n const tooltipStaticElements = document.getElementsByClassName('tooltip tooltip-static');\r\n while (tooltipStaticElements.length > 0) {\r\n const staticElement = tooltipStaticElements[0];\r\n staticElement.parentNode.removeChild(staticElement);\r\n }\r\n }\r\n private _removeDoubleClickZoom(map) {\r\n map.getInteractions().forEach((interaction) => {\r\n if (interaction instanceof DoubleClickZoom) {\r\n map.removeInteraction(interaction);\r\n }\r\n });\r\n }\r\n\r\n private _applyDoubleClickZoom(map) {\r\n this._removeDoubleClickZoom(map);\r\n map.addInteraction(\r\n new DoubleClickZoom()\r\n );\r\n }\r\n\r\n deactivate(map) {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n this.startModify = false;\r\n this.sketch = null;\r\n if (map) {\r\n map.removeLayer(this.drawLayer);\r\n map.removeInteraction(this.modify);\r\n this.snapInteractions.forEach(snap => map.removeInteraction(snap));\r\n this._removeOverlays(map);\r\n this._applyDoubleClickZoom(map);\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import * as $ from 'jquery';\r\nimport { Vector as SourceVector } from 'ol/source';\r\nimport { Vector } from 'ol/layer';\r\nimport Transform from 'ol-ext/interaction/Transform';\r\nimport { DragBox } from 'ol/interaction';\r\nimport { Feature, Overlay } from 'ol';\r\nimport { Polygon } from 'ol/geom';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { Style, RegularShape, Fill, Stroke, Text } from 'ol/style';\r\nimport { shiftKeyOnly, noModifierKeys } from 'ol/events/condition';\r\n\r\nexport class MapImplementationDrawBox {\r\n\r\n eventHandler;\r\n\r\n isActive = false;\r\n translate;\r\n boxIsDrawn = false;\r\n\r\n /**\r\n * The help tooltip element.\r\n * @type {Element}\r\n */\r\n helpTooltipElement;\r\n\r\n\r\n /**\r\n * Overlay to show the help messages.\r\n * @type {ol.Overlay}\r\n */\r\n helpTooltip;\r\n\r\n draw; // global so we can remove it later\r\n drawLayer;\r\n feat;\r\n source;\r\n interaction;\r\n\r\n startangle = 0;\r\n d = [0, 0];\r\n firstPoint = false;\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n /**\r\n * Handle pointer move.\r\n * @param {ol.MapBrowserEvent} evt\r\n */\r\n pointerMoveHandler(evt) {\r\n if (evt.dragging || !this.isActive) {\r\n return;\r\n }\r\n /** @type {string} */\r\n const helpMsg = this.translate['start_drawing']; // 'Click to start drawing';\r\n\r\n this.helpTooltipElement.innerHTML = helpMsg;\r\n this.helpTooltip.setPosition(evt.coordinate);\r\n if (!this.boxIsDrawn) {\r\n const $jq = $.noConflict();\r\n $jq(this.helpTooltipElement).removeClass('hidden');\r\n }\r\n\r\n }\r\n\r\n addInteraction(map) {\r\n this.source = new SourceVector();\r\n this.draw = new DragBox({\r\n condition: noModifierKeys\r\n });\r\n\r\n this.drawLayer = new Vector({\r\n source: this.source,\r\n style: this.getStyle\r\n });\r\n //\r\n map.addInteraction(this.draw);\r\n map.addLayer(this.drawLayer);\r\n\r\n this.createHelpTooltip(map);\r\n\r\n this.draw.on('boxend', (evt) => {\r\n\r\n if (this.feat) {\r\n this.source.removeFeature(this.feat);\r\n }\r\n\r\n this.feat = new Feature(new Polygon(evt.target.getGeometry().getCoordinates()));\r\n this.source.addFeature(this.feat);\r\n\r\n const $jq = $.noConflict();\r\n $jq(this.helpTooltipElement).addClass('hidden');\r\n this.boxIsDrawn = true;\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawBoxEnd, this.feat.getGeometry().getCoordinates()[0]);\r\n map.removeInteraction(this.draw);\r\n });\r\n }\r\n\r\n // Style\r\n getStyle(feature) {\r\n return [ new Style(\r\n {\timage: new RegularShape({\r\n fill: new Fill({color: [0, 0, 255, 0.4]}),\r\n stroke: new Stroke({color: [0, 0, 255, 1], width: 1}),\r\n radius: 10,\r\n points: 3,\r\n angle: feature.get('angle') || 0\r\n }),\r\n fill: new Fill({color: [0, 0, 255, 0.4]}),\r\n stroke: new Stroke({color: [0, 0, 255, 1], width: 1})\r\n })];\r\n }\r\n\r\n addModifyInteraction(map) {\r\n this.interaction = new Transform ({\r\n addCondition: shiftKeyOnly,\r\n hitTolerance: 2,\r\n translateFeature: false,\r\n scale: true,\r\n rotate: false,\r\n keepAspectRatio: undefined,\r\n translate: true,\r\n stretch: true\r\n });\r\n map.addInteraction(this.interaction);\r\n this.setHandleStyle();\r\n\r\n this.interaction.on (['select'], (e) => {\r\n if (this.firstPoint && e.feature.length) {\r\n this.interaction.setCenter(e.feature[0].getGeometry().getFirstCoordinate());\r\n }\r\n });\r\n\r\n this.interaction.on (['rotatestart', 'translatestart'], (e) => {\t// Rotation\r\n this.startangle = e.feature.get('angle') || 0;\r\n // Translation\r\n this.d = [0, 0];\r\n });\r\n this.interaction.on('rotating', (e) => {\r\n // Set angle attribute to be used on style !\r\n e.feature.set('angle', this.startangle - e.angle);\r\n });\r\n this.interaction.on('translating', (e) => {\r\n this.d[0] += e.delta[0];\r\n this.d[1] += e.delta[1];\r\n });\r\n\r\n this.interaction.on(['rotateend', 'translateend', 'scaleend'], () => {\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawBoxEnd, this.feat.getGeometry().getCoordinates()[0]);\r\n });\r\n }\r\n\r\n setHandleStyle() {\r\n if (this.interaction === undefined) {\r\n return;\r\n }\r\n const $jq = $.noConflict();\r\n if ($jq('#style').prop('checked')) {\t// Style the rotate handle\r\n const circle = new RegularShape({\r\n fill: new Fill({color: [255, 255, 255, 0.01]}),\r\n stroke: new Stroke({width: 1, color: [0, 0, 0, 0.01]}),\r\n radius: 8,\r\n points: 10\r\n });\r\n this.interaction.setStyle ('rotate',\r\n new Style(\r\n {\ttext: new Text ({\r\n text: '\\uf0e2',\r\n font: '16px Fontawesome',\r\n textAlign: 'left',\r\n fill: new Fill({ color: 'red' })\r\n }\r\n ),\r\n image: circle\r\n }));\r\n // Center of rotation\r\n this.interaction.setStyle ('rotate0',\r\n new Style(\r\n {\ttext: new Text (\r\n {\ttext: '\\uf0e2',\r\n font: '20px Fontawesome',\r\n fill: new Fill({ color: [255, 255, 255, 0.8] }),\r\n stroke: new Stroke({ width: 2, color: 'red' })\r\n }),\r\n }));\r\n // Style the move handle\r\n this.interaction.setStyle('translate',\r\n new Style(\r\n {\ttext: new Text (\r\n {\ttext: '\\uf047',\r\n font: '20px Fontawesome',\r\n fill: new Fill({ color: [255, 255, 255, 0.8] }),\r\n stroke: new Stroke({ width: 2, color: 'red' })\r\n })\r\n }));\r\n } else {\r\n this.interaction.setDefaultStyle ();\r\n }\r\n // Refresh\r\n this.interaction.set('translate', this.interaction.get('translate'));\r\n }\r\n\r\n /**\r\n * Creates a new help tooltip\r\n */\r\n createHelpTooltip(map) {\r\n if (this.helpTooltipElement) {\r\n if (this.helpTooltipElement.parentNode !== null) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n }\r\n this.helpTooltipElement = document.createElement('div');\r\n this.helpTooltipElement.className = 'tooltip hidden';\r\n this.helpTooltip = new Overlay({\r\n element: this.helpTooltipElement,\r\n offset: [15, 0],\r\n positioning: 'center-left'\r\n });\r\n map.addOverlay(this.helpTooltip);\r\n }\r\n\r\n activate(map, options) {\r\n this.isActive = true;\r\n this.translate = options.translate;\r\n map.on('pointermove', this.pointerMoveHandler);\r\n\r\n const $jq = $.noConflict();\r\n $jq(map.getViewport()).on('mouseout', () => {\r\n $jq(this.helpTooltipElement).addClass('hidden');\r\n });\r\n this.addInteraction(map);\r\n this.addModifyInteraction(map);\r\n }\r\n\r\n deactivate(map) {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n if (map) {\r\n map.removeLayer(this.drawLayer);\r\n map.removeInteraction(this.draw);\r\n map.removeInteraction(this.interaction);\r\n map.removeOverlay(this.helpTooltip);\r\n this.feat = undefined;\r\n this.boxIsDrawn = false;\r\n this.interaction = undefined;\r\n if (this.helpTooltipElement) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n\r\n const tooltipStaticElements = document.getElementsByClassName('tooltip tooltip-static');\r\n while (tooltipStaticElements.length > 0) {\r\n const staticElement = tooltipStaticElements[0];\r\n staticElement.parentNode.removeChild(staticElement);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}\r\n","import * as $ from 'jquery';\r\nimport { Polygon, LineString, Circle } from 'ol/geom';\r\nimport { Vector } from 'ol/layer';\r\nimport { Vector as SourceVector } from 'ol/source';\r\nimport { MapImplementationStylesMeasure } from './Styles/Measure';\r\nimport { Draw } from 'ol/interaction';\r\nimport { Feature, Overlay } from 'ol';\r\nimport { unByKey } from 'ol/Observable';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nexport class MapImplementationDrawFeature {\r\n\r\n eventHandler;\r\n isActive = false;\r\n circleFeature; // The circle feature\r\n circleOverlay; // Overlay for the circle\r\n translate;\r\n singlePolygon = false;\r\n sketch;\r\n helpTooltipElement;\r\n helpTooltip;\r\n measureTooltipElement;\r\n measureTooltip;\r\n continueLineMsg = 'Click to continue drawing the line';\r\n draw; // global so we can remove it later\r\n drawLayer;\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n pointerMoveHandler(evt) {\r\n if (evt.dragging || !this.isActive) {\r\n return;\r\n }\r\n /** @type {string} */\r\n let helpMsg = this.translate['start_drawing']; // 'Click to start drawing';\r\n\r\n if (this.sketch) {\r\n const geom = (this.sketch.getGeometry());\r\n if (geom instanceof Polygon) {\r\n helpMsg = this.translate['continue_drawing']; // continuePolygonMsg;\r\n } else if (geom instanceof LineString) {\r\n helpMsg = this.continueLineMsg;\r\n }\r\n }\r\n this.helpTooltipElement.innerHTML = helpMsg;\r\n this.helpTooltip.setPosition(evt.coordinate);\r\n\r\n const $jq = $.noConflict();\r\n $jq(this.helpTooltipElement).removeClass('hidden');\r\n }\r\n\r\n addInteraction(map: any) {\r\n this.circleOverlay = new Vector({\r\n map: map,\r\n source: new SourceVector({\r\n useSpatialIndex: false // optional, might improve performance\r\n }),\r\n updateWhileAnimating: true, // optional, for instant visual feedback\r\n updateWhileInteracting: true // optional, for instant visual feedback\r\n });\r\n const source = new SourceVector();\r\n const drawStyle = new MapImplementationStylesMeasure();\r\n this.draw = new Draw({\r\n source: source,\r\n style: drawStyle.drawStyles(),\r\n type: 'Polygon',\r\n });\r\n this.drawLayer = new Vector({\r\n source: source,\r\n style: drawStyle.drawStyles()\r\n });\r\n\r\n map.addInteraction(this.draw);\r\n map.addLayer(this.drawLayer);\r\n\r\n this.createMeasureTooltip(map);\r\n this.createHelpTooltip(map);\r\n\r\n const listener: any = undefined;\r\n this.draw.on('drawstart',\r\n (evt: any) => {\r\n // set sketch\r\n this.sketch = evt.feature;\r\n if (this.singlePolygon) {\r\n this.drawLayer.getSource().clear();\r\n }\r\n\r\n const firstPoint = this.sketch.getGeometry().getCoordinates()[0][0];\r\n this.circleFeature = new Feature(new Circle(firstPoint, 0));\r\n this.circleOverlay.getSource().addFeature(this.circleFeature);\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureStart);\r\n }, this);\r\n\r\n this.draw.on('drawend',\r\n (evt) => {\r\n this.measureTooltipElement.className = 'tooltip tooltip-static';\r\n this.measureTooltip.setOffset([0, -7]);\r\n // unset sketch\r\n this.sketch = null;\r\n // unset tooltip so that a new one can be created\r\n this.measureTooltipElement = null;\r\n this.createMeasureTooltip(map);\r\n unByKey(listener);\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureEnd, evt.feature.getGeometry().getCoordinates());\r\n }, this);\r\n }\r\n\r\n /**\r\n * Creates a new help tooltip\r\n */\r\n createHelpTooltip(map) {\r\n if (this.helpTooltipElement) {\r\n if (this.helpTooltipElement.parentNode !== null) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n }\r\n this.helpTooltipElement = document.createElement('div');\r\n this.helpTooltipElement.className = 'tooltip hidden';\r\n this.helpTooltip = new Overlay({\r\n element: this.helpTooltipElement,\r\n offset: [15, 0],\r\n positioning: 'center-left',\r\n });\r\n map.addOverlay(this.helpTooltip);\r\n }\r\n\r\n\r\n /**\r\n * Creates a new measure tooltip\r\n */\r\n createMeasureTooltip(map) {\r\n if (this.measureTooltipElement) {\r\n if (this.measureTooltipElement.parentNode !== null) {\r\n this.measureTooltipElement.parentNode.removeChild(this.measureTooltipElement);\r\n }\r\n }\r\n this.measureTooltipElement = document.createElement('div');\r\n this.measureTooltipElement.className = 'maplibNgTooltip tooltip-measure';\r\n this.measureTooltip = new Overlay({\r\n element: this.measureTooltipElement,\r\n offset: [0, -15],\r\n positioning: 'bottom-center',\r\n });\r\n map.addOverlay(this.measureTooltip);\r\n }\r\n\r\n activate(map, options) {\r\n this.isActive = true;\r\n this.translate = options.translate;\r\n this.singlePolygon = options.singlePolygon;\r\n map.on('pointermove', this.pointerMoveHandler);\r\n\r\n const $jq = $.noConflict();\r\n $jq(map.getViewport()).on('mouseout', () => {\r\n $jq(this.helpTooltipElement).addClass('hidden');\r\n });\r\n this.addInteraction(map);\r\n }\r\n\r\n deactivate(map) {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n if (map) {\r\n map.removeLayer(this.drawLayer);\r\n this.measureTooltipElement.className = 'tooltip tooltip-static';\r\n this.measureTooltip.setOffset([0, -7]);\r\n this.measureTooltipElement = null;\r\n map.removeInteraction(this.draw);\r\n map.removeOverlay(this.circleOverlay);\r\n map.removeOverlay(this.measureTooltip);\r\n map.removeOverlay(this.helpTooltip);\r\n if (this.helpTooltipElement) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n if (this.measureTooltipElement) {\r\n this.measureTooltipElement.parentNode.removeChild(this.measureTooltipElement);\r\n }\r\n const tooltipStaticElements = document.getElementsByClassName('tooltip tooltip-static');\r\n while (tooltipStaticElements.length > 0) {\r\n const staticElement = tooltipStaticElements[0];\r\n staticElement.parentNode.removeChild(staticElement);\r\n }\r\n }\r\n this.eventHandler.triggerEvent(EventsEventTypes.MeasureEnd);\r\n }\r\n }\r\n\r\n}\r\n","/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { Collection, Feature, Overlay, Map } from 'ol';\r\nimport { getArea, getDistance } from 'ol/sphere';\r\nimport { click, noModifierKeys, shiftKeyOnly } from 'ol/events/condition';\r\nimport { Style, Fill, Stroke, RegularShape, Text, Circle as CircleStyle } from 'ol/style';\r\nimport { Point, LineString, MultiLineString, LinearRing, Polygon, MultiPoint, MultiPolygon, Geometry } from 'ol/geom';\r\nimport Draw, {createBox} from 'ol/interaction/Draw';\r\nimport { DoubleClickZoom, Modify, Select, Snap } from 'ol/interaction';\r\nimport SnapGuides from 'ol-ext/interaction/SnapGuides';\r\nimport Transform from 'ol-ext/interaction/Transform';\r\nimport { unByKey } from 'ol/Observable';\r\nimport { Vector as VectorLayer } from 'ol/layer';\r\nimport { GeoJSON } from 'ol/format';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nimport { MapImplementationStylesMeasure } from './Styles/Measure';\r\nimport { MapImplementationStylesJson } from './Styles/Json';\r\nimport { UtilsGuid } from '../Utils/Guid';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { MapImplementationTransform } from './Transform';\r\nimport * as jsts from 'jsts';\r\nimport { StyleFunction } from 'ol/style/Style';\r\nimport { FeatureLike } from 'ol/Feature';\r\n\r\nexport class MapImplementationDrawingManager {\r\n eventHandler;\r\n eventHandlers = {\r\n modify: [],\r\n transform: [],\r\n source: [],\r\n select: [],\r\n draw: []\r\n };\r\n text = false;\r\n textValue;\r\n style;\r\n customStyle;\r\n styleJson;\r\n type;\r\n isActive = false;\r\n draw; // global so we can remove it later\r\n modify;\r\n transform;\r\n snapInteractions: Snap[];\r\n snapGuides;\r\n select;\r\n selectFeatureInfo;\r\n listener;\r\n measureTooltipElement;\r\n measureTooltip;\r\n modificationActive = false;\r\n transformActive = false;\r\n format;\r\n features = new Collection>();\r\n source = new VectorSource({features: this.features});\r\n drawLayer;\r\n drawStyle = new MapImplementationStylesMeasure();\r\n jsonStyleFetcher = new MapImplementationStylesJson(undefined);\r\n guidCreator = new UtilsGuid();\r\n selectedFeatureId;\r\n selectedFeature;\r\n geometryFunction;\r\n showMeasurements;\r\n buffer;\r\n transformManager = new MapImplementationTransform();\r\n epsgCode;\r\n private options;\r\n\r\n modifyStyle = (() => {\r\n const styles = {};\r\n styles['Polygon'] = [\r\n new Style({\r\n stroke: new Stroke({\r\n color: 'blue',\r\n width: 1,\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(0, 0, 255, 0.1)',\r\n }),\r\n }),\r\n new Style({\r\n image: new CircleStyle({\r\n radius: 3,\r\n fill: new Fill({\r\n color: 'orange',\r\n })\r\n }),\r\n geometry: (feature) => {\r\n // return the coordinates of the first ring of the polygon as Multipoint\r\n const geoms = feature.getGeometry() as Polygon;\r\n const coords = geoms.getCoordinates();\r\n return new MultiPoint(coords[0]);\r\n }\r\n })\r\n ];\r\n styles['MultiPolygon'] = styles['Polygon'];\r\n styles['LineString'] = [\r\n new Style({\r\n stroke: new Stroke({\r\n color: 'blue',\r\n width: 1,\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(0, 0, 255, 0.1)',\r\n }),\r\n }),\r\n new Style({\r\n image: new CircleStyle({\r\n radius: 3,\r\n fill: new Fill({\r\n color: 'orange',\r\n })\r\n }),\r\n geometry: (feature) => {\r\n // return the coordinates as Multipoint\r\n const geoms = feature.getGeometry() as LineString;\r\n const coords = geoms.getCoordinates();\r\n return new MultiPoint(coords);\r\n }\r\n })\r\n ];\r\n styles['MultiLineString'] = styles['LineString'];\r\n styles['Point'] = [\r\n new Style({\r\n image: new CircleStyle({\r\n radius: 5,\r\n fill: new Fill({\r\n color: 'orange',\r\n })\r\n }),\r\n zIndex: 100000,\r\n })\r\n ];\r\n styles['MultiPoint'] = styles['Point'];\r\n styles['GeometryCollection'] = styles['Polygon'].concat(styles['Point']);\r\n return (feature) => {\r\n return styles[feature.getGeometry().getType()];\r\n };\r\n })();\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n this.snapInteractions = [];\r\n }\r\n\r\n private _getFeatureObject(feature) {\r\n if (!feature) {\r\n return feature;\r\n }\r\n return {\r\n id: feature.getId(),\r\n style: feature.get('style'),\r\n type: feature.getGeometry().getType()\r\n };\r\n }\r\n\r\n private _addEventHandlersSource(): void {\r\n this._removeSpecificEventHandlers('source');\r\n this.eventHandlers['source'] = [];\r\n\r\n this.eventHandlers['source'].push(this.source.on('addfeature',\r\n (evt) => {\r\n if (!evt.feature.getId()) {\r\n evt.feature.setId(this.guidCreator.newGuid());\r\n }\r\n this._drawFeatureEnd();\r\n }\r\n ));\r\n this.eventHandlers['source'].push(this.source.on('removefeature',\r\n () => {\r\n this._drawFeatureEnd();\r\n }\r\n ));\r\n }\r\n\r\n private _addEventHandlersModify(map: Map): void {\r\n this._removeSpecificEventHandlers('modify');\r\n this.eventHandlers['modify'] = [];\r\n this.eventHandlers['modify'].push(this.modify.on('modifystart',\r\n () => {\r\n this.modificationActive = true;\r\n }, this));\r\n this.eventHandlers['modify'].push(this.modify.on('modifyend',\r\n (evt) => {\r\n const feature = evt.features.getArray()[0];\r\n feature.setProperties({measurement: this._getMeasurements(feature.getGeometry(), map)});\r\n this.eventHandler.triggerEvent(EventsEventTypes.ModifyFeatureEnd, this._writeFeatures([feature]));\r\n this.modificationActive = false;\r\n this._drawFeatureEnd();\r\n }, this));\r\n }\r\n\r\n private _addEventHandlersTransform(map: Map): void {\r\n this._removeSpecificEventHandlers('transform');\r\n this.eventHandlers['transform'] = [];\r\n this.eventHandlers['transform'].push(this.transform.on(['rotatestart', 'translatestart'],\r\n () => {\r\n this.transformActive = true;\r\n }, this));\r\n this.eventHandlers['transform'].push(this.transform.on(['rotateend', 'translateend', 'scaleend'],\r\n (evt) => {\r\n const feature = evt.feature;\r\n feature.setProperties({measurement: this._getMeasurements(feature.getGeometry(), map)});\r\n this.transformActive = false;\r\n this._drawFeatureEnd();\r\n }, this)\r\n );\r\n }\r\n\r\n private _addEventHandlersSelect(): void {\r\n this._removeSpecificEventHandlers('select');\r\n this.eventHandlers['select'] = [];\r\n this.eventHandlers['select'].push(this.select.on('select',\r\n (e) => {\r\n const selectedFeatures = e.selected;\r\n if (selectedFeatures.length === 1) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureSelect, this._getFeatureObject(selectedFeatures[0]));\r\n } else {\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureSelect, undefined);\r\n }\r\n }, this));\r\n }\r\n\r\n private _addEventHandlersShowMeasurements(map: Map): void {\r\n const removeSingleFeature = () => {\r\n if (this.options.onlyOneFeature) {\r\n const features = this.source.getFeatures();\r\n if (features.length === 1) {\r\n this.source.removeFeature(features[0]);\r\n }\r\n }\r\n };\r\n this._removeSpecificEventHandlers('draw');\r\n this.eventHandlers['draw'] = [];\r\n if (this.draw) {\r\n this.eventHandlers['draw'].push(this.draw.on('drawstart',\r\n (evt) => {\r\n removeSingleFeature();\r\n this._showTooltip(evt, map);\r\n }, this));\r\n this.eventHandlers['draw'].push(this.draw.on('drawend',\r\n () => this._removeMeasureTooltip(map)\r\n , this));\r\n }\r\n if (this.modify) {\r\n this.eventHandlers['modify'].push(this.modify.on('modifystart',\r\n (evt) => this._showTooltip(evt, map)\r\n , this));\r\n this.eventHandlers['modify'].push(this.modify.on('modifyend',\r\n () => this._removeMeasureTooltip(map)\r\n , this));\r\n }\r\n }\r\n\r\n private _addEventHandlerBuffer(): void {\r\n this.eventHandlers['draw'].push(this.draw.on('drawend',\r\n (evt) => this._showBuffuer(evt)\r\n , this));\r\n }\r\n\r\n private _addEventHandlersDraw(map: Map): void {\r\n this.eventHandlers['draw'].push(this.draw.on('drawstart',\r\n () => this._removeDoubleClickZoom(map)\r\n ));\r\n this.eventHandlers['draw'].push(this.draw.on('drawend',\r\n (evt) => evt.feature.setProperties({measurement: this._getMeasurements(evt.feature.getGeometry(), map)})\r\n ));\r\n }\r\n\r\n private _addEventHandlers(map: Map, showMeasurements): void {\r\n if (this.source) {\r\n this._addEventHandlersSource();\r\n }\r\n if (this.modify) {\r\n this._addEventHandlersModify(map);\r\n }\r\n if (this.transform) {\r\n this._addEventHandlersTransform(map);\r\n }\r\n if (this.select) {\r\n this._addEventHandlersSelect();\r\n }\r\n if (showMeasurements) {\r\n this._addEventHandlersShowMeasurements(map);\r\n }\r\n if (this.buffer) {\r\n this._addEventHandlerBuffer();\r\n }\r\n if (this.draw) {\r\n this._addEventHandlersDraw(map);\r\n }\r\n }\r\n\r\n private _showBuffuer(evt) {\r\n // add buffer when buffer in options is active\r\n const parser = new jsts.io.OL3Parser();\r\n parser.inject(\r\n Point,\r\n LineString,\r\n LinearRing,\r\n Polygon,\r\n MultiPoint,\r\n MultiLineString,\r\n MultiPolygon\r\n );\r\n // convert the OpenLayers geometry to a JSTS geometry\r\n const jstsGeom = parser.read(evt.feature.getGeometry());\r\n // create a buffer of 40 meters around each line\r\n const buffered = jstsGeom.buffer(this.buffer);\r\n // convert back from JSTS and replace the geometry on the feature\r\n evt.feature.setGeometry(parser.write(buffered));\r\n }\r\n\r\n private _showTooltip(evt, map: Map) {\r\n this._createMeasureTooltip(map);\r\n // set sketch\r\n const sketch = evt.feature || evt.features.getArray()[0];\r\n this.listener = sketch.getGeometry().on('change', (changeEvt) => {\r\n const output = this._getMeasurements(changeEvt.target, map);\r\n sketch.setProperties({measurement: output});\r\n this.measureTooltipElement.innerHTML = output;\r\n this.measureTooltip.setPosition(this._getTooltipCoord(changeEvt.target));\r\n });\r\n }\r\n\r\n private _getMeasurements(geom, map) {\r\n if (geom instanceof Polygon) {\r\n return this._formatArea(map, geom);\r\n } else if (geom instanceof LineString) {\r\n return this._formatLength(map, geom);\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n private _getTooltipCoord(geom) {\r\n if (geom instanceof Polygon) {\r\n return geom.getInteriorPoint().getCoordinates();\r\n } else if (geom instanceof LineString) {\r\n return geom.getLastCoordinate();\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n private _setSelectedStyle(feature) {\r\n if (!feature) {\r\n return;\r\n }\r\n const selectedColor = 'rgb(128, 128, 255)';\r\n let selectedStyles;\r\n this.jsonStyleFetcher.getStyle(feature, undefined);\r\n let featureStyle = feature.getStyle();\r\n if (!featureStyle) {\r\n featureStyle = this.style;\r\n }\r\n if (featureStyle.length) {\r\n featureStyle = featureStyle[0];\r\n }\r\n if (this.customStyle) {\r\n selectedStyles = this.customStyle;\r\n } else {\r\n switch (feature.getGeometry().getType()) {\r\n case('Point'):\r\n selectedStyles = this._setSelectedPointStyle(featureStyle, selectedColor);\r\n break;\r\n case('MultiPoint'):\r\n selectedStyles = this._setSelectedPointStyle(featureStyle, selectedColor);\r\n break;\r\n case('LineString'):\r\n selectedStyles = this._setSelectedLineStringStyle(featureStyle, selectedColor);\r\n break;\r\n case('MultiLineString'):\r\n selectedStyles = this._setSelectedLineStringStyle(featureStyle, selectedColor);\r\n break;\r\n case('MultiPolygon'):\r\n selectedStyles = this._setSelectedPolygonStyle(featureStyle, selectedColor);\r\n break;\r\n case('Polygon'):\r\n selectedStyles = this._setSelectedPolygonStyle(featureStyle, selectedColor);\r\n break;\r\n }\r\n }\r\n feature.setStyle(selectedStyles);\r\n }\r\n\r\n private _setSelectedPointStyle(featureStyle, selectedColor) {\r\n if (featureStyle.getText()) {\r\n return [this._setSelectedTextStyle(featureStyle, selectedColor), featureStyle];\r\n } else {\r\n return [new Style({\r\n image: new RegularShape({\r\n fill: new Fill({\r\n color: selectedColor\r\n }),\r\n radius: featureStyle.getImage().getRadius() + 3,\r\n points: featureStyle.getImage().getPoints()\r\n })\r\n }), featureStyle];\r\n }\r\n }\r\n\r\n private _setSelectedLineStringStyle(featureStyle, selectedColor) {\r\n return [\r\n new Style({\r\n stroke: new Stroke({\r\n color: selectedColor,\r\n lineDash: featureStyle.getStroke().getLineDash(),\r\n width: featureStyle.getStroke().getWidth() + 5\r\n })\r\n }),\r\n featureStyle,\r\n new Style({\r\n image: new CircleStyle({\r\n radius: 3,\r\n fill: new Fill({\r\n color: 'orange',\r\n })\r\n }),\r\n geometry: (feature) => {\r\n // return the coordinates of the LineString as Multipoint\r\n const geom = feature.getGeometry() as LineString;\r\n const coords = geom.getCoordinates();\r\n return new MultiPoint(coords);\r\n },\r\n zIndex: 99999\r\n })\r\n ];\r\n }\r\n\r\n private _setSelectedPolygonStyle(featureStyle, selectedColor) {\r\n return [\r\n new Style({\r\n fill: featureStyle.getFill(),\r\n stroke: new Stroke({\r\n color: selectedColor,\r\n width: 7\r\n })\r\n }),\r\n new Style({\r\n image: new CircleStyle({\r\n radius: 3,\r\n fill: new Fill({\r\n color: 'orange',\r\n })\r\n }),\r\n geometry: (feature) => {\r\n // return the coordinates of the first ring of the polygon as Multipoint\r\n const geom = feature.getGeometry() as Polygon;\r\n const coords = geom.getCoordinates();\r\n return new MultiPoint(coords[0]);\r\n }\r\n })\r\n ];\r\n }\r\n\r\n private _setSelectedTextStyle(featureStyle, selectedColor) {\r\n return new Style({\r\n text: new Text({\r\n font: featureStyle.getText().getFont(),\r\n text: featureStyle.getText().getText(),\r\n stroke: new Stroke({\r\n color: selectedColor,\r\n width: featureStyle.getStroke() ?\r\n featureStyle.getStroke().getWidth() + 5 :\r\n featureStyle.getText().getStroke().getWidth() + 5\r\n }),\r\n fill: featureStyle.getText().getFill()\r\n })\r\n });\r\n }\r\n\r\n private _removeEventHandlers() {\r\n this._removeSpecificEventHandlers('modify');\r\n this._removeSpecificEventHandlers('transform');\r\n this._removeSpecificEventHandlers('source');\r\n this._removeSpecificEventHandlers('select');\r\n this._removeSpecificEventHandlers('draw');\r\n }\r\n\r\n private _removeSpecificEventHandlers(name) {\r\n this.eventHandlers[name].forEach(unByKey);\r\n }\r\n\r\n private _drawFeatureEnd() {\r\n this._setFeatureDefaultValues(this.features.getArray());\r\n if (!this.modificationActive && !this.transformActive) {\r\n const sourceFeatures = this.source.getFeatures();\r\n if (sourceFeatures && sourceFeatures.length > 0) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureEnd, this._writeFeatures(sourceFeatures));\r\n } else {\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureEnd, undefined);\r\n }\r\n }\r\n }\r\n\r\n private _readFeatures(geojson) {\r\n geojson = this.transformManager.transformGeoJsonFeaturesFromGeographic(JSON.parse(geojson), this.epsgCode);\r\n if (geojson) {\r\n return this.format.readFeatures(geojson);\r\n }\r\n }\r\n\r\n private _writeFeatures(sourceFeatures) {\r\n let features = this.format.writeFeaturesObject(sourceFeatures);\r\n features = this.transformManager.transformGeoJsonFeaturesToGeographic(features, this.epsgCode);\r\n return JSON.stringify(features);\r\n }\r\n\r\n private _addDrawInteraction(map, type, geometryFunction) {\r\n if (this.draw && this.draw.type === type) {\r\n return;\r\n }\r\n if (this.draw) {\r\n map.removeInteraction(this.draw);\r\n }\r\n const drawOptions = {\r\n source: this.source,\r\n type: (type),\r\n condition: (event) => {\r\n return this._checkForNoKeys(event) && !this.modificationActive && !this.transformActive && !this._checkForEmptyText();\r\n }\r\n };\r\n if (geometryFunction) {\r\n drawOptions['geometryFunction'] = geometryFunction;\r\n }\r\n this.draw = new Draw(drawOptions);\r\n map.addInteraction(this.draw);\r\n }\r\n\r\n private _checkForEmptyText() {\r\n if (this.text) {\r\n if (this.style && this.style.text === '') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private _addTransformInteraction(map) {\r\n // https://viglino.github.io/ol-ext/doc/doc-pages/ol.interaction.Transform.html\r\n this.transform = new Transform ({\r\n layers: [this.drawLayer],\r\n addCondition: shiftKeyOnly,\r\n hitTolerance: 2,\r\n translateFeature: false,\r\n scale: true,\r\n rotate: true,\r\n keepAspectRatio: undefined,\r\n translate: true,\r\n stretch: true\r\n });\r\n map.addInteraction(this.transform);\r\n }\r\n\r\n private _addModifyInteraction(map) {\r\n if (this.modify) {\r\n map.removeInteraction(this.modify);\r\n }\r\n this.modify = new Modify({\r\n features: this.select.getFeatures(),\r\n condition: (event) => {\r\n return this._checkForNoKeys(event);\r\n },\r\n deleteCondition: (event) => {\r\n return this._checkForShiftKey(event);\r\n }\r\n });\r\n map.addInteraction(this.modify);\r\n this.eventHandlers['modify'].push(this.modify.on('modifystart',\r\n () => {\r\n this.modificationActive = true;\r\n }, this));\r\n this.eventHandlers['modify'].push(this.modify.on('modifyend',\r\n (evt) => {\r\n const feature = evt.features.getArray()[0];\r\n feature.setProperties({measurement: this._getMeasurements(feature.getGeometry(), map)});\r\n this.eventHandler.triggerEvent(EventsEventTypes.ModifyFeatureEnd, this._writeFeatures([feature]));\r\n\r\n this.modificationActive = false;\r\n this._drawFeatureEnd();\r\n }, this));\r\n\r\n }\r\n\r\n private _checkForShiftKey(event) {\r\n return shiftKeyOnly(event) &&\r\n event.type === 'pointerdown';\r\n }\r\n\r\n private _checkForNoKeys(event) {\r\n return event.type === 'pointerdown' && noModifierKeys(event);\r\n }\r\n\r\n private _addSnapInteraction(map) {\r\n\r\n this.snapInteractions.forEach(interaction => map.removeInteraction(interaction));\r\n\r\n map.getLayers().forEach((layer) => {\r\n if (layer instanceof VectorLayer) {\r\n const snap = new Snap({\r\n source: layer.getSource()\r\n });\r\n this.snapInteractions.push(snap);\r\n map.addInteraction(snap);\r\n }\r\n });\r\n }\r\n\r\n private _addSnapGuideInteraction(map) {\r\n const snapGuideOptions = {\r\n pixelTolerance: 10\r\n };\r\n if (this.snapGuides) {\r\n this.snapGuides.clearGuides();\r\n this.snapGuides.setActive(true);\r\n } else {\r\n this.snapGuides = new SnapGuides(snapGuideOptions);\r\n }\r\n\r\n if (this.draw) {\r\n this.snapGuides.setDrawInteraction(this.draw);\r\n }\r\n map.addInteraction(this.snapGuides);\r\n }\r\n\r\n private _addSelectInteraction(map) {\r\n if (this.select) {\r\n map.removeInteraction(this.select);\r\n }\r\n const selectOptions = {\r\n condition: click,\r\n layers: [this.drawLayer]\r\n };\r\n if (this.selectedFeature) {\r\n selectOptions['features'] = new Collection([this.selectedFeature]);\r\n }\r\n this.select = new Select(selectOptions);\r\n this.select.on('select', (evt) => {\r\n evt.selected.forEach(e => {\r\n this._setSelectedStyle(e);\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureSelect, this._getFeatureObject(e));\r\n });\r\n evt.deselected.forEach(e => e.setStyle(this.jsonStyleFetcher.getStyle(e, undefined)));\r\n });\r\n map.addInteraction(this.select);\r\n }\r\n\r\n private _addFeatureInfoInteraction(map: Map) {\r\n const selectOptions = {\r\n condition: click,\r\n layers: [this.drawLayer]\r\n };\r\n if (this.selectedFeature) {\r\n selectOptions['features'] = new Collection([this.selectedFeature]);\r\n }\r\n this.selectFeatureInfo = new Select(selectOptions);\r\n this.selectFeatureInfo.on('select', (evt) => {\r\n evt.selected.forEach(e => {\r\n this._setSelectedStyle(e);\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureSelect, this._getFeatureObject(e));\r\n });\r\n evt.deselected.forEach(e => e.setStyle(this.jsonStyleFetcher.getStyle(e, undefined)))\r\n });\r\n map.addInteraction(this.selectFeatureInfo);\r\n }\r\n\r\n private _initiateDrawing(newFeatures) {\r\n\r\n const filteredFeatures = newFeatures?.filter\r\n ? newFeatures.filter(feature => feature.values_?.geometry !== null)\r\n : newFeatures;\r\n this.features = new Collection(filteredFeatures);\r\n this.source = new VectorSource({features: this.features});\r\n\r\n if (!this.drawLayer) {\r\n const styleProxyFunction : StyleFunction = (feature) => {\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawGeoJsonEnd, feature);\r\n this._styleFunction(feature, this);\r\n };\r\n\r\n this.drawLayer = new VectorLayer({\r\n source: this.source,\r\n style: styleProxyFunction,\r\n zIndex: 999\r\n });\r\n this.drawLayer.set('sortingIndex', -1); // drawings should be on top of other layers\r\n this.drawLayer.set('id', 'drawing');\r\n } else {\r\n this.drawLayer.setSource(this.source);\r\n }\r\n }\r\n\r\n private _setFeatureDefaultValues(features: Feature[]) {\r\n features.forEach(feature => {\r\n if (!feature.getId()) {\r\n feature.setId(this.guidCreator.newGuid());\r\n }\r\n if (!feature.get('style')) {\r\n this._determineStyleFromGeometryType(feature);\r\n }\r\n });\r\n }\r\n\r\n private _determineStyleFromGeometryType(feature: Feature) {\r\n if (!feature) {\r\n // Might been deleted\r\n return;\r\n }\r\n\r\n switch (feature.getGeometry().getType()) {\r\n case('Point'):\r\n case('MultiPoint'):\r\n this._setPointStyle(feature);\r\n break;\r\n case('LineString'):\r\n case('MultiLineString'):\r\n case('MultiPolygon'):\r\n case('Polygon'):\r\n this._setStyleFromStyleJson(feature);\r\n break;\r\n }\r\n }\r\n\r\n private _setPointStyle(feature: Feature) {\r\n let properties;\r\n if (this.textValue) {\r\n properties = {\r\n style: {\r\n text: this._getTextFromInputStyle()\r\n }\r\n };\r\n } else {\r\n properties = {\r\n style: this.styleJson\r\n };\r\n }\r\n\r\n feature.setProperties(properties);\r\n }\r\n\r\n private _setStyleFromStyleJson(feature: Feature) {\r\n feature.setProperties({\r\n style: this.styleJson\r\n });\r\n }\r\n\r\n private _getTextFromInputStyle() {\r\n const textStyle = {\r\n // font: this.style[0].getText().getFont(),\r\n font: (this.style.textSize || 10) + 'px sans-serif',\r\n text: this.textValue,\r\n fill: {\r\n color: this.style.fill.color\r\n }\r\n };\r\n\r\n if (this.style.stroke) {\r\n const textStroke = {\r\n color: this.style.stroke.color,\r\n width: this.style.stroke.width\r\n };\r\n textStyle['stroke'] = textStroke;\r\n }\r\n return textStyle;\r\n }\r\n\r\n private _styleFunction(feature: FeatureLike, self) {\r\n if (!feature) {\r\n return;\r\n }\r\n\r\n self.jsonStyleFetcher.getStyle(feature);\r\n if (self.showMeasurements) {\r\n const measurement: string = feature.get('measurement');\r\n switch (feature.getGeometry().getType()) {\r\n case('Point'):\r\n return;\r\n case('LineString'):\r\n return self._addMeasurementsToLinestringStyle(feature, measurement);\r\n case('MultiPolygon'):\r\n case('Polygon'):\r\n return self._addMeasurementsToPolygonStyle(feature, measurement);\r\n }\r\n }\r\n }\r\n\r\n _addMeasurementsToLinestringStyle(feature: Feature, measurement: string) {\r\n const featureStyle = feature.getStyle()[0];\r\n const newFeatureStyle = new Style({\r\n stroke: featureStyle.getStroke(),\r\n text: new Text({\r\n font: featureStyle.getText().getFont(),\r\n text: measurement,\r\n fill: new Fill({\r\n color: '#000000'\r\n }),\r\n stroke: new Stroke({\r\n color: 'rgba(255,255,255,1)',\r\n width: 3\r\n })\r\n }\r\n )\r\n });\r\n feature.setStyle(newFeatureStyle);\r\n return newFeatureStyle;\r\n }\r\n\r\n _addMeasurementsToPolygonStyle(feature: Feature, measurement: string) {\r\n const featureStyle = feature.getStyle()[0];\r\n const newFeatureStyle = new Style({\r\n fill: featureStyle.getFill(),\r\n stroke: featureStyle.getStroke(),\r\n text: new Text({\r\n font: featureStyle.getText().getFont(),\r\n overflow: true,\r\n text: this._superscriptLabel(measurement),\r\n fill: new Fill({\r\n color: '#000000'\r\n }),\r\n stroke: new Stroke({\r\n color: 'rgba(255,255,255,1)',\r\n width: 3\r\n })\r\n }\r\n )\r\n });\r\n feature.setStyle(newFeatureStyle);\r\n return newFeatureStyle;\r\n }\r\n\r\n private _superscriptLabel(measurement: string) {\r\n const htmlElem = document.createElement('span');\r\n htmlElem.innerHTML = measurement;\r\n const children: Element[] = Array.from(htmlElem.children);\r\n children.forEach((child) => {\r\n if (child.tagName === 'SUP') {\r\n if (child.textContent.length <= 3 && child.textContent.length > 1) {\r\n child.textContent = String.fromCharCode(child.textContent.charCodeAt(0) + 128);\r\n } else if (child.textContent.length > 3 && child.textContent.length <= 9) {\r\n child.textContent = String.fromCharCode(child.textContent.charCodeAt(0) + 8256);\r\n }\r\n }\r\n\r\n });\r\n return htmlElem.textContent;\r\n }\r\n\r\n private _formatLength(map: Map, line: LineString): string {\r\n let length = 0;\r\n const coordinates = line.getCoordinates();\r\n const sourceProj = map.getView().getProjection().getCode();\r\n for (let i = 0, ii = coordinates.length - 1; i < ii; ++i) {\r\n const c1 = this.transformManager.transformToGeographic(coordinates[i], sourceProj);\r\n const c2 = this.transformManager.transformToGeographic(coordinates[i + 1], sourceProj);\r\n length += getDistance(c1, c2);\r\n }\r\n\r\n return (length > 10000)\r\n ? (Math.round(length / 1000 * 100) / 100) + ' ' + 'km'\r\n : (Math.round(length * 100) / 100) + ' ' + 'm';\r\n }\r\n\r\n private _formatArea(map: Map, polygon: Polygon): string {\r\n const sourceProj = map.getView().getProjection().getCode();\r\n const area = Math.abs(getArea(polygon, {projection: sourceProj}));\r\n\r\n return (area > 1000000)\r\n ? (Math.round(area / 1000000 * 100) / 100) + ' ' + 'km²'\r\n : (Math.round(area * 100) / 100) + ' ' + 'm²';\r\n }\r\n\r\n private _createMeasureTooltip(map: Map) {\r\n this._removeMeasureTooltip(map);\r\n this.measureTooltipElement = document.createElement('div');\r\n this.measureTooltipElement.className = 'maplibNgTooltip tooltip-measure';\r\n this.measureTooltip = new Overlay({\r\n element: this.measureTooltipElement,\r\n offset: [0, -15],\r\n positioning: 'bottom-center'\r\n });\r\n map.addOverlay(this.measureTooltip);\r\n }\r\n\r\n private _removeMeasureTooltip(map: Map) {\r\n this.measureTooltipElement?.parentNode?.removeChild(this.measureTooltipElement);\r\n map.removeOverlay(this.measureTooltip);\r\n }\r\n\r\n private _removeDoubleClickZoom(map: Map) {\r\n map.getInteractions().forEach((interaction) => {\r\n if (interaction instanceof DoubleClickZoom) {\r\n map.removeInteraction(interaction);\r\n }\r\n });\r\n }\r\n\r\n private _applyDoubleClickZoom(map: Map) {\r\n this._removeDoubleClickZoom(map);\r\n map.addInteraction(\r\n new DoubleClickZoom()\r\n );\r\n }\r\n\r\n private _initializeFormat(map: Map) {\r\n this.epsgCode = map.getView().getProjection().getCode();\r\n if (!this.format) {\r\n this.format = new GeoJSON();\r\n }\r\n }\r\n\r\n getLayerSource() {\r\n return this.source;\r\n }\r\n\r\n reactivate(map: Map, options) {\r\n this.options = options;\r\n this._initializeFormat(map);\r\n this.showMeasurements = options.showMeasurements;\r\n if (options.textValue && options.textValue.length > 0) {\r\n this.textValue = options.textValue;\r\n } else {\r\n this.textValue = undefined;\r\n }\r\n if (!options.style && !this.style) {\r\n this.style = this.drawStyle.styles();\r\n } else if (options.style) {\r\n this.style = new MapImplementationStylesJson(options.style).getStyle(undefined, undefined);\r\n this.styleJson = options.style;\r\n }\r\n if (options.styleDef === 'modifyStyle') {\r\n this.customStyle = this.modifyStyle;\r\n }\r\n\r\n if (options.GeoJSON) {\r\n if (options.GeoJSON === 'remove') {\r\n this.source.clear();\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureEnd, undefined);\r\n } else if (options.deleteFeature && options.selectedFeatureId) {\r\n this.source.removeFeature(this.source.getFeatureById(options.selectedFeatureId) as Feature);\r\n this._addSelectInteraction(map);\r\n this._addModifyInteraction(map);\r\n this.selectedFeatureId = undefined;\r\n this.selectedFeature = undefined;\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureEnd, this._writeFeatures(this.source.getFeatures()));\r\n } else {\r\n this.source.clear();\r\n const features = this._readFeatures(options.GeoJSON);\r\n this.source.addFeatures(features);\r\n }\r\n }\r\n if (!options.deleteFeature && options.selectedFeatureId) {\r\n if (options.selectionActive) {\r\n this.selectedFeatureId = options.selectedFeatureId;\r\n this.selectedFeature = this.source.getFeatureById(this.selectedFeatureId);\r\n this._determineStyleFromGeometryType(this.selectedFeature);\r\n this._setSelectedStyle(this.selectedFeature);\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureEnd, this._writeFeatures(this.source.getFeatures()));\r\n }\r\n } else {\r\n this.selectedFeatureId = undefined;\r\n this.selectedFeature = undefined;\r\n }\r\n if (options.geometryFunction === 'Box' ) {\r\n this.geometryFunction = createBox();\r\n } else {\r\n this.geometryFunction = undefined;\r\n }\r\n switch (options.mode) {\r\n case('modify'):\r\n if (this.draw) {\r\n map.removeInteraction(this.draw);\r\n this.draw = undefined;\r\n }\r\n this._addSelectInteraction(map);\r\n this._addModifyInteraction(map);\r\n\r\n if (this.selectedFeature) {\r\n this._setSelectedStyle(this.selectedFeature);\r\n }\r\n break;\r\n case('draw'):\r\n if (this.modify) {\r\n map.removeInteraction(this.modify);\r\n this.modify = undefined;\r\n }\r\n if (this.select) {\r\n map.removeInteraction(this.select);\r\n this.select = undefined;\r\n }\r\n if (options.type !== 'Active') {\r\n this.type = options.type;\r\n this.text = false;\r\n }\r\n if (options.type === 'Text') {\r\n this.type = 'Point';\r\n this.text = true;\r\n }\r\n this._addDrawInteraction(map, this.type, this.geometryFunction);\r\n break;\r\n }\r\n if ((this.draw || this.modify) && options.snapGuides) {\r\n // Snap always on\r\n this._addSnapInteraction(map);\r\n this._addSnapGuideInteraction(map);\r\n }\r\n this._addEventHandlers(map, options.showMeasurements);\r\n\r\n }\r\n\r\n activate(map: Map, options) {\r\n this.options = options;\r\n const wasActive = this.isActive;\r\n if (wasActive) {\r\n return;\r\n }\r\n this._initializeFormat(map);\r\n this.isActive = true;\r\n this.text = false;\r\n this.showMeasurements = options.showMeasurements;\r\n this.buffer = options.buffer;\r\n if (options.textValue && options.textValue.length > 0) {\r\n this.textValue = options.textValue;\r\n } else {\r\n this.textValue = undefined;\r\n }\r\n if (!options.style && !this.style) {\r\n this.style = this.drawStyle.styles();\r\n } else if (options.style) {\r\n this.style = new MapImplementationStylesJson(options.style).getStyle(undefined, undefined);\r\n this.styleJson = options.style;\r\n }\r\n if (options.GeoJSON) {\r\n if (options.GeoJSON === 'remove') {\r\n this._initiateDrawing(undefined);\r\n } else if (options.deleteFeature && options.selectedFeatureId) {\r\n this.source.removeFeature(this.source.getFeatureById(options.selectedFeatureId) as Feature);\r\n this.selectedFeatureId = undefined;\r\n this.selectedFeature = undefined;\r\n this._initiateDrawing(this.features.getArray());\r\n this.eventHandler.triggerEvent(EventsEventTypes.DrawFeatureEnd, this._writeFeatures(this.source.getFeatures()));\r\n } else {\r\n this._initiateDrawing(this._readFeatures(options.GeoJSON));\r\n if (options.showFeatureInfo) {\r\n this._addFeatureInfoInteraction(map);\r\n }\r\n }\r\n } else {\r\n this._initiateDrawing(this.features.getArray());\r\n }\r\n if (options.geometryFunction === 'Box' ) {\r\n this.geometryFunction = createBox();\r\n } else {\r\n this.geometryFunction = undefined;\r\n }\r\n if (!options.deleteFeature && options.selectedFeatureId) {\r\n if (options.selectionActive) {\r\n this.selectedFeatureId = options.selectedFeatureId;\r\n this.selectedFeature = this.source.getFeatureById(this.selectedFeatureId);\r\n this._determineStyleFromGeometryType(this.selectedFeature);\r\n this._setSelectedStyle(this.selectedFeature);\r\n }\r\n } else {\r\n this.selectedFeatureId = undefined;\r\n this.selectedFeature = undefined;\r\n }\r\n map.getLayers().forEach((layer) => {\r\n if (layer && (layer.get('id') === 'drawing')) {\r\n map.removeLayer(layer);\r\n }\r\n });\r\n map.addLayer(this.drawLayer);\r\n\r\n switch (options.mode) {\r\n case('modify'):\r\n if (!this.draw) {\r\n this._addDrawInteraction(map, this.type, this.geometryFunction);\r\n }\r\n if (!options.transformObj) {\r\n this._addSelectInteraction(map);\r\n this._addModifyInteraction(map);\r\n } else {\r\n this._addTransformInteraction(map);\r\n }\r\n break;\r\n case('draw'):\r\n if (options.type !== 'Active') {\r\n this.type = options.type;\r\n this.text = false;\r\n }\r\n if (options.type === 'Text') {\r\n this.type = 'Point';\r\n this.text = true;\r\n }\r\n this._addDrawInteraction(map, this.type, this.geometryFunction);\r\n break;\r\n }\r\n\r\n // Snap always on\r\n if (this.draw && options.snapGuides) {\r\n this._addSnapInteraction(map);\r\n this._addSnapGuideInteraction(map);\r\n }\r\n\r\n this._addEventHandlers(map, options.showMeasurements);\r\n\r\n this._drawFeatureEnd();\r\n }\r\n\r\n deactivate(map: Map) {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n if (map) {\r\n if (this.modify) {\r\n map.removeInteraction(this.modify);\r\n this.modify.setActive(false);\r\n this.modify = undefined;\r\n }\r\n this.snapInteractions.forEach(interaction => map.removeInteraction(interaction));\r\n if (this.snapGuides) {\r\n this.snapGuides.clearGuides();\r\n map.removeInteraction(this.snapGuides);\r\n this.snapGuides.setActive(false);\r\n this.snapGuides = undefined;\r\n }\r\n if (this.select) {\r\n map.removeInteraction(this.select);\r\n this.select.setActive(false);\r\n this.select = undefined;\r\n }\r\n if (this.transform) {\r\n map.removeInteraction(this.transform);\r\n this.transform.setActive(false);\r\n this.transform = undefined;\r\n }\r\n this._removeEventHandlers();\r\n }\r\n }\r\n\r\n if (map) {\r\n map.removeInteraction(this.draw);\r\n map.removeInteraction(this.transform);\r\n map.removeInteraction(this.modify);\r\n this.snapInteractions.forEach(interaction => map.removeInteraction(interaction));\r\n map.removeInteraction(this.snapGuides);\r\n map.removeInteraction(this.select);\r\n this._applyDoubleClickZoom(map);\r\n }\r\n\r\n this.eventHandlers = {\r\n modify: [],\r\n transform: [],\r\n source: [],\r\n select: [],\r\n draw: []\r\n };\r\n this.text = false;\r\n this.textValue = undefined;\r\n this.style = undefined;\r\n this.customStyle = undefined;\r\n this.styleJson = undefined;\r\n this.type = undefined;\r\n this.isActive = false;\r\n this.draw = undefined;\r\n this.modify = undefined;\r\n this.transform = undefined;\r\n this.snapInteractions = [];\r\n this.snapGuides = undefined;\r\n this.select = undefined;\r\n this.listener = undefined;\r\n this.measureTooltipElement = undefined;\r\n this.measureTooltip = undefined;\r\n this.modificationActive = false;\r\n this.transformActive = false;\r\n this.features = new Collection();\r\n this.drawLayer = undefined;\r\n this.selectedFeatureId = undefined;\r\n this.selectedFeature = undefined;\r\n this.showMeasurements = undefined;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/indent */\r\nimport { ScaleLine } from 'ol/control';\r\nimport { Graticule } from 'ol/layer';\r\nimport { Stroke } from 'ol/style';\r\nimport { getPointResolution, getTransform } from 'ol/proj';\r\nimport domtoimage from 'dom-to-image-more';\r\nimport jsPDF from 'jspdf/dist/jspdf.umd.js';\r\nimport { METERS_PER_UNIT } from 'ol/proj/Units';\r\nimport * as proj4x from 'proj4';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { MapImplementationTransform } from './Transform';\r\nimport { applyTransform, Extent as OlExtent } from 'ol/extent';\r\nimport { addBoxes } from '../Utils/AddBoxes';\r\nimport { addLegends, loadLegends, ILegendImage, LegendExtent } from '../Utils/AddLegends';\r\nimport { drawGraticule } from '../Utils/DrawGraticule';\r\nimport { setSize } from '../Utils/SetSize';\r\nimport { GisExtent } from '../Domain/Definitions';\r\n\r\ninterface InterfaceCoordinates {\r\n x: number;\r\n y: number;\r\n z?: number;\r\n m?: number;\r\n}\r\n\r\ninterface InfoObject {\r\n pixelsPerMm: number;\r\n dim: number[];\r\n scale: number;\r\n width: number;\r\n height: number;\r\n scaleResolution: number;\r\n smallSheet: boolean;\r\n infoFieldHeight: number;\r\n infoFieldMargin: number;\r\n viewResolution: number;\r\n resolution: number;\r\n}\r\n\r\ntype TemplateCoordinates = number[] | InterfaceCoordinates;\r\nexport class MapImplementationExport {\r\n layout: any;\r\n mapExportEvents: any;\r\n printRectangle: any;\r\n mapExtent: any;\r\n proj4: TemplateCoordinates;\r\n exportActive = false;\r\n METERS_PER_UNIT: any;\r\n eventHandler: { triggerEvent: (arg0: string) => void };\r\n transformService: MapImplementationTransform;\r\n errorLogger: (err: string) => void;\r\n infoLogger: (info: string) => void;\r\n tilesLoaded = 0;\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n this.proj4 = (proj4x as any).default;\r\n this.METERS_PER_UNIT = METERS_PER_UNIT;\r\n }\r\n\r\n activatePdf(map: any, options: any): void {\r\n map.getView().setConstrainResolution(false); // Temporary remove map-constraints to be able to generate any scale\r\n this.transformService = new MapImplementationTransform();\r\n\r\n const scaleLine = new ScaleLine(\r\n {\r\n units: 'metric',\r\n bar: true,\r\n steps: 4,\r\n text: true,\r\n minWidth: 140\r\n }\r\n );\r\n if (options?.scale.show) {\r\n map.addControl(scaleLine);\r\n }\r\n\r\n this.setLoggers(options);\r\n const graticule = this.buildGraticule(map);\r\n this.handleGraticuleDebug(graticule, map, options);\r\n const pdfInfo: InfoObject = this.getSizeInfoFromOptions(options, map);\r\n\r\n\r\n // Logging progress\r\n const sources = map.getAllLayers();\r\n sources.forEach(src => src.on('postrender', () => ++this.tilesLoaded));\r\n\r\n const info = setInterval(() =>\r\n this.infoLogger(`Working - ${this.tilesLoaded} tiles loaded`)\r\n , 5000);\r\n\r\n const onComplete = () => {\r\n clearInterval(info);\r\n this.infoLogger('Render complete - creating pdf');\r\n this.createPdf(map, options, pdfInfo, scaleLine, graticule);\r\n };\r\n\r\n map.once('rendercomplete', onComplete);\r\n\r\n // Set print size\r\n this.setPrintSize(scaleLine, pdfInfo.resolution, map, pdfInfo.width, pdfInfo.height, pdfInfo.scaleResolution);\r\n }\r\n\r\n public activateImg(callback: any, map: any, options: any): void {\r\n let done: boolean;\r\n const createImage = (): void => {\r\n if (done) {\r\n return;\r\n }\r\n\r\n done = true;\r\n const mapCanvas = document.createElement('canvas');\r\n const size = map.getSize();\r\n mapCanvas.width = size[0];\r\n mapCanvas.height = size[1];\r\n const mapContext = mapCanvas.getContext('2d');\r\n Array.prototype.forEach.call(\r\n document.querySelectorAll('.ol-layer canvas'),\r\n (canvas: any) => {\r\n if (canvas.width > 0) {\r\n const opacity = canvas.parentNode.style.opacity;\r\n mapContext.globalAlpha = opacity === '' ? 1 : Number(opacity);\r\n if (options && options.format === 'image/jpeg') {\r\n mapContext.fillStyle = '#fff';\r\n mapContext.fillRect(0, 0, canvas.width, canvas.height);\r\n }\r\n const transform = canvas.style.transform;\r\n // Get the transform parameters from the style's transform matrix\r\n const matrix = transform\r\n .match(/^matrix\\(([^(]*)\\)$/)[1]\r\n .split(',')\r\n .map(Number);\r\n // Apply the transform to the export map context\r\n CanvasRenderingContext2D.prototype.setTransform.apply(\r\n mapContext,\r\n matrix\r\n );\r\n mapContext.drawImage(canvas, 0, 0);\r\n }\r\n }\r\n );\r\n callback(mapCanvas, options);\r\n };\r\n\r\n map.once('rendercomplete', createImage);\r\n setTimeout(createImage, 60000);\r\n map.renderSync();\r\n }\r\n\r\n private createPdf(map: any, options: any, i: InfoObject, scaleLine: ScaleLine, graticule: Graticule) {\r\n const center: [number, number] = map.getView().getCenter();\r\n const gridConstantX: number = i.scaleResolution * i.width / 2;\r\n const gridConstantY: number = i.scaleResolution * i.height / 2;\r\n const minX = +(center[0] - gridConstantX).toFixed(2);\r\n const maxX = +(center[0] + gridConstantX).toFixed(2);\r\n\r\n const minY = +(center[1] - gridConstantY).toFixed(2);\r\n const maxY = +(center[1] + gridConstantY).toFixed(2);\r\n\r\n const linesX: number[] = [];\r\n const linesY: number[] = [];\r\n\r\n const tenCm = 100 * i.pixelsPerMm * i.scaleResolution;\r\n const lineMeter = Math.round(tenCm / 10) * 10;\r\n\r\n let xPos = Math.round(minX / lineMeter) * lineMeter;\r\n while (xPos < maxX) {\r\n if (xPos > minX) {\r\n linesX.push(Number(xPos.toFixed(0)));\r\n }\r\n xPos = xPos + lineMeter;\r\n }\r\n let yPos = Math.round(minY / lineMeter) * lineMeter;\r\n while (yPos < maxY) {\r\n if (yPos > minY) {\r\n linesY.push(Number(yPos.toFixed(0)));\r\n }\r\n yPos = yPos + lineMeter;\r\n }\r\n\r\n const exportOptions = {\r\n filter: element => {\r\n const className = element.className || '';\r\n return (\r\n className.indexOf('ol-control') === -1 ||\r\n className.indexOf('ol-scale') > -1 ||\r\n (className.indexOf('ol-attribution') > -1 &&\r\n className.indexOf('ol-uncollapsible'))\r\n );\r\n },\r\n };\r\n\r\n // we add width and height to exportOptions\r\n exportOptions['width'] = i.width;\r\n exportOptions['height'] = i.height;\r\n exportOptions['bgcolor'] = 'rgba(255,255,255,1)';\r\n\r\n const pdf = new jsPDF(options.format, 'mm', options?.sheetSize);\r\n\r\n const epsg: string = map.getView().getProjection().getCode();\r\n const gisExtent: GisExtent = { epsg: epsg, extent: [minX, minY, maxX, maxY] };\r\n // const legendImages = loadLegends(options, gisExtent, i.pixelsPerMm, pdf, this.errorLogger);\r\n // Use 5.905511811023622 as default pixelsPerMm for legends for keeping it readable\r\n const legendImages = loadLegends(options, gisExtent, 5.905511811023622, pdf, this.errorLogger);\r\n\r\n domtoimage.toJpeg(map.getViewport(), exportOptions)\r\n .then(dataUrl => {\r\n this.addImageToPdf(dataUrl, pdf, options, i);\r\n drawGraticule(options, pdf, minX, maxY, maxX, minY, i.dim, linesX, linesY);\r\n pdf.setLineDashPattern([1, 0], 1);\r\n this.frameInfoField(pdf, options, i);\r\n }).then(() =>\r\n this.handleLegends(legendImages, pdf, options, i)\r\n ).then(() => {\r\n this.frameMap(pdf, options, i);\r\n }).then(() => {\r\n pdf.save(`map_${options.format}_${options.sheetSize}.pdf`);\r\n this.resetOriginalMapSize(map, scaleLine, graticule, options, i);\r\n map.getView().setConstrainResolution(true); // reset view-constraints\r\n this.eventHandler.triggerEvent(EventsEventTypes.ExportDone); \r\n });\r\n }\r\n\r\n private frameMap(pdf: jsPDF, options: any, i: InfoObject) {\r\n if (!i.smallSheet) {\r\n pdf.setPage(1);\r\n pdf.rect(options.margins.left, options.margins.top, i.dim[0], i.dim[1], 'S');\r\n }\r\n }\r\n\r\n private frameInfoField(pdf: jsPDF, options: any, i: InfoObject) {\r\n if (!i.smallSheet) {\r\n // 200 for resolution here to avoid different sizes for icon/northarrow\r\n addBoxes(options, i.dim, i.infoFieldMargin, pdf, i.infoFieldHeight, 200);\r\n }\r\n }\r\n\r\n private addImageToPdf(dataUrl: any, pdf: jsPDF, options: any, i: InfoObject) {\r\n if (i.smallSheet) {\r\n pdf.addImage(dataUrl, 'JPEG', 0, 0, i.dim[0], i.dim[1]);\r\n } else {\r\n pdf.addImage(dataUrl, 'JPEG', options.margins.left, options.margins.top, i.dim[0], i.dim[1]);\r\n }\r\n }\r\n\r\n private resetOriginalMapSize(map: any, scaleLine: ScaleLine, graticule: Graticule, options: any, i: InfoObject) {\r\n scaleLine.setDpi(i.resolution);\r\n map.getTargetElement().style.width = '';\r\n map.getTargetElement().style.height = '';\r\n map.updateSize();\r\n map.getView().setResolution(i.viewResolution);\r\n map.removeLayer(graticule);\r\n document.body.style.cursor = 'auto';\r\n if (options?.scale.show) {\r\n map.removeControl(scaleLine);\r\n }\r\n }\r\n\r\n private setPrintSize(scaleLine: any, resolution: any, map: any, width: number, height: number, scaleResolution: number) {\r\n scaleLine.setDpi(resolution);\r\n map.getTargetElement().style.width = width + 'px';\r\n map.getTargetElement().style.height = height + 'px';\r\n map.updateSize();\r\n map.getView().setResolution(scaleResolution);\r\n }\r\n\r\n private buildGraticule(map: any) {\r\n return new Graticule({\r\n // the style to use for the lines, optional.\r\n strokeStyle: new Stroke({\r\n color: 'rgba(10,10,10,0.9)',\r\n width: 2,\r\n lineDash: [0.5, 4],\r\n }),\r\n showLabels: true,\r\n wrapX: false,\r\n lonLabelFormatter: (lon) => {\r\n const transformedLon = this.transformService.transformFromGeographic([lon, 0], map.getView().getProjection().getCode());\r\n return transformedLon[0]?.toFixed(2);\r\n },\r\n latLabelFormatter: (lat) => {\r\n const transformedLat = this.transformService.transformFromGeographic([0, lat], map.getView().getProjection().getCode());\r\n return transformedLat[1]?.toFixed(2);\r\n },\r\n targetSize: 200\r\n });\r\n }\r\n\r\n private handleGraticuleDebug(graticule: Graticule, map: any, options: any) {\r\n if (options?.graticule?.showDebug) {\r\n const bbox = [84, 0, 0, 35]; // inspired by https://epsg.io/?format=json&q=32632 - https://epsg.io/?format=json&q=32635\r\n\r\n const newProj = map.getView().getProjection();\r\n const fromLonLat = getTransform('EPSG:4326', newProj);\r\n\r\n const worldExtent: OlExtent = [bbox[1], bbox[2], bbox[3], bbox[0]];\r\n newProj.setWorldExtent(worldExtent);\r\n const extent: OlExtent = applyTransform(worldExtent, fromLonLat, undefined, 8);\r\n newProj.setExtent(extent);\r\n\r\n map.addLayer(graticule);\r\n }\r\n }\r\n\r\n private setLoggers(options: any): void {\r\n this.infoLogger = options?.infoLogger\r\n ? options.infoLogger\r\n : (x: string) => console.log('info: ', x);\r\n this.errorLogger = options?.errorLogger\r\n ? options.errorLogger\r\n : (x: string) => console.log('error: ', x);\r\n }\r\n\r\n private getSizeInfoFromOptions(options: any, map: any): InfoObject {\r\n const resolution = options.resolutionDpi || 200;\r\n const scale = options.scale.value;\r\n const dim: [number, number] = setSize(options);\r\n const smallSheet: boolean = ['a5', 'a6'].includes(options?.sheetSize) || options.noInfo;\r\n const infoFieldHeight = smallSheet ? 0 : 50;\r\n const infoFieldMargin = smallSheet ? 0 : 2;\r\n\r\n if (!smallSheet) {\r\n // Apply frame margins to sheet size\r\n dim[0] -= (options.margins.left + options.margins.right);\r\n dim[1] -= (options.margins.top + options.margins.bottom);\r\n // Make room for info fields\r\n dim[1] -= (infoFieldHeight + infoFieldMargin);\r\n }\r\n\r\n const pixelsPerMm = resolution / 25.4;\r\n const width = Math.round(dim[0] * pixelsPerMm);\r\n const height = Math.round(dim[1] * pixelsPerMm);\r\n const viewResolution = map.getView().getResolution();\r\n const scaleResolution =\r\n scale /\r\n getPointResolution(\r\n map.getView().getProjection(),\r\n pixelsPerMm,\r\n map.getView().getCenter()\r\n );\r\n\r\n return {\r\n scale: scale,\r\n scaleResolution: scaleResolution,\r\n pixelsPerMm: pixelsPerMm,\r\n dim: dim,\r\n smallSheet: smallSheet,\r\n infoFieldHeight: infoFieldHeight,\r\n infoFieldMargin: infoFieldMargin,\r\n width: width,\r\n height: height,\r\n viewResolution: viewResolution,\r\n resolution: resolution,\r\n };\r\n }\r\n\r\n private handleLegends(legendImages: Promise, pdf: jsPDF, options: any, i: InfoObject): Promise {\r\n if (options.legendLayers.length) {\r\n const pageAdder = () => pdf.addPage(options.sheetSize, options.format);\r\n if (options.legendsOnNewPage) {\r\n pageAdder();\r\n }\r\n const scaleBarHeight = 10;\r\n const leftMargin = i.smallSheet ? 0 : options.margins.left;\r\n const topMargin = i.smallSheet ? 0 : options.margins.top;\r\n const rightMargin = i.dim[0];\r\n const largeSheetBottomMargin = options.legendsOnNewPage\r\n ? i.dim[1] + i.infoFieldMargin + i.infoFieldHeight\r\n : i.dim[1] - scaleBarHeight;\r\n const bottomMargin = i.smallSheet ? i.dim[1] : largeSheetBottomMargin;\r\n const extent: LegendExtent = { minX: leftMargin, minY: topMargin, maxX: rightMargin, maxY: bottomMargin };\r\n return legendImages.then((imgs) => addLegends(imgs, pdf, i.pixelsPerMm, extent, pageAdder));\r\n } else {\r\n return Promise.resolve();\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n","import { Feature, Map } from 'ol';\r\nimport { EventsKey } from 'ol/events';\r\nimport { Point } from 'ol/geom';\r\nimport { unByKey } from 'ol/Observable';\r\n\r\nimport { MapImplementationSourcesWfsT } from './Sources/WfsT';\r\n\r\nexport class MapImplementationFeatureEditor {\r\n\r\n eventHandler;\r\n httpHelper;\r\n\r\n editKey_: EventsKey | Array;\r\n points_ = []; // ol.geom.Point[]\r\n geometryName_ = '';\r\n transactionManager_ = null; // ISY.MapImplementation.OL3.Sources.WfsT\r\n\r\n constructor(eventHandler, httpHelper) {\r\n this.eventHandler = eventHandler;\r\n this.httpHelper = httpHelper;\r\n }\r\n\r\n init(url, featureType, featureNS, srsName, source, geometryName) {\r\n if (featureNS === undefined) {\r\n featureNS = 'http://kart4.nois.no/skjema/va';\r\n }\r\n this.transactionManager_ = new MapImplementationSourcesWfsT(url, featureType, featureNS, srsName, source, this.eventHandler, this.httpHelper);\r\n if (source.format && source.format.GML3_2) {\r\n this.transactionManager_.setWfs20();\r\n }\r\n this.geometryName_ = geometryName;\r\n }\r\n\r\n activateEditSelect(callback, map: Map) {\r\n if (map) {\r\n this.editKey_ = map.on('singleclick', function(evt) {\r\n callback(evt.coordinate);\r\n });\r\n }\r\n }\r\n\r\n deactivateEditSelect(map) {\r\n if (map) {\r\n unByKey(this.editKey_);\r\n this.editKey_ = null;\r\n }\r\n }\r\n\r\n handlePointSelect(coordinate) {\r\n const point = new Point(coordinate);\r\n this.points_.push(point);\r\n\r\n // Temporary test\r\n const feature = new Feature({'navn': 'ISY.MapLib-' + this.transactionManager_.GetFeatureType() + '-Insert'});\r\n feature.setGeometryName(this.geometryName_);\r\n feature.setGeometry(point);\r\n this.transactionManager_.insertFeature(feature);\r\n }\r\n\r\n updateFeature(feature) {\r\n this.transactionManager_.updateFeature(feature);\r\n }\r\n\r\n insertFeature(layerid, featureName, geometryName, feature, source) {\r\n return this.transactionManager_.insertFeature(layerid, featureName, geometryName, feature, source);\r\n }\r\n\r\n deleteFeature(feature) {\r\n return this.transactionManager_.deleteFeature(feature);\r\n }\r\n}\r\n","import { Vector as VectorLayer } from 'ol/layer';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nimport { Fill, Stroke, Style } from 'ol/style';\r\n\r\n// Use this class when you want to highlight features on the map, but you want to keep the hover info active.\r\n// This class has different use case as the FeatureSelector class, which is used to select features on the map.\r\n// This class is used to highlight features on the map, but not select them.\r\nexport class MapImplementationFeatureHighlighter {\r\n \r\n eventHandler;\r\n mapImplementation;\r\n featureOverlay; \r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n _getHoverStyle = (feature, resolution) => {\r\n return this.mapImplementation.getHoverStyle(\r\n feature,\r\n resolution,\r\n undefined\r\n );\r\n }; \r\n\r\n private ensureFeatureOverlay(map: any): void {\r\n if (!this.featureOverlay) {\r\n this.featureOverlay = new VectorLayer({\r\n map: map,\r\n source: new VectorSource({\r\n useSpatialIndex: false // optional, might improve performance\r\n }),\r\n style: this._getHoverStyle,\r\n updateWhileAnimating: false, // optional, for instant visual feedback\r\n updateWhileInteracting: false, // optional, for instant visual feedback\r\n zIndex: Infinity // Keep the highlighted features on top of the other layers\r\n });\r\n }\r\n }\r\n\r\n private applyJsonStyle(jsonStyle: any): void {\r\n if (jsonStyle) {\r\n const style = new Style({\r\n stroke: jsonStyle.stroke ? new Stroke(jsonStyle.stroke) : undefined,\r\n fill: jsonStyle.fill ? new Fill(jsonStyle.fill) : undefined\r\n }); \r\n this.featureOverlay.setStyle(style);\r\n }\r\n }\r\n\r\n highlightFeature(olFeature, mapImplementation: any, map: any, jsonStyle?, clearHighlighted: boolean = true) {\r\n if (!olFeature) {\r\n return;\r\n }\r\n if (!this.mapImplementation) {\r\n this.mapImplementation = mapImplementation;\r\n }\r\n \r\n this.ensureFeatureOverlay(map);\r\n \r\n if (clearHighlighted) {\r\n this.clearHighlightedFeatures();\r\n }\r\n \r\n this.applyJsonStyle(jsonStyle);\r\n\r\n const olFeatures = this.featureOverlay.getSource().getFeatures();\r\n const findFeature = olFeatures.find((feature) => feature.getId() === olFeature.getId());\r\n if (!findFeature) {\r\n this.featureOverlay.getSource().addFeature(olFeature);\r\n } \r\n }\r\n\r\n highlightFeatures(olFeatures, mapImplementation: any, map: any, jsonStyle?, clearHighlighted: boolean = true) {\r\n if (!olFeatures || olFeatures.length === 0 || !olFeatures[0]) {\r\n return;\r\n }\r\n\r\n if (!this.mapImplementation) {\r\n this.mapImplementation = mapImplementation;\r\n }\r\n\r\n this.ensureFeatureOverlay(map);\r\n\r\n if (clearHighlighted) {\r\n this.clearHighlightedFeatures();\r\n }\r\n \r\n this.applyJsonStyle(jsonStyle);\r\n this.featureOverlay.getSource().addFeatures(olFeatures);\r\n }\r\n\r\n clearHighlightedFeatures() {\r\n if (this.featureOverlay) {\r\n this.featureOverlay.getSource().clear();\r\n }\r\n } \r\n\r\n}\r\n","import * as $ from 'jquery';\r\nimport { GeoJSON } from 'ol/format';\r\nimport { Overlay, Map, Feature } from 'ol';\r\nimport { EventsKey } from 'ol/events';\r\nimport * as proj from 'ol/proj';\r\nimport { unByKey } from 'ol/Observable';\r\nimport { DragBox } from 'ol/interaction';\r\nimport { Vector } from 'ol/layer';\r\nimport { MapImplementationStylesDefault } from './Styles/Default';\r\nimport { always } from 'ol/events/condition';\r\nimport { MapImplementationUtilities } from './Utilities';\r\n\r\nexport class MapImplementationFeatureInfo {\r\n highLightLayer = null;\r\n highlightStyle = null;\r\n infoKey: EventsKey | Array;\r\n boundingBox;\r\n infoMarkerOverlay;\r\n type;\r\n code;\r\n properties;\r\n isActive = false;\r\n mapImplementationUtilities = new MapImplementationUtilities();\r\n\r\n showHighlightedFeatures(features, map) {\r\n this._ensureHighlightLayer(map);\r\n this.clearHighlightedFeatures();\r\n const geoJsonParser = new GeoJSON();\r\n for (const feature of features) {\r\n if (feature.geometryObject) {\r\n const mapFeature = geoJsonParser.readFeature(feature.geometryObject);\r\n if (mapFeature instanceof Feature) {\r\n if (feature.crs) {\r\n mapFeature.getGeometry().transform(proj.get(feature.crs), proj.get(map.getView().getProjection().getCode()));\r\n }\r\n if (feature.hoverstyle) {\r\n mapFeature.setStyle(feature.hoverstyle);\r\n }\r\n this.highLightLayer.getSource().addFeature(mapFeature);\r\n } \r\n } else {\r\n if (feature.hoverstyle) {\r\n feature.setStyle(feature.hoverstyle);\r\n } else {\r\n this.highLightLayer.getSource().addFeature(feature);\r\n }\r\n }\r\n }\r\n }\r\n\r\n clearHighlightedFeatures() {\r\n if (this.highLightLayer !== null) {\r\n const vectorSource = this.highLightLayer.getSource();\r\n vectorSource.clear();\r\n }\r\n }\r\n\r\n showInfoMarker(coordinate, element, map) {\r\n const $jq = $.noConflict();\r\n const $element = $jq(element);\r\n const height = $element.height();\r\n const width = $element.width();\r\n const infoMarkerOverlay = new Overlay({\r\n element: element,\r\n stopEvent: false,\r\n offset: [-width / 2, -height]\r\n });\r\n infoMarkerOverlay.setPosition(coordinate);\r\n map.addOverlay(infoMarkerOverlay);\r\n }\r\n\r\n removeInfoMarker(_element, map) {\r\n if (this.infoMarkerOverlay) {\r\n map.removeOverlay(this.infoMarkerOverlay);\r\n }\r\n }\r\n\r\n getFeatureInfoUrl(isySubLayer, mapLayer, coordinate, view) {\r\n const viewResolution = view.getResolution();\r\n\r\n const layerSource = mapLayer.getSource();\r\n const projection = view.getProjection();\r\n const infoFormat = isySubLayer.featureInfo.getFeatureInfoFormat ? isySubLayer.featureInfo.getFeatureInfoFormat : 'application/json';\r\n const url = layerSource.getFeatureInfoUrl(\r\n coordinate, viewResolution, projection, {'INFO_FORMAT': infoFormat, 'feature_count': 10}\r\n );\r\n const decodedUrl = decodeURIComponent(url);\r\n const baseUrl = decodedUrl.substring(0, decodedUrl.lastIndexOf('?')).replace('?', '');\r\n const queryString = decodedUrl.substring(decodedUrl.lastIndexOf('?'), decodedUrl.length).replace('?', '');\r\n const queryStringEncoded = encodeURIComponent(queryString);\r\n\r\n return baseUrl + (baseUrl.endsWith('?') ? '' : '?') + queryStringEncoded;\r\n\r\n }\r\n\r\n activateInfoClick(callback, map: Map, mapApi) {\r\n if (!this.isActive) {\r\n if (map) {\r\n this.infoKey = map.on('singleclick', (evt) => {\r\n callback(evt.coordinate, undefined, undefined, mapApi);\r\n });\r\n }\r\n }\r\n this.isActive = true;\r\n }\r\n\r\n deactivateInfoClick(map) {\r\n if (this.isActive) {\r\n if (map) {\r\n unByKey(this.infoKey);\r\n this.infoKey = null;\r\n }\r\n }\r\n this.isActive = false;\r\n }\r\n\r\n activateBoxSelect(callback, map, mapApi) {\r\n this.boundingBox = new DragBox({\r\n condition: always\r\n });\r\n\r\n map.addInteraction(this.boundingBox);\r\n\r\n this.boundingBox.on('boxend', () => {\r\n callback(this.boundingBox.getGeometry().getExtent(), mapApi);\r\n });\r\n }\r\n\r\n deactivateBoxSelect(map) {\r\n if (map) {\r\n map.removeInteraction(this.boundingBox);\r\n }\r\n }\r\n\r\n _isVisible(mapLayer, resolution) {\r\n if (!mapLayer) {\r\n return false;\r\n }\r\n const minResolution = mapLayer.getMinResolution();\r\n if (minResolution > 0 && minResolution > resolution) {\r\n return false;\r\n }\r\n const maxResolution = mapLayer.getMaxResolution();\r\n if (maxResolution !== Infinity && maxResolution <= resolution) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n getFeaturesInExtent(extent, mapLayer, resolution) {\r\n if (mapLayer === undefined || extent === undefined) {\r\n return undefined;\r\n }\r\n\r\n if (!this._isVisible(mapLayer, resolution)) {\r\n return undefined;\r\n }\r\n\r\n const source = mapLayer.getSource();\r\n const features = [];\r\n let isCluster = false;\r\n\r\n const addFeature = (feature, checkIfExists) => {\r\n const featureGeometry = feature.getGeometry();\r\n let hidden = feature.get('isHidden');\r\n hidden = hidden === undefined ? false : hidden;\r\n if (!hidden) {\r\n if (featureGeometry && (featureGeometry.intersectsExtent(extent) || checkIfExists)) {\r\n if (checkIfExists) {\r\n const featureId = feature.getId();\r\n for (const f of features) {\r\n if (featureId === f.getId()) {\r\n // feature exists, break operation\r\n return;\r\n }\r\n }\r\n }\r\n features.push(feature);\r\n }\r\n }\r\n };\r\n\r\n if (source.get('type') === 'ol.source.Cluster' && source.getDistance && source.getDistance() !== 0) {\r\n // get features from cluster\r\n // source.getSource().forEachFeatureInExtent(extent, addFeature);\r\n \r\n source.forEachFeatureInExtent(extent, (feature) => {\r\n const clusterFeatures = feature.get('features');\r\n if (clusterFeatures) {\r\n for (const clusterFeature of clusterFeatures) {\r\n addFeature(clusterFeature, true);\r\n }\r\n } \r\n });\r\n if (features.length > 1) {\r\n isCluster = false;\r\n for (let i = 0; i < features.length; i++) {\r\n for (let j = i + 1; j < features.length; j++) {\r\n const point1 = features[i].getGeometry().getCoordinates();\r\n const point2 = features[j].getGeometry().getCoordinates();\r\n const distance = this.mapImplementationUtilities.calculateDistance(point1, point2);\r\n\r\n // Check the distance against some threshold (in map units) \r\n if (distance < source.getDistance() * resolution) { \r\n isCluster = true;\r\n break;\r\n }\r\n }\r\n if (isCluster) {\r\n break;\r\n }\r\n } \r\n } \r\n } else {\r\n source.forEachFeatureInExtent(extent, (feature) => {\r\n const clusterFeatures = feature.get('features');\r\n if (clusterFeatures) {\r\n for (const clusterFeature of clusterFeatures) {\r\n addFeature(clusterFeature, true);\r\n }\r\n } else {\r\n addFeature(feature, false);\r\n }\r\n });\r\n }\r\n const geoJson = new GeoJSON();\r\n const featureCollection = geoJson.writeFeaturesObject(features);\r\n if (Array.isArray(featureCollection.features)) {\r\n featureCollection.features.forEach((f, idx) => {\r\n f['olFeature'] = features[idx];\r\n });\r\n } else {\r\n featureCollection['olFeature'] = Array.isArray(features) ? features[0] : features;\r\n }\r\n const projection = source.getProjection();\r\n if (projection) {\r\n featureCollection['crs'] = this._createCrsObjectForGeoJson(projection.getCode());\r\n }\r\n featureCollection['containClusterFeatures'] = isCluster;\r\n return featureCollection;\r\n }\r\n\r\n getFeaturesInMap(mapLayer) {\r\n if (mapLayer !== null) {\r\n const source = mapLayer.getSource();\r\n return source.getFeatures();\r\n }\r\n }\r\n\r\n getFeatureExtent(feature) {\r\n const geoJsonParser = new GeoJSON();\r\n const mapFeature = geoJsonParser.readFeature(feature.geometryObject);\r\n // Check if mapFeature is an instance of ol.Feature (or has getGeometry method)\r\n if (mapFeature instanceof Feature || 'getGeometry' in mapFeature) {\r\n return mapFeature.getGeometry().getExtent();\r\n } else {\r\n // Handle the case where mapFeature is not the expected type\r\n console.error('mapFeature is not a FeatureLike object');\r\n return null;\r\n }\r\n }\r\n\r\n _createCrsObjectForGeoJson(crsCode) {\r\n return new this.CrsObject(crsCode.split(':'));\r\n }\r\n\r\n CrsObject(codes) {\r\n this.type = codes[0];\r\n this.properties = new this.CrsProperties(codes[1]);\r\n }\r\n\r\n CrsProperties(code) {\r\n this.code = code;\r\n }\r\n\r\n getExtentForCoordinate(coordinate, pixelTolerance, resolution) {\r\n const toleranceInMapUnits = pixelTolerance * resolution;\r\n const n = coordinate[0];\r\n const e = coordinate[1];\r\n const minN = n - toleranceInMapUnits;\r\n const minE = e - toleranceInMapUnits;\r\n const maxN = n + toleranceInMapUnits;\r\n const maxE = e + toleranceInMapUnits;\r\n return [minN, minE, maxN, maxE];\r\n }\r\n\r\n _ensureHighlightLayer(map) {\r\n if (this.highLightLayer == null) {\r\n\r\n if (this.highlightStyle == null) {\r\n this._setDefaultHighlightStyle();\r\n }\r\n this.highLightLayer = new Vector({\r\n style: this.highlightStyle\r\n });\r\n map.addLayer(this.highLightLayer);\r\n } else {\r\n map.removeLayer(this.highLightLayer);\r\n map.addLayer(this.highLightLayer);\r\n }\r\n }\r\n\r\n setHighlightStyle(style) {\r\n this.highlightStyle = style;\r\n this.highLightLayer.setStyle(this.highlightStyle);\r\n }\r\n\r\n _setDefaultHighlightStyle() {\r\n const defaultStyle = new MapImplementationStylesDefault();\r\n this.highlightStyle = defaultStyle.styles;\r\n }\r\n\r\n}\r\n","import { Fill, Stroke, Style, Circle as CircleStyle } from 'ol/style';\r\nimport { click, pointerMove } from 'ol/events/condition';\r\n\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { Select } from 'ol/interaction';\r\n\r\nexport class MapImplementationFeatureSelector {\r\n\r\n eventHandler;\r\n mapImplementation;\r\n isActive = false;\r\n\r\n _isSelectActive = true;\r\n _isClickSelectActive = true;\r\n _selectInteraction;\r\n _clickSelectInteraction;\r\n _hoverInteraction;\r\n _clickHoverInteraction;\r\n _preSelectedFeatures = [];\r\n _selectedFeatures = [];\r\n _deSelectedFeatures = [];\r\n _selectedFeature;\r\n _selectedFeatureSetStyle;\r\n _style;\r\n\r\n self;\r\n\r\n _selectOptions = {\r\n condition: click,\r\n style: undefined,\r\n multi: true,\r\n filter: this.featureFilter,\r\n toggleCondition: undefined,\r\n layers: undefined\r\n };\r\n\r\n _clickSelectOptions = {\r\n condition: click,\r\n style: (feature, resolution) => { this.getHoverStyle(feature, resolution); },\r\n multi: true,\r\n layers: [],\r\n filter: this.featureFilter\r\n };\r\n\r\n _hoverOptions = {\r\n condition: pointerMove,\r\n style: (feature, resolution) => { this.getHoverStyle(feature, resolution); }\r\n };\r\n\r\n _clickHoverOptions = {\r\n condition: pointerMove,\r\n layers: [],\r\n style: (feature, resolution) => { this.getHoverStyle(feature, resolution); }\r\n };\r\n\r\n _selectStyle = new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(215, 132, 59, 1)',\r\n width: 2\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(215, 132, 59, 0.40)'\r\n })\r\n });\r\n\r\n _clickSelectStyle = new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(255, 99, 71, 1)',\r\n width: 2\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(255, 99, 71, 0.8)'\r\n }),\r\n image: new CircleStyle ({\r\n radius: 10,\r\n fill: new Fill({\r\n color: 'rgba(255, 99, 71, 0.8)'\r\n }),\r\n stroke: new Stroke({\r\n color: 'white',\r\n width: 2\r\n }),\r\n })\r\n });\r\n\r\n _neighborStyle = new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(144, 84, 169, 1)',\r\n width: 2\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(157, 104, 178, 0.40)'\r\n })\r\n });\r\n\r\n _errorStyle = new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(255, 0, 0, 1)',\r\n width: 2\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(255, 0, 0, 0.40)'\r\n })\r\n });\r\n\r\n teigWithStyle = [];\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n getHoverStyle(feature, resolution) {\r\n return this.mapImplementation.getHoverStyle(feature, resolution);\r\n }\r\n\r\n getTeigIdFromFeatureId(featureId) {\r\n if (featureId) {\r\n // FeatureId has format 'TEIGWFS.125984450.0216/26/102/0/0'\r\n // In this id, 125984450 is the teigId.\r\n const matrikkelTeigId = 'TEIGWFS.';\r\n if (featureId.indexOf(matrikkelTeigId) === 0) {\r\n const endId = featureId.substr(matrikkelTeigId.length).indexOf('.');\r\n if (endId >= 0) {\r\n const teigId = featureId.substr(matrikkelTeigId.length, endId);\r\n return teigId;\r\n }\r\n }\r\n }\r\n\r\n return featureId;\r\n }\r\n\r\n getSelectStyle(feature, resolution) {\r\n const teigId = this.getTeigIdFromFeatureId(feature.getId());\r\n let styleAlreadySet = false;\r\n\r\n for (let i = 0; i < this.teigWithStyle.length; i++) {\r\n if (teigId === this.teigWithStyle[i]) {\r\n styleAlreadySet = true;\r\n }\r\n }\r\n\r\n if (!styleAlreadySet) {\r\n feature.drawThis = true;\r\n this.teigWithStyle.push(teigId);\r\n // console.log('added: ' + teigId);\r\n\r\n }\r\n if (feature.drawThis) {\r\n if (this._style) {\r\n return this._style;\r\n } else {\r\n if (this._selectStyle) {\r\n return this._selectStyle;\r\n }\r\n return this.mapImplementation.getStyle(feature, resolution);\r\n }\r\n } else {\r\n return new Style();\r\n }\r\n }\r\n\r\n featureFilter(feature) {\r\n if (this._isClickSelectActive === false || this._isSelectActive === false || feature.get('LOCKED') === true) {\r\n const eventObj = {\r\n id: feature.getId(),\r\n properties: feature.getProperties()\r\n };\r\n\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureClick, eventObj);\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n addSelectInteraction(map, mode, style, active, layerName, keyFields, jsonStyle) {\r\n if (mode === 'multi') {\r\n this._selectOptions.toggleCondition = click;\r\n }\r\n\r\n if (style === 'neighbor') {\r\n this._style = this._neighborStyle;\r\n }\r\n\r\n if (style === 'select') {\r\n this._style = this._clickSelectStyle;\r\n }\r\n\r\n if (style === 'error') {\r\n this._style = this._errorStyle;\r\n }\r\n\r\n if (style === 'default') {\r\n this._style = this._selectStyle;\r\n }\r\n\r\n if (active === false) {\r\n this._isClickSelectActive = false;\r\n }\r\n\r\n if (jsonStyle) {\r\n this._style = new Style({\r\n stroke: jsonStyle.stroke ? new Stroke(jsonStyle.stroke) : undefined, \r\n fill: jsonStyle.fill ? new Fill(jsonStyle.fill) : undefined\r\n });\r\n }\r\n\r\n if (layerName && layerName.length > 0) {\r\n const layers = this.mapImplementation.getLayersByTitle(layerName);\r\n if (layers && layers.length > 0) {\r\n this._selectOptions.layers = layers;\r\n }\r\n }\r\n\r\n this._selectOptions.style = (feature, resolution) => {\r\n this.getSelectStyle(feature, resolution);\r\n };\r\n\r\n this._selectInteraction = new Select(this._selectOptions);\r\n\r\n map.addInteraction(this._selectInteraction);\r\n \r\n this._selectInteraction.on('select', (e) => {\r\n\r\n let properties;\r\n let unitId;\r\n const eventObj: any = {}; \r\n\r\n const shouldBeInSelected = [];\r\n const shouldBeInDeSelected = [];\r\n e.deselected.forEach(deselectedFeature => {\r\n const findDeselectedFeature = this._selectedFeatures.find(x => x.getId() === deselectedFeature.getId());\r\n if (!findDeselectedFeature) {\r\n shouldBeInSelected.push(deselectedFeature);\r\n } else {\r\n shouldBeInDeSelected.push(deselectedFeature);\r\n } \r\n });\r\n \r\n if (shouldBeInSelected.length > 0 || shouldBeInDeSelected.length > 0) {\r\n e.deselected = shouldBeInDeSelected;\r\n e.selected = shouldBeInSelected;\r\n }\r\n\r\n e.deselected.forEach(deselectedFeature => {\r\n if (this._selectedFeatures) {\r\n for (let i = this._selectedFeatures.length - 1; i >= 0; i--) {\r\n if (this._selectedFeatures[i].getId() === deselectedFeature.getId()) {\r\n this._selectedFeatures[i].setStyle(null);\r\n this._selectedFeatures.splice(i, 1);\r\n // console.log('_selectedFeatures', this._selectedFeatures.length);\r\n const findDeselectedFeature = this._deSelectedFeatures.find(x => x.getId() === deselectedFeature.getId());\r\n if (!findDeselectedFeature) {\r\n this._deSelectedFeatures.push(deselectedFeature);\r\n }\r\n // console.log('_deSelectedFeatures', this._deSelectedFeatures.length);\r\n this.deselectDuplicates(deselectedFeature, keyFields);\r\n this.removePreSelectedFeature(deselectedFeature);\r\n properties = deselectedFeature.getProperties();\r\n eventObj.properties = properties;\r\n const teigId = this.getTeigIdFromFeatureId(deselectedFeature.getId());\r\n for (let j = this.teigWithStyle.length - 1; j >= 0; j--) {\r\n if (teigId === this.teigWithStyle[j]) {\r\n this.teigWithStyle.splice(j, 1);\r\n console.log('Removed: ' + teigId);\r\n }\r\n }\r\n\r\n if (this.hasKeyFields(deselectedFeature, keyFields)) {\r\n unitId = this.makeUnitId(properties, keyFields);\r\n eventObj.id = deselectedFeature.getId() + ';' + unitId;\r\n\r\n // tslint:disable-next-line:max-line-length\r\n // unitId = properties.KOMMUNENR + '/' + properties.GARDSNR + '/' + properties.BRUKSNR + '/' + properties.FESTENR + '/' + properties.SEKSJONSNR;\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureDeselected, eventObj);\r\n } else {\r\n eventObj.id = deselectedFeature.getId();\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureDeselected, eventObj);\r\n }\r\n break;\r\n }\r\n }\r\n if (this._selectedFeature && this._selectedFeature.getId() === deselectedFeature.getId()) {\r\n console.log('deselected - main property');\r\n deselectedFeature.setStyle((feature, resolution) => {\r\n return this.mapImplementation.getHoverStyle(feature, resolution);\r\n });\r\n // return;\r\n }\r\n }\r\n\r\n });\r\n\r\n console.log(e.selected);\r\n e.selected.forEach((selectedFeature) => {\r\n selectedFeature.setStyle(this._style);\r\n const findSelectedFeature = this._selectedFeatures.find(x => x.getId() === selectedFeature.getId());\r\n if (!findSelectedFeature) {\r\n this._selectedFeatures.push(selectedFeature);\r\n }\r\n console.log('_selectedFeatures', this._selectedFeatures.length);\r\n\r\n let deselectedFeatureIndex = this.featureDeselected(selectedFeature.getId());\r\n while (deselectedFeatureIndex !== -1) {\r\n this._deSelectedFeatures.splice(deselectedFeatureIndex, 1);\r\n console.log('_deSelectedFeatures', this._deSelectedFeatures.length);\r\n deselectedFeatureIndex = this.featureDeselected(selectedFeature.getId());\r\n }\r\n\r\n this.selectDuplicates(selectedFeature, keyFields);\r\n this.addPreSelectedFeature(selectedFeature, keyFields);\r\n properties = selectedFeature.getProperties();\r\n eventObj.properties = properties;\r\n\r\n if (this.hasKeyFields(selectedFeature, keyFields)) {\r\n unitId = this.makeUnitId(properties, keyFields);\r\n eventObj.id = selectedFeature.getId() + ';' + unitId;\r\n\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureSelected, eventObj);\r\n } else {\r\n eventObj.id = selectedFeature.getId();\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureSelected, eventObj);\r\n }\r\n });\r\n });\r\n\r\n map.getViewport().addEventListener('mouseout', () => {\r\n if (this._hoverInteraction) {\r\n this._hoverInteraction.getFeatures().clear();\r\n map.removeInteraction(this._hoverInteraction);\r\n }\r\n }, false);\r\n\r\n map.getViewport().addEventListener('mouseover', () => {\r\n if (this._hoverInteraction) {\r\n map.addInteraction(this._hoverInteraction);\r\n }\r\n }, false);\r\n\r\n if (active === false) {\r\n this._selectInteraction.setActive(false);\r\n }\r\n }\r\n\r\n compareKeyProperties(p1, p2, keyFields) {\r\n if (p1 && p2) {\r\n for (let i = 0; i < keyFields.length; i++) {\r\n if (p1[keyFields[i]] !== p2[keyFields[i]]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n selectDuplicates(feature, keyFields) {\r\n if (this.hasKeyFields(feature, keyFields)) {\r\n const properties = feature.getProperties();\r\n const layer = this.mapImplementation.getLayerByFeature(feature);\r\n const features = layer.getSource().getFeatures();\r\n for (let i = 0; i < features.length; ++i) {\r\n const _properties = features[i].getProperties();\r\n if (this.compareKeyProperties(properties, _properties, keyFields)) {\r\n // tslint:disable-next-line:max-line-length\r\n // if (_properties && _properties.KOMMUNENR === properties.KOMMUNENR && _properties.GARDSNR === properties.GARDSNR && _properties.BRUKSNR === properties.BRUKSNR && _properties.SEKSJONSNR === properties.SEKSJONSNR && _properties.FESTENR === properties.FESTENR) {\r\n this.selectFeature(features[i], undefined, undefined);\r\n }\r\n }\r\n }\r\n }\r\n\r\n deselectDuplicates(feature, keyFields) {\r\n if (this.hasKeyFields(feature, keyFields)) {\r\n const properties = feature.getProperties();\r\n const layer = this.mapImplementation.getLayerByFeature(feature);\r\n const features = layer.getSource().getFeatures();\r\n for (let i = 0; i < features.length; ++i) {\r\n const _properties = features[i].getProperties();\r\n if (this.compareKeyProperties(properties, _properties, keyFields)) {\r\n // tslint:disable-next-line:max-line-length\r\n // if (_properties && _properties.KOMMUNENR === properties.KOMMUNENR && _properties.GARDSNR === properties.GARDSNR && _properties.BRUKSNR === properties.BRUKSNR && _properties.SEKSJONSNR === properties.SEKSJONSNR && _properties.FESTENR === properties.FESTENR) {\r\n this.deselectFeature(features[i]);\r\n }\r\n }\r\n }\r\n }\r\n makeUnitId(properties, keyFields) {\r\n let unitId = '';\r\n for (let i = 0; i < keyFields.length; i++) {\r\n unitId += properties[keyFields[i]] + (i === keyFields.length - 1 ? '' : '/');\r\n }\r\n return unitId;\r\n }\r\n\r\n hasKeyFields(feature, keyFields) {\r\n const properties = feature.getProperties();\r\n\r\n if (properties && keyFields) {\r\n for (let i = 0; i < keyFields.length; i++) {\r\n if (properties[keyFields[i]] === undefined) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n addHoverInteraction(map, active) {\r\n if (active !== false) {\r\n this._hoverInteraction = new Select(this._hoverOptions);\r\n map.addInteraction(this._hoverInteraction);\r\n }\r\n\r\n map.on('singleclick', (evt) => {\r\n /*if (!_isActive) {\r\n return;\r\n }*/\r\n if (evt.dragging) {\r\n return;\r\n }\r\n if (this.preventFeatureSelect(map, evt)) {\r\n this._isSelectActive = false;\r\n } else {\r\n this._isSelectActive = true;\r\n }\r\n });\r\n }\r\n\r\n preventFeatureSelect(map, evt) {\r\n let preventSelect = false;\r\n const event = evt.originalEvent;\r\n const pixel = map.getEventPixel(event);\r\n map.forEachFeatureAtPixel(pixel, (_feature, layer) => {\r\n if (layer && layer.typename === 'IconLayer') {\r\n this._selectInteraction.setActive(false);\r\n if (this._hoverInteraction) {\r\n this._hoverInteraction.setActive(false);\r\n }\r\n if (!this._clickSelectInteraction) {\r\n this._clickSelectOptions.layers = [layer];\r\n this._clickSelectInteraction = new Select(this._clickSelectOptions);\r\n map.addInteraction(this._clickSelectInteraction);\r\n } else if (this._isSelectActive && !this._clickSelectInteraction.getActive()) {\r\n // remove first in case of several overlapping Icons\r\n map.removeInteraction(this._clickSelectInteraction);\r\n map.addInteraction(this._clickSelectInteraction);\r\n } else {\r\n this._clickSelectInteraction.setActive(true);\r\n }\r\n if (!this._clickHoverInteraction) {\r\n this._clickHoverOptions.layers = [layer];\r\n this._clickHoverInteraction = new Select(this._clickHoverOptions);\r\n map.addInteraction(this._clickHoverInteraction);\r\n } else if (this._isSelectActive && !this._clickHoverInteraction.getActive()) {\r\n // remove first in case of several overlapping Icons\r\n map.removeInteraction(this._clickHoverInteraction);\r\n map.addInteraction(this._clickHoverInteraction);\r\n } else {\r\n this._clickHoverInteraction.setActive(true);\r\n }\r\n\r\n preventSelect = true;\r\n }\r\n });\r\n\r\n if (this._isSelectActive === false && preventSelect === false) {\r\n if (this._clickSelectInteraction && this._clickHoverInteraction) {\r\n this._clickSelectInteraction.setActive(false);\r\n this._clickHoverInteraction.setActive(false);\r\n map.removeInteraction(this._clickSelectInteraction);\r\n map.removeInteraction(this._clickHoverInteraction);\r\n }\r\n if (this._isClickSelectActive) {\r\n this._selectInteraction.setActive(true);\r\n if (this._hoverInteraction) {\r\n this._hoverInteraction.setActive(true);\r\n }\r\n }\r\n }\r\n\r\n return preventSelect;\r\n }\r\n\r\n featureSelected(featureId) {\r\n for (let i = 0; i < this._selectedFeatures.length; ++i) {\r\n if (this._selectedFeatures[i].getId() === featureId) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n featureDeselected(featureId) {\r\n for (let i = 0; i < this._deSelectedFeatures.length; ++i) {\r\n if (this._deSelectedFeatures[i].getId() === featureId) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n }\r\n\r\n selectFeature(feature, style, locked) {\r\n let deselectedFeatureIndex = this.featureDeselected(feature.getId());\r\n while (deselectedFeatureIndex !== -1) {\r\n this._deSelectedFeatures.splice(deselectedFeatureIndex, 1);\r\n // console.log('_deSelectedFeatures', this._deSelectedFeatures.length);\r\n deselectedFeatureIndex = this.featureDeselected(feature.getId());\r\n }\r\n\r\n if (this._selectInteraction && this.featureSelected(feature.getId()) === -1 && this.featureDeselected(feature.getId()) === -1) {\r\n if (style === 'default') {\r\n this._style = this._selectStyle;\r\n }\r\n if (style === 'error') {\r\n this._style = this._errorStyle;\r\n }\r\n if (style === 'neighbor') {\r\n this._style = this._neighborStyle;\r\n }\r\n if (locked === true) {\r\n feature.set('LOCKED', true);\r\n }\r\n\r\n if (style === 'select') {\r\n this._style = this._clickSelectStyle;\r\n }\r\n\r\n feature.setStyle(this._style);\r\n\r\n this._selectInteraction.getFeatures().getArray().push(feature);\r\n const findFeature = this._selectedFeatures.find(x => x.getId() === feature.getId());\r\n if (!findFeature) {\r\n this._selectedFeatures.push(feature);\r\n // console.log('_selectedFeatures', this._selectedFeatures.length);\r\n }\r\n // this._selectedFeatures.push(feature);\r\n // console.log('_selectedFeatures', this._selectedFeatures.length);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n deselectFeature(feature) {\r\n const selectedFeatureIndex = this.featureSelected(feature.getId());\r\n if (selectedFeatureIndex !== -1) {\r\n this._selectedFeatures[selectedFeatureIndex].setStyle(null);\r\n this._selectedFeatures.splice(selectedFeatureIndex, 1);\r\n // console.log('_selectedFeatures', this._selectedFeatures.length);\r\n for (let i = this._selectInteraction.getFeatures().getArray().length - 1; i >= 0 ; i--) {\r\n if (this._selectInteraction.getFeatures().getArray()[i].getId() === feature.getId()) {\r\n this._selectInteraction.getFeatures().getArray().splice(i, 1);\r\n break;\r\n }\r\n }\r\n const findFeature = this._deSelectedFeatures.find(x => x.getId() === feature.getId());\r\n if (!findFeature) {\r\n this._deSelectedFeatures.push(feature);\r\n }\r\n // console.log('_deSelectedFeatures', this._deSelectedFeatures.length);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n getSelectedFeatures() {\r\n return this._selectedFeatures;\r\n }\r\n\r\n lockSelectedFeatures() {\r\n this._isClickSelectActive = false;\r\n this._isSelectActive = true;\r\n if (this._hoverInteraction) {\r\n this._hoverInteraction.setActive(false);\r\n }\r\n }\r\n\r\n unlockSelectedFeatures(map) {\r\n this._isClickSelectActive = true;\r\n this._isSelectActive = true;\r\n if (this._clickSelectInteraction && this._clickHoverInteraction) {\r\n map.removeInteraction(this._clickSelectInteraction);\r\n map.removeInteraction(this._clickHoverInteraction);\r\n }\r\n this._selectInteraction.setActive(true);\r\n if (this._hoverInteraction) {\r\n this._hoverInteraction.setActive(true);\r\n }\r\n }\r\n\r\n addPreSelectedFeature(feature, keyFields) {\r\n if (this.hasKeyFields(feature, keyFields)) {\r\n const isySubLayer = this.mapImplementation.getIsySubLayerByFeature(feature);\r\n const properties = feature.getProperties();\r\n const filter = [];\r\n\r\n for (let i = 0; i < keyFields.length; i++) {\r\n filter.push(\r\n {\r\n property: keyFields[i],\r\n value: properties[keyFields[i]],\r\n }\r\n );\r\n }\r\n\r\n this.preSelectFeatures(filter, isySubLayer, this._style, false);\r\n }\r\n }\r\n\r\n removePreSelectedFeature(feature) {\r\n for (let i = this._preSelectedFeatures.length - 1; i >= 0 ; i--) {\r\n const filter = this._preSelectedFeatures[i].filter;\r\n let remove = true;\r\n for (let j = 0; j < filter.length; ++j) {\r\n const value = feature.getProperties()[filter[j].property];\r\n if (value === undefined || value !== filter[j].value) {\r\n remove = false;\r\n break;\r\n }\r\n }\r\n if (remove) {\r\n this._preSelectedFeatures.splice(i, 1);\r\n // console.log('rem _preSelectedFeatures', this._preSelectedFeatures.length);\r\n }\r\n }\r\n }\r\n\r\n private findFilter(filter, name) {\r\n const element = filter.find(x => x.property === name);\r\n return element ? element : {};\r\n }\r\n\r\n preSelectFeatures(filter, isySubLayer, style, locked) {\r\n const unikId = 'UNIKID';\r\n const unikFilter = this.findFilter(filter, unikId);\r\n // tslint:disable-next-line: max-line-length\r\n const sameItem = this._preSelectedFeatures.find(x => this.findFilter(x.filter, unikId).value === unikFilter.value && this.findFilter(x.filter, unikId).property === unikFilter.property);\r\n if (sameItem) {\r\n return;\r\n }\r\n this._preSelectedFeatures.push({\r\n 'filter': filter,\r\n 'isySubLayer': isySubLayer,\r\n 'style': style,\r\n 'locked': locked\r\n });\r\n // console.log('pre _preSelectedFeatures', this._preSelectedFeatures.length);\r\n }\r\n\r\n getPreSelectedFeatures() {\r\n return this._preSelectedFeatures;\r\n }\r\n\r\n activate(map, mapImplementation, options) {\r\n this.isActive = true;\r\n this.mapImplementation = mapImplementation;\r\n this._selectedFeature = options.feature;\r\n this.addSelectInteraction(map, options.mode, options.style, options.active, options.layerName, options.keyFields, options.jsonStyle);\r\n\r\n if (this._selectedFeature) {\r\n this._selectedFeatureSetStyle = this._selectedFeature.setStyle;\r\n this._selectedFeature.setStyle((feature, resolution) => {\r\n return this.mapImplementation.getHoverStyle(feature, resolution);\r\n });\r\n }\r\n }\r\n\r\n deactivate(map) {\r\n if (this.isActive) {\r\n this._selectedFeatures = [];\r\n this._deSelectedFeatures = [];\r\n this._preSelectedFeatures = [];\r\n\r\n\r\n this._selectOptions.condition = click;\r\n this._selectOptions.style = undefined;\r\n this._selectOptions.multi = true;\r\n this._selectOptions.toggleCondition = undefined;\r\n this._selectOptions.layers = undefined;\r\n\r\n map.removeInteraction(this._selectInteraction);\r\n // if (this._hoverInteraction) {\r\n // map.removeInteraction(this._hoverInteraction);\r\n // }\r\n if (this._selectedFeature) {\r\n this._selectedFeature.setStyle(undefined);\r\n this._selectedFeature.setStyle = this._selectedFeatureSetStyle;\r\n\r\n }\r\n this._selectedFeature = undefined;\r\n this._selectedFeatureSetStyle = undefined;\r\n this.isActive = false;\r\n\r\n this._isClickSelectActive = true;\r\n this._selectInteraction = undefined;\r\n this._clickSelectInteraction = undefined;\r\n this._hoverInteraction = undefined;\r\n this._clickHoverInteraction = undefined;\r\n this._style = undefined;\r\n }\r\n }\r\n}\r\n","import { firstValueFrom } from 'rxjs';\r\n\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { MapImplementationSourcesFactory } from './Sources/SourcesFactory';\r\nimport { MapImplementationStylesJson } from './Styles/Json';\r\n\r\nexport class MapImplementationFilterSource {\r\n\r\n eventHandler: any;\r\n mapImplementationSourcesFactory: MapImplementationSourcesFactory;\r\n mapImplementationMap: any;\r\n olLayer: any;\r\n isySubLayer: any;\r\n filter: any;\r\n style: any;\r\n source: any;\r\n httpHelper: any;\r\n sourceExtent = {};\r\n extentExecuted = {};\r\n stylesJson: MapImplementationStylesJson;\r\n\r\n // default style for advanced filter\r\n private defaultStyle = {\r\n style: [\r\n {\r\n stroke:\r\n {\r\n color: 'rgba(202,0,15,1)',\r\n width: 5.0\r\n },\r\n fill:\r\n {\r\n color: 'rgba(0,255,0,0.1)'\r\n }\r\n }\r\n ]\r\n };\r\n\r\n\r\n constructor(\r\n eventHandler,\r\n mapImplementationMap,\r\n mapImplementationSourcesFactory: MapImplementationSourcesFactory,\r\n olLayer,\r\n isySubLayer: any,\r\n filter: any,\r\n source: any,\r\n httpHelper: any,\r\n ) {\r\n this.eventHandler = eventHandler;\r\n this.mapImplementationMap = mapImplementationMap;\r\n this.mapImplementationSourcesFactory = mapImplementationSourcesFactory;\r\n this.olLayer = olLayer;\r\n this.isySubLayer = Object.prototype.hasOwnProperty.call(isySubLayer, 'name') || !olLayer\r\n ? isySubLayer\r\n : olLayer.get('config');\r\n this.filter = filter;\r\n this.source = source;\r\n this.httpHelper = httpHelper;\r\n }\r\n\r\n destroy() {\r\n this.setQueryOnSource();\r\n console.log('FilterSource destroy()');\r\n this.source.set('filter', undefined);\r\n this.source.refresh();\r\n }\r\n\r\n getFilter(): any {\r\n return this.filter;\r\n }\r\n\r\n setFilter(filter: any) {\r\n this.filter = filter;\r\n }\r\n\r\n getSource(): any {\r\n return this.source;\r\n }\r\n\r\n setSource(source: any) {\r\n this.source = source;\r\n }\r\n\r\n query(filter?: any, ignoreBbox?: boolean, ignoreExtent?: boolean, parameters?: any) {\r\n this.filter = filter;\r\n const values = [];\r\n\r\n if (ignoreBbox) {\r\n this.mapImplementationSourcesFactory.sourcePromise(this.isySubLayer, parameters)\r\n .then(source => {\r\n if (source.gmlParser && source.getUrl) {\r\n let url = source.getUrl(undefined);\r\n if (url.substr(url.length - 1) === '&') {\r\n url = url.substr(0, url.length - 1);\r\n }\r\n\r\n const parseFeatures = (response) => {\r\n if (typeof response === 'object') {\r\n if (response.firstChild.childElementCount === 0) {\r\n return;\r\n }\r\n } else {\r\n return;\r\n }\r\n source.gmlParser.parse(response, this.isySubLayer, source.source, undefined, this.eventHandler, undefined);\r\n\r\n const features = source.source.getFeatures();\r\n this.sourceExtent[this.isySubLayer.id] = undefined;\r\n\r\n const invalidFeatures = [];\r\n features.forEach(feature => {\r\n const properties = feature.getProperties();\r\n delete properties[feature.getGeometryName()];\r\n if (this.filter) {\r\n if (this.featureIsValid(feature)) {\r\n values.push(properties);\r\n } else if (!ignoreExtent) {\r\n invalidFeatures.push(feature);\r\n }\r\n } else {\r\n values.push(properties);\r\n }\r\n });\r\n if (!ignoreExtent && features.length > 0 && (features.length - invalidFeatures.length) > 0) {\r\n for (const invalidFeature of invalidFeatures) {\r\n source.source.removeFeature(invalidFeature);\r\n }\r\n this.sourceExtent[this.isySubLayer.id] = source.source.getExtent();\r\n this._fitExtent();\r\n }\r\n this._sendValuesToEvent(values);\r\n };\r\n\r\n firstValueFrom(this.httpHelper.get(url, {responseType: 'document'}))\r\n .then(response => parseFeatures(response));\r\n return;\r\n }\r\n });\r\n\r\n }\r\n\r\n this.source.getFeatures().forEach(feature => {\r\n const properties = feature.getProperties();\r\n delete properties[feature.getGeometryName()];\r\n if (this.filter) {\r\n if (this.featureIsValid(feature)) {\r\n values.push(properties);\r\n }\r\n } else {\r\n values.push(properties);\r\n }\r\n });\r\n this._sendValuesToEvent(values);\r\n }\r\n\r\n setQueryOnSource(filter?: any, ignoreBbox?: boolean, ignoreExtent?: boolean, style?: any, parameters?: any) {\r\n this.filter = filter;\r\n this.style = style;\r\n if (this.style) {\r\n this.stylesJson = undefined;\r\n }\r\n this.source.set('filter', this.filter);\r\n this.source.refresh();\r\n this.eventHandler.registerEvent(\r\n EventsEventTypes.RefreshSourceDone + '_' + this.isySubLayer.id,\r\n 'MapImplementation.RefreshSourceDone_' + this.isySubLayer.id,\r\n (source) => {\r\n this._callbackFunction(source);\r\n }\r\n );\r\n this.query(filter, ignoreBbox, ignoreExtent, parameters);\r\n }\r\n\r\n featureIsValid(feature: any): boolean {\r\n if (!this.filter) {\r\n return true;\r\n }\r\n\r\n let add = true;\r\n Object.keys(this.filter).forEach(key => {\r\n if (!add) {\r\n return;\r\n }\r\n let searchValue: any;\r\n const featureValue = feature.get(key);\r\n const filterValue = this.filter[key];\r\n if (filterValue) {\r\n if (filterValue.substr(filterValue.length - 1) === '*' && filterValue.substr(0, 1) === '*') {\r\n searchValue = filterValue.substr(1);\r\n searchValue = searchValue.substr(0, searchValue.length - 1);\r\n if (featureValue === undefined) {\r\n add = false;\r\n } else if (featureValue.toLowerCase().indexOf(searchValue.toLowerCase()) < 0) {\r\n add = false;\r\n }\r\n } else if (filterValue.substr(filterValue.length - 1) === '*') {\r\n // } else if (filterValue.endsWith('*')) {\r\n searchValue = filterValue.substr(0, filterValue.length - 1);\r\n if (featureValue === undefined) {\r\n add = false;\r\n } else if (featureValue.indexOf(searchValue) !== 0) {\r\n add = false;\r\n }\r\n } else if (filterValue.substr(0, 1) === '*') {\r\n // } else if (filterValue.startsWith('*')) {\r\n searchValue = filterValue.substr(1);\r\n if (featureValue === undefined) {\r\n add = false;\r\n } else if (featureValue.indexOf(searchValue) < 0) {\r\n add = false;\r\n } else if (featureValue.length > searchValue.length &&\r\n featureValue.substr(featureValue.length - searchValue.length).indexOf(searchValue) < 0) {\r\n add = false;\r\n }\r\n } else if (featureValue !== String(filterValue)) {\r\n add = false;\r\n }\r\n } else {\r\n add = false;\r\n }\r\n\r\n });\r\n return add;\r\n }\r\n\r\n private _initializeStylesJson = () => {\r\n if (this.stylesJson) {\r\n return;\r\n }\r\n this.stylesJson = new MapImplementationStylesJson(this.style ? this.style : this.defaultStyle);\r\n }\r\n\r\n private _sendFeaturesToEvent = (features: any[]) => {\r\n this._initializeStylesJson();\r\n const values = [];\r\n features.forEach(feature => {\r\n const properties = feature.getProperties();\r\n delete properties[feature.getGeometryName()];\r\n values.push(properties);\r\n feature.setStyle(this.stylesJson.getStyle(feature, undefined));\r\n });\r\n this._sendValuesToEvent(values);\r\n }\r\n\r\n private _sendValuesToEvent(values: any[]) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureValues,\r\n {'layer': this.isySubLayer, values}\r\n );\r\n }\r\n\r\n private _fitExtent(source?: any) {\r\n if (!this.extentExecuted[this.isySubLayer.id]) {\r\n if (this.sourceExtent[this.isySubLayer.id]) {\r\n this.extentExecuted[this.isySubLayer.id] = true;\r\n this.mapImplementationMap.fitExtent(this.sourceExtent[this.isySubLayer.id]);\r\n } else if (source.getFeatures().length > 0) {\r\n this.extentExecuted[this.isySubLayer.id] = true;\r\n this.mapImplementationMap.fitExtent(source.getExtent());\r\n }\r\n }\r\n }\r\n\r\n private _callbackFunction(source: any) {\r\n this._fitExtent(source);\r\n this._sendFeaturesToEvent(source.getFeatures());\r\n }\r\n}\r\n","import { EventsEventTypes } from '../Events/EventHandler';\r\nimport { unByKey } from 'ol/Observable';\r\nimport { MapPosition } from '../Domain/MapPosition';\r\nimport { EventsKey } from 'ol/events';\r\nimport { Map } from 'ol';\r\nimport VectorLayer from 'ol/layer/Vector';\r\n\r\nexport class MapImplementationGetClickCoordinates {\r\n\r\n eventHandler;\r\n infoKey : EventsKey | Array;\r\n isActive = false;\r\n epsg;\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n activate(map: Map, epsg) {\r\n if (!this.isActive) {\r\n this.epsg = epsg;\r\n if (map) {\r\n this.infoKey = map.on('singleclick', (evt) => {\r\n\r\n const closestPoints = this.getClosestPointsToCoordinate(map, evt);\r\n interface DistanceParams {\r\n closestPoint: any;\r\n distance: any;\r\n }\r\n let coordinate = evt.coordinate;\r\n const distances: DistanceParams[] = [];\r\n if (closestPoints.length > 0) {\r\n closestPoints.forEach( cp => {\r\n const distance = this.getDistance(cp, evt.coordinate);\r\n // console.log('Distance:', distance);\r\n distances.push({closestPoint: cp, distance: distance});\r\n });\r\n const closetsDistance = distances.reduce((prev, current) => {\r\n return prev.distance < current.distance ? prev : current;\r\n });\r\n // console.log('ClosetsDistance:', closetsDistance);\r\n if (closetsDistance.distance < 0.5) {\r\n coordinate = closetsDistance.closestPoint;\r\n }\r\n }\r\n\r\n\r\n if (evt && evt.originalEvent && map.getView()) {\r\n const mapPosition = new MapPosition(coordinate, evt.pixel,\r\n [evt.originalEvent.clientX, evt.originalEvent.clientY], this.epsg,\r\n map.getView().getZoom() );\r\n this.eventHandler.triggerEvent(EventsEventTypes.GetClickCoordinates, mapPosition);\r\n }\r\n });\r\n }\r\n }\r\n this.isActive = true;\r\n }\r\n\r\n deactivate(map: Map) {\r\n if (this.isActive) {\r\n if (map) {\r\n unByKey(this.infoKey);\r\n this.infoKey = null;\r\n }\r\n this.eventHandler.unRegisterEvent(EventsEventTypes.GetClickCoordinates, false);\r\n this.isActive = false;\r\n }\r\n }\r\n\r\n getClosestPointsToCoordinate(map, evt) {\r\n const closestPoints = [];\r\n map.getLayers().forEach((layer) => {\r\n if (layer instanceof VectorLayer) {\r\n const closestFeature = layer.getSource().getClosestFeatureToCoordinate(evt.coordinate);\r\n if (closestFeature !== null && layer.get('id') !== 'markering') {\r\n const geometry = closestFeature.getGeometry();\r\n const closestPoint = geometry.getClosestPoint(evt.coordinate);\r\n closestPoints.push(closestPoint);\r\n }\r\n }\r\n });\r\n return closestPoints;\r\n }\r\n getDistance(coord1, coord2) {\r\n const a = coord1[0] - coord2[0];\r\n const b = coord1[1] - coord2[1];\r\n const distance = Math.sqrt(a * a + b * b);\r\n return distance;\r\n }\r\n }\r\n","import { EventsEventTypes } from '../Events/EventHandler';\r\nimport { MapPosition } from '../Domain/MapPosition';\r\nimport { Vector as VectorLayer } from 'ol/layer';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nexport class MapImplementationHoverInfo {\r\n\r\n multiSelect = false;\r\n eventHandler;\r\n mapImplementation;\r\n isActive = false;\r\n hoverIsInitialized = false;\r\n mousemoveIsInitialized = false;\r\n featureOverlay;\r\n highlight;\r\n mousePixel;\r\n mouseCoordinate;\r\n data;\r\n isHoverInfoPaused = false; \r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n activateHoverInfo(map, mapImpl, options) {\r\n this.mapImplementation = mapImpl; \r\n this._setOptions(options);\r\n this._addInteraction(map);\r\n }\r\n\r\n deactivateHoverInfo(map) {\r\n if (map) {\r\n this.isActive = false;\r\n }\r\n }\r\n\r\n onMouseOut() {\r\n if (this.highlight && this.featureOverlay && this.featureOverlay.getSource) {\r\n this.clearHighlightedFeatures();\r\n }\r\n this.highlight = undefined;\r\n this.data = undefined;\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureHoverEnd);\r\n }\r\n\r\n _setOptions(options) {\r\n if (options) {\r\n if (options.multiSelect) {\r\n this.multiSelect = options.multiSelect;\r\n }\r\n }\r\n }\r\n\r\n _returnFeatureByGeometryType(features) {\r\n let getGeometry;\r\n let geometryType = '';\r\n for (const feature of features) {\r\n geometryType = '';\r\n getGeometry = feature.feature.getGeometry();\r\n if (getGeometry) {\r\n geometryType = getGeometry.getType();\r\n }\r\n if (geometryType === 'Point') {\r\n return feature;\r\n }\r\n }\r\n for (const feature of features) {\r\n geometryType = '';\r\n getGeometry = feature.feature.getGeometry();\r\n if (getGeometry) {\r\n geometryType = getGeometry.getType();\r\n }\r\n if (geometryType === 'LineString') {\r\n return feature;\r\n }\r\n }\r\n return features[0];\r\n }\r\n\r\n _getFeaturesByZIndexFromPixel(map, pixel) {\r\n if (!this.mapImplementation) {\r\n return undefined; // Not all code paths return a value.\r\n }\r\n let features = [];\r\n map.forEachFeatureAtPixel(pixel, (feature, layer) => {\r\n const clusterFeatures = feature.get('features');\r\n if (clusterFeatures) {\r\n if (layer) {\r\n const distance = (layer.getSource().get('type') === 'ol.source.Cluster' || layer.getSource().source?.get('type') === 'ol.source.Cluster') ? layer.getSource().getDistance() : -1;\r\n for (const clusterFeature of clusterFeatures) {\r\n if (features.length === 0) {\r\n features.push({feature: clusterFeature, layer: layer, zindex: parseInt(layer.get('sortingIndex'), 10)});\r\n } else {\r\n let skipFeature = false;\r\n const clusterFeatureId = clusterFeature.getId();\r\n for (let d = 0; d < features.length; d++) {\r\n if (features[d].feature.getId() === clusterFeatureId) {\r\n skipFeature = true;\r\n break;\r\n } else if (distance === 0) {\r\n const extent = feature.getGeometry().getExtent();\r\n const clusterFeatureExtent = clusterFeature.getGeometry().getExtent();\r\n for (let e = 0; e < extent.length; e++) {\r\n // verify if this is the same feature\r\n if ((extent[e] < clusterFeatureExtent[e] - 0.01) && (extent[e] > clusterFeatureExtent[e] + 0.01)) {\r\n skipFeature = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!skipFeature) {\r\n features.push({feature: clusterFeature, layer: layer, zindex: parseInt(layer.get('sortingIndex'), 10)});\r\n }\r\n }\r\n }\r\n }\r\n return;\r\n } else {\r\n if (layer) {\r\n features.push({feature: feature, layer: layer, zindex: parseInt(layer.get('sortingIndex'), 10)});\r\n }\r\n }\r\n });\r\n\r\n features = this._orderArrayByZIndex(features);\r\n return features;\r\n }\r\n\r\n // Er denne i bruk? einhel 10.06.2022\r\n _getFeaturesByZIndex(featureArray) {\r\n let features = [];\r\n featureArray.forEach((feature) => {\r\n const layer = this.mapImplementation.getLayerByFeature(feature);\r\n if (layer) {\r\n const zindex = parseInt(layer.get('sortingIndex'), 10);\r\n features.push({feature: feature, zindex: zindex});\r\n }\r\n });\r\n features = this._orderArrayByZIndex(features);\r\n if (features === undefined) {\r\n return undefined;\r\n }\r\n return features;\r\n }\r\n\r\n _compare(a, b) {\r\n if (a.zindex > b.zindex) {\r\n return -1;\r\n }\r\n if (a.zindex < b.zindex) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n _orderArrayByZIndex(features) {\r\n if (features.length === 0) {\r\n return undefined;\r\n }\r\n features.sort(this._compare);\r\n return features;\r\n }\r\n\r\n _getEvtCoordinate(evt) {\r\n if (evt && evt.coordinate) {\r\n return {\r\n epsg: this.mapImplementation.getEpsgCode(),\r\n coordinate: evt.coordinate\r\n };\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n hoverIsActive() {\r\n return this.isActive;\r\n }\r\n\r\n hoverIsPaused() {\r\n return this.isHoverInfoPaused;\r\n }\r\n\r\n _getEventObject(evt) {\r\n let zoom = 0;\r\n let epsg = '';\r\n if (this.mapImplementation) {\r\n epsg = this.mapImplementation.getEpsgCode();\r\n if (this.mapImplementation.map && this.mapImplementation.map.getView()) {\r\n zoom = this.mapImplementation.map.getView().getZoom();\r\n }\r\n }\r\n const mapPosition = new MapPosition(evt.coordinate, evt.pixel,\r\n [evt.originalEvent.clientX, evt.originalEvent.clientY], epsg, zoom);\r\n return {\r\n mapPosition: mapPosition,\r\n data: this.data\r\n };\r\n }\r\n\r\n displayFeatureInfo(map, evt) {\r\n const event = evt.originalEvent;\r\n const pixel = map.getEventPixel(event);\r\n let features = this._getFeaturesByZIndexFromPixel(map, pixel);\r\n if (!features && !this.highlight) {\r\n // no feature\r\n return;\r\n }\r\n // only first feature\r\n if (this.mapImplementation.hoverhighlightmode === 'single') {\r\n if (features && features.length > 0) {\r\n features = [features[0]];\r\n }\r\n }\r\n if (features) {\r\n let sameFeature = false;\r\n if (this.highlight && this.highlight.length === features.length) {\r\n sameFeature = true;\r\n for (let i = 0; i < features.length; i++) {\r\n if (!(features[i].feature && this.highlight[i].feature)) {\r\n sameFeature = false;\r\n } else if (features[i].feature.ol_uid !== this.highlight[i].feature.ol_uid) {\r\n sameFeature = false;\r\n }\r\n }\r\n }\r\n if (sameFeature) {\r\n // same feature\r\n const eventObject = this._getEventObject(evt);\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureHoverMove, eventObject);\r\n return;\r\n }\r\n const data = [];\r\n if (features.length > 0) {\r\n features.forEach(f => {\r\n const feature = f.feature || f;\r\n const featureProperties = feature.getProperties();\r\n const featureLayer = f.layer;\r\n let tooltipTemplate = featureLayer ? featureLayer.get('tooltipTemplate') : '';\r\n if (!tooltipTemplate) {\r\n // Try extra check if tooltipTemplate is not defined in featureProperties\r\n tooltipTemplate = Object.prototype.hasOwnProperty.call(featureProperties, 'tooltipTemplate') ? featureProperties['tooltipTemplate'] : '';\r\n }\r\n data.push({\r\n properties: featureProperties,\r\n layer: featureLayer?.getProperties()?.config,\r\n template: tooltipTemplate\r\n });\r\n });\r\n } else {\r\n console.error('features ikke array!', features);\r\n }\r\n this.data = data;\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureHoverStart, this._getEventObject(evt));\r\n\r\n } else {\r\n this.data = undefined;\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureHoverEnd);\r\n }\r\n if (features !== this.highlight) {\r\n if (features && this.highlight && features.length && this.highlight.length) {\r\n if (features.length >= this.highlight.length) {\r\n let sameFeature = true;\r\n for (let fh = 0; fh < features.length; fh++) {\r\n if (features[fh].feature !== this.highlight[fh].feature) {\r\n sameFeature = false;\r\n }\r\n break;\r\n }\r\n if (sameFeature) {\r\n return;\r\n }\r\n }\r\n }\r\n\r\n if (this.highlight && this.featureOverlay.getSource) {\r\n this.featureOverlay.getSource().clear();\r\n }\r\n if (features && this.featureOverlay.getSource) {\r\n if (features.length) {\r\n // featureOverlay.getSource().addFeature(feature); // fails\r\n for (let f = 0; f < features.length; f++) {\r\n this.featureOverlay.getSource().addFeature(features[f].feature);\r\n }\r\n } else {\r\n this.featureOverlay.getSource().addFeature(features);\r\n }\r\n }\r\n this.highlight = features;\r\n }\r\n }\r\n\r\n _getHoverStyle = (feature, resolution) => {\r\n return this.mapImplementation.getHoverStyle(\r\n feature,\r\n resolution,\r\n (this.highlight && this.highlight.length) ? this.highlight : undefined\r\n );\r\n }; \r\n\r\n _addInteraction(map) {\r\n if (this.isActive) {\r\n return;\r\n }\r\n this.isActive = true; \r\n\r\n this.hoverIsInitialized = true;\r\n this.featureOverlay = new VectorLayer({\r\n map: map,\r\n source: new VectorSource({\r\n useSpatialIndex: false // optional, might improve performance\r\n }),\r\n style: this._getHoverStyle,\r\n updateWhileAnimating: false, // optional, for instant visual feedback\r\n updateWhileInteracting: false // optional, for instant visual feedback\r\n });\r\n }\r\n\r\n clearHighlightedFeatures() {\r\n this.featureOverlay.getSource().clear();\r\n }\r\n\r\n pauseHoverInfo(value: boolean) {\r\n this.isHoverInfoPaused = value; \r\n }\r\n\r\n\r\n}\r\n","import { EventsEventTypes } from '../Events/EventHandler';\r\n\r\nexport class MapImplementationLayerState {\r\n\r\n eventHandler: any;\r\n olMap: any;\r\n reportPercent = false;\r\n\r\n layerLoading = {};\r\n layerLoaded = {};\r\n layerCounter = {};\r\n layerSources = {};\r\n\r\n lastPercent = 0;\r\n percent = 0;\r\n step = 1;\r\n\r\n constructor(eventHandler: any, map: any, reportPercent: boolean, step?: number) {\r\n this.eventHandler = eventHandler;\r\n this.olMap = map;\r\n this.reportPercent = reportPercent;\r\n if (step) {\r\n this.step = step;\r\n }\r\n\r\n this.eventHandler.registerEvent(\r\n EventsEventTypes.ChangeLayers,\r\n 'MapImplementationLayerState.ChangeLayers',\r\n () => this._registerProgress()\r\n );\r\n }\r\n\r\n private _registerProgress = () => {\r\n if (!this.olMap) {\r\n return;\r\n }\r\n\r\n this.olMap.getLayers().forEach((layer) => {\r\n const isySubLayer = layer.get('config');\r\n const source = layer.getSource();\r\n if (!source || !isySubLayer) {\r\n return;\r\n }\r\n this.addLayerSource(isySubLayer, source);\r\n });\r\n }\r\n\r\n addLayerSource = (isySubLayer, source) => {\r\n this.removeSourceEvents(isySubLayer);\r\n this.layerLoading[isySubLayer.id] = 0;\r\n this.layerLoaded[isySubLayer.id] = 0;\r\n this.layerCounter[isySubLayer.id] = 0;\r\n this.layerSources[isySubLayer.id] = source;\r\n this.addSourceEvents(isySubLayer);\r\n }\r\n\r\n private checkCounter = (isySubLayer) => {\r\n if (this.layerCounter[isySubLayer.id] <= 0) {\r\n const source = this.layerSources[isySubLayer.id];\r\n // if (source.getFeatures) {\r\n // console.log('layerloadend', isySubLayer.id, source.getFeatures().length);\r\n // } else {\r\n // console.log('layerloadend', isySubLayer.id);\r\n // }\r\n this.eventHandler.triggerEvent(EventsEventTypes.LoadingLayerEnd, isySubLayer);\r\n if (source.get('filter')) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.RefreshSourceDone + '_' + isySubLayer.id, source);\r\n }\r\n }\r\n }\r\n\r\n private calculatePercent = () => {\r\n if (!this.reportPercent) {\r\n return;\r\n }\r\n let loading = 0;\r\n Object.keys(this.layerLoading).forEach(key => {\r\n loading += this.layerLoading[key];\r\n });\r\n let loaded = 0;\r\n Object.keys(this.layerLoaded).forEach(key => {\r\n loaded += this.layerLoaded[key];\r\n });\r\n this.percent = loaded / loading * 100;\r\n\r\n if (loading === loaded) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapProgress, 100);\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapProgressEnd);\r\n // console.log('100%');\r\n Object.keys(this.layerLoading).forEach(key => {\r\n this.layerLoading[key] = 0;\r\n });\r\n Object.keys(this.layerLoaded).forEach(key => {\r\n this.layerLoaded[key] = 0;\r\n });\r\n this.percent = 0;\r\n this.lastPercent = 0;\r\n } else if (this.percent > (this.lastPercent + this.step)) {\r\n this.lastPercent = this.percent;\r\n // console.log(this.percent.toFixed(0) + '%');\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapProgress, this.percent);\r\n }\r\n }\r\n\r\n private increaseCounter = (isySubLayer) => {\r\n ++this.layerCounter[isySubLayer.id];\r\n ++this.layerLoading[isySubLayer.id];\r\n this.calculatePercent();\r\n }\r\n\r\n private decreaseCounter = (isySubLayer) => {\r\n --this.layerCounter[isySubLayer.id];\r\n ++this.layerLoaded[isySubLayer.id];\r\n this.calculatePercent();\r\n this.checkCounter(isySubLayer);\r\n } \r\n\r\n private addSourceEvents = (isySubLayer) => {\r\n const source = this.layerSources[isySubLayer.id];\r\n if (!source) {\r\n return;\r\n }\r\n \r\n const sourceType = source.get('type');\r\n switch (sourceType) {\r\n case 'ol.source.Cluster':\r\n case 'ol.source.Vector':\r\n source.on('vectorloadstart', () => this.increaseCounter(isySubLayer));\r\n source.on('vectorloadend', () => this.decreaseCounter(isySubLayer));\r\n source.on('vectorloaderror', () => this.decreaseCounter(isySubLayer));\r\n this.addLayerSourceReadyEvent(source, isySubLayer);\r\n break;\r\n case 'ol.source.ImageWMS':\r\n source.on('imageloadstart', () => this.increaseCounter(isySubLayer));\r\n source.on('imageloadend', () => this.decreaseCounter(isySubLayer));\r\n source.on('imageloaderror', () => this.decreaseCounter(isySubLayer));\r\n break;\r\n case 'ol.source.TileWMS':\r\n case 'ol.source.WMTS':\r\n source.on('tileloadstart', () => this.increaseCounter(isySubLayer));\r\n source.on('tileloadend', () => this.decreaseCounter(isySubLayer));\r\n source.on('tileloaderror', () => this.decreaseCounter(isySubLayer));\r\n break;\r\n }\r\n }\r\n\r\n private addLayerSourceReadyEvent = (source, isySubLayer) => {\r\n const layerSourceReady = (event) => {\r\n if (event.target.getState() === 'ready') { \r\n this.eventHandler.triggerEvent(EventsEventTypes.LayerSourceReady + '_' + isySubLayer.id, event);\r\n }\r\n }\r\n const changeListeners = source.getListeners('change');\r\n if (changeListeners && changeListeners.length > 0) {\r\n const sourceReadyListener = changeListeners.find(listener => listener.name === 'layerSourceReady');\r\n if (!sourceReadyListener) {\r\n source.on('change', layerSourceReady);\r\n }\r\n } \r\n }\r\n\r\n private removeSourceEvents = (isySubLayer) => {\r\n const source = this.layerSources[isySubLayer.id];\r\n if (!source) {\r\n return;\r\n }\r\n // TODO: source.un doesn't work, so we need to find a way to remove the event listeners\r\n const sourceType = source.get('type');\r\n switch (sourceType) {\r\n case 'ol.source.Cluster':\r\n case 'ol.source.Vector':\r\n source.un('vectorloadstart', () => this.increaseCounter(isySubLayer));\r\n source.un('vectorloadend', () => this.decreaseCounter(isySubLayer));\r\n source.un('vectorloaderror', () => this.decreaseCounter(isySubLayer)); \r\n break;\r\n case 'ol.source.ImageWMS':\r\n source.un('imageloadstart', () => this.increaseCounter(isySubLayer));\r\n source.un('imageloadend', () => this.decreaseCounter(isySubLayer));\r\n source.un('imageloaderror', () => this.decreaseCounter(isySubLayer)); \r\n break;\r\n case 'ol.source.TileWMS':\r\n case 'ol.source.WMTS':\r\n source.un('tileloadstart', () => this.increaseCounter(isySubLayer));\r\n source.un('tileloadend', () => this.decreaseCounter(isySubLayer));\r\n source.un('tileloaderror', () => this.decreaseCounter(isySubLayer)); \r\n break;\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/indent */\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { Circle as CircleStyle, Fill, Stroke, Style, Icon } from 'ol/style';\r\nimport { Vector as VectorLayer } from 'ol/layer';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nimport { Point, LineString, MultiLineString, LinearRing, Polygon, MultiPoint, MultiPolygon, Geometry } from 'ol/geom';\r\nimport { Feature, Collection } from 'ol';\r\nimport { Modify, Snap } from 'ol/interaction';\r\nimport * as jsts from 'jsts';\r\nimport { MapImplementationTransform } from './Transform';\r\n\r\nexport class MapImplementationLinePositionMarker {\r\n eventHandler;\r\n snap;\r\n selectedLine;\r\n select;\r\n modify;\r\n markerPointSource;\r\n markerPointFeature;\r\n // clickCoordinate;\r\n markerPointStyle;\r\n markerPointLayer;\r\n arrowStyle;\r\n transformService;\r\n markerArrowLayer;\r\n selectedLineGeometry;\r\n closestPointGeometry;\r\n closetPointOnSelectedLine;\r\n showArrow = false;\r\n mirrorView = false;\r\n eventKeys = {};\r\n isActive = false;\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n this.transformService = new MapImplementationTransform();\r\n }\r\n\r\n private _addModifyInteraction(map) {\r\n const modifyFeatures = new Collection>(this.markerPointSource.getFeatures());\r\n this.modify = new Modify({\r\n features: modifyFeatures,\r\n style: new Style({\r\n image: new CircleStyle({\r\n radius: 10,\r\n fill: new Fill({ color: 'rgb(191, 30, 45)' }),\r\n stroke: new Stroke({\r\n color: 'black',\r\n width: 2,\r\n }),\r\n })\r\n })\r\n });\r\n map.addInteraction(this.modify);\r\n }\r\n\r\n private _addSnapInteraction(map) {\r\n const vectorSourceCollection = new Collection>();\r\n vectorSourceCollection.push(this.selectedLine.getArray()[0]);\r\n vectorSourceCollection.push(this.markerPointSource.getFeatures()[0]);\r\n\r\n const vectorSource = new VectorSource({ features: vectorSourceCollection });\r\n this.snap = new Snap({\r\n source: vectorSource,\r\n pixelTolerance: 10000,\r\n edge: true,\r\n vertex: false\r\n });\r\n\r\n map.addInteraction(this.snap);\r\n this._setEvents(map);\r\n }\r\n\r\n private _registerEvent(target, type, listener) {\r\n this.eventKeys[type] = target.on(type, listener);\r\n this.eventKeys[type].target = target;\r\n }\r\n\r\n private _registerMouseEvents(map) {\r\n if (this.isActive) {\r\n return;\r\n }\r\n this._registerEvent(map, 'movestart', () => {\r\n this._removeArrow(map);\r\n });\r\n this._registerEvent(map, 'moveend', () => {\r\n this._createArrow(map);\r\n });\r\n }\r\n\r\n private _deregisterMouseEvents() {\r\n for (const eventKey of Object.keys(this.eventKeys)) {\r\n const event = this.eventKeys[eventKey];\r\n event.target.un(event.type, event.listener);\r\n this.eventKeys[eventKey] = false;\r\n }\r\n }\r\n\r\n private _setEvents(map) {\r\n this.modify.on('modifystart', (evt) => {\r\n const features = evt.features.getArray();\r\n if (features.length > 0 && this.showArrow) {\r\n this._removeArrow(map);\r\n }\r\n }, this);\r\n this.modify.on('modifyend', (evt) => {\r\n const features = evt.features.getArray();\r\n if (features.length > 0) {\r\n const pointCrd = features[0].getGeometry().getCoordinates();\r\n this.eventHandler.triggerEvent(EventsEventTypes.LinePositionMarkerCoordinates, pointCrd);\r\n if (this.showArrow) {\r\n this.closetPointOnSelectedLine = this.selectedLineGeometry.getClosestPoint(pointCrd);\r\n this.markerPointFeature.setGeometry(new Point(this.closetPointOnSelectedLine));\r\n this.closestPointGeometry = this.markerPointFeature.getGeometry();\r\n this._createArrow(map);\r\n }\r\n }\r\n }, this);\r\n }\r\n\r\n private getDistance(zoom: number): number {\r\n return Math.pow(1.9, 20 - zoom);\r\n }\r\n\r\n private _createArrow(map) {\r\n // Create buffer and check if point is inside the buffer\r\n const parser = new jsts.io.OL3Parser();\r\n parser.inject(\r\n Point,\r\n LineString,\r\n LinearRing,\r\n Polygon,\r\n MultiPoint,\r\n MultiLineString,\r\n MultiPolygon\r\n );\r\n\r\n let lineSegmentCoordinates = [];\r\n\r\n this.selectedLineGeometry.getCoordinates().forEach(coordinatesArray => {\r\n if (lineSegmentCoordinates.length === 0) {\r\n coordinatesArray.forEach((segmentCoordinates, index) => {\r\n if (coordinatesArray.length === index + 1) {\r\n return;\r\n } else {\r\n // Identify line segment\r\n const coordinates = [segmentCoordinates, coordinatesArray[index + 1]];\r\n const lineSegment = new LineString(coordinates);\r\n const jstsGeom = parser.read(lineSegment);\r\n const buffered = jstsGeom.buffer(0.1);\r\n const bufferedPolygon = parser.write(buffered);\r\n const intersect = bufferedPolygon.intersectsCoordinate(this.closestPointGeometry.getCoordinates());\r\n if (intersect) {\r\n lineSegmentCoordinates = coordinates;\r\n return;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n if (lineSegmentCoordinates.length === 0) {\r\n return;\r\n }\r\n // Arrow style\r\n const start = lineSegmentCoordinates[this.mirrorView === true ? 1 : 0];\r\n const end = lineSegmentCoordinates[this.mirrorView === true ? 0 : 1];\r\n const dx = end[0] - start[0];\r\n const dy = end[1] - start[1];\r\n const rotation = Math.atan2(dy, dx);\r\n\r\n const view = map?.getView();\r\n const projection = view?.getProjection();\r\n const epsg = projection?.getCode();\r\n\r\n // Calculate offset for arrow\r\n const radius = 6371008.8;\r\n const transformClosetPointCrd = this.transformService.transformToGeographic(this.closetPointOnSelectedLine, epsg || 'EPSG:25832');\r\n const lat1 = transformClosetPointCrd[1] * Math.PI / 180;\r\n const lon1 = transformClosetPointCrd[0] * Math.PI / 180;\r\n const zoom = map.getView().getZoom();\r\n const distance = this.getDistance(zoom);\r\n\r\n // const transformRotation = -rotation * 180 / Math.PI; // use when placing arrow on the line\r\n // const bearing = (transformRotation + 90) * Math.PI / 180; // use when placing arrow on the line\r\n const bearing = -rotation;\r\n\r\n let lat2 = Math.asin(Math.sin(lat1) * Math.cos(distance / radius) +\r\n Math.cos(lat1) * Math.sin(distance / radius) * Math.cos(bearing));\r\n let lon2 = lon1 + Math.atan2(Math.sin(bearing) * Math.sin(distance / radius) * Math.cos(lat1),\r\n Math.cos(distance / radius) - Math.sin(lat1) * Math.sin(lat2));\r\n\r\n lat2 = lat2 * 180 / Math.PI;\r\n lon2 = lon2 * 180 / Math.PI;\r\n\r\n const arrowCrd = this.transformService.transformFromGeographic([lon2, lat2], epsg || 'EPSG:25832');\r\n\r\n // Create Arrow style and feature\r\n this.arrowStyle = new Style({\r\n // geometry: new Point(arrowCrd),\r\n image: new Icon({\r\n crossOrigin: \"anonymous\",\r\n src: 'assets/img/arrow-right-solid.png',\r\n anchor: [0.75, 0.5],\r\n rotateWithView: true,\r\n rotation: -rotation\r\n })\r\n });\r\n\r\n const markerArrowFeature = new Feature();\r\n const markerArrowSource = new VectorSource({\r\n features: [markerArrowFeature]\r\n });\r\n this.markerArrowLayer = new VectorLayer({\r\n source: markerArrowSource,\r\n style: this.arrowStyle\r\n });\r\n this.markerArrowLayer.set('zIndex', 999);\r\n this.markerArrowLayer.set('id', 'markerArrow');\r\n map.addLayer(this.markerArrowLayer);\r\n // Applied calculated coordinates for Arrow\r\n markerArrowFeature.setGeometry(new Point(arrowCrd));\r\n }\r\n\r\n private _removeArrow(map) {\r\n map.removeLayer(this.markerArrowLayer);\r\n }\r\n\r\n activate(map: any, options: any) {\r\n\r\n this.markerPointStyle = new Style({\r\n image: new CircleStyle({\r\n radius: 10,\r\n fill: new Fill({ color: 'red' }),\r\n stroke: new Stroke({\r\n color: 'white',\r\n width: 2,\r\n }),\r\n })\r\n });\r\n\r\n // Point\r\n this.markerPointFeature = new Feature();\r\n this.markerPointSource = new VectorSource({\r\n features: [this.markerPointFeature]\r\n });\r\n this.markerPointLayer = new VectorLayer({\r\n source: this.markerPointSource,\r\n style: this.markerPointStyle\r\n });\r\n this.markerPointLayer.set('zIndex', 999);\r\n this.markerPointLayer.set('id', 'markerPoint');\r\n map.addLayer(this.markerPointLayer);\r\n\r\n\r\n const clickCoordinate = options.clickCoordinates.coordinate;\r\n\r\n this.selectedLine = new Collection([options.featureInfo.olFeature]);\r\n this.selectedLineGeometry = options.featureInfo.olFeature.getGeometry();\r\n this.closetPointOnSelectedLine = this.selectedLineGeometry.getClosestPoint(clickCoordinate);\r\n this.markerPointFeature.setGeometry(new Point(this.closetPointOnSelectedLine));\r\n\r\n this.closestPointGeometry = this.markerPointFeature.getGeometry();\r\n this.eventHandler.triggerEvent(EventsEventTypes.LinePositionMarkerCoordinates, this.closestPointGeometry.getCoordinates());\r\n if (options.showArrow === true) {\r\n this.showArrow = true;\r\n this._createArrow(map);\r\n }\r\n\r\n this._addModifyInteraction(map);\r\n this._registerMouseEvents(map);\r\n this._addSnapInteraction(map);\r\n this.isActive = true;\r\n }\r\n\r\n showMirrorViewPositionMarker(map, value: boolean) {\r\n this.mirrorView = value;\r\n this._removeArrow(map);\r\n this._createArrow(map);\r\n }\r\n\r\n deactivate(map: any) {\r\n this.mirrorView = false;\r\n this.isActive = false;\r\n this._deregisterMouseEvents();\r\n if (map) {\r\n map.removeLayer(this.markerPointLayer);\r\n if (this.showArrow) {\r\n this._removeArrow(map);\r\n }\r\n if (this.modify) {\r\n map.removeInteraction(this.modify);\r\n this.modify.setActive(false);\r\n this.modify = undefined;\r\n }\r\n if (this.snap) {\r\n map.removeInteraction(this.snap);\r\n this.snap.setActive(false);\r\n this.snap = undefined;\r\n }\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { GisCoordinate, GisExtent, JsonResponse } from '../Domain/Definitions';\r\nimport { Attribution, MousePosition, ScaleLine, Zoom, ZoomSlider, ZoomToExtent, defaults as defaultControls, Control } from 'ol/control';\r\nimport { Circle as CircleStyle, Fill as FillStyle, Icon as IconStyle, Stroke as StrokeStyle, Style, Text as TextStyle } from 'ol/style';\r\nimport { DomainSubLayerFORMATS, DomainSubLayerSOURCES } from '../Domain/SubLayer';\r\nimport { Feature, Geolocation, Map, View } from 'ol';\r\nimport { GML, GeoJSON, WFS, WMSCapabilities, WMTSCapabilities } from 'ol/format';\r\nimport { Image as ImageLayer, Layer, Tile as TileLayer, Vector as VectorLayer } from 'ol/layer';\r\nimport { Projection } from 'ol/proj';\r\nimport { all, bbox as bboxStrategy } from 'ol/loadingstrategy';\r\nimport { Circle, Geometry, Point } from 'ol/geom';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport GML2 from 'ol/format/GML2';\r\nimport GML32 from 'ol/format/GML32';\r\nimport { MapImplementationFeatureEditor } from './FeatureEditor';\r\nimport { MapImplementationFilterSource } from './FilterSource';\r\nimport { MapImplementationLayerState } from './LayerState';\r\nimport { MapImplementationMarker } from './Marker';\r\nimport { MapImplementationSourcesFactory } from './Sources/SourcesFactory';\r\nimport { MapImplementationSourcesVector } from './Sources/Vector';\r\nimport { MapImplementationSourcesWfs } from './Sources/Wfs';\r\nimport { MapImplementationStylesJson } from './Styles/Json';\r\nimport { MapImplementationStylesSld } from './Styles/Sld';\r\nimport { MapImplementationTransform } from './Transform';\r\nimport { MapImplementationUtilities } from './Utilities';\r\nimport { Vector as VectorSource, Cluster as ClusterSource, ImageWMS, TileWMS } from 'ol/source';\r\nimport { easeOut } from 'ol/easing';\r\nimport { intersects } from 'ol/extent';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { DragPan, MouseWheelZoom, defaults as defaultInteractions } from 'ol/interaction.js';\r\nimport { platformModifierKeyOnly } from 'ol/events/condition.js';\r\nimport { IGeolocation } from './Interfaces/Geolocation';\r\nimport { ILegendUrlParams } from './Interfaces/LegendUrlParams';\r\nimport pointOnFeature from '@turf/point-on-feature';\r\n\r\ninterface Header {\r\n Authorization: string;\r\n}\r\n\r\nexport class MapImplementationMap {\r\n map: Map;\r\n dummyMap;\r\n baseLayer;\r\n epsg: string;\r\n epsgCodeOnly;\r\n layerPool = [];\r\n isySubLayerPool = [];\r\n _clusterstyles = [];\r\n _sldstyles = [];\r\n mapResolutions;\r\n mapScales;\r\n hoverOptions;\r\n popoverOptions;\r\n mapGroups;\r\n featureEditor;\r\n initialGeolocationChange = false;\r\n callbacksRegistered = false;\r\n useMultiWorld = false;\r\n hoverhighlightmode = '';\r\n timeinterval;\r\n animationActive = true;\r\n animateDuration = 300;\r\n proxyHost = '';\r\n tokenHost = '';\r\n // credits = '© NoIS, Geovekst og kommunene';\r\n geolocation;\r\n geolocationguid = 999990;\r\n geolocationObject;\r\n geolocationBridgeActive = false;\r\n translateOptions;\r\n isyToken;\r\n bearerToken;\r\n describedSubLayer;\r\n describedSource;\r\n isyLayerGeometryType;\r\n\r\n transformService;\r\n filterSources = {};\r\n\r\n repository;\r\n eventHandler;\r\n httpHelper;\r\n measure;\r\n featureInfo;\r\n mapExport;\r\n marker;\r\n hoverInfo;\r\n featureHighlighter;\r\n measureLine;\r\n drawFeature;\r\n addLayerFeature;\r\n modifyFeature;\r\n drawingManager;\r\n printBoxSelect;\r\n featureSelector;\r\n getClickCoordinates;\r\n drawBox;\r\n linePositionMarker;\r\n counters = {};\r\n centerBbox;\r\n centerX: number\r\n centerY: number\r\n maxResolutionOfLayerFromPool;\r\n geolocationindex = 0;\r\n\r\n popoverInfo;\r\n scaleLine; \r\n\r\n layerState: MapImplementationLayerState;\r\n mapImplementationSourcesFactory: MapImplementationSourcesFactory;\r\n jsonStyleFetcher = new MapImplementationStylesJson(undefined);\r\n mapImplementationUtilities = new MapImplementationUtilities();\r\n\r\n geoLocationOptions: IGeolocation = undefined;\r\n // tslint:disable-next-line:max-line-length\r\n constructor(repository, eventHandler, httpHelper, measure, featureInfo, mapExport, hoverInfo, measureLine, drawFeature, addLayerFeature, modifyFeature, drawingManager, printBoxSelect, featureSelector, getClickCoordinates, drawBox, linePositionMarker, popoverInfo, featureHighlighter) {\r\n this.repository = repository;\r\n this.eventHandler = eventHandler;\r\n this.httpHelper = httpHelper;\r\n this.measure = measure;\r\n this.featureInfo = featureInfo;\r\n this.mapExport = mapExport;\r\n this.hoverInfo = hoverInfo;\r\n this.measureLine = measureLine;\r\n this.drawFeature = drawFeature;\r\n this.addLayerFeature = addLayerFeature;\r\n this.modifyFeature = modifyFeature;\r\n this.drawingManager = drawingManager;\r\n this.printBoxSelect = printBoxSelect;\r\n this.featureSelector = featureSelector;\r\n this.getClickCoordinates = getClickCoordinates;\r\n this.drawBox = drawBox;\r\n this.linePositionMarker = linePositionMarker;\r\n\r\n this.featureEditor = new MapImplementationFeatureEditor(eventHandler, this.httpHelper);\r\n\r\n this.transformService = new MapImplementationTransform();\r\n this.marker = new MapImplementationMarker();\r\n this.popoverInfo = popoverInfo;\r\n this.featureHighlighter = featureHighlighter;\r\n }\r\n\r\n /*\r\n Start up functions Start\r\n */\r\n initMap(targetId, mapConfig) {\r\n this.proxyHost = mapConfig.proxyHost;\r\n this.tokenHost = mapConfig.tokenHost;\r\n this.useMultiWorld = mapConfig.useMultiWorld;\r\n this.hoverhighlightmode = mapConfig.hoverhighlightmode;\r\n this.mapImplementationSourcesFactory = new MapImplementationSourcesFactory(\r\n this.eventHandler, this.proxyHost, this.tokenHost, this.httpHelper\r\n );\r\n\r\n this.mapGroups = mapConfig.groups;\r\n this.hoverOptions = mapConfig.hoverOptions;\r\n this.popoverOptions = mapConfig.hoverOptions;\r\n const numZoomLevels = mapConfig.numZoomLevels;\r\n const newMapRes = [];\r\n newMapRes[0] = mapConfig.newMaxRes;\r\n this.mapScales = [];\r\n this.mapScales[0] = mapConfig.newMaxScale;\r\n for (let t = 1; t < numZoomLevels; t++) {\r\n newMapRes[t] = newMapRes[t - 1] / 2;\r\n this.mapScales[t] = this.mapScales[t - 1] / 2;\r\n }\r\n this.mapResolutions = newMapRes;\r\n const sm = new Projection({\r\n code: mapConfig.coordinate_system,\r\n extent: mapConfig.extent,\r\n units: mapConfig.extentUnits\r\n });\r\n // if (mapConfig.credits) {\r\n // this.credits = mapConfig.credits;\r\n // }\r\n this.centerBbox = 'BBOX=253056,6619616,426368,6792928'; // default if no center specified\r\n if (mapConfig.project) {\r\n mapConfig.center = this.transformCoordinates(\r\n mapConfig.project.epsg,\r\n mapConfig.coordinate_system,\r\n [\r\n mapConfig.project.lon,\r\n mapConfig.project.lat\r\n ]\r\n );\r\n mapConfig.zoom = mapConfig.project.zoom;\r\n this._makeCenterBBox(mapConfig);\r\n\r\n }\r\n const attribution = new Attribution({\r\n collapsible: false,\r\n collapsed: false,\r\n });\r\n\r\n const isMobile = /iPhone|iPad|iPod|Android|Mobi/i.test(navigator.userAgent);\r\n const isWindows = /Windows|Win32|Win64/i.test(navigator.userAgent);\r\n let zoomInfoElement;\r\n // Create a function to toggle the visibility of the zoomInfoElement\r\n const toggleZoomInfo = (visible) => {\r\n if (visible) {\r\n zoomInfoElement.style.opacity = '1';\r\n } else {\r\n zoomInfoElement.style.opacity = '0';\r\n }\r\n } \r\n this.map = new Map({\r\n target: targetId,\r\n layers: [],\r\n view: new View({\r\n projection: mapConfig.useMultiWorld && mapConfig.useMultiWorld === true ? mapConfig.coordinate_system : sm,\r\n constrainResolution: true,\r\n enableRotation: false,\r\n center: mapConfig.center,\r\n zoom: mapConfig.zoom,\r\n resolutions: newMapRes,\r\n maxResolution: mapConfig.newMaxRes,\r\n multiWorld: mapConfig.useMultiWorld && mapConfig.useMultiWorld === true ? true : false,\r\n extent: mapConfig.constrainedExtent ? mapConfig.constrainedExtent : undefined,\r\n }),\r\n controls: defaultControls({ attribution: false }).extend([attribution]),\r\n overlays: [],\r\n interactions: mapConfig.pageScrolling ? defaultInteractions({ dragPan: isMobile ? false : true, mouseWheelZoom: false }).extend([\r\n new DragPan({\r\n condition: (event) => {\r\n if (mapConfig.pageScrollingShowInfoText) {\r\n toggleZoomInfo(false);\r\n }\r\n return event.activePointers.length === 2 || platformModifierKeyOnly(event);\r\n },\r\n }),\r\n new MouseWheelZoom({\r\n condition: platformModifierKeyOnly,\r\n })\r\n ]) : undefined\r\n });\r\n\r\n const checkSize = () => {\r\n const small = this.map.getSize()[0] < 800;\r\n attribution.setCollapsible(small);\r\n attribution.setCollapsed(small);\r\n }\r\n\r\n this.map.on('change:size', checkSize);\r\n checkSize(); \r\n\r\n // START ADDING ZOOM INFO TEXT USE CTRL + SCROLL TO ZOOM\r\n if (mapConfig.pageScrollingShowInfoText) {\r\n zoomInfoElement = document.createElement('div');\r\n zoomInfoElement.className = 'ol-control ol-unselectable';\r\n zoomInfoElement.innerHTML = isMobile ? mapConfig.pageScrollingInfoTextAndOverlay?.zoomInfoTextMobile ? mapConfig.pageScrollingInfoTextAndOverlay.zoomInfoTextMobile : 'Use two fingers to zoom and pan' : \r\n isWindows ? mapConfig.pageScrollingInfoTextAndOverlay?.zoomInfoTextWindows ? mapConfig.pageScrollingInfoTextAndOverlay?.zoomInfoTextWindows : 'Use Ctrl + Scroll to zoom in and out of the map' : \r\n mapConfig.pageScrollingInfoTextAndOverlay?.zoomInfoTextMac ? mapConfig.pageScrollingInfoTextAndOverlay?.zoomInfoTextMac : 'Use Command ⌘ + Scroll to zoom in and out of the map';\r\n zoomInfoElement.style.backgroundColor = mapConfig.pageScrollingInfoTextAndOverlay?.backgroundColor ? mapConfig.pageScrollingInfoTextAndOverlay?.backgroundColor : 'rgb(148 148 148 / 70%)';\r\n zoomInfoElement.style.padding = '5px';\r\n zoomInfoElement.style.borderRadius = '5px';\r\n zoomInfoElement.style.boxShadow = '0 1px 2px rgba(0, 0, 0, 0.2)';\r\n zoomInfoElement.style.position = 'absolute';\r\n zoomInfoElement.style.top = '0';\r\n zoomInfoElement.style.left = '0';\r\n zoomInfoElement.style.width = '100%';\r\n zoomInfoElement.style.height = '100%';\r\n zoomInfoElement.style.display = 'flex';\r\n zoomInfoElement.style.opacity = '0';\r\n zoomInfoElement.style.transition = 'opacity 0.4s ease-in-out';\r\n zoomInfoElement.style.justifyContent = 'center';\r\n zoomInfoElement.style.alignItems = 'center';\r\n zoomInfoElement.style.pointerEvents = 'none';\r\n zoomInfoElement.style.color = mapConfig.pageScrollingInfoTextAndOverlay?.textColor ? mapConfig.pageScrollingInfoTextAndOverlay?.textColor : 'white';\r\n zoomInfoElement.style.fontSize = isMobile ? mapConfig.pageScrollingInfoTextAndOverlay?.fontSizeMobile ? mapConfig.pageScrollingInfoTextAndOverlay?.fontSizeMobile : '18px' :\r\n mapConfig.pageScrollingInfoTextAndOverlay?.fontSizeDesktop ? mapConfig.pageScrollingInfoTextAndOverlay?.fontSizeDesktop : '22px';\r\n\r\n const zoomInfoControl = new Control({\r\n element: zoomInfoElement,\r\n target: undefined,\r\n });\r\n this.map.addControl(zoomInfoControl);\r\n \r\n let timeoutId = null;\r\n const delay = 500;\r\n const start = (callback: TimerHandler) => {\r\n clear();\r\n timeoutId = setTimeout(callback, delay);\r\n }\r\n\r\n const clear = () => {\r\n if (timeoutId !== null) {\r\n clearTimeout(timeoutId);\r\n timeoutId = null;\r\n }\r\n }\r\n\r\n this.map.getTargetElement().addEventListener('wheel', (event) => {\r\n if (event.ctrlKey || event.metaKey) {\r\n toggleZoomInfo(false);\r\n clear();\r\n } else {\r\n toggleZoomInfo(true);\r\n start(() => toggleZoomInfo(false));\r\n }\r\n });\r\n\r\n this.map.getTargetElement().addEventListener('touchmove', (event) => {\r\n if (event.touches.length === 2) {\r\n toggleZoomInfo(false);\r\n } else {\r\n toggleZoomInfo(true);\r\n }\r\n });\r\n \r\n this.map.getTargetElement().addEventListener('touchend', () => {\r\n // handle touchend event\r\n toggleZoomInfo(false);\r\n });\r\n } \r\n // END ADDING ZOOM INFO TEXT USE CTRL + SCROLL TO ZOOM\r\n\r\n this._registerMapCallbacks();\r\n\r\n this._registerProgressBar(mapConfig.showProgressBar?.showProgressBar === 'true');\r\n\r\n if (mapConfig.showMousePosition) {\r\n this._registerMousePositionControl(mapConfig.mouseProjectionPrefix); // OBS Possible performance drop when enabled\r\n }\r\n }\r\n\r\n reInitMap(mapConfig) {\r\n this.proxyHost = mapConfig.proxyHost;\r\n this.tokenHost = mapConfig.tokenHost;\r\n this.useMultiWorld = mapConfig.useMultiWorld;\r\n this.hoverhighlightmode = mapConfig.hoverhighlightmode; \r\n this.mapImplementationSourcesFactory = new MapImplementationSourcesFactory(\r\n this.eventHandler, this.proxyHost, this.tokenHost, this.httpHelper\r\n );\r\n\r\n for (const layer of this._getLayers().reverse()) {\r\n this.map.removeLayer(layer);\r\n }\r\n for (const overlay of this.map.getOverlays().getArray().reverse()) {\r\n this.map.removeOverlay(overlay);\r\n }\r\n for (const layer of this._getLayersWithGuid().reverse()) {\r\n if (layer.getVisible() === true) {\r\n this.map.removeLayer(layer);\r\n }\r\n }\r\n\r\n // if (mapConfig.credits) {\r\n // this.credits = mapConfig.credits;\r\n // }\r\n\r\n // Transform coordinates\r\n if (mapConfig.coordinate_system !== this.getEpsgCode()) {\r\n const oldView = this.map.getView();\r\n if (oldView) {\r\n\r\n const newMapRes = [];\r\n newMapRes[0] = mapConfig.newMaxRes;\r\n this.mapScales = [];\r\n this.mapScales[0] = mapConfig.newMaxScale;\r\n const numZoomLevels = mapConfig.numZoomLevels;\r\n for (let t = 1; t < numZoomLevels; t++) {\r\n newMapRes[t] = newMapRes[t - 1] / 2;\r\n this.mapScales[t] = this.mapScales[t - 1] / 2;\r\n }\r\n this.mapResolutions = newMapRes;\r\n\r\n const oldEpsgCode = this.getEpsgCode();\r\n const oldCenter = oldView.getCenter();\r\n const newCenter = this.transformCoordinates(oldEpsgCode, mapConfig.coordinate_system, oldCenter);\r\n mapConfig.center = newCenter;\r\n const newProj = new Projection({\r\n code: mapConfig.coordinate_system,\r\n extent: mapConfig.extent,\r\n units: mapConfig.extentUnits\r\n });\r\n this.epsg = undefined;\r\n const newView = new View({\r\n projection: newProj,\r\n constrainResolution: true,\r\n enableRotation: false,\r\n center: newCenter,\r\n zoom: oldView.getZoom(),\r\n resolutions: newMapRes,\r\n maxResolution: mapConfig.newMaxRes,\r\n });\r\n this.map.setView(newView);\r\n }\r\n } else {\r\n mapConfig.center = this.transformCoordinates(\r\n mapConfig.project.epsg,\r\n mapConfig.coordinate_system,\r\n [\r\n mapConfig.project.lon,\r\n mapConfig.project.lat\r\n ]\r\n );\r\n mapConfig.zoom = mapConfig.project.zoom;\r\n }\r\n\r\n this._makeCenterBBox(mapConfig);\r\n\r\n if (this.getClickCoordinates) {\r\n this.getClickCoordinates.epsg = this.getEpsgCode();\r\n }\r\n\r\n this.layerPool = [];\r\n this.isySubLayerPool = [];\r\n\r\n this._registerMapCallbacks();\r\n\r\n this._registerProgressBar(mapConfig.showProgressBar ? true : false);\r\n\r\n if (mapConfig.showMousePosition) {\r\n this._registerMousePositionControl(mapConfig.mouseProjectionPrefix); // OBS Possible performance drop when enabled\r\n }\r\n }\r\n\r\n private _makeCenterBBox(mapConfig) {\r\n // Update centerBox for base layer thumbnails\r\n const zoomMultiplicator = Math.max(18 - mapConfig.zoom - 6, 0) || 2;\r\n const boxSize = 169.25 * Math.pow(2, zoomMultiplicator); // Todo: connect with mapResolutions\r\n const tileCountX = Math.floor(Math.abs(mapConfig.extent[0] - mapConfig.center[0]) / boxSize);\r\n const tileCountY = Math.floor(Math.abs(mapConfig.extent[1] - mapConfig.center[1]) / boxSize);\r\n const startX = mapConfig.extent[0] + (boxSize * tileCountX);\r\n const startY = mapConfig.extent[1] + (boxSize * tileCountY);\r\n\r\n this.centerBbox = `BBOX=${startX},${startY},${startX + boxSize},${startY + boxSize}`;\r\n this.centerX = startX + (boxSize / 2);\r\n this.centerY = startY + (boxSize / 2);\r\n }\r\n\r\n private _onPointerMove(self, evt) {\r\n if (!self.hoverInfo.hoverIsActive() || self.hoverInfo.hoverIsPaused()) {\r\n return;\r\n }\r\n if (evt.dragging) {\r\n return;\r\n }\r\n self.hoverInfo.displayFeatureInfo(self.map, evt);\r\n }\r\n\r\n private _onMouseOut(self) {\r\n if (!self.hoverInfo.hoverIsActive() || self.hoverInfo.hoverIsPaused()) {\r\n return;\r\n }\r\n self.hoverInfo.onMouseOut();\r\n }\r\n\r\n private _registerMapCallbacks() {\r\n if (this.callbacksRegistered) {\r\n return;\r\n }\r\n this.callbacksRegistered = true;\r\n const view = this.map.getView();\r\n\r\n const changeCenter = () => {\r\n const mapViewChangedObj = this._getUrlObject();\r\n this.eventHandler.triggerEvent(EventsEventTypes.ChangeCenter, mapViewChangedObj);\r\n };\r\n\r\n const changeResolution = (event) => {\r\n const resolution = event.target.getResolution();\r\n const mapViewChangedObj = this._getUrlObject();\r\n mapViewChangedObj['resolution'] = resolution;\r\n this.eventHandler.triggerEvent(EventsEventTypes.ChangeResolution, mapViewChangedObj);\r\n };\r\n\r\n const onPointerMove = (evt) => {\r\n this._onPointerMove(this, evt); \r\n };\r\n\r\n const onPointerDrag = () => {\r\n this.eventHandler.triggerEvent(EventsEventTypes.PointerDrag, '');\r\n };\r\n\r\n const onMouseOut = () => {\r\n this._onMouseOut(this);\r\n };\r\n\r\n const mapMoveend = () => { \r\n this._checkGktToken();\r\n const mapViewChangedObj = this._getUrlObject();\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapMoveend, mapViewChangedObj);\r\n this.map.on('pointermove', onPointerMove); \r\n };\r\n\r\n view.on('change:center', changeCenter);\r\n view.on('change:resolution', changeResolution);\r\n this.map.on('moveend', mapMoveend);\r\n this.map.getViewport().addEventListener('mouseout', onMouseOut);\r\n\r\n this.map.on('movestart', () => {\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapMoveStart, '');\r\n this.map.un('pointermove', onPointerMove);\r\n });\r\n\r\n this.map.on('pointerdrag', onPointerDrag);\r\n\r\n }\r\n\r\n private _registerProgressBar(show: boolean) {\r\n this.layerState = new MapImplementationLayerState(this.eventHandler, this.map, show);\r\n }\r\n\r\n private _registerMousePositionControl(prefix) {\r\n\r\n const element = document.getElementById('mouseposition');\r\n\r\n if (element) {\r\n if (prefix === undefined) {\r\n prefix = '';\r\n }\r\n\r\n const coordinate2string = (coord) => {\r\n let mousehtml = '' + prefix;\r\n let geographic = false;\r\n const epsg = this.getEpsgCode();\r\n const units = this.transformService.getUnits(epsg);\r\n coord = this.transformService.transformCoordinates(this.getEpsgCode(), epsg, coord);\r\n if (mousehtml.length > 0) {\r\n switch (units) {\r\n case undefined:\r\n case 'degrees':\r\n mousehtml = 'Geografisk ';\r\n geographic = true;\r\n break;\r\n case 'm':\r\n switch (epsg) {\r\n case 'EPSG:25831':\r\n case 'EPSG:32631':\r\n mousehtml += '31 ';\r\n break;\r\n case 'EPSG:25832':\r\n case 'EPSG:32632':\r\n mousehtml += '32 ';\r\n break;\r\n case 'EPSG:25833':\r\n case 'EPSG:32633':\r\n mousehtml += '33 ';\r\n break;\r\n case 'EPSG:25834':\r\n case 'EPSG:32634':\r\n mousehtml += '34 ';\r\n break;\r\n case 'EPSG:25835':\r\n case 'EPSG:32635':\r\n mousehtml += '35 ';\r\n break;\r\n case 'EPSG:25836':\r\n case 'EPSG:32636':\r\n mousehtml += '36 ';\r\n break;\r\n case 'EPSG:25837':\r\n case 'EPSG:32637':\r\n mousehtml += '37 ';\r\n break;\r\n case 'EPSG:25838':\r\n case 'EPSG:32638':\r\n mousehtml += '38 ';\r\n break;\r\n }\r\n break;\r\n }\r\n }\r\n if (geographic) {\r\n mousehtml += Math.round(coord[1] * 10000) / 10000 + this.translateOptions['north'] + Math.round(coord[0] * 10000) / 10000 + this.translateOptions['east'];\r\n } else {\r\n mousehtml += parseInt(coord[1], 10) + this.translateOptions['north'] + parseInt(coord[0], 10) + this.translateOptions['east'];\r\n }\r\n return mousehtml;\r\n };\r\n\r\n\r\n const mousePositionControl = new MousePosition({\r\n coordinateFormat: coordinate2string,\r\n projection: this.getEpsgCode(),\r\n // undefinedHTML: ' ',\r\n // comment the following two lines to have the mouse position\r\n // be placed within the map.\r\n className: 'mousePosition',\r\n target: element\r\n });\r\n this.map.addControl(mousePositionControl); // Muligens en tung metode Ã¥ kjøre ved hover.\r\n\r\n }\r\n }\r\n\r\n private _checkGktToken() {\r\n this.mapImplementationSourcesFactory.checkGktToken(this.map);\r\n }\r\n\r\n changeView(viewPropertyObject) {\r\n if (this.map) {\r\n const view = this.map.getView();\r\n let lon, lat, zoom;\r\n if (viewPropertyObject.lon) {\r\n lon = viewPropertyObject.lon;\r\n }\r\n if (viewPropertyObject.lat) {\r\n lat = viewPropertyObject.lat;\r\n }\r\n if (viewPropertyObject.zoom) {\r\n zoom = viewPropertyObject.zoom;\r\n }\r\n\r\n if (lon && lat) {\r\n const latitude = typeof(lat) === 'number' ? lat : parseFloat(lat.replace(/,/g, '.'));\r\n const longitude = typeof(lon) === 'number' ? lon : parseFloat(lon.replace(/,/g, '.'));\r\n if (isFinite(latitude) && isFinite(longitude)) {\r\n view.setCenter([longitude, latitude]);\r\n }\r\n }\r\n\r\n if (zoom !== undefined) {\r\n view.setZoom(zoom);\r\n }\r\n }\r\n }\r\n\r\n /*\r\n Start up functions End\r\n */\r\n\r\n /*\r\n Layer functions Start\r\n Functionality to be moved to ISY.MapImplementation.OL3.Layers\r\n */\r\n\r\n removeDataFromLayer(isySubLayer, data) {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (isySubLayer.format === DomainSubLayerFORMATS.geoJson) {\r\n let geoJson;\r\n const geoJsonParser = new GeoJSON();\r\n if (typeof(data) === 'string') {\r\n geoJson = JSON.parse(data);\r\n } else {\r\n geoJson = data;\r\n }\r\n\r\n for (const feature of geoJsonParser.readFeatures(geoJson)) {\r\n if (feature.get('Guid')) {\r\n const f = layer.getSource().getFeatureById(isySubLayer.name + '.' + feature.get('Guid'));\r\n if (f) {\r\n layer.getSource().removeFeature(f);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n clearLayer(isySubLayer) {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (layer) {\r\n layer.getSource().clear();\r\n }\r\n }\r\n\r\n _getLayers() {\r\n // Retrieve the collection of layers from the map\r\n const allLayers = this.map.getLayers().getArray();\r\n \r\n // Filter out only instances of Layer (excluding LayerGroup instances)\r\n const actualLayers = allLayers.filter((layer): layer is Layer => layer instanceof Layer);\r\n \r\n return actualLayers;\r\n }\r\n\r\n _isLayerVisible(isySubLayer) {\r\n let layerexists = false;\r\n this._getLayers().forEach((maplayer) => {\r\n if (!layerexists && maplayer.get('guid') === isySubLayer.id) {\r\n layerexists = true;\r\n }\r\n });\r\n return layerexists;\r\n }\r\n\r\n private _getUrlParams(source) {\r\n let urlParams = '';\r\n if (source && source.getParams) {\r\n const params = source.getParams();\r\n let separator = '?';\r\n for (const key in params) {\r\n if (Object.prototype.hasOwnProperty.call(params, key)) {\r\n if (urlParams.indexOf('?') >= 0) {\r\n separator = '&';\r\n }\r\n urlParams += separator + key + '=' + params[key];\r\n }\r\n }\r\n } else {\r\n urlParams = '?';\r\n }\r\n return urlParams;\r\n }\r\n\r\n getImageUrl(isySubLayer): Promise {\r\n const layerFromPool = this._getLayerFromPoolByGuid(isySubLayer.id);\r\n\r\n const layerFromPoolPromise = layerFromPool == null \r\n ? this._createLayer_promise(isySubLayer) \r\n : Promise.resolve(layerFromPool);\r\n\r\n const epsg = this.getEpsgCode() || 'EPSG:32632';\r\n const gktToken = this._getTokenAsync().then(token => token ? '&gkt=' + token : '');\r\n \r\n return Promise.all([layerFromPoolPromise, gktToken]).then(([layerFromPool, gktToken]) => {\r\n if (layerFromPool) {\r\n const source = layerFromPool.getSource();\r\n let url = source.get('isy-thumbnail');\r\n if (url) {\r\n return url;\r\n }\r\n if (source.getUrl) {\r\n url = source.getUrl();\r\n } else if (source.getUrls) {\r\n url = source.getUrls()[0];\r\n }\r\n if (url.indexOf('?') > 0) {\r\n url = url.substr(0, url.indexOf('?'));\r\n }\r\n const config = layerFromPool.get('config');\r\n url += this._getUrlParams(source);\r\n switch (source.get('type')) {\r\n case 'ol.source.ImageWMS':\r\n case 'ol.source.TileWMS':\r\n url += '&REQUEST=GetMap&WIDTH=256&HEIGHT=256&SRS=' + epsg + '&STYLES=&' + this.centerBbox;\r\n source.set('isy-thumbnail', url);\r\n return url;\r\n case 'ol.source.WMTS': {\r\n url += `LAYER=${source.getLayer()}&FORMAT=${source.getFormat()}&STYLE=default`;\r\n url += `&SERVICE=WMTS&VERSION=1.0.0&REQUEST=GetTile`;\r\n const matrixSet = config.matrixSet || config.coordinate_system; // don't allow empty string\r\n const matrixPrefix = config.matrixPrefix ?? config.coordinate_system; // allow empty string\r\n const tileMatrixZoomLevel = 10; // adjust zoom level if needed\r\n const tileMatrix = `${matrixPrefix}${tileMatrixZoomLevel}`; \r\n const gridOrigin = source.tileGrid.getOrigin();\r\n const tileGridOriginX = gridOrigin[0]; \r\n const tileGridOriginY = gridOrigin[1]; \r\n const tileSize = source.tileGrid.getTileSize();\r\n const resolutionAtMatrixLevel = this.map.getView().getResolutionForZoom(tileMatrixZoomLevel);\r\n // Calculate TILECOL and TILEROW based on the center coordinates\r\n const tileCol = Math.floor((this.centerX - tileGridOriginX) / (tileSize * resolutionAtMatrixLevel));\r\n const tileRow = Math.floor((tileGridOriginY - this.centerY) / (tileSize * resolutionAtMatrixLevel)); \r\n url += `&TILEMATRIXSET=${matrixSet}&TILEMATRIX=${tileMatrix}&TILECOL=${tileCol}&TILEROW=${tileRow}`; \r\n source.set('isy-thumbnail', url); \r\n if (isySubLayer.gatekeeper && isySubLayer.tiled) {\r\n url += gktToken;\r\n } \r\n return url;\r\n }\r\n default:\r\n console.error('getImageUrl is not implemented for source of type:', source.get('type'));\r\n break;\r\n }\r\n url = 'https://opencache.statkart.no/gatekeeper/gk/gk.open?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=europa&WIDTH=256&HEIGHT=256&SRS=' + epsg + '&STYLES=&' + this.centerBbox;\r\n source.set('isy-thumbnail', url);\r\n return url;\r\n }\r\n \r\n return 'https://opencache.statkart.no/gatekeeper/gk/gk.open?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&FORMAT=image%2Fpng&TRANSPARENT=true&LAYERS=europa&WIDTH=256&HEIGHT=256&SRS=' + epsg + '&STYLES=&' + this.centerBbox;\r\n });\r\n }\r\n\r\n showLayer(isySubLayer): Promise {\r\n if (!this._isLayerVisible(isySubLayer)) {\r\n return this._createLayer_promise(isySubLayer).then(layer => {\r\n if (layer) {\r\n layer.set('sortingIndex', isySubLayer.sortingIndex);\r\n layer.set('zIndex', isySubLayer.sortingIndex);\r\n this.map.addLayer(layer);\r\n this._trigLayersChanged();\r\n }\r\n });\r\n }\r\n return undefined; // Not all code paths return a value.\r\n }\r\n\r\n addLayerToOlMap(layer) {\r\n this.map.addLayer(layer);\r\n }\r\n\r\n removeLayerFromOlMap(layer) {\r\n this.map.removeLayer(layer);\r\n }\r\n\r\n getLegendStyles(isySubLayer) {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (layer !== null) {\r\n return this.getLegendStyleFromLayer(layer);\r\n }\r\n return undefined;\r\n } \r\n\r\n showBaseLayer(isySubLayer): Promise {\r\n if (!this._isLayerVisible(isySubLayer)) {\r\n return this._createLayer_promise(isySubLayer).then(layer => {\r\n if (layer) {\r\n if (this.baseLayer) {\r\n this.map.removeLayer(this.baseLayer);\r\n }\r\n this.baseLayer = layer; \r\n //It has to be timeout for update style \r\n layer.getSource().setAttributions(isySubLayer.attribution ? [isySubLayer.attribution] : []);\r\n setTimeout(() => {\r\n const olAttribution = document.querySelector('.ol-attribution'); \r\n olAttribution['style'].display = isySubLayer.attribution ? 'flex' : 'none';\r\n }, 100);\r\n this.map.getLayers().insertAt(0, layer); \r\n this._trigLayersChanged();\r\n }\r\n });\r\n } \r\n\r\n return undefined; // Not all code paths return a value.\r\n }\r\n\r\n hideLayer(isySubLayer) {\r\n if (this._isLayerVisible(isySubLayer)) {\r\n const layer = this._getLayerByGuid(isySubLayer.id);\r\n if (layer) {\r\n this.map.removeLayer(layer);\r\n this._trigLayersChanged();\r\n }\r\n }\r\n }\r\n\r\n\r\n /*\r\n reloadLayer will remove layer from map and ALSO from layerPool. \r\n Style/clusterStyle is apply again on the same layer with consider new features and their geometry.\r\n Use case: when bbox is applied in backend and we need to update same layer with new features.\r\n */\r\n reloadLayer(isyLayer) { \r\n this.removeLayer(isyLayer);\r\n this.showLayer(isyLayer.subLayers[0]);\r\n isyLayer.isVisible = true;\r\n }\r\n\r\n removeLayer(isyLayer) {\r\n const isySubLayer = isyLayer.subLayers[0];\r\n if (this._isLayerVisible(isySubLayer)) {\r\n const layer = this._getLayerByGuid(isySubLayer.id);\r\n if (layer) {\r\n this.map.removeLayer(layer);\r\n this._trigLayersChanged();\r\n }\r\n }\r\n this.layerPool = this._removeLayerFromPool(isySubLayer);\r\n }\r\n \r\n\r\n private _setLayerProperties(layer, isySubLayer) {\r\n // For caching, remember layer config\r\n layer.set('config', isySubLayer);\r\n layer.on('change', () => {\r\n layer.set('loading', true);\r\n }, layer);\r\n layer.on('render', () => {\r\n // usikker pÃ¥ om render er riktig funksjon...\r\n if (layer.get('loading')) {\r\n layer.set('loading', undefined);\r\n this.eventHandler.triggerEvent(EventsEventTypes.LoadingLayerEnd, layer);\r\n }\r\n }, layer);\r\n }\r\n\r\n private _styleFunction = (feature) => {\r\n if (!feature) {\r\n return;\r\n }\r\n this.jsonStyleFetcher.getStyle(feature, undefined);\r\n }\r\n\r\n private _createLayer_promise(isySubLayer): Promise {\r\n let layer;\r\n const layerFromPool = this._getLayerFromPool(isySubLayer);\r\n let returnlayer = true;\r\n let parameters = {};\r\n if (this.isyToken && this.isyToken.length > 0) {\r\n parameters = {isyToken: this.isyToken};\r\n }\r\n\r\n const clusterStyleCallback = (response) => {\r\n this._clusterstyles[isySubLayer.id].parseSld(response, parseInt(isySubLayer.id, 10));\r\n };\r\n\r\n const clusterStyleSldCallback = (response) => {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesSld();\r\n this._clusterstyles[isySubLayer.id].parseSld(response, parseInt(isySubLayer.id, 10));\r\n };\r\n\r\n const clusterStyleJsonCallback = (response) => {\r\n layer.set('config', isySubLayer);\r\n this._sldstyles[isySubLayer.id] = new MapImplementationStylesJson(response);\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesJson(response);\r\n const scales = this._clusterstyles[isySubLayer.id].getScale();\r\n if (scales) {\r\n if (scales.max) {\r\n this._setLayerMaxresolution(layer, this._getResolutionByScale(scales.max));\r\n }\r\n if (scales.min) {\r\n this._setLayerMinresolution(layer, this._getResolutionByScale(scales.min));\r\n }\r\n }\r\n\r\n this._addIsySubLayer(isySubLayer);\r\n const layerIdExist = this.layerPool.find(x => x.guid === isySubLayer.id) !== undefined;\r\n\r\n if (!layerIdExist) {\r\n this.layerPool.push(layer);\r\n layer.set('sortingIndex', isySubLayer.sortingIndex);\r\n layer.set('zIndex', isySubLayer.sortingIndex);\r\n this.map.addLayer(layer);\r\n this.eventHandler.triggerEvent(EventsEventTypes.LayerCreated, this.layerPool);\r\n this.sortLayerBySortIndex();\r\n this._trigLayersChanged();\r\n }\r\n };\r\n\r\n const styleJsonCallback = (_response) => {\r\n // For caching, remember layer config\r\n layer.set('config', isySubLayer);\r\n this._sldstyles[isySubLayer.id] = new MapImplementationStylesJson(_response);\r\n const scales = this._sldstyles[isySubLayer.id].getScale();\r\n if (scales) {\r\n if (scales.max) {\r\n this._setLayerMaxresolution(layer, this._getResolutionByScale(scales.max));\r\n }\r\n if (scales.min) {\r\n this._setLayerMinresolution(layer, this._getResolutionByScale(scales.min));\r\n }\r\n }\r\n\r\n this._addIsySubLayer(isySubLayer);\r\n const layerIdExist = this.layerPool.find(x => x.guid === isySubLayer.id) !== undefined;\r\n\r\n if (!layerIdExist) {\r\n this.layerPool.push(layer);\r\n layer.set('sortingIndex', isySubLayer.sortingIndex);\r\n layer.set('zIndex', isySubLayer.sortingIndex);\r\n this.map.addLayer(layer);\r\n this.eventHandler.triggerEvent(EventsEventTypes.LayerCreated, this.layerPool);\r\n this.sortLayerBySortIndex();\r\n this._trigLayersChanged();\r\n }\r\n };\r\n\r\n const styleCallback = (_response) => {\r\n // For caching, remember layer config\r\n layer.set('config', isySubLayer);\r\n const scales = this._sldstyles[isySubLayer.id].parseSld(_response, parseInt(isySubLayer.id, 10));\r\n if (scales.maxScaleDenominator) {\r\n this._setLayerMaxresolution(layer, this._getResolutionByScale(scales.maxScaleDenominator));\r\n }\r\n if (scales.minScaleDenominator) {\r\n this._setLayerMinresolution(layer, this._getResolutionByScale(scales.minScaleDenominator));\r\n }\r\n this._addIsySubLayer(isySubLayer);\r\n const layerIdExist = this.layerPool.find(x => x.guid === isySubLayer.id) !== undefined;\r\n if (!layerIdExist) {\r\n this.layerPool.push(layer);\r\n layer.set('sortingIndex', isySubLayer.sortingIndex);\r\n layer.set('zIndex', isySubLayer.sortingIndex);\r\n this.map.addLayer(layer);\r\n this.eventHandler.triggerEvent(EventsEventTypes.LayerCreated, this.layerPool);\r\n this.sortLayerBySortIndex();\r\n this._trigLayersChanged();\r\n }\r\n };\r\n\r\n if (layerFromPool != null) {\r\n layer = layerFromPool;\r\n // For caching, remember layer config\r\n layer.set('config', isySubLayer);\r\n return Promise.resolve(returnlayer ? layer : undefined);\r\n } else {\r\n return this.mapImplementationSourcesFactory.sourcePromise(isySubLayer, parameters)\r\n .then(sourceObject => {\r\n const promises: Promise[] = [];\r\n const source = sourceObject.source;\r\n // Add attribution if it is defined\r\n source.setAttributions([]);\r\n if (isySubLayer.source === DomainSubLayerSOURCES.vector) {\r\n if (isySubLayer.jsonstyleurl) {\r\n if (source.get('type') === 'ol.source.Cluster') {\r\n this._clusterstyles[isySubLayer.id] = {};\r\n this._sldstyles[isySubLayer.id] = {};\r\n const clusterSource = new ClusterSource({\r\n distance: isySubLayer.clusterdistance,\r\n source: source,\r\n attributions: source.getAttributions(),\r\n wrapX: isySubLayer.clusterwrapx\r\n });\r\n clusterSource.set('type', 'ol.source.Cluster');\r\n layer = new VectorLayer({\r\n source: clusterSource,\r\n style: (feature, resolution) => {\r\n return this.getClusterStyle(clusterSource.getDistance(), feature, resolution, isySubLayer.id, undefined, isySubLayer.clustercount);\r\n }\r\n });\r\n returnlayer = false;\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.jsonstyleurl, 'application/json', clusterStyleJsonCallback)\r\n .then(() => this._setLayerProperties(layer, isySubLayer))\r\n );\r\n } else {\r\n this._sldstyles[isySubLayer.id] = {};\r\n layer = new VectorLayer({\r\n source: source,\r\n style: (feature, resolution) => {\r\n return this._sldstyles[isySubLayer.id].getStyle(feature, this._getScaleByResolution(resolution));\r\n }\r\n });\r\n returnlayer = false;\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.jsonstyleurl, 'application/json', styleJsonCallback)\r\n .then(() => this._setLayerProperties(layer, isySubLayer))\r\n );\r\n }\r\n } else if (isySubLayer.jsonstyle) {\r\n if (source.get('type') === 'ol.source.Cluster') {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.jsonstyle);\r\n this._sldstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.jsonstyle);\r\n const clusterSource = new ClusterSource({\r\n distance: isySubLayer.clusterdistance,\r\n source: source,\r\n attributions: source.getAttributions(),\r\n wrapX: isySubLayer.clusterwrapx\r\n });\r\n clusterSource.set('type', 'ol.source.Cluster');\r\n layer = new VectorLayer({\r\n source: clusterSource,\r\n style: (feature, resolution) => {\r\n return this.getClusterStyle(clusterSource.getDistance(), feature, resolution, isySubLayer.id, undefined, isySubLayer.clustercount);\r\n }\r\n });\r\n if (isySubLayer.clusterstyle && isySubLayer.clusterstyle.indexOf('http') >= 0) {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesSld();\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.clusterstyle, 'application/xml', clusterStyleCallback)\r\n );\r\n } else {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.clusterstyle);\r\n }\r\n } else {\r\n this._sldstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.jsonstyle);\r\n layer = new VectorLayer({\r\n source: source,\r\n style: (feature, resolution) => {\r\n return this._sldstyles[isySubLayer.id].getStyle(feature, this._getScaleByResolution(resolution));\r\n }\r\n });\r\n }\r\n } else if (isySubLayer.style) {\r\n if (typeof isySubLayer.style === 'object' || isySubLayer.style.indexOf('http') < 0) {\r\n if (source.get('type') === 'ol.source.Cluster') {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.style);\r\n const clusterSource = new ClusterSource({\r\n distance: isySubLayer.clusterdistance,\r\n source: source,\r\n attributions: source.getAttributions(),\r\n wrapX: isySubLayer.clusterwrapx\r\n });\r\n clusterSource.set('type', 'ol.source.Cluster');\r\n layer = new VectorLayer({\r\n source: clusterSource,\r\n style: (feature, resolution) => {\r\n return this.getClusterStyle(clusterSource.getDistance(), feature, resolution, isySubLayer.id, undefined, isySubLayer.clustercount);\r\n }\r\n });\r\n } else {\r\n this._sldstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.style);\r\n layer = new VectorLayer({\r\n source: source,\r\n style: (feature, resolution) => {\r\n return this._sldstyles[isySubLayer.id].getStyle(feature, this._getScaleByResolution(resolution));\r\n }\r\n });\r\n }\r\n } else {\r\n this._sldstyles[isySubLayer.id] = new MapImplementationStylesSld();\r\n if (source.get('type') === 'ol.source.Cluster') {\r\n const clusterSource = new ClusterSource({\r\n distance: isySubLayer.clusterdistance,\r\n source: source,\r\n attributions: source.getAttributions(),\r\n wrapX: isySubLayer.clusterwrapx\r\n });\r\n clusterSource.set('type', 'ol.source.Cluster');\r\n layer = new VectorLayer({\r\n source: clusterSource,\r\n style: (feature, resolution) => {\r\n return this.getClusterStyle(clusterSource.getDistance(), feature, resolution, isySubLayer.id, undefined, isySubLayer.clustercount);\r\n }\r\n });\r\n if (isySubLayer.clusterstyle) {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesSld();\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.clusterstyle, 'application/xml', clusterStyleCallback)\r\n );\r\n }\r\n } else {\r\n layer = new VectorLayer({\r\n source: source,\r\n style: (feature, resolution) => {\r\n return this._sldstyles[isySubLayer.id].getStyle(feature, this._getScaleByResolution(resolution));\r\n }\r\n });\r\n }\r\n if (isySubLayer.style) {\r\n returnlayer = false;\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.style, 'application/xml', styleCallback)\r\n .then(() => this._setLayerProperties(layer, isySubLayer))\r\n );\r\n } else {\r\n this._setLayerProperties(layer, isySubLayer);\r\n }\r\n }\r\n } else {\r\n layer = new VectorLayer({\r\n source: source\r\n });\r\n }\r\n } else if (isySubLayer.source === DomainSubLayerSOURCES.wfs) {\r\n if (isySubLayer.jsonstyleurl) {\r\n if (source.get('type') === 'ol.source.Cluster') {\r\n this._clusterstyles[isySubLayer.id] = {};\r\n this._sldstyles[isySubLayer.id] = {};\r\n const clusterSource = new ClusterSource({\r\n distance: isySubLayer.clusterdistance,\r\n source: source,\r\n attributions: source.getAttributions(),\r\n wrapX: isySubLayer.clusterwrapx\r\n });\r\n clusterSource.set('type', 'ol.source.Cluster');\r\n layer = new VectorLayer({\r\n source: clusterSource,\r\n style: (feature, resolution) => {\r\n return this.getClusterStyle(clusterSource.getDistance(), feature, resolution, isySubLayer.id, undefined, isySubLayer.clustercount);\r\n }\r\n });\r\n returnlayer = false;\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.jsonstyleurl, 'application/json', clusterStyleJsonCallback)\r\n .then(() => this._setLayerProperties(layer, isySubLayer))\r\n );\r\n if (isySubLayer.clusterstyle && isySubLayer.clusterstyle.indexOf('http') >= 0) {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesSld();\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.clusterstyle, 'application/xml', clusterStyleSldCallback)\r\n );\r\n } else if (isySubLayer.clusterStyle) {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.clusterstyle);\r\n }\r\n } else {\r\n this._sldstyles[isySubLayer.id] = {};\r\n layer = new VectorLayer({\r\n source: source,\r\n style: (feature, resolution) => {\r\n return this._sldstyles[isySubLayer.id].getStyle(feature, this._getScaleByResolution(resolution));\r\n }\r\n });\r\n returnlayer = false;\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.jsonstyleurl, 'application/json', styleJsonCallback)\r\n .then(() => this._setLayerProperties(layer, isySubLayer))\r\n );\r\n }\r\n } else if (isySubLayer.jsonstyle) {\r\n if (source.get('type') === 'ol.source.Cluster') {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.jsonstyle);\r\n this._sldstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.jsonstyle);\r\n const clusterSource = new ClusterSource({\r\n distance: isySubLayer.clusterdistance,\r\n source: source,\r\n attributions: source.getAttributions(),\r\n wrapX: isySubLayer.clusterwrapx\r\n });\r\n clusterSource.set('type', 'ol.source.Cluster');\r\n layer = new VectorLayer({\r\n source: clusterSource,\r\n style: (feature, resolution) => {\r\n return this.getClusterStyle(clusterSource.getDistance(), feature, resolution, isySubLayer.id, undefined, isySubLayer.clustercount);\r\n }\r\n });\r\n if (isySubLayer.clusterstyle && isySubLayer.clusterstyle.indexOf('http') >= 0) {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesSld(); \r\n promises.push(\r\n this.asyncGetResource(isySubLayer.clusterstyle, 'application/xml', clusterStyleCallback)\r\n );\r\n } else if (isySubLayer.clusterStyle) {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.clusterstyle);\r\n }\r\n } else {\r\n this._sldstyles[isySubLayer.id] = new MapImplementationStylesJson(isySubLayer.jsonstyle);\r\n layer = new VectorLayer({\r\n source: source,\r\n style: (feature, resolution) => {\r\n return this._sldstyles[isySubLayer.id].getStyle(feature, this._getScaleByResolution(resolution));\r\n }\r\n });\r\n }\r\n } else {\r\n this._sldstyles[isySubLayer.id] = new MapImplementationStylesSld();\r\n if (source.get('type') === 'ol.source.Cluster') {\r\n const clusterSource = new ClusterSource({\r\n distance: isySubLayer.clusterdistance,\r\n source: source,\r\n attributions: source.getAttributions(),\r\n wrapX: isySubLayer.clusterwrapx\r\n });\r\n clusterSource.set('type', 'ol.source.Cluster');\r\n layer = new VectorLayer({\r\n source: clusterSource,\r\n style: (feature, resolution) => {\r\n return this.getClusterStyle(clusterSource.getDistance(), feature, resolution, isySubLayer.id, undefined, isySubLayer.clustercount);\r\n }\r\n });\r\n if (isySubLayer.clusterstyle) {\r\n this._clusterstyles[isySubLayer.id] = new MapImplementationStylesSld();\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.clusterstyle, 'application/xml', clusterStyleCallback)\r\n );\r\n }\r\n } else {\r\n layer = new VectorLayer({\r\n source: source,\r\n style: (feature, resolution) => {\r\n return this._sldstyles[isySubLayer.id].getStyle(feature, this._getScaleByResolution(resolution));\r\n }\r\n });\r\n }\r\n if (isySubLayer.style) {\r\n returnlayer = false;\r\n promises.push(\r\n this.asyncGetResource(isySubLayer.style, 'application/xml', styleCallback)\r\n .then(() => this._setLayerProperties(layer, isySubLayer))\r\n );\r\n } else {\r\n this._setLayerProperties(layer, isySubLayer);\r\n }\r\n }\r\n } else if (isySubLayer.source === 'GeoJSON') {\r\n const styleFunction = (feature) => {\r\n this._styleFunction(feature);\r\n };\r\n layer = new VectorLayer({\r\n source: source,\r\n style: styleFunction\r\n });\r\n } else if (isySubLayer.tiled) {\r\n layer = new TileLayer({\r\n extent: this.useMultiWorld ? undefined : isySubLayer.extent,\r\n opacity: isySubLayer.opacity ? parseFloat(isySubLayer.opacity) : isySubLayer.opacity,\r\n preload: Infinity,\r\n source: source\r\n });\r\n } else {\r\n layer = new ImageLayer({\r\n extent: this.useMultiWorld ? undefined : isySubLayer.extent,\r\n opacity: isySubLayer.opacity ? parseFloat(isySubLayer.opacity) : isySubLayer.opacity,\r\n source: source\r\n });\r\n\r\n if (!!isySubLayer.timeoptions && !!isySubLayer.timeoptions.starttime && !!isySubLayer.timeoptions.endtime && !!isySubLayer.timeoptions.increment) {\r\n // this.setLayerTime(layer, 0);\r\n const updateTime = () => {\r\n const currentTime = new Date(isySubLayer?.timeoptions?.starttime);\r\n layer.getSource().updateParams({ 'TIME': currentTime.toISOString() });\r\n isySubLayer.time = currentTime; // Update the time in isySubLayer\r\n };\r\n updateTime();\r\n\r\n // Animation\r\n // clearInterval(this.timeinterval);\r\n // this.timeinterval = null;\r\n // const updateTime = () => {\r\n // const currentTime = new Date(isySubLayer.time);\r\n // currentTime.setMinutes(currentTime.getMinutes() + 15);\r\n // source.updateParams({ 'TIME': currentTime.toISOString() });\r\n // isySubLayer.time = currentTime; // Update the time in isySubLayer\r\n // };\r\n // updateTime();\r\n // this.timeinterval = setInterval(updateTime, isySubLayer.timeinterval * 1000 || 1000); // Default 1 second\r\n }\r\n }\r\n this.mapImplementationSourcesFactory.setLayer(isySubLayer, layer);\r\n\r\n // For caching, remember layer config\r\n layer.set('config', isySubLayer);\r\n layer.set('layerIndex', isySubLayer.layerIndex);\r\n layer.set('guid', isySubLayer.id);\r\n layer.set('typename', isySubLayer.name);\r\n layer.set('tooltipTemplate', isySubLayer.tooltipTemplate);\r\n layer.set('clustertooltip', isySubLayer.clustertooltip);\r\n layer.set('clustercount', isySubLayer.clustercount);\r\n if (isySubLayer.minResolution) {\r\n layer.setMinResolution(isySubLayer.minResolution);\r\n }\r\n if (isySubLayer.maxResolution) {\r\n layer.setMaxResolution(isySubLayer.maxResolution);\r\n }\r\n if (isySubLayer.maxScale) {\r\n this._setLayerMinresolution(layer, this._getResolutionByScale(isySubLayer.maxScale));\r\n }\r\n if (isySubLayer.minScale) {\r\n this._setLayerMaxresolution(layer, this._getResolutionByScale(isySubLayer.minScale));\r\n }\r\n if (returnlayer) {\r\n this._addIsySubLayer(isySubLayer);\r\n let layerIdExist;\r\n if (self && this.layerPool && this.layerPool.length > 0) {\r\n layerIdExist =\r\n this.layerPool.find(\r\n (x) => x.guid === isySubLayer.id\r\n ) !== undefined;\r\n }\r\n if (this.layerPool && !layerIdExist) {\r\n this.layerPool.push(layer);\r\n }\r\n }\r\n return Promise.all(promises).then(() => returnlayer ? layer : undefined);\r\n });\r\n }\r\n }\r\n\r\n private _setLayerMinresolution(layer, scale) {\r\n if (layer && scale) {\r\n const minRes = layer.getMinResolution();\r\n if (minRes && minRes >= scale) {\r\n return;\r\n }\r\n layer.setMinResolution(scale);\r\n }\r\n }\r\n\r\n private _setLayerMaxresolution(layer, scale) {\r\n if (layer && scale) {\r\n const maxRes = layer.getMaxResolution();\r\n if (maxRes && maxRes <= scale) {\r\n return;\r\n }\r\n layer.setMaxResolution(scale);\r\n }\r\n }\r\n\r\n private _loadVectorLayer(isySubLayer, source) {\r\n const epsgCodeOnly: string = this.getEpsgCodeOnly();\r\n const viewBox: string = this.map.getView()\r\n .calculateExtent(this.map.getSize()).join(',');\r\n\r\n let specificParams: object;\r\n let loading = bboxStrategy;\r\n // Remove question mark from url\r\n const geoJsonUrl: string = isySubLayer.url\r\n .replace('Geojson&', 'Geojson')\r\n .replace('items.json&', 'items.json');\r\n\r\n const standardParams: object = {\r\n 'bbox-crs': epsgCodeOnly,\r\n 'crs': epsgCodeOnly,\r\n };\r\n\r\n let headers =
    {};\r\n if (isySubLayer.provider === 'geoserver' && isySubLayer.providerName === 'Kontor') {\r\n loading = all;\r\n specificParams = { limit: 1000 };\r\n isySubLayer.extraParams = undefined;\r\n } else {\r\n specificParams = { 'bbox': viewBox }\r\n if (isySubLayer.bearerToken) {\r\n headers = {'Authorization': 'Bearer ' + isySubLayer.bearerToken};\r\n }\r\n }\r\n\r\n const mergedParams: object = {\r\n ...standardParams,\r\n ...specificParams,\r\n ...isySubLayer.extraParams\r\n };\r\n\r\n this._loadGeoJsonFeatures(geoJsonUrl, headers, mergedParams, source, loading);\r\n }\r\n\r\n\r\n private _loadGeoJsonFeatures(url, headers: Header, params: any, source: any, strategy: any): Promise {\r\n return firstValueFrom(this.httpHelper.get(url, {headers: headers, params: params, responseType: 'json'}))\r\n .then((data: JsonResponse) => {\r\n if (data && data?.features) {\r\n const format: GeoJSON = new GeoJSON();\r\n data.features.forEach(feature => {\r\n if (feature.type) {\r\n source.addFeature(format.readFeature(feature));\r\n source.strategy = strategy;\r\n }\r\n });\r\n }\r\n })\r\n .catch(err => {\r\n console.error('error loading geoJson: ', err);\r\n });\r\n }\r\n\r\n\r\n private _getLayerFromPool(isySubLayer) {\r\n return this.layerPool?.find(x => x.get('guid') === isySubLayer?.id) || null;\r\n }\r\n\r\n private _removeLayerFromPool(isySubLayer) {\r\n const index = this.layerPool?.findIndex(x => x.get('guid') === isySubLayer?.id) || null;\r\n if (index) {\r\n return this.layerPool.slice(0, index).concat(this.layerPool.slice(index + 1));\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n private _getLayerFromPoolByGuid(guid) {\r\n return this.layerPool?.find(x => x.get('guid') === guid) || null;\r\n }\r\n\r\n private _addIsySubLayer(isySubLayer) {\r\n const itemExists = this.isySubLayerPool.find(x => x.id === isySubLayer.id) !== undefined;\r\n if (!itemExists) {\r\n this.isySubLayerPool.push(isySubLayer);\r\n }\r\n }\r\n\r\n private _getIsySubLayerFromPool(layer) {\r\n return this.isySubLayerPool.find(x => x.id === layer.get('guid'));\r\n }\r\n\r\n private _getLayerFromPoolByFeature(feature) {\r\n let featureId;\r\n const features = feature.get('features');\r\n if (features && features.length && features.length > 1) {\r\n featureId = features[0].values_?.layerguid ? features[0].values_?.layerguid : features[0].get('layerguid');\r\n } else {\r\n featureId = feature.values_?.layerguid ? feature.values_?.layerguid : feature.get('layerguid');\r\n }\r\n if (featureId === undefined) {\r\n featureId = feature.getId();\r\n\r\n if (featureId === undefined) {\r\n return;\r\n }\r\n\r\n if (featureId.indexOf('.') > 0) {\r\n featureId = featureId.slice(0, featureId.indexOf('.'));\r\n } else {\r\n const tempFeatureId = featureId.substr(0, featureId.indexOf('_')) + ':' + featureId.substr(featureId.indexOf('_') + 1);\r\n featureId = tempFeatureId.slice(0, tempFeatureId.indexOf('_'));\r\n }\r\n for (const layerInPool of this.layerPool) {\r\n let typename = layerInPool.get('typename');\r\n if (typename && featureId) {\r\n if (typename.toLowerCase() === featureId.toLowerCase()) {\r\n return layerInPool;\r\n }\r\n if (typename.indexOf(':') > 0) {\r\n typename = typename.slice(typename.indexOf(':') + 1);\r\n }\r\n if (typename.toLowerCase() === featureId.toLowerCase()) {\r\n return layerInPool;\r\n }\r\n }\r\n }\r\n } else {\r\n for (const layer of this.layerPool) {\r\n if (featureId === layer.get('guid')) {\r\n return layer;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _getScaleByResolution(resolution) {\r\n if (resolution === undefined) {\r\n return;\r\n }\r\n const scaleIdx = this.mapResolutions.findIndex(x => x === resolution);\r\n const scale = this.mapScales[scaleIdx];\r\n return scale;\r\n }\r\n\r\n private _getZoomByScale(scale) {\r\n if (scale === undefined) {\r\n return this.getZoom();\r\n }\r\n const maxValue = 2 * this.mapScales[0];\r\n for (let i = 1; i < this.mapScales.length; ++i) {\r\n if (scale >= this.mapScales[i]) {\r\n let diffUp = maxValue;\r\n let diffDown = maxValue;\r\n const diff = Math.abs(scale - this.mapScales[i]);\r\n if (i > 0) {\r\n diffDown = Math.abs(scale - this.mapScales[i - 1]);\r\n }\r\n if (i < this.mapScales.length - 1) {\r\n diffUp = Math.abs(scale - this.mapScales[i + 1]);\r\n }\r\n if (diff < diffUp && diff < diffDown) {\r\n return i;\r\n } else if (diffUp < diffDown) {\r\n return i + 1;\r\n } else if (diffDown < diffUp) {\r\n return i - 1;\r\n }\r\n return i;\r\n }\r\n }\r\n return this.mapScales.length - 1;\r\n }\r\n\r\n private _getResolutionByScale(scale) {\r\n if (scale === undefined) {\r\n scale = this.getScale();\r\n }\r\n if (scale === 1) {\r\n return this.mapResolutions[this.mapResolutions.length - 1];\r\n }\r\n if (scale === Infinity) {\r\n return undefined;\r\n }\r\n let zoomlevel = -1;\r\n for (let i = 0; i < this.mapScales.length; i++) {\r\n if (this.mapScales[i] < scale) {\r\n zoomlevel = i - 1;\r\n break;\r\n }\r\n }\r\n if (zoomlevel < 0) {\r\n return this.mapResolutions[this.mapResolutions.length - 1];\r\n }\r\n return this.mapResolutions[zoomlevel];\r\n }\r\n setLayerTime(isySubLayer, value) {\r\n const layer = this._getLayerByGuid(isySubLayer.id);\r\n if (layer && value !== undefined) {\r\n // clearInterval(this.timeinterval);\r\n // this.timeinterval = null;\r\n const incrementParts = isySubLayer.timeoptions.increment.split(' ');\r\n const incrementValue = parseInt(incrementParts[0]) * value;\r\n const incrementUnit = incrementParts[1].toLowerCase();\r\n const updateTime = () => {\r\n const currentTime = new Date(isySubLayer?.timeoptions?.starttime);\r\n //update currentTime based on incrementUnit ('year', 'month', 'day', 'hour', 'minute', 'second') and incrementValue\r\n switch (incrementUnit) {\r\n case 'year':\r\n currentTime.setFullYear(currentTime.getFullYear() + incrementValue);\r\n break;\r\n case 'month':\r\n currentTime.setMonth(currentTime.getMonth() + incrementValue);\r\n break;\r\n case 'day':\r\n currentTime.setDate(currentTime.getDate() + incrementValue);\r\n break;\r\n case 'hour':\r\n currentTime.setHours(currentTime.getHours() + incrementValue);\r\n break;\r\n case 'minute':\r\n currentTime.setMinutes(currentTime.getMinutes() + incrementValue);\r\n break;\r\n case 'second':\r\n currentTime.setSeconds(currentTime.getSeconds() + incrementValue);\r\n break;\r\n default:\r\n console.warn('Unknown increment unit:', incrementUnit);\r\n }\r\n\r\n const source = layer.getSource() as ImageWMS | TileWMS;\r\n source.updateParams({ 'TIME': currentTime.toISOString() });\r\n isySubLayer.time = currentTime; // Update the time in isySubLayer\r\n };\r\n updateTime();\r\n // const updateTime = () => {\r\n // const currentTime = new Date(isySubLayer.time);\r\n // currentTime.setMinutes(currentTime.getMinutes() + 15);\r\n // const source = layer.getSource() as ImageWMS | TileWMS;\r\n // source.updateParams({ 'TIME': currentTime.toISOString() });\r\n // isySubLayer.time = currentTime; // Update the time in isySubLayer\r\n // };\r\n // updateTime();\r\n // this.timeinterval = setInterval(updateTime, value * 1000); // Update map based on value\r\n }\r\n }\r\n setLayerOpacity(isySubLayer, value) {\r\n const layer = this._getLayerByGuid(isySubLayer.id);\r\n if (layer && !isNaN(value)) {\r\n layer.setOpacity(Math.min(value, 1));\r\n }\r\n }\r\n\r\n // private updateTime(layer, isySubLayer) {\r\n // const currentTime = new Date(isySubLayer.time);\r\n // currentTime.setMinutes(currentTime.getMinutes() + 15);\r\n // layer.getSource().updateParams({ 'TIME': currentTime.toISOString() });\r\n // isySubLayer.time = currentTime; // Update the time in isySubLayer\r\n // }\r\n\r\n private _getLayersWithGuid() {\r\n return this._getLayers().filter((elem) => {\r\n return elem.get('guid') !== undefined;\r\n });\r\n }\r\n\r\n private _getLayerByGuid(guid) {\r\n for (const layer of this._getLayersWithGuid()) {\r\n if (layer.get('guid') === guid) {\r\n return layer;\r\n }\r\n }\r\n return null;\r\n }\r\n getLayerLegendUrl(isySubLayer, layerName = undefined): string {\r\n const layer = this._getLayerByGuid(isySubLayer.id);\r\n if (layer) {\r\n const source = layer.getSource();\r\n if (source && (source instanceof TileWMS || source instanceof ImageWMS)) {\r\n if (source.getLegendUrl) {\r\n const params: ILegendUrlParams = {\r\n LAYER: layerName || isySubLayer.name,\r\n sld_version: '1.1.0'\r\n };\r\n if (source.getParams()?.VERSION) {\r\n params.VERSION = source.getParams()?.VERSION;\r\n }\r\n let legendUrl = source.getLegendUrl(undefined, params);\r\n\r\n // Add isytoken if it exists and if url is a isyproxy-url\r\n if (legendUrl && legendUrl.toLocaleLowerCase().includes('isyproxy') && source.getParams()?.isyToken) {\r\n legendUrl = legendUrl + '&isyToken=' + source.getParams().isyToken;\r\n }\r\n return legendUrl;\r\n }\r\n }\r\n }\r\n return undefined; // Not all code paths return a value.\r\n }\r\n\r\n getFeatureById(isySubLayer, featureId): Feature {\r\n const layer = this._getLayerByGuid(isySubLayer.id);\r\n if (layer) {\r\n const source = layer.getSource();\r\n if (source && (source instanceof VectorSource || source instanceof ClusterSource)) {\r\n return source.getFeatureById(featureId);\r\n }\r\n }\r\n return undefined; // Not all code paths return a value.\r\n }\r\n\r\n getOlFeatureById(featureId): Feature {\r\n let feature;\r\n this._getLayers().forEach((layer) => {\r\n if (layer && (layer.get('id') === 'drawing')) {\r\n const source = layer.getSource();\r\n if (source && (source instanceof VectorSource || source instanceof ClusterSource)) {\r\n feature = source.getFeatureById(featureId);\r\n }\r\n }\r\n });\r\n return feature;\r\n }\r\n\r\n getExtentForLayerById(layerId): GisExtent {\r\n let extent;\r\n this._getLayers().forEach((layer) => {\r\n if (layer && (layer.get('id') === layerId)) {\r\n const source = layer.getSource();\r\n if (source && (source instanceof VectorSource || source instanceof ClusterSource)) {\r\n extent = source.getExtent();\r\n }\r\n }\r\n });\r\n return {\r\n epsg: this.getEpsgCode(),\r\n extent\r\n };\r\n }\r\n\r\n getFeatureByUnikId(isySubLayer, unikId): Feature {\r\n const layer = this._getLayerByGuid(isySubLayer.id);\r\n if (layer) {\r\n const source = layer.getSource();\r\n if (source && (source instanceof VectorSource || source instanceof ClusterSource)) {\r\n const features = source.getFeatures();\r\n let found;\r\n features.forEach(f => {\r\n if (f.get('UNIKID') === unikId.toString()) {\r\n found = f;\r\n }\r\n });\r\n return found;\r\n }\r\n }\r\n return undefined; // Not all code paths return a value.\r\n }\r\n\r\n\r\n getLayerIndex(isySubLayer) {\r\n const layers = this._getLayersWithGuid();\r\n for (let i = 0; i < layers.length; i++) {\r\n const layer = layers[i];\r\n if (layer.get('guid') === isySubLayer.id) {\r\n return i;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getLayerByName(layerTitle) {\r\n const layers = this._getLayersWithGuid();\r\n return layers.find(x => x.get('title') === layerTitle) || null;\r\n }\r\n\r\n moveLayerToIndex(isySubLayer, index) {\r\n const subLayerIndex = this.getLayerIndex(isySubLayer);\r\n const layersArray = this._getLayers();\r\n const spliceIdx = layersArray.findIndex(x => x.get('guid') === undefined);\r\n layersArray.splice(spliceIdx, 1);\r\n layersArray.splice(index, 0, layersArray.splice(subLayerIndex, 1)[0]);\r\n\r\n this._trigLayersChanged();\r\n }\r\n\r\n sortLayerBySortIndex() {\r\n const layersArray = this._getLayers();\r\n this._sortByKey(layersArray, 'sortingIndex');\r\n this._trigLayersChanged();\r\n }\r\n\r\n private _sortByKey(array, key) {\r\n return array.sort((a, b) => {\r\n const x = a[key] || Infinity;\r\n const y = b[key] || Infinity;\r\n return ((x > y) ? -1 : ((x < y) ? 1 : 0));\r\n });\r\n }\r\n\r\n private _getLayerById(layerId) {\r\n const layers = this._getLayers();\r\n return layers.find(x => x.get('guid') === layerId);\r\n }\r\n\r\n private _getLayerByName(layerName) {\r\n const layers = this._getLayers();\r\n return layers.find(x => x.get('typename') === layerName);\r\n }\r\n\r\n updateLayerSortIndex(groups) {\r\n for (const group of groups) {\r\n if (!group.isyLayers) {\r\n break;\r\n }\r\n for (const isyLayer of group.isyLayers) {\r\n for (const subLayer of isyLayer.subLayers) {\r\n const layer = this._getLayerById(subLayer.id);\r\n if (layer) {\r\n layer.set('sortingIndex', subLayer.sortingIndex);\r\n layer.set('zIndex', subLayer.sortingIndex);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _trigLayersChanged() {\r\n const eventObject = this._getUrlObject();\r\n this.eventHandler.triggerEvent(EventsEventTypes.ChangeLayers, eventObject);\r\n }\r\n\r\n private _getGuidsForVisibleLayers() {\r\n const visibleLayers = [];\r\n for (const layer of this._getLayersWithGuid()) {\r\n if (layer.getVisible() === true) {\r\n if (layer.get('guid') !== this.geolocationguid) {\r\n visibleLayers.push(layer);\r\n }\r\n }\r\n }\r\n\r\n visibleLayers.sort(this._compareMapLayerIndex);\r\n const result = [];\r\n for (const visibleLayer of visibleLayers) {\r\n result.push(visibleLayer.get('guid'));\r\n }\r\n return result.join(',');\r\n }\r\n\r\n private _compareMapLayerIndex(a, b) {\r\n if (a.get('sortingIndex') < b.get('sortingIndex')) {\r\n return -1;\r\n }\r\n if (a.get('sortingIndex') > b.get('sortingIndex')) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n /*\r\n Layer functions End\r\n */\r\n\r\n /*\r\n Map Export Start\r\n Functionality in ISY.;ap.OL3.Export\r\n */\r\n\r\n _resizeEvent = () => {\r\n this.mapExport.windowResized(this.map);\r\n };\r\n\r\n activateExportPdf(options) {\r\n this.mapExport.activatePdf(this.map, options);\r\n }\r\n\r\n activateExportImg(callback, options) {\r\n this.mapExport.activateImg(callback, this.map, options);\r\n }\r\n\r\n // deactivateExport() {\r\n // this.mapExport.deactivate(); // does not exist\r\n // }\r\n\r\n resizeMap = () => {\r\n if (this.map) {\r\n this.map.updateSize();\r\n }\r\n };\r\n\r\n refreshMap(): Promise {\r\n const promises = this._getLayers().map((layer) => {\r\n return this.refreshLayer(layer, undefined, undefined);\r\n });\r\n return Promise.all(promises);\r\n }\r\n\r\n refreshLayerByGuid(guid, featureObj): Promise {\r\n return this.refreshLayer(this._getLayerFromPoolByGuid(guid), undefined, featureObj);\r\n }\r\n\r\n refreshIsyLayer(isySubLayer, featureObj): Promise {\r\n return this.refreshLayer(this._getLayerFromPool(isySubLayer), isySubLayer, featureObj);\r\n }\r\n\r\n refreshLayer(layer, isySubLayer, featureObj): Promise {\r\n if (layer === undefined) {\r\n return undefined; // Not all code paths return a value\r\n }\r\n if (isySubLayer === undefined) {\r\n isySubLayer = this._getIsySubLayerFromPool(layer);\r\n }\r\n if (isySubLayer === undefined) {\r\n return undefined; // Not all code paths return a value\r\n }\r\n const parameters = {_olSalt: Math.random()};\r\n if (this.isyToken && this.isyToken.length > 0) {\r\n parameters['isyToken'] = this.isyToken;\r\n }\r\n return this.mapImplementationSourcesFactory.createRefreshSource(isySubLayer, parameters, featureObj)\r\n .then(source => {\r\n if (source) {\r\n layer.setSource(source);\r\n }\r\n });\r\n }\r\n\r\n setIsyToken(token: string, bearerToken?: string, extraParams?) {\r\n\r\n const hasBearerToken = bearerToken !== undefined && bearerToken !== '';\r\n const noChangeToken: boolean = this.isyToken && this.isyToken === token;\r\n // const noChangeBearerToken: boolean = hasBearerToken && this.bearerToken === bearerToken;\r\n\r\n // if (!token || noChange) {\r\n // return;\r\n // }\r\n\r\n if ((!token || noChangeToken) && (!hasBearerToken)) {\r\n return;\r\n }\r\n\r\n this.isyToken = token;\r\n this.bearerToken = bearerToken;\r\n const tokenObject = {isyToken: this.isyToken};\r\n\r\n this.isySubLayerPool.forEach(isySubLayer => {\r\n isySubLayer.isyToken = this.isyToken;\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n let source;\r\n switch (isySubLayer.source) {\r\n\r\n // case DomainSubLayerSOURCES.wmts:\r\n case DomainSubLayerSOURCES.wms:\r\n source = layer.getSource();\r\n if(hasBearerToken && isySubLayer.url.includes('ISY.GIS.IsyProxy/mapproxy')) {\r\n this.updateBearerTokenForWmsSource(source, bearerToken);\r\n }\r\n break;\r\n case DomainSubLayerSOURCES.proxyWms:\r\n // case DomainSubLayerSOURCES.proxyWmts:\r\n source = layer.getSource();\r\n source.updateParams(tokenObject);\r\n break;\r\n case DomainSubLayerSOURCES.vector:\r\n source = new MapImplementationSourcesVector(isySubLayer, undefined, this.httpHelper);\r\n layer.setSource(source);\r\n if (isySubLayer.url) {\r\n if (hasBearerToken && isySubLayer.url.includes('ISY.GIS.IsyProxy/mapproxy')) {\r\n isySubLayer.bearerToken = bearerToken;\r\n }\r\n if (extraParams) {\r\n isySubLayer.extraParams = extraParams;\r\n } else {\r\n isySubLayer.extraParams = {};\r\n }\r\n this._loadVectorLayer(isySubLayer, source);\r\n }\r\n break; \r\n case DomainSubLayerSOURCES.wfs: {\r\n const layerSource = layer.getSource();\r\n if (layerSource instanceof ClusterSource) {\r\n const vectorSource = layerSource.getSource();\r\n if (vectorSource instanceof VectorSource) {\r\n this.updateTokenObjectForSource(vectorSource, tokenObject);\r\n if(hasBearerToken && isySubLayer.url.includes('ISY.GIS.IsyProxy/mapproxy')) {\r\n this.updateBearerTokenForWfsSource(layerSource, bearerToken);\r\n }\r\n }\r\n } else if (layerSource instanceof VectorSource) {\r\n this.updateTokenObjectForSource(layerSource, tokenObject);\r\n if(hasBearerToken && isySubLayer.url.includes('ISY.GIS.IsyProxy/mapproxy')) {\r\n this.updateBearerTokenForWfsSource(layerSource, bearerToken);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n private updateTokenObjectForSource(source, tokenObject) {\r\n const updateTokenObject = source.get('updateTokenObject');\r\n if (updateTokenObject) {\r\n updateTokenObject(tokenObject);\r\n }\r\n }\r\n\r\n private updateBearerTokenForWfsSource(source, bearerToken) {\r\n const updateBearerToken = source.get('updateBearerToken');\r\n if (updateBearerToken) {\r\n updateBearerToken(bearerToken);\r\n }\r\n }\r\n\r\n private updateBearerTokenForWmsSource(source, bearertoken) {\r\n // Custom image load function\r\n const customImageLoadFunction = (image, src) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', src, true);\r\n // Set custom headers\r\n xhr.setRequestHeader('Authorization', 'Bearer ' + bearertoken);\r\n // xhr.setRequestHeader('Another-Header', 'Header-Value');\r\n\r\n xhr.responseType = 'blob';\r\n\r\n xhr.onload = function () {\r\n if (xhr.status === 200) {\r\n const blob = xhr.response;\r\n const objectURL = URL.createObjectURL(blob);\r\n image.src = objectURL;\r\n } else {\r\n // Handle error\r\n }\r\n };\r\n\r\n xhr.onerror = function () {\r\n // Handle error\r\n };\r\n\r\n xhr.send();\r\n };\r\n // Custom tile load function\r\n const customTileLoadFunction = (imageTile, src) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', src, true);\r\n // Set custom headers\r\n xhr.setRequestHeader('Authorization', 'Bearer ' + bearertoken);\r\n // xhr.setRequestHeader('Another-Header', 'Header-Value');\r\n\r\n xhr.responseType = 'blob';\r\n xhr.onload = function() {\r\n if (xhr.status === 200) {\r\n const blob = xhr.response;\r\n const objectURL = URL.createObjectURL(blob);\r\n imageTile.getImage().src = objectURL;\r\n } else {\r\n // Handle error\r\n }\r\n };\r\n xhr.onerror = function() {\r\n // Handle error\r\n };\r\n xhr.send();\r\n };\r\n if (source.setImageLoadFunction) {\r\n source.setImageLoadFunction(customImageLoadFunction)\r\n } else {\r\n source.setTileLoadFunction(customTileLoadFunction);\r\n // console.log('test', source);\r\n } \r\n }\r\n\r\n refreshVectorLayer(layer, extraParams = {}): void {\r\n layer.subLayers.forEach((isySubLayer: any) => {\r\n if (isySubLayer.source === DomainSubLayerSOURCES.vector) {\r\n const poolLayer = this._getLayerFromPoolByGuid(isySubLayer.id);\r\n if (poolLayer) {\r\n this.mapImplementationSourcesFactory.createRefreshSource(isySubLayer, extraParams, undefined)\r\n .then(source => {\r\n if (source?.source) {\r\n poolLayer.setSource(source.source);\r\n // poolLayer.getSource().refresh(); // TODO: test if it works in the Datalake is required\r\n }\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n selectFeatures(filter, isySubLayer, style, locked, addToPreSelected, features) {\r\n if (!features) {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (layer) {\r\n features = layer.getSource().getFeatures();\r\n } else {\r\n return;\r\n }\r\n }\r\n\r\n if (filter[0] && !filter[0][0]) { // single filter only\r\n filter = [filter];\r\n }\r\n\r\n const featuresSelected = [];\r\n const featureIdsSelected = [];\r\n filter.forEach((singleFilter) => {\r\n features.forEach((feature) => {\r\n let selectFeature = true;\r\n singleFilter.forEach((filteritem) => {\r\n const value = feature.get(filteritem.property);\r\n if (value === undefined || value !== filteritem.value) {\r\n selectFeature = false;\r\n }\r\n });\r\n\r\n if (selectFeature === true) {\r\n if (this.featureSelector.selectFeature(feature, style, locked)) {\r\n featuresSelected.push(feature.getProperties());\r\n featureIdsSelected.push(feature.getId());\r\n }\r\n }\r\n });\r\n\r\n if (addToPreSelected) {\r\n this.featureSelector.preSelectFeatures(singleFilter, isySubLayer, style, locked);\r\n }\r\n\r\n });\r\n\r\n if (featuresSelected.length > 0) {\r\n const eventObj = {\r\n id: featureIdsSelected.toString(),\r\n features: featuresSelected\r\n };\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureSelected, eventObj);\r\n }\r\n\r\n }\r\n\r\n deselectFeatures(filter, isySubLayer, features) {\r\n if (!features) {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n features = layer.getSource().getFeatures();\r\n }\r\n\r\n if (filter[0] && !filter[0][0]) { // single filter only\r\n filter = [filter];\r\n }\r\n\r\n const featuresDeselected = [];\r\n const featureIdsDeselected = [];\r\n\r\n filter.forEach((singleFilter) => {\r\n features.forEach((feature) => {\r\n let deselectFeature = true;\r\n let value = '';\r\n singleFilter.forEach((filteritem) => {\r\n value = feature.get(filteritem.property);\r\n if (value === undefined || value !== filteritem.value) {\r\n deselectFeature = false;\r\n }\r\n });\r\n\r\n if (deselectFeature === true) {\r\n if (this.featureSelector.deselectFeature(feature)) {\r\n this.featureSelector.removePreSelectedFeature(feature);\r\n feature.setStyle();\r\n featuresDeselected.push(feature.getProperties());\r\n featureIdsDeselected.push(feature.getId());\r\n }\r\n }\r\n });\r\n });\r\n if (featuresDeselected.length > 0) {\r\n const eventObj = {\r\n id: featureIdsDeselected.toString(),\r\n features: featuresDeselected\r\n };\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureDeselected, eventObj);\r\n }\r\n }\r\n\r\n selectPreSelectedFeatures(isySubLayer, features) {\r\n const preSelectedFeatures = this.featureSelector.getPreSelectedFeatures();\r\n\r\n preSelectedFeatures.forEach((preSelectedFeature) => {\r\n if (preSelectedFeature.isySubLayer === isySubLayer) {\r\n this.selectFeatures(\r\n preSelectedFeature.filter,\r\n preSelectedFeature.isySubLayer,\r\n preSelectedFeature.style,\r\n preSelectedFeature.locked,\r\n false,\r\n features\r\n );\r\n }\r\n });\r\n }\r\n\r\n renderSync() {\r\n this.map.renderSync();\r\n }\r\n\r\n /*\r\n Map Export End\r\n */\r\n\r\n /*\r\n Feature Info Start\r\n Functionality in ISY.MapImplementation.OL3.FeatureInfo\r\n */\r\n\r\n activateInfoClick(mapApi, callback) {\r\n this.featureInfo.activateInfoClick(callback, this.map, mapApi);\r\n }\r\n\r\n deactivateInfoClick() {\r\n this.featureInfo.deactivateInfoClick(this.map);\r\n }\r\n\r\n activateGetClickCoordinates() {\r\n this.getClickCoordinates.activate(this.map, this.getEpsgCode());\r\n }\r\n\r\n deactivateGetClickCoordinates() {\r\n this.getClickCoordinates.deactivate(this.map);\r\n }\r\n\r\n getFeatureInfoUrl(isySubLayer, coordinate) {\r\n return this.proxyHost + this.featureInfo.getFeatureInfoUrl(isySubLayer, this._getLayerFromPool(isySubLayer), coordinate, this.map.getView());\r\n }\r\n\r\n highlightFeature(olFeature, jsonStyle?, clearHighlighted?) { \r\n this.featureHighlighter.highlightFeature(olFeature, this, this.map, jsonStyle, clearHighlighted); // moved from hoverInfo to featureHighlighter\r\n }\r\n\r\n highlightFeatures(olFeatures, jsonStyle?, clearHighlighted?) {\r\n this.featureHighlighter.highlightFeatures(olFeatures, this, this.map, jsonStyle, clearHighlighted); // moved from hoverInfo to featureHighlighter\r\n }\r\n\r\n clearHighlightedFeatures() {\r\n this.featureHighlighter.clearHighlightedFeatures(); // moved from hoverInfo to featureHighlighter\r\n }\r\n\r\n showHighlightedFeatures(layerguid, features) {\r\n this.featureInfo.showHighlightedFeatures(this._getFeaturesAndAddHoverStyle(layerguid, features), this.map);\r\n }\r\n\r\n showInfoMarker(coordinate, element) {\r\n this.featureInfo.showInfoMarker(coordinate, element, this.map);\r\n }\r\n\r\n removeInfoMarker(element) {\r\n this.featureInfo.removeInfoMarker(element, this.map);\r\n }\r\n\r\n setHighlightStyle(style) {\r\n this.featureInfo.setHighlightStyle(style);\r\n }\r\n\r\n activateBoxSelect(mapApi, callback) {\r\n this.featureInfo.activateBoxSelect(callback, this.map, mapApi);\r\n }\r\n\r\n deactivateBoxSelect() {\r\n this.featureInfo.deactivateBoxSelect(this.map);\r\n }\r\n\r\n initEdit(isySubLayer): Promise {\r\n if (isySubLayer.featureNS === '' || isySubLayer.featureNS === undefined) {\r\n return Promise.resolve(false);\r\n }\r\n const layerFromPool = this._getLayerFromPool(isySubLayer);\r\n let editurl = isySubLayer.url || isySubLayer.featureUrl;\r\n if (this.isyToken && this.isyToken.length > 0) {\r\n editurl += 'isytoken=' + this.isyToken;\r\n }\r\n if (layerFromPool != null) {\r\n this.featureEditor.init(\r\n editurl,\r\n isySubLayer.subLayerName,\r\n isySubLayer.featureNS,\r\n isySubLayer.coordinate_system,\r\n layerFromPool.getSource(),\r\n isySubLayer.geometryName\r\n );\r\n return Promise.resolve(true);\r\n } else {\r\n // TODO: possible infinite loop if something goes wrong here ?\r\n // Not sure what the intended function is, just rewritten for async\r\n return this._createLayer_promise(isySubLayer)\r\n .then(() => this.initEdit(isySubLayer));\r\n }\r\n }\r\n\r\n private _getElementsByAttribute(tag, attr, attrValue, response, exactName) {\r\n if (!response) {\r\n return false;\r\n }\r\n // Get elements and convert to array\r\n const elems = Array.prototype.slice.call(response.getElementsByTagName(tag), 0);\r\n\r\n const matcher = (el) => {\r\n const value = el.getAttribute(attr);\r\n if (value) {\r\n if (exactName) {\r\n return value.toLowerCase() === attrValue.toLowerCase();\r\n } else {\r\n return value.indexOf(attrValue) > -1 || attrValue.indexOf(value) > -1;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n return elems.filter(matcher);\r\n }\r\n\r\n private _parseResponse(response) {\r\n\r\n if (!response) {\r\n return;\r\n }\r\n let subLayerName = this.describedSubLayer.subLayerName\r\n ? this.describedSubLayer.subLayerName.split(':')\r\n : this.describedSubLayer.name.split(':');\r\n\r\n if (subLayerName.length > 0) {\r\n subLayerName = subLayerName[subLayerName.length - 1];\r\n } else {\r\n return;\r\n }\r\n let prefix = '';\r\n let gmlPrefix = 'gml:';\r\n if (response.getElementsByTagName('xs:element').length) {\r\n prefix = 'xs:';\r\n gmlPrefix = 'gmgml:';\r\n } else if (response.getElementsByTagName('xsd:element').length) {\r\n prefix = 'xsd:';\r\n }\r\n\r\n let elementNodeByName = this._getElementsByAttribute(prefix + 'element', 'name', subLayerName, response, true)[0];\r\n let elementGeometryName = this._getElementsByAttribute(prefix + 'element', 'type', gmlPrefix, elementNodeByName, false)[0];\r\n\r\n if (!elementGeometryName) {\r\n let elementNodeType = elementNodeByName.getAttribute('type');\r\n if (elementNodeType.indexOf(':')) {\r\n elementNodeType = elementNodeType.split(':')[1];\r\n }\r\n elementNodeByName = this._getElementsByAttribute(prefix + 'complexType', 'name', elementNodeType, response, true)[0];\r\n elementGeometryName = this._getElementsByAttribute(prefix + 'element', 'type', gmlPrefix, elementNodeByName, false)[0];\r\n }\r\n\r\n\r\n if (elementGeometryName) {\r\n elementGeometryName = elementGeometryName.getAttribute('name');\r\n } else if (elementNodeByName) {\r\n elementGeometryName = elementNodeByName.getAttribute('type');\r\n } else {\r\n console.error('parsing elementGeometryName failed');\r\n return;\r\n }\r\n\r\n const featureNamespace = response.firstChild.getAttribute('targetNamespace');\r\n\r\n if (typeof this.describedSource.format === 'undefined') {\r\n const gmlFormat = ((version) => {\r\n switch (version) {\r\n case '1.0.0':\r\n return new GML2();\r\n case '1.1.0':\r\n return new GML();\r\n case '2.0.0':\r\n return new GML32();\r\n default:\r\n return new GML();\r\n }\r\n })(this.describedSubLayer.version);\r\n\r\n this.describedSource.format = new WFS({\r\n featureType: this.describedSubLayer.providerName,\r\n featureNS: featureNamespace,\r\n gmlFormat: gmlFormat\r\n });\r\n }\r\n\r\n this.describedSubLayer.featureNS = featureNamespace;\r\n this.describedSubLayer.geometryName = elementGeometryName;\r\n\r\n // Find geometryType\r\n let geometryType = '';\r\n const outerelements = response.firstChild.getElementsByTagName(prefix + 'element');\r\n const featureElements = [];\r\n\r\n\r\n for (const outerelement of outerelements) {\r\n if (outerelement.childElementCount > 0) {\r\n if (outerelement.getAttribute('name') === subLayerName) {\r\n const elements = outerelement.getElementsByTagName(prefix + 'element');\r\n for (const element of elements) {\r\n if (element.getAttribute('name') === elementGeometryName) {\r\n geometryType = element.getAttribute('type');\r\n }\r\n featureElements.push({name: element.getAttribute('name'), type: element.getAttribute('type')});\r\n }\r\n }\r\n }\r\n }\r\n if (!geometryType) {\r\n for (const outerelement of outerelements) {\r\n if (outerelement.childElementCount <= 0) {\r\n if (outerelement.getAttribute('name') === elementGeometryName) {\r\n geometryType = outerelement.getAttribute('type');\r\n }\r\n featureElements.push({name: outerelement.getAttribute('name'), type: outerelement.getAttribute('type')});\r\n }\r\n }\r\n }\r\n geometryType = geometryType ? geometryType : 'Point'; // default if not found\r\n\r\n if (geometryType.toLowerCase().indexOf('point') >= 0) {\r\n geometryType = 'Point';\r\n } else if (geometryType.toLowerCase().indexOf('line') >= 0 || geometryType.toLowerCase().indexOf('curve') >= 0) {\r\n geometryType = 'LineString';\r\n } else if (geometryType.toLowerCase().indexOf('polygon') >= 0 || geometryType.toLowerCase().indexOf('surface') >= 0) {\r\n geometryType = 'Polygon';\r\n } else {\r\n geometryType = 'Point';\r\n }\r\n this.describedSubLayer.geometryType = this.describedSubLayer?.geometryType || geometryType;\r\n this.describedSubLayer.featureElements = featureElements;\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureHasBeenDescribed, [this.describedSubLayer, this.describedSource]);\r\n }\r\n\r\n private longestCommonPrefix(lst: string[]){\r\n const shortestString = Math.min(...lst.map(x => x.length));\r\n for (let i = 0; i < shortestString; i++) {\r\n if (!lst.every(x => x[i] == lst[0][i])) {\r\n return lst[0].slice(0, i);\r\n }\r\n }\r\n // Should not happen:\r\n console.log('Debug: TileMatrix Identifiers all equal?');\r\n return '';\r\n }\r\n\r\n private _parseWmtsGetCapabilities(response, url) {\r\n const wmtsParser = new WMTSCapabilities();\r\n const elems = wmtsParser.read(response);\r\n\r\n const nodes = [];\r\n const matrixInfo = {};\r\n elems?.Contents?.TileMatrixSet?.forEach(tms => {\r\n const setId = tms.Identifier;\r\n const matrixIds = tms.TileMatrix?.map(x => x.Identifier);\r\n const prefix = this.longestCommonPrefix(matrixIds);\r\n const numberOfZoomLevels = tms.TileMatrix?.length;\r\n matrixInfo[setId] = {\r\n 'prefix': prefix,\r\n 'numberOfZoomLevels': numberOfZoomLevels,\r\n };\r\n });\r\n elems?.Contents?.Layer?.forEach(lyr => {\r\n const _matrixdata = {};\r\n lyr.TileMatrixSetLink?.forEach(x => {\r\n _matrixdata[x.TileMatrixSet] = matrixInfo[x.TileMatrixSet];\r\n });\r\n const node = {\r\n name: lyr.Identifier,\r\n title: lyr.Title,\r\n formats: lyr.Format,\r\n matrixinfo: _matrixdata,\r\n };\r\n nodes.push(node);\r\n });\r\n const parsedData = {\r\n version: elems.version,\r\n nodes: nodes,\r\n url: url\r\n };\r\n\r\n if (elems.ServiceIdentification) {\r\n parsedData['abstract'] = elems.ServiceIdentification.Abstract;\r\n parsedData['title'] = elems.ServiceIdentification.Title;\r\n }\r\n if (elems.ServiceProvider?.ProviderName) {\r\n parsedData['provider'] = elems.ServiceProvider.ProviderName;\r\n }\r\n\r\n this.eventHandler.triggerEvent(EventsEventTypes.GetCapabilitiesFromUrl, parsedData);\r\n }\r\n\r\n private _parseWmsGetCapabilities(response, url) {\r\n const wmsParser = new WMSCapabilities();\r\n const elems = wmsParser.read(response);\r\n\r\n const nodes = [];\r\n elems?.Capability?.Layer?.Layer?.forEach(elem => {\r\n const node = {\r\n name: elem.Name,\r\n title: elem.Title,\r\n formats: elems.Capability.Request?.GetMap?.Format,\r\n layer: elem.Layer,\r\n crs: elems.Capability.Layer.CRS\r\n };\r\n nodes.push(node);\r\n });\r\n\r\n const parsedData = {\r\n version: elems.version,\r\n nodes: nodes,\r\n url: url\r\n };\r\n\r\n if (elems.Layer) {\r\n parsedData['abstract'] = elems.Layer.Abstract;\r\n parsedData['title'] = elems.Layer.Title;\r\n } else if (elems.Service) {\r\n parsedData['abstract'] = elems.Service.Abstract;\r\n parsedData['title'] = elems.Service.Title;\r\n }\r\n if (elems.Capability?.Request?.GetFeatureInfo?.Format) {\r\n parsedData['featureInfoFormats'] = elems.Capability.Request.GetFeatureInfo.Format;\r\n }\r\n if (elems.Service?.ContactInformation?.ContactPersonPrimary ) {\r\n parsedData['provider'] = elems.Service.ContactInformation.ContactPersonPrimary.ContactOrganization;\r\n }\r\n\r\n this.eventHandler.triggerEvent(EventsEventTypes.GetCapabilitiesFromUrl, parsedData);\r\n }\r\n\r\n private _parseGetCapabilies(capabilities, url) {\r\n const parsedData = {};\r\n const nodes = [];\r\n if (capabilities && capabilities.featureTypeList && capabilities.featureTypeList.featureType) {\r\n capabilities.featureTypeList.featureType.forEach(elem => {\r\n let node = {};\r\n if (elem.title && elem.title[0].value) {\r\n node = {\r\n name: elem.name && elem.name.localPart ? elem.name.localPart : elem.title[0].value,\r\n title: elem.title[0].value,\r\n prefix: elem.name.prefix\r\n };\r\n } else {\r\n node = {\r\n name: elem.name && elem.name.localPart ? elem.name.localPart : elem.title,\r\n title: elem.title,\r\n prefix: elem.name.prefix\r\n };\r\n }\r\n nodes.push(node);\r\n });\r\n if (capabilities.serviceIdentification) {\r\n if (typeof capabilities.serviceIdentification._abstract === 'object') {\r\n if (capabilities.serviceIdentification._abstract.length > 0) {\r\n parsedData['abstract'] = capabilities.serviceIdentification._abstract[0].value;\r\n }\r\n if (capabilities.serviceIdentification.title.length > 0) {\r\n parsedData['title'] = capabilities.serviceIdentification.title[0].value;\r\n }\r\n } else {\r\n parsedData['abstract'] = capabilities.serviceIdentification._abstract;\r\n parsedData['title'] = capabilities.serviceIdentification.title;\r\n }\r\n\r\n }\r\n if (capabilities.serviceProvider) {\r\n parsedData['provider'] = capabilities.serviceProvider.providerName;\r\n }\r\n parsedData['transactions'] = capabilities.transactions || false;\r\n\r\n parsedData['version'] = capabilities.version;\r\n parsedData['versions'] = capabilities.supportedVersions;\r\n parsedData['nodes'] = nodes;\r\n parsedData['url'] = url;\r\n } else {\r\n parsedData['nodes'] = undefined;\r\n parsedData['url'] = url;\r\n parsedData['error'] = 'Service failed';\r\n }\r\n\r\n this.eventHandler.triggerEvent(EventsEventTypes.GetCapabilitiesFromUrl, parsedData);\r\n }\r\n\r\n // TODO: continue here...\r\n private _parseResponseUrl(response, params) {\r\n // console.log('TEST PARSE RESPONSE URL: ', response);\r\n\r\n let sequenceNodes = response.getElementsByTagName('sequence');\r\n if (sequenceNodes.length === 0) { sequenceNodes = response.getElementsByTagName('xs:sequence'); }\r\n if (sequenceNodes.length === 0) { sequenceNodes = response.getElementsByTagName('xsd:sequence'); }\r\n\r\n const featureElements = [];\r\n\r\n for (const sequenceNode of sequenceNodes) {\r\n if (sequenceNode.hasChildNodes) {\r\n for (const elementNode of sequenceNode.childNodes) {\r\n if (elementNode.attributes && elementNode.getAttribute('name')) {\r\n featureElements.push({\r\n name: elementNode.getAttribute('name'),\r\n type: elementNode.getAttribute('type')\r\n });\r\n }\r\n }\r\n }\r\n }\r\n const parsedResponse = {\r\n name: params.name,\r\n title: params.title,\r\n guid: params.guid,\r\n featureElements: featureElements,\r\n catalogLayerId: params.catalogLayerId\r\n };\r\n // todo: trigger event with the parsed data?\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeatureUrlHasBeenDescribed, parsedResponse);\r\n\r\n return featureElements;\r\n }\r\n\r\n describeFeature(isySubLayer, geometryType): Promise {\r\n this.describedSubLayer = isySubLayer;\r\n this.isyLayerGeometryType = geometryType;\r\n this.describedSource = new VectorSource({\r\n });\r\n this.describedSource.set('type', 'ol.source.Vector');\r\n let url = isySubLayer.url || isySubLayer.featureUrl;\r\n if (Array.isArray(url)) {\r\n url = url[0];\r\n }\r\n if (url.indexOf('?') === -1 && url.lastIndexOf('&') === url.length - 1) {\r\n // no proxy, replace & with ?\r\n url = url.substr(0, url.length - 1) + '?';\r\n }\r\n\r\n if (url.toLowerCase().indexOf('service=wfs') < 0) {\r\n url += 'service=WFS&';\r\n }\r\n url += 'request=DescribeFeatureType&version=' + isySubLayer.version + '&typename=' + (isySubLayer.subLayerName || isySubLayer.name);\r\n if (this.isyToken && this.isyToken.length > 0) {\r\n url += '&isytoken=' + this.isyToken;\r\n }\r\n if (!url.startsWith(this.proxyHost)) {\r\n url = this.proxyHost + url;\r\n }\r\n\r\n return firstValueFrom(this.httpHelper.get(url, {responseType: 'document'}))\r\n .then(response => {\r\n return this._parseResponse(response);\r\n }).catch(err => {\r\n console.error('Error: ', err);\r\n });\r\n }\r\n\r\n // TODO: continue here...\r\n describeFeatureUrl(url: string, params: any ) {\r\n // console.log('describeFeatureUrl: ', url);\r\n\r\n this.describedSubLayer = params;\r\n this.describedSource = new VectorSource({\r\n });\r\n this.describedSource.set('type', 'ol.source.Vector');\r\n\r\n if (params.service && params.service.toLowerCase() === 'wfs') {\r\n url += '&service=WFS&';\r\n }\r\n\r\n url += 'request=DescribeFeatureType&version=' + params.version + '&typename=' +\r\n (params.subLayerName || params.typeName || params.name || params.title );\r\n if (this.isyToken && this.isyToken.length > 0) {\r\n url += '&isytoken=' + this.isyToken;\r\n }\r\n if (params.outputFormat) {\r\n url += '&outputFormat=' + params.outputFormat;\r\n }\r\n\r\n // console.log('describeFeatureUrl modified URL: ', url);\r\n // check only first part of proxyHost url, the part before '?'\r\n if (!url.startsWith((this.proxyHost).substring(0, (this.proxyHost).lastIndexOf('?')))) {\r\n url = this.proxyHost + url;\r\n // console.log('URL with added proxy: ', url);\r\n }\r\n return firstValueFrom(this.httpHelper.get(url, {responseType: 'document'}))\r\n .then(response => {\r\n if (typeof response === 'string') {\r\n console.warn('Error: ', response);\r\n return;\r\n }\r\n\r\n if (response) {\r\n this._parseResponseUrl(response, params);\r\n }\r\n }).catch(err => {\r\n console.error('Error: ', err.status, ' ', err.statusText);\r\n });\r\n }\r\n\r\n private _getTokenAsync(): Promise {\r\n if (!this.tokenHost) {\r\n return Promise.reject(); // Better way to do this? was return null\r\n }\r\n\r\n const gktToken = firstValueFrom(this.httpHelper.get(this.tokenHost + '/gatekeeper', {responseType: 'text'}))\r\n .then((result: string) => result.trim().replace(/\"/g, ''))\r\n .catch(() => {\r\n console.log('asyncGetToken failed');\r\n return null;\r\n });\r\n return gktToken;\r\n }\r\n\r\n async getCapabilitiesFromUrlAsync(url: string, params: any, callback: any, useHttps: boolean = false): Promise {\r\n this.describedSource = new VectorSource({\r\n });\r\n this.describedSource.set('type', 'ol.source.Vector');\r\n const serviceType = params.service.toUpperCase(); // WMS WMTS WFS\r\n let newUrl = url;\r\n let headers;\r\n if (useHttps && newUrl.indexOf('http://') >= 0) {\r\n newUrl = newUrl.replace('http://', 'https://');\r\n } else if (useHttps) {\r\n // console.warn('service failed');\r\n this._parseGetCapabilies(callback(undefined, params.version), url);\r\n return Promise.resolve();\r\n }\r\n\r\n if (!params.service) {\r\n console.warn('getCapabilitiesAsync failed, service not specified');\r\n this._parseGetCapabilies(callback(undefined, params.version), url);\r\n return Promise.resolve();\r\n }\r\n\r\n if (serviceType === 'WFS') {\r\n newUrl += '&service=WFS';\r\n } else if (serviceType === 'WMTS') {\r\n newUrl += '&service=WMTS';\r\n } else if (serviceType === 'WMS') {\r\n newUrl += '&service=WMS';\r\n }\r\n\r\n if (newUrl.includes('gatekeeper')) {\r\n const gktToken = await this._getTokenAsync();\r\n newUrl += '&gkt=' + gktToken;\r\n }\r\n\r\n newUrl += '&request=GetCapabilities';\r\n if (params.version) {\r\n newUrl += '&version=' + params.version;\r\n }\r\n if (this.isyToken && this.isyToken.length > 0) {\r\n newUrl += '&isytoken=' + this.isyToken;\r\n }\r\n if (!newUrl.startsWith(this.proxyHost)) {\r\n newUrl = this.proxyHost + newUrl;\r\n }\r\n if (this.bearerToken && this.bearerToken !== '') {\r\n headers = {'Authorization': 'Bearer ' + this.bearerToken};\r\n }\r\n return firstValueFrom(this.httpHelper.get(newUrl, {\r\n headers: headers,\r\n responseType: serviceType === 'WFS'? 'document' : 'text'\r\n }))\r\n .then(response => {\r\n if (serviceType === 'WMS') {\r\n return this._parseWmsGetCapabilities(response, url);\r\n } else if (serviceType === 'WMTS') {\r\n return this._parseWmtsGetCapabilities(response, url);\r\n } else {\r\n return this._parseGetCapabilies(callback(response, params.version), url);\r\n }\r\n })\r\n .catch(err => {\r\n console.warn('failing: ', err.status, err.statusText);\r\n if (!useHttps) {\r\n return this.getCapabilitiesFromUrlAsync(url, params, callback, true);\r\n } else {\r\n console.error('Error: ', err.status, ' ', err.statusText, url, params);\r\n const parsedData = {};\r\n parsedData['nodes'] = undefined;\r\n parsedData['url'] = url;\r\n parsedData['error'] = err.status + ', ' + err.statusText;\r\n callback(parsedData, params.version);\r\n this.eventHandler.triggerEvent(EventsEventTypes.GetCapabilitiesFromUrl, parsedData);\r\n }\r\n return undefined; // Not all code paths return a value\r\n });\r\n }\r\n\r\n activateEditSelect(callback) {\r\n this.featureEditor.activateEditSelect(callback, this.map);\r\n }\r\n\r\n deactivateEditSelect() {\r\n this.featureEditor.deactivateEditSelect(this.map);\r\n }\r\n\r\n handlePointSelect(coordinate) {\r\n this.featureEditor.handlePointSelect(coordinate);\r\n }\r\n\r\n updateFeature(feature) {\r\n this.featureEditor.updateFeature(feature);\r\n }\r\n\r\n insertFeature(layerid, featureName, geometryName, feature, source): Promise {\r\n return this.featureEditor.insertFeature(layerid, featureName, geometryName, feature, source);\r\n }\r\n\r\n deleteFeature(feature) {\r\n return this.featureEditor.deleteFeature(feature);\r\n }\r\n\r\n getExtentForCoordinate(coordinate, pixelTolerance) {\r\n return this.featureInfo.getExtentForCoordinate(coordinate, pixelTolerance, this.map.getView().getResolution());\r\n }\r\n\r\n getFeaturesInExtent(isySubLayer, extent) {\r\n return this.featureInfo.getFeaturesInExtent(extent, this._getLayerFromPool(isySubLayer), this.map.getView().getResolution());\r\n }\r\n\r\n getFeaturesInMap(isySubLayer) {\r\n return this.featureInfo.getFeaturesInMap(this._getLayerFromPool(isySubLayer));\r\n }\r\n\r\n getLayerByFeature(feature) {\r\n return this._getLayerFromPoolByFeature(feature);\r\n }\r\n\r\n getIsySubLayerByFeature(feature) {\r\n const layer = this._getLayerFromPoolByFeature(feature);\r\n return this._getIsySubLayerFromPool(layer);\r\n }\r\n\r\n getLayerByTitle(title) {\r\n const isySubLayer = this.isySubLayerPool.find(x => x.title === title);\r\n return this._getLayerFromPool(isySubLayer);\r\n }\r\n\r\n getLayersByTitle(title) {\r\n return this.isySubLayerPool\r\n .filter(x => x.title === title)\r\n .map(x => this._getLayerFromPool(x));\r\n }\r\n\r\n getClusterFeatures(_distance, feature, features) {\r\n // check if features is the same geometry\r\n const clusterFeatures = [];\r\n if (features) {\r\n const featureExtent = feature.getGeometry().getExtent();\r\n for (const f of features) {\r\n let extent;\r\n if (f.feature && f.feature.getGeometry) {\r\n extent = f.feature.getGeometry().getExtent();\r\n } else if (f.getGeometry) {\r\n extent = f.getGeometry().getExtent();\r\n }\r\n if (extent) {\r\n extent.every((e, idx) => {\r\n if (e !== featureExtent[idx]) {\r\n // feature is not the same feature\r\n return false;\r\n }\r\n if (idx === extent.length - 1) {\r\n clusterFeatures.push(f.feature);\r\n }\r\n return true;\r\n });\r\n }\r\n }\r\n } else {\r\n return feature.get('features');\r\n }\r\n return clusterFeatures;\r\n }\r\n\r\n getClusterStyle(distance, feature, resolution, layerid, features, clustercount) {\r\n let clusterStyles = this._clusterstyles[layerid].getStyle(feature, this._getScaleByResolution(resolution));\r\n const clusterFeatures = this.getClusterFeatures(distance, feature, features);\r\n if (clusterStyles && clusterFeatures && clusterFeatures.length > 1) {\r\n const clusterStyle = clusterStyles[0].clone();\r\n const clusterImage = clusterStyle.getImage();\r\n if (clusterImage && clusterImage.setRadius) {\r\n if (clusterImage.getRadius() < 12) {\r\n clusterImage.setRadius(clusterImage.getRadius() + (1 * (clusterFeatures.length - 1)));\r\n }\r\n }\r\n if (clustercount) {\r\n let clusterText = clusterStyle.getText();\r\n if (clusterText && clusterText.setText) {\r\n clusterText.setText(clusterText.getText() ? clusterText.getText() + ' - ' + clusterFeatures.length.toString() : clusterFeatures.length.toString());\r\n } else {\r\n clusterText = new TextStyle({\r\n text: clusterFeatures.length.toString(),\r\n font: 'bold 15px \"Helvetica Neue\",Helvetica,Arial,sans-serif',\r\n fill: new FillStyle({\r\n color: [222, 234, 139]\r\n })\r\n });\r\n clusterStyle.setText(clusterText);\r\n }\r\n }\r\n return [clusterStyle];\r\n } else if (clusterFeatures && clusterFeatures.length === 1) {\r\n clusterStyles = this._sldstyles[layerid].getStyle(feature, this._getScaleByResolution(resolution), clusterFeatures[0].get('style'));\r\n }\r\n return clusterStyles;\r\n }\r\n\r\n getHoverStyle(feature, resolution, features) {\r\n let layer;\r\n if (features && features.length > 0) {\r\n features.forEach((f) => {\r\n if (f.feature === feature) {\r\n if (f.layer.get('guid')) {\r\n this.layerPool.forEach((l) => {\r\n if (l.get('guid') === f.layer.get('guid')) {\r\n layer = l;\r\n }\r\n });\r\n }\r\n }\r\n });\r\n if (!layer) {\r\n layer = this.getLayerByFeature(feature);\r\n }\r\n } else {\r\n layer = this.getLayerByFeature(feature);\r\n }\r\n\r\n\r\n if (layer) {\r\n if (this._sldstyles[layer.get('guid')]) {\r\n if (features && layer.getSource().get('type') === 'ol.source.Cluster') {\r\n const clusterStyles = this._sldstyles[layer.get('guid')].getHoverStyle(feature, this._getScaleByResolution(resolution));\r\n const distance = layer.getSource().getDistance();\r\n if (clusterStyles && (distance === 0 || feature.get('features'))) {\r\n return this.getClusterStyle(distance, feature, resolution, layer.get('guid'), features, layer.get('clustercount'));\r\n }\r\n // Block spread style for cluster - no hover style for cluster\r\n const layerGuid = layer.getProperties().guid;\r\n if (layerGuid) {\r\n const layerFeatures = features.filter((f) => {\r\n return f.feature.getProperties().layerguid === layerGuid;\r\n });\r\n let isCluster = false;\r\n for (let i = 0; i < layerFeatures.length; i++) {\r\n for (let j = i + 1; j < layerFeatures.length; j++) {\r\n const point1 = layerFeatures[i].feature.getGeometry().getCoordinates();\r\n const point2 = layerFeatures[j].feature.getGeometry().getCoordinates();\r\n const distance = this.mapImplementationUtilities.calculateDistance(point1, point2);\r\n\r\n // Check the distance against some threshold (in map units) \r\n if (distance < distance * resolution) {\r\n isCluster = true;\r\n break;\r\n }\r\n }\r\n if (isCluster) {\r\n break;\r\n }\r\n }\r\n if (isCluster) {\r\n return undefined;\r\n } \r\n } \r\n } \r\n return this._sldstyles[layer.get('guid')].getHoverStyle(feature, this._getScaleByResolution(resolution)); \r\n } else {\r\n if (layer.getStyle) {\r\n if (typeof layer.getStyle() === 'function') {\r\n return layer.getStyle()(feature, resolution);\r\n } else {\r\n return layer.getStyle(feature, resolution);\r\n }\r\n }\r\n return undefined;\r\n }\r\n }\r\n }\r\n\r\n private _getFeaturesAndAddHoverStyle(layerguid, features) {\r\n if (layerguid) {\r\n const scale = this._getScaleByResolution(this.map.getView().getResolution());\r\n let feature;\r\n const featureKeys = () => {\r\n const keys = [];\r\n if (feature.attributes && feature.attributes[0] && feature.attributes[0][0] === 'features') {\r\n return keys;\r\n } else {\r\n for (const attribute of feature.attributes) {\r\n keys.push(attribute[0]);\r\n }\r\n }\r\n return keys;\r\n };\r\n const featureAttribute = (attr) => {\r\n if (feature.attributes && feature.attributes[0] && feature.attributes[0][0] === 'features') {\r\n return undefined;\r\n } else {\r\n for (const attribute of feature.attributes) {\r\n if (attr === attribute[0]) {\r\n return attribute[1];\r\n }\r\n }\r\n }\r\n };\r\n for (const f of features) {\r\n if (Object.prototype.hasOwnProperty.call(f, 'hoverstyle')) {\r\n delete f['hoverstyle'];\r\n }\r\n if (Object.prototype.hasOwnProperty.call(f, 'get')) {\r\n delete f['get'];\r\n }\r\n feature = f;\r\n if (f.get === undefined) {\r\n f.get = featureAttribute;\r\n }\r\n if (f.getKeys === undefined) {\r\n f.getKeys = featureKeys;\r\n }\r\n const hoverstyle = this._sldstyles[layerguid] ? this._sldstyles[layerguid].getHoverStyle(f, scale) : new Style();\r\n if (hoverstyle) {\r\n f.hoverstyle = hoverstyle;\r\n }\r\n }\r\n }\r\n return features;\r\n }\r\n\r\n getFeatureExtent(feature) {\r\n return this.featureInfo.getFeatureExtent(feature);\r\n }\r\n /*\r\n Feature Info End\r\n */\r\n\r\n /*\r\n HoverInfo Start\r\n */\r\n\r\n activateHoverInfo() {\r\n this.hoverInfo.activateHoverInfo(this.map, this, this.hoverOptions);\r\n }\r\n\r\n deactivateHoverInfo() {\r\n this.hoverInfo.deactivateHoverInfo(this.map);\r\n }\r\n\r\n pauseHoverInfo(value: boolean) {\r\n this.hoverInfo.pauseHoverInfo(value);\r\n }\r\n\r\n /*\r\n HoverInfo End\r\n */\r\n\r\n\r\n /*\r\n PopoverInfo Start\r\n */\r\n\r\n activatePopoverInfo() {\r\n this.popoverInfo.activatePopoverInfo(this.map, this, this.popoverOptions);\r\n }\r\n\r\n deactivatePopoverInfo() {\r\n this.popoverInfo.deactivatePopoverInfo(this.map);\r\n }\r\n\r\n /*\r\n PopoverInfo End\r\n */\r\n\r\n /*\r\n Marker Start\r\n */\r\n\r\n markerIsInitialized() {\r\n return this.marker.isInitialized();\r\n }\r\n\r\n activateMarker() {\r\n this.marker.activate(this.map);\r\n }\r\n\r\n deactivateMarker() {\r\n this.marker.deactivate();\r\n }\r\n\r\n hideMarker() {\r\n if (this.marker.isInitialized()) {\r\n this.marker.hideMarker();\r\n }\r\n }\r\n\r\n showMarker(result, styles) {\r\n if (!this.marker.isInitialized()) {\r\n this.marker.activate(this.map);\r\n }\r\n let newResult = {...result}; // create a copy of the result\r\n if (newResult.geoJson) {\r\n const geoJson = JSON.parse(newResult.geoJson);\r\n if (geoJson.geometry) {\r\n const center = pointOnFeature(geoJson); \r\n const centerConverted = this.transformService.transformFromGeographic(center.geometry.coordinates, this.getEpsgCode());\r\n newResult.lat = centerConverted[1];\r\n newResult.lon = centerConverted[0];\r\n }\r\n }\r\n else if (newResult.epsg) {\r\n newResult = this.transformService.transformEpsgCoordinate(newResult, this.getEpsgCode());\r\n }\r\n\r\n this.marker.showMarker(newResult, styles);\r\n }\r\n\r\n showMarkers(results, styles, hover) {\r\n if (!this.marker.isInitialized()) {\r\n this.marker.activate(this.map);\r\n }\r\n const newResults = results.map(result => {\r\n let newResult = {...result}; // create a copy of the result\r\n if (newResult.geoJson) {\r\n const geoJson = JSON.parse(newResult.geoJson);\r\n if (geoJson.geometry) {\r\n const center = pointOnFeature(geoJson); \r\n const centerConverted = this.transformService.transformFromGeographic(center.geometry.coordinates, this.getEpsgCode());\r\n newResult.lat = centerConverted[1];\r\n newResult.lon = centerConverted[0];\r\n }\r\n }\r\n else if (newResult.epsg) {\r\n newResult = this.transformService.transformEpsgCoordinate(newResult, this.getEpsgCode());\r\n }\r\n return newResult;\r\n });\r\n this.marker.showMarkers(newResults, styles, hover);\r\n }\r\n\r\n /*\r\n Marker End\r\n */\r\n\r\n /*\r\n Measure Start\r\n Functionality in ISY.MapImplementation.OL3.Measure\r\n */\r\n activateMeasure(callback, options) {\r\n this.measure.activate(this.map, callback, options);\r\n }\r\n\r\n deactivateMeasure() {\r\n this.measure.deactivate(this.map);\r\n }\r\n\r\n activateMeasureLine(callback, options) {\r\n this.measureLine.activate(this.map, callback, options);\r\n\r\n }\r\n\r\n deactivateMeasureLine() {\r\n this.measureLine.deactivate(this.map);\r\n }\r\n\r\n /*\r\n Measure End\r\n */\r\n\r\n /*\r\n AddLayerFeature Start\r\n Functionality in ISY.MapImplementation.OL3.AddLayerFeature\r\n */\r\n activateAddLayerFeature(options) {\r\n this.addLayerFeature.activate(this.map, options);\r\n }\r\n\r\n deactivateAddLayerFeature() {\r\n this.addLayerFeature.deactivate(this.map);\r\n }\r\n\r\n /*\r\n AddLayerFeature End\r\n */\r\n\r\n\r\n /*\r\n Modify Feature Start\r\n */\r\n\r\n activateModifyFeature(options) {\r\n this.modifyFeature.activate(this.map, options);\r\n }\r\n\r\n deactivateModifyFeature() {\r\n this.modifyFeature.deactivate(this.map);\r\n }\r\n\r\n /*\r\n Modify Feature End\r\n */\r\n\r\n\r\n /*\r\n DrawFeature Start\r\n */\r\n\r\n activateDrawFeature(callback, options) {\r\n this.drawFeature.activate(this.map, callback, options);\r\n }\r\n\r\n deactivateDrawFeature() {\r\n this.drawFeature.deactivate(this.map);\r\n }\r\n\r\n /*\r\n DrawFeature End\r\n */\r\n\r\n /*\r\n DrawBox Start\r\n */\r\n\r\n activateDrawBox(options) {\r\n this.drawBox.activate(this.map, options);\r\n }\r\n\r\n deactivateDrawBox() {\r\n this.drawBox.deactivate(this.map);\r\n }\r\n\r\n /*\r\n DrawBox End\r\n */\r\n\r\n /*\r\n DrawingManager Start\r\n */\r\n\r\n activateDrawingManager(options) {\r\n this.drawingManager.activate(this.map, options);\r\n }\r\n\r\n reactivateDrawingManager(options) {\r\n this.drawingManager.reactivate(this.map, options);\r\n }\r\n\r\n deactivateDrawingManager() {\r\n this.drawingManager.deactivate(this.map);\r\n }\r\n\r\n /*\r\n DrawingManager End\r\n */\r\n\r\n /*\r\n LinePositionMarker Start\r\n */\r\n\r\n activateLinePositionMarker(options) {\r\n this.linePositionMarker.activate(this.map, options);\r\n }\r\n\r\n showMirrorViewPositionMarker(value: boolean) {\r\n this.linePositionMarker.showMirrorViewPositionMarker(this.map, value);\r\n }\r\n\r\n deactivateLinePositionMarker() {\r\n this.linePositionMarker.deactivate(this.map);\r\n }\r\n\r\n /*\r\n LinePositionMarker End\r\n */\r\n\r\n /*\r\n FeatureSelector Start\r\n */\r\n\r\n activateFeatureSelector(options) {\r\n this.featureSelector.activate(this.map, this, options);\r\n }\r\n\r\n deactivateFeatureSelector() {\r\n this.featureSelector.deactivate(this.map);\r\n }\r\n\r\n getSelectedFeatures() {\r\n return this.featureSelector.getSelectedFeatures();\r\n }\r\n\r\n lockSelectedFeatures() {\r\n this.featureSelector.lockSelectedFeatures();\r\n }\r\n\r\n unlockSelectedFeatures() {\r\n this.featureSelector.unlockSelectedFeatures(this.map);\r\n }\r\n\r\n /*\r\n FeatureSelector End\r\n */\r\n\r\n asyncGetResource(url, contentType, callback): Promise {\r\n return firstValueFrom(this.httpHelper.get(url, {responseType: 'text'}))\r\n .then((response: string) => {\r\n if (response) {\r\n let resource;\r\n if (contentType.toLowerCase() === 'application/json') {\r\n resource = JSON.parse(response);\r\n if (typeof resource === 'string') {\r\n resource = JSON.parse(resource);\r\n }\r\n } else {\r\n const oParser = new DOMParser();\r\n resource = oParser.parseFromString(response, contentType);\r\n }\r\n \r\n return callback(resource, false);\r\n } else {\r\n return callback(undefined, false);\r\n }\r\n });\r\n }\r\n\r\n\r\n /*\r\n PrintBoxSelect Start\r\n */\r\n activatePrintBoxSelect(options) {\r\n this.printBoxSelect.activate(this, this.map, options);\r\n }\r\n\r\n deactivatePrintBoxSelect() {\r\n this.printBoxSelect.deactivate(this.map);\r\n }\r\n\r\n /*\r\n PrintBoxSelect End\r\n */\r\n\r\n\r\n /*\r\n Utility functions start\r\n */\r\n\r\n _getUrlObject() {\r\n if (this.map) {\r\n const retVal = {\r\n layers: this._getGuidsForVisibleLayers(),\r\n zoom: undefined,\r\n lat: undefined,\r\n lon: undefined\r\n };\r\n\r\n const view = this.map.getView();\r\n const center = view.getCenter();\r\n const zoom = view.getZoom();\r\n if (!isNaN(zoom)) {\r\n retVal.zoom = zoom.toString();\r\n }\r\n if (center) {\r\n retVal.lat = center[1].toFixed(2);\r\n retVal.lon = center[0].toFixed(2);\r\n }\r\n return retVal;\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n _setNewMaxZoom(maxZoom) {\r\n if (maxZoom === undefined) {\r\n return;\r\n }\r\n const zoom = this.map.getView().getZoom();\r\n if (zoom > maxZoom) {\r\n this.map.getView().setZoom(maxZoom);\r\n }\r\n }\r\n\r\n zoomToLayer(isySubLayer, maxZoom) {\r\n if (this.geolocationBridgeActive\r\n && typeof isySubLayer === 'number'\r\n && isySubLayer === this.geolocationguid\r\n && this.geolocationObject) {\r\n const locationextent = [\r\n this.geolocationObject.center[0] - this.geolocationObject.accuracy,\r\n this.geolocationObject.center[1] - this.geolocationObject.accuracy,\r\n this.geolocationObject.center[0] + this.geolocationObject.accuracy,\r\n this.geolocationObject.center[1] + this.geolocationObject.accuracy\r\n ];\r\n if (Array.isArray(locationextent) && locationextent[0] !== Infinity && typeof locationextent[0] === 'number') {\r\n this.map.getView().fit(locationextent, {size: this.map.getSize()});\r\n this._setNewMaxZoom(maxZoom);\r\n }\r\n } else if (isySubLayer) {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (layer) {\r\n const extent = layer.getSource().getExtent();\r\n if (Array.isArray(extent) && extent[0] !== Infinity) {\r\n this.map.getView().fit(extent, {size: this.map.getSize()});\r\n this._setNewMaxZoom(maxZoom);\r\n }\r\n }\r\n }\r\n }\r\n\r\n zoomToLayers(isySubLayers, maxZoom) {\r\n const layersExtent = [Infinity, Infinity, -Infinity, -Infinity];\r\n const setNewExtent = (newExtent) => {\r\n if (layersExtent[0] > newExtent[0]) {\r\n layersExtent[0] = newExtent[0];\r\n }\r\n if (layersExtent[1] > newExtent[1]) {\r\n layersExtent[1] = newExtent[1];\r\n }\r\n if (layersExtent[2] < newExtent[2]) {\r\n layersExtent[2] = newExtent[2];\r\n }\r\n if (layersExtent[3] < newExtent[3]) {\r\n layersExtent[3] = newExtent[3];\r\n }\r\n };\r\n isySubLayers.forEach((isySubLayer) => {\r\n if (this.geolocationBridgeActive\r\n && typeof isySubLayer === 'number'\r\n && isySubLayer === this.geolocationguid\r\n && this.geolocationObject) {\r\n const locationextent = [\r\n this.geolocationObject.center[0] - this.geolocationObject.accuracy,\r\n this.geolocationObject.center[1] - this.geolocationObject.accuracy,\r\n this.geolocationObject.center[0] + this.geolocationObject.accuracy,\r\n this.geolocationObject.center[1] + this.geolocationObject.accuracy\r\n ];\r\n setNewExtent(locationextent);\r\n } else {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (layer) {\r\n const extent = layer.getSource().getExtent();\r\n if (Array.isArray(extent) && extent[0] !== Infinity) {\r\n setNewExtent(extent);\r\n }\r\n }\r\n }\r\n });\r\n if (Array.isArray(layersExtent) && layersExtent[0] !== Infinity) {\r\n this.map.getView().fit(layersExtent, {size: this.map.getSize()});\r\n\r\n const zoom = this.map.getView().getZoom();\r\n if (maxZoom !== undefined && zoom > maxZoom) {\r\n this.map.getView().setZoom(maxZoom);\r\n }\r\n }\r\n }\r\n\r\n setExtent(gisExtent: GisExtent) {\r\n this.fitExtent(gisExtent.extent, undefined, gisExtent.epsg);\r\n }\r\n\r\n fitExtent(extent, optionalMapSize, epsg) {\r\n if (epsg) {\r\n const cooordinates1 = this.transformCoordinates(epsg, this.getEpsgCode(), [extent[0], extent[1]]);\r\n extent[0] = cooordinates1[0];\r\n extent[1] = cooordinates1[1];\r\n const cooordinates2 = this.transformCoordinates(epsg, this.getEpsgCode(), [extent[2], extent[3]]);\r\n extent[2] = cooordinates2[0];\r\n extent[3] = cooordinates2[1];\r\n }\r\n const view = this.map.getView();\r\n view.fit(extent,\r\n {\r\n easing: easeOut,\r\n duration: 2 * this._calculateDuration(undefined),\r\n size: optionalMapSize ? optionalMapSize : this.map.getSize(),\r\n }\r\n );\r\n this.eventHandler.triggerEvent(EventsEventTypes.ExtentFitted);\r\n }\r\n\r\n getCenter(epsg?: string): GisCoordinate {\r\n const view = this.map.getView();\r\n const center = view.getCenter();\r\n if (epsg) {\r\n const coordinate = this.transformCoordinates(this.getEpsgCode(), epsg, center);\r\n if (coordinate) {\r\n return {\r\n epsg: epsg,\r\n lon: coordinate[0],\r\n lat: coordinate[1],\r\n zoom: view.getZoom(),\r\n scale: this.getScale()\r\n };\r\n }\r\n return undefined; // Not all code paths return a value.\r\n }\r\n return {\r\n epsg: this.getEpsgCode(),\r\n lon: center[0],\r\n lat: center[1],\r\n zoom: view.getZoom(),\r\n scale: this.getScale()\r\n };\r\n }\r\n\r\n getCenterCoordinates() {\r\n return this.map.getView().getCenter();\r\n }\r\n\r\n private _calculateDuration(zoom) {\r\n if (isNaN(zoom)) {\r\n return this.animateDuration;\r\n }\r\n const currentZoom = this.getZoom();\r\n if (currentZoom === zoom) {\r\n return this.animateDuration;\r\n }\r\n return this.animateDuration * Math.abs(this.getZoom() - zoom);\r\n }\r\n\r\n setCenter(center: GisCoordinate) {\r\n // validate input\r\n if (isNaN(center.lon) || isNaN(center.lat)) {\r\n return;\r\n }\r\n\r\n if (center.epsg) {\r\n center = this.transformService.transformEpsgCoordinate(center, this.getEpsgCode());\r\n }\r\n const currentZoom = this.getZoom();\r\n const currentCenter = this.getCenter();\r\n if (center.scale) {\r\n center.zoom = this._getZoomByScale(center.scale);\r\n }\r\n if (currentCenter.lon === center.lon && currentCenter.lat === center.lat) {\r\n if (center.zoom) {\r\n this.setZoom(center.zoom);\r\n }\r\n return;\r\n }\r\n\r\n // check if center is in view\r\n const view = this.map.getView();\r\n const extent = view.calculateExtent();\r\n\r\n const duration = this._calculateDuration(center.zoom);\r\n const newExtent = [center.lon, center.lat, center.lon, center.lat];\r\n if (intersects(extent, newExtent)) {\r\n if (this.animationActive) {\r\n view.animate({\r\n easing: easeOut,\r\n center: [center.lon, center.lat],\r\n zoom: !isNaN(center.zoom) ? center.zoom : currentZoom,\r\n duration: duration\r\n });\r\n } else {\r\n view.setCenter([center.lon, center.lat]);\r\n view.setZoom(!isNaN(center.zoom) ? center.zoom : currentZoom);\r\n }\r\n } else {\r\n // zoom out until point is visible in extent\r\n // zoom to zoomlevel\r\n if (this.animationActive) {\r\n view.fit(\r\n [\r\n (currentCenter.lon <= center.lon) ? currentCenter.lon : center.lon,\r\n (currentCenter.lat <= center.lat) ? currentCenter.lat : center.lat,\r\n (currentCenter.lon >= center.lon) ? currentCenter.lon : center.lon,\r\n (currentCenter.lat >= center.lat) ? currentCenter.lat : center.lat\r\n ],\r\n {\r\n easing: easeOut,\r\n duration: 2 * this._calculateDuration(undefined),\r\n size: this.map.getSize(),\r\n callback: () => {\r\n view.animate({\r\n center: [center.lon, center.lat],\r\n easing: easeOut,\r\n zoom: !isNaN(center.zoom) ? center.zoom : currentZoom,\r\n duration: this._calculateDuration(center.zoom)\r\n });\r\n }\r\n }\r\n );\r\n } else {\r\n view.fit(\r\n [\r\n (currentCenter.lon <= center.lon) ? currentCenter.lon : center.lon,\r\n (currentCenter.lat <= center.lat) ? currentCenter.lat : center.lat,\r\n (currentCenter.lon >= center.lon) ? currentCenter.lon : center.lon,\r\n (currentCenter.lat >= center.lat) ? currentCenter.lat : center.lat\r\n ],\r\n {\r\n size: this.map.getSize(),\r\n callback: () => {\r\n view.setCenter([center.lon, center.lat]);\r\n view.setZoom(!isNaN(center.zoom) ? center.zoom : currentZoom);\r\n }\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n getZoom() {\r\n const view = this.map.getView();\r\n return view.getZoom();\r\n }\r\n\r\n setZoom(zoom) {\r\n const view = this.map.getView();\r\n if (this.animationActive) {\r\n view.animate({\r\n zoom: zoom,\r\n duration: this._calculateDuration(zoom)\r\n });\r\n } else {\r\n view.setZoom(zoom);\r\n }\r\n }\r\n\r\n getRotation() {\r\n const view = this.map.getView();\r\n return view.getRotation();\r\n }\r\n\r\n setRotation(angle, anchor) {\r\n const view = this.map.getView();\r\n if (anchor) {\r\n view.setRotation(angle);\r\n view.setCenter(anchor);\r\n } else {\r\n view.setRotation(angle);\r\n }\r\n }\r\n\r\n getEpsgCode = () => {\r\n if (this.epsg) {\r\n return this.epsg;\r\n }\r\n const view = this.map.getView();\r\n const projection = view.getProjection();\r\n this.epsg = projection.getCode();\r\n return this.epsg;\r\n };\r\n\r\n getEpsgCodeOnly() {\r\n if (this.epsgCodeOnly) {\r\n return this.epsgCodeOnly;\r\n }\r\n this.epsgCodeOnly = this.getEpsgCode().split(':').pop();\r\n return this.epsgCodeOnly;\r\n }\r\n\r\n geoJson2Feature(data) {\r\n const geoJsonParser = new GeoJSON();\r\n let geoJson;\r\n if (typeof(data) === 'string') {\r\n geoJson = JSON.parse(data);\r\n } else {\r\n geoJson = data;\r\n }\r\n const features = geoJsonParser.readFeatures(geoJson);\r\n\r\n return features;\r\n }\r\n feature2GeoJson(feature) {\r\n const features = this.transformService.transformGeoJsonFeatureToGeographic(feature, this.getEpsgCode());\r\n const geoJson = new GeoJSON();\r\n return geoJson.writeFeatures([features]);\r\n }\r\n\r\n convertGmlToGeoJson(gml) {\r\n const xmlParser = new WMSCapabilities();\r\n const xmlFeatures = xmlParser.read(gml);\r\n const gmlParser = new GML();\r\n const features = gmlParser.readFeatures(xmlFeatures);\r\n const jsonParser = new GeoJSON();\r\n return jsonParser.writeFeatures(features);\r\n }\r\n\r\n extentToGeoJson(x, y) {\r\n const point = new Point([x, y]);\r\n const feature = new Feature();\r\n feature.setGeometry(point);\r\n const geoJson = new GeoJSON();\r\n return geoJson.writeFeature(feature);\r\n }\r\n\r\n addZoom() {\r\n const zoom = new Zoom();\r\n this.map.addControl(zoom);\r\n }\r\n\r\n addZoomSlider() {\r\n const zoomslider = new ZoomSlider();\r\n this.map.addControl(zoomslider);\r\n }\r\n\r\n addZoomToExtent(extent) {\r\n const zoomToExtent = new ZoomToExtent({'extent': extent});\r\n this.map.addControl(zoomToExtent);\r\n }\r\n\r\n addScaleLine() {\r\n if (!this.scaleLine) {\r\n this.scaleLine = new ScaleLine();\r\n this.map.addControl(this.scaleLine);\r\n } \r\n }\r\n\r\n removeScaleLine() {\r\n this.map.removeControl(this.scaleLine);\r\n this.scaleLine = undefined;\r\n }\r\n\r\n getVectorLayers = (isySubLayer, data) => {\r\n const vectors = [];\r\n const vector = new MapImplementationSourcesVector(isySubLayer.subLayers[0], this.map.getView().getProjection(), this.httpHelper);\r\n\r\n const fromProj = isySubLayer.subLayers[0].coordinate_system;\r\n const toProj = vector.getProjection().getCode();\r\n const features = vector.readFeatures(data);\r\n for (const feature of features) {\r\n feature.getGeometry().transform(fromProj, toProj);\r\n vectors.push(feature);\r\n }\r\n\r\n return vectors;\r\n };\r\n\r\n getLayerCount() {\r\n if (this.map) {\r\n return this._getLayers().length;\r\n }\r\n return 0;\r\n }\r\n\r\n getCenterFromExtent(extent) {\r\n return extent.getCenter(extent);\r\n }\r\n\r\n getScale() {\r\n return this.mapScales[this.map.getView().getZoom()];\r\n }\r\n\r\n getLegendStyleFromLayer(layer) {\r\n if (layer && layer.get('guid') && this._sldstyles[layer.get('guid')] && this._sldstyles[layer.get('guid')].getStyleForLegend) {\r\n return this._sldstyles[layer.get('guid')].getStyleForLegend(layer);\r\n }\r\n }\r\n\r\n getExtent(epsg?: string): GisExtent {\r\n const extent = this.map.getView().calculateExtent(this.map.getSize());\r\n if (epsg) {\r\n const lowerLeft = this.transformCoordinates(this.getEpsgCode(), epsg, [extent[0], extent[1]]);\r\n const upperRight = this.transformCoordinates(this.getEpsgCode(), epsg, [extent[2], extent[3]]);\r\n const transformedExtent = [\r\n lowerLeft[0],\r\n lowerLeft[1],\r\n upperRight[0],\r\n upperRight[1]\r\n ];\r\n if (transformedExtent) {\r\n return {\r\n epsg: epsg,\r\n extent: transformedExtent\r\n };\r\n }\r\n return undefined; // Not all code paths return a value.\r\n }\r\n return {\r\n epsg: this.getEpsgCode(),\r\n extent: this.map.getView().calculateExtent(this.map.getSize())\r\n };\r\n }\r\n\r\n getUrlObject() {\r\n return this._getUrlObject();\r\n }\r\n\r\n private _addGeolocationLayer(guid) {\r\n const geolocationLayer = new VectorLayer({\r\n source: new VectorSource(),\r\n });\r\n geolocationLayer.set('guid', guid);\r\n geolocationLayer.set('zIndex', 1000);\r\n geolocationLayer.set('layerIndex', -9999);\r\n this.map.addLayer(geolocationLayer);\r\n this._trigLayersChanged();\r\n }\r\n\r\n private _refreshGeolocationLayer(guid) {\r\n let geolocationLayer = this._getLayerByGuid(guid);\r\n if (geolocationLayer) {\r\n this.map.removeLayer(geolocationLayer);\r\n }\r\n geolocationLayer = new VectorLayer({\r\n source: new VectorSource(),\r\n });\r\n geolocationLayer.set('zIndex', 1000);\r\n geolocationLayer.set('layerIndex', -9999);\r\n geolocationLayer.set('guid', guid);\r\n this.map.addLayer(geolocationLayer);\r\n return geolocationLayer;\r\n }\r\n\r\n private _drawGeolocation(options?: IGeolocation ) {\r\n const geolocationLayer = this._refreshGeolocationLayer(this.geolocationguid);\r\n if (geolocationLayer) {\r\n const geolocationSource = geolocationLayer.getSource() as VectorSource;\r\n geolocationSource.clear();\r\n const accuracyStyleImage = options && options.geolocationAccuracyStyle && options.geolocationAccuracyStyle.image ? options.geolocationAccuracyStyle.image : undefined;\r\n let accuracyStyleFill;\r\n if (options && (options.accuracyCircleFillColor || (options.geolocationAccuracyStyle && options.geolocationAccuracyStyle.fill))) {\r\n accuracyStyleFill = new FillStyle({\r\n color: options.accuracyCircleFillColor ? options.accuracyCircleFillColor : options.geolocationAccuracyStyle.fill.color\r\n });\r\n } else {\r\n accuracyStyleFill = new FillStyle({\r\n color: 'rgba(0,102,204,0.15)'\r\n });\r\n }\r\n let accuracyStyleStroke;\r\n if (options && options.geolocationAccuracyStyle && options.geolocationAccuracyStyle.stroke) {\r\n accuracyStyleStroke = new StrokeStyle({\r\n color: options.geolocationAccuracyStyle && options.geolocationAccuracyStyle.stroke && options.geolocationAccuracyStyle.stroke.color ? options.geolocationAccuracyStyle.stroke.color : 'rgba(0,102,204,0.15)',\r\n width: options.geolocationAccuracyStyle && options.geolocationAccuracyStyle.stroke && options.geolocationAccuracyStyle.stroke.width ? options.geolocationAccuracyStyle.stroke.width : 1\r\n });\r\n } else {\r\n accuracyStyleStroke = undefined;\r\n }\r\n const geoaccurancyStyle = new Style({\r\n image: new CircleStyle({\r\n radius: accuracyStyleImage && accuracyStyleImage.radius ? accuracyStyleImage.radius : 6,\r\n stroke: new StrokeStyle({\r\n color: accuracyStyleImage && accuracyStyleImage.stroke && accuracyStyleImage.stroke.color ? accuracyStyleImage.stroke.color : 'rgba(255,255,255,0.8)',\r\n width: accuracyStyleImage && accuracyStyleImage.stroke && accuracyStyleImage.stroke.width ? accuracyStyleImage.stroke.width : 2\r\n }),\r\n fill: new FillStyle({\r\n color: accuracyStyleImage && accuracyStyleImage.fill && accuracyStyleImage.fill.color ? accuracyStyleImage.fill.color : 'rgba(32,170,172,0.8)'\r\n })\r\n }),\r\n fill: accuracyStyleFill,\r\n stroke: accuracyStyleStroke,\r\n zIndex: this.geolocationguid\r\n });\r\n let geolocationStyle;\r\n if (options && options.geolocationStyle) { \r\n geolocationStyle = new Style({\r\n image: new CircleStyle({\r\n radius: options.geolocationStyle.image && options.geolocationStyle.image.radius ? options.geolocationStyle.image.radius : 2, \r\n stroke: new StrokeStyle({\r\n color: options.geolocationStyle.image && options.geolocationStyle.image.stroke && options.geolocationStyle.image.stroke.color ? options.geolocationStyle.image.stroke.color : 'rgba(243,185,50,0.8)',\r\n width: options.geolocationStyle.image && options.geolocationStyle.image.stroke && options.geolocationStyle.image.stroke.width ? options.geolocationStyle.image.stroke.width : 2\r\n }),\r\n fill: new FillStyle({\r\n color: options.geolocationStyle.image && options.geolocationStyle.image.fill && options.geolocationStyle.image.fill.color ? options.geolocationStyle.image.fill.color : 'rgba(243,185,50,0.8)'\r\n })\r\n }),\r\n zIndex: this.geolocationguid + 2,\r\n });\r\n } else {\r\n geolocationStyle = new Style({\r\n image: new IconStyle({\r\n crossOrigin: \"anonymous\",\r\n rotateWithView: true,\r\n rotation: this.geolocationObject.heading,\r\n scale:\r\n options && options.geolocationImageScale\r\n ? options.geolocationImageScale\r\n : 1,\r\n src: options && options.geolocationImageSrc ? options.geolocationImageSrc : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEAAACxABrSO9dQAAABl0RVh0U29mdHdhcmUAcGFpbnQubmV0IDQuMC4xMzQDW3oAAASMSURBVGhD7VhLbBtVFA2Ub0EqCLEBBKGlCBBqWhUBZcMCWqmoiE1Ku4AFXfARCxS6KF1F3VVChU0XCFiwQ2pTh7SRmyoJLg4kqbCapE0q4k8sjx3bk/Fn/J0Zz3sznBueUWslbSrXZoLmSFeKZ968ee/cc+67kw4XLly4+P9CluUjkiQdEj/XF+Lx+FO6rhc0TftrcXFxo7i8fpDL5Y7bAOfcSiaTn4jL6wPz8/NPGoaRK+q6WTUMXq1WQ5DTw+K286Gq6nFuWfZX4xPsuytX8adlpdPpT8VtZ0NRlCeg/Vwom+Uv9nnsPd4hXq3VLHghAEXdK4Y5F/l8/ksQbh+dmOSdp/rszQhPKGwyxngqlXpXDHMmotHoI2A/Fs3n+ct9Hos2QPHWoJeXdZ2ycGl2dvY+Mdx5gHwOo+rYR6D9+uIpnkX0BUNIAuPwwntiuLMQi8UeBcPxcC7HX7qO/XqQFzR4oVwuXwoEAs7zwtLS0g3ab4xlL4gswAv7xGPOAA6tTdC+tLAK+/V4G16oGIaFc8FZXgD7PVT3j46vzH49yAvIAqc0OKYiUeWB9mPpcpnv/OXsTTdAscd7nrxgO8YLmUymh7T/zdS0udKCG2Pz6TP2RUlyhhcikcgmsC/JpRLf7ulfVfuN0T08wgzTpIo0+Z+eztD+F1T3v748tSb26/EcsuBPJCgLJjrVvWK69gLpfwjVJCqXy9ZatN8YB5AFhs2XSiUvsnC3mLZ9APsHqNf/dnrmttivxxZk4Td4AXPUQMZrYtr2AJXngUqlci19m9pvjP3DI7zGmF0sFr29vb3tywLYPwj9WifWWHlWC/LCWDxB54KOb+dXxfStBbEP7U+R9l+5hfa7kJ1tt8gQecH8xwuDbfEC2H+ftH+zur/tTL917M8AS6iqtVgsssO/jzN83Ky4kS2Ii7EYZcFEp7pLvKY1QJofRO2eS0H7XVhk42JewBfY5/4xligUyJwW+qOQaZpZOuiCmQzv+WOcrdQrffCrD6Mt8sJgS72AakHsc7B/Q79PFeXg8CifTqdNKo0wuJTNZj+mf6csLCw8g4WdwEe+ShuZz2TZR6M+Rs/Un8fGrTlFYdisjsOxNV4IBoP3Q/uXl0j7/QPLLFJbsG/oAvNLcYZvRmI8hYUfSyQSj4nH/gU28zTunazVaio4sCdwkH046uNbxUY+84+ZlAV44VxLvCDLcvf12n9j4Cz3hEKMGjMsXF5t4Y1AEehE+/09NmKQeSeTSdZ9YZg9j43MyDKdzrU77gV0jRuh/atKpcL3nh9iJ2euMFXTLGKTWEU78LgYuiaA4buw2R1g+xRkU0VfZJ+LRNhPc9dM3LNVVR2gMWJ484D295P281WN5apVjpeWweKPuN7ZzIvoWWRkOzZyGnMykhABWdCR8S4xrDlgvg3oOKlrtPESDQv/ORwObxW37wgwNWVkF8w/gncsZ6FQKPwgbjcHyONNSEUjcymKshNzt6zMYe4NMPtuvMuPqlXCmdM8Ufhg2R2Px19vZ6/i8/nuAXHvYAM7xCUXLly4cOHChQPR0fE3LCx8BArOaGYAAAAASUVORK5CYII='\r\n }),\r\n zIndex: this.geolocationguid + 2,\r\n });\r\n }\r\n\r\n const geoaccurancyFeature = new Feature({\r\n geometry: new Circle(this.geolocationObject.center, parseInt(this.geolocationObject.accuracy, 10)),\r\n name: 'geolocation_accurancy'\r\n });\r\n geoaccurancyFeature.setStyle(geoaccurancyStyle);\r\n geolocationSource.addFeature(geoaccurancyFeature);\r\n\r\n const geolocationFeature = new Feature({\r\n geometry: new Point(this.geolocationObject.center),\r\n name: 'geolocation_center'\r\n });\r\n geolocationFeature.setStyle(geolocationStyle);\r\n geolocationSource.addFeature(geolocationFeature);\r\n\r\n if (this.initialGeolocationChange) {\r\n this.initialGeolocationChange = false;\r\n const geolocextent = geolocationFeature.getGeometry().getExtent();\r\n geolocextent[0] -= 5 * this.geolocationObject.accuracy;\r\n geolocextent[1] -= 5 * this.geolocationObject.accuracy;\r\n geolocextent[2] += 5 * this.geolocationObject.accuracy;\r\n geolocextent[3] += 5 * this.geolocationObject.accuracy;\r\n this.map.getView().fit(geolocextent, {size: this.map.getSize()});\r\n }\r\n }\r\n }\r\n\r\n private _geolocationError(error) {\r\n alert(error.message);\r\n }\r\n\r\n private _geolocationChange() {\r\n const view = this.map.getView();\r\n const center = this.geolocation.getPosition();\r\n if (center === undefined) {\r\n return;\r\n }\r\n view.setCenter(center);\r\n this.geolocationObject = {\r\n center: center,\r\n accuracy: Math.round(this.geolocation.getAccuracy() * 10) / 10 > 2000 ? 2000 : Math.round(this.geolocation.getAccuracy() * 10) / 10,\r\n altitude: this.geolocation.getAltitude(),\r\n altitudeAccuracy: this.geolocation.getAltitudeAccuracy(),\r\n heading: this.geolocation.getHeading(),\r\n speed: this.geolocation.getSpeed()\r\n };\r\n this._drawGeolocation(this.geoLocationOptions);\r\n this.eventHandler.triggerEvent(EventsEventTypes.GeolocationUpdated, this.geolocationObject);\r\n\r\n // Enable high accuracy\r\n const trackingOptions = this.geolocation.getTrackingOptions();\r\n trackingOptions.enableHighAccuracy = true;\r\n this.geolocation.setTrackingOptions(trackingOptions);\r\n }\r\n\r\n getGeolocation(options?: IGeolocation) {\r\n if (options) {\r\n this.geoLocationOptions = options;\r\n }\r\n const view = this.map.getView();\r\n const mapProjection = view.getProjection();\r\n if(!this.geolocation) {\r\n this.geolocation = new Geolocation({\r\n // enableHighAccuracy must be set to true to have the heading value.\r\n trackingOptions: {\r\n enableHighAccuracy: true,\r\n },\r\n projection: mapProjection\r\n });\r\n this.geolocationindex++;\r\n }\r\n this._addGeolocationLayer(this.geolocationguid);\r\n this.geolocation.setTracking(true);\r\n const accuracyFeature = new Feature();\r\n const positionFeature = new Feature();\r\n positionFeature.setStyle(\r\n new Style({\r\n image: new CircleStyle({\r\n radius: 6,\r\n fill: new FillStyle({\r\n color: '#3399CC',\r\n }),\r\n stroke: new StrokeStyle({\r\n color: '#fff',\r\n width: 2,\r\n }),\r\n }),\r\n })\r\n );\r\n\r\n this.geolocation.on('change', () => {\r\n accuracyFeature.setGeometry(this.geolocation.getAccuracyGeometry());\r\n const coordinates = this.geolocation.getPosition();\r\n positionFeature.setGeometry(coordinates ? new Point(coordinates) : null);\r\n view.setCenter(coordinates);\r\n this.geolocationObject = {\r\n center: coordinates,\r\n accuracy: Math.round(this.geolocation.getAccuracy() * 10) / 10 > 2000 ? 2000 : Math.round(this.geolocation.getAccuracy() * 10) / 10,\r\n altitude: this.geolocation.getAltitude(),\r\n altitudeAccuracy: this.geolocation.getAltitudeAccuracy(),\r\n heading: this.geolocation.getHeading(),\r\n speed: this.geolocation.getSpeed()\r\n };\r\n this._drawGeolocation(this.geoLocationOptions);\r\n this.eventHandler.triggerEvent(EventsEventTypes.GeolocationUpdated, this.geolocationObject);\r\n });\r\n this.geolocation.on('error', this._geolocationError);\r\n }\r\n\r\n updateGeolocation(center, accuracy, altitude, altitudeAccuracy, heading, speed) {\r\n this.geolocationBridgeActive = true;\r\n this.geolocationObject = {\r\n center: center,\r\n accuracy: accuracy,\r\n altitude: altitude,\r\n altitudeAccuracy: altitudeAccuracy,\r\n heading: heading,\r\n speed: speed\r\n };\r\n this._drawGeolocation(this.geoLocationOptions);\r\n return this.geolocationguid;\r\n }\r\n\r\n removeGeolocation(bridge) {\r\n const geolocationLayer = this._getLayerByGuid(this.geolocationguid);\r\n if (geolocationLayer) {\r\n this.map.removeLayer(geolocationLayer);\r\n this._trigLayersChanged();\r\n }\r\n\r\n if (bridge === undefined) {\r\n if (this.geolocation) {\r\n this.geolocation.un('change:position', this._geolocationChange);\r\n this.geolocation.un('change:accuracy', this._geolocationChange);\r\n this.geolocation = undefined;\r\n if (window.navigator && window.navigator.geolocation) {\r\n window.navigator.geolocation.clearWatch(this.geolocationindex);\r\n }\r\n }\r\n } else {\r\n this.geolocationBridgeActive = false;\r\n this.geolocationObject = undefined;\r\n }\r\n }\r\n\r\n getProxyHost() {\r\n return this.proxyHost;\r\n }\r\n\r\n setTranslateOptions(translate) {\r\n this.translateOptions = translate;\r\n }\r\n\r\n transformCoordinates(fromEpsg: string, toEpsg: string, coordinates: number[]) {\r\n if (fromEpsg === toEpsg) {\r\n return coordinates;\r\n }\r\n return this.transformService.transformCoordinates(fromEpsg, toEpsg, coordinates);\r\n }\r\n\r\n transformFromGeographic(coordinates: number[], toEpsg: string) {\r\n return this.transformService.transformFromGeographic(coordinates, toEpsg);\r\n }\r\n\r\n transformGeoJsonFeaturesFromGeographic(geoJsonFeatures: any, fromEpsg: string) {\r\n return this.transformService.transformGeoJsonFeaturesFromGeographic(geoJsonFeatures, fromEpsg);\r\n }\r\n\r\n transformGeoJsonFeaturesToGeographic(geoJsonFeatures: any, fromEpsg: string) {\r\n return this.transformService.transformGeoJsonFeaturesToGeographic(geoJsonFeatures, fromEpsg);\r\n }\r\n\r\n transformToGeographic(coordinates: number[], fromEpsg: string) {\r\n return this.transformService.transformToGeographic(coordinates, fromEpsg);\r\n }\r\n\r\n transformEpsgCoordinate(coord: any, toCrs: string) {\r\n return this.transformService.transformEpsgCoordinate(coord, toCrs);\r\n }\r\n\r\n transformBox(fromCrs: string, toCrs: string, boxExtent: any) {\r\n return this.transformService.transformBox(fromCrs, toCrs, boxExtent);\r\n }\r\n\r\n addCustomProj(code: string, definition?: any) {\r\n this.transformService.addCustomProj(code, definition);\r\n }\r\n\r\n getViewport() {\r\n return this.map.getViewport();\r\n }\r\n\r\n queryLayerFilter(isySubLayer: any, filter?: any, ignoreBbox?: boolean): Promise {\r\n const layerFromPool = this._getLayerFromPool(isySubLayer);\r\n const layerFromPoolPromise = layerFromPool == null \r\n ? this._createLayer_promise(isySubLayer) \r\n : Promise.resolve(layerFromPool);\r\n\r\n return layerFromPoolPromise.then(layer => {\r\n if (layer) {\r\n setTimeout(() => {\r\n const filterSource = new MapImplementationFilterSource(\r\n this.eventHandler,\r\n this,\r\n this.mapImplementationSourcesFactory,\r\n layer,\r\n isySubLayer,\r\n filter,\r\n layer.getSource(),\r\n this.httpHelper,\r\n );\r\n let parameters;\r\n if (this.isyToken && this.isyToken.length > 0) {\r\n parameters = {isyToken: this.isyToken};\r\n }\r\n filterSource.query(filter, ignoreBbox, undefined, parameters);\r\n }, 0);\r\n }\r\n });\r\n }\r\n\r\n getLayerFilter(isySubLayer: any): any {\r\n if (this.filterSources[isySubLayer.id]) {\r\n return this.filterSources[isySubLayer.id].getFilter();\r\n }\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (layer) {\r\n return layer.getSource().get('filter');\r\n }\r\n }\r\n\r\n setLayerFilter(isySubLayer: any, filter?: any, ignoreBbox?: boolean, ignoreExtent?: boolean, style?: any) {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (layer) {\r\n layer.setMaxResolution(isySubLayer.maxResolution);\r\n layer.setZIndex(1000); // To avoid it beeing hidden behind other layers\r\n let parameters;\r\n if (this.isyToken && this.isyToken.length > 0) {\r\n parameters = {isyToken: this.isyToken};\r\n }\r\n setTimeout(() => {\r\n this.filterSources[isySubLayer.id] = this.filterSources[isySubLayer.id]\r\n ? this.filterSources[isySubLayer.id]\r\n : new MapImplementationFilterSource(\r\n this.eventHandler,\r\n this,\r\n this.mapImplementationSourcesFactory,\r\n layer,\r\n isySubLayer,\r\n filter,\r\n layer.getSource(),\r\n this.httpHelper,\r\n );\r\n this.filterSources[isySubLayer.id].setQueryOnSource(filter, ignoreBbox, ignoreExtent, style, parameters);\r\n }, 0);\r\n }\r\n }\r\n\r\n removeLayerFilter(isySubLayer: any) {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (layer) {\r\n setTimeout(() => {\r\n if (this.filterSources[isySubLayer.id]) {\r\n this.filterSources[isySubLayer.id].destroy();\r\n delete this.filterSources[isySubLayer.id];\r\n this.filterSources[isySubLayer.id] = undefined;\r\n }\r\n }, 0);\r\n }\r\n }\r\n\r\n getGeoJsonFeaturesInExtent(coordinate, pixelTolerance?: number) {\r\n const extent = this.getExtentForCoordinate(coordinate, pixelTolerance ? pixelTolerance : 10);\r\n const geoJsonLayerSource = this.drawingManager.getLayerSource();\r\n return geoJsonLayerSource.getFeaturesInExtent(extent);\r\n }\r\n\r\n setAnimationActive(value: boolean): void {\r\n this.animationActive = value;\r\n }\r\n\r\n setVectorStyle(id: string, styleFunction: any): void {\r\n const layer = this._getLayerByName(id);\r\n if (layer && layer instanceof VectorLayer) {\r\n layer.setStyle(styleFunction);\r\n }\r\n }\r\n\r\n getVectorDataAsString(id: string): string {\r\n const layer = this._getLayerByName(id);\r\n return layer.get('config')?.url;\r\n }\r\n\r\n updateLayerMaxResolution(isySubLayer, zoomLevel) {\r\n const layer = this._getLayerFromPool(isySubLayer);\r\n if (layer) { \r\n const originalMaxResolution = layer.get('originalMaxResolution');\r\n if (!originalMaxResolution) {\r\n layer.set('originalMaxResolution', layer.getProperties().maxResolution);\r\n }\r\n const layerMaxResolution = layer.getProperties().maxResolution;\r\n const parseZoomLevel = parseInt(zoomLevel, 10);\r\n if (parseZoomLevel -1 >= 0 && this.mapResolutions[parseZoomLevel - 1] > layerMaxResolution) { \r\n layer.setMaxResolution(this.mapResolutions[parseZoomLevel - 1]);\r\n }\r\n }\r\n }\r\n\r\n revertMaxResolutionForLayers() {\r\n this.layerPool.forEach(layer => {\r\n const layerProperties = layer.getProperties();\r\n if (layerProperties.originalMaxResolution) {\r\n layer.setMaxResolution(layerProperties.originalMaxResolution);\r\n }\r\n });\r\n }\r\n\r\n\r\n /*\r\n Utility functions End\r\n */\r\n}\r\n\r\nexport const MapImplementationMapRENDERERS = {\r\n canvas: 'canvas',\r\n webgl: 'webgl'\r\n};\r\n","import { Feature } from 'ol';\r\nimport { MapImplementationStylesJson } from './Styles/Json';\r\nimport { Point } from 'ol/geom';\r\n// import { Polygon } from 'ol/geom';\r\nimport { Vector as VectorLayer } from 'ol/layer';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nimport { Style, Stroke, Circle, Fill, Icon } from 'ol/style';\r\nimport { Marker } from '@isygis/isy-configs';\r\n\r\nexport class MapImplementationMarker {\r\n initialized;\r\n map;\r\n mapImplementation;\r\n hoverLayer;\r\n markerLayer;\r\n styles;\r\n hoverStyles;\r\n zIndex;\r\n\r\n constructor() {\r\n this.initialized = false;\r\n this.zIndex = 999;\r\n }\r\n\r\n isInitialized() {\r\n return this.initialized;\r\n }\r\n\r\n activate(map) {\r\n this.map = map;\r\n const hoverStyles = [\r\n new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(255, 255, 255, 1)',\r\n width: 9,\r\n })\r\n }),\r\n new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(124, 205, 206, 1)',\r\n width: 5,\r\n }),\r\n image: new Circle({\r\n radius: 10,\r\n fill: new Fill({\r\n color: 'rgba(124, 205, 206, 1)'\r\n }),\r\n stroke: new Stroke({\r\n color: 'rgba(255, 255, 255, 1)',\r\n width: 2,\r\n })\r\n }),\r\n // image: new Icon({\r\n // src: 'data:image/svg+xml;utf8,'\r\n // + ''\r\n // // tslint:disable-next-line:max-line-length\r\n // + ''\r\n // + '',\r\n // scale: 0.1,\r\n // anchor: [0.5, 512],\r\n // anchorXUnits: 'fraction',\r\n // anchorYUnits: 'pixels'\r\n // })\r\n })\r\n ];\r\n\r\n const styles = [\r\n new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(255, 255, 255, 1)',\r\n width: 7,\r\n })\r\n }),\r\n new Style ({\r\n stroke: new Stroke({\r\n color: 'rgba(124, 205, 206, 1)',\r\n width: 3,\r\n }),\r\n image: new Circle({\r\n radius: 7,\r\n fill: new Fill({\r\n color: 'rgba(124, 205, 206, 1)'\r\n }),\r\n stroke: new Stroke({\r\n color: 'rgba(255, 255, 255, 1)',\r\n width: 2,\r\n })\r\n })\r\n })\r\n ];\r\n this.styles = (new MapImplementationStylesJson(styles)).getStyle(undefined, undefined);\r\n this.hoverStyles = (new MapImplementationStylesJson(hoverStyles)).getStyle(undefined, undefined);\r\n\r\n this.initialized = true;\r\n }\r\n\r\n deactivate() {\r\n this._removeLayer(this.hoverLayer);\r\n this._removeLayer(this.markerLayer);\r\n this.hoverLayer = undefined;\r\n this.markerLayer = undefined;\r\n this.initialized = false;\r\n }\r\n\r\n private _removeLayer(layer) {\r\n if (!layer) {\r\n return;\r\n }\r\n const source = layer.getSource();\r\n source.clear();\r\n this.map.removeLayer(layer);\r\n }\r\n\r\n private _clearLayer(layer) {\r\n if (!layer) {\r\n return;\r\n }\r\n const source = layer.getSource();\r\n source.clear();\r\n }\r\n\r\n private _getLayer(layer, styles, zIndex) {\r\n if (!layer) {\r\n layer = new VectorLayer({\r\n source: new VectorSource(),\r\n style: styles,\r\n zIndex: zIndex,\r\n });\r\n layer.set('id', 'markering');\r\n this.map.addLayer(layer);\r\n }\r\n return layer;\r\n }\r\n\r\n private _createGeometryFromCoordinate(coord) {\r\n if (coord.lon && coord.lat)\r\n {\r\n return new Point([coord.lon, coord.lat]);\r\n }\r\n else if (coord.extent) {\r\n const minX = coord.extent[0];\r\n const minY = coord.extent[1];\r\n const maxX = coord.extent[2];\r\n const maxY = coord.extent[3];\r\n\r\n return new Point([minX + (maxX - minX) / 2, minY + (maxY - minY) / 2]);\r\n // return new Polygon(\r\n // [\r\n // [\r\n // [minX, minY],\r\n // [minX, maxY],\r\n // [maxX, maxY],\r\n // [maxX, minY],\r\n // [minX, minY]\r\n // ]\r\n // ]\r\n // );\r\n } else {\r\n throw('Error: missing coordinate')\r\n }\r\n }\r\n\r\n hideMarker() {\r\n this.map\r\n .getLayers()\r\n ?.getArray()\r\n .filter((layer) => layer.get('id') === 'markering')\r\n .forEach((layer) => {\r\n this._clearLayer(layer);\r\n });\r\n }\r\n\r\n\r\n showMarker(marker: Marker, styles) {\r\n if (!marker.lon || !marker.lat || !styles) {\r\n return;\r\n }\r\n\r\n const feature = new Feature({\r\n geometry: this._createGeometryFromCoordinate(marker)\r\n });\r\n this.hoverStyles = (new MapImplementationStylesJson(styles)).getStyle(feature, undefined);\r\n this.hoverLayer = this._getLayer(this.hoverLayer, this.hoverStyles, this.zIndex + 1);\r\n if (!this.hoverLayer) {\r\n return;\r\n }\r\n\r\n const source = this.hoverLayer.getSource();\r\n const style = new MapImplementationStylesJson(styles);\r\n feature.setStyle(style.getStyle(feature, undefined)); \r\n source.addFeature(feature);\r\n }\r\n\r\n showMarkers(markers: Marker[], styles: any, hover: boolean) {\r\n let source;\r\n if (hover) {\r\n this.hoverLayer = this._getLayer(this.hoverLayer, this.hoverStyles, this.zIndex);\r\n source = this.hoverLayer.getSource();\r\n } else {\r\n this.markerLayer = this._getLayer(this.markerLayer, this.styles, this.zIndex);\r\n source = this.markerLayer.getSource();\r\n\r\n }\r\n\r\n if (!source) {\r\n return;\r\n }\r\n\r\n const style = styles ? new MapImplementationStylesJson(styles) : null;\r\n\r\n // show marker only for the first feature in the list\r\n const firstMarkerWithCoordinates = markers.find(marker => marker.lon && marker.lat);\r\n if (!firstMarkerWithCoordinates) {\r\n return;\r\n }\r\n const feature = new Feature({\r\n geometry: this._createGeometryFromCoordinate(firstMarkerWithCoordinates)\r\n });\r\n if (style) {\r\n feature.setStyle(style.getStyle(feature, undefined));\r\n }\r\n source.addFeature(feature);\r\n }\r\n}\r\n","import * as $ from 'jquery';\r\nimport { MapImplementationStylesMeasure } from './Styles/Measure';\r\nimport { Draw } from 'ol/interaction';\r\nimport { Circle, LineString, Polygon } from 'ol/geom';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nimport { Vector as VectorLayer } from 'ol/layer';\r\nimport { Feature, Overlay } from 'ol';\r\nimport { unByKey } from 'ol/Observable';\r\n\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\n\r\nexport class MapImplementationMeasure {\r\n eventHandler;\r\n isActive = false;\r\n circleFeature; // The circle feature\r\n circleRadius; // Distance for the initial circle\r\n circleOverlay; // Overlay for the circle\r\n translate;\r\n\r\n /**\r\n * Currently drawn feature.\r\n * @type {ol.Feature}\r\n */\r\n sketch;\r\n\r\n\r\n /**\r\n * The help tooltip element.\r\n * @type {Element}\r\n */\r\n helpTooltipElement;\r\n\r\n\r\n /**\r\n * Overlay to show the help messages.\r\n * @type {ol.Overlay}\r\n */\r\n helpTooltip;\r\n\r\n\r\n /**\r\n * The measure tooltip element.\r\n * @type {Element}\r\n */\r\n measureTooltipElement;\r\n\r\n\r\n /**\r\n * Overlay to show the measurement.\r\n * @type {ol.Overlay}\r\n */\r\n measureTooltip;\r\n\r\n /**\r\n * Message to show when the user is drawing a line.\r\n * @type {string}\r\n */\r\n continueLineMsg = 'Click to continue drawing the line';\r\n\r\n draw; // global so we can remove it later\r\n drawLayer;\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n /**\r\n * Handle pointer move.\r\n * @param {ol.MapBrowserEvent} evt\r\n */\r\n _pointerMoveHandler(evt) {\r\n if (evt.dragging || !this.isActive) {\r\n return;\r\n }\r\n /** @type {string} */\r\n let helpMsg = this.translate['start_measure']; // 'Click to start drawing';\r\n\r\n if (this.sketch) {\r\n const geom = (this.sketch.getGeometry());\r\n if (geom instanceof Polygon) {\r\n helpMsg = this.translate['continue_measure']; // continuePolygonMsg;\r\n } else if (geom instanceof LineString) {\r\n helpMsg = this.continueLineMsg;\r\n }\r\n }\r\n this.helpTooltipElement.innerHTML = helpMsg;\r\n this.helpTooltip.setPosition(evt.coordinate);\r\n\r\n const $jq = $.noConflict();\r\n $jq(this.helpTooltipElement).removeClass('hidden');\r\n }\r\n\r\n _addInteraction(map) {\r\n this.circleOverlay = new VectorLayer({\r\n map: map,\r\n source: new VectorSource({\r\n useSpatialIndex: false // optional, might improve performance\r\n }),\r\n updateWhileAnimating: true, // optional, for instant visual feedback\r\n updateWhileInteracting: true // optional, for instant visual feedback\r\n });\r\n // map.addOverlay(circleOverlay);\r\n const type = 'Polygon'; // (typeSelect.value == 'area' ? 'Polygon' : 'LineString');\r\n const source = new VectorSource();\r\n this.draw = new Draw({\r\n source: source,\r\n type: /** @type {ol.geom.GeometryType} */ (type)\r\n });\r\n const measureStyle = new MapImplementationStylesMeasure();\r\n this.drawLayer = new VectorLayer({\r\n source: source,\r\n style: measureStyle.styles()\r\n });\r\n\r\n map.addInteraction(this.draw);\r\n map.addLayer(this.drawLayer);\r\n\r\n this.createMeasureTooltip(map);\r\n this.createHelpTooltip(map);\r\n\r\n let listener;\r\n this.draw.on('drawstart',\r\n (drawStartEvt) => {\r\n // set sketch\r\n this.sketch = drawStartEvt.feature;\r\n\r\n const firstPoint = this.sketch.getGeometry().getCoordinates()[0][0];\r\n this.circleFeature = new Feature(new Circle(firstPoint, 0));\r\n this.circleOverlay.getSource().addFeature(this.circleFeature);\r\n\r\n /** @type {ol.Coordinate|undefined} */\r\n let tooltipCoord = drawStartEvt.coordinate;\r\n\r\n listener = this.sketch.getGeometry().on('change', (changeEvt) => {\r\n const geom = changeEvt.target;\r\n let output;\r\n let circleArea;\r\n if (geom instanceof Polygon) {\r\n output = this._formatArea(/** @type {ol.geom.Polygon} */ (geom));\r\n tooltipCoord = geom.getInteriorPoint().getCoordinates();\r\n this._formatPolygonLength(geom);\r\n const circleGeom = this._drawCircle(geom);\r\n if (circleGeom !== null) {\r\n circleArea = this._formatArea(circleGeom);\r\n }\r\n } else if (geom instanceof LineString) {\r\n output = this._formatLength( /** @type {ol.geom.LineString} */ (geom));\r\n tooltipCoord = geom.getLastCoordinate();\r\n }\r\n const circleCoordinates = geom.getCoordinates()[0];\r\n if (circleCoordinates.length === 2) {\r\n this.measureTooltipElement.innerHTML = circleArea.string;\r\n } else {\r\n this.measureTooltipElement.innerHTML = output.string;\r\n }\r\n\r\n this.eventHandler.triggerEvent(EventsEventTypes.MeasureMouseMove, output);\r\n this.measureTooltip.setPosition(tooltipCoord);\r\n });\r\n }, this);\r\n\r\n this.draw.on('drawend', () => {\r\n this.measureTooltipElement.className = 'tooltip tooltip-static';\r\n this.measureTooltip.setOffset([0, -7]);\r\n // unset sketch\r\n this.sketch = null;\r\n // unset tooltip so that a new one can be created\r\n this.measureTooltipElement = null;\r\n this.createMeasureTooltip(map);\r\n unByKey(listener);\r\n }, this);\r\n }\r\n\r\n private _drawCircle(geom) {\r\n const circleCoordinates = geom.getCoordinates()[0];\r\n if (circleCoordinates.length === 2) {\r\n this.circleFeature.getGeometry().setRadius(this.circleRadius);\r\n return Math.PI * Math.pow(this.circleRadius, 2);\r\n } else {\r\n this.circleFeature.getGeometry().setRadius(0);\r\n return null;\r\n }\r\n }\r\n\r\n private _formatPolygonLength(polygon) {\r\n return this._formatLengthPolygon(polygon.getCoordinates()[0]);\r\n }\r\n\r\n /**\r\n * Creates a new help tooltip\r\n */\r\n private createHelpTooltip(map) {\r\n if (this.helpTooltipElement) {\r\n if (this.helpTooltipElement.parentNode !== null) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n }\r\n this.helpTooltipElement = document.createElement('div');\r\n this.helpTooltipElement.className = 'tooltip hidden';\r\n this.helpTooltip = new Overlay({\r\n element: this.helpTooltipElement,\r\n offset: [15, 0],\r\n positioning: 'center-left'\r\n });\r\n map.addOverlay(this.helpTooltip);\r\n }\r\n\r\n\r\n /**\r\n * Creates a new measure tooltip\r\n */\r\n private createMeasureTooltip(map) {\r\n if (this.measureTooltipElement) {\r\n if (this.measureTooltipElement.parentNode !== null) {\r\n this.measureTooltipElement.parentNode.removeChild(this.measureTooltipElement);\r\n }\r\n }\r\n this.measureTooltipElement = document.createElement('div');\r\n this.measureTooltipElement.className = 'maplibNgTooltip tooltip-measure';\r\n this.measureTooltip = new Overlay({\r\n element: this.measureTooltipElement,\r\n offset: [0, -15],\r\n positioning: 'bottom-center'\r\n });\r\n map.addOverlay(this.measureTooltip);\r\n }\r\n\r\n /**\r\n * format length output\r\n * @param {ol.geom.LineString} line\r\n * @return {object}\r\n */\r\n private _formatLength (coordinates) {\r\n let length = this._getLength(coordinates);\r\n this.circleRadius = length;\r\n length = Math.round(length * 100) / 100;\r\n let output;\r\n let value;\r\n let unit;\r\n if (length > 10000) {\r\n unit = 'km';\r\n value = Math.round(length / 1000 * 100) / 100;\r\n output = value + ' ' + unit;\r\n } else {\r\n unit = 'm';\r\n value = Math.round(length * 100) / 100;\r\n output = value + ' ' + unit;\r\n }\r\n return {\r\n string: output,\r\n unit: unit,\r\n value: value\r\n };\r\n }\r\n\r\n private _formatLengthPolygon(line): string {\r\n const length = Math.round(line.getLength() * 100) / 100;\r\n let output;\r\n if (length > 10000) {\r\n output = (Math.round(length / 1000 * 100) / 100) +\r\n ' ' + 'km';\r\n } else {\r\n output = (Math.round(length * 100) / 100) +\r\n ' ' + 'm';\r\n }\r\n return output;\r\n }\r\n\r\n private _getLength(coordinates) {\r\n let length;\r\n if (coordinates.length > 0) {\r\n const stride = coordinates[0].length; // 2D or 3D\r\n const flatCoordinates = this._flatternCoordinates(coordinates);\r\n length = this._getFlatLength(flatCoordinates, 0, flatCoordinates.length, stride);\r\n }\r\n return length;\r\n }\r\n\r\n private _flatternCoordinates(coordinates) {\r\n const flatCoordinates = [];\r\n for (let i = 0; i < coordinates.length; i++) {\r\n const thisCoordinate = coordinates[i];\r\n for (let j = 0; j < thisCoordinate.length; j++) {\r\n flatCoordinates.push(thisCoordinate[j]);\r\n }\r\n }\r\n return flatCoordinates;\r\n }\r\n\r\n private _getFlatLength(flatCoordinates, offset, end, stride) {\r\n let x1 = flatCoordinates[offset];\r\n let y1 = flatCoordinates[offset + 1];\r\n let length = 0;\r\n for (let i = offset + stride; i < end; i += stride) {\r\n const x2 = flatCoordinates[i];\r\n const y2 = flatCoordinates[i + 1];\r\n length += Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\r\n x1 = x2;\r\n y1 = y2;\r\n }\r\n return length;\r\n }\r\n\r\n\r\n /**\r\n * format length output\r\n * @param {ol.geom.Polygon} polygon\r\n * @return {string}\r\n */\r\n private _formatArea(polygon) {\r\n let output;\r\n let unit;\r\n let value;\r\n let area; // = polygon.getArea();\r\n if (polygon.getArea === undefined) {\r\n area = polygon;\r\n } else {\r\n area = polygon.getArea();\r\n }\r\n\r\n if (area > 10000000) {\r\n unit = 'km²';\r\n value = Math.round(area / 1000000 * 100) / 100;\r\n output = value + ' ' + unit;\r\n } else {\r\n unit = 'm²';\r\n value = Math.round(area * 100) / 100;\r\n output = value + ' ' + unit;\r\n }\r\n return {\r\n string: output,\r\n unit: unit,\r\n value: value,\r\n order: 2\r\n };\r\n }\r\n\r\n activate(map, options) {\r\n this.isActive = true;\r\n this.translate = options.translate;\r\n map.on('pointermove', this._pointerMoveHandler);\r\n\r\n const $jq = $.noConflict();\r\n $jq(map.getViewport()).on('mouseout', () => {\r\n $jq(this.helpTooltipElement).addClass('hidden');\r\n });\r\n this._addInteraction(map);\r\n }\r\n\r\n deactivate(map) {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n if (map) {\r\n map.removeLayer(this.drawLayer);\r\n this.measureTooltipElement.className = 'tooltip tooltip-static';\r\n this.measureTooltip.setOffset([0, -7]);\r\n this.circleFeature.getGeometry().setRadius(0);\r\n this.measureTooltipElement = null;\r\n map.removeInteraction(this.draw);\r\n map.removeOverlay(this.circleOverlay);\r\n map.removeOverlay(this.measureTooltip);\r\n map.removeOverlay(this.helpTooltip);\r\n if (this.helpTooltipElement) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n if (this.measureTooltipElement) {\r\n this.measureTooltipElement.parentNode.removeChild(this.measureTooltipElement);\r\n }\r\n const tooltipStaticElements = document.getElementsByClassName('tooltip tooltip-static');\r\n while (tooltipStaticElements.length > 0) {\r\n const staticElement = tooltipStaticElements[0];\r\n staticElement.parentNode.removeChild(staticElement);\r\n }\r\n }\r\n this.eventHandler.triggerEvent(EventsEventTypes.MeasureEnd);\r\n }\r\n }\r\n\r\n}\r\n","import * as $ from 'jquery';\r\nimport { MapImplementationStylesMeasure } from './Styles/Measure';\r\nimport { Draw } from 'ol/interaction';\r\nimport { LineString, Polygon } from 'ol/geom';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nimport { Vector as VectorLayer } from 'ol/layer';\r\nimport { Overlay } from 'ol';\r\nimport { unByKey } from 'ol/Observable';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\n\r\nexport class MapImplementationMeasureLine {\r\n eventHandler;\r\n isActive = false;\r\n translate;\r\n\r\n /**\r\n * Currently drawn feature.\r\n * @type {ol.Feature}\r\n */\r\n sketch;\r\n\r\n /**\r\n * The help tooltip element.\r\n * @type {Element}\r\n */\r\n helpTooltipElement;\r\n\r\n /**\r\n * Overlay to show the help messages.\r\n * @type {ol.Overlay}\r\n */\r\n helpTooltip;\r\n\r\n /**\r\n * The measure tooltip element.\r\n * @type {Element}\r\n */\r\n measureTooltipElement;\r\n\r\n /**\r\n * Overlay to show the measurement.\r\n * @type {ol.Overlay}\r\n */\r\n measureTooltip;\r\n\r\n /**\r\n * Message to show when the user is drawing a polygon.\r\n * @type {string}\r\n */\r\n continuePolygonMsg = 'Click to continue drawing the polygon';\r\n\r\n draw; // global so we can remove it later\r\n drawLayer;\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n /**\r\n * Handle pointer move.\r\n * @param {ol.MapBrowserEvent} evt\r\n */\r\n private _pointerMoveHandler(evt) {\r\n if (evt.dragging || !this.isActive) {\r\n return;\r\n }\r\n /** @type {string} */\r\n let helpMsg = this.translate['start_measure_line']; // 'Click to start drawing';\r\n\r\n if (this.sketch) {\r\n const geom = (this.sketch.getGeometry());\r\n if (geom instanceof Polygon) {\r\n helpMsg = this.continuePolygonMsg;\r\n } else if (geom instanceof LineString) {\r\n helpMsg = this.translate['continue_measure_line'];\r\n }\r\n }\r\n this.helpTooltipElement.innerHTML = helpMsg;\r\n this.helpTooltip.setPosition(evt.coordinate);\r\n\r\n const $jq = $.noConflict();\r\n $jq(this.helpTooltipElement).removeClass('hidden');\r\n }\r\n\r\n private _addInteraction(map) {\r\n const type = 'LineString'; // (typeSelect.value == 'area' ? 'Polygon' : 'LineString');\r\n const source = new VectorSource();\r\n this.draw = new Draw({\r\n source: source,\r\n type: /** @type {ol.geom.GeometryType} */ (type)\r\n });\r\n const measureStyle = new MapImplementationStylesMeasure();\r\n this.drawLayer = new VectorLayer({\r\n source: source,\r\n style: measureStyle.styles()\r\n });\r\n\r\n map.addInteraction(this.draw);\r\n map.addLayer(this.drawLayer);\r\n\r\n this._createMeasureTooltip(map);\r\n this._createHelpTooltip(map);\r\n\r\n let listener;\r\n this.draw.on('drawstart',\r\n (drawstartEvt) => {\r\n // set sketch\r\n this.sketch = drawstartEvt.feature;\r\n\r\n /** @type {ol.Coordinate|undefined} */\r\n let tooltipCoord = drawstartEvt.coordinate;\r\n\r\n listener = this.sketch.getGeometry().on('change', (changeEvt) => {\r\n const geom = changeEvt.target;\r\n let output;\r\n if (geom instanceof Polygon) {\r\n output = this._formatArea(/** @type {ol.geom.Polygon} */ (geom));\r\n tooltipCoord = geom.getInteriorPoint().getCoordinates();\r\n } else if (geom instanceof LineString) {\r\n output = this._formatLength( /** @type {ol.geom.LineString} */ (geom));\r\n tooltipCoord = geom.getLastCoordinate();\r\n }\r\n this.measureTooltipElement.innerHTML = output.string;\r\n this.eventHandler.triggerEvent(EventsEventTypes.MeasureMouseMove, output);\r\n this.measureTooltip.setPosition(tooltipCoord);\r\n });\r\n }, this);\r\n\r\n this.draw.on('drawend',\r\n () => {\r\n this.measureTooltipElement.className = 'tooltip tooltip-static';\r\n this.measureTooltip.setOffset([0, -7]);\r\n // unset sketch\r\n this.sketch = null;\r\n // unset tooltip so that a new one can be created\r\n this.measureTooltipElement = null;\r\n this._createMeasureTooltip(map);\r\n unByKey(listener);\r\n }, this);\r\n }\r\n\r\n\r\n /**\r\n * Creates a new help tooltip\r\n */\r\n private _createHelpTooltip(map) {\r\n if (this.helpTooltipElement) {\r\n if (this.helpTooltipElement.parentNode !== null) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n }\r\n this.helpTooltipElement = document.createElement('div');\r\n this.helpTooltipElement.className = 'tooltip hidden';\r\n this.helpTooltip = new Overlay({\r\n element: this.helpTooltipElement,\r\n offset: [15, 0],\r\n positioning: 'center-left'\r\n });\r\n map.addOverlay(this.helpTooltip);\r\n }\r\n\r\n\r\n /**\r\n * Creates a new measure tooltip\r\n */\r\n private _createMeasureTooltip(map) {\r\n if (this.measureTooltipElement) {\r\n if (this.measureTooltipElement.parentNode !== null) {\r\n this.measureTooltipElement.parentNode.removeChild(this.measureTooltipElement);\r\n }\r\n }\r\n this.measureTooltipElement = document.createElement('div');\r\n this.measureTooltipElement.className = 'maplibNgTooltip tooltip-measure';\r\n this.measureTooltip = new Overlay({\r\n element: this.measureTooltipElement,\r\n offset: [0, -15],\r\n positioning: 'bottom-center'\r\n });\r\n map.addOverlay(this.measureTooltip);\r\n }\r\n\r\n /**\r\n * format length output\r\n * @param {ol.geom.LineString} line\r\n * @return {string}\r\n */\r\n private _formatLength(line) {\r\n const length = Math.round(line.getLength() * 100) / 100;\r\n let output;\r\n let unit;\r\n let value;\r\n if (length > 100000) {\r\n unit = 'km';\r\n value = Math.round(length / 1000 * 100) / 100;\r\n output = value + ' ' + unit;\r\n } else {\r\n unit = 'm';\r\n value = Math.round(length * 100) / 100;\r\n output = value + ' ' + unit;\r\n }\r\n return {\r\n string: output,\r\n unit: unit,\r\n value: value,\r\n order: 1\r\n };\r\n }\r\n\r\n\r\n /**\r\n * format length output\r\n * @param {ol.geom.Polygon} polygon\r\n * @return {string}\r\n */\r\n private _formatArea(polygon): string {\r\n const area = polygon.getArea();\r\n let output;\r\n if (area > 1000000) {\r\n output = (Math.round(area / 1000000 * 100) / 100) +\r\n ' ' + 'km²';\r\n } else {\r\n output = (Math.round(area * 100) / 100) +\r\n ' ' + 'm²';\r\n }\r\n return output;\r\n }\r\n\r\n activate(map, options) {\r\n this.isActive = true;\r\n this.translate = options.translate;\r\n map.on('pointermove', this._pointerMoveHandler);\r\n\r\n const $jq = $.noConflict();\r\n $jq(map.getViewport()).on('mouseout', () => {\r\n $jq(this.helpTooltipElement).addClass('hidden');\r\n });\r\n this._addInteraction(map);\r\n }\r\n\r\n deactivate(map) {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n if (map) {\r\n map.removeLayer(this.drawLayer);\r\n this.measureTooltipElement.className = 'tooltip tooltip-static';\r\n this.measureTooltip.setOffset([0, -7]);\r\n this.measureTooltipElement = null;\r\n map.removeInteraction(this.draw);\r\n map.removeOverlay(this.measureTooltip);\r\n map.removeOverlay(this.helpTooltip);\r\n if (this.helpTooltipElement) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n if (this.measureTooltipElement) {\r\n this.measureTooltipElement.parentNode.removeChild(this.measureTooltipElement);\r\n }\r\n const tooltipStaticElements = document.getElementsByClassName('tooltip tooltip-static');\r\n while (tooltipStaticElements.length > 0) {\r\n const staticElement = tooltipStaticElements[0];\r\n staticElement.parentNode.removeChild(staticElement);\r\n }\r\n }\r\n this.eventHandler.triggerEvent(EventsEventTypes.MeasureEnd);\r\n }\r\n }\r\n\r\n}\r\n","/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { Collection, Feature, Overlay } from 'ol';\r\nimport { Style, Stroke, Fill, Circle as CircleStyle } from 'ol/style';\r\nimport { Geometry, LineString, MultiPoint, Polygon } from 'ol/geom';\r\nimport { Modify, Snap } from 'ol/interaction';\r\nimport { singleClick, shiftKeyOnly } from 'ol/events/condition';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport * as $ from 'jquery';\r\nimport VectorLayer from 'ol/layer/Vector';\r\n\r\nexport class MapImplementationModifyFeature {\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n eventHandler;\r\n isActive = false;\r\n translate;\r\n typeObject;\r\n features;\r\n snappingFeatures;\r\n snappingEnabled = false;\r\n\r\n /**\r\n * Currently drawn feature.\r\n * @type {ol.Feature}\r\n */\r\n sketch;\r\n\r\n /**\r\n * The help tooltip element.\r\n * @type {Element}\r\n */\r\n helpTooltipElement;\r\n\r\n /**\r\n * Overlay to show the help messages.\r\n * @type {ol.Overlay}\r\n */\r\n helpTooltip;\r\n modify; // global so we can remove it later\r\n snapping;\r\n snapInteractions = [];\r\n \r\n modifyStyle = (() => {\r\n const styles = {};\r\n styles['Polygon'] = [\r\n new Style({\r\n stroke: new Stroke({\r\n color: 'blue',\r\n width: 1,\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(0, 0, 255, 0.1)',\r\n }),\r\n }),\r\n new Style({\r\n image: new CircleStyle({\r\n radius: 3,\r\n fill: new Fill({\r\n color: 'orange',\r\n })\r\n }),\r\n geometry: (feature) => {\r\n // return the coordinates of the first ring of the polygon as Multipoint\r\n const geom = feature.getGeometry() as Polygon;\r\n const coords = geom.getCoordinates();\r\n return new MultiPoint(coords[0]);\r\n }\r\n })\r\n ];\r\n styles['MultiPolygon'] = styles['Polygon'];\r\n styles['LineString'] = [\r\n new Style({\r\n stroke: new Stroke({\r\n width: 1,\r\n color: 'blue',\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(0, 0, 255, 0.1)',\r\n }),\r\n }),\r\n new Style({\r\n image: new CircleStyle({\r\n radius: 3,\r\n fill: new Fill({\r\n color: 'orange',\r\n })\r\n }),\r\n geometry: (feature) => {\r\n // return the coordinates as Multipoint\r\n const geom = feature.getGeometry() as LineString;\r\n const coords = geom.getCoordinates();\r\n return new MultiPoint(coords);\r\n }\r\n })\r\n ];\r\n styles['MultiLineString'] = styles['LineString'];\r\n styles['Point'] = [\r\n new Style({\r\n image: new CircleStyle({\r\n radius: 5,\r\n fill: new Fill({\r\n color: 'orange',\r\n })\r\n }),\r\n zIndex: 100000,\r\n })\r\n ];\r\n styles['MultiPoint'] = styles['Point'];\r\n styles['GeometryCollection'] = styles['Polygon'].concat(styles['Point']);\r\n return (feature) => {\r\n return styles[feature.getGeometry().getType()];\r\n };\r\n })();\r\n\r\n /**\r\n * Handle pointer move.\r\n * @param {ol.MapBrowserEvent} evt\r\n */\r\n private _pointerMoveHandler(evt) {\r\n if (!this.isActive) {\r\n return;\r\n }\r\n /** @type {string} */\r\n const helpMsg = this.translate['start_modify']; // 'Click to start drawing';\r\n if (this.helpTooltipElement) {\r\n this.helpTooltipElement.innerHTML = helpMsg;\r\n this.helpTooltip.setPosition(evt.coordinate);\r\n const $jq = $.noConflict();\r\n $jq(this.helpTooltipElement).removeClass('hidden');\r\n }\r\n }\r\n\r\n private addInteraction(map) {\r\n if (this.typeObject === 'Line') {\r\n this.typeObject = 'LineString';\r\n }\r\n\r\n if (this.features) {\r\n // Set modify-style on the features\r\n this.features.forEach(f => f.setStyle(this.modifyStyle));\r\n }\r\n\r\n const newFeatures = new Collection>(this.features);\r\n // Uncomment to snap to self\r\n // if (!this.snappingFeatures) {\r\n // this.snappingFeatures = this.features;\r\n // }\r\n this.modify = new Modify({\r\n features: newFeatures,\r\n // should be better to set the style here than on the feature, but it does not seem to work\r\n // style: this.modifyStyle,\r\n deleteCondition: (event) => {\r\n return shiftKeyOnly(event) && singleClick(event);\r\n }\r\n });\r\n\r\n map.addInteraction(this.modify);\r\n if (this.snappingEnabled) {\r\n this.initSnapping(map);\r\n }\r\n this._createHelpTooltip(map);\r\n\r\n this.modify.on('modifyend',\r\n (evt) => {\r\n this.sketch = null;\r\n // unByKey(this.listener);\r\n this.sketch = evt.features.getArray()[0]; // evt.feature;\r\n this.eventHandler.triggerEvent(EventsEventTypes.ModifyFeatureEnd, this.sketch);\r\n }, this);\r\n\r\n }\r\n\r\n initSnapping(map) {\r\n const snappingFeaturesCollection = new Collection>(this.snappingFeatures);\r\n const snap = new Snap({\r\n features: snappingFeaturesCollection\r\n });\r\n this.snapInteractions.push(snap)\r\n map.addInteraction(snap);\r\n\r\n map.getLayers().forEach((layer) => {\r\n if (layer instanceof VectorLayer) {\r\n const snap = new Snap({\r\n source: layer.getSource()\r\n });\r\n this.snapInteractions.push(snap);\r\n map.addInteraction(snap);\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Creates a new help tooltip\r\n */\r\n private _createHelpTooltip(map) {\r\n if (this.helpTooltipElement) {\r\n if (this.helpTooltipElement.parentNode !== null) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n }\r\n this.helpTooltipElement = document.createElement('div');\r\n this.helpTooltipElement.className = 'tooltip hidden';\r\n this.helpTooltip = new Overlay({\r\n element: this.helpTooltipElement,\r\n offset: [15, 0],\r\n positioning: 'center-left'\r\n });\r\n map.addOverlay(this.helpTooltip);\r\n }\r\n\r\n private _removeOverlays(map) {\r\n\r\n map.removeOverlay(this.helpTooltip);\r\n if (this.helpTooltipElement !== null) {\r\n if (this.helpTooltipElement.parentNode !== null) {\r\n this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);\r\n }\r\n }\r\n\r\n const tooltipStaticElements = document.getElementsByClassName('tooltip tooltip-static');\r\n while (tooltipStaticElements.length > 0) {\r\n const staticElement = tooltipStaticElements[0];\r\n staticElement.parentNode.removeChild(staticElement);\r\n }\r\n }\r\n\r\n activate(map, options) {\r\n this.isActive = true;\r\n this.translate = options.translate;\r\n this.features = [];\r\n if (!Array.isArray(options.features)) {\r\n this.features.push(options.features);\r\n } else {\r\n for (const optionFeature of options.features) {\r\n this.features.push(optionFeature);\r\n }\r\n }\r\n this.snappingFeatures = options.snappingFeatures;\r\n this.snappingEnabled = options.snappingEnabled;\r\n\r\n map.on('pointermove', this._pointerMoveHandler);\r\n const $jq = $.noConflict();\r\n $jq(map.getViewport()).on('mouseout', () => {\r\n $jq(this.helpTooltipElement).addClass('hidden');\r\n });\r\n this.addInteraction(map);\r\n }\r\n\r\n deactivate(map) {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n this.sketch = null;\r\n if (map) {\r\n map.removeInteraction(this.modify);\r\n this.snapInteractions.forEach(snap => map.removeInteraction(snap));\r\n this._removeOverlays(map);\r\n }\r\n }\r\n }\r\n}\r\n","import { EventsKey } from 'ol/events';\r\nimport { MapPosition } from '../Domain/MapPosition';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport Overlay from 'ol/Overlay.js';\r\n\r\nexport class MapImplementationPopoverInfo {\r\n multiSelect = false;\r\n eventHandler;\r\n mapImplementation;\r\n isActive = false;\r\n infoKey: EventsKey | Array;\r\n zoomKey: EventsKey | Array;\r\n data;\r\n\r\n popoverElement = document.getElementById('popover');\r\n popoverOverlay = new Overlay({\r\n element: this.popoverElement,\r\n autoPan: false,\r\n positioning: 'top-center',\r\n });\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n }\r\n\r\n activatePopoverInfo(map, mapImpl, options) {\r\n if (map && mapImpl && !this.isActive) {\r\n this.mapImplementation = mapImpl;\r\n this._setOptions(options);\r\n this.infoKey = map.on('singleclick', (evt) => {\r\n this.displayPopoverInfo(map, evt);\r\n });\r\n this.zoomKey = map.getView().on('change:resolution', (evt) => {\r\n const newResolution = evt.target.getResolution();\r\n const previousResolution = evt.oldValue;\r\n // Hide popover if zooming out\r\n if (newResolution > previousResolution) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeaturePopoverEnd);\r\n }\r\n });\r\n map.on('pointermove', evt => {\r\n if (!evt.dragging) {\r\n map.getTargetElement().style.cursor = map.hasFeatureAtPixel(map.getEventPixel(evt.originalEvent)) ? 'pointer' : 'grab';\r\n } else {\r\n map.getTargetElement().style.cursor = 'grabbing';\r\n }\r\n });\r\n }\r\n }\r\n\r\n deactivatePopoverInfo(map) {\r\n if (map) {\r\n this.isActive = false;\r\n }\r\n }\r\n\r\n private _setOptions(options) {\r\n if (options) {\r\n if (options.multiSelect) {\r\n this.multiSelect = options.multiSelect;\r\n }\r\n }\r\n }\r\n\r\n _getEventObject(evt) {\r\n // Not really necessary, MapPosition is not used in the event by IsyComponents atm.\r\n let zoom = 0;\r\n let epsg = '';\r\n if (this.mapImplementation) {\r\n epsg = this.mapImplementation.getEpsgCode();\r\n if (this.mapImplementation.map && this.mapImplementation.map.getView()) {\r\n zoom = this.mapImplementation.map.getView().getZoom();\r\n }\r\n }\r\n const mapPosition = new MapPosition(evt.coordinate, evt.pixel,\r\n [evt.originalEvent.clientX, evt.originalEvent.clientY], epsg, zoom);\r\n return {\r\n mapPosition: mapPosition,\r\n data: this.data\r\n };\r\n }\r\n\r\n displayPopoverInfo(map, evt) {\r\n const event = evt.originalEvent;\r\n const pixel = map.getEventPixel(event);\r\n map.addOverlay(this.popoverOverlay);\r\n // this.popoverOverlay.setPosition(evt.coordinate);\r\n\r\n const features = this._getFeaturesByZIndexFromPixel(map, pixel);\r\n if (features && features.length > 0) {\r\n const data = [];\r\n this.popoverOverlay.setPosition(features[0].feature.getGeometry().getCoordinates());\r\n features.forEach((f) => {\r\n const feature = f.feature || f;\r\n const featureProperties = feature.getProperties();\r\n const featureLayer = f.layer;\r\n let popoverTemplate = featureLayer ? featureLayer.get('popoverTemplate') : '';\r\n if (!popoverTemplate) {\r\n // Try extra check if popoverTemplate is not defined in featureProperties\r\n popoverTemplate = Object.prototype.hasOwnProperty.call(featureProperties, 'popoverTemplate') ? featureProperties['popoverTemplate'] : '';\r\n }\r\n data.push({\r\n properties: featureProperties,\r\n layer: featureLayer?.getProperties()?.config,\r\n template: popoverTemplate\r\n });\r\n });\r\n this.data = data;\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeaturePopoverStart, this._getEventObject(evt));\r\n } else {\r\n console.log('maplibng: featurepopoverend');\r\n this.data = undefined;\r\n this.eventHandler.triggerEvent(EventsEventTypes.FeaturePopoverEnd);\r\n this.popoverOverlay.setPosition(undefined);\r\n }\r\n }\r\n\r\n _getFeaturesByZIndexFromPixel(map, pixel) {\r\n if (!this.mapImplementation) {\r\n return undefined; // Not all code paths return a value\r\n }\r\n let features = [];\r\n map.forEachFeatureAtPixel(pixel, (feature, layer) => {\r\n const clusterFeatures = feature.get('features');\r\n if (clusterFeatures) {\r\n if (layer) {\r\n const distance = (layer.getSource().get('type') === 'ol.source.Cluster' || layer.getSource().source?.get('type') === 'ol.source.Cluster') ? layer.getSource().getDistance() : -1;\r\n for (const clusterFeature of clusterFeatures) {\r\n if (features.length === 0) {\r\n features.push({feature: clusterFeature, layer: layer, zindex: parseInt(layer.get('sortingIndex'), 10)});\r\n } else {\r\n let skipFeature = false;\r\n const clusterFeatureId = clusterFeature.getId();\r\n for (let d = 0; d < features.length; d++) {\r\n if (features[d].feature.getId() === clusterFeatureId) {\r\n skipFeature = true;\r\n break;\r\n } else if (distance === 0) {\r\n const extent = feature.getGeometry().getExtent();\r\n const clusterFeatureExtent = clusterFeature.getGeometry().getExtent();\r\n for (let e = 0; e < extent.length; e++) {\r\n // verify if this is the same feature\r\n if ((extent[e] < clusterFeatureExtent[e] - 0.01) && (extent[e] > clusterFeatureExtent[e] + 0.01)) {\r\n skipFeature = true;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n if (!skipFeature) {\r\n features.push({feature: clusterFeature, layer: layer, zindex: parseInt(layer.get('sortingIndex'), 10)});\r\n }\r\n }\r\n }\r\n }\r\n return;\r\n } else {\r\n if (layer) {\r\n features.push({feature: feature, layer: layer, zindex: parseInt(layer.get('sortingIndex'), 10)});\r\n }\r\n }\r\n });\r\n\r\n features = this._orderArrayByZIndex(features);\r\n return features;\r\n }\r\n\r\n _orderArrayByZIndex(features) {\r\n if (features.length === 0) {\r\n return undefined;\r\n }\r\n features.sort(this._compare);\r\n return features;\r\n }\r\n\r\n _compare(a, b) {\r\n if (a.zindex > b.zindex) {\r\n return -1;\r\n }\r\n if (a.zindex < b.zindex) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n}\r\n","import { Feature, Observable } from 'ol';\r\nimport { Point, Polygon, MultiPolygon } from 'ol/geom';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nimport { Vector as VectorLayer } from 'ol/layer';\r\nimport { Style, Stroke, Fill } from 'ol/style';\r\nimport { DragPan } from 'ol/interaction';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { MapImplementationTransform } from './Transform';\r\n\r\nexport class MapImplementationPrintBoxSelect {\r\n eventHandler;\r\n mapImplementation;\r\n map;\r\n isActive = false;\r\n printBoxSelectionLayer;\r\n oldCenter = {};\r\n oldUTM = { 'sone': '', 'localProj': '' };\r\n scale = 25000;\r\n oldInteraction = {};\r\n cols = 1;\r\n rows = 1;\r\n pageWidthMargin = 2; // cm\r\n pageHeighthMargin = 7.2; // cm\r\n a0Portrait = { pageWidth: 84.1 - this.pageWidthMargin, pageHeight: 111.8 - this.pageHeighthMargin };\r\n a1Portrait = { pageWidth: 59.4 - this.pageWidthMargin, pageHeight: 84.1 - this.pageHeighthMargin };\r\n a2Portrait = { pageWidth: 42.0 - this.pageWidthMargin, pageHeight: 59.4 - this.pageHeighthMargin };\r\n a3Portrait = { pageWidth: 29.7 - this.pageWidthMargin, pageHeight: 42.0 - this.pageHeighthMargin };\r\n a4Portrait = { pageWidth: 21.0 - this.pageWidthMargin, pageHeight: 29.7 - this.pageHeighthMargin };\r\n a5Portrait = { pageWidth: 15, pageHeight: 21 };\r\n a6Portrait = { pageWidth: 10.5, pageHeight: 14.8 };\r\n\r\n a0Landscape = { pageWidth: 111.8 - this.pageWidthMargin, pageHeight: 84.1 - this.pageHeighthMargin };\r\n a1Landscape = { pageWidth: 84.1 - this.pageWidthMargin, pageHeight: 59.4 - this.pageHeighthMargin };\r\n a2Landscape = { pageWidth: 59.4 - this.pageWidthMargin, pageHeight: 42.0 - this.pageHeighthMargin };\r\n a3Landscape = { pageWidth: 42.0 - this.pageWidthMargin, pageHeight: 29.7 - this.pageHeighthMargin };\r\n a4Landscape = { pageWidth: 29.7 - this.pageWidthMargin, pageHeight: 21.0 - this.pageHeighthMargin };\r\n a5Landscape = { pageWidth: 21, pageHeight: 15 };\r\n a6Landscape = { pageWidth: 14.8, pageHeight: 10.5 };\r\n pageWidth = 19; // 21; // 16.4; // 21 - (pageMargin * 2); // 21cm = A4 width\r\n pageHeight = 22.5; // 29.7; // 18.5; // 29.7 - (pageMargin * 2);\r\n eventKeys = {};\r\n orientation = 'portrait';\r\n sheetSize = 'a4';\r\n rotation = true;\r\n obs;\r\n transformService;\r\n\r\n constructor(eventHandler) {\r\n this.eventHandler = eventHandler;\r\n this.obs = new Observable();\r\n this.transformService = new MapImplementationTransform();\r\n }\r\n\r\n private _getAtiveSheetSize() {\r\n if (this.orientation === 'portrait') {\r\n switch (this.sheetSize) {\r\n case 'a0': return this.a0Portrait;\r\n case 'a1': return this.a1Portrait;\r\n case 'a2': return this.a2Portrait;\r\n case 'a3': return this.a3Portrait;\r\n case 'a4': return this.a4Portrait;\r\n case 'a5': return this.a5Portrait;\r\n case 'a6': return this.a6Portrait;\r\n } \r\n }\r\n if (this.orientation === 'landscape') {\r\n switch (this.sheetSize) {\r\n case 'a0': return this.a0Landscape;\r\n case 'a1': return this.a1Landscape;\r\n case 'a2': return this.a2Landscape;\r\n case 'a3': return this.a3Landscape;\r\n case 'a4': return this.a4Landscape;\r\n case 'a5': return this.a5Landscape;\r\n case 'a6': return this.a6Landscape;\r\n } \r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n // private _toggleOrientation() {\r\n // const tmpWidth = this._getAtiveSheetSize().pageWidth;\r\n // this.pageWidth = this.pageHeight;\r\n // this.pageHeight = tmpWidth;\r\n // }\r\n\r\n private _UTMZoneNotChanged() {\r\n if (!this.isActive) {\r\n return undefined; // Not all code paths return a value\r\n }\r\n const mapCenterGeographic = this._getMapCenterGeographic(this._getMapCenter());\r\n const UTM = this._getUTMZoneFromGeographicPoint(mapCenterGeographic[0], mapCenterGeographic[1]);\r\n if (UTM !== this.oldUTM) {\r\n this._createFrame();\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private _deregisterMouseEvents() {\r\n for (const eventKey of Object.keys(this.eventKeys)) {\r\n const event = this.eventKeys[eventKey];\r\n event.target.un(event.type, event.listener);\r\n this.eventKeys[eventKey] = false;\r\n }\r\n }\r\n\r\n private _registerEvent(target, type, listener) {\r\n this.eventKeys[type] = target.on(type, listener);\r\n this.eventKeys[type].target = target;\r\n }\r\n\r\n private _registerMouseEvents() {\r\n if (this.isActive) {\r\n return;\r\n }\r\n this._registerEvent(this.map.getView(), 'change:center', () => {\r\n if (this._UTMZoneNotChanged()) {\r\n const deltaCenter = this._findDelta();\r\n this._moveLayer(deltaCenter);\r\n }\r\n });\r\n\r\n this._registerEvent(this.map, 'moveend', () => {\r\n this._getExtentOfPrintBox(this);\r\n });\r\n }\r\n\r\n private _getExtentOfPrintBox(self) {\r\n const mapCenter = self._getMapCenter();\r\n const mapCenterActiveUTMZoneCoordinates = self._getMapCenterActiveUTMZone(mapCenter);\r\n const printBox = self._getPrintBox(mapCenterActiveUTMZoneCoordinates);\r\n const biSone = self._getBiSone(printBox, self.oldUTM);\r\n const extent = {\r\n bbox: [printBox.left, printBox.bottom, printBox.right, printBox.top],\r\n center: mapCenterActiveUTMZoneCoordinates,\r\n projection: self.oldUTM.localProj,\r\n sone: self.oldUTM.sone,\r\n biSone: biSone,\r\n scale: self.scale\r\n };\r\n self.eventHandler.triggerEvent(EventsEventTypes.PrintBoxSelectReturnValue, extent);\r\n }\r\n\r\n private _getMapCenter() {\r\n return this.map.getView().getCenter();\r\n }\r\n\r\n private _getMapCenterGeographic(mapCenter) {\r\n if (this.rotation) {\r\n return this.transformService.transformToGeographic(mapCenter, this._getEpsgCode());\r\n }\r\n return mapCenter;\r\n }\r\n\r\n private _findDelta() {\r\n const newCenter = this.map.getView().getCenter();\r\n const deltaCenter = [\r\n newCenter[0] - this.oldCenter[0],\r\n newCenter[1] - this.oldCenter[1]\r\n ];\r\n this.oldCenter = newCenter;\r\n return deltaCenter;\r\n }\r\n\r\n private _moveLayer(deltaCenter) {\r\n const source = this.printBoxSelectionLayer.getSource();\r\n const feature = source.getFeatures()[0];\r\n feature.getGeometry().translate(deltaCenter[0], deltaCenter[1]);\r\n }\r\n\r\n private _getUTMZoneFromGeographicPoint(lon, lat) {\r\n // From emergencyPoster.js\r\n let sone = '32V';\r\n let localProj = 'EPSG:32632';\r\n\r\n if (lat > 72) {\r\n if (lon < 21) {\r\n sone = '33X';\r\n localProj = 'EPSG:32633';\r\n } else {\r\n sone = '35X';\r\n localProj = 'EPSG:32635';\r\n }\r\n } else if (lat > 64) {\r\n if (lon < 6) {\r\n sone = '31W';\r\n localProj = 'EPSG:32631';\r\n } else if (lon < 12) {\r\n sone = '32W';\r\n localProj = 'EPSG:32632';\r\n } else if (lon < 18) {\r\n sone = '33W';\r\n localProj = 'EPSG:32633';\r\n } else if (lon < 24) {\r\n sone = '34W';\r\n localProj = 'EPSG:32634';\r\n } else if (lon < 30) {\r\n sone = '35W';\r\n localProj = 'EPSG:32635';\r\n } else {\r\n sone = '36W';\r\n localProj = 'EPSG:32636';\r\n }\r\n } else {\r\n if (lon < 3) {\r\n sone = '31V';\r\n localProj = 'EPSG:32631';\r\n } else if (lon >= 12) {\r\n sone = '33V';\r\n localProj = 'EPSG:32633';\r\n }\r\n }\r\n return {\r\n 'sone': sone,\r\n 'localProj': localProj\r\n };\r\n }\r\n\r\n _getBiSone(geometry, sone) {\r\n const lonLatBL = this.transformService.transformToGeographic([geometry.left, geometry.bottom], sone.localProj);\r\n const soneBL = this._getUTMZoneFromGeographicPoint(lonLatBL[0], lonLatBL[1]).sone;\r\n if (soneBL !== sone.sone) {\r\n return soneBL;\r\n }\r\n\r\n const lonLatTL = this.transformService.transformToGeographic([geometry.left, geometry.top], sone.localProj);\r\n const soneTL = this._getUTMZoneFromGeographicPoint(lonLatTL[0], lonLatTL[1]).sone;\r\n if (soneTL !== sone.sone) {\r\n return soneTL;\r\n }\r\n\r\n const lonLatBR = this.transformService.transformToGeographic([geometry.right, geometry.bottom], sone.localProj);\r\n const soneBR = this._getUTMZoneFromGeographicPoint(lonLatBR[0], lonLatBR[1]).sone;\r\n if (soneBR !== sone.sone) {\r\n return soneBR;\r\n }\r\n\r\n const lonLatTR = this.transformService.transformToGeographic([geometry.right, geometry.top], sone.localProj);\r\n const soneTR = this._getUTMZoneFromGeographicPoint(lonLatTR[0], lonLatTR[1]).sone;\r\n if (soneTR !== sone.sone) {\r\n return soneTR;\r\n }\r\n return '';\r\n }\r\n\r\n private _createFrame() {\r\n this._getExtentOfPrintBox(this);\r\n if (this.printBoxSelectionLayer) {\r\n this.map.removeLayer(this.printBoxSelectionLayer);\r\n }\r\n const mapCenter = this._getMapCenter();\r\n this.oldCenter = mapCenter;\r\n\r\n const printBoxSelect = this._getPrintBox(this._getMapCenterActiveUTMZone(mapCenter));\r\n const multiPolygonGeometry = this._getMultiPolygonGeometry(this._getGrid(printBoxSelect), mapCenter);\r\n\r\n const feature = new Feature(multiPolygonGeometry);\r\n feature.setStyle(this._getStyle());\r\n\r\n const vectorSource = new VectorSource();\r\n vectorSource.addFeature(feature);\r\n\r\n this.printBoxSelectionLayer = new VectorLayer({\r\n // name: 'PrintBoxSelect',\r\n source: vectorSource,\r\n updateWhileAnimating: true,\r\n updateWhileInteracting: true\r\n });\r\n\r\n this.map.addLayer(this.printBoxSelectionLayer);\r\n this.printBoxSelectionLayer.setZIndex(2000);\r\n }\r\n\r\n private _getUTMZoneFromMapCenter(mapCenter) {\r\n const mapCenterGeographic = this._getMapCenterGeographic(mapCenter);\r\n const UTM = this._getUTMZoneFromGeographicPoint(mapCenterGeographic[0], mapCenterGeographic[1]);\r\n if (this.oldUTM.localProj !== UTM.localProj) {\r\n console.log(UTM.sone, UTM.localProj);\r\n }\r\n this.oldUTM = UTM;\r\n return UTM;\r\n }\r\n\r\n private _transformCoordinateArray(fromEpsg, toEpsg, coordinates) {\r\n if (coordinates.length === 2 && !Array.isArray(coordinates[0])) {\r\n coordinates = this.transformService.transformCoordinates(fromEpsg, toEpsg, coordinates);\r\n } else {\r\n for (let i = 0; i < coordinates.length; i++) {\r\n coordinates[i] = this._transformCoordinateArray(fromEpsg, toEpsg, coordinates[i]);\r\n }\r\n }\r\n return coordinates;\r\n }\r\n\r\n private _getMultiPolygonGeometry(coordinates, mapCenter) {\r\n if (this.rotation) {\r\n // multiPolygonGeometry.applyTransform(getTransform(this._getUTMZoneFromMapCenter(mapCenter).localProj, 'EPSG:32633'));\r\n const coord = this._transformCoordinateArray(\r\n this._getUTMZoneFromMapCenter(mapCenter).localProj,\r\n this._getEpsgCode(),\r\n coordinates\r\n );\r\n const newMultiPolygonGeometry = new MultiPolygon(coord);\r\n return newMultiPolygonGeometry;\r\n }\r\n const multiPolygonGeometry = new MultiPolygon(coordinates);\r\n return multiPolygonGeometry;\r\n }\r\n\r\n private _getMapCenterActiveUTMZone(mapCenter) {\r\n if (this.rotation) {\r\n return this.transformService.transformCoordinates(\r\n this._getUTMZoneFromMapCenter(mapCenter).localProj,\r\n this._getEpsgCode(),\r\n mapCenter\r\n );\r\n // mapCenterActiveUTMZone.applyTransform(getTransform('EPSG:32633', this._getUTMZoneFromMapCenter(mapCenter).localProj));\r\n }\r\n return mapCenter;\r\n }\r\n\r\n private _getPrintBox(mapCenterActiveUTMZoneCoordinates) {\r\n const printBoxSelect = {\r\n width: (this.scale * this.pageWidth * this.cols) / 100,\r\n height: (this.scale * this.pageHeight * this.rows) / 100,\r\n left: 0, right: 0, bottom: 0, top: 0\r\n };\r\n printBoxSelect.left = mapCenterActiveUTMZoneCoordinates[0] - (printBoxSelect.width / 2);\r\n printBoxSelect.right = printBoxSelect.left + printBoxSelect.width;\r\n printBoxSelect.bottom = mapCenterActiveUTMZoneCoordinates[1] - (printBoxSelect.height / 2);\r\n printBoxSelect.top = printBoxSelect.bottom + printBoxSelect.height;\r\n return printBoxSelect;\r\n }\r\n\r\n private _getGrid(printBoxSelect) {\r\n const coordinates = [];\r\n let tempLeft = printBoxSelect.left;\r\n for (let c = 1; c <= this.cols; c++) {\r\n const tempRight = tempLeft + ((printBoxSelect.right - printBoxSelect.left) / this.cols);\r\n let tempBottom = printBoxSelect.bottom;\r\n for (let r = 1; r <= this.rows; r++) {\r\n const tempTop = tempBottom + ((printBoxSelect.top - printBoxSelect.bottom) / this.rows);\r\n const lowerLeft = new Point([tempLeft, tempBottom]);\r\n const upperLeft = new Point([tempLeft, tempTop]);\r\n const upperRight = new Point([tempRight, tempTop]);\r\n const lowerRight = new Point([tempRight, tempBottom]);\r\n const tempBox = new Polygon([\r\n [\r\n lowerLeft.getCoordinates(),\r\n upperLeft.getCoordinates(),\r\n upperRight.getCoordinates(),\r\n lowerRight.getCoordinates(),\r\n lowerLeft.getCoordinates()\r\n ]\r\n ]);\r\n coordinates.push(tempBox.getCoordinates());\r\n tempBottom = tempTop;\r\n }\r\n tempLeft = tempRight;\r\n }\r\n return coordinates;\r\n }\r\n\r\n private _getStyle() {\r\n const style = new Style({\r\n stroke: new Stroke({\r\n color: '#ee9900',\r\n width: 1,\r\n }),\r\n fill: new Fill({\r\n color: 'rgba(238,153,0,0.4)',\r\n })\r\n });\r\n return style;\r\n }\r\n\r\n private _removeKineticDragPan(copyOld) {\r\n this.map.getInteractions().forEach((interaction) => {\r\n if (interaction instanceof DragPan) {\r\n this.map.removeInteraction(interaction);\r\n if (copyOld) {\r\n this.oldInteraction = interaction;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private _applyNonKineticDragPan() {\r\n this._removeKineticDragPan(true);\r\n this.map.addInteraction(\r\n new DragPan({\r\n kinetic: undefined\r\n })\r\n );\r\n }\r\n\r\n private _applyOriginalInteraction() {\r\n this._removeKineticDragPan(false);\r\n if (Object.keys(this.oldInteraction).length > 0) {\r\n this.map.addInteraction(this.oldInteraction);\r\n }\r\n }\r\n\r\n private _getEpsgCode() {\r\n return this.mapImplementation.getEpsgCode();\r\n }\r\n\r\n activate(mapImplementation, map, options) {\r\n if (mapImplementation && map) {\r\n this.mapImplementation = mapImplementation;\r\n this.map = map;\r\n if (options) {\r\n if (options.scale) {\r\n this.scale = options.scale;\r\n }\r\n if (options.sheetSize) {\r\n this.sheetSize = options.sheetSize;\r\n }\r\n\r\n if (options.orientation) {\r\n this.orientation = options.orientation;\r\n }\r\n // if (options.pageWidth) {\r\n // this.pageWidth = options.pageWidth;\r\n // }\r\n // if (options.pageHeight) {\r\n // this.pageHeight = options.pageHeight;\r\n // }\r\n\r\n this.pageWidth = this._getAtiveSheetSize().pageWidth;\r\n this.pageHeight = this._getAtiveSheetSize().pageHeight;\r\n\r\n // if (options.orientation && this.orientation !== options.orientation) {\r\n // this.orientation = options.orientation;\r\n // this._toggleOrientation();\r\n // }\r\n }\r\n this.rotation = false; // options.rotation || true;\r\n this._getUTMZoneFromMapCenter(\r\n this.transformService.transformToGeographic(this.mapImplementation.getCenterCoordinates(), this._getEpsgCode())\r\n );\r\n this._registerMouseEvents();\r\n this._applyNonKineticDragPan();\r\n\r\n this._createFrame();\r\n }\r\n this.isActive = true;\r\n }\r\n\r\n deactivate() {\r\n if (this.isActive) {\r\n this.isActive = false;\r\n if (this.map) {\r\n this.map.removeLayer(this.printBoxSelectionLayer);\r\n this._deregisterMouseEvents();\r\n this._applyOriginalInteraction();\r\n }\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/member-ordering */\r\nimport { DomainSubLayerSOURCES } from '../../Domain/SubLayer';\r\nimport { MapImplementationSourcesVector } from './Vector';\r\nimport { MapImplementationSourcesWfs } from './Wfs';\r\nimport { MapImplementationSourcesWms } from './Wms';\r\nimport { MapImplementationSourcesWmts } from './Wmts';\r\nimport { MapImplementationTransform } from '../Transform';\r\nimport { KeyPair, KeyPairArray } from '../../Domain/Definitions';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport ImageTile from 'ol/ImageTile';\r\n\r\nexport class MapImplementationSourcesFactory {\r\n\r\n eventHandler: any;\r\n proxyHost;\r\n tokenHost;\r\n httpHelper;\r\n gktToken;\r\n lastGktCheck: number;\r\n gktLifetime = 3000;\r\n\r\n selectPreSelectedFeatures;\r\n\r\n olLayers = {};\r\n transformManager = new MapImplementationTransform();\r\n\r\n constructor(eventHandler: any, proxyHost: any, tokenHost: any, httpHelper: any) {\r\n this.eventHandler = eventHandler;\r\n this.proxyHost = proxyHost;\r\n this.tokenHost = tokenHost;\r\n this.httpHelper = httpHelper;\r\n }\r\n\r\n sourcePromise(isySubLayer: any, parameters: any): Promise {\r\n return (isySubLayer.subLayers && isySubLayer.subLayers[0])\r\n ? this.createSource(isySubLayer.subLayers[0], parameters)\r\n : this.createSource(isySubLayer, parameters);\r\n }\r\n\r\n // Adds GKT-token to existing source\r\n private _setToken(source): Promise {\r\n return this._getTokenAsync().then((token) => {\r\n source.updateParams({GKT: token});\r\n source.set('timestamp', (new Date()).getTime());\r\n });\r\n }; \r\n\r\n private _getTokenAsync(): Promise {\r\n if (!this.tokenHost) {\r\n return Promise.reject(); // Better way to do this? was return null\r\n }\r\n\r\n if (this.gktToken) {\r\n return this.gktToken;\r\n }\r\n this.lastGktCheck = new Date().getTime();\r\n\r\n this.gktToken = firstValueFrom(this.httpHelper.get(this.tokenHost + '/gatekeeper', {responseType: 'text'}))\r\n .then((result: string) => result.trim().replace(/\"/g, ''))\r\n .catch(() => {\r\n console.log('asyncGetToken failed');\r\n });\r\n return this.gktToken;\r\n };\r\n\r\n private _validateMatrikkelProxyUrl = (proxy, url) => {\r\n if (url.indexOf(proxy) === 0) {\r\n // Already proxied\r\n return url;\r\n }\r\n let tmpProxy = proxy;\r\n const iPos = tmpProxy.indexOf('?');\r\n if (iPos > 0) {\r\n tmpProxy = tmpProxy.substr(0, iPos);\r\n }\r\n if (url.indexOf(tmpProxy.substr(0, tmpProxy.length - 1) + '/matrikkelproxy') >= 0) {\r\n return url;\r\n }\r\n if (url.indexOf(tmpProxy.substr(0, tmpProxy.length - 1) + '/mapproxy') >= 0) {\r\n return url;\r\n }\r\n return proxy + url;\r\n };\r\n\r\n private _getProxyUrl = (layerUrl, flattenproxy) => {\r\n // check if proxy is already added\r\n if (!layerUrl.startsWith((this.proxyHost).substring(0, (this.proxyHost).lastIndexOf('?')))) {\r\n if (Array.isArray(layerUrl)) {\r\n layerUrl = layerUrl[0];\r\n }\r\n if (flattenproxy) {\r\n if (Array.isArray(this.proxyHost)) {\r\n return this._validateMatrikkelProxyUrl(this.proxyHost[0], layerUrl);\r\n }\r\n return this._validateMatrikkelProxyUrl(this.proxyHost, layerUrl);\r\n }\r\n if (!Array.isArray(this.proxyHost)) {\r\n return this._validateMatrikkelProxyUrl(this.proxyHost, layerUrl);\r\n }\r\n const newLayerUrl = [];\r\n this.proxyHost.forEach(host => newLayerUrl.push(this._validateMatrikkelProxyUrl(host, layerUrl)));\r\n return newLayerUrl;\r\n } else {\r\n return layerUrl;\r\n }\r\n };\r\n\r\n private _addCustomUrlParameters(isySubLayer: any): URL {\r\n const subLayerCustomParams: undefined | KeyPairArray =\r\n isySubLayer.customparameters;\r\n const customUrlArray = [];\r\n if (subLayerCustomParams) {\r\n subLayerCustomParams.forEach((param: KeyPair) => {\r\n const customParameter = `${param.Key}=${param.Value}&`;\r\n customUrlArray.push(customParameter);\r\n });\r\n let customUrlString = customUrlArray.join('');\r\n if (isySubLayer.source === 'WMS') { \r\n const sep = isySubLayer.url.indexOf('?') > 0 ? '&' : '?';\r\n customUrlString = sep + customUrlString; }\r\n try {\r\n const urlString = new URL(`${isySubLayer.url}${customUrlString}`);\r\n return urlString;\r\n } catch (error) {\r\n console.error(`\r\n Prøvde å lage en url som ikke lot seg lage.\r\n ${error}\r\n `);\r\n }\r\n }\r\n return new URL(`${isySubLayer.url}`);\r\n }\r\n\r\n private _mergeParamsAndCustomParams(params: object, customParams: undefined | KeyPairArray) {\r\n if (customParams) {\r\n customParams.forEach((param: KeyPair) => {\r\n params[param.Key] = param.Value;\r\n });\r\n }\r\n return params;\r\n };\r\n\r\n checkGktToken(map: any) {\r\n if (this.lastGktCheck === 0) {\r\n return;\r\n }\r\n const currentTime = (new Date()).getTime();\r\n if (currentTime < (this.lastGktCheck + 60000)) {\r\n // check if token has expired each minute\r\n return;\r\n }\r\n this.gktToken = undefined;\r\n this.lastGktCheck = currentTime;\r\n if (map.getLayers()) {\r\n map.getLayers().forEach((layer) => this.setLayerTokenIfElapsedTimeIsMoreThanGktLifetime(layer, currentTime));\r\n }\r\n };\r\n\r\n private setLayerTokenIfElapsedTimeIsMoreThanGktLifetime(layer, currentTime): void {\r\n const source = layer.getSource();\r\n if (source && source.getParams) {\r\n const params = source.getParams();\r\n if (params && params.GKT) {\r\n const initTime = source.get('timestamp');\r\n if (initTime) {\r\n const elapsedTime = Math.round((currentTime - initTime) / 1000);\r\n if (elapsedTime > this.gktLifetime) {\r\n this._setToken(source);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n getLayer = (isySubLayer): any => this.olLayers[isySubLayer.id];\r\n\r\n setLayer = (isySubLayer, olLayer) => {\r\n this.olLayers[isySubLayer.id] = olLayer;\r\n };\r\n\r\n createSource = (isySubLayer: any, parameters: any): Promise => {\r\n let source;\r\n const promises: Promise[] = [];\r\n const mergedParams = this._mergeParamsAndCustomParams(parameters, isySubLayer?.customparameters);\r\n switch (isySubLayer.source) {\r\n case DomainSubLayerSOURCES.wmts:\r\n source = { source: new MapImplementationSourcesWmts(isySubLayer, parameters) }; \r\n \r\n if (isySubLayer.gatekeeper && isySubLayer.tiled) {\r\n source.source.setTileLoadFunction((tile, src) => {\r\n const imageTile = tile as ImageTile;\r\n const image = imageTile.getImage();\r\n if (image instanceof HTMLImageElement) {\r\n this._getTokenAsync().then((token) => {\r\n const customUrl = src + '&gkt=' + token;\r\n image.src = customUrl;\r\n });\r\n } else {\r\n console.warn(\"Tile image is not an HTMLImageElement\");\r\n }\r\n });\r\n } \r\n break;\r\n case DomainSubLayerSOURCES.proxyWmts:\r\n isySubLayer.url = this._getProxyUrl(isySubLayer.url, undefined);\r\n source = { source: new MapImplementationSourcesWmts(isySubLayer, parameters)}; \r\n break;\r\n case DomainSubLayerSOURCES.wms:\r\n source = { source: new MapImplementationSourcesWms(isySubLayer, mergedParams)};\r\n if (isySubLayer.gatekeeper && isySubLayer.tiled) {\r\n promises.push(this._setToken(source.source));\r\n }\r\n break;\r\n case DomainSubLayerSOURCES.proxyWms:\r\n isySubLayer.url = this._getProxyUrl(isySubLayer.url, undefined);\r\n source = { source: new MapImplementationSourcesWms(isySubLayer, mergedParams)};\r\n break;\r\n case DomainSubLayerSOURCES.vector: {\r\n const vector = new MapImplementationSourcesVector(isySubLayer, undefined, this.httpHelper);\r\n source = { source: vector, self: vector, getUrl: vector.getUrl };\r\n if (isySubLayer.url !== '') {\r\n if (!isySubLayer.noProxy) {\r\n isySubLayer.url = this._getProxyUrl(isySubLayer.url, undefined);\r\n }\r\n // this._loadVectorLayer(isySubLayer, source, map);\r\n }\r\n break;\r\n }\r\n case DomainSubLayerSOURCES.wfs:{\r\n if (!isySubLayer.noProxy) {\r\n isySubLayer.url = this._getProxyUrl(isySubLayer.url, true);\r\n isySubLayer.url = this._addCustomUrlParameters(isySubLayer).toString();\r\n }\r\n const wfs = new MapImplementationSourcesWfs(\r\n isySubLayer, parameters, null, this.eventHandler, this.selectPreSelectedFeatures, undefined, this.httpHelper\r\n );\r\n source = {\r\n self: wfs,\r\n getUrl: wfs.getUrl,\r\n gmlParser: wfs.gmlParser,\r\n source: wfs.getSource() \r\n };\r\n break;\r\n }\r\n default:\r\n throw new Error(\r\n `Unsupported source: ISY.Domain.SubLayer.SOURCES.'${isySubLayer.source}'. For SubLayer with url ${isySubLayer.url} and name ${isySubLayer.name}.`\r\n );\r\n }\r\n return Promise.all(promises).then(() => source);\r\n };\r\n\r\n createRefreshSource = (isySubLayer: any, parameters: any, featureObj: any): Promise => {\r\n let source;\r\n const promises: Promise[] = [];\r\n switch (isySubLayer.source) {\r\n case DomainSubLayerSOURCES.wmts:\r\n source = new MapImplementationSourcesWmts(isySubLayer, parameters);\r\n break;\r\n case DomainSubLayerSOURCES.proxyWmts:\r\n source = new MapImplementationSourcesWmts(isySubLayer, parameters);\r\n break;\r\n case DomainSubLayerSOURCES.wms:\r\n source = new MapImplementationSourcesWms(isySubLayer, parameters);\r\n if (isySubLayer.gatekeeper && isySubLayer.tiled) {\r\n promises.push(this._setToken(source));\r\n }\r\n break;\r\n case DomainSubLayerSOURCES.proxyWms:\r\n source = new MapImplementationSourcesWms(isySubLayer, parameters);\r\n break;\r\n case DomainSubLayerSOURCES.vector:\r\n {\r\n const vector = new MapImplementationSourcesVector(isySubLayer, undefined, this.httpHelper, parameters);\r\n source = { source: vector, self: vector, getUrl: vector.getUrl };\r\n break;\r\n }\r\n case DomainSubLayerSOURCES.wfs: {\r\n const wfs = new MapImplementationSourcesWfs(\r\n isySubLayer,\r\n parameters,\r\n featureObj,\r\n this.eventHandler,\r\n undefined,\r\n undefined,\r\n this.httpHelper,\r\n );\r\n source = wfs.getSource();\r\n source.refresh();\r\n break;\r\n }\r\n }\r\n return Promise.all(promises).then(() => source);\r\n }\r\n\r\n}\r\n\r\n","import { DomainSubLayerFORMATS } from '../../Domain/SubLayer';\r\nimport { GeoJSON } from 'ol/format';\r\nimport { MapImplementationTransform } from '../Transform';\r\nimport { Projection } from 'ol/proj';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nimport { all, bbox } from 'ol/loadingstrategy';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\nexport class MapImplementationSourcesVector {\r\n projection;\r\n source;\r\n transformService;\r\n isySubLayer;\r\n httpHelper;\r\n extraParams;\r\n\r\n constructor(isySubLayer, projection, httpHelper, extraParams?) {\r\n this.httpHelper = httpHelper;\r\n this.transformService = new MapImplementationTransform();\r\n this.projection = projection\r\n ? projection\r\n : new Projection({\r\n code: isySubLayer.coordinate_system,\r\n extent: isySubLayer.extent,\r\n units: isySubLayer.extentUnits,\r\n });\r\n this.isySubLayer = isySubLayer;\r\n this.extraParams = extraParams;\r\n if (isySubLayer.format === DomainSubLayerFORMATS.geoJson) {\r\n const isySubLayerUrl = this.isySubLayer.url;\r\n if (\r\n isySubLayerUrl &&\r\n isySubLayerUrl.substr(isySubLayerUrl.length - 1) === '&'\r\n ) {\r\n this.isySubLayer.url = this.isySubLayer.url.substring(\r\n 0,\r\n this.isySubLayer.url.length - 1\r\n );\r\n }\r\n\r\n const layerId = this.isySubLayer.id;\r\n if (this.isValidUrl(this.isySubLayer.url)) {\r\n const loader = (extent, resolution) => {\r\n this.loader(extent, resolution, layerId);\r\n };\r\n this.source = new VectorSource({\r\n format: new GeoJSON(),\r\n loader: loader,\r\n strategy: this.getLoadingStrategy()\r\n });\r\n if (this.isySubLayer.cluster) {\r\n this.source.set('type', 'ol.source.Cluster');\r\n }\r\n } else {\r\n let geoJsonParse = JSON.parse(this.isySubLayer.url);\r\n if (geoJsonParse.crs && geoJsonParse.crs.properties && geoJsonParse.crs.properties.name && geoJsonParse.crs.properties.name !== \"urn:ogc:def:crs:OGC:1.3:CRS84\") {\r\n geoJsonParse = this.transformService.transformGeoJsonFeaturesToGeographic(geoJsonParse, geoJsonParse.crs.properties.name);\r\n }\r\n const geojson =\r\n this.transformService.transformGeoJsonFeaturesFromGeographic(\r\n geoJsonParse,\r\n this.isySubLayer.coordinate_system\r\n );\r\n const format = new GeoJSON();\r\n let features;\r\n if (geojson) {\r\n features = format.readFeatures(geojson);\r\n\r\n features.forEach(feature => {\r\n feature.values_.layerguid = layerId\r\n });\r\n } \r\n this.source = new VectorSource({ features });\r\n if (this.isySubLayer.cluster) {\r\n this.source.set('type', 'ol.source.Cluster');\r\n }\r\n }\r\n }\r\n\r\n return this.source;\r\n }\r\n\r\n loader = (extent, _resolution, layerId) => {\r\n const url = this.getUrl(extent);\r\n const callback = (data: GeoJSON | any) => {\r\n if (data) {\r\n if (typeof data === 'string') {\r\n data = JSON.parse(data);\r\n }\r\n if (data.features) {\r\n let dataProjection = 'EPSG:4326';\r\n if (data.crs?.properties?.name) {\r\n dataProjection = data.crs.properties.name;\r\n } else if (\r\n this.isySubLayer?.dataprojection === undefined ||\r\n this.isySubLayer?.dataprojection === '' ||\r\n this.isySubLayer?.dataprojection === null\r\n ) {\r\n dataProjection = this.isySubLayer.coordinate_system;\r\n } else if (this.isySubLayer?.dataprojection) {\r\n dataProjection = this.isySubLayer?.dataprojection;\r\n }\r\n const format = new GeoJSON();\r\n for (const feature of data.features) {\r\n if (!feature.id && feature.properties?.id) {\r\n feature.id = feature.properties?.id;\r\n }\r\n feature.properties.layerguid = layerId;\r\n if (feature.type) {\r\n this.source.addFeature(\r\n format.readFeature(feature, {\r\n dataProjection,\r\n featureProjection:\r\n this.isySubLayer?.coordinate_system ||\r\n 'EPSG:32632',\r\n })\r\n );\r\n }\r\n }\r\n }\r\n }\r\n };\r\n return firstValueFrom(this.httpHelper.get(url))\r\n .then(response => callback(response))\r\n .catch(err => console.log('error in Vector loader: ', err));\r\n }\r\n\r\n getUrl = (extent?: any) => {\r\n const url = this.isySubLayer.url;\r\n const paramString = this.getParamStringFromObject(this.extraParams);\r\n let layerCrs = '32633';\r\n const projectCrs: string = this.isySubLayer.coordinate_system;\r\n if (projectCrs) {\r\n layerCrs = projectCrs.split(':')[1];\r\n }\r\n if (this.isySubLayer.version === '1.0.0') {\r\n return new URL(\r\n `${url}?bbox=${extent.join()}&bbox-crs=${layerCrs}&crs=${layerCrs}&limit=200${paramString}`\r\n ).toString();\r\n } else {\r\n return new URL(\r\n `${url}&bbox=${extent.join()}&bbox-crs=http://www.opengis.net/def/crs/EPSG/0/${layerCrs}&crs=http://www.opengis.net/def/crs/EPSG/0/${layerCrs}&limit=200${paramString}`\r\n ).toString();\r\n }\r\n }\r\n\r\n private getParamStringFromObject(obj): string {\r\n return obj\r\n ? Object.keys(obj).map(key => `&${key}=${obj[key]}`).join('')\r\n : '';\r\n }\r\n\r\n readFeatures = (data) => {\r\n return this.source.parser.readFeatures(data);\r\n }\r\n\r\n getProjection = () => {\r\n return this.projection;\r\n }\r\n\r\n getLoadingStrategy = () => {\r\n switch (this.isySubLayer.loadingstrategy) {\r\n case ('mapmove'):\r\n // reloades all data on each mapmove\r\n return (extent) => {\r\n const bbox = extent.join(',');\r\n const currentBbox = this.source.get('bbox');\r\n if (bbox !== currentBbox) {\r\n this.source.clear();\r\n this.source.loadedExtentsRtree_.clear();\r\n this.source.set('bbox', bbox);\r\n }\r\n return [extent];\r\n };\r\n case ('all'):\r\n return all;\r\n case ('bbox'):\r\n default:\r\n return bbox;\r\n }\r\n }\r\n\r\n private isValidUrl = (string): boolean => {\r\n try {\r\n new URL(string);\r\n return true;\r\n } catch (err) {\r\n return false;\r\n }\r\n }\r\n}\r\n","import { MapAPIParsersGML } from '../../MapAPI/Parsers/GML';\r\nimport { MapAPICustomCrsLoader } from '../../MapAPI/CustomCrsLoader';\r\nimport {\r\n bbox as bboxStrategy,\r\n tile as tileStrategy,\r\n} from 'ol/loadingstrategy.js';\r\nimport TileGrid from 'ol/tilegrid/TileGrid';\r\nimport { Vector as VectorSource } from 'ol/source';\r\nimport { MapImplementationTransform } from '../Transform';\r\nimport { KeyPair, KeyPairArray } from '../../Domain/Definitions';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\nexport class MapImplementationSourcesWfs {\r\n isySubLayer;\r\n parameters;\r\n featureObj;\r\n eventHandler;\r\n selectPreSelectedFeatures;\r\n httpHelper;\r\n gmlParser;\r\n source;\r\n transformService;\r\n customCrsLoader: MapAPICustomCrsLoader;\r\n coordinate_system: string;\r\n dataprojection: string;\r\n urlParams = new Map();\r\n bearerToken: string;\r\n\r\n constructor(\r\n isySubLayer,\r\n parameters,\r\n featureObj,\r\n eventHandler,\r\n selectPreSelectedFeatures,\r\n bearerToken,\r\n httpHelper,\r\n ) {\r\n this.isySubLayer = isySubLayer;\r\n this.parameters = parameters;\r\n this.featureObj = featureObj;\r\n this.eventHandler = eventHandler;\r\n this.selectPreSelectedFeatures = selectPreSelectedFeatures;\r\n this.bearerToken = bearerToken;\r\n this.httpHelper = httpHelper;\r\n this.transformService = new MapImplementationTransform();\r\n\r\n this.coordinate_system = this.isySubLayer.dataprojection\r\n ? this._get3dEpsgByProjection(\r\n this.isySubLayer.coordinate_system,\r\n this.isySubLayer.dataprojection\r\n )\r\n : this.isySubLayer.coordinate_system;\r\n this.dataprojection = this.isySubLayer.dataprojection;\r\n\r\n /* jshint -W024 */\r\n let strategy: any;\r\n\r\n this.gmlParser = new MapAPIParsersGML(\r\n this.transformService,\r\n isySubLayer,\r\n this.httpHelper,\r\n );\r\n\r\n if (isySubLayer.tiled) {\r\n const newMapRes = [];\r\n newMapRes[0] = 21664;\r\n for (let t = 1; t < 18; t++) {\r\n newMapRes[t] = newMapRes[t - 1] / 2;\r\n }\r\n strategy = tileStrategy(\r\n new TileGrid({\r\n origin: [0, 0, 0],\r\n resolutions: newMapRes,\r\n })\r\n );\r\n } else {\r\n strategy = bboxStrategy;\r\n }\r\n\r\n const loader = (extent) => {\r\n this.loader(extent);\r\n };\r\n\r\n const updateTokenObject = (tokenObject) => {\r\n this.parameters = tokenObject;\r\n }\r\n\r\n const updateBearerToken = (bearerToken) => {\r\n this.bearerToken = bearerToken;\r\n }\r\n\r\n const source = new VectorSource({\r\n loader: loader,\r\n strategy: strategy \r\n });\r\n source.set('type', 'ol.source.Vector');\r\n source.set('updateTokenObject', updateTokenObject); \r\n source.set('updateBearerToken', updateBearerToken); \r\n if (isySubLayer.cluster) {\r\n source.set('type', 'ol.source.Cluster');\r\n this.source = source;\r\n } else {\r\n this.source = source;\r\n }\r\n }\r\n\r\n getSource = () => {\r\n return this.source;\r\n }\r\n\r\n getUrl = (extent?: any) => {\r\n let url = this.isySubLayer.url;\r\n\r\n let cqlFilterInUse = false;\r\n const customParams: KeyPairArray | null | undefined =\r\n this.isySubLayer.customparameters;\r\n\r\n if (customParams != null) {\r\n customParams.forEach((param: KeyPair) => {\r\n this.urlParams.set(param.Key.toLowerCase(), param.Value);\r\n });\r\n cqlFilterInUse = this.urlParams.has('cql_filter');\r\n }\r\n\r\n if (Array.isArray(this.isySubLayer.url)) {\r\n url = this.isySubLayer.url[0];\r\n }\r\n\r\n if (url.indexOf('?&') === url.length - 2) {\r\n url = url.substr(0, url.length - 1);\r\n }\r\n\r\n if (window.location.host === 'localhost:8282') {\r\n if (url.indexOf('url=') > 0) {\r\n url = url.substr(url.indexOf('url=') + 4);\r\n if (url.indexOf('?') < 0) {\r\n const ipos = url.indexOf('&');\r\n if (ipos > 0) {\r\n url = url.substr(0, ipos) + '?' + url.substr(ipos + 1);\r\n }\r\n }\r\n } else if (\r\n url.indexOf('?') === -1 &&\r\n url.lastIndexOf('&') === url.length - 1\r\n ) {\r\n // no proxy, replace & with ?\r\n url = url.substr(0, url.length - 1) + '?';\r\n }\r\n }\r\n\r\n if (url.toLowerCase().indexOf('service=wfs') < 0) {\r\n url += 'service=WFS&';\r\n }\r\n\r\n url +=\r\n 'request=GetFeature' +\r\n '&version=' +\r\n this.isySubLayer.version +\r\n '&typename=' +\r\n this.isySubLayer.name;\r\n\r\n if (this.dataprojection) {\r\n url += '&srsname=' + this.dataprojection;\r\n if (cqlFilterInUse) {\r\n url += extent ? `&srsname=${this.coordinate_system}` : '';\r\n } else {\r\n url += extent\r\n ? `&bbox=${extent.join(',')},${this.coordinate_system}`\r\n : '';\r\n }\r\n } else if (\r\n url\r\n .toLowerCase()\r\n .indexOf('://dok.nois.no/deegree-webservices-3.4.5') > 0\r\n ) {\r\n url += '&srsname=urn:ogc:def:crs:EPSG::4326';\r\n url += extent\r\n ? '&bbox=' + extent.join(',') + ',' + this.coordinate_system\r\n : '';\r\n } else {\r\n if (cqlFilterInUse) {\r\n url += '&srsname=' + this.coordinate_system;\r\n } else {\r\n url += '&srsname=' + this.coordinate_system;\r\n url += extent ? '&bbox=' + extent.join(',') : '';\r\n }\r\n }\r\n // Add 5th BBOX parameter... (if needed...)\r\n if (\r\n url.toLowerCase().indexOf('matrikkelproxy') > 0 ||\r\n url.toLowerCase().indexOf('matrikkel.no') > 0 ||\r\n url.toLowerCase().indexOf('wfs.geonorge.no/skwms1/wfs.') > 0\r\n ) {\r\n url += ',' + this.coordinate_system;\r\n }\r\n\r\n // IE need unique url to theese layers due to strange cache in browser\r\n if (this.isySubLayer.editable) {\r\n url += '&_olSalt=' + Math.random();\r\n }\r\n if (this.parameters) {\r\n // source is refreshed\r\n for (const index in this.parameters) {\r\n url += '&' + index + '=' + this.parameters[index];\r\n }\r\n }\r\n return new URL(url).toString();\r\n }\r\n\r\n loader = (extent): Promise => {\r\n // Todo: check if this is the class or something else...\r\n this.dispatchEvent('vectorloadstart');\r\n\r\n const url = this.getUrl(extent);\r\n const headers = (this.bearerToken && this.bearerToken !== '') ? {'Authorization': 'Bearer ' + this.bearerToken} : undefined;\r\n return firstValueFrom(this.httpHelper.get(url, {headers: headers, responseType: 'document'}))\r\n .then((response: Element) => {\r\n if (typeof response === 'object') {\r\n if (!response?.firstChild?.hasChildNodes()) {\r\n this.dispatchEvent('vectorloadend');\r\n return;\r\n }\r\n } else {\r\n this.dispatchEvent('vectorloadend');\r\n return;\r\n }\r\n this.gmlParser.parse(\r\n response,\r\n this.isySubLayer,\r\n this.source,\r\n this.featureObj,\r\n this.eventHandler,\r\n this.selectPreSelectedFeatures\r\n );\r\n })\r\n .catch(() => {\r\n this.dispatchEvent('vectorloaderror');\r\n });\r\n }\r\n\r\n dispatchEvent = (eventname) => {\r\n this.source.dispatchEvent(eventname);\r\n }\r\n\r\n getFeatures = () => {\r\n return this.source.getFeatures();\r\n }\r\n\r\n // if dataprojection is 3d, use the equivalent 3d-system\r\n private _get3dEpsgByProjection = (\r\n epsg: string,\r\n dataprojection: string\r\n ): string => {\r\n if (this.transformService.hasVerticalValues(dataprojection)) {\r\n if (!this.customCrsLoader) {\r\n this.customCrsLoader = new MapAPICustomCrsLoader();\r\n }\r\n return this.customCrsLoader.get3dEpsg(epsg);\r\n }\r\n return epsg;\r\n }\r\n}\r\n","import { Feature } from 'ol';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { EventsEventTypes } from '../../Events/EventHandler';\r\n\r\n/**\r\n * @class\r\n * Transaction manager to handle inserts, updates and deletes using WFS-T.\r\n *\r\n * @constructor\r\n * @param {string} url.\r\n * @param {string} featureType.\r\n * @param {string} featureNS.\r\n * @param {string} srsName.\r\n * @param {ol.source.Vector} source.\r\n */\r\nexport class MapImplementationSourcesWfsT {\r\n\r\n url;\r\n featureType;\r\n featureNS;\r\n srsName;\r\n source;\r\n eventHandler;\r\n httpHelper;\r\n serializer = new XMLSerializer();\r\n isWfs20 = false;\r\n\r\n newprop;\r\n properties;\r\n\r\n constructor (url, featureType, featureNS, srsName, source, eventHandler, httpHelper) {\r\n this.url = url;\r\n this.featureType = featureType;\r\n this.featureNS = featureNS;\r\n this.srsName = srsName;\r\n this.source = source;\r\n this.eventHandler = eventHandler;\r\n this.httpHelper = httpHelper;\r\n }\r\n\r\n /**\r\n * Insert a new feature and handle response.\r\n * @param {ol.Feature} feature.\r\n * @return {ol.Feature} feature.\r\n * @throws {Error} error message.\r\n */\r\n insertFeature(layerid, featureName, geometryName, feature, describedSource): Promise {\r\n const resultObject = {\r\n success: false,\r\n feature: undefined,\r\n layerid: layerid,\r\n message: ''\r\n };\r\n\r\n let url = this.url;\r\n if (url.toLowerCase().indexOf('service=wfs&') < 0) {\r\n url = url.split('&');\r\n if (url.length <= 2) {\r\n this.url = url[0]; // + '?SERVICE=wfs&VERSION=2.0.0';\r\n }\r\n }\r\n\r\n if (this.source.format === undefined && describedSource === undefined) {\r\n resultObject.message = 'Format not specified';\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionInsertEnd, resultObject);\r\n return Promise.resolve(() => false); // ???\r\n }\r\n if (describedSource) {\r\n this.source = describedSource;\r\n }\r\n\r\n this.featureType = featureName;\r\n\r\n const featureNamespace = this._getFeatureNamespace(this.featureType);\r\n const featureNamespaceColon = featureNamespace ? featureNamespace + ':' : '';\r\n const featureNode = this.source.format.writeTransaction([feature], null, null, {\r\n gmlOptions: {srsName: this.srsName},\r\n featureNS: this.featureNS,\r\n featureType: this.featureType,\r\n featurePrefix: featureNamespace\r\n });\r\n\r\n let featureData = this._convertXmlToInsertStringV2(featureName, featureNode, featureNamespace);\r\n featureData = featureData.replace(//g, '' + featureNamespaceColon);\r\n featureData = featureData.replace(/wfs:Name>/g, 'wfs:ValueReference>');\r\n\r\n featureData = featureData.replace(/wfs:Point/ig, 'gml:Point');\r\n featureData = featureData.replace(/wfs:Polygon/ig, 'gml:Polygon');\r\n featureData = featureData.replace(/wfs:Line/ig, 'gml:Line');\r\n featureData = featureData.replace(/wfs:pos/ig, 'gml:pos');\r\n featureData = featureData.replace(/wfs:interior/ig, 'gml:interior');\r\n featureData = featureData.replace(/wfs:exterior/ig, 'gml:exterior');\r\n featureData = featureData.replace(/wfs:Abstract/ig, 'gml:exterior');\r\n featureData = featureData.replace(/wfs:Abstract/ig, 'gml:exterior');\r\n featureData = featureData.replace(/wfs:surface/ig, 'gml:surface');\r\n featureData = featureData.replace(/app:layerguid.*?wfs:Property>/ig, '');\r\n featureData = featureData.replace('version=\"1.1.0\"', 'version=\"2.0.0\"');\r\n featureData = featureData.replace('xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\"', '');\r\n featureData = featureData.replace(/wfs:Filter/g, 'fes:Filter');\r\n featureData = featureData.replace('wfs:FeatureId fid=', 'fes:ResourceId rid=');\r\n featureData = featureData.replace(/&/g, '&');\r\n featureData = featureData.replace(/&/g, '&');\r\n if (geometryName && feature.getGeometryName() !== geometryName) {\r\n const replace = '\\\\b' + featureNamespaceColon + feature.getGeometryName() + '\\\\b';\r\n const re = new RegExp(replace, 'ig');\r\n featureData = featureData.replace(re, featureNamespaceColon + geometryName);\r\n }\r\n console.log('featureData', featureData);\r\n let message = 'Error inserting feature: ';\r\n resultObject.success = true;\r\n\r\n return firstValueFrom(this.httpHelper.post(this.url, featureData, {responseType: 'document'}))\r\n .then((data) => {\r\n const result = this._readResponseWfs20(data);\r\n if (result === undefined) {\r\n resultObject.success = false;\r\n message += 'Response parse error.';\r\n } else if (typeof result === 'string') {\r\n resultObject.success = false;\r\n message += result;\r\n } else if (result.transactionSummary === undefined) {\r\n resultObject.success = false;\r\n } else if (result && result.transactionSummary.totalInserted === 1) {\r\n const gmlId = result.insertIds[0];\r\n feature.setId(gmlId);\r\n const localId = this._getLocalId(gmlId);\r\n feature.set('lokalId', localId);\r\n this.source.addFeature(feature);\r\n resultObject.feature = feature;\r\n } else {\r\n resultObject.success = false;\r\n message += 'Feature not inserted.';\r\n }\r\n\r\n resultObject.message = resultObject.success ? 'Feature inserted' : message;\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionInsertEnd, resultObject);\r\n })\r\n .catch((e) => {\r\n let errorMsg = e ? (e.status + ' ' + e.statusText) : '';\r\n if (errorMsg === '200 parsererror') {\r\n errorMsg = 'Response parse error.';\r\n }\r\n resultObject.success = false;\r\n message += errorMsg;\r\n resultObject.message = message;\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionInsertEnd, resultObject);\r\n })\r\n .finally(() => {\r\n if (!resultObject.success) {\r\n throw new Error(message);\r\n }\r\n });\r\n }\r\n\r\n private _convertCoordinate2String(coord, length) {\r\n let value = '' + Math.round(coord * 100) / 100;\r\n if (value.length > length) {\r\n value = value.substr(0, length);\r\n const ipos = value.indexOf('.');\r\n if (ipos >= 0) {\r\n value = value.substr(0, ipos + 3);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n private _updateGeometry(theGeometry, lonLatNames) {\r\n if (theGeometry) {\r\n\r\n const coordinates = theGeometry.getCoordinates();\r\n\r\n this.newprop[lonLatNames.lon] = this._convertCoordinate2String(coordinates[1], 10);\r\n this.newprop[lonLatNames.lat] = this._convertCoordinate2String(coordinates[0], 10);\r\n this.properties[lonLatNames.lon] = this.newprop[lonLatNames.lon];\r\n this.properties[lonLatNames.lat] = this.newprop[lonLatNames.lat];\r\n }\r\n }\r\n\r\n private _updateFeatureWfs20(feature) {\r\n const gmlId = feature.getId();\r\n const properties = feature.getProperties();\r\n\r\n const newprop = {};\r\n const geometry = feature.getGeometry();\r\n\r\n const editedproperties = feature.get('_editedproperties_') || feature.getProperties();\r\n if (editedproperties) {\r\n for (const key in editedproperties) {\r\n if (key === '_geometry_') {\r\n this._updateGeometry(geometry, editedproperties[key]);\r\n } else {\r\n newprop[key] = editedproperties[key];\r\n }\r\n }\r\n }\r\n const clone = new Feature(newprop);\r\n clone.setId(gmlId);\r\n const featureNamespace = this._getFeatureNamespace(this.featureType);\r\n const featureNamespaceColon = featureNamespace ? featureNamespace + ':' : '';\r\n\r\n let featureNode;\r\n let featureData;\r\n\r\n if (featureNamespace !== '') {\r\n featureNode = this.source.format.writeTransaction(null, [clone], null, {\r\n gmlOptions: {srsName: this.srsName},\r\n featureNS: this.featureNS,\r\n featureType: this._getFeatureName(this.featureType),\r\n featurePrefix: featureNamespace //,\r\n //version: '2.0.0' // Todo: openlayers now support 2.0, but will require rewriting a lot here\r\n });\r\n\r\n featureData = this._convertXmlToStringV2(featureNode); // serializer_.serializeToString(featureNode);\r\n\r\n // detect and remove winmap point garbage. Remove Geometry nodes with only a string for value (as opposed to a geometry structure Geometry<\\/wfs:Name>(\\w+)?<\\/wfs:Value><\\/wfs:Property>/ig, '');\r\n\r\n featureData = featureData.replace(//g, '' + featureNamespaceColon);\r\n featureData = featureData.replace(/wfs:Name>/g, 'wfs:ValueReference>');\r\n\r\n featureData = featureData.replace(/wfs:Point/ig, 'gml:Point');\r\n featureData = featureData.replace(/wfs:Polygon/ig, 'gml:Polygon');\r\n featureData = featureData.replace(/wfs:Line/ig, 'gml:Line');\r\n featureData = featureData.replace(/wfs:pos/ig, 'gml:pos');\r\n featureData = featureData.replace(/wfs:interior/ig, 'gml:interior');\r\n featureData = featureData.replace(/wfs:exterior/ig, 'gml:exterior');\r\n featureData = featureData.replace(/wfs:Abstract/ig, 'gml:exterior');\r\n featureData = featureData.replace(/wfs:Abstract/ig, 'gml:exterior');\r\n featureData = featureData.replace(/wfs:surface/ig, 'gml:surface');\r\n if (feature.getGeometryName() !== 'geometry') {\r\n const replace = featureNamespace + ':geometry';\r\n const re = new RegExp(replace, 'ig');\r\n featureData = featureData.replace(re, featureNamespaceColon + feature.getGeometryName());\r\n }\r\n featureData = featureData.replace(/app:layerguid.*?wfs:Property>/ig, '');\r\n } else {\r\n featureNode = this.source.format.writeTransaction(null, [clone], null, {\r\n gmlOptions: {srsName: this.srsName},\r\n featureNS: this.featureNS,\r\n featureType: this._getFeatureName(this.featureType)\r\n });\r\n featureData = this._convertXmlToStringV2(featureNode); // serializer_.serializeToString(featureNode);\r\n }\r\n featureData = featureData.replace('version=\"1.1.0\"', 'version=\"2.0.0\"');\r\n\r\n featureData = featureData.replace('xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\"', '');\r\n featureData = featureData.replace(/wfs:Filter/g, 'fes:Filter');\r\n featureData = featureData.replace('wfs:FeatureId fid=', 'fes:ResourceId rid=');\r\n\r\n featureData = featureData.replace(/&/g, '&');\r\n\r\n const resultObject = {\r\n success: true,\r\n message: ''\r\n };\r\n let message = 'Oops! Objektoppdatering feilet: ';\r\n let okResult = true;\r\n\r\n firstValueFrom(this.httpHelper.post(this.url, featureData, {responseType: 'document'}))\r\n .then(data => {\r\n const result = this._readResponseWfs20(data);\r\n if (result === undefined) {\r\n okResult = false;\r\n message += 'Response parse error.';\r\n } else if (typeof result === 'string') {\r\n okResult = false;\r\n message += result;\r\n } else if (result.transactionSummary === undefined) {\r\n okResult = false;\r\n } else if (result && result.transactionSummary.totalUpdated === undefined) {\r\n okResult = false;\r\n message += 'Response parse error.';\r\n } else if (result && result.transactionSummary.totalUpdated !== 1) {\r\n okResult = false;\r\n message += 'Feature not updated.';\r\n } else {\r\n const sourceFeature = this.source.getFeatureById(gmlId);\r\n if (sourceFeature) {\r\n sourceFeature.setProperties(properties);\r\n }\r\n }\r\n\r\n resultObject.success = okResult;\r\n resultObject.message = okResult ? 'Feature updated' : message;\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionUpdateEnd, resultObject);\r\n })\r\n .catch((e) => {\r\n let errorMsg = e ? (e.status + ' ' + e.statusText) : '';\r\n if (errorMsg === '200 parsererror') {\r\n errorMsg = 'Response parse error.';\r\n }\r\n okResult = false;\r\n message += errorMsg;\r\n resultObject.success = okResult;\r\n resultObject.message = message;\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionUpdateEnd, resultObject);\r\n })\r\n .finally(() => {\r\n if (!okResult) {\r\n throw new Error(message);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Updates an existing feature and handle response.\r\n * @param {ol.Feature} feature.\r\n * @return {boolean} update result.\r\n * @throws {Error} error message.\r\n */\r\n updateFeature(feature) {\r\n const resultObject = {\r\n success: false,\r\n message: ''\r\n };\r\n if (this.source.format === undefined) {\r\n resultObject.message = 'Format not specified';\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionUpdateEnd, resultObject);\r\n return false;\r\n }\r\n this.isWfs20 = true;\r\n if (this.isWfs20) {\r\n return this._updateFeatureWfs20(feature);\r\n }\r\n const gmlId = feature.getId();\r\n const properties = feature.getProperties();\r\n delete properties.bbox;\r\n const clone = new Feature(properties);\r\n clone.setId(gmlId);\r\n clone.setGeometryName(feature.getGeometryName());\r\n const featureNamespace = this._getFeatureNamespace(this.featureType);\r\n const featureNamespaceColon = featureNamespace ? featureNamespace + ':' : '';\r\n\r\n let featureNode;\r\n let featureData;\r\n\r\n if (featureNamespace !== '') {\r\n featureNode = this.source.format.writeTransaction(null, [clone], null, {\r\n gmlOptions: {srsName: this.srsName},\r\n featureNS: this.featureNS,\r\n featureType: this._getFeatureName(this.featureType),\r\n featurePrefix: featureNamespace\r\n });\r\n\r\n featureData = this._convertXmlToString(featureNode); // serializer_.serializeToString(featureNode);\r\n featureData = featureData.replace(//g, '' + featureNamespaceColon);\r\n } else {\r\n featureNode = this.source.format.writeTransaction(null, [clone], null, {\r\n gmlOptions: {srsName: this.srsName},\r\n featureNS: this.featureNS,\r\n featureType: this._getFeatureName(this.featureType)\r\n });\r\n featureData = this._convertXmlToString(featureNode); // serializer_.serializeToString(featureNode);\r\n }\r\n\r\n featureData = featureData.replace('xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\"', 'xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\" xmlns=\"http://www.opengis.net/wfs\"');\r\n featureData = featureData.replace('Filter', 'Filter xmlns=\"http://www.opengis.net/ogc\"');\r\n\r\n featureData = featureData.replace('Point', 'Point xmlns=\"http://www.opengis.net/gml\"');\r\n featureData = featureData.replace('Polygon', 'Polygon xmlns=\"http://www.opengis.net/gml\"');\r\n featureData = featureData.replace('LineString', 'LineString xmlns=\"http://www.opengis.net/gml\"');\r\n featureData = featureData.replace(/&/g, '&');\r\n\r\n let message = 'Objektoppdatering feilet: ';\r\n let okResult = true;\r\n\r\n firstValueFrom(this.httpHelper.post(this.url, featureData, {responseType: 'document'}))\r\n .then(data => {\r\n const result = this._readResponse(data);\r\n if (result === undefined) {\r\n okResult = false;\r\n message += 'Response parse error.';\r\n } else if (typeof result === 'string') {\r\n okResult = false;\r\n message += result;\r\n } else if (result.transactionSummary === undefined) {\r\n okResult = false;\r\n } else if (result && result.transactionSummary.totalUpdated === undefined) {\r\n okResult = false;\r\n message += 'Response parse error.';\r\n } else if (result && result.transactionSummary.totalUpdated !== 1) {\r\n okResult = false;\r\n message += 'Feature not updated.';\r\n } else {\r\n const sourceFeature = this.source.getFeatureById(gmlId);\r\n if (sourceFeature) {\r\n sourceFeature.setProperties(properties);\r\n }\r\n }\r\n resultObject.success = okResult;\r\n resultObject.message = okResult ? 'Feature updated' : message;\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionUpdateEnd, resultObject);\r\n })\r\n .catch((e) => {\r\n let errorMsg = e ? (e.status + ' ' + e.statusText) : '';\r\n if (errorMsg === '200 parsererror') {\r\n errorMsg = 'Response parse error.';\r\n }\r\n okResult = false;\r\n message += errorMsg;\r\n resultObject.success = okResult;\r\n resultObject.message = message;\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionUpdateEnd, resultObject);\r\n })\r\n .finally(() => {\r\n if (!okResult) {\r\n throw new Error(message);\r\n }\r\n });\r\n }\r\n\r\n private _getChildElementToString(node) {\r\n let resultString = '';\r\n if (node.childElementCount > 0) {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n\r\n resultString += '<' + node.childNodes[i].nodeName;\r\n if (node.childNodes[i].attributes.length > 0) {\r\n for (let j = 0; j < node.childNodes[i].attributes.length; j++) {\r\n const attribute = node.childNodes[i].attributes[j];\r\n resultString += ' ' + attribute.name + '=' + '\"' + attribute.value + '\"';\r\n }\r\n }\r\n if (node.childNodes[i].childNodes.length > 0) {\r\n resultString += '>';\r\n }\r\n if (node.childNodes[i].childElementCount > 0) {\r\n resultString += this._getChildElementToString(node.childNodes[i]);\r\n } else {\r\n if (node.childNodes[i].childNodes.length > 0) {\r\n resultString += node.childNodes[i].childNodes[0].nodeValue;\r\n resultString += '';\r\n } else {\r\n resultString += '/>';\r\n }\r\n }\r\n }\r\n } else {\r\n resultString += '<' + node.nodeName;\r\n if (node.attributes.length > 0) {\r\n for (let k = 0; k < node.attributes.length; k++) {\r\n const attribute1 = node.attributes[k];\r\n resultString += ' ' + attribute1.name + '=' + '\"' + attribute1.value + '\"';\r\n }\r\n }\r\n if (node.childNodes[0].childNodes.length > 0) {\r\n resultString += '>';\r\n resultString += node.childNodes[0].nodeValue;\r\n resultString += '';\r\n } else {\r\n resultString += '/>';\r\n }\r\n }\r\n resultString += '';\r\n\r\n return resultString;\r\n }\r\n\r\n private _convertXmlToString(xmlDoc) {\r\n const tags = xmlDoc.getElementsByTagName('*');\r\n let xmlString = '';\r\n const tagNodeName = [];\r\n const parentNode = tags[0].parentNode;\r\n\r\n // parent node\r\n xmlString += '<' + parentNode.nodeName;\r\n tagNodeName.push(parentNode.nodeName);\r\n for (let m = 0; m < parentNode.attributes.length; m++) {\r\n const parentAttribute = parentNode.attributes[m];\r\n xmlString += ' ' + parentAttribute.name + '=' + '\"' + parentAttribute.value + '\"';\r\n }\r\n xmlString += '>';\r\n\r\n // main node\r\n xmlString += '<' + tags[0].nodeName;\r\n tagNodeName.push(tags[0].nodeName);\r\n for (let c = 0; c < tags[0].attributes.length; c++) {\r\n const mainAttribute = tags[0].attributes[c];\r\n xmlString += ' ' + mainAttribute.name + '=' + '\"' + mainAttribute.value + '\"';\r\n }\r\n xmlString += '>';\r\n\r\n const tag = tags[0]; // tags[0] has all children - not necessary to loop tags\r\n for (let i = 0; i < tag.childElementCount; i++) {\r\n xmlString += '<' + tag.childNodes[i].nodeName;\r\n if (tag.childNodes[i].attributes.length > 0) {\r\n for (let b = 0; b < tag.childNodes[i].attributes.length; b++) {\r\n const attribute = tag.childNodes[i].attributes[b];\r\n xmlString += ' ' + attribute.name + '=' + '\"' + attribute.value + '\"';\r\n }\r\n }\r\n xmlString += '>';\r\n xmlString += this._getChildElementToString(tag.childNodes[i]);\r\n }\r\n\r\n for (let k = tagNodeName.length - 1; k >= 0; k--) {\r\n xmlString += '';\r\n }\r\n return xmlString;\r\n }\r\n\r\n private _convertXmlToInsertStringV2(featureName, xmlDoc, featureNamespace) {\r\n const tags = xmlDoc.getElementsByTagName('*');\r\n let xmlString = '';\r\n const tagNodeName = [];\r\n const parentNode = tags[0].parentNode;\r\n const featureNamespaceColon = featureNamespace ? featureNamespace + ':' : '';\r\n\r\n // parent node\r\n xmlString += ' 0) {\r\n xmlString += ' xmlns:' + featureNamespace + '=\"' + tag.firstChild.namespaceURI + '\"';\r\n }\r\n xmlString += '>';\r\n for (let i = 0; i < tag.childElementCount; ++i) {\r\n for (let j = 0; j < tag.childNodes[i].childElementCount; ++j) {\r\n xmlString += '<' + featureNamespaceColon + tag.childNodes[i].childNodes[j].nodeName;\r\n if (tag.childNodes[i].childNodes[j].attributes.length > 0) {\r\n for (let b = 0; b < tag.childNodes[i].childNodes[j].attributes.length; b++) {\r\n const attribute = tag.childNodes[i].childNodes[j].attributes[b];\r\n xmlString += ' ' + attribute.name + '=' + '\"' + attribute.value + '\"';\r\n }\r\n }\r\n xmlString += '>';\r\n const skipLastNode = tag.childNodes[i].childNodes[j].childElementCount > 0;\r\n if (skipLastNode) {\r\n const nodenamespaceprefix = skipLastNode ? 'gml' : featureNamespace;\r\n xmlString += this._getChildElementToStringV2(nodenamespaceprefix, tag.childNodes[i].childNodes[j], skipLastNode);\r\n } else {\r\n xmlString += tag.childNodes[i].childNodes[j].innerHTML;\r\n }\r\n xmlString += '';\r\n }\r\n }\r\n xmlString += '';\r\n\r\n for (let k = tagNodeName.length - 1; k >= 0; k--) {\r\n xmlString += '';\r\n }\r\n return xmlString;\r\n }\r\n\r\n private _convertXmlToStringV2(xmlDoc) {\r\n const tags = xmlDoc.getElementsByTagName('*');\r\n let xmlString = '';\r\n const tagNodeName = [];\r\n const parentNode = tags[0].parentNode;\r\n\r\n // parent node\r\n xmlString += ' 0) {\r\n for (let b = 0; b < tag.childNodes[i].attributes.length; b++) {\r\n const attribute = tag.childNodes[i].attributes[b];\r\n xmlString += ' ' + attribute.name + '=' + '\"' + attribute.value + '\"';\r\n }\r\n }\r\n xmlString += '>';\r\n xmlString += this._getChildElementToStringV2('wfs', tag.childNodes[i]);\r\n }\r\n\r\n for (let k = tagNodeName.length - 1; k >= 0; k--) {\r\n xmlString += '';\r\n }\r\n return xmlString;\r\n }\r\n\r\n private _getChildElementToStringV2(xmlns, node, skipLastNode = false) {\r\n let resultString = '';\r\n if (node.childElementCount > 0) {\r\n for (let i = 0; i < node.childNodes.length; i++) {\r\n resultString += xmlns ? '<' + xmlns + ':' : '<';\r\n resultString += node.childNodes[i].nodeName;\r\n if (node.childNodes[i].attributes.length > 0) {\r\n for (let j = 0; j < node.childNodes[i].attributes.length; j++) {\r\n const attribute = node.childNodes[i].attributes[j];\r\n resultString += ' ' + attribute.name + '=' + '\"' + attribute.value + '\"';\r\n }\r\n }\r\n if (node.childNodes[i].childNodes.length > 0) {\r\n resultString += '>';\r\n }\r\n if (node.childNodes[i].childElementCount > 0) {\r\n resultString += this._getChildElementToStringV2(xmlns, node.childNodes[i]);\r\n } else {\r\n if (node.childNodes[i].childNodes.length > 0) {\r\n resultString += node.childNodes[i].childNodes[0].nodeValue;\r\n resultString += xmlns ? '';\r\n } else {\r\n resultString += '/>';\r\n }\r\n }\r\n }\r\n } else {\r\n resultString += '<' + node.nodeName;\r\n if (node.attributes.length > 0) {\r\n for (let k = 0; k < node.attributes.length; k++) {\r\n const attribute1 = node.attributes[k];\r\n resultString += ' ' + attribute1.name + '=' + '\"' + attribute1.value + '\"';\r\n }\r\n }\r\n if (node.childNodes[0].childNodes.length > 0) {\r\n resultString += '>';\r\n resultString += node.childNodes[0].nodeValue;\r\n resultString += '';\r\n } else {\r\n resultString += '/>';\r\n }\r\n }\r\n if (!skipLastNode) {\r\n resultString += xmlns ? '';\r\n }\r\n\r\n return resultString;\r\n }\r\n\r\n /**\r\n * Deletes an existing feature and handle response.\r\n * @param {ol.Feature} feature.\r\n * @return {boolean} delete result.\r\n * @throws {Error} error message.\r\n */\r\n _deleteFeature(feature) {\r\n const resultObject = {\r\n success: false,\r\n message: ''\r\n };\r\n if (this.source.format === undefined) {\r\n resultObject.message = 'Format not specified';\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionRemoveEnd, resultObject);\r\n return false;\r\n }\r\n\r\n const featureNode = this.source.format.writeTransaction(null, null, [feature], {\r\n featureNS: this.featureNS,\r\n featureType: this._getFeatureName(this.featureType)\r\n });\r\n\r\n let featureData = this._convertXmlToString(featureNode); // serializer_.serializeToString(featureNode);\r\n featureData = featureData.replace('xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\"', 'xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\" xmlns=\"http://www.opengis.net/wfs\"');\r\n featureData = featureData.replace('Filter', 'Filter xmlns=\"http://www.opengis.net/ogc\"');\r\n\r\n let message = 'Error deleting feature: ';\r\n let okResult = true;\r\n\r\n firstValueFrom(this.httpHelper.post(this.url, featureData, {responseType: 'document'}))\r\n .then(data => {\r\n const result = this._readResponse(data);\r\n if (result === undefined) {\r\n okResult = false;\r\n message += 'Response parse error.';\r\n } else if (typeof result === 'string') {\r\n okResult = false;\r\n message += result;\r\n } else if (result.transactionSummary === undefined) {\r\n okResult = false;\r\n } else if (result && result.transactionSummary.totalDeleted !== 1) {\r\n okResult = false;\r\n message += 'Feature not deleted.';\r\n }\r\n resultObject.success = okResult;\r\n resultObject.message = okResult ? 'Feature deleted' : message;\r\n\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionRemoveEnd, resultObject);\r\n })\r\n .catch(e => {\r\n let errorMsg = e ? (e.status + ' ' + e.statusText) : '';\r\n if (errorMsg === '200 parsererror') {\r\n errorMsg = 'Response parse error.';\r\n }\r\n okResult = false;\r\n message += errorMsg;\r\n resultObject.success = okResult;\r\n resultObject.message = message;\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionRemoveEnd, resultObject);\r\n })\r\n .finally(() => {\r\n if (!okResult) {\r\n throw new Error(message);\r\n }\r\n });\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n /**\r\n * Deletes an existing feature and handle response.\r\n * @param {ol.Feature} feature.\r\n * @return {boolean} delete result.\r\n * @throws {Error} error message.\r\n */\r\n deleteFeature(feature) {\r\n const resultObject = {\r\n success: false,\r\n message: ''\r\n };\r\n if (this.source.format === undefined) {\r\n resultObject.message = 'Format not specified';\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionRemoveEnd, resultObject);\r\n return false;\r\n }\r\n\r\n const featureNode = this.source.format.writeTransaction(null, null, [feature], {\r\n featureNS: this.featureNS,\r\n featureType: this._getFeatureName(this.featureType)\r\n });\r\n\r\n let featureData = this._convertXmlToStringV2(featureNode); // serializer_.serializeToString(featureNode);\r\n featureData = featureData.replace('xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\"', 'xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd\" xmlns=\"http://www.opengis.net/wfs\"');\r\n featureData = featureData.replace('Filter', 'Filter xmlns=\"http://www.opengis.net/ogc\"');\r\n featureData = featureData.replace('version=\"1.1.0\"', 'version=\"2.0.0\"');\r\n featureData = featureData.replace(/wfs:Filter/g, 'fes:Filter');\r\n featureData = featureData.replace('wfs:FeatureId fid=', 'fes:ResourceId rid=');\r\n\r\n let message = 'Error deleting feature: ';\r\n let okResult = true;\r\n\r\n firstValueFrom(this.httpHelper.post(this.url, featureData, {responseType: 'document'}))\r\n .then(data => {\r\n const result = this._readResponseWfs20(data);\r\n if (result === undefined) {\r\n okResult = false;\r\n message += 'Response parse error.';\r\n } else if (typeof result === 'string') {\r\n okResult = false;\r\n message += result;\r\n } else if (result.transactionSummary === undefined) {\r\n okResult = false;\r\n } else if (result && result.transactionSummary.totalDeleted !== 1) {\r\n okResult = false;\r\n message += 'Feature not deleted.';\r\n }\r\n resultObject.success = okResult;\r\n resultObject.message = okResult ? 'Feature deleted' : message;\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionRemoveEnd, resultObject);\r\n })\r\n .catch(e => {\r\n let errorMsg = e ? (e.status + ' ' + e.statusText) : '';\r\n if (errorMsg === '200 parsererror') {\r\n errorMsg = 'Response parse error.';\r\n }\r\n okResult = false;\r\n message += errorMsg;\r\n resultObject.success = okResult;\r\n resultObject.message = message;\r\n this.eventHandler.triggerEvent(EventsEventTypes.TransactionRemoveEnd, resultObject);\r\n })\r\n .finally(() => {\r\n if (!okResult) {\r\n throw new Error(message);\r\n }\r\n });\r\n return undefined; // Not all code paths return a value.\r\n }\r\n\r\n /**\r\n * Read the response and handle exceptions.\r\n * @param {Document} data.\r\n * @return {Object|string|undefined} result, error text or parse error (undefined).\r\n */\r\n private _readResponse(data) {\r\n let result;\r\n if (window.document && data instanceof Document && data.documentElement && data.documentElement.localName === 'ExceptionReport') {\r\n result = (data.getElementsByTagNameNS('http://www.opengis.net/ows', 'ExceptionText').item(0).textContent);\r\n } else {\r\n result = this.source.format.readTransactionResponse(data);\r\n }\r\n return result;\r\n }\r\n\r\n private _getXmlNodeValue(namespace, nodename, xmldata) {\r\n const thedata = xmldata.getElementsByTagNameNS(namespace, nodename).item(0);\r\n if (thedata) {\r\n return parseInt(thedata.textContent, 10);\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n private _readResponseWfs20(data) {\r\n let result;\r\n if (window.document && data instanceof Document && data.documentElement && data.documentElement.localName === 'ExceptionReport') {\r\n result = (data.getElementsByTagNameNS('http://www.opengis.net/ows', 'ExceptionText').item(0).textContent);\r\n } else if (window.document\r\n && data instanceof Document\r\n && data.documentElement\r\n && data.documentElement.localName === 'TransactionResponse') {\r\n result = {transactionSummary: {\r\n totalInserted: this._getXmlNodeValue(data.documentElement.namespaceURI, 'totalInserted', data),\r\n totalUpdated: this._getXmlNodeValue(data.documentElement.namespaceURI, 'totalUpdated', data),\r\n totalReplaced: this._getXmlNodeValue(data.documentElement.namespaceURI, 'totalReplaced', data),\r\n totalDeleted: this._getXmlNodeValue(data.documentElement.namespaceURI, 'totalDeleted', data)\r\n }};\r\n if (result.transactionSummary.totalInserted) {\r\n result.insertIds = [];\r\n const elements = data.getElementsByTagNameNS('http://www.opengis.net/fes/2.0', 'ResourceId');\r\n for (let i = 0; i < elements.length; ++i) {\r\n result.insertIds.push(elements.item(i).attributes.item(0).value);\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n /**\r\n * Get feature type.\r\n * @return {String} featureType.\r\n */\r\n getFeatureType() {\r\n return this.featureType;\r\n }\r\n\r\n /**\r\n * Get local id from gml id.\r\n * @param {String} gmlId.\r\n * @return {String} localId.\r\n */\r\n private _getLocalId(gmlId) {\r\n const startIndex = gmlId.indexOf('{');\r\n if (startIndex !== -1) {\r\n const localId = gmlId.substr(startIndex);\r\n return localId;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n /**\r\n * Get feature name from feature type (without namespace).\r\n * @param {String} featureType.\r\n * @return {String} featureName.\r\n */\r\n private _getFeatureName(featureType) {\r\n let startIndex = featureType.indexOf(':');\r\n if (startIndex !== -1) {\r\n startIndex++;\r\n const featureName = featureType.substr(startIndex);\r\n return featureName;\r\n } else {\r\n return featureType;\r\n }\r\n }\r\n\r\n /**\r\n * Get feature namespace from feature type (without name).\r\n * @param {String} featureType.\r\n * @return {String} featureNamespace.\r\n */\r\n private _getFeatureNamespace(featureType) {\r\n const startIndex = featureType.indexOf(':');\r\n if (startIndex !== -1) {\r\n const featureNamespace = featureType.substr(0, startIndex);\r\n return featureNamespace;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n setWfs20() {\r\n this.isWfs20 = true;\r\n }\r\n}\r\n","import TileWMS from 'ol/source/TileWMS';\r\nimport ImageWMS from 'ol/source/ImageWMS';\r\n\r\nexport class MapImplementationSourcesWms {\r\n url;\r\n urls;\r\n source;\r\n params;\r\n\r\n constructor(isySubLayer, parameters) {\r\n this.params = {\r\n ...parameters,\r\n LAYERS: isySubLayer.layers.length > 0\r\n ? isySubLayer.layers.map((x) => x.name).join(',')\r\n : isySubLayer.name,\r\n VERSION: '1.1.1',\r\n FORMAT: isySubLayer.format\r\n };\r\n\r\n if (Array.isArray(isySubLayer.url)) {\r\n this.urls = isySubLayer.url;\r\n } else {\r\n this.url = isySubLayer.url;\r\n }\r\n \r\n if (isySubLayer.tiled) {\r\n \r\n this.source = new TileWMS({\r\n params: this.params,\r\n url: this.url,\r\n urls: this.urls,\r\n crossOrigin: isySubLayer.crossOrigin, // ToDo: NiB fails using this setting\r\n });\r\n this.source.set('type', 'ol.source.TileWMS');\r\n } else {\r\n if (this.url === undefined) {\r\n this.url = this.urls[this.urls.length - 1];\r\n }\r\n this.source = new ImageWMS({\r\n params: this.params,\r\n ratio: 1,\r\n url: this.url,\r\n crossOrigin: isySubLayer.crossOrigin, // ToDo: NiB fails using this setting\r\n });\r\n this.source.set('type', 'ol.source.ImageWMS');\r\n }\r\n return this.source;\r\n }\r\n}","import { getTopLeft, getWidth } from 'ol/extent';\r\nimport { WMTS } from 'ol/source';\r\nimport WMTSTileGrid from 'ol/tilegrid/WMTS';\r\nimport { get as getProjection } from 'ol/proj';\r\n\r\nexport class MapImplementationSourcesWmts {\r\n\r\n source;\r\n isySubLayer;\r\n parameters;\r\n projection;\r\n projectionExtent;\r\n\r\n constructor(isySubLayer, parameters) {\r\n this.isySubLayer = isySubLayer;\r\n this.parameters = parameters;\r\n\r\n this.projection = getProjection(this.isySubLayer.coordinate_system);\r\n this.projection.setExtent(this.isySubLayer.extent);\r\n const numberOfZoomLevels = isySubLayer.numberOfZoomLevels || 18; // default value in case of zoomlevel not defined\r\n this.projectionExtent = this.isySubLayer.extent;\r\n const size = this.isySubLayer.coordinate_system !== 'EPSG:4326' ? getWidth(this.projectionExtent) / 256 : 4096;\r\n const resolutions = new Array(numberOfZoomLevels);\r\n const matrixIds = new Array(numberOfZoomLevels);\r\n const matrixSet = this.isySubLayer.matrixSet || this.isySubLayer.coordinate_system; // don't allow empty string\r\n const matrixPrefix = this.isySubLayer.matrixPrefix ?? this.isySubLayer.coordinate_system; // allow empty string\r\n\r\n for (let z = 0; z < numberOfZoomLevels; ++z) {\r\n resolutions[z] = size / Math.pow(2, z);\r\n matrixIds[z] = matrixPrefix + z;\r\n }\r\n\r\n this.source = new WMTS({\r\n url: this.createUrl(),\r\n urls: this.createUrls(),\r\n // params: this.parameters,\r\n layer: this.isySubLayer.name,\r\n format: this.isySubLayer.format,\r\n projection: this.projection,\r\n matrixSet: matrixSet,\r\n crossOrigin: isySubLayer.crossOrigin,\r\n tileGrid: new WMTSTileGrid({\r\n origin: getTopLeft(this.projectionExtent),\r\n resolutions: resolutions,\r\n matrixIds: matrixIds\r\n }),\r\n style: 'default',\r\n wrapX: true \r\n });\r\n\r\n this.source.set('type', 'ol.source.WMTS');\r\n\r\n return this.source;\r\n }\r\n\r\n createUrl() {\r\n if (!Array.isArray(this.isySubLayer.url)) {\r\n return this.isySubLayer.url;\r\n\r\n }\r\n }\r\n\r\n createUrls() {\r\n if (Array.isArray(this.isySubLayer.url)) {\r\n return this.isySubLayer.url;\r\n }\r\n }\r\n}\r\n","import { Fill, Stroke, Circle, Style } from 'ol/style';\r\n\r\nexport class MapImplementationStylesDefault {\r\n\r\n styles() {\r\n const fill = new Fill({\r\n color: 'rgba(255,0,0,0.8)'\r\n });\r\n const stroke = new Stroke({\r\n color: '#3399CC',\r\n width: 2.25\r\n });\r\n const styles = [\r\n new Style({\r\n image: new Circle({\r\n fill: fill,\r\n stroke: stroke,\r\n radius: 8\r\n }),\r\n fill: fill,\r\n stroke: stroke\r\n })\r\n ];\r\n return styles;\r\n }\r\n\r\n}\r\n","import { Circle, Fill, Icon, RegularShape, Stroke, Style, Text } from 'ol/style';\r\n\r\nexport class MapImplementationStylesJson {\r\n\r\n _zIndex = 0;\r\n style;\r\n idValue: '_id';\r\n\r\n constructor(style) {\r\n if (style) {\r\n this.style = style;\r\n } else {\r\n this.style = {\r\n stroke: {\r\n color: 'rgba(255,0,0,0.9)',\r\n width: 2\r\n },\r\n fill: {\r\n color: 'rgba(255,255,0,0.4)'\r\n }\r\n };\r\n }\r\n }\r\n\r\n _createStyle(feature, scale, jsonstyle, hover) {\r\n let jsonobject = (typeof jsonstyle === 'object') ? jsonstyle : JSON.parse(jsonstyle);\r\n const currentstyle = [];\r\n this._zIndex++;\r\n if (hover && Object.prototype.hasOwnProperty.call(jsonobject, 'hoverstyle') && !!jsonobject.hoverstyle) {\r\n jsonobject = jsonobject.hoverstyle;\r\n } else {\r\n if (hover && Object.prototype.hasOwnProperty.call(jsonobject, 'hover')) {\r\n hover = hover && jsonobject.hover;\r\n if (!hover) {\r\n return currentstyle;\r\n }\r\n }\r\n if (typeof jsonobject.filter === 'object' && jsonobject.filter) {\r\n return this._parseFilter(feature, scale, jsonobject, hover);\r\n }\r\n if (Object.prototype.hasOwnProperty.call(jsonobject, 'style')) {\r\n jsonobject = jsonobject.style;\r\n }\r\n }\r\n if (Array.isArray(jsonobject)) {\r\n let correctStyle;\r\n const textStyle = jsonobject.find(s => !!s.text);\r\n if ((feature.getGeometry().getType() === \"Point\" || feature.getGeometry().getType() === \"MultiPoint\") && !!jsonobject.find(s => s.geometryType === \"Point\")) {\r\n correctStyle = jsonobject.find(s => s.geometryType === \"Point\");\r\n currentstyle.push(new Style({\r\n image: this._createImageStyle(correctStyle, hover),\r\n text: this._createTextStyle(feature, textStyle, hover)\r\n }))\r\n } else if ((feature.getGeometry().getType() === \"LineString\" || feature.getGeometry().getType() === \"MultiLineString\") && !!jsonobject.find(s => s.geometryType === \"Line\")) {\r\n correctStyle = jsonobject.find(s => s.geometryType === \"Line\");\r\n currentstyle.push(new Style({\r\n stroke: this._createStrokeStyle(correctStyle, hover),\r\n text: this._createTextStyle(feature, textStyle, hover)\r\n }))\r\n } else if ((feature.getGeometry().getType() === \"Polygon\" || feature.getGeometry().getType() === \"MultiPolygon\") && !!jsonobject.find(s => s.geometryType === \"Polygon\")) {\r\n correctStyle = jsonobject.find(s => s.geometryType === \"Polygon\");\r\n currentstyle.push(new Style({\r\n fill: this._createFillStyle(correctStyle),\r\n stroke: this._createStrokeStyle(correctStyle, hover),\r\n text: this._createTextStyle(feature, textStyle, hover)\r\n }));\r\n } else {\r\n for (const jsonElement of jsonobject) {\r\n currentstyle.push(new Style({\r\n fill: this._createFillStyle(jsonElement),\r\n image: this._createImageStyle(jsonElement, hover),\r\n stroke: this._createStrokeStyle(jsonElement, hover),\r\n text: this._createTextStyle(feature, jsonElement, hover),\r\n zIndex: jsonElement.zIndex ? jsonElement.zIndex : this._zIndex\r\n }));\r\n }\r\n }\r\n } else {\r\n currentstyle.push(new Style({\r\n fill: this._createFillStyle(jsonobject),\r\n image: this._createImageStyle(jsonobject, hover),\r\n stroke: this._createStrokeStyle(jsonobject, hover),\r\n text: this._createTextStyle(feature, jsonobject, hover),\r\n zIndex: jsonobject && jsonobject.zIndex ? jsonobject.zIndex : this._zIndex\r\n }));\r\n }\r\n return currentstyle;\r\n }\r\n\r\n _createFillStyle(jsonstyle) {\r\n if (jsonstyle && (jsonstyle.fill || jsonstyle.fillPattern)) {\r\n if (jsonstyle.fillPattern) {\r\n if (jsonstyle.fillPattern.solidLine === true) {\r\n const pattern = this._drawSolidPattern(jsonstyle.fillPattern);\r\n jsonstyle.fill.color = pattern;\r\n } else if (jsonstyle.fillPattern.solidLine === false) {\r\n const pattern = this._drawLinePattern(jsonstyle.fillPattern);\r\n jsonstyle.fill.color = pattern;\r\n }\r\n }\r\n return new Fill(jsonstyle.fill);\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n _drawLinePattern(patternStyle) {\r\n const patternCanvas = document.createElement('canvas');\r\n const patternCtx = patternCanvas.getContext('2d');\r\n const distance = patternStyle.strokeDistance ? patternStyle.strokeDistance : 10;\r\n const width = patternStyle.strokeWidth ? patternStyle.strokeWidth : 1;\r\n let size = distance + width;\r\n if (patternStyle.direction === 'DOWNRIGHT' || patternStyle.direction === 'UPRIGHT' || patternStyle.direction === 'CROSS') {\r\n size = 2 * distance + width;\r\n }\r\n patternCanvas.width = size;\r\n patternCanvas.height = size;\r\n // Set background color\r\n patternCtx.fillStyle = patternStyle.colors[0];\r\n patternCtx.fillRect(0, 0, patternCanvas.width, patternCanvas.height);\r\n if (patternStyle.direction === 'VERTICAL') {\r\n patternCtx.moveTo(size / 2, 0);\r\n patternCtx.lineTo(size / 2, size);\r\n } else if (patternStyle.direction === 'HORIZONTAL') {\r\n patternCtx.moveTo(0, size / 2);\r\n patternCtx.lineTo(size, size / 2);\r\n } else if (patternStyle.direction === 'GRID') {\r\n patternCtx.moveTo(0, size / 2);\r\n patternCtx.lineTo(size, size / 2);\r\n patternCtx.moveTo(size / 2, 0);\r\n patternCtx.lineTo(size / 2, size);\r\n } else if (patternStyle.direction === 'DOWNRIGHT') {\r\n patternCtx.moveTo(0, 0);\r\n patternCtx.lineTo(size, size);\r\n patternCtx.moveTo(-size, 0);\r\n patternCtx.lineTo(size, 2 * size);\r\n patternCtx.moveTo(0, -size);\r\n patternCtx.lineTo(2 * size, size);\r\n } else if (patternStyle.direction === 'UPRIGHT') {\r\n patternCtx.moveTo(0, size);\r\n patternCtx.lineTo(size, 0);\r\n patternCtx.moveTo(-size, size);\r\n patternCtx.lineTo(size, -size);\r\n patternCtx.moveTo(0, 2 * size);\r\n patternCtx.lineTo(2 * size, 0);\r\n } else if (patternStyle.direction === 'CROSS') {\r\n patternCtx.moveTo(0, size);\r\n patternCtx.lineTo(size, 0);\r\n patternCtx.moveTo(0, 0);\r\n patternCtx.lineTo(size, size);\r\n }\r\n patternCtx.strokeStyle = patternStyle.colors[1];\r\n patternCtx.lineWidth = width;\r\n patternCtx.stroke();\r\n\r\n // Create pattern\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n const finalPattern = ctx.createPattern(patternCanvas, 'repeat');\r\n\r\n return finalPattern;\r\n }\r\n\r\n _drawSolidPattern(patternStyle) {\r\n const patternCanvas = document.createElement('canvas');\r\n const patternCtx = patternCanvas.getContext('2d');\r\n const thickness = 13;\r\n const offset = 13;\r\n const numColors = patternStyle.colors.length;\r\n const size = numColors * thickness;\r\n patternCanvas.width = size;\r\n patternCanvas.height = size;\r\n for (let i = 0; i < numColors * 3; i++) {\r\n patternCtx.beginPath();\r\n patternCtx.lineWidth = thickness / 1.41;\r\n patternCtx.strokeStyle = patternStyle.colors[i % numColors];\r\n const x0 = i * thickness + thickness / 2 - size - offset;\r\n const y0 = -offset;\r\n const x1 = i * thickness + thickness / 2 + offset;\r\n const y1 = size + offset;\r\n if (patternStyle.direction === 'DOWNRIGHT') {\r\n patternCtx.moveTo(x0, y0);\r\n patternCtx.lineTo(x1, y1);\r\n patternCtx.stroke();\r\n } else if (patternStyle.direction === 'UPRIGHT') {\r\n patternCtx.moveTo(x0, y1);\r\n patternCtx.lineTo(x1, y0);\r\n patternCtx.stroke();\r\n } else if (patternStyle.direction === 'VERTICAL') {\r\n patternCtx.lineWidth = thickness;\r\n patternCtx.moveTo(i * thickness, 0);\r\n patternCtx.lineTo(i * thickness, size);\r\n patternCtx.stroke();\r\n } else if (patternStyle.direction === 'HORIZONTAL') {\r\n patternCtx.lineWidth = thickness;\r\n patternCtx.moveTo(0, i * thickness);\r\n patternCtx.lineTo(size, i * thickness);\r\n patternCtx.stroke();\r\n }\r\n }\r\n // Create pattern\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n const finalPattern = ctx.createPattern(patternCanvas, 'repeat');\r\n return finalPattern;\r\n }\r\n\r\n _createIconStyle(jsonstyle, hover) {\r\n if (jsonstyle) {\r\n if (jsonstyle.icon) {\r\n return new Icon({\r\n ...jsonstyle.icon,\r\n crossOrigin: \"anonymous\",\r\n });\r\n } else if (jsonstyle.image) {\r\n const icon = {\r\n ...jsonstyle.image,\r\n crossOrigin: \"anonymous\",\r\n scale: hover ? jsonstyle.image.scale * 1.2 : jsonstyle.image.scale\r\n };\r\n\r\n return new Icon(icon);\r\n }\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n _createImageStyle(jsonstyle, hover) {\r\n if (jsonstyle) {\r\n if (jsonstyle.icon) {\r\n return this._createIconStyle(jsonstyle, hover);\r\n }\r\n if (jsonstyle.image) {\r\n if (jsonstyle.icon || jsonstyle.image.src) {\r\n return this._createIconStyle(jsonstyle, hover);\r\n }\r\n return new Circle({\r\n radius: hover ? jsonstyle.image.radius * 1.2 : jsonstyle.image.radius,\r\n fill: this._createFillStyle(jsonstyle.image),\r\n stroke: this._createStrokeStyle(jsonstyle.image, undefined),\r\n });\r\n } else if (jsonstyle.regularshape || jsonstyle.regularShape) {\r\n const regularShape = jsonstyle.regularshape ? jsonstyle.regularshape : jsonstyle.regularShape;\r\n return new RegularShape({\r\n fill: this._createFillStyle(regularShape),\r\n stroke: this._createStrokeStyle(regularShape, undefined),\r\n radius: hover ? regularShape.radius * 1.2 : regularShape.radius,\r\n radius2: hover ? regularShape.radius2 * 1.2 : regularShape.radius2,\r\n points: regularShape.points,\r\n rotation: regularShape.rotation, // Rotation should be in radians\r\n angle: regularShape.angle\r\n });\r\n }\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n _createStrokeStyle(jsonstyle, hover) {\r\n if (jsonstyle && jsonstyle.stroke) {\r\n return new Stroke({\r\n color: jsonstyle.stroke.color,\r\n width: hover ? jsonstyle.stroke.width * 2 : jsonstyle.stroke.width,\r\n lineDash: jsonstyle.stroke.lineDash,\r\n lineCap: jsonstyle.stroke.lineCap ? jsonstyle.stroke.lineCap : undefined\r\n });\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n _createTextStyle(feature, jsonstyle, hover) {\r\n if (jsonstyle && jsonstyle.text !== undefined && jsonstyle.text !== null) {\r\n if (hover) {\r\n if (jsonstyle.text.scale) {\r\n jsonstyle.text.scale *= 1.2;\r\n }\r\n if (jsonstyle.text.rotation) {\r\n jsonstyle.text.rotation *= -1;\r\n }\r\n }\r\n return new Text({\r\n font: jsonstyle.text.font ? jsonstyle.text.font : '12px sans-serif',\r\n offsetX: jsonstyle.text.offsetX ? jsonstyle.text.offsetX : 0,\r\n offsetY: jsonstyle.text.offsetY ? jsonstyle.text.offsetY : 0,\r\n scale: jsonstyle.text.scale,\r\n rotation: jsonstyle.text.rotation ? jsonstyle.text.rotation : 0,\r\n rotateWithView: jsonstyle.text.rotateWithView ? jsonstyle.text.rotateWithView : false,\r\n placement: jsonstyle.text.placement,\r\n overflow: jsonstyle.text.overflow ? jsonstyle.text.overflow : false,\r\n text: this._parseTextFilter(feature, jsonstyle.text.text),\r\n textAlign: jsonstyle.text.textAlign,\r\n textBaseline: jsonstyle.text.textBaseline,\r\n fill: this._createFillStyle(jsonstyle.text),\r\n stroke: this._createStrokeStyle(jsonstyle.text, hover),\r\n padding: jsonstyle.text.padding\r\n });\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n _parseTextFilter(feature, text) {\r\n if (feature && text) {\r\n let pos0 = text.indexOf('{');\r\n if (pos0 < 0) {\r\n return text;\r\n }\r\n if (text === '{' + this.idValue + '}') {\r\n return feature.getId();\r\n }\r\n let label = '';\r\n while (pos0 >= 0) {\r\n if (pos0 > 0) {\r\n label += text.substr(0, pos0);\r\n text = text.slice(pos0);\r\n pos0 = text.indexOf('{');\r\n }\r\n const pos1 = text.indexOf('}');\r\n const fieldname = text.substr(pos0 + 1, pos1 - pos0 - 1);\r\n let fieldvalue = feature.get(fieldname);\r\n if (fieldvalue) {\r\n label += fieldvalue;\r\n } else if (fieldname === this.idValue) {\r\n fieldvalue = feature.getId();\r\n if (fieldvalue) {\r\n label += fieldvalue;\r\n }\r\n }\r\n text = text.slice(pos1 + 1);\r\n pos0 = text.indexOf('{');\r\n }\r\n return label + text;\r\n }\r\n return text;\r\n }\r\n\r\n private isStyleFromEditor() {\r\n return (this.style && this.style.style) ? !!(\r\n this.style.style.find(s => s.geometryType === 'Point') ||\r\n this.style.style.find(s => s.geometryType === 'Line') ||\r\n this.style.style.find(s => s.geometryType === 'Polygon')) : false; \r\n }\r\n\r\n private isFilterFromEditor() {\r\n return (this.style && this.style.filter && this.style.filter[0]) ? !!(\r\n this.style.filter[0].style.find(s => s.geometryType === 'Point') ||\r\n this.style.filter[0].style.find(s => s.geometryType === 'Line') ||\r\n this.style.filter[0].style.find(s => s.geometryType === 'Polygon')) : false;\r\n }\r\n\r\n private makeSymbolizer(geometryType, styleDef) {\r\n const symbolizer = {\r\n fill: false,\r\n graphic: false,\r\n stroke: false,\r\n Line: undefined,\r\n Point: undefined,\r\n Polygon: undefined,\r\n };\r\n const strokeColor = styleDef.stroke?.color ? styleDef.stroke.color : '#000000';\r\n const strokeWidth = styleDef.stroke?.width ? styleDef.stroke.width : '2';\r\n\r\n switch (geometryType) {\r\n case 'line':\r\n symbolizer.Line = {\r\n fill: false,\r\n fillColor: '#000000',\r\n fillOpacity: '1',\r\n geometry: {property: 'Geometri'},\r\n stroke: styleDef.stroke ? true : false,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n strokeDashstyle: null,\r\n zIndex: undefined\r\n };\r\n break;\r\n case 'polygon':\r\n symbolizer.Polygon = {\r\n fill: true,\r\n fillColor: styleDef.fill?.color ? styleDef.fill.color : '#000000',\r\n fillOpacity: '0.5',\r\n geometry: {property: 'Geometri'},\r\n stroke: styleDef.stroke ? true : false,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n zIndex: undefined\r\n };\r\n break;\r\n case 'point':\r\n symbolizer.Point = {\r\n graphicName: styleDef.image?.graphicName ? styleDef.image.graphicName : 'Point',\r\n fill: false,\r\n fillColor: '#FF3300',\r\n fillOpacity: '0.5',\r\n geometry: {property: 'Geometri'},\r\n stroke: false,\r\n strokeColor: '#000000',\r\n strokeWidth: '2',\r\n strokeDashstyle: null,\r\n zIndex: undefined\r\n };\r\n break;\r\n }\r\n return symbolizer;\r\n }\r\n\r\n private makeUserStyle(layer, styleDef, filter, symbolizer) {\r\n const minScaleDenom = () => {\r\n if (filter.scale) {\r\n return filter.scale.min;\r\n }\r\n if (this.style.filter.scale) {\r\n return this.style.filter.scale.min;\r\n }\r\n return 1;\r\n }\r\n const maxScaleDenom = () => {\r\n if (filter.scale) {\r\n return filter.scale.max;\r\n }\r\n if (this.style.filter.scale) {\r\n return this.style.filter.scale.max;\r\n }\r\n return 10000;\r\n }\r\n const userStyle = {\r\n isDefault: true,\r\n layerName: layer.get('typename'),\r\n style: new Style({\r\n fill: styleDef.fill ? new Fill({color: styleDef.fill.color}) : new Fill({color: 'pink'}),\r\n stroke: styleDef.stroke ? new Stroke({\r\n color: styleDef.stroke.color,\r\n lineCap: styleDef.stroke.lineCap || 'round',\r\n lineDash: styleDef.stroke.lineDash || null,\r\n width: styleDef.stroke.width,\r\n }) : new Stroke({\r\n color: 'pink',\r\n width: 1,\r\n })\r\n }),\r\n rule: {\r\n minScaleDenominator: minScaleDenom(),\r\n maxScaleDenominator: maxScaleDenom(),\r\n name: filter.name,\r\n filters: [],\r\n symbolizer: symbolizer\r\n }\r\n };\r\n return userStyle;\r\n }\r\n\r\n private getGeometryType(styleDef) {\r\n let geometryType = 'line';\r\n if (styleDef.fill) {\r\n geometryType = 'polygon';\r\n } else if (styleDef.image || styleDef.icon || styleDef.text) {\r\n geometryType = 'point';\r\n }\r\n return geometryType;\r\n }\r\n\r\n getStyleForLegend(layer) {\r\n const userStyles = [];\r\n\r\n if (this.isStyleFromEditor() || this.isFilterFromEditor()) {\r\n // Style from style editor || Filter from filter editor\r\n return this.style;\r\n } else if (this.style && this.style.filter) {\r\n this.style.filter.forEach(filter => {\r\n const styleDef = filter.style && filter.style[0] ? filter.style[0] : filter.style;\r\n const geometryType = this.getGeometryType(styleDef);\r\n const symbolizer = this.makeSymbolizer(geometryType, styleDef);\r\n const userStyle = this.makeUserStyle(layer, styleDef, filter, symbolizer);\r\n userStyles.push(userStyle);\r\n });\r\n }\r\n return userStyles;\r\n }\r\n\r\n getStyle(feature, scale: number, featureStyle?: any) {\r\n if (feature) {\r\n const style = feature.get('style');\r\n\r\n if (style) {\r\n feature.setStyle(this._createStyle(feature, scale, style, undefined));\r\n return;\r\n }\r\n return this._createStyle(feature, scale, featureStyle ? featureStyle : this.style, undefined);\r\n } else {\r\n return this.style;\r\n }\r\n }\r\n\r\n getHoverStyle(feature, scale) {\r\n if (feature) {\r\n if (feature.get('style')) {\r\n return this._createStyle(feature, scale, feature.get('style'), true);\r\n } else {\r\n return this._createStyle(feature, scale, this.style, true);\r\n }\r\n \r\n } else {\r\n return this._createStyle(undefined, scale, this.style, true);\r\n }\r\n }\r\n\r\n getScale() {\r\n return this.style.scale;\r\n }\r\n\r\n private _parseFilter(feature, scale, jsonstyle, hover) {\r\n if (!jsonstyle) {\r\n return undefined; // Not all code paths return a value\r\n }\r\n const filterstyles = [];\r\n let hiddenByScale = false;\r\n if (jsonstyle && jsonstyle.scale && (scale < jsonstyle.scale.min || scale > jsonstyle.scale.max)) {\r\n return filterstyles;\r\n }\r\n for (const filter of jsonstyle.filter) {\r\n if (filter.scale && (scale < filter.scale.min || scale > filter.scale.max)) {\r\n hiddenByScale = true;\r\n continue;\r\n }\r\n\r\n if (filter.and) {\r\n this._parseAndFilter(filterstyles, feature, scale, filter, filter, hover);\r\n } else if (filter.or) {\r\n this._parseOrFilter(filterstyles, feature, scale, filter, filter, hover);\r\n } else if (filter.equalTo) {\r\n if (this._parseEqualTo(feature, filter)) {\r\n this._parseFilterStyle(filterstyles, feature, filter, hover);\r\n }\r\n } else if (filter.notEqualTo) {\r\n if (this._parseNotEqualTo(feature, filter)) {\r\n this._parseFilterStyle(filterstyles, feature, filter, hover);\r\n }\r\n } else if (filter.greaterThan) {\r\n if (this._parseGreaterThan(feature, filter)) {\r\n this._parseFilterStyle(filterstyles, feature, filter, hover);\r\n }\r\n } else if (filter.lessThan) {\r\n if (this._parseLessThan(feature, filter)) {\r\n this._parseFilterStyle(filterstyles, feature, filter, hover);\r\n }\r\n } else if (filter.contains) {\r\n if (this._parseContains(feature, filter)) {\r\n this._parseFilterStyle(filterstyles, feature, filter, hover);\r\n }\r\n } else if (filter.notContains) {\r\n if (this._parseNotContains(feature, filter)) {\r\n this._parseFilterStyle(filterstyles, feature, filter, hover);\r\n }\r\n } else if (filter.inArray) {\r\n if (this._parseInArray(feature, filter)) {\r\n this._parseFilterStyle(filterstyles, feature, filter, hover);\r\n }\r\n } else if (filter.notInArray) {\r\n if (this._parseNotInArray(feature, filter)) {\r\n this._parseFilterStyle(filterstyles, feature, filter, hover);\r\n }\r\n }\r\n }\r\n if (!hiddenByScale && filterstyles.length === 0 && jsonstyle.style) {\r\n this._parseFilterStyle(filterstyles, feature, jsonstyle, hover);\r\n }\r\n if (filterstyles.length === 0) {\r\n this.setHidden(feature, true);\r\n } else {\r\n this.setHidden(feature, false);\r\n }\r\n\r\n if (feature.get('clusterCount') !== undefined) {\r\n filterstyles[0] = this.clusterFunction(feature, filterstyles[0]);\r\n }\r\n\r\n return filterstyles;\r\n }\r\n private clusterFunction(feature, filterstyle) {\r\n const clusterCount = feature.get('clusterCount');\r\n // minR = 10 stand for clusterCount = 1 , maxR = 50 stand for clusterCount = 8000\r\n const radius = Math.min((((50 - 10) / (8000 - 1)) * (clusterCount - 1) + 10), 50);\r\n filterstyle.getImage().setRadius(radius);\r\n filterstyle.text_ = new Text({\r\n text: clusterCount.toString(),\r\n fill: new Fill({\r\n color: 'rgba(251, 251, 251, 1)'\r\n }),\r\n stroke: new Stroke({\r\n color: 'rgba(0, 0, 0, 0.6)',\r\n width: 3,\r\n })\r\n });\r\n return filterstyle;\r\n }\r\n private setHidden(feature, hidden) {\r\n if (hidden && feature.set) {\r\n feature.set('isHidden', hidden);\r\n } else {\r\n feature.unset('isHidden');\r\n }\r\n }\r\n\r\n private _parseAndFilter(filterstyles, feature, scale, filter, jsonstyle, hover) {\r\n let andValue = true;\r\n for (const and of filter.and) {\r\n if (andValue && and.equalTo) {\r\n andValue = andValue && this._parseEqualTo(feature, and);\r\n }\r\n if (andValue && and.notEqualTo) {\r\n andValue = andValue && this._parseNotEqualTo(feature, and);\r\n }\r\n if (and.greaterThan) {\r\n andValue = andValue && this._parseGreaterThan(feature, and);\r\n }\r\n if (and.lessThan) {\r\n andValue = andValue && this._parseLessThan(feature, and);\r\n }\r\n if (and.contains) {\r\n andValue = andValue && this._parseContains(feature, and);\r\n }\r\n if (and.notContains) {\r\n andValue = andValue && this._parseNotContains(feature, and);\r\n }\r\n if (and.inArray) {\r\n andValue = andValue && this._parseInArray(feature, and);\r\n }\r\n if (and.notInArray) {\r\n andValue = andValue && this._parseNotInArray(feature, and);\r\n }\r\n if (andValue && and.and) {\r\n andValue = andValue && this._parseAndFilter(filterstyles, feature, scale, and, jsonstyle, hover);\r\n }\r\n if (andValue && and.or) {\r\n andValue = andValue && this._parseOrFilter(filterstyles, feature, scale, and, jsonstyle, hover);\r\n }\r\n if (!andValue) {\r\n break;\r\n }\r\n }\r\n if (andValue) {\r\n this._parseFilterStyle(filterstyles, feature, jsonstyle, hover);\r\n }\r\n return andValue;\r\n }\r\n\r\n private _parseOrFilter(filterstyles, feature, scale, filter, jsonstyle, hover) {\r\n let orValue = false;\r\n for (const or of filter.or) {\r\n if (or.equalTo) {\r\n orValue = orValue || this._parseEqualTo(feature, or);\r\n }\r\n if (or.notEqualTo) {\r\n orValue = orValue || this._parseNotEqualTo(feature, or);\r\n }\r\n if (or.greaterThan) {\r\n orValue = orValue || this._parseGreaterThan(feature, or);\r\n }\r\n if (or.lessThan) {\r\n orValue = orValue || this._parseLessThan(feature, or);\r\n }\r\n if (or.contains) {\r\n orValue = orValue || this._parseContains(feature, or);\r\n }\r\n if (or.notContains) {\r\n orValue = orValue || this._parseNotContains(feature, or);\r\n }\r\n if (or.inArray) {\r\n orValue = orValue || this._parseInArray(feature, or);\r\n }\r\n if (or.notInArray) {\r\n orValue = orValue || this._parseNotInArray(feature, or);\r\n }\r\n if (or.and) {\r\n orValue = orValue || this._parseAndFilter(filterstyles, feature, scale, or, jsonstyle, hover);\r\n }\r\n if (or.or) {\r\n orValue = orValue || this._parseOrFilter(filterstyles, feature, scale, or, jsonstyle, hover);\r\n }\r\n if (orValue) {\r\n break;\r\n }\r\n }\r\n if (orValue) {\r\n this._parseFilterStyle(filterstyles, feature, jsonstyle, hover);\r\n }\r\n return orValue;\r\n }\r\n\r\n private _parseFilterStyle(filterstyles, feature, filter, hover) {\r\n if (Array.isArray(filter.style)) {\r\n let correctStyle;\r\n const textStyle = filter.style.find(s => !!s.text);\r\n if ((feature.getGeometry().getType() === \"Point\" || feature.getGeometry().getType() === \"MultiPoint\") && !!filter.style.find(s => s.geometryType === \"Point\")) {\r\n correctStyle = filter.style.find(s => s.geometryType === \"Point\");\r\n filterstyles.push(new Style({\r\n image: this._createImageStyle(correctStyle, hover),\r\n text: this._createTextStyle(feature, textStyle, hover)\r\n }))\r\n } else if ((feature.getGeometry().getType() === \"LineString\" || feature.getGeometry().getType() === \"MultiLineString\") && !!filter.style.find(s => s.geometryType === \"Line\")) {\r\n correctStyle = filter.style.find(s => s.geometryType === \"Line\");\r\n filterstyles.push(new Style({\r\n stroke: this._createStrokeStyle(correctStyle, hover),\r\n text: this._createTextStyle(feature, textStyle, hover)\r\n }))\r\n } else if ((feature.getGeometry().getType() === \"Polygon\" || feature.getGeometry().getType() === \"MultiPolygon\") && !!filter.style.find(s => s.geometryType === \"Polygon\")) {\r\n correctStyle = filter.style.find(s => s.geometryType === \"Polygon\");\r\n filterstyles.push(new Style({\r\n fill: this._createFillStyle(correctStyle),\r\n stroke: this._createStrokeStyle(correctStyle, hover),\r\n text: this._createTextStyle(feature, textStyle, hover)\r\n }));\r\n } else {\r\n for (const style of filter.style) {\r\n filterstyles.push(new Style({\r\n fill: this._createFillStyle(style),\r\n // icon: this._createIconStyle(style),\r\n image: this._createImageStyle(style, hover),\r\n stroke: this._createStrokeStyle(style, hover),\r\n text: this._createTextStyle(feature, style, hover),\r\n zIndex: this._zIndex\r\n }));\r\n }\r\n }\r\n } else {\r\n filterstyles.push(new Style({\r\n fill: this._createFillStyle(filter.style),\r\n // icon: this._createIconStyle(filter.style),\r\n image: this._createImageStyle(filter.style, hover),\r\n stroke: this._createStrokeStyle(filter.style, hover),\r\n text: this._createTextStyle(feature, filter.style, hover),\r\n zIndex: this._zIndex\r\n }));\r\n }\r\n }\r\n\r\n // FUNCTIONS FOR PARSING FILTER OPERATORS\r\n private _parseEqualTo(feature, filter) {\r\n const prop = feature.get(filter.equalTo.name);\r\n const value = filter.equalTo.value;\r\n switch (typeof(prop)) {\r\n case 'string':\r\n return prop.toLowerCase() === value.toLowerCase();\r\n case 'number': {\r\n const numValue = parseInt(value, 10);\r\n return prop === numValue;\r\n }\r\n case 'object':\r\n return this._checkObjectContainsValue(prop, value);\r\n case 'undefined':\r\n // If value is null (value should not be null) or empty string and prop is undefined, return true\r\n if (value === null || value === '') {\r\n return true;\r\n }\r\n return false;\r\n }\r\n return prop === value;\r\n }\r\n\r\n private _parseNotEqualTo(feature, filter) {\r\n const prop = feature.get(filter.notEqualTo.name);\r\n const value = filter.notEqualTo.value;\r\n switch (typeof prop) {\r\n case 'string':\r\n return prop.toLowerCase() !== value.toLowerCase();\r\n case 'number': {\r\n const numValue = parseInt(value, 10);\r\n return prop !== numValue;\r\n }\r\n case 'object':\r\n return !this._checkObjectContainsValue(prop, value);\r\n case 'undefined':\r\n // If value is null or empty string and prop is undefined, return false\r\n if (value === null || value === '') {\r\n return false;\r\n }\r\n return true;\r\n }\r\n return prop !== value;\r\n }\r\n\r\n private _checkObjectContainsValue(obj, value) {\r\n // Helper function for filter operators' object and value comparison\r\n if (obj === null) {\r\n return !value;\r\n }\r\n const keys = Object.keys(obj);\r\n for (let i = 0; i < keys.length; i++) {\r\n const k = Array.isArray(obj) ? i : keys[i];\r\n let found = false;\r\n if (obj[k] && typeof obj[k] === 'string') {\r\n found = obj[k].toLowerCase() === value.toLowerCase();\r\n } else if (obj[k] && typeof obj[k] === 'number') {\r\n found = obj[k] === parseInt(value, 10);\r\n } else if (obj[k] && typeof obj[k] === 'object') {\r\n found = this._checkObjectContainsValue(obj[k], value);\r\n }\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n private _parseGreaterThan(feature, filter) {\r\n const prop = feature.get(filter.greaterThan.name);\r\n const value = parseInt(filter.greaterThan.value, 10);\r\n // If prop is NaN, this will return false\r\n return parseInt(prop, 10) > value;\r\n }\r\n\r\n private _parseLessThan(feature, filter) {\r\n const prop = feature.get(filter.lessThan.name);\r\n const value = parseInt(filter.lessThan.value, 10);\r\n // If prop is NaN, this will return false\r\n return parseInt(prop, 10) < value;\r\n }\r\n\r\n private _parseContains(feature, filter) {\r\n const prop = feature.get(filter.contains.name);\r\n const value = filter.contains.value;\r\n switch (typeof(prop)) {\r\n case 'string':\r\n return prop.toLowerCase().includes(value.toLowerCase());\r\n case 'number':\r\n return prop.toString().includes(value);\r\n case 'object':\r\n return this._checkObjectContainsValue(prop, value);\r\n }\r\n return false;\r\n }\r\n\r\n private _parseNotContains(feature, filter) {\r\n const prop = feature.get(filter.notContains.name);\r\n const value = filter.notContains.value;\r\n switch (typeof(prop)) {\r\n case 'string':\r\n return !prop.toLowerCase().includes(value.toLowerCase());\r\n case 'number':\r\n return !prop.toString().includes(value);\r\n case 'object':\r\n return !this._checkObjectContainsValue(prop, value);\r\n }\r\n return false;\r\n }\r\n\r\n private _parseInArray(feature, filter) {\r\n // Loop through all properties in filter-value and _parseEqualTo on each value.\r\n const prop = feature.get(filter.inArray.name);\r\n const values = filter.inArray.value;\r\n let found = false;\r\n for (const value of values) {\r\n switch (typeof(prop)) {\r\n case 'string':\r\n found = found || prop.toLowerCase() === value.toLowerCase();\r\n break;\r\n case 'number': {\r\n const numValue = parseInt(value, 10);\r\n found = found || prop === numValue;\r\n break;\r\n }\r\n case 'object':\r\n found = found || this._checkObjectContainsValue(prop, value);\r\n break;\r\n case 'undefined':\r\n // If value is null (value should not be null) or empty string and prop is undefined, return true\r\n if (value === null || value === '') {\r\n found = true;\r\n } else {\r\n found = found || false;\r\n }\r\n }\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n return found;\r\n }\r\n\r\n private _parseNotInArray(feature, filter) {\r\n // Loop through all properties in filter-value and _parseEqualTo on each value.\r\n const prop = feature.get(filter.notInArray.name);\r\n const values = filter.notInArray.value;\r\n let found = false;\r\n for (const value of values) {\r\n switch (typeof(prop)) {\r\n case 'string':\r\n found = found || prop.toLowerCase() === value.toLowerCase();\r\n break;\r\n case 'number': {\r\n const numValue = parseInt(value, 10);\r\n found = found || prop === numValue;\r\n break;\r\n }\r\n case 'object':\r\n found = found || this._checkObjectContainsValue(prop, value);\r\n break;\r\n case 'undefined':\r\n // If value is null (value should not be null) or empty string and prop is undefined, return true\r\n if (value === null || value === '') {\r\n found = true;\r\n } else {\r\n found = found || false;\r\n }\r\n break;\r\n }\r\n if (found) {\r\n return false;\r\n }\r\n }\r\n return !found;\r\n }\r\n\r\n}\r\n","import { Style, Stroke, Fill, Circle, Text } from 'ol/style';\r\n\r\nexport class MapImplementationStylesMeasure {\r\n\r\n styles() {\r\n return [new Style({\r\n fill: new Fill({\r\n color: 'rgba(255, 255, 255, 0.8)'\r\n }),\r\n stroke: new Stroke({\r\n color: '#ffcc33',\r\n width: 2\r\n }),\r\n image: new Circle({\r\n radius: 7,\r\n fill: new Fill({\r\n color: '#ffcc33'\r\n })\r\n }),\r\n text: new Text()\r\n })];\r\n }\r\n\r\n drawStyles() {\r\n return [new Style({\r\n fill: new Fill({\r\n color: 'rgba(255, 255, 255, 0.5)'\r\n }),\r\n stroke: new Stroke({\r\n color: 'rgba(160, 0, 0, 0.5)',\r\n width: 2\r\n }),\r\n image: new Circle({\r\n radius: 5,\r\n fill: new Fill({\r\n color: 'rgba(160, 0, 0, 0.8)'\r\n }),\r\n stroke: new Stroke({\r\n color: 'rgba(255, 255, 255, 0.8)',\r\n width: 2\r\n })\r\n }),\r\n text: new Text()\r\n })];\r\n }\r\n\r\n}\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport * as $ from 'jquery';\r\nimport { Style, Fill, Stroke, Circle, Text, Icon, RegularShape } from 'ol/style';\r\nimport * as fastXml from 'fast-xml-parser';\r\n\r\nexport class MapImplementationStylesSld {\r\n\r\n defaultPrefix = 'sld';\r\n\r\n namespaces = {\r\n sld: 'http://www.opengis.net/sld',\r\n ogc: 'http://www.opengis.net/ogc',\r\n gml: 'http://www.opengis.net/gml',\r\n xlink: 'http://www.w3.org/1999/xlink',\r\n xsi: 'http://www.w3.org/2001/XMLSchema-instance',\r\n se: 'http://www.opengis.net/se'\r\n };\r\n\r\n namespaceAlias = {\r\n 'http://www.opengis.net/sld': 'sld',\r\n 'http://www.opengis.net/ogc': 'ogc',\r\n 'http://www.opengis.net/gml': 'gml',\r\n 'http://www.w3.org/1999/xlink': 'xlink',\r\n 'http://www.w3.org/2001/XMLSchema-instance': 'xsi',\r\n 'http://www.opengis.net/se': 'se'\r\n };\r\n\r\n cssMap = {\r\n 'stroke': 'strokeColor',\r\n 'stroke-opacity': 'strokeOpacity',\r\n 'stroke-width': 'strokeWidth',\r\n 'stroke-linecap': 'strokeLinecap',\r\n 'stroke-dasharray': 'strokeDashstyle',\r\n 'fill': 'fillColor',\r\n 'fill-opacity': 'fillOpacity',\r\n 'font-family': 'fontFamily',\r\n 'font-size': 'fontSize',\r\n 'font-weight': 'fontWeight',\r\n 'font-style': 'fontStyle'\r\n };\r\n\r\n pixelRatio = 1;\r\n\r\n defaultGraphicFormat = 'image/png';\r\n graphicFormats = {\r\n 'image/jpeg': '/.jpe?g$/i',\r\n 'image/gif': '/.gif$/i',\r\n 'image/png': '/.png$/i'\r\n };\r\n\r\n featureTypeCounter = null;\r\n defaultSymbolizer = {\r\n fillColor: '#808080',\r\n fillOpacity: 1,\r\n strokeColor: '#000000',\r\n strokeOpacity: 1,\r\n strokeWidth: 1,\r\n pointRadius: 3,\r\n graphicName: 'square'\r\n };\r\n\r\n styles = [\r\n new Style({\r\n fill: new Fill({\r\n color: 'rgba(255, 255, 255, 0.6)'\r\n }),\r\n stroke: new Stroke({\r\n color: '#319FD3',\r\n width: 2\r\n }),\r\n image: new Circle({\r\n radius: 3,\r\n fill: new Fill({\r\n color: 'rgba(255, 255, 255, 0.6)'\r\n }),\r\n stroke: new Stroke({\r\n color: '#319FD3',\r\n width: 2\r\n })\r\n }),\r\n text: new Text({\r\n font: '12px Calibri,sans-serif',\r\n fill: new Fill({\r\n color: '#000'\r\n }),\r\n stroke: new Stroke({\r\n color: '#fff',\r\n width: 3\r\n })\r\n })\r\n })\r\n ];\r\n\r\n sld;\r\n\r\n readers = {\r\n 'sld': {\r\n 'StyledLayerDescriptor': (node, sld) => {\r\n sld.version = node.getAttribute('version');\r\n this.readChildNodes(node, sld);\r\n },\r\n 'Name': (node, obj) => {\r\n obj.name = this.getChildValue(node);\r\n },\r\n 'Title': (node, obj) => {\r\n obj.title = this.getChildValue(node);\r\n },\r\n 'Abstract': (node, obj) => {\r\n obj.description = this.getChildValue(node);\r\n },\r\n 'NamedLayer': (node, sld) => {\r\n // TODO: Possible fail in layer.name\r\n const layer = {\r\n userStyles: [],\r\n namedStyles: [],\r\n name: ''\r\n };\r\n this.readChildNodes(node, layer);\r\n // give each of the user styles this layer name\r\n for (const userStyle of layer.userStyles) {\r\n userStyle.layerName = layer.name;\r\n }\r\n if (Array.isArray(sld.namedLayers)) {\r\n sld.namedLayers.push(layer);\r\n } else {\r\n sld.namedLayers[layer.name] = layer;\r\n }\r\n },\r\n 'NamedStyle': (node, layer) => {\r\n layer.namedStyles.push(\r\n this.getChildValue(node.firstChild) // Is this correct / is it in use?\r\n );\r\n },\r\n 'UserStyle': (node, layer) => {\r\n // TODO: possible fail in obj.isDefault\r\n const obj = {defaultsPerSymbolizer: true, rules: [], isDefault: false};\r\n this.featureTypeCounter = -1;\r\n this.readChildNodes(node, obj);\r\n let style;\r\n const isDefault = obj.isDefault ? obj.isDefault : false;\r\n const createtextstyle = (styleStyle) => {\r\n if (styleStyle.outlineColor === undefined) {\r\n styleStyle.outlineColor = '#ffffff';\r\n }\r\n if (styleStyle.outlineWidth === undefined) {\r\n styleStyle.outlineWidth = '3';\r\n }\r\n return new Text({\r\n textAlign: this.getAlignValue(styleStyle.labelAnchorPointX),\r\n textBaseline: this.getBaselineValue(styleStyle.labelAnchorPointY),\r\n font: this.getFontValue(styleStyle),\r\n text: styleStyle.label,\r\n fill: new Fill({\r\n color: this.getColorValue(styleStyle.fontColor, styleStyle.fontOpacity)\r\n }),\r\n stroke: new Stroke({\r\n // tslint:disable-next-line:max-line-length\r\n color: styleStyle.outlineColor ? this.getColorValue(styleStyle.outlineColor) : this.getColorValue(styleStyle.fontColor, styleStyle.fontOpacity),\r\n width: styleStyle.outlineWidth ? parseInt(styleStyle.outlineWidth, 10) : undefined\r\n }),\r\n offsetX: styleStyle.labelXOffset ? parseInt(styleStyle.labelXOffset, 10) : undefined,\r\n offsetY: styleStyle.labelYOffset ? parseInt(styleStyle.labelYOffset, 10) : undefined,\r\n rotation: styleStyle.rotation ? parseFloat(styleStyle.rotation) : undefined\r\n });\r\n };\r\n const createstrokestyle = (styleStyle) => {\r\n if (styleStyle.strokeColor && styleStyle.strokeWidth) {\r\n return new Stroke({\r\n color: this.getColorValue(styleStyle.strokeColor, styleStyle.strokeOpacity),\r\n width: styleStyle.strokeWidth ? parseInt(styleStyle.strokeWidth.trim(), 10) : undefined,\r\n lineDash: styleStyle.strokeDashstyle ? styleStyle.strokeDashstyle.split(' ') : undefined\r\n });\r\n }\r\n return undefined; // Not all code paths return a value\r\n };\r\n const createfillstyle = (styleStyle) => {\r\n return new Fill({\r\n color: this.getColorValue(styleStyle.fillColor, styleStyle.fillOpacity)\r\n });\r\n };\r\n\r\n for (const rule of obj.rules) {\r\n const polygonstyle = rule.symbolizer.Polygon;\r\n const pointstyle = rule.symbolizer.Point;\r\n const linestyle = rule.symbolizer.Line;\r\n let textstyle = rule.symbolizer.Text;\r\n\r\n let fillstyle, strokestyle, imagestyle;\r\n if (polygonstyle) {\r\n if (polygonstyle.fill) {\r\n fillstyle = createfillstyle(polygonstyle);\r\n }\r\n if (polygonstyle.stroke) {\r\n if (polygonstyle.strokeColor && polygonstyle.strokeWidth) {\r\n strokestyle = createstrokestyle(polygonstyle);\r\n }\r\n }\r\n if (polygonstyle.label) {\r\n textstyle = createtextstyle(polygonstyle);\r\n }\r\n } else if (pointstyle) {\r\n if (pointstyle.fill) {\r\n fillstyle = createfillstyle(pointstyle);\r\n }\r\n if (pointstyle.stroke) {\r\n if (pointstyle.strokeColor || pointstyle.strokeWidth) {\r\n strokestyle = createstrokestyle(pointstyle);\r\n }\r\n }\r\n if (pointstyle.label) {\r\n textstyle = createtextstyle(pointstyle);\r\n }\r\n if (pointstyle.graphic) {\r\n if (pointstyle.externalGraphic) {\r\n const imageopacity = pointstyle.fillOpacity ? parseFloat(pointstyle.fillOpacity) : undefined;\r\n imagestyle = new Icon({\r\n crossOrigin: \"anonymous\",\r\n opacity: imageopacity,\r\n // size: [2*pointstyle.pointRadius, 2*pointstyle.pointRadius],\r\n // scale: 0.4,\r\n src: pointstyle.externalGraphic\r\n });\r\n fillstyle = undefined;\r\n strokestyle = undefined;\r\n } else {\r\n switch (pointstyle.graphicName) {\r\n case 'circle':\r\n imagestyle = new Circle({\r\n radius: parseInt(pointstyle.pointRadius, 10),\r\n stroke: strokestyle,\r\n fill: fillstyle\r\n });\r\n break;\r\n case 'cross':\r\n imagestyle = new RegularShape({\r\n radius: parseInt(pointstyle.pointRadius, 10),\r\n radius2: 0,\r\n points: 4,\r\n stroke: strokestyle,\r\n fill: fillstyle\r\n });\r\n break;\r\n case 'star':\r\n imagestyle = new RegularShape({\r\n radius: parseInt(pointstyle.pointRadius, 10),\r\n radius2: parseInt(pointstyle.pointRadius, 10) / 3,\r\n points: 5,\r\n stroke: strokestyle,\r\n fill: fillstyle\r\n });\r\n break;\r\n case 'square':\r\n imagestyle = new RegularShape({\r\n radius: parseInt(pointstyle.pointRadius, 10),\r\n points: 4,\r\n angle: Math.PI / 4,\r\n stroke: strokestyle,\r\n fill: fillstyle\r\n });\r\n break;\r\n case 'triangle':\r\n imagestyle = new RegularShape({\r\n radius: parseInt(pointstyle.pointRadius, 10),\r\n points: 3,\r\n stroke: strokestyle,\r\n fill: fillstyle\r\n });\r\n break;\r\n case 'x':\r\n imagestyle = new RegularShape({\r\n radius: parseInt(pointstyle.pointRadius, 10),\r\n radius2: 0,\r\n points: 4,\r\n angle: Math.PI / 4,\r\n stroke: strokestyle,\r\n fill: fillstyle\r\n });\r\n break;\r\n }\r\n }\r\n }\r\n } else if (linestyle) {\r\n if (linestyle.fill) {\r\n fillstyle = createfillstyle(linestyle);\r\n }\r\n if (linestyle.stroke) {\r\n strokestyle = createstrokestyle(linestyle);\r\n }\r\n if (linestyle.graphic && linestyle.graphicName === 'circle') {\r\n imagestyle = new Circle({\r\n radius: parseInt(linestyle.pointRadius, 10),\r\n fill: fillstyle\r\n });\r\n fillstyle = undefined;\r\n }\r\n if (linestyle.label) {\r\n textstyle = createtextstyle(linestyle);\r\n }\r\n }\r\n style = new Style({\r\n fill: fillstyle,\r\n image: imagestyle,\r\n stroke: strokestyle,\r\n text: textstyle\r\n });\r\n layer.userStyles.push({isDefault: isDefault, style: style, rule: rule});\r\n }\r\n },\r\n 'IsDefault': (node, style) => {\r\n if (this.getChildValue(node) === '1') {\r\n style.isDefault = true;\r\n }\r\n },\r\n 'FeatureTypeStyle': (node, style) => {\r\n ++this.featureTypeCounter;\r\n const obj = {\r\n rules: []\r\n };\r\n this.readChildNodes(node, obj);\r\n style.rules = obj.rules;\r\n },\r\n 'Rule': (node, obj) => {\r\n const rule = {symbolizer: {}};\r\n rule.symbolizer = {\r\n fill: false,\r\n stroke: false,\r\n graphic: false\r\n };\r\n this.readChildNodes(node, rule);\r\n obj.rules.push(rule);\r\n },\r\n 'ElseFilter': (_node, rule) => {\r\n rule.elseFilter = true;\r\n },\r\n 'MinScaleDenominator': (node, rule) => {\r\n rule.minScaleDenominator = parseFloat(this.getChildValue(node));\r\n },\r\n 'MaxScaleDenominator': (node, rule) => {\r\n rule.maxScaleDenominator = parseFloat(this.getChildValue(node));\r\n },\r\n 'LabelPlacement': (node, symbolizer) => {\r\n this.readChildNodes(node, symbolizer);\r\n },\r\n 'PointPlacement': (node, symbolizer) => {\r\n const config = { labelRotation: undefined, rotation: undefined, labelAlign: undefined};\r\n this.readChildNodes(node, config);\r\n config.labelRotation = config.rotation;\r\n delete config.rotation;\r\n let labelAlign;\r\n const x = symbolizer.labelAnchorPointX;\r\n const y = symbolizer.labelAnchorPointY;\r\n if (x <= 1 / 3) {\r\n labelAlign = 'l';\r\n } else if (x > 1 / 3 && x < 2 / 3) {\r\n labelAlign = 'c';\r\n } else if (x >= 2 / 3) {\r\n labelAlign = 'r';\r\n }\r\n if (y <= 1 / 3) {\r\n labelAlign += 'b';\r\n } else if (y > 1 / 3 && y < 2 / 3) {\r\n labelAlign += 'm';\r\n } else if (y >= 2 / 3) {\r\n labelAlign += 't';\r\n }\r\n config.labelAlign = labelAlign;\r\n console.error('PointPlacement is not implemented');\r\n },\r\n 'AnchorPoint': (node, symbolizer) => {\r\n this.readChildNodes(node, symbolizer);\r\n },\r\n 'AnchorPointX': (node, symbolizer) => {\r\n const labelAnchorPointX = this.readers.ogc._expression.call(this, node);\r\n // always string, could be empty string\r\n if (labelAnchorPointX) {\r\n symbolizer.labelAnchorPointX = labelAnchorPointX;\r\n }\r\n },\r\n 'AnchorPointY': (node, symbolizer) => {\r\n const labelAnchorPointY = this.readers.ogc._expression.call(this, node);\r\n // always string, could be empty string\r\n if (labelAnchorPointY) {\r\n symbolizer.labelAnchorPointY = labelAnchorPointY;\r\n }\r\n },\r\n 'Displacement': (node, symbolizer) => {\r\n this.readChildNodes(node, symbolizer);\r\n },\r\n 'DisplacementX': (node, symbolizer) => {\r\n const labelXOffset = this.readers.ogc._expression.call(this, node);\r\n // always string, could be empty string\r\n if (labelXOffset) {\r\n symbolizer.labelXOffset = labelXOffset;\r\n }\r\n },\r\n 'DisplacementY': (node, symbolizer) => {\r\n const labelYOffset = this.readers.ogc._expression.call(this, node);\r\n // always string, could be empty string\r\n if (labelYOffset) {\r\n symbolizer.labelYOffset = labelYOffset;\r\n }\r\n },\r\n 'LinePlacement': (node, symbolizer) => {\r\n this.readChildNodes(node, symbolizer);\r\n },\r\n 'PerpendicularOffset': (node, symbolizer) => {\r\n const labelPerpendicularOffset = this.readers.ogc._expression.call(this, node);\r\n // always string, could be empty string\r\n if (labelPerpendicularOffset) {\r\n symbolizer.labelPerpendicularOffset = labelPerpendicularOffset;\r\n }\r\n },\r\n 'Label': (node, symbolizer) => {\r\n const value = this.readers.ogc._expression.call(this, node);\r\n if (value) {\r\n symbolizer.label = value;\r\n }\r\n },\r\n 'Font': (node, symbolizer) => {\r\n this.readChildNodes(node, symbolizer);\r\n },\r\n 'Halo': (node, symbolizer) => {\r\n // halo has a fill, so send fresh object\r\n const obj = { haloRadius: undefined, fillColor: undefined, fillOpacity: undefined};\r\n this.readChildNodes(node, obj);\r\n symbolizer.haloRadius = obj.haloRadius;\r\n symbolizer.haloColor = obj.fillColor;\r\n symbolizer.haloOpacity = obj.fillOpacity;\r\n },\r\n 'Radius': (node, symbolizer) => {\r\n const radius = this.readers.ogc._expression.call(this, node);\r\n if (radius != null) {\r\n // radius is only used for halo\r\n symbolizer.haloRadius = radius;\r\n }\r\n },\r\n 'RasterSymbolizer': (node, rule) => {\r\n const config = {zIndex: undefined};\r\n this.readChildNodes(node, config);\r\n rule.symbolizer['Raster'] = config;\r\n },\r\n 'Geometry': (node, obj) => {\r\n obj.geometry = {};\r\n this.readChildNodes(node, obj.geometry);\r\n },\r\n 'ColorMap': (node, symbolizer) => {\r\n symbolizer.colorMap = [];\r\n this.readChildNodes(node, symbolizer.colorMap);\r\n },\r\n 'ColorMapEntry': (node, colorMap) => {\r\n const q = node.getAttribute('quantity');\r\n const o = node.getAttribute('opacity');\r\n colorMap.push({\r\n color: node.getAttribute('color'),\r\n quantity: q !== null ? parseFloat(q) : undefined,\r\n label: node.getAttribute('label') || undefined,\r\n opacity: o !== null ? parseFloat(o) : undefined\r\n });\r\n },\r\n 'LineSymbolizer': (node, rule) => {\r\n const config = {zIndex: undefined};\r\n this.readChildNodes(node, config);\r\n rule.symbolizer['Line'] = config;\r\n },\r\n 'PolygonSymbolizer': (node, rule) => {\r\n if (!rule.symbolizer['Polygon']) {\r\n rule.symbolizer['Polygon'] = {\r\n fill: false,\r\n stroke: false,\r\n zIndex: undefined\r\n };\r\n }\r\n this.readChildNodes(node, rule.symbolizer['Polygon']);\r\n },\r\n 'PointSymbolizer': (node, rule) => {\r\n let config = {\r\n fill: false,\r\n stroke: false,\r\n graphic: false,\r\n zIndex: undefined\r\n };\r\n config = rule.symbolizer['Point'] || config;\r\n this.readChildNodes(node, config);\r\n rule.symbolizer['Point'] = config;\r\n },\r\n 'TextSymbolizer': (node, rule) => {\r\n const config = {zIndex: undefined};\r\n this.readChildNodes(node, config);\r\n rule.symbolizer['Text'] = config;\r\n },\r\n 'Stroke': (node, symbolizer) => {\r\n symbolizer.stroke = true;\r\n this.readChildNodes(node, symbolizer);\r\n },\r\n 'Fill': (node, symbolizer) => {\r\n symbolizer.fill = true;\r\n this.readChildNodes(node, symbolizer);\r\n },\r\n 'CssParameter': (node, symbolizer) => {\r\n const cssProperty = node.getAttribute('name');\r\n let symProperty = this.cssMap[cssProperty];\r\n // for labels, fill should map to fontColor and fill-opacity\r\n // to fontOpacity\r\n if (symbolizer.label) {\r\n if (cssProperty === 'fill') {\r\n symProperty = 'fontColor';\r\n } else if (cssProperty === 'fill-opacity') {\r\n symProperty = 'fontOpacity';\r\n }\r\n }\r\n if (symProperty) {\r\n // Limited support for parsing of OGC expressions\r\n const value = this.readers.ogc._expression.call(this, node);\r\n // always string, could be an empty string\r\n if (value) {\r\n symbolizer[symProperty] = value;\r\n }\r\n }\r\n },\r\n 'Graphic': (node, symbolizer) => {\r\n symbolizer.graphic = true;\r\n const graphic = {opacity: undefined, size: undefined, href: undefined, rotation: undefined};\r\n // painter's order not respected here, clobber previous with next\r\n this.readChildNodes(node, graphic);\r\n // directly properties with names that match symbolizer properties\r\n const properties = [\r\n 'stroke', 'strokeColor', 'strokeWidth', 'strokeOpacity',\r\n 'strokeLinecap', 'fill', 'fillColor', 'fillOpacity',\r\n 'graphicName', 'rotation', 'graphicFormat'\r\n ];\r\n let value;\r\n for (const prop of properties) {\r\n value = graphic[prop];\r\n if (value !== undefined) {\r\n symbolizer[prop] = value;\r\n }\r\n }\r\n // set other generic properties with specific graphic property names\r\n if (graphic.opacity !== undefined) {\r\n symbolizer.graphicOpacity = graphic.opacity;\r\n }\r\n if (graphic.size) {\r\n const pointRadius = graphic.size / 2;\r\n if (isNaN(pointRadius)) {\r\n // likely a property name\r\n symbolizer.graphicWidth = graphic.size;\r\n } else {\r\n symbolizer.pointRadius = graphic.size / 2;\r\n }\r\n }\r\n if (graphic.href) {\r\n symbolizer.externalGraphic = graphic.href;\r\n }\r\n if (graphic.rotation) {\r\n symbolizer.rotation = graphic.rotation;\r\n }\r\n },\r\n 'ExternalGraphic': (node, graphic) => {\r\n this.readChildNodes(node, graphic);\r\n },\r\n 'Mark': (node, graphic) => {\r\n this.readChildNodes(node, graphic);\r\n },\r\n 'WellKnownName': (node, graphic) => {\r\n graphic.graphicName = this.getChildValue(node);\r\n },\r\n 'Opacity': (node, obj) => {\r\n const opacity = this.readers.ogc._expression.call(this, node);\r\n // always string, could be empty string\r\n if (opacity) {\r\n obj.opacity = opacity;\r\n }\r\n },\r\n 'Size': (node, obj) => {\r\n const size = this.readers.ogc._expression.call(this, node);\r\n // always string, could be empty string\r\n if (size) {\r\n obj.size = size;\r\n }\r\n },\r\n 'Rotation': (node, obj) => {\r\n const rotation = this.readers.ogc._expression.call(this, node);\r\n // always string, could be empty string\r\n if (rotation) {\r\n obj.rotation = rotation;\r\n }\r\n },\r\n 'OnlineResource': (node, obj) => {\r\n obj.href = this.getAttributeNS(\r\n node, this.namespaces.xlink, 'href'\r\n );\r\n },\r\n 'Format': (node, graphic) => {\r\n graphic.graphicFormat = this.getChildValue(node);\r\n }\r\n },\r\n 'ogc': {\r\n '_expression': (node) => {\r\n // only the simplest of ogc:expression handled\r\n // 'some text and an attribute'}\r\n let obj, value = '';\r\n for (let child = node.firstChild; child; child = child.nextSibling) {\r\n switch (child.nodeType) {\r\n case 1:\r\n obj = this.readNode(child);\r\n if (obj.property) {\r\n value += '${' + obj.property + '}';\r\n } else if (obj.value !== undefined) {\r\n value += obj.value;\r\n }\r\n break;\r\n case 3: // text node\r\n case 4: // cdata section\r\n value += child.nodeValue;\r\n }\r\n }\r\n return value;\r\n },\r\n 'Filter': (node, parent) => {\r\n // Filters correspond to subclasses of OpenLayers.Filter.\r\n // Since they contain information we don't persist, we\r\n // create a temporary object and then pass on the filter\r\n // (ogc:Filter) to the parent obj.\r\n const obj = {\r\n fids: [],\r\n filters: []\r\n };\r\n this.readChildNodes(node, obj);\r\n if (obj.fids.length > 0) {\r\n parent.filter = {\r\n fids: obj.fids\r\n };\r\n } else if (obj.filters.length > 0) {\r\n parent.filter = obj.filters[0];\r\n }\r\n },\r\n 'FeatureId': (node, obj) => {\r\n const fid = node.getAttribute('fid');\r\n if (fid) {\r\n obj.fids.push(fid);\r\n }\r\n },\r\n 'And': (node, obj) => {\r\n const filter = {\r\n filters: ['&&']\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'Or': (node, obj) => {\r\n const filter = {\r\n filters: ['||']\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'Not': (node, obj) => {\r\n const filter = {\r\n filters: ['!']\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'PropertyIsLike': (node, obj) => {\r\n const filter = {\r\n operator: '=='\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'PropertyIsEqualTo': (node, obj) => {\r\n const filter = {\r\n operator: '=='\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'PropertyIsNotEqualTo': (node, obj) => {\r\n const filter = {\r\n operator: '!='\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'PropertyIsLessThan': (node, obj) => {\r\n const filter = {\r\n operator: '<'\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'PropertyIsGreaterThan': (node, obj) => {\r\n const filter = {\r\n operator: '>'\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'PropertyIsLessThanOrEqualTo': (node, obj) => {\r\n const filter = {\r\n operator: '<='\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'PropertyIsGreaterThanOrEqualTo': (node, obj) => {\r\n const filter = {\r\n operator: '>='\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'PropertyIsBetween': (node, obj) => {\r\n const filter = {\r\n operator: '..'\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n },\r\n 'Literal': (node, obj) => {\r\n obj.value = this.getChildValue(node);\r\n },\r\n 'PropertyName': (node, filter) => {\r\n filter.property = this.getChildValue(node);\r\n },\r\n 'LowerBoundary': (node, filter) => {\r\n filter.lowerBoundary = this.readers.ogc._expression.call(this, node);\r\n },\r\n 'UpperBoundary': (node, filter) => {\r\n filter.upperBoundary = this.readers.ogc._expression.call(this, node);\r\n },\r\n 'PropertyIsNull': (node, obj) => {\r\n const filter = {\r\n operator: 'NULL'\r\n };\r\n this.readChildNodes(node, filter);\r\n obj.filters.push(filter);\r\n }\r\n },\r\n 'se': {\r\n 'SvgParameter': (node, symbolizer) => {\r\n const cssProperty = node.getAttribute('name');\r\n let symProperty = this.cssMap[cssProperty];\r\n // for labels, fill should map to fontColor and fill-opacity\r\n // to fontOpacity\r\n if (symbolizer.label) {\r\n if (cssProperty === 'fill') {\r\n symProperty = 'fontColor';\r\n } else if (cssProperty === 'fill-opacity') {\r\n symProperty = 'fontOpacity';\r\n }\r\n }\r\n if (symProperty) {\r\n // Limited support for parsing of OGC expressions\r\n const value = this.readers.ogc._expression.call(this, node);\r\n // always string, could be an empty string\r\n if (value) {\r\n symbolizer[symProperty] = value;\r\n }\r\n }\r\n },\r\n }\r\n };\r\n\r\n parseSld(response, zindex) {\r\n if (typeof response === 'undefined') {\r\n return this.styles;\r\n }\r\n if (typeof response === 'string') {\r\n response = fastXml.parse(response);\r\n }\r\n\r\n this.sld = {namedLayers: []};\r\n this.readChildNodes(response, this.sld);\r\n\r\n this.styles = [];\r\n\r\n const scales = {\r\n maxScaleDenominator: 1,\r\n minScaleDenominator: Infinity\r\n };\r\n for (const userstyle of this.sld.namedLayers[0].userStyles) {\r\n const style = userstyle.style;\r\n if (zindex) {\r\n style.setZIndex(zindex);\r\n }\r\n this.styles.push(style);\r\n if (userstyle.rule) {\r\n if (userstyle.rule.maxScaleDenominator && (scales.maxScaleDenominator < userstyle.rule.maxScaleDenominator)) {\r\n scales.maxScaleDenominator = userstyle.rule.maxScaleDenominator;\r\n }\r\n if (userstyle.rule.minScaleDenominator && (scales.minScaleDenominator > userstyle.rule.minScaleDenominator)) {\r\n scales.minScaleDenominator = userstyle.rule.minScaleDenominator;\r\n }\r\n }\r\n }\r\n if (scales.maxScaleDenominator === 1) {\r\n scales.maxScaleDenominator = undefined;\r\n }\r\n if (scales.minScaleDenominator === Infinity) {\r\n scales.minScaleDenominator = undefined;\r\n }\r\n return scales;\r\n }\r\n\r\n getFeaturePropertyKey(feature, property) {\r\n const featureKeys = feature.getKeys();\r\n if (featureKeys) {\r\n if (featureKeys.indexOf(property) >= 0) {\r\n return property;\r\n }\r\n for (const featureKey of featureKeys) {\r\n if (featureKey.toUpperCase() === property.toUpperCase()) {\r\n return featureKey;\r\n }\r\n }\r\n }\r\n return property;\r\n }\r\n\r\n parseFilterProperty(filter, feature) {\r\n if (feature === undefined) {\r\n return false;\r\n }\r\n if (filter === undefined) {\r\n return false;\r\n }\r\n let featurevalue, value;\r\n let condition = false;\r\n featurevalue = feature.get(this.getFeaturePropertyKey(feature, filter.property));\r\n if (featurevalue) {\r\n switch (filter.operator) {\r\n case '==':\r\n switch (typeof(featurevalue)) {\r\n case 'string':\r\n value = filter.value;\r\n condition = featurevalue === value;\r\n break;\r\n case 'number':\r\n value = parseInt(filter.value, 10);\r\n condition = featurevalue === value;\r\n break;\r\n }\r\n break;\r\n case '>':\r\n value = parseInt(filter.value, 10);\r\n condition = parseInt(featurevalue, 10) > value;\r\n break;\r\n case '<':\r\n value = parseInt(filter.value, 10);\r\n condition = parseInt(featurevalue, 10) < value;\r\n break;\r\n case '>=':\r\n value = parseInt(filter.value, 10);\r\n condition = parseInt(featurevalue, 10) >= value;\r\n break;\r\n case '<=':\r\n value = parseInt(filter.value, 10);\r\n condition = parseInt(featurevalue, 10) <= value;\r\n break;\r\n case '!=':\r\n switch (typeof(featurevalue)) {\r\n case 'string':\r\n value = filter.value;\r\n condition = featurevalue !== value;\r\n break;\r\n case 'number':\r\n value = parseInt(filter.value, 10);\r\n condition = featurevalue !== value;\r\n break;\r\n }\r\n break;\r\n case 'NULL':\r\n switch (typeof(featurevalue)) {\r\n case 'string':\r\n condition = featurevalue.length === 0;\r\n break;\r\n case 'number':\r\n value = parseInt(filter.value, 10);\r\n condition = featurevalue !== value;\r\n break;\r\n }\r\n break;\r\n case '..':\r\n featurevalue = parseInt(featurevalue, 10);\r\n // tslint:disable-next-line:max-line-length\r\n condition = ((featurevalue >= parseInt(filter.lowerBoundary, 10)) && (featurevalue <= parseInt(filter.upperBoundary, 10)));\r\n break;\r\n }\r\n } else {\r\n if (filter.operator === 'NULL') {\r\n condition = true;\r\n }\r\n }\r\n return condition;\r\n }\r\n\r\n setHidden(feature, hidden) { \r\n if (hidden && feature.set) {\r\n feature.set('isHidden', hidden); \r\n } else {\r\n feature.unset('isHidden');\r\n }\r\n }\r\n\r\n parseFilter(filter, feature) {\r\n if (feature === undefined) {\r\n return false;\r\n }\r\n if (filter === undefined) {\r\n return true;\r\n }\r\n if (filter.filters === undefined) {\r\n return this.parseFilterProperty(filter, feature);\r\n }\r\n if (filter.filters.length <= 1) {\r\n return true;\r\n }\r\n\r\n let i;\r\n let condition = false;\r\n switch (filter.filters[0]) {\r\n case '&&':\r\n for (i = 1; i < filter.filters.length; i++) {\r\n condition = this.parseFilter(filter.filters[i], feature);\r\n if (!condition) {\r\n break;\r\n }\r\n }\r\n break;\r\n case '||':\r\n for (i = 1; i < filter.filters.length; i++) {\r\n condition = this.parseFilter(filter.filters[i], feature);\r\n if (condition) {\r\n break;\r\n }\r\n }\r\n break;\r\n case '!':\r\n break;\r\n }\r\n return condition;\r\n }\r\n\r\n getStyle(feature, scale) {\r\n return this._getValidStyle(feature, scale, undefined);\r\n }\r\n\r\n getHoverStyle(feature, scale) {\r\n let style = this._getValidStyle(feature, scale, true);\r\n if (style === undefined) {\r\n // No hoverstyle, use ordinary style\r\n style = this._getValidStyle(feature, scale, undefined);\r\n }\r\n return style;\r\n }\r\n\r\n _getValidStyle(feature, scale, hover) {\r\n if (hover === undefined) {\r\n hover = false;\r\n }\r\n const userStyles = [];\r\n let textstyle, label, featurelabel;\r\n if (this.sld) {\r\n for (const userStyle of this.sld.namedLayers[0].userStyles) {\r\n if (hover && !userStyle.isDefault) {\r\n if (this.parseFilter(userStyle.rule.filter, feature)) {\r\n if (this._validateScale(userStyle.rule, scale)) {\r\n textstyle = userStyle.style.getText();\r\n if (textstyle) {\r\n label = textstyle.getText();\r\n textstyle = userStyle.style;\r\n featurelabel = this._getAttributeValue(label, feature);\r\n textstyle.getText().setText(featurelabel);\r\n } else {\r\n userStyles.push(userStyle.style);\r\n }\r\n }\r\n }\r\n } else if (!hover && userStyle.isDefault) {\r\n if (this.parseFilter(userStyle.rule.filter, feature)) {\r\n if (this._validateScale(userStyle.rule, scale)) {\r\n const thisstyle = userStyle.style.clone();\r\n textstyle = thisstyle.getText();\r\n if (textstyle) {\r\n label = textstyle.getText();\r\n if (label) {\r\n textstyle = thisstyle;\r\n featurelabel = this._getAttributeValue(label, feature);\r\n textstyle.getText().setText(featurelabel);\r\n }\r\n } else {\r\n userStyles.push(thisstyle);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n // Problem: How can I create support for sld-styles with 'se:' - prefix (or others) that do not contain the IsDefault - tag?\r\n // In our code the IsDefault is set to false, unless the sld-file specifically sets it to true.\r\n // With the above code, the style will not appear at all if IsDefault tag is not present in the sld - file\r\n // Solution: If the isdefault tag does not exist in userstyles, we should consider them all default.\r\n // This ensures that even though the IsDefault tag is not present in the file, the styling still appear on the map.\r\n if (userStyles.length === 0 && !textstyle) {\r\n if (!this.sld.namedLayers[0].userStyles.some(a => a.isDefault === true)) {\r\n for (const userStyle of this.sld.namedLayers[0].userStyles) {\r\n if (this.parseFilter(userStyle.rule.filter, feature)) {\r\n if (this._validateScale(userStyle.rule, scale)) {\r\n const thisstyle = userStyle.style.clone();\r\n textstyle = thisstyle.getText();\r\n if (textstyle) {\r\n label = textstyle.getText();\r\n if (label) {\r\n textstyle = thisstyle;\r\n featurelabel = this._getAttributeValue(label, feature);\r\n textstyle.getText().setText(featurelabel);\r\n }\r\n } else {\r\n userStyles.push(thisstyle);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (textstyle) {\r\n userStyles.push(textstyle);\r\n }\r\n if (userStyles.length > 0) {\r\n this.setHidden(feature, false);\r\n return userStyles;\r\n } else {\r\n if (!hover) {\r\n this.setHidden(feature, true);\r\n }\r\n }\r\n return undefined;\r\n }\r\n return this.styles;\r\n }\r\n\r\n _getAttributeValue(label, feature) {\r\n if (label.indexOf('${') >= 0) {\r\n label = label.slice(label.indexOf('${') + 2);\r\n if (label.indexOf('}') >= 0) {\r\n label = label.slice(0, label.indexOf('}'));\r\n }\r\n }\r\n return feature.get(label);\r\n }\r\n\r\n _validateScale(rule, scale) {\r\n if (rule === undefined || scale === undefined) {\r\n return true;\r\n }\r\n const maxScale = rule.maxScaleDenominator ? rule.maxScaleDenominator : Infinity;\r\n const minScale = rule.minScaleDenominator ? rule.minScaleDenominator : 1;\r\n if (scale <= maxScale && scale >= minScale) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n getStyleForLegend() {\r\n if (this.sld) {\r\n const $jq = $.noConflict();\r\n return $jq(this.sld.namedLayers[0].userStyles);\r\n }\r\n return undefined;\r\n }\r\n\r\n getChildValue(node, def = '') {\r\n let value = def;\r\n if (node) {\r\n for (let child = node.firstChild; child; child = child.nextSibling) {\r\n switch (child.nodeType) {\r\n case 3: // text node\r\n case 4: // cdata section\r\n value += child.nodeValue;\r\n }\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n readChildNodes(node, obj) {\r\n if (!obj) {\r\n obj = {};\r\n }\r\n for (const child of node.childNodes) {\r\n if (child.nodeType === 1) {\r\n this.readNode(child, obj);\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n readNode(node, obj = {}) {\r\n let prefix = node.namespaceURI ? this.namespaceAlias[node.namespaceURI] : this.defaultPrefix;\r\n const local = node.localName || node.nodeName.split(':').pop();\r\n\r\n // Almost all nodes with 'se' - prefix follow the same logic as 'sld' (Except for 'se:SvgParameter').\r\n if (prefix === 'se' && !(local === 'SvgParameter')) {\r\n prefix = this.defaultPrefix;\r\n }\r\n const group = this.readers[prefix];\r\n if (group) {\r\n const reader = group[local] || group['*'];\r\n if (reader) {\r\n reader.apply(this, [node, obj]);\r\n }\r\n }\r\n return obj;\r\n }\r\n\r\n getCssProperty(sym) {\r\n const idx = Object.values(this.cssMap).findIndex(x => x === sym);\r\n return idx !== -1 ? idx : null;\r\n }\r\n\r\n getAttributeNodeNS(node, uri, name) {\r\n let attributeNode = null;\r\n if (node.getAttributeNodeNS) {\r\n attributeNode = node.getAttributeNodeNS(uri, name);\r\n } else {\r\n const attributes = node.attributes;\r\n let fullName;\r\n for (const potentialNode of attributes) {\r\n if (potentialNode.namespaceURI === uri) {\r\n fullName = (potentialNode.prefix) ?\r\n (potentialNode.prefix + ':' + name) : name;\r\n if (fullName === potentialNode.nodeName) {\r\n attributeNode = potentialNode;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return attributeNode;\r\n }\r\n\r\n getAttributeNS(node, uri, name) {\r\n let attributeValue = '';\r\n if (node.getAttributeNS) {\r\n attributeValue = node.getAttributeNS(uri, name) || '';\r\n } else {\r\n const attributeNode = this.getAttributeNodeNS(node, uri, name);\r\n if (attributeNode) {\r\n attributeValue = attributeNode.nodeValue;\r\n }\r\n }\r\n return attributeValue;\r\n }\r\n\r\n getStrokeDashstyle(dashstyle) {\r\n if (dashstyle) {\r\n dashstyle = dashstyle.split(' ');\r\n dashstyle.map(d => parseInt(d, 10) * this.pixelRatio);\r\n return dashstyle;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n getStrokeWidth(width) {\r\n return parseInt(width.trim(), 10) * this.pixelRatio;\r\n }\r\n\r\n getFontValue(style) {\r\n let font = '';\r\n font = this.addFontValue(font, style.fontStyle);\r\n font = this.addFontValue(font, style.fontWeight);\r\n if (style.fontSize) {\r\n if (style.fontSize.indexOf('px') < 0) {\r\n font = this.addFontValue(font, style.fontSize);\r\n font += 'px';\r\n } else {\r\n font = this.addFontValue(font, style.fontSize);\r\n }\r\n }\r\n font = this.addFontValue(font, style.fontFamily);\r\n return font.trim();\r\n }\r\n\r\n addFontValue(font, value) {\r\n if (value === undefined) {\r\n return font;\r\n }\r\n if (font.length > 0) {\r\n font += ' ';\r\n }\r\n return font + value;\r\n }\r\n\r\n getAlignValue(align) {\r\n if (align === undefined) {\r\n return 'center';\r\n }\r\n const alignvalue = parseFloat(align);\r\n if (alignvalue === 0) {\r\n return 'left';\r\n } else if (alignvalue > 0 && alignvalue < 1) {\r\n return 'center';\r\n } else {\r\n return 'right';\r\n }\r\n }\r\n\r\n getBaselineValue(baseline) {\r\n if (baseline === undefined) {\r\n return 'middle';\r\n }\r\n const baselinevalue = parseFloat(baseline);\r\n if (baselinevalue === 0) {\r\n return 'bottom';\r\n } else if (baselinevalue > 0 && baselinevalue < 1) {\r\n return 'middle';\r\n } else {\r\n return 'top';\r\n }\r\n }\r\n\r\n getColorValue(colorvalue, opacityvalue = '1') {\r\n if (colorvalue === undefined) {\r\n colorvalue = '#000000';\r\n }\r\n\r\n const color = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(colorvalue.trim());\r\n if (color.length < 4) {\r\n return undefined;\r\n }\r\n const rgb = {\r\n r: parseInt(color[1], 16),\r\n g: parseInt(color[2], 16),\r\n b: parseInt(color[3], 16),\r\n a: opacityvalue ? parseFloat(opacityvalue.trim()) : 1,\r\n getValue: () => [rgb.r, rgb.g, rgb.b, rgb.a]\r\n };\r\n return rgb.getValue();\r\n }\r\n\r\n getGraphicFormat(href) {\r\n let format;\r\n for (const key in this.graphicFormats) {\r\n if (this.graphicFormats[key].test(href)) {\r\n format = key;\r\n break;\r\n }\r\n }\r\n return format || this.defaultGraphicFormat;\r\n }\r\n\r\n\r\n}\r\n","import { Projection, get as getProjection, addProjection } from 'ol/proj';\r\nimport * as proj4x from 'proj4';\r\n\r\nexport class MapImplementationTransform {\r\n\r\n geographic = 'EPSG:4326';\r\n proj4;\r\n\r\n constructor() {\r\n this.proj4 = (proj4x as any).default;\r\n }\r\n\r\n transformCoordinates(fromEpsg: string, toEpsg: string, coordinates: number[]) {\r\n // If no coordinates are given an object with two methods is returned,\r\n // its methods are forward which projects from the first projection to\r\n // the second and inverse which projects from the second to the first.\r\n\r\n // added some epsg codes (that starts with 23) manually to the projection definitions because they are not included in the proj4 library\r\n // ex: this.proj4.defs(\"EPSG:23031\", \"+proj=utm +zone=31 +datum=ED50 +units=m +no_defs\");\r\n const epsgCodes = ['EPSG:23031', 'EPSG:23032', 'EPSG:23033', 'EPSG:23034', 'EPSG:23035', 'EPSG:23036'];\r\n const projDefinition = '+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs';\r\n\r\n epsgCodes.forEach(code => {\r\n this.proj4.defs(code, projDefinition);\r\n });\r\n\r\n if (this.proj4.defs(fromEpsg) && this.proj4.defs(toEpsg)) {\r\n const transformObject = this.proj4(fromEpsg, toEpsg);\r\n return transformObject.forward(coordinates);\r\n } else {\r\n console.error('transformCoordinates', fromEpsg, toEpsg);\r\n }\r\n }\r\n\r\n transformFromGeographic(coordinates: number[], toEpsg: string) {\r\n return this.transformCoordinates(this.geographic, toEpsg, coordinates);\r\n }\r\n\r\n transformToGeographic(coordinates: number[], fromEpsg: string) {\r\n // If no coordinates are given an object with two methods is returned,\r\n // its methods are forward which projects from the first projection to\r\n // the second and inverse which projects from the second to the first.\r\n if (this.proj4.defs(fromEpsg)) {\r\n const transformObject = this.proj4(fromEpsg);\r\n return transformObject.inverse(coordinates);\r\n } else {\r\n console.error('transformToGeographic', fromEpsg);\r\n }\r\n }\r\n\r\n transformEpsgCoordinate(coord: any, toCrs: string) {\r\n if (coord.epsg === toCrs) {\r\n return coord;\r\n }\r\n if (coord.epsg !== '' && toCrs !== '') {\r\n // let fromProj = ol.proj.get(coord.epsg);\r\n // let toProj = ol.proj.get(toCrs);\r\n // let transformedCoord = Projection.transform([coord.lon, coord.lat], coord.epsg, toCrs);\r\n if (coord.lon && coord.lat) { // Ignore if undefined or \"null-island\"\r\n let transformedCoord;\r\n\r\n if (toCrs === this.geographic) {\r\n // transformedCoord = [transformedCoord[1], transformedCoord[0]];\r\n transformedCoord = this.transformToGeographic([coord.lon, coord.lat], coord.epsg);\r\n } else {\r\n transformedCoord = this.transformCoordinates(coord.epsg, toCrs, [coord.lon, coord.lat]);\r\n }\r\n coord.lon = transformedCoord[0];\r\n coord.lat = transformedCoord[1];\r\n }\r\n if (coord.extent) {\r\n const transformedExtent = this.transformExtent(coord.epsg, toCrs, coord.extent);\r\n coord.extent = transformedExtent;\r\n }\r\n\r\n coord.epsg = toCrs;\r\n } else {\r\n console.error('transformEpsgCoordinate', toCrs);\r\n }\r\n\r\n return coord;\r\n }\r\n\r\n transformExtent(fromEpsg: string, toEpsg: string, coordinates: number[]) {\r\n let extent = this.transformCoordinates(fromEpsg, toEpsg, [coordinates[0], coordinates[1]]);\r\n coordinates[0] = extent[0];\r\n coordinates[1] = extent[1];\r\n extent = this.transformCoordinates(fromEpsg, toEpsg, [coordinates[2], coordinates[3]]);\r\n coordinates[2] = extent[0];\r\n coordinates[3] = extent[1];\r\n return coordinates;\r\n }\r\n\r\n addCustomProj(code: string, definition?: string) {\r\n // console.log('exists?', this.proj4.defs(code));\r\n let theProj = this.proj4.defs(code);\r\n if (definition && !theProj) {\r\n console.log('addCustomProj', code, definition);\r\n theProj = this.proj4.defs(code, definition);\r\n }\r\n if (theProj) {\r\n let proj = getProjection(code);\r\n if (proj) {\r\n return;\r\n }\r\n proj = new Projection({\r\n axisOrientation: theProj.axis,\r\n code: code,\r\n units: theProj.units\r\n });\r\n addProjection(proj);\r\n } else {\r\n console.error('addCustomProj', code);\r\n }\r\n }\r\n\r\n getUnits(epsg: string) {\r\n const proj = this.proj4.defs(epsg);\r\n if (proj) {\r\n return proj.units;\r\n }\r\n }\r\n\r\n getAxis(epsg: string) {\r\n const proj = this.proj4.defs(epsg);\r\n if (proj) {\r\n return proj.axis;\r\n }\r\n }\r\n\r\n hasVerticalValues(epsg: string): boolean {\r\n if (!epsg) {\r\n return false;\r\n }\r\n const proj = this.proj4.defs(epsg);\r\n if (proj) {\r\n // 3 dimension if vunits has a value\r\n return proj.vunits ? true : false;\r\n }\r\n return undefined; // Not all code paths return a value\r\n }\r\n\r\n transformGeoJsonFeaturesFromGeographic(geoJsonFeatures, fromEpsg) {\r\n if (geoJsonFeatures.features) {\r\n for (let i = 0; i < geoJsonFeatures.features.length; i++) {\r\n this.transformGeoJsonFeatureFromGeographic(geoJsonFeatures.features[i], fromEpsg);\r\n }\r\n return geoJsonFeatures;\r\n } else {\r\n return this.transformGeoJsonFeatureFromGeographic(geoJsonFeatures, fromEpsg);\r\n }\r\n }\r\n transformGeoJsonFeatureFromGeographic(geoJson, fromEpsg: string) {\r\n if (geoJson.geometry && geoJson.geometry.coordinates) {\r\n const featureCrds = geoJson.geometry.coordinates;\r\n if (featureCrds.length === 2 && typeof featureCrds[0] === 'number') {\r\n geoJson.geometry.coordinates = this.transformFromGeographic(featureCrds, fromEpsg);\r\n } else {\r\n for (let j = 0; j < featureCrds.length; j++) {\r\n if (featureCrds[j].length > 0 && Array.isArray(featureCrds[j][0])) {\r\n for (let k = 0; k < featureCrds[j].length; k++) {\r\n if (featureCrds[j][k].length > 0 && Array.isArray(featureCrds[j][k][0])) {\r\n for (let l = 0; l < featureCrds[j][k].length; l++) {\r\n geoJson.geometry.coordinates[j][k][l] = this.transformFromGeographic(featureCrds[j][k][l], fromEpsg);\r\n }\r\n } else {\r\n geoJson.geometry.coordinates[j][k] = this.transformFromGeographic(featureCrds[j][k], fromEpsg);\r\n }\r\n }\r\n } else {\r\n geoJson.geometry.coordinates[j] = this.transformFromGeographic(featureCrds[j], fromEpsg);\r\n }\r\n }\r\n }\r\n } else {\r\n console.error('No coordinates found!');\r\n return;\r\n }\r\n return geoJson;\r\n }\r\n transformGeoJsonFeaturesToGeographic(geoJsonFeatures, fromEpsg) {\r\n if (geoJsonFeatures.features) {\r\n for (let i = 0; i < geoJsonFeatures.features.length; i++) {\r\n this.transformGeoJsonFeatureToGeographic(geoJsonFeatures.features[i], fromEpsg);\r\n }\r\n return geoJsonFeatures;\r\n } else {\r\n return this.transformGeoJsonFeatureToGeographic(geoJsonFeatures, fromEpsg);\r\n }\r\n }\r\n transformGeoJsonFeatureToGeographic(geoJson, fromEpsg: string) {\r\n let featureCrds;\r\n if (geoJson.geometry && geoJson.geometry.coordinates) {\r\n featureCrds = geoJson.geometry.coordinates;\r\n if (featureCrds.length === 2 && typeof featureCrds[0] === 'number') {\r\n geoJson.geometry.coordinates = this.transformToGeographic(featureCrds, fromEpsg);\r\n } else {\r\n for (let j = 0; j < featureCrds.length; j++) {\r\n if (featureCrds[j].length > 0 && Array.isArray(featureCrds[j][0])) {\r\n for (let k = 0; k < featureCrds[j].length; k++) {\r\n if (featureCrds[j][k].length > 0 && Array.isArray(featureCrds[j][k][0])) {\r\n for (let l = 0; l < featureCrds[j][k].length; l++) {\r\n geoJson.geometry.coordinates[j][k][l] = this.transformToGeographic(featureCrds[j][k][l], fromEpsg);\r\n }\r\n } else {\r\n geoJson.geometry.coordinates[j][k] = this.transformToGeographic(featureCrds[j][k], fromEpsg);\r\n }\r\n }\r\n } else {\r\n // tslint:disable-next-line: max-line-length\r\n geoJson.geometry.coordinates[j] = this.transformToGeographic(featureCrds[j], fromEpsg);\r\n }\r\n }\r\n }\r\n } else if (geoJson.getGeometry() && geoJson.getGeometry().getCoordinates()) {\r\n featureCrds = geoJson.getGeometry().getCoordinates();\r\n if (featureCrds.length === 2 && typeof featureCrds[0] === 'number') {\r\n geoJson.getGeometry().setCoordinates(this.transformToGeographic(featureCrds, fromEpsg));\r\n } else {\r\n for (let j = 0; j < featureCrds.length; j++) {\r\n if (featureCrds[j].length > 0 && Array.isArray(featureCrds[j][0])) {\r\n for (let k = 0; k < featureCrds[j].length; k++) {\r\n // tslint:disable-next-line: max-line-length\r\n featureCrds[j][k] = this.transformToGeographic(featureCrds[j][k], fromEpsg);\r\n }\r\n } else {\r\n // tslint:disable-next-line: max-line-length\r\n featureCrds[j] = this.transformToGeographic(featureCrds[j], fromEpsg);\r\n }\r\n }\r\n geoJson.getGeometry().setCoordinates(featureCrds);\r\n }\r\n } else {\r\n console.error('No coordinates found!');\r\n return;\r\n }\r\n return geoJson;\r\n }\r\n\r\n}\r\n","import { Point } from 'ol/geom';\r\nimport { Feature } from 'ol';\r\nimport { GeoJSON, GML, WMSCapabilities } from 'ol/format';\r\n\r\nexport class MapImplementationUtilities {\r\n convertGmlToGeoJson(gml) {\r\n const xmlParser = new WMSCapabilities();\r\n const xmlFeatures = xmlParser.read(gml);\r\n const gmlParser = new GML();\r\n const features = gmlParser.readFeatures(xmlFeatures);\r\n const jsonParser = new GeoJSON();\r\n return jsonParser.writeFeatures(features);\r\n }\r\n\r\n extentToGeoJson(x, y) {\r\n const point = new Point([x, y]);\r\n const feature = new Feature();\r\n feature.setGeometry(point);\r\n const geoJson = new GeoJSON();\r\n return geoJson.writeFeature(feature);\r\n }\r\n\r\n calculateDistance = function (point1, point2) {\r\n // Assuming point1 and point2 are arrays [x, y]\r\n const dx = point1[0] - point2[0];\r\n const dy = point1[1] - point2[1];\r\n return Math.sqrt(dx * dx + dy * dy);\r\n }\r\n}\r\n","import { DomainLayer } from '../Domain/Layer';\r\nimport { EventsEventTypes } from '../Events/EventHandler';\r\nimport { RepositoryMapConfig } from './MapConfig';\r\n\r\nexport class RepositoryConfigRepository {\r\n eventHandler;\r\n httpHelper;\r\n\r\n constructor(eventHandler, httpHelper) {\r\n this.eventHandler = eventHandler;\r\n this.httpHelper = httpHelper;\r\n }\r\n\r\n _createConfig(config) {\r\n const defaults = {\r\n numZoomLevels: 18,\r\n newMaxRes: 21664.0,\r\n center: [570130, 7032300],\r\n zoom: 4,\r\n extent: [-2000000.0, 3500000.0, 3545984.0, 9045984.0],\r\n layers: [],\r\n proxyHost: 'http://geoinnsyn.norconsultad.com/services/isy.gis.isyproxy/?',\r\n tools: []\r\n };\r\n const result = {\r\n ...defaults,\r\n ...config,\r\n };\r\n\r\n const layers = [];\r\n for (let i = 0; i < config.layers.length; i++) {\r\n layers.push(new DomainLayer(config.layers[i]));\r\n }\r\n\r\n result.layers = layers;\r\n\r\n return new RepositoryMapConfig(result);\r\n }\r\n\r\n getMapConfig(url): Promise {\r\n return this.httpHelper.get(url, {responseType: 'json'})\r\n .then((data) => {\r\n const mapConfig = this._createConfig(data);\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapConfigLoaded, mapConfig);\r\n });\r\n }\r\n\r\n getMapConfigFromJson(jsonConfig) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.MapConfigLoaded, jsonConfig);\r\n }\r\n\r\n}\r\n","import { MapConfig } from '@isygis/isy-configs';\r\nexport class RepositoryMapConfig {\r\n constructor(config: MapConfig) {\r\n const defaults = {\r\n name: '',\r\n comment: '',\r\n useCategories: true,\r\n categories: [],\r\n numZoomLevels: 10,\r\n newMaxRes: 21664,\r\n newMaxScale: 81920000,\r\n renderer: 'canvas',\r\n center: [-1, 1],\r\n zoom: 5,\r\n layers: [],\r\n coordinate_system: 'EPSG:32633',\r\n matrixSet: 'EPSG:32633',\r\n extent: [-1, -1, -1, -1],\r\n extentUnits: 'm',\r\n proxyHost: '',\r\n groups: [],\r\n customLayerProjectGuid: '',\r\n };\r\n return {\r\n ...defaults,\r\n ...config,\r\n };\r\n }\r\n}\r\n","import jsPDF from 'jspdf/dist/jspdf.umd.js';\r\n\r\nexport function addBoxes(\r\n options: any,\r\n dim: any[],\r\n infoFieldMargin: number,\r\n pdf: jsPDF,\r\n infoFieldHeight: number,\r\n resolution: number\r\n) {\r\n const pixelsPerMm = resolution / 25.4;\r\n const maxIconWidth = 418;\r\n const maxIconHeight = 307;\r\n const infoFieldWidth = 190; // fixed width, fit A4 and larger. // dim[0];\r\n const infoFieldLeft = options.margins.left + dim[0] - infoFieldWidth;\r\n const infoFieldTop = options.margins.top + dim[1] + infoFieldMargin;\r\n\r\n pdf.rect(infoFieldLeft, infoFieldTop, infoFieldWidth, infoFieldHeight, 'S');\r\n\r\n const logoLineX = infoFieldLeft + infoFieldWidth / 5;\r\n pdf.line(logoLineX, infoFieldTop, logoLineX, infoFieldTop + infoFieldHeight);\r\n\r\n const northArrowLineX = infoFieldLeft + 4 * (infoFieldWidth / 5);\r\n pdf.line(\r\n northArrowLineX,\r\n infoFieldTop,\r\n northArrowLineX,\r\n infoFieldTop + infoFieldHeight\r\n );\r\n\r\n const titleLineY = infoFieldTop + infoFieldHeight / 3;\r\n pdf.line(logoLineX, titleLineY, northArrowLineX, titleLineY);\r\n\r\n const textLineY = infoFieldTop + 2 * (infoFieldHeight / 3);\r\n pdf.line(northArrowLineX, textLineY, infoFieldLeft + infoFieldWidth, textLineY);\r\n\r\n const dateLineY = infoFieldTop + 5 * (infoFieldHeight / 6);\r\n\r\n const titleLines = pdf.splitTextToSize(\r\n options.title,\r\n 3 * (infoFieldWidth / 5)\r\n );\r\n const titleX = logoLineX + infoFieldMargin;\r\n let titleY = infoFieldTop + infoFieldMargin;\r\n pdf.setFontSize(16);\r\n let linenr = 1;\r\n\r\n for (const line of titleLines) {\r\n if (linenr < 3) {\r\n const textDimensions = pdf.getTextDimensions(line);\r\n pdf.text(line, titleX, titleY + textDimensions.h);\r\n titleY = titleY + textDimensions.h;\r\n linenr++;\r\n }\r\n }\r\n\r\n let fontSize = pdf.getFontSize();\r\n if (options?.kommuneNavn) {\r\n let kommuneDimensions = pdf.getTextDimensions(options.kommuneNavn);\r\n while ((kommuneDimensions.w > (infoFieldWidth / 5) - (2 * infoFieldMargin)) && fontSize > 7) {\r\n fontSize = fontSize-1;\r\n pdf.setFontSize(fontSize);\r\n kommuneDimensions = pdf.getTextDimensions(options.kommuneNavn);\r\n }\r\n pdf.text(\r\n options?.kommuneNavn,\r\n infoFieldLeft + 1 * (infoFieldWidth / 10) - kommuneDimensions.w / 2,\r\n dateLineY + 3 * infoFieldMargin\r\n );\r\n }\r\n\r\n pdf.setFontSize(10);\r\n\r\n pdf.text(\r\n options?.scale.title,\r\n northArrowLineX + infoFieldMargin,\r\n textLineY + 3 * infoFieldMargin\r\n );\r\n\r\n const date = new Date();\r\n const now = `${date.getDate()}/${date.getMonth() + 1}-${date.getFullYear()}`;\r\n pdf.text(\r\n options?.dateTitle + now,\r\n northArrowLineX + infoFieldMargin,\r\n textLineY + 5 * infoFieldMargin\r\n );\r\n\r\n pdf.text(\r\n `${options.formatTitle} ${options?.sheetSize?.toUpperCase()}`,\r\n northArrowLineX + infoFieldMargin,\r\n dateLineY + 3 * infoFieldMargin\r\n );\r\n\r\n const textLines = pdf.splitTextToSize(options.text, (3 * (infoFieldWidth / 5)) - infoFieldMargin);\r\n let textY = titleLineY + infoFieldMargin;\r\n linenr = 1;\r\n for (const line of textLines) {\r\n if (linenr < 9) {\r\n const textDimensions = pdf.getTextDimensions(line);\r\n pdf.text(line, titleX, textY + textDimensions.h);\r\n textY = textY + textDimensions.h;\r\n linenr++;\r\n }\r\n }\r\n\r\n if (options?.northArrow.show) {\r\n const northArrowCenterX = infoFieldLeft + 9 * (infoFieldWidth / 10);\r\n const northArrowCenterY = infoFieldTop + infoFieldHeight / 3;\r\n const northArrowWidthMm = options.northArrow.width / pixelsPerMm;\r\n const northArrowHeightMm = options.northArrow.height / pixelsPerMm;\r\n pdf.addImage(\r\n options.northArrow.url,\r\n options.northArrow.type,\r\n northArrowCenterX - northArrowWidthMm / 2,\r\n northArrowCenterY - northArrowHeightMm / 2,\r\n northArrowWidthMm,\r\n northArrowHeightMm\r\n );\r\n }\r\n\r\n if (options?.icon.show) {\r\n const iconCenterX = infoFieldLeft + 1 * (infoFieldWidth / 10);\r\n const iconCenterY = infoFieldTop + infoFieldHeight / 2;\r\n const iconWidthMm = Math.min(options.icon.width, maxIconWidth) / pixelsPerMm;\r\n const iconHeightMm = Math.min(options.icon.height, maxIconHeight) / pixelsPerMm;\r\n // adjust icon height if width is larger than 220 or height is larger than 161\r\n const adjustMaxIconHeight = options.icon.width > 220 ? maxIconHeight : 161\r\n pdf.addImage(\r\n options.icon.url,\r\n options.icon.type,\r\n iconCenterX - iconWidthMm / 2,\r\n // iconCenterY - (maxIconHeight / pixelsPerMm) / 2,\r\n iconCenterY - (adjustMaxIconHeight / pixelsPerMm) / 2,\r\n iconWidthMm,\r\n iconHeightMm\r\n );\r\n }\r\n pdf.addMetadata('GeoInnsyn');\r\n pdf.setFontSize(8);\r\n const disclaimerX = infoFieldLeft + infoFieldMargin;\r\n const disclaimerY = infoFieldTop + 2 * infoFieldMargin + infoFieldHeight;\r\n pdf.text(options?.disclaimer, disclaimerX, disclaimerY);\r\n}\r\n","import jsPDF from 'jspdf/dist/jspdf.umd.js';\r\nimport { GisExtent } from '../Domain/Definitions';\r\nexport interface ILegendImage {\r\n image: string;\r\n title: string;\r\n type: string;\r\n width_mm: number;\r\n height_mm: number;\r\n}\r\n\r\ninterface IStyleObject {\r\n externalGraphic?: string;\r\n type: 'Point' | 'Polygon' | 'Line' | 'Triangle' | 'X' | 'Cross' | 'Star' | 'Square' | 'SubHeader' | 'Icon' | undefined;\r\n subtype?: 'Label';\r\n pointRadius?: number;\r\n points?: string;\r\n icon?: any;\r\n fill?: string | CanvasPattern;\r\n fillPattern?: any;\r\n fillOpacity?: number;\r\n stroke?: string;\r\n strokeOpacity?: number;\r\n strokeWidth?: number;\r\n strokeDashStyle?: string;\r\n name: string;\r\n filterName?: string;\r\n filterStyles?: IStyleObject[];\r\n fontStyle?: string;\r\n fontSize?: string;\r\n fontWeight?: string;\r\n fontColor?: string;\r\n fontFamily?: string;\r\n}\r\n\r\nexport interface LegendExtent {\r\n minX: number;\r\n minY: number;\r\n maxX: number;\r\n maxY: number;\r\n}\r\n\r\ntype TopBottom = 'top' | 'bottom';\r\n\r\nexport function addLegends(\r\n legendImages: ILegendImage[],\r\n pdf: jsPDF,\r\n pixelsPerMm: number,\r\n extent: LegendExtent,\r\n addPage: () => void\r\n): Promise {\r\n return placeLegends(legendImages, pdf, pixelsPerMm, extent, addPage);\r\n}\r\n\r\nexport function loadLegends(\r\n options: any,\r\n gisExtent: GisExtent,\r\n pixelsPerMm: number,\r\n pdf: jsPDF,\r\n errorLogger: (err: string) => void\r\n) {\r\n\r\n const legendImages: ILegendImage[] = [];\r\n\r\n const legendImagePromises = options.legendLayers\r\n .map(async (lyr) => {\r\n const title = lyr.name;\r\n let imgObj: ILegendImage;\r\n try {\r\n if (isWmsLayer(lyr)) {\r\n imgObj = await wmsLayer2Legend(lyr, gisExtent, title, pdf, pixelsPerMm);\r\n } else if (isWfsLayer(lyr)) {\r\n imgObj = await stylesToLegend(lyr.styles, title, pixelsPerMm);\r\n } else {\r\n console.log('Unknown legend layer: ', lyr);\r\n }\r\n } catch (error) {\r\n console.log('error', error);\r\n errorLogger(`Klarte ikke å laste tegnforklaring for: ${title}`);\r\n }\r\n if (imgObj && imgObj.height_mm > 2) {\r\n legendImages.push(imgObj);\r\n } else {\r\n if (imgObj) {\r\n errorLogger(`WMS-feil? Tegnforklaring fra ${title} på kun ${imgObj.height_mm.toFixed(2)}mm.`);\r\n } else {\r\n errorLogger(`WMS-feil? Ingen tegnforklaring fra ${title}.`);\r\n }\r\n }\r\n });\r\n\r\n return Promise.all(legendImagePromises)\r\n .then(() => Promise.resolve(legendImages));\r\n}\r\n\r\n\r\nfunction placeLegends(legendImages: ILegendImage[], pdf, pixelsPerMm, extent: LegendExtent, addNewPage: () => void) {\r\n let topOffset = extent.minY;\r\n let leftOffset = extent.minX;\r\n const legendTitleHeight = 5;\r\n\r\n return sortInGroupsOfBy(legendImages, extent.maxY - extent.minY, pixelsPerMm, legendTitleHeight)\r\n .then((groupedLegendImages) => {\r\n for (const col of groupedLegendImages) {\r\n const colBufferMm = 2; // WM-6713 legendGraphic is outside bounds\r\n const colWidth = Math.max(...col.map((obj) => obj.width_mm)) + colBufferMm;\r\n const colLength = col.reduce((acc, obj) => acc + obj.height_mm + legendTitleHeight, 0);\r\n const endOfHorizontalSpace = (leftOffset + colWidth) > extent.maxX;\r\n if (endOfHorizontalSpace) {\r\n addNewPage();\r\n leftOffset = extent.minX;\r\n }\r\n pdf.setFillColor('#FFFFFF');\r\n pdf.rect(leftOffset, topOffset, colWidth, colLength, 'F');\r\n pdf.setFontSize(10);\r\n const buffer = 1;\r\n for (const legend of col) {\r\n const splitTitle = pdf.splitTextToSize(legend.title, colWidth - 4);\r\n const title = splitTitle.length > 1 ? `${splitTitle[0]}...`\r\n : legend.title;\r\n pdf.text(title, leftOffset + buffer, topOffset + buffer, {baseline: 'top'});\r\n topOffset += legendTitleHeight;\r\n const leftPadding = 1;\r\n pdf.addImage(\r\n legend.image,\r\n legend.type,\r\n leftOffset + leftPadding,\r\n topOffset,\r\n legend.width_mm,\r\n legend.height_mm\r\n );\r\n topOffset += legend.height_mm;\r\n }\r\n topOffset = extent.minY;\r\n\r\n pdf.setFillColor('#000000');\r\n pdf.rect(leftOffset, topOffset, colWidth, colLength, 'S');\r\n\r\n leftOffset += colWidth;\r\n }\r\n });\r\n}\r\n\r\nfunction splitImage(legendImage: ILegendImage, splitHeightMm: number, pixelsPerMm: number, fadePixels): Promise {\r\n const widthPx = legendImage.width_mm * pixelsPerMm;\r\n const heightPx = legendImage.height_mm * pixelsPerMm;\r\n const splitHeightPx = splitHeightMm * pixelsPerMm;\r\n const extentTop: LegendExtent = {minX: 0, minY: 0, maxX: widthPx, maxY: splitHeightPx};\r\n const extentBottom: LegendExtent = {minX: 0, minY: splitHeightPx - (fadePixels * 2), maxX: widthPx, maxY: heightPx};\r\n return Promise.all([\r\n cropImage(legendImage, extentTop, pixelsPerMm, 'bottom', fadePixels),\r\n cropImage(legendImage, extentBottom, pixelsPerMm, 'top', fadePixels)\r\n ]);\r\n}\r\n\r\nfunction cropImage(legendImage: ILegendImage, extent: LegendExtent, pixelsPerMm: number, fadeSide: TopBottom = undefined, fadePixels: number = undefined): Promise {\r\n return new Promise((resolve) => {\r\n const img = new Image();\r\n img.crossOrigin = \"anonymous\";\r\n img.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = extent.maxX - extent.minX;\r\n canvas.height = extent.maxY - extent.minY;\r\n const ctx = canvas.getContext('2d');\r\n ctx.drawImage(img, -extent.minX, -extent.minY);\r\n if (fadeSide && fadePixels) {\r\n ctx.globalCompositeOperation = 'destination-out';\r\n const bottom = extent.maxY - extent.minY;\r\n const gradient = ctx.createLinearGradient(\r\n 0,\r\n fadeSide === 'top' ? fadePixels : bottom - fadePixels,\r\n 0,\r\n fadeSide === 'top' ? 0 : bottom\r\n );\r\n gradient.addColorStop(0, 'rgba(255,255,255,0');\r\n gradient.addColorStop(1, 'rgba(255,255,255,1');\r\n ctx.fillStyle = gradient;\r\n ctx.fillRect(0, 0, extent.maxX - extent.minX, extent.maxY - extent.minY);\r\n }\r\n const imgType = 'image/png';\r\n const dataURL = canvas.toDataURL(imgType);\r\n const newImg: ILegendImage = {\r\n image: dataURL,\r\n title: legendImage.title,\r\n width_mm: (extent.maxX - extent.minX) / pixelsPerMm,\r\n height_mm: (extent.maxY - extent.minY) / pixelsPerMm,\r\n type: imgType\r\n };\r\n resolve(newImg);\r\n }\r\n img.src = legendImage.image;\r\n });\r\n}\r\n\r\nasync function sortInGroupsOfBy(\r\n imgs: ILegendImage[],\r\n maxVal: number,\r\n pixelsPerMm: number,\r\n headerHeight: number\r\n): Promise {\r\n imgs.sort((a, b) => b.height_mm - a.height_mm);\r\n const sortedImgs = imgs;\r\n const groupes = [];\r\n const groupLength = [];\r\n\r\n const addToGroup = (img, gr) => {\r\n groupes[gr].push(img);\r\n groupLength[gr] += img.height_mm + headerHeight;\r\n };\r\n const addToNewGroup = (img) => {\r\n groupes.push([img]);\r\n groupLength.push(img.height_mm + headerHeight);\r\n };\r\n const placeOrSplit = async (img) => {\r\n if (img.height_mm > maxVal - headerHeight) {\r\n const [topImg, bottomImg] = await splitImage(img, maxVal - headerHeight, pixelsPerMm, 15);\r\n addToNewGroup(topImg);\r\n await placeOrSplit(bottomImg);\r\n } else {\r\n addToNewGroup(img);\r\n }\r\n };\r\n const placeImageInGroup = async (img) => {\r\n const gr = groupLength.findIndex((x) => x + img.height_mm <= maxVal - headerHeight);\r\n if (gr < 0) {\r\n await placeOrSplit(img);\r\n } else {\r\n addToGroup(img, gr);\r\n }\r\n };\r\n\r\n for (const img of sortedImgs) {\r\n await placeImageInGroup(img);\r\n };\r\n\r\n return groupes;\r\n}\r\n\r\nfunction urlToData(url: string) {\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.onload = function() {\r\n const reader = new FileReader();\r\n reader.onloadend = function() {\r\n resolve(reader.result);\r\n };\r\n reader.readAsDataURL(xhr.response);\r\n };\r\n xhr.onerror = function() {\r\n reject('error: ' + url);\r\n }\r\n xhr.open('GET', url);\r\n xhr.responseType = 'blob';\r\n xhr.send();\r\n });\r\n}\r\n\r\n\r\nfunction toLegendImageObject(data, title, pdf, pixelsPerMm) : ILegendImage {\r\n const props = pdf.getImageProperties(data);\r\n return {\r\n image: data,\r\n title: title,\r\n type: props.fileType,\r\n width_mm: props.width / pixelsPerMm,\r\n height_mm: props.height / pixelsPerMm\r\n }\r\n}\r\n\r\nasync function wmsLayer2Legend(lyr, gisExtent, title, pdf, pixelsPerMm) : Promise {\r\n const urlWithBBOX = lyr.subLayers[0].legendGraphicUrlWithBBOX(gisExtent);\r\n const img = await urlToData(urlWithBBOX);\r\n let imgObj = toLegendImageObject(img, title, pdf, pixelsPerMm);\r\n const bboxFailed = !imgObj || imgObj.height_mm < 2;\r\n\r\n // Set to false because some services have extremly long legends\r\n // Change to true to allow this. EH 30.08.2023\r\n const useNormalLegendGraphicsIfBboxFails = false;\r\n if (useNormalLegendGraphicsIfBboxFails && bboxFailed) {\r\n const urlWithOutBBOX = lyr.subLayers[0].legendGraphicUrl;\r\n const img = await urlToData(urlWithOutBBOX);\r\n imgObj = toLegendImageObject(img, title, pdf, pixelsPerMm);\r\n }\r\n return imgObj\r\n}\r\n\r\nfunction isWmsLayer(lyr) {\r\n return lyr?.subLayers[0]?.legendGraphicUrl;\r\n}\r\n\r\nfunction isWfsLayer(lyr) {\r\n return lyr?.styles && lyr.styles.length > 0;\r\n}\r\n\r\nasync function stylesToLegend(styles: IStyleObject[], title, pixelsPerMm): Promise {\r\n if (styles.length > 0 && styles[0].filterName && styles[0].filterStyles) {\r\n const filterStyles = [].concat(...styles.map((style) => [subHeaderStyle(style.filterName), ...style.filterStyles]));\r\n return stylesToLegend(filterStyles, title, pixelsPerMm);\r\n }\r\n const validStyles = styles.filter((x) => x.type);\r\n const canvas = document.createElement('canvas');\r\n const elementSize = 30;\r\n const width = 400;\r\n canvas.width = width;\r\n canvas.height = elementSize * validStyles.length;\r\n const ctx = canvas.getContext('2d');\r\n let currentHeight = 0;\r\n for (const style of validStyles) {\r\n switch (style?.type) {\r\n case 'Point':\r\n if (style.subtype === 'Label') {\r\n drawLabelSign(style, ctx, 0, currentHeight);\r\n } else {\r\n drawPoint(style, ctx, 0, currentHeight);\r\n }\r\n break;\r\n case 'Polygon':\r\n drawPolygon(style, ctx, 0, currentHeight);\r\n break;\r\n case 'Line':\r\n drawLine(style, ctx, 0, currentHeight);\r\n break;\r\n case 'Triangle':\r\n drawTriangle(style, ctx, 0, currentHeight);\r\n break;\r\n case 'Square':\r\n drawSquare(style, ctx, 0, currentHeight);\r\n break;\r\n case 'Star':\r\n drawStar(style, ctx, 0, currentHeight);\r\n break;\r\n case 'X':\r\n drawX(style, ctx, 0, currentHeight);\r\n break;\r\n case 'Cross':\r\n drawCross(style, ctx, 0, currentHeight);\r\n break;\r\n case 'Icon':\r\n await drawIcon(style, ctx, 0, currentHeight);\r\n break;\r\n case 'SubHeader':\r\n break;\r\n default:\r\n console.log('failed to find style:', style);\r\n continue;\r\n }\r\n\r\n const topBufferPixels = 5;\r\n if (style?.type === 'SubHeader') {\r\n const headerPaddingPixels = 5;\r\n drawLabel(style.name, ctx, headerPaddingPixels, currentHeight + topBufferPixels, width - headerPaddingPixels, 17);\r\n } else {\r\n drawLabel(style.name, ctx, elementSize, currentHeight + topBufferPixels, width - elementSize, 13);\r\n }\r\n currentHeight += elementSize;\r\n }\r\n const imgType = 'image/png';\r\n const dataURL = canvas.toDataURL(imgType);\r\n const newImg: ILegendImage = {\r\n image: dataURL,\r\n title: title,\r\n width_mm: canvas.width / pixelsPerMm,\r\n height_mm: canvas.height / pixelsPerMm,\r\n type: imgType\r\n }\r\n return newImg;\r\n}\r\n\r\nfunction subHeaderStyle(text: string): IStyleObject {\r\n return {\r\n type: 'SubHeader',\r\n name: text,\r\n }\r\n}\r\n\r\nfunction drawLabel(text: string, ctx: CanvasRenderingContext2D, x: number, y: number, maxWidth: number, fontSize: number) {\r\n ctx.fillStyle = 'rgb(0,0,0,1)';\r\n ctx.textBaseline = 'top';\r\n ctx.font = `${fontSize}px sans-serif`;\r\n ctx.fillText(text, x, y, maxWidth);\r\n}\r\n\r\nasync function drawIcon(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n const img = new Image();\r\n img.crossOrigin = \"anonymous\";\r\n img.src = style.externalGraphic;\r\n await img.decode();\r\n const w = img.width;\r\n const h = img.height;\r\n const scale = 20 / h;\r\n ctx.drawImage(img, x, y, w * scale, h * scale);\r\n}\r\n\r\nfunction drawPoint(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n const circle = () => {\r\n const path = new Path2D();\r\n const radius = 10;\r\n path.arc(12 + x, 12 + y, radius, 0, Math.PI * 2);\r\n return path;\r\n };\r\n fillPath(style, circle, ctx);\r\n strokePath(style, circle, ctx);\r\n}\r\n\r\nfunction drawPolygon(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n const polygon = () => {\r\n const path = new Path2D();\r\n path.moveTo(2 + x, 16 + y);\r\n [[4, 18], [20, 18], [22, 16], [22, 4], [20, 2], [4, 2], [2, 4], [2, 16]]\r\n .forEach(([dx, dy]) => path.lineTo(x + dx, y + dy));\r\n path.closePath();\r\n return path;\r\n };\r\n fillPath(style, polygon, ctx);\r\n strokePath(style, polygon, ctx);\r\n}\r\n\r\nfunction drawTriangle(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n const triangle = () => {\r\n const path = new Path2D();\r\n const r = 10;\r\n path.moveTo(3 + r + x, 3 + y);\r\n [[r, 0], [r * 2, r * 2], [0, r * 2]]\r\n .forEach(([dx, dy]) => path.lineTo(3 + x + dx, 3 + y + dy));\r\n path.closePath();\r\n return path;\r\n };\r\n fillPath(style, triangle, ctx);\r\n strokePath(style, triangle, ctx);\r\n}\r\n\r\nfunction drawSquare(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n const square = () => {\r\n const centerX = 12;\r\n const centerY = 12;\r\n const r = 10;\r\n const path = new Path2D();\r\n path.moveTo(centerX - r + x, centerY - r + y);\r\n [[centerX + r, centerY - r], [centerX + r, centerY + r], [centerX - r, centerY + r]]\r\n .forEach(([dx, dy]) => path.lineTo(x + dx, y + dy));\r\n path.closePath();\r\n return path;\r\n };\r\n fillPath(style, square, ctx);\r\n strokePath(style, square, ctx);\r\n}\r\n\r\nfunction drawLabelSign(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n ctx.fillStyle = style.fontColor || 'rgb(0,0,0,1)';\r\n ctx.textBaseline = 'top';\r\n const fontFamily = style.fontFamily || 'sans-serif';\r\n const fontStyle = style.fontStyle || 'normal';\r\n const fontWeight = style.fontWeight || 'normal';\r\n const fontSize = '18px';\r\n ctx.font = [fontStyle, fontWeight, fontSize, fontFamily].join(' ');\r\n const buffer = 3;\r\n ctx.fillText('T', x + buffer, y + buffer, 26);\r\n}\r\n\r\nfunction drawStar(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n // Default points for star\r\n const points = [[10, 0], [7.1, 6], [0.5, 6.9], [5.2, 11.5], [4.1, 18.1], [10, 15], [15.9, 18.1], [14.8, 11.5], [19.5, 6.9], [12.9, 6]];\r\n const star = () => {\r\n const path = new Path2D();\r\n path.moveTo(points[0][0] + x, points[0][1] + y);\r\n points.slice(1, points.length)\r\n .forEach(([dx, dy]) => path.lineTo(x + dx, y + dy));\r\n path.closePath();\r\n return path;\r\n };\r\n\r\n fillPath(style, star, ctx);\r\n strokePath(style, star, ctx);\r\n}\r\n\r\nfunction drawX(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n const X = () => {\r\n const centerX = 12;\r\n const centerY = 12;\r\n const r = 10;\r\n const path = new Path2D();\r\n path.moveTo(centerX - r + x, centerY - r + y);\r\n path.lineTo(centerX + r + x, centerY + r + y);\r\n path.moveTo(centerX - r + x, centerY + r + y);\r\n path.lineTo(centerX + r + x, centerY - r + y);\r\n return path;\r\n };\r\n strokePath(style, X, ctx);\r\n}\r\n\r\nfunction drawCross(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n const cross = () => {\r\n const centerX = 12;\r\n const centerY = 12;\r\n const r = 10;\r\n const path = new Path2D();\r\n path.moveTo(centerX - r + x, centerY + y);\r\n path.lineTo(centerX + r + x, centerY + y);\r\n path.moveTo(centerX + x, centerY - r + y);\r\n path.lineTo(centerX + x, centerY + r + y);\r\n return path;\r\n };\r\n strokePath(style, cross, ctx);\r\n}\r\n\r\nfunction drawLine(style: IStyleObject, ctx: CanvasRenderingContext2D, x: number, y: number) {\r\n const line = () => {\r\n const path = new Path2D;\r\n path.moveTo(2 + x, 13 + y);\r\n [[7, 7], [13, 13], [18, 7]].forEach(([dx, dy]) => path.lineTo(x + dx, y + dy));\r\n return path;\r\n };\r\n strokePath(style, line, ctx);\r\n}\r\n\r\nfunction strokePath(style: IStyleObject, path: () => Path2D, ctx: CanvasRenderingContext2D) {\r\n if (style.stroke) {\r\n ctx.strokeStyle = style.stroke;\r\n ctx.lineWidth = style.strokeWidth;\r\n ctx.lineCap = 'round';\r\n ctx.lineJoin = 'round';\r\n const dashStyle = validNumberArray(style.strokeDashStyle);\r\n ctx.setLineDash(dashStyle);\r\n ctx.globalAlpha = style.strokeOpacity;\r\n ctx.stroke(path());\r\n ctx.globalAlpha = 1;\r\n }\r\n}\r\n\r\nfunction validNumberArray(numbers: any): number[] {\r\n let numArray: number[] = [];\r\n if (Array.isArray(numbers)) {\r\n numArray = numbers;\r\n }\r\n if (typeof numbers === 'string') {\r\n numArray = numbers.split(' ').map((x) => parseInt(x, 10)).filter((x) => !isNaN(x));\r\n }\r\n const valid = numArray?.every((elt) => typeof elt === 'number');\r\n if (!valid) {\r\n console.log('not valid numString: ', numbers);\r\n }\r\n return valid ? numArray : [];\r\n}\r\n\r\nfunction fillPath(style: IStyleObject, path: () => Path2D, ctx: CanvasRenderingContext2D) {\r\n if (style.fillPattern) {\r\n if (style.fillPattern.solidLine === true) {\r\n const pattern = drawSolidPattern(style.fillPattern);\r\n style.fill = pattern;\r\n } else if (style.fillPattern.solidLine === false) {\r\n const pattern = drawLinePattern(style.fillPattern);\r\n style.fill = pattern;\r\n }\r\n }\r\n if (style.fill) {\r\n ctx.fillStyle = style.fill;\r\n ctx.globalAlpha = style.fillOpacity;\r\n ctx.fill(path());\r\n ctx.globalAlpha = 1;\r\n }\r\n}\r\n\r\nfunction drawLinePattern(patternStyle) {\r\n const patternCanvas = document.createElement('canvas');\r\n const patternCtx = patternCanvas.getContext('2d');\r\n let distance = patternStyle.strokeDistance ? patternStyle.strokeDistance : 10;\r\n let width = patternStyle.strokeWidth ? patternStyle.strokeWidth : 1;\r\n distance = distance * 0.8;\r\n width = width * 0.8;\r\n let size = distance + width;\r\n if (patternStyle.direction === 'DOWNRIGHT' || patternStyle.direction === 'UPRIGHT' || patternStyle.direction === 'CROSS') {\r\n size = 2 * distance + width;\r\n }\r\n patternCanvas.width = size;\r\n patternCanvas.height = size;\r\n // Set background color\r\n patternCtx.fillStyle = patternStyle.colors[0];\r\n patternCtx.fillRect(0, 0, patternCanvas.width, patternCanvas.height);\r\n if (patternStyle.direction === 'VERTICAL') {\r\n patternCtx.moveTo(size / 2, 0);\r\n patternCtx.lineTo(size / 2, size);\r\n } else if (patternStyle.direction === 'HORIZONTAL') {\r\n patternCtx.moveTo(0, size / 2);\r\n patternCtx.lineTo(size, size / 2);\r\n } else if (patternStyle.direction === 'GRID') {\r\n patternCtx.moveTo(0, size / 2);\r\n patternCtx.lineTo(size, size / 2);\r\n patternCtx.moveTo(size / 2, 0);\r\n patternCtx.lineTo(size / 2, size);\r\n } else if (patternStyle.direction === 'DOWNRIGHT') {\r\n patternCtx.moveTo(0, 0);\r\n patternCtx.lineTo(size, size);\r\n patternCtx.moveTo(-size, 0);\r\n patternCtx.lineTo(size, 2 * size);\r\n patternCtx.moveTo(0, -size);\r\n patternCtx.lineTo(2 * size, size);\r\n } else if (patternStyle.direction === 'UPRIGHT') {\r\n patternCtx.moveTo(0, size);\r\n patternCtx.lineTo(size, 0);\r\n patternCtx.moveTo(-size, size);\r\n patternCtx.lineTo(size, -size);\r\n patternCtx.moveTo(0, 2 * size);\r\n patternCtx.lineTo(2 * size, 0);\r\n } else if (patternStyle.direction === 'CROSS') {\r\n patternCtx.moveTo(0, size);\r\n patternCtx.lineTo(size, 0);\r\n patternCtx.moveTo(0, 0);\r\n patternCtx.lineTo(size, size);\r\n }\r\n patternCtx.strokeStyle = patternStyle.colors[1];\r\n patternCtx.lineWidth = width;\r\n patternCtx.stroke();\r\n\r\n // Create pattern\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n const finalPattern = ctx.createPattern(patternCanvas, 'repeat');\r\n\r\n return finalPattern;\r\n}\r\n\r\nfunction drawSolidPattern(patternStyle) {\r\n const patternCanvas = document.createElement('canvas');\r\n const patternCtx = patternCanvas.getContext('2d');\r\n const thickness = 6;\r\n const offset = 6;\r\n const numColors = patternStyle.colors.length;\r\n const size = numColors * thickness;\r\n patternCanvas.width = size;\r\n patternCanvas.height = size;\r\n for (let i = 0; i < numColors * 3; i++) {\r\n patternCtx.beginPath();\r\n patternCtx.lineWidth = thickness / 1.41;\r\n patternCtx.strokeStyle = patternStyle.colors[i % numColors];\r\n const x0 = i * thickness + thickness / 2 - size - offset;\r\n const y0 = -offset;\r\n const x1 = i * thickness + thickness / 2 + offset;\r\n const y1 = size + offset;\r\n if (patternStyle.direction === 'DOWNRIGHT') {\r\n patternCtx.moveTo(x0, y0);\r\n patternCtx.lineTo(x1, y1);\r\n patternCtx.stroke();\r\n } else if (patternStyle.direction === 'UPRIGHT') {\r\n patternCtx.moveTo(x0, y1);\r\n patternCtx.lineTo(x1, y0);\r\n patternCtx.stroke();\r\n } else if (patternStyle.direction === 'VERTICAL') {\r\n patternCtx.lineWidth = thickness;\r\n patternCtx.moveTo(i * thickness, 0);\r\n patternCtx.lineTo(i * thickness, size);\r\n patternCtx.stroke();\r\n } else if (patternStyle.direction === 'HORIZONTAL') {\r\n patternCtx.lineWidth = thickness;\r\n patternCtx.moveTo(0, i * thickness);\r\n patternCtx.lineTo(size, i * thickness);\r\n patternCtx.stroke();\r\n }\r\n }\r\n // Create pattern\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n const finalPattern = ctx.createPattern(patternCanvas, 'repeat');\r\n return finalPattern;\r\n}\r\n","import jsPDF from 'jspdf/dist/jspdf.umd.js';\r\n\r\n/**\r\n * This function is used to draw a graticule (a network of lines representing meridians and parallels) on a PDF document.\r\n * It first checks if the graticule should be shown based on the options provided. \r\n * If so, it sets the font size and draws the corner coordinates. \r\n * Then it sets the line width and draws the lines and their coordinates.\r\n * \r\n * @param options - The options for drawing the graticule.\r\n * @param pdf - The jsPDF instance representing the PDF document.\r\n * @param minX - The minimum X coordinate.\r\n * @param maxY - The maximum Y coordinate.\r\n * @param maxX - The maximum X coordinate.\r\n * @param minY - The minimum Y coordinate.\r\n * @param dim - The dimensions of the graticule.\r\n * @param linesX - The X positions of the graticule lines.\r\n * @param linesY - The Y positions of the graticule lines.\r\n */\r\nexport function drawGraticule(\r\n options: any, // Options for the graticule\r\n pdf: jsPDF, // The jsPDF instance\r\n minX: number, // The minimum X coordinate\r\n maxY: number, // The maximum Y coordinate\r\n maxX: number, // The maximum X coordinate\r\n minY: number, // The minimum Y coordinate\r\n dim: number[], // Dimensions of the graticule\r\n linesX: number[], // X coordinates of the lines\r\n linesY: number[] // Y coordinates of the lines\r\n) {\r\n // If the graticule should be shown\r\n if (options?.graticule?.show) {\r\n // Set the font size for the corner coordinates\r\n pdf.setFontSize(8);\r\n\r\n // Draw the top left corner coordinate\r\n pdf.text(\r\n `(${minX},\\n ${maxY})`,\r\n options.margins.left,\r\n options.margins.top - 5\r\n );\r\n\r\n // Draw the bottom right corner coordinate\r\n pdf.text(\r\n `(${maxX},\\n ${minY})`,\r\n options.margins.left + dim[0] - 16,\r\n options.margins.top + dim[1] - 6\r\n );\r\n\r\n // Set the line width for the graticule lines\r\n pdf.setLineWidth(0.1);\r\n\r\n // Draw the lines and their coordinates\r\n linesX.forEach((xPosition) => {\r\n linesY.forEach((yPosition) => {\r\n // Draw a horizontal line at the Y position\r\n pdf.line(\r\n options.margins.left + 12,\r\n options.margins.top + dim[1] - (dim[1] / (maxY - minY)) * (yPosition - minY),\r\n options.margins.left + dim[0],\r\n options.margins.top + dim[1] - (dim[1] / (maxY - minY)) * (yPosition - minY)\r\n );\r\n\r\n // Draw the Y coordinate\r\n pdf.text(\r\n `${yPosition}`,\r\n options.margins.left,\r\n options.margins.top + dim[1] - (dim[1] / (maxY - minY)) * (yPosition - minY) + 1\r\n );\r\n\r\n // Draw a vertical line at the X position\r\n pdf.line(\r\n options.margins.left + (dim[0] / (maxX - minX)) * (xPosition - minX),\r\n options.margins.top,\r\n options.margins.left + (dim[0] / (maxX - minX)) * (xPosition - minX),\r\n options.margins.top + dim[1] - 4\r\n );\r\n\r\n // Draw the X coordinate\r\n pdf.text(\r\n `${xPosition}`,\r\n options.margins.left + (dim[0] / (maxX - minX)) * (xPosition - minX) - 4,\r\n options.margins.top + dim[1] - 1\r\n );\r\n });\r\n });\r\n }\r\n}","export class UtilsGuid {\r\n\r\n private s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1); }\r\n\r\n newGuid() {\r\n return this.s4() + this.s4() + '-' + this.s4() + '-' + this.s4() + '-' +\r\n this.s4() + '-' + this.s4() + this.s4() + this.s4();\r\n\r\n }\r\n\r\n}\r\n","export function setSize(options: any) {\r\n let dim: [number, number];\r\n if (options?.format === 'landscape') {\r\n switch (options?.sheetSize) {\r\n case 'a0':\r\n dim = [1188, 841];\r\n break;\r\n case 'a1':\r\n dim = [841, 594];\r\n break;\r\n case 'a2':\r\n dim = [594, 420];\r\n break;\r\n case 'a3':\r\n dim = [420, 297];\r\n break;\r\n case 'a4':\r\n dim = [297, 210];\r\n break;\r\n case 'a5':\r\n dim = [210, 148];\r\n break;\r\n case 'a6':\r\n dim = [148, 105];\r\n break;\r\n default:\r\n options.sheetSize = 'a4';\r\n dim = [297, 210];\r\n }\r\n } else {\r\n options.format = 'portrait';\r\n switch (options?.sheetSize) {\r\n case 'a0':\r\n dim = [841, 1188];\r\n break;\r\n case 'a1':\r\n dim = [594, 841];\r\n break;\r\n case 'a2':\r\n dim = [420, 594];\r\n break;\r\n case 'a3':\r\n dim = [297, 420];\r\n break;\r\n case 'a4':\r\n dim = [210, 297];\r\n break;\r\n case 'a5':\r\n dim = [148, 210];\r\n break;\r\n case 'a6':\r\n dim = [105, 148];\r\n break;\r\n default:\r\n options.sheetSize = 'a4';\r\n dim = [210, 297];\r\n }\r\n }\r\n return dim;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ELogin } from '@isygis/isy-configs';\r\nimport { SessionStorageService } from 'ngx-webstorage';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PermissionService {\r\n constructor(\r\n private sessionStorageService: SessionStorageService,\r\n ) { \r\n // empty\r\n }\r\n\r\n getResources(): string[] {\r\n return this.sessionStorageService.retrieve(ELogin.RESOURCES) ?? [];\r\n }\r\n\r\n hasResource(neededResource: string): boolean {\r\n const resources = this.getResources();\r\n if (!resources) {\r\n return false;\r\n } else {\r\n return resources.includes(neededResource);\r\n }\r\n }\r\n}\r\n","export class EventsEventHandler {\r\n\r\n callBacks = [];\r\n singleCallBacks = [];\r\n pausedEvents = [];\r\n\r\n // ToDo:\r\n // registerEvent - return guid\r\n // unRegisterEvent - input is a guid\r\n\r\n pauseEvent(eventType) {\r\n if (eventType) {\r\n const eventIndex = this.pausedEvents.findIndex(value => value === eventType);\r\n if ( eventIndex < 0) {\r\n this.pausedEvents.push(eventType);\r\n }\r\n }\r\n }\r\n continueEvent(eventType) {\r\n if (eventType) {\r\n const eventIndex = this.pausedEvents.findIndex(value => value === eventType);\r\n if ( eventIndex >= 0) {\r\n this.pausedEvents.splice(eventIndex, 1);\r\n }\r\n }\r\n }\r\n eventIsPaused(eventType) {\r\n return this.pausedEvents.findIndex(value => value === eventType) >= 0;\r\n }\r\n\r\n registerSingleEvent(eventType, guid, callBack) {\r\n this.singleCallBacks.push({\r\n eventType: eventType,\r\n guid: guid,\r\n callBack: callBack\r\n });\r\n }\r\n\r\n registerEvent(eventType, guid, callBack) {\r\n // var before = 'RegisterEvent:' + eventType + ', callbacks:' + callBacks.length;\r\n // Prevent adding multiple identical events\r\n this.unRegisterEvent(eventType, guid);\r\n this.callBacks.push({\r\n eventType: eventType,\r\n guid: guid,\r\n callBack: callBack\r\n });\r\n // console.log(before, ' -> ', callBacks.length);\r\n }\r\n\r\n unRegisterEvent(eventType, guid) {\r\n // var before = 'unRegisterEvent:' + eventType + ', callbacks:' + callBacks.length;\r\n\r\n // count down to consider all callbacks (don't skip after splice)\r\n for (let i = this.callBacks.length - 1; i >= 0; i--) {\r\n if ( this.callBacks[i].eventType === eventType && (this.callBacks[i].guid === guid)) {\r\n this.callBacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n // console.log(before, ' -> ', callBacks.length);\r\n }\r\n\r\n unRegisterAllEvents() {\r\n this.callBacks = [];\r\n this.singleCallBacks = [];\r\n }\r\n\r\n triggerEvent(eventType, args) {\r\n if (this.eventIsPaused(eventType)) {\r\n return;\r\n }\r\n for (let i = 0; i < this.callBacks.length; ++i) {\r\n const callBack = this.callBacks[i];\r\n if (callBack.eventType === eventType) {\r\n if (callBack.callBack && (typeof callBack.callBack === 'function')) {\r\n callBack.callBack(args);\r\n }\r\n }\r\n }\r\n\r\n const singleIndexes = [];\r\n for (let i = 0; i < this.singleCallBacks.length; ++i) {\r\n const singleCallBack = this.singleCallBacks[i];\r\n if (singleCallBack && singleCallBack.eventType === eventType) {\r\n if (singleCallBack.callBack && (typeof singleCallBack.callBack === 'function')) {\r\n singleIndexes.push(i);\r\n singleCallBack.callBack(args);\r\n this.singleCallBacks[i] = undefined;\r\n }\r\n }\r\n }\r\n\r\n for (let i = this.singleCallBacks.length - 1; i >= 0; --i) {\r\n if (this.singleCallBacks[i]) {\r\n continue;\r\n }\r\n this.singleCallBacks.splice(i, 1);\r\n }\r\n }\r\n}\r\n\r\nexport const EventsEventTypes = {\r\n Initialized: 'Initialized',\r\n ErrorEvent: 'ErrorEvent',\r\n Refreshed: 'Refreshed'\r\n};\r\n","// import { EventsEventTypes } from '../Events/EventHandler';\r\nimport { CrossSectionConfig } from '../Interfaces/RoadConfig';\r\nimport { RoadCrossSectionImplementation } from '../RoadCrossSectionImplementation/RoadCrossSection';\r\nimport { LayerState } from '../Interfaces/CrossSectionRefreshed';\r\n\r\nexport class RoadCrossSectionAPI {\r\n\r\n implementation: RoadCrossSectionImplementation;\r\n svgNS = 'http://www.w3.org/2000/svg';\r\n\r\n constructor(roadProfileImplementation: RoadCrossSectionImplementation) {\r\n this.implementation = roadProfileImplementation;\r\n }\r\n\r\n init(params: CrossSectionConfig) {\r\n this.implementation.init(params);\r\n }\r\n\r\n draw() {\r\n this.implementation.draw();\r\n }\r\n\r\n refresh() {\r\n this.implementation.refresh();\r\n }\r\n\r\n toggleLayers(layerstates: LayerState[]) {\r\n this.implementation.toggleLayers(layerstates);\r\n }\r\n\r\n mirrorview(onoff: boolean) {\r\n this.implementation.mirrorview(onoff);\r\n }\r\n}\r\n","import { EventsEventHandler, EventsEventTypes } from '../Events/EventHandler';\r\nimport { RoadCrossSectionImplementation } from './RoadCrossSection';\r\nimport { RoadCrossSectionImplementationSvgElement } from './SvgElement';\r\nimport * as $ from 'jquery';\r\nimport { CrossSectionAPIResponse, CrossSectionResult, CrossSectionPoint } from '../Interfaces/CrossSectionAPIResponse';\r\nimport { LayerState, CrossSectionRefreshed } from '../Interfaces/CrossSectionRefreshed';\r\n\r\n\r\nexport class RoadCrossSectionImplementationDraw {\r\n\r\n eventHandler: EventsEventHandler;\r\n roadCrossSection: RoadCrossSectionImplementation;\r\n svgElement: RoadCrossSectionImplementationSvgElement;\r\n\r\n heightpx: number;\r\n widthpx: number;\r\n\r\n minmaxheight: number[];\r\n apiurl: string;\r\n projectid: number;\r\n roadlineid: number;\r\n meterperpx: number;\r\n relcenterheight: number;\r\n\r\n centerypx: number;\r\n centerxpx: number;\r\n\r\n ymarginpx = 250; // make room for texts/tables below graph\r\n // crosssectionjson: CrossSectionLayer[];\r\n crosssectionjson: CrossSectionResult;\r\n terrainjson: CrossSectionResult;\r\n\r\n layerchecked = {};\r\n mirroredview: boolean;\r\n\r\n boundingClientRect: DOMRect;\r\n\r\n tooltipmousemove;\r\n tooltipmouseout;\r\n showtooltip;\r\n hidetooltip;\r\n\r\n // http://help.novapoint.com/doku.php?id=no:np:road:ribbon_in_novapoint:design:road_surfaces:start\r\n flatetypes = {0: 'Midtdeler',\r\n 1: 'Kjørefelt',\r\n 2: 'Skulder',\r\n 3: 'Tillegg',\r\n 4: 'Grøft',\r\n 5: 'Fjellskjæring',\r\n 6: 'Jordskjæring',\r\n 7: 'Fylling'};\r\n\r\n // utelat lag som inneholder følgende i navnet:\r\n layernamesignore = [ 'subgradesurface']; // 'constructionbed',\r\n\r\n constructor(eventHandler: EventsEventHandler, implementation: RoadCrossSectionImplementation) {\r\n this.eventHandler = eventHandler;\r\n this.roadCrossSection = implementation;\r\n this.svgElement = new RoadCrossSectionImplementationSvgElement();\r\n\r\n this.showtooltip = (element: any, x: number, y: number) => {\r\n if ( element === null) {\r\n this.hidetooltip();\r\n return null;\r\n }\r\n const tooltip = document.getElementById('crosssectiontooltip');\r\n tooltip.innerHTML = element.getAttributeNS('isyns', 'tooltip');\r\n if (tooltip.innerHTML === '' || tooltip.innerHTML == null) {\r\n this.hidetooltip();\r\n return null;\r\n }\r\n tooltip.style.display = 'block';\r\n tooltip.style.left = (x + 10) + 'px';\r\n tooltip.style.top = (y + 10) + 'px';\r\n return tooltip.innerHTML;\r\n };\r\n\r\n this.hidetooltip = () => {\r\n const tooltip = document.getElementById('crosssectiontooltip');\r\n tooltip.style.display = 'none';\r\n };\r\n\r\n this.tooltipmousemove = (evt) => {\r\n this.showtooltip(evt.target, evt.clientX, evt.clientY);\r\n };\r\n this.tooltipmouseout = () => {\r\n this.hidetooltip();\r\n };\r\n }\r\n\r\n\r\n draw() {\r\n this.apiurl = this.roadCrossSection.config.roadapiurl;\r\n this.projectid = this.roadCrossSection.config.projectid;\r\n this.roadlineid = this.roadCrossSection.config.roadlineid;\r\n if ( !this.apiurl.endsWith('/') ) { this.apiurl += '/'; }\r\n const east = this.roadCrossSection.config.east;\r\n const north = this.roadCrossSection.config.north;\r\n const srs = this.roadCrossSection.config.srs;\r\n\r\n\r\n // hent data for lengdeprofil\r\n const url = this.apiurl + 'roadprojects/' + this.projectid + '/roadPolylines/' + this.roadlineid + '/crosssection/' +\r\n east + '/' + north + '?coordinate_reference_system=' + srs;\r\n $.ajax( {url: url,\r\n success: (data) => {\r\n this.crossSectionAPICallback(data);\r\n },\r\n error: () => {\r\n console.error('Error to load cross section json.');\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Fail to load cross section json.');\r\n }\r\n });\r\n }\r\n\r\n\r\n crossSectionAPICallback( response: CrossSectionAPIResponse ) {\r\n this.crosssectionjson = response.result;\r\n this.terrainjson = null; // 25.9.2020 for å unngå bruk av terreng fra evt. tidligere tegninger\r\n this.refresh();\r\n }\r\n\r\n\r\n refresh() {\r\n\r\n const svgdoc = this.roadCrossSection.getSvgDocument();\r\n this.widthpx = svgdoc.parentNode.offsetWidth; // parseInt( (this.roadProfile.roadConfig.width + '').replace('px', ''), 10);\r\n this.heightpx = svgdoc.parentNode.offsetHeight; // parseInt((this.roadProfile.roadConfig.height + '').replace('px', ''), 10);\r\n\r\n this.centerxpx = this.widthpx / 2;\r\n\r\n svgdoc.setAttribute('viewBox', '0 0 ' + this.widthpx + ' ' + this.heightpx);\r\n\r\n this.clear(svgdoc);\r\n\r\n if ( this.heightpx < 1 ) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Invalid height.');\r\n }\r\n\r\n if ( this.widthpx < 1 ) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Invalid width.');\r\n }\r\n\r\n this.boundingClientRect = svgdoc.getBoundingClientRect();\r\n\r\n // ramme\r\n const coordArr = [0, 0,\r\n 0, this.heightpx,\r\n this.widthpx, this.heightpx,\r\n this.widthpx, 0,\r\n 0, 0];\r\n this.drawPolyline(svgdoc, coordArr);\r\n\r\n // rutenett\r\n const gGrid = this.svgElement.createElement('g');\r\n svgdoc.appendChild(gGrid);\r\n\r\n // senterlinje\r\n const coordcenterline = [ this.centerxpx, 0, this.centerxpx, this.heightpx];\r\n const centerline = this.drawPolyline(svgdoc, coordcenterline, '');\r\n const dasharray = [20, 5, 5, 5];\r\n centerline.setAttribute('stroke-dasharray', dasharray.join(' '));\r\n\r\n if (this.crosssectionjson == null) {\r\n return;\r\n }\r\n\r\n const gTerrain = this.svgElement.createElement('g');\r\n svgdoc.appendChild(gTerrain);\r\n\r\n // finn ekstrem-verdiene for tversnitt-lagene\r\n let minheight = Number.MAX_SAFE_INTEGER; // 999999;\r\n let maxheight = -minheight;\r\n let maxdistance = maxheight;\r\n let layer0pointright: CrossSectionPoint = null;\r\n let layer0pointleft: CrossSectionPoint = null;\r\n const maxheightallowed = 50; // 29.9.2020 ignorer ekstremverdier\r\n const layerindextoremove = []; // noen lag skal utelates\r\n for ( let l = 0; l < this.crosssectionjson.crossSectionLayers.length; l++) {\r\n const layer = this.crosssectionjson.crossSectionLayers[l];\r\n\r\n // identifiser lag som skal utelates\r\n let ignore = false;\r\n const layernamelc = layer.layerName.toLowerCase();\r\n for ( let l2 = 0; l2 < this.layernamesignore.length; l2++ ) {\r\n const lnameignore = this.layernamesignore[l2];\r\n if (layernamelc.indexOf(lnameignore) > -1 ) {\r\n layerindextoremove.push(l);\r\n ignore = true;\r\n break;\r\n }\r\n }\r\n if ( ignore ) { continue; }\r\n\r\n for ( let s = 0; s < layer.crossSectionSide.length; s++) {\r\n const side = layer.crossSectionSide[s];\r\n const numpoints = side.crossSectionPoint.length;\r\n for (let p = 0; p < side.crossSectionPoint.length; p++ ) {\r\n const point = side.crossSectionPoint[p];\r\n\r\n if ( numpoints > 1 ) { // 25.9.2020 ignorer disse\r\n if ( point.height < minheight && point.height > - maxheightallowed ) { minheight = point.height; }\r\n if ( point.height > maxheight && point.height < maxheightallowed ) { maxheight = point.height; }\r\n if ( point.distance > maxdistance ) { maxdistance = point.distance; }\r\n }\r\n\r\n if ( p === side.crossSectionPoint.length - 1 ) {\r\n if ( side.isLeftSide && l === 0 ) {\r\n layer0pointleft = point;\r\n } else if ( !side.isLeftSide && l === 0 ) {\r\n layer0pointright = point;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // takle tilfeller uten lag / ubestemt utstrekning\r\n if ( this.crosssectionjson.crossSectionLayers.length < 1 || minheight === Number.MAX_SAFE_INTEGER ) {\r\n const offset = 5;\r\n minheight = offset; // this.crosssectionjson.heightCenterline - offset; // 70; // ;\r\n maxheight = offset; // this.crosssectionjson.heightCenterline + offset;\r\n maxdistance = 50;\r\n }\r\n\r\n\r\n // fjern uønskede lag fra dataene\r\n for ( let i = layerindextoremove.length - 1; i >= 0; i--) {\r\n this.crosssectionjson.crossSectionLayers.splice(layerindextoremove[i], 1);\r\n }\r\n\r\n // skalering\r\n const extentwidth = maxdistance * 2;\r\n const extentheight = (maxheight - minheight) * 1.2; // ekstra plass for linje med flatetyper over profilet\r\n\r\n\r\n if ( extentheight === 0 && extentwidth === 0) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Extent was 0.');\r\n }\r\n this.relcenterheight = minheight + extentheight / 2;\r\n\r\n const fudge = 1.05;\r\n const factextent = extentheight / extentwidth;\r\n const factpx = this.heightpx / this.widthpx;\r\n if ( factextent < factpx) {\r\n this.meterperpx = extentwidth * fudge / this.widthpx;\r\n } else {\r\n this.meterperpx = (extentheight) * fudge / this.heightpx;\r\n }\r\n this.centerypx = this.heightpx / 2;\r\n\r\n\r\n // rutenett\r\n const gridmeters = 1;\r\n const gridpixels = this.meter2px(gridmeters);\r\n // // sentrer nett rundt origo\r\n // const xgridstart = (this.widthpx / 2) - gridpixels * Math.floor((this.widthpx / gridpixels) / 2);\r\n // for ( var x = xgridstart; x < this.widthpx; x += gridpixels) {\r\n // const coordline = [x, 0, x, this.heightpx];\r\n // this.drawPolyline(gGrid, coordline, 'grid');\r\n // }\r\n\r\n let isxaxis = true;\r\n this.drawGrid(gGrid, isxaxis, gridmeters);\r\n this.drawGrid(gGrid, isxaxis, -gridmeters);\r\n isxaxis = false;\r\n this.drawGrid(gGrid, isxaxis, gridmeters);\r\n this.drawGrid(gGrid, isxaxis, -gridmeters);\r\n\r\n // test\r\n // const lineref = [\r\n // this.distance2px(0),\r\n // this.relheight2px(0),\r\n\r\n // this.distance2px(2),\r\n // this.absheight2px(90)\r\n // ];\r\n // this.drawPolyline(gGrid, lineref, 'grid');\r\n\r\n const eventinfo: CrossSectionRefreshed = { layers: [],\r\n mirroredview: this.mirroredview,\r\n profilenumber: 0,\r\n targetId: this.roadCrossSection.config.targetId // 23.11.2020\r\n };\r\n const layerstates = eventinfo.layers;\r\n\r\n // tegn tversnitt-lagene\r\n const pyflatetyp = this.heightpx / 10;\r\n const layercount = this.crosssectionjson.crossSectionLayers.length;\r\n\r\n // legg tekstene på til slutt (over linjene)\r\n const gtexts = this.svgElement.createElement('g');\r\n\r\n const defsele = this.roadCrossSection.getDefsElement();\r\n\r\n for ( let l = 0; l < layercount; l++) {\r\n // for ( var l = layercount - 1; l >= 0; l-- ) {\r\n const layer = this.crosssectionjson.crossSectionLayers[l];\r\n\r\n let layerdisplay = false;\r\n const checkedval = this.layerchecked[layer.layerId];\r\n if ( checkedval == null || checkedval === true ) {\r\n layerdisplay = true;\r\n this.layerchecked[layer.layerId] = layerdisplay;\r\n }\r\n\r\n // 21.8.2020 layer info for geoinnsyn legend\r\n const ls: LayerState = {id: layer.layerId,\r\n name: layer.layerName,\r\n display: layerdisplay};\r\n layerstates.push(ls);\r\n\r\n const g = this.svgElement.createElement('g');\r\n g.id = 'cslayer_' + layer.layerId;\r\n g.setAttribute('display', (layerdisplay ? 'inline' : 'none'));\r\n svgdoc.appendChild(g);\r\n\r\n const gtxt = this.svgElement.createElement('g');\r\n gtxt.id = 'cslayer_text_' + layer.layerId;\r\n gtxt.setAttribute('display', (layerdisplay ? 'inline' : 'none'));\r\n gtexts.appendChild(gtxt);\r\n\r\n // let csshoveradded = false;\r\n\r\n for ( let s = 0; s < layer.crossSectionSide.length; s++) {\r\n const side = layer.crossSectionSide[s];\r\n const coords = [];\r\n const coordsflatetyp = [];\r\n // let currflatetype = -1;\r\n for (let p = 0; p < side.crossSectionPoint.length; p++ ) {\r\n const point = side.crossSectionPoint[p];\r\n\r\n const px = this.distance2px ( (side.isLeftSide ? -1 : 1) * point.distance);\r\n const py = this.relheight2px(point.height);\r\n coords.push(px, // avstand fra senterlinje (x)\r\n py); // høydeforskjell fra senterlinje (y)\r\n\r\n coordsflatetyp.push(px, pyflatetyp);\r\n\r\n let lineele: SVGPolylineElement = null;\r\n let useele : SVGUseElement = null;\r\n if ( p > 0 ) {\r\n const slopeperc = this.representNumberWithOneDigit(point.slope * 100); // Math.round(point.slope * 100);\r\n\r\n // linjeelement for hvert lag, med tooltip\r\n const layerclassname = 'layerline' + layer.layerId;\r\n // 6.11.2020 legger linja i defs og peker til den med use-elementer\r\n const eleid = 'id' + l + '_' + s + '_' + p;\r\n lineele = this.drawPolyline(defsele, coords, 'noclass') as SVGPolylineElement;\r\n lineele.setAttribute('id', eleid);\r\n useele = this.addUse(g, eleid, layerclassname) as SVGUseElement;\r\n\r\n // 5.11.2020 thicker, invisible line for tooltip event\r\n const pointerclassname = 'activelayerline';\r\n // const lineeleTop = this.drawPolyline(defsele, coords, pointerclassname) as SVGPolylineElement;\r\n const useeleTop = this.addUse(g, eleid, pointerclassname) as SVGUseElement;\r\n\r\n // if ( !csshoveradded ) {\r\n // this.addhoverstyle(layerclassname);\r\n // csshoveradded = true;\r\n // }\r\n const nl = '
    ';\r\n const tooltiptxt = layer.layerName + nl +\r\n 'Bredde: ' + point.width.toFixed(2) + nl +\r\n 'Tverrfall: ' + slopeperc + '%' + nl +\r\n 'Flatenummer: ' + point.flateNumber + nl +\r\n 'Høyde: ' + point.height.toFixed(2);\r\n // const title = this.svgElement.createElement('title', null, tooltiptxt);\r\n // lineele.appendChild(title);\r\n // title er upålitelig i chrome, alternativ:\r\n this.setTooltip(useeleTop, tooltiptxt);\r\n\r\n const xpxprev = coords[coords.length - 4];\r\n const ypxprev = coords[coords.length - 3];\r\n if ( l === 0) {\r\n // tverrfall på overflata\r\n const txtpx = px - (px - xpxprev) / 2;\r\n const txtpy = py - (py - ypxprev) / 2 - 6;\r\n this.drawText(gtxt, txtpx, txtpy, slopeperc + '%', 'linelabelmidmid', true);\r\n\r\n // flatetyper (horisontal linje øverst i profilet)\r\n\r\n // flatetype skillelinjer (pluss en liten skråstrek)\r\n this.drawPolyline(g, [px, pyflatetyp - 4, px, pyflatetyp + 28], null);\r\n const diagval = 4;\r\n this.drawPolyline(g, [px - diagval, pyflatetyp + diagval, px + diagval, pyflatetyp - diagval], null);\r\n\r\n // flatetype tekst for bredde\r\n const isnarrow = (point.width < 0.6 ? true : false);\r\n const titlewidth = point.width.toFixed(2) + '';\r\n // if ( isnarrow ) { titlewidth = ''; }\r\n const txtpxy = pyflatetyp - 9;\r\n const typetxtele = this.drawText(gtxt, txtpx, txtpxy, titlewidth, 'linelabelmidmid', true);\r\n if ( isnarrow) {\r\n const eletxtx = typetxtele.getAttribute('x'); // if x is mirrored\r\n typetxtele.setAttribute('transform', 'rotate(-90,' + eletxtx + ',' + txtpxy + ') translate(8, 0)');\r\n }\r\n\r\n // tekst for flatetype\r\n const flatetype = Math.floor( Math.abs(point.flateNumber ));\r\n // if ( currflatetype !== flatetype || true ) {\r\n // currflatetype = flatetype;\r\n const flatetypetitle = this.getFlatetypeTitle(flatetype);\r\n\r\n let txtpytitle = pyflatetyp + 16;\r\n let classname = 'linelabelmidmid';\r\n\r\n if ( isnarrow ) {\r\n classname = 'linelabelvertical';\r\n txtpytitle -= 6;\r\n // flatetypetitle += ' ' + point.width.toFixed(2);\r\n }\r\n const eletxt = this.drawText(gtxt, txtpx, txtpytitle, flatetypetitle, classname, true) as SVGTextElement;\r\n this.setTooltip(eletxt, 'Flatenummer: ' + point.flateNumber);\r\n if ( isnarrow ) {\r\n const eletxtx = eletxt.getAttribute('x'); // if x is mirrored\r\n eletxt.setAttribute('transform', 'rotate(-90,' + eletxtx + ',' + txtpytitle + ')');\r\n }\r\n // }\r\n }\r\n\r\n coords.shift();\r\n coords.shift();\r\n }\r\n\r\n // label\r\n if ( p === side.crossSectionPoint.length - 1) {\r\n\r\n let refvaldist = 0;\r\n let refvalheight = 0;\r\n\r\n if (layer0pointleft != null) {\r\n refvaldist = layer0pointleft.distance;\r\n refvalheight = layer0pointleft.height;\r\n }\r\n if ( !side.isLeftSide && layer0pointright != null ) {\r\n refvaldist = layer0pointright.distance;\r\n refvalheight = layer0pointright.height;\r\n }\r\n\r\n // let xpx = this.centerxpx + (side.isLeftSide ? -1 : 1) * this.meter2px( refvaldist);\r\n let xpx = this.distance2px( (side.isLeftSide ? -1 : 1) * refvaldist);\r\n const xoffset = 100;\r\n if ( !side.isLeftSide && !this.mirroredview ) {\r\n xpx -= xoffset; // text anchor is at start\r\n } else if ( side.isLeftSide && this.mirroredview) {\r\n xpx += xoffset;\r\n }\r\n\r\n // let ypx = this.centerypx - this.meter2px(refvalheight - relcenterheight);\r\n let ypx = this.relheight2px(refvalheight);\r\n const lineheight = 14;\r\n if ( ypx > this.heightpx / 2) { // punkt i øvre halvdel, plasser tekst under punktet\r\n ypx -= ( (layercount + 1) * lineheight ) - ( lineheight * l );\r\n } else { // punkt i nedre halvdel, plasser tekst over punktet\r\n ypx += ( lineheight * (l + 4) );\r\n }\r\n\r\n // try to avoid clutter\r\n // const suggestedpoint = this.getSuggestedPoint(xpx, ypx, 0);\r\n // xpx = suggestedpoint.x;\r\n // ypx = suggestedpoint.y;\r\n const txtele = this.drawText(gtxt, xpx, ypx, layer.layerName, 'linelabel', true) as any;\r\n if ( useele) { // 26.3.2021 useele instead of lineele\r\n const stylecomp = window.getComputedStyle(useele);\r\n const val = stylecomp.getPropertyValue('stroke'); \r\n if ( val !== 'none' ) {\r\n txtele.style.setProperty('fill', val);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if ( l === 0) { // flatetyper for første lag (overflata)\r\n this.drawPolyline(g, coordsflatetyp, null);\r\n }\r\n }\r\n }\r\n\r\n svgdoc.appendChild(gtexts);\r\n\r\n // horisontal linje og tekst for senterlinje\r\n let centerlineheightoffset = extentheight / 4;\r\n if ( minheight < centerlineheightoffset ) {\r\n centerlineheightoffset = (0 - minheight) / 2;\r\n }\r\n const clheightabs = Math.floor( this.crosssectionjson.heightCenterline - centerlineheightoffset);\r\n const clheightpx = this.absheight2px(clheightabs);\r\n const coordsline = [this.centerxpx - gridpixels * 5 , clheightpx,\r\n this.centerxpx + gridpixels * 5 , clheightpx];\r\n const line = this.drawPolyline(svgdoc, coordsline, '');\r\n const dasharr = [gridpixels, gridpixels, gridpixels, gridpixels, gridpixels * 2];\r\n line.setAttribute('stroke-dasharray', dasharr.join(' '));\r\n\r\n // senterlinje høyde\r\n this.drawText(gtexts, coordsline[2] + 15, clheightpx, clheightabs + '', 'centerlinelabel', true);\r\n\r\n // profilnummer\r\n this.drawText(gtexts, this.centerxpx + 28, this.centerypx / 2, this.crosssectionjson.profile + '', 'centerlinelabel', true);\r\n\r\n // 5.11.2020\r\n eventinfo.profilenumber = this.crosssectionjson.profile;\r\n\r\n // terreng\r\n this.drawTerrain(gTerrain, eventinfo);\r\n }\r\n\r\n\r\n addhoverstyle(layerclassname ) {\r\n // https://stackoverflow.com/questions/11371550/change-hover-css-properties-with-javascript\r\n const style = this.roadCrossSection.getStyleElement();\r\n const csshover = '.' + layerclassname + ':hover {stroke: aqua;stroke-width: 3px;}';\r\n if (style.styleSheet) {\r\n style.styleSheet.cssText = csshover;\r\n } else {\r\n style.appendChild(document.createTextNode(csshover));\r\n }\r\n }\r\n\r\n drawTerrain(parent, eventinfo: CrossSectionRefreshed) {\r\n if (this.terrainjson == null) {\r\n // hent data for terreng\r\n const east = this.roadCrossSection.config.east;\r\n const north = this.roadCrossSection.config.north;\r\n const srs = this.roadCrossSection.config.srs;\r\n const url = this.apiurl + 'roadprojects/' + this.projectid + '/roadPolylines/' + this.roadlineid +\r\n '/crosssection/terrain/' +\r\n east + '/' + north + '?coordinate_reference_system=' + srs;\r\n $.ajax( {url: url,\r\n success: (data: CrossSectionAPIResponse) => {\r\n this.terrainjson = data.result;\r\n this.terrainAPICallback(parent, eventinfo);\r\n },\r\n error: () => {\r\n console.error('Error to load terrain.');\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Fail to load terrain.');\r\n }\r\n });\r\n\r\n } else {\r\n this.terrainAPICallback(parent, eventinfo);\r\n }\r\n }\r\n\r\n\r\n terrainAPICallback(parent, eventinfo: CrossSectionRefreshed) {\r\n if (this.terrainjson != null) {\r\n const layers = this.terrainjson.crossSectionLayers;\r\n const defsele = this.roadCrossSection.getDefsElement();\r\n let t = 0;\r\n layers.forEach(layer => {\r\n // let csshoveradded = false;\r\n layer.crossSectionSide.forEach( side => {\r\n const coords = [];\r\n side.crossSectionPoint.forEach(point => {\r\n const px = this.distance2px( (side.isLeftSide ? -1 : 1) * point.distance);\r\n const py = this.absheight2px (point.height); // forventer absolutte høyde-verdier her\r\n coords.push(px, // avstand fra senterlinje (x)\r\n py); // høydeforskjell fra senterlinje (y)\r\n });\r\n let layerclassname = 'terrainlinecs';\r\n if(layer.layerName==='MarkdekkeflateUspesifisert'){ //13.8.2021 WM-4487\r\n layerclassname = 'terrainlineMarkdekkeflateUspesifisert';\r\n }\r\n\r\n const ele = this.drawPolyline(defsele, coords, 'noclass') as SVGElement;\r\n const eleid = 'terr' + t++;\r\n ele.setAttribute('id', eleid);\r\n this.addUse(parent, eleid, layerclassname);\r\n\r\n const pointerclassname = 'activelayerline';\r\n const useeleTop = this.addUse(parent, eleid, pointerclassname) as SVGUseElement;\r\n this.setTooltip(useeleTop, layer.layerName);\r\n\r\n // if ( !csshoveradded ) {\r\n // this.addhoverstyle(layerclassname);\r\n // csshoveradded = true;\r\n // }\r\n });\r\n\r\n });\r\n }\r\n this.eventHandler.triggerEvent(EventsEventTypes.Refreshed, eventinfo);\r\n }\r\n\r\n setTooltip(element: SVGElement, text: string) {\r\n // https://stackoverflow.com/questions/10643426/how-to-add-a-tooltip-to-an-svg-graphic\r\n element.onmousemove = this.tooltipmousemove;\r\n element.setAttributeNS('isyns', 'tooltip', text);\r\n element.onmouseout = this.tooltipmouseout;\r\n element.style.cursor = 'pointer';\r\n }\r\n\r\n getSuggestedPoint(x: number, y: number, trycount: number): SVGPoint {\r\n const svgdoc = this.roadCrossSection.getSvgDocument();\r\n const p = svgdoc.createSVGPoint();\r\n\r\n if ( trycount > 100 ) {\r\n console.log('Too many tries.');\r\n p.x = x;\r\n p.y = y;\r\n return p;\r\n }\r\n\r\n const boundingParent = this.boundingClientRect;\r\n const tstx = Math.round(x + boundingParent.left); // svgdoc.parentNode.offsetLeft);\r\n let tsty = Math.round(y + (boundingParent.top) );\r\n // console.log('testing for ' + x + ' ' + y);\r\n let ele = svgdoc.ownerDocument.elementFromPoint( tstx , tsty );\r\n let lowertaken = false;\r\n if ( ele ) {\r\n // console.log('tst ' + current.nodeName );\r\n if ( ele.nodeName === 'text') {\r\n // console.log('position taken');\r\n lowertaken = true;\r\n }\r\n }\r\n let uppertaken = false;\r\n tsty = Math.round(y - 12 + (boundingParent.top) );\r\n ele = svgdoc.ownerDocument.elementFromPoint( tstx , tsty );\r\n if ( ele ) {\r\n if ( ele.nodeName === 'text') {\r\n uppertaken = true;\r\n }\r\n }\r\n\r\n if (lowertaken || uppertaken ) {\r\n return this.getSuggestedPoint(x, y - 20, trycount + 1);\r\n } else {\r\n p.x = x;\r\n p.y = y;\r\n return p;\r\n }\r\n }\r\n\r\n\r\n getFlatetypeTitle(flatetype: number): string {\r\n const title = this.flatetypes[flatetype];\r\n if ( title == null ) {\r\n return 'Flate';\r\n }\r\n return title;\r\n }\r\n\r\n\r\n toggleLayers(layerstates: LayerState[]) {\r\n if ( layerstates == null ) { return; }\r\n const svgdoc = this.roadCrossSection.getSvgDocument();\r\n\r\n for ( let i = 0; i < layerstates.length; i++) {\r\n const layer = layerstates[i];\r\n const svgid = 'cslayer_' + layer.id;\r\n const svgele = svgdoc.getElementById(svgid);\r\n if ( svgele != null ) {\r\n svgele.setAttribute('display', (layer.display ? 'inline' : 'none'));\r\n // remember state (in case of refresh)\r\n this.layerchecked[layer.id] = layer.display;\r\n } else {\r\n console.log('no svg element ' + svgid);\r\n }\r\n\r\n // la tekster i eget lag for å sikre at de ble tegnet over linjene\r\n const svgidtxt = 'cslayer_text_' + layer.id;\r\n const svgeletxt = svgdoc.getElementById(svgidtxt);\r\n if ( svgeletxt != null ) {\r\n svgeletxt.setAttribute('display', (layer.display ? 'inline' : 'none'));\r\n } else {\r\n console.log('no svg element ' + svgidtxt);\r\n }\r\n }\r\n }\r\n\r\n\r\n mirrorview( val: boolean ) {\r\n this.mirroredview = val;\r\n this.refresh();\r\n }\r\n\r\n\r\n drawText (svgDoc, x: number, y: number, text: string, classname: string, honormirror: boolean) {\r\n\r\n const data = document.createTextNode(text);\r\n const ele = document.createElementNS(this.svgElement.svgNS, 'text');\r\n ele.appendChild(data);\r\n\r\n let xval = x;\r\n if ( this.mirroredview && honormirror ) {\r\n xval = this.centerxpx - (xval - this.centerxpx) ;\r\n }\r\n\r\n\r\n ele.setAttribute('x', xval + '');\r\n ele.setAttribute('y', y + '');\r\n if (classname) {\r\n ele.setAttribute('class', classname);\r\n }\r\n // svgDoc.documentElement.appendChild(ele);\r\n svgDoc.appendChild(ele);\r\n return ele;\r\n }\r\n\r\n\r\n drawPolyline(parent, coordArr, classname?) {\r\n const spoints = this.getCoordstring(coordArr); // '0,0 100,50 0,100 100,50');\r\n let attrs;\r\n if (classname) {\r\n attrs = { 'class': classname };\r\n } else {\r\n attrs = {\r\n 'stroke': 'black',\r\n 'fill': 'none'\r\n };\r\n }\r\n attrs['points'] = spoints;\r\n const polyline = this.svgElement.createElement('polyline', attrs);\r\n polyline.setAttribute('vector-effect', 'non-scaling-stroke');\r\n parent.appendChild(polyline);\r\n return polyline;\r\n }\r\n\r\n\r\n addUse(parent, eleid, classname) {\r\n const attrs = {\r\n 'href': '#' + eleid,\r\n 'class': classname\r\n };\r\n const ele = this.svgElement.createElement('use', attrs);\r\n parent.appendChild(ele);\r\n return ele;\r\n }\r\n\r\n\r\n getCoordstring(coordArr) {\r\n let spoints = '';\r\n for (let i = 0; i < coordArr.length; i += 2) {\r\n if (i > 0) {\r\n spoints += ' ';\r\n }\r\n\r\n let xval = coordArr[i];\r\n if (this.mirroredview ) {\r\n xval = this.centerxpx - (xval - this.centerxpx) ;\r\n }\r\n\r\n spoints += xval + ',' + coordArr[i + 1];\r\n }\r\n return spoints;\r\n }\r\n\r\n\r\n clear( svgdoc) {\r\n const defsele = this.roadCrossSection.getDefsElement();\r\n defsele.innerHTML = '';\r\n\r\n let child = svgdoc.lastChild;\r\n let loopguard = 0;\r\n while ( child != null) {\r\n const lcnodename = child.nodeName.toLowerCase();\r\n if ( lcnodename !== 'style' && lcnodename !== 'defs' ) {\r\n child.parentNode.removeChild(child);\r\n }\r\n child = svgdoc.lastChild;\r\n if ( svgdoc.childElementCount <= 2) {\r\n return;\r\n }\r\n loopguard++;\r\n if ( loopguard > 10000 ) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Loop guard.');\r\n }\r\n }\r\n }\r\n\r\n\r\n meter2px (meter) {\r\n return meter / this.meterperpx;\r\n }\r\n\r\n relheight2px(relheight: number ) {\r\n const val = relheight - this.relcenterheight;\r\n return this.centerypx - this.meter2px(val);\r\n }\r\n\r\n absheight2px(absheight: number ) {\r\n const relval = absheight - this.crosssectionjson.heightCenterline;\r\n return this.relheight2px(relval);\r\n }\r\n\r\n distance2px(distance: number) {\r\n return this.centerxpx + this.meter2px( distance);\r\n }\r\n\r\n px2distance(px: number) {\r\n return this.meterperpx * px - this.centerxpx ;\r\n }\r\n\r\n drawGrid( gGrid: Element, isxaxis: boolean, gridstepsmeter: number ) {\r\n let gridmeter = (isxaxis ? 0 : Math.floor( this.crosssectionjson.heightCenterline ) );\r\n let gridpx = 0;\r\n let loopguard = 0;\r\n const maxpx = (isxaxis ? this.widthpx : this.heightpx);\r\n\r\n const leftmostxmeter = Math.floor( this.meterperpx * this.widthpx / 2 );\r\n const leftmostxpx = this.distance2px(-leftmostxmeter);\r\n const honormirror = false;\r\n\r\n while ( loopguard <= 10000 ) {\r\n gridpx = (isxaxis ? this.distance2px(gridmeter) : this.absheight2px(gridmeter));\r\n if ( gridpx < 0 || gridpx > maxpx) { break; }\r\n let coordline: number[];\r\n if ( isxaxis) {\r\n coordline = [gridpx, 0, gridpx, this.heightpx];\r\n } else {\r\n coordline = [0, gridpx, this.widthpx, gridpx];\r\n }\r\n this.drawPolyline(gGrid, coordline, 'grid');\r\n\r\n if ( !isxaxis && gridmeter % 2 === 0 ) { // høydeverdier på venstre-siden\r\n this.drawText(gGrid, leftmostxpx + 1 , gridpx - 1, gridmeter + '', 'gridlabel', honormirror);\r\n }\r\n // else if ( gridmeter % 2 === 0 ) {\r\n // this.drawText(gGrid, gridpx , 10, gridmeter + '', 'gridlabel', honormirror);\r\n // }\r\n gridmeter += gridstepsmeter;\r\n loopguard++;\r\n if ( loopguard > 10000 ) {\r\n throw new Error('fail');\r\n }\r\n }\r\n }\r\n\r\n representNumberWithOneDigit(number) {\r\n if (Number.isInteger(number)) {\r\n return number.toString();\r\n } else {\r\n return number.toFixed(1);\r\n }\r\n }\r\n}\r\n\r\n\r\n","\r\nimport { CrossSectionConfig } from '../Interfaces/RoadConfig';\r\nimport { EventsEventTypes, EventsEventHandler } from '../Events/EventHandler';\r\nimport { RoadCrossSectionImplementationSvgElement } from './SvgElement';\r\nimport { RoadCrossSectionImplementationDraw } from './Draw';\r\nimport { LayerState } from '../Interfaces/CrossSectionRefreshed';\r\n\r\nexport class RoadCrossSectionImplementation {\r\n\r\n config: CrossSectionConfig;\r\n eventHandler: EventsEventHandler;\r\n svgElement: RoadCrossSectionImplementationSvgElement;\r\n styleElement: any; // StyleSheet;\r\n defsElement: any;\r\n svgDocument: any;\r\n drawImplemenatation: RoadCrossSectionImplementationDraw;\r\n isPanning: boolean;\r\n startPoint: Point;\r\n scale: number;\r\n viewBox: ViewBox;\r\n finger_dist: number;\r\n simulatemultitouch: boolean;\r\n elementselected: any;\r\n\r\n\r\n constructor(eventsEventHandler: EventsEventHandler) {\r\n\r\n this.eventHandler = eventsEventHandler;\r\n this.svgElement = new RoadCrossSectionImplementationSvgElement();\r\n this.drawImplemenatation = new RoadCrossSectionImplementationDraw(this.eventHandler, this);\r\n }\r\n\r\n init(config: CrossSectionConfig) {\r\n this.config = config;\r\n this.loadTemplate();\r\n this.eventHandler.triggerEvent(EventsEventTypes.Initialized, this.config);\r\n this.scale = 1;\r\n // this.simulatemultitouch = true;\r\n }\r\n\r\n getSvgDocument() {\r\n return this.svgDocument;\r\n }\r\n\r\n getStyleElement() {\r\n return this.styleElement;\r\n }\r\n\r\n getDefsElement() {\r\n return this.defsElement;\r\n }\r\n\r\n getTarget() {\r\n const element = document.getElementById(this.config.targetId);\r\n if (!element) {\r\n console.error('Element id not found: ', this.config.targetId);\r\n }\r\n return element;\r\n }\r\n\r\n private loadTemplate() {\r\n const element = this.getTarget();\r\n\r\n element.innerHTML = '';\r\n const svgElement = this.svgElement.createElement('svg', {\r\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink',\r\n 'xmlns': this.svgElement.getNameSpace(),\r\n 'preserveAspectRatio': 'none',\r\n 'style': 'stroke-linejoin:round',\r\n 'zoomAndPan': 'magnify',\r\n 'width': '100%',\r\n 'height': '100%',\r\n 'id': 'svgcrosssection'\r\n }) as any;\r\n\r\n const eleDefs = this.svgElement.createElement('defs');\r\n eleDefs.innerHTML = this.svgElement.getDefsContent();\r\n svgElement.appendChild(eleDefs);\r\n this.defsElement = eleDefs;\r\n\r\n const eleStyle = svgElement.ownerDocument.createElement('style');\r\n eleStyle.setAttribute('type', 'text/css');\r\n eleStyle.innerHTML = this.svgElement.getStyleContent();\r\n svgElement.appendChild(eleStyle);\r\n this.styleElement = eleStyle;\r\n\r\n element.appendChild(svgElement);\r\n this.svgDocument = svgElement;\r\n\r\n // trenger en div for tooltip\r\n const elett = svgElement.ownerDocument.createElement('div');\r\n elett.id = 'crosssectiontooltip';\r\n elett.style.background = 'white';\r\n elett.style.border = '1px solid black';\r\n // elett.style.borderRadius = '5px';\r\n elett.style.padding = '5px';\r\n elett.style.display = 'none';\r\n elett.style.position = 'fixed'; // 'absolute';\r\n elett.style.fontFamily = 'Arial';\r\n elett.style.fontSize = '12px';\r\n element.appendChild(elett);\r\n\r\n svgElement.onmousedown = (e) => {\r\n e.preventDefault();\r\n if (e.touches) {\r\n this.drawImplemenatation.hidetooltip();\r\n if (this.elementselected != null) {\r\n this.elementselected.setAttribute('class', 'activelayerline');\r\n }\r\n if ( e.touches.length > 1 || this.simulatemultitouch ) {\r\n this.finger_dist = this.get_distance(e);\r\n }\r\n e = e.touches[0];\r\n } else {\r\n const type = 'mousedown';\r\n if ( this.ffeventfix(e, type) ) { return; }\r\n }\r\n this.isPanning = true;\r\n this.startPoint = new Point();\r\n this.startPoint.x = e.clientX; // e.offsetX;\r\n this.startPoint.y = e.clientY; // e.offsetY;\r\n this.viewBox = this.getViewBox(svgElement);\r\n };\r\n\r\n svgElement.onmouseup = (e) => {\r\n this.isPanning = false;\r\n\r\n if ( e.touches ) {\r\n const x = e.changedTouches[0].clientX;\r\n const y = e.changedTouches[0].clientY;\r\n const taptol = 6; // tap tolerance, start and end rarely exactly the same\r\n const minx = this.startPoint.x - taptol;\r\n const maxx = this.startPoint.x + taptol;\r\n const miny = this.startPoint.y - taptol;\r\n const maxy = this.startPoint.y + taptol;\r\n const istap = (minx < x && x < maxx && miny < y && y < maxy);\r\n // console.log('istap: ' + istap + ' ' + this.startPoint.x + ' ' + x + ' node: ' + e.target.nodeName);\r\n if ( istap ) {\r\n const tttext = this.drawImplemenatation.showtooltip(e.target, x, y);\r\n if (tttext != null ) { // select element\r\n if (e.target.nodeName !== 'text') {\r\n e.target.setAttribute('class', 'selectedlayerline');\r\n this.elementselected = e.target;\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n svgElement.onmousemove = (e) => {\r\n if ( !this.isPanning ) { return; }\r\n e.preventDefault();\r\n if (e.touches) {\r\n if (e.touches.length > 1 || this.simulatemultitouch) { // If pinch-zooming\r\n const new_finger_dist = this.get_distance(e); // Get current distance between fingers\r\n const eventdelta = (new_finger_dist - this.finger_dist ) / this.finger_dist; // Zoom is proportional to change\r\n this.finger_dist = new_finger_dist; // Save current distance for next time\r\n // const mx = e.touches[0].clientX;\r\n // const my = e.touches[0].clientY;\r\n\r\n const rect = this.svgDocument.getBoundingClientRect(); // e.target.getBoundingClientRect();\r\n const mx0 = e.touches[0].pageX - rect.left;\r\n const my0 = e.touches[0].pageY - rect.top;\r\n let mx1 = 200;\r\n let my1 = 200;\r\n if ( !this.simulatemultitouch ) {\r\n mx1 = e.touches[1].pageX - rect.left;\r\n my1 = e.touches[1].pageY - rect.top;\r\n }\r\n const mx = mx0 + (mx1 - mx0) / 2;\r\n const my = my0 + (my1 - my0) / 2;\r\n\r\n this.zoomPoint(mx, my, eventdelta);\r\n\r\n return;\r\n } // Else just moving around\r\n e = e.touches[0];\r\n } else {\r\n const type = 'mousemove';\r\n if ( this.ffeventfix(e, type) ) { return; }\r\n }\r\n\r\n const dx = (this.startPoint.x - e.clientX) / this.scale;\r\n const dy = (this.startPoint.y - e.clientY) / this.scale;\r\n\r\n const vb = new ViewBox();\r\n vb.x = this.viewBox.x + dx;\r\n vb.y = this.viewBox.y + dy;\r\n vb.w = this.viewBox.w;\r\n vb.h = this.viewBox.h;\r\n this.setViewBox(this.svgDocument, vb);\r\n };\r\n\r\n\r\n svgElement.onwheel = (e) => {\r\n // console.log('mousewheel');\r\n e.preventDefault();\r\n if (e.touches) {\r\n e = e.touches[0];\r\n } else {\r\n const type = 'wheel';\r\n if ( this.ffeventfix(e, type) ) { return; }\r\n }\r\n\r\n const mx = e.offsetX;\r\n const my = e.offsetY;\r\n const eventdelta = Math.sign(-e.deltaY) * 0.1;\r\n\r\n this.zoomPoint(mx, my, eventdelta);\r\n };\r\n\r\n svgElement.parentNode.onmouseleave = () => {\r\n // console.log('onmouseleave');\r\n this.isPanning = false;\r\n };\r\n\r\n\r\n // 6.11.2020 touch events\r\n svgElement.ontouchstart = (e) => {\r\n // console.log('ontouchstart');\r\n svgElement.onmousedown(e);\r\n };\r\n\r\n svgElement.ontouchend = (e) => {\r\n svgElement.onmouseup(e);\r\n };\r\n\r\n svgElement.ontouchmove = (e) => {\r\n svgElement.onmousemove(e);\r\n };\r\n\r\n }\r\n\r\n\r\n zoomPoint(mx: number, my: number, eventdelta: number) {\r\n const viewBox = this.getViewBox(this.svgDocument);\r\n\r\n // // for debug\r\n // const pointid = 'zoompoint';\r\n // let p = self.svgDocument.getElementById(pointid);\r\n // if (p == null ) {\r\n // p = self.svgElement.createElement('circle');\r\n // p.setAttribute('r', '20');\r\n // p.setAttribute('fill', 'red');\r\n // p.setAttribute('id', 'zoompoint');\r\n // }\r\n // p.setAttribute('cx', (mx) + '');\r\n // p.setAttribute('cy', (my) + '');\r\n // self.svgDocument.appendChild(p);\r\n\r\n\r\n const w = viewBox.w;\r\n const h = viewBox.h;\r\n const dw = w * eventdelta;\r\n const dh = h * eventdelta;\r\n const svgSizeWidth = this.svgDocument.parentNode.offsetWidth;\r\n const svgSizeHeight = this.svgDocument.parentNode.offsetHeight;\r\n const dx = dw * mx / svgSizeWidth;\r\n const dy = dh * my / svgSizeHeight;\r\n const vb = new ViewBox();\r\n\r\n vb.x = viewBox.x + dx;\r\n vb.y = viewBox.y + dy;\r\n vb.w = viewBox.w - dw;\r\n vb.h = viewBox.h - dh;\r\n\r\n this.scale = svgSizeWidth / viewBox.w;\r\n this.setViewBox(this.svgDocument, vb);\r\n\r\n // scale texts\r\n const texts = this.svgDocument.getElementsByTagName('text');\r\n if ( texts ) {\r\n for (let i = 0; i < texts.length; i++) {\r\n const txtele = texts[i];\r\n txtele.style.setProperty('font-size', (12 / this.scale) + 'px', '');\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n get_distance(e: any) {\r\n let diffX: number;\r\n let diffY: number;\r\n if (this.simulatemultitouch) {\r\n diffX = e.touches[0].clientX - 200;\r\n diffY = e.touches[0].clientY - 200;\r\n } else {\r\n diffX = e.touches[0].clientX - e.touches[1].clientX;\r\n diffY = e.touches[0].clientY - e.touches[1].clientY;\r\n }\r\n return Math.sqrt(diffX * diffX + diffY * diffY); // Pythagorean theorem\r\n }\r\n\r\n // https://stackoverflow.com/questions/59725292/why-does-event-offsetx-y-provide-different-values-in-firefox-edge-vs-chrome\r\n ffeventfix(e: any, type: string): boolean {\r\n if ( e.target !== e.currentTarget) {\r\n // create a synthetic event\r\n let synth = null;\r\n if ( type === 'wheel' ) {\r\n synth = new WheelEvent(type, { clientX: e.clientX, clientY: e.clientY, deltaY: e.deltaY});\r\n } else {\r\n synth = new MouseEvent(type, { clientX: e.clientX, clientY: e.clientY});\r\n }\r\n // dispatch it *synchronously* on us\r\n e.currentTarget.dispatchEvent(synth);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n getViewBox(svgdoc): ViewBox {\r\n const vbstring: string = svgdoc.getAttribute('viewBox');\r\n const arr = vbstring.split(' ');\r\n const vb = new ViewBox();\r\n vb.x = Number( arr[0] );\r\n vb.y = Number( arr[1] );\r\n vb.w = Number( arr[2] );\r\n vb.h = Number( arr[3] );\r\n return vb;\r\n }\r\n\r\n setViewBox(svgdoc, viewBox: ViewBox ) {\r\n const val = `${viewBox.x} ${viewBox.y} ${viewBox.w} ${viewBox.h}`;\r\n svgdoc.setAttribute('viewBox', val);\r\n }\r\n\r\n draw() {\r\n this.drawImplemenatation.draw();\r\n }\r\n\r\n refresh() {\r\n this.drawImplemenatation.refresh();\r\n }\r\n\r\n toggleLayers(layerstates: LayerState[]) {\r\n this.drawImplemenatation.toggleLayers(layerstates);\r\n }\r\n\r\n mirrorview( onoff: boolean) {\r\n this.drawImplemenatation.mirrorview(onoff);\r\n }\r\n\r\n}\r\n\r\nclass ViewBox {\r\n x: number;\r\n y: number;\r\n w: number;\r\n h: number;\r\n}\r\n\r\nclass Point {\r\n x: number;\r\n y: number;\r\n}\r\n","\r\nexport class RoadCrossSectionImplementationSvgElement {\r\n svgNS = 'http://www.w3.org/2000/svg';\r\n\r\n createElement(name: string, args?: any, html?: string) {\r\n\r\n const element = document.createElementNS(this.svgNS, name);\r\n if (html) {\r\n element.innerHTML = html;\r\n }\r\n if (args) {\r\n Object.keys(args).forEach(key => {\r\n element.setAttribute(key, args[key]);\r\n });\r\n }\r\n return element;\r\n }\r\n\r\n createElementNS(ns: string, name: string, args?: any, html?: string) {\r\n const element = document.createElementNS(ns, name);\r\n if (html) {\r\n element.innerHTML = html;\r\n }\r\n if (args) {\r\n Object.keys(args).forEach(key => {\r\n element.setAttribute(key, args[key]);\r\n });\r\n }\r\n return element;\r\n }\r\n\r\n getNameSpace() {\r\n return this.svgNS;\r\n }\r\n\r\n getDefsContent() {\r\n return '';\r\n // return `\r\n // \r\n // \r\n // \r\n // \r\n // `;\r\n }\r\n\r\n getStyleContent() {\r\n const myString = `\r\n\r\n .grid{\r\n stroke:#B7B7B7;\r\n }\r\n\r\n .gridlabel{\r\n fill:#B7B7B7;\r\n font-family:\"Arial\";\r\n font-size:10px;\r\n }\r\n\r\n .terrainlinecs{\r\n stroke: gray;\r\n stroke-width: 1px;\r\n fill: none;\r\n }\r\n\r\n .terrainlineMarkdekkeflateUspesifisert{\r\n stroke: green;\r\n stroke-width: 1px;\r\n fill: none;\r\n }\r\n\r\n .linelabel{\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:12px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .linelabelmidmid{\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:12px;\r\n text-anchor:middle;\r\n dominant-baseline:middle;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .linelabelvertical{\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:12px;\r\n text-anchor:end;\r\n dominant-baseline:middle;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .centerlinelabel{\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:16px;\r\n dominant-baseline:middle;\r\n text-anchor:middle;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n\r\n svg#svgcrosssection{\r\n cursor: move;\r\n }\r\n\r\n /* Overflate */\r\n .layerline1{\r\n stroke:blue;\r\n fill:none;\r\n }\r\n\r\n /* Slitelag */\r\n .layerline2{\r\n stroke:red;\r\n fill:none;\r\n }\r\n\r\n /* Bindelag 1 */\r\n .layerline3{\r\n stroke:red;\r\n fill:none;\r\n stroke-dasharray: 10 10;\r\n }\r\n\r\n /* Bærelag 1 */\r\n .layerline5{\r\n stroke:black;\r\n fill:none;\r\n }\r\n\r\n /* Bærelag 2 */\r\n .layerline6{\r\n stroke:cyan;\r\n fill:none;\r\n }\r\n\r\n /* Forsterkningslag 1 */\r\n .layerline8{\r\n stroke:green;\r\n fill:none;\r\n }\r\n\r\n /* Filter-/Frostsikringslag */\r\n .layerline11{\r\n stroke:green;\r\n fill:none;\r\n stroke-dasharray: 10 10;\r\n }\r\n\r\n /* Planum */\r\n .layerline19{\r\n stroke:black;\r\n fill:none;\r\n stroke-dasharray: 10 10;\r\n }\r\n\r\n /* Construction bed */\r\n .layerline20{\r\n stroke:purple;\r\n fill:none;\r\n }\r\n\r\n /* Indre fyllingsskråning */\r\n .layerline21{\r\n stroke:red;\r\n fill:none;\r\n }\r\n\r\n @media (hover: hover) {\r\n .activelayerline{\r\n stroke-width:6px;\r\n visibility:hidden;\r\n pointer-events:stroke;\r\n fill:none;\r\n }\r\n }\r\n\r\n @media (hover: none) {\r\n .activelayerline{\r\n stroke-width:26px;\r\n visibility:hidden;\r\n stroke:red;\r\n pointer-events:stroke;\r\n fill:none;\r\n }\r\n }\r\n\r\n .activelayerline:hover {\r\n stroke: aqua;\r\n fill: none;\r\n visibility:visible;\r\n stroke-linecap:round;\r\n }\r\n\r\n .selectedlayerline{\r\n stroke-width:6px;\r\n stroke: aqua;\r\n fill:none;\r\n }\r\n `;\r\n return myString;\r\n }\r\n}\r\n","// import { EventsEventTypes } from '../Events/EventHandler';\r\nimport { RoadConfig } from '../Interfaces/RoadConfig';\r\nimport { RoadProfileImplementationRoadProfile } from '../RoadProfileImplementation/RoadProfile';\r\n\r\nexport class RoadProfileAPIRoadProfile {\r\n\r\n roadProfileImplementation: RoadProfileImplementationRoadProfile;\r\n svgNS = 'http://www.w3.org/2000/svg';\r\n\r\n constructor(roadProfileImplementation: RoadProfileImplementationRoadProfile) {\r\n this.roadProfileImplementation = roadProfileImplementation;\r\n }\r\n\r\n init(params: RoadConfig) {\r\n this.roadProfileImplementation.initRoadProfile(params);\r\n }\r\n\r\n draw() {\r\n this.roadProfileImplementation.draw();\r\n }\r\n\r\n refresh() {\r\n this.roadProfileImplementation.refresh();\r\n }\r\n}\r\n","import { EventsEventHandler, EventsEventTypes } from '../Events/EventHandler';\r\nimport { RoadProfileImplementationRoadProfile } from './RoadProfile';\r\nimport { RoadProfileImplementationSvgElement } from './SvgElement';\r\nimport * as $ from 'jquery';\r\nimport { LengthProfileAPIResponse, LengthProfileResult, LengthProfileElement } from '../Interfaces/LengthProfileAPIResponse';\r\nimport { LengthProfileTerrainAPIResponse, LengthProfileTerrainResult, LengthProfileVerticalPoint } from '../Interfaces/LengthProfileAPIResponse';\r\nimport { CrossFallAPIResponse, CrossFallResult } from '../Interfaces/CrossFallAPIResponse';\r\nimport { HorizontalCurvatureAPIResponse, HorizontalCurvatureResult } from '../Interfaces/HorizontalCurvatureAPIResponse';\r\nimport { WideningAPIResponse, WideningResult } from '../Interfaces/WideningAPIResponse';\r\nimport { LengthProfileRefreshed } from '../Interfaces/LengthProfileRefreshed';\r\n\r\nexport class RoadProfileImplementationDraw {\r\n\r\n eventHandler: EventsEventHandler;\r\n roadProfile: RoadProfileImplementationRoadProfile;\r\n svgElement: RoadProfileImplementationSvgElement;\r\n\r\n meterperpxW: number;\r\n meterperpxH: number;\r\n xmarginpx = 70; // make room for texts\r\n xmeterfirst: number;\r\n minheightmeter: number;\r\n heightpx: number;\r\n widthpx: number;\r\n heightmeter: number;\r\n lengthmeter: number;\r\n minmaxheight: number[];\r\n apiurl: string;\r\n projectid: number;\r\n roadlineid: number;\r\n\r\n ymarginpx = 250; // make room for texts/tables below graph\r\n lengthprofilejson: LengthProfileResult;\r\n crossfalljson: CrossFallResult;\r\n horizcurvjson: HorizontalCurvatureResult[];\r\n wideningjson: WideningResult;\r\n terrainjson: LengthProfileTerrainResult[];\r\n\r\n // lastRefreshed: Date;\r\n\r\n constructor(eventHandler: EventsEventHandler, roadProfile: RoadProfileImplementationRoadProfile) {\r\n this.eventHandler = eventHandler;\r\n this.roadProfile = roadProfile;\r\n this.svgElement = new RoadProfileImplementationSvgElement();\r\n }\r\n\r\n\r\n draw() {\r\n this.apiurl = this.roadProfile.roadConfig.roadapiurl;\r\n this.projectid = this.roadProfile.roadConfig.projectid;\r\n this.roadlineid = this.roadProfile.roadConfig.roadlineid;\r\n if ( !this.apiurl.endsWith('/') ) { this.apiurl += '/'; }\r\n\r\n // hent data for lengdeprofil\r\n const url = this.apiurl + 'roadprojects/' + this.projectid + '/roadPolylines/' + this.roadlineid + '/lengthprofile';\r\n $.ajax( {url: url,\r\n success: (data) => {\r\n this.lengthProfileAPICallback(data);\r\n },\r\n error: () => {\r\n console.error('Error to load length profile json.');\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Fail to load length profile json.');\r\n }\r\n });\r\n }\r\n\r\n\r\n lengthProfileAPICallback( response: LengthProfileAPIResponse ) {\r\n const minmaxlength = this.getLengthMinMaxMeters(response.result);\r\n this.minmaxheight = this.getVerticalMinMaxMeters(response.result);\r\n this.lengthmeter = minmaxlength[1] - minmaxlength[0];\r\n this.heightmeter = this.minmaxheight[1] - this.minmaxheight[0];\r\n const heightfudge = this.heightmeter * 0.5; // want some room above/below extremes\r\n const minmaxheightexpanded = [this.minmaxheight[0] - heightfudge,\r\n this.minmaxheight[1] + heightfudge];\r\n this.heightmeter = minmaxheightexpanded[1] - minmaxheightexpanded[0];\r\n this.minmaxheight = minmaxheightexpanded;\r\n\r\n this.lengthprofilejson = response.result;\r\n\r\n // 25.9.2020 unngå bruk av gamle data fra evt. tidligere tegninger\r\n this.crossfalljson = null;\r\n this.horizcurvjson = null;\r\n this.wideningjson = null;\r\n this.terrainjson = null;\r\n\r\n this.refresh();\r\n }\r\n\r\n\r\n refresh() {\r\n // this.lastRefreshed = new Date();\r\n if (this.lengthprofilejson == null) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Fail to load length profile json.');\r\n return;\r\n }\r\n const svgdoc = this.roadProfile.getSvgDocument();\r\n this.widthpx = svgdoc.parentNode.offsetWidth; // parseInt( (this.roadProfile.roadConfig.width + '').replace('px', ''), 10);\r\n this.heightpx = svgdoc.parentNode.offsetHeight; // parseInt((this.roadProfile.roadConfig.height + '').replace('px', ''), 10);\r\n\r\n svgdoc.setAttribute('viewBox', '0 0 ' + this.widthpx + ' ' + this.heightpx);\r\n\r\n this.clear(svgdoc);\r\n\r\n if ( this.heightpx < 1 ) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Invalid height.');\r\n return; // 23.11.2020\r\n }\r\n\r\n if ( this.widthpx < 1 ) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Invalid width.');\r\n return; // 23.11.2020\r\n }\r\n\r\n const lengthprofilejson = this.lengthprofilejson;\r\n\r\n if (this.heightpx < this.ymarginpx ) {\r\n // throw new Error('Value for height too low.');\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Value for height too low.');\r\n return; // 23.11.2020\r\n }\r\n\r\n if (this.widthpx < this.xmarginpx ) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Value for width too low.');\r\n return; // 23.11.2020\r\n }\r\n\r\n this.meterperpxH = this.heightmeter / (this.heightpx - this.ymarginpx);\r\n this.meterperpxW = this.lengthmeter / (this.widthpx - this.xmarginpx);\r\n\r\n // ramme profil\r\n const coordArr = [0, 0,\r\n 0, this.heightpx,\r\n this.widthpx, this.heightpx,\r\n this.widthpx, 0,\r\n 0, 0];\r\n this.drawPolyline(svgdoc, coordArr);\r\n\r\n const xtextheight = 14;\r\n const ytabletoppx = this.heightpx - this.ymarginpx + xtextheight;\r\n const ybottompx = this.heightpx - this.ymarginpx;\r\n\r\n // gruppe for tabellinnhold under graf (for zoom/pan)\r\n const gTable = this.svgElement.createElement('g');\r\n gTable.setAttribute('id', 'groupTable');\r\n\r\n const gTableClip = this.svgElement.createElement('g');\r\n // ikke vis kantene av inn-zoomet tabell\r\n const clipTable = svgdoc.getElementById('clipTableRect');\r\n const clipbufferx = 16; // unngå at de første verdiene gjemmes\r\n clipTable.setAttribute('x', (this.xmarginpx - clipbufferx ) + '');\r\n clipTable.setAttribute('y', ybottompx + '');\r\n clipTable.setAttribute('width', (this.widthpx - this.xmarginpx + clipbufferx) + '' );\r\n clipTable.setAttribute('height', (this.heightpx - ybottompx) + '' );\r\n gTableClip.setAttribute('clip-path', 'url(#clipTable)');\r\n svgdoc.appendChild(gTableClip);\r\n\r\n\r\n // tabell under graf\r\n const rowheaderpad = 3;\r\n const tabheight = this.heightpx - ytabletoppx;\r\n const rowheightfraction = 1 / 6.5; // rad for tverrfall litt høyere enn 2 * en av de andre\r\n const rowheightcrossfall = 1 - 4 * rowheightfraction;\r\n const rowheights = [rowheightfraction, rowheightfraction, rowheightcrossfall, rowheightfraction, rowheightfraction];\r\n const rowtitles = ['Hor.kurv.', 'Breddeutv.', 'Tverrfall', 'Profil h.', 'Terreng h.' ];\r\n let rowy = ytabletoppx; // + xtextheight / 2;\r\n for (let i = 0; i < rowheights.length; i++) {\r\n rowheights[i] *= tabheight;\r\n\r\n let ytextrowpx = rowy + rowheights[i] / 2;\r\n if ( i === 2 ) { // rad for tverrfall\r\n const cfallpartheigth = rowheights[i] / 4;\r\n ytextrowpx = rowy + cfallpartheigth;\r\n const kjpad = 30;\r\n const yhkjpx = rowy + 2 * cfallpartheigth;\r\n this.drawText(svgdoc, rowheaderpad + kjpad, yhkjpx, 'H.kj.b.k.', 'rowheadtext');\r\n this.drawPolyline(svgdoc, [rowheaderpad, yhkjpx, rowheaderpad + kjpad - 3, yhkjpx], 'crossfallhkj');\r\n\r\n const yvkjpx = rowy + 3 * cfallpartheigth;\r\n this.drawText(svgdoc, rowheaderpad + kjpad, yvkjpx, 'V.kj.b.k.', 'rowheadtext');\r\n this.drawPolyline(svgdoc, [rowheaderpad, yvkjpx, rowheaderpad + kjpad - 3, yvkjpx], 'crossfallvkj');\r\n }\r\n\r\n const title = rowtitles[i];\r\n this.drawText(svgdoc, rowheaderpad, ytextrowpx, title, 'rowheadtext');\r\n this.drawPolyline(gTable, [this.xmarginpx, rowy, this.widthpx, rowy], 'grid');\r\n\r\n rowy += rowheights[i];\r\n }\r\n\r\n const mingridpx = 50;\r\n const gridmeterW = this.getGridMeter(mingridpx, this.meterperpxW);\r\n const gridpxW = this.meter2px(gridmeterW, this.meterperpxW);\r\n\r\n // senterlinje for tverrfall\r\n const crossfallrowybottom = this.heightpx - rowheights[rowheights.length - 1] - rowheights[rowheights.length - 2];\r\n const crossfallrowytop = crossfallrowybottom - rowheights[rowheights.length - 3];\r\n const dasharraycrossfall = [30, 5, 30, 10];\r\n // tilpass til rutenett, slik at det blir to lange strek i hver rute\r\n this.drawCenterline(crossfallrowytop, crossfallrowybottom, gridpxW, gTable, dasharraycrossfall );\r\n\r\n // senterlinje for horisontalkurvatur\r\n const horizcurvrowytop = ytabletoppx;\r\n const horizcurvrowybottom = ytabletoppx + rowheights[0];\r\n // tilpass til rutenett, slik at det blir tre strek i hver rute\r\n const dasharray = [10, 4, 10, 4, 10, 8];\r\n this.drawCenterline(horizcurvrowytop, horizcurvrowybottom, gridpxW, gTable, dasharray );\r\n\r\n // senterlinje for breddeutvidelse\r\n const wideningrowytop = ytabletoppx + rowheights[0];\r\n const wideningrowybottom = wideningrowytop + rowheights[1];\r\n this.drawCenterline(wideningrowytop, wideningrowybottom, gridpxW, gTable, dasharray );\r\n\r\n\r\n // gruppe for graf og grid (for zoom/pan)\r\n const gGraph = this.svgElement.createElement('g');\r\n gGraph.setAttribute('id', 'groupGraph');\r\n\r\n // gruppe for terrenglag (tegnes først/bakerst)\r\n const gGraphTerrain = this.svgElement.createElement('g');\r\n gGraph.appendChild(gGraphTerrain);\r\n\r\n // gruppe for tekst/detaljer på graf\r\n const gGraphAnnot = this.svgElement.createElement('g');\r\n\r\n const gGraphClip = this.svgElement.createElement('g');\r\n // ikke vis kantene av inn-zoomet graf\r\n const clipGraph = svgdoc.getElementById('clipGraphRect');\r\n clipGraph.setAttribute('x', this.xmarginpx + '');\r\n clipGraph.setAttribute('y', '0');\r\n clipGraph.setAttribute('width', (this.widthpx - this.xmarginpx) + '' );\r\n clipGraph.setAttribute('height', (this.heightpx - this.ymarginpx) + '' );\r\n gGraphClip.setAttribute('clip-path', 'url(#clipGraph)');\r\n svgdoc.appendChild(gGraphClip);\r\n\r\n // gruppe for y-verdier til venstre for graf (for zoom/pan)\r\n const gYValues = this.svgElement.createElement('g');\r\n gYValues.setAttribute('id', 'groupYValues');\r\n\r\n const gYValuesClip = this.svgElement.createElement('g');\r\n // ikke vis bunnen av inn-zoomet y-akse\r\n const clipYValues = svgdoc.getElementById('clipYValuesRect');\r\n clipYValues.setAttribute('x', '0');\r\n const HOH = 25;\r\n clipYValues.setAttribute('y', '' + HOH);\r\n clipYValues.setAttribute('width', this.xmarginpx + '' );\r\n clipYValues.setAttribute('height', (this.heightpx - this.ymarginpx - HOH) + '' );\r\n gYValuesClip.setAttribute('clip-path', 'url(#clipYValues)');\r\n svgdoc.appendChild(gYValuesClip);\r\n\r\n // y-akse\r\n const gridmeterH = this.getGridMeter(mingridpx, this.meterperpxH);\r\n const yEnd = 0;\r\n const x = 0 + this.xmarginpx;\r\n const xEnd = this.widthpx;\r\n this.minheightmeter = this.minmaxheight[0]; // - yoffsetmeter;\r\n const ystartmeter = this.minheightmeter - this.minheightmeter % gridmeterH;\r\n let ymeter = ystartmeter;\r\n \r\n let ypx;\r\n do {\r\n if (ymeter === ystartmeter) {\r\n const ygridbottompx = this.heightpx - this.ymarginpx;\r\n this.drawPolyline(gGraph, [x, ygridbottompx, xEnd, ygridbottompx], 'grid');\r\n }\r\n \r\n ypx = this.meter2px(ymeter - this.minheightmeter, this.meterperpxH);\r\n ypx = this.heightpx - ypx - this.ymarginpx;\r\n \r\n if (ypx >= this.heightpx - this.ymarginpx) {\r\n ymeter += gridmeterH;\r\n continue;\r\n } // don't want text below x-axis\r\n if (ypx < yEnd) {\r\n break;\r\n }\r\n this.drawPolyline(gGraph, [x, ypx, xEnd, ypx], 'grid');\r\n \r\n if (ypx > 25) {\r\n this.drawText(gYValues, this.xmarginpx / 2, ypx, Math.round(ymeter) + '', 'yunittext');\r\n }\r\n \r\n ymeter += gridmeterH;\r\n } while (ypx >= yEnd);\r\n\r\n gYValuesClip.appendChild(gYValues);\r\n this.drawText(svgdoc, this.xmarginpx / 2, 20, 'H.O.H.', 'yunittext');\r\n\r\n\r\n\r\n // x-akse\r\n const vpoints = lengthprofilejson.lengthProfileVerticalPoints;\r\n this.xmeterfirst = vpoints[0].profile;\r\n const ytoppx = 0;\r\n // fit grid to overall length\r\n\r\n const ytextpx = ybottompx + 8;\r\n const yprofilhpx = this.heightpx - rowheights[rowheights.length - 1] - rowheights[rowheights.length - 2] ;\r\n const hoydegridmeter = gridmeterW / 5;\r\n\r\n for ( let i = 0; i < vpoints.length; i++) {\r\n const vp = vpoints[i];\r\n // const c = this.getGraphPxCoords(vp.profile, vp.height);\r\n const cx = this.getGraphPxCoordX(vp.profile);\r\n\r\n if (vp.profile % gridmeterW === 0) {\r\n this.drawPolyline(gGraph, [cx, ytoppx, cx, ybottompx], 'grid');\r\n this.drawText(gTable, cx, ytextpx, vp.profile + '', 'xunittext');\r\n\r\n // x-linjer for tabell under graf\r\n this.drawPolyline(gTable, [cx, ytabletoppx , cx, this.heightpx], 'grid');\r\n }\r\n\r\n // x-linjer for profil og terreng høyde-rader (de to nederste radene)\r\n if (vp.profile % hoydegridmeter === 0) {\r\n\r\n if (vp.profile % gridmeterW !== 0) {\r\n this.drawPolyline(gTable, [cx, yprofilhpx, cx, this.heightpx], 'grid');\r\n }\r\n\r\n // profil høyde, nest nederste rad i tabell\r\n const yprofhpx = this.heightpx - rowheights[rowheights.length - 1] - rowheights[rowheights.length - 2];\r\n const textxpx = cx - 2;\r\n const textypx = yprofhpx + 1;\r\n const ele = this.drawText(gTable, textxpx , textypx, vp.height.toFixed(2), 'heighttext');\r\n ele.setAttribute('transform', 'rotate(-90,' + textxpx + ',' + textypx + ')');\r\n }\r\n }\r\n\r\n this.drawText(svgdoc, rowheaderpad, ytextpx, 'Profil nr.', 'rowheadtext');\r\n\r\n // bygg svg path d-parameter\r\n let d = '';\r\n let pelements = lengthprofilejson.lengthProfileElements;\r\n if ( pelements == null ) { pelements = []; }\r\n for ( let i = 0; i < pelements.length; i++) {\r\n const p = pelements[i];\r\n\r\n let prevWasArc = false;\r\n if ( i > 0 ) {\r\n prevWasArc = (pelements[i - 1].radius !== 0);\r\n }\r\n\r\n if ( !prevWasArc ) {\r\n if ( i === 0 ) {\r\n d = 'M'; // move to\r\n } else {\r\n d += ' L'; // line to\r\n }\r\n }\r\n\r\n const c0 = this.getGraphPxCoords(p.profileFrom, p.heightStart);\r\n d += ' ' + c0.x + ' ' + c0.y;\r\n\r\n let sweep = 0;\r\n if (p.radius !== 0 ) { // bue\r\n const rx = this.meter2px(p.radius, this.meterperpxW);\r\n const ry = this.meter2px(p.radius, this.meterperpxH);\r\n const xrotation = 0;\r\n const largearc = 0;\r\n sweep = this.getArcSweep(p);\r\n // https://codepen.io/lingtalfi/pen/yaLWJG\r\n d += ' A' + rx + ' ' + ry + ' ' + xrotation + ' ' + largearc + ' ' + sweep;\r\n }\r\n\r\n const c1 = this.getGraphPxCoords(p.profileTo, p.heightEnd);\r\n if ( i === pelements.length - 1) {\r\n if ( p.radius === 0) {\r\n d += ' L';\r\n }\r\n d += ' ' + c1.x + ' ' + c1.y;\r\n }\r\n\r\n // vertikalvinkelpunkt\r\n if (p.radius !== 0 ) {\r\n // delvise linjer ut fra punkt\r\n const vvplinelengthfactor = 0.35;\r\n const vvp0 = this.getPointAlongLine(p.profileVVP, p.heightVVP, p.profileFrom, p.heightStart, vvplinelengthfactor);\r\n const vvp0px = this.getGraphPxCoords(vvp0.x, vvp0.y);\r\n const vvp1 = this.getPointAlongLine(p.profileVVP, p.heightVVP, p.profileTo, p.heightEnd, vvplinelengthfactor);\r\n const vvp1px = this.getGraphPxCoords(vvp1.x, vvp1.y);\r\n const vvppx = this.getGraphPxCoords(p.profileVVP, p.heightVVP);\r\n const coordspx = [vvp0px.x, vvp0px.y, vvppx.x, vvppx.y, vvp1px.x, vvp1px.y];\r\n this.drawPolyline(gGraph, coordspx);\r\n\r\n // vinkelpunktet\r\n const r = 3;\r\n this.drawCircle(gGraphAnnot, vvppx.x, vvppx.y, r);\r\n\r\n // tekst (profilnr og høyde)\r\n const offsetxpx = 0;\r\n let offsetypx = 30;\r\n if ( sweep !== 0 ) { offsetypx *= -1; }\r\n const lineheightpx = 15;\r\n this.drawText(gGraphAnnot, vvppx.x + offsetxpx, vvppx.y + offsetypx, 'PR. ' + p.profileVVP.toFixed(3), 'vvptext');\r\n this.drawText(gGraphAnnot, vvppx.x + offsetxpx, vvppx.y + offsetypx + lineheightpx, 'H = ' + p.heightVVP.toFixed(3), 'vvptext');\r\n }\r\n\r\n // stigningsprosent\r\n if ( p.radius === 0) {\r\n const deltay = p.heightEnd - p.heightStart;\r\n const deltax = p.profileTo - p.profileFrom;\r\n const ratio = deltay / deltax;\r\n const perc = 100 * ratio;\r\n const perctxt = perc.toFixed(2) + '%';\r\n // if ( perc < 0 ) { perctxt = '-' + perctxt; }\r\n\r\n const degrees = Math.atan((c1.y - c0.y) / (c1.x - c0.x)) * (180 / Math.PI);\r\n const anglepx = this.getGraphPxCoords(p.profileFrom + deltax / 2, p.heightStart + deltay / 2);\r\n\r\n const ele = this.drawText(gGraphAnnot, anglepx.x, anglepx.y - 3, perctxt, 'slopetext');\r\n ele.setAttribute('transform', 'rotate(' + degrees + ',' + anglepx.x + ',' + anglepx.y + ')');\r\n }\r\n\r\n // markering av overganger (mellom sirkelbue og rettlinje/ny sirkelbue)\r\n if ( i < pelements.length - 1) {\r\n let translineheightpx = 100; // (this.heightpx - this.ymarginpx ) * 0.4;\r\n let txtyoffsetpx = 0;\r\n if ( sweep !== 0 ) {\r\n translineheightpx *= -1;\r\n } else {\r\n txtyoffsetpx = 48;\r\n }\r\n // vertikal linje\r\n this.drawPolyline(gGraph, [c1.x, c1.y, c1.x, c1.y - translineheightpx]);\r\n\r\n let xtxtpx = c1.x - 7;\r\n const ytxtpx = c1.y - translineheightpx + txtyoffsetpx;\r\n this.drawTransitionText(gGraphAnnot, xtxtpx, ytxtpx, p.radius, 'transitiontext');\r\n\r\n const pnext = pelements[i + 1];\r\n xtxtpx = c1.x + 8; // 10;\r\n this.drawTransitionText(gGraphAnnot, xtxtpx, ytxtpx, pnext.radius, 'transitiontext');\r\n }\r\n }\r\n if ( d !== '' ) {\r\n const path = this.drawPath(gGraph, d, 'profileline'); // profillinjen\r\n path.setAttribute('id', 'theprofilepath');\r\n } else { // 19.8.2020 hvis lengthProfileElements null, bruk lengthProfileVerticalPoints\r\n this.drawVerticalPoints(gGraph, vpoints, 'profileline');\r\n }\r\n\r\n gGraph.appendChild(gGraphAnnot);\r\n gGraphClip.appendChild(gGraph);\r\n\r\n\r\n // innhold i raden for horisontalkurvatur\r\n this.drawHorizcurv(gTable, horizcurvrowytop, horizcurvrowybottom );\r\n\r\n // innhold i raden for breddeutvidelse\r\n this.drawWidening(gTable, wideningrowytop, wideningrowybottom );\r\n\r\n // innhold i raden for tverrfall\r\n this.drawCrossfall(gTable, crossfallrowytop, crossfallrowybottom );\r\n\r\n // terreng\r\n const yrowpx = this.heightpx - rowheights[rowheights.length - 1];\r\n this.drawTerrain(gGraphTerrain, hoydegridmeter, yrowpx, gTable);\r\n\r\n gTableClip.appendChild( gTable);\r\n\r\n }\r\n\r\n drawVerticalPoints(parentelem, vpoints: LengthProfileVerticalPoint[] , classname: string) {\r\n const coords = [];\r\n for ( let i = 0; i < vpoints.length; i++) {\r\n const vp = vpoints[i];\r\n const coordpx = this.getGraphPxCoords(vp.profile, vp.height);\r\n coords.push(coordpx.x, coordpx.y);\r\n }\r\n if ( coords.length > 1 ) {\r\n this.drawPolyline(parentelem, coords, classname);\r\n }\r\n }\r\n\r\n drawTerrain(parentelement: any, hoydegridmeter: number, yprofhpx: number, gTable) {\r\n if (this.terrainjson == null) {\r\n // hent data for terreng\r\n const url = this.apiurl + 'roadprojects/' + this.projectid + '/roadPolylines/' + this.roadlineid + '/lengthprofile/terrain';\r\n $.ajax( {url: url,\r\n success: (data: LengthProfileTerrainAPIResponse) => {\r\n this.terrainjson = data.result;\r\n this.terrainAPICallback( parentelement, hoydegridmeter, yprofhpx, gTable);\r\n },\r\n error: () => {\r\n console.error('Error to load terrain.');\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Fail to load terrain.');\r\n }\r\n });\r\n } else {\r\n this.terrainAPICallback( parentelement, hoydegridmeter, yprofhpx, gTable);\r\n }\r\n }\r\n\r\n terrainAPICallback( parentelement, hoydegridmeter: number, yprofhpx: number, gTable) {\r\n\r\n if ( this.terrainjson == null) {\r\n // 23.11.2020\r\n const eventinf: LengthProfileRefreshed = { targetId: this.roadProfile.roadConfig.targetId };\r\n this.eventHandler.triggerEvent(EventsEventTypes.Refreshed, eventinf);\r\n return;\r\n }\r\n let firstlayername = '';\r\n if (this.terrainjson.length > 0 ) {\r\n firstlayername = this.terrainjson[0].layerName;\r\n }\r\n const classname = 'terrainline';\r\n\r\n for ( let i = 0; i < this.terrainjson.length; i++ ) {\r\n const layer = this.terrainjson[i];\r\n\r\n // tegn linjer\r\n if ( i > 0 ) { // skjøt sammen med forrige lag hvis verdiene ligger innen rimelig avstand\r\n const prevlayer = this.terrainjson[ i - 1];\r\n if (prevlayer.layerName === layer.layerName && prevlayer.lengthProfileVerticalPoints.length > 0 &&\r\n layer.lengthProfileVerticalPoints.length > 0 ) {\r\n const prevpoint = prevlayer.lengthProfileVerticalPoints[ prevlayer.lengthProfileVerticalPoints.length - 1];\r\n const firstpoint = layer.lengthProfileVerticalPoints[0];\r\n if ( firstpoint.profile - prevpoint.profile <= 10 && prevpoint.profile < firstpoint.profile ) {\r\n const bridgepoints: LengthProfileVerticalPoint[] = [];\r\n bridgepoints.push(prevpoint);\r\n bridgepoints.push(firstpoint);\r\n this.drawVerticalPoints(parentelement, bridgepoints, classname);\r\n }\r\n }\r\n }\r\n this.drawVerticalPoints(parentelement, layer.lengthProfileVerticalPoints, classname);\r\n\r\n // terreng høyde-tall, nederste rad i tabell\r\n // inkluder tall for kun første lag (basert på lagnavnet)\r\n if ( layer.layerName === firstlayername ) {\r\n // console.log('drawing row data for ' + layer.layerName);\r\n layer.lengthProfileVerticalPoints.forEach(vp => {\r\n if (vp.profile % hoydegridmeter === 0) {\r\n const cx = this.getGraphPxCoordX(vp.profile);\r\n const textxpx = cx - 2;\r\n const textypx = yprofhpx + 1;\r\n const ele = this.drawText(gTable, textxpx , textypx, vp.height.toFixed(2), 'heighttext');\r\n // const ele = this.drawText(gTable, textxpx , textypx, floorval + '', 'heighttext');\r\n ele.setAttribute('transform', 'rotate(-90,' + textxpx + ',' + textypx + ')');\r\n }\r\n });\r\n }\r\n }\r\n\r\n // 23.11.2020\r\n const eventinfo: LengthProfileRefreshed = { targetId: this.roadProfile.roadConfig.targetId };\r\n this.eventHandler.triggerEvent(EventsEventTypes.Refreshed, eventinfo);\r\n }\r\n\r\n drawCenterline(rowytop: number, rowybottom: number, gridpxW: number, svgdoc: any, dasharray: number[]) {\r\n const centerypx = rowytop + (rowybottom - rowytop) / 2;\r\n const line = this.drawPolyline(svgdoc, [this.xmarginpx, centerypx, this.widthpx, centerypx], 'grid');\r\n const dashsum = dasharray.reduce((a, b) => a + b, 0);\r\n // tilpass til rutenett\r\n for (let i = 0; i < dasharray.length; i++) {\r\n dasharray[i] = (dasharray[i] / dashsum) * gridpxW;\r\n }\r\n line.setAttribute('stroke-dasharray', dasharray.join(' '));\r\n line.setAttribute('stroke-dashoffset', '-' + dasharray[1]);\r\n }\r\n\r\n\r\n drawWidening(svgdoc, rowypx0: number, rowypx1: number) {\r\n\r\n if (this.wideningjson == null) {\r\n // hent data for breddeutvidelse\r\n const url = this.apiurl + 'roadprojects/' + this.projectid + '/roadPolylines/' + this.roadlineid + '/lengthprofile/widening';\r\n $.ajax( {url: url,\r\n success: (data: WideningAPIResponse) => {\r\n this.wideningjson = data.result;\r\n this.wideningAPICallback( svgdoc, rowypx0, rowypx1);\r\n },\r\n error: () => {\r\n console.error('Error to load widening.');\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Fail to load widening.');\r\n }\r\n });\r\n } else {\r\n this.wideningAPICallback( svgdoc, rowypx0, rowypx1);\r\n }\r\n }\r\n\r\n wideningAPICallback( svgdoc, rowypx0: number, rowypx1: number) {\r\n const rowheight = rowypx1 - rowypx0;\r\n const ycenter = rowypx0 + (rowypx1 - rowypx0) / 2;\r\n\r\n const maxleft = this.getMaxVal(this.wideningjson.wideningLeft);\r\n const maxright = this.getMaxVal(this.wideningjson.wideningRight);\r\n const maxval = (maxleft > maxright ? maxleft : maxright);\r\n\r\n this.drawWideningHelper(svgdoc, maxval, ycenter, rowheight,\r\n this.wideningjson.wideningLeft, this.wideningjson.profilesLeft, true);\r\n this.drawWideningHelper(svgdoc, maxval, ycenter, rowheight,\r\n this.wideningjson.wideningRight, this.wideningjson.profilesRight, false);\r\n\r\n }\r\n\r\n getMaxVal(arr: number[]): number {\r\n let maxval = Number.MIN_VALUE;\r\n for ( let i = 0; i < arr.length; i++) {\r\n const val = arr[i];\r\n if (val > maxval) { maxval = val; }\r\n }\r\n return maxval;\r\n }\r\n\r\n drawWideningHelper(svgdoc, maxval: number, ycenter: number, rowheight: number,\r\n wideningvals: number[], profilevals: number[], isleft: boolean ) {\r\n let coords = [];\r\n let signmod = 1;\r\n if (isleft) { signmod = -1; }\r\n const gText = this.svgElement.createElement('g');\r\n for ( let i = 0; i < profilevals.length; i++) {\r\n const profileval = profilevals[i];\r\n const xpx = this.getGraphPxCoordX(profileval);\r\n const wideningval = wideningvals[i];\r\n\r\n const ypx = this.getWideningYPx(wideningval * signmod, maxval, ycenter, rowheight);\r\n coords.push(xpx, ypx);\r\n\r\n let nextwideningval = -1;\r\n if (i < profilevals.length - 1) {\r\n nextwideningval = wideningvals[i + 1];\r\n const profilevalnext = profilevals[i + 1];\r\n const wideningvalfixed = wideningval.toFixed(2);\r\n if ( wideningvalfixed === nextwideningval.toFixed(2) && wideningval !== 0) {\r\n const xpxcenter = this.getGraphPxCoordX(profileval + (profilevalnext - profileval) / 2);\r\n let ypxtxt = ycenter + 7;\r\n if (isleft) {\r\n ypxtxt = ycenter - 5;\r\n }\r\n this.drawText(gText, xpxcenter, ypxtxt, wideningvalfixed + 'm', 'wideningtext');\r\n }\r\n }\r\n // der breddeutvidelse er 0 tegnes ingenting (bare senterlinjen med streker vises)\r\n if ( wideningval === 0 && nextwideningval === 0) {\r\n coords = [];\r\n continue;\r\n }\r\n if (nextwideningval === 0 ) {\r\n const nextxpx = this.getGraphPxCoordX(profilevals[i + 1]);\r\n const nextypx = this.getWideningYPx(0, maxval, ycenter, rowheight);\r\n coords.push(nextxpx, nextypx);\r\n this.drawPolyline(svgdoc, coords);\r\n coords = [];\r\n }\r\n }\r\n if ( coords.length > 1) {\r\n this.drawPolyline(svgdoc, coords);\r\n }\r\n svgdoc.appendChild(gText); // tegn tekst over linjer\r\n }\r\n\r\n getWideningYPx(wideningvalue: number, maxwidening: number, centerypx: number, rowheightpx: number): number {\r\n // internal row y-axis, where 0 is centerline, miny is -fallvaluemax*fudgefactor, maxy is fallvaluemax*fudgefactor\r\n const maxval = maxwidening * 1.3;\r\n const wideningvaluefactor = wideningvalue / maxval;\r\n const yval = centerypx + wideningvaluefactor * rowheightpx / 2;\r\n return yval;\r\n }\r\n\r\n drawHorizcurv(svgdoc, rowypx0: number, rowypx1: number) {\r\n if ( this.horizcurvjson == null) {\r\n // hent data for horisontalkurvatur\r\n const url = this.apiurl + 'roadprojects/' + this.projectid + '/roadPolylines/' + this.roadlineid + '/lengthprofile/horizontalcurve';\r\n $.ajax( {url: url,\r\n success: (data: HorizontalCurvatureAPIResponse) => {\r\n this.horizcurvjson = data.result;\r\n this.horizcurvAPICallback(svgdoc, rowypx0, rowypx1);\r\n },\r\n error: () => {\r\n console.error('Error to load horizontal curvature.');\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Fail to load horizontal curvature.');\r\n }\r\n });\r\n } else {\r\n this.horizcurvAPICallback(svgdoc, rowypx0, rowypx1);\r\n }\r\n }\r\n\r\n\r\n horizcurvAPICallback( svgdoc, rowypx0: number, rowypx1: number) {\r\n\r\n const rowheight = rowypx1 - rowypx0;\r\n // fast avstand\r\n const ypos = rowypx0 + rowheight / 4;\r\n const yneg = rowypx1 - rowheight / 4;\r\n const ycenter = rowypx0 + (rowypx1 - rowypx0) / 2;\r\n const coords = [];\r\n const dasharray = [0.4 * rowheight, 0.2 * rowheight, 0.4 * rowheight];\r\n const gText = this.svgElement.createElement('g');\r\n for ( let i = 0; i < this.horizcurvjson.length; i++) {\r\n const item = this.horizcurvjson[i];\r\n\r\n const xpx = this.getGraphPxCoordX(item.profile);\r\n let ypx = ycenter;\r\n if ( item.radius < 0) {\r\n ypx = yneg;\r\n } else if ( item.radius > 0) {\r\n ypx = ypos;\r\n }\r\n\r\n if (i > 0 && item.chlotoideParameter === 0) {\r\n const previtem = this.horizcurvjson[i - 1];\r\n if ( (item.radius === 0 && previtem.radius !== 0) ||\r\n (previtem.radius === 0 && item.radius !== 0) ||\r\n (previtem.radius !== 0 && item.radius !== 0) // 24.9.2020\r\n ) {\r\n if ( previtem.chlotoideParameter === 0 ) {\r\n // trekk horisontal linje fra forrige punkt\r\n const ypxextra = coords[coords.length - 1];\r\n coords.push(xpx, ypxextra);\r\n }\r\n }\r\n }\r\n\r\n coords.push(xpx, ypx);\r\n\r\n // stiplet vertikal skillelinje\r\n const pline = this.drawPolyline(svgdoc, [xpx, rowypx0, xpx, rowypx1], '');\r\n pline.setAttribute('stroke-dasharray', dasharray.join(' '));\r\n\r\n let ytext = ypos + 3;\r\n if ( item.radius > 0) {\r\n ytext = rowypx1 - 5;\r\n }\r\n\r\n let txt = '';\r\n if (item.chlotoideParameter !== 0 ) {\r\n txt = 'A=' + item.chlotoideParameter.toFixed(0);\r\n } else {\r\n txt = 'R=';\r\n if ( item.radius !== 0) {\r\n txt += item.radius.toFixed(1);\r\n } else {\r\n txt += '∞';\r\n }\r\n }\r\n\r\n // center text between this profile and next\r\n if ( i < this.horizcurvjson.length - 1) {\r\n const itemnext = this.horizcurvjson[i + 1];\r\n const profileval = item.profile + (itemnext.profile - item.profile) / 2;\r\n const xpxtext = this.getGraphPxCoordX(profileval);\r\n this.drawText(gText, xpxtext, ytext, txt, 'horizcurvtext');\r\n\r\n // if ( txt === 'R=' ) { // infinity\r\n // // increase size of inifinity symbol:\r\n // this.drawText(gText, xpxtext + 6, ytext + 3, '∞', 'horizcurvetext8' );\r\n // }\r\n }\r\n }\r\n\r\n this.drawPolyline(svgdoc, coords);\r\n svgdoc.appendChild(gText); // tegn tekst over linjer\r\n }\r\n\r\n\r\n drawCrossfall(svgdoc, rowypx0: number, rowypx1: number) {\r\n if (this.crossfalljson == null) {\r\n // hent data for tverrfall\r\n const url = this.apiurl + 'roadprojects/' + this.projectid + '/roadPolylines/' + this.roadlineid + '/lengthprofile/crossfall';\r\n $.ajax( {url: url,\r\n success: (data: CrossFallAPIResponse) => {\r\n this.crossfalljson = data.result;\r\n this.crossfallAPICallback(svgdoc, rowypx0, rowypx1);\r\n },\r\n error: () => {\r\n console.error('Error to load crossfall.');\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Fail to load crossfall.');\r\n }\r\n });\r\n } else {\r\n this.crossfallAPICallback(svgdoc, rowypx0, rowypx1);\r\n }\r\n }\r\n\r\n\r\n crossfallAPICallback(svgdoc, rowypx0: number, rowypx1: number) {\r\n\r\n // need max/min values\r\n let maxfallleft = -1;\r\n let maxfallright = -1;\r\n for ( let i = 0; i < this.crossfalljson.fallLeft.length; i++) {\r\n const valleft = Math.abs( this.crossfalljson.fallLeft[i]);\r\n if (valleft > maxfallleft) { maxfallleft = valleft; }\r\n const valright = Math.abs( this.crossfalljson.fallRight[i]);\r\n if (valright > maxfallright) { maxfallright = valright; }\r\n }\r\n let maxfallabs = -1;\r\n if (maxfallleft > maxfallabs ) { maxfallabs = maxfallleft; }\r\n if (maxfallright > maxfallabs ) { maxfallabs = maxfallright; }\r\n\r\n const json = this.crossfalljson;\r\n const gText = this.svgElement.createElement('g');\r\n let classname = 'crossfallvkj';\r\n this.crossfallhelper(svgdoc, rowypx0, rowypx1, json.profilesLeft, json.fallLeft, maxfallabs, classname, gText);\r\n classname = 'crossfallhkj';\r\n this.crossfallhelper(svgdoc, rowypx0, rowypx1, json.profilesRight, json.fallRight, maxfallabs, classname, gText);\r\n svgdoc.appendChild(gText); // tegn tekst over linjer\r\n }\r\n\r\n\r\n crossfallhelper(svgdoc, rowypx0: number, rowypx1: number, profiles: number[], falls: number[],\r\n maxfallabs: number, classname: string, gText) {\r\n const polylinecoords = [];\r\n\r\n const rowheightpx = (rowypx1 - rowypx0);\r\n const centerypx = rowypx0 + rowheightpx / 2;\r\n\r\n for ( let i = 0; i < profiles.length; i++) {\r\n // if ( profiles[i] < 0 ) { continue; }\r\n const xpx = this.getGraphPxCoordX(profiles[i]);\r\n const fall = falls[i];\r\n const fallperc = (fall * 100).toFixed(1);\r\n const ypx = this.getCrossfallYPx(fall, maxfallabs, centerypx, rowheightpx);\r\n polylinecoords.push(xpx, ypx);\r\n\r\n // vertical arrow\r\n let arrowlengthpx = 16;\r\n if ( fall < 0 ) { arrowlengthpx *= -1; } // switch direction\r\n const coordsarrow = [xpx, ypx + arrowlengthpx, xpx, ypx];\r\n const pline = this.drawPolyline(svgdoc, coordsarrow, '');\r\n pline.setAttribute('marker-end', 'url(#triangle)');\r\n\r\n // text\r\n let textypx = ypx - 3;\r\n if ( fall < 0 ) {\r\n const roomabovearrow = (ypx + arrowlengthpx - centerypx > 10);\r\n if ( roomabovearrow ) {\r\n textypx -= 14;\r\n } else {\r\n textypx = ypx + 12;\r\n }\r\n }\r\n this.drawText(gText, xpx, textypx, fallperc + '%', 'crossfalltext');\r\n }\r\n this.drawPolyline(svgdoc, polylinecoords, classname);\r\n }\r\n\r\n getCrossfallYPx(fallvalue: number, maxfallabs: number, centerypx: number, rowheightpx: number): number {\r\n // internal row y-axis, where 0 is centerline, miny is -fallvaluemax*fudgefactor, maxy is fallvaluemax*fudgefactor\r\n const maxval = maxfallabs * 1.5;\r\n const fallvaluefactor = fallvalue / maxval;\r\n const yval = centerypx - fallvaluefactor * rowheightpx / 2;\r\n return yval; \r\n }\r\n\r\n drawTransitionText(svgdoc, xtxtpx: number, ytxtpx: number, radius: number, classname: string) {\r\n let radiusthistxt = 'R = ';\r\n if ( radius === 0) {\r\n radiusthistxt += '∞';\r\n // increase size of inifinity symbol:\r\n // const ele8 = this.drawText(svgdoc, xtxtpx + 20, ytxtpx, '∞', 'transitiontext8' );\r\n // ele8.setAttribute('transform', 'rotate(-90,' + (xtxtpx + 3) + ',' + ytxtpx + ')');\r\n } else { radiusthistxt += radius.toFixed(1); }\r\n const ele = this.drawText(svgdoc, xtxtpx, ytxtpx, radiusthistxt, classname );\r\n ele.setAttribute('transform', 'rotate(-90,' + xtxtpx + ',' + ytxtpx + ')');\r\n }\r\n\r\n\r\n getPointAlongLine(p0x: number, p0y: number, p1x: number, p1y: number, lengthfactor: number) {\r\n const dx = p1x - p0x;\r\n const dy = p1y - p0y;\r\n\r\n const newx = p0x + dx * lengthfactor;\r\n const newy = p0y + dy * lengthfactor;\r\n\r\n return new Coord(newx, newy);\r\n }\r\n\r\n getArcSweep(ele: LengthProfileElement): number {\r\n // https://stackoverflow.com/questions/21816286/svg-arc-how-to-determine-sweep-and-larg-arc-flags-given-start-end-via-point\r\n const a = ele.profileFrom;\r\n const b = ele.heightStart;\r\n const c = ele.profileVVP;\r\n const d = ele.heightVVP;\r\n const e = ele.profileTo;\r\n const f = ele.heightEnd;\r\n const angle = this.angle([a, b], [c, d], [e, f]);\r\n return angle < 0 ? 0 : 1;\r\n }\r\n\r\n angle([a, b], [c, d], [e, f]) {\r\n const pi = Math.PI;\r\n return (Math.atan2(f - d, e - c ) - Math.atan2( b - d, a - c ) + 3 * pi ) % (2 * pi) - pi;\r\n }\r\n\r\n getGraphPxCoordX (xmeter: number): number {\r\n let xpx = this.meter2px(xmeter - this.xmeterfirst, this.meterperpxW);\r\n xpx += this.xmarginpx;\r\n return xpx;\r\n }\r\n\r\n\r\n getGraphPxCoords (xmeter: number, ymeter: number): Coord {\r\n // let xpx = this.meter2px(xmeter - this.xmeterfirst, this.meterperpxW);\r\n // xpx += this.xmarginpx;\r\n\r\n const xpx = this.getGraphPxCoordX(xmeter);\r\n\r\n let ypx = this.meter2px(ymeter - this.minheightmeter, this.meterperpxH);\r\n ypx = this.heightpx - ypx;\r\n ypx -= this.ymarginpx;\r\n\r\n const coord = new Coord(xpx, ypx);\r\n return coord;\r\n }\r\n\r\n getGridMeter (mingridpx, meterperpx) {\r\n let gridmeter = 1;\r\n let loopguard = 0;\r\n while ( loopguard <= 1000) {\r\n loopguard++;\r\n if ( loopguard > 1000 ) {\r\n // this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Grid meter loop guard.');\r\n throw new Error('Grid meter loop guard.');\r\n }\r\n const gridpx = this.meter2px(gridmeter, meterperpx);\r\n if (gridpx < mingridpx) {\r\n /*1\r\n 5\r\n 10\r\n 50\r\n 100\r\n 500\r\n 1000*/\r\n if ((gridmeter + '')[0] === '5') {\r\n gridmeter *= 2;\r\n } else {\r\n gridmeter *= 5;\r\n }\r\n } else {\r\n break;\r\n }\r\n }\r\n return gridmeter;\r\n }\r\n\r\n\r\n meter2px (meter, meterperpx) {\r\n return meter / meterperpx;\r\n }\r\n\r\n\r\n getLengthMinMaxMeters (lengthprofilejson: LengthProfileResult): number[] {\r\n const vpoints = lengthprofilejson.lengthProfileVerticalPoints;\r\n const lasti = vpoints.length - 1;\r\n if ( lasti < 1 ) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Too few vertical points.');\r\n throw new Error('Too few vertical points.');\r\n }\r\n return [vpoints[0].profile, vpoints[lasti].profile];\r\n }\r\n\r\n getVerticalMinMaxMeters (lengthprofilejson: LengthProfileResult): number[] {\r\n let minheight = 9999999;\r\n let maxheight = -9999999;\r\n\r\n const vpoints = lengthprofilejson.lengthProfileVerticalPoints;\r\n for (let i = 0; i < vpoints.length; i++) {\r\n const p = vpoints[i];\r\n if ( p.height < minheight) {minheight = p.height; }\r\n if ( p.height > maxheight) {maxheight = p.height; }\r\n }\r\n\r\n if ( minheight === maxheight ) { // 24.9.2020 prøv lengthProfileElements\r\n const eles = lengthprofilejson.lengthProfileElements;\r\n if (eles === null) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Missing length profile elements');\r\n // TODO: empty lengthprofilejson\r\n this.lengthprofilejson = null;\r\n throw new Error('Error length profile elements');\r\n }\r\n for (let i = 0; i < eles.length; i++) {\r\n const p = eles[i];\r\n if ( p.heightVVP < minheight) {minheight = p.heightVVP; }\r\n if ( p.heightEnd < minheight) {minheight = p.heightEnd; }\r\n if ( p.heightVVP > maxheight) {maxheight = p.heightVVP; }\r\n if ( p.heightEnd > maxheight) {maxheight = p.heightEnd; }\r\n }\r\n }\r\n\r\n return [minheight, maxheight];\r\n }\r\n\r\n\r\n drawText (svgDoc, x: number, y: number, text: string, classname: string) {\r\n\r\n if ( text == null ) { text = ''; }\r\n const ele = document.createElementNS(this.svgElement.svgNS, 'text');\r\n const arr = text.split('∞'); // make this larger\r\n if ( arr.length > 1 ) {\r\n for ( let i = 0; i < arr.length; i++ ) {\r\n const part = arr[i];\r\n if ( part === '') { continue; }\r\n const data = document.createTextNode(part);\r\n ele.appendChild(data);\r\n const tspan = document.createElementNS(this.svgElement.svgNS, 'tspan') as SVGTSpanElement;\r\n tspan.appendChild(document.createTextNode('∞'));\r\n tspan.style.setProperty('font-size', '22px');\r\n if (classname !== 'transitiontext' ) {\r\n tspan.setAttribute('dy', '4');\r\n }\r\n ele.appendChild(tspan);\r\n }\r\n } else {\r\n ele.appendChild( document.createTextNode(text) );\r\n }\r\n\r\n ele.setAttribute('x', x + '');\r\n ele.setAttribute('y', y + '');\r\n if (classname) {\r\n ele.setAttribute('class', classname);\r\n }\r\n // svgDoc.documentElement.appendChild(ele);\r\n svgDoc.appendChild(ele);\r\n return ele;\r\n }\r\n\r\n drawCircle(svgDoc, cx: number, cy: number, r: number) {\r\n const ele = document.createElementNS(this.svgElement.svgNS, 'circle');\r\n ele.setAttribute('cx', cx + '');\r\n ele.setAttribute('cy', cy + '');\r\n ele.setAttribute('r', r + '');\r\n ele.setAttribute('fill', 'white');\r\n ele.setAttribute('stroke', 'black');\r\n ele.setAttribute('stroke-width', '1');\r\n ele.setAttribute('vector-effect', 'non-scaling-stroke');\r\n svgDoc.appendChild(ele);\r\n return ele;\r\n }\r\n\r\n\r\n drawPolyline(svgDoc, coordArr, classname?) {\r\n const spoints = this.getCoordstring(coordArr); // '0,0 100,50 0,100 100,50');\r\n let attrs;\r\n if (classname) {\r\n attrs = { 'class': classname };\r\n } else {\r\n attrs = {\r\n 'stroke': 'black',\r\n 'fill': 'none'\r\n };\r\n }\r\n attrs['points'] = spoints;\r\n const polyline = this.svgElement.createElement('polyline', attrs);\r\n polyline.setAttribute('vector-effect', 'non-scaling-stroke');\r\n svgDoc.appendChild(polyline);\r\n return polyline;\r\n }\r\n\r\n\r\n drawPath(svgDoc, d: string, classname?) {\r\n let attrs;\r\n if (classname) {\r\n attrs = { 'class': classname };\r\n } else {\r\n attrs = {\r\n 'stroke': 'black',\r\n 'fill': 'none'\r\n };\r\n }\r\n attrs['d'] = d;\r\n const path = this.svgElement.createElement('path', attrs);\r\n path.setAttribute('vector-effect', 'non-scaling-stroke');\r\n svgDoc.appendChild(path);\r\n return path;\r\n }\r\n\r\n getCoordstring(coordArr) {\r\n let spoints = '';\r\n for (let i = 0; i < coordArr.length; i += 2) {\r\n if (i > 0) {\r\n spoints += ' ';\r\n }\r\n spoints += coordArr[i] + ',' + coordArr[i + 1];\r\n }\r\n return spoints;\r\n }\r\n\r\n\r\n clear( svgdoc) {\r\n let child = svgdoc.lastChild;\r\n let loopguard = 0;\r\n while ( child != null) {\r\n const lcnodename = child.nodeName.toLowerCase();\r\n if ( lcnodename !== 'style' && lcnodename !== 'defs' ) {\r\n child.parentNode.removeChild(child);\r\n }\r\n child = svgdoc.lastChild;\r\n if ( svgdoc.childElementCount <= 2) {\r\n return;\r\n }\r\n loopguard++;\r\n if ( loopguard > 10000 ) {\r\n this.eventHandler.triggerEvent(EventsEventTypes.ErrorEvent, 'Loop guard.');\r\n return; // 23.11.2020\r\n }\r\n }\r\n }\r\n}\r\n\r\n\r\nclass Coord {\r\n x: number;\r\n y: number;\r\n\r\n constructor(xin: number, yin: number) {\r\n this.x = xin;\r\n this.y = yin;\r\n }\r\n}\r\n","\r\nimport { RoadConfig } from '../Interfaces/RoadConfig';\r\nimport { EventsEventTypes, EventsEventHandler } from '../Events/EventHandler';\r\nimport { RoadProfileImplementationSvgElement } from './SvgElement';\r\nimport { RoadProfileImplementationDraw } from './Draw';\r\n\r\nexport class RoadProfileImplementationRoadProfile {\r\n\r\n roadConfig: RoadConfig;\r\n eventHandler: EventsEventHandler;\r\n svgElement: RoadProfileImplementationSvgElement;\r\n svgDocument;\r\n drawImplemenatation: RoadProfileImplementationDraw;\r\n isPanning: boolean;\r\n startPoint: Point;\r\n startTranslateX: number;\r\n startTranslateY: number;\r\n startScale: number;\r\n simulatemultitouch: boolean;\r\n finger_dist: number;\r\n\r\n constructor(eventsEventHandler: EventsEventHandler) {\r\n\r\n this.eventHandler = eventsEventHandler;\r\n this.svgElement = new RoadProfileImplementationSvgElement();\r\n this.drawImplemenatation = new RoadProfileImplementationDraw(this.eventHandler, this);\r\n }\r\n\r\n initRoadProfile(roadConfig: RoadConfig) {\r\n this.roadConfig = roadConfig;\r\n this.loadTemplate();\r\n this.eventHandler.triggerEvent(EventsEventTypes.Initialized, this.roadConfig);\r\n }\r\n\r\n getSvgDocument() {\r\n return this.svgDocument;\r\n }\r\n\r\n getTarget() {\r\n const element = document.getElementById(this.roadConfig.targetId);\r\n if (!element) {\r\n console.error('Element id not found: ', this.roadConfig.targetId);\r\n }\r\n return element;\r\n }\r\n\r\n draw() {\r\n this.drawImplemenatation.draw();\r\n }\r\n\r\n refresh() {\r\n this.drawImplemenatation.refresh();\r\n }\r\n\r\n private loadTemplate() {\r\n const element = this.getTarget();\r\n\r\n element.innerHTML = '';\r\n const svgElement = this.svgElement.createElement('svg', {\r\n 'xmlns:xlink': 'http://www.w3.org/1999/xlink',\r\n 'xmlns': this.svgElement.getNameSpace(),\r\n 'preserveAspectRatio': 'none',\r\n 'style': 'stroke-linejoin:round',\r\n 'zoomAndPan': 'magnify',\r\n 'width': '100%', // this.roadConfig.width,\r\n 'height': '100%', // this.roadConfig.height\r\n 'id': 'svglengthprofile'\r\n }) as any;\r\n\r\n const eleDefs = this.svgElement.createElement('defs');\r\n eleDefs.innerHTML = this.svgElement.getDefsContent();\r\n svgElement.appendChild(eleDefs);\r\n\r\n const eleStyle = svgElement.ownerDocument.createElement('style');\r\n eleStyle.setAttribute('type', 'text/css');\r\n eleStyle.innerHTML = this.svgElement.getStyleContent();\r\n svgElement.appendChild(eleStyle);\r\n\r\n element.appendChild(svgElement);\r\n this.svgDocument = svgElement;\r\n\r\n svgElement.onmousedown = (e) => {\r\n e.preventDefault();\r\n // console.log('mousedown ' + e.offsetY + ' ' + e.target.nodeName + ' ' + e.currentTarget.nodeName );\r\n\r\n if (e.touches) {\r\n if ( e.touches.length > 1 || this.simulatemultitouch ) {\r\n this.finger_dist = this.get_distance(e);\r\n }\r\n e = e.touches[0];\r\n } else {\r\n const type = 'mousedown';\r\n if ( this.ffeventfix(e, type) ) { return; }\r\n }\r\n\r\n this.isPanning = true;\r\n this.startPoint = new Point();\r\n this.startPoint.x = e.clientX;\r\n this.startPoint.y = e.clientY;\r\n const ele = this.svgDocument.getElementById('groupGraph');\r\n const currentTransform = ele.getAttribute('transform');\r\n this.startScale = this.getTransformScaleValue(currentTransform);\r\n const currentTranslate = this.getTransformTranslate(currentTransform);\r\n this.startTranslateX = currentTranslate[0];\r\n this.startTranslateY = currentTranslate[1];\r\n };\r\n\r\n\r\n svgElement.onmouseup = () => {\r\n this.isPanning = false;\r\n };\r\n\r\n\r\n svgElement.onmousemove = (e) => {\r\n if ( !this.isPanning ) { return; }\r\n e.preventDefault();\r\n\r\n if (e.touches) {\r\n if (e.touches.length > 1 || this.simulatemultitouch) { // If pinch-zooming\r\n const new_finger_dist = this.get_distance(e); // Get current distance between fingers\r\n const eventdelta = (new_finger_dist - this.finger_dist ) / this.finger_dist; // Zoom is proportional to change\r\n this.finger_dist = new_finger_dist; // Save current distance for next time\r\n // const mx = e.touches[0].clientX;\r\n // const my = e.touches[0].clientY;\r\n\r\n const rect = this.svgDocument.getBoundingClientRect(); // e.target.getBoundingClientRect();\r\n const mx0 = e.touches[0].pageX - rect.left;\r\n const my0 = e.touches[0].pageY - rect.top;\r\n let mx1 = 200;\r\n let my1 = 200;\r\n if ( !this.simulatemultitouch ) {\r\n mx1 = e.touches[1].pageX - rect.left;\r\n my1 = e.touches[1].pageY - rect.top;\r\n }\r\n const mx = mx0 + (mx1 - mx0) / 2;\r\n const my = my0 + (my1 - my0) / 2;\r\n\r\n this.zoomPoint(mx, my, eventdelta);\r\n return;\r\n } // Else just moving around\r\n e = e.touches[0];\r\n } else {\r\n const type = 'mousemove';\r\n if ( this.ffeventfix(e, type) ) { return; }\r\n }\r\n\r\n const dx = this.startPoint.x - e.clientX;\r\n const dy = this.startPoint.y - e.clientY;\r\n const translatevalx = this.startTranslateX - dx;\r\n const translatevaly = this.startTranslateY - dy;\r\n const transformval = 'translate(' + translatevalx + ', ' + translatevaly + ') scale(' + this.startScale + ')';\r\n // console.log('setting transform: ' + transformval);\r\n const ele = this.svgDocument.getElementById('groupGraph');\r\n ele.setAttribute('transform', transformval );\r\n\r\n // tabellen under graf\r\n this.transformTable(translatevalx, this.startScale);\r\n\r\n // verdiene langs y-aksen\r\n this.transformYValues(translatevaly, this.startScale);\r\n };\r\n\r\n\r\n svgElement.onwheel = (e) => {\r\n // console.log('wheel ' + e.offsetY + ' ' + e.target.nodeName + ' ' + e.currentTarget.nodeName );\r\n e.preventDefault();\r\n if (e.touches) {\r\n e = e.touches[0];\r\n } else {\r\n const type = 'wheel';\r\n if ( this.ffeventfix(e, type) ) { return; }\r\n }\r\n const deltaval = Math.sign(-e.deltaY) * 0.1;\r\n const mx = e.offsetX;\r\n const my = e.offsetY;\r\n this.zoomPoint(mx, my, deltaval);\r\n };\r\n\r\n // 13.11.2020 touch events\r\n svgElement.ontouchstart = (e) => {\r\n svgElement.onmousedown(e);\r\n };\r\n\r\n svgElement.ontouchend = () => {\r\n svgElement.onmouseup();\r\n };\r\n\r\n svgElement.ontouchmove = (e) => {\r\n svgElement.onmousemove(e);\r\n };\r\n\r\n window.addEventListener('keydown',\r\n this.keydownhandler,\r\n false);\r\n }\r\n\r\n\r\n zoomPoint(mx: number, my: number, deltaval: number) {\r\n const ele = this.svgDocument.getElementById('groupGraph');\r\n const currentTransform = ele.getAttribute('transform');\r\n let currentScaleval = 1;\r\n // console.log('currentTransform ' + currentTransform);\r\n currentScaleval = this.getTransformScaleValue(currentTransform);\r\n let newscaleval = currentScaleval + deltaval * currentScaleval;\r\n if (newscaleval < 1) {\r\n newscaleval = 1;\r\n }\r\n\r\n // https://stackoverflow.com/questions/36377839/svg-zoom-in-on-mouse-mathematical-model\r\n const currentTranslate = this.getTransformTranslate(currentTransform);\r\n const currentTranslateX = currentTranslate[0];\r\n const currentTranslateY = currentTranslate[1];\r\n let translatevalx = (currentTranslateX - mx) * newscaleval / currentScaleval + mx;\r\n let translatevaly = (currentTranslateY - my) * newscaleval / currentScaleval + my;\r\n if (newscaleval === 1) {\r\n translatevalx = 0;\r\n translatevaly = 0;\r\n }\r\n const transformval = 'translate(' + translatevalx + ', ' + translatevaly + ') scale(' + newscaleval + ')';\r\n // console.log('setting transform: ' + transformval);\r\n ele.setAttribute('transform', transformval );\r\n\r\n // tabellen under graf\r\n this.transformTable(translatevalx, newscaleval);\r\n\r\n // verdiene langs y-aksen\r\n this.transformYValues(translatevaly, newscaleval);\r\n\r\n // detaljer på grafen\r\n this.transformAnnotations(newscaleval);\r\n }\r\n\r\n keydownhandler(e) {\r\n // console.log('keydown...');\r\n if ( e.key !== '|') {\r\n return;\r\n }\r\n\r\n const elepath = document.getElementById('theprofilepath');\r\n if ( elepath == null ) {\r\n return;\r\n }\r\n // elepath.setAttribute('class', 'profileline profilelineanim');\r\n\r\n const txt = document.createElementNS('http://www.w3.org/2000/svg', 'text');\r\n const colors = ['#1FAAAC', '#EA3D59', '#A7B731'];\r\n const colorsmaxi = (colors.length - 1);\r\n const color = colors[Math.round( (Math.random() * colorsmaxi) % colorsmaxi) ];\r\n txt.style.setProperty('fill', color);\r\n txt.style.setProperty('stroke', 'white');\r\n txt.style.setProperty('font-family', 'verdana');\r\n txt.style.setProperty('font-size', '24px');\r\n txt.style.setProperty('text-anchor', 'middle');\r\n txt.style.setProperty('stroke-width', '3px');\r\n txt.style.setProperty('paint-order', 'stroke');\r\n const d = elepath.getAttribute('d');\r\n txt.style.setProperty('offset-path', 'path(\\'' + d + '\\')');\r\n txt.style.setProperty('offset-distance', '50%');\r\n txt.appendChild(document.createTextNode('isy'));\r\n const g = document.getElementById('groupGraph');\r\n g.appendChild(txt);\r\n\r\n let offsetval = 0;\r\n const inc = 0.1 + Math.random() * 0.2;\r\n const funanim = () => {\r\n offsetval += inc;\r\n if (offsetval > 100 ) {\r\n txt.parentNode.removeChild(txt);\r\n } else {\r\n txt.style.setProperty('offset-distance', offsetval + '%');\r\n requestAnimationFrame(funanim);\r\n }\r\n };\r\n requestAnimationFrame(funanim);\r\n\r\n }\r\n\r\n // https://stackoverflow.com/questions/59725292/why-does-event-offsetx-y-provide-different-values-in-firefox-edge-vs-chrome\r\n ffeventfix(e: any, type: string): boolean {\r\n if ( e.target !== e.currentTarget) {\r\n // create a synthetic event\r\n let synth = null;\r\n if ( type === 'wheel' ) {\r\n synth = new WheelEvent(type, { clientX: e.clientX, clientY: e.clientY, deltaY: e.deltaY});\r\n } else {\r\n synth = new MouseEvent(type, { clientX: e.clientX, clientY: e.clientY});\r\n }\r\n // dispatch it *synchronously* on us\r\n e.currentTarget.dispatchEvent(synth);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n get_distance(e: any) {\r\n let diffX: number;\r\n let diffY: number;\r\n if (this.simulatemultitouch) {\r\n diffX = e.touches[0].clientX - 200;\r\n diffY = e.touches[0].clientY - 200;\r\n } else {\r\n diffX = e.touches[0].clientX - e.touches[1].clientX;\r\n diffY = e.touches[0].clientY - e.touches[1].clientY;\r\n }\r\n return Math.sqrt(diffX * diffX + diffY * diffY); // Pythagorean theorem\r\n }\r\n\r\n private transformAnnotations(scale: number) {\r\n const g = this.svgDocument.getElementById('groupGraph');\r\n let elements = g.getElementsByTagName('circle');\r\n this.transformAnnotationsHelper(elements, scale, 'cx', 'cy');\r\n\r\n elements = g.getElementsByTagName('text');\r\n this.transformAnnotationsHelper(elements, scale, 'x', 'y');\r\n }\r\n\r\n transformAnnotationsHelper(elements, scale: number, xattrname: string, yattrname: string) {\r\n if (elements == null ) {\r\n return;\r\n }\r\n\r\n const xscale = 1 / scale;\r\n for (let i = 0; i < elements.length; i++) {\r\n const txtele = elements[i];\r\n const x = txtele.getAttribute(xattrname);\r\n const y = txtele.getAttribute(yattrname);\r\n let currval = txtele.getAttribute('transform');\r\n if (currval == null) { currval = ''; }\r\n let transval = 'scale(' + xscale + ')';\r\n const currrot = this.getTransformRotateValue(currval);\r\n // if (currval.indexOf('rotate') >= 0) { // if rotated, keep value\r\n if (currrot !== 0) {\r\n currval = 'rotate(' + currrot + ', ' + x + ', ' + y + ')';\r\n } else {\r\n currval = '';\r\n }\r\n transval = currval + ' translate(' + x + ',' + y + ') ' + transval + ' translate(' + (-x) + ',' + (-y) + ')';\r\n txtele.setAttribute('transform', transval);\r\n }\r\n }\r\n\r\n private transformYValues(translatevaly: any, newscaleval: number) {\r\n const g = this.svgDocument.getElementById('groupYValues');\r\n g.setAttribute('transform', 'translate(0, ' + translatevaly + ') scale( 1, ' + newscaleval + ')');\r\n // unngå at tekst strekkes i y-retning\r\n const textsy = g.getElementsByTagName('text');\r\n if (textsy) {\r\n const yscale = 1 / newscaleval;\r\n for (let i = 0; i < textsy.length; i++) {\r\n const txtele = textsy[i];\r\n const x = txtele.getAttribute('x');\r\n const y = txtele.getAttribute('y');\r\n let transval = 'scale(1,' + yscale + ')';\r\n transval = 'translate(' + x + ',' + y + ') ' + transval + ' translate(' + (-x) + ',' + (-y) + ')';\r\n txtele.setAttribute('transform', transval);\r\n }\r\n }\r\n }\r\n\r\n private transformTable(translatex: any, scale: number) {\r\n const eletab = this.svgDocument.getElementById('groupTable');\r\n eletab.setAttribute('transform', 'translate(' + translatex + ', 0' + ') scale(' + scale + ',1)');\r\n // unngå at tekst strekkes i x-retning\r\n const texts = eletab.getElementsByTagName('text');\r\n if (texts) {\r\n const xscale = 1 / scale;\r\n for (let i = 0; i < texts.length; i++) {\r\n const txtele = texts[i];\r\n const x = txtele.getAttribute('x');\r\n const y = txtele.getAttribute('y');\r\n let currval = txtele.getAttribute('transform');\r\n if (currval == null) { currval = ''; }\r\n let transval = 'scale(' + xscale + ', 1)';\r\n if (currval.indexOf('rotate') >= 0) { // profil h-values are rotated, keep value\r\n transval = 'scale(1, ' + xscale + ')';\r\n currval = 'rotate(-90, ' + x + ', ' + y + ')';\r\n } else {\r\n currval = '';\r\n }\r\n transval = currval + ' translate(' + x + ',' + y + ') ' + transval + ' translate(' + (-x) + ',' + (-y) + ')';\r\n txtele.setAttribute('transform', transval);\r\n }\r\n }\r\n }\r\n\r\n getTransformRotateValue( transformstring: string ): number {\r\n // rotate(-90,...)\r\n if ( transformstring == null || transformstring === '') {\r\n return 0;\r\n }\r\n const i = transformstring.indexOf('rotate(');\r\n if ( i < 0 ) {\r\n return 0;\r\n }\r\n const j = transformstring.indexOf(',', i + 7);\r\n if ( j > -1 ) {\r\n const sval = transformstring.substring(i + 7 , j);\r\n return parseFloat(sval);\r\n }\r\n return 0;\r\n }\r\n\r\n\r\n\r\n getTransformScaleValue( transformstring: string ): number {\r\n // scale(0.4)\r\n if ( transformstring == null || transformstring === '') {\r\n return 1;\r\n }\r\n const i = transformstring.indexOf('scale(');\r\n if ( i < 0 ) {\r\n return 1;\r\n }\r\n const j = transformstring.indexOf(')', i + 6);\r\n if ( j > -1 ) {\r\n const sval = transformstring.substring(i + 6 , j);\r\n return parseFloat(sval);\r\n }\r\n return 1;\r\n }\r\n\r\n\r\n getTransformTranslate(transformstring: string): number[] {\r\n const ret = [ 0, 0 ];\r\n if ( transformstring == null || transformstring === '') {\r\n return ret;\r\n }\r\n const needle = 'translate(';\r\n const i = transformstring.indexOf(needle);\r\n if ( i < 0 ) {\r\n return ret;\r\n }\r\n const j = transformstring.indexOf(')', i + needle.length);\r\n if ( j > -1 ) {\r\n const sval = transformstring.substring(i + needle.length , j);\r\n const arr = sval.split(', ');\r\n if ( arr.length === 2 ) {\r\n ret[0] = parseFloat(arr[0]);\r\n ret[1] = parseFloat(arr[1]);\r\n }\r\n }\r\n return ret;\r\n }\r\n\r\n}\r\n\r\nclass Point {\r\n x: number;\r\n y: number;\r\n}\r\n","\r\nexport class RoadProfileImplementationSvgElement {\r\n svgNS = 'http://www.w3.org/2000/svg';\r\n\r\n createElement(name: string, args?: any, html?: string) {\r\n\r\n const element = document.createElementNS(this.svgNS, name);\r\n if (html) {\r\n element.innerHTML = html;\r\n }\r\n if (args) {\r\n Object.keys(args).forEach(key => {\r\n element.setAttribute(key, args[key]);\r\n });\r\n }\r\n return element;\r\n }\r\n\r\n createElementNS(ns: string, name: string, args?: any, html?: string) {\r\n const element = document.createElementNS(ns, name);\r\n if (html) {\r\n element.innerHTML = html;\r\n }\r\n if (args) {\r\n Object.keys(args).forEach(key => {\r\n element.setAttribute(key, args[key]);\r\n });\r\n }\r\n return element;\r\n }\r\n\r\n getNameSpace() {\r\n return this.svgNS;\r\n }\r\n\r\n getDefsContent() {\r\n const myString = `\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `;\r\n return myString;\r\n }\r\n\r\n getStyleContent() {\r\n const myString = `\r\n\r\n .profileline{\r\n color:black;\r\n stroke: black;\r\n stroke-width: 2px;\r\n fill: none;\r\n }\r\n\r\n .profilelineanim{\r\n stroke-dasharray: 10;\r\n stroke-dashoffset: 50;\r\n animation: draw 2s ease-in-out forwards;\r\n }\r\n\r\n @keyframes draw {\r\n to {\r\n stroke-dashoffset: 0;\r\n }\r\n }\r\n\r\n .terrainline{\r\n stroke: gray;\r\n stroke-width: 1px;\r\n fill: none;\r\n }\r\n\r\n .xunittext{\r\n text-anchor:middle;\r\n dominant-baseline:middle;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:10px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .yunittext{\r\n text-anchor:middle;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:10px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .vvptext{\r\n text-anchor:middle;\r\n dominant-baseline:middle;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:11px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .rowheadtext{\r\n text-anchor:start;\r\n dominant-baseline:middle;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:10px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .heighttext{\r\n text-anchor:end;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:9px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .slopetext{\r\n text-anchor:middle;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:11px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .transitiontext{\r\n text-anchor:start;\r\n dominant-baseline:middle;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:11px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .grid{\r\n stroke:#B7B7B7;\r\n }\r\n\r\n .crossfallhkj{\r\n stroke:#000000;\r\n fill:none;\r\n }\r\n\r\n .crossfallvkj{\r\n stroke:#000000;\r\n stroke-dasharray: 5 2;\r\n fill:none;\r\n }\r\n\r\n\r\n .crossfalltext{\r\n text-anchor:middle;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:11px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n .horizcurvtext{\r\n text-anchor:middle;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:11px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n\r\n .wideningtext{\r\n text-anchor:middle;\r\n dominant-baseline:middle;\r\n fill:black;\r\n font-family:\"Arial\";\r\n font-size:11px;\r\n stroke: white;\r\n stroke-width: 3px;\r\n paint-order: stroke;\r\n }\r\n\r\n svg#svglengthprofile{\r\n cursor: move;\r\n }\r\n `;\r\n return myString;\r\n }\r\n}\r\n","// Events\r\nexport * from './ISY/Events/EventHandler';\r\n\r\n// Interfaces\r\nexport * from './ISY/Interfaces/RoadConfig';\r\n\r\n// RoadProfileApi\r\nexport * from '../src/ISY/RoadProfileAPI/RoadProfile';\r\n\r\n// RoadCorssSectionApi\r\nexport * from '../src/ISY/RoadCrossSectionAPI/RoadCrossSection';\r\n\r\n// RoadProfileImplementation\r\nexport * from './ISY/RoadProfileImplementation/Draw';\r\nexport * from './ISY/RoadProfileImplementation/RoadProfile';\r\nexport * from './ISY/RoadProfileImplementation/SvgElement';\r\n\r\n// RoadCrossSectionImplementation\r\nexport * from './ISY/RoadCrossSectionImplementation/Draw';\r\nexport * from './ISY/RoadCrossSectionImplementation/RoadCrossSection';\r\nexport * from './ISY/RoadCrossSectionImplementation/SvgElement';\r\n"],"names":["Person","MatrikkelenhetMe","MatrikkelenhetNaboliste","AppData","createDb","personMe","matrikkelenhetMe","matrikkelenhetNaboliste","RouterModule","MainComponent","objectKeysToLowerCase","IsyProjectNotFoundComponent","AuthGuard","routingResolveFunction","routeSnapshot","lat","lon","zoom","application","project","layers","baselayers","jtobjektid","jtfunksjon","theme","funksjon","plan","kommunenummer","gaardsnummer","bruksnummer","festenummer","seksjonsnummer","undernummer","bygningsnummer","endringsloepenummer","adressenavn","husnummer","bokstav","onlymap","tool","search","opennav","marker","planidentifikasjon","queryParams","routes","path","component","resolve","routingData","canActivate","redirectTo","pathMatch","AppRoutingModule","forRoot","imports","exports","environment","AppComponent","constructor","translateService","toasterService","vcRef","bladeService","draggableOverlayService","mapActionDialogService","dynamicModalService","commonService","setRootViewContainerRef","ngOnInit","use","setActiveEnvironment","selectors","features","decls","vars","consts","template","i0","BrowserModule","BrowserAnimationsModule","LOCALE_ID","HttpClientModule","HTTP_INTERCEPTORS","FormsModule","CommonModule","registerLocaleData","TooltipModule","IsyMapModule","FontAwesomeModule","IsyToasterModule","IsySideNavModule","IsyToolsModule","IsyLayersModule","IsyDraggableOverlayModule","IsyBaseLayersModule","IsyLoginModule","IsyDynamicModalModule","IsyDynamicNavLoaderModule","IsyProjectsListModule","IsyTranslateModule","TRANSLATION_PROVIDERS","IsyTranslateService","IsyEditWfstModule","ConfigService","configServiceFactory","IsyAdminModule","IsyInfoPanelModule","IsySearchModule","IsyUserInfoMsalModule","IsyUrlParamsModule","IsyBladeModule","IsyRoadProfileModule","IsyJobtechModule","IsyGisStylesModule","IsyMapActionDialogModule","IsyEmptyContentModule","IsyGeolocationModule","NgxWebstorageModule","SessionStorageService","IsyProjectNotFoundModule","IsyFeatureInfoModule","IsyGiVisModule","IsyGiBridgeEventsModule","IsyZoomInOutModule","IsyHelpModule","IsySpinnerModule","IsyKeycloakModule","localeNo","AuthModule","StsConfigLoader","StsConfigStaticLoader","InMemoryWebApiModule","initializeKeycloak","KeycloakAngularModule","KeycloakService","MsalGuard","MsalInterceptor","MsalBroadcastService","MsalModule","MsalService","APP_INITIALIZER","ConfigurationService","AppModule","bootstrap","provide","useValue","useClass","multi","useFactory","initializeIdPorten","deps","delay","passThruUnknownUrl","loader","createAuthConfig","declarations","configService","loadConfig","authConfigValues","Observable","observer","isymapConfig","then","config","next","complete","catch","error","authority","idPorten","redirectUrl","window","location","origin","pathname","replace","postLogoutRedirectUri","clientId","scope","responseType","silentRenew","useRefreshToken","renewTimeBeforeTokenExpiresInSeconds","factory","providedIn","KeycloakAuthGuard","ELogin","ELoginType","EMainMenuNavBar","ESessionStorageId","router","keycloak","sessionStorageService","isAccessAllowed","route","state","localStorage","getItem","authenticated","login","redirectUri","url","clear","TOKEN","RESOURCES","getToken","token","setKcToken","store","USERISLOGGEDIN","setActiveNavBarId","LOGIN","loadUserProfile","profile","EMAIL","email","USERNAME","username","LOGINTYPEINPROGRESS","KEYCLOAK","setItem","setKcLoginActive","Promise","reject","realm","realmAddress","init","initOptions","pkceMethod","checkLoginIframe","shouldAddToken","request","acceptablePaths","isAcceptablePathMatch","some","includes","IsyToolsListComponent","map","combineLatest","IsyAdminBtnComponent","fontAwesomeIcons","IsyLayersComponent","IsyLoginComponent","IsyProjectsListComponent","toolsService","dynamicNavLoaderService","gisStylesService","platform","toolsIsActive$","currentTheme$","showMainSpinner$","activeTool$","pipe","activeTool","currentTheme","showMainSpinner","isActiveTool","TRIDENT","console","log","alert","icon","faLayerGroup","id","LAYERS","isActive","tooltip","tools","faToolbox","TOOLS","childComponent","faUser","projects","faMapSigns","PROJECTS","addToNavBar","ID","ngAfterContentInit","mapBounds","document","getElementById","clickToMapOverlayLayer","hideSideNav","production","msalRedirectUri","protectedResources","useInMemoryDatabase","enableProdMode","MSAL_INSTANCE","MSAL_GUARD_CONFIG","MSAL_INTERCEPTOR_CONFIG","BrowserCacheLocation","PublicClientApplication","LogLevel","InteractionType","loggerCallback","logLevel","message","azureAd","undefined","__NgCli_bootstrap_1","auth","msalClientId","msalAuthority","cache","cacheLocation","LocalStorage","system","loggerOptions","Info","piiLoggingEnabled","interactionType","Redirect","protectedResourceMap","Map","genusUri","msalApi","bootstrapModule","err","authRequest","scopes","loginFailedRoute","AdminShowSpinnerPipe","adminService","transform","value","args","setTimeout","showSpinner","pure","FeatureType","Services","BaseLayer","LayerNode","guid","name","title","layer","featureElements","transactions","typeName","isParentCopy","prefix","LayerNodeSublayer","isSelected","Name","Title","LayerCapabilities","_isIWms","object","CatalogLayer","service","options","protocol","subname","version","type","typename","params","provider","category","TableDef","SchemaTable","Schema","BehaviorSubject","ECatalogOverlay","EBaseLayerOverlay","DetailOverlaysService","CATALOGINFO","activeCatalogDetailOverlay","asObservable","BASELAYERINFO","activeBaseLayerDetailOverlay","setActiveCatalogDetailOverlay","activeOverlay","getActiveCatalogDetailOverlay","getValue","setActiveBaseLayerDetailOverlay","getActiveBaseLayerDetailOverlay","GetNameFromParamsPipe","length","transformText","forEach","param","GetStringFromArrayPipe","dataInArray","stringFromArray","data","index","pageAnimation","Subscription","IsyAdminComponent","permissionService","administratorPreviewIsActive$","subscription","add","observe","subscribe","setIsAdminValue","ngOnDestroy","unsubscribe","isAdministrator","hasResource","showAdmin","showBladeWithComponent","fullScreen","showHeader","showMinifyBtn","bladeHeader","headerTitle","instant","headerIcon","faUserCog","showBladeOverlay","hostVars","hostBindings","ctx","BaseLayersPreviewComponent","chooseBaseLayersService","baseLayersWithImgUrl$","baseLayersWithImgUrl","baseLayers","mainBaseLayer","find","b","isMainLayer","errorLoadImg","baseLayer","imageUrlError","BaseLayersServicesComponent","detailOverlaysService","activeBaseLayerDetailOverlay$","Wms","WmsOptions","ParamsWms","Layers","WmsLayer","getUniqueId","ServiceBaseLayerAddNewComponent","selectLayersService","mapEmitterService","getCapabilitiesFromUrlEmitter$","result","nodes","success","layersCapabilitiesMaplib$","layersCapabilitiesMaplib","emitGetCapabilitiesFromUrl","addBaseLayer$","info","destroyNewBaseLayer","addCustomUrl","removeUrlParameters","format","selectedFormat","newLayer","useGatekeeper","toString","selectedOpacity","useSingleTile","selectedServiceType","matrixset","selectedMatrixset","matrixprefix","matrixPrefix","numberofzoomlevels","adjustedNumberOfZoomLevels","addLayer","fixedUrl","trimEnd","getCapabilities","serviceType","getCapabilitiesUrlVersion","setNodeData","node","formats","matrixinfo","matrixsets","Object","keys","x","setMatrixSet","m","numberOfZoomLevels","setServiceType","Subject","debounceTime","distinctUntilChanged","ServiceBaseLayerEditComponent","editBaseLayerByGuid$","editLayerGuid","baseLayers$","editBaseLayerByGuid","keyUpChangeName","base","ServiceBaseLayerInfoComponent","HttpHeaders","tap","take","filter","switchMap","moveItemInArray","ServiceBaseLayerListComponent","httpClient","mapService","baseLayersOriginal$","baseLayerEditGuid$","baseLayersOriginal","baseLayerEditGuid","addNewIsActive","BASELAYERADDNEW","subscriptions","push","dynamicModalAcceptButtonClick$","layerToRemove","config$","headers","delete","configurl","retrieve","instance","escape","removeLayer","dynamicModalAcceptButtonClick","changeEditBaseLayerGuid","dropLayer","event","layerorder","previousIndex","currentIndex","changeSelectedBaseLayer","layerIndex","findIndex","l","newBaseLayer","display","gatekeeper","layerindex","baseLayerFromLibrary","changeMainBaseLayer","splice","unshift","changeAddNewCustomBaseMap","changeBaseLayerEdit","activeLayerGuid","getEditBaseLayerGuid","EDITBASELAYER","removeMainBaseLayer","showModalWithComponent","showFooter","contentText","modalHeader","faTrash","showCloseBtn","iconColor","modalFooter","showCancelButton","acceptButtonText","animate","style","transition","trigger","TABBUTTONS","ctx_r6","ChooseBaseLayersComponent","tabButtons","activeTabButton","toggleTabButton","tabButton","showHelp","helpFile","setHelpId","inputs","height","opacity","overflow","maxHeight","IWms","firstValueFrom","ReplaySubject","catchError","multicast","refCount","concatMap","arrayMove","ChooseBaseLayersService","mapLibNgService","catalogLibrary","tempProjectConfig$","projectConfig$","catalogLibrary$","projectConfig","baseLibrary","projectBaseLayers","baseInLibrary","BaseLayers","attribution","firstBaseLayerGuid","indexInBaseLibrary","layerExist","sort","a","newBaseLayerAction","newAddedBaseLayer","findNewAddedBaseLayer","p","imageUrl","getImageUrl","isytoken","getConfig","sourceAddUrl","post","handleErrorWithPromise","bind","getCatalogLibrary","sourceListUrl","get","allLayers","errorMessage","ErrorEvent","status","statusText","text","ctx_r7","ChooseLayersComponent","WMSLAYERFIELDS","label","dataType","WFSLAYERFIELDS","CATALOGLAYERFIELDS","EServiceTypes","AddNewServiceComponent","WFS","WMS","VECTOR","addLayer$","urlExist","tempConfig","metadata","showMetadataFields","epsg","crs","warning","abstract","Array","isArray","versions","getCapabilityValues","capabilitiesPromise","substring","setOgcServiceUrl","getOgcApiData$","table","conformCrsVersion","c","projectLayers","getAllProjectLayers","reInit","CatalogDetailComponent","activeCatalogDetailOverlay$","CatalogEditComponent","editCatalogLayerUrl$","searchCatalogs$","editCatalogLayerUrl","searchCatalogs","catalogLayer","update","CatalogInfoComponent","ctx_r12","ctx_r15","ctx_r17","CatalogListComponent","contentArray","startItem","currentPage","endItem","returnedArray","slice","catalogLayers$","catalogLayers","addNewServieActive","ADDNEWSERVICE","keyUpSearch","searchInCatalogLayers","changeEditCatalogLayerUrl","isyToken","toggleCatalogLayer","capabilities","vectorLayers","wmsLayers","changeAddCatalogLayer","activeDetailOverlay","changeCatalogEdit","activeLayerUrl","getEditCatalogLayerUrl","EDITCATALOG","searchValue","changeSearchedCatalogValue","pageChanged","page","itemsPerPage","removeCatalogLayer","LayersCatalogComponent","GroupPreview","SuperGroupPreview","$event","group_r28","ctx_r78","ctx_r81","superGroup_r13","ctx_r94","ctx_r153","ctx_r160","ctx_r163","group_r106","ctx_r196","ctx_r203","ctx_r206","group_r176","EGroup","LayersPreviewComponent","layersPreviewService","GROUP","groupsWithLayers$","projectLayers$","layersInGroups","tempProjectConfig","superGroups","groupsWithLayers","createGroup","group","groupName","newGroup","String","SUPERGROUP","newSuperGroup","updateLayerOrderIndex","changeSuperGroupName","ev","target","updateSuperGroupsInTempProjectConfig","changeGroupName","updateGroupInTempProjectConfig","setGroup","g","dropSuperGroup","dropGroup","groups","removeSuperGroup","superGroup","supergroupid","superGroupIndex","s","removeSuperMapLayerFromProjectConfig","updateCountVisibleLayers","removeFromSuperGroup","removeGroup","dummyGroup","groupid","createDummyGroup","isyLayers","groupIndex","removeMapLayerFromProjectConfig","moveLayerToGroup","isyLayer","moveFromGroup","moveToGroup","moveGroupToSuperGroup","toggleLayerVisibility","isVisible","updateLayersInTempProjectConfig","getLocationInCatalog","sublyr","wms","lyr","elt","wfs","SuperMapLayer","MapLayer","ELayerType","IsyLayersPreview","layerType","isEditingName","isOpen","LayersInGroups","LayersPreviewService","sortByPipe","superMapLayers","supermaplayers","mapLayers","maplayer","vector","mapLayer","newDummyGroup","w","newWms","visibility","findGroup","v","newVector","sortLayersInGroupByLayerOrder","layer1","layer2","layerIndex1","layerIndex2","sortSuperMapLayers","group1","group2","groupIndex1","Number","groupIndex2","sortMapLayers","layerInGroups","layerOrderIndex","groupWithoutSuperGroup","groupsWithoutSuperGroups","projectConfigSuperGroups","superGroupExist","newSuperMapLayer","projectMapLayers","groupExist","newMapLayer","sortLayersByLayerOrder","findLayer","grouptitle","countVisibleLayers","superGroupdId","superMapLayerIndex","groupId","mapLayerIndex","LayersServicesComponent","catalogLibraryLoaded","closeCatalogLayer","toggleHeightAnimation","CompleteStyle","Filter","Stroke","Fill","ImageStyle","Style","FilterOperator","ctx_r26","ctx_r29","FilterEditorComponent","styleFileName","endsWith","fileName","defFill","defStroke","defCircle","defPoint","defLine","defPolygon","defAnd","defaultFilter","saveStyle$","styleSubscription","completeChosenStyle$","hover","isStyleFromEditor","containsSpecifiedGeometryType","isFilterFromEditor","showStyleEditor","initialStyle","filterList","initialFilter","defStyleList","styleArray","geometryType","toggleStyleEditor","item","saveStyle","addFilterEditor","removeFilterEditor","setStyle","styleInput","styleFromStyleEditor","toggleHover","setFilter","and","or","makeStyleString","completeStyle","completeList","styleString","JSON","stringify","saveStyleClicked","oldName","newName","nameHasChanged","newBlob","Blob","setStyleFile","mapConfig","toLowerCase","indexOf","catalog","stylemapjson","stylemapurl","setStyleUpdated","EventEmitter","FilterTreeComponent","featureElementsInput","andOrOr","initialListOfFilters","operators","equalTo","notEqualTo","greaterThan","lessThan","contains","notContains","inArray","notInArray","operator","i","currentFilter","listOfFilters","emitFilter","addFilter","removeFilter","setFilterAttribute","attribute","setFilterValue","setFilterArrayValue","arrayIndex","appendValue","removeValue","pop","trackValue","setOperator","changeAndOrOrOperator","completeFilterList","filterOperator","setFilterParent","emit","outputs","fastXml","JsonStyleDef","SERVICESTYLE","takeUntil","FeatureInfoElement","editable_r76","username_r89","ctx_r136","ctx_r277","EFeatureElement","EAccordion","ServiceDetailComponent","fileSaver","PROPERTIESLIST","getStyles$","styleFileLoad$","deleteStyle$","getStyle","_parseResult","handleGetFileError","fileNameExtension","split","showFilterEditor","getStyleBlob","styleFile","openedCatalogLayer$","activeAccordion","isIWms","catalogLayerWms","catalogLayerVector","activeStyleDef","filename","setCompleteChosenStyle","openedCatalogLayer","editFeatureType$","editFeatureType","allContentArray","uniqueNames","findGeometryType","filterSelectedFeatureInfoElement","styleList$","styleFile$","styleFileBlob$","groupsList$","styleList","styleFileBlob","groupsList","featureinfo","editable","styleFiles","destroy$","layerData","mapUrlParams","keyUpFeatureInfo","changeValueInFeatureInfoElement","TEXT","wmsUrlParam$","wfsUrlParam$","setDeleteStyle","currentFilename","selectStyleFile","currentNode","currentCatalog","incrementValue","parseInt","timeoptions","increment","incrementParts","incrementUnit","uploadToServerSubscription","selectEpsg","vm","dataprojection","list","namesSeen","Set","has","downloadStyleFile","fileAndFileName","save","deleteStyleFile","addUrlParam","identifier","constant","urlParams","set","newConstant","nativeElement","newIdentifier","updateConfig","removeUrlParam","layerConfig","paramKeyValues","size","key","pair","Key","Value","customparams","customParams","addMetadataService","catalogVectorLayer","metadataservices","metadataurl","opennewwindow","removeMetadataService","featureInfo","featureIndex","f","scale","minScale","min","maxScale","max","completeChosenStyle","styleObject","fill","stroke","image","color","rgbStringToHex","width","_parseAsSld","asJson","parse","userStyle","active","activeValues","_parseSldUserStyle","strokeWidth","radius","_parseFromJson","fillColor","strokeColor","pointSymbolizer","graphic","mark","cssParameter","_getValuesFromSldLiteral","values","sldSize","polygonSymbolizer","field","elements","geoType","element","selectFeatureElement","selectedFeature","feature","featureInfoIndex","featureinfoelement","newFeatureInfoElement","datatype","attachment","hascodelist","toggleAllSelected","toggleFilterFeatureInfoElement","allSelected","selectHasCodeList","HASCODELIST","selectEditable","EDITABLE","selectAttachment","ATTACHMENT","selectDatatype","DATATYPE","changeCodeList","codevalueString","codevalue","CODELIST","featureInfoElement","selectFeatureOpenMode","mode","selectSrsDimension","srsdimension","selectLayerType","layertype","splitInPages","toggleTimeoptions","starttime","endtime","chooseGroup","hasWarning","toggleAccordion","toggleParamsGetFeatureInfoWms","getfeatureinfo","setPointSize","setPointType","pointType","regularshape","pointIcon","points","rotation","Math","PI","angle","componentToHex","hex","rgbToHex","r","rgbStringToRgb","rgbString","rgb","setStrokeColor","setFillColor","setLineWidth","linedashValue","setLineType","lineStyle","substr","getActivePointStyle","getActiveStyle","getActiveLineStyle","getIcon","isAcceptedFile","file","acceptFiles","ending","uploadFiles","files","currFile","upload2Server","dropped","droppedFile","fileEntry","isFile","fileExtension","dragableIsActive","drop","viewQuery","ColorPickerComponent","initialColor","emitColor","setColorParent","Scale","fillPattern","regularShape","FillPattern","colors","solidLine","direction","strokeDistance","IconStyle","src","RegularShapeStyle","radius2","LineStyle","PolygonStyle","lineDash","lineCap","TextStyle","font","placement","offsetX","offsetY","LineEditorComponent","initialLineStyle","updateLine","setColor","rgbaColor","setLineDash","first","second","setLineCap","setLabel","line","setLineStyle","PointEditorComponent","initialPointStyle","updatePoint","correctStyle","imageCompress","uploadIcon","uploadFile","orientation","img","Image","onload","ratio","iconDefaultHeight","compressFile","compressedImage","setRotation","circleStyle","pointStyle","triangleStyle","squareStyle","crossStyle","starStyle","iconStyle","setPointStyle","PolygonEditorComponent","initialPolygonStyle","fillType","updatePolygon","setFillType","setPatternDirection","updatePatternColors","appendPatternColor","removePatternColor","trackColor","setStrokeDistance","distance","setStrokeWidth","newFill","polygon","setPolygonStyle","StyleEditorComponent","itemList","initialTextStyle","changeFilterStyle","ngAfterViewInit","childrenInitialized","polygonStyle","setTextStyle","textStyle","toggleActiveStyle","TextEditorComponent","match","join","emitText","setTextSize","setText","setTextColor","setTextStrokeColor","rgbColor","setOffsetX","setOffsetY","setPlacement","ctx_r8","EFilterVectorType","ServiceListComponent","toggleCatalogLayerUrl$","toggleOGCCatalogLayerUrl$","featureType","showSpinner$","editFeatureTypeName$","toggleCatalogLayerUrl","toggleOGCCatalogLayerUrl","editFeatureTypeName","catalogLayersWMS","catalogLayersWFS","catalogLayersVector","paginationFeatureTypes","generatePaginationFeatureTypes","filterVectorLayers","filterVectorLayersWithWarning","filterWmsLayersWithWarning","featuretype","projectVectors","projectVectorIndex","pv","projectWms","projectWmsIndex","allFeatureTypes","allFeatureTypesCopy","filterWmsLayers","ISSELECTED","HASWARNING","curentPageFeatureTypes","getCatalogLayerCapabilities","getOGCCollections","toggleOGCSource","changeEditFeatureType","addWmsLayer","addVectorLayer","changeEditOGCFeatureType","addOGCLayer","addWmsNodeLayer","nodeLayer","toggleFilterVectorLayers","filterPagination","toggleFilterVectorLayersWithWarning","toggleFilterWmsLayers","toggleFilterWmsLayersWithWarning","createNodeCopy","newNode","newNodeSublayers","node1","node2","name1","name2","removeNodeCopy","n","filterType","mergeMap","forkJoin","EMPTY","VectorOptions","Vector","Params","Protocol","FeatureInfoProjectConfig","SelectLayersService","capabilitiesService","featureUrlHasBeenDescribedEmitter$","definedGroups$","definedGroups","vectorLayer","catalogLibraryLayer","newCatalogLayer","isOnlyInProject","wmsLayer","updateGroups","featureTypes","projectLayersOriginal$","projectLayersOriginal","ogcServiceUrlAction","ogcServiceUrl","api","conformance","toggleOGCSourceUrlAction","OGCSourceUrl","ogcCollectionIdAction","ogcCollectionId","getOGCCollections$","OGCCollections","projectLayer","ogcNodes","collections","links","newLayerCap","selectedGuid","layersCapabilities","testTypeName","findNode","countSelectedNodelayers","isOpened","nodelayer","wlayer","searchCatalogValue","filteredProjectLayers","isSelected1","isSelected2","featureTypeWithElementsMaplib$","ogcCategoryIdAction","getOGCCollectionById$","featureTypeWithElements","ogcCategoryId","OGCCollectionById","catalogLayerForFeatureType","catalogLayerId","ve","fe","properties","openedCatalog","featureinfoformats","featureInfoFormats","addLayerAction","getSourceListCallback","groupIds","groupTitles","getCapabilitiesFromUrl","nodeUpdated","newParams","newWmsOptions","newSubLayers","newLayers","newWmsLayer","nodeLayerCounter","catalogWmsLayer","configWmsLayer","removeIndex","removeWmsIndex","hasTypeNamePrefix","typeNameParam","newProtocol","newVectorOptions","newFeatureInfo","newVectorLayer","removeVectorIndex","startsWith","re","noproxy","describeFeatureUrl","parsedCapabilities","featureTypeList","outputFormats","outputFormat","subName","getCapabilitiesFromUrlAsync","parseGetCapabilies","allData","getProjectLayers","UntypedFormControl","Validators","ProjectBasicComponent","projectSettingsService","pattern","numZoomLevelControl","saveheaderIcon$","setValue","numzoomlevels","zoomLevelControl","setNumZoomLevels","numZoomLevel","setZoomLevel","iconFile","okFile","accepted","Result","First","Second","iconUrl","headericon","setHeaderIconUpdated","transformCoordinates","getMapCoordinates","center","getCenter","toFixed","fromEpsg","toEpsg","fromCoord","parseFloat","coord","ProjectIntegrationComponent","ctx_r5","ProjectPointinfoComponent","selected","integrations","customintegrations","useisytoken","restricted","pointinfo","configPointinfo","cp","itemExist","tempPointInfo","tp","ti","ci","pointinfo$","selectProp","prop","resetNewCustomIntegration","itemSelected","selectedIntegrations","selectIntegration","integration","selectedIntegraions","customIntegration","newCustomIntegration","SearchParam","ESearchParam","ProjectSearchComponent","_changeAction","searchParams","searchparams","searchparam","hasurl","example","searchParamsLibrary$","searchLibrary$","searchParams$","searchLibrary","keyUpSearchParamTitle","changeValueInSearchParam","TITLE","keyUpSearchParamExample","EXAMPLE","selectSearchParam","paramIndex","newSearchParam","selectHasUrl","HASURL","removeSearchParam","setDefaultmunicipality","defaultmunicipality","defaultkommune","ctx_r9","ProjectSettingsComponent","of","SearchLibrary","ISearchParam","ProjectSettingsService","paramExist","headerIconUpdatedAction","newIcon","adminConfig","getProjectConfig","isyattachmentUrl","isyattachment","iconApiUrl","formData","FormData","append","EToolId","CustomTool","ECustomToolScale","ECustomToolCoordinateSystem","ProjectToolComponent","fb","faMap","faStreetView","faAtlas","faGlobeEurope","faSitemap","faRoute","faNewspaper","faInfoCircle","faPlane","enumMember","PRINT_PROTOCOL","BBOX","FEEDBACK","toolNameTxt","t","toolName","toolList","toolAlias","toolIcon","pointinfoenabled","availableTools","availableCustomTools","toolList$","customTools$","customTools","createForm","reg","form","s_url","required","selectTool","setCustomToolScale","scaleType","customToolScale","setCustomToolCoordinateSytem","coordinateSytemType","customToolCoordinateSystem","addCustomTool","customTool","selectedCustomToolIcon","iconName","customToolOpenInNewWindow","coordinatesystem","removeCustomTool","customToolIndex","copyArrayItem","TestChooseLayersComponent","testAdminService","layersData$","layersData","previousContainer","container","updateSelectedLayersList","selectedLayers","EAdministratorMode","EUrlParam","EEmptyContentColorPalete","IsyAdminWelcomePageComponent","originalProjectConfig$","projectsList","getProjectsList","PROJECT","ProjectName","navigate","queryParamsHandling","hide","reload","setAdministratorMode","NEW_PROJECT","projectTemplate","setTempProjectConfig","changeDynamicBladeHeaderTitle","COPY_PROJECT","EDIT_PROJECT","removeProject","EReInitType","administratorMode$","activeSideIndex","previewIsActive$","previewMode","administratorMode","projectSettings","chooseBaseLayers","chooseLayers","adminNavbar","setActiveNavComponent","mapActionDialogCloseButtonClick$","stopPreviewMode","NONE","mapActionDialogCloseButtonClick","hideBlade","startPreviewMode","validationProblems","validateNewConfig","administratorPreviewIsActive","hideNavElement","temporaryHide","show","originalProjectConfig","getOriginalProjectConfig","selectedBaseLayers","selectedBaseLayerIndex","setTempProjectName","REINIT_WITH_TEMP_CONFIG","REINIT_WITH_CACHED_ORIGINAL_CONFIG","saveProject","fixEmptyFeatureTitles","fixEmptyFeatureAlias","setNewConfig","saveProject$","alias","AlertModule","BsDropdownModule","CdkStepperModule","CdkTreeModule","ColorPickerModule","DragDropModule","FileSaverModule","ReactiveFormsModule","IsyUtilsModule","SortByPipe","ModalModule","NgxFileDropModule","PaginationModule","far","fas","library","addIconPacks","IsyAdminService","activeStyleAction","completeChosenStyleAction","pointStyleAction","lineStyleAction","polygonStyleAction","textStyleAction","completeStyleAction","styleFileLoadAction","deleteStyleAction","tempProjectConfigAction","configLoadEmitter$","mapConfigLoadEmitter$","administratorModeAction","showSpinnerAction","configLoad$","mapConfig$","exist$","newConfigAction","exist","newConfig","handlePostAttachmentError","styleApiUrl","deleteMethod","projConfig","updateStyleList","handleDeleteError","styleUpdatedAction","newStyle","saveMethod","setActiveStyle","activeStyle","problems","setProjectName","projectNameAction","Error","styleListUpdatedAction","setSaveStyleClicked","bool","saveStyleClickedAction","toasterMessage","OWS_1_0_0","OWS_1_1_0","Filter_1_0_0","Filter_1_1_0","Filter_2_0","SMIL_2_0","SMIL_2_0_Language","GML_1_0_0","GML_2_1_2","GML_3_1_1","GML_3_2_0","GML_3_2_1","WFS_1_0_0","WFS_1_1_0","WFS_2_0","XLink_1_0","IsyCapabilitiesService","response","versionInfo","supportedVersions","operationXml","getElementsByTagName","getCapabilitiesXml","from","o","getAttribute","capParams","acceptedVersionsXml","innerHTML","supportedVersionsXml","e","attributes","modules","wfsContext","Jsonix","Context","wfsUnmarshaller","createUnmarshaller","unmarshalDocument","operationsMetadata","childNodes","operation","MockCatalog","MockBaseLayers","MockData","MockSearchParams","TestAdminService","selectedLayersList","query","stagger","fadeIn","selector","duration","optional","fadeOut","keyframes","slideAnimation","slideAnimationLeft","overlayAnimation","expandBox","offset","DomainFeatureResponse","DomainSubLayerSOURCES","IsyAppFeatureInfoService","wmsLayerCountAction","showFeatureInfoSpinnerAction","handleFeatureInfoWms","setFeatureInfoSpinner","setWmsLayerCount","getWmsLayerCount","finalize","parsedResult","xml","html","msGMLOutput","textPlain","resultAsJson","layername","rows","_parseLayerRowsJson","_handleGetInfoResponse","_parseFeatureCollectionJson","_parseAsGml","_parseAsXml","_parseAsTextPlain","warn","responseFeatureCollection","responseFeature","row","layerNameNameMatch","layerName","propObj","j","keyValue","_parseFeatureInfos","xmlresult","ignoreAttributes","FeatureInfos","featureInfos","FeatureInfo","Attribute","reduce","obj","featureinforesponse","fields","jsonFeatures","rootObject","testObject","testArray","k","makeResponseFeature","subLayer","exception","isWms","source","proxyWms","proxyWmts","wmts","providerName","isLoading","featureInfoTitle","showDialog","showneighborlist","advancedfilter","openNewWindow","metadataServices","openParentWindow","windowWidth","showpopupwithdata","showpopuplibrary","popupwithdatatitle","coordinate_system","featureNS","geometrytype","sendusername","useexternaluri","throwError","IsyAppMatrikkelService","initAction","srs","ownersFromPolygon","coords","visadresser","requests","polygonCoords","makeRequestFindMatrikkelenheterForPolygon","results","feilValues","Feil","feil","Matrikkelenheter","acc","concat","handleError","Coords","Srs","getNeighbors","knr","gnr","bnr","fnr","snr","eiendom","getMainProperty","getAddressesFromCadastre","findMatrikkelenhetForUnikId","unikId","unikid","OverlayId","IsyOverlaysService","_register","overlay","overlayCache","toggleOverlay","_unregister","_unregisterAll","shareReplay","timeout","IsyPicklistService","picklistAction","externalServices$","externalServices","picklist","picklistBaseUrl","property","encodeURI","getPicklistResult","picklistRetrieve","val","exists","picklistLookup","req","picklistResult","egenskapsnavn","verdi","objektkatalognavn","IsyBaseLayersComponent","baseLayersService","activeBaseLayer$","bLayers","hideBaseLayersLayout$","activeLayer","hideBaseLayersLayout","activeBaseLayer","applyState","position","mapLoadEmitter$","setBaseLayers","getBaseLayers","reInitMapLibNg$","changeLayersEmitter$","findBaseLayer","setActiveBaseLayer","sideNavPin$","menuIsPinned","toggleBaseLayerBox","toggleBaseLayer","IsyBaseLayersService","baseImageUrl","setBaseLayer","topEnter","topLeave","bottomEnter","bottomLeave","leftEnter","leftLeave","rightEnter","rightLeave","SlideInOutGeneral","BladeContentSizeDirective","el","onResize","resizeBladeContent","ngOnChanges","blade","clientHeight","offsetHeight","clientWidth","offsetWidth","bladeIsResized","BladeHostDirective","viewContainerRef","BladeResizeBorderDirective","onMouseDown","onResizeBottom","removeEventListener","clientY","getComputedStyle","m_pos","y","resizeBottom","addEventListener","onResizeLeft","resizeLeft","onResizeRight","clientX","resizeRight","onResizeTop","resizeTop","onMouseUp","parentNode","parentElement","changeBladeHeight","changeBladeWidth","dy","dx","bladeContent","BladeWindowSizeDirective","changeStyleToFullScreen","updateBladeStyle","documentElement","expanded","showBladeInBody","updateNative","top","right","bottom","left","BladeItem","IsyBladeComponent","isShowing","animationState","showChange","showBladeByName$","hideBladeByName$","helpId$","helpIsOpen","hideBladeByName","showBladeByName","expand","compress","hideAndMinifyBlade","bladeIsMinify","showMinifyBlade","ngContentSelectors","IsyBladeService","IsyDynamicBladeComponent","ngModule","providers","appRef","vRef","_rootViewContainerRef","createComponent","injector","_registerDynamic","bladeCache","dynamicBladeCache","bladeToRemove","bladeName","showDynamic","bladeExist","addComponent","newBladeItem","_bladeItem","bladeItem","applyPositionState","libBladeHost","componentRef","stateShow","positionMinifyBtn","IsyCommonService","administratorPreviewIsActiveAction","hideBaseLayersLayoutAction","showBladeByNameAction","hideBladeByNameAction","bladeIsResizedAction","dynamicModalCloseButtonClickAction","dynamicModalAcceptButtonClickAction","activateFeatureInfoSelectorWithLayerNameAction","featureInfoLayersLengthAction","hideGeolocationAction","changeThemeAction","helpIdAction","featureAction","hideInfoPanelAction","hideInfoPanelNotDestroyAction","infoPanelPositionAction","hideResultAction","hideFeatureInfoResultAction","hidePointInfoAction","jtQueryParamsAction","removeJtQueryParamsAction","giVisPlanQueryParamsAction","giVisEiendomQueryParamsAction","giVisBygningQueryParamsAction","giVisAdresseQueryParamsAction","giCompleteAction","removeGiQueryParamsAction","updateLayerGroupsAction","idLogginActiveAction","adfsLoginActiveAction","kcLoginActiveAction","showMainSpinnerAction","kcToken","mapActionDialogCloseButtonClickAction","hideAndBlockShowMapActionDialogAction","setIsyTokenToMaplibNgAction","externalServicesAction","setCenterAction","setEpsgAction","showRoadProfileAction","roadProfileDataAction","showRoadCrossSectionAction","roadCrossSectionDataAction","hideSearchBarAction","hideSearchBarNotDestroyAction","searchBarMenuButtonClickAction","searchBarPositionAction","hideMenuIconAction","featuresFromSearchAction","gotoSearchResultWithCoordinatesAction","hideSideNavAction","sideNavPinAction","forceHideSideNavAction","hideTranslateBarAction","activeNavBarIdAction","toolIsActiveAction","activateToolByIdAction","visibleToolsAction","useLanguageAction","hideZoomInOutBtnAction","componentPositionOffsetAction","componentPositionOffset","sideNavPin","activeEnvironmentAction","iframeSessionLogoutAction","pointInfoNeighborAction","featureInfoNeighborAction","dynamicModalCloseButtonClick","activateFeatureInfoSelectorWithLayerName","setFeatureInfoLayersLength","hideGeolocation","changeTheme","themeName","setFeature","hideInfoPanel","hideInfoPanelNotDestroy","infoPanelSetPosition","setHideResult","setHideFeatureInfoResult","setHidePointInfo","setJobtechQueryParams","removeJtQueryParams","setGIVisPlanQueryParams","setGIVisEiendomQueryParams","setGIVisBygningQueryParams","setGIVisAdresseQueryParams","setGIComplete","removeGiQueryParams","updateLayerGroups","setIdLogginActive","setAdfsLoginActive","setShowMainSpinner","setIsyTokenToMaplibNg","setExternalServices","setCenter","setEpsgCode","hideAndBlockShowMapActionDialog","showRoadProfile","setRoadProfileData","showRoadCrossSection","setRoadCrossSectionData","hideSearchBar","hideSearchBarNotDestroy","searchBarMenuButtonClick","searchBarSetPosition","hideMenuIcon","setFeaturesFromSearch","gotoSearchResultWithCoordinates","forceHideSideNav","hideTranslateBar","toolsIsActive","activateToolById","visibleTools","toolsList","useLanguage","hideZoomInOutBtn","setPointInfoNeighborActive","setFeatureInfoNeighborActive","setIframeSessionLogout","setComponentPositionOffset","getPointInfoNeighborActive","getActiveEnvironment","getKcToken","setKcUsed","kcUsed","getKcUsed","setIdPortenUsed","idPortenUsed","getIdPortenUsed","setIdPortenToken","idPortenToken","getIdPortenToken","handleErrorWithObservable","IconType","tms","DomainSubLayerFORMATS","imagepng","imagejpeg","geoJson","MapConfig","disableOffline","extent","extentUnits","hoverOptions","multiSelect","mmultiSelect","isOffline","numZoomLevels","onlyOneGroup","searchpointzoom","showAdvancedPrinting","showMousePosition","showProgressBar","updateExtent","hoverhighlightmode","GisCoordinate","DraggableHostDirective","DraggableItem","IsyDraggableOverlayComponent","draggablePosition","close","headerName","showHelpButton","bounds","AngularDraggableModule","IsyDynamicDraggableOverlayComponent","IsyDraggableOverlayService","draggable","draggableCache","dynamicDraggableCache","draggableToRemove","draggableName","showDraggableWithComponent","draggableExist","_draggableItem","helpButton","closeOnEscape","handleKeyDown","draggableItem","libDraggableHost","componentPosition$","OverlayAnimation","ModalHostContentDirective","ModalHostFooterDirective","IsyDynamicModalComponent","_modalItemContent","modalItemContent","_modalItenFooter","modalItemFooter","libModalHostContent","componentFactory","componentFactoryResolver","resolveComponentFactory","libModalHostFooter","showFooterWithComponent","showAcceptButton","cancelButtonText","hideModal","cancelModal","acceptModal","IsyDynamicModalService","ReflectiveInjector","ModalItem","rootViewContainerRef","modalFactory","childInjector","fromResolvedProviders","parentInjector","registerDynamic","modal","dynamicModalCache","modalName","footerComponent","modalExist","newModalItem","newModalItemFooter","IsyNavBarDirective","IsyDynamicNavLoaderComponent","_name","fontSize","navBarFontSize","_navBarElements","elemets","_contentComponent","contentComponent","_component","activeComponent","_showComponent","activeNavBarId$","toggleNavBarElement","setNavLoaderLoaded","libIsyNavBar","navBarElement","clickToComponentContent","IsyDynamicNavLoaderService","clickToComponentContentAction","navComponentIdChangedAction","navLoaderLoadedAction","navBarComponent","navBar","_getNavBarElementsByNavBarId","navBarElements","navBarCache","navBarName","navBars","navbar","newNavBar","getActiveElementId","activeElement","navElement","assign","navElementId","isHidden","isAnyNavElementActive","componentId","setNavIconFontSize","AttachmentFileNamePipe","AttachmentFilterPipe","IsyEditWfstModalContentComponent","IsyEditWfstModalFooterComponent","IsyInsertWfstModalFooterComponent","EditWfstDirective","editWfstService","featureInfoService","insertWfst","showInsertDialogAction$","updateWfst","showUpdateDialogAction$","insertOrUpdate","insertPromise","updatePromise","all","insert","stopUpdateFeature","faEdit","IsyEditGeometryActionDialogComponent","goBackToModal","cancelEditGeometry","cancelEditeGeometryClick","saveEditGeometry","saveEditGeometryClick","editGeometryIsActive","insertHasBeenClicked","removeHasBeenClicked","updateHasBeenCliked","updateFeatureInfo","uploadInProgress","describedFeatureAction$","describedFeature","saveInProgress$","updateFeatureInfo$","describedFeatureAction","saveInProgress","describedSubLayer","editWfstStatus","showModal","updateProperty","transactionFinished$","uploadAttachmentHasBeenFinished$","attachmentHasBeenUpload","userName","editGeometryClick$","editGeometry","cancelFeatureClick$","updateFeatureClick$","updateFeature","insertFeatureClick$","insertFeature","removeFeatureClick$","removeFeature","dynamicModalCloseButtonClick$","saveEditGeometryClick$","deactivateModifyFeature","stopEditGeometry","cancelEditeGeometryClick$","refreshEditedGeometry","transactionFinished","hideModalInProgress","stopSaveInProgress","onHidden","clearHighlightedFeatures","startSaveInProgress","describedSource","geometry","describedData","attachments","postAttachmentStart","noAttachmentToUpload","promises","startInsertFeature","startUpdateFeature","startRemoveFeature","generateAttachmentsString","attachmentUrls","attachmentsUrls","newAttachmentUrlsString","sendUserName","attachmentPropertyName","geometryName","refreshLayerByGuid","featureResponse","getFeatureResponse","olFeature","setProperties","subLayerId","deleteFeature","snappingEnabled","getSnappingStatus","copyCoordinates","getGeometry","getCoordinates","activateModifyFeature","pauseEvents","setCoordinates","continueEvents","propertyName","removeDroppedAttachment","attachmentFileInput","removeAttachment","attachmentIndex","newAttachamentString","snappingEnabledEmitter$","snapping","updateEnabled","deleteEnabled","updateFeatureClick","removeFeatureClick","editGeometryClick","cancelFeatureClick","toggleSnapping","emitSnappingEnabled","publishReplay","IsyEditWfstService","layersService","editGeometryClickAction","insertFeatureClickAction","removeFeatureClickAction","updateFeatureClickAction","cancelFeatureClickAction","saveEditGeometryClickAction","cancelEditeGeometryClickAction","transactionInsertEndEmitter$","transactionUpdateEndEmitter$","transactionRemoveEndEmitter$","featureHasBeenDescribedEmitter$","addLayerFeatureEndEmitter$","addFeatureAction$","saveInProgressAction","updateFeatureAction","featureHasBeenDescribedEmitter","addFeatureAction","described","initEdit","addOptions","translate","add_layer_start_drawing","add_layer_continue_drawing","add_layer_modify_object","toolType","snappingFeatures","activateAddLayerFeature","describedFeature$","describedFeaturePromise","transactionInsertEndEmitter","transactionUpdateEndEmitter","transactionRemoveEndEmitter","startUploadAttachmentsAction","startUploadAttachmentIndex","postAttachmentsAction","urlAttachment","getMapConfig","attachmentHost","projectName","uploadAttachmentHasBeenFinishedAction","postAttachment$","postAttachment","findAttachment","attachmentUrl","sub","deactivateAddLayerFeature","emitTransactionInsertEnd","emitTransactionUpdateEnd","emitTransactionRemoveEnd","emitFeatureHasBeenDescribed","emitAddLayerFeatureEnd","stopAddFeature","setFeatureResponse","eventHandler","pauseEvent","eventTypes","FeatureInfoStart","FeatureInfoEnd","FeatureHoverStart","FeatureHoverEnd","FeatureHoverMove","GetClickCoordinates","continueEvent","insertFeatureClick","insertEnabled","IsyEmptyContentComponent","DEFAULT","mainText","innerText","contentIcon","colorPalete","FeatureInfoDirective","appFeatureInfoService","activateFeatureInfoSelectorWithLayerName$","layerNamesForFeatureSelector","layerNamesForFeatureSelector$","activateFeatureSelector","deactivateFeatureSelector","featureSelector","activateFeatureSelector$","featureInfoOptions","setFeatureInfoOptionsAction","featureInfoStartEmitter$","wmsLayerCounter","clearFeatureInfoLayers","featureInfoEndEmitter$","addFeatureInfoLayer","IsyFeatureInfoChartComponent","featureInfoChartService","responsive","maintainAspectRatio","events","cutout","plugins","callbacks","context","legend","layout","padding","getSaksinfoMedFaser$","saksfaser","isLoad","showFeedbackBtn","doughnutChartDatasets","doughnutChartLabels","dataset","backgroundColor","borderColor","borderWidth","borderAlign","hoverBackgroundColor","hoverBorderColor","d","kodeverdi","hasActiveFase","hasDoneFase","indexFound","faseNavn","getTitle","myChart","saksmappe","currentfasefristtitle","currentfasetypekodeverdi","feedbackButtonAvailable","hideFeedbackButton","isyfeedbackapplicationid","isyfeedbackurl","chartClicked","chart","activePoints","getElementsAtEventForMode","intersect","clickedElementIndex","labels","activateFeedbackTool","openUrl","open","lable","selectedData","startDate","startMilepel","milepelDato","endDate","sluttMilepel","date","featureInfoLayer","showSpinnerWhenLoad","IsyFeatureInfoChartService","projectName$","saksInfoMedFaserAction","isArealPlanParams","planid","isSaksNrParams","saksaar","sakssekvensnummer","commonBodyParams","defaultproject","body","isyexternalapi","setSaksInfoMedFaserParams","IsyFeatureInfoDocComponent","featureInfoLayerAction","lowercaseprops","hasplanid","komm","haskomm","webinnsynurl","ipos","lastIndexOf","currentParam","checkPlanBestemelser$","changeSearchParams","searchUrl","searchHost","Date","getTime","plandocs","planDoc","processPlandokument","orderByPlanDocType","featureDocResult$","featureDocResult","plandokument","plandoc","filnavn","tittel","hasbase64","base64","mimetype","base64elements","planA","planB","sortingValue","reverse","idxA","idxB","base64toByteArray","b64Data","contentType","sliceSize","startText","byteCharacters","atob","byteArrays","byteNumbers","charCodeAt","byteArray","Uint8Array","openDocument","blob","File","navigator","msSaveBlob","URL","downloadUrl","createObjectURL","createElement","download","href","appendChild","click","revokeObjectURL","IsyIframeComponent","IsyFeatureInfoRepComponent","Id","ProcessingType","Category","matrikkelReportTypeResults$","reportTypeResults$","matrikkelReportTypeResults","reportTypeResults","showReportTypes","showReport","selectedReportType","pdfReady","anchor","Headers","fetch","blobby","objectUrl","webinnsyniframelandingpage","charAt","postMsgUrl","toggleShowReport","reportIsOpen","selectReportType","reportType","toggleShowReportTypes","ctx_r27","ctx_r31","ctx_r102","ctx_r132","ctx_r140","ctx_r143","ctx_r146","IsyFeatureInfoComponent","domSanitizer","neighborService","picklistService","featureInfoLayers$","featureInfoLayers","filterFeatureInfoLayers","filterLayer","indexFeature","setCheckComplaints","seeiendom","baseUrl","gardsnr","bruksnr","infoElement","infoElemProp","isUrl","_isUrl","urls","_formatProperty","feautreUrls","isFeatureUrl","featureInfoServiceLayers$","roadProfileLayers","hasRoadProfileName","hasRoadProfile","roadCrossSectionLayers","hasRoadCrossSectionName","hasRoadCrossSection","noFeatureInfoElements","codelistid","resources","access","neededResources","res","visible","showFeatureInfoSpinner$","pointInfoNeighborActive$","showFeatureInfoSpinner","pointInfoNeighborActive","feedback","forceHideNeighborlist","maplibMap","picklistResult$","featureInfoOptions$","appShowNeighbor","showNeighbor","appShowReport","checkComplaintsResults$","complaintExist","Boolean","setCadastreData","emitFeatureInfoEnd","deactivateDrawingManager","recursiveReplace","openBlade","metadataService","newWindow","formattedProp","inHtmlPattern","foundProps","exec","attachmentPattern","foundAttachments","mouseOver","highlightFeature","mouseOut","mouseOverAll","olFeatures","highlightFeatures","toggleGroup","toggleSubGroup","toggleShowMore","showMore","editEnabled","startEditTool","describeFeature","getType","createUrlWithParams","bypassSecurityTrustResourceUrl","setCadasterData","cadasterData","toggleNeighbor","setFeatureInfoLayerAction","setFeatureAction","toggleShowChartComponent","isArealPlan","commonParams","toggleShowReportComponent","setKnr","naboliste2CSV","showCadastreInModal","IsyPositionInfoModule","IsyNeighborModule","NgChartsModule","IsyFeatureInfoService","featureInfoLayersAction","setLowerCaseProperties","featureInfoOptionsAction","updateFeatureInfoAction","cadastreDataAction","checkComplaintsAction","knrAction","knr$","checkComplaints$","checkComplaints","isysearch","Planbehandlinger","sortAlphabetically","filteredResult","sortedTable","setFeatureInfoLayer","faBars","faSearch","faChevronRight","faChevronLeft","faChevronDown","faCog","faPalette","faPrint","faChartArea","faFileExport","faCubes","faThumbtack","faKey","faTimes","faCircle","faSquare","faPlay","faTrashAlt","faCloudDownloadAlt","faCloudUploadAlt","faSlash","faInfo","faQuestion","faEllipsisH","faEllipsisV","faChevronUp","faCheck","faExclamationTriangle","faBan","faBookOpen","faRetweet","faFilter","faArrowLeft","faArrowRight","faArrowUp","faArrowDown","faTools","faSave","faUpload","faPlusCircle","faMinusCircle","faThumbsUp","faTrophy","faBolt","faFile","faPen","faCopy","faStar","faPlus","faMinus","faUserCircle","faEye","faDrawPolygon","faFileDownload","faExternalLinkAlt","faExpand","faExpandAlt","faExpandArrowsAlt","faCompress","faCompressAlt","faCompressArrowsAlt","faRoad","faExchangeAlt","faRedo","faClipboard","faChartPie","faAngleDoubleDown","faArchway","faBook","faVectorSquare","faObjectGroup","faMapMarkerAlt","faCrosshairs","faHome","faDraftingCompass","faHouseUser","faUsers","faUserLock","faTractor","faTree","faUniversity","faHiking","faBorderAll","faBookReader","faCalendarCheck","faFilePdf","faDownload","faMapMarkedAlt","faSearchLocation","faQuestionCircle","faAngleDoubleLeft","faAngleDoubleRight","faAngleDoubleUp","faFileCirclePlus","faCircleDot","faClose","faHandPointer","faClock","faHourglassHalf","faAdjust","faCheckSquare","farCheckSquare","farSquare","faMinusSquare","farMinusSquare","faComment","farComment","farStar","faArrowAltCircleLeft","farArrowAltCircleLeft","farFilePdf","faFileExcel","farFileExcel","faDotCircle","farDotCircle","farCircle","faWindows","IsyGeolocationComponent","hideGeolocation$","unsubscribeGeolocationUpdate","unsubscribePointerDrag","getGeolocation","geolocationUpdateIsActivated","geolocationUpdatedEmitter$","unsubscribeGeolocationUpdate$","geoLocationIsActive","mapMoveEndEmitter$","mapMoveEnd","setZoom","subscribePointerDrag","removeGeolocation","pointerDragEmitter$","unsubscribePointerDrag$","FrameView","setLanguage","language","setJwt","instanceName","getInstanceName","isyProxy","isyproxy","Authorization","sendJwt","EGiBridgeEventId","GeoJsonUtilities","giBridgeService","geoJsonUtilsService","uploadGeoJson","removeGeoJson","activateHoverInfo","startGetGeoJsonFeaturesInExtent","geoJsonSubscriptionIsActive","geoJsonSubscription","getClickCoordinatesEmitter$","coordinate","getGeoJsonFeaturesInExtent","geoJsonProperties","getId","postMessage","GEOJSONPROPERTIESINEXTENT","ids","stopGetGeoJsonFeaturesInExtent","updateGeoJsonPropertiesInExtent","MapLayers","setBaseLayerByGuid","showLayer","showLayerByGuid","hideLayer","hideLayerByGuid","getLayers","overlays","getOverlayLayers","GETLAYERS","baseOverlays","GETBASELAYERS","FileSaver","MapView","matrikkelService","zoomIn","getZoom","zoomOut","setExtent","GETCENTER","getExtent","GETEXTENT","MAPMOVEEND","loadingLayerEnd","LOADINGLAYEREND","pointInfo","GETPOINTINFO","GETCONFIG","GETPROJECTCONFIG","clickSimulation","infoClickSimulation","deactivateHoverInfo","activateDrawTool","DRAW","printMap","activateExportImg","downloadImage","canvas","dataUrl","toDataURL","saveAs","GETFEATUREINFO","highLightFeature","deactivate_hoverinfo","findKeyFieldsFromFeatureInfoLayer","visibleSubLayer","getVisibleSubLayers","features_visible","getFeaturesInMap","selected_feature","neighbors","GETNEIGHBORS","keyFields","handleReceivedUnits","GiBridgeEventsDirective","MaplibNgService","positionInfoService","mapView","frameView","geoJsonUtilities","onPostMessage","giBridgeParamId","ZOOMIN","ZOOMOUT","SETCENTER","SETEXTENT","CLICKSIMULATION","DEACTIVATEHOVERINFO","PAUSEALLEVENTS","PRINTMAP","ACTIVATEDRAWTOOL","SETLANGUAGE","HIDETRANSLATEBAR","HIDESEARCHBAR","HIDEINFOPANEL","HIDEGEOLOCATION","HIDEBASELAYERSLAYOUT","SETJWT","SETACTIVEBASELAYER","SHOWLAYER","HIDELAYER","UPLOADGEOJSON","STARTGETGEOJSONFEATURES","STOPGETGEOJSONFEATURES","loadingLayerEndEmitter$","clickCoordinates$","IsyGiBridgeService","updatedCoordinatesAction","mapCenterAction","mapExtentAction","initUrlAction","iframeLoadedAction","getPointInfoAction","getLayersAction","getBaseLayersAction","getNeighborsAction","geoJsonPropertiesInExtentAction","getConfigAction","getProjectConfigAction","featureInfoAction","updateCoordinate","updateMapCenter","updateMapExtent","updatePointInfo","updateGetLayers","updateGetBaseLayers","updateGetNeighbors","updateGetConfig","updateGetProjectConfig","setParam","paramId","bridgeParams","giBridge","giBridgeIframe","setInitUrl","iframeLoaded","iframeUnload","parent","IsyGiVisComponent","GiVisDirective","giVisPlanQueryParamsAction$","longText","noUpperCase","giVisEiendomQueryParamsAction$","giVisBygningQueryParamsAction$","giVisAdresseQueryParamsAction$","PinIconStyle","giVisService","initReadyAction","ready","giVisPlan","giVisEiendom","giVisAdresse","giVisBygning","doAction$","pos","hasExtent","Extent","hasLatLon","Longitude","Latitude","hasGeoJson","GeoJson","fitExtent","EpsgKode","ZoomLevel","showMarker","setSearchResultStyle","abort","removeInfoMarker","IsyGiVisService","planUrl","visParams","getGiVisPlan","getGiVis","now","setVisPlanStyle","showArealplanLayersWithFilter","filterSearchgiResultsOnlyExactBnr","subLayers","findArealPlanLayers","setLayerFilter","PLANID","KOMM","sublayer","ObjectValues","BNR","newExtent","getNewExtentFromFeatures","extents","getNewExtentFromFeature","averageExtents","coordinates","getNewExtentFromPolygonCoordinates","xs","ys","GisInputComponent","gisInputService","inputData","inputValue","outputData","showHighlight","helpText","GisInputService","gisInput","gisInputCache","input","gisInputToRemove","EGISTheme","GisThemeDirective","setProperty","changeTheme$","themes","findTheme","IsyGisStylesComponent","THEMES","IsyGisStylesService","_currentTheme","pinColor","anchorXUnits","anchorYUnits","THEME_CLASSIC_NAME","THEME_CLASSIC_STYLES","THEME_DARKMODE_NAME","THEME_DARKMODE_STYLES","THEME_INNBYGGERDLG_NAME","THEME_INNBYGGERDLG_STYLES","CLASSIC","CLASSIC_COLORS","$primaryMainColor","$primaryMainColorDeactivate","$mainBackgroundColor","$mainHeaderColor","$mainTextColor","$mainTextHoverColor","$mainBorderBoxColor","$separatorColor","$listColor","$listDeselectedColor","$listHoverColor","$listTextColor","DARKMODE","DARKMODE_COLORS","INNBYGGERDLG","INNBYGGERDLG_COLORS","IsyHelpComponent","helpFilePath","IsyHelpDirective","currentLang","lockBackground","selectedIcon","HttpClient","MarkdownModule","MarkedOptions","MarkedRenderer","markedOptionsFactory","renderer","blockquote","gfm","breaks","pedantic","smartLists","smartypants","markedOptions","InfoPanelHeightDirective","zone","infoPanelService","isMobile","innerHeight","marginTop","marginBottom","marginTopMobile","marginBottomMobile","widthInfoPanelInit","onScroll","setScrollBarIsVisible","scrollTop","scrollHeight","ResizeObserver","entries","run","contentRect","widthInfoPanel","unobserve","EInfoPanelType","IsyInfoPanelLayoutComponent","activeInfoPanelType$","hideResult$","hideFeatureInfoResult$","pointinfoenabled$","activeInfoPanel","hideResult","hideFeatureInfoResult","pointInformationIsActive","emitGetClickCoordinates","closeInfoPanel","disableFeatureInfo","showCadastreModalFromSearchResults","showCadastreModalFromFeatureInfoResults","IsyInfoPanelComponent","infoPanelPosition$","hideInfoPanel$","scrollBarIsVisible$","infoPanelPosition","scrollBarIsVisible","inputPosition","scrollDiv","divScroll","IsyInfoPanelService","searchBarService","scrollBarIsVisibleAction","searchIsActive$","featureInfoLayersLength$","visibleTools$","searchIsActive","getClickCoordinatesEmitter","featureInfoEndEmitter","featureInfoLayersLength","SEARCHRESULTS","POINTINFORMATION","IsyJobtechComponent","jobtechService","getIsyVerifyToken","saveAction","updateGeometry","NoOfRowsHandled","jtObjectIdAction","isyVerifyToken$","objId","originalFeaturetype","convertToFeatureCollections","modifyGeometry","drawGeometry","geometry$","saveResult$","isyVerifyToken","saveResult","mapReady","cleanupFromDrawing","unRegisterEvent","ModifyFeatureEnd","vm$","selectedFeatureId","modified","registerSingleEvent","DrawFeatureEnd","drawFinished3","reactivateDrawingManager","createModifyOptions","adding","activateDrawingManager","createDrawOptions","createAddOptions","drawFinished2","geojson","GeoJSON","modify","snapGuides","showMeasurements","selectionActive","styleDef","drawFinished","drawFinished4","registerEvent","modifyFinished","DrawFeatureSelect","drawFeatureSelect","tempfeature","tempFeature","newFeature","coor","subFeature","convertToSingleFeature","newCoordinate","restartDrawing","sendDrawing","editedGeoJson","emptyGeoJson","restart","cleanupOptions","JobtechDirective","IsyJobtechService","_url","_instance","_token","jobtechapi","jtQueryParams$","IsyKeycloakComponent","loginService","keycloakService","maplibng","getResources$","userIsLoggedIn","setKcUserLoggedIn","keycloakLogin","keycloakEvents$","updateToken","refreshed","logOutKeycloak","setKcBearertoken$","IsyKeycloakService","kcUserLoggedInAction","userLoggedInAction","isyauth","keycloaktToken$","mapLoaded","setIsyToken","ACTIVENAVBAR","removeItem","setActiveLoginType","initProjectList","logout","getHeight","getWidth","FmeEpsgCode","GisFormat","ctx_r10","ctx_r32","ctx_r36","ctx_r76","ctx_r79","ctx_r87","ctx_r117","ctx_r123","ctx_r166","ctx_r174","convertService","_describeFeatureAction","getLayerGroups$","showLegend$","showSettings$","GEOJSON","layerGroups$","searchTextAction$","layerGroups","searchText","searchTextActive","trim","filteredGroups","filteredLayerGroups$","waitingForDescribeFeature$","filteredData","showLegend","showSettings","filteredSupermaplayers","supermaplayer","hasKcToken","calculateSliderSteps","sliderSteps","start","end","current","currentTime","currentStep","layerGroup","subGroup","isSettingsOpen","addEnabled","startAddFeature","editSubGroup","subLayerName","str","toggleLayer","groupLayer","layerPromise","isDisabled","generateMissingLegends","INFER","convertFiles","filesArray","maxFileSize","curr","SOSI","GML","startToConvert","convert","cluster","clustercount","jsonStyle","addGeoJson","selectFormat","activateLayersInGroup","disabledLayersLength","disabledVisibleLayersLength","toggleLayers","ps","setTime","steps","setLayerTime","setOpacity","setLayerOpacity","getOpacity","getRadius","currentStyle","pointRadius","getTrianglePoints","toggleLegendLayer","isLegendOpen","showAllLayers","showActiveLegends","showActiveLayers","updateActiveLegends","mapExtent","mapHeight","round","mapWidth","innerWidth","windowHeight","specificParams","geoserver","mapserver","qgisserver","webinnsyn","overlayLayers","visibleLayers","updateBboxLegendUrls","lyrA","lyrB","sortingIndex","bboxUrls","legendGraphicUrls","urlString","urlMappings","arcgis","qgis","toLocaleLowerCase","matchingKey","isFiltered","validUrl","bboxUrl","numTries","legendGraphicUrlsBbox","hasWfsStyles","styles","hasValidHttpUrl","isValidHttpUrl","legendGraphicUrl","_","imgErrorHandler","evt","isInteger","alt","imgLoadHandler","removeSearch","FilterGroupsWithSubLayers","StyleLegendComponent","ProtectedImageComponent","IsyLayersService","_showSettings","_showLegend","_addFeatureAction","updateLayerGroups$","mapConfigLoaded$","mapConfigLoaded","getGroups","checkIfLayerNeedsResource","layerGroupsShouldBeExpand","resource","getResourceFromUrl","resourceStart","resourceMatch","getLayerLegendUrl","generateSldStyles","getLegendStyles","legendStyles","sldStyles","filterStyle","styleFromEditorStyles","filterFromEditorStyles","otherStyles","calculateStarPoints","cx","cy","spikes","outerRadius","innerRadius","rot","step","cos","sin","expandAllLayerGroups","convertStyle","geomType","fillOpacity","strokeOpacity","sldStyle","strokeDashStyle","externalGraphic","updateStrokeWidth","defaultSizes","pointStyle2pointType","filterStyles","filterName","defaultStyleExists","legendStyle","isDefault","symbolizerObj","getSldSymbolizerObject","typeStyle","getSldTypeStyle","subtype","getSldSubTypeStyle","fontColor","fontFamily","fontStyle","fontWeight","getSldFillColorAndOpacity","getSldStrokeColorAndOpacity","getSldWidth","getDashStyle","rule","getSldPointRadius","getExternalGraphic","getSldPoints","prototype","hasOwnProperty","call","symbolizer","Point","Line","Polygon","getPointTypeStyle","styleFillColor","getFill","getColor","getStroke","styleStrokeColor","strokeDashstyle","graphicName","http","u","fetchImage","toPromise","reader","FileReader","onloadend","onerror","readAsDataURL","getLabelStyle","pointObject","styleobject","isFilterLegends","defIndex","mapping","header","safeAccess","isOwnerField","bruksnavn","adresser","addresser","adr","navn","postnummer","poststed","eierNavn","erDød","eierAdresse","postAdresse","adresselinje2","eierRolle","OwnerDescription","eierGateadresse","eierPostnr","eierPoststed","eierPnr","personnummer","eierOrgnr","organisasjonsnummer","mappingHT","Knr","Gnr","Bnr","Fnr","Snr","Bruksnavn","Addresser","ZipCode","PostalCode","IsDead","Address","Personnummer","OrgNummer","fn","defaultValue","IdportenOwnerList2CSV","neighborlistformat","mainProperty","order","getOrder","getHeaders","parseNeighbors","mainPropertyData","parseHovedTeig","mainPropertyExists","csv","convertToCsv","downloadCsv","filteredOrder","flatMap","neighbor","parseNeighbor","neighborList","eiere","owner","Owners","csvContent","IsyIdPortenPrintNeighborComponent","getHeaderIconBaseUrl","kommuneInfoWithVaapenUrl$","projectIcon$","kommuneInfoWithVaapenUrl","projectIcon","kommuneInfo","kommunenavn","showHeraldry","printPreview","print","IsyIdPortenComponent","idPortenService","matrikkelPersonMe$","logoutIdPorten","loggedMe","showLoggedMeSpinner","SIDENAVOPEN","IDPORTENPOSTREDIRECTURL","setLoginParam","loginInProgess","IsyIdPortenService","activeEnvironment$","activeEnvironment","idporten","withCredentials","handleErrorLoginMeWithPromise","matrikkelenhetDataAction","setMatrikkelenhetData","ctx_r16","ctx_r30","IsyUserPropertiesComponent","propertyInfoAction","matrikkelenhetMe$","nabolisteIsOpen","matrikkelenhetNaboliste$","teiger","nabolisteFeatures","drawing","showSpinnerNaboliste","drawFeatureEndEmitter$","featureJson","getExtentForLayerById","emitDrawFeatureEnd","deleteDraw","propertyInfoAction$","propertyInfo","showMatrikkelEnhetMe","matrikkelenhet","allMatrikkelEnhetMe","textSize","setNabolisteData","df","centerToNeighbor","mapCenter","neighborCenter","reppkt","transformCoord","transformFromGeographic","showCenter","clearHighlitedNeighbor","showNeighborInMap","getOlFeatureById","deleteAll","createAdditionalOptions","neighborlistFormat","neighborlistcsvformat","textValue","adresselinje1","adresselinje3","landkode","gatenavn","nummer","fornavn","etternavn","personStatusKode","slettetDato","personIdKode","personKategoriKode","IsyKcComponent","loginInProgess$","sessionStorageServiceSubscription","kcLoginActive$","oidcSecurityService","description","IDPORTEN","ADFS","ISYUSERADMIN","isyuseradmin","loginTypeUserAdmin","loginTypes","useadfs","loginTypeDFS","useidporten","loginTypeIDporten","usekeycloak","loginTypeKeycloak","activeLoginType$","loginType","activeLoginType","idLogginActive$","idLoginActive","adfsLoginActive$","adfsLoginActive","kcLoginActive","loginTypeInProgress","loginWithLoginType","authorize","isykeycloakrealm","isykeycloakclientid","isykeycloakaddress","EventType","interval","IsyLoginDirective","authService","generalConfig$","userAdmin","geoinnsynAuth","toasterTimer","checkAuth","checkIDPortenAuth$","checkIDPortenAuth","isAuthenticated","idToken","handleIdPortenLoginWithIdToken","handleProjectConfig","handleAdLoginType","handleUrlRedirect","handleLoginTypeInProgress","handlePageReload","handleLoginType","idPortenLoginWithIdToken$","handleIdPortenRedirect","postRedirectUrl","adLoginType","urlRedirect","URLREDIRECT","LOGININPROGRESS","touchTokenSubscription","getIsytokenSubscription","loginAzureManualDirective","holdTokenActive","logOut","loginInProgress","mapLoadSubscription","touchToken","accounts","getAllAccounts","acquireToken","addEventCallback","handleAuthRedirect","account","acquireTokenSilent","handleSuccessfulTokenAcquisition","setActiveAccount","storeUserInfoInSession","handleIsyToken","getIsyToken","eventType","LOGIN_SUCCESS","ACQUIRE_TOKEN_SUCCESS","payload","handleSuccessfulEventCallback","ACQUIRE_TOKEN_FAILURE","LOGIN_FAILURE","logoutAzure","handleRedirectPromise","authResult","handleSuccessfulRedirect","getActiveAccount","redirectAnonymousUser","loginHasBeenCalled","LOGINHASBEENCALLED","getConfiguration","prompt","loginRedirect","sideNavOpen","activeNavBar","getIsyToken$","clearTimeout","touchToken$","IsyUserAdminComponent","IsyMsalComponent","IsyPrintModule","User","password","IsyLoginService","loginInProgessAction","activeLoginTypeAction","getToken$","loginParamAction","tryToLoginAgain","loginParam","loginValue","loginSuccessAction","loginWithToken$","getUser$","getResourcesForToken$","loginWithToken","getUser","getResourcesForToken","user","isAzureLogin","login$","backToLoginList","MapActionDialogHostDirective","IsyDynamicMapActionDialogComponent","mapActionDlgItem","mapActionItem","libMapActionDialogHost","hideAndBlockShowMapActionDialog$","blockShowingMapActionDialog","hideMapActionDialog","IsyMapActionDialogComponent","dialogText","IsyMapActionDialogService","MapActionDialogItem","mapActionDialogFactory","dialog","dynamicMapActionDialogCache","dialogName","dialogExist","changeDialogText","newDialogItem","IsyMapEmitterService","addLayerFeatureEnd","changeCenter","changeLayers","changeResolution","drawBoxEnd","drawFeatureEnd","drawFeatureMouseMove","drawFeatureStart","drawGeoJsonEnd","elevationProfileLine","featureClick","featureDeselected","featureHasBeenDescribed","featureUrlHasBeenDescribed","featureHoverEnd","featureHoverMove","featureHoverStart","featurePopoverEnd","featurePopoverStart","featureInfoEnd","featureInfoStart","featureSelected","geolocationUpdated","getClickCoordinates","layerCreated","linePositionMarkerCoordinates","exportDone","featureValues","loggedIn","loggedOut","configLoaded","mapMoveStart","pointerDrag","mapProgressEnd","mapVectorProgressEnd","measureEnd","measureMouseMove","modifyFeatureEnd","printBoxSelectReturnValue","projectsListUpdated","refreshSourceDone","reInitMapLibNg","reInitIsyMap","showExportPanel","transactionFailed","transactionInsertEnd","transactionRemoveEnd","transactionSuccessful","transactionUpdateEnd","loadingGeoJsonFeatures","extentFitted","emitChangeCenter","emitChangeLayers","emitChangeResolution","emitDrawBoxEnd","emitDrawFeatureMouseMove","emitDrawFeatureSelect","emitDrawFeatureStart","emitDrawGeoJsonEnd","emitElevationProfileLine","emitFeatureClick","emitFeatureDeselected","emitFeatureUrlHasBeenDescribed","emitFeatureHoverEnd","emitFeatureHoverMove","emitFeatureHoverStart","emitFeaturePopoverEnd","emitFeaturePopoverStart","emitFeatureInfoStart","emitFeatureSelected","emitGeolocationUpdated","emitLayerCreated","emitLinePositionMarkerCoordinates","emitExportDone","emitLoadingLayerEnd","emitFeatureValues","emitLoggedIn","emitLoggedOut","emitConfigLoaded","emitMapConfigLoaded","emitMapLoaded","emitMapMoveEnd","emitMapMoveStart","emitPointerDrag","emitMapProgressEnd","emitMapVectorProgressEnd","emitMeasureEnd","emitMeasureMouseMove","emitModifyFeatureEnd","emitPrintBoxSelectReturnValue","emitProjectsList","projectList","emitRefreshSourceDone","emitReInitMapLibNg","emitReInitIsyMap","emitShowExportPanel","emitTransactionFailed","emitTransactionSuccessful","emitZoomIn","emitZoomOut","emitLoadingGeoJsonFeatures","emitExtentFitted","destroyMapEmitter","destroyAllEmitter","IsyMapComponent","DEFAULT_CONFIG_URL","initMaplibMap","registerEvents","initConfig","configJsonUrl","reInitIsyMap$","change","REINIT_WITH_PROJECT_CONFIG","setIsyTokenToMaplibNg$","setCenterAction$","epsgCode","bbox","epsgBBox","latMin","latMax","lonMin","lonMax","unRegisterAllEvents","reInitActive","showScaleLine","addScaleLine","destroyIsyMapService","MapConfigLoaded","MapLoaded","AddLayerFeatureEnd","ChangeCenter","ChangeLayers","ChangeResolution","DrawBoxEnd","DrawFeatureMouseMove","DrawFeatureStart","DrawGeoJsonEnd","ElevationProfileLine","FeatureClick","FeatureDeselected","FeatureHasBeenDescribed","FeatureUrlHasBeenDescribed","FeaturePopoverEnd","FeaturePopoverStart","FeatureSelected","GeolocationUpdated","GetCapabilitiesFromUrl","LayerCreated","LinePositionMarkerCoordinates","ExportDone","LoadingLayerEnd","FeatureValues","LoggedIn","LoggedOut","MapMoveend","MapMoveStart","PointerDrag","MapProgressEnd","MapVectorProgressEnd","MeasureEnd","MeasureMouseMove","PrintBoxSelectReturnValue","RefreshSourceDone","ReInitMap","ShowExportPanel","TransactionFailed","TransactionInsertEnd","TransactionRemoveEnd","TransactionSuccessful","TransactionUpdateEnd","ZoomIn","ZoomOut","LoadingGeoJsonFeatures","ExtentFitted","resultSet","mapId","activateInfoClick","activateGetClickCoordinates","extraMapConfigParams","getExtraMapConfigParams","activatePopoverInfo","MapTooltipDirective","PopoverModule","MapPopoverTooltipDirective","share","DomainLayer","RepositoryMapConfig","IsyMapService","overlaysService","configAction","projectConfigAction","originalProjectConfigAction","projectListInfoAction","instanceAction","layersParamAction","popoverParamsAction","epsgpattern","epsgResult","currentCoordinate","connector","resetOnError","resetOnComplete","resetOnRefCountZero","changeCoordinate","elevationBaseUrl","proxyHost","elevation","punkter","kommuneInfoBaseUrl","kommuneinfo","kommuneInfo$","fylkesnavn","kommunevaapenurl","heraldry","setConfigUrl","configJson","CONFIG","configUrl","newProjectName","nameProject","newApplicationName","_getProjectCallback","listProjects","lst","_getProjectsListCallback","setPopoverParams","popoverParams","_getNewProjectsListCallback","notDummyGroup","reInitType","showMapOverlayLayer","mapOverlayLayer","hideMapOverlayLayer","getHeaderIconUrl","updateNewProjectExtent","ZOOM","LAT","LON","setNewProject","setNewProjectName","setNewApplicationName","tempProjectName","removeTempProjectConfig","uuidv4","random","showTemporaryWmsLayer","hidden","zindex","isbaselayer","minscale","singletile","transitioneffect","bgcolor","transparent","legendgraphicurl","queryable","_addWms","hideTemporaryWmsLayer","removeTemporaryWmsLayer","_removeWms","setExtraMapConfigParams","obliqueenabled","obliqueblomurbex","dokExcludeDekByggPlan","mouseProjectionPrefix","displayprojectionprefix","headertitle","tokenHost","isygatekeeper","useMultiWorld","constrainedExtent","pageScrolling","pageScrollingShowInfoText","pageScrollingInfoTextAndOverlay","_updateMapConfigWithCoordinateAndExtend","mapbound","_updateMapConfigWithGroups","_updateMapConfigWithImageLayers","_updateMapConfigWithWfs","_updateLayersSortingIndex","repository","getMapConfigFromJson","coordinateAndExtent","bound","_getBound","_createGroup","parentId","visibleOnLoad","catId","subCategories","_getBoolean","_addWmts","_addWfs","layerGroupId","isBaseLayer","clusterstyle","clusterstyleurl","stylesld","jsonstyleurl","jsonstyle","stylemapsld","featureElementInfo","featureElement","_getConfigValue","showdialog","openparentwindow","featureEditable","featureAttachment","catIds","_createNotExistGroup","_createDummyGroup","srsDim","sourceWfs","newIsyLayer","clusterdistance","clustertooltip","clusterwrapx","srs_dimension","maxscale","tiled","noProxy","tooltipTemplate","tooltiptemplate","customparameters","loadingstrategy","temporaryLayer","_addLayer","wmsName","_removeLayer","sourceType","_initializeWmsUrl","preferredFeatureInfoFormats","preferredFeatureInfoFormat","_supportsFeatureInfoFormat","_getNewLayers","matrixSet","_getLegendGraphicUrlWms","supportsGetFeatureInfo","getFeatureInfoFormat","getFeatureInfoCrs","supportsGetFeature","getFeatureBaseUrl","getFeatureFormat","getFeatureCrs","crossOrigin","previewActive","selectedLayerOpen","legendurl","retval","supportedFormat","oldNibUrl","newNibUrl","grpIds","notExistGroups","_findGroupExistance","grpId","_fixNibUrl","_fixTopoUrls","_fixSpecialUrl","iPos","oldTopoUrl","regex","oldTopoLayers","_stringEndsWith","newTopoLayers","newNibWmtsUrl","theUrl","oldUrl","oldGwcUrl","newGwcUrl","newUrl","endstr","reloadLayer","geoJsonFeatureInfoElements","featureInfoElements","layerOrder","activateLayer","isyMapService","featurePopoverStartEmitter$","_hidePopover","_showPopover","featurePopoverEndEmitter$","popoverParams$","featurePopover","generateHtmlPopover","popoverElement","popoverHtml","epsgKode","mapPosition","setAnimationActive","replacedHtml","popoverBgColor","querySelector","popoverColor","contentQueries","featureHoverStartEmitter$","_hideTooltip","popChild","generateHtmlTooltip","_updateTooltipPosition","client","_showTooltip","featureHoverEndEmitter$","mapMoveStartEmitter$","featureHoverMoveEmitter$","featureTooltip","hoverStart","codelistId","htmlData","tooltipData","splitTemplate","extract","RegExp","lookedUp","forklaring","tooltipHtml","beg","matcher","normalise","_fixHtmlTooltip","getElementsByClassName","isyMap","offsetTop","offsetLeft","EventsEventHandler","RepositoryConfigRepository","MapAPIMap","MapAPIFeatureInfo","MapAPILayers","MapAPIGroups","MapAPICategories","MapAPIToolsTools","MapAPIToolsToolFactory","MapAPIParsersBase","MapAPIParsersGeoJSON","MapAPIParsersGML","MapAPIParsersFactory","MapImplementationMap","MapImplementationUtilities","MapImplementationMeasure","MapImplementationFeatureInfo","MapImplementationExport","MapImplementationHoverInfo","MapImplementationMeasureLine","MapImplementationDrawFeature","MapImplementationAddLayerFeature","MapImplementationModifyFeature","MapImplementationDrawingManager","MapImplementationPrintBoxSelect","MapImplementationFeatureSelector","MapImplementationGetClickCoordinates","MapImplementationDrawBox","MapImplementationLinePositionMarker","MapImplementationPopoverInfo","MapImplementationFeatureHighlighter","EventsEventTypes","MapLibNgService","httpHelper","eventsEventHandler","repositoryConfigRepository","mapImplementationUtilities","mapImplementationMeasure","mapImplementationFeatureInfo","mapImplementationExport","mapImplementationHoverInfo","mapImplementationPopoverInfo","mapImplementationMeasureLine","mapImplementationDrawFeature","mapImplementationAddLayerFeature","mapImplementationModifyFeature","mapImplementationDrawingManager","mapImplementationPrintBoxSelect","mapImplementationFeatureSelector","mapImplementationGetClickCoordinates","mapImplementationDrawBox","mapImplementationLinePositionMarker","mapImplementationFeatureHighlighter","mapImplementationMap","mapAPILayers","mapAPIGroups","mapAPICategories","mapAPIParsersGeoJSON","mapAPIParsersGML","mapAPIParsersFactory","mapAPIParsersBase","mapAPIFeatureInfo","mapAPIMap","mapAPIToolsTools","mapAPIToolsToolFactory","eventsEventTypes","GeoJsonUtilsService","initStyle","red","green","blue","opacityValue","linewidthValue","showFeatureInfo","geometryTypes","activeDrawPanelIndex","drawTextValue","textsizeValue","transformObj","GetAddressStringPipe","IsyNeighborPrintComponent","OwnerList2CSV","IsyNeighborComponent","setSpinnerStatus","newCadastreAction","newCadastre","GNR","FNR","SNR","UNIKID","getNeighbors$","getMainProperty$","findMatrikkelenhetForUnikId$","getAddressesFromCadastre$","spinnerShowingAction","mainPropertyAddresses","spinnerShowing","neighborEmitter","getFeatureByUnikId","findKeyFields","keyFieldCandidates","propGroup","found","setNeighborsMapactionPosition","neighborsMapactionPosition","register","actionDialogId","unregister","toggleNeighborlist","showReport$","naboliste2CSV$","getPropertyInfo","reportChanged","startNeighborlist","setpropertyInfoAction","neighborSelect","newFeatures","existingelement","foundIndex","Teiger","EIENDOMSTEIGID","stopNeighborlist","deselectFeatures","polygonGeometryAction","polygonSelect","IsyNeighborService","showReportAction","naboliste2CSVAction","polygonFeature","getString","neighborCache","neighborToRemove","featureId","neighborFeature","polygonCreated","visibleSubLayers","getNeighborsMapactionPosition","selectFeatures","getpropertyInfoAction","IsyPositionInfoAreaplanDocComponent","IsyPositionInfoAreaplanComponent","planInfo","planInfoExtended","showPlan","showPlanUpdated","showItem","openBladeOrWindow","customintegration","IsyPositionInfoBuildingComponent","showBuilding","building","showBuildingUpdated","showInfo","urlWithParam","buildingInfo","bygningsnr","utilityUnits","IsyPositionInfoPropertyComponent","showProperty","showPropertyUpdated","num","positionInfoBtns","IsyPositionInfoComponent","elevationResult$","getPointInfo$","bygning","getUnits","highlightProperty","pointInfo$","elevationResult","clickCoordinates","showPlace","place","showAddress","showElevation","setPositionInfoAction","btn","hideMarker","bruksenheter","bruksenhet","etasjeplankode","etasjenr","lopenr","PINICONSTYLE","IsyPositionInfoService","positionInfoAction","picklistUrl","pointInfoUrl","mapSetCenter","toUpperCase","IsyPrintDirective","printStyle","_printStyle","returnStyleValues","styleSheetFile","cssList","linkTagFn","cssFileName","valueArr","_styleSheetFile","returnStyleSheetLinkTags","getElementTag","tag","outerHTML","getHtmlContents","printContents","printSectionId","innards","useExistingCss","popupWin","write","printTitle","printDelay","goToDefault","snapshot","APPLICATION","Location","LocationStrategy","PathLocationStrategy","projectsListService","getProjectList$","activeProjectName$","activeProjectName","projectsList$","removeActiveProjectName","changeProject","IsyProjectsListService","_activeProjectNameAction","projectsListUpdatedEmitter$","projectList$","HeaderIcon","projectImageUrl","projectExist","UpdateExtent","RoadProfileComponent","RoadCrossSectionComponent","RoadProfileDirective","IsyRoadProfileService","cachedClickCoordinateAction","cacheClickCoordinate","RoadCrossSectionEmitterService","initialized","errorEventAction","emitInitialized","emitRefreshed","emitErrorEvent","RoadCrossSectionAPI","RoadCrossSectionImplementation","RoadCrossSectionService","roadCrossSectionImplementation","roadCrossSectionAPI","roadCrossSection","roadCrossSectionService","roadCrossSectionEmitterService","isyRoadProfileService","refreshedEmitter$","allLayersSelected","partiallySelected","changeBladeHeaderTitle","vegnavn","profilenumber","errorEventEmitter$","refreshed$","loadError$","loadError","initializedEmitter$","cachedClickCoordinates$","cachedClickCoordinate$","roadCrossSectionData$","positionMarker$","roadCrossSectionData","cachedClickCoordinates","showArrow","activateLinePositionMarker","bladeIsResized$","refresh","linePositionMarkerCoordinates$","linePositionMarkerCoordinatesEmitter$","drawCrossSection$","cachedDomainFeature","targetId","roadapiurl","roadProfileApiUrl","projectid","roadlineid","east","north","draw","Initialized","Refreshed","errorEvent","deactivateLinePositionMarker","showHideAll","showHideLayer","mirrorView","mirroredview","mirrorview","showMirrorViewPositionMarker","profileNum","showRoadProfile$","headerImgIconClass","expandBladeBtn","showRoadCrossSection$","roadProfileService","roadProfileEmitterService","isActivated","activeRoadFeature","cachedFeatures","drawRoadProfile","featureInforEnd$","roadprofile","roadProfileData$","arrayItem","RoadProfileEmitterService","initializedAction","refreshedAction","RoadProfileAPIRoadProfile","RoadProfileImplementationRoadProfile","RoadProfileService","roadProfileImplementationRoadProfile","roadProfileAPIRoadProfile","IsySearchBarLayoutComponent","searchResultsService","searchTextValue$","activateSearchResult","startLoading","searchTextValue","hideMenuIcon$","deactivateSearchResult","updateSearchParams","setSearchBarValue","filterSearchParams","searchParam","findParam","filterSearchParam","setProjectParams","getSearchTextValue","searchObject","toggleMenu","urlpar","searchGroup","idx","detectCoordinates","setSearchParams","setCoordinateAction","doSearch","numberPattern","number1","number2","searchIndex","urlPar","searchParamsLength","IsySearchBarComponent","searchBarPosition$","hideSearchBar$","searchBarPosition","IsySearchBarService","searchIsActiveAction","searchBarValueAction","getClickCoordinates$","searchBarValue","clickValue","IsySearchResultsFilterPipe","transformSearchGroup","transformed","transformSearchResultMatrikkel","transformSearchResult","matrikellenhet","TeigerRepPunkt","Y","X","STYLE","HOVERSTYLE","ctx_r20","ctx_r46","ctx_r49","IsySearchResultsComponent","searchResultsFilterPipe","searchResult$","searchLoadingAction","searchLoading$","searchResult","searchLoading","searchResultGroups","activateMarker","searchResultGroup","previewGroup","deactivateMarker","gotoResult","ObjektType","toggleResult","shouldDisplayResult","groupOn","nullGeoJsonEiendom","isEier","isArealplan","isVeg","isKoordinat","isBygning","isUtgatt","Feature","utgatt","isSeksjon","klasse","shouldDisplay","previewResult","hoverstyle","previewMatrikkelenhet","gotoMatrikkelenhet","showMarkers","previewFirstInGroup","previewMultiPolygon","multiPolygon","sendGeojson","hasOlfeature","geoJsonObj","drawGeoJsonEndEmitter$","reportUrl","IsySearchResultsService","hasMultipleMatrikkelenheter","combineSearchResultsWithParams","searchParamsAction","urlResult","hasSubItems","Navn","Adressenavn","Kommunenavn","combinePolygons","emptySearchResults","urlWithParams","searchUrlResult$","searchCoordinateAction","cleanGroupsAction","searchResultWithParams","searchCoordinateResult","endLoading","searchGroups","tObj","TempCompHelpComponent","IsySideNavContentComponent","projectListInfo$","hideTranslateBar$","pinMenu$","pinMenu","projectInfo","useLanguage$","closeMenu","changeLang","lang","setMapCenter","subHeaderName","IsySideNavOverlayLayerComponent","sideNavService","showOverlayLayer$","showOverlay","showOverlayLayer","hideOverlayLayer","changeDetection","IsySideNavComponent","forceHideSideNav$","showPinStyle$","hideSideNav$","slideInOut","staticAnimation","activeTranslateParam","translateStateOut","translateStateIn","forceHide$","showPinStyle","forceHide","transform_value","searchBarMenuButtonClick$","mapLoaded$","olAttribution","pinMainMenu","SideNavOpenerDirective","IsySideNavService","_showOverlayLayer","_showPinStyle","showPin","hidePin","openSideNavOnDesktop","IsySpinnerComponent","spinnerService","loadingImage","IsySpinnerService","spinner","spinnerCache","spinnerToRemove","_unregisterGroup","spinnerGroup","spinnerName","showGroup","hideGroup","showAll","hideAll","showing","IsyToasterComponent","sanitizer","cdr","_zone","positionClass","onEnter","_onEnter","onExit","_onExit","addToast","toast","newestOnTop","toasts","maxShown","diff","_fresh","detectChanges","removeToast","timeoutId","removeAllToasts","clicked","onToastClicked","anyToast","findToast","toastId","onAnimationEnd","toState","_ngExit","fromState","onMicrotaskEmpty","IsyToasterService","ToasterOptions","Injector","Toast","ngZone","onClickToast","toastClicked","toastFactory","create","hostView","toastItem","_onToastClicked","dispose","setupToast","createTimeout","task","runOutsideAngular","clearToast","toastLife","customConfig","dismiss","destroy","dismissToast","clearAllToasts","custom","IsyToolDirective","IsyActiveToolComponent","libIsyTool","setActiveToolId","ColumnDefsChangedPipe","searchService","agGrid","getFilterModel","setFilterModel","ColumnIdsPipe","columns","columnIds","getColId","ContentSizeDirective","resizeContent","content","IsyAdvancedSearchButtonsComponent","goToFilter","getCurrSearchMode","getLayer","getFeature","layers$","removeLayerFilter","setShowAdvancedSearchSpinner","ADVANCED_SEARCH","setSearchMode","showHiddenBlade","setLayer","IsyAdvancedSearchComponent","searchMode$","ESearchMode","IsyAdvancedSearchService","featureValuesEmitter$","WELCOME_PAGE","searchModeAction","showAdvancedSearchSpinnerAction","showHiddenBladeAction","mapConfig1$","mapConfig1","layersWithAdvancedFilter","featureHeaders","featureValuesEditted","featureEdited","hasObj","noFeatures","allFeatures","layerObj","layerMet","layerFeaturesEdittedComProp$","layerFeatures","searchMode","queryLayerFilter","selectedLayer","setMapAcitionDialogActive","searchmode","currSearchMode","filterModel","getFeaturStatus","column_r19","IsyObjSearchComponent","featureValuesEmitterEditted$","layerFeaturesEditted$","sortable","floatingFilter","headerWithSearch","noFeature","filteredFeatures$","headerTable$","tableHeader","showAdvancedSearchSpinner$","showAdvancedSpinner","extentFittedEmitter$","layerSelected","selectedLayerName","showFilterDataInMap","filterData","showHideAllColumns","allColumns","columnApi","getAllColumns","columnVisibleIds","setColumnsVisible","column_r12","IsyPropSearchComponent","getFeaturesForAllLayers$","setRowData","loopFeaturesForLayer$","showHiddenBlade$","IsySearchWelcomePageComponent","selectedMode","concatAll","simplify","buffer","ANALYSEMETHODS","bufferDistance","IsyAnalysesAndReportsComponent","analysesAndReportsService","titleLabelPipe","methodsForAnalyseArea","setFeatureJson","areaIsDrawn","drawIsActivated","selectedMethodForAnalyseArea","area","chosenFeatureArr","layerResp","feat","geometryObject","chosenLayerId","pickFromRadioButtonList","mapLibNgServiceMap","reports$","clearFeatureArr$","pushChosenFeature$","selectMethodForAnalysis","ANALYSES_AND_REPORTS","unPause","updateBufferDistance","old","geoJsonify","measurement","buffered","units","cleanUp","selectAreaOnMap","layerObject","mapFeature","transformCoordinate","transformToGeographic","createBufferPolygon","geographicCoords","ring","methodForAnalysis","IsyAnalysesAndReportsService","reporttypes","getFeatureJson","IsyAnalysReportListComponent","reportTypes","report","findIconTittle","showPdfReports","allReportTypes","showExcelReports","textA","textB","ReportAction","processingType","reportTitle","processReportAction","Accept","transformGeoJsonFeaturesFromGeographic","Coordinates","Isytoken","ReportId","reportId","SRS","ExcludeDekByggPlan","Filtertype","gisdokapiurl","nav","msSaveOrOpenBlob","link","dispatchEvent","MouseEvent","bubbles","cancelable","view","remove","countSelectedReports","reportFailExist","sendInvoice","invoiceEmitter","ReportWithKeysAction","getKeysbody","splitInGroupsOf","ceil","appendBody","FileId","Keys","keyGroups","keyGroup","getReportForKeys","selectedReportCountAction","featureExist","tokenNeeded","tokenObjectString","showWmsLayer","Layernames","getKeys$","dokanalysepdf$","Selected","fileId","toggleReport","GetMapUrl","count","toggleShowLegend","useDropdown","scrollHeighExternal","disableDownload","IsyBboxComponent","bboxCreated","geometryFunction","square","minX","minY","maxX","maxY","_round","jobtech","EPSILON","EDrawPanelId","ctx_r58","ctx_r59","IsyDrawComponent","drawPanels","POINT","hasData","toaster","isyDrawService","LINE","POLYGON","features$","deleteObjects$","deleteObjects","deleteObject$","deleteObjectById","quietToaster$","quietToaster","removeObjectById","unRegisterEvents","strokeRgb","_getRGBfromStyle","fillRgb","fillRed","fillGreen","fillBlue","drawPanelId","getGeometryType","panelId","setFeatures","reactivateTool","toggleDrawPanel","downloadDrawing","saveText","editDraw","getTextSize","pointsizeValue","setShowMeasurements","setSnapGuides","IsyDrawService","deleteObject","removeAllObjects","setQuietToaster","IsyElevationProfileComponent","scaleLengths","scaleHeights","checkboxes","isCheck","elevationProfile","isLineDraw","onlyOneFeature","createElevationProfile","apiUrl","checkbox","activeScaleLength","activeScaleHeight","activeFormat","ctx_r47","EPanelId","IsyExportComponent","COORDINATES","getConfigsAction","Configs","getPriceAction","getPrice","priceParams","sendOrderAction","sendOrder","orderParams","orderSent","configurations$","configurations","productList","Products","datasetList","Connections","formatList","Formats","sosiVersionList","SosiVersions","crsList","CoordinateSystems","invoiceDetailsRequired","orderAcceptenceList","KommuneResponsible","selectedVersion","mapCrs","getEpsgCode","crsIdx","selectedCrs","selectedFileStructure","FormatTypes","selectedOrderAcceptence","drawFeatureEndEmitterSubscription","closed","areaDefined","showNextBtn","parsedFeatures","flat","toggleProductType","productTypes","productType","goToPrevious","firstPage","secondPage","showPreviousBtn","showVerifyBtn","goToNext","dataSelected","ProductId","dataList","ConnectionNames","getPrice$","productId","Format","FormatType","SosiVersion","adress","City","postCity","Company","company","Email","Orgnr","orgnr","Note","note","Phone","tel","Zip","OutputSRS","KommunenrResponsible","sendOrder$","toggleProduct","product","toggleDataset","allDatasetSelected","dSet","selectAllDatasets","createAdditionalOptionsModify","editPolygon","removePolygon","toggleExportAreaPanel","activeExportAreaPanelIndex","setExtentWithCoordinates","calculateSquareCoordinates","halfSizeX","halfSizeY","upperRight","lowerLeft","upperLeft","lowerRight","createFeatures","additionalOptions","transformedCrd","centerCoordinates","transformUpperLeft","transformLowerRight","upperEast","upperNorth","lowerEast","lowerNorth","transformedUpperCrdToGeographic","transformedLowerCrdToGeographic","upperCoordinates","lowerCoordinates","IsyFeedbackModalComponent","modalService","phone","featureCollection","changeCoordinateAction","postFeedbackAction","postFeedbackAttachmentAction","startUploadAction","admEnhetResult","feature$","changedCoordinates","resetFeedbackService","postFeedback","shouldRemoveDrawnObject","postFeedbackStart_v2","postFeedback_v2$","uploadError","uploadFinished","IsyFeedbackComponent","deactivateDraw","IsyObliqueComponent","initObliqueSrc","configloadSubscription","hasoblique","obliqueurl","ctx_r22","ctx_r37","IsyPrintMapComponent","sheetSizes","dpis","scales","legendLayers","printMapOptions","activeScale","numzoomlevelsForProject","projectMinScalePrDpi","pow","projectMinScalePrDpi$","updatePrintBox","exportDoneEmitter$","updateVisibleLayerList","deactivatePrintBoxSelect","getOptions","noInfo","sheetSize","activeSheetSize","resolutionDpi","activeDpi","graticule","showDebug","activeScaleText","northArrow","getIconSize","margins","mapTitle","mapText","disclaimer","dateTitle","signTitle","formatTitle","legendsOnNewPage","errorLogger","errorLoggCreator","infoLogger","infoLoggCreator","kommuneNavn","iconText","heraldryUrl","emptyPixel","iconUrls","iconType","getIconType","getMeta","h","standardIcon","smallIcon","a5","smallIconFitsBetter","fileEnding","includesSvg","Svg","Png","selectAllLegends","allLayersCheck","selectSingleLegend","allChecked","activateExportPdf","activatePrintBoxSelect","invalidCombinationSheetSizeDpi","updateScale","updateScaleValue","newSubLyr","updateMissingLayerLegends","IsyPropertyReportPrintComponent","IsyPropertyReportListComponent","propertyReportService","ownersFromPolygon$","eventRegistered","PROPERTY_REPORT","deselectCadastre$","neighbors$","deselectMatrikkelenhet$","choosenFeature$","deselectMatrikkelenhet","choosenFeature","findEnhetIndex","deselectCadastreAction","setActivatedFeatureSelector","setChoosenFeature","layerWithShowNeighborList","ctx_r19","ctx_r21","IsyPropertyReportComponent","showHelpBtn","IsyPropertyReportService","choosenFeatureAction","kommPlanParamsAction","kommPlanParams","planId","activatedFeatureSelector","setKommPlanParams","Circle","RegularShape","skip","step_r23","AnalysisPoint","cost","point","InterestPoint","RoadAnalysisPoints","analysepunkt","interessepunkt","IsyRoadAnalysisComponent","maplibService","routingService","loading$","INDIGO","BLUE","GREEN","upper","YELLOW","isochron","color_solid","updateInputDatalayer","removeInput","removeResults","runRoadAnalysis","inputdata","extractEpsgNumberFromString","selectedCost","handleResults","editPoint","prevCursor","cursor","setSelectedCoords","selectedTotalTime","selectedPrepTime","removePoint","removeIdx","downloadRoute","getVectorDataAsString","matches","resultdata","resultPrepTime","hideLayerByName","updateStyle","styleStr","selectedStyle","selectStyle","colorBeg","hexToColorArr","color_gradient_beg","colorEnd","color_gradient_end","setVectorStyle","gradientStyle","colorSteps","color_steps","stepStyle","solidColor","solidStyle","colorArrToStr","colorArr","strToColorArr","rgbaStr","hexToRgba","alpha","shift","jsonStyleTemp","addInterestPoint","DEFAULT_INTERESTPOINT_NAME","DEFAULT_INTERESTPOINT_COLOR","downloadInput","roadAnalysisPointsToGeoJSON","uploadInput","jsonString","fromCharCode","apply","geoJSONToRoadAnalysisPoints","readAsArrayBuffer","costColorFnToStyle","isAnalysisPoint","id_","DEFAULT_STROKE_COLOR","AnalysisPointStyle","radius1","DEFAULT_ANALYSISPOINT_COLOR","InterestPointStyle","values_","rangeStart","rangeEnd","colorStart","range","percentEnd","percentStart","iPositionToGeoJsonGeomeryString","punkt","getAnalysisPoint","rap","getInterestPoints","ip","interessepunkter","json","punktStil","updateInputStyle","analysisPoint","newAnalysisPoint","geoJsonToIPosition","interestPoints","newInterestPoints","jsonGeom","IsyRoutingService","loadingSubject","postgrestFunctionName","requestUrl","ROUTING_API","request$","postrestBugActive","addLoadingInfo","obs$","loadingOn","loadingOff","IsyThreeDComponent","init3dSrc","has3d","get3dUrl","threedurl","isy3dflyurl","yaw","pitch","initialHeight","theHeight","tools$","child","changeDetectorRef","selectCutomTool","customToolUrl","transformedCenterCoordToGeographic","AgGridModule","TitleLabelPipe","ToolsDirective","TabsModule","withComponents","IsyToolsService","toolsListAction","customToolsListAction","allTools$","activeToolIdAction","activeToolId","getActiveToolId","showTools","usingUserResource","resourceId","hasUserResource","setToolsList","hideTools","setCustomToolsList","customToolsList","loginResourcesAction","loginResources","isyTool","activateToolById$","toolId","showInBlade","bladeOptions","showInDraggable","showInMapActionDialog","mapActionDialogText","showInModal","modalOptions","availableTools$","buttonAvailable","ELEVATION_PROFILE","EXPORT_DATA","THREE_D_VIEW","OBLIQUE_VIEW","PRINT_MAP","ROAD_ANALYSIS","POINT_INFORMATION","TranslatePipe","TranslateDirective","TRANSLATIONS","_currentLang","_translations","translation","extendTranslate","trans","LANG_EN_NAME","LANG_EN_TRANS","yes","no","searchMapLayer","back","cancel","please_wait","delete_all","select_file_for_upload","project_name_not_found","move_up","move_down","Square","Triangle","Cross","Star","zoom_in","zoom_out","other_layers","error_bbox_legendgraphic","no_bbox_legendgraphic","address","about","help","signIn","signOut","log_in","active_legends","drawMenuTxt","printProtocolTxt","elevationProfileTxt","exportDataTxt","threeDViewTxt","obliqueViewTxt","advancedSearchTxt","propertyReportTxt","feedbackTxt","analysesAndReportsTxt","printMapTxt","roadAnalysisTxt","WebinnsynTxt","mapLookUpTxt","pointInformationTxt","export_select_all_datasets","export_select_data","uploadOwnLayer","pointTab","lineTab","polygonTab","textTab","pointType_txt","size_txt","admin_style_toggle_hover","pointTypeEditor_txt","sizeEditor_txt","textSize_txt","color_txt","stroke_color_txt","line_stroke_type_txt","line_stroke_width_txt","fill_color_txt","fill_color_editor_txt","admin_fill_type_txt","admin_pattern_type_txt","admin_pattern_color_txt","admin_color_combination_txt","admin_vertical_title","admin_horizontal_title","admin_grid_title","admin_downright_title","admin_upright_title","admin_cross_title","admin_add_color_txt","admin_remove_color_txt","admin_pattern_line_distance_txt","admin_pattern_line_width_txt","active_txt","normal_txt","hover_txt","showMeasurements_txt","snapGuides_txt","lineType_txt","lineTypeEditor_txt","outlineTypeDashed_txt","outlineTypeSolid_txt","lineTypeLine_txt","lineTypeSpacing_txt","lineWidth_txt","lineWidthEditor_txt","line_stroke_linecap_txt","linecap_round_title","linecap_square_title","linecap_butt_title","pointRotation_txt","text_stroke_width_txt","transparency_txt","number","decimal","textarea","boolean","draw_enter_text","circle_title","triangle_title","square_title","star_title","cross_title","icon_title","line_title","dash_title","dot_title","download_title","download_description","upload_title","edit_title","stop_edit_title","drawAddSuccess_toaster_msg","layerAddSuccess_toaster_msg","drawNoDrawing_toaster_msg","drawErrorConverting_toaster_msg","error_toaster_title","drawDownloadSuccess_toaster_msg","drawDeleteSuccess_toaster_msg","drawAddFileToLarge_toaster_msg","collapse_draw","uncollapse_draw","uploadingInProgress_toaster_msg","saveStyle_txt","pointStyle_txt","lineStyle_txt","polygonStyle_txt","admin_offset_x_txt","admin_offset_y_txt","admin_placement_point","admin_placement_line","admin_placement_txt","admin_download_json_sld","admin_delete_json_sld","admin_delete_layer","admin_simple_fill_txt","admin_thin_pattern_fill_txt","admin_thick_pattern_fill_txt","styleIconUpload_txt","enter_filename","filename_empty_error","filtervalue_empty_error","show_filter_button","show_style_button","admin_service_filter_attribute","admin_service_select_operator_type","admin_service_filter_value","admin_service_add_filter_editor","admin_service_add_filter","admin_service_filter_matching","admin_service_filtering_header","admin_service_change_filter_name","admin_service_change_style_name","admin_style_editor_point_label","admin_style_editor_line_label","admin_style_editor_polygon_label","admin_number_of_zoom_levels","admin_matrixset","and_filter_operator","or_filter_operator","equalTo_filter_operator","notEqualTo_filter_operator","greaterThan_filter_operator","lessThan_filter_operator","contains_filter_operator","notContains_filter_operator","inArray_filter_operator","notInArray_filter_operator","delete_style_file_success","delete_style_file_error","advancedSearch_mainTxt","advancedSearch_innerTxt","objectTypeSearch_mainTxt","objectTypeSearch_innerTxt","commonPropertySearch_mainTxt","commonPropertySearch_innerTxt","selectObjectType","advancedSearchEmptyContentText","advancedSearchEmptyContentInnerText","loadDataInMap","advancedSearchObjectTypeTxt","advancedSearchCommonTypeTxt","propertyReportDialog_txt","propertyReport_header","selectedNeighbors","ownerNotAvailable","showReport_title","downloadReport_title","printReport_title","layerWithoutNeighborList_toaster_msg","layerWithoutNeighborList_toaster_title","catchError_toaster_title","select_polygon","feedbackDialog_txt","feedback_header","youSelectedPoint","nameInput","emailInput","teleInput","feedbackInput","attachmentsInput","emailNotValidInput","personalInfoTxt","linkTxt","saveTxt","removeAttachment_title","feedbackCanceled_toaster_msg","feedbackRegistered_toaster_msg","uploadFailed_toaster_msg","analysesReportsDialog_txt","fileDownloadSuccess_toaster_msg","fileDownloadError_toaster_msg","noReportType_toaster_msg","noReportType_toaster_title","reports_selected","pointWithBuffer_txt","lineWithBuffer_txt","bufferDistance_txt","chooseFeature_txt","selectAnalysisArea_txt","drawAreOnMap_txt","selectFeature_txt","bufferMinValue_txt","bufferMinValue_zero_txt","printMap_txt","title_lbl","text_lbl","iconText_lbl","legend_lbl","icon_lbl","northArrow_lbl","scale_lbl","custom_scale_lbl","graticule_lbl","graticule_debug","landscape_lbl","portrait_lbl","sheetSize_lbl","saveMap","print_select_all_legends","printMapDisabled","printMapDisabledSheetSizeDpi","choose_legend_lbl","legends_new_page_lbl","no_info_lbl","scaleLength_lbl","scaleHeight_lbl","format_lbl","dpi_lbl","grid_lbl","inscription_of_heights_lbl","background_colors_lbl","draw_walls_lbl","include_measures_lbl","incline_percentage_lbl","equal_scale_length_txt","a4_landscape_txt","a3_landscape_txt","clarify_btn_txt","invalid_length_msg","max_length_is_msg","prepTime","totalTime","driveTime","isochronCostWarning","singleColor","gradientColor","objectSaved_toaster_msg","objectUpdated_toaster_msg","objectDeleted_toaster_msg","objectNotUpdated_toaster_msg","objectNotSaved_toaster_msg","wfst_createNew","wfst_update","wfst_attachments","wfst_cancel","wfst_save","wfst_editGeometri","wfst_removeAttachment_title","wfst_add_feature","wfst_dropdown_select","noResults","searchHelp","admin_search_example","searchExample_ssr","searchExample_matr","searchExample_gi","searchExample_giname","searchExample_gidnois","searchExample_address","searchExample_owners","searchExample_buildingnumber","searchExample_plannois","searchExample_coordinate","searchExample_custom","searchResults","pointInformation","noPosition","area_plan","showInfo_txt","showInfo_tooltip","show_road_profile","show_road_cross_section","neighbor_name","neighbor_address","neighbor_description","neighbor_number","neighbor_orgnumber","neighbor_ownership","getReports","makeNeighborList","showProceedings","showProceedings_sendFeedback","editTextAndGeometri","getCasesFromSystem_toaster_msg","getCasesFromSystem_toaster_title","planDocuments_txt","noConnecteionToSakssystem_toaster_msg","compress_blade_title","expand_blade_title","admin_title","admin_subtitle","admin_createNew","admin_emptyFromTemplate","admin_copyProject","admin_editProject","admin_base_description","admin_base_select_info","admin_base_mark_main_info","admin_base_edit_info","admin_base_add_custom_info","admin_base_delete_info","admin_base_details","admin_base_predefined","admin_base_custom","admin_base_custom_add","admin_base_add","admin_base_name","admin_base_edit","admin_base_no_preview","admin_choose_icon","admin_custom_tool_title","admin_custom_tool_icon","admin_custom_tool_new_window","admin_details_title","admin_preview_title","admin_order_map_layers","admin_data_source_title","admin_services_title","admin_catalog_service_custom_add","admin_catalog_service_custom_add_success","admin_catalog_service_custom_add_error","admin_catalog_service_custom_upload","admin_catalog_service_local_layer_warning","admin_layers_description","admin_layers_no_preview","admin_layers_alias","admin_layers_value","admin_layers_select","admin_layers_select_all","admin_select","admin_tools","admin_layers_value_name","admin_layers_alias_name","admin_layers_select_group","admin_layers_select_datatype","admin_layers_no_group","admin_layers_selected_group_title","admin_layers_custom_url_parameters","admin_layers_selected_style_title","admin_layers_legend_url_title","admin_layers_min_scale_title","admin_layers_max_scale_title","admin_layers_edit_node","admin_layers_expand_tree_info","admin_layers_count_info","admin_layers_edit_service_info","admin_layers_select_info","admin_layers_no_feature_warning_info","admin_layers_edit_features_info","admin_predefined_tools_list","admin_predefined_integrations_list","admin_custom_tools_list","dmin_custom_integrations_list","admin_custom_tools_list_is_empty","admin_add_new_custom_tool","admin_add_new_custom_integration","admin_service_list_no_service","admin_service_list_no_service_match","admin_service_wfs_layers","admin_service_ogc_layers","admin_service_wms_layers","admin_modal_title","admin_modal_cancel","admin_modal_save","admin_modal_preview","admin_modal_admin_preview","admin_group_create","admin_group_create_new","admin_group_name","admin_group_exist","admin_group_list","admin_group_layers_inside","admin_group_unread_msg","admin_layers_define_subtitle","admin_layers_add_service","admin_layers_replace_service","admin_layers_provider","admin_layers_category","admin_layers_title","admin_layers_url","admin_layers_order","admin_base_layer_credits_to","admin_layers_version","admin_layers_service_type","admin_layers_subname","admin_layers_service_name","admin_layers_select_version","admin_layers_select_service_type","admin_layers_get_capabilities","admin_layers_get_capabilities_starting","admin_layers_get_capabilities_error","admin_layers_get_capabilities_ok","admin_unable_to_retrive_properties","admin_schema_title","admin_schema_filename","admin_schema_description","admin_schema_time_created","admin_schema_tables","admin_layers_select_schema","admin_layers_new_schema","admin_layers_delete_schema","admin_service_select_props","admin_service_define_styles","admin_settings_center","admin_settings_coordinates","admin_settings_get_coordinates","admin_settings_restricted","admin_settings_update_extent","admin_settings_hover_info_first_layer","admin_settings_zoom","admin_settings_num_zoom_levels","admin_settings_project_name","admin_settings_project_headertitle","admin_settings_project_headersubtitle","admin_settings_project_headericon","admin_settings_project_municipality_nr","admin_settings_coordinate_system","admin_settings_site_title","admin_settings_epsg","admin_settings_webinnsyn_url","admin_settings_single_gi_url","admin_settings_gi_plan_url","admin_settings_gi_plan_kart_url","admin_settings_gi_plan_basis_url","admin_settings_gi_plan_utvidet_url","admin_catalog_info","admin_catalog_add_info","admin_catalog_remove_info","admin_catalog_service_added_info","admin_catalog_new_info","admin_catalog_edit","admin_remove_filter","admin_remove_filter_warnings","admin_set_filter","admin_set_filter_warnings","admin_set_filter_features","admin_edit_enabled","admin_send_username","admin_select_geometry_type","admin_has_code_list","admin_codevalues","admin_editable","admin_transactions","admin_datatype","admin_attachment","admin_basic_title","admin_search_title","admin_integration_title","admin_tool_title","admin_pointinfo_title","admin_name_title","admin_hasurl_title","admin_remove_title","admin_feature_info_title","admin_subname_title","admin_groups_title","admin_project_name_exists_toaster_msg","admin_project_name_exists_toaster_title","admin_saving_failed_toaster_msg","admin_saving_failed_toaster_title","admin_validating_failed_toaster_title","admin_validating_project_name","admin_validating_project_epsg","admin_validating_project_center","admin_validating_project_zoom","admin_validating_project_base_layer","admin_saving_success_toaster_msg","admin_saving_success_toaster_title","admin_upload_failed_toaster_msg","admin_remove_success_toaster_msg","admin_remove_success_toaster_title","admin_layer_copy_created_toaster_msg","admin_project_settings","admin_base_layers","admin_empty_layers_correct_service_q","admin_layers_crs_not_supported","admin_imagetype","admin_use_gatekeeper","admin_opacity","admin_layers_group","admin_map_layers","admin_groups_with_supergroup","admin_modify_group_name","admin_groups_without_supergroup","admin_cant_download_schema_toaster_msg","admin_schema_deleted_toaster_msg","admin_url_valid_toaster_msg","admin_layer_upload_toaster_msg","admin_select_layer","admin_service_activate_advanced_filter","admin_service_show_neighbor_list","admin_service_get_feature_info","admin_service_transparent","admin_service_use_single_tile","admin_service_use_time_slider","admin_service_use_gatekeeper","admin_service_get_without_proxy","admin_service_select_dimension","admin_service_dimension","admin_service_select_layer_type","admin_service_select_codelist","admin_service_layer_type","admin_service_format","admin_service_advanced","admin_service_select_style_file","admin_service_cartogeraphy","admin_service_opens_as","admin_service_send_isytoken","admin_service_restricted","admin_service_title","admin_service_address","admin_service_integeration","admin_service_schema_with_no_data","admin_service_schema_uploaded","admin_service_delete_from_list","admin_service_copy_selected_layer","admin_service_file_error_toaster_title","admin_service_file_success_toaster_title","admin_service_filename_special_characters","admin_delete_project","admin_delete_permission","admin_select_file_json_sld_for_upload","admin_select_file_png_jpg_for_upload","admin_url_exist","admin_service_removed_toaster_msg","admin_service_remove_fail_toaster_msg","admin_group_txt","admin_super_group_txt","admin_move_to_super_group","admin_remove_from_super_group","admin_move_to_group","admin_custom_tool_scale_zoom_level","admin_custom_tool_scale_height","admin_custom_tool_scale","admin_custom_tool_scale_select_type","admin_custom_tool_coordinate_sytem_default","admin_custom_tool_coordinate_sytem_geographical","admin_custom_tool_coordinate_sytem_select_type","jobtech_bbox_description","jobtech_edit_geometry_description","jobtech_remove_restart","jobtech_update_geometry","jobtech_add_geometry","jobtech_remove_geometry","jobtech_get_geometry_toaster","jobtech_geometry_update_toaster","jobtech_geometry_update_failure_toaster","jobtech_connecting_toaster","jobtech_object_without_geometry_toaster_title","jobtech_objectId_miss_geometry_toaster_title","owner_list_generates","owner_list_failed","neighbor_list_generates","neighbor_list_addremove","road_profile_header","road_cross_section_header","emptyContentText","errorLoadRoadProfileText","road_profile_show_all_layers","errorLoadCrossSectionProfileText","refresh_title","show_road_profile_title","show_road_cross_section_title","show_previous_profile_title","show_next_profile_title","mirrow_view_title","show_road_cross_section_layers","login_error","login_success","fail_fetch_isytoken","load_fetch_isytoken","backend_return_code","logout_succes_toaster_msg","continueWithIDPort","continueWithMicrosoft","continueAsDifferentUser","continueWithKeycloak","idPortenDescription","microsoftDescription","differentUserDescription","keycloakDescription","vis_plan_activated_toaster_title","vis_property_activated_toaster_title","vis_address_activated_toaster_title","vis_building_activated_toaster_title","no_result_toaster_msg","map_layer_not_found_toaster_mag","get_location_title","get_location_is_activated_title","geolocation_is_active_map_will_be_updated_msg","position_is_updated_title","get_location_is_deactivate_title","project_loaded","project_does_not_exist","goToDeafultProject_txt","uploadTemporaryLayerHelp","temporaryLayerFormat","exportCoordinateTab","exportPolygonTab","LANG_NO_NAME","LANG_NO_TRANS","admin_delete_source","admin_custom_integrations_list","_translate","InjectionToken","dictionary","IsyUrlParamsDirective","updateLatLonZoomParams","updateProjectParam","instance$","updateInstanceParam","removeJtQueryParams$","jtFunksjon","jtObjektId","onSameUrlNavigation","navigateByUrl","replaceUrl","removeGiQueryParams$","routing","projName","layersList","layergroups","layerLC","baseLayergroups","baselayersList","blayer","blayerLC","toolLC","shouldBeOpen","getClickCoordinatesSubscription","giCompleteAction$","giComplete","setMarkerOnMoveEnd","mapMoveEndSubscription","updateLayersParam","PINICONHOVERSTYLE","IsyUserInfoMsalComponent","adfsLogin","userAdminLogin","idPortenLogin","CreateUrlPipe","FilterLayerGroupsPipe","filterParam","FixIframeSizeDirective","hostHeight","offsetParent","hostWidth","FormatConvertService","geojsonFormat","gdalConvert","ESRI_GDB","GEOPACKAGE","SHAPEFILE","SOSI_GML","fmeConvert","gdalapi","fmeapi","readAsText","parsedJson","jsonError","FormatFilterDescriptionPipe","FormatOptionDescriptionPipe","method","GetFontIconPipe","iconDef","kcInUse","idPortenInUse","postMsg","framesrc","iframeSessionLogout$","setAttribute","onIframeLoad","iframe","contentWindow","isImageUrl","test","orderBy","column","parts","stringArr","S4","arr","oldIndex","newIndex","calculateBoundingExtent","Infinity","IsyZoomInOutComponent","hideZoomInOutBtn$","CacheService","fromCache","lowerCaseUrl","updateIfNotInCache","ok","cacheService","projectConfigUrl","projectConfigService","tokenPart","showpopup","FeatureInfoFormats","Project","enableHTML","messageClass","titleClass","showCloseButton","DomainFeatureInfo","defaults","DomainSubLayer","UtilsGuid","categoryId","newGuid","starttiem","minResolution","maxResolution","layerInstance","DomainLayerResponse","DomainLegendGraphic","sld_version","getLegendGraphicUrl","customUrlArray","customParameters","customParameter","MapPosition","pixel","legendGraphic","legendGraphicUrlWithBBOX","eventIndex","pausedEvents","eventIsPaused","callBack","singleCallBacks","callBacks","triggerEvent","singleCallBack","MapProgress","LayerSourceReady","CachingStart","CachingEnd","CachingProgress","StatusPouchDbChanged","categories","getCategories","getCategoryById","subcat","proj4x","MapAPICustomCrsLoader","proj4","default","loadCustomCrs","projectionDefinitions","_defineProjection","_defineAlias","_getProj4","get3dEpsg","definition","defs","returnEpsg","def","vunits","ellps","code","projectionAliasPrefix","WMSCapabilities","mapImplementation","featureParser","_trigStartGetInfoRequest","layersToRequest","responseFeatureCollections","_createResponseFeatureCollections","layerToRequest","_handleGetInfoRequest","callback","self","featureUrl","containClusterFeatures","_getSupportedFormatsForService","isySubLayer","parseCallback","jsonCapabilities","parseGetCapabilities","wmsUrl","questionMark","urlHasQuestionMark","encodeURIComponent","getCapabilitiesUrl","parser","read","getClickPixelTolerance","pixelTolerance","setClickPixelTolerance","handlePointSelect","layersSupportingGetFeatureInfo","useExtent","useInfoMarker","_showInfoMarker","_sendGetFeatureInfoRequest","getExtentForCoordinate","getFeaturesInExtent","bearerToken","externalUri","propKey","anythingInBraces","infoUrl","getFeatureInfoUrl","getSupportedGetFeatureInfoFormats","getFormatCallback","Capability","Request","GetFeatureInfo","handleBoxSelect","boxExtent","layersSupportingGetFeature","_sendBoxSelectRequest","getProxyHost","_getFeatureUrl","getSupportedGetFeatureFormats","GetFeature","createDefaultInfoMarker","infoMarker","infoMarkerPath","_hideInfoMarker","_addInfoMarker","setInfoMarker","showInfoMarker","removeCurrent","setInfoMarkerPath","getGroupById","_setUpLayerIndex","isBaseLayerVisible","overlayLayer","layersArranged","arrangeLayers","rearrangeLayers","_compare","_getLayers","elem","getVisibleBaseLayers","_showBaseLayer","showLayerByName","updateSortingIndex","updateLayerSortIndex","sortLayerBySortIndex","resizeMap","subLayersOnly","_getVisibleOverlayLayers","getLayerById","getLayerByGuid","moveLayerToIndexInGroup","moveLayerToIndex","moveLayerAbove","isySourceLayer","isyTargetLayer","targetLayerIndex","_getMaxLayerIndexForLayer","baseLayerPromises","showBaseLayer","_recalculateMapLayerIndexes","indexes","thisIndex","getLayerIndex","layerHandler","groupHandler","categoryHandler","_loadCustomCrs","mapConfiguration","initMap","reInitMap","customCrsLoader","addCustomProj","changeView","viewPropertyObject","refreshMap","featureObj","addLayerToOlMap","removeLayerFromOlMap","addDataToLayer","removeDataFromLayer","clearLayer","getFeatureById","layerId","getFirstVisibleBaseLayer","_shouldBeVisible","shouldBeVisible","deactivateExport","renderSync","setImageInfoMarker","clearHighlighted","showHighlightedFeatures","layerguid","setHighlightStyle","_handlePointSelect","toCrs","transformEpsgCoordinate","deactivateInfoClick","deactivateGetClickCoordinates","activateBoxSelect","_handleBoxSelect","deactivateBoxSelect","activateEditClick","activateEditSelect","_handleEditSelect","deactivateEditClick","deactivateEditSelect","layerid","featureName","getConfigLayerCount","getLayerCount","convertGmlToGeoJson","gml","mapApi","_getLayersSupportingGetFeatureInfo","_getLayersSupportingGetFeature","markerIsInitialized","markers","activateMeasure","deactivateMeasure","activateMeasureLine","deactivateMeasureLine","activateAddFeatureGps","addCoordinatesGps","deactivateAddFeatureGps","activateDrawFeature","deactivateDrawFeature","activateDrawBox","deactivateDrawBox","activateDrawElevationProfileLine","deactivateDrawElevationProfileLine","pauseHoverInfo","deactivatePopoverInfo","getSelectedFeatures","lockSelectedFeatures","unlockSelectedFeatures","extentToGeoJson","setStateFromUrlParams","setLegendGraphics","addZoom","addZoomSlider","addZoomToExtent","removeScaleLine","zoomToLayer","maxZoom","zoomToLayers","isySubLayers","optionalMapSize","gisExtent","geoJson2Feature","feature2GeoJson","getRotation","getVectorLayers","totalCount","getCenterFromExtent","getScale","getFeatureExtent","getUrlObject","updateGeolocation","accuracy","altitude","altitudeAccuracy","heading","speed","bridge","setTranslateOptions","geoJsonFeatures","transformGeoJsonFeaturesToGeographic","extraParams","refreshVectorLayer","layerGuid","locked","getViewport","isylayer","ignoreBbox","getLayerFilter","ignoreExtent","styleFunction","updateLayerMaxResolution","zoomLevel","revertMaxResolutionForLayers","MapAPIParsersException","parserName","parseAsException","createParser","exceptionParser","anythingInBracets","kartKlifNo","fiskeriDir","GML2","GML32","getProjection","MapImplementationFilterSource","transformService","_transformService","_initialize","_httpHelper","_isySubLayer","_epsgCode","_dataEpsgCode","_srsDimension","_getSrsDimension","defaultDimension","dimension","hasVerticalValues","_createFilterSource","_filterSource","filterSource","_featureObj","featureNamespace","featureNamespaces","firstElementChild","getFirstElementChild","childNode","nodeType","srsurl","_dataProjection","_featureProjection","gmlFormat","firstChild","namespaceURI","localName","validNamespaces","namespaces","getAttributeNames","keyName","deegreeNamespaces","decodeURIComponent","deegreeElements","deegreeNamespace","simpleNamespace","getOwnPropertyNames","parsers","nodeName","member","attributeChild","attributeType","srsAttribute","createAttribute","setNamedItem","GML3_2","serializer","XMLSerializer","DOMParser","parseFromString","serializeToString","arealPlanObject","arealPlanId","kommunenr","readFeatures","dataProjection","featureProjection","filteredFeatures","validfeatures","featureitem","setGeometryName","featureid","matrikkelnummer","Matrikkelnummer","gardsnummer","setId","featureIsValid","addFeatures","getGeometryName","crsObject","subResult","responseFeatureWms","MapAPIToolsTool","activate","deactivate","messageObject","isCommand","Extend","$","internalTools","getTools","addTool","externalTools","getAvailableTools","toolsId","activateTool","activeToolIsCommand","isEmptyObject","toolOptions","setupTools","toolsConfig","configTool","correspondingInternalTool","_getInternalTool","internalTool","deactivateTool","additionalToolOptions","getFeatureInfoConfig","getFeatureInfo","zoomAndPanConfig","zoomAndPan","boxSelectConfig","boxSelect","drawFeatureConfig","drawFeature","modifyFeatureConfig","modifyFeature","addLayerFeatureConfig","addLayerFeature","addFeatureGpsConfig","addFeatureGps","measureConfig","measure","measureLine","measureLineObject","hoverInfoConfig","hoverInfo","featureEditorConfig","featureEditor","drawingManagerConfig","drawingManager","printBoxSelectConfig","printBoxSelect","featureSelectorConfig","clickCoordinatesConfig","drawBoxConfig","drawBox","drawElevationProfileLineConfig","drawElevationProfileLine","linePositionMarkerConfig","linePositionMarker","SourceVector","DoubleClickZoom","Modify","Draw","Snap","LineString","Collection","Overlay","MapImplementationStylesMeasure","unByKey","singleClick","shiftKeyOnly","SnapGuides","VectorLayer","pointerMoveHandler","helpMsg","sketch","startModify","helpTooltipElement","helpTooltip","setPosition","$jq","noConflict","removeClass","addInteraction","drawStyle","typeObject","drawLayer","drawStyles","initSnapping","initSnapGuides","createHelpTooltip","listener","on","_removeDoubleClickZoom","evtListener","geom","output","snapInteractions","snap","removeInteraction","deleteCondition","evtModify","getArray","snappingFeaturesCollection","getSource","snapGuideOptions","clearGuides","setActive","setDrawInteraction","removeChild","className","positioning","addOverlay","addClass","_removeOverlays","removeOverlay","tooltipStaticElements","staticElement","getInteractions","interaction","_applyDoubleClickZoom","Transform","DragBox","Text","noModifierKeys","dragging","boxIsDrawn","condition","addFeature","addModifyInteraction","addCondition","hitTolerance","translateFeature","rotate","keepAspectRatio","stretch","setHandleStyle","firstPoint","getFirstCoordinate","startangle","delta","circle","textAlign","setDefaultStyle","continueLineMsg","circleOverlay","useSpatialIndex","updateWhileAnimating","updateWhileInteracting","createMeasureTooltip","singlePolygon","circleFeature","measureTooltipElement","measureTooltip","setOffset","getArea","getDistance","CircleStyle","MultiLineString","LinearRing","MultiPoint","MultiPolygon","createBox","Select","VectorSource","MapImplementationStylesJson","MapImplementationTransform","jsts","select","geoms","zIndex","_getFeatureObject","_addEventHandlersSource","_removeSpecificEventHandlers","eventHandlers","guidCreator","_drawFeatureEnd","_addEventHandlersModify","modificationActive","_getMeasurements","_writeFeatures","_addEventHandlersTransform","transformActive","_addEventHandlersSelect","selectedFeatures","_addEventHandlersShowMeasurements","removeSingleFeature","getFeatures","_removeMeasureTooltip","_addEventHandlerBuffer","_showBuffuer","_addEventHandlersDraw","_addEventHandlers","io","OL3Parser","inject","jstsGeom","setGeometry","_createMeasureTooltip","changeEvt","_getTooltipCoord","_formatArea","_formatLength","getInteriorPoint","getLastCoordinate","_setSelectedStyle","selectedColor","selectedStyles","jsonStyleFetcher","featureStyle","customStyle","_setSelectedPointStyle","_setSelectedLineStringStyle","_setSelectedPolygonStyle","getText","_setSelectedTextStyle","getImage","getPoints","getLineDash","getFont","_removeEventHandlers","_setFeatureDefaultValues","sourceFeatures","_readFeatures","transformManager","writeFeaturesObject","_addDrawInteraction","drawOptions","_checkForNoKeys","_checkForEmptyText","_addTransformInteraction","_addModifyInteraction","_checkForShiftKey","_addSnapInteraction","_addSnapGuideInteraction","_addSelectInteraction","selectOptions","deselected","_addFeatureInfoInteraction","selectFeatureInfo","_initiateDrawing","styleProxyFunction","_styleFunction","setSource","_determineStyleFromGeometryType","_setPointStyle","_setStyleFromStyleJson","_getTextFromInputStyle","styleJson","textStroke","_addMeasurementsToLinestringStyle","_addMeasurementsToPolygonStyle","newFeatureStyle","_superscriptLabel","htmlElem","children","tagName","textContent","sourceProj","getView","getCode","ii","c1","c2","abs","projection","_initializeFormat","getLayerSource","reactivate","modifyStyle","wasActive","ScaleLine","Graticule","getPointResolution","getTransform","domtoimage","jsPDF","METERS_PER_UNIT","applyTransform","addBoxes","addLegends","loadLegends","drawGraticule","setSize","activatePdf","setConstrainResolution","scaleLine","bar","minWidth","addControl","setLoggers","buildGraticule","handleGraticuleDebug","pdfInfo","getSizeInfoFromOptions","sources","getAllLayers","tilesLoaded","setInterval","onComplete","clearInterval","createPdf","once","setPrintSize","resolution","scaleResolution","activateImg","done","createImage","mapCanvas","getSize","mapContext","getContext","querySelectorAll","globalAlpha","fillStyle","fillRect","matrix","CanvasRenderingContext2D","setTransform","drawImage","gridConstantX","gridConstantY","linesX","linesY","tenCm","pixelsPerMm","lineMeter","xPos","yPos","exportOptions","pdf","legendImages","toJpeg","addImageToPdf","dim","setLineDashPattern","frameInfoField","handleLegends","frameMap","resetOriginalMapSize","smallSheet","setPage","rect","infoFieldMargin","infoFieldHeight","addImage","setDpi","getTargetElement","updateSize","setResolution","viewResolution","removeControl","strokeStyle","showLabels","wrapX","lonLabelFormatter","transformedLon","latLabelFormatter","transformedLat","targetSize","newProj","fromLonLat","worldExtent","setWorldExtent","getResolution","pageAdder","addPage","scaleBarHeight","leftMargin","topMargin","rightMargin","largeSheetBottomMargin","bottomMargin","imgs","MapImplementationSourcesWfsT","MapImplementationFeatureEditor","srsName","transactionManager_","setWfs20","geometryName_","editKey_","points_","GetFeatureType","getHoverStyle","ensureFeatureOverlay","featureOverlay","_getHoverStyle","applyJsonStyle","findFeature","proj","MapImplementationStylesDefault","always","_ensureHighlightLayer","geoJsonParser","readFeature","highLightLayer","vectorSource","$element","infoMarkerOverlay","stopEvent","_element","layerSource","infoFormat","decodedUrl","queryString","queryStringEncoded","infoKey","boundingBox","_isVisible","getMinResolution","getMaxResolution","isCluster","checkIfExists","featureGeometry","intersectsExtent","forEachFeatureInExtent","clusterFeatures","clusterFeature","point1","point2","calculateDistance","_createCrsObjectForGeoJson","crsCode","CrsObject","codes","CrsProperties","toleranceInMapUnits","minN","minE","maxN","maxE","highlightStyle","_setDefaultHighlightStyle","defaultStyle","pointerMove","featureFilter","toggleCondition","getTeigIdFromFeatureId","matrikkelTeigId","endId","teigId","getSelectStyle","styleAlreadySet","teigWithStyle","drawThis","_style","_selectStyle","_isClickSelectActive","_isSelectActive","eventObj","getProperties","addSelectInteraction","_selectOptions","_neighborStyle","_clickSelectStyle","_errorStyle","getLayersByTitle","_selectInteraction","unitId","shouldBeInSelected","shouldBeInDeSelected","deselectedFeature","findDeselectedFeature","_selectedFeatures","_deSelectedFeatures","deselectDuplicates","removePreSelectedFeature","hasKeyFields","makeUnitId","_selectedFeature","findSelectedFeature","deselectedFeatureIndex","selectDuplicates","addPreSelectedFeature","_hoverInteraction","compareKeyProperties","p1","p2","getLayerByFeature","_properties","selectFeature","deselectFeature","addHoverInteraction","_hoverOptions","preventFeatureSelect","preventSelect","originalEvent","getEventPixel","forEachFeatureAtPixel","_feature","_clickSelectInteraction","_clickSelectOptions","getActive","_clickHoverInteraction","_clickHoverOptions","selectedFeatureIndex","getIsySubLayerByFeature","preSelectFeatures","_preSelectedFeatures","findFilter","unikFilter","sameItem","getPreSelectedFeatures","_selectedFeatureSetStyle","mapImplementationSourcesFactory","olLayer","stylesJson","_initializeStylesJson","_sendValuesToEvent","setQueryOnSource","getFilter","parameters","sourcePromise","gmlParser","getUrl","parseFeatures","childElementCount","sourceExtent","invalidFeatures","invalidFeature","_fitExtent","_callbackFunction","featureValue","filterValue","extentExecuted","_sendFeaturesToEvent","closestPoints","getClosestPointsToCoordinate","distances","closestPoint","closetsDistance","prev","closestFeature","getClosestFeatureToCoordinate","getClosestPoint","coord1","coord2","sqrt","highlight","mapImpl","_setOptions","_addInteraction","onMouseOut","_returnFeatureByGeometryType","_getFeaturesByZIndexFromPixel","skipFeature","clusterFeatureId","clusterFeatureExtent","_orderArrayByZIndex","_getFeaturesByZIndex","featureArray","_getEvtCoordinate","hoverIsActive","hoverIsPaused","isHoverInfoPaused","_getEventObject","displayFeatureInfo","sameFeature","ol_uid","eventObject","featureProperties","featureLayer","fh","hoverIsInitialized","MapImplementationLayerState","reportPercent","olMap","addLayerSource","removeSourceEvents","layerLoading","layerLoaded","layerCounter","layerSources","addSourceEvents","loading","loaded","percent","lastPercent","calculatePercent","checkCounter","increaseCounter","decreaseCounter","addLayerSourceReadyEvent","layerSourceReady","getState","changeListeners","getListeners","sourceReadyListener","un","_registerProgress","Icon","modifyFeatures","markerPointSource","vectorSourceCollection","selectedLine","edge","vertex","_setEvents","_registerEvent","eventKeys","_registerMouseEvents","_removeArrow","_createArrow","_deregisterMouseEvents","eventKey","pointCrd","closetPointOnSelectedLine","selectedLineGeometry","markerPointFeature","closestPointGeometry","lineSegmentCoordinates","coordinatesArray","segmentCoordinates","lineSegment","bufferedPolygon","intersectsCoordinate","atan2","transformClosetPointCrd","lat1","lon1","bearing","lat2","asin","lon2","arrowCrd","arrowStyle","rotateWithView","markerArrowFeature","markerArrowSource","markerArrowLayer","markerPointStyle","markerPointLayer","clickCoordinate","Attribution","MousePosition","Zoom","ZoomSlider","ZoomToExtent","defaultControls","Control","FillStyle","StrokeStyle","Geolocation","View","WMTSCapabilities","ImageLayer","Layer","Tile","TileLayer","Projection","bboxStrategy","MapImplementationMarker","MapImplementationSourcesFactory","MapImplementationSourcesVector","MapImplementationStylesSld","Cluster","ClusterSource","ImageWMS","TileWMS","easeOut","intersects","DragPan","MouseWheelZoom","defaultInteractions","platformModifierKeyOnly","pointOnFeature","mapExport","popoverInfo","featureHighlighter","windowResized","vectors","fromProj","toProj","mapGroups","popoverOptions","newMapRes","newMaxRes","mapScales","newMaxScale","mapResolutions","sm","centerBbox","_makeCenterBBox","collapsible","collapsed","userAgent","isWindows","zoomInfoElement","toggleZoomInfo","constrainResolution","enableRotation","resolutions","multiWorld","controls","extend","interactions","dragPan","mouseWheelZoom","activePointers","checkSize","small","setCollapsible","setCollapsed","zoomInfoTextMobile","zoomInfoTextWindows","zoomInfoTextMac","borderRadius","boxShadow","justifyContent","alignItems","pointerEvents","textColor","fontSizeMobile","fontSizeDesktop","zoomInfoControl","ctrlKey","metaKey","touches","_registerMapCallbacks","_registerProgressBar","_registerMousePositionControl","getOverlays","_getLayersWithGuid","getVisible","oldView","oldEpsgCode","oldCenter","newCenter","newView","setView","layerPool","isySubLayerPool","zoomMultiplicator","boxSize","tileCountX","floor","tileCountY","startX","startY","centerX","centerY","_onPointerMove","_onMouseOut","callbacksRegistered","mapViewChangedObj","_getUrlObject","onPointerMove","onPointerDrag","mapMoveend","_checkGktToken","layerState","coordinate2string","mousehtml","geographic","translateOptions","mousePositionControl","coordinateFormat","checkGktToken","latitude","longitude","isFinite","_getLayerFromPool","actualLayers","_isLayerVisible","layerexists","_getUrlParams","getParams","separator","layerFromPool","_getLayerFromPoolByGuid","layerFromPoolPromise","_createLayer_promise","gktToken","_getTokenAsync","getUrls","getFormat","tileMatrixZoomLevel","tileMatrix","gridOrigin","tileGrid","getOrigin","tileGridOriginX","tileGridOriginY","tileSize","getTileSize","resolutionAtMatrixLevel","getResolutionForZoom","tileCol","tileRow","_trigLayersChanged","getLegendStyleFromLayer","setAttributions","insertAt","_getLayerByGuid","_removeLayerFromPool","_setLayerProperties","returnlayer","clusterStyleCallback","_clusterstyles","parseSld","clusterStyleSldCallback","clusterStyleJsonCallback","_sldstyles","_setLayerMaxresolution","_getResolutionByScale","_setLayerMinresolution","_addIsySubLayer","layerIdExist","styleJsonCallback","_response","styleCallback","maxScaleDenominator","minScaleDenominator","sourceObject","clusterSource","attributions","getAttributions","getClusterStyle","asyncGetResource","_getScaleByResolution","clusterStyle","preload","updateTime","updateParams","toISOString","time","setMinResolution","setMaxResolution","minRes","maxRes","_loadVectorLayer","epsgCodeOnly","getEpsgCodeOnly","viewBox","calculateExtent","geoJsonUrl","standardParams","limit","mergedParams","_loadGeoJsonFeatures","strategy","itemExists","_getIsySubLayerFromPool","_getLayerFromPoolByFeature","tempFeatureId","layerInPool","scaleIdx","_getZoomByScale","maxValue","diffUp","diffDown","zoomlevel","setFullYear","getFullYear","setMonth","getMonth","setDate","getDate","setHours","getHours","setMinutes","getMinutes","setSeconds","getSeconds","isNaN","getLegendUrl","LAYER","VERSION","legendUrl","getLayerByName","layerTitle","subLayerIndex","layersArray","spliceIdx","_sortByKey","array","_getLayerById","_getLayerByName","_getGuidsForVisibleLayers","geolocationguid","_compareMapLayerIndex","visibleLayer","refreshLayer","refreshIsyLayer","_olSalt","createRefreshSource","hasBearerToken","noChangeToken","tokenObject","updateBearerTokenForWmsSource","updateTokenObjectForSource","updateBearerTokenForWfsSource","updateTokenObject","updateBearerToken","bearertoken","customImageLoadFunction","xhr","XMLHttpRequest","setRequestHeader","objectURL","send","customTileLoadFunction","imageTile","setImageLoadFunction","setTileLoadFunction","poolLayer","addToPreSelected","featuresSelected","featureIdsSelected","singleFilter","filteritem","featuresDeselected","featureIdsDeselected","selectPreSelectedFeatures","preSelectedFeatures","preSelectedFeature","_getFeaturesAndAddHoverStyle","editurl","_getElementsByAttribute","attr","attrValue","exactName","elems","_parseResponse","gmlPrefix","elementNodeByName","elementGeometryName","elementNodeType","outerelements","outerelement","longestCommonPrefix","shortestString","every","_parseWmtsGetCapabilities","wmtsParser","matrixInfo","Contents","TileMatrixSet","Identifier","matrixIds","TileMatrix","_matrixdata","TileMatrixSetLink","parsedData","ServiceIdentification","Abstract","ServiceProvider","ProviderName","_parseWmsGetCapabilities","wmsParser","GetMap","CRS","Service","ContactInformation","ContactPersonPrimary","ContactOrganization","_parseGetCapabilies","localPart","serviceIdentification","_abstract","serviceProvider","_parseResponseUrl","sequenceNodes","sequenceNode","hasChildNodes","elementNode","parsedResponse","isyLayerGeometryType","useHttps","getLayerByTitle","getClusterFeatures","_distance","featureExtent","clusterStyles","clone","clusterImage","setRadius","clusterText","featureKeys","featureAttribute","getKeys","isInitialized","newResult","centerConverted","newResults","oParser","retVal","_setNewMaxZoom","geolocationBridgeActive","geolocationObject","locationextent","fit","layersExtent","setNewExtent","cooordinates1","cooordinates2","easing","_calculateDuration","getCenterCoordinates","animateDuration","currentZoom","currentCenter","animationActive","transformGeoJsonFeatureToGeographic","writeFeatures","xmlParser","xmlFeatures","jsonParser","writeFeature","zoomslider","zoomToExtent","getStyleForLegend","transformedExtent","_addGeolocationLayer","geolocationLayer","_refreshGeolocationLayer","_drawGeolocation","geolocationSource","accuracyStyleImage","geolocationAccuracyStyle","accuracyStyleFill","accuracyCircleFillColor","accuracyStyleStroke","geoaccurancyStyle","geolocationStyle","geolocationImageScale","geolocationImageSrc","geoaccurancyFeature","geolocationFeature","initialGeolocationChange","geolocextent","_geolocationError","_geolocationChange","geolocation","getPosition","getAccuracy","getAltitude","getAltitudeAccuracy","getHeading","getSpeed","geoLocationOptions","trackingOptions","getTrackingOptions","enableHighAccuracy","setTrackingOptions","mapProjection","geolocationindex","setTracking","accuracyFeature","positionFeature","getAccuracyGeometry","clearWatch","transformBox","fromCrs","filterSources","setZIndex","geoJsonLayerSource","originalMaxResolution","layerMaxResolution","parseZoomLevel","layerProperties","MapImplementationMapRENDERERS","webgl","hoverStyles","hoverLayer","markerLayer","_clearLayer","_getLayer","_createGeometryFromCoordinate","firstMarkerWithCoordinates","_pointerMoveHandler","measureStyle","drawStartEvt","tooltipCoord","circleArea","_formatPolygonLength","circleGeom","_drawCircle","circleCoordinates","string","circleRadius","_formatLengthPolygon","_getLength","unit","getLength","stride","flatCoordinates","_flatternCoordinates","_getFlatLength","thisCoordinate","x1","y1","x2","y2","continuePolygonMsg","_createHelpTooltip","drawstartEvt","optionFeature","autoPan","displayPopoverInfo","zoomKey","newResolution","previousResolution","oldValue","hasFeatureAtPixel","popoverOverlay","popoverTemplate","pageWidth","pageWidthMargin","pageHeight","pageHeighthMargin","obs","_getAtiveSheetSize","a0Portrait","a1Portrait","a2Portrait","a3Portrait","a4Portrait","a5Portrait","a6Portrait","a0Landscape","a1Landscape","a2Landscape","a3Landscape","a4Landscape","a5Landscape","a6Landscape","_UTMZoneNotChanged","mapCenterGeographic","_getMapCenterGeographic","_getMapCenter","UTM","_getUTMZoneFromGeographicPoint","oldUTM","_createFrame","deltaCenter","_findDelta","_moveLayer","_getExtentOfPrintBox","mapCenterActiveUTMZoneCoordinates","_getMapCenterActiveUTMZone","printBox","_getPrintBox","biSone","_getBiSone","localProj","sone","_getEpsgCode","printBoxSelectionLayer","lonLatBL","soneBL","lonLatTL","soneTL","lonLatBR","soneBR","lonLatTR","soneTR","multiPolygonGeometry","_getMultiPolygonGeometry","_getGrid","_getStyle","_getUTMZoneFromMapCenter","_transformCoordinateArray","newMultiPolygonGeometry","cols","tempLeft","tempRight","tempBottom","tempTop","tempBox","_removeKineticDragPan","copyOld","oldInteraction","_applyNonKineticDragPan","kinetic","_applyOriginalInteraction","MapImplementationSourcesWfs","MapImplementationSourcesWms","MapImplementationSourcesWmts","proxy","tmpProxy","layerUrl","flattenproxy","_validateMatrikkelProxyUrl","newLayerUrl","host","olLayers","_mergeParamsAndCustomParams","tile","HTMLImageElement","customUrl","_getProxyUrl","_setToken","_addCustomUrlParameters","createSource","GKT","lastGktCheck","subLayerCustomParams","customUrlString","sep","setLayerTokenIfElapsedTimeIsMoreThanGktLifetime","initTime","elapsedTime","gktLifetime","_resolution","paramString","getParamStringFromObject","layerCrs","projectCrs","currentBbox","loadedExtentsRtree_","isySubLayerUrl","isValidUrl","getLoadingStrategy","geoJsonParse","tileStrategy","TileGrid","cqlFilterInUse","eventname","_get3dEpsgByProjection","resultObject","_getFeatureNamespace","featureNamespaceColon","featureNode","writeTransaction","gmlOptions","featurePrefix","featureData","_convertXmlToInsertStringV2","_readResponseWfs20","transactionSummary","totalInserted","gmlId","insertIds","localId","_getLocalId","errorMsg","finally","_convertCoordinate2String","_updateGeometry","theGeometry","lonLatNames","newprop","_updateFeatureWfs20","editedproperties","_getFeatureName","_convertXmlToStringV2","okResult","totalUpdated","sourceFeature","isWfs20","_convertXmlToString","_readResponse","_getChildElementToString","resultString","nodeValue","attribute1","xmlDoc","tags","xmlString","tagNodeName","parentAttribute","mainAttribute","skipLastNode","nodenamespaceprefix","_getChildElementToStringV2","xmlns","_deleteFeature","totalDeleted","Document","getElementsByTagNameNS","readTransactionResponse","_getXmlNodeValue","namespace","nodename","xmldata","thedata","totalReplaced","getFeatureType","startIndex","FORMAT","getTopLeft","WMTS","WMTSTileGrid","projectionExtent","z","createUrl","createUrls","_createStyle","jsonobject","currentstyle","_zIndex","_parseFilter","_createImageStyle","_createTextStyle","_createStrokeStyle","_createFillStyle","jsonElement","_drawSolidPattern","_drawLinePattern","patternStyle","patternCanvas","patternCtx","moveTo","lineTo","lineWidth","finalPattern","createPattern","thickness","numColors","beginPath","x0","y0","_createIconStyle","_parseTextFilter","textBaseline","pos0","idValue","pos1","fieldname","fieldvalue","makeSymbolizer","makeUserStyle","minScaleDenom","maxScaleDenom","filters","userStyles","filterstyles","hiddenByScale","_parseAndFilter","_parseOrFilter","_parseEqualTo","_parseFilterStyle","_parseNotEqualTo","_parseGreaterThan","_parseLessThan","_parseContains","_parseNotContains","_parseInArray","_parseNotInArray","setHidden","clusterFunction","filterstyle","clusterCount","text_","unset","andValue","orValue","numValue","_checkObjectContainsValue","sld","ogc","xlink","xsi","se","readChildNodes","getChildValue","namedStyles","namedLayers","defaultsPerSymbolizer","rules","featureTypeCounter","createtextstyle","styleStyle","outlineColor","outlineWidth","getAlignValue","labelAnchorPointX","getBaselineValue","labelAnchorPointY","getFontValue","getColorValue","fontOpacity","labelXOffset","labelYOffset","createstrokestyle","createfillstyle","polygonstyle","pointstyle","linestyle","textstyle","fillstyle","strokestyle","imagestyle","imageopacity","_node","elseFilter","labelRotation","labelAlign","readers","_expression","labelPerpendicularOffset","haloRadius","haloColor","haloOpacity","colorMap","q","quantity","cssProperty","symProperty","cssMap","graphicOpacity","graphicWidth","getAttributeNS","graphicFormat","nextSibling","readNode","fids","fid","lowerBoundary","upperBoundary","userstyle","getFeaturePropertyKey","featureKey","parseFilterProperty","featurevalue","parseFilter","_getValidStyle","featurelabel","_validateScale","_getAttributeValue","thisstyle","namespaceAlias","defaultPrefix","local","getCssProperty","sym","getAttributeNodeNS","uri","attributeNode","fullName","potentialNode","attributeValue","getStrokeDashstyle","dashstyle","pixelRatio","getStrokeWidth","addFontValue","align","alignvalue","baseline","baselinevalue","colorvalue","opacityvalue","getGraphicFormat","graphicFormats","defaultGraphicFormat","addProjection","epsgCodes","projDefinition","transformObject","forward","inverse","transformedCoord","transformExtent","theProj","axisOrientation","axis","getAxis","transformGeoJsonFeatureFromGeographic","featureCrds","_createConfig","jsonConfig","comment","useCategories","customLayerProjectGuid","maxIconWidth","maxIconHeight","infoFieldWidth","infoFieldLeft","infoFieldTop","logoLineX","northArrowLineX","titleLineY","textLineY","dateLineY","titleLines","splitTextToSize","titleX","titleY","setFontSize","linenr","textDimensions","getTextDimensions","getFontSize","kommuneDimensions","textLines","textY","northArrowCenterX","northArrowCenterY","northArrowWidthMm","northArrowHeightMm","iconCenterX","iconCenterY","iconWidthMm","iconHeightMm","adjustMaxIconHeight","addMetadata","disclaimerX","disclaimerY","placeLegends","legendImagePromises","imgObj","isWmsLayer","wmsLayer2Legend","isWfsLayer","stylesToLegend","height_mm","addNewPage","topOffset","leftOffset","legendTitleHeight","sortInGroupsOfBy","groupedLegendImages","col","colBufferMm","colWidth","width_mm","colLength","endOfHorizontalSpace","splitTitle","leftPadding","splitImage","legendImage","splitHeightMm","fadePixels","widthPx","heightPx","splitHeightPx","extentTop","extentBottom","cropImage","fadeSide","globalCompositeOperation","gradient","createLinearGradient","addColorStop","imgType","dataURL","newImg","maxVal","headerHeight","sortedImgs","groupes","groupLength","addToGroup","gr","addToNewGroup","placeOrSplit","topImg","bottomImg","placeImageInGroup","urlToData","toLegendImageObject","props","getImageProperties","fileType","urlWithBBOX","bboxFailed","useNormalLegendGraphicsIfBboxFails","urlWithOutBBOX","subHeaderStyle","validStyles","elementSize","currentHeight","drawLabelSign","drawPoint","drawPolygon","drawLine","drawTriangle","drawSquare","drawStar","drawX","drawCross","drawIcon","topBufferPixels","headerPaddingPixels","drawLabel","maxWidth","fillText","decode","Path2D","arc","fillPath","strokePath","closePath","triangle","star","cross","lineJoin","dashStyle","validNumberArray","numbers","numArray","valid","drawSolidPattern","drawLinePattern","xPosition","yPosition","s4","PermissionService","getResources","neededResource","singleIndexes","roadProfileImplementation","implementation","layerstates","onoff","RoadCrossSectionImplementationSvgElement","RoadCrossSectionImplementationDraw","svgElement","showtooltip","hidetooltip","tooltipmousemove","tooltipmouseout","apiurl","ajax","crossSectionAPICallback","crosssectionjson","terrainjson","svgdoc","getSvgDocument","widthpx","heightpx","centerxpx","boundingClientRect","getBoundingClientRect","coordArr","drawPolyline","gGrid","coordcenterline","centerline","dasharray","gTerrain","minheight","MAX_SAFE_INTEGER","maxheight","maxdistance","layer0pointright","layer0pointleft","maxheightallowed","layerindextoremove","crossSectionLayers","ignore","layernamelc","l2","layernamesignore","lnameignore","crossSectionSide","side","numpoints","crossSectionPoint","isLeftSide","extentwidth","extentheight","relcenterheight","fudge","factextent","factpx","meterperpx","centerypx","gridmeters","gridpixels","meter2px","isxaxis","drawGrid","eventinfo","pyflatetyp","layercount","gtexts","defsele","getDefsElement","layerdisplay","checkedval","layerchecked","ls","gtxt","coordsflatetyp","px","distance2px","py","relheight2px","lineele","useele","slopeperc","representNumberWithOneDigit","slope","layerclassname","eleid","addUse","pointerclassname","useeleTop","nl","tooltiptxt","flateNumber","setTooltip","xpxprev","ypxprev","txtpx","txtpy","drawText","diagval","isnarrow","titlewidth","txtpxy","typetxtele","eletxtx","flatetype","flatetypetitle","getFlatetypeTitle","txtpytitle","classname","eletxt","refvaldist","refvalheight","xpx","xoffset","ypx","lineheight","txtele","stylecomp","getPropertyValue","centerlineheightoffset","clheightabs","heightCenterline","clheightpx","absheight2px","coordsline","dasharr","drawTerrain","addhoverstyle","getStyleElement","csshover","styleSheet","cssText","createTextNode","terrainAPICallback","ele","onmousemove","setAttributeNS","onmouseout","getSuggestedPoint","trycount","createSVGPoint","boundingParent","tstx","tsty","ownerDocument","elementFromPoint","lowertaken","uppertaken","flatetypes","svgid","svgele","svgidtxt","svgeletxt","svgDoc","honormirror","createElementNS","svgNS","xval","spoints","getCoordstring","attrs","polyline","lastChild","loopguard","lcnodename","meter","relheight","absheight","relval","px2distance","gridstepsmeter","gridmeter","gridpx","maxpx","leftmostxmeter","leftmostxpx","coordline","drawImplemenatation","loadTemplate","svgDocument","styleElement","defsElement","getTarget","getNameSpace","eleDefs","getDefsContent","eleStyle","getStyleContent","elett","background","border","onmousedown","preventDefault","elementselected","simulatemultitouch","finger_dist","get_distance","ffeventfix","isPanning","startPoint","getViewBox","onmouseup","changedTouches","taptol","minx","maxx","miny","maxy","istap","tttext","new_finger_dist","eventdelta","mx0","pageX","my0","pageY","mx1","my1","mx","my","zoomPoint","vb","ViewBox","setViewBox","onwheel","sign","deltaY","onmouseleave","ontouchstart","ontouchend","ontouchmove","dw","dh","svgSizeWidth","svgSizeHeight","texts","diffX","diffY","currentTarget","synth","WheelEvent","vbstring","ns","myString","initRoadProfile","RoadProfileImplementationSvgElement","RoadProfileImplementationDraw","roadProfile","roadConfig","lengthProfileAPICallback","minmaxlength","getLengthMinMaxMeters","minmaxheight","getVerticalMinMaxMeters","lengthmeter","heightmeter","heightfudge","minmaxheightexpanded","lengthprofilejson","crossfalljson","horizcurvjson","wideningjson","ymarginpx","xmarginpx","meterperpxH","meterperpxW","xtextheight","ytabletoppx","ybottompx","gTable","gTableClip","clipTable","clipbufferx","rowheaderpad","tabheight","rowheightfraction","rowheightcrossfall","rowheights","rowtitles","rowy","ytextrowpx","cfallpartheigth","kjpad","yhkjpx","yvkjpx","mingridpx","gridmeterW","getGridMeter","gridpxW","crossfallrowybottom","crossfallrowytop","dasharraycrossfall","drawCenterline","horizcurvrowytop","horizcurvrowybottom","wideningrowytop","wideningrowybottom","gGraph","gGraphTerrain","gGraphAnnot","gGraphClip","clipGraph","gYValues","gYValuesClip","clipYValues","HOH","gridmeterH","yEnd","xEnd","minheightmeter","ystartmeter","ymeter","ygridbottompx","vpoints","lengthProfileVerticalPoints","xmeterfirst","ytoppx","ytextpx","yprofilhpx","hoydegridmeter","vp","getGraphPxCoordX","yprofhpx","textxpx","textypx","pelements","lengthProfileElements","prevWasArc","c0","getGraphPxCoords","profileFrom","heightStart","sweep","rx","ry","xrotation","largearc","getArcSweep","profileTo","heightEnd","vvplinelengthfactor","vvp0","getPointAlongLine","profileVVP","heightVVP","vvp0px","vvp1","vvp1px","vvppx","coordspx","drawCircle","offsetxpx","offsetypx","lineheightpx","deltay","deltax","perc","perctxt","degrees","atan","anglepx","translineheightpx","txtyoffsetpx","xtxtpx","ytxtpx","drawTransitionText","pnext","drawPath","drawVerticalPoints","drawHorizcurv","drawWidening","drawCrossfall","yrowpx","parentelem","coordpx","parentelement","eventinf","firstlayername","prevlayer","prevpoint","firstpoint","bridgepoints","rowytop","rowybottom","dashsum","rowypx0","rowypx1","wideningAPICallback","rowheight","ycenter","maxleft","getMaxVal","wideningLeft","maxright","wideningRight","maxval","drawWideningHelper","profilesLeft","profilesRight","MIN_VALUE","wideningvals","profilevals","isleft","signmod","gText","profileval","wideningval","getWideningYPx","nextwideningval","profilevalnext","wideningvalfixed","xpxcenter","ypxtxt","nextxpx","nextypx","wideningvalue","maxwidening","rowheightpx","wideningvaluefactor","yval","horizcurvAPICallback","ypos","yneg","chlotoideParameter","previtem","ypxextra","pline","ytext","txt","itemnext","xpxtext","crossfallAPICallback","maxfallleft","maxfallright","fallLeft","valleft","valright","fallRight","maxfallabs","crossfallhelper","profiles","falls","polylinecoords","fall","fallperc","getCrossfallYPx","arrowlengthpx","coordsarrow","roomabovearrow","fallvalue","fallvaluefactor","radiusthistxt","p0x","p0y","p1x","p1y","lengthfactor","newx","newy","Coord","pi","xmeter","lasti","eles","part","tspan","xin","yin","currentTransform","startScale","getTransformScaleValue","currentTranslate","getTransformTranslate","startTranslateX","startTranslateY","translatevalx","translatevaly","transformval","transformTable","transformYValues","deltaval","keydownhandler","currentScaleval","newscaleval","currentTranslateX","currentTranslateY","transformAnnotations","elepath","colorsmaxi","offsetval","inc","funanim","requestAnimationFrame","transformAnnotationsHelper","xattrname","yattrname","xscale","currval","transval","currrot","getTransformRotateValue","textsy","yscale","translatex","eletab","transformstring","sval","ret","needle"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}