pip-webui
Version:
HTML5 UI for LOB applications
2 lines • 48.9 kB
JavaScript
!function(t){"use strict";t.module("pipControls",["pipMarkdown","pipToggleButtons","pipRefreshButton","pipColorPicker","pipRoutingProgress","pipPopover","pipImageSlider","pipToasts","pipTagList","pipDate","pipDateRange","pipTimeRangeEdit","pipTimeRange","pipInformationDialog","pipConfirmationDialog","pipOptionsDialog","pipOptionsBigDialog","pipErrorDetailsDialog"]),t.module("pipBasicControls",["pipControls"])}(window.angular),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("color_picker/color_picker.html",'<ul class="pip-color-picker lp0 {{class}}" pip-selected="currentColorIndex" pip-enter-space-press="enterSpacePress($event)"><li tabindex="-1" ng-repeat="color in colors track by color"><md-button tabindex="-1" class="md-icon-button pip-selectable" ng-click="selectColor($index)" aria-label="color" ng-disabled="disabled()"><md-icon ng-style="{\'color\': color}" md-svg-icon="icons:{{ color == currentColor ? \'circle\' : \'radio-off\' }}"></md-icon></md-button></li></ul>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("confirmation_dialog/confirmation_dialog.html",'<md-dialog class="pip-dialog pip-confirmation-dialog layout-column" width="400" md-theme="{{::theme}}"><div class="pip-header text-subhead1"><h3 class="m0">{{:: title | translate }}</h3></div><div class="pip-footer"><div><md-button ng-click="onCancel()">{{:: cancel | translate }}</md-button><md-button class="md-accent" ng-click="onOk()">{{:: ok | translate }}</md-button></div></div></md-dialog>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("date_range/date_range.html",'<div class="pip-date-range layout-row flex" tabindex="-1"><md-input-container ng-show="isDay()" class="tm0 pip-day flex" ng-class="{\'flex-fixed\' : $mdMedia(\'gt-xs\')}"><md-select class="select-day w-stretch" ng-class="{\'pip-no-line\' : pipNoLine}" ng-disable="{{disableControls}}" md-on-open="onDayClick()" ng-model="day" ng-change="onDayChanged()" placeholder="{{dayLabel}}" aria-label="DAY"><md-option ng-value="opt" ng-repeat="opt in days track by opt">{{nameDays[$index]}} {{ opt }}</md-option></md-select></md-input-container><md-input-container ng-show="isWeek()" class="tm0 flex" ng-class="{\'flex-fixed\' : $mdMedia(\'gt-xs\')}"><md-select class="select-week w-stretch" ng-class="{\'pip-no-line\' : pipNoLine}" ng-disable="{{disableControls}}" ng-model="week" ng-change="onWeekChange()" placeholder="{{weekLabel}}" aria-label="WEEK"><md-option ng-value="opt.id" ng-repeat="opt in weeks track by opt.id">{{ opt.name }}</md-option></md-select></md-input-container><div class="flex-fixed" ng-class="{\'w16\': $mdMedia(\'gt-xs\'), \'w8\': $mdMedia(\'xs\')}" ng-show="isDay() || isWeek()"></div><md-input-container ng-show="isMonth() && !monthFormatShort" class="tm0 flex min-w72" ng-class="{\'flex-fixed\' : $mdMedia(\'gt-xs\')}"><md-select class="select-month w-stretch" ng-class="{\'pip-no-line\' : pipNoLine}" ng-disable="{{disableControls}}" md-on-open="onMonthClick()" ng-model="month" ng-change="onMonthChanged()" placeholder="{{monthLabel}}" aria-label="MONTH"><md-option ng-value="opt.id" ng-repeat="opt in months track by opt.id">{{ opt.name }}</md-option></md-select></md-input-container><md-input-container ng-show="isMonth() && monthFormatShort" class="flex tm0" ng-class="{\'flex-fixed\' : $mdMedia(\'gt-xs\')}"><md-select class="select-month w-stretch" ng-class="{\'pip-no-line\' : pipNoLine}" ng-disable="{{disableControls}}" md-on-open="onMonthClick()" ng-model="month" ng-change="onMonthChanged()" placeholder="{{monthLabel}}" aria-label="MONTH"><md-option ng-value="opt.id" ng-repeat="opt in shortMonths track by opt.id">{{ opt.name }}</md-option></md-select></md-input-container><div class="flex-fixed" ng-class="{\'w16\': $mdMedia(\'gt-xs\'), \'w8\': $mdMedia(\'xs\')}" ng-show="isMonth()"></div><md-input-container class="tm0 flex" ng-class="{\'flex-fixed\' : $mdMedia(\'gt-xs\')}"><md-select class="select-year w-stretch" ng-class="{\'pip-no-line\' : pipNoLine}" ng-disable="{{disableControls}}" md-on-open="onYearClick()" ng-model="year" ng-change="onYearChanged()" placeholder="{{yearLabel}}" aria-label="YEAR"><md-option ng-value="opt" ng-repeat="opt in years track by opt">{{ opt }}</md-option></md-select></md-input-container></div>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("date/date.html",'<div class="pip-date layout-row flex" tabindex="-1"><md-input-container class="tm0 flex"><md-select class="pip-date-day tm0 flex" ng-disabled="disableControls" ng-model="day" placeholder="{{dayLabel}}" ng-change="onDayChanged()"><md-option ng-value="opt" ng-repeat="opt in days track by opt">{{:: opt }}</md-option></md-select></md-input-container><div class="w16 flex-fixed"></div><md-input-container class="tm0 flex"><md-select class="pip-date-month tm0 flex" ng-disabled="disableControls" ng-model="month" placeholder="{{monthLabel}}" ng-change="onMonthChanged()"><md-option ng-value="opt.id" ng-repeat="opt in months track by opt.id">{{:: opt.name }}</md-option></md-select></md-input-container><div class="w16 flex-fixed"></div><md-input-container class="tm0 flex"><md-select class="pip-date-year tm0 flex" ng-disabled="disableControls" ng-model="year" placeholder="{{yearLabel}}" ng-change="onYearChanged()"><md-option ng-value="opt" ng-repeat="opt in years track by opt">{{:: opt }}</md-option></md-select></md-input-container></div>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("error_details_dialog/error_details_dialog.html",'<md-dialog class="pip-dialog pip-details-dialog layout-column" width="400" md-theme="{{theme}}"><div class="pip-body"><div class="pip-header p0 bp8 text-subhead1">{{::\'ERROR_DETAILS\' | translate}}</div><div class="layout-row layout-align-start-center h48 text-body2 color-secondary-text" ng-if="error.code || (error.data && error.data.code)">{{::\'CODE\' | translate}}</div><div class="layout-row layout-align-start-center" ng-if="error.code || (error.data && error.data.code)">{{error.code || error.data.code}}</div><div class="layout-row layout-align-start-center h48 text-body2 color-secondary-text" ng-if="error.path || (error.data && error.data.path)">{{::\'PATH\' | translate}}</div><div class="layout-row layout-align-start-center" ng-if="error.path || (error.data && error.data.path)">{{error.path || error.data.path}}</div><div class="h48 text-body2 color-secondary-text layout-row layout-align-start-center" ng-if="error.error || (error.data && error.data.error)">{{::\'ERROR\' | translate}}</div><div class="layout-row layout-align-start-center" ng-if="error.error || (error.data && error.data.error)">{{error.error || error.data.error}}</div><div class="h48 text-body2 color-secondary-text layout-row layout-align-start-center" ng-if="error.method || (error.data && error.data.method)">{{::\'METHOD\' | translate}}</div><div class="layout-row layout-align-start-center" ng-if="error.method || (error.data && error.data.method)">{{error.method || error.data.method}}</div><div class="h48 text-body2 color-secondary-text layout-row layout-align-start-center" ng-if="error.message || (error.data && error.data.message)">{{::\'MESSAGE\' | translate}}</div><div class="layout-row layout-align-start-center" ng-if="error.message || (error.data && error.data.message)">{{error.message || error.data.message}}</div></div><div class="pip-footer rp16"><div><md-button class="md-accent m0" ng-click="onOk()">{{::\'DISMISS\' | translate }}</md-button></div></div></md-dialog>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("information_dialog/information_dialog.html",'<md-dialog class="pip-dialog pip-information-dialog layout-column" width="400" md-theme="{{theme}}"><div class="pip-header"><h3 class="m0">{{ title | translate }}</h3></div><div class="pip-body"><div class="pip-content">{{ content }}</div></div><div class="pip-footer"><div><md-button class="md-accent" ng-click="onOk()">{{ ok | translate }}</md-button></div></div></md-dialog>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("options_dialog/options_dialog.html",'<md-dialog class="pip-dialog pip-options-dialog layout-column" min-width="400" md-theme="{{theme}}"><md-dialog-content class="pip-body lp0 tp0 rp0 bp24 pip-scroll"><div class="pip-header"><h3 class="m0 bm16 text-title">{{::title | translate}}</h3><div ng-show="deletedTitle" class="bp16 tp8 text-subhead1 divider-bottom"><md-checkbox ng-model="deleted" aria-label="CHECKBOX" class="m0">{{::deletedTitle | translate}}</md-checkbox></div></div><div class="pip-content"><md-radio-group ng-model="selectedOptionName" class="pip-list md-primary" md-no-ink="true" ng-keypress="onKeyPress($event)" tabindex="0"><div ng-repeat="option in options" class="pip-list-item p0" md-ink-ripple="" ui-event="{ click: \'onOptionSelect($event, option)\' }" ng-class="{ selected: option.name == selectedOptionName }"><div class="pip-list-item"><md-icon class="pip-option-icon rm12" md-svg-icon="icons:{{option.icon}}" ng-if="option.icon"></md-icon><div class="pip-option-title">{{::option.title | translate}}</div><md-radio-button ng-value="option.name" tabindex="-1" aria-label="{{::option.title | translate}}"></md-radio-button></div></div></md-radio-group></div></md-dialog-content><div class="pip-footer"><div><md-button class="pip-cancel" ng-click="onCancel()">{{::\'CANCEL\' | translate}}</md-button><md-button class="pip-submit md-accent" ng-click="onSelect()">{{::applyButtonTitle | translate}}</md-button></div></div></md-dialog>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("options_dialog/options_dialog_big.html",'<md-dialog class="pip-dialog pip-options-dialog-big layout-column" min-width="400" md-theme="{{theme}}"><md-dialog-content class="pip-body p0 pip-scroll" ng-class="{\'bp24\': !noActions}"><div class="pip-header" ng-class="{\'header-hint\': noTitle && hint}"><h3 class="m0 text-title" ng-if="!noTitle">{{::title | translate}}</h3><div ng-show="noTitle && hint" class="dialog-hint layout-row layout-align-start-center"><div class="w40" flex-fixed=""><md-icon md-svg-icon="icons:info-circle-outline"></md-icon></div><div>{{::hint | translate}}</div></div></div><div class="pip-divider" ng-if="!noTitle"></div><div class="pip-content"><div class="h8" ng-if="noTitle && hint"></div><md-list class="pip-menu pip-ref-list w-stretch" pip-selected="optionIndex" index="{{optionIndex }}" pip-select="onSelected($event)"><md-list-item class="pip-ref-list-item pip-selectable layout-row layout-align-start-center" ng-class="{\'selected\' : option.name == selectedOptionName, \'divider-bottom\': $index != options.length - 1}" md-ink-ripple="" xxxxng-keypress="onKeyPress($event)" ng-keyup="onKeyUp($event, $index)" ng-repeat="option in options" ng-click="onOptionSelect($event, option)"><div class="pip-content line-height-string max-w100-stretch"><p class="pip-title rp24-flex" ng-if="option.title" style="margin-bottom: 4px !important;">{{::option.title | translate}}</p><div class="pip-subtitle rp24-flex" style="height: inherit" ng-if="option.subtitle">{{::option.subtitle | translate}}</div><div class="pip-subtitle rp24-flex" style="height: inherit" ng-if="option.text" pip-translate-html="{{::option.text | translate}}"></div></div></md-list-item></md-list></div><div class="h8" ng-if="noActions"></div></md-dialog-content><div class="pip-footer" ng-if="!noActions"><div><md-button class="pip-cancel" ng-click="onCancel()">{{::\'CANCEL\' | translate}}</md-button><md-button class="pip-submit md-accent" ng-click="onSelect()" style="margin-right: -6px">{{::applyButtonTitle | translate}}</md-button></div></div></md-dialog>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("popover/popover.template.html",'<div ng-if="params.templateUrl" class="pip-popover flex layout-column" ng-click="onPopoverClick($event)" ng-include="params.templateUrl"></div><div ng-if="params.template" class="pip-popover" ng-click="onPopoverClick($event)"></div>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("progress/routing_progress.html",'<div class="pip-routing-progress layout-column layout-align-center-center" ng-show="$routing || $reset || toolInitialized"><div class="loader"><svg class="circular" viewbox="25 25 50 50"><circle class="path" cx="50" cy="50" r="20" fill="none" stroke-width="2" stroke-miterlimit="10"></circle></svg></div><img src="images/Logo_animation.svg" height="40" width="40" class="pip-img"><md-progress-circular md-diameter="96" class="fix-ie"></md-progress-circular></div>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("tags/tag_list.html",'<div class="pip-chip rm4 pip-type-chip pip-type-chip-left {{\'bg-\' + pipType + \'-chips\'}}" ng-if="pipType && !pipTypeLocal"><span>{{pipType.toUpperCase() | translate | uppercase}}</span></div><div class="pip-chip rm4 pip-type-chip pip-type-chip-left {{\'bg-\' + pipType + \'-chips\'}}" ng-if="pipType && pipTypeLocal"><span>{{pipTypeLocal.toUpperCase() | translate | uppercase}}</span></div><div class="pip-chip rm4" ng-repeat="tag in pipTags"><span>{{::tag}}</span></div>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("time_range/time_range.html",'<p><span ng-if="data.start != null">{{data.start | formatShortDateTime}}</span> <span class="rm4 lm4" ng-if="data.start && data.end">-</span> <span ng-if="data.end != null">{{data.end | formatShortDateTime}}</span></p>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("time_range_edit/time_range_edit.html",'<div class="event-edit layout-row layout-xs-column flex layout-align-start-start"><div flex="47" class="w-stretch rm24-flex0"><p class="text-caption text-grey tm0">{{startLabel}}</p><div class="layout-row layout-align-space-between-center"><div class="rm16 pip-datepicker-container" flex="49"><md-datepicker ng-model="data.startDate" xmd-placeholder="{{startLabel}}" ng-change="onChangeStartDate()" ng-disabled="isDisabled()" aria-label="START-DATE"></md-datepicker></div><div flex=""><md-input-container class="w-stretch tm0"><md-select aria-label="START-TIME" class="tm0 bm0" ng-model="data.startTime" ng-disabled="isDisabled()" ng-change="onChangeStartTime()"><md-option ng-value="opt.id" ng-repeat="opt in intervalTimeCollection track by opt.id">{{ opt.time }}</md-option></md-select></md-input-container></div></div></div><div flex="47" class="w-stretch"><p class="text-caption text-grey tm0">{{endLabel}}</p><div class="layout-row layout-align-space-between-center"><div class="rm16 pip-datepicker-container flex-49"><md-datepicker ng-model="data.endDate" xmd-placeholder="{{endLabel}}" ng-disabled="isDisabled()" ng-change="onChangeEndDate()" aria-label="END-DATE"></md-datepicker></div><div flex=""><md-input-container class="w-stretch tm0"><md-select aria-label="END-TIME" class="tm0 bm0" ng-model="data.endTime" ng-change="onChangeEndTime()" ng-disabled="isDisabled()"><md-option ng-value="opt.id" ng-repeat="opt in intervalTimeCollection track by opt.id">{{ opt.time }}</md-option></md-select></md-input-container></div></div></div></div>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("toast/toast.html",'<md-toast class="md-action pip-toast" ng-class="{\'pip-error\': toast.type==\'error\', \'pip-column-toast\': toast.type == \'error\' || toast.actions.length > 1 || actionLenght > 4, \'pip-no-action-toast\': actionLenght == 0}" style="height:initial; max-height: initial;"><span class="flex-var m0 pip-text" ng-bind-html="message"></span><div class="layout-row layout-align-end-start" ng-if="actions.length > 0 || (toast.type==\'error\' && toast.error)"><md-button class="flex-fixed m0 lm8" ng-if="toast.type==\'error\' && toast.error" ng-click="onDetails()">Details</md-button><md-button class="flex-fixed m0 lm8" ng-click="onAction(action)" ng-repeat="action in actions" aria-label="{{::action| translate}}">{{::action| translate}}</md-button></div></md-toast>')}])}(),function(t){try{t=angular.module("pipBasicControls.Templates")}catch(e){t=angular.module("pipBasicControls.Templates",[])}t.run(["$templateCache",function(t){t.put("toggle_buttons/toggle_buttons.html",'<div class="pip-toggle-buttons flex layout-row {{class}}" pip-selected="bufButtonIndex" pip-enter-space-press="enterSpacePress($event)" ng-if="$mdMedia(\'gt-xs\')"><md-button tabindex="-1" ng-repeat="button in buttons" ng-class="{\'md-accent md-raised selected color-accent-bg\' : currentButtonIndex == $index}" ng-attr-style="{{ \'background-color:\' + (currentButtonIndex == $index ? button.backgroundColor : \'\') + \'!important\' }}" class="pip-selectable pip-chip-button flex" ng-click="buttonSelected($index, $event)" ng-disabled="button.disabled || disabled()">{{button.name || button.title | translate}} <span ng-if="button.checked || button.complete || button.filled" class="pip-tagged">*</span></md-button></div><md-input-container class="md-block" ng-if="$mdMedia(\'xs\')"><md-select ng-model="currentButtonIndex" ng-disabled="disabled()" aria-label="DROPDOWN" md-on-close="buttonSelected(currentButtonIndex)"><md-option ng-repeat="action in buttons" value="{{ ::$index }}">{{ (action.title || action.name) | translate }} <span ng-if="action.checked || action.complete || action.filled" class="pip-tagged">*</span></md-option></md-select></md-input-container>')}])}(),function(t,e){"use strict";var n=t.module("pipColorPicker",["pipUtils","pipFocused","pipBasicControls.Templates"]);n.directive("pipColorPicker",function(){return{restrict:"EA",scope:{ngDisabled:"&",colors:"=pipColors",currentColor:"=ngModel",colorChange:"&ngChange"},templateUrl:"color_picker/color_picker.html",controller:"pipColorPickerController"}}),n.controller("pipColorPickerController",["$scope","$element","$attrs","$timeout",function(t,n,a,o){var i=["purple","lightgreen","green","darkred","pink","yellow","cyan"];t.class=a.class||"",(!t.colors||e.isArray(t.colors)&&0===t.colors.length)&&(t.colors=i),t.currentColor=t.currentColor||t.colors[0],t.currentColorIndex=t.colors.indexOf(t.currentColor),t.disabled=function(){return!t.ngDisabled||t.ngDisabled()},t.selectColor=function(e){t.disabled()||(t.currentColorIndex=e,t.currentColor=t.colors[t.currentColorIndex],o(function(){t.$apply()}),t.colorChange&&t.colorChange())},t.enterSpacePress=function(e){t.selectColor(e.index)}}])}(window.angular,window._),function(t){"use strict";var e=t.module("pipConfirmationDialog",["ngMaterial","pipUtils","pipTranslate","pipBasicControls.Templates"]);e.config(["pipTranslateProvider",function(t){t.translations("en",{CONFIRM_TITLE:"Confirm"}),t.translations("ru",{CONFIRM_TITLE:"Подтвердите"})}]),e.factory("pipConfirmationDialog",["$mdDialog",function(t){return{show:function(e,n,a){t.show({targetEvent:e.event,templateUrl:"confirmation_dialog/confirmation_dialog.html",controller:"pipConfirmationDialogController",locals:{params:e},clickOutsideToClose:!0}).then(function(){n&&n()},function(){a&&a()})}}}]),e.controller("pipConfirmationDialogController",["$scope","$rootScope","$mdDialog","pipTranslate","params",function(t,e,n,a,o){t.theme=e.$theme,t.title=o.title||"CONFIRM_TITLE",t.ok=o.ok||"OK",t.cancel=o.cancel||"CANCEL",t.onCancel=function(){n.cancel()},t.onOk=function(){n.hide()}}])}(window.angular),function(t,e){"use strict";var n=t.module("pipDate",["pipBasicControls.Templates"]);n.directive("pipDate",function(){return{restrict:"EA",require:"ngModel",scope:{timeMode:"@pipTimeMode",disabled:"&ngDisabled",model:"=ngModel",ngChange:"&"},templateUrl:"date/date.html",controller:"pipDateController"}}),n.controller("pipDateController",["$scope","$element","pipTranslate",function(t,n,a){function o(t,e){var n,a=31,o=[];for(4===t||6===t||9===t||11===t?a=30:2===t&&(a=e&&e%4===0?29:28),n=1;n<=a;n++)o.push(n);return o}function i(){var t,e=[];for(t=1;t<=12;t++)e.push({id:t,name:a.translate("MONTH_"+t)});return e}function l(){var e,n=(new Date).getFullYear(),a="future"===t.timeMode?n:n-100,o="past"===t.timeMode?n:n+100,i=[];if("past"===t.timeMode)for(e=o;e>=a;e--)i.push(e);else for(e=a;e<=o;e++)i.push(e);return i}function r(){var e=o(t.month,t.year);t.days.length!==e.length&&(t.day>e.length&&(t.day=e.length),t.days=e)}function s(n){var a=n?e.isDate(n)?n:new Date(n):null,i=a?a.getDate():null,l=a?a.getMonth()+1:null,r=a?a.getFullYear():null;t.month!==l&&t.year!==r&&(t.days=o(t.month,t.year)),t.day=i,t.month=l,t.year=r}function p(){var e;t.day&&t.month&&t.year&&(e=new Date(t.year,t.month-1,t.day,0,0,0,0),t.model=e,t.ngChange())}var d;t.onDayChanged=function(){p()},t.onMonthChanged=function(){r(),p()},t.onYearChanged=function(){r(),p()},d=t.model?e.isDate(t.model)?t.model:new Date(t.model):null,t.day=d?d.getDate():null,t.month=d?d.getMonth()+1:null,t.year=d?d.getFullYear():null,t.dayLabel=a.translate("DAY"),t.monthLabel=a.translate("MONTH"),t.yearLabel=a.translate("YEAR"),t.days=o(t.month,t.year),t.months=i(),t.years=l(),t.disableControls=!!t.disabled&&t.disabled(),t.$watch("model",function(t){s(t)}),t.$watch(t.disabled,function(e){t.disableControls=e})}])}(window.angular,window._),function(t,e){"use strict";var n=t.module("pipDateRange",[]);n.directive("pipDateRange",function(){return{restrict:"EA",require:"ngModel",scope:{timeMode:"@pipTimeMode",disabled:"&ngDisabled",model:"=ngModel",pipChanged:"&",pipDateRangeType:"@",pipDateFormat:"@",pipNoLine:"@"},templateUrl:"date_range/date_range.html",controller:"pipDateRangeController"}}),n.controller("pipDateRangeController",["$scope","$element","pipTranslate","$mdMedia","$rootScope",function(t,n,a,o,i){function l(){$.day=t.day,$.month=t.month,$.year=t.year,$.week=t.week,$.dateRangeType=t.pipDateRangeType,$.model=t.model}function r(){t.days=c(t.month,t.year),t.weeks=g(t.month,t.year),t.months=h(),t.shortMonths=h(!0),t.years=f()}function s(){(!x.model||x.model&&x.model.getTime()>=t.model.getTime())&&t.weeks&&t.weeks[t.week]&&t.weeks[t.week].id<=0&&(t.month<12?t.month+=1:(t.month=1,t.year+=1),r())}function p(){var e;e=t.model?new Date(t.model):null,t.day=e?e.getUTCDate():null,t.month=e?e.getUTCMonth()+1:null,t.year=e?e.getUTCFullYear():null,t.week=e?u(t.day,t.month-1,t.year):null,r(),"weekly"===t.pipDateRangeType?(s(),T()):v(),b()}function d(t,e){var n=31;return 4===t||6===t||9===t||11===t?n=30:2===t&&(n=e&&e%4===0?29:28),n}function c(e,n){var a,o,l,r;for(r=i.$language||"en",a=d(e,n),t.nameDays=[],o=[],l=1;l<=a;l++)o.push(l),t.nameDays.push(t.daysWeek[r][new Date(n,e-1,l).getDay()]);return o}function u(t,e,n){var a,o,i;return a=new Date(Date.UTC(n,e,t)),o=a.getUTCDay()?a.getUTCDay():7,i=1===o?t:t+1-o}function m(t,e,n){var a,o;return a=t+6>e?e-t-6:t+6,o=t>0?t:n+t,o.toString()+" - "+Math.abs(a).toString()}function g(t,e){var n,a,o,i;for(n=[],a=d(t,e),i=u(1,t-1,e),o=t-1?d(t-1,e):d(12,e-1);i<a+1;)n.push({id:i,name:m(i,a,o)}),i+=7;return n}function h(){var t,e;for(t=[],e=1;e<=12;e++)t.push({id:e,name:a.translate("MONTH_"+e)});return t}function f(){var e,n,a,o=[];switch(t.timeMode){case"future":e=w,a=w+100;break;case"past":e=w-100,a=w;break;case"now":e=w-50,a=w+100;break;default:e=w-50,a=w+50}if("future"===t.timeMode)for(n=e;n<=a;n++)o.push(n);else for(n=a;n>=e;n--)o.push(n);return o}function v(){var e=c(t.month,t.year);switch(t.pipDateRangeType){case"monthly":t.day=1;break;case"yearly":t.month=1,t.day=1;break;default:t.days.length!==e.length&&t.day>e.length&&(t.day=e.length)}t.days=e}function T(){var e;e=g(t.month,t.year),t.week=u(t.week,t.month-1,t.year),t.weeks=e}function y(e){var n,a,o,i,l;n=e?new Date(e):null,a=n?n.getUTCDate():null,o=n?n.getUTCMonth()+1:null,i=n?n.getUTCFullYear():null,l=n?u(a,o-1,i):null,t.day===a&&t.month===o&&t.year===i&&t.week===l||(t.day=a,t.month=o,t.year=i,t.week=l,t.days=c(t.month,t.year),t.weeks=g(t.month,t.year))}function b(){var n;"weekly"===t.pipDateRangeType?(n=new Date(t.year,t.month-1,t.week,0,0,0,0),n=new Date(n.getTime()-6e4*n.getTimezoneOffset()),t.model=n):(n=new Date(t.year,t.month-1,t.day,0,0,0,0),n=new Date(n.getTime()-6e4*n.getTimezoneOffset()),t.model=n),x=e.cloneDeep($),l(),t.onChange()}var C,w,D,k,x={},$={};C=new Date,w=C.getUTCFullYear(),D=C.getUTCMonth()+1,k=C.getUTCDate(),t.daysWeek={en:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ru:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"]},t.onDayChanged=function(){b()},t.onMonthChanged=function(){if("weekly"===t.pipDateRangeType){var e,n;e=new Date(Date.UTC(t.year,t.month-1,1)),n=e.getUTCDay()?e.getUTCDay():7,t.week=u(n,t.month-1,t.year),s(),T()}else v();b()},t.onYearChanged=function(){var e,n;e=new Date(Date.UTC(t.year,t.month-1,1)),n=e.getUTCDay()?e.getUTCDay():7,"weekly"===t.pipDateRangeType?(t.week=u(n,t.month-1,t.year),T(),s()):v(),b()},t.onWeekChange=function(){"weekly"===t.pipDateRangeType?(T(),s()):v(),b()},t.isDay=function(){return"daily"===t.pipDateRangeType},t.isWeek=function(){return"weekly"===t.pipDateRangeType},t.isMonth=function(){return"daily"===t.pipDateRangeType||"weekly"===t.pipDateRangeType||"monthly"===t.pipDateRangeType},t.onChange=function(){t.pipChanged&&t.pipChanged()},t.$mdMedia=o,p(),t.disableControls=!!t.disabled&&t.disabled(),t.$watch("model",function(t,e){t!==e&&y(t)}),t.$watch(t.disabled,function(e){t.disableControls=e}),t.$watch("pipDateRangeType",function(t,e){t!==e&&e&&p()}),t.onYearClick=function(){t.year||(t.year=w)},t.onMonthClick=function(){t.month||(t.month=D)},t.onDayClick=function(){t.year||(t.day=k)}}])}(window.angular,window._),function(t){"use strict";var e=t.module("pipErrorDetailsDialog",["ngMaterial","pipUtils","pipTranslate","pipBasicControls.Templates"]);e.config(["pipTranslateProvider",function(t){t.translations("en",{ERROR_DETAILS:"Error details",CODE:"Code",PATH:"Path",ERROR:"Error code",METHOD:"Method",MESSAGE:"Message"}),t.translations("ru",{ERROR_DETAILS:"Детали ошибки",CODE:"Код",PATH:"Путь",ERROR:"Код ошибки",METHOD:"Метод",MESSAGE:"Сообщение"})}]),e.factory("pipErrorDetailsDialog",["$mdDialog",function(t){return{show:function(e,n,a){t.show({targetEvent:e.event,templateUrl:"error_details_dialog/error_details_dialog.html",controller:"pipErrorDetailsDialogController",locals:{params:e},clickOutsideToClose:!0}).then(function(){n&&n()},function(){a&&a()})}}}]),e.controller("pipErrorDetailsDialogController",["$scope","$rootScope","$mdDialog","pipTranslate","params",function(t,e,n,a,o){t.error=o.error,t.ok=o.ok||"OK",t.cancel=o.cancel||"CANCEL",t.onCancel=function(){n.cancel()},t.onOk=function(){n.hide()}}])}(window.angular),function(t,e,n){"use strict";var a=t.module("pipImageSlider",[]);a.directive("pipImageSlider",function(){return{scope:!1,controller:["$scope","$element","$attrs","$parse","$timeout","$interval","$pipImageSlider",function(t,a,o,i,l,r,s){function p(){T&&T(t,y)}function d(){f=r(function(){g=y+1===m.length?0:y+1,h="next",v()},w||C)}function c(){r.cancel(f)}function u(){c(),d()}var m,g,h,f,v,T=i(o.pipImageSliderIndex).assign,y=0,b=i(o.pipAnimationType)(t),C=4500,w=i(o.pipAnimationInterval)(t);a.addClass("pip-image-slider"),a.addClass("pip-animation-"+b),t.swipeStart=0,p(),l(function(){m=a.find(".pip-animation-block"),m.length>0&&n(m[0]).addClass("pip-show")}),d(),v=e.throttle(function(){s.toBlock(b,m,y,g,h),y=g,p()},600),t.nextBlock=function(){u(),g=y+1===m.length?0:y+1,h="next",v()},t.prevBlock=function(){u(),g=y-1<0?m.length-1:y-1,h="prev",v()},t.slideTo=function(t){t===y||t>m.length-1||(u(),g=t,h=t>y?"next":"prev",v())},a.on("$destroy",function(){c()})}]}}),a.directive("pipSliderButton",function(){return{scope:{},controller:["$scope","$element","$parse","$attrs",function(e,n,a,o){var i=a(o.pipButtonType)(e),l=a(o.pipSliderId)(e);n.on("click",function(){l&&i&&t.element(document.getElementById(l)).scope()[i+"Block"]()})}]}}),a.directive("pipSliderIndicator",function(){return{scope:!1,controller:["$scope","$element","$parse","$attrs",function(e,n,a,o){var i=a(o.pipSliderId)(e),l=a(o.pipSlideTo)(e);n.css("cursor","pointer"),n.on("click",function(){!i||l&&l<0||t.element(document.getElementById(i)).scope().slideTo(l)})}]}}),a.service("$pipImageSlider",["$timeout",function(t){function e(e,n){e.removeClass("animated").addClass("pip-next"),t(function(){e.addClass("animated").addClass("pip-show").removeClass("pip-next"),n.addClass("animated").removeClass("pip-show")},100)}function a(e,n){e.removeClass("animated"),t(function(){e.addClass("animated").addClass("pip-show"),n.addClass("animated").addClass("pip-next").removeClass("pip-show"),t(function(){n.removeClass("pip-next").removeClass("animated")},i-100)},100)}function o(t,o,i,l,r){var s=n(o[i]),p=l,d=n(o[p]);"carousel"===t?(n(o).removeClass("pip-next").removeClass("pip-prev"),r&&"prev"===r&&a(d,s),r&&"next"===r&&e(d,s),(!r||"next"!==r&&"prev"!==r)&&l&&l<i?a(d,s):e(d,s)):(s.addClass("animated").removeClass("pip-show"),d.addClass("animated").addClass("pip-show"))}var i=550;return{nextCarousel:e,prevCarousel:a,toBlock:o}}])}(window.angular,window._,window.jQuery),function(t,e){"use strict";var n=t.module("pipInformationDialog",["ngMaterial","pipUtils","pipTranslate","pipBasicControls.Templates"]);n.config(["pipTranslateProvider",function(t){t.translations("en",{INFORMATION_TITLE:"Information"}),t.translations("ru",{INFORMATION_TITLE:"Информация"})}]),n.factory("pipInformationDialog",["$mdDialog",function(t){return{show:function(e,n){t.show({targetEvent:e.event,templateUrl:"information_dialog/information_dialog.html",controller:"pipInformationDialogController",locals:{params:e},clickOutsideToClose:!0}).then(function(){n&&n()})}}}]),n.controller("pipInformationDialogController",["$scope","$rootScope","$mdDialog","pipTranslate","params","pipUtils",function(t,n,a,o,i,l){var r,s;t.theme=n.$theme,t.title=i.title||"INFORMATION_TITLE",r=o.translate(i.message),i.item&&(s=e.truncate(i.item,25),r=l.sprintf(r,s)),t.content=r,t.ok=i.ok||"OK",t.onOk=function(){a.hide()}}])}(window.angular,window._),function(t,e,n){"use strict";var a=t.module("pipOptionsDialog",["ngMaterial","pipUtils","pipTranslate","pipBasicControls.Templates"]);a.config(["pipTranslateProvider",function(t){t.translations("en",{OPTIONS_TITLE:"Choose Option"}),t.translations("ru",{OPTIONS_TITLE:"Выберите опцию"})}]),a.factory("pipOptionsDialog",["$mdDialog",function(t){return{show:function(e,n,a){function o(){e.event&&e.event.currentTarget&&e.event.currentTarget.focus()}e.event&&(e.event.stopPropagation(),e.event.preventDefault()),t.show({targetEvent:e.event,templateUrl:"options_dialog/options_dialog.html",controller:"pipOptionsDialogController",locals:{params:e},clickOutsideToClose:!0}).then(function(t){o(),n&&n(t)},function(){o(),a&&a()})}}}]),a.controller("pipOptionsDialogController",["$scope","$rootScope","$mdDialog","params",function(t,a,o,i){
function l(){var t;t=e(".pip-options-dialog .pip-list"),t.focus()}t.theme=a.$theme,t.title=i.title||"OPTIONS_TITLE",t.options=i.options,t.selectedOption=n.find(i.options,{active:!0})||{},t.selectedOptionName=t.selectedOption.name,t.applyButtonTitle=i.appleButtonTitle||"SELECT",t.deleted=i.deleted,t.deletedTitle=i.deletedTitle,t.onOptionSelect=function(e,n){e.stopPropagation(),t.selectedOptionName=n.name},t.onKeyPress=function(e){32!==e.keyCode&&13!==e.keyCode||(e.stopPropagation(),e.preventDefault(),t.onSelect())},t.onCancel=function(){o.cancel()},t.onSelect=function(){var e;e=n.find(i.options,{name:t.selectedOptionName}),o.hide({option:e,deleted:t.deleted})},setTimeout(l,500)}])}(window.angular,window.jQuery,window._),function(t,e,n){"use strict";var a=t.module("pipOptionsBigDialog",["ngMaterial","pipUtils","pipTranslate","pipBasicControls.Templates"]);a.config(["pipTranslateProvider",function(t){t.translations("en",{OPTIONS_TITLE:"Choose Option"}),t.translations("ru",{OPTIONS_TITLE:"Выберите опцию"})}]),a.factory("pipOptionsBigDialog",["$mdDialog",function(t){return{show:function(e,n,a){function o(){e.event&&e.event.currentTarget&&e.event.currentTarget.focus()}e.event&&(e.event.stopPropagation(),e.event.preventDefault()),t.show({targetEvent:e.event,templateUrl:"options_dialog/options_dialog_big.html",controller:"pipOptionsDialogBigController",locals:{params:e},clickOutsideToClose:!0}).then(function(t){o(),n&&n(t)},function(){o(),a&&a()})}}}]),a.controller("pipOptionsDialogBigController",["$scope","$rootScope","$mdDialog","params",function(t,a,o,i){function l(){var t;t=e(".pip-options-dialog .pip-list"),t.focus()}t.theme=a.$theme,t.title=i.title||"OPTIONS_TITLE",t.options=i.options,t.noActions=i.noActions||!1,t.noTitle=i.noTitle||!1,t.hint=i.hint||"",t.selectedOption=n.find(i.options,{active:!0})||{},t.selectedOptionName=t.selectedOption.name,t.optionIndex=n.findIndex(i.options,t.selectedOption),t.applyButtonTitle=i.applyButtonTitle||"SELECT",t.deleted=i.deleted,t.deletedTitle=i.deletedTitle,t.onOptionSelect=function(e,n){e.stopPropagation(),t.selectedOptionName=n.name,t.noActions&&t.onSelect()},t.onSelected=function(){t.selectedOptionName=t.options[t.optionIndex].name,t.noActions},t.onKeyUp=function(e,n){32!==e.keyCode&&13!==e.keyCode||(e.stopPropagation(),e.preventDefault(),void 0!==n&&n>-1&&n<t.options.length&&(t.selectedOptionName=t.options[n].name,t.onSelect()))},t.onCancel=function(){o.cancel()},t.onSelect=function(){var e;e=n.find(t.options,{name:t.selectedOptionName}),o.hide({option:e,deleted:t.deleted})},setTimeout(l,500)}])}(window.angular,window.jQuery,window._),function(t,e,n){"use strict";var a=t.module("pipMarkdown",["ngSanitize","pipUtils","pipTranslate"]);a.config(["pipTranslateProvider",function(t){t.translations("en",{MARKDOWN_ATTACHMENTS:"Attachments:",checklist:"Checklist",documents:"Documents",pictures:"Pictures",location:"Location",time:"Time"}),t.translations("ru",{MARKDOWN_ATTACHMENTS:"Вложения:",checklist:"Список",documents:"Документы",pictures:"Изображения",location:"Местонахождение",time:"Время"})}]),a.directive("pipMarkdown",["$parse","pipUtils","pipTranslate",function(t,a,o){return{restrict:"EA",scope:!1,link:function(i,l,r){function s(t){var e="",a=[];return n.each(t,function(t){t.type&&"text"!==t.type&&(0===e.length&&(e=o.translate("MARKDOWN_ATTACHMENTS")),a.indexOf(t.type)<0&&(a.push(t.type),e+=a.length>1?", ":" ",e+=o.translate(t.type)))}),e}function p(t){var a,o,i,p,d;n.isArray(t)?(d=n.find(t,function(t){return"text"===t.type&&t.text}),a=d?d.text:s(t)):a=t,o=r.pipLineCount&&n.isNumber(u()),o=o&&a&&a.length>0,p={gfm:!0,tables:!0,breaks:!0,sanitize:!0,pedantic:!0,smartLists:!0,smartypents:!1},a=e(a||"",p),o&&(i=1.5*u()),l.html("<div"+(o?c()?'class="pip-markdown-content pip-markdown-list" style="max-height: '+i+'em">':' class="pip-markdown-content" style="max-height: '+i+'em">':c()?' class="pip-markdown-list">':">")+a+"</div>"),l.find("a").attr("target","blank"),!c()&&o&&l.append('<div class="pip-gradient-block"></div>')}var d=t(r.pipText),c=t(r.pipList),u=t(r.pipLineCount);p(d(i)),a.toBoolean(r.pipRebind)&&i.$watch(d,function(t){p(t)}),i.$on("pipWindowResized",function(){p(d(i))}),l.addClass("pip-markdown")}}}])}(window.angular,window.marked,window._),function(t){"use strict";var e=t.module("pipRoutingProgress",["ngMaterial"]);e.directive("pipRoutingProgress",function(){return{restrict:"EA",replace:!0,templateUrl:"progress/routing_progress.html"}})}(window.angular),function(t,e,n){"use strict";var a=t.module("pipPopover",["pipAssert"]);a.directive("pipPopover",function(){return{restrict:"EA",scope:!0,templateUrl:"popover/popover.template.html",controller:["$scope","$rootScope","$element","$timeout","$compile",function(t,a,o,i,l){function r(){g.addClass("opened"),e(".pip-popover-backdrop").focus(),t.params.timeout&&i(function(){p()},t.params.timeout)}function s(){t.params.cancelCallback&&t.params.cancelCallback(),p()}function p(){g.removeClass("opened"),i(function(){g.remove()},100)}function d(t){t.stopPropagation()}function c(){if(t.params.element){var n=e(t.params.element),a=n.offset(),o=n.width(),i=n.height(),l=e(document).width(),r=e(document).height(),s=g.find(".pip-popover");a&&s.css("max-width",l-(l-a.left)).css("max-height",r-(a.top+i)-32,0).css("left",a.left-s.width()+o/2).css("top",a.top+i+16)}}function u(){if(t.params.calcHeight!==!1){var e=g.find(".pip-popover"),n=e.find(".pip-title"),a=e.find(".pip-footer"),o=e.find(".pip-content"),i=e.height()-n.outerHeight(!0)-a.outerHeight(!0);o.css("max-height",Math.max(i,0)+"px").css("box-sizing","border-box")}}function m(){g.find(".pip-popover").find(".pip-content").css("max-height","100%"),c(),u()}var g,h;g=e(".pip-popover-backdrop"),g.on("click keydown scroll",s),g.addClass(t.params.responsive!==!1?"pip-responsive":""),i(function(){c(),t.params.template&&(h=l(t.params.template)(t),o.find(".pip-popover").append(h)),r()}),i(function(){u()},200),t.onPopoverClick=d,t=n.defaults(t,t.$parent),a.$on("pipPopoverResize",m),e(window).resize(m)}]}}),a.service("$pipPopover",["$compile","$rootScope","$timeout",function(t,a,o){function i(o){var i,r,p,d;i=e("body"),i.find("md-backdrop").length>0||(l(),r=a.$new(),p=o&&n.isObject(o)?o:{},r.params=p,r.locals=p.locals,d=t(s)(r),i.append(d))}function l(){var t=e(".pip-popover-backdrop");t.removeClass("opened"),o(function(){t.remove()},100)}function r(){a.$broadcast("pipPopoverResize")}var s;return s="<div class='pip-popover-backdrop {{ params.class }}' ng-controller='params.controller' tabindex='1'> <pip-popover pip-params='params'> </pip-popover> </div>",{show:i,hide:l,resize:r}}])}(window.angular,window.jQuery,window._),function(t){"use strict";var e=t.module("pipTagList",["pipCore"]);e.directive("pipTagList",["$parse",function(t){return{restrict:"EA",scope:{pipTags:"=",pipType:"=",pipTypeLocal:"="},templateUrl:"tags/tag_list.html",controller:["$scope","$element","$attrs","pipUtils",function(e,n,a,o){var i;i=t(a.pipTags),n.css("display","block"),e.tags=i(e),o.toBoolean(a.pipRebind)&&e.$watch(i,function(){e.tags=i(e)}),n.addClass("pip-tag-list")}]}}])}(window.angular),function(t){"use strict";var e=t.module("pipRefreshButton",["ngMaterial"]);e.directive("pipRefreshButton",["$parse",function(t){return{restrict:"EA",scope:!1,template:String()+'<md-button class="pip-refresh-button" tabindex="-1" ng-click="onClick($event)" aria-label="REFRESH"><md-icon md-svg-icon="icons:refresh"></md-icon><span class="pip-refresh-text"></span></md-button>',replace:!1,link:function(e,n,a){function o(){c.hide()}var i,l,r,s=t(a.pipText),p=t(a.pipVisible),d=t(a.pipRefresh),c=n.children(".md-button"),u=c.children(".pip-refresh-text");r=function(){l=s(e),u.text(l),c.show(),i=c.width(),c.css("margin-left","-"+i/2+"px")},e.onClick=function(){d(e)},e.$watch(p,function(t){t?r():o()}),e.$watch(s,function(t){u.text(t)})}}}])}(window.angular),function(t,e){"use strict";var n=t.module("pipTimeRange",["pipUtils"]);n.directive("pipTimeRange",["pipUtils",function(t){return{restrict:"EA",scope:{pipStartDate:"=",pipEndDate:"="},templateUrl:"time_range/time_range.html",link:function(n,a,o){function i(t){return t?new Date(t):null}function l(){null!==n.pipStartDate&&void 0!==n.pipStartDate&&(n.data.start=e.isDate(n.pipStartDate)?n.pipStartDate:i(n.pipStartDate))}function r(){null!==n.pipEndDate&&void 0!==n.pipEndDate&&(n.data.end=e.isDate(n.pipEndDate)?n.pipEndDate:i(n.pipEndDate))}n.data={},n.data.start=null,n.data.end=null,l(),r(),t.toBoolean(o.pipRebind)&&(n.$watch("pipStartDate",function(){n.data.start=null,l()}),n.$watch("pipEndDate",function(){n.data.end=null,r()})),a.addClass("pip-time-range")}}}])}(window.angular,window._),function(t,e){"use strict";var n=t.module("pipTimeRangeEdit",["pipUtils","pipTranslate"]);n.directive("pipTimeRangeEdit",function(){return{restrict:"EA",scope:{pipStartDate:"=",pipChanged:"&",pipEndDate:"=",pipStartLabel:"@",pipEndLabel:"@",disabled:"&ngDisabled",pipSize:"="},templateUrl:"time_range_edit/time_range_edit.html",controller:"pipTimeRangeEditController"}}),n.controller("pipTimeRangeEditController",["$scope","$element","$attrs","pipDates","pipTranslate",function(t,n,a,o,i){function l(t){return t?new Date(t):null}function r(){var e,n;return t.data.startDate&&t.data.endDate?(e=new Date(t.data.startDate.getTime()+60*t.data.startTime*1e3),n=new Date(t.data.endDate.getTime()+60*t.data.endTime*1e3),n-e):null}function s(){var e,n,a;return t.data.startDate?(t.data.startTime||(t.data.endTime?t.data.startTime=0===t.data.endTime?0:t.data.endTime-30:(e=new Date,e=e.getTime()-o.toStartDay(e),t.data.startTime=30*Math.floor(e/18e5))),t.data.endDate?(n=new Date(t.data.startDate.getTime()+60*t.data.startTime*1e3),void(t.data.duration?(a=new Date(n.getTime()+t.data.duration),t.data.endDate=o.toStartDay(a),a=a.getTime()-t.data.endDate.getTime(),t.data.endTime=30*Math.floor(a/18e5)):(a=new Date(t.data.endDate.getTime()+60*t.data.endTime*1e3),n>=a&&(t.data.endDate=o.toStartDay(new Date(n.getTime()+18e5)),t.data.endTime=(t.data.startTime+30)%1440)))):void(t.data.endTime=null)):void(t.data.startTime=null)}function p(){var e,n,a;return t.data.endDate?(t.data.endTime||(t.data.startTime?t.data.endTime=1410===t.data.startTime?1410:t.data.startTime+30:(e=new Date,e=e.getTime()-o.toStartDay(e),t.data.endTime=30*Math.floor(e/18e5))),t.data.startDate?(n=new Date(t.data.startDate.getTime()+60*t.data.startTime*1e3),a=new Date(t.data.endDate.getTime()+60*t.data.endTime*1e3),n>=a&&(t.data.startDate=o.toStartDay(new Date(a.getTime()-18e5)),t.data.startTime=t.data.endTime%1440===0?1410:t.data.endTime-30),void(t.data.duration=r())):void(t.data.startTime=null)):void(t.data.endTime=null)}function d(){var e;t.data.bind=!1,t.data.startDate&&(e=t.data.startTime?60*t.data.startTime*1e3:0,t.pipStartDate=new Date(t.data.startDate.getTime()+e)),t.data.endDate&&(e=t.data.endTime?60*t.data.endTime*1e3:0,t.pipEndDate=new Date(t.data.endDate.getTime()+e)),t.data.bind=!0}function c(){var n,a;null!==t.pipStartDate&&void 0!==t.pipStartDate&&(n=e.isDate(t.pipStartDate)?t.pipStartDate:null,n||(n=l(t.pipStartDate)),t.data.startDate=o.toStartDay(n),t.data.startTime=(new Date(n)-t.data.startDate)/6e4),null!==t.pipEndDate&&void 0!==t.pipEndDate&&(a=e.isDate(t.pipEndDate)?t.pipEndDate:null,n||(a=l(t.pipEndDate)),t.data.endDate=o.toStartDay(a),t.data.endTime=(new Date(a)-t.data.endDate)/6e4),s(),t.data.duration=r(),d()}function u(){var t,n,a,o;for(t=[],n=0;n<24;n++)for(a=0;a<2;a++)o=30*a,t.push({id:60*n+o,time:e.pad(n.toString(),3,"0").substr(0,2)+":"+e.pad(o.toString(),2,"0")});return t}function m(){t.data.startDate=null,t.data.startTime=null,t.data.endDate=null,t.data.endTime=null,t.data.duration=null}t.intervalTimeCollection=u(),t.data={},t.startLabel=t.pipStartLabel?i.translate(t.pipStartLabel):i.translate("EVENT_NEW_START_TIME"),t.endLabel=t.pipEndLabel?i.translate(t.pipEndLabel):i.translate("EVENT_NEW_END_TIME"),m(),c(),t.onChangeStartDate=function(){s(),t.data.duration=r(),d(),t.pipChanged()},t.onChangeEndDate=function(){p(),t.data.duration=r(),d(),t.pipChanged()},t.onChangeStartTime=function(){t.data.startDate||(t.data.startDate=o.toStartDay(new Date)),s(),t.data.duration=r(),d(),t.pipChanged()},t.onChangeEndTime=function(){t.data.endDate||(t.data.endDate=o.toStartDay(new Date)),p(),t.data.duration=r(),d(),t.pipChanged()},t.isDisabled=function(){return!!t.disabled&&t.disabled()},t.$watchGroup([t.pipStartDate,t.pipEndDate],function(){t.data.bind&&(m(),c())}),t.$watch(t.disabled,function(e){t.disableControls=e}),n.addClass("pip-time-range-edit")}])}(window.angular,window._),function(t,e){"use strict";var n=t.module("pipToasts",["pipTranslate","ngMaterial","pipAssert"]);n.controller("pipToastController",["$scope","$mdToast","toast","pipErrorDetailsDialog",function(e,n,a,o){e.message=a.message,e.actions=a.actions,e.toast=a,0===a.actions.length?e.actionLenght=0:1===a.actions.length?e.actionLenght=a.actions[0].toString().length:e.actionLenght=null,e.onDetails=function(){n.hide(),o.show({error:e.toast.error,ok:"Ok"},t.noop,t.noop)},e.onAction=function(t){n.hide({action:t,id:a.id,message:a.message})}}]),n.service("pipToasts",["$rootScope","$mdToast","pipAssert",function(t,n,a){function o(){var t;b.length>0&&(t=b[0],b.splice(0,1),i(t))}function i(t){v=t,n.show({templateUrl:"toast/toast.html",hideDelay:t.duration||T,position:"bottom left",controller:"pipToastController",locals:{toast:v,sounds:C}}).then(function(t){v.successCallback&&v.successCallback(t),v=null,o()},function(t){v.cancelCallback&&v.cancelCallback(t),v=null,o()})}function l(t){v&&"error"!==t.type?b.push(t):i(t)}function r(t){var n=[];e.each(b,function(e){e.type&&e.type===t||n.push(e)}),b=e.cloneDeep(n)}function s(t){e.remove(b,{id:t})}function p(t){return e.find(b,{id:t})}function d(){b=e.reject(b,function(t){return"error"===t.type}),v&&"error"===v.type&&(n.cancel(),o())}function c(){f()}function u(t,e,n,o,i){a.isDef(t,"pipToasts.showNotification: message should be defined"),a.isString(t,"pipToasts.showNotification: message should be a string"),a.isArray(e||[],"pipToasts.showNotification: actions should be an array"),n&&a.isFunction(n,"showNotification: successCallback should be a function"),o&&a.isFunction(o,"showNotification: cancelCallback should be a function"),l({id:i||null,type:"notification",message:t,actions:e||["ok"],successCallback:n,cancelCallback:o,duration:y})}function m(t,e,n,o){a.isDef(t,"pipToasts.showMessage: message should be defined"),a.isString(t,"pipToasts.showMessage: message should be a string"),e&&a.isFunction(e,"pipToasts.showMessage:successCallback should be a function"),n&&a.isFunction(n,"pipToasts.showMessage: cancelCallback should be a function"),l({id:o||null,type:"message",message:t,actions:["ok"],successCallback:e,cancelCallback:n})}function g(t,e,n,o,i){a.isDef(t,"pipToasts.showError: message should be defined"),a.isString(t,"pipToasts.showError: message should be a string"),e&&a.isFunction(e,"pipToasts.showError: successCallback should be a function"),n&&a.isFunction(n,"pipToasts.showError: cancelCallback should be a function"),l({id:o||null,error:i,type:"error",message:t,actions:["ok"],successCallback:e,cancelCallback:n})}function h(){n.cancel(),b=[]}function f(t){t?(a.isString(t,"pipToasts.clearToasts: type should be a string"),r(t)):(n.cancel(),b=[])}var v,T=2e4,y=2e4,b=[],C={};return t.$on("$stateChangeSuccess",d),t.$on("pipSessionClosed",c),{showNotification:u,showMessage:m,showError:g,hideAllToasts:h,clearToasts:f,removeToastsById:s,getToastById:p}}])}(window.angular,window._),function(t,e){"use strict";var n=t.module("pipToggleButtons",["pipBasicControls.Templates"]);n.directive("pipToggleButtons",function(){return{restrict:"EA",scope:{ngDisabled:"&",buttons:"=pipButtons",currentButtonValue:"=ngModel",currentButton:"=?pipButtonObject",change:"&ngChange"},templateUrl:"toggle_buttons/toggle_buttons.html",controller:["$scope","$element","$attrs","$mdMedia","$timeout",function(t,n,a,o,i){var l;t.$mdMedia=o,t.class=a.class||"",(!t.buttons||e.isArray(t.buttons)&&0===t.buttons.length)&&(t.buttons=[]),l=e.indexOf(t.buttons,e.find(t.buttons,{id:t.currentButtonValue})),t.currentButtonIndex=l<0?0:l,t.currentButton=t.buttons.length>0?t.buttons[t.currentButtonIndex]:t.currentButton,t.buttonSelected=function(e){t.disabled()||(t.currentButtonIndex=e,t.currentButton=t.buttons[t.currentButtonIndex],t.currentButtonValue=t.currentButton.id||e,i(function(){t.change&&t.change()}))},t.enterSpacePress=function(e){t.buttonSelected(e.index)},t.disabled=function(){if(t.ngDisabled)return t.ngDisabled()}}],link:function(t,e){e.on("focusin",function(){e.addClass("focused-container")}).on("focusout",function(){e.removeClass("focused-container")})}}})}(window.angular,window._);