{"version":3,"sources":["ApiClient.js","Enum.js","FormHelper.js","Hubs.js","ModalConductor.js","ModalHelper.js","Promise.js","Route.js","__extends.js","app.js","common/coordinateManager.js","common/export.js","common/filesUploader.js","common/formsHelper.js","common/notification.js","common/popups.js","common/showCard.js","common/timezoneHelper.js","core/iocContainer.js","exceptions/ArgumentException.js","exceptions/DependencyException.js","exceptions/Exception.js","extensions/ArrayExtensions.js","extensions/StringExtensions.js","helpers/ConnectionHubHelper.js","helpers/SvgHelper.js","helpers/UrlHelper.js","map/CardUrls.js","map/LeafletMap.js","map/MapHelper.js","map/Overlay.js","map/freeMarkerMap.js","map/legendMap.js","map/markerMap.js","map/polyMarkerMap.js","map/ruler.js","map/weatherForecast.js","modals/_BaseModal.js","models/EmergencyMapModel.js","models/VehicleMapModel.js","models/VideoCameraMapModel.js","models/WeatherStationMapModel.js","pages/DotObject.js","pages/DotObjectType.js","pages/Material.js","pages/Notifications.js","pages/RoadInit.js","pages/VehicleHistory.js","pages/contractInit.js","pages/contractorInit.js","pages/emergencyInit.js","pages/generalReport.js","pages/kc2ReportInit.js","pages/linearReport.js","pages/localityInit.js","pages/longObjectInit.js","pages/map.js","pages/roadSegmentMap.js","pages/sSegmentsInit.js","pages/userInit.js","pages/vehicleMap.js","pages/vehicleOnObjectsInit.js","pages/vehicleOnTypesInit.js","pages/vehiclesInit.js","pages/videoCameraInit.js","pages/wStationInit.js","pages/workTypeInit.js","pages/worksInit.js","ui/chosenSelectInit.js","ui/datetimepickerInit.js","ui/select2helper.js","enums/EmergencyStatuses.js","enums/ObjectTypes.js","enums/ReportStatuses.js","config/IoCConfig.js","modals/Contractors/ContractorEditModal.js","modals/Contractors/ContractorViewModal.js","modals/Contracts/ContractEdtiModal.js","modals/Contracts/ContractViewModal.js","modals/DotObjects/DotObjectEditModal.js","modals/DotObjects/DotObjectFreeMapModal.js","modals/DotObjects/DotObjectMapModal.js","modals/DotObjects/DotObjectViewModal.js","modals/Emergencies/EmergencyEditModal.js","modals/Emergencies/EmergencyMapModal.js","modals/Emergencies/EmergencyScenariosModal.js","modals/Emergencies/EmergencyViewModal.js","modals/Localities/LocalityEditModаl.js","modals/Localities/LocalityHistoryModal.js","modals/Localities/LocalityMapModal.js","modals/Localities/LocalityViewModal.js","modals/LongObjects/LongObjectEditModal.js","modals/LongObjects/LongObjectMapModal.js","modals/LongObjects/LongObjectViewModal.js","modals/Materials/MaterialEditModal.js","modals/Materials/MaterialViewModal.js","modals/Roads/RoadEditModal.js","modals/Roads/RoadMapModal.js","modals/Roads/RoadViewModal.js","modals/Roads/TrackSelectModal.js","modals/SSegments/SSegmentEdtiModal.js","modals/SSegments/SSegmentMapModal.js","modals/SSegments/SSegmentViewModal.js","modals/KC2/KC2WorkModal.js","modals/Table/TableVisiblityOptionsModal.js","modals/Shared/MessageModal.js","modals/VehicleOnObjects/VehicleOnObjectTrackModal.js","modals/Vehicles/VehicleEditModal.js","modals/Vehicles/VehicleHistoryEditModal.js","modals/Vehicles/VehicleTrackModal.js","modals/Vehicles/VehicleViewModal.js","modals/WStations/WStationEditModal.js","modals/WStations/WStationHistoryModal.js","modals/WStations/WStationMapModal.js","modals/WStations/WStationViewModal.js","modals/VideoCameras/VideoCameraEditModal.js","modals/VideoCameras/VideoCameraMapModal.js","modals/VideoCameras/VideoCameraViewModal.js","modals/WorkTypes/WorkTypeEditModal.js","modals/WorkTypes/WorkTypeViewModal.js","modals/Works/WorkAutoStatusModal.js","modals/Works/WorkEditModal.js","modals/Works/WorkErrorAcceptanceModal.js","modals/Works/WorkMapModal.js","modals/Works/WorkViewModal.js","modals/DotObjectTypes/DotObjectTypeEditModal.js","modals/DotObjectTypes/DotObjectTypeViewModal.js","modals/Users/UserEditModal.js","modals/Users/UserViewModal.js","pages/tablesFilters/tableFilters.js"],"names":["ApiClient","prototype","get","url","data","send","post","put","delete","method","Promise","resolve","reject","$","ajax","Url","action","type","dataType","done","response","fail","xhr","textStatus","errorThrown","Exception","responseJSON","load","Enum","enumerable","key","getName","value","FormHelper","bind","$container","hasOwnProperty","find","val","init","$form","validator","unobtrusive","parse","attr","success","error","ex","errors","validate","showErrors","submit","_send","formData","serialize","apiClient","then","id","catch","off","on","valid","$chosen","$select2","length","teledataChanged","marker","lat","lng","speed","setLatLng","L","latLng","_icon","titleFormat","title","format","calculateTrack","workIds","reportIds","$control","removeAttr","text","addClass","removeClass","report","forEach","coverage","CalcTime","coeff","Coverage","toFixed","ColorName","Vehicle","select2","each","idx","obj","option","Select2Helper","findOption","classes","html","table","getTable","resetCheckedRows","updateCalculateButton","idxTr","tr","Number","children","WorkId","closest","last","idxTh","th","indexOf","VehicleOnTypeCompelete","reportId","reInitFunc","result","hide","reloadReport","tableId","checkEmpty","byVehicle","toLowerCase","status","Empty","console","VehicleOnObjectCompelete","ReportNotificationStart","hubUrl","userId","reportHub","connection","connectionStateChanged","state","stateConversion","newState","server","subscribe","client","reportComplete","VehicleOnObj","ObjId","VehicleOnType","CoverageReport","toString","split","hub","stateChanged","start","disconnected","setTimeout","ModalConductor","stack","current","activate","modalClass","diactivate","apply","Array","slice","call","arguments","currentIndex","i","pop","show","push","ModalHelper","initOnce","isInitialized","$modalTmpl","modalTmpl","$modalError","modalErrorTmpl","create","tmplName","htmlContent","$modal","appendTo","busy","isBusy","undefined","toggleClass","content","modal","backdrop","remove","showError","Route","test","exec","routeValues","testFunc","getTestFunction","execFunc","urlPattern","keys","regexpStr","replace","match","group","pair","regexp","RegExp","__extends","d","b","p","__","constructor","Object","App","app","routes","mapRoute","path","navigate","history","pushState","window","onpopstate","location","href","IoCConfig","coordinates","selectedRoadCoordinates","_updateStartStop","$startElement","$stopElement","startPosition","stopPosition","startKm","parseFloat","stopKm","_updateLocation","$element","updateCoordinates","minRoadKm","roadStartKm","getRoadStartKm","isPoint","lastSection","maxRoadKm","MapHelper","findPosition","getZoom","map","coefficient","distance","ignoreCoordinate","searchRes","findPositionByDistance","point","sessionStorage","Lat","Lng","returnedCoord","updateFreeLocation","AppConfig","defaultMapBounds","reloadRoadCoordinates","roadId","contentType","convertToLatLng","statusCode","parseInt","roads","road","filter","r","Id","StartKm","exportTable","ids","tableUrl","$exportButton","DataTable","params","request","FilesUploader","_getFileType","file","_sendFile","fileServiceBaseUrl","fileType","FormData","append","relativeUrl","processData","_clear","field","_init","isRequeredCheckFunction","isTypeAllowedCheckFunction","inputFileControl","files","$error","$fileId","$fileUid","$fileName","$fileType","$fileLink","hasClass","empty","isValid","$hiddenValidations","name","fileUid","encodeURIComponent","initUploadingOnSubmit","disableSubmitOnEditForm","removeDisabledSubmit","createNotificate","objectId","control","toastr","options","closeButton","debug","progressBar","positionClass","onclick","showDuration","hideDuration","showEasing","hideEasing","showMethod","hideMethod","clear","msg","pathname","$toast","reload","Popups","showPopup","container","modalWindow","containerHeight","height","spinnerHtml","log","showPopupForModelId","modalControl","modalbodyControl","showPopupWithAction","modalContentControl","partialName","showPopupPost","caption","$popup","tmpl","message","showCard","$card","css","hideCard","TimezoneHelper","updateCookie","date","Date","offset","getTimezoneOffset","cookie","IoCContainer","register","getInstance","DependencyException","ArgumentException","Error","contains","removeValue","index","splice","String","args","isNaN","number","ConnectionHubHelper","_connectionStateChanged","onConnectedFunc","oldState","_start","SvgHelper","tag","attrs","el","document","createElementNS","k","setAttributeNS","setAttribute","textNode","createTextNode","appendChild","UrlHelper","baseUrl","relativePath","api","icon","iconName","getQueryStringParams","m","a","decodeURIComponent","isArray","objectType","join","CardUrls","ServiceZone","Road","SSegment","LongObject","DotObject","Locality","Emergency","WStation","WStationTooltip","Work","VideoCamera","LeafletMap","popupPane","getPane","overlayPane","addLayer","SvgScaleOverlay","pane","latlngs","points","x","latLngToLayerPoint","bounds","size","getSize","image","Image","onload","src","svg","min","y","width","setZoom","zoom","addBalloon","position","loc","pos","popup","DomUtil","setPosition","DomEvent","disableClickPropagation","draggable","Draggable","enable","e","w","h","t","top","l","left","addBalloon2","line","dy","getBBox","prepend","style","getPosition","add","object","addTo","exportToBase64","getTranslate3d","translate3d","xyz","z","self","canvas","createElement","ctx","getContext","drawImage","translate","svgLayers","svgText","XMLSerializer","serializeToString","drawSvg","baseVal","center","getCenter","toDataURL","getLongObjectCoordinatesCsv","zoomCoefficient","pointInEdge","lineStart","lineEnd","distToStart","distanceTo","distToEnd","distTotal","isInEdge","inEdge","LineUtil","pointToSegmentDistance","total","c","LatLng","parseStringToLatLng","coordinatesSvg","latlng","parseStringToSplitLatLng","sections","segmStr","linePoints","section","results","j","checkResult","lowest","MAX_VALUE","outPosition","getCoordinatesByStartEnd","distanceToStart","distanceToEnd","end","edgeDistance","currentDistance","found","edgePositionByDistance","startPoint","endPoint","endKm","getLength","Overlay","leafletMap","leafletLayer","layer","eventHandlers","addLayers","layers","clearLayers","setUrl","fit","fitBounds","getBounds","isShown","handleEvent","removeLayer","toggle","eventName","handler","overlay","initFreeMarkerMap","initLat","defaultMapCenter","initLng","Icon","Default","imagePath","grayscale","tileLayer","MapSettings","urlFormat","attribution","roadPoints","mymap","defaultMapZoom","maxBounds","latLngBounds","minZoom","defaultMapMinZoom","zoomReverse","setPoint","Legend","legendType","minValRain","maxValRain","legend","legendScale","delta","colorCell","widhtControl","imageUri","close","intWidhtControl","widthConvas","realWidht","indentVal","getElementById","context","writeCaptionRain","initMarkerMap","backControl","roadStart","latitude","longitude","edgeIndex","roadCurrentCoordinates","roadsLine","Polyline","color","weight","opacity","smoothFactor","initPoint","findResult","deviation","initPolylineMap","_latitude","_longitude","init_lat","init_lng","startMarker","endMarker","polyline","startEdgeIndex","endEdgeIndex","startEdgeSection","endEdgeSection","first","addPointIfCan","stopPoint","update","normalizeStartEnd","tempKm","tempPoint","tempMarker","tempIndex","tempSection","bindPopup","foundPosition","Ruler","ruler","getDistanceText","Math","floor","distanceTxt","updateRulerPopups","getLatLngs","fullLength","tooltip","__vertex","getTooltip","setTooltipContent","_container","unbindTooltip","bindTooltip","permanent","direction","className","NewLineControl","Control","extend","onAdd","link","innerHTML","stop","editTools","startPolyline","totalKmPopup","addControl","vertex","continue","isActive","WeatherForecast","tempLayer","rainLayer","windLayer","weatherOptions","weatherInfo","setDates","dates","select","Stamp","Local","updateWeatherInfo","weatherInfoUrl","updateUrls","stamp","tempUrl","C","rainUrl","windUrl","showLegend","widht","clearLayer","showLayer","TempDates","RainDates","WindDates","temp","rain","wind","change","BaseModal","canClose","loadContent","cancel","keyCode","stopPropagation","evt","target","reloadContent","modalResult","closed","onClosed","trigger","eventData","tryClose","EmergencyMapModel","emergency","Name","Type","Location","coordinate","Latitude","Longitude","VehicleMapModel","vehicle","typeId","TypeId","registrationNumber","RegistrationNumber","Speed","VideoCameraMapModel","videoCamera","WeatherStationMapModel","weatherStation","deleteObject","_refreshTable","_show","DotObjectViewModal","dotObjectId","_showOnMap","_delete","confirm","_add","DotObjectEditModal","ok","resetChecked","idsForDeselect","refreshTable","ObjectTypes","del","showOnMap","DotObjectType","_showError","DotObjectTypeViewModal","DotObjectTypeEditModal","errorMessage","MessageModal","Material","MaterialViewModal","MaterialEditModal","deselectOnlyId","Notifications","showUrl","readUrl","ready","rows","row","ReadedOn","_deleteRoads","alert","RoadViewModal","RoadEditModal","deselectOnlyIds","VehicleHistory","$parent","vehicleId","readonly","checkedRows","historyTable","$table","columnsDefs","columns","JSON","rowId","language","_","processing","pageLength","lengthMenu","serverSide","searching","bFilter","dom","columnDefs","orderable","targets","order","selector","IsSortable","visible","IsVisible","CssClass","settings","checkAllItem","event","column","IsFilterable","ColumnsFilters","ColumnFilter","InitJsMethod","editHistory","deleteHistory","merge","parent","checkVal","selectedRow","info","page","deselect","rowsSelectedCount","rowsAllCount","historyId","VehicleHistoryEditModal","trackerNumber","trackerType","Init","Contract","deleteObjects","ContractViewModal","contractId","ContractEdtiModal","Contractor","ContractorViewModal","contractorId","_del","ContractorEditModal","isAdmin","deleteEmergensies","EmergencyViewModal","emergencyId","EmergencyEditModal","_emergenciyScenarios","EmergencyScenariosModal","scenario","GeneralReport","_map","view","loadingPlaceholder","selected","_config","_image","getWorkCategoryColors","workCategoryColors","$datetimepickerFrom","$datetimepickerTo","datetimepickerFrom","datetimepicker","locale","allowInputToggle","datetimepickerTo","useCurrent","minDate","maxDate","initMap","$cmbRoads","chosen","$cmbWorks","$txtFrom","$txtTo","$btnSubmit","submitClicked","$btnGenerate","generateClicked","onInitFinish","getServiceZones","createServiceZoneLayer","serviceZone","Coordinates","polygonPoints","polygon","Polygon","Color","fillOpacity","clickable","serviceZoneLegendUpdate","$g","pointRect","pointSpan","serviceZoneColor","serviceZoneContractor","legendItemRect","legendItemText","g","drawServiceZone","getData","count","newLegendAsync","Data","bringToBack","newLegendData","PageCount","response2","lgPosition","outerHTML","initLegendsPosition","plPoint","legendZone","plzPoint","pl","plz","maxZoom","renderer","padding","imgUrl","getRoads","getWorks","works","roadIds","from","to","getReport","reportData","drawReport","panTo","base64Image","docDefinition","pageSize","pageOrientation","pageMargins","pdfMake","createPdf","download","drawRoad","work","RoadId","drawWork","roadCoordinates","StopKm","WorkCategoryId","lineCap","LongObjects","longObject","background","IsContinued","getJSON","scale","Kc2Report","reportUrl","autoOpen","preventDefault","data_type","table_div","table_html","random","click","generate","idList","dataTable","buttons","iDisplayLength","generateReport","LinerReport","ChosenSelect","datetimepickerRangeInit","$inputFrom","$inputTo","withSeconds","svg_to_pdf","querySelector","pdf","download_pdf","output","onBeginLoading","onCompleteLoading","LocalityViewModal","localityId","LongObjectViewModal","longObjectId","LongObjectEditModal","Map","config","mapOverlays","getGroup","searchOverlay","cardContainerHeight","getDependedLayers","currentLayer","dependedLayers","parentId","eachLayer","highlightLayer","ogj","_path","hoverLayer","hover","hoverClass","classValue","trim","loadWStationTooltip","loadingTooltip","loadedTooltip","mapInit","noWrap","streets","zoomControl","editable","zoomInTitle","zoomOutTitle","invalidateSize","autoPan","closePopup","_layers","_popup","ind","setContent","openOn","pageInit","addOverlay","newOverlay","featureGroup","canUpdate","alreadyActive","initSearch","vehiclesLayer","_onChange","$checkbox","promises","layersCount","_disableCheck","_vehicleTimeChanged","_enableCheck","updatedLayers","promise","hiddenOverlay","intervalID","setInterval","clearInterval","loadServiceZones","RoadTypes","loadRoads","loadLocalities","SSegmentTypes","Value","loadSSegments","LongObjectTypes","loadLongObjects","DotObjectTypes","loadDotObjects","VehicleTypes","loadVehicles","EmergencyTypes","loadEmergencies","loadVideoCameras","loadWStations","WorkTypes","loadWorks","addWeatherOverlay","zindex","zIndex","showObjects","toggleLayer","active","hideAllOverlays","removeDuplicatesFromSearch","getLayers","duplicate","f","$mapSearch","$btn","$autocomplete","query","entities","serviceZoneLayers","concat","Roads","createRoadLayer","SectionService","createSSegmentLayer","createLongObjectLayer","createDotObjectLayer","createVehicleLayer","createEmergencyLayer","createWStationLayer","Camera","createVideoCameraLayer","createLocalityLayer","typeahead","source","process","afterSelect","minLength","out","round","ssegment","RoadCoordinates","RoadStartKm","layerGroup","LongObjectRoads","lrRoad","dotObject","popupText","Coordinate","FreeLocation","markerIcon","popupAnchor","iconSize","iconAnchor","iconUrl","riseOnHover","alt","locality","localityLayerGroup","LocalityRoads","lr","iconClass","VehicleTypeEnum","Brand","isFinite","trackerId","TrackerId","Status","middlePosition","wstation","createWorkLayer","getSSegments","getLongObjects","getDotObjects","getLocalities","getVehicles","getEmergencies","getWStations","getVideoCameras","findOverlay","addToMap","overlayName","orderOverlays","serviceZoneIds","serviceZones","ssegmentIds","ssegments","Standart","longObjectIds","longObjects","dotObjectIds","dotObjects","localityIds","localities","vehicleIds","isCommunicationTimed","hasMinSpeed","vehicles","emergencyIds","emergencies","wstationIds","wstations","videoCameraIds","videoCameras","batchLoad","roadType","longObjectType","dotObjectType","vehicleType","prop","emergencyType","workType","bringToFront","_sortingServiceZones","initRoadSegmentOnMapShowing","addRoadSegmentLayer","_afterDelete","notDeletedIds","single","deletedIds","segmentIds","hasError","desc","SSegmentViewModal","ssegmentId","deleteSuccess","SSegmentEdtiModal","rowsForDeselect","User","UserViewModal","UserEditModal","tracks","lastTracks","zoomedInterval","initTracksOnMapShowing","tracksUrl","keepOld","isTrack","isDirection","drawTrack","trackPoints","track","lastPoint","drawingPoint","_drawDirection","reloadTrack","trackUrl","Datas","keep","timeInterval","Interval","initVehicleTrackMap","getPointTrack","drawDirections","_compareLatLngs","right","getPointDatas","urlObj","pointIndex","infoDefault","_updatePopup","beforeWidth","afterWidth","leftCoefficient","trueLeft","$popupContent","_latlngs","grep","n","_latlng","isChecked","trackData","_hasInterval","interval","divIcon","Point","markerDirection","VehicleOnObjectsReport","localTableUrl","editMode","setDate","getDate","momentTo","dateFrom","toDate","momentFrom","dateTo","From","To","SelectedContractorIds","SelectedRoadIds","SelectedSectionServiceIds","SelectedVehicleIds","TimeOnObject","span","ReportStatuses","InProcess","globalReportsId","localStorage","setItem","stringify","trackUrls","placeholder","values","interrupt","getItem","globalReportId","complete","clearFilter","tableOption","initComplete","_reInit","tableInit","checkAll","currentTable","trIndex","$row","startTime","stopTime","generateUrl","canFillWork","removedUrlData","urlData","startDate","stopDate","initPage","getSelectedVehicles","Change","ReInit","Interrupt","ClearFilter","GetSelectedVehicles","VehicleOnTypesReport","buttonId","reportStatus","treesInit","jstree","SelectedVehicleTypeIds","SelectedMinOnObjectValue","model","ReportStatus","_reInitFunc","ReInitFunc","Vehicles","_deleteObject","VehicleViewModal","VehicleEditModal","VehicleTrackModal","VideoCameraViewModal","wCameraId","VideoCameraEditModal","_showObjects","WStationViewModal","wstationId","WStationEditModal","WorkType","WorkTypeViewModal","workTypeId","WorkTypeEditModal","Works","WorkErrorAcceptanceModal","WorkViewModal","workId","WorkEditModal","afterSave","canAutoUpdate","WorkAutoStatusModal","boundaryChanged","mr","search_contains","no_results_text","allow_single_deselect","disable_search_threshold","datetimepickerInit","$input","$datetimepicker","defaultFormat","showClear","widgetPositioning","vertical","$inputFromOnChangeFunc","$inputToOnChangeFunc","dateRangeInit","$datepickerFrom","$datepickerTo","datepickerFrom","datepicker","todayHighlight","toggleActive","autoclose","endDate","clearBtn","valueOf","datepickerTo","datepickerInit","$datepicker","$inputOnChangeFunc","choiseElemet","EmergencyStatuses","Found","Informed","Liquidation","Liquidated","Video","None","Ready","Interrupted","RoadMapModal","TrackSelectModal","EmergencyMapModal","VideoCameraMapModal","WStationHistoryModal","WStationMapModal","LocalityEditModal","LocalityMapModal","LocalityHistoryModal","LongObjectMapModal","SSegmentMapModal","DotObjectMapModal","DotObjectFreeMapModal","WorkMapModal","VehicleOnObjectTrackModal","KC2WorkModal","TableVisiblityOptionsModal","base","isNew","$dependentSelect2","v","inArray","deleteFunc","VideoServerSettings","paging","SaNumber","SaDate","siblings","toLocaleDateString","char","node","draw","tr2","every","rowIdx","tableLoop","rowLoop","saNumber","saDate","saVal","doTypes","onMap","dotObjectName","FeatureGroup","showOnMapFunc","emergencyName","mapObjects","typeid","$newScenario","newScenario","EmergencyTypeId","Text","$scenarioContainer","scenarioOfActions","emergencyTypeId","_sendScenario","noteId","_deleteNote","noteText","_addNote","scenarioId","emergensyId","addRoadTableId","rowReorder","updateRoadCoordinateWithPosition","localityName","LocalityId","CoordinatesCsv","initTable","Code","Row","controlRow","longObjectName","LongObjectTypeId","isEmpty","$roadName","$coordinatesCsv","coordinatesCsv","TARGET","LAYER1","LAYER2","roadSections","MAX_POINTS","MAX_ZOOM","roadName","_initMap","_getCsv","_validateRoad","optimization","HelpControl","clicked","is","updateTooltips","DraggableControl","classList","setDraggable","getIndex","maxIndex","secondLine","editor","deleteShapeAt","firstLine","layerIndex","enableEdit","deleteShape","originalEvent","ctrlKey","metaKey","editEnabled","drawing","intersectedLines","feature","shapeAt","Path","refreshEditor","latLngs","s","placeMarkersInBounds","redrawPoints","dragging","disable","reset","currentZoom","mapBounds","visibleSections","visiblePoints","disableAll","intersects","disableEdit","closeTooltip","sticky","_getCoordinates","trace","$vcvm","$ftvm","selectedRows","SSegmentId","startRoadPosition","sSegmentName","header","description","trackName","showRuler","tab","$rep","contractorsRaw","contractors","currentTrackerId","tags","dropdownParent","matcher","term","checked","vehicleName","dataParse","toISOString","substring","wStationName","wStationId","wstationName","vcameraId","vcameraName","vCameraName","DateCreate","Unit","QValue1","QValue2","DateCreateQuotation","$inputChell","tableHtml","quotation","DateFrom","Value1","Value2","$delBtn","qId","qVal","qVal2","qDate","statusName","_getRoadStartKm","isCopy","onRoadChanged","currentTarget","$selected","workName","qfirst","qsecond","q1","q2","td1","td2","WtwId","VolumeOfWorks","WorkTypeId","WorkTypeCode","WorkTypeName","WorkTypeUnit","WorkTypeQuotation","WorkTypeQuotation2","workTypes","needWorkName","Quotation1","Quotation2","materials","Cost","VolumeOfMaterials","MaterialId","selectOld","selectNew","selectOldName","selectNewName","selectOldMaterialName","selectNewMaterialName","selectOldMaterial","selectNewMaterial","MaterialCode","MaterialName","MaterialUnit","MaterialQuotation","selectOldWork","selectNewWork","selectOldWorkName","selectNewWorkName","fillWork","updateSectionServiceData","findSectionService","ssOnRoad","intersected","dateFormat","moment","startVehicle","stopVehicle","setSeconds","getSeconds","$contractor","canFillField","$road","$startTime","$stopTime","$selectedVehicles","$startKm","$stopKm","_toTimeParsing","hours","getHours","minutes","getMinutes","parseHours","parseMinutes","$changed","$toChange","changedId","acceptanceHead","getUrl","refreshFunc","li","trackReportIds","mask","UserId","timeout","delay","timer","callback","ms","clearTimeout","intMatchFilterAttributeInit","filterTd","search","stringContainsFilterAttributeInit","dateRangeFilterAttributeInit","onChange","initChange","dateFilterAttributeInit","decimalRangeFilterAttributeInit","doubleRangeFilterAttributeInit","roadSectionServicesCategoriesFilterAttributeInit","dropDownFilterAttributeInit"],"mappings":"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","file":"content/js/site.js","sourcesContent":["var ApiClient = (function() {\r\n function ApiClient() {\r\n };\r\n\r\n ApiClient.prototype.get = function (url, data) {\r\n return this.send('GET', url, data);\r\n };\r\n\r\n ApiClient.prototype.post = function (url, data) {\r\n return this.send('POST', url, data);\r\n };\r\n\r\n ApiClient.prototype.put = function (url, data) {\r\n return this.send('PUT', url, data);\r\n };\r\n\r\n ApiClient.prototype.delete = function (url, data) {\r\n return this.send('DELETE', url, data);\r\n };\r\n\r\n ApiClient.prototype.send = function(method, url, data) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n url: Url.action(url),\r\n type: method,\r\n dataType: 'json',\r\n data: data\r\n })\r\n .done(response => resolve(response))\r\n .fail((xhr, textStatus, errorThrown) => reject(new Exception(errorThrown, xhr.responseJSON)));\r\n });\r\n };\r\n\r\n ApiClient.prototype.load = function (url) {\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n url: Url.action(url),\r\n type: 'GET'\r\n })\r\n .done(response => resolve(response))\r\n .fail((xhr, textStatus, errorThrown) => reject(errorThrown));\r\n });\r\n\r\n\r\n \r\n };\r\n\r\n return ApiClient;\r\n}());\r\n","var Enum = (function() {\r\n\r\n function Enum(enumerable) {\r\n for (var key in enumerable) {\r\n this[key] = enumerable[key];\r\n this[enumerable[key]] = key;\r\n }\r\n };\r\n\r\n Enum.prototype.getName = function (value) {\r\n return this[value];\r\n };\r\n\r\n return Enum;\r\n}());\r\n\r\n","var FormHelper = {\r\n bind: function($container, data) {\r\n for (let key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n $container.find('[name=' + key + ']').val(data[key]);\r\n }\r\n }\r\n },\r\n\r\n\r\n init: function ($form, method, action) {\r\n\r\n $.validator.unobtrusive.parse($form);\r\n\r\n $form.find('input[type=text]').attr('autocomplete', 'off');\r\n\r\n $form.send = function() {\r\n return new Promise((resolve, reject) => {\r\n $form.success = resolve;\r\n $form.error = (ex) => {\r\n if (ex && ex.data && ex.data.errors) {\r\n $form.validate().showErrors(ex.data.errors);\r\n }\r\n reject();\r\n }\r\n $form.submit();\r\n });\r\n };\r\n\r\n $form._send = () => {\r\n\r\n const formData = $form.serialize();\r\n var apiClient = resolve(ApiClient);\r\n apiClient.send(method, action, formData)\r\n .then(id => {\r\n $form.success(id);\r\n })\r\n .catch(ex => {\r\n $form.error(ex);\r\n });\r\n\r\n //$form.ajaxSubmit({\r\n // method: method,\r\n // url: action,\r\n // success: $form.success,\r\n // error: $form.error\r\n //});\r\n };\r\n\r\n $form.submit(() => {\r\n\r\n $form.off('change', '.active select.select2');\r\n $form.on('change', '.active select.select2', function() {\r\n $(this).valid();\r\n });\r\n\r\n var $chosen = $form.find('.active .chosen-select-deselect');\r\n var $select2 = $form.find('.active select.select2');\r\n //Валидируем форму (+принудительный вызов валидации для скрытых элементов)\r\n if ($form.valid() & ($chosen.length === 0 || $chosen.valid()) & ($select2.length === 0 || $select2.valid())) {\r\n $form._send();\r\n } else {\r\n $form.error();\r\n }\r\n return false;\r\n });\r\n\r\n }\r\n};\r\n","// Функция смены позиции ТС для карты\r\n// Выполняется после получения сообщения с новыми координатами для ТС\r\nfunction teledataChanged(marker, lat, lng, speed) {\r\n\r\n if (marker) {\r\n marker.setLatLng(L.latLng(lat, lng));\r\n }\r\n\r\n if (marker && marker._icon && marker.titleFormat) {\r\n marker._icon.title = marker.titleFormat + ', {0} км/ч'.format(speed);\r\n }\r\n\r\n return marker;\r\n};\r\n\r\n// Функция реагирования на пуш Коэф-та ТС\r\n// Выполняется после получения сообщения о завершении рассчета\r\nfunction calculateTrack(workIds, reportIds) {\r\n if ($('#calc-track').length > 0) {\r\n const $control = $('#calc-track');\r\n $control.removeAttr('disabled');\r\n $control.val('Готово!').text('Рассчитать').addClass('btn-primary').removeClass('btn-danger');\r\n $('#date-conteiner').removeClass('busy');\r\n\r\n $.post('api/works/track/reports', { reportIds: reportIds })\r\n .done(report=> {\r\n report.forEach(function (coverage) {\r\n $('#date-conteiner > .text-left').text(coverage.CalcTime);\r\n\r\n if (coverage) {\r\n var coeff = coverage.Coverage.toFixed(0) >= 0 ? ' - ' + coverage.Coverage.toFixed(0) + '%' : '';\r\n $('.track')\r\n .attr('class', 'track track-' + coverage.ColorName)\r\n .text(coverage.Vehicle + coeff);\r\n\r\n var $select2 = $('.select2').select2();\r\n $.each($('.select2-selection__choice'), function (idx, obj) {\r\n var option = Select2Helper().findOption($(obj));\r\n var classes = option.attr(\"class\");\r\n\r\n $(obj).attr(\"class\", \"select2-selection__choice \" + classes);\r\n });\r\n }\r\n });\r\n return reportIds;\r\n });\r\n } else if ($('#calc-tracks').length > 0) {\r\n const $control = $('#calc-tracks');\r\n $control.val('Готово!').html(' Рассчитать').removeClass('btn-danger').addClass('btn-default');\r\n var table = getTable();\r\n resetCheckedRows(table);\r\n updateCalculateButton(table);\r\n $('#WorkListItemViewModelTable_processing').attr('style', 'display:none;');\r\n\r\n $.post('api/works/track/reports', { reportIds: reportIds })\r\n .done(report=> {\r\n report.forEach(function (coverage) {\r\n $('tr', '#WorkListItemViewModelTable tbody').each(function (idxTr, tr) {\r\n if (Number($($(tr).children()[1]).text()) === coverage.WorkId) {\r\n var coeff = coverage.Coverage.toFixed(0) >= 0 ? coverage.Coverage.toFixed(0) : 0;\r\n $(tr).closest('table').find('thead').find('tr').last().find('th').each(function(idxTh, th) {\r\n // Находим индекс нужной колонки\r\n if ($(th).attr('aria-label').indexOf('Совпадение') > -1) {\r\n $($(tr).children()[idxTh + 1]).text(coverage.CalcTime + ' - ' + coeff + '%');\r\n }\r\n });\r\n }\r\n });\r\n });\r\n return reportIds;\r\n });\r\n }\r\n};\r\n\r\n// Функция реагирования на пуш Отчета ТС по видам\r\nfunction VehicleOnTypeCompelete(reportId, reInitFunc) {\r\n $.ajax({\r\n url: 'vehiclesByTypes/reloadReport/' + reportId,\r\n type: 'POST',\r\n dataType: 'html'\r\n }).done(function (result) {\r\n $('[js=vehicleOnTypeContent]').html(result);\r\n reInitFunc();\r\n $('[js=exportToExcel]').removeAttr('disabled');\r\n $('[js=clearFilter]').removeAttr('disabled');\r\n $('[js=interruptReport]').hide();\r\n }).fail(() => {\r\n $('#applyFilter').removeAttr('disabled');\r\n $('#VehicleOnTypeReportTable_processing').attr('style', 'display: none;');\r\n $('[js=exportToExcel]').removeAttr('disabled');\r\n $('[js=clearFilter]').removeAttr('disabled');\r\n $('[js=interruptReport]').hide();\r\n });\r\n}\r\n\r\nfunction reloadReport(reportId, tableId, reInitFunc, checkEmpty) {\r\n //будет сформирована таблица\r\n $.ajax({\r\n type: 'POST',\r\n url: Url.action('api/vehicleOnObjects/report/' + tableId),\r\n data: { byVehicle: $('#ByVehicle').val().toLowerCase() === 'true', checkEmpty: checkEmpty }\r\n }).done(function (result, status, xhr) {\r\n if (!checkEmpty || !result.Empty) { // Заполняем html представлением таблицы\r\n $('[js=vehicleOnObjContent]').html(result);\r\n reInitFunc();\r\n $('[js=exportToExcel]').removeAttr('disabled');\r\n $('[js=clearFilter]').removeAttr('disabled');\r\n $('[js=reportGroupBy]').removeAttr('disabled');\r\n $('[js=interruptReport]').hide();\r\n }\r\n }).fail(function (xhr, status) {\r\n // Убираем сообщение ожидания, разблокируем кнопку\r\n $('[js=applyFilter]').removeAttr('disabled');\r\n $('[js=clearFilter]').removeAttr('disabled');\r\n $('[js=exportToExcel]').removeAttr('disabled');\r\n $('[js=reportGroupBy]').removeAttr('disabled');\r\n $('[js=interruptReport]').hide();\r\n $('#VehicleOnObjectReportTable_processing,#VehicleOnObjectReportTableEdit_processing').attr('style', 'display: none;');\r\n\r\n console.error(xhr, status);\r\n });\r\n}\r\n\r\n// Функция реагирования на пуш Отчета ТС на Объ.\r\nfunction VehicleOnObjectCompelete(reportId, tableId, reInitFunc) {\r\n reloadReport(reportId, tableId, reInitFunc, false);\r\n}\r\n\r\n// Функция подписки на пуш Отчетов и Коэф-та\r\nfunction ReportNotificationStart(hubUrl, userId, reportIds, reInitFunc) {\r\n var reportHub = $.connection.reportHub;\r\n if (reportHub) {\r\n reportHub.client.reportComplete = reportId => {\r\n //\r\n if (reportIds.VehicleOnObj == reportId) {\r\n VehicleOnObjectCompelete(reportId, reportIds.ObjId, reInitFunc);\r\n }\r\n else if (reportIds.VehicleOnType == reportId) {\r\n VehicleOnTypeCompelete(reportId, reInitFunc);\r\n }\r\n else if (reportIds.CoverageReport && reportIds.CoverageReport.length > 0) {\r\n var workIds = reportIds.ObjId.toString().split(',');\r\n calculateTrack(workIds, reportIds.CoverageReport);\r\n }\r\n };\r\n\r\n function connectionStateChanged(state) {\r\n var stateConversion = { 0: 'connecting', 1: 'connected', 2: 'reconnecting', 4: 'disconnected' };\r\n\r\n if (state.newState === 1) {\r\n reportHub.server.subscribe(userId);\r\n }\r\n }\r\n\r\n $.connection.hub.url = hubUrl;\r\n $.connection.hub.stateChanged(connectionStateChanged);\r\n $.connection.hub.start();\r\n $.connection.hub.disconnected(function () {\r\n setTimeout(function () {\r\n $.connection.hub.start();\r\n }, 5000);\r\n });\r\n }\r\n}\r\n","var ModalConductor = {\r\n\r\n stack: [],\r\n\r\n current: function () {\r\n return this.stack[this.stack.length - 1];\r\n },\r\n\r\n activate: function(modalClass) {\r\n\r\n if (this.stack.length > 0) {\r\n this.current().diactivate();\r\n }\r\n\r\n var current = resolve(modalClass);\r\n current.activate.apply(current, Array.prototype.slice.call(arguments, 1));\r\n current.on('closed', () => {\r\n var currentIndex = this.stack.indexOf(current);\r\n for (var i = this.stack.length - 1; i >= currentIndex; i--) {\r\n //this.stack[i].close();\r\n this.stack.pop();\r\n }\r\n\r\n if (this.current()) this.current().show();\r\n });\r\n this.stack.push(current);\r\n return current;\r\n }\r\n};\r\n","var ModalHelper = {\r\n\r\n\r\n initOnce: function() {\r\n\r\n if (this.isInitialized)\r\n return;\r\n\r\n //Шаблона модального окна\r\n const $modalTmpl = $('#modal-tmpl');\r\n if ($modalTmpl.length === 0) {\r\n throw new Exception('Не найден шаблон диалога #modal-tmpl');\r\n }\r\n this.modalTmpl = $modalTmpl.html();\r\n\r\n //Шаблон отображения ошибки загрузки модального окна\r\n const $modalError = $('#modal-load-content-error');\r\n if ($modalError.length === 0) {\r\n throw new Exception('Не найден шаблон диалога #modal-load-content-error');\r\n }\r\n this.modalErrorTmpl = $modalError.html();\r\n },\r\n\r\n create: function(tmplName) {\r\n this.initOnce();\r\n\r\n const htmlContent = $(tmplName).html();\r\n const $modal = $(this.modalTmpl).appendTo('body');\r\n $modal.find('.modal-content').html(htmlContent);\r\n \r\n $modal.busy = function(isBusy) {\r\n if (isBusy === undefined)\r\n isBusy = true;\r\n this.toggleClass('busy', isBusy);\r\n return this;\r\n };\r\n \r\n $modal.content = function(content) {\r\n this.find('.modal-content').html(content);\r\n return this;\r\n };\r\n\r\n $modal.show = function() {\r\n //$modal.find('.modal-content').height($(window).height() * 0.65);\r\n $modal.modal({ backdrop: 'static' });\r\n return this;\r\n };\r\n\r\n $modal.hide = function() {\r\n this.modal('hide');\r\n $('.modal-backdrop').remove();\r\n $('body').removeClass('modal-open').removeAttr('style');\r\n };\r\n\r\n return $modal;\r\n },\r\n\r\n showError: function($modal) {\r\n $modal.content(this.modalErrorTmpl);\r\n return $modal;\r\n }\r\n};\r\n","//Promise = function (asyncFunction) {\r\n\r\n// var states = {\r\n// PENDING: 0,\r\n// FULFILLED: 1,\r\n// REJECTED: 2\r\n// };\r\n\r\n// this.state = states.PENDING;\r\n// this.result = null;\r\n// var self = this;\r\n\r\n// this.resolve = function() {\r\n// self.state = states.FULFILLED;\r\n// self.result = [].slice.call(arguments, 0);\r\n\r\n// if (self.onFulfilled) {\r\n// self.onFulfilled.apply(self, self.result);\r\n// }\r\n// }\r\n\r\n// this.reject = function() {\r\n// self.state = states.REJECTED;\r\n// self.result = [].slice.call(arguments, 0);\r\n\r\n// if (self.onRejected) {\r\n// self.onRejected.apply(self, self.result);\r\n// }\r\n// }\r\n\r\n// this.setOnFulfilledHandler = function (onFulfilled) {\r\n// if (this.state === states.FULFILLED && onFulfilled) {\r\n// onFulfilled.apply(this, this.result);\r\n// } else {\r\n// this.onFulfilled = onFulfilled;\r\n// }\r\n// }\r\n\r\n// this.setOnRejectedHandler = function (onRejected) {\r\n// if (this.state === states.REJECTED && onRejected) {\r\n// onRejected.apply(this, this.result);\r\n// } else {\r\n// this.onRejected = onRejected;\r\n// }\r\n// }\r\n\r\n// try {\r\n// asyncFunction(this.resolve, this.reject);\r\n// } catch (ex) {\r\n// this.reject(ex);\r\n// }\r\n\r\n// return this;\r\n//}\r\n\r\n//Promise.prototype.then = function (onFulfilled, onRejected) {\r\n\r\n// this.setOnFulfilledHandler(onFulfilled);\r\n// this.setOnRejectedHandler(onRejected);\r\n// return this;\r\n//};\r\n\r\n//Promise.prototype.catch = function (onRejected) {\r\n// this.setOnRejectedHandler(onRejected);\r\n// return this;\r\n//};\r\n","var Route = (function () {\r\n\r\n function Route(test, exec) {\r\n\r\n this.routeValues = {};\r\n\r\n if (typeof test === 'string') {\r\n this.testFunc = getTestFunction(test);\r\n } else {\r\n this.testFunc = test;\r\n }\r\n\r\n this.execFunc = exec;\r\n };\r\n\r\n Route.prototype.test = function (url) {\r\n return this.testFunc.call(this, url);\r\n };\r\n\r\n Route.prototype.exec = function () {\r\n return this.execFunc.call(this);\r\n };\r\n\r\n function getTestFunction(urlPattern) {\r\n var keys = [];\r\n\r\n var regexpStr = urlPattern\r\n .replace(/{(.+?)}/g, function (match, group) {\r\n var pair = group.split(':'); // key:type\r\n keys.push(pair[0]);\r\n\r\n if (pair[1] === 'Guid') {\r\n return '([0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12})';\r\n }\r\n return '([^/]+)';\r\n })\r\n .replace(/\\//g, '\\\\/');\r\n\r\n var regexp = new RegExp(regexpStr, 'i');\r\n\r\n return function (url) {\r\n var result = regexp.exec(url);\r\n if (result) {\r\n for (var i = 1; i < result.length; ++i) {\r\n this.routeValues[keys[i - 1]] = result[i];\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n }\r\n return Route;\r\n}());\r\n","function __extends(d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n","var App = (function () {\r\n\r\n var app = {};\r\n\r\n // Маршрутизация\r\n app.routes = [];\r\n app.routes.mapRoute = function (path, exec) {\r\n this.push(new Route(path, exec));\r\n return this;\r\n };\r\n\r\n app.navigate = function (url) {\r\n history.pushState({}, null, url);\r\n window.onpopstate();\r\n };\r\n\r\n window.onpopstate = function () {\r\n for (var i = 0; i < app.routes.length; ++i) {\r\n if (app.routes[i].test(window.location.href)) {\r\n app.routes[i].exec();\r\n return;\r\n }\r\n }\r\n };\r\n\r\n $(function () {\r\n\r\n IoCConfig();\r\n });\r\n\r\n return app;\r\n}());\r\n\r\n/**\r\n * @type {UrlHelper}\r\n */\r\nvar Url;\r\n","var coordinates = (function () {\r\n var selectedRoadCoordinates;\r\n\r\n function _updateStartStop($startElement, $stopElement, startPosition, stopPosition) {\r\n if ($startElement.val() && $stopElement.val()) {\r\n var startKm = parseFloat($startElement.val());\r\n var stopKm = parseFloat($stopElement.val());\r\n if (stopKm > stopPosition) {\r\n $stopElement.val(stopPosition.toFixed(3));\r\n }\r\n else if (stopKm < startPosition) {\r\n $stopElement.val(startPosition.toFixed(3));\r\n }\r\n if (startKm > stopPosition) {\r\n $startElement.val(stopPosition.toFixed(3));\r\n }\r\n else if (startKm < startPosition) {\r\n $startElement.val(startPosition.toFixed(3));\r\n }\r\n }\r\n }\r\n\r\n function _updateLocation($element, startPosition, stopPosition) {\r\n if ($element.val()) {\r\n var location = parseFloat($element.val());\r\n if (location > stopPosition) {\r\n $element.val(stopPosition.toFixed(3));\r\n }\r\n else if (location < startPosition) {\r\n $element.val(startPosition.toFixed(3));\r\n }\r\n }\r\n }\r\n\r\n function updateCoordinates(option) {\r\n var minRoadKm = null;\r\n if (option.hasOwnProperty('roadStartKm'))\r\n minRoadKm = option.roadStartKm;\r\n else\r\n minRoadKm = getRoadStartKm();\r\n if (option.isPoint) {\r\n if (selectedRoadCoordinates.length &&\r\n selectedRoadCoordinates[selectedRoadCoordinates.length - 1].length > 1) {\r\n var lastSection = selectedRoadCoordinates[selectedRoadCoordinates.length - 1];\r\n var maxRoadKm = MapHelper.findPosition(lastSection[lastSection.length - 1],\r\n selectedRoadCoordinates, MapHelper.getZoom(option.map).coefficient).distance / 1000 + minRoadKm;\r\n _updateLocation($('#Location'), minRoadKm, maxRoadKm);\r\n if (!option.ignoreCoordinate) {\r\n var searchRes =\r\n MapHelper.findPositionByDistance($('#Location').val() * 1000, selectedRoadCoordinates);\r\n if (searchRes.point != null) {\r\n $('#Lat').val(searchRes.point.lat);\r\n $('#Lng').val(searchRes.point.lng);\r\n sessionStorage.Lat = searchRes.point.lat;\r\n sessionStorage.Lng = searchRes.point.lng;\r\n }\r\n }\r\n }\r\n return 0;\r\n } else {\r\n var returnedCoord = 0;\r\n\r\n if (!selectedRoadCoordinates.length || selectedRoadCoordinates[selectedRoadCoordinates.length - 1].length < 2) {\r\n $('#CoordinatesCsv').val(null);\r\n $('#SelectedLocalityWithRoad_CoordinatesCsv').val(null);\r\n $('#SelectedLongObjectWithRoad_CoordinatesCsv').val(null);\r\n\r\n } else {\r\n \r\n // Находим общую длину дороги\r\n var lastSection = selectedRoadCoordinates[selectedRoadCoordinates.length - 1];\r\n var maxRoadKm = MapHelper.findPosition(lastSection[lastSection.length - 1],\r\n selectedRoadCoordinates,\r\n MapHelper.getZoom(option.map).coefficient).distance /\r\n 1000 + minRoadKm;\r\n\r\n _updateStartStop($('#StartKm'), $('#StopKm'), minRoadKm, maxRoadKm);\r\n _updateStartStop($('#SelectedLocalityWithRoad_StartKm'), $('#SelectedLocalityWithRoad_StopKm'), minRoadKm, maxRoadKm);\r\n _updateStartStop($('#SelectedLongObjectWithRoad_StartKm'), $('#SelectedLongObjectWithRoad_StopKm'), minRoadKm, maxRoadKm);\r\n }\r\n return returnedCoord;\r\n }\r\n }\r\n\r\n function updateFreeLocation() {\r\n var lat = parseFloat($('#Lat').val());\r\n var lng = parseFloat($('#Lng').val());\r\n if (lat || lat === 0) {\r\n if (lat > AppConfig.defaultMapBounds[0][0])\r\n lat = AppConfig.defaultMapBounds[0][0];\r\n if (lat < AppConfig.defaultMapBounds[1][0])\r\n lat = AppConfig.defaultMapBounds[1][0];\r\n $('#Lat').val(lat);\r\n }\r\n if (lng || lng === 0) {\r\n if (lng > AppConfig.defaultMapBounds[1][1])\r\n lng = AppConfig.defaultMapBounds[1][1];\r\n if (lng < AppConfig.defaultMapBounds[0][1])\r\n lng = AppConfig.defaultMapBounds[0][1];\r\n $('#Lng').val(lng);\r\n }\r\n }\r\n\r\n function reloadRoadCoordinates(roadId) {\r\n\r\n if (roadId === undefined) {\r\n roadId = $('#RoadId,#Road_Id').val();\r\n }\r\n\r\n return $.ajax({\r\n url: Url.action('roads/{0}/coordinates', roadId),\r\n contentType: 'application/json; charset=utf-8',\r\n type: 'GET',\r\n dataType: 'json'\r\n })\r\n .success(function(result) {\r\n selectedRoadCoordinates = MapHelper.convertToLatLng(result);\r\n })\r\n .error(function(xhr, status, statusCode) {\r\n selectedRoadCoordinates = [[]];\r\n });\r\n }\r\n\r\n function getRoadStartKm(roadId) {\r\n\r\n if (roadId === undefined) {\r\n roadId = parseInt($('#RoadId,#Road_Id,#SelectedLongObjectWithRoad_RoadId,#SelectedLocalityWithRoad_RoadId').val());\r\n }\r\n if (!roadId || !roads)\r\n return 0;\r\n\r\n var road = roads.filter(function(r) {\r\n return r.Id === roadId;\r\n });\r\n if (road.length) {\r\n return road[0].StartKm;\r\n }\r\n return 0;\r\n }\r\n\r\n return {\r\n updateCoordinates: updateCoordinates,\r\n updateFreeLocation: updateFreeLocation,\r\n reloadRoadCoordinates: reloadRoadCoordinates,\r\n getRoadStartKm: getRoadStartKm\r\n };\r\n}());\r\n","function exportTable(ids, tableUrl) {\r\n var $exportButton = $('[js=exportTable]');\r\n $exportButton.attr('disabled', 'disabled');\r\n $('.dataTables_processing', $('.dataTables_wrapper')).show();\r\n var table = $('.dataTable').DataTable();\r\n var data = table.ajax.params();\r\n $.ajax({\r\n url: Url.action(tableUrl + '/CreateTableExport'),\r\n type: 'POST',\r\n dataType: 'json',\r\n data: data\r\n })\r\n .done(function (request) {\r\n window.location = Url.action(tableUrl + '/File');\r\n $exportButton.removeAttr('disabled');\r\n $('.dataTables_processing', $('.dataTables_wrapper')).hide();\r\n })\r\n .fail(function (xhr, textStatus, errorThrown) {\r\n $exportButton.removeAttr('disabled');\r\n $('.dataTables_processing', $('.dataTables_wrapper')).hide();\r\n });\r\n}","var FilesUploader = (function () {\r\n\r\n function _getFileType(file) {\r\n if (file.type === 'application/pdf')\r\n return 1;\r\n if (file.type.match('video/.*'))\r\n return 2;\r\n if (file.type.match('image/.*'))\r\n return 3;\r\n return 4;\r\n }\r\n\r\n function _sendFile(fileServiceBaseUrl, file, fileType) {\r\n const formData = new FormData();\r\n formData.append('fileData', file);\r\n const relativeUrl = fileType === 2 ? '/video/' : '/file/';\r\n\r\n return $.ajax({\r\n type: 'POST',\r\n url: fileServiceBaseUrl + relativeUrl,\r\n data: formData,\r\n processData: false,\r\n contentType: false\r\n });\r\n }\r\n\r\n function _clear($form, field) {\r\n $form.find('#' + field + '_FileUid').val('');\r\n $form.find('#' + field + '_FileLink').val('');\r\n $form.find('#' + field + '_FileName').val('');\r\n $form.find('#' + field + '_FileType').val('');\r\n $form.find('#' + field + '_Id').val('');\r\n };\r\n \r\n function _init(fileServiceBaseUrl, $form, field, isRequeredCheckFunction, isTypeAllowedCheckFunction) {\r\n\r\n const inputFileControl = $form.find('#' + field + '_FileInput');\r\n\r\n inputFileControl.find('input[type=\"file\"]')\r\n .on('change', () => _clear($form, field));\r\n\r\n inputFileControl.find('a.fileinput-exists')\r\n .on('click', () => _clear($form, field));\r\n\r\n $form.off('submit');\r\n $form.submit(() => {\r\n\r\n const files = $form.find('#' + field + '_File')[0].files;\r\n const $error = $form.find('span[data-valmsg-for=\"' + field + '\"]');\r\n var $fileId = $form.find('#' + field + '_Id');\r\n var $fileUid = $form.find('#' + field + '_FileUid');\r\n var $fileName = $form.find('#' + field + '_FileName');\r\n var $fileType = $form.find('#' + field + '_FileType');\r\n var $fileLink = $form.find('#' + field + '_FileLink');\r\n\r\n\r\n $form.off('change.bs.fileinput clear.bs.fileinput reset.bs.fileinput update.bs.fileinput', '.fileinput');\r\n $form.on('change.bs.fileinput clear.bs.fileinput reset.bs.fileinput update.bs.fileinput', '.fileinput', function () {\r\n if (isRequeredCheckFunction() && $(this).hasClass('fileinput-new'))\r\n $error.html('Обязательное поле');\r\n else\r\n $error.html('');\r\n });\r\n\r\n $form.off('check.validation', '.hidden-validation');\r\n $form.on('check.validation', '.hidden-validation', function() {\r\n $(this).valid();\r\n });\r\n\r\n //Поле ошибки очищаем\r\n $error.empty();\r\n\r\n var isValid = true;\r\n\r\n //Файл не выбран, но обязателен\r\n if (files.length === 0 && !$fileUid.val() && isRequeredCheckFunction()) {\r\n $error.html('Обязательное поле');\r\n isValid = false;\r\n }\r\n\r\n var $hiddenValidations = $form.find('.hidden-validation');\r\n if ($hiddenValidations.length !== 0)\r\n isValid &= $hiddenValidations.valid();\r\n\r\n //Валидируем форму\r\n isValid &= $form.valid();\r\n\r\n if (!isValid) {\r\n $form.error();\r\n return false;\r\n }\r\n\r\n //Обрабатываем отправку формы с файлом\r\n if (files.length > 0) {\r\n\r\n var file = files[0];\r\n var fileType = _getFileType(file);\r\n\r\n //Проверяем тип файла\r\n if (!isTypeAllowedCheckFunction(fileType)) {\r\n $error.html(\"Неверный тип файла\");\r\n $form.error();\r\n return false;\r\n }\r\n\r\n //Отправляем файл, в случае успеха отправляем форму\r\n _sendFile(fileServiceBaseUrl, file, fileType)\r\n .done(result => {\r\n\r\n //Обновляем данные о файле в полях\r\n $fileId.val(''); //Сбрасываем Id, т.к. новый файл\r\n $fileName.val(file.name);\r\n $fileUid.val(result.fileUid);\r\n $fileType.val(fileType);\r\n if (fileType === 2) {\r\n $fileLink.val(fileServiceBaseUrl + '/video/' + encodeURIComponent(result.fileUid));\r\n } else {\r\n $fileLink.val(fileServiceBaseUrl + '/file/' + encodeURIComponent(result.fileUid));\r\n }\r\n //Отправляем форму\r\n $form._send();\r\n })\r\n .fail(() => {\r\n $error.html('Ошибка загрузки файла на сервер');\r\n $form.error();\r\n });\r\n\r\n return false;\r\n }\r\n\r\n //Отправляем форму без файла\r\n $form._send();\r\n return false;\r\n });\r\n }\r\n\r\n return {\r\n initUploadingOnSubmit: _init\r\n };\r\n}());\r\n","function disableSubmitOnEditForm() {\r\n $('#object-edit-content button[type=\"submit\"]').attr('disabled', 'disabled');\r\n $('#recovery-password-content button[type=\"submit\"]').attr('disabled', 'disabled');\r\n $('#change-password-content button[type=\"submit\"]').attr('disabled', 'disabled');\r\n $('#login-content button[type=\"submit\"]').attr('disabled', 'disabled');\r\n}\r\n\r\n//TODO нужно переименовать и в объект сложить\r\nfunction removeDisabledSubmit() {\r\n $('#object-edit-content button[type=\"submit\"]').removeAttr('disabled');\r\n $('#recovery-password-content button[type=\"submit\"]').removeAttr('disabled');\r\n $('#change-password-content button[type=\"submit\"]').removeAttr('disabled');\r\n $('#login-content button[type=\"submit\"]').removeAttr('disabled');\r\n}\r\n","function createNotificate(objectId) {\r\n var control = $(this);\r\n $.ajax({\r\n url: Url.action('api/notifications/unreaded'),\r\n type: 'POST'\r\n })\r\n .success(function (result) {\r\n // Обновление кол-ва сообщений в меню\r\n $('#newNotifications').html(result && result > 0 ? '' + result + '' : '');\r\n\r\n // Вывод уведомления он новых сообщениях\r\n toastr.options = {\r\n closeButton: true,\r\n debug: false,\r\n progressBar: true,\r\n positionClass: 'toast-top-right',\r\n onclick: null,\r\n showDuration: 400,\r\n hideDuration: 1000,\r\n showEasing: 'swing',\r\n hideEasing: 'linear',\r\n showMethod: 'fadeIn',\r\n hideMethod: 'fadeOut',\r\n };\r\n\r\n $('toast-close-button').on('click', function () {\r\n toastr.clear();\r\n });\r\n\r\n var msg = window.location.pathname == Url.action('notifications') ? 'Обновить' :'Перейти к уведомлениям';\r\n var $toast = toastr['success'](msg, 'У вас есть новые уведомления.');\r\n\r\n $('#notificationReload').on('click', function () {\r\n $('#NotificationsListItemViewModelTable').DataTable().ajax.reload(null, false);\r\n })\r\n })\r\n .error(function (xhr, status, statusCode) {\r\n console.error(status + ': ' + statusCode);\r\n });\r\n};\r\n","var Popups = {\r\n\r\n showPopup: function (url, data, container, modalWindow, success) {\r\n container.html('');\r\n const containerHeight = $(window).height() * 0.65;\r\n $('#modal-spinner').attr('style', 'height:' + containerHeight + 'px;');\r\n const spinnerHtml = $('#modal-spinner-container').html();\r\n\r\n modalWindow.modal({\r\n backdrop: 'static'\r\n });\r\n container.html(spinnerHtml);\r\n\r\n $.ajax({\r\n url: url,\r\n contentType: 'application/html; charset=utf-8',\r\n type: 'GET',\r\n dataType: 'html',\r\n data: data\r\n }).success(function (result) {\r\n container.html(result);\r\n if (success) {\r\n success(result);\r\n }\r\n }).error(function (xhr, status) {\r\n container.html('
Ошибка открытия формы
');\r\n console.log(status);\r\n });\r\n },\r\n\r\n showPopupForModelId: function (url, id, modalControl, modalbodyControl, success) {\r\n showPopup(url, { id: id }, modalControl, modalbodyControl, success);\r\n },\r\n\r\n showPopupWithAction: function (url, action, id, modalControl, modalContentControl, success) {\r\n showPopup(url, { partialName: action, id: id }, modalControl, modalContentControl, success);\r\n },\r\n\r\n showPopupPost: function (url, formData, container, modalWindow, success) {\r\n container.html('');\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#modal-spinner').height(containerHeight);\r\n var spinnerHtml = $('#modal-spinner-container').html();\r\n\r\n modalWindow.modal({\r\n backdrop: 'static'\r\n });\r\n container.html(spinnerHtml);\r\n \r\n $.ajax({\r\n url: url,\r\n contentType: false,\r\n type: 'POST',\r\n dataType: 'html',\r\n data: formData,\r\n processData: false\r\n }).success(function (result) {\r\n container.html(result);\r\n if (success != null) {\r\n success(result);\r\n }\r\n }).error(function (xhr, status) {\r\n container.html('
Ошибка открытия формы
');\r\n console.log(status);\r\n });\r\n },\r\n\r\n /**\r\n * Показывает диалоговое окно\r\n * @param {string} htmlContent Контент диалога\r\n * @param {string} caption Заголовок диалога\r\n * @returns {} jQuery объект диалога\r\n */\r\n show: function (htmlContent, caption) {\r\n\r\n var $popup = $('#popup');\r\n if ($popup.length === 0) {\r\n //если диалог не найден на странице, создаем его\r\n const tmpl = $('#modal-tmpl').html();\r\n if (!tmpl) {\r\n throw {\r\n message: 'Не найден шаблон диалога #popup-tmpl'\r\n };\r\n }\r\n $popup = $(tmpl).appendTo('body');\r\n }\r\n\r\n $popup.find('.modal-headding').html(caption);\r\n $popup.find('.modal-body').html(htmlContent);\r\n $popup.modal();\r\n\r\n return $popup;\r\n }\r\n}\r\n","var showCard = (function (url, success) {\r\n var $card = $('#card-popup');\r\n if ($card.length === 0) {\r\n const tmpl = $('#card-tmpl').text();\r\n if (!tmpl) {\r\n throw {\r\n message: 'Не найден шаблон карточки #card-tmpl'\r\n };\r\n }\r\n $card = $(tmpl).appendTo('#page-wrapper');\r\n } else {\r\n $card.find('#card-content').empty();\r\n }\r\n\r\n $card.show();\r\n $card.addClass('busy');\r\n\r\n $.ajax({\r\n url: url,\r\n contentType: 'application/html; charset=utf-8',\r\n type: 'GET',\r\n dataType: 'html'\r\n })\r\n .success(function (result) {\r\n $card.removeClass('busy');\r\n $card.find('#card-content').html(result);\r\n\r\n $('.form-horizontal .card-body', $card).css('max-height', ($(window).height() - $('nav.navbar.navbar-fixed-top').height() - $('.form-horizontal .card-header').height() - 15));\r\n\r\n if (success) {\r\n success();\r\n }\r\n })\r\n .error(function (xhr, status) {\r\n hideCard($card);\r\n console.error(status);\r\n });\r\n\r\n return $card;\r\n});\r\n\r\nvar hideCard = function (map, $card) {\r\n // Убираем активность маркера\r\n $('.leaflet-marker-icon.leaflet-clickable.popupopen').removeClass('popupopen');\r\n $('.leaflet-marker-icon.leaflet-interactive.popupopen').removeClass('popupopen');\r\n // Убираем активность линии или полигона\r\n $('path.leaflet-clickable.popupopen').attr('class', 'leaflet-clickable');\r\n $('path.leaflet-interactive.popupopen').attr('class', 'leaflet-interactive');\r\n\r\n $card ? $card.hide() : $('#card-popup').hide();\r\n\r\n //Удаление трека если закрыто окно формирования трека\r\n //if (map && $('[js=track-card]').closest('#card-popup').is(\":hidden\")) {\r\n // map.eachLayer(function (layer) {\r\n // if (layer.options && (layer.options.isTrack || layer.options.isDirection)) {\r\n // map.removeLayer(layer);\r\n // }\r\n // });\r\n //}\r\n}\r\n","var TimezoneHelper = (function() {\r\n function updateCookie() {\r\n var date = new Date();\r\n var offset = date.getTimezoneOffset();\r\n $.cookie(\"user_timezone_minutes_offset\", offset);\r\n }\r\n\r\n return { updateCookie: updateCookie };\r\n}())\r\n\r\n","var IoCContainer = (function() {\r\n function IoCContainer() { };\r\n\r\n IoCContainer.register = function(type, getInstance) {\r\n var name = getName(type);\r\n IoCContainer[name] = getInstance;\r\n return IoCContainer;\r\n };\r\n\r\n IoCContainer.resolve = function (type) {\r\n var name = getName(type);\r\n if (IoCContainer.hasOwnProperty(name)) {\r\n return IoCContainer[name]();\r\n }\r\n throw new DependencyException('Not found ' + name);\r\n };\r\n\r\n function getName(type) {\r\n return /function ([^(]*)/.exec(type.toString())[1];\r\n }\r\n\r\n return IoCContainer;\r\n}());\r\n","function ArgumentException(message) {\r\n this.name = 'ArgumentException';\r\n this.message = message;\r\n this.stack = new Error().stack;\r\n}\r\nArgumentException.prototype = Object.create(Error.prototype);\r\nArgumentException.prototype.constructor = ArgumentException;\r\n","function DependencyException(message) {\r\n this.name = 'DependencyException';\r\n this.message = message;\r\n this.stack = new Error().stack;\r\n}\r\nArgumentException.prototype = Object.create(Error.prototype);\r\nArgumentException.prototype.constructor = ArgumentException;\r\n","function Exception(message, data) {\r\n this.name = 'Exception';\r\n this.message = message;\r\n this.data = data;\r\n this.stack = new Error().stack;\r\n}\r\nException.prototype = Object.create(Error.prototype);\r\nException.prototype.constructor = Exception;\r\n","Array.prototype.contains = function(value) {\r\n return this.indexOf(value) > -1;\r\n};\r\n\r\nArray.prototype.removeValue = function (value) {\r\n var index = this.indexOf(value);\r\n if (index > -1) {\r\n this.splice(index, 1);\r\n }\r\n};\r\n","String.prototype.format = function () {\r\n var args = arguments;\r\n return this.replace(/{([\\d|\\w]+)}/g, function (match, key) {\r\n var value = isNaN(key) ? args[0][key] : args[key];\r\n return typeof value != 'undefined' ? value : match;\r\n });\r\n};\r\n\r\nString.format = function (format) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n return format.replace(/{(\\d+)}/g, function (match, number) {\r\n return typeof args[number] != 'undefined'\r\n ? args[number]\r\n : match;\r\n });\r\n};","var ConnectionHubHelper = (function () {\r\n\r\n function _connectionStateChanged(state, onConnectedFunc) {\r\n const stateConversion = { 0: 'connecting', 1: 'connected', 2: 'reconnecting', 4: 'disconnected' };\r\n console.log('SignalR изменил состояние с: ' + stateConversion[state.oldState]\r\n + ' на: ' + stateConversion[state.newState]);\r\n\r\n if(onConnectedFunc && state.newState === 1){\r\n onConnectedFunc();\r\n }\r\n }\r\n\r\n // Открывает соединение с SignalR Hub\r\n // В качестве параметра 'url' принимает url хаба, который будем слушать\r\n // В качестве параметра 'onConnectedFunc' принимает функцию, которая будет выполнена при подключении\r\n function _start(url, onConnectedFunc) {\r\n if (url) {\r\n $.connection.hub.url = url;\r\n }\r\n\r\n $.connection.hub.stateChanged(state=> {\r\n _connectionStateChanged(state, onConnectedFunc);\r\n });\r\n $.connection.hub.start();\r\n $.connection.hub.disconnected(function () {\r\n setTimeout(function () {\r\n $.connection.hub.start();\r\n }, 5000); // Restart connection after 5 seconds.\r\n });\r\n }\r\n\r\n return { start: _start };\r\n}());\r\n","var SvgHelper = {};\r\n\r\nSvgHelper.create = function (tag, attrs, val) {\r\n var el = document.createElementNS('http://www.w3.org/2000/svg', tag);\r\n for (var k in attrs) {\r\n if (attrs.hasOwnProperty(k)) {\r\n if (k === 'xlink:href') {\r\n el.setAttributeNS('http://www.w3.org/1999/xlink', 'href', attrs[k]);\r\n } else {\r\n el.setAttribute(k, attrs[k]);\r\n }\r\n }\r\n }\r\n if (val) {\r\n var textNode = document.createTextNode(val);\r\n el.appendChild(textNode);\r\n }\r\n return el;\r\n};\r\n","/**\r\n * Представляет методы для работы с URL\r\n */\r\nvar UrlHelper = (function () {\r\n\r\n function UrlHelper(baseUrl) {\r\n this.baseUrl = baseUrl;\r\n }\r\n\r\n UrlHelper.prototype.action = function (relativePath) {\r\n return this.baseUrl + String.format.apply(relativePath, [].slice.call(arguments));\r\n };\r\n\r\n UrlHelper.prototype.content = function (relativePath) {\r\n return this.baseUrl + relativePath;\r\n };\r\n\r\n UrlHelper.prototype.api = function (relativePath) {\r\n return this.baseUrl + relativePath;\r\n };\r\n\r\n UrlHelper.prototype.icon = function (iconName) {\r\n return this.baseUrl + 'Content/Smik-icons/' + iconName;\r\n };\r\n\r\n UrlHelper.prototype.getQueryStringParams = function(url) {\r\n var m = url.match(/\\?([^#]*)/);\r\n if (m === null)\r\n return {};\r\n var a = m[1].split('&');\r\n var b = {};\r\n\r\n\r\n for (var i = 0; i < a.length; ++i) {\r\n var p = a[i].split('=', 2);\r\n var key = p[0];\r\n var value = p.length > 1 ? decodeURIComponent(p[1].replace(/\\+/g, \" \")) : '';\r\n\r\n if (key in b) {\r\n if (!Array.isArray(b[key])) {\r\n b[key] = [b[key]];\r\n }\r\n b[key].push(value);\r\n } else {\r\n b[key] = value;\r\n }\r\n }\r\n return b;\r\n };\r\n\r\n UrlHelper.prototype.map = function (objectType, ids) {\r\n if (typeof ids.join === \"function\") {\r\n ids = ids.join(',');\r\n }\r\n return this.baseUrl + '?show=' + objectType + '.' + ids;\r\n };\r\n\r\n return UrlHelper;\r\n}());\r\n","var CardUrls = {\r\n ServiceZone: 'serviceZones/{0}/card',\r\n Road: 'roads/{0}/card',\r\n SSegment: 'ssegments/{0}/card',\r\n LongObject: 'longObjects/{0}/card',\r\n DotObject: 'dotObjects/{0}/card',\r\n Locality: 'localities/{0}/card',\r\n Vehicle: 'vehicles/{0}/card',\r\n Emergency: 'emergencies/{0}/card',\r\n WStation: 'wstations/{0}/card',\r\n WStationTooltip: 'wstations/{0}/tooltip',\r\n Work: 'works/{0}/card',\r\n VideoCamera: 'videoCameras/{0}/card'\r\n};\r\n","/**\r\n * Представляет высокоуровневую оболочку над Leaflet API\r\n */\r\nvar LeafletMap = (function () {\r\n\r\n function LeafletMap(map) {\r\n this.map = map;\r\n this.popupPane = map.getPane('popupPane');\r\n this.overlayPane = map.getPane('overlayPane');\r\n //$(this.popupPane).append('');\r\n //L.SvgScaleOverlay({ pane: 'popupPane' });\r\n this.map.addLayer(L.SvgScaleOverlay({ pane: 'popupPane' }));\r\n this.map.addLayer(L.SvgScaleOverlay({ pane: 'tilePane' }));\r\n\r\n\r\n var latlngs = [\r\n [50.57626025689928, 77.72827148437501],\r\n [54.50832650029076, 87.38525390625001]\r\n ];\r\n\r\n this.latlngs = latlngs;\r\n\r\n var points = latlngs.map(function (x) { return map.latLngToLayerPoint(x); });\r\n var bounds = L.bounds(points);\r\n var size = bounds.getSize();\r\n\r\n this.bounds = bounds;\r\n this.size = size;\r\n\r\n\r\n //L.rectangle(latlngs,\r\n //{\r\n // color: \"#0066cc\",\r\n // weight: 5,\r\n // fill: false,\r\n // lineCap: 'butt'\r\n //}).addTo(this.map);\r\n\r\n\r\n this.image = new Image();\r\n this.image.onload = function () {\r\n console.log('this.image.onload');\r\n }\r\n this.image.src = '/Content/img/general-report-map.png';\r\n\r\n var svg = $(this.map.getPane('tilePane')).find('svg g:first-child');\r\n svg.append(SvgHelper.create('image', {\r\n 'xlink:href': '/Content/img/general-report-map.png',\r\n x: bounds.min.x,\r\n y: bounds.min.y,\r\n height: size.y,\r\n width: size.x\r\n //style: 'transform:scale(' + size + ')'\r\n }));\r\n };\r\n\r\n LeafletMap.prototype.setZoom = function (zoom) {\r\n this.map.setZoom(zoom);\r\n };\r\n\r\n\r\n /**\r\n * Нарисует на карте balloon\r\n * \r\n * @public\r\n * @param {LatLng} location Точка на карте, на которую указывает balloon\r\n * @param {LatLng} position Точка на карте, от которой начнется отрисовка balloon\r\n * @param {string} content Содержимое balloon в виде HTML\r\n * @param {Object} params Дополнительные параметры для отрисовки balloon: цвет, шрифт и т.д. (пока неспецифицирован)\r\n */\r\n LeafletMap.prototype.addBalloon = function (location, position, content, params) {\r\n\r\n //преобразуем географические координаты, в координаты слоя\r\n var loc = this.map.latLngToLayerPoint(location);\r\n var pos = this.map.latLngToLayerPoint(position);\r\n\r\n var popup = L.DomUtil.create('div', 'leaflet-balloon', this.popupPane);\r\n L.DomUtil.setPosition(popup, pos);\r\n\r\n var $popup = $(popup);\r\n $popup.html(content);\r\n\r\n var path = SvgHelper.create('path', { 'fill': '#ffffcc', 'stroke': '#ffff66', 'stroke-width': 1 });\r\n $(this.overlayPane).find('svg').append(path);\r\n\r\n L.DomEvent.disableClickPropagation(popup);\r\n var draggable = new L.Draggable(popup);\r\n draggable.enable();\r\n draggable.on('drag', function (e) {\r\n\r\n var w = $popup.width();\r\n var h = $popup.height();\r\n var t = $popup.position().top;\r\n var l = $popup.position().left;\r\n\r\n var a = t + h / 2;\r\n var b = l + w / 2;\r\n\r\n $(path).attr('d', ['M', l, a, 'Q', b, a, loc.x, loc.y, 'Q', b, a, l + w, a].join(' '));\r\n });\r\n };\r\n\r\n /**\r\n * Нарисует на карте balloon\r\n * \r\n * @public\r\n * @param {LatLng} location Точка на карте, на которую указывает balloon\r\n * @param {LatLng} position Точка на карте, от которой начнется отрисовка balloon\r\n * @param {string} content Содержимое balloon в виде HTML\r\n * @param {Object} params Дополнительные параметры для отрисовки balloon: цвет, шрифт и т.д. (пока неспецифицирован)\r\n */\r\n LeafletMap.prototype.addBalloon2 = function (location, position, content, params) {\r\n\r\n var svg = $(this.popupPane).find('svg g:first-child');\r\n\r\n var text = SvgHelper.create('text', { y: 5, 'font-size': 16 });\r\n\r\n content.split('
').forEach(function (line) {\r\n text.appendChild(SvgHelper.create('tspan', { x: 10, dy: '1.25em' }, line));\r\n });\r\n\r\n //преобразуем географические координаты, в координаты слоя\r\n var loc = this.map.latLngToLayerPoint(location);\r\n var pos = this.map.latLngToLayerPoint(position);\r\n\r\n\r\n var path = SvgHelper.create('path', { 'fill': '#ffffcc', 'stroke': '#ffff66', 'stroke-width': 1 });\r\n svg.append(path);\r\n\r\n var popup = SvgHelper.create('g', { 'class': 'leaflet-balloon' });\r\n popup.appendChild(text);\r\n svg.append(popup);\r\n console.log(popup.getBBox());\r\n popup.prepend(SvgHelper.create('rect', { x: 0, y: 0, width: popup.getBBox().width + 20, height: popup.getBBox().height + 20, style: 'fill:#ffffcc' }));\r\n\r\n \r\n L.DomUtil.setPosition(popup, pos);\r\n L.DomEvent.disableClickPropagation(popup);\r\n \r\n var draggable = new L.Draggable(popup);\r\n draggable.enable();\r\n draggable.on('drag', function (e) {\r\n\r\n var w = popup.getBBox().width;\r\n var h = popup.getBBox().height;\r\n\r\n var t = L.DomUtil.getPosition(popup).y;\r\n var l = L.DomUtil.getPosition(popup).x;\r\n\r\n var a = t + h / 2;\r\n var b = l + w / 2;\r\n\r\n $(path).attr('d', ['M', l, a, 'Q', b, a, loc.x, loc.y, 'Q', b, a, l + w, a].join(' '));\r\n });\r\n };\r\n\r\n LeafletMap.prototype.add = function (object) {\r\n object.addTo(this.map);\r\n };\r\n\r\n /**\r\n * Генерирует изображение из карты\r\n */\r\n LeafletMap.prototype.exportToBase64 = function() {\r\n\r\n function getTranslate3d(translate3d) {\r\n var xyz = translate3d.replace(\"translate3d(\", \"\").replace(\")\", \"\").replace(/px/g, '').split(\",\");\r\n return {\r\n x: parseFloat(xyz[0]),\r\n y: parseFloat(xyz[1]),\r\n z: parseFloat(xyz[2])\r\n };\r\n };\r\n\r\n var self = this;\r\n var map = this.map;\r\n var size = { width: this.size.x, height: this.size.y };\r\n\r\n var points = this.latlngs.map(function (x) { return map.latLngToLayerPoint(x); });\r\n var bounds = L.bounds(points);\r\n\r\n console.log(size);\r\n console.log(bounds);\r\n //map.setZoom(9);\r\n\r\n\r\n $('#map').width(size.width).height(size.height);\r\n\r\n return new Promise(function(resolve, reject) {\r\n\r\n var canvas = document.createElement('canvas');\r\n canvas.width = size.width;\r\n canvas.height = size.height;\r\n\r\n var ctx = canvas.getContext('2d');\r\n\r\n ctx.drawImage(self.image, 0, 0, canvas.width, canvas.height);\r\n\r\n //ctx.scale(2, 2);\r\n ctx.translate(-self.bounds.min.x, -self.bounds.min.y);\r\n\r\n var svgLayers = [\r\n $(map.getPane('tilePane')).find('svg')[0],\r\n $(map.getPane('overlayPane')).find('svg')[0],\r\n $(map.getPane('popupPane')).find('svg')[0]\r\n ];\r\n svgLayers.forEach(function(svg) {\r\n\r\n //var viewBox = svg.viewBox.baseVal;\r\n //var mapPaneTranslate3d = getTranslate3d(map.getContainer().querySelector('.leaflet-map-pane').style['transform']);\r\n \r\n var svgText = new XMLSerializer().serializeToString(svg);\r\n ctx.drawSvg(svgText, 0, 0, svg.width.baseVal.value, svg.height.baseVal.value);\r\n });\r\n\r\n var center = map.getCenter();\r\n\r\n $('[js=download]')[0].href = canvas.toDataURL();\r\n\r\n //resolve(canvas.toDataURL());\r\n });\r\n\r\n\r\n //LeafletMap.prototype.exportToBase64 = function() {\r\n\r\n // function getTranslate3d(translate3d) {\r\n // var xyz = translate3d.replace(\"translate3d(\", \"\").replace(\")\", \"\").replace(/px/g, '').split(\",\");\r\n // return {\r\n // x: parseFloat(xyz[0]),\r\n // y: parseFloat(xyz[1]),\r\n // z: parseFloat(xyz[2])\r\n // };\r\n // };\r\n\r\n // var map = this.map;\r\n\r\n // return new Promise(function(resolve, reject) {\r\n // leafletImage(map, function (err, canvas) {\r\n\r\n // var size = map.getSize();\r\n\r\n // var map_c = map.getContainer();\r\n // var svg = map_c.querySelector('svg');\r\n // var dimensions = map.getSize();\r\n\r\n // if (svg) {\r\n // var viewBoxData = svg.attributes.viewBox.value.split(' ');\r\n // var viewBox = {\r\n // x: parseInt(viewBoxData[0]),\r\n // y: parseInt(viewBoxData[1]),\r\n // width: parseInt(viewBoxData[2]),\r\n // height: parseInt(viewBoxData[3])\r\n // };\r\n\r\n // var ctx = canvas.getContext('2d');\r\n // var mapPaneTranslate3d = getTranslate3d(map_c.querySelector('.leaflet-map-pane').style['transform']);\r\n\r\n // console.log(mapPaneTranslate3d);\r\n // ctx.translate(mapPaneTranslate3d.x, mapPaneTranslate3d.y);\r\n\r\n // var svgText = new XMLSerializer().serializeToString(svg);\r\n // ctx.drawSvg(svgText, viewBox.x, viewBox.y, viewBox.width, viewBox.height);\r\n // }\r\n\r\n\r\n // var popupPane = map.getPane('popupPane');\r\n // //popupPane.style.transform = \"translate3d(0px,0px,0px)\";\r\n // popupPane.style.width = size.x + \"px\";\r\n // popupPane.style.height = size.y + \"px\";\r\n\r\n // $(popupPane).find('.test-popup').each(function () {\r\n // //var mapTransform = this.style.transform.replace(\"translate3d(\", \"\").split(\",\");\r\n // //var x = parseFloat(mapTransform[0].replace(\"px\", \"\"));\r\n // //var y = parseFloat(mapTransform[1].replace(\"px\", \"\"));\r\n // //this.style.transform = \"translate3d(0px, 0px, 0px)\";\r\n // });\r\n\r\n\r\n // html2canvas(popupPane, {\r\n // canvas: canvas,\r\n // onrendered: function () {\r\n // resolve(canvas.toDataURL());\r\n // }\r\n // });\r\n\r\n\r\n // //console.log(canvas.toDataURL());\r\n // //var img = document.getElementById('result');\r\n // //var dimensions = map.getSize();\r\n // //img.width = dimensions.x;\r\n // //img.height = dimensions.y;\r\n // //img.src = canvas.toDataURL();\r\n // });\r\n // });\r\n };\r\n\r\n return LeafletMap;\r\n}());\r\n","/**\r\n * Предоставляет функции для работы с координатами\r\n */\r\nvar MapHelper = (function () {\r\n\r\n var MapHelper = function () {\r\n //TODO: удалить этот return. Оставил его для совместимости, так как пока используется var mapHelper = MapHelper()\r\n return {\r\n findPosition: MapHelper.findPosition,\r\n getLongObjectCoordinatesCsv: MapHelper.getLongObjectCoordinatesCsv,\r\n findPositionByDistance: MapHelper.findPositionByDistance,\r\n getZoom: MapHelper.getZoom\r\n };\r\n };\r\n\r\n var zoomCoefficient = {\r\n 6: 8000,\r\n 7: 4000,\r\n 8: 2000,\r\n 9: 1000,\r\n 10: 500,\r\n 11: 250,\r\n 12: 125,\r\n 13: 75,\r\n 14: 50,\r\n 15: 30,\r\n 16: 20,\r\n 17: 10,\r\n 18: 10\r\n }\r\n\r\n MapHelper.getZoom = function (map) {\r\n var coefficient = 125;\r\n if (map) {\r\n var zoom = map.getZoom();\r\n coefficient = zoomCoefficient[zoom] ? zoomCoefficient[zoom] : coefficient;\r\n }\r\n return { zoom: zoom, coefficient: coefficient };\r\n }\r\n\r\n /**\r\n * Определение нахождения точки на заданном отрезке с учетом коэффициента смещения\r\n * \r\n * @private\r\n * @param {} lineStart \r\n * @param {} lineEnd \r\n * @param {} point \r\n * @returns {} \r\n */\r\n function pointInEdge(lineStart, lineEnd, point, coefficient) {\r\n \r\n var distToStart = point.distanceTo(lineStart);\r\n var distToEnd = point.distanceTo(lineEnd);\r\n var distTotal = lineStart.distanceTo(lineEnd);\r\n\r\n var isInEdge = distToStart + distToEnd < distTotal + coefficient;\r\n\r\n if (isInEdge) {\r\n var inEdge = L.LineUtil.pointToSegmentDistance(L.point(point.lat, point.lng),\r\n L.point(lineStart.lat, lineStart.lng), L.point(lineEnd.lat, lineEnd.lng));\r\n return { isInEdge: true, distance: distToStart, total: distTotal, inEdge: inEdge };\r\n }\r\n\r\n return { isInEdge: false, distance: distTotal };\r\n };\r\n\r\n /**\r\n * Конвертирует координаты в LatLng\r\n * \r\n * @public\r\n * @param {GeoPoint[]|GeoPoint} coordinates Массив координат\r\n * @returns {LatLng[]|LatLng} Массив координат для Leaflet\r\n */\r\n MapHelper.convertToLatLng = function (coordinates) {\r\n if (Array.isArray(coordinates)) {\r\n if (coordinates.length && Array.isArray(coordinates[0])) {\r\n return coordinates.map(function(a) {\r\n return a.map(function(c) {\r\n return new L.LatLng(c.Lat, c.Lng);\r\n });\r\n });\r\n } else {\r\n return coordinates\r\n .map(function(c) {\r\n return new L.LatLng(c.Lat, c.Lng);\r\n });\r\n }\r\n }\r\n return new L.LatLng(coordinates.Lat, coordinates.Lng);\r\n };\r\n\r\n MapHelper.parseStringToLatLng = function (coordinatesSvg) {\r\n if (coordinatesSvg.length === 0)\r\n return [];\r\n try {\r\n return coordinatesSvg.split('\\n').map(function (c) {\r\n const latlng = c.split(',');\r\n const lat = parseFloat(latlng[0]);\r\n const lng = parseFloat(latlng[1]);\r\n if (isNaN(lat) || isNaN(lng)) throw '';\r\n return new L.LatLng(lat, lng);\r\n });\r\n } catch (ex) {\r\n return undefined;\r\n }\r\n };\r\n\r\n MapHelper.parseStringToSplitLatLng = function (coordinatesSvg) {\r\n if (coordinatesSvg.length === 0)\r\n return [[]];\r\n try {\r\n var sections = [];\r\n var segmStr = coordinatesSvg.split('\\n---\\n');\r\n for (var i = 0; i < segmStr.length; i++) {\r\n sections[i] = segmStr[i].split('\\n').map(function (c) {\r\n const latlng = c.split(',');\r\n const lat = parseFloat(latlng[0]);\r\n const lng = parseFloat(latlng[1]);\r\n if (isNaN(lat) || isNaN(lng)) throw '';\r\n return new L.LatLng(lat, lng);\r\n }); \r\n }\r\n return sections;\r\n } catch (ex) {\r\n return undefined;\r\n }\r\n };\r\n\r\n /**\r\n * Находит расположение точки на линии\r\n * \r\n * @public\r\n * @param {Object<>} point Координаты точки\r\n * @param {Object<>} linePoints Координаты дороги\r\n * @param {number} Коэффициент масштаба карты\r\n * @returns {Object<>} Расположение точки на линии\r\n */\r\n MapHelper.findPosition = function (point, linePoints, coefficient) {\r\n var result = {\r\n index: null,\r\n section: 0,\r\n distance: 0,\r\n isInEdge: false,\r\n inEdge: 0\r\n };\r\n var results = [];\r\n\r\n if (linePoints.length && Array.isArray(linePoints[0])) {\r\n for (let i = 0; i < linePoints.length; i++) {\r\n for (var j = 1; j < linePoints[i].length; j++) {\r\n let checkResult = pointInEdge(linePoints[i][j - 1], linePoints[i][j], point, coefficient);\r\n result.distance += checkResult.distance;\r\n result.isInEdge = checkResult.isInEdge;\r\n if (checkResult.isInEdge) {\r\n result.index = j;\r\n result.section = i;\r\n result.inEdge = checkResult.inEdge;\r\n\r\n results.push({\r\n index: j,\r\n section: i,\r\n distance: result.distance,\r\n isInEdge: true,\r\n inEdge: checkResult.inEdge\r\n });\r\n result.distance += checkResult.total - checkResult.distance;\r\n }\r\n }\r\n }\r\n } else {\r\n\r\n for (let i = 1; i < linePoints.length; i++) {\r\n let checkResult = pointInEdge(linePoints[i - 1], linePoints[i], point, coefficient);\r\n result.distance += checkResult.distance;\r\n result.isInEdge = checkResult.isInEdge;\r\n if (checkResult.isInEdge) {\r\n result.index = i;\r\n result.inEdge = checkResult.inEdge;\r\n\r\n results.push({\r\n index: i,\r\n distance: result.distance,\r\n isInEdge: true,\r\n inEdge: checkResult.inEdge\r\n });\r\n result.distance += checkResult.total - checkResult.distance;\r\n }\r\n }\r\n }\r\n\r\n var lowest = {inEdge: Number.MAX_VALUE};\r\n var outPosition;\r\n results.forEach(function (position, idx) {\r\n outPosition = position;\r\n if (outPosition.inEdge < lowest.inEdge) lowest = outPosition;\r\n });\r\n\r\n return lowest;\r\n };\r\n\r\n /**\r\n * Вернет координаты участка дороги от distanceToStart до distanceToEnd\r\n * \r\n * @public\r\n * @param {} coordinates Координаты дороги\r\n * @param {} distanceToStart Растояние от начала дороги\r\n * @param {} distanceToEnd Растояние от начала дороги\r\n * @returns {} \r\n */\r\n MapHelper.getCoordinatesByStartEnd = function (coordinates, distanceToStart, distanceToEnd) {\r\n\r\n var start = MapHelper.findPositionByDistance(distanceToStart, coordinates);\r\n var end = MapHelper.findPositionByDistance(distanceToEnd, coordinates);\r\n\r\n var points = [];\r\n if (start.section !== end.section) {\r\n points.push([]);\r\n points[points.length - 1].push(start.point);\r\n for (let i = start.index; i < coordinates[start.section].length; i++) {\r\n points[points.length - 1].push(coordinates[start.section][i]);\r\n }\r\n for (let j = start.section + 1; j < end.section; j++) {\r\n points.push([]);\r\n for (let i = 0; i < coordinates[j].length; i++) {\r\n points[points.length - 1].push(coordinates[j][i]);\r\n }\r\n }\r\n points.push([]);\r\n for (let i = 0; i < end.index; i++) {\r\n points[points.length - 1].push(coordinates[end.section][i]);\r\n }\r\n points[points.length - 1].push(end.point);\r\n } else {\r\n points.push(start.point);\r\n for (var i = start.index; i < end.index; i++) {\r\n points.push(coordinates[start.section][i]);\r\n }\r\n points.push(end.point);\r\n }\r\n\r\n return points;\r\n };\r\n\r\n /**\r\n * Вернет точку на ломанной линии, отстоящую от начала на расстоянии distance,\r\n * или конечную точку, если distance больше длины ломаного отрезка\r\n *\r\n * @public\r\n * @param {Double} distance Расстояние в метрах от начальной точки\r\n * @param {LatLng[]} points Координаты\r\n * @returns {Object} Объект специального типа\r\n */\r\n MapHelper.findPositionByDistance = function(distance, points) {\r\n var result = {\r\n index: null,\r\n section: null,\r\n point: null,\r\n edgeDistance: 0\r\n };\r\n if (!Array.isArray(points[0])) {\r\n points = [points];\r\n }\r\n var currentDistance = 0;\r\n var found = false;\r\n for (var j = 0; j < points.length; j++) {\r\n let linePoints = points[j];\r\n for (var i = 1; i < linePoints.length; i++) {\r\n var edgeDistance = linePoints[i - 1].distanceTo(linePoints[i]);\r\n if (currentDistance + edgeDistance > distance) {\r\n result.index = i;\r\n result.section = j;\r\n result.edgeDistance = distance - currentDistance;\r\n result.point =\r\n MapHelper.edgePositionByDistance(result.edgeDistance, linePoints[i - 1], linePoints[i]);\r\n found = true;\r\n break;\r\n }\r\n currentDistance += edgeDistance;\r\n }\r\n if (found)\r\n break;\r\n }\r\n\r\n //Ставим на конец, когда не вошли в длину дороги.\r\n if (result.index == null && points.length && points[points.length - 1].length > 1) {\r\n result.index = points[points.length - 1].length - 1;\r\n result.section = points.length - 1;\r\n result.point = points[points.length - 1][result.index];\r\n result.edgeDistance = points[points.length - 1][result.index - 1].distanceTo(result.point);\r\n }\r\n\r\n return result;\r\n };\r\n\r\n /**\r\n * Вернет новую точку на ребре между двумя точками, отстоящую от начала ребра на растояние distance\r\n * \r\n * @public\r\n * @param {double} distance Растояние от начала ребра в киллометрах\r\n * @param {LatLng} startPoint Точка начала ребра\r\n * @param {LatLng} endPoint Точка конца ребра\r\n * @returns {LatLng}\r\n */\r\n MapHelper.edgePositionByDistance = function (distance, startPoint, endPoint) {\r\n var edgeDistance = startPoint.distanceTo(endPoint);\r\n var lat = (endPoint.lat - startPoint.lat) / edgeDistance * distance + startPoint.lat;\r\n var lng = (endPoint.lng - startPoint.lng) / edgeDistance * distance + startPoint.lng;\r\n return L.latLng(lat, lng);\r\n };\r\n\r\n /**\r\n * Возвращение фрагмента линии между заданными начальным и конечным километрами в виде строки с координатами\r\n * \r\n * @public\r\n * @param {} startKm \r\n * @param {} endKm \r\n * @param {} linePoints \r\n * @returns {} \r\n */\r\n MapHelper.getLongObjectCoordinatesCsv = function (startKm, endKm, linePoints) {\r\n\r\n if (linePoints.length < 2) return null;\r\n\r\n var result = { startKm: 0, stopKm: 0 };\r\n if (startKm < endKm) {\r\n result.startKm = startKm;\r\n result.stopKm = endKm;\r\n } else {\r\n result.startKm = endKm;\r\n result.endKm = startKm;\r\n }\r\n\r\n var start = MapHelper.findPositionByDistance(startKm * 1000, linePoints);\r\n var end = MapHelper.findPositionByDistance(endKm * 1000, linePoints);\r\n\r\n var points = [];\r\n\r\n points.push(start.point);\r\n for (var i = start.index; i < end.index; i++) {\r\n points.push(linePoints[i]);\r\n }\r\n points.push(end.point);\r\n\r\n var coordinatesSvg = points.map(function (p) {\r\n return p.lat + ',' + p.lng;\r\n }).join('\\n');\r\n\r\n return coordinatesSvg;\r\n }\r\n\r\n /**\r\n * Вычисление длины составной линии\r\n * @param {any} linePoints Массив координат\r\n */\r\n MapHelper.getLength = function(points) {\r\n if (!Array.isArray(points[0])) {\r\n points = [points];\r\n }\r\n var length = 0;\r\n var found = false;\r\n for (var j = 0; j < points.length; j++) {\r\n let linePoints = points[j];\r\n for (var i = 1; i < linePoints.length; i++) {\r\n length += linePoints[i - 1].distanceTo(linePoints[i]);\r\n }\r\n }\r\n return length;\r\n }\r\n\r\n return MapHelper;\r\n})();\r\n","var Overlay = (function () {\r\n\r\n function Overlay(name, leafletMap, leafletLayer, group) {\r\n this.name = name;\r\n this.map = leafletMap;\r\n this.layer = leafletLayer;\r\n this.eventHandlers = [];\r\n this.group = group;\r\n };\r\n\r\n Overlay.prototype.addLayer = function (layer) {\r\n if (layer) this.layer.addLayer(layer);\r\n return this;\r\n };\r\n\r\n Overlay.prototype.addLayers = function (layers) {\r\n for (var i = 0; i < layers.length; ++i) {\r\n if (layers[i]) this.layer.addLayer(layers[i]);\r\n }\r\n return this;\r\n };\r\n\r\n Overlay.prototype.clearLayers = function () {\r\n this.layer.clearLayers();\r\n return this;\r\n };\r\n\r\n Overlay.prototype.setUrl = function(url) {\r\n this.layer.setUrl(url);\r\n return this;\r\n };\r\n\r\n Overlay.prototype.fit = function() {\r\n try {\r\n this.map.fitBounds(this.layer.getBounds());\r\n } catch (ex) {\r\n }\r\n return this;\r\n };\r\n\r\n Overlay.prototype.show = function () {\r\n if (!this.isShown) {\r\n this.map.addLayer(this.layer);\r\n this.isShown = true;\r\n handleEvent('show', this);\r\n }\r\n return this;\r\n };\r\n\r\n Overlay.prototype.hide = function () {\r\n if (this.isShown) {\r\n this.map.removeLayer(this.layer);\r\n this.isShown = false;\r\n handleEvent('hide', this);\r\n }\r\n return this;\r\n };\r\n\r\n Overlay.prototype.toggle = function (isShown) {\r\n if (typeof isShown !== 'boolean') {\r\n isShown = !this.isShown;\r\n }\r\n if (isShown) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n return this;\r\n };\r\n\r\n Overlay.prototype.on = function(eventName, handler) {\r\n this.eventHandlers[eventName] = handler;\r\n return this;\r\n };\r\n\r\n function handleEvent(eventName, overlay) {\r\n var handler = overlay.eventHandlers[eventName];\r\n if (handler) {\r\n handler(overlay);\r\n }\r\n };\r\n\r\n return Overlay;\r\n}());\r\n","var initFreeMarkerMap = function(marker, lat, lng) {\r\n\r\n const initLat = lat || AppConfig.defaultMapCenter[0];\r\n const initLng = lng || AppConfig.defaultMapCenter[1];\r\n\r\n L.Icon.Default.imagePath = AppConfig.imagePath;\r\n const grayscale = L.tileLayer(MapSettings.urlFormat,\r\n { attribution: '© OpenStreetMap contributors' });\r\n\r\n var roadPoints = [];\r\n\r\n var mymap = L.map(\"marker-map\",\r\n {\r\n center: [initLat, initLng],\r\n zoom: AppConfig.defaultMapZoom,\r\n maxBounds: L.latLngBounds(AppConfig.defaultMapBounds[0], AppConfig.defaultMapBounds[1]),\r\n minZoom: AppConfig.defaultMapMinZoom,\r\n zoomReverse: true,\r\n layers: [grayscale]\r\n });\r\n\r\n mymap.on('click',\r\n function (e) {\r\n setPoint(e.latlng);\r\n });\r\n\r\n var data = {\r\n point: null,\r\n marker: null,\r\n map: mymap\r\n };\r\n\r\n if (lat && lng) {\r\n var point = L.latLng(lat, lng);\r\n setPoint(point);\r\n }\r\n\r\n function setPoint(point) {\r\n data.point = point;\r\n if (data.marker != null) {\r\n mymap.removeLayer(data.marker);\r\n }\r\n\r\n data.marker = L.marker(point).addTo(mymap);\r\n }\r\n\r\n return data;\r\n};","//\r\n// Легенда для карты \r\n//\r\nvar Legend = (function () {\r\n var state = 'noInit';\r\n var legendType = '';\r\n\r\n var minValRain = 'слабые';\r\n var maxValRain = 'сильные';\r\n\r\n var legend = $('#weater-forecast-settings-legend');\r\n var legendScale = $('#legend-scale');\r\n var image = $('#legend-image');\r\n var table = $('#legend-table');\r\n \r\n //отступ от края до графической шкалы\r\n var delta = +legend.css('border-left').split(\" \")[0].replace('px', '') + (+legend.css('padding-left').replace('px', ''));\r\n //delta = 13 с каждого края в сумме 26 нужно отнять от общей ширины картинки\r\n //альтернативный вариант расчета отсутпа, реальная ширина картинки Wt = $('#legend-image').width();\r\n //отступ с лева это margin = (inWidth() - Wt) / 2\r\n\r\n var colorCell = [\"#FB29FB\", \"#D029FB\", \"#A01FF7\", \"#1F4AF7\", \"#297DFB\",\r\n \"#297DFB\", \"#29A7FB\", \"#33D5FE\", \"#29FBFB\", \"#84FD33\",\r\n \"#A7FB29\", \"#D0FB29\", \"#FDFD33\", \"#FBD029\", \"#FBA729\",\r\n \"#FB7D29\", \"#FB5429\", \"#FB2929\", \"#FB2954\", \"#FB297D\",\r\n \"#FB29A7\", \"#FB29D1\", \"#FB29FB\"];\r\n\r\n // Инициализируем легенду \r\n //\r\n // widhtControl - ширина контрола на форме в \"px\"\r\n // step - шаг\r\n // imageUri - местонахождение картинки\r\n // type - тип погодных условий (название слоя) - temp, rain\r\n // для rain характерно два крайних значения в подписи, которые задаются строковыми параметрами minValRain и maxValRain\r\n function init(widhtControl, imageUri, type) {\r\n if (state === 'init') {\r\n if (type === legendType) {\r\n Legend.show();\r\n return;\r\n } else {\r\n this.close();\r\n };\r\n };\r\n\r\n legendType = type;\r\n\r\n legend.width(widhtControl);\r\n\r\n var intWidhtControl = +widhtControl.replace('px', '');\r\n var widthConvas = (+intWidhtControl + (2 * delta));\r\n var realWidht = widthConvas;\r\n\r\n // выводим подписи в зависимости от слоя\r\n switch (legendType) {\r\n case \"temp\":\r\n var th = '';\r\n colorCell.forEach(function (val, i) {\r\n th +=' ';\r\n });\r\n $('#legend-color-table tr').html(th);\r\n\r\n var indentVal = 10;\r\n if (colorCell.length > 0) {\r\n indentVal = (intWidhtControl / colorCell.length) / 2;\r\n };\r\n $('#legend-text').css('padding-left', indentVal + 'px')\r\n .css('margin-right', '-' + indentVal + 'px');\r\n\r\n legendScale.html('');\r\n\r\n image.hide();\r\n table.show();\r\n break;\r\n case \"rain\":\r\n image.css('background-image', imageUri);\r\n image.prepend('');\r\n\r\n var canvas = document.getElementById(\"legend-image-canvas\");\r\n var context = canvas.getContext(\"2d\");\r\n\r\n writeCaptionRain(intWidhtControl);\r\n image.show();\r\n table.hide();\r\n break;\r\n }\r\n\r\n $('#legend-image-canvas').css('width', intWidhtControl + (2 * delta));\r\n\r\n state = 'init';\r\n Legend.show();\r\n };\r\n\r\n function close() {\r\n hide();\r\n $('#legend-image-canvas').remove();\r\n state = 'noInit';\r\n };\r\n \r\n // Отображаем легенду карты\r\n function show() {\r\n if (state === 'noInit') {\r\n console.log('Legend not initialise');\r\n return;\r\n };\r\n\r\n legend.show();\r\n };\r\n\r\n // Скрываем легенду карты\r\n function hide() {\r\n legend.hide();\r\n };\r\n\r\n //Выводим подписи к шкале \r\n function writeCaptionRain(intWidhtControl) {\r\n legendScale.html('');\r\n var left = (intWidhtControl / 2) + delta;\r\n legendScale.append('
' + minValRain + '
');\r\n legendScale.append('
' + maxValRain + '
');\r\n };\r\n\r\n //----------------------------------------\r\n\r\n return {\r\n show: show,\r\n hide: hide,\r\n state: state,\r\n init: init,\r\n close: close,\r\n minValRain: minValRain,\r\n maxValRain: maxValRain,\r\n legendType: legendType,\r\n delta: delta,\r\n legend: legend\r\n };\r\n}());\r\n","var initMarkerMap = function(marker, backControl, roadStartKm, location) {\r\n\r\n const roadStart = roadStartKm ? roadStartKm * 1e3 : 0;\r\n\r\n const latitude = $(\"#Lat\").val() && $(\"#Lat\").val() !== \"undefined\" ? $(\"#Lat\").val().replace(\",\", \".\") : null;\r\n const longitude = $(\"#Lng\").val() && $(\"#Lng\").val() !== \"undefined\" ? $(\"#Lng\").val().replace(\",\", \".\") : null;\r\n\r\n const initLat = latitude != null ? latitude : AppConfig.defaultMapCenter[0];\r\n const initLng = longitude != null ? longitude : AppConfig.defaultMapCenter[1];\r\n\r\n L.Icon.Default.imagePath = AppConfig.imagePath;\r\n const grayscale = L.tileLayer(MapSettings.urlFormat,\r\n { attribution: '© OpenStreetMap contributors' });\r\n\r\n var roadPoints = [];\r\n\r\n var mymap = L.map(\"marker-map\",\r\n {\r\n center: [initLat, initLng],\r\n zoom: AppConfig.defaultMapZoom,\r\n maxBounds: L.latLngBounds(AppConfig.defaultMapBounds[0], AppConfig.defaultMapBounds[1]),\r\n minZoom: AppConfig.defaultMapMinZoom,\r\n zoomReverse: true,\r\n layers: [grayscale]\r\n });\r\n\r\n var data = {\r\n point: null,\r\n location: roadStart,\r\n marker: null,\r\n edgeIndex: 0,\r\n map: mymap\r\n };\r\n\r\n if (roadCurrentCoordinates.length && roadCurrentCoordinates[0].length > 1) {\r\n roadPoints = MapHelper.convertToLatLng(roadCurrentCoordinates);\r\n const roadsLine = new L.Polyline(roadPoints,\r\n {\r\n color: \"blue\",\r\n weight: 5,\r\n opacity: 0.5,\r\n smoothFactor: 1\r\n });\r\n roadsLine.addTo(mymap);\r\n\r\n if (location * 1e3 < roadStart)\r\n location = roadStart / 1e3;\r\n if (location != null && !isNaN(location)) {\r\n let point = null;\r\n point = MapHelper.findPositionByDistance(location * 1e3 - roadStart, roadPoints).point;\r\n initPoint(point);\r\n }\r\n\r\n roadsLine.on(\"click\",\r\n function(e) {\r\n const point = e.latlng;\r\n setPoint(point);\r\n });\r\n\r\n backControl.on(\"click\",\r\n function() {\r\n data.point = null;\r\n if (data.marker != null) {\r\n mymap.removeLayer(data.marker);\r\n data.marker = null;\r\n }\r\n });\r\n }\r\n\r\n function initPoint(point) {\r\n\r\n data.point = point;\r\n data.location = location * 1e3;\r\n\r\n if (data.marker != null) {\r\n mymap.removeLayer(data.marker);\r\n }\r\n\r\n data.marker = L.marker(point).addTo(mymap);\r\n }\r\n\r\n function setPoint(point) {\r\n\r\n const findResult = MapHelper.findPosition(point, roadPoints, MapHelper.getZoom(mymap).coefficient);\r\n if (findResult.index == null) return;\r\n if (findResult.deviation > 1.1) return;\r\n\r\n data.point = point;\r\n data.location = findResult.distance + roadStart;\r\n\r\n if (data.marker != null) {\r\n mymap.removeLayer(data.marker);\r\n }\r\n\r\n data.marker = L.marker(point).addTo(mymap);\r\n }\r\n\r\n return data;\r\n};","var initPolylineMap = function (marker, backControl, roadStartKm, startKm, stopKm) {\r\n var _latitude = sessionStorage.Lat && sessionStorage.Lat != 'undefined' ? sessionStorage.Lat.replace(',', '.') : 0;\r\n var _longitude = sessionStorage.Lng && sessionStorage.Lng != 'undefined' ? sessionStorage.Lng.replace(',', '.') : 0;\r\n var init_lat = _latitude > 0 ? _latitude : AppConfig.defaultMapCenter[0];\r\n var init_lng = _longitude > 0 ? _longitude : AppConfig.defaultMapCenter[1];\r\n let roadStart = roadStartKm ? roadStartKm * 1e3 : 0;\r\n\r\n L.Icon.Default.imagePath = AppConfig.imagePath;\r\n var grayscale = L.tileLayer(MapSettings.urlFormat, { attribution: '© OpenStreetMap contributors' });\r\n\r\n var mymap = L.map('marker-map', {\r\n center: [init_lat, init_lng],\r\n zoom: AppConfig.defaultMapZoom,\r\n maxBounds: L.latLngBounds(AppConfig.defaultMapBounds[0], AppConfig.defaultMapBounds[1]),\r\n minZoom: AppConfig.defaultMapMinZoom,\r\n zoomReverse: true,\r\n layers: [grayscale]\r\n });\r\n\r\n var roadPoints = [[]];\r\n\r\n var result = {\r\n startPoint: null,\r\n endPoint: null,\r\n startKm: roadStart,\r\n endKm: roadStart,\r\n points: [],\r\n startMarker: null,\r\n endMarker: null,\r\n polyline: null,\r\n startEdgeIndex: 0,\r\n endEdgeIndex: 0,\r\n startEdgeSection: 0,\r\n endEdgeSection: 0,\r\n map: mymap\r\n };\r\n\r\n if (roadCurrentCoordinates.length && roadCurrentCoordinates[0].length > 1) {\r\n roadPoints = MapHelper.convertToLatLng(roadCurrentCoordinates);\r\n\r\n var roadsLine = new L.Polyline(roadPoints, {\r\n color: 'blue',\r\n weight: 5,\r\n opacity: 0.5,\r\n smoothFactor: 1\r\n });\r\n roadsLine.addTo(mymap);\r\n\r\n //Добавляем, что есть.\r\n if (startKm * 1e3 < roadStart)\r\n startKm = roadStart / 1e3;\r\n var startPoint = null;\r\n if (startKm != null && !isNaN(startKm)) {\r\n var startPosition = MapHelper.findPositionByDistance(startKm * 1e3 - roadStart, roadPoints);\r\n startPoint = startPosition.point;\r\n initPoint(startPosition, startKm * 1e3);\r\n }\r\n if (!startPoint) {\r\n startPoint = L.latLng(parseFloat($(roadCurrentCoordinates).first()[0][0].Lat), parseFloat($(roadCurrentCoordinates).first()[0][0].Lng));\r\n addPointIfCan(startPoint);\r\n }\r\n\r\n if (stopKm * 1e3 < roadStart)\r\n stopKm = roadStart / 1e3;\r\n var stopPoint = null;\r\n if (stopKm != null && !isNaN(stopKm)) {\r\n var stopPosition = MapHelper.findPositionByDistance(stopKm * 1e3 - roadStart, roadPoints);\r\n stopPoint = stopPosition.point;\r\n initPoint(stopPosition, stopKm * 1e3);\r\n }\r\n if (!stopPoint) {\r\n stopPoint = L.latLng(parseFloat($(roadCurrentCoordinates).first()[0][0].Lat), parseFloat($(roadCurrentCoordinates).first()[0][0].Lng));\r\n }\r\n addPointIfCan(stopPoint);\r\n\r\n roadsLine.on('click', function (e) {\r\n\r\n var point = e.latlng;\r\n\r\n addPointIfCan(point);\r\n });\r\n\r\n backControl.on('click', function () {\r\n\r\n if (result.endPoint != null) {\r\n result.endPoint = null;\r\n result.endKm = roadStart;\r\n } else if (result.startPoint != null) {\r\n result.startPoint = null;\r\n result.startKm = roadStart;\r\n } else {\r\n return;\r\n }\r\n\r\n update();\r\n });\r\n }\r\n\r\n function clear() {\r\n if (result.polyline != null) {\r\n mymap.removeLayer(result.polyline);\r\n result.polyline = null;\r\n }\r\n\r\n if (result.startPoint == null && result.startMarker != null) {\r\n mymap.removeLayer(result.startMarker);\r\n result.startMarker = null;\r\n }\r\n\r\n if (result.endPoint == null && result.endMarker != null) {\r\n mymap.removeLayer(result.endMarker);\r\n result.endMarker = null;\r\n }\r\n\r\n result.points = [];\r\n }\r\n\r\n function normalizeStartEnd() {\r\n if (result.startKm > result.endKm) {\r\n //меняем местами\r\n var tempKm = result.startKm;\r\n result.startKm = result.endKm;\r\n result.endKm = tempKm;\r\n\r\n var tempPoint = result.startPoint;\r\n result.startPoint = result.endPoint;\r\n result.endPoint = tempPoint;\r\n\r\n var tempMarker = result.startMarker;\r\n result.startMarker = result.endMarker;\r\n result.endMarker = tempMarker;\r\n\r\n var tempIndex = result.startEdgeIndex;\r\n result.startEdgeIndex = result.endEdgeIndex;\r\n result.endEdgeIndex = tempIndex;\r\n\r\n var tempSection = result.startEdgeSection;\r\n result.startEdgeSection = result.endEdgeSection;\r\n result.endEdgeSection = tempSection;\r\n }\r\n }\r\n\r\n function update() {\r\n\r\n if (result.startPoint != null && result.startMarker == null) {\r\n result.startMarker = L.marker(result.startPoint, { title: 'Начало (' + (result.startKm / 1000).toFixed(2) + ' км) - ' + result.startPoint }).bindPopup('Начало (' + (result.startKm / 1000).toFixed(2) + ' км) - ' + result.startPoint).addTo(mymap);\r\n }\r\n if (result.endPoint != null && result.endMarker == null) {\r\n result.endMarker = L.marker(result.endPoint, { title: 'Конец (' + (result.endKm / 1000).toFixed(2) + ' км) - ' + result.endPoint }).bindPopup('Конец (' + (result.endKm / 1000).toFixed(2) + ' км) - ' + result.endPoint).addTo(mymap);\r\n }\r\n\r\n if (result.startPoint == null || result.endPoint == null) {\r\n clear();\r\n return;\r\n }\r\n\r\n normalizeStartEnd();\r\n //TODO:Использовать метод MapHelper.getCoordinatesByStartEnd\r\n if (result.startEdgeSection !== result.endEdgeSection) {\r\n result.points.push([]);\r\n result.points[result.points.length - 1].push(result.startPoint);\r\n for (let i = result.startEdgeIndex; i < roadPoints[result.startEdgeSection].length; i++) {\r\n result.points[result.points.length - 1].push(roadPoints[result.startEdgeSection][i]);\r\n }\r\n for (let j = result.startEdgeSection + 1; j < result.endEdgeSection; j++) {\r\n result.points.push([]);\r\n for (let i = 0; i < roadPoints[j].length; i++) {\r\n result.points[result.points.length - 1].push(roadPoints[j][i]);\r\n }\r\n }\r\n result.points.push([]);\r\n for (let i = 0; i < result.endEdgeIndex; i++) {\r\n result.points[result.points.length - 1].push(roadPoints[result.endEdgeSection][i]);\r\n }\r\n result.points[result.points.length - 1].push(result.endPoint);\r\n } else {\r\n result.points.push(result.startPoint);\r\n for (let i = result.startEdgeIndex; i < result.endEdgeIndex; i++) {\r\n result.points.push(roadPoints[result.startEdgeSection][i]);\r\n }\r\n result.points.push(result.endPoint);\r\n }\r\n\r\n\r\n result.polyline = new L.Polyline(result.points, {\r\n color: 'green',\r\n weight: 15,\r\n opacity: 0.5,\r\n smoothFactor: 1\r\n });\r\n result.polyline.addTo(mymap);\r\n }\r\n\r\n function addPointIfCan(point) {\r\n\r\n var findResult = MapHelper.findPosition(point, roadPoints, MapHelper.getZoom(mymap).coefficient);\r\n\r\n //Промазали сильно. TODO двигать точку пропорционально ближе к линии\r\n if (findResult.index == null) return;\r\n\r\n if (result.startPoint == null) {\r\n result.startPoint = point;\r\n result.startKm = findResult.distance + roadStart;\r\n result.startEdgeIndex = findResult.index;\r\n result.startEdgeSection = findResult.section;\r\n } else if (result.endPoint == null) {\r\n result.endPoint = point;\r\n result.endKm = findResult.distance + roadStart;\r\n result.endEdgeIndex = findResult.index;\r\n result.endEdgeSection = findResult.section;\r\n } else {\r\n return;\r\n }\r\n\r\n update();\r\n }\r\n\r\n function initPoint(foundPosition, location) {\r\n\r\n if (result.startPoint == null) {\r\n result.startPoint = foundPosition.point;\r\n result.startKm = location;\r\n result.startEdgeIndex = foundPosition.index;\r\n result.startEdgeSection = foundPosition.section;\r\n } else if (result.endPoint == null) {\r\n result.endPoint = foundPosition.point;\r\n result.endKm = location;\r\n result.endEdgeIndex = foundPosition.index;\r\n result.endEdgeSection = foundPosition.section;\r\n } else {\r\n return;\r\n }\r\n\r\n update();\r\n }\r\n\r\n return result;\r\n};\r\n","var Ruler = (function () {\r\n\r\n var ruler = null;\r\n\r\n function getDistanceText(distance) {\r\n distance = Math.floor(distance);\r\n var distanceTxt;\r\n if (distance < 1000)\r\n distanceTxt = distance + ' м';\r\n else\r\n distanceTxt = (distance / 1000) + ' км';\r\n return distanceTxt.replace(\".\", \",\");\r\n }\r\n\r\n function updateRulerPopups(ruler) {\r\n var points = ruler ? ruler.getLatLngs() : [];\r\n if (points.length) {\r\n var fullLength = MapHelper.getLength(points);\r\n $('.ruler__total-km-popup').html(getDistanceText(fullLength));\r\n\r\n for (var i = 0; i < points.length; i++) {\r\n var tooltip = points[i].__vertex.getTooltip();\r\n if (tooltip && i > 0) {\r\n points[i].__vertex.setTooltipContent(getDistanceText(points[i].distanceTo(points[i - 1])));\r\n $(tooltip._container).css('z-index', i + 10);\r\n } else {\r\n points[i].__vertex.unbindTooltip();\r\n points[i].__vertex.off('mouseover');\r\n points[i].__vertex.off('mouseout');\r\n if (i > 0) {\r\n points[i].__vertex.bindTooltip(getDistanceText(points[i].distanceTo(points[i - 1])),\r\n { permanent: true, direction: 'top', offset: L.point(0, -7), className: 'ruler__line-length' });\r\n tooltip = points[i].__vertex.getTooltip();\r\n $(tooltip._container).css('z-index', i + 10);\r\n\r\n points[i].__vertex.on('mouseover',\r\n function (e) {\r\n $(this.getTooltip()._container).addClass(\"ruler__line-length--top\");\r\n }\r\n );\r\n points[i].__vertex.on('mouseout',\r\n function (e) {\r\n $(this.getTooltip()._container).removeClass(\"ruler__line-length--top\");\r\n }\r\n );\r\n }\r\n }\r\n }\r\n } else {\r\n for (var i = 0; i < points.length; i++) {\r\n points[i].__vertex.unbindTooltip();\r\n points[i].__vertex.off('mouseover');\r\n points[i].__vertex.off('mouseout');\r\n }\r\n $('.ruler__total-km-popup').html('0 м');\r\n }\r\n }\r\n\r\n function init(leafletMap) {\r\n L.NewLineControl = L.Control.extend({\r\n\r\n options: {\r\n position: 'topleft'\r\n },\r\n\r\n onAdd: function (map) {\r\n var container = L.DomUtil.create('div', 'leaflet-control leaflet-bar relative leaflet-control-ruler'),\r\n link = L.DomUtil.create('a', '', container);\r\n L.DomEvent.disableClickPropagation(container);\r\n link.href = '#';\r\n link.title = 'Линейка';\r\n link.innerHTML = '/\\\\/';\r\n L.DomEvent.on(link, 'click', L.DomEvent.stop)\r\n .on(link, 'click', function () {\r\n\r\n if (ruler) {\r\n ruler.remove();\r\n ruler = null;\r\n $(this).removeClass('selected');\r\n $('.ruler__total-km-popup').hide();\r\n } else {\r\n ruler = leafletMap.editTools.startPolyline();\r\n $(this).addClass('selected');\r\n $('.ruler__total-km-popup').show();\r\n }\r\n updateRulerPopups(ruler);\r\n });\r\n var totalKmPopup = L.DomUtil.create('div', 'ruler__total-km-popup', container);\r\n totalKmPopup.title = 'Суммарное расстояние';\r\n return container;\r\n }\r\n });\r\n leafletMap.addControl(new L.NewLineControl());\r\n leafletMap.on('editable:vertex:ctrlclick editable:vertex:metakeyclick', function (e) {\r\n e.vertex.continue();\r\n updateRulerPopups(ruler);\r\n });\r\n leafletMap.on('editable:vertex:drag editable:vertex:dragend editable:vertex:new editable:vertex:deleted editable:drawing:clicked editable:drawing:end editable:dragend', function () {\r\n updateRulerPopups(ruler);\r\n });\r\n }\r\n\r\n function isActive() {\r\n return ruler !== null;\r\n }\r\n\r\n return {\r\n init: init,\r\n isActive: isActive\r\n }\r\n}());","var WeatherForecast = (function() {\r\n var tempLayer;\r\n var rainLayer;\r\n var windLayer;\r\n var weatherOptions;\r\n var weatherInfo;\r\n\r\n function setDates(dates) {\r\n var select = $('#ForecastDate');\r\n select.html('');\r\n $.each(dates, function (i, value) {\r\n select.append('');\r\n });\r\n }\r\n\r\n function updateWeatherInfo(success) {\r\n $.ajax({\r\n url: weatherOptions.weatherInfoUrl,\r\n contentType: 'application/json; charset=utf-8',\r\n type: 'GET',\r\n dataType: 'json'\r\n })\r\n .success(function(result) {\r\n weatherInfo = result;\r\n console.log(result);\r\n if (success) {\r\n success();\r\n }\r\n })\r\n .error(function(xhr, status) {\r\n console.log(status);\r\n });\r\n }\r\n\r\n function updateUrls() {\r\n var stamp = $('#ForecastDate').val();\r\n tempLayer.setUrl(weatherOptions.tempUrl + '&c=' + weatherInfo.C + '&t=' + stamp);\r\n rainLayer.setUrl(weatherOptions.rainUrl + '&c=' + weatherInfo.C + '&t=' + stamp);\r\n windLayer.setUrl(weatherOptions.windUrl + '&c=' + weatherInfo.C + '&t=' + stamp);\r\n }\r\n\r\n function showLegend(name) {\r\n if (name) {\r\n var widht = 10; //внешний отступ от края\r\n switch (name) {\r\n case \"temp\":\r\n //легенда для температуры\r\n widht += 400; //размер легенды\r\n Legend.init(widht + 'px', \"\", name);\r\n widht += 2 * ( Legend.delta + 10); //размер легенды + два внутренних отступа + внешний отступ от края\r\n break;\r\n case \"rain\":\r\n //легенда для осадков\r\n widht += 400; //размер легенды\r\n Legend.init(widht + 'px', \"url('../Content/img/legend-rain.png')\", name);\r\n widht += 2 * (Legend.delta + 10); //размер легенды + два внутренних отступа + внешний отступ от края\r\n break;\r\n }\r\n $('#weater-forecast-settings').css('right', widht + 'px').addClass(\"show\");\r\n }\r\n }\r\n\r\n function hide() {\r\n $('#weater-forecast-settings').removeClass(\"show\");\r\n Legend.hide();\r\n }\r\n\r\n function clearLayer() {\r\n hide();\r\n }\r\n\r\n function showLayer(name) {\r\n updateWeatherInfo(function () {\r\n\r\n if (name === 'Weather-Temp') {\r\n setDates(weatherInfo.TempDates);\r\n updateUrls();\r\n showLegend('temp');\r\n return;\r\n }\r\n if (name === 'Weather-Rain') {\r\n setDates(weatherInfo.RainDates);\r\n updateUrls();\r\n showLegend('rain');\r\n return;\r\n }\r\n if (name === 'Weather-Wind') {\r\n setDates(weatherInfo.WindDates);\r\n updateUrls();\r\n showLegend('wind');\r\n return;\r\n }\r\n \r\n });\r\n }\r\n\r\n function init(temp, rain, wind, options) {\r\n tempLayer = temp;\r\n rainLayer = rain;\r\n windLayer = wind;\r\n weatherOptions = {\r\n tempUrl: options.tempUrl,\r\n rainUrl:options.rainUrl,\r\n windUrl: options.windUrl,\r\n weatherInfoUrl: options.weatherInfoUrl\r\n };\r\n \r\n $('#ForecastDate').change(function() {\r\n console.log($(this).val());\r\n updateUrls();\r\n });\r\n\r\n updateWeatherInfo(function () {\r\n setDates(weatherInfo.TempDates);\r\n updateUrls();\r\n });\r\n }\r\n\r\n return {\r\n init: init,\r\n showLayer: showLayer,\r\n clearLayer: clearLayer,\r\n hide: hide,\r\n updateWeatherInfo: updateWeatherInfo\r\n };\r\n}());\r\n","var BaseModal = (function () {\r\n\r\n function BaseModal(apiClient) {\r\n this.apiClient = apiClient;\r\n this.eventHandlers = {\r\n 'closed': []\r\n };\r\n this.canClose = true;\r\n }\r\n\r\n BaseModal.prototype.diactivate = function () {\r\n this.$modal.hide();\r\n };\r\n\r\n BaseModal.prototype.loadContent = function(url, data) {\r\n const self = this;\r\n const $modal = ModalHelper.create().show().busy();\r\n\r\n self.$modal = $modal;\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n self.apiClient.load(url)\r\n .then((htmlContent) => {\r\n\r\n for (let key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n htmlContent = htmlContent.replace('\\${' + key + '}', data[key]);\r\n }\r\n }\r\n\r\n $modal.content(htmlContent).busy(false);\r\n $modal\r\n .on('click', '[js=close],.close', () => { self.close({ cancel: true }) })\r\n .on('keydown',\r\n e => {\r\n if (e.keyCode === 27) {\r\n self.close({ cancel: true });\r\n e.stopPropagation();\r\n }\r\n });\r\n $(document).on('click', '.modal.in', function (evt) {\r\n if (evt.target.className === 'modal fade in') {\r\n self.close({ cancel: true });\r\n }\r\n });\r\n _init($modal);\r\n resolve($modal);\r\n })\r\n .catch(() => {\r\n ModalHelper.showError($modal).busy(false);\r\n reject($modal);\r\n });\r\n\r\n });\r\n };\r\n\r\n BaseModal.prototype.reloadContent = function (url, data) {\r\n const self = this;\r\n const $modal = self.$modal;\r\n $modal.busy();\r\n\r\n return new Promise((resolve, reject) => {\r\n\r\n self.apiClient.load(url)\r\n .then((htmlContent) => {\r\n\r\n for (let key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n htmlContent = htmlContent.replace('\\${' + key + '}', data[key]);\r\n }\r\n }\r\n\r\n $modal.content(htmlContent).busy(false);\r\n _init($modal);\r\n resolve($modal);\r\n })\r\n .catch(() => {\r\n ModalHelper.showError($modal).busy(false);\r\n reject($modal);\r\n });\r\n\r\n });\r\n };\r\n\r\n BaseModal.prototype.show = function () {\r\n this.$modal.modal();\r\n };\r\n\r\n BaseModal.prototype.close = function (modalResult) {\r\n this.diactivate();\r\n this.$modal.remove();\r\n\r\n this.eventHandlers['closed'].forEach(function (handler) {\r\n handler(modalResult);\r\n });\r\n };\r\n\r\n BaseModal.prototype.closed = function (onClosed) {\r\n if (typeof onClosed !== 'function') {\r\n throw new ArgumentException(onClosed + ' is not a function.');\r\n }\r\n\r\n this.eventHandlers['closed'].push(onClosed);\r\n return this;\r\n };\r\n\r\n BaseModal.prototype.on = function (eventName, handler) {\r\n if (typeof handler !== 'function') {\r\n throw new ArgumentException('Parameter \"handler\" is not a function.');\r\n }\r\n if (!this.eventHandlers.hasOwnProperty(eventName))\r\n this.eventHandlers[eventName] = [];\r\n this.eventHandlers[eventName].push(handler);\r\n return this;\r\n };\r\n\r\n BaseModal.prototype.trigger = function (eventName, eventData) {\r\n var self = this;\r\n this.eventHandlers[eventName].forEach(function (handler) {\r\n handler(self, eventData);\r\n });\r\n };\r\n\r\n\r\n BaseModal.prototype.tryClose = function () {\r\n return true;\r\n };\r\n\r\n function _init($modal) {\r\n // Инициализация select2\r\n $('.select2', $modal).select2();\r\n // Навигация по клику на элемент select2\r\n $('.select2-selection__choice', $modal).on('click', function () {\r\n const option = Select2Helper().findOption($(this));\r\n const href = option.data(\"href\");\r\n if (href) {\r\n location.href = href;\r\n }\r\n });\r\n };\r\n\r\n return BaseModal;\r\n}());\r\n","var EmergencyMapModel = (function () {\r\n\r\n /**\r\n * Модель чрезвычайной ситуации\r\n * @property {int} id Идентификатор\r\n * @property {string} name\r\n * @property {string} type\r\n * @property {string} location\r\n * @property {double[]} coordinate Координата расположения чрезвычайной ситуации\r\n */\r\n function EmergencyMapModel(emergency) {\r\n if (emergency) {\r\n this.id = emergency.Id;\r\n this.name = emergency.Name;\r\n this.type = emergency.Type && emergency.Type.Name;\r\n this.location = emergency.Location;\r\n this.coordinate = [emergency.Latitude, emergency.Longitude];\r\n }\r\n }\r\n\r\n return EmergencyMapModel;\r\n}());\r\n","/**\r\n * Модель транспорта на карте\r\n * @property {int} id Идентификатор\r\n * @property {string} registrationNumber Регистрационный номер\r\n * @property {string} type Вид транспорта (из справочника видов ТС)\r\n * @property {double[]} coordinate Координата расположения транспорта\r\n */\r\nvar VehicleMapModel = (function () {\r\n\r\n /**\r\n * @constructor\r\n * @param {} vehicle\r\n */\r\n function VehicleMapModel(vehicle) {\r\n if (vehicle) {\r\n this.id = vehicle.Id;\r\n this.type = vehicle.Type;\r\n this.typeId = vehicle.TypeId;\r\n this.registrationNumber = vehicle.RegistrationNumber;\r\n this.coordinate = [vehicle.Latitude, vehicle.Longitude];\r\n this.speed = vehicle.Speed;\r\n }\r\n }\r\n\r\n return VehicleMapModel;\r\n}());\r\n","var VideoCameraMapModel = (function () {\r\n\r\n /**\r\n * Модель камеры видеонаблюдения\r\n * @property {int} id Идентификатор\r\n * @property {string} name Название камеры видеонаблюдения\r\n * @property {double[]} coordinate Координата расположения камеры видеонаблюдения\r\n */\r\n function VideoCameraMapModel(videoCamera) {\r\n if (videoCamera) {\r\n this.id = videoCamera.Id;\r\n this.name = videoCamera.Name;\r\n this.coordinate = [videoCamera.Latitude, videoCamera.Longitude];\r\n }\r\n }\r\n\r\n return VideoCameraMapModel;\r\n}());\r\n","var WeatherStationMapModel = (function () {\r\n\r\n /**\r\n * Модель камеры видеонаблюдения\r\n * @property {int} id Идентификатор\r\n * @property {string} name Название станции\r\n * @property {double[]} coordinate Координата расположения станции\r\n */\r\n function WeatherStationMapModel(weatherStation) {\r\n if (weatherStation) {\r\n this.id = weatherStation.Id;\r\n this.name = weatherStation.Name;\r\n this.coordinate = [weatherStation.Latitude, weatherStation.Longitude];\r\n }\r\n }\r\n\r\n return WeatherStationMapModel;\r\n}());\r\n","var DotObject = (function () {\r\n\r\n function deleteObject(ids) {\r\n return $.ajax({\r\n url: Url.action('api/dotObjects'),\r\n type: 'DELETE',\r\n dataType: 'json',\r\n data: { ids: ids }\r\n })\r\n .done(() => {\r\n _refreshTable(true, ids);\r\n });\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(DotObjectViewModal, id,\r\n (dotObjectId) => {\r\n deleteObject([dotObjectId]).done(() => {\r\n modal.close();\r\n });\r\n },\r\n (dotObjectId) => {\r\n _showOnMap([dotObjectId]);\r\n })\r\n .on('closed', (modalResult) => {\r\n _refreshTable();\r\n $('video').trigger('pause');\r\n });\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObject(ids);\r\n }\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(DotObjectEditModal)\r\n .on('closed',\r\n (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n };\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#DotObjectListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, false, idsForDeselect);\r\n };\r\n\r\n function _showOnMap(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.map(ObjectTypes.DotObject, ids);\r\n }\r\n };\r\n\r\n return {\r\n show: _show,\r\n del: _delete,\r\n add: _add,\r\n showOnMap: _showOnMap\r\n };\r\n}());\r\n","var DotObjectType = (function () {\r\n\r\n function deleteObject(ids) {\r\n return $.ajax({\r\n url: Url.action('api/dotObjectTypes'),\r\n type: 'DELETE',\r\n dataType: 'json',\r\n data: { ids: ids }\r\n })\r\n .done((r) => _refreshTable(true, ids))\r\n .fail((e) => _showError(e));\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(DotObjectTypeViewModal, id,\r\n (dotObjectId) => {\r\n deleteObject([dotObjectId]).done(() => {\r\n modal.close();\r\n });\r\n })\r\n .on('closed', (modalResult) => {\r\n _refreshTable();\r\n });\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObject(ids);\r\n }\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(DotObjectTypeEditModal)\r\n .on('closed',\r\n (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n };\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#DotObjectTypeListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, false, idsForDeselect);\r\n };\r\n\r\n function _showError(e) {\r\n var errorMessage = (e && e.responseJSON && e.responseJSON.Error)\r\n ? e.responseJSON.Error\r\n : 'При удалении произошла ошибка.';\r\n ModalConductor.activate(MessageModal, $('#message-tmpl').text(), 'Ошибка!', errorMessage);\r\n };\r\n\r\n return {\r\n show: _show,\r\n del: _delete,\r\n add: _add,\r\n };\r\n}());\r\n","var Material = (function () {\r\n\r\n function deleteObject(ids) {\r\n return $.ajax({\r\n url: Url.action('api/materials'),\r\n type: 'DELETE',\r\n dataType: 'json',\r\n data: { ids: ids }\r\n })\r\n .done((r) => _refreshTable(true, ids))\r\n .fail((e) => _showError(e));\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(MaterialViewModal, id,\r\n (id) => {\r\n deleteObject([id]).done(() => {\r\n modal.close();\r\n });\r\n })\r\n .on('closed', (modalResult) => {\r\n _refreshTable();\r\n });\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObject(ids);\r\n }\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(MaterialEditModal)\r\n .on('closed',\r\n (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n };\r\n\r\n function _refreshTable(resetChecked, deselectOnlyId) {\r\n var table = $('#MaterialListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, null, deselectOnlyId);\r\n };\r\n\r\n function _showError(e) {\r\n var errorMessage = (e && e.responseJSON && e.responseJSON.Error)\r\n ? e.responseJSON.Error\r\n : 'При удалении произошла ошибка.';\r\n ModalConductor.activate(MessageModal, $('#message-tmpl').text(), 'Ошибка!', errorMessage);\r\n };\r\n\r\n return {\r\n show: _show,\r\n del: _delete,\r\n add: _add\r\n };\r\n}());\r\n","var Notifications = (function () {\r\n var showUrl,\r\n readUrl,\r\n tableId;\r\n\r\n function init() {\r\n showUrl = Url.action('api/notifications/{0}');\r\n readUrl = Url.action('api/notifications/read');\r\n tableId = '#NotificationsListItemViewModelTable';\r\n\r\n $(document).ready(function () {\r\n $(tableId).on('draw.dt', function () {\r\n var table = $(tableId).DataTable();\r\n\r\n table.rows().data().each(function (row, idx) {\r\n if (!row.ReadedOn) {\r\n $($('tbody tr', tableId)[idx]).addClass('text-bold');\r\n }\r\n });\r\n }); \r\n })\r\n .on('click', '#readed', function () {\r\n var control = $(this);\r\n $.ajax({\r\n url: readUrl,\r\n type: 'POST',\r\n data: {\r\n id: control.data('id')\r\n }\r\n })\r\n .success(function (result) {\r\n $(tableId).DataTable().ajax.reload(null, false);\r\n $('#newNotifications').html(result && result > 0 ? '' + result + '' : '');\r\n })\r\n .error(function (xhr, status, statusCode) {\r\n console.error(status + ': ' + statusCode);\r\n });\r\n\r\n control.closest('.modal').modal('hide');\r\n });\r\n }\r\n\r\n function show(id) {\r\n Popups.showPopup(showUrl.format(id), {}, $('#object-show-content'), $('#object-show'), function (result) { });\r\n }\r\n\r\n return {\r\n init: init,\r\n show: show\r\n };\r\n})()\r\n","var Road = (function() {\r\n\r\n function _deleteRoads(ids) {\r\n return $.ajax({\r\n url: Url.action('api/roads'),\r\n type: 'DELETE',\r\n dataType: 'json',\r\n data: { ids: ids }\r\n })\r\n .done(() => _refreshTable(true, ids))\r\n .fail(() => {\r\n alert('Удаление невозможно: ' + (ids.length === 1 ? 'с данной дорогой' : 'с одной или несколькими дорогами') + ' связаны участки облуживания, населенные пункты, протяженные объекты, точечные объекты, работы, ЧС, МС или КВН.');\r\n });\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n _deleteRoads(ids, true);\r\n }\r\n };\r\n\r\n function _show(id) {\r\n const modal = ModalConductor.activate(RoadViewModal, id,\r\n (roadId) => {\r\n _deleteRoads([roadId]).done(() => modal.close());\r\n },\r\n (roadId) => {\r\n _showOnMap([roadId]);\r\n })\r\n .on('closed', (modalResult) => _refreshTable());\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(RoadEditModal).on('closed', (modalResult) => _refreshTable());\r\n }\r\n\r\n function _showOnMap(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.map(ObjectTypes.Road, ids);\r\n }\r\n }\r\n\r\n function _refreshTable(resetChecked, deselectOnlyIds) {\r\n var table = $('#RoadListViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, null, deselectOnlyIds);\r\n };\r\n\r\n return {\r\n show: _show,\r\n add: _add,\r\n del: _delete,\r\n showOnMap: _showOnMap\r\n };\r\n}());\r\n","var VehicleHistory = (function () {\r\n\r\n function _init($parent, vehicleId, readonly) {\r\n\r\n var checkedRows = [];\r\n var historyTable = null;\r\n var $table = $parent.find('#VehicleTrackerHistoryListItemViewModelTable');\r\n if (historyTable == null) {\r\n var columnsDefs = $('#column-definition-second').text();\r\n if (columnsDefs != '') {\r\n var columns = JSON.parse(columnsDefs);\r\n var options = {\r\n ajax: Url.action('TrackersHistoryTable/TableData/{0}'.format(vehicleId)),\r\n rowId: 'Id',\r\n language: {\r\n url: Url.content(\"Content/Inspinia/plugins/dataTables/languages/Russian.json\"),\r\n select: {\r\n rows: {\r\n _: 'Выбрано %d строк',\r\n 1: 'Выбрана 1 строка',\r\n 2: 'Выбрано 2 строки',\r\n 3: 'Выбрано 3 строки',\r\n 4: 'Выбрано 4 строки'\r\n }\r\n }\r\n },\r\n processing: true,\r\n pageLength: 100,\r\n lengthMenu: [10, 25, 50, 100],\r\n serverSide: true,\r\n searching: true,\r\n bFilter: false,\r\n dom: \"<'row'<'col-sm-6'l><'col-sm-6'p>>\" +\r\n \"<'row'<'col-sm-12'tr>>\" +\r\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\r\n columnDefs: [\r\n {\r\n orderable: false,\r\n className: '',\r\n targets: 0\r\n }\r\n ],\r\n order: [[4, 'asc']]\r\n };\r\n if (!readonly) {\r\n options.select = {\r\n style: 'multi+shift',\r\n selector: 'td:first-child'\r\n };\r\n options.columnDefs.push({\r\n orderable: false,\r\n className: 'select-checkbox',\r\n targets: 0\r\n });\r\n }\r\n\r\n for (var i = 0; i < columns.length; ++i) {\r\n options.columnDefs.push({\r\n name: columns[i].Name,\r\n data: columns[i].Name,\r\n orderable: columns[i].IsSortable,\r\n visible: columns[i].IsVisible,\r\n className: columns[i].CssClass,\r\n targets: i + 1\r\n });\r\n }\r\n\r\n historyTable = $table.DataTable(options)\r\n .on('page', function(e, settings) {\r\n checkAllItem();\r\n })\r\n .on('select', function(event, api, type, index) {\r\n if (api && index) {\r\n // в index возможен массив выбранных строк, поэтому запускаем цикл по всем элементам index\r\n $.each(index, function(idx, number) {\r\n var rowId = api.row(number).id(); // Получаем идентификатор по номеру строки\r\n\r\n if (rowId && rowId != \"undefined\" && !checkedRows.contains(rowId)) {\r\n checkedRows.push(rowId);\r\n }\r\n });\r\n }\r\n checkAllItem();\r\n })\r\n .on('deselect', function(event, api, type, index) {\r\n $.each(index, function(idx, number) {\r\n var rowId = api.row(number).id();\r\n if (rowId && rowId != \"undefined\") {\r\n checkedRows.removeValue(rowId);\r\n }\r\n });\r\n\r\n checkAllItem();\r\n });\r\n\r\n columns\r\n .filter(function(column) { return column.IsFilterable })\r\n .forEach(function(column) {\r\n ColumnsFilters[column.ColumnFilter.InitJsMethod](historyTable, $('#column_{Name}_filter'.format(column), $table), historyTable.column(column.Name + ':name'));\r\n });\r\n }\r\n } else {\r\n refreshTable();\r\n }\r\n\r\n $parent\r\n .on('click', '[js=add-tracker-history]', function() {\r\n editHistory(null, vehicleId);\r\n })\r\n .on('click', '[js=delete-tracker-history]', function() {\r\n deleteHistory($.merge([], checkedRows));\r\n });\r\n $table\r\n .on('click', 'td:not(.select-checkbox)', function () {\r\n if (!readonly) {\r\n var row = historyTable.row($(this).parent()).data();\r\n editHistory(row.Id, vehicleId);\r\n }\r\n })\r\n .on('click', '[js=check-all]', function() {\r\n var checkVal = $(this).toggleClass('selected').hasClass('selected'); // Изменяем значение флага на противоположное, и записываем текущее значение\r\n var selectedRow = []; // массив id\r\n var info = historyTable.page.info(); // Получаем информацию о странице\r\n // Формируем массив id по всей странице\r\n for (var i = 0; i < info.length; i++) {\r\n if (Number(historyTable.row(i).id())) {\r\n selectedRow.push(i);\r\n }\r\n }\r\n if (checkVal) {\r\n historyTable.rows(selectedRow).select(); // Устанавливаем выделение для всех выбранных строк\r\n } else {\r\n historyTable.rows(selectedRow).deselect(); // Снимаем выделение для всех выбранных строк\r\n }\r\n });\r\n\r\n // Функция изменения состояния мастер чекбокса\r\n function checkAllItem() {\r\n // Кол-во выбранных строк\r\n var rowsSelectedCount = 0;\r\n // Кол-во строк которые можно выбрать\r\n var rowsAllCount = 0;\r\n var info = historyTable.page.info(); // Получаем информацию о странице\r\n for (var i = 0; i < info.length; i++) {\r\n if (Number(historyTable.row(i).id())) {\r\n rowsAllCount++;\r\n if (checkedRows.contains(historyTable.row(i).id())) {\r\n rowsSelectedCount++;\r\n }\r\n }\r\n }\r\n // Если кол-во строк на странице равно кол-ву выбранных строк, то устанавливаем флаг в true\r\n $('[js=check-all]').toggleClass('selected', rowsSelectedCount > 0 && rowsSelectedCount === rowsAllCount);\r\n }\r\n\r\n function editHistory(historyId, vehicleId) {\r\n ModalConductor.activate(VehicleHistoryEditModal, historyId, vehicleId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n $('[js=tracker-id-info]').val(modalResult.trackerNumber);\r\n $('[js=tracker-type-info]').val(modalResult.trackerType);\r\n refreshTable();\r\n }\r\n });\r\n }\r\n\r\n function refreshTable(resetChecked, idsForDeselect) {\r\n if (resetChecked) {\r\n resetCheckedRows(table, idsForDeselect);\r\n }\r\n historyTable.ajax.reload(null, false);\r\n }\r\n\r\n function resetCheckedRows(idsForDeselect) {\r\n if (idsForDeselect) {\r\n if (idsForDeselect.length) {\r\n checkedRows = checkedRows.filter(function(rowId) {\r\n return idsForDeselect.indexOf(rowId) !== -1 && idsForDeselect.indexOf(Number(rowId)) !== -1;;\r\n });\r\n }\r\n } else {\r\n historyTable.rows().deselect();\r\n checkedRows.length = 0;\r\n }\r\n checkAllItem();\r\n }\r\n\r\n\r\n function deleteObject(ids) {\r\n $parent.busy();\r\n return $.ajax({\r\n url: Url.action('api/vehicles/{0}/history'.format(vehicleId)),\r\n type: 'DELETE',\r\n dataType: 'json',\r\n data: { ids: ids }\r\n })\r\n .done((data) => {\r\n $('[js=tracker-id-info]').val(data.trackerNumber);\r\n $('[js=tracker-type-info]').val(data.trackerType);\r\n refreshTable(true, ids);\r\n $parent.busy(false);\r\n })\r\n .fail(() => {\r\n alert('Удаление данных записей невозможно');\r\n $parent.busy(false);\r\n });\r\n };\r\n\r\n function deleteHistory(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObject(ids);\r\n }\r\n };\r\n }\r\n\r\n return {\r\n Init: _init\r\n };\r\n\r\n}());\r\n","var Contract = (function () {\r\n\r\n function deleteObjects(ids) {\r\n return $.ajax({\r\n url: Url.action('api/contracts'),\r\n type: 'DELETE',\r\n data: { ids: ids }\r\n })\r\n .done(() => {\r\n _refreshTable(true, ids);\r\n });\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(ContractViewModal, id,\r\n (contractId) => {\r\n deleteObjects([contractId]).done(() => {\r\n modal.close();\r\n });\r\n })\r\n .on('closed', (modalResult) => _refreshTable());\r\n }\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObjects(ids);\r\n }\r\n }\r\n\r\n function _add() {\r\n ModalConductor.activate(ContractEdtiModal)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n }\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#ContractListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, false, idsForDeselect);\r\n };\r\n\r\n return {\r\n show: _show,\r\n del: _delete,\r\n add: _add\r\n };\r\n}())\r\n","var Contractor = (function () {\r\n\r\n function deleteObjects(ids) {\r\n return $.ajax({\r\n url: Url.action('api/contractors'),\r\n type: 'DELETE',\r\n data: { ids: ids }\r\n })\r\n .done(() => {\r\n _refreshTable(true, ids);\r\n })\r\n .fail(() => {\r\n alert('Удаление невозможно: с данным подрядчиком связаны ТС, работы, протяженные объекты, точечные объекты, населенные пункты или контракты.');\r\n });\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(ContractorViewModal, id,\r\n (contractorId) => {\r\n deleteObjects([contractorId]).done(() => {\r\n modal.close();\r\n });\r\n })\r\n .on('closed', (modalResult) => _refreshTable());\r\n }\r\n\r\n function _del(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObjects(ids);\r\n }\r\n }\r\n\r\n function _add() {\r\n ModalConductor.activate(ContractorEditModal)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n }\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#ContractorListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, false, idsForDeselect);\r\n };\r\n\r\n return {\r\n show: _show,\r\n del: _del,\r\n add: _add\r\n };\r\n}())\r\n","var Emergency = (function () {\r\n\r\n var isAdmin;\r\n\r\n function deleteEmergensies(ids) {\r\n return $.ajax({\r\n url: Url.action('api/emergencies'),\r\n type: 'DELETE',\r\n data: { ids: ids }\r\n })\r\n .done(() => {\r\n _refreshTable(true, ids);\r\n });\r\n };\r\n\r\n function init(option) {\r\n isAdmin = option.isAdmin;\r\n }\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(EmergencyViewModal, id, isAdmin,\r\n (emergencyId) => {\r\n deleteEmergensies([emergencyId]).done(() => {\r\n modal.close();\r\n });\r\n },\r\n (emergencyId) => {\r\n _showOnMap([emergencyId]);\r\n })\r\n .on('closed', (modalResult) => _refreshTable());\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteEmergensies(ids);\r\n }\r\n };\r\n\r\n function _showOnMap(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.map(ObjectTypes.Emergency, ids);\r\n }\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(EmergencyEditModal)\r\n .on('closed',\r\n (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n };\r\n\r\n function _emergenciyScenarios() {\r\n ModalConductor.activate(EmergencyScenariosModal);\r\n };\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#EmergencyListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, false, idsForDeselect);\r\n };\r\n\r\n return {\r\n init: init,\r\n show: _show,\r\n del: _delete,\r\n showOnMap: _showOnMap,\r\n add: _add,\r\n scenario: _emergenciyScenarios\r\n };\r\n}())\r\n","var GeneralReport = (function () {\r\n\r\n //http://render.openstreetmap.org/cgi-bin/export?bbox=77.72827148437501,50.57626025689928,87.38525390625001,54.50832650029076&scale=1600000&format=svg\r\n //inkscape map.svg --export-png=map.png --export-dpi=300\r\n\r\n //Leaflet объект карты\r\n var _map = null;\r\n var view = {};\r\n var loadingPlaceholder = '';\r\n var option = function (text, value, selected) {\r\n return ''.format(value, text, selected ? 'selected' : '');\r\n };\r\n var _config = {\r\n zoom: 9,\r\n center: AppConfig.defaultMapCenter,\r\n maxBounds: AppConfig.defaultMapBounds,\r\n //географические границы области\r\n bounds: [[50.57626025689928, 77.72827148437501], [54.50832650029076, 87.38525390625001]]\r\n };\r\n var _image = null;\r\n\r\n //Функция для получения цвета линии для различных типов работ\r\n var getWorkCategoryColors;\r\n\r\n\r\n /**\r\n * Функция инициализации страницы отчета\r\n */\r\n function init(workCategoryColors) {\r\n\r\n var $datetimepickerFrom = $('#From').closest('.date');\r\n var $datetimepickerTo = $('#To').closest('.date');\r\n var datetimepickerFrom = $datetimepickerFrom.datetimepicker({\r\n locale: 'ru',\r\n format: 'DD-MM-YYYY',\r\n allowInputToggle: true\r\n });\r\n var datetimepickerTo = $datetimepickerTo.datetimepicker({\r\n locale: 'ru',\r\n format: 'DD-MM-YYYY',\r\n allowInputToggle: true,\r\n useCurrent: false //Important! See issue #1075\r\n });\r\n // Если у инпута \"С\" есть значение, то ограничиваем datetimepicker \"По\"\r\n if ($('#From').val()) {\r\n $datetimepickerTo.data(\"DateTimePicker\").minDate($('#From').val());\r\n }\r\n // Если у инпута \"По\" есть значение, то ограничиваем datetimepicker \"С\"\r\n if ($('#To').val()) {\r\n $datetimepickerFrom.data(\"DateTimePicker\").maxDate($('#To').val());\r\n }\r\n // Если произошел ввод значения в datetimepicker \"С\" есть значение, то ограничиваем datetimepicker \"По\"\r\n $datetimepickerFrom.on(\"dp.change\", function (e) {\r\n $datetimepickerTo.data(\"DateTimePicker\").minDate(e.date);\r\n });\r\n // Если произошел ввод значения в datetimepicker \"По\" есть значение, то ограничиваем datetimepicker \"С\"\r\n $datetimepickerTo.on(\"dp.change\", function (e) {\r\n $datetimepickerFrom.data(\"DateTimePicker\").maxDate(e.date);\r\n });\r\n\r\n initMap();\r\n\r\n //$cmbRoads\r\n view.$cmbRoads = $('[name=Roads]');\r\n view.$cmbRoads.chosen();\r\n view.$cmbRoads.empty().append(loadingPlaceholder);\r\n\r\n //$cmbWorks\r\n view.$cmbWorks = $('[name=Works]');\r\n view.$cmbWorks.chosen();\r\n view.$cmbWorks.empty().append(loadingPlaceholder);\r\n\r\n //$txtFrom\r\n view.$txtFrom = $('[name=From]');\r\n\r\n //$txtTo\r\n view.$txtTo = $('[name=To]');\r\n\r\n //$btnSubmit\r\n view.$btnSubmit = $('[js=submit]');\r\n view.$btnSubmit.on('click', submitClicked);\r\n\r\n //$btnGenerate\r\n view.$btnGenerate = $('[js=generate]');\r\n view.$btnGenerate.on('click', generateClicked);\r\n\r\n view.busy = function (isBusy) {\r\n $('#general-report').toggleClass('busy', isBusy);\r\n };\r\n\r\n getWorkCategoryColors = function(id) {\r\n return workCategoryColors[id] || '#FFFFCC';\r\n };\r\n\r\n onInitFinish();\r\n };\r\n\r\n //Вернет коллекцию ЗО\r\n function getServiceZones(data) {\r\n return $.get(Url.api('api/serviceZones/map'), data);\r\n }\r\n\r\n /**\r\n * Создаст слой для зон обслуживания\r\n * @param {ServiceZone} serviceZone Модель зоны обслуживания\r\n * @returns {Layer}\r\n */\r\n function createServiceZoneLayer(serviceZone) {\r\n if (serviceZone.Coordinates.length <= 0) return undefined;\r\n\r\n var polygonPoints = MapHelper.convertToLatLng(serviceZone.Coordinates);\r\n\r\n var polygon = new L.Polygon(polygonPoints, {\r\n color: '#' + serviceZone.Color.Name,\r\n weight: 2,\r\n smoothFactor: 1,\r\n opacity: .9,\r\n fillOpacity: .8,\r\n clickable: false\r\n });\r\n\r\n return polygon;\r\n };\r\n\r\n // Обновит легенду ЗО\r\n function serviceZoneLegendUpdate(serviceZone, $g, pointRect, pointSpan) {\r\n var serviceZoneColor = serviceZone.Color ? serviceZone.Color.Name : 'ffffff';\r\n var serviceZoneContractor =serviceZone.Contractor ? serviceZone.Contractor.Name : '';\r\n var legendItemRect = '';\r\n var legendItemText = ' - ' + serviceZoneContractor + ' ';\r\n\r\n // Изменение позиции для следующего эл-та в легенде\r\n pointRect.y += 40;\r\n pointSpan.y += 40;\r\n\r\n $g.append(legendItemRect).append(legendItemText);\r\n\r\n return { g: $g, pointRect: pointRect, pointSpan: pointSpan }\r\n }\r\n\r\n // Добавит Зоны Обслуживания на карту\r\n function drawServiceZone(legend) {\r\n var getData = function (page, count) {\r\n return getServiceZones({ page: page, count: count });\r\n };\r\n\r\n var pointRect = { x: 30, y: 80 };\r\n var pointSpan = { x: 110, y: 100 };\r\n\r\n var $g = $(legend);\r\n\r\n var newLegendAsync = getData(0, 100).then(function (response) {\r\n response.Data.forEach(function (serviceZone) {\r\n var layer = createServiceZoneLayer(serviceZone);\r\n if (layer) _map.addLayer(layer);\r\n layer.bringToBack(); // Всегда в самом низу\r\n\r\n var newLegendData = serviceZoneLegendUpdate(serviceZone, $g, pointRect, pointSpan);\r\n $g = newLegendData.g;\r\n pointRect = newLegendData.pointRect;\r\n pointSpan = newLegendData.pointSpan;\r\n });\r\n for (var i = 1; i < response.PageCount; i++) {\r\n getData(i, 100).then(function (response2) {\r\n response2.Data.forEach(function (serviceZone) {\r\n var layer = createServiceZoneLayer(serviceZone);\r\n if (layer) _map.addLayer(layer);\r\n layer.bringToBack(); // Всегда в самом низу\r\n\r\n var newLegendData = serviceZoneLegendUpdate(serviceZone, $g, pointRect, pointSpan);\r\n $g = newLegendData.g;\r\n pointRect = newLegendData.pointRect;\r\n pointSpan = newLegendData.pointSpan;\r\n });\r\n });\r\n }\r\n\r\n // Изменение размера легенды\r\n var g = $g.children().first();\r\n var lgPosition = response.PageCount * response.Data.length * 50;\r\n $(g).attr('height', Number($(g).attr('height')) + lgPosition);\r\n\r\n legend = $g[0].outerHTML;\r\n\r\n return [legend, lgPosition];\r\n });\r\n\r\n return newLegendAsync;\r\n }\r\n\r\n function initLegendsPosition(_map, legend, plPoint, legendZone, plzPoint) {\r\n var pl = _map.latLngToLayerPoint([50.57626025689928, 87.38525390625001]);\r\n // Сдвиг легенды условных обозначений вверх\r\n pl.x -= plPoint.x;\r\n pl.y -= plPoint.y;\r\n\r\n L.DomUtil.setPosition(legend, pl);\r\n\r\n var plz = _map.latLngToLayerPoint([50.57626025689928, 87.38525390625001]);\r\n // Сдвиг легенды Зон Обслуживания вверх\r\n plz.x -= plzPoint.x;\r\n plz.y -= plzPoint.y;\r\n\r\n L.DomUtil.setPosition(legendZone, plz);\r\n }\r\n\r\n /**\r\n * Инициализирует карту Leaflet\r\n */\r\n function initMap() {\r\n\r\n //var grayscale = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {\r\n // attribution: '© OpenStreetMap contributors',\r\n // noWrap: true\r\n //});\r\n //var streets = L.tileLayer('http://{s}.tile.thunderforest.com/transport/{z}/{x}/{y}.png', {\r\n // attribution: '© OpenStreetMap contributors',\r\n // noWrap: true\r\n //});\r\n //var grayscale2 = L.tileLayer('https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png', {\r\n // attribution: '© OpenStreetMap contributors',\r\n // noWrap: true\r\n //});\r\n\r\n if (_map) {\r\n _map.remove();\r\n }\r\n\r\n _map = L.map('map', {\r\n zoom: _config.zoom,\r\n minZoom: _config.zoom - 2,\r\n maxZoom: _config.zoom + 1,\r\n //layers: [grayscale],\r\n maxBounds: L.latLngBounds(_config.maxBounds[0], _config.maxBounds[1]),\r\n zoomReverse: true,\r\n center: _config.center,\r\n renderer: L.svg({ padding: 2 })\r\n });\r\n\r\n //создаем два масштабиремых SVG слоя для отображения изображения карты ...\r\n _map.addLayer(L.SvgScaleOverlay({ pane: 'tilePane' }));\r\n //... и для отображения попапов\r\n _map.addLayer(L.SvgScaleOverlay({ pane: 'popupPane' }));\r\n\r\n //вычисляем геометрические границы и размеры карты\r\n var points = _config.bounds.map(function (x) { return _map.latLngToLayerPoint(x); });\r\n var bounds = L.bounds(points);\r\n var size = bounds.getSize();\r\n\r\n\r\n var imgUrl = Url.content('Content/img/general-report-map.png');\r\n\r\n if (!_image) {\r\n _image = new Image();\r\n _image.src = imgUrl;\r\n }\r\n\r\n var svg = $(_map.getPane('tilePane')).find('svg > g');\r\n svg.append(SvgHelper.create('image', {\r\n 'xlink:href': imgUrl,\r\n x: bounds.min.x,\r\n y: bounds.min.y,\r\n height: size.y,\r\n width: size.x\r\n }));\r\n\r\n\r\n svg = $(_map.getPane('popupPane')).find('svg > g');\r\n\r\n var legend = SvgHelper.create('g', {});\r\n legend.innerHTML = $('#legend-tmpl').html();\r\n svg.append(legend);\r\n\r\n var legendZone = SvgHelper.create('g', {});\r\n legendZone.innerHTML = $('#legend-zone-tmpl').html();\r\n svg.append(legendZone);\r\n\r\n // Сдвиг легенд\r\n initLegendsPosition(_map, legend, { x: 620, y: 620 }, legendZone, { x: 820, y: 100 });\r\n\r\n drawServiceZone(legendZone.innerHTML)\r\n .done(function (response) {\r\n legendZone.innerHTML = response[0];\r\n svg.append(legendZone);\r\n\r\n // Сдвиг легенд\r\n initLegendsPosition(_map, legend, { x: 620, y: (620 + response[1]) }, legendZone, { x: 820, y: (100 + response[1]) });\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Выполнится когда закончится инициализация представления страницы\r\n */\r\n function onInitFinish() {\r\n //загружаем справочник дорог\r\n getRoads()\r\n .done(function (roads) {\r\n var options = roads.map(function (x) { return option(x.Name, x.Id); });\r\n view.$cmbRoads.empty().append(options).trigger(\"chosen:updated\");\r\n });\r\n //загружаем справочник работ\r\n getWorks(view.$cmbRoads.val())\r\n .done(function (works) {\r\n var options = works.map(function (x) { return option(x.Name, x.Id); });\r\n view.$cmbWorks.empty().append(options).trigger(\"chosen:updated\");\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Обработает событие нажатия кнопки \"Применить\"\r\n */\r\n function submitClicked() {\r\n var roadIds = view.$cmbRoads.val();\r\n var workIds = view.$cmbWorks.val();\r\n var from = view.$txtFrom.val();\r\n var to = view.$txtTo.val();\r\n\r\n view.busy(true);\r\n\r\n getReport(roadIds, workIds, from, to).done(function (reportData) {\r\n drawReport(reportData);\r\n view.busy(false);\r\n });\r\n };\r\n\r\n /**\r\n * Обработает событие нажатия кнопки \"Сгенерировать\"\r\n * @returns {} \r\n */\r\n function generateClicked() {\r\n\r\n //_map.on('zoomend', function () {\r\n // _map.off('zoomend');\r\n //});\r\n\r\n view.busy(true);\r\n\r\n _map.setZoom(_config.zoom);\r\n _map.panTo(_config.center);\r\n\r\n //Установил здесь timeout для того, чтобы успели обновиться слои L.SvgScaleOverlay.\r\n //Если неоходимо убрать timeout, то нужно учитывать что слои L.SvgScaleOverlay сами подписываются на события 'moveend'\r\n //и не уведомляют, когда заканчивают свою отрисовку\r\n setTimeout(function () {\r\n\r\n exportToBase64()\r\n .then(function(base64Image) {\r\n var docDefinition = {\r\n pageSize: 'A3',\r\n pageOrientation: 'landscape',\r\n pageMargins: [15, 15, 15, 15],\r\n content: [\r\n {\r\n image: base64Image,\r\n width: 1160,\r\n height: 777\r\n }\r\n ]\r\n };\r\n pdfMake.createPdf(docDefinition).download('Общий отчет.pdf');\r\n view.busy(false);\r\n })\r\n .catch(function(ex) {\r\n console.log(ex);\r\n alert('Отчет не построен');\r\n view.busy(false);\r\n });\r\n\r\n }, 2000); //2 секунды ждем отрисовку карты\r\n };\r\n\r\n /**\r\n * Отрисует отчет на карте\r\n * @param {} report Модель отчета\r\n */\r\n function drawReport(report) {\r\n\r\n initMap();\r\n\r\n report.roads.forEach(function (road) {\r\n drawRoad(road);\r\n });\r\n report.works.forEach(function (work) {\r\n var road = report.roads.filter(function (x) { return x.Id === work.RoadId; })[0];\r\n drawWork(work, road);\r\n });\r\n };\r\n\r\n /**\r\n * Нарисует дорогу на карте\r\n * @param {WorkGeneralReportViewModel} work Модель дороги\r\n */\r\n function drawRoad(road) {\r\n var coordinates = MapHelper.convertToLatLng(road.Coordinates);\r\n L.polyline(coordinates, {\r\n color: road.Type.Id === 1 ? \"#A52A2A\" : road.Type.Id === 2 ? \"#393939\" : \"#808080\",\r\n weight: 2,\r\n smoothFactor: 1,\r\n opacity: .8\r\n }).addTo(_map);\r\n };\r\n\r\n /**\r\n * Нарисует дорогу на карте\r\n * @param {WorkGeneralReportViewModel} work Модель работы\r\n * @param {} road Модель дороги\r\n */\r\n function drawWork(work, road) {\r\n\r\n if (!road) {\r\n console.error('Road {RoadId} not found'.format(work));\r\n return;\r\n }\r\n\r\n //конвертируем наши координаты в координаты Leaflet\r\n var roadCoordinates = MapHelper.convertToLatLng(road.Coordinates);\r\n\r\n //получаем координаты участка работы\r\n var coordinates = MapHelper.getCoordinatesByStartEnd(roadCoordinates, (work.StartKm - road.StartKm)* 1e3, (work.StopKm - road.StartKm) * 1e3);\r\n\r\n if (coordinates.length === 0) {\r\n console.error('Work {RoadId} has no coordinates'.format(work));\r\n return;\r\n }\r\n\r\n //рисуем участок работы\r\n L.polyline(coordinates, {\r\n color: getWorkCategoryColors(work.WorkCategoryId),\r\n weight: 8,\r\n smoothFactor: 0,\r\n opacity: 1,\r\n lineCap: 'butt'\r\n }).addTo(_map);\r\n\r\n //географическая точка на участке дороги, на которую указывает popup\r\n var location = {};\r\n if (Array.isArray(coordinates[0])) {\r\n location = coordinates[0][0];\r\n } else {\r\n location = coordinates[0];\r\n }\r\n\r\n var position = _map.latLngToLayerPoint(location);\r\n\r\n var text = work.Name + '\\r\\n' + road.Name + '\\r\\n'\r\n + 'км ' + work.StartKm.toFixed(3).replace('.', '+')\r\n + ' - ' + work.StopKm.toFixed(3).replace('.', '+');\r\n\r\n $.each(work.LongObjects, function (longObject) {\r\n if (longObject.Name) {\r\n text += '\\r\\n' + longObject.Name;\r\n }\r\n });\r\n\r\n //добавляем balloon для работы\r\n addBalloon(location, position, text, {\r\n background: work.IsContinued ? '#C5D373' : '#F6AD71'\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Загрузит с сервера модели дорог\r\n * @returns {Object} Объект promise\r\n */\r\n function getRoads() {\r\n return $.getJSON(Url.api('roads/min'));\r\n };\r\n\r\n /**\r\n * Загрузит с сервера модели работ по идентификатору дороги\r\n * @param {number[]} roadIds Идентификаторы дорог\r\n * @returns {Object} Объект promise\r\n */\r\n function getWorks(roadIds) {\r\n return $.getJSON(Url.api('works/min'), { roadIds: roadIds });\r\n };\r\n\r\n /**\r\n * Загрузит с сервера данные для формирования общего отчета\r\n * @param {number[]} roadIds Идентификаторы дорог\r\n * @param {number[]} workIds Идентификаторы работ\r\n * @param {Date} from Начальная дата отчета\r\n * @param {Date} to Конечная дата отчета\r\n * @returns {Object} Объект promise\r\n */\r\n function getReport(roadIds, workIds, from, to) {\r\n return $.post(Url.api('report/getGeneralReport'), {\r\n roadIds: roadIds || [],\r\n workIds: workIds || [],\r\n from: from,\r\n to: to\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Нарисует на карте balloon\r\n * \r\n * @public\r\n * @param {LatLng} location Точка на карте, на которую указывает balloon\r\n * @param {LatLng} position Точка на карте, от которой начнется отрисовка balloon\r\n * @param {string} content Содержимое balloon в виде HTML\r\n * @param {Object} params Дополнительные параметры для отрисовки balloon: цвет, шрифт и т.д. (пока неспецифицирован)\r\n */\r\n function addBalloon(location, position, content, params) {\r\n\r\n var svg = $(_map.getPane('popupPane')).find('svg > g');\r\n var text = SvgHelper.create('text', { y: 5, 'font-size': 16 });\r\n\r\n content.split('\\r\\n').forEach(function (line) {\r\n text.appendChild(SvgHelper.create('tspan', { x: 10, dy: '1.25em' }, line));\r\n });\r\n\r\n //преобразуем географические координаты, в координаты слоя\r\n var loc = _map.latLngToLayerPoint(location);\r\n\r\n var path = SvgHelper.create('path', { 'fill': params.background, 'stroke': '#333333', 'stroke-width': 1 });\r\n svg.append(path);\r\n\r\n var popup = SvgHelper.create('g', { 'class': 'leaflet-balloon' });\r\n popup.appendChild(text);\r\n svg.append(popup);\r\n popup.prepend(SvgHelper.create('rect', {\r\n 'x': 0, 'y': 0,\r\n 'width': popup.getBBox().width + 20,\r\n 'height': popup.getBBox().height + 20,\r\n 'fill': params.background\r\n }));\r\n\r\n\r\n L.DomUtil.setPosition(popup, position);\r\n L.DomEvent.disableClickPropagation(popup);\r\n\r\n var draggable = new L.Draggable(popup);\r\n draggable.enable();\r\n draggable.on('drag', function (e) {\r\n\r\n var w = popup.getBBox().width;\r\n var h = popup.getBBox().height;\r\n\r\n var t = L.DomUtil.getPosition(popup).y;\r\n var l = L.DomUtil.getPosition(popup).x;\r\n\r\n var a = t + h / 2;\r\n var b = l + w / 2;\r\n\r\n $(path).attr('d', ['M', l, a, 'Q', b, a, loc.x, loc.y, 'Q', b, a, l + w, a].join(' '));\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Генерирует изображение из карты\r\n */\r\n function exportToBase64() {\r\n\r\n var points = _config.bounds.map(function (x) { return _map.latLngToLayerPoint(x); });\r\n var bounds = L.bounds(points);\r\n var size = bounds.getSize();\r\n\r\n return new Promise(function (resolve, reject) {\r\n\r\n var scale = 1.5;\r\n var canvas = document.createElement('canvas');\r\n canvas.width = size.x * scale;\r\n canvas.height = size.y * scale;\r\n\r\n var ctx = canvas.getContext('2d');\r\n\r\n ctx.drawImage(_image, 0, 0, canvas.width, canvas.height);\r\n ctx.scale(scale, scale);\r\n ctx.translate(-bounds.min.x, -bounds.min.y);\r\n\r\n var svgLayers = [\r\n $(_map.getPane('tilePane')).find('svg')[0],\r\n $(_map.getPane('overlayPane')).find('svg')[0],\r\n $(_map.getPane('popupPane')).find('svg')[0]\r\n ];\r\n\r\n\r\n svgLayers.forEach(function (svg) {\r\n var svgText = new XMLSerializer().serializeToString(svg);\r\n ctx.drawSvg(svgText, 0, 0, svg.width.baseVal.value, svg.height.baseVal.value);\r\n });\r\n\r\n resolve(canvas.toDataURL());\r\n });\r\n };\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 {\r\n init: init\r\n };\r\n\r\n}());\r\n","var Kc2Report = (function () {\r\n\r\n var reportUrl,\r\n autoOpen;\r\n\r\n function init(option) {\r\n reportUrl = option.reportUrl;\r\n autoOpen = option.autoOpen;\r\n\r\n $(document)\r\n .ready(function () {\r\n $('.ibox-content').attr('style', 'height: ' + $(window).height() * 0.78 + 'px;');\r\n\r\n $('.btn.btn-sm.btn-default.m-r-md').closest('.m-b-xs').addClass('hidden');\r\n //$('#WorkListItemViewModelTable_wrapper button.btn.btn-default').addClass('hidden');\r\n\r\n if (autoOpen) {\r\n $('#option-show').modal();\r\n }\r\n $('#option-show').on('shown.bs.modal', function () {\r\n //$('.dataTables_wrapper .col-sm-6 .btn').hide();\r\n })\r\n })\r\n .on('click', '#report-generate', function () {\r\n $('#option-show').modal();\r\n })\r\n .on('click', '#report-save', function (e) {\r\n e.preventDefault();\r\n\r\n //getting data from our table\r\n var data_type = 'data:application/vnd.ms-excel';\r\n var table_div = $('#kc2-container');\r\n var table_html = table_div.outerHTML.replace(/ /g, '%20');\r\n\r\n var a = document.createElement('a');\r\n a.href = data_type + ', ' + table_html;\r\n a.download = 'exported_table_' + Math.floor((Math.random() * 9999999) + 1000000) + '.xls';\r\n a.click();\r\n });\r\n }\r\n\r\n function generate(option) {\r\n var idList = option.ids;\r\n if (idList.length > 0) {\r\n $.ajax({\r\n url: reportUrl,\r\n type: 'POST',\r\n dataType: 'html',\r\n data: {\r\n ids: idList\r\n }\r\n })\r\n .success(function (result) {\r\n $('.ibox-content').removeAttr('style');\r\n $('#kc2-container').html(result);\r\n\r\n $('#Kc2ReportTable').dataTable({\r\n //dom: 'Bfrtip',\r\n dom: \"<'row'<'col-sm-6'><'col-sm-6 text-right top-paginate'p>>\" +\r\n \"<'row'<'col-sm-12'tr>>\" +\r\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\r\n buttons: [],\r\n language: {\r\n url: Url.content('Content/Inspinia/plugins/dataTables/languages/Russian.json')\r\n },\r\n processing: false,\r\n searching: false,\r\n iDisplayLength: 45,\r\n columnDefs: [\r\n {\r\n orderable: false,\r\n targets: 0,\r\n visible: true\r\n },\r\n {\r\n orderable: false,\r\n targets: 1,\r\n visible: true\r\n },\r\n {\r\n orderable: false,\r\n targets: 2,\r\n visible: true\r\n },\r\n {\r\n orderable: false,\r\n targets: 3,\r\n visible: true\r\n },\r\n {\r\n orderable: false,\r\n targets: 4,\r\n visible: true\r\n },\r\n {\r\n orderable: false,\r\n targets: 5,\r\n visible: true\r\n },\r\n {\r\n orderable: false,\r\n targets: 6,\r\n visible: true\r\n },\r\n {\r\n orderable: false,\r\n targets: 7,\r\n visible: true\r\n },\r\n {\r\n orderable: false,\r\n targets: 8,\r\n visible: true\r\n }\r\n ],\r\n order: false\r\n });\r\n })\r\n .error(function (xhr, status, statusCode) {\r\n console.log(status + ': ' + statusCode);\r\n });\r\n } else {\r\n alert(\"Вы не выбрали ни одной работы. Отчет не будет сформирован.\");\r\n }\r\n }\r\n\r\n return {\r\n init: init,\r\n generateReport: generate\r\n };\r\n}())\r\n","\r\nvar LinerReport = (function () {\r\n\r\n function init(title) {\r\n ChosenSelect.Init();\r\n datetimepickerRangeInit({ $inputFrom: $('#From'), $inputTo: $('#To'), withSeconds: true });\r\n\r\n $('#export-to-pdf').on('click', function() {\r\n if ($('svg').length > 0) {\r\n svg_to_pdf(document.querySelector(\"svg\"), function(pdf) {\r\n download_pdf(title + '.pdf', pdf.output('dataurlstring'));\r\n });\r\n } else {\r\n alert(\"Отчет не загружен\");\r\n }\r\n });\r\n }\r\n\r\n function onBeginLoading() {\r\n $('button[type=\\\"submit\\\"]').attr('disabled', 'disabled');\r\n $('#report-data').html('');\r\n $('#report-trobbler').show();\r\n }\r\n\r\n function onCompleteLoading() {\r\n $('button[type=\\\"submit\\\"]').removeAttr('disabled');\r\n $('#report-trobbler').hide();\r\n }\r\n\r\n return {\r\n init: init,\r\n onBeginLoading: onBeginLoading,\r\n onCompleteLoading: onCompleteLoading\r\n };\r\n\r\n}());\r\n\r\n","var Locality = (function () {\r\n\r\n function _show(id) {\r\n const modal = ModalConductor.activate(LocalityViewModal, id,\r\n (localityId) => {\r\n _showOnMap([localityId]);\r\n })\r\n .on('closed', (modalResult) => _refreshTable());\r\n }\r\n\r\n function _showOnMap(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.map(ObjectTypes.Locality, ids);\r\n }\r\n }\r\n\r\n function _refreshTable() {\r\n $('#LocalityListItemViewModelTable').DataTable().ajax.reload(null, false);\r\n };\r\n\r\n return {\r\n show: _show,\r\n showOnMap: _showOnMap\r\n };\r\n}())\r\n","var LongObject = (function () {\r\n\r\n function deleteObjects(ids) {\r\n return $.ajax({\r\n url: Url.action('api/longObjects'),\r\n type: 'DELETE',\r\n data: { ids: ids }\r\n })\r\n .done(() => _refreshTable(true, ids));\r\n };\r\n\r\n function _show(id) {\r\n const modal = ModalConductor.activate(LongObjectViewModal, id,\r\n (longObjectId) => {\r\n deleteObjects([longObjectId]).done(() => {\r\n modal.close();\r\n });\r\n },\r\n (longObjectId) => {\r\n _showOnMap([longObjectId]);\r\n })\r\n .on('closed',\r\n (modalResult) => {\r\n _refreshTable();\r\n $('video').trigger('pause');\r\n });\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(LongObjectEditModal)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObjects(ids);\r\n }\r\n };\r\n\r\n function _showOnMap(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.map(ObjectTypes.LongObject, ids);\r\n }\r\n };\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#LongObjectListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, false, idsForDeselect);\r\n };\r\n\r\n return {\r\n show: _show,\r\n add: _add,\r\n del: _delete,\r\n showOnMap: _showOnMap\r\n };\r\n}());\r\n","var Map = (function () {\r\n \r\n var config = {\r\n count: 100 //Количество объектов карты, которые могут быть получены в результате запроса к серверу\r\n };\r\n\r\n var leafletMap;\r\n var popup;\r\n\r\n // Слои карты\r\n var mapOverlays = [];\r\n mapOverlays.get = function (name) {\r\n return this.filter(function (x) { return x.name === name; })[0];\r\n };\r\n mapOverlays.getGroup = function (group) {\r\n return this.filter(function (x) { return x.group === group; });\r\n };\r\n // Слой найденных объектов\r\n var searchOverlay;\r\n\r\n var cardContainerHeight = $(window).height() * 0.2;\r\n $('#modal-spinner').attr('style', 'height:' + cardContainerHeight + 'px;');\r\n\r\n function getDependedLayers(layers, currentLayer) {\r\n var dependedLayers = [];\r\n if (currentLayer.options && currentLayer.options.id) {\r\n var id = currentLayer.options.id;\r\n $.each(layers, function (idx, obj) {\r\n if (obj !== currentLayer && obj.options && obj.options.parentId && obj.options.parentId === id) {\r\n dependedLayers.push(obj);\r\n }\r\n });\r\n }\r\n if (currentLayer.eachLayer)\r\n currentLayer.eachLayer(function(obj) {\r\n dependedLayers.push(obj);\r\n });\r\n return dependedLayers;\r\n }\r\n\r\n function highlightLayer(ogj) {\r\n if (ogj._icon) {\r\n $(ogj._icon).toggleClass('popupopen');\r\n }\r\n else if (ogj._path) {\r\n // Для линий и полигонов класс добавляется только аттрибутом\r\n $(ogj._path).attr('class', 'leaflet-interactive popupopen');\r\n }\r\n }\r\n\r\n function hoverLayer(obj, hover) {\r\n if (obj._icon) {\r\n if (hover)\r\n $(obj._icon).addClass('leaflet-marker-icon--hover');\r\n else\r\n $(obj._icon).removeClass('leaflet-marker-icon--hover');\r\n }\r\n else if (obj._path) {\r\n if (hover) {\r\n var hoverClass = $(obj._path).attr('class');\r\n if (hoverClass.indexOf('leaflet-clickable--hover') === -1) {\r\n hoverClass += ' leaflet-clickable--hover';\r\n $(obj._path).attr('class', hoverClass);\r\n }\r\n } else {\r\n var classValue = $(obj._path).attr('class');\r\n classValue = classValue.replace('leaflet-clickable--hover', '');\r\n $(obj._path).attr('class', classValue.trim());\r\n }\r\n }\r\n }\r\n\r\n function loadWStationTooltip(url, marker) {\r\n marker.options.loadingTooltip = true;\r\n $.ajax({\r\n url: url,\r\n contentType: 'application/html; charset=utf-8',\r\n type: 'GET',\r\n dataType: 'html'\r\n })\r\n .success(function (result) {\r\n if (marker.getTooltip()) {\r\n marker.setTooltipContent(result);\r\n } else\r\n marker.bindTooltip(result, { opacity: 1, offset: L.point(0, -30) });\r\n marker.options.loadedTooltip = true;\r\n marker.options.loadingTooltip = false;\r\n })\r\n .error(function (xhr, status) {\r\n marker.options.loadingTooltip = false;\r\n console.error(status);\r\n });\r\n }\r\n\r\n function mapInit() {\r\n\r\n popup = L.popup();\r\n\r\n //L.Icon.Default.imagePath = Url.content('Content/Leaflet/images');\r\n L.Icon.Default.imagePath = AppConfig.imagePath;\r\n\r\n var grayscale = L.tileLayer(MapSettings.urlFormat, {\r\n attribution: '© OpenStreetMap contributors',\r\n noWrap: true\r\n });\r\n var streets = L.tileLayer('http://{s}.tile.thunderforest.com/transport/{z}/{x}/{y}.png', {\r\n attribution: '© OpenStreetMap contributors',\r\n noWrap: true\r\n });\r\n\r\n leafletMap = L.map('mapDiv', {\r\n zoomControl: false,\r\n zoom: AppConfig.defaultMapZoom,\r\n layers: [grayscale],\r\n maxBounds: L.latLngBounds(AppConfig.defaultMapBounds[0], AppConfig.defaultMapBounds[1]),\r\n minZoom: AppConfig.defaultMapMinZoom,\r\n zoomReverse: true,\r\n center: AppConfig.defaultMapCenter,\r\n editable: true\r\n });\r\n L.control.zoom({\r\n zoomInTitle: 'Приблизить',\r\n zoomOutTitle: 'Отдалить',\r\n position: 'topleft'\r\n }).addTo(leafletMap);\r\n\r\n Ruler.init(leafletMap);\r\n\r\n $('#mapDiv').on('xresize', function () {\r\n leafletMap.invalidateSize(true);\r\n });\r\n\r\n var $card;\r\n // Map Events\r\n leafletMap\r\n .on('popupopen', function(e) {\r\n e.popup.options.autoPan = false; // Отключает следование за картой при открытой карточке\r\n if (e.popup.options.id != undefined && e.popup.options.typeId != undefined) {\r\n leafletMap.closePopup();\r\n $('#sidebar-js').removeClass('menu-show');\r\n $card = showCard(CardUrls[ObjectTypes.getName(e.popup.options.typeId)].format(e.popup.options.id)); // Показываем наш\r\n }\r\n $.each(e.target._layers, function (idx, ogj) {\r\n // Если попап слоя идентичен открытому попапу, то активируем маркер или линию\r\n if (ogj._popup == e.popup) {\r\n highlightLayer(ogj);\r\n\r\n var dependedLayers = getDependedLayers(e.target._layers, ogj);\r\n if (dependedLayers.length > 0) {\r\n $.each(dependedLayers, function(ind, layer) {\r\n highlightLayer(layer);\r\n });\r\n }\r\n }\r\n });\r\n })\r\n .on('popupclose', function(e) {\r\n $.each(e.target._layers, function(idx, ogj) {\r\n if (ogj._popup == e.popup && $card && e.popup.options.id && e.popup.options.typeId) {\r\n hideCard(leafletMap, $card);\r\n }\r\n });\r\n })\r\n .on('click', function(e) {\r\n if (!Ruler.isActive())\r\n popup\r\n .setLatLng(e.latlng)\r\n .setContent('Широта: ' + e.latlng.lat + '
' + 'Долгота: ' + e.latlng.lng)\r\n .openOn(leafletMap);\r\n });\r\n\r\n // Add control panel on map\r\n L.control.layers({ 'Grayscale': grayscale, 'Streets': streets }).addTo(leafletMap);\r\n $('.leaflet-control-layers-toggle').attr('title', 'Слои');\r\n\r\n // Скрытие стандартного меню Leaflet (необходимо для работы меню слоев на мобильных устройствах)\r\n L.DomEvent\r\n .on($('.leaflet-control-layers.leaflet-control')[0], 'mouseover', function () {\r\n L.DomUtil.removeClass($('.leaflet-control-layers.leaflet-control')[0], 'leaflet-control-layers-expanded');\r\n }, this)\r\n .on($('.leaflet-control-layers-toggle')[0], 'click', function () {\r\n L.DomUtil.removeClass($('.leaflet-control-layers.leaflet-control')[0], 'leaflet-control-layers-expanded');\r\n $('#sidebar-js').toggleClass('menu-show');\r\n }, this)\r\n .on($('.leaflet-control-layers-toggle')[0], 'focus', function () {\r\n L.DomUtil.removeClass($('.leaflet-control-layers.leaflet-control')[0], 'leaflet-control-layers-expanded');\r\n }, this);\r\n\r\n return leafletMap;\r\n }\r\n\r\n function pageInit(weatherOptions) {\r\n\r\n //функция для добавления слоя для объектов на карту,\r\n //использовать эту функцию не обязательно\r\n var addOverlay = function (name) {\r\n var newOverlay = new Overlay(name, leafletMap, L.featureGroup());\r\n //общее поведение для всех слоев, в случае скрытия слоя\r\n newOverlay\r\n .on('hide', function(overlay) {\r\n //очищаем слой, чтобы не хранить в памяти лишние объекты\r\n overlay.clearLayers();\r\n overlay.canUpdate = false;\r\n // Условие деактивации пункта меню\r\n if (!overlay.alreadyActive) {\r\n $('[data-id=' + overlay.name + ']').closest('.active').removeClass('active');\r\n }\r\n });\r\n mapOverlays.push(newOverlay);\r\n\r\n return newOverlay;\r\n };\r\n \r\n //добавим слой найденных объектов на карту\r\n searchOverlay = addOverlay('Search');\r\n\r\n // Инициализируем плагин для поиска объектов на карте и их отрисовки\r\n initSearch();\r\n\r\n var vehiclesLayer = []; // Слои ТС\r\n\r\n // Применение фильтра \"За последний час\" для ТС\r\n $('#IsCommunicationTimed').on('change', function (e) {\r\n _onChange($(this));\r\n });\r\n\r\n // Применение фильтра \"Скорость от ...\" для ТС\r\n $('#HasMinSpeed').on('change', function (e) {\r\n _onChange($(this));\r\n });\r\n\r\n // Применение фильтра\r\n function _onChange($checkbox) {\r\n var promises = []; // Промисы с функционалом скрытия для слоев\r\n var layersCount = 0; // Кол-во отрисованных слоев\r\n _disableCheck();\r\n vehiclesLayer.forEach(function (overlay) {\r\n if (overlay.isShown) {\r\n _disableCheck();\r\n layersCount++;\r\n promises.push(_vehicleTimeChanged(overlay));\r\n }\r\n });\r\n if (layersCount === 0)\r\n _enableCheck(0, 0);\r\n var updatedLayers = 0; // Счетчик обработанных слоев\r\n promises.forEach(function (promise) {\r\n promise.then(hiddenOverlay => {\r\n // Выполняется, если пришлось ожидать завершения отрисовки слоя\r\n hiddenOverlay.show(); // Показать слой\r\n updatedLayers++;\r\n _enableCheck(updatedLayers, layersCount); // Активация checkBox\r\n }, hiddenOverlay=> {\r\n // Выполняется сразу после инициализации фильтра\r\n hiddenOverlay.show(); // Показать слой\r\n updatedLayers++;\r\n _enableCheck(updatedLayers, layersCount); // Активация checkBox\r\n });\r\n });\r\n }\r\n\r\n // Активация checkBox\r\n // updatedLayers - кол-во обработанных слоев\r\n // layersCount - общее кол-во слоев\r\n function _enableCheck(updatedLayers, layersCount) {\r\n if (updatedLayers === layersCount) {\r\n $('#HasMinSpeed').removeAttr('disabled');\r\n $('#IsCommunicationTimed').removeAttr('disabled');\r\n }\r\n }\r\n\r\n // Блокировка checkBox\r\n function _disableCheck() {\r\n $('#HasMinSpeed').attr('disabled', 'disabled');\r\n $('#IsCommunicationTimed').attr('disabled', 'disabled');\r\n }\r\n\r\n // Функция стирания слоя с карты\r\n // overlay - слой\r\n function _vehicleTimeChanged(overlay) {\r\n var promise = new Promise(function (resolve, reject) {\r\n // Проверка на наличие ожидания завершения отрисовки слоя\r\n if (!overlay.canUpdate) {\r\n var intervalID = setInterval(() => {\r\n // Проверяем на завершение отрисовки слоя\r\n if (overlay.canUpdate) {\r\n clearInterval(intervalID); // Прерываем циклическое выполнение интервала\r\n overlay.alreadyActive = true; // Пункт меню всегда активен\r\n overlay.hide(); // Скрываем отображенные слои\r\n resolve(overlay);\r\n }\r\n }, 1000);\r\n } else {\r\n overlay.alreadyActive = true; // Пункт меню всегда активен\r\n overlay.hide(); // Скрываем отображенные слои\r\n reject(overlay);\r\n }\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n // Инициализация групп объектов\r\n // Зоны обслуживания\r\n addOverlay(ObjectTypes.getName(ObjectTypes.ServiceZone))\r\n .on('show', function (overlay) {\r\n loadServiceZones(overlay);\r\n });\r\n\r\n // Автодороги\r\n RoadTypes.forEach(function (type) {\r\n addOverlay(ObjectTypes.getName(ObjectTypes.Road) + '-' + type.Id)\r\n .on('show', function (overlay) {\r\n loadRoads(type.Id, overlay);\r\n });\r\n });\r\n\r\n // Населенные пункты\r\n addOverlay(ObjectTypes.getName(ObjectTypes.Locality))\r\n .on('show', function (overlay) {\r\n loadLocalities(overlay);\r\n });\r\n\r\n // Участки обслуживания\r\n SSegmentTypes.forEach(function (type) {\r\n addOverlay(ObjectTypes.getName(ObjectTypes.SSegment) + '-' + type.Value)\r\n .on('show', function (overlay) {\r\n loadSSegments(type.Value, overlay);\r\n });\r\n });\r\n\r\n // Протяженные объекты\r\n LongObjectTypes.forEach(function (type) {\r\n addOverlay(ObjectTypes.getName(ObjectTypes.LongObject) + '-' + type.Id)\r\n .on('show', function (overlay) {\r\n loadLongObjects(type.Id, overlay);\r\n });\r\n });\r\n\r\n // Точечные объекты\r\n DotObjectTypes.forEach(function (type) {\r\n addOverlay(ObjectTypes.getName(ObjectTypes.DotObject) + '-' + type.Id)\r\n .on('show', function (overlay) {\r\n loadDotObjects(type.Id, overlay);\r\n });\r\n });\r\n\r\n // Транспортные средства\r\n VehicleTypes.forEach(function (type) {\r\n vehiclesLayer.push(addOverlay(ObjectTypes.getName(ObjectTypes.Vehicle) + '-' + type.Id)\r\n .on('show', function (overlay) {\r\n overlay.alreadyActive = false; // Активность пункта меню зависит от активности слоя\r\n loadVehicles(type.Id, overlay).done(function () {\r\n overlay.canUpdate = true;\r\n });\r\n }));\r\n });\r\n\r\n // Чрезвычайные ситуации\r\n EmergencyTypes.forEach(function (type) {\r\n addOverlay(ObjectTypes.getName(ObjectTypes.Emergency) + '-' + type.Id)\r\n .on('show', function (overlay) {\r\n loadEmergencies(type.Id, overlay);\r\n });\r\n });\r\n\r\n // Видеонаблюдение\r\n addOverlay(ObjectTypes.getName(ObjectTypes.VideoCamera))\r\n .on('show', function (overlay) {\r\n loadVideoCameras(overlay);\r\n });\r\n\r\n // Метеостанции\r\n addOverlay(ObjectTypes.getName(ObjectTypes.WStation))\r\n .on('show', function (overlay) {\r\n loadWStations(overlay);\r\n });\r\n\r\n // Работы\r\n WorkTypes.forEach(function (type) {\r\n addOverlay(ObjectTypes.getName(ObjectTypes.Work) + '-' + type.Id)\r\n .on('show', function (overlay) {\r\n loadWorks(type.Id, overlay);\r\n });\r\n });\r\n\r\n // Метеопрогноз\r\n var addWeatherOverlay = function (name, zindex) {\r\n var newOverlay = new Overlay(name, leafletMap, L.tileLayer('', { zIndex: zindex }), 'Weather')\r\n .on('show', function() {\r\n WeatherForecast.showLayer(name);\r\n })\r\n .on('hide', function (overlay) {\r\n $('[data-id=' + overlay.name + ']').closest('.active').removeClass('active');\r\n });\r\n mapOverlays.push(newOverlay);\r\n return newOverlay;\r\n };\r\n\r\n var tempLayer = addWeatherOverlay('Weather-Temp', 1);\r\n var rainLayer = addWeatherOverlay('Weather-Rain', 2);\r\n var windLayer = addWeatherOverlay('Weather-Wind', 3);\r\n\r\n WeatherForecast.init(tempLayer, rainLayer, windLayer, weatherOptions);\r\n\r\n return {\r\n showObjects: showObjects,\r\n toggleLayer: toggleLayer\r\n };\r\n };\r\n\r\n\r\n /**\r\n * Переключает видимость слоев карты\r\n * @param {string} name Название слоя\r\n * @param {boolean} active Если true, слой показывается, иначе скрывается.\r\n */\r\n function toggleLayer(name, active) {\r\n var overlay = mapOverlays.get(name);\r\n if (overlay) {\r\n if (overlay.group) {\r\n if (active) {\r\n mapOverlays.getGroup(overlay.group).forEach(function (x) { x.hide(); });\r\n }\r\n WeatherForecast.clearLayer();\r\n }\r\n overlay.toggle(active);\r\n //searchOverlay.hide();\r\n }\r\n };\r\n\r\n /**\r\n * Скроет все слои на карте\r\n */\r\n function hideAllOverlays() {\r\n mapOverlays.forEach(function (overlay) {\r\n overlay.hide();\r\n });\r\n //скрываем меню слоев и убираем активные элементы\r\n $('#sidebar-js').removeClass('menu-show');\r\n WeatherForecast.clearLayer();\r\n };\r\n\r\n function removeDuplicatesFromSearch(layers) {\r\n searchOverlay.layer.getLayers().forEach(function(layer) {\r\n var duplicate = layers.filter(function(f) {\r\n return f.options.id === layer.options.id\r\n && f.options.typeId === layer.options.typeId;\r\n });\r\n if (duplicate.length)\r\n searchOverlay.layer.removeLayer(layer);\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Инициализирует плагин для поиска объектов на карте и их отрисовки\r\n */\r\n function initSearch() {\r\n //контейнер плагина\r\n var $mapSearch = $('[js=map-search]');\r\n //кнопка поиска\r\n var $btn = $mapSearch.find('button');\r\n //поле ввода с автодополнением\r\n var $autocomplete = $mapSearch.find('input');\r\n\r\n //инициализируем кнопку\r\n $btn.on('click', function () {\r\n var query = $autocomplete.val();\r\n if (typeof query === 'string' && query.length > 0) {\r\n $.post(Url.action('map/search'), { query: query }).done(\r\n /**\r\n * Обработает полученные от сервера данные\r\n * @param {Smik.WebSite.Models.CommonSearchModel} entities Коллекции найденных сущностей\r\n */\r\n function (entities) {\r\n //searchOverlay.clearLayers();\r\n var serviceZoneLayers = entities.ServiceZone\r\n .map(function (x) { return createServiceZoneLayer(x); });\r\n var layers = [].concat(\r\n serviceZoneLayers,\r\n entities.Roads\r\n .map(function(x) { return createRoadLayer(x); }),\r\n entities.SectionService\r\n .map(function(x) { return createSSegmentLayer(x); }),\r\n entities.LongObject\r\n .map(function(x) { return createLongObjectLayer(x); }),\r\n entities.DotObject\r\n .map(function(x) { return createDotObjectLayer(x); }),\r\n entities.Vehicle\r\n .map(function(x) { return createVehicleLayer(x); }),\r\n entities.Emergency\r\n .map(function(x) { return createEmergencyLayer(x); }),\r\n entities.WStation\r\n .map(function(x) { return createWStationLayer(x); }),\r\n entities.Camera\r\n .map(function(x) { return createVideoCameraLayer(x); }),\r\n entities.Locality\r\n .map(function (x) { return createLocalityLayer(x); })\r\n );\r\n\r\n // Удаление undefined слоев\r\n layers = layers.filter(function(l) { return l; });\r\n removeDuplicatesFromSearch(layers);\r\n\r\n searchOverlay.addLayers(layers).fit();\r\n //hideAllOverlays();\r\n searchOverlay.show();\r\n if (serviceZoneLayers) {\r\n $.each(serviceZoneLayers,\r\n function (idx, layer) {\r\n if (layer) {\r\n layer.bringToBack(); // Всегда в самом низу\r\n }\r\n });\r\n };\r\n $autocomplete.val(query);\r\n });\r\n }\r\n });\r\n\r\n //инициализируем поле с автодополнением\r\n $autocomplete.typeahead({\r\n source: function (query, process) {\r\n $.post(Url.action('map/autocomplete'), { query: query }).done(process);\r\n },\r\n afterSelect: function () {\r\n $btn.trigger('click');\r\n },\r\n minLength: 2\r\n });\r\n\r\n //когда слой поиска скрывается, очищаем поле поиска\r\n searchOverlay.on('hide', function() {\r\n $autocomplete.val('');\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Создаст слой для дороги по модели\r\n * @param {RoadMap} road Модель дороги\r\n * @returns {Layer} Leaflet слой\r\n */\r\n function createRoadLayer(road) {\r\n\r\n var coordinates = MapHelper.convertToLatLng(road.Coordinates);\r\n var layer = L.polyline(coordinates, {\r\n color: road.Type.Id === 1 ? \"#A52A2A\" : road.Type.Id === 2 ? \"#393939\" : \"#808080\",\r\n weight: 5,\r\n smoothFactor: 1,\r\n opacity: .8,\r\n id: road.Id,\r\n typeId: ObjectTypes.Road\r\n });\r\n layer.startKm = road.StartKm;\r\n\r\n var text = '{Name}
Код: {Code}'.format(road);\r\n layer.bindPopup(text, {\r\n id: road.Id,\r\n typeId: ObjectTypes.Road\r\n });\r\n\r\n layer.on('click', function (e) {\r\n var distance = MapHelper.findPosition(e.latlng, coordinates, MapHelper.getZoom(leafletMap).coefficient);\r\n var out = Math.round(distance.distance) / 1000 + this.startKm;\r\n if (distance.isInEdge) {\r\n popup\r\n .setLatLng(e.latlng)\r\n .setContent('Широта: ' + e.latlng.lat + '
' + 'Долгота: ' + e.latlng.lng + '
' + out + ' километр')\r\n .openOn(leafletMap);\r\n }\r\n });\r\n return layer;\r\n };\r\n\r\n /**\r\n * Создаст слой для участка обслуживания\r\n * @param {SSegmentMap} ssegment Модель участка обслуживания\r\n * @returns {Layer} Leaflet слой\r\n */\r\n function createSSegmentLayer(ssegment) {\r\n\r\n if (ssegment.RoadCoordinates.length === 0) return undefined;\r\n\r\n var coordinates = MapHelper.getCoordinatesByStartEnd(\r\n MapHelper.convertToLatLng(ssegment.RoadCoordinates),\r\n (ssegment.StartKm - ssegment.RoadStartKm) * 1e3,\r\n (ssegment.StopKm - ssegment.RoadStartKm) * 1e3);\r\n\r\n var layer = L.polyline(coordinates, {\r\n color: 'orange',\r\n weight: 4,\r\n smoothFactor: 1,\r\n opacity: .8,\r\n id: ssegment.Id,\r\n typeId: ObjectTypes.SSegment\r\n });\r\n\r\n var text = ssegment.Name;\r\n layer.bindPopup(text, {\r\n id: ssegment.Id,\r\n typeId: ObjectTypes.SSegment\r\n });\r\n return layer;\r\n };\r\n\r\n /**\r\n * Создаст слой для протяженного объекта\r\n * @param {LongObjectMap} longObject Модель протяженного объекта\r\n * @returns {Layer} Leaflet слой\r\n */\r\n function createLongObjectLayer(longObject) {\r\n var layerGroup = L.featureGroup();\r\n\r\n longObject.LongObjectRoads.forEach(function (lrRoad) {\r\n if (lrRoad.Coordinates.length > 0) {\r\n\r\n var coordinates = MapHelper.getCoordinatesByStartEnd(\r\n MapHelper.convertToLatLng(lrRoad.Coordinates),\r\n (lrRoad.StartKm -lrRoad.Road.StartKm) * 1e3,\r\n (lrRoad.StopKm - lrRoad.Road.StartKm) * 1e3);\r\n\r\n if (coordinates.length === 0)\r\n return;\r\n\r\n var text = 'Автодорога: {Name}
Код: {Code}'.format(lrRoad.Road)\r\n + '
Находится в: {Name}'.format(longObject);\r\n\r\n var line = L.polyline(coordinates,\r\n {\r\n color: '#008000',\r\n weight: 4,\r\n smoothFactor: 1,\r\n opacity: .8,\r\n id: longObject.Id,\r\n typeId: ObjectTypes.LongObject\r\n });\r\n line.bindPopup(text, {\r\n id: longObject.Id,\r\n typeId: ObjectTypes.LongObject\r\n });\r\n layerGroup.addLayer(line);\r\n }\r\n });\r\n\r\n return layerGroup;\r\n };\r\n\r\n /**\r\n * Создаст слой для точечного объекта\r\n * @param {DotObjectMap} dotObject Модель точечного объекта\r\n * @returns {Marker} Leaflet маркер\r\n */\r\n function createDotObjectLayer(dotObject) {\r\n\r\n var coordinate;\r\n var popupText;\r\n if (dotObject.Coordinate && dotObject.Type.FreeLocation) {\r\n coordinate = MapHelper.convertToLatLng(dotObject.Coordinate);\r\n popupText = dotObject.Name;\r\n } else if (dotObject.RoadCoordinates && dotObject.RoadCoordinates.length) {\r\n coordinate = MapHelper.findPositionByDistance((dotObject.Location - dotObject.RoadStartKm) * 1e3, MapHelper.convertToLatLng(dotObject.RoadCoordinates)).point;\r\n popupText = dotObject.Name + \"
На \" + dotObject.Location + \"км\";\r\n } else\r\n return undefined;\r\n if (!dotObject.Type.Icon || 0 === dotObject.Type.Icon.length)\r\n dotObject.Type.Icon = 'dotobject';\r\n var markerIcon = L.icon({\r\n popupAnchor: [12, 92],\r\n iconSize: [],\r\n iconAnchor: [12, 46],\r\n iconUrl: Url.icon('empty-min.png'),\r\n className: dotObject.Type.Icon.toLowerCase()\r\n });\r\n var marker = L.marker(coordinate,\r\n {\r\n icon: markerIcon,\r\n riseOnHover: true,\r\n title: '\"' + dotObject.Type.Name + '\" ' + dotObject.Name,\r\n alt: '\"' + dotObject.Type.Name + '\" ' + dotObject.Name,\r\n id: dotObject.Id,\r\n typeId: ObjectTypes.DotObject\r\n });\r\n \r\n marker.bindPopup(popupText,\r\n {\r\n id: dotObject.Id,\r\n typeId: ObjectTypes.DotObject\r\n });\r\n\r\n return marker;\r\n };\r\n\r\n /**\r\n * Создаст слой для населенного пункта\r\n * @param {LocalityMap} locality Модель населенного пункта\r\n * @returns {Layer}\r\n */\r\n function createLocalityLayer(locality) {\r\n var localityLayerGroup = L.featureGroup();\r\n locality.LocalityRoads.forEach(function (lr) {\r\n if (lr.Coordinates.length > 0) {\r\n var coordinates = MapHelper.getCoordinatesByStartEnd(\r\n MapHelper.convertToLatLng(lr.Coordinates),\r\n (lr.StartKm - lr.Road.StartKm) * 1e3,\r\n (lr.StopKm - lr.Road.StartKm) * 1e3);\r\n\r\n if (coordinates.length === 0)\r\n return;\r\n\r\n var line = L.polyline(coordinates,\r\n {\r\n color: \"#808080\",\r\n weight: 15,\r\n smoothFactor: 1,\r\n opacity: .8,\r\n id: locality.Id,\r\n typeId: ObjectTypes.Locality\r\n });\r\n\r\n line.bindPopup(locality.Name, {\r\n id: locality.Id,\r\n typeId: ObjectTypes.Locality\r\n });\r\n\r\n localityLayerGroup.addLayer(line);\r\n }\r\n });\r\n\r\n return localityLayerGroup;\r\n };\r\n\r\n /**\r\n * Создаст слой для транспорта\r\n * @param {VehicleMap} vehicle Модель транспорта\r\n * @returns {Layer} Слой ТС\r\n */\r\n function createVehicleLayer(vehicle) {\r\n if (!vehicle.Coordinate) return undefined;\r\n\r\n var iconClass = VehicleTypeEnum[vehicle.Type.Id].toLowerCase();\r\n var markerIcon = L.icon({\r\n popupAnchor: [12, 92],\r\n iconSize: [],\r\n iconAnchor: [12, 46],\r\n iconUrl: Url.icon('empty-min.png'),\r\n className: iconClass + 'icon'\r\n });\r\n\r\n var titleFormat = '\"{0}\" {1}'.format(vehicle.Brand, vehicle.RegistrationNumber);\r\n var title = titleFormat;\r\n\r\n if (!isNaN(parseFloat(vehicle.Speed)) && isFinite(vehicle.Speed)) {\r\n title += ', {0} км/ч'.format(vehicle.Speed);\r\n }\r\n\r\n var marker = L.marker(MapHelper.convertToLatLng(vehicle.Coordinate), {\r\n icon: markerIcon,\r\n riseOnHover: true,\r\n title: title,\r\n alt: title,\r\n objectType: ObjectTypes.Vehicle,\r\n objectId: vehicle.Id,\r\n trackerId: vehicle.TrackerId,\r\n id: vehicle.Id,\r\n typeId: ObjectTypes.Vehicle\r\n });\r\n marker.titleFormat = titleFormat;\r\n marker.bindPopup('{0}
{1}'.format(vehicle.Type.Name, vehicle.RegistrationNumber), {\r\n id: vehicle.Id,\r\n typeId: ObjectTypes.Vehicle\r\n });\r\n\r\n return marker;\r\n }\r\n\r\n /**\r\n * Создаст слой для чрезвычайной ситуации\r\n * @param {EmergencyMap} emergency Модель чрезвычайной ситуации\r\n * @returns {Layer} слой ЧС\r\n */\r\n function createEmergencyLayer(emergency) {\r\n if (emergency.RoadCoordinates.length === 0) return undefined;\r\n\r\n if (emergency.Status.Id === 4) {\r\n // Последствия ликвидировали\r\n // TODO: зачем тогда загружать из БД\r\n return undefined;\r\n }\r\n\r\n var coordinates = MapHelper.getCoordinatesByStartEnd(\r\n MapHelper.convertToLatLng(emergency.RoadCoordinates),\r\n (emergency.StartKm - emergency.RoadStartKm) * 1e3,\r\n (emergency.StopKm - emergency.RoadStartKm) * 1e3);\r\n \r\n var layer = L.polyline(coordinates, {\r\n color: '#FF0000',\r\n weight: 4,\r\n smoothFactor: 1,\r\n opacity: .8,\r\n className: 'emergency',\r\n id: 'Emergency' + emergency.Id,\r\n parentId: emergency.Id,\r\n typeId: 'EmergencyRoad'\r\n });\r\n\r\n var text = '\"' + emergency.Type.Name + '\" ' + emergency.Name + '
c ' + emergency.StartKm + 'км по ' + emergency.StopKm + 'км';\r\n\r\n var middlePosition = MapHelper.findPositionByDistance((emergency.StopKm - emergency.StartKm) * 500, coordinates);\r\n\r\n var markerIcon = L.icon({\r\n popupAnchor: [12, 92],\r\n iconSize: [],\r\n iconAnchor: [12, 41],\r\n iconUrl: Url.icon('empty-min.png'),\r\n className: 'emergency'\r\n });\r\n\r\n var marker = L.marker(middlePosition.point, {\r\n icon: markerIcon,\r\n riseOnHover: true,\r\n title: '\"{0}\" {1}'.format(emergency.Type.Name, emergency.Name),\r\n alt: '\"{0}\" {1}'.format(emergency.Type.Name, emergency.Name),\r\n id: 'Emergency' + emergency.Id,\r\n parentId: emergency.Id,\r\n typeId: ObjectTypes.Emergency\r\n });\r\n\r\n layer\r\n .on('mouseover', function(e) {\r\n hoverLayer(marker, true);\r\n })\r\n .on('mouseout', function(e) {\r\n hoverLayer(marker, false);\r\n });\r\n\r\n marker\r\n .on('mouseover', function (e) {\r\n hoverLayer(layer, true);\r\n })\r\n .on('mouseout', function (e) {\r\n hoverLayer(layer, false);\r\n });\r\n\r\n\r\n var group = L.featureGroup([layer, marker]);\r\n group.bindPopup(text, {\r\n id: emergency.Id,\r\n typeId: ObjectTypes.Emergency\r\n });\r\n\r\n return group;\r\n };\r\n\r\n /**\r\n * Создаст слой для метеостанции\r\n * @param {WeatherStationMapModel} wstation Модель метеостанции\r\n * @returns {Layer}\r\n */\r\n function createWStationLayer(wstation) {\r\n if (!wstation.RoadCoordinates || !wstation.RoadCoordinates.length) return undefined;\r\n\r\n var markerIcon = L.icon({\r\n popupAnchor: [12, 92],\r\n iconSize: [],\r\n iconAnchor: [12, 46],\r\n iconUrl: Url.icon('empty-min.png'),\r\n className: 'wstationicon'\r\n });\r\n var coordinate = MapHelper.findPositionByDistance((wstation.Location - wstation.RoadStartKm) * 1e3, MapHelper.convertToLatLng(wstation.RoadCoordinates));\r\n var marker = L.marker(coordinate.point, {\r\n icon: markerIcon,\r\n riseOnHover: true,\r\n id: wstation.Id,\r\n typeId: ObjectTypes.WStation,\r\n loadedTooltip: false,\r\n loadingTooltip: false\r\n });\r\n\r\n marker.bindPopup('{Name}
На {Location}км'.format(wstation), {\r\n id: wstation.Id,\r\n typeId: ObjectTypes.WStation\r\n });\r\n\r\n marker.bindTooltip('Загрузка...', { opacity: 1, offset: L.point(0, -30) });\r\n marker\r\n .on('mouseover', function (e) {\r\n if (!this.options.loadedTooltip && !this.options.loadingTooltip) {\r\n var url = CardUrls['WStationTooltip'].format(this.options.id);\r\n loadWStationTooltip(url, this);\r\n }\r\n });\r\n\r\n return marker;\r\n };\r\n\r\n /**\r\n * Создаст слой для камеры видеонаблюдения\r\n * @param {VideoCameraMap} videoCamera Модель камеры видеонаблюдения\r\n * @returns {Layer}\r\n */\r\n function createVideoCameraLayer(videoCamera) {\r\n if (!videoCamera.RoadCoordinates || !videoCamera.RoadCoordinates.length) return undefined;\r\n\r\n var markerIcon = L.icon({\r\n popupAnchor: [12, 92],\r\n iconSize: [],\r\n iconAnchor: [12, 46],\r\n iconUrl: Url.icon('empty-min.png'),\r\n className: 'videoicon'\r\n });\r\n var coordinate = MapHelper.findPositionByDistance((videoCamera.Location - videoCamera.RoadStartKm) * 1e3, MapHelper.convertToLatLng(videoCamera.RoadCoordinates));\r\n var marker = L.marker(coordinate.point,\r\n {\r\n icon: markerIcon,\r\n riseOnHover: true,\r\n title: videoCamera.Name,\r\n alt: videoCamera.Name,\r\n id: videoCamera.Id,\r\n typeId: ObjectTypes.VideoCamera\r\n });\r\n\r\n marker.bindPopup('{Name}
На {Location}км'.format(videoCamera), {\r\n id: videoCamera.Id,\r\n typeId: ObjectTypes.VideoCamera\r\n });\r\n\r\n return marker;\r\n };\r\n\r\n /**\r\n * Создаст слой для работы\r\n * @param {WorkMap} work Модель работы\r\n */\r\n function createWorkLayer(work) {\r\n var coordinates = MapHelper.getCoordinatesByStartEnd(\r\n MapHelper.convertToLatLng(work.RoadCoordinates),\r\n (work.StartKm - work.RoadStartKm) * 1e3,\r\n (work.StopKm - work.RoadStartKm) * 1e3);\r\n\r\n if (coordinates.length === 0)\r\n return;\r\n\r\n var text = 'Работа: ' + work.Name;\r\n\r\n var line = L.polyline(coordinates, {\r\n color: 'blue', // ToDo Изменить цвет\r\n weight: 4,\r\n smoothFactor: 1,\r\n opacity: .8\r\n })\r\n .bindPopup(text, {\r\n id: work.Id,\r\n typeId: ObjectTypes.Work\r\n });\r\n }\r\n\r\n /**\r\n * Создаст слой для зон обслуживания\r\n * @param {ServiceZone} serviceZone Модель зоны обслуживания\r\n * @returns {Layer} Слой зон обслуживания\r\n */\r\n function createServiceZoneLayer(serviceZone) {\r\n if (serviceZone.Coordinates.length <=0 ) return undefined;\r\n\r\n var polygonPoints = MapHelper.convertToLatLng(serviceZone.Coordinates);\r\n\r\n var polygon = new L.Polygon(polygonPoints, {\r\n color: '#' + serviceZone.Color.Name,\r\n weight: 2,\r\n smoothFactor: 1,\r\n opacity: .9,\r\n fillOpacity: .8,\r\n id: serviceZone.Id,\r\n typeId: ObjectTypes.ServiceZone\r\n });\r\n\r\n // ServiceZone with card option\r\n polygon.bindPopup('

' + serviceZone.Name + '

', {\r\n id: serviceZone.Id,\r\n typeId: ObjectTypes.ServiceZone\r\n })\r\n .on('click', function (e) {\r\n L.popup()\r\n .setLatLng(e.latlng)\r\n .setContent('Широта: ' + e.latlng.lat.toFixed(5) + '
Долгота: ' + e.latlng.lng.toFixed(5))\r\n .openOn(leafletMap);\r\n });\r\n\r\n return polygon;\r\n };\r\n\r\n /**\r\n * Вернет коллекцию автодорог\r\n * @param {Object} data Данные для запроса\r\n * @param {number} data.roadType Тип дороги\r\n * @param {number[]} data.roadIds Идентификаторы дорог\r\n * @returns {Promise}\r\n */\r\n function getRoads(data) {\r\n return $.get(Url.api('api/roads/map'), data);\r\n }\r\n\r\n function getSSegments(data) {\r\n return $.get(Url.api('api/ssegments/map'), data);\r\n }\r\n\r\n function getLongObjects(data) {\r\n return $.get(Url.api('api/longObjects/map'), data);\r\n }\r\n\r\n function getDotObjects(data) {\r\n return $.get(Url.api('api/dotObjects/map'), data);\r\n }\r\n\r\n function getLocalities(data) {\r\n return $.get(Url.api('api/localities/map'), data);\r\n }\r\n\r\n function getVehicles(data) {\r\n return $.get(Url.api('api/vehicles/map'), data);\r\n }\r\n\r\n function getEmergencies(data) {\r\n return $.get(Url.api('api/emergencies/map'), data);\r\n }\r\n\r\n function getWStations(data) {\r\n return $.get(Url.api('api/wstations/map'), data);\r\n }\r\n\r\n function getVideoCameras(data) {\r\n return $.get(Url.api('api/videocameras/map'), data);\r\n }\r\n\r\n function getWorks(data) {\r\n return $.get(Url.api('api/works/map'), data);\r\n }\r\n\r\n function getServiceZones(data) {\r\n return $.get(Url.api('api/serviceZones/map'), data);\r\n }\r\n\r\n\r\n function showObjects(objectType, ids) {\r\n\r\n var findOverlay = function (name) {\r\n return mapOverlays.filter(function (x) { return x.name === name; })[0];\r\n };\r\n\r\n var addToMap = function (overlayName, layer) {\r\n if (layer) {\r\n var overlay = findOverlay(overlayName);\r\n overlay.addLayer(layer);\r\n overlay.layer.isShown = true; // Устанавливаем для сортировки слоя\r\n layer.addTo(leafletMap);\r\n orderOverlays();\r\n }\r\n return layer;\r\n };\r\n\r\n switch (objectType) {\r\n\r\n case ObjectTypes.ServiceZone:\r\n return getServiceZones({ serviceZoneIds: ids }).then(function (serviceZones) {\r\n serviceZones.forEach(function (serviceZone) {\r\n addToMap(ObjectTypes.getName(objectType), createServiceZoneLayer(serviceZone));\r\n });\r\n });\r\n\r\n case ObjectTypes.Road:\r\n return getRoads({ roadIds: ids }).then(function(roads) {\r\n roads.forEach(function(road) {\r\n addToMap(ObjectTypes.getName(objectType) + '-' + road.Type.Id, createRoadLayer(road));\r\n });\r\n });\r\n\r\n case ObjectTypes.SSegment:\r\n return getSSegments({ ssegmentIds: ids }).then(function(ssegments) {\r\n ssegments.forEach(function(ssegment) {\r\n addToMap(ObjectTypes.getName(objectType) + '-' + (ssegment.Standart ? \"True\" : \"False\"), createSSegmentLayer(ssegment));\r\n });\r\n });\r\n\r\n case ObjectTypes.LongObject:\r\n return getLongObjects({ longObjectIds: ids }).then(function (longObjects) {\r\n longObjects.forEach(function (longObject) {\r\n addToMap(ObjectTypes.getName(objectType) + '-' + longObject.Type.Id, createLongObjectLayer(longObject));\r\n });\r\n });\r\n\r\n case ObjectTypes.DotObject:\r\n return getDotObjects({ dotObjectIds: ids }).then(function (dotObjects) {\r\n dotObjects.forEach(function (dotObject) {\r\n addToMap(ObjectTypes.getName(objectType) + '-' + dotObject.Type.Id, createDotObjectLayer(dotObject));\r\n });\r\n });\r\n\r\n case ObjectTypes.Locality:\r\n return getLocalities({ localityIds: ids }).then(function (localities) {\r\n localities.forEach(function (locality) {\r\n addToMap(ObjectTypes.getName(objectType), createLocalityLayer(locality));\r\n });\r\n });\r\n\r\n case ObjectTypes.Vehicle:\r\n return getVehicles({ vehicleIds: ids, isCommunicationTimed: false, hasMinSpeed: false }).then(function (vehicles) {\r\n vehicles.forEach(function (vehicle) {\r\n var layer = addToMap(ObjectTypes.getName(objectType) + '-' + vehicle.Type.Id, createVehicleLayer(vehicle));\r\n });\r\n });\r\n\r\n case ObjectTypes.Emergency:\r\n return getEmergencies({ emergencyIds: ids }).then(function (emergencies) {\r\n emergencies.forEach(function (emergency) {\r\n addToMap(ObjectTypes.getName(objectType) + '-' + emergency.Type.Id, createEmergencyLayer(emergency));\r\n });\r\n });\r\n\r\n case ObjectTypes.WStation:\r\n return getWStations({ wstationIds: ids }).then(function (wstations) {\r\n wstations.forEach(function (wstation) {\r\n addToMap(ObjectTypes.getName(objectType), createWStationLayer(wstation));\r\n });\r\n });\r\n\r\n case ObjectTypes.VideoCamera:\r\n return getVideoCameras({ videoCameraIds: ids }).then(function (videoCameras) {\r\n videoCameras.forEach(function (videoCamera) {\r\n addToMap(ObjectTypes.getName(objectType), createVideoCameraLayer(videoCamera));\r\n });\r\n });\r\n }\r\n };\r\n\r\n // Загружает Зоны обслуживания с сервера и добавляет слои ЗО на карту\r\n function loadServiceZones(overlay) {\r\n var getData = function (page, count) {\r\n return getServiceZones({ page: page, count: count });\r\n };\r\n var processData = function (serviceZones) {\r\n serviceZones.forEach(function (serviceZone) {\r\n var layer = createServiceZoneLayer(serviceZone);\r\n if (layer) {\r\n overlay.addLayer(layer);\r\n layer.bringToBack(); // Всегда в самом низу\r\n }\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * Загружает автодороги с сервера и добавляет слои автодорог на карту\r\n * @param {number} Тип дороги\r\n * @param {Overlay} Слой карты, на который будут добавляться слои автодорог\r\n */\r\n function loadRoads(type, overlay) {\r\n var getData = function (page, count) {\r\n return getRoads({ roadType: type, page: page, count: count });\r\n };\r\n var processData = function (roads) {\r\n roads.forEach(function (road) {\r\n var layer = createRoadLayer(road);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * \r\n * @param {} overlay \r\n * @returns {} \r\n */\r\n function loadLocalities(overlay) {\r\n var getData = function (page, count) {\r\n return getLocalities({ page: page, count: count });\r\n };\r\n var processData = function (localities) {\r\n localities.forEach(function (locality) {\r\n var layer = createLocalityLayer(locality);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * \r\n * @param {} state \r\n * @param {} overlay \r\n * @returns {} \r\n */\r\n function loadSSegments(type, overlay) {\r\n var getData = function (page, count) {\r\n return getSSegments({ type: type, page: page, count: count });\r\n };\r\n var processData = function (ssegments) {\r\n ssegments.forEach(function (ssegment) {\r\n var layer = createSSegmentLayer(ssegment);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * \r\n * @param {} type \r\n * @param {} overlay \r\n * @returns {} \r\n */\r\n function loadLongObjects(type, overlay) {\r\n var getData = function (page, count) {\r\n return getLongObjects({ longObjectType: type, page: page, count: count });\r\n };\r\n var processData = function (longObjects) {\r\n longObjects.forEach(function (longObject) {\r\n var layer = createLongObjectLayer(longObject);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * \r\n * @param {} type \r\n * @param {} overlay \r\n * @returns {} \r\n */\r\n function loadDotObjects(type, overlay) {\r\n var getData = function (page, count) {\r\n return getDotObjects({ dotObjectType: type, page: page, count: count });\r\n };\r\n var processData = function (dotObjects) {\r\n dotObjects.forEach(function (dotObject) {\r\n var layer = createDotObjectLayer(dotObject);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * \r\n * @param {} type \r\n * @param {} overlay \r\n * @returns {} \r\n */\r\n function loadVehicles(type, overlay) {\r\n var processData = function (vehicles) {\r\n vehicles.forEach(function (vehicle) {\r\n var layer = createVehicleLayer(vehicle);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n return getVehicles({\r\n vehicleType: type,\r\n isCommunicationTimed: $('#IsCommunicationTimed').prop('checked'),\r\n hasMinSpeed: $('#HasMinSpeed').prop('checked'),\r\n page: 0,\r\n count: 0\r\n })\r\n .then(function (response) {\r\n processData(response.Data);\r\n orderOverlays();\r\n });\r\n };\r\n\r\n /**\r\n * \r\n * @param {} type \r\n * @param {} overlay \r\n * @returns {} \r\n */\r\n function loadEmergencies(type, overlay) {\r\n var getData = function (page, count) {\r\n return getEmergencies({ emergencyType: type, page: page, count: count });\r\n };\r\n var processData = function (emergencies) {\r\n emergencies.forEach(function (emergency) {\r\n var layer = createEmergencyLayer(emergency);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * \r\n * @param {} type \r\n * @param {} overlay \r\n * @returns {} \r\n */\r\n function loadVideoCameras(overlay) {\r\n var getData = function (page, count) {\r\n return getVideoCameras({ page: page, count: count });\r\n };\r\n var processData = function (videoCameras) {\r\n videoCameras.forEach(function (videoCamera) {\r\n var layer = createVideoCameraLayer(videoCamera);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * \r\n * @param {} type \r\n * @param {} overlay \r\n * @returns {} \r\n */\r\n function loadWStations(overlay) {\r\n var getData = function (page, count) {\r\n return getWStations({ page: page, count: count });\r\n };\r\n var processData = function (wstations) {\r\n wstations.forEach(function (wstation) {\r\n var layer = createWStationLayer(wstation);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * \r\n * @param {} type \r\n * @param {} overlay \r\n * @returns {} \r\n */\r\n function loadWorks(type, overlay) {\r\n var getData = function (page, count) {\r\n return getWorks({ workType: type, page: page, count: count });\r\n };\r\n var processData = function (works) {\r\n works.forEach(function (work) {\r\n var layer = createWorkLayer(work);\r\n if (layer) overlay.addLayer(layer);\r\n });\r\n };\r\n batchLoad(getData, processData);\r\n };\r\n\r\n /**\r\n * \r\n * @param {} getData \r\n * @param {} processData \r\n * @returns {} \r\n */\r\n function batchLoad(getData, processData) {\r\n return getData(0, config.count).then(function (response) {\r\n processData(response.Data);\r\n for (var i = 1; i < response.PageCount; i++) {\r\n getData(i, config.count).then(function (response2) {\r\n processData(response2.Data);\r\n orderOverlays();\r\n });\r\n }\r\n });\r\n };\r\n\r\n function orderOverlays() {\r\n mapOverlays.forEach(function (overlay) {\r\n if (overlay.isShown || overlay.layer.isShown)\r\n overlay.layer.bringToFront();\r\n _sortingServiceZones(overlay); // Сортирует слои ЗО\r\n });\r\n };\r\n\r\n // Отправляет ЗО всегда в самый низ\r\n function _sortingServiceZones(overlay) {\r\n if (overlay && overlay.name === ObjectTypes.getName(ObjectTypes.ServiceZone)) {\r\n if (overlay.layer && overlay.layer._layers) {\r\n $.each(overlay.layer._layers, function (idx, layer) {\r\n if (layer) {\r\n layer.bringToBack(); // Всегда в самом низу\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n return {\r\n pageInit: pageInit,\r\n mapInit: mapInit\r\n };\r\n}());\r\n","function initRoadSegmentOnMapShowing(map, id, startKm, stopKm) {\r\n $.get(Url.api('api/roads/map'), { roadIds: id }).then(function(roads) {\r\n roads.forEach(function (road) {\r\n addRoadSegmentLayer(map, road, startKm, stopKm);\r\n });\r\n });\r\n}\r\n\r\nfunction addRoadSegmentLayer(map, road, startKm, stopKm) {\r\n\r\n var coordinates = MapHelper.getCoordinatesByStartEnd(\r\n MapHelper.convertToLatLng(road.Coordinates),\r\n (startKm - road.StartKm) * 1e3,\r\n (stopKm - road.StartKm) * 1e3);\r\n\r\n var layer = L.polyline(coordinates, {\r\n color: road.Type.Id === 1 ? \"#A52A2A\" : road.Type.Id === 2 ? \"#393939\" : \"#808080\",\r\n weight: 11,\r\n smoothFactor: 1,\r\n opacity: .8\r\n });\r\n layer.startKm = road.StartKm;\r\n\r\n var text = '{Name}
Код: {Code}'.format(road);\r\n layer.bindPopup(text, {\r\n id: road.Id,\r\n typeId: ObjectTypes.Road\r\n });\r\n\r\n map.addLayer(layer);\r\n layer.bringToBack();\r\n};","var SSegment = (function () {\r\n\r\n function _afterDelete(ids, notDeletedIds, single) {\r\n\r\n var deletedIds = notDeletedIds && notDeletedIds.length ? ids.filter(function (id) {\r\n return notDeletedIds.indexOf(id) === -1;\r\n }) : ids;\r\n _refreshTable(true, deletedIds);\r\n\r\n var segmentIds = [];\r\n if (notDeletedIds && notDeletedIds.length > 0) {\r\n notDeletedIds.forEach(function(id) {\r\n if (segmentIds.indexOf(id) === -1) {\r\n segmentIds.push(id);\r\n }\r\n });\r\n }\r\n\r\n var hasError = segmentIds.length > 0;\r\n if (hasError) {\r\n var desc = null;\r\n if (single) {\r\n desc = 'Удаление невозможно: с данным участком связаны работы.';\r\n } else {\r\n desc = 'Участки обслуживания с идентификаторами ' +\r\n segmentIds.join(', ') +\r\n ' не были удалены: с данными участками связаны работы.';\r\n }\r\n ModalConductor.activate(MessageModal, $('#message-tmpl').text(), 'Внимание!', desc);\r\n }\r\n return !hasError;\r\n };\r\n\r\n function deleteObjects(ids) {\r\n return $.ajax({\r\n url: Url.action('api/ssegments'),\r\n type: 'DELETE',\r\n data: { ids: ids }\r\n });\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(SSegmentViewModal, id,\r\n (ssegmentId) => {\r\n deleteObjects([ssegmentId]).done((result) => {\r\n modal.close();\r\n var deleteSuccess = _afterDelete([ssegmentId], result, true);\r\n });\r\n },\r\n (ssegmentId) => {\r\n _showOnMap([ssegmentId]);\r\n })\r\n .on('closed', (modalResult) => _refreshTable());\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(SSegmentEdtiModal)\r\n .on('closed',\r\n (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n };\r\n\r\n function _delete(ids, table) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObjects(ids).done((result) => _afterDelete(ids, result));\r\n }\r\n };\r\n\r\n function _showOnMap(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.map(ObjectTypes.SSegment, ids);\r\n }\r\n };\r\n\r\n function _refreshTable(resetChecked, rowsForDeselect) {\r\n var table = $('#SSegmentListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, null, rowsForDeselect);\r\n };\r\n\r\n return {\r\n show: _show,\r\n add: _add,\r\n del: _delete,\r\n showOnMap: _showOnMap\r\n };\r\n}());\r\n","var User = (function () {\r\n\r\n function deleteObjects(ids) {\r\n return $.ajax({\r\n url: Url.action('api/users'),\r\n type: 'DELETE',\r\n data: { ids: ids }\r\n })\r\n .done(() => {\r\n _refreshTable(true, ids);\r\n });\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(UserViewModal, id,\r\n (userId) => {\r\n deleteObjects([userId]).done(() => {\r\n modal.close();\r\n });\r\n })\r\n .on('closed', (modalResult) => {\r\n _refreshTable();\r\n });;\r\n }\r\n\r\n function _del(ids, table) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObjects(ids);\r\n }\r\n }\r\n\r\n function _add() {\r\n ModalConductor.activate(UserEditModal)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n }\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#UserListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, false, idsForDeselect);\r\n };\r\n\r\n return {\r\n show: _show,\r\n del: _del,\r\n add: _add\r\n };\r\n}());\r\n","// Пакет с данными нарисованных треков\r\nvar tracks = [];\r\n// Пакет необработынных данных, пришедших с сервера.\r\n// Включает в себя пакеты данных для рисования треков.\r\nvar lastTracks = [];\r\n// zoomedInterval - Интервал в зависимости от зума карты, \r\n// представляет собой объект, где key - zoom, а value - значение интервала между маркерами в км.\r\nvar zoomedInterval = {\r\n 6: 15,\r\n 7: 10,\r\n 8: 6,\r\n 9: 4,\r\n 10: 2.6,\r\n 11: 1.8,\r\n 12: 1,\r\n 13: 0.7,\r\n 14: 0.5,\r\n 15: 0.25,\r\n 16: 0.08,\r\n 17: 0.04,\r\n 18: 0.02\r\n}\r\n\r\nvar initTracksOnMapShowing = function (mymap, tracksUrl, keepOld) {\r\n\r\n function clear() {\r\n tracks = [];\r\n lastTracks = [];\r\n mymap.eachLayer(function (layer) {\r\n if (layer.options && (layer.options.isTrack || layer.options.isDirection)) {\r\n mymap.removeLayer(layer);\r\n }\r\n });\r\n }\r\n\r\n function drawTrack(trackPoints, obj) {\r\n var track = { polyline: null };\r\n if (trackPoints.length > 1) {\r\n var points = [];\r\n var popup = obj ? '
' + obj.vehicle + '

' : '
';\r\n // Добавляем html спиннера загрузки\r\n popup+='
';\r\n track.polyline = new L.layerGroup();\r\n\r\n var lastPoint = [];\r\n for (var i = 0; i < trackPoints.length; i++) {\r\n var point = L.latLng(trackPoints[i][0], trackPoints[i][1]);\r\n points.push(point);\r\n\r\n if ($('#OnDirection').prop('checked')) {\r\n var drawingPoint = _drawDirection(track.polyline, trackPoints, i, popup, lastPoint, zoomedInterval[mymap.getZoom()]);\r\n if (drawingPoint && drawingPoint.length > 0) {\r\n lastPoint = drawingPoint;\r\n }\r\n }\r\n }\r\n\r\n track.polyline.addLayer(new L.Polyline(points, {\r\n title: popup,\r\n color: 'blue',\r\n weight: 5,\r\n opacity: 0.5,\r\n smoothFactor: 1,\r\n isTrack: true,\r\n vehicleId: obj.id\r\n }).bindPopup(popup));\r\n\r\n track.polyline.addTo(mymap);\r\n }\r\n return track;\r\n }\r\n\r\n function reloadTrack(keepOld) {\r\n if (!keepOld)\r\n clear();\r\n $.each(tracksUrl, function (idx, trackUrl) {\r\n $.ajax({\r\n url: trackUrl.url,\r\n type: 'POST',\r\n dataType: 'json',\r\n data: trackUrl.data\r\n }).success(function (result) {\r\n if (result && result[0].Datas.length > 0) {\r\n if (keepOld) {\r\n var vehicleIds = result.map(function(r) {\r\n return r.Vehicle ? r.Vehicle.Id : null;\r\n }).filter(function(id) {\r\n return id !== null;\r\n });\r\n tracks = tracks.filter(function(t) {\r\n var keep = vehicleIds.indexOf(t.vehicleId) === -1;\r\n if (!keep)\r\n mymap.removeLayer(t.polyline);\r\n return keep;\r\n });\r\n }\r\n lastTracks.push(result);\r\n result.forEach(function (obj, idx) {\r\n var track = drawTrack(obj.Datas, { vehicleId: obj.Vehicle ? obj.Vehicle.Id : null, vehicle: obj.Vehicle ? obj.Vehicle.Name : '', timeInterval: obj.Interval });\r\n tracks.push({ track: track, url: trackUrl, vehicleId: obj.Vehicle ? obj.Vehicle.Id : null });\r\n });\r\n }\r\n }).error(function (xhr, status) {\r\n console.error(status);\r\n });\r\n });\r\n }\r\n\r\n reloadTrack(keepOld);\r\n\r\n return tracks;\r\n}\r\n\r\nvar initVehicleTrackMap = function (editable) {\r\n var initLat = AppConfig.defaultMapCenter[0];\r\n var initLng = AppConfig.defaultMapCenter[1];\r\n\r\n L.Icon.Default.imagePath = AppConfig.imagePath;\r\n var grayscale = L.tileLayer(MapSettings.urlFormat, { attribution: '© OpenStreetMap contributors' });\r\n\r\n var mymap = L.map('track-map', {\r\n center: [initLat, initLng],\r\n zoom: AppConfig.defaultMapZoom,\r\n maxBounds: L.latLngBounds(AppConfig.defaultMapBounds[0], AppConfig.defaultMapBounds[1]),\r\n minZoom: AppConfig.defaultMapMinZoom,\r\n zoomReverse: true,\r\n layers: [grayscale],\r\n editable: editable || false\r\n });\r\n\r\n getPointTrack(mymap);\r\n\r\n $('#OnDirection').on('change', function () {\r\n drawDirections(mymap, $(this).prop('checked'));\r\n });\r\n\r\n mymap.on('zoomend', function(e) {\r\n if ($('#OnDirection').prop('checked')) {\r\n drawDirections(mymap, false);\r\n drawDirections(mymap, $('#OnDirection').prop('checked'));\r\n }\r\n });\r\n\r\n return mymap;\r\n}\r\n\r\n// Получаем инфо точки трека\r\n// Параметры:\r\n// map - Leaflet карта, на которой построен трек\r\nvar getPointTrack = function (map) {\r\n\r\n // Функ-я сравнения координат типа Объект {lat, lng}\r\n function _compareLatLngs(left, right) {\r\n return left.lat.toFixed(5) === right.lat.toFixed(5) && left.lng.toFixed(5) === right.lng.toFixed(5);\r\n }\r\n\r\n // Функ-я получения инфо о точке трека\r\n // Параметры:\r\n // urlObj - объект {url - адрес для формирования трека, data - период формирования трека}\r\n // pointIndex - Индекс выбранной точки из трека\r\n // $container - контейнер попап окна Leaflet\r\n function getPointDatas(urlObj, pointIndex, $container) {\r\n var infoDefault = '
Время: \"Не известно\"
Скорость: \"Не известно\"
';\r\n if (pointIndex) {\r\n $.ajax({\r\n url: urlObj.url + '/' + pointIndex,\r\n contentType: 'application/json; charset=utf-8',\r\n type: 'GET',\r\n dataType: 'json',\r\n data: urlObj.data\r\n }).done(function (result) {\r\n var data = result ?\r\n '
Время: {OnDateString}
Скорость: {Speed} км/ч
'.format(result) :\r\n infoDefault;\r\n // Актуализуем инфо\r\n _updatePopup($container, data);\r\n }).fail(() => {\r\n $container.html($container.html() + infoDefault);\r\n $container.removeClass('busy'); // Убираем спиннер загрузки\r\n });\r\n }\r\n }\r\n\r\n // Обновляем данные в попап-балуне\r\n // $container - контейнер попап балуна, класс которого '.leaflet-popup-content'\r\n // data - html с инфо о скорости и времени\r\n function _updatePopup($container, data) {\r\n $container.html($container.html() + data); // обновляем html\r\n var beforeWidth = $container.width(); // Узнаем размер попап-балуна до обновления его ширины\r\n $container.width('80%'); // обновляем ширину попап-балуна\r\n var afterWidth = $container.width(); // Узнаем размер попап-балуна после обновления его ширины\r\n var leftCoefficient = (afterWidth - beforeWidth) / 2; // Вычисяем коэффициент сдвига попап-балуна\r\n var left = $container.closest('.leaflet-popup').css('left'); // Узнаем текущее положение от левого края (строка)\r\n var trueLeft = Number(left.replace('px', '')) - leftCoefficient; // Изменяем величину положения попап-балуна от левого края\r\n $container.closest('.leaflet-popup').attr('style', $container.closest('.leaflet-popup').attr('style').replace(left, trueLeft + 'px')); // Изменяем положение попап-балуна от левого края\r\n $container.removeClass('busy'); // Убираем спиннер загрузки\r\n }\r\n\r\n map\r\n .on('popupopen', function (e) {\r\n var $popupContent = $('.leaflet-popup-content', e.popup._container);\r\n $popupContent.addClass('busy'); // Добавляем спиннер загрузки\r\n tracks.forEach(function (data, idx) {\r\n $.each(data.track.polyline._layers, function (idx, layer) {\r\n // Если в опциях слоя есть маркер, что это трек,\r\n // и попап окно слоя аналогично открытому попап окну, или у открытого окна в опциях есть маркер, что это направление,\r\n // то ищем точку в этом слое, которая равна, или близко расположена к координатам точки клика по треку\r\n if (layer.options && layer.options.isTrack && (layer._popup === e.popup || e.popup.options.isDirection)) {\r\n var pointIndex = 0;\r\n var point = layer._latlngs ?\r\n $.grep(layer._latlngs, function (n, i) { if (_compareLatLngs(n, e.popup._latlng)) { pointIndex = i; } return _compareLatLngs(n, e.popup._latlng); }) :\r\n [];\r\n // Если true, значит клик был не по маркеру направления => pointIndex не найден, необходимо искать точку на polilyne\r\n if (point.length === 0) {\r\n pointIndex = MapHelper.findPosition(e.popup._latlng, layer._latlngs, MapHelper.getZoom(map).coefficient).index;\r\n }\r\n getPointDatas(data.url, pointIndex, $popupContent);\r\n\r\n return;\r\n }\r\n });\r\n });\r\n });\r\n}\r\n\r\n// Отрисовка стрелок направлений\r\n// Параметры:\r\n// map - инициализированная карта Leaflet\r\n// isChecked - если true, добавляет стрелки на карту, иначе стирает\r\nvar drawDirections = function (map, isChecked) {\r\n if (isChecked) {\r\n map.eachLayer(function (layer) {\r\n if (layer.options && layer.options.isTrack) {\r\n // lastTracks - данные, которые были получены в ходе построения треков\r\n if (lastTracks) {\r\n lastTracks.forEach(function (tracks, idx) {\r\n // tracks - пакет, включающий в себя массив инфо о ТС и трек ТС\r\n tracks.forEach(function (trackData, idx) {\r\n var popup;\r\n if (trackData.Vehicle) {\r\n popup = trackData.Vehicle.Name ? '
' + trackData.Vehicle.Name + '

' : '
';\r\n // Добавляем html спиннера загрузки\r\n popup += '
';\r\n }\r\n var track = trackData.Datas;\r\n var lastPoint = [];\r\n for (var i = 0; i < track.length; i++) {\r\n var drawingPoint = _drawDirection(map, track, i, popup, lastPoint, zoomedInterval[map.getZoom()]);\r\n if (drawingPoint && drawingPoint.length > 0) {\r\n lastPoint = drawingPoint;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n }\r\n });\r\n } else {\r\n map.eachLayer(function (layer) {\r\n // Проверка на принадлежность слоя к треку\r\n if (layer.options && layer.options.isDirection) {\r\n map.removeLayer(layer);\r\n }\r\n });\r\n }\r\n}\r\n\r\n// Функ-я проверки наличия заданного интервала между двумя географическими точками\r\n// Параметры:\r\n// left - первая точка, представляет собой массив [lat, lng]\r\n// right - вторая точка, представляет собой массив [lat, lng]\r\n// interval - заданное в километрах расстояние между двумя точками\r\nfunction _hasInterval(left, right, interval) {\r\n var distance = left && left.length > 0 && right ? L.latLng(left[0], left[1]).distanceTo(right) : 0;\r\n\r\n return interval && distance && interval * 1000 <= distance;\r\n}\r\n\r\n// Отрисовка направлений для трека\r\n// Параметры:\r\n// layerGroup - группа, в которую будут добавлены маркеры направлений\r\n// track - пакет данных, включающий в себя точку трека и направление движения\r\n// idx - индекс пакета\r\n// popup (nullable) - информация о добавляемом маркере направления (сбиндится в попап окно Leaflet)\r\n// lastPoint (nullable) - Предыдущая точка с маркером направления\r\n// interval (nullable) - Интервал (км), с учетом зума карты, через который будут рисоваться маркеры направлений\r\nfunction _drawDirection(layerGroup, track, idx, popup, lastPoint, interval, vehicleId) {\r\n // Парсинг данных пакета\r\n // Координаты для маркера выбираются, если точка первая или последняя в списке, \r\n // или расстояние между маркером и текущей точкой не меньше чем заданный интервал\r\n var point = idx === 0 ?\r\n [track[0][0], track[0][1]] :\r\n idx === track.length - 1 ?\r\n [track[track.length - 1][0], track[track.length - 1][1]] :\r\n _hasInterval(lastPoint, [track[idx][0], track[idx][1]], interval) ?\r\n [track[idx][0], track[idx][1]] :\r\n [];\r\n if (!point || point.length === 0) {\r\n return point;\r\n }\r\n\r\n // Угол поворота маркера (направление движения ТС)\r\n var direction = track[idx][2];\r\n // Опции добавляемого маркера - Объект { icon - иконка маркера направления, isDirection - опция, определяющая отношение маркера к треку }\r\n var options = {\r\n icon: new L.divIcon({\r\n className: \"directionIcon\",\r\n iconSize: new L.Point(21, 12),\r\n iconAnchor: new L.Point(11, 6),\r\n html: \"
\"\r\n }),\r\n isDirection: true,\r\n vehicleId: vehicleId\r\n };\r\n // Добавление маркера в группу объектов карты\r\n var markerDirection;\r\n if (popup && popup.length > 0) {\r\n markerDirection = new L.marker(point, options).bindPopup(popup, { isDirection: true });\r\n } else {\r\n markerDirection = new L.marker(point, options);\r\n }\r\n layerGroup.addLayer(markerDirection);\r\n\r\n return point;\r\n}\r\n","var VehicleOnObjectsReport = (function () {\r\n var localTableUrl,\r\n editMode;\r\n var vehicles = [];\r\n\r\n var change = function() {\r\n $('[js=interruptReport]').hide();\r\n var from = $('#From').val();\r\n var to = $('#To').val();\r\n if (!from && !to) {\r\n var date = new Date;\r\n date.setDate(date.getDate() - 1);\r\n $('#From').data(\"DateTimePicker\").date(date);\r\n $('#To').data(\"DateTimePicker\").date(new Date);\r\n } else if (!from) {\r\n var momentTo = $('#To').data(\"DateTimePicker\").date();\r\n var dateFrom = momentTo.toDate();\r\n dateFrom.setDate(dateFrom.getDate() - 1);\r\n $('#From').data(\"DateTimePicker\").date(dateFrom);\r\n } else if (!to) {\r\n var momentFrom = $('#From').data(\"DateTimePicker\").date();\r\n var dateTo = momentFrom.toDate();\r\n dateTo.setDate(dateTo.getDate() + 1);\r\n $('#To').data(\"DateTimePicker\").date(dateTo);\r\n }\r\n // Отправка запроса на выполнение расчета\r\n $.ajax({\r\n url: Url.action('api/vehicleOnObjects/report/calc'),\r\n type: 'POST',\r\n dataType: 'json',\r\n data: {\r\n From: $('#From').val(),\r\n To: $('#To').val(),\r\n SelectedContractorIds: $('#SelectedContractorIds').val(),\r\n SelectedRoadIds: $('#SelectedRoadIds').val(),\r\n SelectedSectionServiceIds: $('#SelectedSectionServiceIds').val(),\r\n SelectedVehicleIds: $('#SelectedVehicleIds').val(),\r\n TimeOnObject: $('#TimeOnObject').val()\r\n }\r\n })\r\n .done(function(result) {\r\n if (result.error) {\r\n $.each($('.field-validation-valid.text-danger'),\r\n function(idx, span) {\r\n if ($(span).data('valmsgFor') === result.field) {\r\n $(span).text(result.text);\r\n }\r\n $('#SelectedContractorIds,#SelectedRoadIds,#SelectedVehicleIds,#From,#To')\r\n .on('change',\r\n function() {\r\n $(span).text('');\r\n });\r\n });\r\n } else {\r\n $('[js=exportToExcel]').attr('disabled', 'disabled');\r\n $('[js=reportGroupBy]').attr('disabled', 'disabled');\r\n $('[js=applyFilter]').attr('disabled', 'disabled');\r\n $('[js=clearFilter]').attr('disabled', 'disabled');\r\n $('[js=interruptReport]').removeAttr('disabled');\r\n $('[js=interruptReport]').show();\r\n $('#VehicleOnObjectReportTable_processing,#VehicleOnObjectReportTableEdit_processing')\r\n .attr('style', 'display: block;');\r\n $('#Status').val(ReportStatuses.InProcess);\r\n window.globalReportsId.VehicleOnObj = result;\r\n localStorage.setItem('globalReportsId', JSON.stringify(window.globalReportsId));\r\n }\r\n window.trackUrls.length = 0;\r\n });\r\n };\r\n\r\n var init = function() {\r\n window.trackUrls.length = 0;\r\n if (editMode) {\r\n $(\".select2\").select2({\r\n placeholder: 'Введите транспортные средства',\r\n });\r\n } else {\r\n var $select2 = $('.select2').select2();\r\n\r\n $.each($('.select2-selection__choice'),\r\n function(idx, obj) {\r\n var option = Select2Helper().findOption($(obj));\r\n var classes = option.attr(\"class\");\r\n\r\n $(obj).attr(\"class\", \"select2-selection__choice \" + classes);\r\n });\r\n\r\n $('.select2-selection__choice').on('click',\r\n function() {\r\n var option = Select2Helper().findOption($(this));\r\n var href = option.data(\"href\");\r\n\r\n if (href) {\r\n location.href = href;\r\n }\r\n });\r\n }\r\n ChosenSelect.Init();\r\n datetimepickerRangeInit({ $inputFrom: $('#From'), $inputTo: $('#To'), withSeconds: true });\r\n\r\n $('#SelectedSectionServiceIds').on('change',\r\n function() {\r\n if (!$('#SelectedRoadIds').data('disabled')) {\r\n var values = $(this).val();\r\n if (values && values.length > 0) {\r\n $('#SelectedRoadIds').attr('disabled', 'disabled');\r\n $('#SelectedRoadIds').trigger('chosen:updated');\r\n } else {\r\n $('#SelectedRoadIds').removeAttr('disabled');\r\n $('#SelectedRoadIds').trigger('chosen:updated');\r\n }\r\n }\r\n });\r\n $('#SelectedRoadIds').on('change',\r\n function() {\r\n var values = $(this).val();\r\n if (values && values.length > 0) {\r\n $('#SelectedSectionServiceIds').find('option').hide();\r\n for (var i = 0; i < values.length; i++) {\r\n $('#SelectedSectionServiceIds').find('option[data-road-id=\"' + values[i] + '\"]').show();\r\n }\r\n $('#SelectedSectionServiceIds').trigger('chosen:updated');\r\n } else {\r\n $('#SelectedSectionServiceIds').find('option').show();\r\n $('#SelectedSectionServiceIds').trigger('chosen:updated');\r\n }\r\n });\r\n };\r\n\r\n var interrupt = function() {\r\n var reportId = '';\r\n if (localStorage.getItem('globalReportsId')) {\r\n var globalReportId = JSON.parse(localStorage.getItem('globalReportsId'));\r\n reportId = globalReportId.VehicleOnObj;\r\n }\r\n $.ajax({\r\n url: Url.action('api/vehicleOnObjects/report/interrupt'),\r\n type: 'POST',\r\n dataType: 'json',\r\n data: {\r\n reportId: reportId\r\n }\r\n }).complete(function() {\r\n $('[js=interruptReport]').attr('disabled', 'disabled');\r\n });\r\n };\r\n\r\n var clearFilter = function () {\r\n\r\n var date = new Date;\r\n date.setDate(date.getDate() - 1);\r\n $('#From').data(\"DateTimePicker\").date(date);\r\n $('#To').data(\"DateTimePicker\").date(new Date);\r\n\r\n $('#TimeOnObject').val('0');\r\n\r\n $('#SelectedSectionServiceIds').val(null);\r\n $('#SelectedSectionServiceIds').find('option').show();\r\n $('#SelectedSectionServiceIds').trigger('chosen:updated');\r\n\r\n $('#SelectedRoadIds').val(null);\r\n $('#SelectedRoadIds').find('option').show();\r\n $('#SelectedRoadIds').removeAttr('disabled');\r\n $('#SelectedRoadIds').trigger('chosen:updated');\r\n\r\n $('#SelectedVehicleIds').val(null);\r\n $('#SelectedVehicleIds').trigger('chosen:updated');\r\n\r\n $('#SelectedContractorIds').val(null);\r\n $('#SelectedContractorIds').trigger('chosen:updated');\r\n };\r\n\r\n var tableOption = function (localTableUrl, checkedRows, $table) {\r\n return {\r\n language: {\r\n url: localTableUrl,\r\n select: {\r\n rows: \"Выбрано %d строк\"\r\n }\r\n },\r\n processing: false,\r\n pageLength: 100,\r\n lengthMenu: [10, 25, 50, 100],\r\n searching: false,\r\n dom: \"<'row'<'col-sm-6'l><'col-sm-6 text-right top-paginate'p>>\" +\r\n \"<'row'<'col-sm-12'tr>>\" +\r\n \"<'row'<'col-sm-5'i><'col-sm-7'p>>\",\r\n columnDefs: [\r\n {\r\n orderable: false,\r\n visible: true,\r\n targets: 0\r\n },\r\n {\r\n orderable: false,\r\n targets: 1,\r\n visible: true,\r\n },\r\n {\r\n orderable: false,\r\n targets: 2,\r\n visible: true,\r\n },\r\n {\r\n orderable: false,\r\n targets: 3,\r\n visible: true,\r\n },\r\n {\r\n orderable: false,\r\n targets: 4,\r\n visible: true,\r\n },\r\n {\r\n orderable: false,\r\n targets: 5,\r\n visible: true,\r\n },\r\n {\r\n orderable: false,\r\n targets: 6,\r\n visible: true,\r\n },\r\n {\r\n orderable: false,\r\n targets: 7,\r\n visible: true,\r\n }\r\n ],\r\n order: false,\r\n initComplete: function () {\r\n $('
Группировать по
')\r\n .remove()\r\n .appendTo($('#VehicleOnObjectReportTable_wrapper .col-sm-6:eq(0),#VehicleOnObjectReportTableEdit_wrapper .col-sm-6:eq(0)'));\r\n //Используется для кэширования html-разметки диалога \"Треков ТС\"\r\n $('')\r\n .remove()\r\n .appendTo($('#VehicleOnObjectReportTable_wrapper .col-sm-6:eq(1),#VehicleOnObjectReportTableEdit_wrapper .col-sm-6:eq(1)'));\r\n if (editMode) {\r\n $('')\r\n .remove()\r\n .appendTo($('#VehicleOnObjectReportTableEdit_wrapper .col-sm-6:eq(1)'));\r\n }\r\n $('[js=reportGroupBy]').val($('#ByVehicle').val().toLowerCase());\r\n $('[js=reportGroupBy]').on('change', function (e) {\r\n $('#ByVehicle').val(this.value);\r\n reloadReport(window.globalReportsId.VehicleOnObj, window.globalReportsId.ObjId, _reInit, true);\r\n });\r\n },\r\n select: {\r\n style: 'multi',\r\n selector: 'td:first-child'\r\n }\r\n };\r\n }\r\n\r\n function tableInit () {\r\n var tracksUrl = Url.action('api/vehicles/track=ids@from-to');\r\n var checkedRows = [];\r\n vehicles = [];\r\n var $table = $('#VehicleOnObjectReportTable,#VehicleOnObjectReportTableEdit');\r\n var checkAll = $table.find('[js=checkAll]');\r\n\r\n var table = $table.DataTable(tableOption(localTableUrl, checkedRows, $table))\r\n .on('page.dt', function(e, settings) {\r\n checkAllItem();\r\n })\r\n .on('select', function (event, api, type, index) {\r\n var currentTable = this;\r\n var start = api.page.info().start;\r\n $.each(index, function(idx, number) {\r\n var rowId = api.row(number).id();\r\n\r\n if (!checkedRows.contains(number)) {\r\n if (rowId && rowId != \"undefined\") {\r\n checkedRows.push(number);\r\n $('[js=show-tracks]').removeAttr('disabled');\r\n } else {\r\n table.rows(api.row(number)).deselect();\r\n }\r\n }\r\n\r\n if (Number(rowId)) {\r\n var trIndex = number - start;\r\n var $row = $(currentTable).find('tbody tr:eq(' + trIndex + ')');\r\n // Формируем список Url для построения треков\r\n var vehicleId = $row.data('id');\r\n var startTime = api.row(number).data()[1];\r\n var stopTime = api.row(number).data()[2];\r\n window.trackUrls.push(generateUrl(vehicleId, startTime, stopTime));\r\n\r\n if (editMode) {\r\n var contractorId = $row.data('contractor-id');\r\n var roadId = $row.data('road-id');\r\n var startKm = parseFloat($row.attr('data-start-km').replace(/,/, '.'));\r\n var stopKm = parseFloat($row.attr('data-stop-km').replace(/,/, '.'));\r\n vehicles.push({\r\n vehicleId: vehicleId,\r\n contractorId: contractorId,\r\n roadId: roadId,\r\n startTime: startTime,\r\n stopTime: stopTime,\r\n startKm: startKm,\r\n stopKm: stopKm\r\n });\r\n }\r\n }\r\n });\r\n\r\n checkAllItem();\r\n if (editMode) {\r\n if (canFillWork())\r\n $('[js=fill-work]').removeAttr('disabled');\r\n else\r\n $('[js=fill-work]').attr('disabled', 'disabled');\r\n }\r\n })\r\n .on('deselect', function (event, api, type, index) {\r\n var currentTable = this;\r\n var start = api.page.info().start;\r\n $.each(index, function(idx, number) {\r\n var rowId = api.row(number).id();\r\n checkedRows.removeValue(number);\r\n\r\n if (Number(rowId)) {\r\n var trIndex = number - start;\r\n var $row = $(currentTable).find('tbody tr:eq(' + trIndex + ')');\r\n // Актуализуем список Url для построения треков\r\n var vehicleId = $row.data('id');\r\n var startTime = api.row(number).data()[1];\r\n var stopTime = api.row(number).data()[2];\r\n var removedUrlData = generateUrl(vehicleId, startTime, stopTime);\r\n window.trackUrls = window.trackUrls.filter(function(urlData) {\r\n return urlData.url !== removedUrlData.url && urlData.data.from !== removedUrlData.data.from && urlData.data.to !== removedUrlData.data.to;\r\n });\r\n if (editMode) {\r\n var contractorId = $row.data('contractor-id');\r\n var roadId = $row.data('road-id');\r\n var startKm = parseFloat($row.attr('data-start-km').replace(/,/, '.'));\r\n var stopKm = parseFloat($row.attr('data-stop-km').replace(/,/, '.'));\r\n vehicles = vehicles.filter(function(vehicle) {\r\n return vehicle.vehicleId !== vehicleId ||\r\n vehicle.contractorId !== contractorId ||\r\n vehicle.roadId !== roadId ||\r\n vehicle.startTime !== startTime ||\r\n vehicle.stopTime !== stopTime ||\r\n vehicle.startKm !== startKm ||\r\n vehicle.stopKm !== stopKm;\r\n });\r\n }\r\n }\r\n });\r\n\r\n checkAllItem();\r\n if (checkedRows.length === 0) {\r\n $('[js=show-tracks]').attr('disabled', 'disabled');\r\n }\r\n if (editMode) {\r\n if (canFillWork())\r\n $('[js=fill-work]').removeAttr('disabled');\r\n else\r\n $('[js=fill-work]').attr('disabled', 'disabled');\r\n }\r\n\r\n });\r\n\r\n function checkAllItem() {\r\n // Кол-во выбранных строк\r\n var rowsSelectedCount = 0;\r\n // Кол-во строк которые можно выбрать\r\n var rowsAllCount = 0;\r\n var info = table.page.info();\r\n for (var i = info.start; i < info.end ; i++) {\r\n if (Number(table.row(i).id())) {\r\n rowsAllCount++;\r\n if (checkedRows.contains(i)) {\r\n rowsSelectedCount++;\r\n }\r\n }\r\n }\r\n checkAll.toggleClass('selected', rowsSelectedCount === rowsAllCount);\r\n }\r\n\r\n function canFillWork() {\r\n if (vehicles.length === 0)\r\n return false;\r\n if (vehicles.length === 1)\r\n return true;\r\n\r\n var vehicleId = vehicles[0].vehicleId;\r\n var roadId = vehicles[0].roadId;\r\n for (var i = 1; i < vehicles.length; i++) {\r\n if (vehicles[i].vehicleId !== vehicleId || vehicles[i].roadId !== roadId)\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n checkAll.on('click', function () {\r\n var checkVal = checkAll.toggleClass('selected').hasClass('selected');\r\n var selectedRow = [];\r\n\r\n var info = table.page.info();\r\n for (var i = info.start; i < info.end ; i++) {\r\n if (Number(table.row(i).id())) {\r\n selectedRow.push(i);\r\n }\r\n }\r\n\r\n if (checkVal) {\r\n table.rows(selectedRow).select();\r\n } else {\r\n table.rows(selectedRow).deselect();\r\n }\r\n });\r\n\r\n return table;\r\n }\r\n\r\n function generateUrl(vehicleId, startDate, stopDate) {\r\n return {\r\n url: Url.action('api/vehicles/{0}/track'.format(vehicleId)),\r\n data: {\r\n from: startDate,\r\n to: stopDate\r\n }\r\n };\r\n }\r\n\r\n // Функция для построения отчета с вкладки \"Отчеты\"\r\n var initPage = function (option) {\r\n localTableUrl = Url.content('Content/Inspinia/plugins/dataTables/languages/Russian.json');\r\n editMode = option.editMode;\r\n\r\n var table = _reInit();\r\n\r\n if (Number($('#Status').val()) === ReportStatuses.InProcess) {\r\n $('[js=exportToExcel]').attr('disabled', 'disabled');\r\n $('[js=applyFilter]').attr('disabled', 'disabled');\r\n $('[js=clearFilter]').attr('disabled', 'disabled');\r\n $('[js=reportGroupBy]').attr('disabled', 'disabled');\r\n $('[js=interruptReport]').show();\r\n $('#VehicleOnObjectReportTable_processing,#VehicleOnObjectReportTableEdit_processing').attr('style', 'display: block;');\r\n }\r\n }\r\n\r\n var getSelectedVehicles = function() {\r\n return vehicles;\r\n }\r\n\r\n //\r\n function _reInit() {\r\n localTableUrl = Url.content('Content/Inspinia/plugins/dataTables/languages/Russian.json');\r\n\r\n var table = tableInit();\r\n init();\r\n\r\n return table;\r\n }\r\n\r\n return {\r\n Init: initPage,\r\n Change: change,\r\n ReInit: _reInit,\r\n Interrupt: interrupt,\r\n ClearFilter: clearFilter,\r\n GetSelectedVehicles: getSelectedVehicles\r\n };\r\n}());\r\n","var VehicleOnTypesReport = (function () {\r\n var tableId,\r\n buttonId,\r\n reportStatus;\r\n\r\n var init = function () {\r\n $('.select2').select2();\r\n\r\n $.each($('.select2-selection__choice'), function (index, control) {\r\n var option = Select2Helper().findOption($(control));\r\n var color = option.data(\"color\");\r\n if (color) {\r\n $(control).addClass(color);\r\n }\r\n });\r\n\r\n $('.select2-selection__choice').on('click', function () {\r\n var option = Select2Helper().findOption($(this));\r\n var href = option.data(\"href\");\r\n if (href) {\r\n location.href = href;\r\n }\r\n });\r\n\r\n ChosenSelect.Init();\r\n datetimepickerRangeInit({ $inputFrom: $('#From'), $inputTo: $('#To'), withSeconds: true });\r\n\r\n if ($('#ReportStatus').val() == ReportStatuses.getName(ReportStatuses.InProcess)) {\r\n $('#' + tableId + '_processing').attr('style', 'display: block;');\r\n $('#' + buttonId).attr('disabled', 'disabled');\r\n $('[js=exportToExcel]').attr('disabled', 'disabled');\r\n $('[js=clearFilter]').attr('disabled', 'disabled');\r\n $('[js=interruptReport]').show();\r\n }\r\n }\r\n\r\n var treesInit = function () {\r\n $('#byTypesTree').jstree({\r\n \"core\": {\r\n \"themes\": {\r\n \"icons\": false\r\n }\r\n }\r\n });\r\n $('#byContractorsTree').jstree({\r\n \"core\": {\r\n \"themes\": {\r\n \"icons\": false\r\n }\r\n }\r\n });\r\n\r\n\r\n $('#byContractorsTree').on('ready.jstree', function () {\r\n $('#byContractorsTree').off(\"click.jstree\", \".jstree-anchor\");\r\n });\r\n $('#byTypesTree').on('ready.jstree', function () {\r\n $('#byTypesTree').off(\"click.jstree\", \".jstree-anchor\");\r\n });\r\n\r\n }\r\n\r\n var change = function () {\r\n $('#' + tableId + '_processing').attr('style', 'display: block;');\r\n $('#' + buttonId).attr('disabled', 'disabled');\r\n $('[js=interruptReport]').hide();\r\n $('[js=exportToExcel]').attr('disabled', 'disabled');\r\n $('[js=clearFilter]').attr('disabled', 'disabled');\r\n var filter = {\r\n From: $('#From').val(),\r\n To: $('#To').val(),\r\n SelectedContractorIds: $('#SelectedContractorIds').val(),\r\n SelectedRoadIds: $('#SelectedRoadIds').val(),\r\n SelectedVehicleTypeIds: $('#SelectedVehicleTypeIds').val(),\r\n SelectedMinOnObjectValue: $('#SelectedMinOnObjectValue').val()\r\n };\r\n\r\n $.ajax({\r\n url: Url.action('vehiclesByTypes/startReport'),\r\n type: 'POST',\r\n data: filter\r\n })\r\n .success(function (result) {\r\n if (result.model) {\r\n if (result.model.ReportStatus == 1) {\r\n $('#ReportStatus').val(result.model.ReportStatus);\r\n $('#' + tableId + '_processing').attr('style', 'display: block;');\r\n $('#' + buttonId).attr('disabled', 'disabled');\r\n $('[js=clearFilter]').attr('disabled', 'disabled');\r\n $('[js=exportToExcel]').attr('disabled', 'disabled');\r\n $('[js=interruptReport]').removeAttr('disabled');\r\n $('[js=interruptReport]').show();\r\n\r\n }\r\n }\r\n if (result.reportId) {\r\n window.globalReportsId.VehicleOnType = result.reportId;\r\n localStorage.setItem('globalReportsId', JSON.stringify(window.globalReportsId));\r\n }\r\n }).error(function (xhr, status) {\r\n $('[js=exportToExcel]').removeAttr('disabled');\r\n $('[js=clearFilter]').removeAttr('disabled');\r\n $('#' + buttonId).removeAttr('disabled');\r\n $('#' + tableId + '_processing').attr('style', 'display: none;');\r\n init();\r\n console.log(status);\r\n });\r\n }\r\n\r\n var initPage = function (option) {\r\n buttonId = 'applyFilter';\r\n tableId = 'VehicleOnTypeReportTable';\r\n reportStatus = option.reportStatus;\r\n\r\n $(document).ready(function() {\r\n treesInit();\r\n init();\r\n });\r\n }\r\n\r\n var _reInitFunc = () => {\r\n treesInit();\r\n init();\r\n }\r\n\r\n var interrupt = function() {\r\n var reportId = '';\r\n if (localStorage.getItem('globalReportsId')) {\r\n var globalReportId = JSON.parse(localStorage.getItem('globalReportsId'));\r\n reportId = globalReportId.VehicleOnType;\r\n }\r\n $.ajax({\r\n url: Url.action('api/vehiclesByTypes/report/interrupt'),\r\n type: 'POST',\r\n data: {\r\n reportId: reportId\r\n }\r\n })\r\n .complete(function() {\r\n $('[js=interruptReport]').attr('disabled', 'disabled');\r\n });\r\n };\r\n\r\n var clearFilter = function () {\r\n\r\n var date = new Date;\r\n date.setDate(date.getDate() - 1);\r\n $('#From').data(\"DateTimePicker\").date(date);\r\n $('#To').data(\"DateTimePicker\").date(new Date);\r\n\r\n $('#SelectedMinOnObjectValue').val('0');\r\n\r\n $('#SelectedVehicleTypeIds').val(null);\r\n $('#SelectedVehicleTypeIds').trigger('chosen:updated');\r\n\r\n $('#SelectedRoadIds').val(null);\r\n $('#SelectedRoadIds').trigger('chosen:updated');\r\n\r\n $('#SelectedVehicleIds').val(null);\r\n $('#SelectedVehicleIds').trigger('chosen:updated');\r\n\r\n $('#SelectedContractorIds').val(null);\r\n $('#SelectedContractorIds').trigger('chosen:updated');\r\n };\r\n\r\n return {\r\n Init: initPage,\r\n Change: change,\r\n ClearFilter: clearFilter,\r\n ReInitFunc: _reInitFunc,\r\n Interrupt: interrupt\r\n };\r\n}());\r\n","var Vehicles = (function () {\r\n\r\n function _deleteObject(ids) {\r\n return $.ajax({\r\n url: Url.action('api/vehicles'),\r\n type: 'DELETE',\r\n dataType: 'json',\r\n data: { ids: ids }\r\n })\r\n .done(() => {\r\n _refreshTable(true, ids);\r\n });\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n _deleteObject(ids);\r\n }\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(VehicleViewModal, id,\r\n (vehicleId) => {\r\n _deleteObject([vehicleId]).done(() => {\r\n modal.close();\r\n });\r\n },\r\n (vehicleId) => {\r\n _showOnMap([vehicleId]);\r\n })\r\n .on('closed', (modalResult) => {\r\n _refreshTable();\r\n });\r\n }\r\n\r\n function _refreshTable(resetChecked, rowsForDeselect) {\r\n var table = $('#VehicleListItemTable').DataTable();\r\n refreshTable(table, resetChecked, null, rowsForDeselect);\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(VehicleEditModal).on('closed', (modalResult) => {\r\n if (modalResult.ok)\r\n _refreshTable();\r\n });\r\n }\r\n\r\n function _showOnMap(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.map(ObjectTypes.Vehicle, ids);\r\n }\r\n }\r\n\r\n function _init() {\r\n\r\n $(document)\r\n .on('click', 'td.show-track-td', function (e) {\r\n\r\n var table = $('#VehicleListItemTable').DataTable();\r\n var row = table.row($(this).parent()).data();\r\n var id = row.Id;\r\n\r\n ModalConductor.activate(VehicleTrackModal, id);\r\n });\r\n }\r\n\r\n return {\r\n init: _init,\r\n show: _show,\r\n add: _add,\r\n deleteObjects: _delete,\r\n showOnMap: _showOnMap\r\n };\r\n}());\r\n","var VideoCamera = (function () {\r\n\r\n function deleteObject(ids) {\r\n return $.ajax({\r\n url: Url.action('api/videocameras'),\r\n type: 'DELETE',\r\n dataType: 'json',\r\n data: { ids: ids }\r\n })\r\n .done(() => {\r\n _refreshTable(true, ids);\r\n });\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(VideoCameraViewModal, id,\r\n (wCameraId) => {\r\n deleteObject([wCameraId]).done(() => {\r\n modal.close();\r\n });\r\n },\r\n (wCameraId) => {\r\n _showOnMap([wCameraId]);\r\n })\r\n .on('closed', (modalResult) => _refreshTable());\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObject(ids);\r\n }\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(VideoCameraEditModal).on('closed', (modalResult) => _refreshTable());\r\n };\r\n\r\n function _showOnMap(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.map(ObjectTypes.VideoCamera, ids);\r\n }\r\n };\r\n\r\n function _showObjects(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.action('videocameras/list/?ids=' + ids.join());\r\n }\r\n };\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#VideoCameraListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, false, idsForDeselect);\r\n };\r\n\r\n return {\r\n show: _show,\r\n add: _add,\r\n deleteObjects: _delete,\r\n showOnMap: _showOnMap,\r\n showObjects: _showObjects\r\n };\r\n}());\r\n","var WStation = (function () {\r\n\r\n function deleteObject(ids) {\r\n return $.ajax({\r\n url: Url.action('api/wstations'),\r\n type: 'DELETE',\r\n dataType: 'json',\r\n data: { ids: ids }\r\n })\r\n .done((r) => _refreshTable(true, ids))\r\n .fail((e) => _showError(e));\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(WStationViewModal, id,\r\n (wstationId) => {\r\n deleteObject([wstationId]).done(() => {\r\n modal.close();\r\n });\r\n },\r\n (wstationId) => {\r\n _showOnMap([wstationId]);\r\n })\r\n .on('closed', (modalResult) => _refreshTable());\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObject(ids);\r\n }\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(WStationEditModal).on('closed', (modalResult) => _refreshTable());\r\n };\r\n\r\n function _showOnMap(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.map(ObjectTypes.WStation, ids);\r\n }\r\n };\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#WStationListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, false, idsForDeselect);\r\n };\r\n\r\n function _showObjects(ids) {\r\n if (ids.length > 0) {\r\n location.href = Url.action('wstations/list/?ids={0}'.format(ids.join()));\r\n }\r\n };\r\n\r\n function _showError(e) {\r\n var errorMessage = (e && e.responseJSON && e.responseJSON.Error)\r\n ? e.responseJSON.Error\r\n : 'При удалении произошла ошибка.';\r\n ModalConductor.activate(MessageModal, $('#message-tmpl').text(), 'Ошибка!', errorMessage);\r\n };\r\n\r\n return {\r\n show: _show,\r\n add: _add,\r\n deleteObjects: _delete,\r\n showOnMap: _showOnMap,\r\n showObjects: _showObjects\r\n };\r\n}());\r\n","var WorkType = (function () {\r\n\r\n function deleteObjects(ids) {\r\n return $.ajax({\r\n url: Url.action('api/workTypes'),\r\n type: 'DELETE',\r\n data: { ids: ids }\r\n })\r\n .done(() => _refreshTable(true, ids));\r\n };\r\n\r\n function _show(id) {\r\n var modal = ModalConductor.activate(WorkTypeViewModal, id,\r\n (workTypeId) => {\r\n deleteObjects([workTypeId]).done(() => modal.close());\r\n })\r\n .on('closed', (modalResult) => _refreshTable());\r\n };\r\n\r\n function _del(ids) {\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n deleteObjects(ids);\r\n }\r\n };\r\n\r\n function _add() {\r\n ModalConductor.activate(WorkTypeEditModal)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n }\r\n });\r\n };\r\n\r\n function _refreshTable(resetChecked, idsForDeselect) {\r\n var table = $('#WorkTypeListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, null, idsForDeselect);\r\n };\r\n\r\n return {\r\n show: _show,\r\n del: _del,\r\n add: _add\r\n };\r\n}())\r\n","var Works = (function () {\r\n\r\n function _deleteObject(ids) {\r\n return $.ajax({\r\n url: Url.action('api/works'),\r\n type: 'DELETE',\r\n dataType: 'json',\r\n data: { ids: ids }\r\n })\r\n .done((notDeletedIds) => {\r\n _refreshTable(true, ids);\r\n\r\n var workIds = [];\r\n if (notDeletedIds && notDeletedIds.length > 0) {\r\n notDeletedIds.forEach(function (id) {\r\n if (workIds.indexOf(id) === -1) {\r\n workIds.push(id);\r\n }\r\n });\r\n }\r\n\r\n if (workIds.length > 0) {\r\n ModalConductor.activate(WorkErrorAcceptanceModal, $('#error-operation-tmpl').text(), 'Внимание!', 'не были удалены', workIds);\r\n }\r\n\r\n });\r\n };\r\n\r\n function _delete(ids) {\r\n if (ids.length > 1) {\r\n alert('Нельзя удалить удалить одновременно более одной записи!');\r\n return;\r\n }\r\n if (ids.length > 0 && confirm('Вы действительно хотите удалить {0} записей?'.format(ids.length))) {\r\n _deleteObject(ids);\r\n }\r\n };\r\n\r\n // Функция открытия формы просмотра\r\n function _show(id) {\r\n $('#transportLocationReport').html('');\r\n $('#transportLocationReportEdit').html('');\r\n\r\n var modal = ModalConductor.activate(WorkViewModal, id,\r\n (workId) => {\r\n _deleteObject([workId]).done(() => {\r\n modal.close();\r\n });\r\n },\r\n _refreshTable)\r\n .on('closed', (modalResult) => {\r\n // Обновляем данные таблицы (необходимо для актуализации данных о расчете коэффициента)\r\n _refreshTable();\r\n });\r\n }\r\n\r\n function _add() {\r\n $('#transportLocationReport').html('');\r\n $('#transportLocationReportEdit').html('');\r\n\r\n ModalConductor.activate(WorkEditModal).on('closed', (modalResult) => {\r\n\r\n function afterSave(modalResult) {\r\n var workId = modalResult.data.id;\r\n if (modalResult.data.canAutoUpdate) {\r\n var status = modalResult.data.status;\r\n ModalConductor.activate(WorkAutoStatusModal, workId, status).on('closed', (modalResult) => {\r\n var modal = ModalConductor.activate(WorkViewModal, workId,\r\n (workId) => {\r\n _deleteObject([workId]).done(() => {\r\n modal.close();\r\n });\r\n });\r\n });\r\n } else {\r\n var modal = ModalConductor.activate(WorkViewModal, workId,\r\n (workId) => {\r\n _deleteObject([workId]).done(() => {\r\n modal.close();\r\n });\r\n });\r\n }\r\n }\r\n\r\n\r\n if (modalResult.ok) {\r\n _refreshTable();\r\n var workId = modalResult.data.id;\r\n if (modalResult.data.boundaryChanged) {\r\n ModalConductor.activate(MessageModal, $('#message-tmpl').text(), 'Внимание!', 'Границы Работы сопоставлены с Участком обслуживания')\r\n .on('closed', (mr) => { afterSave(modalResult); });\r\n } else {\r\n afterSave(modalResult);\r\n }\r\n }\r\n });\r\n }\r\n\r\n function _refreshTable(resetChecked, deselectOnlyIds) {\r\n var table = $('#WorkListItemViewModelTable').DataTable();\r\n refreshTable(table, resetChecked, true, deselectOnlyIds);\r\n };\r\n\r\n return {\r\n add: _add,\r\n show: _show,\r\n del: _delete\r\n };\r\n}());\r\n","var ChosenSelect = (function () {\r\n\r\n function init() {\r\n var config = {\r\n '.chosen-select': { search_contains: true, no_results_text: 'Поиск не дал результатов' },\r\n '.chosen-select-deselect': { search_contains: true, allow_single_deselect: true, no_results_text: 'Поиск не дал результатов' },\r\n '.chosen-select-no-single': { search_contains: true, disable_search_threshold: 10, no_results_text: 'Поиск не дал результатов' },\r\n '.chosen-select-no-results': { search_contains: true, no_results_text: 'Поиск не дал результатов' },\r\n '.chosen-select-width': { search_contains: true, width: \"95% !important\", no_results_text: 'Поиск не дал результатов' }\r\n }\r\n for (var selector in config) {\r\n $(selector).chosen(config[selector]);\r\n }\r\n $('.search-field').css({ width: '100%' });\r\n $('.search-field input').css({ width: '100%' });\r\n }\r\n\r\n return { Init: init}\r\n}())\r\n","// Инициализация datetimepicker с русской локалью и активацией при клике по инпуту\r\n// Принимает в качестве параметра jQuery объект, представляющий собой инпут\r\n// Возвращает datetimepicker\r\nvar datetimepickerInit = function (options) {\r\n if (options.$input.attr('readonly')) {\r\n return {};\r\n }\r\n var $datetimepicker = options.$input.closest('.date');\r\n var defaultFormat = options.withSeconds ? 'DD-MM-YYYY HH:mm:ss' : 'DD-MM-YYYY HH:mm';\r\n var datetimepicker = $datetimepicker.datetimepicker({\r\n locale: 'ru',\r\n format: options.format ? options.format : defaultFormat,\r\n allowInputToggle: true,\r\n useCurrent: false, // При клике не вставляет текущую дату\r\n showClear: options.showClear,\r\n });\r\n\r\n return datetimepicker;\r\n}\r\n\r\n// Инициализация двух datetimepicker с русской локалью и активацией при клике по инпуту, представляющих собой диапазон дат\r\n// Принимает в качестве параметра jQuery объекты, представляющие собой инпуты \"С\" и \"По\"\r\n// Возвращает объект в котором datetimepickerFrom будет datetimepicker представляющий начала диапазона,\r\n// а datetimepickerTo будет datetimepicker представляющий конец диапазона\r\nvar datetimepickerRangeInit = function (options) {\r\n if (options.$inputFrom.attr('readonly') || options.$inputTo.attr('readonly')) {\r\n return {};\r\n }\r\n var $datetimepickerFrom = options.$inputFrom.closest('.date');\r\n var $datetimepickerTo = options.$inputTo.closest('.date');\r\n var defaultFormat = options.withSeconds ? 'DD-MM-YYYY HH:mm:ss' : 'DD-MM-YYYY HH:mm';\r\n var datetimepickerFrom = $datetimepickerFrom.datetimepicker({\r\n locale: 'ru',\r\n format: options.format ? options.format : defaultFormat,\r\n allowInputToggle: true,\r\n useCurrent: false, // При клике не вставляет текущую дату\r\n showClear: options.showClear,\r\n widgetPositioning: {\r\n vertical: 'bottom'\r\n }\r\n });\r\n var datetimepickerTo = $datetimepickerTo.datetimepicker({\r\n locale: 'ru',\r\n format: options.format ? options.format : defaultFormat,\r\n allowInputToggle: true,\r\n showClear: options.showClear,\r\n useCurrent: false, //Important! See issue #1075\r\n widgetPositioning: {\r\n vertical: 'bottom'\r\n }\r\n });\r\n // Если у инпута \"С\" есть значение, то ограничиваем datetimepicker \"По\"\r\n if (options.$inputFrom.val()) {\r\n $datetimepickerTo.data(\"DateTimePicker\").minDate(options.$inputFrom.val());\r\n }\r\n // Если у инпута \"По\" есть значение, то ограничиваем datetimepicker \"С\"\r\n if (options.$inputTo.val()) {\r\n $datetimepickerFrom.data(\"DateTimePicker\").maxDate(options.$inputTo.val());\r\n }\r\n // Если произошел ввод значения в datetimepicker \"С\" есть значение, то ограничиваем datetimepicker \"По\"\r\n $datetimepickerFrom.on(\"dp.change\", function (e) {\r\n $datetimepickerTo.data(\"DateTimePicker\").minDate(e.date);\r\n if (options.$inputFromOnChangeFunc) {\r\n options.$inputFromOnChangeFunc();\r\n }\r\n });\r\n // Если произошел ввод значения в datetimepicker \"По\" есть значение, то ограничиваем datetimepicker \"С\"\r\n $datetimepickerTo.on(\"dp.change\", function (e) {\r\n $datetimepickerFrom.data(\"DateTimePicker\").maxDate(e.date);\r\n if (options.$inputToOnChangeFunc) {\r\n options.$inputToOnChangeFunc();\r\n }\r\n });\r\n\r\n return { datetimepickerFrom: datetimepickerFrom, datetimepickerTo: datetimepickerTo };\r\n}\r\n\r\nvar dateRangeInit = function (options) {\r\n if (options.$inputFrom.attr('readonly') || options.$inputTo.attr('readonly')) {\r\n return {};\r\n }\r\n var $datepickerFrom = options.$inputFrom.closest('.date');\r\n var $datepickerTo = options.$inputTo.closest('.date');\r\n var defaultFormat = options.withSeconds ? 'DD-MM-YYYY HH:mm:ss' : 'DD-MM-YYYY HH:mm';\r\n var datepickerFrom = $datepickerFrom.datepicker({\r\n language: 'ru',\r\n format: options.format ? options.format : defaultFormat,\r\n todayHighlight: true,\r\n toggleActive: true,\r\n autoclose: true,\r\n startDate: 0,\r\n endDate: 0,\r\n clearBtn: options.showClear\r\n })\r\n // Если произошел ввод значения в datepicker \"С\" есть значение, то ограничиваем datepicker \"По\"\r\n .on(\"changeDate\", function (selected) {\r\n var minDate = selected.date ? selected.date.valueOf() : 0;\r\n $datepickerTo.datepicker('setStartDate', new Date(minDate));\r\n if (options.$inputFromOnChangeFunc) {\r\n options.$inputFromOnChangeFunc();\r\n }\r\n })\r\n .on('clearDate', function (e) {\r\n var minDate = e.date ? e.date.valueOf() : 0;\r\n $datepickerTo.datepicker('setStartDate', new Date(minDate));\r\n if (options.$inputToOnChangeFunc) {\r\n options.$inputToOnChangeFunc();\r\n }\r\n });\r\n var datepickerTo = $datepickerTo.datepicker({\r\n language: 'ru',\r\n format: options.format ? options.format : defaultFormat,\r\n todayHighlight: true,\r\n toggleActive: true,\r\n autoclose: true,\r\n startDate: 0,\r\n endDate: 0,\r\n clearBtn: options.showClear\r\n })\r\n // Если произошел ввод значения в datepicker \"По\" есть значение, то ограничиваем datepicker \"С\"\r\n .on(\"changeDate\", function (selected) {\r\n var maxDate = selected.date ? selected.date.valueOf() : new Date(8640000000000000); // set selected date, or date max\r\n $datepickerFrom.datepicker('setEndDate', new Date(maxDate));\r\n if (options.$inputToOnChangeFunc) {\r\n options.$inputToOnChangeFunc();\r\n }\r\n })\r\n .on('clearDate', function (e) {\r\n var maxDate = e.date ? e.date.valueOf() : new Date(8640000000000000); // set selected date, or date max\r\n $datepickerFrom.datepicker('setEndDate', new Date(maxDate));\r\n if (options.$inputToOnChangeFunc) {\r\n options.$inputToOnChangeFunc();\r\n }\r\n });\r\n // Если у инпута \"С\" есть значение, то ограничиваем datetimepicker \"По\"\r\n if (options.$inputFrom.val()) {\r\n $datepickerTo.datepicker('setStartDate', new Date(options.$inputFrom.val()));\r\n }\r\n // Если у инпута \"По\" есть значение, то ограничиваем datetimepicker \"С\"\r\n if (options.$inputTo.val()) {\r\n $datepickerFrom.datepicker('setEndDate', new Date(options.$inputTo.val()));\r\n }\r\n}\r\n\r\nvar datepickerInit = function (options) {\r\n if (options.$input.attr('readonly')) {\r\n return {};\r\n }\r\n var $datepicker = options.$input.closest('.date');\r\n var defaultFormat = options.withSeconds ? 'DD-MM-YYYY HH:mm:ss' : 'DD-MM-YYYY HH:mm';\r\n var datepicker = $datepicker.datepicker({\r\n language: 'ru',\r\n format: options.format ? options.format : defaultFormat,\r\n todayHighlight: true,\r\n toggleActive: true,\r\n autoclose: true,\r\n startDate: 0,\r\n endDate: 0,\r\n clearBtn: options.showClear\r\n })\r\n // Если произошел ввод значения в datepicker \"С\" есть значение, то ограничиваем datepicker \"По\"\r\n .on(\"changeDate\", function (selected) {\r\n if (options.$inputOnChangeFunc) {\r\n options.$inputOnChangeFunc();\r\n }\r\n })\r\n .on('clearDate', function (e) {\r\n if (options.$inputOnChangeFunc) {\r\n options.$inputOnChangeFunc();\r\n }\r\n });\r\n}","var Select2Helper = (function() {\r\n function findOption(choiseElemet) {\r\n var title = choiseElemet.attr(\"title\");\r\n var options = choiseElemet.closest(\"td\").children(\".select2\").first().find(\"option\");\r\n var option = $.grep(options, function (value) {\r\n return $(value).html() === title;\r\n })[0];\r\n\r\n return $(option);\r\n }\r\n\r\n return { findOption: findOption }\r\n})\r\n","var EmergencyStatuses = new Enum({\r\n Found: 1,\r\n Informed: 2,\r\n Liquidation: 3,\r\n Liquidated: 4\r\n});\r\n","var ObjectTypes = new Enum({\r\n ServiceZone: 1,\r\n Road: 2,\r\n SSegment: 3,\r\n LongObject: 4,\r\n DotObject: 5,\r\n Locality: 6,\r\n Vehicle: 7,\r\n Emergency: 8,\r\n WStation: 9,\r\n Video: 10,\r\n Work: 11,\r\n VideoCamera: 12\r\n});\r\n","var ReportStatuses = new Enum({\r\n None: 0,\r\n InProcess: 1,\r\n Ready: 2,\r\n Interrupted: 3\r\n});\r\n","function resolve(type) {\r\n return IoCContainer.resolve(type);\r\n};\r\n\r\nfunction IoCConfig() {\r\n\r\n IoCContainer\r\n //Shared\r\n .register(MessageModal,\r\n function () {\r\n return new MessageModal(resolve(ApiClient));\r\n })\r\n\r\n //Road\r\n .register(RoadEditModal,\r\n function() {\r\n return new RoadEditModal(resolve(ApiClient));\r\n })\r\n .register(RoadViewModal,\r\n function() {\r\n return new RoadViewModal(resolve(ApiClient));\r\n })\r\n .register(RoadMapModal,\r\n function() {\r\n return new RoadMapModal(resolve(ApiClient));\r\n })\r\n .register(TrackSelectModal,\r\n function() {\r\n return new TrackSelectModal(resolve(ApiClient));\r\n })\r\n\r\n //Emergency\r\n .register(EmergencyEditModal,\r\n function() {\r\n return new EmergencyEditModal(resolve(ApiClient));\r\n })\r\n .register(EmergencyViewModal,\r\n function() {\r\n return new EmergencyViewModal(resolve(ApiClient));\r\n })\r\n .register(EmergencyMapModal,\r\n function() {\r\n return new EmergencyMapModal(resolve(ApiClient));\r\n })\r\n .register(EmergencyScenariosModal,\r\n function() {\r\n return new EmergencyScenariosModal(resolve(ApiClient));\r\n })\r\n\r\n //VideoCameras\r\n .register(VideoCameraEditModal,\r\n function () {\r\n return new VideoCameraEditModal(resolve(ApiClient));\r\n })\r\n .register(VideoCameraMapModal,\r\n function () {\r\n return new VideoCameraMapModal(resolve(ApiClient));\r\n })\r\n .register(VideoCameraViewModal,\r\n function () {\r\n return new VideoCameraViewModal(resolve(ApiClient));\r\n })\r\n\r\n //WStations\r\n .register(WStationEditModal,\r\n function () {\r\n return new WStationEditModal(resolve(ApiClient));\r\n })\r\n .register(WStationHistoryModal,\r\n function () {\r\n return new WStationHistoryModal(resolve(ApiClient));\r\n })\r\n .register(WStationMapModal,\r\n function () {\r\n return new WStationMapModal(resolve(ApiClient));\r\n })\r\n .register(WStationViewModal,\r\n function () {\r\n return new WStationViewModal(resolve(ApiClient));\r\n })\r\n\r\n //Localities\r\n .register(LocalityEditModal,\r\n function () {\r\n return new LocalityEditModal(resolve(ApiClient));\r\n })\r\n .register(LocalityMapModal,\r\n function () {\r\n return new LocalityMapModal(resolve(ApiClient));\r\n })\r\n .register(LocalityViewModal,\r\n function () {\r\n return new LocalityViewModal(resolve(ApiClient));\r\n })\r\n .register(LocalityHistoryModal,\r\n function () {\r\n return new LocalityHistoryModal(resolve(ApiClient));\r\n })\r\n\r\n //WorkTypes\r\n .register(WorkTypeViewModal,\r\n function () {\r\n return new WorkTypeViewModal(resolve(ApiClient));\r\n })\r\n .register(WorkTypeEditModal,\r\n function () {\r\n return new WorkTypeEditModal(resolve(ApiClient));\r\n })\r\n\r\n //Materials\r\n .register(MaterialViewModal,\r\n function () {\r\n return new MaterialViewModal(resolve(ApiClient));\r\n })\r\n .register(MaterialEditModal,\r\n function () {\r\n return new MaterialEditModal(resolve(ApiClient));\r\n })\r\n\r\n //Contracts\r\n .register(ContractViewModal,\r\n function () {\r\n return new ContractViewModal(resolve(ApiClient));\r\n })\r\n .register(ContractEdtiModal,\r\n function () {\r\n return new ContractEdtiModal(resolve(ApiClient));\r\n })\r\n\r\n //Contractors\r\n .register(ContractorViewModal,\r\n function () {\r\n return new ContractorViewModal(resolve(ApiClient));\r\n })\r\n .register(ContractorEditModal,\r\n function () {\r\n return new ContractorEditModal(resolve(ApiClient));\r\n })\r\n\r\n //Users\r\n .register(UserViewModal,\r\n function () {\r\n return new UserViewModal(resolve(ApiClient));\r\n })\r\n .register(UserEditModal,\r\n function () {\r\n return new UserEditModal(resolve(ApiClient));\r\n })\r\n\r\n //LongObjects\r\n .register(LongObjectViewModal,\r\n function () {\r\n return new LongObjectViewModal(resolve(ApiClient));\r\n })\r\n .register(LongObjectEditModal,\r\n function () {\r\n return new LongObjectEditModal(resolve(ApiClient));\r\n })\r\n .register(LongObjectMapModal,\r\n function () {\r\n return new LongObjectMapModal(resolve(ApiClient));\r\n })\r\n\r\n //SSegments\r\n .register(SSegmentViewModal,\r\n function () {\r\n return new SSegmentViewModal(resolve(ApiClient));\r\n })\r\n .register(SSegmentEdtiModal,\r\n function () {\r\n return new SSegmentEdtiModal(resolve(ApiClient));\r\n })\r\n .register(SSegmentMapModal,\r\n function () {\r\n return new SSegmentMapModal(resolve(ApiClient));\r\n })\r\n\r\n //DotObjects\r\n .register(DotObjectViewModal,\r\n function () {\r\n return new DotObjectViewModal(resolve(ApiClient));\r\n })\r\n .register(DotObjectEditModal,\r\n function () {\r\n return new DotObjectEditModal(resolve(ApiClient));\r\n })\r\n .register(DotObjectMapModal,\r\n function () {\r\n return new DotObjectMapModal(resolve(ApiClient));\r\n })\r\n .register(DotObjectFreeMapModal,\r\n function () {\r\n return new DotObjectFreeMapModal(resolve(ApiClient));\r\n })\r\n\r\n //DotObjectTypes\r\n .register(DotObjectTypeViewModal,\r\n function () {\r\n return new DotObjectTypeViewModal(resolve(ApiClient));\r\n })\r\n .register(DotObjectTypeEditModal,\r\n function () {\r\n return new DotObjectTypeEditModal(resolve(ApiClient));\r\n })\r\n\r\n //Works\r\n .register(WorkViewModal,\r\n function () {\r\n return new WorkViewModal(resolve(ApiClient));\r\n })\r\n .register(WorkEditModal,\r\n function () {\r\n return new WorkEditModal(resolve(ApiClient));\r\n })\r\n .register(WorkMapModal,\r\n function () {\r\n return new WorkMapModal(resolve(ApiClient));\r\n })\r\n .register(WorkErrorAcceptanceModal,\r\n function () {\r\n return new WorkErrorAcceptanceModal(resolve(ApiClient));\r\n })\r\n .register(WorkAutoStatusModal,\r\n function () {\r\n return new WorkAutoStatusModal(resolve(ApiClient));\r\n })\r\n\r\n //Vehicles\r\n .register(VehicleViewModal,\r\n function () {\r\n return new VehicleViewModal(resolve(ApiClient));\r\n })\r\n .register(VehicleEditModal,\r\n function () {\r\n return new VehicleEditModal(resolve(ApiClient));\r\n })\r\n .register(VehicleTrackModal,\r\n function () {\r\n return new VehicleTrackModal(resolve(ApiClient));\r\n })\r\n .register(VehicleHistoryEditModal,\r\n function () {\r\n return new VehicleHistoryEditModal(resolve(ApiClient));\r\n })\r\n //VehicleOnObjects\r\n .register(VehicleOnObjectTrackModal,\r\n function () {\r\n return new VehicleOnObjectTrackModal(resolve(ApiClient));\r\n })\r\n\r\n //KC2\r\n .register(KC2WorkModal,\r\n function () {\r\n return new KC2WorkModal(resolve(ApiClient));\r\n })\r\n\r\n //TableVisiblityOptions\r\n .register(TableVisiblityOptionsModal,\r\n function () {\r\n return new TableVisiblityOptionsModal(resolve(ApiClient));\r\n })\r\n\r\n .register(ApiClient,\r\n function() {\r\n return new ApiClient(Url);\r\n });\r\n\r\n};\r\n","var ContractorEditModal = (function (base) {\r\n __extends(ContractorEditModal, base);\r\n\r\n\r\n function ContractorEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n ContractorEditModal.prototype.activate = function (contractorId) {\r\n const self = this;\r\n const isNew = !contractorId;\r\n const url = isNew ? 'api/contractors/add' : 'api/contractors/{0}/edit'.format(contractorId);\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/contractors');\r\n\r\n $modal\r\n\r\n //Кнопка 'Сохранить'\r\n .on('click', '[js=save]', function() {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n .on('change', '[js=\"representative\"]', function (e) {\r\n var values = $(this).val();\r\n var id = $(this).data('id');\r\n var $dependentSelect2 = $('[js=\"representative\"][data-id=\"' + (3 - id) + '\"]');\r\n $dependentSelect2.find('option').each(function() {\r\n var v = $(this).val();\r\n if ($.inArray(v, values) !== -1) {\r\n $(this).attr('disabled', 'disabled');\r\n } else {\r\n $(this).removeAttr('disabled');\r\n }\r\n });\r\n $dependentSelect2.select2(\"destroy\").select2({\r\n placeholder: 'Данные отсутствуют'\r\n });\r\n });\r\n\r\n $('.select2', $modal).select2({\r\n placeholder: 'Данные отсутствуют'\r\n });\r\n });\r\n };\r\n\r\n\r\n return ContractorEditModal;\r\n}(BaseModal));\r\n","var ContractorViewModal = (function (base) {\r\n __extends(ContractorViewModal, base);\r\n\r\n function ContractorViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n ContractorViewModal.prototype.activate = function (contractorId, deleteFunc) {\r\n const self = this;\r\n const url = 'api/contractors/' + contractorId;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Кнопка 'Удалить'\r\n .on('click', '[js=delete]', function () {\r\n if (confirm('Вы действительно хотите удалить этого подрядчика?')) {\r\n deleteFunc(contractorId);\r\n }\r\n })\r\n\r\n //Кнопка 'Редактировать'\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(ContractorEditModal, contractorId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n return ContractorViewModal;\r\n}(BaseModal));\r\n","var ContractEdtiModal = (function (base) {\r\n __extends(ContractEdtiModal, base);\r\n\r\n\r\n function ContractEdtiModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n ContractEdtiModal.prototype.activate = function (contractId) {\r\n const self = this;\r\n const isNew = !contractId;\r\n const url = contractId ? 'api/contracts/{0}/edit'.format(contractId) : 'api/contracts/add';\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/contracts');\r\n FilesUploader.initUploadingOnSubmit(VideoServerSettings.url, $form, 'UploadedFile', () => false, fileType => fileType === 1 || fileType === 4);\r\n\r\n $(\".select2\", $modal).select2({\r\n placeholder: 'Введите участки обслуживания'\r\n });\r\n\r\n $('.date', $modal).datepicker({\r\n language: 'ru',\r\n format: 'yyyy-mm-dd',\r\n todayHighlight: true,\r\n toggleActive: true,\r\n autoclose: true\r\n });\r\n\r\n $('#supplementaryAgreementsTable', $modal).DataTable({\r\n language: {\r\n url: Url.content(\"Content/Inspinia/plugins/dataTables/languages/Russian.json\")\r\n },\r\n processing: true,\r\n searching: false,\r\n columnDefs: [\r\n {\r\n orderable: false,\r\n visible: true,\r\n targets: 0\r\n },\r\n {\r\n orderable: false,\r\n targets: 1,\r\n visible: true\r\n }\r\n ],\r\n order: false,\r\n paging: false\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка 'Сохранить'\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n // Добавление доп соглашения\r\n .on('click', '#add-agreement', function () {\r\n var control = $(this);\r\n var table = $('#supplementaryAgreementsTable', $modal).DataTable();\r\n\r\n $('#supplementaryAgreementsTable_processing', $modal).attr('style', 'display: block;');\r\n var url = contractId ? 'api/contracts/{0}/edit/AddSupplementaryAgreement'.format(contractId) : 'api/contracts/add/AddSupplementaryAgreement';\r\n self.apiClient.post(url, {\r\n SaNumber: $('#SaNumber', $modal).val(),\r\n SaDate: $('#SaDate', $modal).val()\r\n })\r\n .then(result => {\r\n $('#supplementaryAgreementsTable_processing', $modal).attr('style', 'display: none;');\r\n if (result.result) {\r\n $('#SaNumber', $modal).siblings('span').text('');\r\n $('#SaDate', $modal).siblings('span').text('');\r\n\r\n var date = (new Date(Number(result.result.Date.replace('/Date(', '').replace(')/', ''))))\r\n .toLocaleDateString(\"ru-RU\");\r\n var char = result.result.Number;\r\n var select = $(table.row('#create-tr').node()).children('td');\r\n\r\n table.row('#create-tr').remove().draw(false);\r\n var tr2 = '
';\r\n table.row.add([\r\n '',\r\n tr2\r\n ])\r\n .draw(false);\r\n\r\n table.row.add([select[0].innerHTML, select[1].innerHTML]).draw(false);\r\n table.rows()\r\n .every(function (rowIdx, tableLoop, rowLoop) {\r\n if (table.rows()[0].length - 1 === rowIdx) {\r\n $(this.node()).attr('id', 'create-tr');\r\n } else {\r\n $(this.node()).attr('id', 'row_' + rowIdx);\r\n }\r\n $(this.node()).children('td').addClass('text-center');\r\n });\r\n table.draw();\r\n } else {\r\n if (result.error.saNumber) {\r\n $('#SaNumber', $modal).siblings('span').text(result.error.saNumber);\r\n } else {\r\n $('#SaNumber', $modal).siblings('span').text('');\r\n }\r\n\r\n if (result.error.saDate) {\r\n $('#SaDate', $modal).siblings('span').text(result.error.saDate);\r\n } else {\r\n $('#SaDate', $modal).siblings('span').text('');\r\n }\r\n }\r\n\r\n $('.date')\r\n .datepicker({\r\n language: 'ru',\r\n format: 'yyyy-mm-dd',\r\n todayHighlight: true,\r\n toggleActive: true,\r\n autoclose: true\r\n });\r\n });\r\n })\r\n\r\n // Удаление доп соглашения\r\n .on('click', '.del-agreement', function () {\r\n var control = $(this);\r\n var table = $('#supplementaryAgreementsTable', $modal).DataTable();\r\n var url = contractId ? 'api/contracts/{0}/edit/DeleteSupplementaryAgreement'.format(contractId) : 'api/contracts/add/DeleteSupplementaryAgreement';\r\n self.apiClient.post(url, {\r\n id: $(this).data('id'),\r\n saVal: $(this).data('sa')\r\n })\r\n .then(function (result) {\r\n if (result.result) {\r\n $('#supplementaryAgreementsTable_processing').attr('style', 'display: none;');\r\n table.row('#' + control.closest('tr').attr('id')).remove().draw(false);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n\r\n return ContractEdtiModal;\r\n}(BaseModal));\r\n","var ContractViewModal = (function (base) {\r\n __extends(ContractViewModal, base);\r\n\r\n function ContractViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n ContractViewModal.prototype.activate = function (contractId, deleteFunc) {\r\n const self = this;\r\n const url = 'api/contracts/' + contractId;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Кнопка 'Удалить'\r\n .on('click', '[js=delete]', function () {\r\n if (confirm('Вы действительно хотите удалить этот контракт?')) {\r\n deleteFunc(contractId);\r\n }\r\n })\r\n\r\n //Кнопка 'Редактировать'\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(ContractEdtiModal, contractId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n return ContractViewModal;\r\n}(BaseModal));\r\n","var DotObjectEditModal = (function (base) {\r\n __extends(DotObjectEditModal, base);\r\n\r\n\r\n function DotObjectEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n DotObjectEditModal.prototype.activate = function (dotObjectId) {\r\n const self = this;\r\n const isNew = !dotObjectId;\r\n const url = isNew ? 'api/dotObjects/add' : 'api/dotObjects/{0}/edit'.format(dotObjectId);\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n\r\n var typeId = parseInt($('#TypeId', $modal).val());\r\n var type = doTypes.filter(function (t) { return t.Id === typeId; })[0];\r\n $('#FreeLocation').val(type.FreeLocation ? \"True\" : \"False\");\r\n var onMap = type.FreeLocation;\r\n if (type.FreeLocation) {\r\n $('[js=on-map]').show();\r\n $('[js=on-road]').hide();\r\n coordinates.updateFreeLocation();\r\n } else {\r\n $('[js=on-map]').hide();\r\n $('[js=on-road]').show();\r\n coordinates.reloadRoadCoordinates().then(function () {\r\n coordinates.updateCoordinates({ isPoint: true, ignoreCoordinate: true });\r\n });\r\n }\r\n\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/dotObjects');\r\n FilesUploader.initUploadingOnSubmit(VideoServerSettings.url, $form, \"UploadedFile\",\r\n function () {\r\n //2-видео, 3-фото\r\n const type = $('#TypeId', $form).val();\r\n return type === '2' || type === '3';\r\n },\r\n function (fileType) {\r\n const type = $('#TypeId', $form).val();\r\n\r\n return type === '2' && fileType === 2\r\n || type === '3' && fileType === 3\r\n || type !== '2' && type !== '3' && (fileType === 2 || fileType === 3);\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка 'Сохранить'\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n // При смене вида объекта проверить обязательность наличия файла\r\n .on('change', '#TypeId', (e) => {\r\n $form.find('.fileinput').trigger('update.bs.fileinput');\r\n var onMap = $('#FreeLocation').val() === 'True';\r\n var typeId = parseInt($(e.target).val());\r\n var type = doTypes.filter(function (t) {\r\n return t.Id === typeId;\r\n })[0];\r\n if (onMap != type.FreeLocation) {\r\n $('#FreeLocation').val(type.FreeLocation ? \"True\" : \"False\");\r\n if (type.FreeLocation) {\r\n $('[js=on-map]').show();\r\n $('[js=on-road]').hide();\r\n coordinates.updateFreeLocation();\r\n } else {\r\n $('[js=on-map]').hide();\r\n $('[js=on-road]').show();\r\n coordinates.reloadRoadCoordinates()\r\n .then(() => {\r\n coordinates.updateCoordinates({ isPoint: true, ignoreCoordinate: true });\r\n });\r\n }\r\n }\r\n })\r\n\r\n //Выбор кода автодороги\r\n .on('change', '#RoadId', () => {\r\n coordinates.reloadRoadCoordinates()\r\n .then(() => {\r\n coordinates.updateCoordinates({ isPoint: true, ignoreCoordinate: true });\r\n });\r\n })\r\n\r\n\r\n //Изменение километра МС на дороге\r\n .on('change', '#Location', () => {\r\n coordinates.updateCoordinates({ isPoint: true, ignoreCoordinate: true });\r\n })\r\n //Изменение широты\r\n .on('change', '#Lat', () => {\r\n coordinates.updateFreeLocation();\r\n })\r\n //Изменение долготы\r\n .on('change', '#Lng', () => {\r\n coordinates.updateFreeLocation();\r\n })\r\n\r\n\r\n //Кнопка 'Задать координату на карте'\r\n .on('click', '[js=edit-on-map]', () => {\r\n\r\n const dotObjectName = $('#Name', $modal).val();\r\n const lat = $('#Lat', $modal).val();\r\n const lng = $('#Lng', $modal).val();\r\n\r\n ModalConductor.activate(DotObjectFreeMapModal, dotObjectId, dotObjectName, lat, lng)\r\n .on('closed',\r\n modalResult => {\r\n if (modalResult.ok) {\r\n $('#Lat', $modal).val(modalResult.coordinate.lat);\r\n $('#Lng', $modal).val(modalResult.coordinate.lng);\r\n }\r\n });\r\n })\r\n\r\n //Кнопка 'Задать координату на дороге'\r\n .on('click', '[js=edit-coordinates]', () => {\r\n\r\n const roadId = parseInt($('#RoadId option:selected', $modal).val());\r\n const dotObjectName = $('#Name', $modal).val();\r\n const location = parseFloat($('#Location', $modal).val());\r\n const roadStartKm = coordinates.getRoadStartKm(roadId);\r\n\r\n ModalConductor.activate(DotObjectMapModal, dotObjectId, roadId, dotObjectName, roadStartKm, location)\r\n .on('closed',\r\n modalResult => {\r\n if (modalResult.ok) {\r\n $('#Location', $modal).val(modalResult.location);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n\r\n return DotObjectEditModal;\r\n}(BaseModal));\r\n","var DotObjectFreeMapModal = (function (base) {\r\n __extends(DotObjectFreeMapModal, base);\r\n\r\n function DotObjectFreeMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * \r\n */\r\n DotObjectFreeMapModal.prototype.activate = function (dotObjectId, dotObjectName, lat, lng) {\r\n const self = this;\r\n const url = dotObjectId ? 'api/dotObjects/{0}/edit/map'.format(dotObjectId) : 'api/dotObjects/add/map';\r\n\r\n this.loadContent(url, { dotObjectName: dotObjectName || 'Точечного объекта' })\r\n .then($modal => {\r\n\r\n // Инициализация карты после открытия модального окна\r\n var data = {};\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#marker-map').height(containerHeight);\r\n\r\n setTimeout(function () {\r\n data = initFreeMarkerMap(new L.FeatureGroup(), lat, lng);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', () => {\r\n if (!data.point) {\r\n alert('Точечный объект не указан.');\r\n return;\r\n }\r\n this.close({\r\n ok: true,\r\n coordinate: data.point\r\n });\r\n });\r\n });\r\n };\r\n\r\n return DotObjectFreeMapModal;\r\n}(BaseModal));\r\n","var DotObjectMapModal = (function (base) {\r\n __extends(DotObjectMapModal, base);\r\n\r\n function DotObjectMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * \r\n * @param {} coordinates Массив координат или CSV\r\n * @param {} roadName Название дороги\r\n */\r\n DotObjectMapModal.prototype.activate = function (dotObjectId, roadId, dotObjectName, roadStartKm, location) {\r\n const self = this;\r\n const url = dotObjectId ? 'api/dotObjects/{0}/edit/map/'.format(dotObjectId) + roadId : 'api/dotObjects/add/map/' + roadId;\r\n\r\n this.loadContent(url, { dotObjectName: dotObjectName || 'Точечного объекта' })\r\n .then($modal => {\r\n\r\n // Инициализация карты после открытия модального окна\r\n var data = {};\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#marker-map').height(containerHeight);\r\n\r\n setTimeout(function () {\r\n data = initMarkerMap(new L.FeatureGroup(), $('[js=back]', $modal), roadStartKm, location);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', () => {\r\n if (!data.point) {\r\n alert('Точечный объект не указан.');\r\n return;\r\n }\r\n this.close({\r\n ok: true,\r\n location: Math.round(data.location) / 1000,\r\n coordinate: data.point\r\n });\r\n });\r\n });\r\n };\r\n\r\n return DotObjectMapModal;\r\n}(BaseModal));\r\n","var DotObjectViewModal = (function (base) {\r\n __extends(DotObjectViewModal, base);\r\n\r\n function DotObjectViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n DotObjectViewModal.prototype.activate = function (dotObjectId, deleteFunc, showOnMapFunc) {\r\n const self = this;\r\n const url = 'api/dotObjects/' + dotObjectId;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n // Редактирование\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(DotObjectEditModal, dotObjectId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n })\r\n\r\n // Удаление\r\n .on('click', '[js=delete]', function () {\r\n if (confirm('Вы действительно хотите удалить этот Точечный объект?')) {\r\n deleteFunc(dotObjectId);\r\n }\r\n })\r\n\r\n // Показать на карте\r\n .on('click', '[js=show-on-map]', function () {\r\n showOnMapFunc(dotObjectId);\r\n });\r\n });\r\n };\r\n\r\n return DotObjectViewModal;\r\n}(BaseModal));\r\n","var EmergencyEditModal = (function (base) {\r\n __extends(EmergencyEditModal, base);\r\n\r\n\r\n function EmergencyEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n EmergencyEditModal.prototype.activate = function (emergencyId) {\r\n const self = this;\r\n const isNew = !emergencyId;\r\n const url = isNew ? 'api/emergencies/add' : 'api/emergencies/{0}/edit'.format(emergencyId);\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/emergencies');\r\n\r\n coordinates.reloadRoadCoordinates($('#RoadId option:selected', $modal).val() || 0).then(function () {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка 'Сохранить'\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n //Выбор кода автодороги\r\n .on('change', '#RoadId', () => {\r\n coordinates.reloadRoadCoordinates($('option:selected', this).val())\r\n .then(() => {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n });\r\n })\r\n\r\n //Изменение первого километра УО на дороге\r\n .on('change', '#StartKm', () => {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n })\r\n\r\n //Изменение последнего километра УО на дороге\r\n .on('change', '#StopKm', () => {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n })\r\n\r\n //Кнопка 'Задать координату на карте'\r\n .on('click', '[js=edit-coordinates]', () => {\r\n\r\n const emergencyName = $('#Name', $modal).val();\r\n const roadId = parseInt($('#RoadId option:selected', $modal).val());\r\n const startKm = parseFloat($('#StartKm', $modal).val());\r\n const stopKm = parseFloat($('#StopKm', $modal).val());\r\n const roadStartKm = coordinates.getRoadStartKm(roadId);\r\n\r\n ModalConductor.activate(EmergencyMapModal, emergencyId, roadId, emergencyName, roadStartKm, startKm, stopKm)\r\n .on('closed',\r\n modalResult => {\r\n if (modalResult.ok) {\r\n $('#StartKm', $modal).val(modalResult.startKm);\r\n $('#StopKm', $modal).val(modalResult.stopKm);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n\r\n return EmergencyEditModal;\r\n}(BaseModal));\r\n","var EmergencyMapModal = (function (base) {\r\n __extends(EmergencyMapModal, base);\r\n\r\n function EmergencyMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * \r\n * @param {} coordinates Массив координат или CSV\r\n * @param {} roadName Название дороги\r\n */\r\n EmergencyMapModal.prototype.activate = function (emergencyId, roadId, emergencyName, roadStartKm, startKm, stopKm) {\r\n const self = this;\r\n const url = emergencyId ? 'api/emergencies/{0}/edit/map/'.format(emergencyId) + roadId : 'api/emergencies/add/map/' + roadId;\r\n\r\n this.loadContent(url, { emergencyName: emergencyName || 'чрезвычайной ситуации' })\r\n\r\n\r\n .then($modal => {\r\n\r\n // Инициализация карты после открытия модального окна\r\n var mapObjects = {};\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#marker-map').height(containerHeight);\r\n\r\n setTimeout(function () {\r\n mapObjects = initPolylineMap(new L.FeatureGroup(), $('[js=back]', $modal), roadStartKm, startKm, stopKm);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', () => {\r\n if (mapObjects.points.length < 2) {\r\n alert('ЧС не указана.');\r\n return;\r\n }\r\n this.close({\r\n ok: true,\r\n startKm: Math.round(mapObjects.startKm) / 1000,\r\n stopKm: Math.round(mapObjects.endKm) / 1000\r\n });\r\n });\r\n });\r\n };\r\n\r\n return EmergencyMapModal;\r\n}(BaseModal));\r\n","var EmergencyScenariosModal = (function (base) {\r\n __extends(EmergencyScenariosModal, base);\r\n\r\n\r\n function EmergencyScenariosModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n EmergencyScenariosModal.prototype.activate = function () {\r\n const self = this;\r\n\r\n this.loadContent('api/emergencies/scenarios')\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Выбор вида ЧС\r\n .on('change', '#EmergencyTypeId', () => {\r\n var typeid = $('#EmergencyTypeId', $modal).val();\r\n\r\n $.ajax({\r\n url: Url.action('api/emergencies/scenarios/' + typeid),\r\n contentType: 'application/html; charset=utf-8',\r\n type: 'GET',\r\n dataType: 'html'\r\n })\r\n .done(result=> {\r\n $('.modal-content', $modal).html(result);\r\n });\r\n })\r\n\r\n // Добавление пункта в сценарий действий\r\n .on('click', '.scenario-add', function () {\r\n var $newScenario = $('#ScenarioNew', $modal);\r\n var typeid = $(this).data('emergensytypeid');\r\n\r\n self.apiClient.post('api/emergencies/scenarios/{0}/add'.format(typeid), { text: $newScenario.val() })\r\n .then(result => {\r\n if (result) {\r\n var newScenario = '
' +\r\n ' Удалить' +\r\n '
';\r\n\r\n var $scenarioContainer = $('#scenario-container', $modal)\r\n $scenarioContainer.html($scenarioContainer.html() + newScenario);\r\n }\r\n $newScenario.val('');\r\n });\r\n })\r\n\r\n // Удаление пункта в сценарий действий\r\n .on('click', '.scenario-delete', function () {\r\n var typeid = $('#EmergencyTypeId', $modal).val();\r\n var $control = $(this);\r\n if (confirm('Вы действительно хотите удалить этот пункт сценария?')) {\r\n self.apiClient.post('api/emergencies/scenarios/{0}/del'.format($control.data('emergensytypeid')), {\r\n id: $control.data('id'),\r\n typeid: typeid,\r\n text: $control.data('text')\r\n })\r\n .then(result => {\r\n if (result) {\r\n $control.parent().remove();\r\n }\r\n });\r\n }\r\n })\r\n\r\n // Сохранение сценария действий\r\n .on('click', '[js=save]', function () {\r\n const typeid = $('#EmergencyTypeId', $modal).val();\r\n const scenarioOfActions = [];\r\n $('#scenario-container .col-md-12.col-xs-12.m-b-sm').each(function(idx, emergency){\r\n scenarioOfActions.push({\r\n Id: $(emergency).children('a').data('id'),\r\n Text: $(emergency).children('textarea').val(),\r\n EmergencyTypeId: typeid\r\n });\r\n });\r\n\r\n self.apiClient.post('api/emergencies/scenarios', { emergencyTypeId: typeid, scenarioOfActions: scenarioOfActions, })\r\n .then(function (result) {\r\n if (result) {\r\n self.close({ ok: true });\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n\r\n return EmergencyScenariosModal;\r\n}(BaseModal));\r\n\r\n","var EmergencyViewModal = (function (base) {\r\n __extends(EmergencyViewModal, base);\r\n\r\n function EmergencyViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n EmergencyViewModal.prototype.activate = function (emergencyId, isAdmin, deleteFunc, showOnMapFunc) {\r\n const self = this;\r\n const url = `api/emergencies/${emergencyId}`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Checkbox сценариев действия\r\n .on('change', '.control-label--custom', function () {\r\n var control = $(this);\r\n if (isAdmin || confirm('После выбора этого действия, отменить его будет невозможно. Вы действительно хотите выбрать это действие?')) {\r\n\r\n _sendScenario.call(self, emergencyId, control.data('scenario-id'), control.prop('checked'))\r\n .then(() => {\r\n if (!isAdmin) {\r\n control.prop('disabled', true);\r\n }\r\n })\r\n .catch(() => {\r\n //Восстанавливаем предыдущее состояние checkbox\r\n control.prop('checked', !control.prop('checked'));\r\n });\r\n } else {\r\n control.prop('checked', false);\r\n }\r\n })\r\n\r\n //Кнопка `Удалить комментарий`\r\n .on('click', '.note-delete', function () {\r\n const noteId = $(this).data('id');\r\n if (confirm('Вы действительно хотите удалить этот комментарий?')) {\r\n _deleteNote.call(self, emergencyId, noteId)\r\n .then(() => {\r\n //TODO: необходимо реализовать механизм обновления списка комментариев\r\n self.reloadContent(url);\r\n });\r\n }\r\n })\r\n\r\n //Кнопка `Добавить комментарий`\r\n .on('click', '.note-add', function () {\r\n const noteText = $('#Note', $modal).val();\r\n\r\n _addNote.call(self, emergencyId, noteText)\r\n .then(() => {\r\n //TODO: необходимо реализовать механизм обновления списка комментариев\r\n self.reloadContent(url);\r\n });\r\n })\r\n\r\n //Кнопка `Редактировать`\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(EmergencyEditModal, emergencyId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n })\r\n\r\n //Кнопка `Показать на карте`\r\n .on('click', '[js=show-on-map]', function () {\r\n showOnMapFunc(emergencyId);\r\n })\r\n\r\n //Кнопка `Удалить`\r\n .on('click', '[js=delete]', function () {\r\n if (confirm(`Вы действительно хотите удалить эту чрезвычайную ситуацию?`)) {\r\n deleteFunc(emergencyId);\r\n }\r\n });\r\n });\r\n };\r\n\r\n\r\n function _sendScenario(emergencyId, scenarioId, isChecked) {\r\n return this.apiClient.post(`api/emergencies/${emergencyId}/scenarios/${scenarioId}`, { isChecked: isChecked });\r\n };\r\n\r\n function _deleteNote(emergensyId, noteId) {\r\n return this.apiClient.delete(`api/emergencies/${emergensyId}/notes`, { noteId: noteId });\r\n }\r\n\r\n function _addNote(emergensyId, text) {\r\n return this.apiClient.put(`api/emergencies/${emergensyId}/notes`, { text: text });\r\n };\r\n\r\n\r\n return EmergencyViewModal;\r\n}(BaseModal));\r\n","var LocalityEditModal = (function (base) {\r\n __extends(LocalityEditModal, base);\r\n\r\n\r\n function LocalityEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n LocalityEditModal.prototype.activate = function (localityId) {\r\n const self = this;\r\n const isNew = !localityId;\r\n const url = isNew ? `api/localities/add` : `api/localities/${localityId}/edit`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n const addRoadTableId = 'locality-road-table';\r\n\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/localities');\r\n\r\n var table = $('#locality-road-table', $modal).DataTable({\r\n language: {\r\n url: Url.content(\"Content/Inspinia/plugins/dataTables/languages/Russian.json\")\r\n },\r\n processing: true,\r\n serverSide: false,\r\n searching: false,\r\n bFilter: false,\r\n columnDefs: [{\r\n \"orderable\": false,\r\n \"className\": '',\r\n \"targets\": 0\r\n },\r\n {\r\n \"orderable\": false,\r\n \"className\": '',\r\n \"targets\": 1\r\n },\r\n {\r\n \"orderable\": false,\r\n \"className\": '',\r\n \"targets\": 2\r\n }],\r\n rowReorder: true,\r\n order: false,\r\n paging: false\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка `Сохранить`\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n //Выбор кода автодороги\r\n .on('change', '#SelectedLocalityWithRoad_RoadId', () => {\r\n updateRoadCoordinateWithPosition();\r\n })\r\n\r\n //Обновление координат при смене позиции первого и последнего км на АД\r\n .on('change', '#SelectedLocalityWithRoad_StartKm', function () {\r\n updateRoadCoordinateWithPosition();\r\n })\r\n .on('change', '#SelectedLocalityWithRoad_StopKm', function () {\r\n updateRoadCoordinateWithPosition();\r\n })\r\n\r\n //Кнопка `Задать координату на карте`\r\n .on('click', '[js=edit-coordinates]', () => {\r\n\r\n const roadId = Number($('#SelectedLocalityWithRoad_RoadId', $modal).val());\r\n const localityName = $('#Name', $modal).val();\r\n const startKm = parseFloat($('#SelectedLocalityWithRoad_StartKm', $modal).val());\r\n const stopKm = parseFloat($('#SelectedLocalityWithRoad_StopKm', $modal).val());\r\n const roadStartKm = coordinates.getRoadStartKm(roadId);\r\n\r\n ModalConductor.activate(LocalityMapModal, localityId, roadId, localityName, roadStartKm, startKm, stopKm)\r\n .on('closed',\r\n modalResult => {\r\n if (modalResult.ok) {\r\n $('#SelectedLocalityWithRoad_StartKm', $modal).val(modalResult.startKm);\r\n $('#SelectedLocalityWithRoad_StopKm', $modal).val(modalResult.stopKm);\r\n }\r\n });\r\n })\r\n\r\n // Добавление дороги для НП\r\n .on('click', '#addRoadData', function () {\r\n var $control = $(this);\r\n if ($control.attr('disabled') === undefined) {\r\n $(`#${addRoadTableId}_processing`, $modal).attr('style', 'display:block');\r\n $control.attr('disabled', 'disabled');\r\n\r\n self.apiClient.put(`api/localities/${localityId}/roads`, {\r\n RoadId: $('#SelectedLocalityWithRoad_RoadId', $modal).val(),\r\n LocalityId: $('#Id', $modal).val(),\r\n StartKm: $('#SelectedLocalityWithRoad_StartKm', $modal).val(),\r\n StopKm: $('#SelectedLocalityWithRoad_StopKm', $modal).val(),\r\n CoordinatesCsv: $('#SelectedLocalityWithRoad_CoordinatesCsv', $modal).val()\r\n })\r\n .then(result => {\r\n $(`#${addRoadTableId}_processing`, $modal).attr('style', 'display:none');\r\n $control.removeAttr('disabled');\r\n if (result.result) {\r\n initTable({\r\n row: [\r\n result.result.Road.Code,\r\n result.result.StartKm,\r\n `
${result.result.StopKm}
`\r\n ],\r\n id: addRoadTableId\r\n });\r\n $('.field-validation-error.text-danger[data-valmsg-for=\"LocalityWithRoadsError\"]', $modal).text('');\r\n } else {\r\n if (result.error) {\r\n $.each($('.field-validation-valid.text-danger', $modal),\r\n function (idx, obj) {\r\n if ($(obj).data('valmsgFor') == result.error.field) {\r\n $(obj).text(result.error.text);\r\n }\r\n $('#' + result.error.field.replace('.', '_'))\r\n .on('change',\r\n function () {\r\n $(obj).text('');\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n })\r\n\r\n //\r\n .on('click', '[js=delete-road]', function () {\r\n var $control = $(this);\r\n $(`#${addRoadTableId}_processing`, $modal).show();\r\n $control.prop('disabled', true);\r\n\r\n self.apiClient.delete(`api/localities/${localityId}/roads`, {\r\n RoadId: $control.data('id'),\r\n LocalityId: $('#Id', $modal).val(),\r\n StartKm: $control.data('startkm'),\r\n StopKm: $control.data('stopkm'),\r\n Row: $control.closest('tr').attr('id')\r\n })\r\n .then(function (result) {\r\n $(`#${addRoadTableId}_processing`, $modal).hide();\r\n\r\n if (result.result) {\r\n $(`#${addRoadTableId}`).DataTable().row(`#${result.result}`).remove().draw(false);\r\n } \r\n $control.prop('disabled', false);\r\n });\r\n });\r\n });\r\n };\r\n\r\n function updateRoadCoordinateWithPosition() {\r\n const roadId = $(\"#SelectedLocalityWithRoad_RoadId option:selected\").val();\r\n coordinates.reloadRoadCoordinates(roadId || 0).then(function () {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n });\r\n }\r\n\r\n function initTable(option) {\r\n\r\n const table = $(`#${option.id}`).DataTable();\r\n\r\n if (option.row) {\r\n table.row('.table-data-empty').remove().draw(false);\r\n var controlRow = table.row('.locality-road-table-tr').data();\r\n\r\n table.row('.locality-road-table-tr').remove().draw(false);\r\n table.row.add(option.row).draw(false);\r\n table.row.add(controlRow).draw();\r\n\r\n table.rows().every(function (rowIdx) {\r\n const control = this.node();\r\n const data = this.data();\r\n\r\n $(control).attr('id', `row_${rowIdx}`);\r\n\r\n if (data == controlRow) {\r\n $(control).addClass('locality-road-table-tr');\r\n }\r\n });\r\n }\r\n };\r\n\r\n return LocalityEditModal;\r\n}(BaseModal));\r\n","var LocalityHistoryModal = (function (base) {\r\n __extends(LocalityHistoryModal, base);\r\n\r\n\r\n function LocalityHistoryModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n LocalityHistoryModal.prototype.activate = function (localityId, localityName) {\r\n const self = this;\r\n\r\n this.loadContent(`api/localities/${localityId}/history`, { localityName: localityName })\r\n .then($modal => {\r\n\r\n datetimepickerInit({ $input: $('#LocalityDate', $modal), withSeconds: true })\r\n\r\n $modal\r\n\r\n //Выбор даты для получения истории МС\r\n .on('click', '[js=applyFilter]', function () {\r\n var $control = $('#LocalityDate', $modal);\r\n $control.attr('readonly', true);\r\n\r\n self.reloadContent(`api/localities/${localityId}/history?LocalityDate=${$control.val()}`, { localityName: localityName })\r\n .then(() => {\r\n $control.removeAttr('readonly');\r\n datetimepickerInit({ $input: $('#LocalityDate', $modal), withSeconds: true })\r\n })\r\n .catch(() => {\r\n $control.removeAttr('readonly');\r\n datetimepickerInit({ $input: $('#LocalityDate', $modal), withSeconds: true })\r\n });\r\n });\r\n });\r\n };\r\n\r\n\r\n return LocalityHistoryModal;\r\n}(BaseModal));\r\n","var LocalityMapModal = (function (base) {\r\n __extends(LocalityMapModal, base);\r\n\r\n function LocalityMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * \r\n * @param {} coordinates Массив координат или CSV\r\n * @param {} roadName Название дороги\r\n */\r\n LocalityMapModal.prototype.activate = function (localityId, roadId, localityName, roadStartKm, startKm, stopKm) {\r\n const self = this;\r\n\r\n this.loadContent(`api/localities/${localityId}/edit/map/${roadId}`, { localityName: localityName || 'населенного пункта' })\r\n .then($modal => {\r\n\r\n // Инициализация карты после открытия модального окна\r\n var mapObjects = {};\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#marker-map').height(containerHeight);\r\n\r\n setTimeout(function () {\r\n mapObjects = initPolylineMap(new L.FeatureGroup(), $('[js=back]', $modal), roadStartKm, startKm, stopKm);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', () => {\r\n if (mapObjects.points.length < 2) {\r\n alert('Населенный пункт не указан.');\r\n return;\r\n }\r\n this.close({\r\n ok: true,\r\n startKm: Math.round(mapObjects.startKm) / 1000,\r\n stopKm: Math.round(mapObjects.endKm) / 1000\r\n });\r\n });\r\n });\r\n };\r\n\r\n return LocalityMapModal;\r\n}(BaseModal));\r\n","var LocalityViewModal = (function (base) {\r\n __extends(LocalityViewModal, base);\r\n\r\n function LocalityViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n LocalityViewModal.prototype.activate = function (localityId, showOnMapFunc) {\r\n const self = this;\r\n const url = `api/localities/${localityId}`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Кнопка `Редактировать`\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(LocalityEditModal, localityId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n })\r\n\r\n //Кнопка `Показать на карте`\r\n .on('click', '[js=show-on-map]', function () {\r\n showOnMapFunc(localityId);\r\n })\r\n\r\n //Кнопка \"История метеоданных\"\r\n .on('click', '[js=show-history]', function () {\r\n const localityName = $('[data-binding=Name]', $modal).text(); console.debug(localityName);\r\n ModalConductor.activate(LocalityHistoryModal, localityId, localityName);\r\n });\r\n });\r\n };\r\n\r\n return LocalityViewModal;\r\n}(BaseModal));\r\n","var LongObjectEditModal = (function (base) {\r\n __extends(LongObjectEditModal, base);\r\n\r\n\r\n function LongObjectEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n LongObjectEditModal.prototype.activate = function (longObjectId) {\r\n const self = this;\r\n const isNew = !longObjectId;\r\n const url = isNew ? `api/longObjects/add` : `api/longObjects/${longObjectId}/edit`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n const addRoadTableId = 'longobject-road-table';\r\n\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/longObjects');\r\n FilesUploader.initUploadingOnSubmit(VideoServerSettings.url, $form, \"UploadedFile\",\r\n function () {\r\n const type = $('#TypeId', $form).val();\r\n return type === '5';\r\n },\r\n function (fileType) {\r\n const type = $('#TypeId', $form).val();\r\n return type === '5' && fileType === 2 || type !== '5' && (fileType === 2 || fileType === 3);\r\n });\r\n\r\n var table = $(`#${addRoadTableId}`).DataTable({\r\n language: {\r\n url: Url.content(\"Content/Inspinia/plugins/dataTables/languages/Russian.json\")\r\n },\r\n processing: true,\r\n serverSide: false,\r\n searching: false,\r\n bFilter: false,\r\n columnDefs: [{\r\n \"orderable\": false,\r\n \"className\": '',\r\n \"targets\": 0\r\n },\r\n {\r\n \"orderable\": false,\r\n \"className\": '',\r\n \"targets\": 1\r\n },\r\n {\r\n \"orderable\": false,\r\n \"className\": '',\r\n \"targets\": 2\r\n }],\r\n rowReorder: true,\r\n order: false,\r\n paging: false\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка `Сохранить`\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n // При смене вида объекта проверить обязательность наличия файла\r\n .on('change', '#TypeId', () => {\r\n $form.find('.fileinput').trigger('update.bs.fileinput');\r\n })\r\n\r\n //Выбор кода автодороги\r\n .on('change', '#SelectedLongObjectWithRoad_RoadId', () => {\r\n updateRoadCoordinateWithPosition();\r\n })\r\n\r\n //Обновление координат при смене позиции первого и последнего км на АД\r\n .on('change', '#SelectedLongObjectWithRoad_StartKm', function () {\r\n updateRoadCoordinateWithPosition();\r\n })\r\n .on('change', '#SelectedLongObjectWithRoad_StopKm', function () {\r\n updateRoadCoordinateWithPosition();\r\n })\r\n\r\n //Кнопка `Задать координату на карте`\r\n .on('click', '[js=edit-coordinates]', () => {\r\n\r\n const roadId = Number($('#SelectedLongObjectWithRoad_RoadId', $modal).val());\r\n const startKm = parseFloat($('#SelectedLongObjectWithRoad_StartKm', $modal).val());\r\n const stopKm = parseFloat($('#SelectedLongObjectWithRoad_StopKm', $modal).val());\r\n const roadStartKm = coordinates.getRoadStartKm(roadId);\r\n const longObjectName = $('#Name', $modal).val();\r\n\r\n ModalConductor.activate(LongObjectMapModal, longObjectId, roadId, longObjectName, roadStartKm, startKm, stopKm)\r\n .on('closed',\r\n modalResult => {\r\n if (modalResult.ok) {\r\n $('#SelectedLongObjectWithRoad_CoordinatesCsv', $modal).val(modalResult.coordinatesSvg);\r\n $('#SelectedLongObjectWithRoad_StartKm', $modal).val(modalResult.startKm);\r\n $('#SelectedLongObjectWithRoad_StopKm', $modal).val(modalResult.stopKm);\r\n }\r\n });\r\n })\r\n\r\n // Добавление дороги для ПО\r\n .on('click', '#addRoadData', function () {\r\n var $control = $(this);\r\n if ($control.attr('disabled') === undefined) {\r\n $(`#${addRoadTableId}_processing`, $modal).attr('style', 'display:block');\r\n $control.attr('disabled', 'disabled');\r\n const url = isNew ? `api/longObjects/add/roads` : `api/longObjects/${longObjectId}/edit/roads`;\r\n self.apiClient.post(url, {\r\n RoadId: $('#SelectedLongObjectWithRoad_RoadId', $modal).val(),\r\n StartKm: $('#SelectedLongObjectWithRoad_StartKm', $modal).val(),\r\n StopKm: $('#SelectedLongObjectWithRoad_StopKm', $modal).val(),\r\n CoordinatesCsv: $('#SelectedLongObjectWithRoad_CoordinatesCsv', $modal).val(),\r\n LongObjectTypeId: $('#TypeId', $modal).val()\r\n })\r\n .then(result => {\r\n $(`#${addRoadTableId}_processing`, $modal).attr('style', 'display:none');\r\n $control.removeAttr('disabled');\r\n if (result.result) {\r\n initTable({\r\n row: [\r\n result.result.Road.Code,\r\n result.result.StartKm,\r\n `
${result.result.StopKm}
`\r\n ],\r\n id: addRoadTableId\r\n });\r\n $('#HasRoads').val('true');\r\n $('#HasRoads').trigger('check.validation');\r\n } else {\r\n if (result.error) {\r\n $.each($('.text-danger', $modal),\r\n function (idx, obj) {\r\n if ($(obj).data('valmsgFor') == result.error.field) {\r\n $(obj).text(result.error.text);\r\n }\r\n $('#' + result.error.field.replace('.', '_'))\r\n .on('change',\r\n function () {\r\n $(obj).text('');\r\n });\r\n });\r\n }\r\n }\r\n });\r\n }\r\n })\r\n\r\n // Удаление дороги из ПО\r\n .on('click', '[js=delete-road]', function () {\r\n var $control = $(this);\r\n $(`#${addRoadTableId}_processing`, $modal).show();\r\n $control.prop('disabled', true);\r\n const url = isNew ? `api/longObjects/add/roads` : `api/longObjects/${longObjectId}/edit/roads`;\r\n\r\n self.apiClient.delete(url, {\r\n RoadId: $control.data('id'),\r\n StartKm: $control.data('startkm'),\r\n StopKm: $control.data('stopkm'),\r\n Row: $control.closest('tr').attr('id')\r\n })\r\n .then(function (result) {\r\n $(`#${addRoadTableId}_processing`, $modal).hide();\r\n\r\n if (result.result) {\r\n var table = $(`#${addRoadTableId}`).DataTable();\r\n table.row(`#${result.result}`).remove().draw(false);\r\n var isEmpty = table.row(':not(.longobject-road-table-tr):not(.table-data-empty)').count() === 0;\r\n if (isEmpty)\r\n $('#HasRoads').val('');\r\n $('#HasRoads').trigger('check.validation');\r\n }\r\n $control.prop('disabled', false);\r\n });\r\n });\r\n });\r\n };\r\n\r\n function updateRoadCoordinateWithPosition() {\r\n const roadId = $(\"#SelectedLongObjectWithRoad_RoadId option:selected\").val();\r\n coordinates.reloadRoadCoordinates(roadId || 0).then(function () {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n });\r\n }\r\n\r\n function initTable(option) {\r\n\r\n const table = $(`#${option.id}`).DataTable();\r\n\r\n if (option.row) {\r\n table.row('.table-data-empty').remove().draw(false);\r\n var controlRow = table.row('.longobject-road-table-tr').data();\r\n\r\n table.row('.longobject-road-table-tr').remove().draw(false);\r\n table.row.add(option.row).draw(false);\r\n table.row.add(controlRow).draw();\r\n\r\n table.rows().every(function (rowIdx) {\r\n const control = this.node();\r\n const data = this.data();\r\n\r\n $(control).attr('id', `row_${rowIdx}`);\r\n\r\n if (data == controlRow) {\r\n $(control).addClass('longobject-road-table-tr');\r\n }\r\n });\r\n }\r\n };\r\n\r\n return LongObjectEditModal;\r\n}(BaseModal));\r\n","var LongObjectMapModal = (function (base) {\r\n __extends(LongObjectMapModal, base);\r\n\r\n function LongObjectMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * \r\n * @param {} coordinates Массив координат или CSV\r\n * @param {} roadName Название дороги\r\n */\r\n LongObjectMapModal.prototype.activate = function (longObjectId, roadId, longObjectName, roadStartKm, startKm, stopKm) {\r\n const self = this;\r\n const url = longObjectId ? `api/longObjects/${longObjectId}/edit/map/${roadId}` : `api/longObjects/add/map/${roadId}`\r\n\r\n this.loadContent(url, { longObjectName: longObjectName || 'протяженного объекта' })\r\n .then($modal => {\r\n\r\n // Инициализация карты после открытия модального окна\r\n var mapObjects = {};\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#marker-map', $modal).height(containerHeight);\r\n\r\n setTimeout(function () {\r\n mapObjects = initPolylineMap(new L.FeatureGroup(), $('[js=back]', $modal), roadStartKm, startKm, stopKm);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', () => {\r\n if (mapObjects.points.length < 2) {\r\n alert('Протяженный объект не указан.');\r\n return;\r\n }\r\n this.close({\r\n ok: true,\r\n startKm: Math.round(mapObjects.startKm) / 1000,\r\n stopKm: Math.round(mapObjects.endKm) / 1000\r\n });\r\n });\r\n });\r\n };\r\n\r\n return LongObjectMapModal;\r\n}(BaseModal));\r\n","var LongObjectViewModal = (function (base) {\r\n __extends(LongObjectViewModal, base);\r\n\r\n function LongObjectViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n LongObjectViewModal.prototype.activate = function (longObjectId, deleteFunc, showOnMapFunc) {\r\n const self = this;\r\n const url = `api/longObjects/${longObjectId}`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Кнопка `Редактировать`\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(LongObjectEditModal, longObjectId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n })\r\n\r\n //Кнопка `Удалить`\r\n .on('click', '[js=delete]', function () {\r\n if (confirm(`Вы действительно хотите удалить этот протяженный объект?`)) {\r\n deleteFunc(longObjectId);\r\n }\r\n })\r\n\r\n //Кнопка `Показать на карте`\r\n .on('click', '[js=show-on-map]', function () {\r\n showOnMapFunc(longObjectId);\r\n });\r\n });\r\n };\r\n\r\n return LongObjectViewModal;\r\n}(BaseModal));\r\n","var MaterialEditModal = (function (base) {\r\n __extends(MaterialEditModal, base);\r\n\r\n\r\n function MaterialEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\nMaterialEditModal.prototype.activate = function (id) {\r\n const self = this;\r\n const isNew = !id;\r\n const url = isNew ? 'api/materials/add' : 'api/materials/{0}/edit'.format(id);\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/materials');\r\n $modal\r\n\r\n //Кнопка 'Сохранить'\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n });\r\n });\r\n };\r\n\r\n return MaterialEditModal;\r\n}(BaseModal));\r\n","var MaterialViewModal = (function (base) {\r\n __extends(MaterialViewModal, base);\r\n\r\n function MaterialViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n MaterialViewModal.prototype.activate = function (id, deleteFunc) {\r\n const self = this;\r\n const url = 'api/materials/' + id;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n // Редактирование\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(MaterialEditModal, id)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n })\r\n\r\n // Удаление\r\n .on('click', '[js=delete]', function () {\r\n if (confirm('Вы действительно хотите удалить этот материал?')) {\r\n deleteFunc(id);\r\n }\r\n });\r\n });\r\n };\r\n\r\n return MaterialViewModal;\r\n}(BaseModal));\r\n","var RoadEditModal = (function (base) {\r\n __extends(RoadEditModal, base);\r\n\r\n\r\n function RoadEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n RoadEditModal.prototype.activate = function (roadId) {\r\n var self = this;\r\n const isNew = !roadId;\r\n const url = isNew ? 'api/roads/add' : `api/roads/${roadId}/edit`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n var $roadName = $('#Name', $form);\r\n var $coordinatesCsv = $('#CoordinatesCsv', $form);\r\n\r\n if (!isNew) {\r\n var coordinates = $coordinatesCsv.val();\r\n if (typeof coordinates === 'string') {\r\n coordinates = MapHelper.parseStringToSplitLatLng(coordinates);\r\n if (coordinates === undefined) {\r\n coordinates = [[]];\r\n }\r\n } else {\r\n coordinates = [MapHelper.convertToLatLng(coordinates)];\r\n }\r\n $('#Length').val(MapHelper.getLength(coordinates) / 1000);\r\n }\r\n\r\n $('.select2', $form).select2();\r\n\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/roads');\r\n FilesUploader.initUploadingOnSubmit(VideoServerSettings.url, $form, 'UploadedFile', () => false, fileType => fileType === 1);\r\n\r\n $modal\r\n\r\n //Кнопка `Сохранить`\r\n .on('click', '[js=save]', function() {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n //Кнопка `Задать координаты на карте`\r\n .on('click', '[js=edit-coordinates]', function () {\r\n var startKm = Number($('#StartKm').val());\r\n ModalConductor.activate(RoadMapModal, roadId, $roadName.val(), $coordinatesCsv.val(), startKm)\r\n .closed(modalResult => {\r\n if (modalResult.ok) {\r\n $coordinatesCsv.val(modalResult.coordinatesCsv);\r\n $('#Length').val(modalResult.length || 0);\r\n }\r\n });\r\n })\r\n\r\n //Кнопка `Выбрать трек ТС`\r\n .on('click', '[js=show-tracks]', function () {\r\n var startKm = Number($('#StartKm').val());\r\n ModalConductor.activate(TrackSelectModal, roadId, $roadName.val(), startKm)\r\n .closed(modalResult => {\r\n if (modalResult.ok) {\r\n $coordinatesCsv.val(modalResult.coordinatesCsv);\r\n $('#Length').val(modalResult.length || 0);\r\n }\r\n });\r\n })\r\n\r\n .on('change', '#StartKm', function() {\r\n $('#Length').valid();\r\n });\r\n });\r\n };\r\n\r\n\r\n return RoadEditModal;\r\n}(BaseModal));\r\n","var TARGET;\r\nvar LAYER1;\r\nvar LAYER2;\r\nvar RoadMapModal = (function (base) {\r\n __extends(RoadMapModal, base);\r\n\r\n let roadSections = [];\r\n const MAX_POINTS = 100; // Максимальное кол-во точек редактирования на экране. При превышении которого редактирование линии будет отключено\r\n const MAX_ZOOM = 17; // Максимальный зум, при достижении которого редактирование будет работать всегда\r\n let draggable = false; // Можно ли перемещать линию целиком\r\n \r\n\r\n function RoadMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * Активизирует диалог\r\n * @param {} coordinates Массив координат или CSV\r\n * @param {} roadName Название дороги\r\n */\r\n RoadMapModal.prototype.activate = function (roadId, roadName, coordinates, startKm) {\r\n const self = this;\r\n const url = roadId ? `api/roads/${roadId}/edit/map` : `api/roads/add/map`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $('[js=road-name]', $modal).text(roadName);\r\n\r\n if (typeof coordinates === 'string') {\r\n coordinates = MapHelper.parseStringToSplitLatLng(coordinates);\r\n if (coordinates === undefined) {\r\n $('[js=error-text]', this.$modal).text('Ошибка чтения координат. Неверный формат.');\r\n coordinates = [[]];\r\n }\r\n } else {\r\n coordinates = [MapHelper.convertToLatLng(coordinates)];\r\n }\r\n\r\n // Инициализация карты после открытия модального окна\r\n setTimeout(function () {\r\n const containerHeight = $(window).height() * 0.65;\r\n $('#marker-map', $modal).height(containerHeight);\r\n $('#road-help', $modal).height(containerHeight - 70);\r\n _initMap(coordinates, $('#btn-back', $modal));\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', function () {\r\n self.close({\r\n ok: true,\r\n coordinatesCsv: _getCsv()\r\n });\r\n //if (roadId) {\r\n // var length = MapHelper.getLength(_getCoordinates()) / 1000;\r\n // _validateRoad(roadId, startKm, length)\r\n // .success(function(result) {\r\n // self.close({\r\n // ok: true,\r\n // length: length,\r\n // coordinatesCsv: _getCsv()\r\n // });\r\n // })\r\n // .error(function (xhr, status, statusCode) {\r\n // var response = xhr.responseJSON;\r\n // if (response && response.errors &&\r\n // response.errors.StartKm && response.errors.StartKm.length) {\r\n // $('[js=error-text]', this.$modal).text(response.errors.StartKm[0]);\r\n // }\r\n // else\r\n // $('[js=error-text]', this.$modal).text('Не удалось сохранить изменения.');\r\n // });\r\n //} else {\r\n // self.close({\r\n // ok: true,\r\n // coordinatesCsv: _getCsv()\r\n // });\r\n //}\r\n });\r\n\r\n });\r\n };\r\n\r\n function _validateRoad(roadId, startKm, length) {\r\n var data = { startKm: startKm, length: length };\r\n return $.ajax({\r\n url: Url.action('api/roads/{0}/validate', roadId),\r\n data: JSON.stringify(data),\r\n contentType: 'application/json; charset=utf-8',\r\n type: 'POST',\r\n dataType: 'json'\r\n });\r\n }\r\n\r\nfunction _initMap(coordinates, backControl) {\r\n const latitude = sessionStorage.lat && sessionStorage.lat != 'undefined' ? sessionStorage.lat.replace(',', '.') : 0;\r\n const longitude = sessionStorage.lng && sessionStorage.lng != 'undefined' ? sessionStorage.lng.replace(',', '.') : 0;\r\n const initLat = latitude > 0 ? latitude : AppConfig.defaultMapCenter[0];\r\n const initLng = longitude > 0 ? longitude : AppConfig.defaultMapCenter[1];\r\n roadSections.length = 0;\r\n\r\n L.Icon.Default.imagePath = AppConfig.imagePath;\r\n var grayscale = L.tileLayer(MapSettings.urlFormat, { attribution: '© OpenStreetMap contributors' });\r\n\r\n var map = L.map('marker-map', {\r\n center: [initLat, initLng],\r\n zoom: AppConfig.defaultMapZoom,\r\n maxBounds: L.latLngBounds(AppConfig.defaultMapBounds[0], AppConfig.defaultMapBounds[1]),\r\n minZoom: AppConfig.defaultMapMinZoom,\r\n zoomReverse: true,\r\n layers: [grayscale],\r\n editable: true,\r\n renderer: L.canvas({padding: 0.3}),\r\n optimization: true\r\n });\r\n\r\n L.HelpControl = L.Control.extend({\r\n\r\n onAdd: function (map) {\r\n var clicked = false;\r\n var container = L.DomUtil.create('div', 'leaflet-control leaflet-bar'),\r\n link = L.DomUtil.create('a', '', container);\r\n L.DomEvent.disableClickPropagation(container);\r\n link.href = '#';\r\n link.innerHTML = '?';\r\n L.DomEvent.on(link, 'click', L.DomEvent.stop)\r\n .on(link, 'click', function () {\r\n if (!clicked && $('#road-help').is(':visible')) {\r\n clicked = true;\r\n } else {\r\n $('#road-help').toggle();\r\n clicked = $('#road-help').is(':visible');\r\n }\r\n if (clicked)\r\n $(this).addClass('selected');\r\n else\r\n $(this).removeClass('selected');\r\n });\r\n L.DomEvent.on(link, 'mouseenter', function () {\r\n $('#road-help').show();\r\n });\r\n L.DomEvent.on(link, 'mouseleave', function () {\r\n if (!clicked)\r\n $('#road-help').hide();\r\n });\r\n return container;\r\n }\r\n });\r\n\r\n L.NewLineControl = L.Control.extend({\r\n\r\n options: {\r\n position: 'topleft'\r\n },\r\n\r\n onAdd: function (map) {\r\n var container = L.DomUtil.create('div', 'leaflet-control leaflet-bar'),\r\n link = L.DomUtil.create('a', '', container);\r\n L.DomEvent.disableClickPropagation(container);\r\n link.href = '#';\r\n link.innerHTML = '/\\\\/';\r\n L.DomEvent.on(link, 'click', L.DomEvent.stop)\r\n .on(link, 'click', function () {\r\n //if (!map.editTools.drawing())\r\n if (roadSections.length && roadSections[roadSections.length - 1].getLatLngs().length < 2) {\r\n roadSections.splice(roadSections.length - 1, 1);\r\n }\r\n roadSections.push(map.editTools.startPolyline());\r\n updateTooltips();\r\n });\r\n return container;\r\n }\r\n });\r\n\r\n L.DraggableControl = L.Control.extend({\r\n\r\n options: {\r\n position: 'topleft'\r\n },\r\n\r\n onAdd: function (map) {\r\n var container = L.DomUtil.create('div', 'leaflet-control leaflet-bar'),\r\n link = L.DomUtil.create('a', '', container);\r\n L.DomEvent.disableClickPropagation(container);\r\n link.href = '#';\r\n link.innerHTML = 'D';\r\n L.DomEvent.on(link, 'click', L.DomEvent.stop)\r\n .on(link, 'click', function () {\r\n draggable = !draggable;\r\n if (draggable) {\r\n this.classList.add('selected');\r\n } else {\r\n this.classList.remove('selected');\r\n }\r\n setDraggable(draggable);\r\n });\r\n return container;\r\n }\r\n });\r\n map.addControl(new L.NewLineControl());\r\n map.addControl(new L.HelpControl({ position: 'topright' }));\r\n map.addControl(new L.DraggableControl());\r\n\r\n // click on vertex\r\n map.on('editable:vertex:ctrlclick editable:vertex:metakeyclick', function (e) {\r\n var index = e.vertex.getIndex();\r\n var maxIndex = e.layer.getLatLngs().length;\r\n // split line\r\n if (index > 1 && index < maxIndex - 2) {\r\n e.vertex.split();\r\n e.layer.getLatLngs()[0][e.layer.getLatLngs()[0].length - 1].__vertex.delete();\r\n e.layer.getLatLngs()[1][0].__vertex.delete();\r\n var secondLine = e.layer.editor.deleteShapeAt(e.layer.getLatLngs()[1][0]);\r\n var firstLine = e.layer.editor.deleteShapeAt(e.layer.getLatLngs()[0][0]);\r\n var layerIndex = roadSections.indexOf(e.layer);\r\n if (layerIndex >= 0) {\r\n roadSections[layerIndex] = L.polyline(firstLine).addTo(map);\r\n roadSections.splice(layerIndex + 1, 0, L.polyline(secondLine).addTo(map));\r\n roadSections[layerIndex].enableEdit();\r\n roadSections[layerIndex + 1].enableEdit();\r\n updateTooltips();\r\n }\r\n }\r\n // continue line\r\n else\r\n e.vertex.continue();\r\n });\r\n // delete section\r\n var deleteShape = function (e) {\r\n if ((e.originalEvent.ctrlKey || e.originalEvent.metaKey) && this.editEnabled()) {\r\n var index = roadSections.indexOf(this);\r\n if (this.editor.drawing()) {\r\n // При удалении линии, когда находимся в режиме рисования,\r\n // то удаляем либо саму линию и начинаем ее заново, либо находим пересечение с другими линиями\r\n // и удаляем первую из найденных\r\n var intersectedLines = [];\r\n for (var i = 0; i < roadSections.length; i++) {\r\n if (i !== index && roadSections[i].editEnabled()\r\n && roadSections[i].editor.feature.shapeAt(e.latlng))\r\n intersectedLines.push(i);\r\n }\r\n if (intersectedLines.length) {\r\n roadSections[intersectedLines[0]].editor.deleteShapeAt(e.latlng);\r\n roadSections.splice(intersectedLines[0], 1);\r\n updateTooltips();\r\n } else if (index >= 0) {\r\n this.editor.deleteShapeAt(e.latlng);\r\n roadSections[index] = map.editTools.startPolyline();\r\n updateTooltips();\r\n }\r\n } else {\r\n if (index >= 0) {\r\n this.editor.deleteShapeAt(e.latlng);\r\n roadSections.splice(index, 1);\r\n updateTooltips();\r\n }\r\n }\r\n }\r\n };\r\n map.on('layeradd', function (e) {\r\n if (e.layer instanceof L.Path) e.layer.on('click', L.DomEvent.stop).on('click', deleteShape, e.layer);\r\n });\r\n //// redo\r\n //var Z = 90, latlng, redoBuffer = [],\r\n // onKeyDown = function (e) {\r\n // if (e.keyCode == Z) {\r\n // if (!this.editTools._drawingEditor) return;\r\n // if (e.shiftKey) {\r\n // if (redoBuffer.length) this.editTools._drawingEditor.push(redoBuffer.pop());\r\n // } else {\r\n // latlng = this.editTools._drawingEditor.pop();\r\n // if (latlng) redoBuffer.push(latlng);\r\n // }\r\n // }\r\n // };\r\n //L.DomEvent.addListener(document, 'keydown', onKeyDown, map);\r\n //map.on('editable:drawing:end', function () {\r\n // redoBuffer = [];\r\n // placeMarkersInBounds();\r\n //});\r\n\r\n map.on('editable:drawing:end', function () {\r\n $('[js=error-text]', this.$modal).text('');\r\n refreshEditor();\r\n });\r\n\r\n if (!coordinates.length || !coordinates[0].length) {\r\n roadSections.push(map.editTools.startPolyline());\r\n } else {\r\n coordinates.forEach(function (c) {\r\n roadSections.push(L.polyline(c).addTo(map));\r\n roadSections[roadSections.length - 1].enableEdit();\r\n });\r\n var latLngs = roadSections.map(function(s) { return s.getLatLngs(); });\r\n map.fitBounds(L.latLngBounds(latLngs));\r\n }\r\n updateTooltips();\r\n\r\n // disable edit if many points on screen\r\n map.on('moveend', placeMarkersInBounds);\r\n refreshEditor();\r\n redrawPoints();\r\n setDraggable(draggable);\r\n\r\n function setDraggable(enable) {\r\n for (let i = 0; i < roadSections.length; i++) {\r\n if (enable) {\r\n roadSections[i].dragging.enable();\r\n } else {\r\n roadSections[i].dragging.disable();\r\n }\r\n }\r\n }\r\n\r\n function redrawPoints() {\r\n for (let i = 0; i < roadSections.length; i++) {\r\n if (roadSections[i].editor && roadSections[i].editEnabled())\r\n roadSections[i].editor.reset();\r\n }\r\n }\r\n\r\n function refreshEditor() {\r\n var currentZoom = map.getZoom();\r\n if (currentZoom >= MAX_ZOOM) { //|| map.editTools.drawing()\r\n for (let i = 0; i < roadSections.length; i++) {\r\n if (!roadSections[i].editEnabled())\r\n roadSections[i].enableEdit();\r\n }\r\n } else {\r\n var mapBounds = map.getBounds();\r\n var visibleSections = [];\r\n var visiblePoints = 0;\r\n var disableAll = false;\r\n for (let i = 0; i < roadSections.length; i++) {\r\n \r\n if (roadSections[i].editor && roadSections[i].editor.drawing())\r\n continue;\r\n var bounds = roadSections[i].getBounds();\r\n if (!bounds || !bounds.isValid())\r\n continue;\r\n if (mapBounds.intersects(bounds)) {\r\n visibleSections.push(i);\r\n if (!disableAll) {\r\n visiblePoints += roadSections[i].getLatLngs().filter(function (c) {\r\n return mapBounds.contains([c.lat, c.lng]);\r\n }).length;\r\n if (visiblePoints > MAX_POINTS) {\r\n disableAll = true;\r\n }\r\n }\r\n } else {\r\n if (roadSections[i].editEnabled())\r\n roadSections[i].disableEdit();\r\n }\r\n }\r\n if (disableAll) {\r\n for (let i = 0; i < visibleSections.length; i++) {\r\n if (roadSections[visibleSections[i]].editEnabled())\r\n roadSections[visibleSections[i]].disableEdit();\r\n }\r\n } else {\r\n for (let i = 0; i < visibleSections.length; i++) {\r\n if (!roadSections[visibleSections[i]].editEnabled())\r\n roadSections[visibleSections[i]].enableEdit();\r\n }\r\n }\r\n }\r\n }\r\n\r\n function placeMarkersInBounds() {\r\n refreshEditor();\r\n redrawPoints();\r\n setDraggable(draggable);\r\n }\r\n\r\n function updateTooltips() {\r\n if (roadSections.length) {\r\n if (roadSections.length === 1) {\r\n if (roadSections[0].getTooltip())\r\n L.DomEvent.off(roadSections[0], 'tooltipopen', closeTooltip, roadSections[0]);\r\n roadSections[0].unbindTooltip();\r\n } else {\r\n for (var i = 0; i < roadSections.length; i++) {\r\n roadSections[i].bindTooltip('Линия ' + (i + 1), { sticky: true });\r\n L.DomEvent.off(roadSections[i], 'tooltipopen', closeTooltip, roadSections[i]);\r\n L.DomEvent.on(roadSections[i], 'tooltipopen', closeTooltip, roadSections[i]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function closeTooltip(e) {\r\n var layer = this;\r\n setTimeout(function() {\r\n layer.closeTooltip();\r\n }, 1200);\r\n }\r\n\r\n}\r\n\r\n function _getCsv() {\r\n return roadSections\r\n .map(function(s) {\r\n return s.getLatLngs().map(function(l) { return l.lat + ',' + l.lng; }).join('\\n');\r\n }).join('\\n---\\n');\r\n }\r\n\r\n function _getCoordinates() {\r\n return roadSections.map(function (s) { return s.getLatLngs(); });\r\n }\r\n\r\n return RoadMapModal;\r\n}(BaseModal));\r\n","var RoadViewModal = (function (base) {\r\n __extends(RoadViewModal, base);\r\n\r\n function RoadViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n RoadViewModal.prototype.activate = function (roadId, deleteFunc, showOnMapFunc) {\r\n const self = this;\r\n const url = `api/roads/${roadId}`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Кнопка `Редактировать`\r\n .on('click', '[js=edit]', () => {\r\n console.trace('edit');\r\n ModalConductor.activate(RoadEditModal, roadId)\r\n .on('closed', modalResult => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url).then(() => {\r\n });\r\n }\r\n });\r\n })\r\n\r\n //Кнопка `Удалить`\r\n .on('click', '[js=delete]', () => {\r\n console.trace('delete');\r\n if (confirm('Вы действительно хотите удалить эту автодорогу?')) {\r\n deleteFunc(roadId);\r\n }\r\n })\r\n\r\n //Кнопка `Показать на карте`\r\n .on('click', '[js=show-on-map]', () => {\r\n console.trace('show-on-map');\r\n showOnMapFunc(roadId);\r\n });\r\n });\r\n };\r\n\r\n return RoadViewModal;\r\n}(BaseModal));\r\n","var TrackSelectModal = (function (base) {\r\n __extends(TrackSelectModal, base);\r\n\r\n function TrackSelectModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n TrackSelectModal.prototype.activate = function (roadId, roadName, startKm) {\r\n var self = this;\r\n\r\n this.loadContent('api/roads/track')\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Кнопка 'Выбрать' в окне выбора трека ТС\r\n .on('click', '[js=ok]', function () {\r\n\r\n var isValid = true;\r\n const $vcvm = $('#VehicleChooseValidationMessage', $modal);\r\n const $ftvm = $('#FromToValidationMessage', $modal);\r\n $vcvm.empty();\r\n $ftvm.empty();\r\n\r\n const table = $('#VehicleListItemTable', $modal).DataTable();\r\n const selectedRows = table.rows('.selected').data();\r\n const from = $('#From', $modal).val();\r\n const to = $('#To', $modal).val();\r\n\r\n if (!from || !to) {\r\n $ftvm.html('Обязательные поля');\r\n isValid = false;\r\n }\r\n\r\n if (selectedRows.length === 0) {\r\n $vcvm.html('Выбор ТС обязателен');\r\n isValid = false;\r\n }\r\n\r\n if (isValid) {\r\n\r\n const id = selectedRows[0].Id;\r\n $modal.busy();\r\n self.apiClient.get('Vehicles/TrackCoordinates', { id: id, from: from, to: to })\r\n .then(function (coordinates) {\r\n\r\n $modal.busy(false);\r\n\r\n ModalConductor.activate(RoadMapModal, roadId, roadName, coordinates, startKm)\r\n .closed(modalResult => {\r\n\r\n if (modalResult.ok) {\r\n self.close({\r\n ok: true,\r\n coordinatesCsv: modalResult.coordinatesCsv,\r\n length: modalResult.length\r\n });\r\n }\r\n });\r\n })\r\n .catch(function (xhr, status) {\r\n $modal.busy(false);\r\n console.log(status);\r\n //TODO: нужно каким-то образом уведомить пользователя о возникшей проблеме\r\n });\r\n }\r\n });\r\n });\r\n };\r\n\r\n return TrackSelectModal;\r\n}(BaseModal));\r\n","var SSegmentEdtiModal = (function (base) {\r\n __extends(SSegmentEdtiModal, base);\r\n\r\n\r\n function SSegmentEdtiModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n SSegmentEdtiModal.prototype.activate = function (SSegmentId) {\r\n const self = this;\r\n const url = SSegmentId ? `api/ssegments/${SSegmentId}/edit` : `api/ssegments/add`;\r\n const isNew = !SSegmentId;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/ssegments');\r\n FilesUploader.initUploadingOnSubmit(VideoServerSettings.url, $form, 'UploadedFile', () => false, fileType => fileType === 1);\r\n\r\n coordinates.reloadRoadCoordinates($('#Road_Id option:selected', $modal).val() || 0).then(function () {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка `Сохранить`\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n //Выбор кода автодороги\r\n .on('change', '#Road_Id', () => {\r\n var startRoadPosition = coordinates.getRoadStartKm();\r\n $('#Road_StartKm').val(startRoadPosition.toFixed(3));\r\n coordinates.reloadRoadCoordinates($('#Road_Id option:selected', $modal).val())\r\n .then(() => {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n });\r\n })\r\n\r\n //Изменение первого километра УО на дороге\r\n .on('change', '#StartKm', () => {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n })\r\n\r\n //Изменение последнего километра УО на дороге\r\n .on('change', '#StopKm', () => {\r\n coordinates.updateCoordinates({ isPoint: false });\r\n })\r\n\r\n //Кнопка `Задать координату на карте`\r\n .on('click', '[js=edit-coordinates]', () => {\r\n\r\n const roadId = parseInt($('#Road_Id option:selected', $modal).val());\r\n const sSegmentName = $('#Name', $modal).val();\r\n const startKm = parseFloat($('#StartKm', $modal).val());\r\n const stopKm = parseFloat($('#StopKm', $modal).val());\r\n const roadStartKm = coordinates.getRoadStartKm(roadId);\r\n\r\n ModalConductor.activate(SSegmentMapModal, SSegmentId, roadId, sSegmentName, roadStartKm, startKm, stopKm)\r\n .on('closed',\r\n modalResult => {\r\n if (modalResult.ok) {\r\n $('#StartKm', $modal).val(modalResult.startKm);\r\n $('#StopKm', $modal).val(modalResult.stopKm);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n return SSegmentEdtiModal;\r\n}(BaseModal));\r\n","var SSegmentMapModal = (function (base) {\r\n __extends(SSegmentMapModal, base);\r\n\r\n function SSegmentMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * \r\n * @param {} coordinates Массив координат или CSV\r\n * @param {} roadName Название дороги\r\n */\r\n SSegmentMapModal.prototype.activate = function (SSegmentId, roadId, sSegmentName, roadStartKm, startKm, stopKm) {\r\n const self = this;\r\n const url = SSegmentId ? `api/ssegments/${SSegmentId}/edit/map/${roadId}` : `api/ssegments/add/map/${roadId}`;\r\n this.loadContent(url, { sSegmentName: sSegmentName || 'участка обслуживания' })\r\n .then($modal => {\r\n\r\n // Инициализация карты после открытия модального окна\r\n var mapObjects = {};\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#marker-map', $modal).height(containerHeight);\r\n\r\n setTimeout(function () {\r\n mapObjects = initPolylineMap(new L.FeatureGroup(), $('[js=back]', $modal), roadStartKm, startKm, stopKm);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', () => {\r\n if (mapObjects.points.length < 2) {\r\n alert('Участок обслуживания не указан.');\r\n return;\r\n }\r\n this.close({\r\n ok: true,\r\n startKm: Math.round(mapObjects.startKm) / 1000,\r\n stopKm: Math.round(mapObjects.endKm) / 1000\r\n });\r\n });\r\n });\r\n };\r\n\r\n return SSegmentMapModal;\r\n}(BaseModal));\r\n","var SSegmentViewModal = (function (base) {\r\n __extends(SSegmentViewModal, base);\r\n\r\n function SSegmentViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n SSegmentViewModal.prototype.activate = function (ssegmentId, deleteFunc, showOnMapFunc) {\r\n const self = this;\r\n const url = `api/ssegments/${ssegmentId}`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Кнопка `Удалить`\r\n .on('click', '[js=delete]', function () {\r\n if (confirm(`Вы действительно хотите удалить этот участок обслуживания?`)) {\r\n deleteFunc(ssegmentId);\r\n }\r\n })\r\n\r\n //Кнопка `Показать на карте`\r\n .on('click', '[js=show-on-map]', function () {\r\n showOnMapFunc(ssegmentId);\r\n })\r\n\r\n //Кнопка `Редактировать`\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(SSegmentEdtiModal, ssegmentId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n return SSegmentViewModal;\r\n}(BaseModal));\r\n","var KC2WorkModal = (function (base) {\r\n __extends(KC2WorkModal, base);\r\n\r\n function KC2WorkModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n KC2WorkModal.prototype.activate = function (htmlContent) {\r\n const self = this;\r\n const $modal = ModalHelper.create().show().busy();\r\n self.$modal = $modal;\r\n\r\n var $form = $('form', $modal);\r\n\r\n $modal.content(htmlContent).busy(false);\r\n\r\n $modal\r\n .on('click', '[js=close],.close', () => {\r\n self.close({ cancel: true });\r\n })\r\n .on('keydown',\r\n e => {\r\n if (e.keyCode === 27) {\r\n self.close({ cancel: true });\r\n e.stopPropagation();\r\n }\r\n })\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n self.close({ ok: true })\r\n });\r\n };\r\n\r\n return KC2WorkModal;\r\n}(BaseModal));\r\n","var TableVisiblityOptionsModal = (function (base) {\r\n __extends(TableVisiblityOptionsModal, base);\r\n\r\n function TableVisiblityOptionsModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n TableVisiblityOptionsModal.prototype.activate = function (htmlContent, title, table, columns) {\r\n const self = this;\r\n const $modal = ModalHelper.create().show().busy();\r\n self.$modal = $modal;\r\n\r\n htmlContent = htmlContent.replace('\\${title}', title);\r\n\r\n $modal.content(htmlContent).busy(false);\r\n\r\n columns.forEach(function (column) {\r\n $modal\r\n .find('#{Name}-checkbox'.format(column))\r\n .prop('checked', table.column('{Name}:name'.format(column)).visible());\r\n });\r\n\r\n $modal\r\n .on('click', '[js=close],.close', () => {\r\n self.close({ cancel: true });\r\n })\r\n .on('keydown',\r\n e => {\r\n if (e.keyCode === 27) {\r\n self.close({ cancel: true });\r\n e.stopPropagation();\r\n }\r\n });\r\n };\r\n\r\n return TableVisiblityOptionsModal;\r\n}(BaseModal));\r\n","var MessageModal = (function (base) {\r\n __extends(MessageModal, base);\r\n\r\n function MessageModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n MessageModal.prototype.activate = function (htmlContent, header, description) {\r\n const self = this;\r\n const $modal = ModalHelper.create().show().busy();\r\n self.$modal = $modal;\r\n\r\n htmlContent = htmlContent\r\n .replace('\\${header}', header)\r\n .replace('\\${description}', description);\r\n $($modal).find('.modal-dialog').addClass('modal-login');\r\n $modal.content(htmlContent).busy(false);\r\n\r\n $modal\r\n .on('click', '[js=close],.close', () => {\r\n self.close({ cancel: true });\r\n })\r\n .on('keydown',\r\n e => {\r\n if (e.keyCode === 27) {\r\n self.close({ cancel: true });\r\n e.stopPropagation();\r\n }\r\n });\r\n };\r\n\r\n return MessageModal;\r\n}(BaseModal));\r\n","var VehicleOnObjectTrackModal = (function (base) {\r\n __extends(VehicleOnObjectTrackModal, base);\r\n\r\n function VehicleOnObjectTrackModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n VehicleOnObjectTrackModal.prototype.activate = function (htmlContent, trackName, tracksUrl, roadId, startKm, stopKm, showRuler) {\r\n const self = this;\r\n const $modal = ModalHelper.create().show().busy();\r\n self.$modal = $modal;\r\n\r\n htmlContent = htmlContent.replace('\\${trackName}', trackName);\r\n\r\n $modal.content(htmlContent).busy(false);\r\n\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#track-map', $modal).height(containerHeight);\r\n\r\n var tracks;\r\n var map;\r\n setTimeout(function () {\r\n map = initVehicleTrackMap(showRuler);\r\n if (roadId)\r\n initRoadSegmentOnMapShowing(map, roadId, startKm, stopKm);\r\n initTracksOnMapShowing(map, tracksUrl);\r\n if (showRuler)\r\n Ruler.init(map);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=close],.close', () => {\r\n self.close({ cancel: true });\r\n })\r\n .on('keydown',\r\n e => {\r\n if (e.keyCode === 27) {\r\n self.close({ cancel: true });\r\n e.stopPropagation();\r\n }\r\n });\r\n };\r\n\r\n return VehicleOnObjectTrackModal;\r\n}(BaseModal));\r\n","var VehicleEditModal = (function (base) {\r\n __extends(VehicleEditModal, base);\r\n\r\n\r\n function VehicleEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n VehicleEditModal.prototype.activate = function (vehicleId) {\r\n const self = this;\r\n var isNew = !vehicleId;\r\n const url = isNew ? `api/vehicles/add` : `api/vehicles/${vehicleId}/edit`;\r\n var $form;\r\n\r\n function init($modal, vehicleId) {\r\n $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/vehicles');\r\n if (vehicleId)\r\n VehicleHistory.Init($modal, vehicleId, false);\r\n }\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n init($modal, vehicleId);\r\n $modal\r\n //Кнопка `Сохранить`\r\n .on('click',\r\n '[js=save]',\r\n function() {\r\n $modal.busy();\r\n $form.send()\r\n .then((id) => {\r\n if (isNew) {\r\n self.reloadContent(`api/vehicles/${id}/edit`)\r\n .then(() => {\r\n isNew = false;\r\n init($modal, id);\r\n $('.nav-tabs a[href=#tracker-history-edit]').tab('show');\r\n });\r\n } else {\r\n self.close({ ok: true });\r\n }\r\n })\r\n .catch(() => $modal.busy(false));\r\n })\r\n .on('change',\r\n '[js=\"contractor-selector\"]',\r\n function (e) {\r\n var contractorId = $(this).val();\r\n var $rep = $('[js=\"representative-vehicle\"]');\r\n $rep.find('option').each(function() {\r\n var contractorsRaw = $(this).attr('data-contractors');\r\n var contractors = contractorsRaw.split(',');\r\n if ($.inArray(contractorId, contractors) !== -1) {\r\n $(this).attr('disabled', 'disabled');\r\n $(this).removeAttr('selected');\r\n } else {\r\n $(this).removeAttr('disabled');\r\n }\r\n });\r\n\r\n $('.select2', $modal).select2(\"destroy\").select2({\r\n placeholder: 'Данные отсутствуют'\r\n });\r\n });\r\n if (isNew)\r\n $('[js=\"contractor-selector\"]').change();\r\n else \r\n $('.select2', $modal).select2({ placeholder: 'Данные отсутствуют' });\r\n });\r\n\r\n };\r\n\r\n\r\n return VehicleEditModal;\r\n}(BaseModal));\r\n","var VehicleHistoryEditModal = (function (base) {\r\n __extends(VehicleHistoryEditModal, base);\r\n\r\n function VehicleHistoryEditModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n VehicleHistoryEditModal.prototype.activate = function (historyId, vehicleId) {\r\n const self = this;\r\n\r\n const isNew = !historyId;\r\n const url = isNew ? 'api/vehicles/{0}/history/add'.format(vehicleId) : 'api/vehicles/{0}/history/{1}/edit'.format(vehicleId, historyId);\r\n var currentTrackerId = '';\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/vehicles/{0}/history'.format(vehicleId));\r\n\r\n datetimepickerInit({ $input: $('#Date', $modal), withSeconds: true });\r\n $('.select2', $form).select2({\r\n tags: true,\r\n dropdownParent: $modal,\r\n placeholder: 'Выберите или введите ID трекера',\r\n matcher: function (params, data) {\r\n if (params.term) {\r\n if (data.id === params.term)\r\n return null;\r\n if (data.id.indexOf(params.term) > -1)\r\n return data;\r\n return null;\r\n }\r\n else\r\n return data;\r\n }\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка `Сохранить`\r\n .on('click', '[js=save]', function() {\r\n $modal.busy();\r\n $modal.find('#TrackerId').val($('[js=tracker-id]').val());\r\n $form.send()\r\n .then((data) => self.close({ ok: true, trackerNumber: data.trackerNumber, trackerType: data.trackerType }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n .on('change', '[js=dismantled]', function() {\r\n if (this.checked) {\r\n currentTrackerId = $('[js=tracker-id]').val();\r\n $('[js=tracker-id]').val('').trigger(\"change\");\r\n $('[js=tracker-id]').prop(\"disabled\", true);;\r\n } else {\r\n if (currentTrackerId) {\r\n $('[js=tracker-id]').val(currentTrackerId).trigger(\"change\");\r\n }\r\n $('[js=tracker-id]').prop(\"disabled\", false);;\r\n }\r\n });\r\n });\r\n };\r\n\r\n return VehicleHistoryEditModal;\r\n}(BaseModal));\r\n","var VehicleTrackModal = (function (base) {\r\n __extends(VehicleTrackModal, base);\r\n\r\n function VehicleTrackModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n VehicleTrackModal.prototype.activate = function (vehicleId, vehicleName) {\r\n const self = this;\r\n\r\n this.loadContent(`api/vehicles/${vehicleId}/trackMap`, { vehicleName: vehicleName })\r\n .then($modal => {\r\n\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#track-map', $modal).height(containerHeight);\r\n\r\n var track;\r\n var map;\r\n setTimeout(function () {\r\n var url = Url.action(`api/vehicles/${vehicleId}/track`);\r\n map = initVehicleTrackMap([{\r\n url: url,\r\n data: {\r\n from: $('#From', $modal).val(),\r\n to: $('#To', $modal).val()\r\n }\r\n }]);\r\n }, 200);\r\n\r\n $modal\r\n\r\n //\r\n .on('click', '[js=applyFilter]', function (e) {\r\n track = initTracksOnMapShowing(map, [{ \r\n url: Url.action(`api/vehicles/${vehicleId}/track`),\r\n data: {\r\n from: $('#From', $modal).val(),\r\n to: $('#To', $modal).val()\r\n }\r\n }]);\r\n });\r\n });\r\n };\r\n\r\n function dataParse(start, stop) {\r\n var from = start.toISOString().split('-').join('').split(':').join('').replace('T', '');\r\n var to = stop.toISOString().split('-').join('').split(':').join('').replace('T', '');\r\n\r\n return [from.substring(0, from.length - 5), to.substring(0, to.length - 5)];\r\n }\r\n\r\n return VehicleTrackModal;\r\n}(BaseModal));\r\n","var VehicleViewModal = (function (base) {\r\n __extends(VehicleViewModal, base);\r\n\r\n function VehicleViewModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n VehicleViewModal.prototype.activate = function (vehicleId, deleteFunc, showOnMapFunc) {\r\n const self = this;\r\n\r\n this.loadContent(`api/vehicles/${vehicleId}`)\r\n .then($modal => {\r\n VehicleHistory.Init($modal, vehicleId, true);\r\n\r\n $modal\r\n\r\n //Кнопка `Удалить`\r\n .on('click', '[js=delete]', function() {\r\n if (confirm(`Вы действительно хотите удалить это транспортное средство?`)) {\r\n deleteFunc(vehicleId);\r\n }\r\n })\r\n\r\n //Кнопка `Показать на карте`\r\n .on('click', '[js=show-on-map]', function() {\r\n showOnMapFunc(vehicleId);\r\n })\r\n\r\n //Кнопка `Редактировать`\r\n .on('click', '[js=edit]', function() {\r\n ModalConductor.activate(VehicleEditModal, vehicleId)\r\n .on('closed', (modalResult) => {\r\n $('#VehicleListItemTable').DataTable().ajax.reload(null, false);\r\n vehicleId = modalResult.id ? modalResult.id : vehicleId;\r\n self.reloadContent(`api/vehicles/${vehicleId}`)\r\n .then(() => VehicleHistory.Init($modal, vehicleId, true));\r\n });\r\n });\r\n });\r\n };\r\n\r\n return VehicleViewModal;\r\n}(BaseModal));\r\n","var WStationEditModal = (function (base) {\r\n __extends(WStationEditModal, base);\r\n\r\n\r\n function WStationEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n WStationEditModal.prototype.activate = function (wstationId) {\r\n const self = this;\r\n const isNew = !wstationId;\r\n const url = isNew ? 'api/wstations/add' : 'api/wstations/{0}/edit'.format(wstationId);\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/wstations');\r\n\r\n coordinates.reloadRoadCoordinates().then(function () {\r\n coordinates.updateCoordinates({ isPoint: true });\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка 'Сохранить'\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n //Выбор кода автодороги\r\n .on('change', '#RoadId', () => {\r\n coordinates.reloadRoadCoordinates()\r\n .then(() => {\r\n coordinates.updateCoordinates({ isPoint: true });\r\n });\r\n })\r\n\r\n //Изменение километра МС на дороге\r\n .on('change', '#Location', () => {\r\n coordinates.updateCoordinates({ isPoint: true });\r\n })\r\n\r\n //Кнопка 'Задать координату на карте'\r\n .on('click', '[js=edit-coordinate]', () => {\r\n\r\n const wStationName = $('#Name', $modal).val();\r\n const roadId = parseInt($('#RoadId option:selected', $modal).val());\r\n const location = parseFloat($('#Location', $modal).val());\r\n const roadStartKm = coordinates.getRoadStartKm(roadId);\r\n\r\n ModalConductor.activate(WStationMapModal, wstationId, roadId, wStationName, roadStartKm, location)\r\n .on('closed',\r\n modalResult => {\r\n if (modalResult.ok) {\r\n $('#Location', $modal).val(modalResult.location);\r\n $('#Lat', $modal).val(modalResult.coordinate.lat);\r\n $('#Lng', $modal).val(modalResult.coordinate.lng);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n\r\n return WStationEditModal;\r\n}(BaseModal));\r\n","var WStationHistoryModal = (function (base) {\r\n __extends(WStationHistoryModal, base);\r\n\r\n\r\n function WStationHistoryModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n WStationHistoryModal.prototype.activate = function (wStationId, wStationName) {\r\n const self = this;\r\n\r\n this.loadContent('api/wstations/{0}/history'.format(wStationId), { wStationName: wStationName })\r\n .then($modal => {\r\n\r\n datetimepickerInit({ $input: $('#WeatherDate', $modal), withSeconds: true })\r\n\r\n $modal\r\n\r\n //Выбор даты для получения истории МС\r\n .on('click', '[js=applyFilter]', function () {\r\n var $control = $('#WeatherDate', $modal);\r\n $control.attr('readonly', true);\r\n\r\n self.reloadContent('api/wstations/{0}/history?weatherDate='.format(wStationId) + $control.val(), { wStationName: wStationName })\r\n .then(() => {\r\n $control.removeAttr('readonly');\r\n datetimepickerInit({ $input: $('#WeatherDate', $modal), withSeconds: true })\r\n })\r\n .catch(() => {\r\n $control.removeAttr('readonly');\r\n datetimepickerInit({ $input: $('#WeatherDate', $modal), withSeconds: true })\r\n });\r\n });\r\n });\r\n };\r\n\r\n\r\n return WStationHistoryModal;\r\n}(BaseModal));\r\n","var WStationMapModal = (function (base) {\r\n __extends(WStationMapModal, base);\r\n\r\n function WStationMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * \r\n * @param {} coordinates Массив координат или CSV\r\n * @param {} roadName Название дороги\r\n */\r\n WStationMapModal.prototype.activate = function (wStationId, roadId, wStationName, roadStartKm, location) {\r\n const self = this;\r\n const url = wStationId ? 'api/wstations/{0}/edit/map/'.format(wStationId) + roadId : 'api/wstations/add/map/' + roadId;\r\n\r\n this.loadContent(url, { wStationName: wStationName || 'метеостанции' })\r\n .then($modal => {\r\n\r\n // Инициализация карты после открытия модального окна\r\n var data = {};\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#marker-map').height(containerHeight);\r\n\r\n setTimeout(function () {\r\n data = initMarkerMap(new L.FeatureGroup(), $('[js=back]', $modal), roadStartKm, location);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', () => {\r\n if (!data.point) {\r\n alert('МС не указана.');\r\n return;\r\n }\r\n this.close({\r\n ok: true,\r\n location: Math.round(data.location) / 1000,\r\n coordinate: data.point\r\n });\r\n });\r\n });\r\n };\r\n\r\n return WStationMapModal;\r\n}(BaseModal));\r\n\r\n","var WStationViewModal = (function (base) {\r\n __extends(WStationViewModal, base);\r\n\r\n function WStationViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n WStationViewModal.prototype.activate = function (wstationId, deleteFunc, showOnMapFunc) {\r\n const self = this;\r\n const url = 'api/wstations/{0}'.format(wstationId);\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(WStationEditModal, wstationId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n })\r\n\r\n .on('click', '[js=delete]', function () {\r\n if (confirm('Вы действительно хотите удалить эту метеоситуацию?')) {\r\n deleteFunc(wstationId);\r\n }\r\n })\r\n\r\n .on('click', '[js=show-on-map]', function () {\r\n showOnMapFunc(wstationId);\r\n })\r\n\r\n .on('click', '[js=show-history]', function () {\r\n const wstationName = $('[data-binding=Name]', $modal).text();\r\n ModalConductor.activate(WStationHistoryModal, wstationId, wstationName);\r\n });\r\n });\r\n };\r\n\r\n return WStationViewModal;\r\n}(BaseModal));\r\n","var VideoCameraEditModal = (function (base) {\r\n __extends(VideoCameraEditModal, base);\r\n\r\n\r\n function VideoCameraEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n VideoCameraEditModal.prototype.activate = function (vcameraId) {\r\n const self = this;\r\n const isNew = !vcameraId;\r\n const url = isNew ? `api/videoCameras/add` : `api/videoCameras/${vcameraId}/edit`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/videoCameras');\r\n\r\n coordinates.reloadRoadCoordinates().then(function () {\r\n coordinates.updateCoordinates({ isPoint: true });\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка `Сохранить`\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n //Выбор кода автодороги\r\n .on('change', '#RoadId', () => {\r\n coordinates.reloadRoadCoordinates()\r\n .then(() => {\r\n coordinates.updateCoordinates({ isPoint: true });\r\n });\r\n })\r\n\r\n //Изменение километра МС на дороге\r\n .on('change', '#Location', () => {\r\n coordinates.updateCoordinates({ isPoint: true });\r\n })\r\n\r\n //Кнопка `Задать координату на карте`\r\n .on('click', '[js=edit-coordinate]', () => {\r\n\r\n const vcameraName = $('#Name', $modal).val();\r\n const roadId = parseInt($('#RoadId option:selected', $modal).val());\r\n const location = parseFloat($('#Location', $modal).val());\r\n const roadStartKm = coordinates.getRoadStartKm(roadId);\r\n\r\n ModalConductor.activate(VideoCameraMapModal, vcameraId, roadId, vcameraName, roadStartKm, location)\r\n .on('closed',\r\n modalResult => {\r\n if (modalResult.ok) {\r\n $('#Location', $modal).val(modalResult.location);\r\n $('#Lat', $modal).val(modalResult.coordinate.lat);\r\n $('#Lng', $modal).val(modalResult.coordinate.lng);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n\r\n return VideoCameraEditModal;\r\n}(BaseModal));\r\n","var VideoCameraMapModal = (function (base) {\r\n __extends(VideoCameraMapModal, base);\r\n\r\n function VideoCameraMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * \r\n * @param {} coordinates Массив координат или CSV\r\n * @param {} roadName Название дороги\r\n */\r\n VideoCameraMapModal.prototype.activate = function (vcameraId, roadId, vcameraName, roadStartKm, location) {\r\n const self = this;\r\n const url = vcameraId ? `api/videocameras/${vcameraId}/edit/map/${roadId}` : `api/videocameras/add/map/${roadId}`;\r\n\r\n this.loadContent(url, { vCameraName: vcameraName || 'камеры наблюдения' })\r\n .then($modal => {\r\n\r\n // Инициализация карты после открытия модального окна\r\n var data = {};\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#marker-map').height(containerHeight);\r\n\r\n setTimeout(function () {\r\n data = initMarkerMap(new L.FeatureGroup(), $('[js=back]', $modal), roadStartKm, location);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', () => {\r\n if (!data.point) {\r\n alert('Видеокамера не указана.');\r\n return;\r\n }\r\n this.close({\r\n ok: true,\r\n location: Math.round(data.location) / 1000,\r\n coordinate: data.point\r\n });\r\n });\r\n });\r\n };\r\n\r\n return VideoCameraMapModal;\r\n}(BaseModal));\r\n","var VideoCameraViewModal = (function (base) {\r\n __extends(VideoCameraViewModal, base);\r\n\r\n function VideoCameraViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n VideoCameraViewModal.prototype.activate = function (vcameraId, deleteFunc, showOnMapFunc) {\r\n const self = this;\r\n const url = `api/videocameras/${vcameraId}`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n // Редактирование\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(VideoCameraEditModal, vcameraId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n })\r\n\r\n // Удаление\r\n .on('click', '[js=delete]', function () {\r\n if (confirm(`Вы действительно хотите удалить эту видеокамеру?`)) {\r\n deleteFunc(vcameraId);\r\n }\r\n })\r\n\r\n // Показать на карте\r\n .on('click', '[js=show-on-map]', function () {\r\n showOnMapFunc(vcameraId);\r\n });\r\n });\r\n };\r\n\r\n return VideoCameraViewModal;\r\n}(BaseModal));\r\n","var WorkTypeEditModal = (function (base) {\r\n __extends(WorkTypeEditModal, base);\r\n\r\n\r\n function WorkTypeEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n WorkTypeEditModal.prototype.activate = function (workTypeId) {\r\n const self = this;\r\n const isNew = !workTypeId;\r\n const url = isNew ? `api/workTypes/add` : `api/workTypes/${workTypeId}/edit`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/workTypes');\r\n\r\n $('.date', $modal).datepicker({\r\n language: 'ru',\r\n format: 'dd-mm-yyyy',\r\n todayHighlight: true,\r\n toggleActive: true,\r\n autoclose: true\r\n });\r\n\r\n $modal\r\n\r\n //Кнопка `Сохранить`\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n })\r\n\r\n // Добавление расценки в список расценок вида работ\r\n .on('click', '#add-quotation', function () {\r\n self.apiClient.post(workTypeId ? `api/workTypes/${workTypeId}/edit/addQuotation` : `api/workTypes/add/addQuotation`, {\r\n DateCreate: $('#DateCreate', $modal).val(),\r\n Code: $('#Code', $modal).val(),\r\n Unit: $('#Unit', $modal).val(),\r\n QValue1: $('#QValue1', $modal).val(),\r\n QValue2: $('#QValue2', $modal).val(),\r\n DateCreateQuotation: $('#DateCreateQuotation', $modal).val(),\r\n Name: $('#Name.edit-modal-control', $modal).val(),\r\n })\r\n .then(result => {\r\n if (result && !result.error) {\r\n // Генерация новой таблицы\r\n var $table = $('[js=quotationsTable] tbody');\r\n const $inputChell = '' + $('[js=inputChell]').html() + '';\r\n var tableHtml = '';\r\n $.each(result, (idx, quotation) => {\r\n var dateFrom = (new Date(Number(quotation.DateFrom.replace('/Date(', '').replace(')/', ''))))\r\n .toLocaleDateString(\"ru-RU\");\r\n tableHtml += `${quotation.Value1}${quotation.Value2}${dateFrom}` +\r\n `` +\r\n ``;\r\n });\r\n\r\n $table.html(tableHtml + $inputChell);\r\n \r\n } else if (result.error) {\r\n // Вывод сообщений валидации\r\n $.each($('.field-validation-valid.text-danger', $modal),\r\n function (idx, obj) {\r\n if ($(obj).data('valmsgFor') === result.error.field) {\r\n $(obj).text(result.error.text);\r\n }\r\n $('#' + result.error.field)\r\n .on('change',\r\n function () {\r\n $(obj).text('');\r\n });\r\n });\r\n }\r\n\r\n $('.date', $modal).datepicker({\r\n language: 'ru',\r\n format: 'dd-mm-yyyy',\r\n todayHighlight: true,\r\n toggleActive: true,\r\n autoclose: true\r\n });\r\n });\r\n })\r\n\r\n // Добавление расценки из списка расценок вида работ\r\n .on('click', '.del-quotation', function () {\r\n var $delBtn = $(this);\r\n self.apiClient.post(workTypeId ? `api/workTypes/${workTypeId}/edit/deleteQuotation` : `api/workTypes/add/deleteQuotation`, {\r\n DateCreate: $('#DateCreate', $modal).val(),\r\n Code: $('#Code', $modal).val(),\r\n Unit: $('#Unit', $modal).val(),\r\n qId: $delBtn.data('id'),\r\n qVal: $delBtn.data('qv1'),\r\n qVal2: $delBtn.data('qv2'),\r\n qDate: $delBtn.data('qdate'),\r\n Name: $('#Name.edit-modal-control').val(),\r\n })\r\n .then(function (result) {\r\n if (result) {\r\n $delBtn.closest('tr').remove();\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n\r\n return WorkTypeEditModal;\r\n}(BaseModal));\r\n","var WorkTypeViewModal = (function (base) {\r\n __extends(WorkTypeViewModal, base);\r\n\r\n function WorkTypeViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n WorkTypeViewModal.prototype.activate = function (workTypeId, deleteFunc, showOnMapFunc) {\r\n const self = this;\r\n const url = `api/workTypes/${workTypeId}`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Кнопка `Удалить`\r\n .on('click', '[js=delete]', function () {\r\n if (confirm(`Вы действительно хотите удалить этот вид работ?`)) {\r\n deleteFunc(workTypeId);\r\n }\r\n })\r\n\r\n //Кнопка `Редактировать`\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(WorkTypeEditModal, workTypeId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n return WorkTypeViewModal;\r\n}(BaseModal));\r\n","var WorkAutoStatusModal = (function (base) {\r\n __extends(WorkAutoStatusModal, base);\r\n\r\n\r\n function WorkAutoStatusModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n WorkAutoStatusModal.prototype.activate = function (workId, statusName) {\r\n const self = this;\r\n const url = 'api/works/{0}/update/status'.format(workId);\r\n\r\n this.loadContent(url, { statusName: statusName || 'Назначена' })\r\n .then($modal => {\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, 'POST', 'api/works/{0}/update/status'.format(workId));\r\n\r\n $modal\r\n\r\n //Кнопка 'Ок' для автообновления статуса\r\n .on('click', '[js=update]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => {\r\n self.close({ ok: true, id: workId });\r\n WorkViewModal.prototype.constructor.reloadContent('api/works/{0}'.format(workId))\r\n })\r\n .catch(() => { $modal.busy(false); });\r\n })\r\n });\r\n };\r\n\r\n return WorkAutoStatusModal;\r\n}(BaseModal));\r\n","var WorkEditModal = (function (base) {\r\n __extends(WorkEditModal, base);\r\n\r\n\r\n function WorkEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n function _getRoadStartKm() {\r\n var roadStartKm = parseFloat($('#RoadId').find(':selected').data('start-km'));\r\n return roadStartKm || 0;\r\n }\r\n\r\n WorkEditModal.prototype.activate = function (workId, isCopy) {\r\n\r\n const self = this;\r\n const isNew = !workId;\r\n const url = isNew ? 'api/works/add' : 'api/works/{0}/edit'.format(workId);\r\n\r\n this.loadContent(isCopy ? 'api/works/{0}/copy'.format(workId) : url)\r\n .then($modal => {\r\n\r\n $('#transportLocationReport').removeAttr('js');\r\n $('#transportLocationReport').find('[js=\"single\"]').removeAttr('name');\r\n $('#transportLocationReport').find('[js=\"single\"]').removeAttr('id');\r\n\r\n workId = isCopy ? '' : workId;\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew || isCopy ? 'PUT' : 'POST', 'api/works');\r\n\r\n $('#DateDue', $modal).closest('.date').datepicker({\r\n language: 'ru',\r\n format: 'yyyy-mm-dd',\r\n todayHighlight: true,\r\n toggleActive: true,\r\n autoclose: true\r\n });\r\n\r\n datetimepickerRangeInit({ $inputFrom: $('#StartTime', $modal), $inputTo: $('#StopTime', $modal), format: 'YYYY-MM-DD HH:mm' });\r\n datetimepickerRangeInit({ $inputFrom: $('#From', $modal), $inputTo: $('#To', $modal), withSeconds: true });\r\n\r\n coordinates.reloadRoadCoordinates().then(function () {\r\n coordinates.updateCoordinates({ isPoint: false, roadStartKm: _getRoadStartKm() });\r\n });\r\n\r\n if (Number($('#SectionServiceId').val()) && Number($('#SectionServiceId').val()) > 0) {\r\n $('#RoadId').attr('disabled', 'disabled');\r\n $('#RoadId').trigger('chosen:updated');\r\n $('#RoadName').attr('disabled', 'disabled');\r\n $('#RoadName').trigger('chosen:updated');\r\n $('#StartKm').attr('readonly', 'true');\r\n $('#StopKm').attr('readonly', 'true');\r\n $('[js=edit-coordinates]').attr('disabled', 'disabled');\r\n }\r\n\r\n if (Number($('#RoadId').val()) && Number($('#RoadId').val()) > 0) {\r\n $('#SectionServiceId option').css('display', 'none');\r\n $('[data-roadid=\"{0}\"], [value=\"0\"]'.format(Number($('#RoadId').val())), '#SectionServiceId').css('display', 'block');\r\n }\r\n\r\n $modal\r\n\r\n //Кнопка 'Сохранить'\r\n .on('click', '[js=save]', function () {\r\n $('#RangeError').removeClass('input-validation-error');\r\n $('#RangeError').removeAttr('aria-describedby');\r\n $modal.busy();\r\n $form.send()\r\n .then(id => { self.close({ ok: true, data: id }); })\r\n .catch(() => {\r\n $modal.busy(false);\r\n if ($('#RangeError').hasClass('input-validation-error')) {\r\n $('#StartKm').val('');\r\n $('#StopKm').val('');\r\n }\r\n });\r\n \r\n })\r\n\r\n .on('change', '#VehicleIds', () => {\r\n $('[data-valmsg-for=VehicleIds]').text(\"\"); // Стираем сообщение валидации\r\n })\r\n\r\n //Выбор кода автодороги\r\n .on('change', '#RoadId', (e) => {\r\n onRoadChanged($(e.currentTarget), $('#RoadName'));\r\n })\r\n\r\n //Выбор наименования автодороги\r\n .on('change', '#RoadName', (e) => {\r\n onRoadChanged($(e.currentTarget), $('#RoadId'));\r\n })\r\n\r\n //Выбор участка обслуживания\r\n .on('change', '#SectionServiceId', function () {\r\n $('[data-valmsg-for=RoadId]').text(\"\"); // Стираем сообщение валидации\r\n $('[data-valmsg-for=StartKm]').text(\"\"); // Стираем сообщение валидации\r\n $('[data-valmsg-for=StopKm]').text(\"\"); // Стираем сообщение валидации\r\n var $selected = $('option:selected', '#SectionServiceId');\r\n\r\n if (!$('#SectionServiceId').val() || $('#SectionServiceId').val() == 0) {\r\n $('#RoadId').removeAttr('disabled');\r\n $('#RoadId').trigger('chosen:updated');\r\n $('#RoadName').removeAttr('disabled');\r\n $('#RoadName').trigger('chosen:updated');\r\n\r\n $('#StartKm').removeClass('input--disabled').removeAttr('readonly');\r\n $('#StopKm').removeClass('input--disabled').removeAttr('readonly');\r\n $('[js=edit-coordinates]').removeAttr('disabled');\r\n $('#SectionServiceId option').css('display', 'none');\r\n $('[data-roadid=\"{0}\"], [value=\"0\"]'.format($('#RoadId').val()), '#SectionServiceId').css('display', 'block');\r\n } else {\r\n $('#RoadId').val($selected.data('roadid'));\r\n $('#RoadId').attr('disabled', 'disabled');\r\n $('#RoadId').trigger('chosen:updated');\r\n $('#RoadName').val($selected.data('roadid'));\r\n $('#RoadName').attr('disabled', 'disabled');\r\n $('#RoadName').trigger('chosen:updated');\r\n\r\n $('#StartKm').val($selected.data('startkm'));\r\n $('#StopKm').val($selected.data('stopkm'));\r\n $('#StartKm').attr('readonly', 'true');\r\n $('#StopKm').attr('readonly', 'true');\r\n $('[js=edit-coordinates]').attr('disabled', 'disabled');\r\n\r\n coordinates.reloadRoadCoordinates($selected.data('roadid'))\r\n .then(() => {\r\n coordinates.updateCoordinates({ isPoint: false, roadStartKm: _getRoadStartKm() });\r\n });\r\n }\r\n })\r\n\r\n ////Выбор участка обслуживания\r\n //.on('change', '#SectionServiceId', function () {\r\n // updateSectionServiceData();\r\n // })\r\n\r\n //Изменение километра работы на дороге\r\n .on('change', '#StartKm', () => {\r\n $('[data-valmsg-for=StartKm]').text(\"\"); // Стираем сообщение валидации\r\n coordinates.updateCoordinates({ isPoint: false, roadStartKm: _getRoadStartKm() });\r\n })\r\n\r\n //Изменение километра работы на дороге\r\n .on('change', '#StopKm', () => {\r\n $('[data-valmsg-for=StopKm]').text(\"\"); // Стираем сообщение валидации\r\n coordinates.updateCoordinates({ isPoint: false, roadStartKm: _getRoadStartKm() });\r\n })\r\n\r\n //Кнопка 'Задать координату на карте'\r\n .on('click', '[js=edit-coordinates]', () => {\r\n\r\n const roadId = parseInt($('#RoadId option:selected', $modal).val());\r\n const workName = $('#Name', $modal).val();\r\n const startKm = parseFloat($('#StartKm', $modal).val());\r\n const stopKm = parseFloat($('#StopKm', $modal).val());\r\n const roadStartKm = _getRoadStartKm();\r\n\r\n ModalConductor.activate(WorkMapModal, workId, roadId, workName, roadStartKm, startKm, stopKm)\r\n .on('closed',\r\n modalResult => {\r\n if (modalResult.ok) {\r\n $('#StartKm', $modal).val(modalResult.startKm);\r\n $('#StopKm', $modal).val(modalResult.stopKm);\r\n }\r\n });\r\n })\r\n\r\n // Смена кода вида работ\r\n .on('change', '#WorkTypeCode', function () {\r\n var $control = $(\"#WorkTypeCode option:selected\", $modal);\r\n $('#WtwId', $modal).val($control.data('wtwid'));\r\n $('#WorkTypeId', $modal).val($control.data('id'));\r\n $('#WorkTypeName', $modal).val($control.data('name'));\r\n $('#WorkTypeName', $modal).trigger(\"chosen:updated\");\r\n $('#WorkTypeUnit', $modal).val($control.data('unit'));\r\n\r\n var qfirst = typeof $control.data('qfirst') === \"string\" ? $control.data('qfirst').replace(',', '.') : $control.data('qfirst');\r\n var qsecond = typeof $control.data('qsecond') === \"string\" ? $control.data('qsecond').replace(',', '.') : $control.data('qsecond');\r\n if ($('#RegionalCoefficientId', $modal).val() == 1) {\r\n $('#WorkTypeQuotation', $modal).val(qfirst);\r\n $('#WorkTypeQuotation2', $modal).val(qsecond);\r\n } else {\r\n $('#WorkTypeQuotation', $modal).val(qsecond);\r\n $('#WorkTypeQuotation2', $modal).val(qfirst);\r\n }\r\n })\r\n\r\n // Смена вида работ\r\n .on('change', '#WorkTypeName', function () {\r\n var $control = $(\"#WorkTypeName option:selected\", $modal);\r\n $('#WtwId', $modal).val($control.data('wtwid'));\r\n $('#WorkTypeId', $modal).val($control.data('id'));\r\n $('#WorkTypeCode', $modal).val($control.data('code'));\r\n $('#WorkTypeCode', $modal).trigger(\"chosen:updated\");\r\n $('#WorkTypeUnit', $modal).val($control.data('unit'));\r\n\r\n var qfirst = typeof $control.data('qfirst') === \"string\" ? $control.data('qfirst').replace(',', '.') : $control.data('qfirst');\r\n var qsecond = typeof $control.data('qsecond') === \"string\" ? $control.data('qsecond').replace(',', '.') : $control.data('qsecond');\r\n if ($('#RegionalCoefficientId', $modal).val() == 1) {\r\n $('#WorkTypeQuotation', $modal).val(qfirst);\r\n $('#WorkTypeQuotation2', $modal).val(qsecond);\r\n } else {\r\n $('#WorkTypeQuotation', $modal).val(qsecond);\r\n $('#WorkTypeQuotation2', $modal).val(qfirst);\r\n }\r\n })\r\n\r\n // Смена кода материала\r\n .on('change', '#MaterialCode', function () {\r\n var $control = $('#MaterialCode option:selected', $modal);\r\n $('#MaterialId', $modal).val($control.data('id'));\r\n $('#MaterialName', $modal).val($control.data('name'));\r\n $('#MaterialName', $modal).trigger(\"chosen:updated\");\r\n $('#MaterialUnit', $modal).val($control.data('unit'));\r\n })\r\n\r\n // Смена материала\r\n .on('change', '#MaterialName', function () {\r\n var $control = $('#MaterialName option:selected', $modal);\r\n $('#MaterialId', $modal).val($control.data('id'));\r\n $('#MaterialCode', $modal).val($control.data('code'));\r\n $('#MaterialCode', $modal).trigger(\"chosen:updated\");\r\n $('#MaterialUnit', $modal).val($control.data('unit'));\r\n })\r\n\r\n // Изменение районного коэф-та\r\n .on('change', '#RegionalCoefficientId', function () {\r\n if ($(this).val() == 1) {\r\n var q1 = $('#WorkTypeQuotation', $modal).val();\r\n var q2 = $('#WorkTypeQuotation2', $modal).val();\r\n $('#WorkTypeQuotation', $modal).val(q2);\r\n $('#WorkTypeQuotation2', $modal).val(q1);\r\n\r\n $.each($('table.table.work-type-table tbody tr', $modal),\r\n function (idx, obj) {\r\n var td1 = $(obj).children('td.quotation1', $modal).text();\r\n var td2 = $(obj).children('td.quotation2', $modal).text();\r\n\r\n $(obj).children('td.quotation1', $modal).html(td2);\r\n $(obj).children('td.quotation2', $modal).html(td1);\r\n });\r\n } else {\r\n var q1 = $('#WorkTypeQuotation2', $modal).val();\r\n var q2 = $('#WorkTypeQuotation', $modal).val();\r\n $('#WorkTypeQuotation2', $modal).val(q2);\r\n $('#WorkTypeQuotation', $modal).val(q1);\r\n\r\n $.each($('table.table.work-type-table tbody tr', $modal),\r\n function (idx, obj) {\r\n var td1 = $(obj).children('td.quotation2', $modal).text();\r\n var td2 = $(obj).children('td.quotation1', $modal).text();\r\n\r\n $(obj).children('td.quotation2', $modal).html(td2);\r\n $(obj).children('td.quotation1', $modal).html(td1);\r\n });\r\n }\r\n })\r\n\r\n // Добавление нового вида работ\r\n .on('click', '#addWorkType', function () {\r\n if ($('#addWorkType', $modal).attr('disabled') === undefined) {\r\n $('#addWorkType', $modal).attr('disabled', 'disabled');\r\n $('#WorkTypeCode', $modal).parent().parent().children('span').text('');\r\n\r\n var workTypeId = parseInt($('#WtwId', $modal).val());\r\n\r\n const url = isNew || isCopy ? 'api/works/add/workTypes' : 'api/works/{0}/edit/workTypes'.format(workId);\r\n self.apiClient.put(url, {\r\n WtwId: $('#WtwId', $modal).val(),\r\n VolumeOfWorks: $('#VolumeOfWorks', $modal).val(),\r\n WorkTypeId: $('#WorkTypeId', $modal).val(),\r\n WorkTypeCode: $('#WorkTypeCode', $modal).val(),\r\n WorkTypeName: $('#WorkTypeName', $modal).val(),\r\n WorkTypeUnit: $('#WorkTypeUnit', $modal).val(),\r\n WorkTypeQuotation: $('#WorkTypeQuotation', $modal).val(),\r\n WorkTypeQuotation2: $('#WorkTypeQuotation2', $modal).val()\r\n })\r\n .then(function (result) {\r\n $('#addWorkType', $modal).removeAttr('disabled');\r\n if (result.workTypes) {\r\n var needWorkName = $('#Name', $modal).val().replace(/\\s/g, '').length < 1;\r\n var table = '';\r\n result.workTypes.forEach(function(obj, index) {\r\n if (needWorkName && obj.WorkTypeId === workTypeId) {\r\n $('#Name', $modal).val(obj.Name);\r\n }\r\n table += ' ' + obj.Code +\r\n ' ' + obj.Name +\r\n ' ' + obj.Unit +\r\n ' ' + obj.Quotation1 +\r\n ' ' + obj.Quotation2 +\r\n '
' + obj.VolumeOfWorks +\r\n '
';\r\n });\r\n\r\n if (result.materials) {\r\n result.materials.forEach(function (obj, index) {\r\n table += ' ' + obj.Code +\r\n ' ' + obj.Name +\r\n ' ' + obj.Unit +\r\n ' ' + obj.Cost +\r\n ' ' + obj.Cost +\r\n '
' + obj.VolumeOfMaterials +\r\n '
';\r\n });\r\n }\r\n\r\n var selectOld = $('#WorkTypeCode', $modal).parent().html();\r\n if (selectOld) {\r\n var selectNew =\r\n '';\r\n\r\n var selectOldName = $('#WorkTypeName', $modal).parent().html();\r\n var selectNewName =\r\n '';\r\n table += '' +\r\n $('table.work-type-table tbody tr.work-type-table-tr', $modal).html()\r\n .replace(selectOld, selectNew).replace(selectOldName, selectNewName) +\r\n '';\r\n }\r\n var selectOldMaterialName = $('#MaterialName', $modal).parent().html();\r\n if (selectOldMaterialName) {\r\n var selectNewMaterialName =\r\n '';\r\n var selectOldMaterial = $('#MaterialCode', $modal).parent().html();\r\n var selectNewMaterial =\r\n '';\r\n table += '' +\r\n $('table.work-type-table tbody tr.material-table-tr', $modal).html()\r\n .replace(selectOldMaterial, selectNewMaterial)\r\n .replace(selectOldMaterialName, selectNewMaterialName) +\r\n '';\r\n }\r\n $(\"table.work-type-table tbody\", $modal).html(table);\r\n } else {\r\n if (result.error) {\r\n $.each($('.field-validation-valid.text-danger'),\r\n function (idx, obj) {\r\n if ($(obj).data('valmsgFor') === result.error.field) {\r\n $(obj).text(result.error.text);\r\n }\r\n $('#' + result.error.field)\r\n .on('change',\r\n function () {\r\n $(obj).text('');\r\n });\r\n });\r\n }\r\n }\r\n ChosenSelect.Init();\r\n })\r\n .catch(function () {\r\n $('#addWorkType', $modal).removeAttr('disabled');\r\n });\r\n }\r\n })\r\n\r\n // Удаление вида работ\r\n .on('click', '.del-worktype', function () {\r\n var $control = $(this);\r\n const url = isNew || isCopy ? 'api/works/add/workTypes' : 'api/works/{0}/edit/workTypes'.format(workId);\r\n\r\n self.apiClient.delete(url, {\r\n WtwId: $control.data('wtwid'),\r\n WorkTypeId: $control.data('id'),\r\n VolumeOfWorks: $control.data('volume')\r\n })\r\n .then(result => {\r\n if (result) {\r\n $control.closest('tr').remove();\r\n }\r\n });\r\n })\r\n\r\n // Добавление нового материала\r\n .on('click', '#addMaterial', function () {\r\n var $control = $(this);\r\n if ($control.attr('disabled') === undefined) {\r\n $control.attr('disabled', 'disabled');\r\n $('#MaterialCode', $modal).parent().parent().children('span').text('');\r\n\r\n const url = isNew || isCopy ? 'api/works/add/materials' : 'api/works/{0}/edit/materials'.format(workId);\r\n self.apiClient.put(url, {\r\n VolumeOfMaterials: $('#VolumeOfMaterials', $modal).val(),\r\n MaterialId: $('#MaterialId', $modal).val(),\r\n MaterialCode: $('#MaterialCode', $modal).val(),\r\n MaterialName: $('#MaterialName', $modal).val(),\r\n MaterialUnit: $('#MaterialUnit', $modal).val(),\r\n MaterialQuotation: $('#MaterialQuotation', $modal).val(),\r\n })\r\n .then(function (result) {\r\n $control.removeAttr('disabled');\r\n if (result.materials) {\r\n var table = '';\r\n\r\n if (result.workTypes) {\r\n result.workTypes.forEach(function (obj, index) {\r\n table += ' ' + obj.Code +\r\n ' ' + obj.Name +\r\n ' ' + obj.Unit +\r\n ' ' + obj.Quotation1 +\r\n ' ' + obj.Quotation2 +\r\n '
' + obj.VolumeOfWorks +\r\n '
';\r\n });\r\n }\r\n\r\n result.materials.forEach(function (obj, index) {\r\n table += ' ' + obj.Code +\r\n ' ' + obj.Name +\r\n ' ' + obj.Unit +\r\n ' ' + obj.Cost +\r\n ' ' + obj.Cost +\r\n '
' + obj.VolumeOfMaterials +\r\n '
';\r\n });\r\n\r\n if ($('tr.work-type-table-tr', $modal).html()) {\r\n var selectOldWork = $('#WorkTypeCode', $modal).parent().html();\r\n var selectNewWork = '';\r\n var selectOldWorkName = $('#WorkTypeName', $modal).parent().html();\r\n var selectNewWorkName = '';\r\n\r\n table += '' + $('table.work-type-table tbody tr.work-type-table-tr', $modal).html().replace(selectOldWork, selectNewWork).replace(selectOldWorkName, selectNewWorkName) + '';\r\n }\r\n\r\n if ($('tr.material-table-tr', $modal).html()) {\r\n var selectOldMaterialName = $('#MaterialName', $modal).parent().html();\r\n var selectNewMaterialName = '';\r\n var selectOldMaterial = $('#MaterialCode', $modal).parent().html();\r\n var selectNewMaterial =\r\n '';\r\n table += '' +\r\n $('table.work-type-table tbody tr.material-table-tr', $modal).html().replace(selectOldMaterial, selectNewMaterial).replace(selectOldMaterialName, selectNewMaterialName) + '';\r\n }\r\n\r\n $(\"table.work-type-table tbody\", $modal).html(table);\r\n } else {\r\n if (result.error) {\r\n $.each($('.field-validation-valid.text-danger'),\r\n function (idx, obj) {\r\n if ($(obj).data('valmsgFor') === result.error.field) {\r\n $(obj).text(result.error.text);\r\n }\r\n $('#' + result.error.field)\r\n .on('change',\r\n function () {\r\n $(obj).text('');\r\n });\r\n });\r\n }\r\n }\r\n ChosenSelect.Init();\r\n })\r\n .catch(function () {\r\n $('#addMaterial', $modal).removeAttr('disabled');\r\n });\r\n }\r\n })\r\n\r\n // Удаление материала\r\n .on('click', '.del-material', function () {\r\n var $control = $(this);\r\n const url = isNew || isCopy ? 'api/works/add/materials' : 'api/works/{0}/edit/materials'.format(workId);\r\n\r\n self.apiClient.delete(url, {\r\n MaterialId: $control.data('id'),\r\n VolumeOfMaterials: $control.data('volume'),\r\n MaterialQuotation: $control.data('cost')\r\n })\r\n .then(result => {\r\n if (result) {\r\n $control.closest('tr').remove();\r\n }\r\n });\r\n })\r\n \r\n // \r\n .on('click', '[js=fill-work]', (e) => {\r\n var vehicles = VehicleOnObjectsReport.GetSelectedVehicles();\r\n fillWork(vehicles);\r\n });\r\n });\r\n };\r\n\r\n function updateSectionServiceData() {\r\n var $selected = $('#SectionServiceId option').filter(':selected');\r\n\r\n if (!$('#SectionServiceId').val() || $('#SectionServiceId').val() == 0) {\r\n $('#StartKm').val('');\r\n $('#StopKm').val('');\r\n $('#Road').val('');\r\n } else {\r\n $('#StartKm').val($selected.data('startkm'));\r\n $('#StopKm').val($selected.data('stopkm'));\r\n $('#Road').val($selected.data('roadCode'));\r\n }\r\n }\r\n\r\n function findSectionService(roadId, startKm, stopKm) {\r\n var ssOnRoad = $('#SectionServiceId option[data-roadid=' + roadId + ']');\r\n if (ssOnRoad.length) {\r\n var intersected = ssOnRoad.filter(function(s) {\r\n var start = $(this).data('startkm');\r\n var stop = $(this).data('stopkm');\r\n return start < stopKm && stop > startKm;\r\n });\r\n if (intersected.length)\r\n return $(intersected[0]).val();\r\n return $(ssOnRoad[0]).val();\r\n }\r\n return null;\r\n }\r\n\r\n function fillWork(vehicles) {\r\n if (vehicles.length > 0) {\r\n var dateFormat = \"DD-MM-YYYY HH:mm:ss\";\r\n var contractorId = vehicles[0].contractorId;\r\n var vehicleId = vehicles[0].vehicleId;\r\n var roadId = vehicles[0].roadId;\r\n var startTime = moment(vehicles[0].startTime, dateFormat).toDate();\r\n var stopTime = moment(vehicles[0].stopTime, dateFormat).toDate();\r\n var startKm = vehicles[0].startKm;\r\n var stopKm = vehicles[0].stopKm;\r\n for (var i = 1; i < vehicles.length; i++) {\r\n var startVehicle = moment(vehicles[i].startTime, dateFormat).toDate();\r\n var stopVehicle = moment(vehicles[i].stopTime, dateFormat).toDate();\r\n if (startVehicle < startTime)\r\n startTime = startVehicle;\r\n if (stopVehicle > stopTime)\r\n stopTime = stopVehicle;\r\n if (startKm > vehicles[i].startKm)\r\n startKm = vehicles[i].startKm;\r\n if (stopKm < vehicles[i].stopKm)\r\n stopKm = vehicles[i].stopKm;\r\n }\r\n // Округление до минут в большую сторону\r\n stopTime.setSeconds(stopTime.getSeconds() + 59);\r\n stopTime.setSeconds(0);\r\n\r\n var $contractor = $('#ContractorId');\r\n if (canFillField($contractor)) {\r\n $contractor.val(contractorId);\r\n }\r\n var $road = $('#RoadId');\r\n if (canFillField($road)) {\r\n $('#RoadId').val(roadId);\r\n $('#RoadName').val(roadId);\r\n $('#RoadId').trigger('chosen:updated');\r\n $('#RoadName').trigger('chosen:updated');\r\n }\r\n var $startTime = $('#StartTime');\r\n var $stopTime = $('#StopTime');\r\n if (canFillField($startTime) && canFillField($stopTime)) {\r\n $startTime.closest('.date').data('DateTimePicker').clear();\r\n $stopTime.closest('.date').data('DateTimePicker').clear();\r\n $startTime.closest('.date').data('DateTimePicker').date(startTime);\r\n $stopTime.closest('.date').data('DateTimePicker').date(stopTime);\r\n }\r\n var $selectedVehicles = $('#VehicleId');\r\n if (canFillField($selectedVehicles)) {\r\n $selectedVehicles.val(vehicleId);\r\n $selectedVehicles.trigger('chosen:updated');\r\n }\r\n var $startKm = $('#StartKm');\r\n if (canFillField($startKm)) {\r\n $startKm.val(startKm);\r\n }\r\n var $stopKm = $('#StopKm');\r\n if (canFillField($stopKm)) {\r\n $stopKm.val(stopKm);\r\n }\r\n //var $sectionService = $('#SectionServiceId');\r\n //if (canFillField($sectionService)) {\r\n // var sectionService = findSectionService(roadId, startKm, stopKm);\r\n // {\r\n // if (sectionService) {\r\n // $('#SectionServiceId').val(sectionService);\r\n // updateSectionServiceData();\r\n // }\r\n // }\r\n //}\r\n }\r\n }\r\n\r\n function canFillField($input) {\r\n return $input.length !== 0 && !$input.is(':disabled') && !$input.is('[readonly]'); \r\n }\r\n\r\n function _toTimeParsing(date) {\r\n var hours = date.getHours();\r\n var minutes = date.getMinutes();\r\n var parseHours = hours > 9 ? hours : '0' + hours;\r\n var parseMinutes = minutes > 9 ? minutes : '0' + minutes;\r\n return parseHours + ':' + parseMinutes;\r\n }\r\n\r\n function onRoadChanged($changed, $toChange) {\r\n var changedId = $changed.val();\r\n $toChange.val(changedId);\r\n $toChange.trigger('chosen:updated');\r\n\r\n $('[data-valmsg-for=RoadId]').text(\"\"); // Стираем сообщение валидации\r\n $('[data-valmsg-for=StartKm]').text(\"\"); // Стираем сообщение валидации\r\n $('[data-valmsg-for=StopKm]').text(\"\"); // Стираем сообщение валидации\r\n \r\n coordinates.reloadRoadCoordinates()\r\n .then(() => {\r\n coordinates.updateCoordinates({ isPoint: false, roadStartKm: _getRoadStartKm() });\r\n });\r\n $('#SectionServiceId option').css('display', 'none');\r\n $('[data-roadid=\"{0}\"], [value=\"0\"]'.format($changed.val()), '#SectionServiceId').css('display', 'block');\r\n if ($changed.val() == 0) {\r\n $('#SectionServiceId option').css('display', 'block');\r\n }\r\n\r\n }\r\n\r\n\r\n return WorkEditModal;\r\n}(BaseModal));\r\n","var WorkErrorAcceptanceModal = (function (base) {\r\n __extends(WorkErrorAcceptanceModal, base);\r\n\r\n function WorkErrorAcceptanceModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n WorkErrorAcceptanceModal.prototype.activate = function (htmlContent, acceptanceHead, description, workIds) {\r\n const self = this;\r\n const $modal = ModalHelper.create().show().busy();\r\n self.$modal = $modal;\r\n\r\n htmlContent = htmlContent\r\n .replace('\\${acceptanceHead}', acceptanceHead)\r\n .replace('\\${workIds}', workIds)\r\n .replace('\\${description}', description);\r\n $($modal).find('.modal-dialog').addClass('modal-login');\r\n $modal.content(htmlContent).busy(false);\r\n\r\n $modal\r\n .on('click', '[js=close],.close', () => {\r\n self.close({ cancel: true });\r\n })\r\n .on('keydown',\r\n e => {\r\n if (e.keyCode === 27) {\r\n self.close({ cancel: true });\r\n e.stopPropagation();\r\n }\r\n });\r\n };\r\n\r\n return WorkErrorAcceptanceModal;\r\n}(BaseModal));\r\n","var WorkMapModal = (function (base) {\r\n __extends(WorkMapModal, base);\r\n\r\n function WorkMapModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n }\r\n\r\n /**\r\n * @param {} coordinates Массив координат или CSV\r\n * @param {} roadName Название дороги\r\n */\r\n WorkMapModal.prototype.activate = function (workId, roadId, workName, roadStartKm, startKm, stopKm) {\r\n const self = this;\r\n const url = workId ? 'api/works/{0}/edit/map/'.format(workId) + roadId : 'api/works/add/map/' + roadId;\r\n\r\n this.loadContent(url, { workName: workName || 'работы' })\r\n .then($modal => {\r\n\r\n // Инициализация карты после открытия модального окна\r\n var mapObjects = {};\r\n var containerHeight = $(window).height() * 0.65;\r\n $('#marker-map').height(containerHeight);\r\n\r\n setTimeout(function () {\r\n mapObjects = initPolylineMap(new L.FeatureGroup(), $('[js=back]', $modal), roadStartKm, startKm, stopKm);\r\n }, 200);\r\n\r\n $modal\r\n .on('click', '[js=save]', () => {\r\n if (mapObjects.points.length < 2) {\r\n alert('Границы работы не указаны.');\r\n return;\r\n }\r\n this.close({\r\n ok: true,\r\n startKm: Math.round(mapObjects.startKm) / 1000,\r\n stopKm: Math.round(mapObjects.endKm) / 1000\r\n });\r\n });\r\n });\r\n };\r\n\r\n return WorkMapModal;\r\n}(BaseModal));\r\n","var WorkViewModal = (function (base) {\r\n __extends(WorkViewModal, base);\r\n\r\n function WorkViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n function getUrl(workId) {\r\n return 'api/works/{0}'.format(workId);\r\n }\r\n\r\n WorkViewModal.prototype.activate = function (workId, deleteFunc, refreshFunc) {\r\n const self = this;\r\n\r\n this.loadContent(getUrl(workId))\r\n .then($modal => {\r\n\r\n $('li.select2-selection__choice', $modal).each(function (idx, li) {\r\n const option = Select2Helper().findOption($(this));\r\n $(this).attr('class', 'select2-selection__choice ' + option.attr('class'));\r\n });\r\n\r\n $modal\r\n\r\n // Редактирование\r\n .on('click', '[js=edit]', function () {\r\n $('#transportLocationReportEdit').html('');\r\n\r\n ModalConductor.activate(WorkEditModal, workId)\r\n .on('closed', (modalResult) => {\r\n\r\n function afterSave(modalResult, workId) {\r\n if (modalResult.data.canAutoUpdate) {\r\n var status = modalResult.data.status;\r\n workId = modalResult.data.id ? modalResult.data.id : workId;\r\n ModalConductor.activate(WorkAutoStatusModal, workId, status).on('closed',\r\n (modalResult) => {\r\n self.reloadContent(getUrl(workId));\r\n });\r\n } else {\r\n self.reloadContent(getUrl(workId));\r\n }\r\n }\r\n self.reloadContent(getUrl(workId));\r\n\r\n if (modalResult.ok) {\r\n if (refreshFunc) {\r\n refreshFunc();\r\n }\r\n if (modalResult.data.boundaryChanged) {\r\n ModalConductor.activate(MessageModal, $('#message-tmpl').text(), 'Внимание!', 'Границы Работы сопоставлены с Участком обслуживания')\r\n .on('closed',\r\n (mr) => {\r\n afterSave(modalResult, workId);\r\n });\r\n } else {\r\n afterSave(modalResult, workId);\r\n }\r\n }\r\n\r\n $('li.select2-selection__choice', $modal).each(function (idx, li) {\r\n const option = Select2Helper().findOption($(this));\r\n $(this).attr('class', 'select2-selection__choice ' + option.attr('class'));\r\n });\r\n });\r\n })\r\n\r\n // Копирование\r\n .on('click', '[js=copy]', function () {\r\n $('#transportLocationReport').html('');\r\n $('#transportLocationReportEdit').html('');\r\n\r\n ModalConductor.activate(WorkEditModal, workId, true)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n refreshFunc();\r\n workId = modalResult.data.id ? modalResult.data.id : workId;\r\n if (modalResult.data.canAutoUpdate) {\r\n var status = modalResult.data.status;\r\n ModalConductor.activate(WorkAutoStatusModal, workId, status).on('closed', (modalResult) => {\r\n self.reloadContent(getUrl(workId));\r\n });\r\n } else {\r\n self.reloadContent(getUrl(workId));\r\n }\r\n }\r\n\r\n $('li.select2-selection__choice', $modal).each(function (idx, li) {\r\n const option = Select2Helper().findOption($(this));\r\n $(this).attr('class', 'select2-selection__choice ' + option.attr('class'));\r\n });\r\n });\r\n })\r\n\r\n // Удаление\r\n .on('click', '[js=delete]', function (e) {\r\n if ($(this).attr('disabled')) {\r\n e.preventDefault();\r\n } else {\r\n if (confirm('Вы действительно хотите удалить эту работу?')) {\r\n deleteFunc(workId);\r\n }\r\n }\r\n })\r\n\r\n // Добавление комментария\r\n .on('click', '.note-add', function () {\r\n const noteText = $('#Note', $modal).val();\r\n _addNote.call(self, workId, noteText)\r\n .then(() => {\r\n self.reloadContent(getUrl(workId));\r\n });\r\n })\r\n\r\n // Удаление комментария\r\n .on('click', '.note-delete', function () {\r\n const noteId = $(this).data('id');\r\n if (confirm('Вы действительно хотите удалить этот комментарий?')) {\r\n _deleteNote.call(self, workId, noteId)\r\n .then(() => {\r\n self.reloadContent(getUrl(workId));\r\n });\r\n }\r\n })\r\n\r\n // Кнопка рассчета трека\r\n .on('click', '#calc-track', function () {\r\n var $control = $(this);\r\n $control.attr('disabled', 'disabled');\r\n $control.val('Подождите...').text('Подождите').removeClass('btn-primary').addClass('btn-danger');\r\n $('#modal-spinner').removeAttr('style');\r\n $('#date-conteiner').addClass('busy');\r\n\r\n self.apiClient.post('api/works/track', { ids: workId })\r\n .then(trackReportIds=> {\r\n if (trackReportIds) {\r\n window.globalReportsId.CoverageReport = trackReportIds;\r\n window.globalReportsId.ObjId = workId;\r\n localStorage.setItem('globalReportsId', JSON.stringify(window.globalReportsId));\r\n }\r\n })\r\n .catch(() => {\r\n $control.removeAttr('disabled');\r\n $control.val('Ошибка!').text('Рассчитать').addClass('btn-primary').removeClass('btn-danger');\r\n $('#date-conteiner').removeClass('busy');\r\n });\r\n });\r\n });\r\n };\r\n\r\n function _deleteNote(workId, noteId) {\r\n return this.apiClient.delete('api/works/{0}/notes'.format(workId), { noteId: noteId });\r\n }\r\n\r\n function _addNote(workId, text) {\r\n return this.apiClient.put('api/works/{0}/notes'.format(workId), { text: text });\r\n };\r\n\r\n return WorkViewModal;\r\n}(BaseModal));\r\n","var DotObjectTypeEditModal = (function (base) {\r\n __extends(DotObjectTypeEditModal, base);\r\n\r\n\r\n function DotObjectTypeEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\nDotObjectTypeEditModal.prototype.activate = function (dotObjectId) {\r\n const self = this;\r\n const isNew = !dotObjectId;\r\n const url = isNew ? 'api/dotObjectTypes/add' : 'api/dotObjectTypes/{0}/edit'.format(dotObjectId);\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/dotObjectTypes');\r\n $modal\r\n\r\n //Кнопка 'Сохранить'\r\n .on('click', '[js=save]', function () {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n });\r\n });\r\n };\r\n\r\n return DotObjectTypeEditModal;\r\n}(BaseModal));\r\n","var DotObjectTypeViewModal = (function (base) {\r\n __extends(DotObjectTypeViewModal, base);\r\n\r\n function DotObjectTypeViewModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n DotObjectTypeViewModal.prototype.activate = function (typeId, deleteFunc) {\r\n const self = this;\r\n const url = 'api/dotObjectTypes/' + typeId;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n // Редактирование\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(DotObjectTypeEditModal, typeId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n }\r\n });\r\n })\r\n\r\n // Удаление\r\n .on('click', '[js=delete]', function () {\r\n if (confirm('Вы действительно хотите удалить этот Вид точечного объекта?')) {\r\n deleteFunc(typeId);\r\n }\r\n });\r\n });\r\n };\r\n\r\n return DotObjectTypeViewModal;\r\n}(BaseModal));\r\n","var UserEditModal = (function (base) {\r\n __extends(UserEditModal, base);\r\n\r\n\r\n function UserEditModal(apiClient) {\r\n const self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n\r\n UserEditModal.prototype.activate = function (userId) {\r\n const self = this;\r\n const isNew = !userId;\r\n const url = isNew ? `api/users/add` : `api/users/${userId}/edit`;\r\n\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n var $form = $('form', $modal);\r\n FormHelper.init($form, isNew ? 'PUT' : 'POST', 'api/users');\r\n\r\n $('#Phone', $modal).mask('+7 (999) 999-99-99');\r\n $('#CompanyPhone', $modal).mask('+7 (9999) 99-99-99');\r\n\r\n $modal\r\n\r\n //Кнопка `Сохранить`\r\n .on('click', '[js=save]', function() {\r\n $modal.busy();\r\n $form.send()\r\n .then(() => self.close({ ok: true }))\r\n .catch(() => $modal.busy(false));\r\n });\r\n });\r\n };\r\n\r\n\r\n return UserEditModal;\r\n}(BaseModal));\r\n","var UserViewModal = (function (base) {\r\n __extends(UserViewModal, base);\r\n\r\n function UserViewModal(apiClient) {\r\n var self = base.call(this, apiClient) || this;\r\n return self;\r\n };\r\n\r\n UserViewModal.prototype.activate = function (UserId, deleteFunc) {\r\n const self = this;\r\n const url = 'api/users/{0}'.format(UserId);\r\n this.loadContent(url)\r\n .then($modal => {\r\n\r\n $modal\r\n\r\n //Кнопка `Удалить`\r\n .on('click', '[js=delete]', function () {\r\n if (confirm(`Вы действительно хотите удалить этого пользователя?`)) {\r\n deleteFunc(UserId);\r\n }\r\n })\r\n\r\n //Кнопка `Редактировать`\r\n .on('click', '[js=edit]', function () {\r\n ModalConductor.activate(UserEditModal, UserId)\r\n .on('closed', (modalResult) => {\r\n if (modalResult.ok) {\r\n self.reloadContent(url);\r\n $('#UserListItemViewModelTable').DataTable().ajax.reload(null, false);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n\r\n return UserViewModal;\r\n}(BaseModal));\r\n","var ColumnsFilters = (function() {\r\n\r\n var timeout = 1000;\r\n\r\n var delay = (function () {\r\n var timer = 0;\r\n return function (callback, ms) {\r\n clearTimeout(timer);\r\n timer = setTimeout(callback, ms);\r\n };\r\n })();\r\n\r\n function intMatchFilterAttributeInit(table, filterTd, column) {\r\n $('input', filterTd).closest('th').addClass('intMatchFilter');\r\n $('input', filterTd).on('keyup change', function () {\r\n delay(function () {\r\n var value = $('input', filterTd).val();\r\n if (column.search() !== value) {\r\n column.search(value).draw();\r\n }\r\n }, timeout);\r\n });\r\n }\r\n\r\n function stringContainsFilterAttributeInit(table, filterTd, column) {\r\n $('input', filterTd).closest('th').addClass('stringContainsFilter');\r\n $('input', filterTd).on('keyup change', function () {\r\n delay(function () {\r\n var value = $('input', filterTd).val();\r\n if (column.search() !== value) {\r\n column.search(value).draw();\r\n }\r\n }, timeout);\r\n });\r\n }\r\n\r\n function dateRangeFilterAttributeInit(table, filterTd, column) {\r\n $('input', filterTd).closest('th').addClass('dateRangeFilter');\r\n\r\n var onChange = function() {\r\n var value = \"\" + $('#from', filterTd).val() + \"|\" + $('#to', filterTd).val();\r\n if (column.search() !== value) {\r\n column.search(value).draw();\r\n }\r\n }\r\n\r\n var initChange = function () {\r\n delay(onChange, timeout);\r\n }\r\n\r\n dateRangeInit({\r\n $inputFrom: $('#from', filterTd),\r\n $inputFromOnChangeFunc: initChange,\r\n $inputTo: $('#to', filterTd),\r\n $inputToOnChangeFunc: initChange,\r\n format: 'dd.mm.yyyy',\r\n showClear: true\r\n\r\n });\r\n }\r\n\r\n function dateFilterAttributeInit(table, filterTd, column) {\r\n $('input', filterTd).closest('th').addClass('dateFilter');\r\n\r\n var onChange = function () {\r\n var value = $('#date', filterTd).val();\r\n if (column.search() !== value) {\r\n column.search(value).draw();\r\n }\r\n }\r\n\r\n var initChange = function () {\r\n delay(onChange, timeout);\r\n }\r\n\r\n datepickerInit({\r\n $input: $('#date', filterTd),\r\n $inputOnChangeFunc: initChange,\r\n format: 'dd.mm.yyyy',\r\n showClear: true\r\n });\r\n }\r\n\r\n function decimalRangeFilterAttributeInit(table, filterTd, column) {\r\n $('input', filterTd).closest('th').addClass('decimalRangeFilter');\r\n var onChange = function () {\r\n var value = \"\" + $('#from', filterTd).val() + \"|\" + $('#to', filterTd).val();\r\n if (column.search() !== value) {\r\n column.search(value).draw();\r\n }\r\n }\r\n\r\n $('#from', filterTd).on('keyup change', function () {\r\n delay(onChange, timeout);\r\n });\r\n $('#to', filterTd).on('keyup change', function () {\r\n delay(onChange, timeout);\r\n });\r\n }\r\n\r\n function doubleRangeFilterAttributeInit(table, filterTd, column) {\r\n $('input', filterTd).closest('th').addClass('doubleRangeFilter');\r\n var onChange = function () {\r\n var value = \"\" + $('#from', filterTd).val() + \"|\" + $('#to', filterTd).val();\r\n if (column.search() !== value) {\r\n column.search(value).draw();\r\n }\r\n }\r\n\r\n $('#from', filterTd).on('keyup change', function () {\r\n delay(onChange, timeout);\r\n });\r\n $('#to', filterTd).on('keyup change', function () {\r\n delay(onChange, timeout);\r\n });\r\n }\r\n\r\n function roadSectionServicesCategoriesFilterAttributeInit(table, filterTd, column) {\r\n $('input', filterTd).closest('th').addClass('roadSSegmentsCategoriesFilter');\r\n $('input', filterTd).on('keyup change', function () {\r\n delay(function () {\r\n var value = $('input', filterTd).val();\r\n if (column.search() !== value) {\r\n column.search(value).draw();\r\n }\r\n }, timeout);\r\n });\r\n }\r\n\r\n function dropDownFilterAttributeInit(table, filterTd, column) {\r\n $('select', filterTd).closest('th').addClass('dropDownFilter');\r\n $('select', filterTd).on('change', function () {\r\n var control = $(this);\r\n delay(function () {\r\n var value = control.val();\r\n if (column.search() !== value) {\r\n column.search(value).draw();\r\n }\r\n }, timeout);\r\n });\r\n }\r\n \r\n\r\n\r\n return {\r\n intMatchFilterAttributeInit: intMatchFilterAttributeInit,\r\n stringContainsFilterAttributeInit: stringContainsFilterAttributeInit,\r\n dateRangeFilterAttributeInit: dateRangeFilterAttributeInit,\r\n dateFilterAttributeInit: dateFilterAttributeInit,\r\n decimalRangeFilterAttributeInit: decimalRangeFilterAttributeInit,\r\n doubleRangeFilterAttributeInit: doubleRangeFilterAttributeInit,\r\n roadSectionServicesCategoriesFilterAttributeInit: roadSectionServicesCategoriesFilterAttributeInit,\r\n dropDownFilterAttributeInit: dropDownFilterAttributeInit\r\n }\r\n})();"],"sourceRoot":"/source/"}